diff mbox series

[V2] selftests: Fix build when $(O) points to a relative path

Message ID 20220216223817.1386745-1-usama.anjum@collabora.com
State Accepted
Commit f6d344cd5fa6a15e1ec2da350470b35a3f55f74c
Headers show
Series [V2] selftests: Fix build when $(O) points to a relative path | expand

Commit Message

Muhammad Usama Anjum Feb. 16, 2022, 10:38 p.m. UTC
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(-)

Comments

Muhammad Usama Anjum Feb. 25, 2022, 5:22 p.m. UTC | #1
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;
Shuah Khan Feb. 25, 2022, 6:01 p.m. UTC | #2
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
Shuah Khan Feb. 25, 2022, 9:13 p.m. UTC | #3
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
Muhammad Usama Anjum Feb. 26, 2022, 7:32 a.m. UTC | #4
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
>
Shuah Khan March 3, 2022, 10:19 p.m. UTC | #5
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 mbox series

Patch

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;