All of lore.kernel.org
 help / color / mirror / Atom feed
From: Yauheni Kaliuta <yauheni.kaliuta@redhat.com>
To: Andrii Nakryiko <andrii.nakryiko@gmail.com>
Cc: bpf <bpf@vger.kernel.org>, Jiri Benc <jbenc@redhat.com>,
	Jiri Olsa <jolsa@redhat.com>, Andrii Nakryiko <andriin@fb.com>,
	Daniel Borkmann <daniel@iogearbox.net>
Subject: Re: [PATCH 4/8] selftests/bpf: fix object files installation
Date: Thu, 28 May 2020 21:46:37 +0300	[thread overview]
Message-ID: <CANoWswmmjKmC8L8Fo27cUzGAF_vhWBgY52PForTfsffir7Qpyg@mail.gmail.com> (raw)
In-Reply-To: <CAEf4BzbgGnJ8d+q5KyjdXYMHFOoyi7UJpKWLS1t_oNh2dhKy+g@mail.gmail.com>

On Thu, May 28, 2020 at 9:40 PM Andrii Nakryiko
<andrii.nakryiko@gmail.com> wrote:
>
> On Tue, May 26, 2020 at 10:17 PM Yauheni Kaliuta
> <yauheni.kaliuta@redhat.com> wrote:
> >
> > Hi, Andrii!
> >
> > >>>>> On Tue, 26 May 2020 15:30:19 -0700, Andrii Nakryiko  wrote:
> >
> >  > On Thu, May 21, 2020 at 9:14 PM Yauheni Kaliuta
> >  > <yauheni.kaliuta@redhat.com> wrote:
> >  >>
> >  >> There are problems with bpf test programs object files:
> >  >>
> >  >> 1) some of them are build for flavored test runner and should be
> >  >> installed in the subdirectory;
> >  >> 2) it's possible that the same file mentioned several times (added
> >  >> for every different unflavored test runner);
> >  >> 3) some generated files are not treated properly.
> >  >>
> >  >> Fix 1) by adding subdirectory to the list. rsync -a in the install
> >  >> target will handle it.
> >  >>
> >  >> Fix 2) by filtering the list. Performance should not matter for such
> >  >> amount of files.
> >  >>
> >  >> Fix 3) by use proper (TEST_GEN_FILES) variable for the list.
> >  >>
> >  >> Fixes: 309b81f0fdc4 ("selftests/bpf: Install generated test progs")
> >  >> Fixes: e47a179997ce ("bpf, testing: Add missing object file to
> >  >> TEST_FILES")
> >  >>
> >  >> Signed-off-by: Yauheni Kaliuta <yauheni.kaliuta@redhat.com>
> >  >> ---
> >  >> tools/testing/selftests/bpf/Makefile | 9 ++++++---
> >  >> 1 file changed, 6 insertions(+), 3 deletions(-)
> >  >>
> >  >> diff --git a/tools/testing/selftests/bpf/Makefile b/tools/testing/selftests/bpf/Makefile
> >  >> index 19091dbc8ca4..1ba3d72c3261 100644
> >  >> --- a/tools/testing/selftests/bpf/Makefile
> >  >> +++ b/tools/testing/selftests/bpf/Makefile
> >  >> @@ -42,8 +42,7 @@ ifneq ($(BPF_GCC),)
> >  >> TEST_GEN_PROGS += test_progs-bpf_gcc
> >  >> endif
> >  >>
> >  >> -TEST_GEN_FILES =
> >  >> -TEST_FILES = test_lwt_ip_encap.o \
> >  >> +TEST_GEN_FILES = test_lwt_ip_encap.o \
> >  >> test_tc_edt.o
> >  >>
> >  >> BTF_C_FILES = $(wildcard progs/btf_dump_test_case_*.c)
> >  >> @@ -273,7 +272,11 @@ TRUNNER_BPF_OBJS := $$(patsubst %.c,$$(TRUNNER_OUTPUT)/%.o, $$(TRUNNER_BPF_SRCS)
> >  >> TRUNNER_BPF_SKELS := $$(patsubst %.c,$$(TRUNNER_OUTPUT)/%.skel.h,      \
> >  >> $$(filter-out $(SKEL_BLACKLIST),       \
> >  >> $$(TRUNNER_BPF_SRCS)))
> >  >> -TEST_GEN_FILES += $$(TRUNNER_BPF_OBJS)
> >  >> +
> >  >> +TO_ADD := $(if $2,$$(TRUNNER_OUTPUT),$$(TRUNNER_BPF_OBJS))
> >  >> +$$(foreach i,$$(TO_ADD),\
> >  >> +       $$(eval \
> >  >> +               TEST_GEN_FILES += $$(if $$(filter $$i,$$(TEST_GEN_FILES)),,$$i)))
> >
> >  > This makes me cringe. Can we not have three levels of nested
> >  > evals, please? I also didn't get exactly what's the problem
> >  > you are trying to solve, could you give some example, please?
> >
> > It's sort of `unique` functionality.
>
> `unique` in make world is just $(sort $VAR). Isn't that a more
> light-weight and generic way to avoid duplicates in lib.mk?

Oh, my bad, totally forgot it. Sure! Thanks!

>
> >
> > With the current approach TEST_GEN_FILES has at least 2 copies of
> > an object file (for call test_progs and test_maps) which is both
> > inaccurate and increasing the length of the variable (even if
> > copying the same file should not cause problems).
> >
> >
> > (Without sub-directory handling it's even overwritten by
> > flavoured binaries in between).
> >
> > BTW, how would you like to change $(call ...) with $(value ...)?
> > It will get rid of one level of indirection but requires
> > rule-specific variables for rule generation, since some
> > evaluations are done in recipies.
>
> I don't exactly understand the implications, so don't know. But the
> less changes to this Makefile, the happier I am, so... :)

So, no way ;)

