On Wed, May 27, 2020 at 9:22 PM shuah shuah@kernel.org wrote:
On 5/27/20 1:30 AM, Yauheni Kaliuta wrote:
Hi, shuah!
> On Tue, 26 May 2020 11:13:29 -0600, shuah wrote:
On 5/25/20 7:55 AM, Yauheni Kaliuta wrote:
Hi!
I'm wondering how out of tree check is supposed to work for make O=dir run_tests from selftests (or make -C ...) directory?
(both with 051f278e9d81 ("kbuild: replace KBUILD_SRCTREE with boolean building_out_of_srctree") and without)
make M= ... does not work with run_tests.
Kselftests run_tests target isn't intended for building and running tests OOT.
But there is code there trying to handle it. All that OUTPUT related things must be removed if it's broken, right? Can I post a patch?
Also make M= doesn't make sense for them.
Well, M=... at least includes all the makefiles.
There is no support to build OOT at the moment. I would like to get a better understanding of your use-case. Can you elaborate?
I care about make install actually. But fixing it I had to deal with OUTPUT. Looking a proper for that I found that it's a bit broken.
kselftest supports install of all all tests and a sub-set of tests both native and cross-builds.
Simple case: If you want to build all tests and install to $HOME/install/ This has a dependency on kernel being built in the source repo you are running the following install command from:
In Kernel source root dir run: make kselftest-install O=$HOME/install
You will find installed tests with run script to run them all under $HOME/install/kselftest/kselftest_install/
If you run run_kselftest.sh under kselftest_install, it will run all the tests.
You can use TARGETS var to build a sub-set of tests.
In Kernel source root dir run: make kselftest-install TARGETS=bpf O=$HOME/install
Have you tried it with the recent bpf tree? ;)
(BTW, it is a bit misleading, it's building there, not installing).
Native or cross-build case when you are doing relocatable builds.
arm64 cross-build: # first do a relocatable kernel build in $HOME/arm64_build make O=$HOME/arm64_build/ ARCH=arm64 HOSTCC=gcc \ CROSS_COMPILE=aarch64-linux-gnu- defconfig
make O=$HOME/arm64_build/ ARCH=arm64 HOSTCC=gcc \ CROSS_COMPILE=aarch64-linux-gnu- all
# install selftests (all) make kselftest-install O=$HOME/arm64_build ARCH=arm64 \ HOSTCC=gcc CROSS_COMPILE=aarch64-linux-gnu-
# install selftests (just bpf) make kselftest-install TARGETS=bpf O=$HOME/arm64_build ARCH=arm64 \ HOSTCC=gcc CROSS_COMPILE=aarch64-linux-gnu-
You will find kselftest installed under
$HOME/arm64_build/kselftest/kselftest_install
You can use the same procedure for native builds as well assuming your native env. is x86_64
# first do a relocatable kernel build in $HOME/x86_64_build
make kselftest-install TARGETS=bpf O=$HOME/x86_64_build
You will find kselftest installed under
$HOME/x86_64_build/kselftest/kselftest_install
It is on todo to update the documentation. :(
thanks, -- Shuah