2023-12-21 20:50:41

by Antonio Terceiro

[permalink] [raw]
Subject: [PATCH v2] selftests: uevent: use shared makefile library

This makes the uevent selftests build not write to the source tree
unconditionally, as that breaks out of tree builds when the source tree
is read-only. It also avoids leaving a git repository in a dirty state
after a build.

v2: drop spurious extra SPDX-License-Identifier

Signed-off-by: Antonio Terceiro <[email protected]>
---
tools/testing/selftests/uevent/Makefile | 15 +++------------
1 file changed, 3 insertions(+), 12 deletions(-)

diff --git a/tools/testing/selftests/uevent/Makefile b/tools/testing/selftests/uevent/Makefile
index f7baa9aa2932..872969f42694 100644
--- a/tools/testing/selftests/uevent/Makefile
+++ b/tools/testing/selftests/uevent/Makefile
@@ -1,17 +1,8 @@
# SPDX-License-Identifier: GPL-2.0
all:

-include ../lib.mk
-
-.PHONY: all clean
-
-BINARIES := uevent_filtering
-CFLAGS += -Wl,-no-as-needed -Wall
+CFLAGS += -Wl,-no-as-needed -Wall $(KHDR_INCLUDES)

-uevent_filtering: uevent_filtering.c ../kselftest.h ../kselftest_harness.h
- $(CC) $(CFLAGS) $< -o $@
+TEST_GEN_PROGS = uevent_filtering

-TEST_PROGS += $(BINARIES)
-EXTRA_CLEAN := $(BINARIES)
-
-all: $(BINARIES)
+include ../lib.mk
--
2.43.0



2023-12-21 21:45:03

by Shuah Khan

[permalink] [raw]
Subject: Re: [PATCH v2] selftests: uevent: use shared makefile library

On 12/21/23 13:49, Antonio Terceiro wrote:
> This makes the uevent selftests build not write to the source tree
> unconditionally, as that breaks out of tree builds when the source tree
> is read-only. It also avoids leaving a git repository in a dirty state
> after a build.
>

Why can't you do that using make O= directive.

> v2: drop spurious extra SPDX-License-Identifier
>
> Signed-off-by: Antonio Terceiro <[email protected]>
> ---
> tools/testing/selftests/uevent/Makefile | 15 +++------------
> 1 file changed, 3 insertions(+), 12 deletions(-)
>
> diff --git a/tools/testing/selftests/uevent/Makefile b/tools/testing/selftests/uevent/Makefile
> index f7baa9aa2932..872969f42694 100644
> --- a/tools/testing/selftests/uevent/Makefile
> +++ b/tools/testing/selftests/uevent/Makefile
> @@ -1,17 +1,8 @@
> # SPDX-License-Identifier: GPL-2.0
> all:
>
> -include ../lib.mk
> -
> -.PHONY: all clean
> -
> -BINARIES := uevent_filtering
> -CFLAGS += -Wl,-no-as-needed -Wall
> +CFLAGS += -Wl,-no-as-needed -Wall $(KHDR_INCLUDES)
>
> -uevent_filtering: uevent_filtering.c ../kselftest.h ../kselftest_harness.h
> - $(CC) $(CFLAGS) $< -o $@
> +TEST_GEN_PROGS = uevent_filtering
>
> -TEST_PROGS += $(BINARIES)
> -EXTRA_CLEAN := $(BINARIES)
> -
> -all: $(BINARIES)
> +include ../lib.mk

This change doesn't get the intended result of not writing to
source tree. Binaries will still be written to the source
tree unless O= is specified.

thanks,
-- Shuah


2023-12-22 11:51:26

by Antonio Terceiro

[permalink] [raw]
Subject: Re: [PATCH v2] selftests: uevent: use shared makefile library

On Thu, Dec 21, 2023 at 02:44:52PM -0700, Shuah Khan wrote:
> On 12/21/23 13:49, Antonio Terceiro wrote:
> > This makes the uevent selftests build not write to the source tree
> > unconditionally, as that breaks out of tree builds when the source tree
> > is read-only. It also avoids leaving a git repository in a dirty state
> > after a build.
> >
>
> Why can't you do that using make O= directive.

That's what I meant by out of tree builds. When using O=, the uevent
selftests build still writes to the source directory. Maybe my wording
in the commit message is not clear enough, I will try to improve it.