It would be relatively many changes, but more simple code without extra $$.

>
> >
> >  >>
> >  >> # Evaluate rules now with extra TRUNNER_XXX variables above already defined
> >  >> $$(eval $$(call DEFINE_TEST_RUNNER_RULES,$1,$2))
> >  >> --
> >  >> 2.26.2
> >  >>
> >
> >
> > --
> > WBR,
> > Yauheni Kaliuta
> >
>


-- 
WBR, Yauheni


  reply	other threads:[~2020-05-28 18:47 UTC|newest]

Thread overview: 57+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-05-22  4:13 [PATCH 0/8] selftests/bpf: installation and out of tree build fixes Yauheni Kaliuta
2020-05-22  4:13 ` [PATCH 1/8] selftests/bpf: remove test_align from Makefile Yauheni Kaliuta
2020-05-26 22:13   ` Andrii Nakryiko
2020-05-22  4:13 ` [PATCH 2/8] selftests/bpf: build bench.o for any $(OUTPUT) Yauheni Kaliuta
2020-05-26 22:13   ` Andrii Nakryiko
2020-05-27  4:54     ` Yauheni Kaliuta
2020-05-22  4:13 ` [PATCH 3/8] selftests/bpf: install btf .c files Yauheni Kaliuta
2020-05-22  4:13 ` [PATCH 4/8] selftests/bpf: fix object files installation Yauheni Kaliuta
2020-05-26 22:30   ` Andrii Nakryiko
2020-05-27  5:17     ` Yauheni Kaliuta
2020-05-28 18:39       ` Andrii Nakryiko
2020-05-28 18:46         ` Yauheni Kaliuta [this message]
2020-05-22  4:13 ` [PATCH 5/8] selftests/bpf: add output dir to include list Yauheni Kaliuta
2020-05-26 22:13   ` Andrii Nakryiko
2020-05-22  4:13 ` [PATCH 6/8] selftests/bpf: fix urandom_read installation Yauheni Kaliuta
2020-05-26 22:13   ` Andrii Nakryiko
2020-05-22  4:13 ` [PATCH 7/8] selftests/bpf: fix test.h placing for out of tree build Yauheni Kaliuta
2020-05-26 22:26   ` Andrii Nakryiko
2020-05-27  5:06     ` Yauheni Kaliuta
2020-05-22  4:13 ` [PATCH 8/8] selftests/bpf: factor out MKDIR rule Yauheni Kaliuta
2020-05-26 22:29   ` Andrii Nakryiko
2020-05-27  5:07     ` Yauheni Kaliuta
2020-05-22  6:40 ` [PATCH 0/8] selftests/bpf: installation and out of tree build fixes Yauheni Kaliuta
2020-05-22  8:19   ` [PATCH] selftests/bpf: split -extras target to -static and -gen Yauheni Kaliuta
2020-05-27  0:19     ` Andrii Nakryiko
2020-05-27  5:21       ` Yauheni Kaliuta
2020-05-27  5:37         ` Alexei Starovoitov
2020-05-27  7:19           ` Yauheni Kaliuta
2020-05-27 16:48             ` Alexei Starovoitov
2020-05-27 17:02               ` Yauheni Kaliuta
2020-05-27 17:05                 ` Alexei Starovoitov
2020-05-27 22:01                   ` shuah
2020-05-27 22:23                     ` Alexei Starovoitov
2020-05-28  8:05                       ` Jiri Benc
2020-05-28 10:56                         ` Greg KH
2020-05-28 16:14                           ` Alexei Starovoitov
2020-05-28 17:07                             ` Shuah Khan
2020-05-28 18:15                               ` Alexei Starovoitov
2020-05-28 18:29                                 ` Yauheni Kaliuta
2020-05-28 18:34                                   ` Alexei Starovoitov
2020-05-28 19:05                                     ` Shuah Khan
2020-05-28 18:59                                 ` Shuah Khan
2020-05-28 19:18                                   ` Alexei Starovoitov
2020-05-28 20:09                                     ` Shuah Khan
2020-05-28 22:47                                       ` Shuah Khan
2020-05-28 17:10                             ` Yauheni Kaliuta
2020-05-28 18:17                               ` Alexei Starovoitov
2020-05-28 19:09                               ` Shuah Khan
2020-05-28 19:20                                 ` Yauheni Kaliuta
2020-05-28 19:34                                   ` Shuah Khan
2020-05-26 21:48   ` [PATCH 0/8] selftests/bpf: installation and out of tree build fixes Daniel Borkmann
2020-05-27  4:45     ` Yauheni Kaliuta
2020-05-26 22:32   ` Andrii Nakryiko
2020-05-27  4:52     ` Yauheni Kaliuta
2020-05-27  5:04       ` Andrii Nakryiko
2020-05-27  7:25         ` Yauheni Kaliuta
2020-05-27  8:05           ` Yauheni Kaliuta

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=CANoWswmmjKmC8L8Fo27cUzGAF_vhWBgY52PForTfsffir7Qpyg@mail.gmail.com \
    --to=yauheni.kaliuta@redhat.com \
    --cc=andrii.nakryiko@gmail.com \
    --cc=andriin@fb.com \
    --cc=bpf@vger.kernel.org \
    --cc=daniel@iogearbox.net \
    --cc=jbenc@redhat.com \
    --cc=jolsa@redhat.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.