Message ID | 20220216223817.1386745-1-usama.anjum@collabora.com (mailing list archive) |
---|---|
State | Accepted |
Commit | f6d344cd5fa6a15e1ec2da350470b35a3f55f74c |
Headers | show |
Series | [V2] selftests: Fix build when $(O) points to a relative path | expand |
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 \ > + 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;
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.com/) 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.com/) > 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
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;
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(-)