> > v2: drop spurious extra SPDX-License-Identifier
> >
> > Signed-off-by: Antonio Terceiro <[email protected]>
> > ---
> > tools/testing/selftests/uevent/Makefile | 15 +++------------
> > 1 file changed, 3 insertions(+), 12 deletions(-)
> >
> > diff --git a/tools/testing/selftests/uevent/Makefile b/tools/testing/selftests/uevent/Makefile
> > index f7baa9aa2932..872969f42694 100644
> > --- a/tools/testing/selftests/uevent/Makefile
> > +++ b/tools/testing/selftests/uevent/Makefile
> > @@ -1,17 +1,8 @@
> > # SPDX-License-Identifier: GPL-2.0
> > all:
> > -include ../lib.mk
> > -
> > -.PHONY: all clean
> > -
> > -BINARIES := uevent_filtering
> > -CFLAGS += -Wl,-no-as-needed -Wall
> > +CFLAGS += -Wl,-no-as-needed -Wall $(KHDR_INCLUDES)
> > -uevent_filtering: uevent_filtering.c ../kselftest.h ../kselftest_harness.h
> > - $(CC) $(CFLAGS) $< -o $@
> > +TEST_GEN_PROGS = uevent_filtering
> > -TEST_PROGS += $(BINARIES)
> > -EXTRA_CLEAN := $(BINARIES)
> > -
> > -all: $(BINARIES)
> > +include ../lib.mk
>
> This change doesn't get the intended result of not writing to
> source tree. Binaries will still be written to the source
> tree unless O= is specified.

It does in my tests. Maybe I am missing something.

mainline without the patch:

----------------8<----------------8<----------------8<-----------------
$ make -s defconfig O=/tmp/output && make -s kselftest-all TARGETS=uevent O=/tmp/output
make[4]: Entrando no diret?rio '/home/terceiro/src/linaro/linux/tools/testing/selftests/uevent'

make[4]: Nada a ser feito para 'all'.
make[4]: Saindo do diret?rio '/home/terceiro/src/linaro/linux/tools/testing/selftests/uevent'

$ git status --ignored
On branch master
Your branch is up to date with 'origin/master'.

Untracked files:
(use "git add <file>..." to include in what will be committed)
tools/testing/selftests/uevent/uevent_filtering

nothing added to commit but untracked files present (use "git add" to track)
$ git clean -dxf
Removing tools/testing/selftests/uevent/uevent_filtering
----------------8<----------------8<----------------8<-----------------

mainline with the patch:

----------------8<----------------8<----------------8<-----------------
$ git branch -m kselftest-uvent kselftest-uvent-o
$ rm -rf /tmp/output/
$ make -s defconfig O=/tmp/output && make -s kselftest-all TARGETS=uevent O=/tmp/output
make[4]: Entrando no diret?rio '/home/terceiro/src/linaro/linux/tools/testing/selftests/uevent'

gcc -Wl,-no-as-needed -Wall -isystem /tmp/output/usr/include uevent_filtering.c -o /tmp/output/kselftest/uevent/uevent_filtering
make[4]: Saindo do diret?rio '/home/terceiro/src/linaro/linux/tools/testing/selftests/uevent'

$ git status --ignored
On branch kselftest-uvent-o
nothing to commit, working tree clean
$ git clean -dxf
$
----------------8<----------------8<----------------8<-----------------


Attachments:
(No filename) (3.48 kB)
signature.asc (849.00 B)
Download all attachments

2023-12-30 07:16:31

by Muhammad Usama Anjum

[permalink] [raw]
Subject: Re: [PATCH v2] selftests: uevent: use shared makefile library

On 12/22/23 1:49 AM, Antonio Terceiro wrote:
> This makes the uevent selftests build not write to the source tree
> unconditionally, as that breaks out of tree builds when the source tree
> is read-only. It also avoids leaving a git repository in a dirty state
> after a build.
I can see what you are trying to do. The makefile has issues such as lib.mk
should be included at the end of the file. Please just clarify this in the
message.

>
> v2: drop spurious extra SPDX-License-Identifier
>
> Signed-off-by: Antonio Terceiro <[email protected]>
> ---
> tools/testing/selftests/uevent/Makefile | 15 +++------------
> 1 file changed, 3 insertions(+), 12 deletions(-)
>
> diff --git a/tools/testing/selftests/uevent/Makefile b/tools/testing/selftests/uevent/Makefile
> index f7baa9aa2932..872969f42694 100644
> --- a/tools/testing/selftests/uevent/Makefile
> +++ b/tools/testing/selftests/uevent/Makefile
> @@ -1,17 +1,8 @@
> # SPDX-License-Identifier: GPL-2.0
> all:
>
> -include ../lib.mk
> -
> -.PHONY: all clean
> -
> -BINARIES := uevent_filtering
> -CFLAGS += -Wl,-no-as-needed -Wall
> +CFLAGS += -Wl,-no-as-needed -Wall $(KHDR_INCLUDES)
>
> -uevent_filtering: uevent_filtering.c ../kselftest.h ../kselftest_harness.h
> - $(CC) $(CFLAGS) $< -o $@
> +TEST_GEN_PROGS = uevent_filtering
>
> -TEST_PROGS += $(BINARIES)
> -EXTRA_CLEAN := $(BINARIES)
> -
> -all: $(BINARIES)
> +include ../lib.mk

--
BR,
Muhammad Usama Anjum