• John Hubbard's avatar
    selftests/vm: hmm-tests: remove the libhugetlbfs dependency · f3a45709
    John Hubbard authored
    HMM selftests are incredibly useful, but they are only effective if people
    actually build and run them.  All the other tests in selftests/vm can be
    built with very standard, always-available libraries: libpthread, librt.
    The hmm-tests.c program, on the other hand, requires something that is
    (much) less readily available: libhugetlbfs.  And so the build will
    typically fail for many developers.
    
    A simple attempt to install libhugetlbfs will also run into complications
    on some common distros these days: Fedora and Arch Linux (yes, Arch AUR
    has it, but that's fragile, as always with AUR).  The library is not
    maintained actively enough at the moment, for distros to deal with it.  I
    had to build it from source, for Fedora, and that didn't go too smoothly
    either.
    
    It turns out that, out of 21 tests in hmm-tests.c, only 2 actually require
    functionality from libhugetlbfs.  Therefore, if libhugetlbfs is missing,
    simply ifdef those two tests out and allow the developer to at least have
    the other 19 tests, if they don't want to pause to work through the above
    issues.  Also issue a warning, so that it's clear that there is an
    imperfection in the build.
    
    In order to do that, a tiny shell script (check_config.sh) runs a quick
    compile (not link, that's too prone to false failures with library paths),
    and basically, if the compiler doesn't find hugetlbfs.h in its standard
    locations, then the script concludes that libhugetlbfs is not available.
    The output is in two files, one for inclusion in hmm-test.c
    (local_config.h), and one for inclusion in the Makefile (local_config.mk).
    
    Link: https://lkml.kernel.org/r/20201026064021.3545418-9-jhubbard@nvidia.comSigned-off-by: default avatarJohn Hubbard <jhubbard@nvidia.com>
    Cc: Ralph Campbell <rcampbell@nvidia.com>
    Cc: Jérôme Glisse <jglisse@redhat.com>
    Cc: Jonathan Corbet <corbet@lwn.net>
    Cc: Shuah Khan <shuah@kernel.org>
    Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
    f3a45709
check_config.sh 967 Bytes