Build of bpf and tc-testing selftests fails when the relative path of the build directory is specified.
make -C tools/testing/selftests O=build0 make[1]: Entering directory '/linux_mainline/tools/testing/selftests/bpf' ../../../scripts/Makefile.include:4: *** O=build0 does not exist. Stop. make[1]: Entering directory '/linux_mainline/tools/testing/selftests/tc-testing' ../../../scripts/Makefile.include:4: *** O=build0 does not exist. Stop.
Makefiles of bpf and tc-testing include scripts/Makefile.include file. This file has sanity checking inside it which checks the output path. The output path is not relative to the bpf or tc-testing. The sanity check fails. Expand the output path to get rid of this error. The fix is the same as mentioned in commit 150a27328b68 ("bpf, preload: Fix build when $(O) points to a relative path").
Signed-off-by: Muhammad Usama Anjum usama.anjum@collabora.com --- Changes in V2: Add more explaination to the commit message. Support make install as well. --- tools/testing/selftests/Makefile | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/tools/testing/selftests/Makefile b/tools/testing/selftests/Makefile index 4eda7c7c15694..6a5c25fcc9cfc 100644 --- a/tools/testing/selftests/Makefile +++ b/tools/testing/selftests/Makefile @@ -178,6 +178,7 @@ all: khdr BUILD_TARGET=$$BUILD/$$TARGET; \ mkdir $$BUILD_TARGET -p; \ $(MAKE) OUTPUT=$$BUILD_TARGET -C $$TARGET \ + O=$(abs_objtree) \ $(if $(FORCE_TARGETS),|| exit); \ ret=$$((ret * $$?)); \ done; exit $$ret; @@ -185,7 +186,8 @@ all: khdr run_tests: all @for TARGET in $(TARGETS); do \ BUILD_TARGET=$$BUILD/$$TARGET; \ - $(MAKE) OUTPUT=$$BUILD_TARGET -C $$TARGET run_tests;\ + $(MAKE) OUTPUT=$$BUILD_TARGET -C $$TARGET run_tests \ + O=$(abs_objtree); \ done;
hotplug: @@ -236,6 +238,7 @@ ifdef INSTALL_PATH for TARGET in $(TARGETS); do \ BUILD_TARGET=$$BUILD/$$TARGET; \ $(MAKE) OUTPUT=$$BUILD_TARGET -C $$TARGET INSTALL_PATH=$(INSTALL_PATH)/$$TARGET install \ + O=$(abs_objtree) \ $(if $(FORCE_TARGETS),|| exit); \ ret=$$((ret * $$?)); \ done; exit $$ret;
Any thoughts about it?
On 2/17/22 3:38 AM, Muhammad Usama Anjum wrote:
Build of bpf and tc-testing selftests fails when the relative path of the build directory is specified.
make -C tools/testing/selftests O=build0 make[1]: Entering directory '/linux_mainline/tools/testing/selftests/bpf' ../../../scripts/Makefile.include:4: *** O=build0 does not exist. Stop. make[1]: Entering directory '/linux_mainline/tools/testing/selftests/tc-testing' ../../../scripts/Makefile.include:4: *** O=build0 does not exist. Stop.
Makefiles of bpf and tc-testing include scripts/Makefile.include file. This file has sanity checking inside it which checks the output path. The output path is not relative to the bpf or tc-testing. The sanity check fails. Expand the output path to get rid of this error. The fix is the same as mentioned in commit 150a27328b68 ("bpf, preload: Fix build when $(O) points to a relative path").
Signed-off-by: Muhammad Usama Anjum usama.anjum@collabora.com
Changes in V2: Add more explaination to the commit message. Support make install as well.
tools/testing/selftests/Makefile | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/tools/testing/selftests/Makefile b/tools/testing/selftests/Makefile index 4eda7c7c15694..6a5c25fcc9cfc 100644 --- a/tools/testing/selftests/Makefile +++ b/tools/testing/selftests/Makefile @@ -178,6 +178,7 @@ all: khdr BUILD_TARGET=$$BUILD/$$TARGET; \ mkdir $$BUILD_TARGET -p; \ $(MAKE) OUTPUT=$$BUILD_TARGET -C $$TARGET \
ret=$$((ret * $$?)); \ done; exit $$ret;O=$(abs_objtree) \ $(if $(FORCE_TARGETS),|| exit); \
@@ -185,7 +186,8 @@ all: khdr run_tests: all @for TARGET in $(TARGETS); do \ BUILD_TARGET=$$BUILD/$$TARGET; \
$(MAKE) OUTPUT=$$BUILD_TARGET -C $$TARGET run_tests;\
$(MAKE) OUTPUT=$$BUILD_TARGET -C $$TARGET run_tests \
done;O=$(abs_objtree); \
hotplug: @@ -236,6 +238,7 @@ ifdef INSTALL_PATH for TARGET in $(TARGETS); do \ BUILD_TARGET=$$BUILD/$$TARGET; \ $(MAKE) OUTPUT=$$BUILD_TARGET -C $$TARGET INSTALL_PATH=$(INSTALL_PATH)/$$TARGET install \
ret=$$((ret * $$?)); \ done; exit $$ret;O=$(abs_objtree) \ $(if $(FORCE_TARGETS),|| exit); \
On 2/25/22 10:22 AM, Muhammad Usama Anjum wrote:
Any thoughts about it?
No to post please.
On 2/17/22 3:38 AM, Muhammad Usama Anjum wrote:
Build of bpf and tc-testing selftests fails when the relative path of the build directory is specified.
make -C tools/testing/selftests O=build0 make[1]: Entering directory '/linux_mainline/tools/testing/selftests/bpf' ../../../scripts/Makefile.include:4: *** O=build0 does not exist. Stop. make[1]: Entering directory '/linux_mainline/tools/testing/selftests/tc-testing' ../../../scripts/Makefile.include:4: *** O=build0 does not exist. Stop.
Makefiles of bpf and tc-testing include scripts/Makefile.include file. This file has sanity checking inside it which checks the output path. The output path is not relative to the bpf or tc-testing. The sanity check fails. Expand the output path to get rid of this error. The fix is the same as mentioned in commit 150a27328b68 ("bpf, preload: Fix build when $(O) points to a relative path").
Signed-off-by: Muhammad Usama Anjum usama.anjum@collabora.com
Changes in V2: Add more explaination to the commit message. Support make install as well.
Looks god to me. I can pull this in for Linux 5.18-rc1
thanks, -- Shuah
On 2/25/22 11:01 AM, Shuah Khan wrote:
On 2/25/22 10:22 AM, Muhammad Usama Anjum wrote:
Any thoughts about it?
No to post please.
On 2/17/22 3:38 AM, Muhammad Usama Anjum wrote:
Build of bpf and tc-testing selftests fails when the relative path of the build directory is specified.
make -C tools/testing/selftests O=build0 make[1]: Entering directory '/linux_mainline/tools/testing/selftests/bpf' ../../../scripts/Makefile.include:4: *** O=build0 does not exist. Stop. make[1]: Entering directory '/linux_mainline/tools/testing/selftests/tc-testing' ../../../scripts/Makefile.include:4: *** O=build0 does not exist. Stop.
Makefiles of bpf and tc-testing include scripts/Makefile.include file. This file has sanity checking inside it which checks the output path. The output path is not relative to the bpf or tc-testing. The sanity check fails. Expand the output path to get rid of this error. The fix is the same as mentioned in commit 150a27328b68 ("bpf, preload: Fix build when $(O) points to a relative path").
Signed-off-by: Muhammad Usama Anjum usama.anjum@collabora.com
Changes in V2: Add more explaination to the commit message. Support make install as well.
Does the same happen when you use make kselftest-all?
I am unable to reproduce what you are seeing?
thanks, -- Shuah
On 2/26/22 2:13 AM, Shuah Khan wrote:
On 2/25/22 11:01 AM, Shuah Khan wrote:
On 2/25/22 10:22 AM, Muhammad Usama Anjum wrote:
Any thoughts about it?
No to post please.
On 2/17/22 3:38 AM, Muhammad Usama Anjum wrote:
Build of bpf and tc-testing selftests fails when the relative path of the build directory is specified.
make -C tools/testing/selftests O=build0 make[1]: Entering directory '/linux_mainline/tools/testing/selftests/bpf' ../../../scripts/Makefile.include:4: *** O=build0 does not exist. Stop. make[1]: Entering directory '/linux_mainline/tools/testing/selftests/tc-testing' ../../../scripts/Makefile.include:4: *** O=build0 does not exist. Stop.
Makefiles of bpf and tc-testing include scripts/Makefile.include file. This file has sanity checking inside it which checks the output path. The output path is not relative to the bpf or tc-testing. The sanity check fails. Expand the output path to get rid of this error. The fix is the same as mentioned in commit 150a27328b68 ("bpf, preload: Fix build when $(O) points to a relative path").
Signed-off-by: Muhammad Usama Anjum usama.anjum@collabora.com
Changes in V2: Add more explaination to the commit message. Support make install as well.
Does the same happen when you use make kselftest-all?
No, this problem doesn't appear when using make kselftest-all.
As separate output directory build was broken in kernel's top most Makefile i.e., make kselftest-all O=dir. (I've sent separate patch to fix this: https://lore.kernel.org/lkml/20220223191016.1658728-1-usama.anjum@collabora....) So people must have been using kselftest's internal Makefile directly to keep object files in separate directory i.e., make -C tools/testing/selftests O=dir and in this way the build of these tests (bpf, tc-testing) fail. This patch is fixing those build errors.
I am unable to reproduce what you are seeing?
make -C tools/testing/selftests O=dir should reproduce this problem.
thanks, -- Shuah
On 2/26/22 12:32 AM, Muhammad Usama Anjum wrote:
On 2/26/22 2:13 AM, Shuah Khan wrote:
On 2/25/22 11:01 AM, Shuah Khan wrote:
On 2/25/22 10:22 AM, Muhammad Usama Anjum wrote:
Any thoughts about it?
No to post please.
On 2/17/22 3:38 AM, Muhammad Usama Anjum wrote:
Build of bpf and tc-testing selftests fails when the relative path of the build directory is specified.
make -C tools/testing/selftests O=build0 make[1]: Entering directory '/linux_mainline/tools/testing/selftests/bpf' ../../../scripts/Makefile.include:4: *** O=build0 does not exist. Stop. make[1]: Entering directory '/linux_mainline/tools/testing/selftests/tc-testing' ../../../scripts/Makefile.include:4: *** O=build0 does not exist. Stop.
Makefiles of bpf and tc-testing include scripts/Makefile.include file. This file has sanity checking inside it which checks the output path. The output path is not relative to the bpf or tc-testing. The sanity check fails. Expand the output path to get rid of this error. The fix is the same as mentioned in commit 150a27328b68 ("bpf, preload: Fix build when $(O) points to a relative path").
Signed-off-by: Muhammad Usama Anjum usama.anjum@collabora.com
Changes in V2: Add more explaination to the commit message. Support make install as well.
Does the same happen when you use make kselftest-all?
No, this problem doesn't appear when using make kselftest-all.
As separate output directory build was broken in kernel's top most Makefile i.e., make kselftest-all O=dir. (I've sent separate patch to fix this: https://lore.kernel.org/lkml/20220223191016.1658728-1-usama.anjum@collabora....) So people must have been using kselftest's internal Makefile directly to keep object files in separate directory i.e., make -C tools/testing/selftests O=dir and in this way the build of these tests (bpf, tc-testing) fail. This patch is fixing those build errors.
I am unable to reproduce what you are seeing?
make -C tools/testing/selftests O=dir should reproduce this problem.
Applied to linux-kselftest next for Linux 5.18-rc1.
thanks, -- Shuah
linux-kselftest-mirror@lists.linaro.org