Re: bug in KBUILD_OUTPUT handling - for relative paths in kselftest

From: shuah
Date: Thu Sep 26 2019 - 13:43:10 EST


On 9/25/19 10:11 PM, Tim.Bird@xxxxxxxx wrote:
I found a bug in kselftest KBUILD_OUTPUT handling.

The following works:
$ cd /home/tbird/work/linux
$ export KBUILD_OUTPUT=/home/tbird/work/kbuild
$ yes '' | make localmodconfig
$ make TARGETS=size kselftest

But this doesn't work:
$ cd /home/tbird/work/linux
$ export KBUILD_OUTPUT=../kbuild
$ yes '' | make localmodconfig
$ make TARGETS=size kselftest

I see the following:
make[1]: Entering directory '/home/tbird/work/kbuild'
make --no-builtin-rules INSTALL_HDR_PATH=$BUILD/usr \
ARCH=x86 -C ../../.. headers_install
INSTALL ../kbuild/kselftest/usr/include
gcc -static -ffreestanding -nostartfiles -s get_size.c -o ../kbuild/kselftest/size/get_size
/usr/bin/ld: cannot open output file ../kbuild/kselftest/size/get_size: No such file or directory
collect2: error: ld returned 1 exit status
../lib.mk:138: recipe for target '../kbuild/kselftest/size/get_size' failed
make[3]: *** [../kbuild/kselftest/size/get_size] Error 1
Makefile:136: recipe for target 'all' failed
make[2]: *** [all] Error 2
/home/tbird/work/linux/Makefile:1240: recipe for target 'kselftest' failed
make[1]: *** [kselftest] Error 2
make[1]: Leaving directory '/home/tbird/work/kbuild'
Makefile:179: recipe for target 'sub-make' failed
make: *** [sub-make] Error 2

This is due to the relative path for KBUILD_OUTPUT being handled incorrectly (I believe)
in tools/testing/selftests/Makefile.


Thanks Tim! I will take a look as part of my work to simplify kselftest
use-cases.

thanks,
-- Shuah