• Shuah Khan's avatar
    selftests: add build/cross-build dependency check script · 93a4388b
    Shuah Khan authored
    Add build/cross-build dependency check script kselftest_deps.sh
    This script does the following:
    
    Usage: ./kselftest_deps.sh -[p] <compiler> [test_name]
    
    	kselftest_deps.sh [-p] gcc
    	kselftest_deps.sh [-p] gcc vm
    	kselftest_deps.sh [-p] aarch64-linux-gnu-gcc
    	kselftest_deps.sh [-p] aarch64-linux-gnu-gcc vm
    
    - Should be run in selftests directory in the kernel repo.
    - Checks if Kselftests can be built/cross-built on a system.
    - Parses all test/sub-test Makefile to find library dependencies.
    - Runs compile test on a trivial C file with LDLIBS specified
      in the test Makefiles to identify missing library dependencies.
    - Prints suggested target list for a system filtering out tests
      failed the build dependency check from the TARGETS in Selftests
      the main Makefile when optional -p is specified.
    - Prints pass/fail dependency check for each tests/sub-test.
    - Prints pass/fail targets and libraries.
    - Default: runs dependency checks on all tests.
    - Optional test name can be specified to check dependencies for it.
    
    To make LDLIBS parsing easier
    - change gpio and memfd Makefiles to use the same temporary variable used
      to find and add libraries to LDLIBS.
    - simlify LDLIBS append logic in intel_pstate/Makefile.
    
    Results from run on x86_64 system (trimmed detailed pass/fail list):
    ========================================================
    Kselftest Dependency Check for [./kselftest_deps.sh gcc ] results...
    ========================================================
    Checked tests defining LDLIBS dependencies
    --------------------------------------------------------
    Total tests with Dependencies:
    55 Pass: 53 Fail: 2
    --------------------------------------------------------
    Targets passed build dependency check on system:
    bpf capabilities filesystems futex gpio intel_pstate membarrier memfd
    mqueue net powerpc ptp rseq rtc safesetid timens timers vDSO vm
    --------------------------------------------------------
    FAIL: netfilter/Makefile dependency check: -lmnl
    FAIL: gpio/Makefile dependency check: -lmount
    --------------------------------------------------------
    Targets failed build dependency check on system:
    gpio netfilter
    --------------------------------------------------------
    Missing libraries system
    -lmnl -lmount
    --------------------------------------------------------
    ========================================================
    
    Results from run on x86_64 system with aarch64-linux-gnu-gcc:
    (trimmed detailed pass/fail list):
    ========================================================
    Kselftest Dependency Check for [./kselftest_deps.sh aarch64-linux-gnu-gcc ]
    results...
    ========================================================
    Checked tests defining LDLIBS dependencies
    --------------------------------------------------------
    Total tests with Dependencies:
    55 Pass: 41 Fail: 14
    --------------------------------------------------------
    Targets failed build dependency check on system:
    bpf capabilities filesystems futex gpio intel_pstate membarrier memfd
    mqueue net powerpc ptp rseq rtc timens timers vDSO vm
    --------------------------------------------------------
    --------------------------------------------------------
    Targets failed build dependency check on system:
    bpf capabilities gpio memfd mqueue net netfilter safesetid vm
    --------------------------------------------------------
    Missing libraries system
    -lcap -lcap-ng -lelf -lfuse -lmnl -lmount -lnuma -lpopt -lz
    --------------------------------------------------------
    ========================================================
    Signed-off-by: default avatarShuah Khan <skhan@linuxfoundation.org>
    93a4388b
kselftest_deps.sh 6.63 KB