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

From: Antonio Terceiro
Date: Fri Dec 22 2023 - 06:51:26 EST


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 <antonio.terceiro@xxxxxxxxxx>
> > ---
> > 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<-----------------

Attachment: signature.asc
Description: PGP signature