public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
* [Linux-v5.17-rc6] Building tools/perf with perl v5.34
@ 2022-03-05  7:52 Sedat Dilek
  2022-03-05  7:57 ` Sedat Dilek
  2022-03-05 20:09 ` Jiri Olsa
  0 siblings, 2 replies; 10+ messages in thread
From: Sedat Dilek @ 2022-03-05  7:52 UTC (permalink / raw)
  To: Peter Zijlstra, Ingo Molnar, Arnaldo Carvalho de Melo,
	Mark Rutland, Alexander Shishkin, Jiri Olsa, Namhyung Kim
  Cc: linux-perf-users, linux-kernel

Hi,

I am here on Debian/unstable AMD64 which switched over to perl v5.34
in February 2022.

Unfortunately, my perf does not build with this (lib)perl version:

$ ~/bin/perf -vv
perf version 5.17-rc6
                dwarf: [ on  ]  # HAVE_DWARF_SUPPORT
   dwarf_getlocations: [ on  ]  # HAVE_DWARF_GETLOCATIONS_SUPPORT
                glibc: [ on  ]  # HAVE_GLIBC_SUPPORT
        syscall_table: [ on  ]  # HAVE_SYSCALL_TABLE_SUPPORT
               libbfd: [ on  ]  # HAVE_LIBBFD_SUPPORT
               libelf: [ on  ]  # HAVE_LIBELF_SUPPORT
              libnuma: [ on  ]  # HAVE_LIBNUMA_SUPPORT
numa_num_possible_cpus: [ on  ]  # HAVE_LIBNUMA_SUPPORT
              libperl: [ OFF ]  # HAVE_LIBPERL_SUPPORT
            libpython: [ on  ]  # HAVE_LIBPYTHON_SUPPORT
             libslang: [ on  ]  # HAVE_SLANG_SUPPORT
            libcrypto: [ on  ]  # HAVE_LIBCRYPTO_SUPPORT
            libunwind: [ on  ]  # HAVE_LIBUNWIND_SUPPORT
   libdw-dwarf-unwind: [ on  ]  # HAVE_DWARF_SUPPORT
                 zlib: [ on  ]  # HAVE_ZLIB_SUPPORT
                 lzma: [ on  ]  # HAVE_LZMA_SUPPORT
            get_cpuid: [ on  ]  # HAVE_AUXTRACE_SUPPORT
                  bpf: [ on  ]  # HAVE_LIBBPF_SUPPORT
                  aio: [ on  ]  # HAVE_AIO_SUPPORT
                 zstd: [ on  ]  # HAVE_ZSTD_SUPPORT
              libpfm4: [ OFF ]  # HAVE_LIBPFM

$ grep libperl ../make-log_perf-python3.10-install_bin.txt
9:Makefile.config:788: Missing perl devel files. Disabling perl
scripting support, please install perl-ExtUtils-Embed/libperl-dev
22:...                       libperl: [ OFF ]

Checking for these requirements:

# dpkg -l | grep perl | grep 5.34 | awk '/^ii/ {print $1 " " $2 " "
$3}' | column -t
ii  libperl-dev:amd64  5.34.0-3
ii  libperl5.34:amd64  5.34.0-3
ii  perl               5.34.0-3
ii  perl-base          5.34.0-3
ii  perl-modules-5.34  5.34.0-3

# dpkg -L perl-modules-5.34 | grep -i ExtUtils | grep -i Embed
/usr/share/perl/5.34.0/ExtUtils/Embed.pm

Can you please comment on this?

Thanks.

Regards,
- Sedat -

[1] https://unix.stackexchange.com/questions/167292/what-is-debian-equivalent-of-rpm-package-perl-extutils-embed

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [Linux-v5.17-rc6] Building tools/perf with perl v5.34
  2022-03-05  7:52 [Linux-v5.17-rc6] Building tools/perf with perl v5.34 Sedat Dilek
@ 2022-03-05  7:57 ` Sedat Dilek
  2022-03-05  8:26   ` Sedat Dilek
  2022-03-05 20:09 ` Jiri Olsa
  1 sibling, 1 reply; 10+ messages in thread
From: Sedat Dilek @ 2022-03-05  7:57 UTC (permalink / raw)
  To: Peter Zijlstra, Ingo Molnar, Arnaldo Carvalho de Melo,
	Mark Rutland, Alexander Shishkin, Jiri Olsa, Namhyung Kim
  Cc: linux-perf-users, linux-kernel

On Sat, Mar 5, 2022 at 8:52 AM Sedat Dilek <sedat.dilek@gmail.com> wrote:
>
> Hi,
>
> I am here on Debian/unstable AMD64 which switched over to perl v5.34
> in February 2022.
>
> Unfortunately, my perf does not build with this (lib)perl version:
>
> $ ~/bin/perf -vv
> perf version 5.17-rc6
>                 dwarf: [ on  ]  # HAVE_DWARF_SUPPORT
>    dwarf_getlocations: [ on  ]  # HAVE_DWARF_GETLOCATIONS_SUPPORT
>                 glibc: [ on  ]  # HAVE_GLIBC_SUPPORT
>         syscall_table: [ on  ]  # HAVE_SYSCALL_TABLE_SUPPORT
>                libbfd: [ on  ]  # HAVE_LIBBFD_SUPPORT
>                libelf: [ on  ]  # HAVE_LIBELF_SUPPORT
>               libnuma: [ on  ]  # HAVE_LIBNUMA_SUPPORT
> numa_num_possible_cpus: [ on  ]  # HAVE_LIBNUMA_SUPPORT
>               libperl: [ OFF ]  # HAVE_LIBPERL_SUPPORT
>             libpython: [ on  ]  # HAVE_LIBPYTHON_SUPPORT
>              libslang: [ on  ]  # HAVE_SLANG_SUPPORT
>             libcrypto: [ on  ]  # HAVE_LIBCRYPTO_SUPPORT
>             libunwind: [ on  ]  # HAVE_LIBUNWIND_SUPPORT
>    libdw-dwarf-unwind: [ on  ]  # HAVE_DWARF_SUPPORT
>                  zlib: [ on  ]  # HAVE_ZLIB_SUPPORT
>                  lzma: [ on  ]  # HAVE_LZMA_SUPPORT
>             get_cpuid: [ on  ]  # HAVE_AUXTRACE_SUPPORT
>                   bpf: [ on  ]  # HAVE_LIBBPF_SUPPORT
>                   aio: [ on  ]  # HAVE_AIO_SUPPORT
>                  zstd: [ on  ]  # HAVE_ZSTD_SUPPORT
>               libpfm4: [ OFF ]  # HAVE_LIBPFM
>
> $ grep libperl ../make-log_perf-python3.10-install_bin.txt
> 9:Makefile.config:788: Missing perl devel files. Disabling perl
> scripting support, please install perl-ExtUtils-Embed/libperl-dev
> 22:...                       libperl: [ OFF ]
>
> Checking for these requirements:
>
> # dpkg -l | grep perl | grep 5.34 | awk '/^ii/ {print $1 " " $2 " "
> $3}' | column -t
> ii  libperl-dev:amd64  5.34.0-3
> ii  libperl5.34:amd64  5.34.0-3
> ii  perl               5.34.0-3
> ii  perl-base          5.34.0-3
> ii  perl-modules-5.34  5.34.0-3
>
> # dpkg -L perl-modules-5.34 | grep -i ExtUtils | grep -i Embed
> /usr/share/perl/5.34.0/ExtUtils/Embed.pm
>
> Can you please comment on this?
>
> Thanks.
>
> Regards,
> - Sedat -
>
> [1] https://unix.stackexchange.com/questions/167292/what-is-debian-equivalent-of-rpm-package-perl-extutils-embed

My command-line:

cd /path/to/linux.git

$ make V=1 -j4 HOSTCC=clang HOSTCXX=clang++ HOSTLD=ld.lld
HOSTAR=llvm-ar CC=clang LD=ld.lld AR=llvm-ar NM=llvm-nm
OBJCOPY=llvm-objcopy OBJDUMP=llvm-objdump OBJSIZE=llvm-size
READELF=llvm-readelf STRIP=llvm-strip LLVM_IAS=1 -C tools/perf
PYTHON=python3.10 install-bin

I use the -gnu-std-11 patchset plus some own:

$ git log --oneline v5.17-rc6.. | grep 'std=gnu11'
05d8e9b88918 tools: libtraceevent: Use -std=gnu11
ee44279e6b01 tools: libsubcmd: Use -std=gnu11
411fa2d6da5c tools: libapi: Use -std=gnu11
3f0092b7e1b9 tools: perf: Use -std=gnu11
0cf56ddf2b41 tools: libbpf: Use -std=gnu11
96a4222bdd4c Kbuild: use -std=gnu11 for KBUILD_USERCFLAGS
6a7cc105b238 Kbuild: move to -std=gnu11

If this matters...

- Sedat -

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [Linux-v5.17-rc6] Building tools/perf with perl v5.34
  2022-03-05  7:57 ` Sedat Dilek
@ 2022-03-05  8:26   ` Sedat Dilek
  2022-03-05 11:11     ` Sedat Dilek
  0 siblings, 1 reply; 10+ messages in thread
From: Sedat Dilek @ 2022-03-05  8:26 UTC (permalink / raw)
  To: Peter Zijlstra, Ingo Molnar, Arnaldo Carvalho de Melo,
	Mark Rutland, Alexander Shishkin, Jiri Olsa, Namhyung Kim
  Cc: linux-perf-users, linux-kernel

On Sat, Mar 5, 2022 at 8:57 AM Sedat Dilek <sedat.dilek@gmail.com> wrote:
>
> On Sat, Mar 5, 2022 at 8:52 AM Sedat Dilek <sedat.dilek@gmail.com> wrote:
> >
> > Hi,
> >
> > I am here on Debian/unstable AMD64 which switched over to perl v5.34
> > in February 2022.
> >
> > Unfortunately, my perf does not build with this (lib)perl version:
> >
> > $ ~/bin/perf -vv
> > perf version 5.17-rc6
> >                 dwarf: [ on  ]  # HAVE_DWARF_SUPPORT
> >    dwarf_getlocations: [ on  ]  # HAVE_DWARF_GETLOCATIONS_SUPPORT
> >                 glibc: [ on  ]  # HAVE_GLIBC_SUPPORT
> >         syscall_table: [ on  ]  # HAVE_SYSCALL_TABLE_SUPPORT
> >                libbfd: [ on  ]  # HAVE_LIBBFD_SUPPORT
> >                libelf: [ on  ]  # HAVE_LIBELF_SUPPORT
> >               libnuma: [ on  ]  # HAVE_LIBNUMA_SUPPORT
> > numa_num_possible_cpus: [ on  ]  # HAVE_LIBNUMA_SUPPORT
> >               libperl: [ OFF ]  # HAVE_LIBPERL_SUPPORT
> >             libpython: [ on  ]  # HAVE_LIBPYTHON_SUPPORT
> >              libslang: [ on  ]  # HAVE_SLANG_SUPPORT
> >             libcrypto: [ on  ]  # HAVE_LIBCRYPTO_SUPPORT
> >             libunwind: [ on  ]  # HAVE_LIBUNWIND_SUPPORT
> >    libdw-dwarf-unwind: [ on  ]  # HAVE_DWARF_SUPPORT
> >                  zlib: [ on  ]  # HAVE_ZLIB_SUPPORT
> >                  lzma: [ on  ]  # HAVE_LZMA_SUPPORT
> >             get_cpuid: [ on  ]  # HAVE_AUXTRACE_SUPPORT
> >                   bpf: [ on  ]  # HAVE_LIBBPF_SUPPORT
> >                   aio: [ on  ]  # HAVE_AIO_SUPPORT
> >                  zstd: [ on  ]  # HAVE_ZSTD_SUPPORT
> >               libpfm4: [ OFF ]  # HAVE_LIBPFM
> >
> > $ grep libperl ../make-log_perf-python3.10-install_bin.txt
> > 9:Makefile.config:788: Missing perl devel files. Disabling perl
> > scripting support, please install perl-ExtUtils-Embed/libperl-dev
> > 22:...                       libperl: [ OFF ]
> >
> > Checking for these requirements:
> >
> > # dpkg -l | grep perl | grep 5.34 | awk '/^ii/ {print $1 " " $2 " "
> > $3}' | column -t
> > ii  libperl-dev:amd64  5.34.0-3
> > ii  libperl5.34:amd64  5.34.0-3
> > ii  perl               5.34.0-3
> > ii  perl-base          5.34.0-3
> > ii  perl-modules-5.34  5.34.0-3
> >
> > # dpkg -L perl-modules-5.34 | grep -i ExtUtils | grep -i Embed
> > /usr/share/perl/5.34.0/ExtUtils/Embed.pm
> >
> > Can you please comment on this?
> >
> > Thanks.
> >
> > Regards,
> > - Sedat -
> >
> > [1] https://unix.stackexchange.com/questions/167292/what-is-debian-equivalent-of-rpm-package-perl-extutils-embed
>
> My command-line:
>
> cd /path/to/linux.git
>
> $ make V=1 -j4 HOSTCC=clang HOSTCXX=clang++ HOSTLD=ld.lld
> HOSTAR=llvm-ar CC=clang LD=ld.lld AR=llvm-ar NM=llvm-nm
> OBJCOPY=llvm-objcopy OBJDUMP=llvm-objdump OBJSIZE=llvm-size
> READELF=llvm-readelf STRIP=llvm-strip LLVM_IAS=1 -C tools/perf
> PYTHON=python3.10 install-bin
>
> I use the -gnu-std-11 patchset plus some own:
>
> $ git log --oneline v5.17-rc6.. | grep 'std=gnu11'
> 05d8e9b88918 tools: libtraceevent: Use -std=gnu11
> ee44279e6b01 tools: libsubcmd: Use -std=gnu11
> 411fa2d6da5c tools: libapi: Use -std=gnu11
> 3f0092b7e1b9 tools: perf: Use -std=gnu11
> 0cf56ddf2b41 tools: libbpf: Use -std=gnu11
> 96a4222bdd4c Kbuild: use -std=gnu11 for KBUILD_USERCFLAGS
> 6a7cc105b238 Kbuild: move to -std=gnu11
>
> If this matters...
>

[ tools/perf/Makefile.config ]

ifdef NO_LIBPERL
  CFLAGS += -DNO_LIBPERL
else
  PERL_EMBED_LDOPTS = $(shell perl -MExtUtils::Embed -e ldopts 2>/dev/null)
  PERL_EMBED_LDFLAGS = $(call strip-libs,$(PERL_EMBED_LDOPTS))
  PERL_EMBED_LIBADD = $(call grep-libs,$(PERL_EMBED_LDOPTS))
  PERL_EMBED_CCOPTS = $(shell perl -MExtUtils::Embed -e ccopts 2>/dev/null)
  PERL_EMBED_CCOPTS := $(filter-out -specs=%,$(PERL_EMBED_CCOPTS))
  PERL_EMBED_CCOPTS := $(filter-out -flto=auto -ffat-lto-objects,
$(PERL_EMBED_CCOPTS))
  PERL_EMBED_LDOPTS := $(filter-out -specs=%,$(PERL_EMBED_LDOPTS))
  FLAGS_PERL_EMBED=$(PERL_EMBED_CCOPTS) $(PERL_EMBED_LDOPTS)

  ifneq ($(feature-libperl), 1)
    CFLAGS += -DNO_LIBPERL
    NO_LIBPERL := 1
    msg := $(warning Missing perl devel files. Disabling perl
scripting support, please install perl-ExtUtils-Embed/libperl-dev);
  else
    LDFLAGS += $(PERL_EMBED_LDFLAGS)
    EXTLIBS += $(PERL_EMBED_LIBADD)
    CFLAGS += -DHAVE_LIBPERL_SUPPORT
    $(call detected,CONFIG_LIBPERL)
  endif
endif

$ perl -MExtUtils::Embed -e ldopts
-Wl,-E  -fstack-protector-strong -L/usr/local/lib
-L/usr/lib/x86_64-linux-gnu/perl/5.34/CORE -lperl -ldl -lm -lpthread
-lc -lcrypt

$ perl -MExtUtils::Embed -e ccopts
-D_REENTRANT -D_GNU_SOURCE -DDEBIAN -fwrapv -fno-strict-aliasing -pipe
-I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64
-I/usr/lib/x86_64-linux-gnu/perl/5.34/CORE

- Sedat -

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [Linux-v5.17-rc6] Building tools/perf with perl v5.34
  2022-03-05  8:26   ` Sedat Dilek
@ 2022-03-05 11:11     ` Sedat Dilek
  0 siblings, 0 replies; 10+ messages in thread
From: Sedat Dilek @ 2022-03-05 11:11 UTC (permalink / raw)
  To: Peter Zijlstra, Ingo Molnar, Arnaldo Carvalho de Melo,
	Mark Rutland, Alexander Shishkin, Jiri Olsa, Namhyung Kim
  Cc: linux-perf-users, linux-kernel

On Sat, Mar 5, 2022 at 9:26 AM Sedat Dilek <sedat.dilek@gmail.com> wrote:
>
> On Sat, Mar 5, 2022 at 8:57 AM Sedat Dilek <sedat.dilek@gmail.com> wrote:
> >
> > On Sat, Mar 5, 2022 at 8:52 AM Sedat Dilek <sedat.dilek@gmail.com> wrote:
> > >
> > > Hi,
> > >
> > > I am here on Debian/unstable AMD64 which switched over to perl v5.34
> > > in February 2022.
> > >
> > > Unfortunately, my perf does not build with this (lib)perl version:
> > >
> > > $ ~/bin/perf -vv
> > > perf version 5.17-rc6
> > >                 dwarf: [ on  ]  # HAVE_DWARF_SUPPORT
> > >    dwarf_getlocations: [ on  ]  # HAVE_DWARF_GETLOCATIONS_SUPPORT
> > >                 glibc: [ on  ]  # HAVE_GLIBC_SUPPORT
> > >         syscall_table: [ on  ]  # HAVE_SYSCALL_TABLE_SUPPORT
> > >                libbfd: [ on  ]  # HAVE_LIBBFD_SUPPORT
> > >                libelf: [ on  ]  # HAVE_LIBELF_SUPPORT
> > >               libnuma: [ on  ]  # HAVE_LIBNUMA_SUPPORT
> > > numa_num_possible_cpus: [ on  ]  # HAVE_LIBNUMA_SUPPORT
> > >               libperl: [ OFF ]  # HAVE_LIBPERL_SUPPORT
> > >             libpython: [ on  ]  # HAVE_LIBPYTHON_SUPPORT
> > >              libslang: [ on  ]  # HAVE_SLANG_SUPPORT
> > >             libcrypto: [ on  ]  # HAVE_LIBCRYPTO_SUPPORT
> > >             libunwind: [ on  ]  # HAVE_LIBUNWIND_SUPPORT
> > >    libdw-dwarf-unwind: [ on  ]  # HAVE_DWARF_SUPPORT
> > >                  zlib: [ on  ]  # HAVE_ZLIB_SUPPORT
> > >                  lzma: [ on  ]  # HAVE_LZMA_SUPPORT
> > >             get_cpuid: [ on  ]  # HAVE_AUXTRACE_SUPPORT
> > >                   bpf: [ on  ]  # HAVE_LIBBPF_SUPPORT
> > >                   aio: [ on  ]  # HAVE_AIO_SUPPORT
> > >                  zstd: [ on  ]  # HAVE_ZSTD_SUPPORT
> > >               libpfm4: [ OFF ]  # HAVE_LIBPFM
> > >
> > > $ grep libperl ../make-log_perf-python3.10-install_bin.txt
> > > 9:Makefile.config:788: Missing perl devel files. Disabling perl
> > > scripting support, please install perl-ExtUtils-Embed/libperl-dev
> > > 22:...                       libperl: [ OFF ]
> > >
> > > Checking for these requirements:
> > >
> > > # dpkg -l | grep perl | grep 5.34 | awk '/^ii/ {print $1 " " $2 " "
> > > $3}' | column -t
> > > ii  libperl-dev:amd64  5.34.0-3
> > > ii  libperl5.34:amd64  5.34.0-3
> > > ii  perl               5.34.0-3
> > > ii  perl-base          5.34.0-3
> > > ii  perl-modules-5.34  5.34.0-3
> > >
> > > # dpkg -L perl-modules-5.34 | grep -i ExtUtils | grep -i Embed
> > > /usr/share/perl/5.34.0/ExtUtils/Embed.pm
> > >
> > > Can you please comment on this?
> > >
> > > Thanks.
> > >
> > > Regards,
> > > - Sedat -
> > >
> > > [1] https://unix.stackexchange.com/questions/167292/what-is-debian-equivalent-of-rpm-package-perl-extutils-embed
> >
> > My command-line:
> >
> > cd /path/to/linux.git
> >
> > $ make V=1 -j4 HOSTCC=clang HOSTCXX=clang++ HOSTLD=ld.lld
> > HOSTAR=llvm-ar CC=clang LD=ld.lld AR=llvm-ar NM=llvm-nm
> > OBJCOPY=llvm-objcopy OBJDUMP=llvm-objdump OBJSIZE=llvm-size
> > READELF=llvm-readelf STRIP=llvm-strip LLVM_IAS=1 -C tools/perf
> > PYTHON=python3.10 install-bin
> >
> > I use the -gnu-std-11 patchset plus some own:
> >
> > $ git log --oneline v5.17-rc6.. | grep 'std=gnu11'
> > 05d8e9b88918 tools: libtraceevent: Use -std=gnu11
> > ee44279e6b01 tools: libsubcmd: Use -std=gnu11
> > 411fa2d6da5c tools: libapi: Use -std=gnu11
> > 3f0092b7e1b9 tools: perf: Use -std=gnu11
> > 0cf56ddf2b41 tools: libbpf: Use -std=gnu11
> > 96a4222bdd4c Kbuild: use -std=gnu11 for KBUILD_USERCFLAGS
> > 6a7cc105b238 Kbuild: move to -std=gnu11
> >
> > If this matters...
> >
>
> [ tools/perf/Makefile.config ]
>
> ifdef NO_LIBPERL
>   CFLAGS += -DNO_LIBPERL
> else
>   PERL_EMBED_LDOPTS = $(shell perl -MExtUtils::Embed -e ldopts 2>/dev/null)
>   PERL_EMBED_LDFLAGS = $(call strip-libs,$(PERL_EMBED_LDOPTS))
>   PERL_EMBED_LIBADD = $(call grep-libs,$(PERL_EMBED_LDOPTS))
>   PERL_EMBED_CCOPTS = $(shell perl -MExtUtils::Embed -e ccopts 2>/dev/null)
>   PERL_EMBED_CCOPTS := $(filter-out -specs=%,$(PERL_EMBED_CCOPTS))
>   PERL_EMBED_CCOPTS := $(filter-out -flto=auto -ffat-lto-objects,
> $(PERL_EMBED_CCOPTS))
>   PERL_EMBED_LDOPTS := $(filter-out -specs=%,$(PERL_EMBED_LDOPTS))
>   FLAGS_PERL_EMBED=$(PERL_EMBED_CCOPTS) $(PERL_EMBED_LDOPTS)
>
>   ifneq ($(feature-libperl), 1)
>     CFLAGS += -DNO_LIBPERL
>     NO_LIBPERL := 1
>     msg := $(warning Missing perl devel files. Disabling perl
> scripting support, please install perl-ExtUtils-Embed/libperl-dev);
>   else
>     LDFLAGS += $(PERL_EMBED_LDFLAGS)
>     EXTLIBS += $(PERL_EMBED_LIBADD)
>     CFLAGS += -DHAVE_LIBPERL_SUPPORT
>     $(call detected,CONFIG_LIBPERL)
>   endif
> endif
>
> $ perl -MExtUtils::Embed -e ldopts
> -Wl,-E  -fstack-protector-strong -L/usr/local/lib
> -L/usr/lib/x86_64-linux-gnu/perl/5.34/CORE -lperl -ldl -lm -lpthread
> -lc -lcrypt
>
> $ perl -MExtUtils::Embed -e ccopts
> -D_REENTRANT -D_GNU_SOURCE -DDEBIAN -fwrapv -fno-strict-aliasing -pipe
> -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64
> -I/usr/lib/x86_64-linux-gnu/perl/5.34/CORE
>

Looks like an issue when using LLVM/Clang - distro or selfmade does not matter.
With GCC I can see libperl enabled.

- Sedat -

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [Linux-v5.17-rc6] Building tools/perf with perl v5.34
  2022-03-05  7:52 [Linux-v5.17-rc6] Building tools/perf with perl v5.34 Sedat Dilek
  2022-03-05  7:57 ` Sedat Dilek
@ 2022-03-05 20:09 ` Jiri Olsa
  2022-03-06  2:28   ` Sedat Dilek
  1 sibling, 1 reply; 10+ messages in thread
From: Jiri Olsa @ 2022-03-05 20:09 UTC (permalink / raw)
  To: Sedat Dilek
  Cc: Peter Zijlstra, Ingo Molnar, Arnaldo Carvalho de Melo,
	Mark Rutland, Alexander Shishkin, Jiri Olsa, Namhyung Kim,
	linux-perf-users, linux-kernel

On Sat, Mar 05, 2022 at 08:52:18AM +0100, Sedat Dilek wrote:
> Hi,
> 
> I am here on Debian/unstable AMD64 which switched over to perl v5.34
> in February 2022.
> 
> Unfortunately, my perf does not build with this (lib)perl version:
> 
> $ ~/bin/perf -vv
> perf version 5.17-rc6
>                 dwarf: [ on  ]  # HAVE_DWARF_SUPPORT
>    dwarf_getlocations: [ on  ]  # HAVE_DWARF_GETLOCATIONS_SUPPORT
>                 glibc: [ on  ]  # HAVE_GLIBC_SUPPORT
>         syscall_table: [ on  ]  # HAVE_SYSCALL_TABLE_SUPPORT
>                libbfd: [ on  ]  # HAVE_LIBBFD_SUPPORT
>                libelf: [ on  ]  # HAVE_LIBELF_SUPPORT
>               libnuma: [ on  ]  # HAVE_LIBNUMA_SUPPORT
> numa_num_possible_cpus: [ on  ]  # HAVE_LIBNUMA_SUPPORT
>               libperl: [ OFF ]  # HAVE_LIBPERL_SUPPORT
>             libpython: [ on  ]  # HAVE_LIBPYTHON_SUPPORT
>              libslang: [ on  ]  # HAVE_SLANG_SUPPORT
>             libcrypto: [ on  ]  # HAVE_LIBCRYPTO_SUPPORT
>             libunwind: [ on  ]  # HAVE_LIBUNWIND_SUPPORT
>    libdw-dwarf-unwind: [ on  ]  # HAVE_DWARF_SUPPORT
>                  zlib: [ on  ]  # HAVE_ZLIB_SUPPORT
>                  lzma: [ on  ]  # HAVE_LZMA_SUPPORT
>             get_cpuid: [ on  ]  # HAVE_AUXTRACE_SUPPORT
>                   bpf: [ on  ]  # HAVE_LIBBPF_SUPPORT
>                   aio: [ on  ]  # HAVE_AIO_SUPPORT
>                  zstd: [ on  ]  # HAVE_ZSTD_SUPPORT
>               libpfm4: [ OFF ]  # HAVE_LIBPFM
> 
> $ grep libperl ../make-log_perf-python3.10-install_bin.txt
> 9:Makefile.config:788: Missing perl devel files. Disabling perl
> scripting support, please install perl-ExtUtils-Embed/libperl-dev
> 22:...                       libperl: [ OFF ]
> 
> Checking for these requirements:
> 
> # dpkg -l | grep perl | grep 5.34 | awk '/^ii/ {print $1 " " $2 " "
> $3}' | column -t
> ii  libperl-dev:amd64  5.34.0-3
> ii  libperl5.34:amd64  5.34.0-3
> ii  perl               5.34.0-3
> ii  perl-base          5.34.0-3
> ii  perl-modules-5.34  5.34.0-3
> 
> # dpkg -L perl-modules-5.34 | grep -i ExtUtils | grep -i Embed
> /usr/share/perl/5.34.0/ExtUtils/Embed.pm
> 
> Can you please comment on this?

hi,
is there something in tools/build/feature/test-libperl.make.output ?

jirka

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [Linux-v5.17-rc6] Building tools/perf with perl v5.34
  2022-03-05 20:09 ` Jiri Olsa
@ 2022-03-06  2:28   ` Sedat Dilek
  2022-03-06  3:18     ` Sedat Dilek
  2022-03-06 15:42     ` Jiri Olsa
  0 siblings, 2 replies; 10+ messages in thread
From: Sedat Dilek @ 2022-03-06  2:28 UTC (permalink / raw)
  To: Jiri Olsa
  Cc: Peter Zijlstra, Ingo Molnar, Arnaldo Carvalho de Melo,
	Mark Rutland, Alexander Shishkin, Jiri Olsa, Namhyung Kim,
	linux-perf-users, linux-kernel

[-- Attachment #1: Type: text/plain, Size: 3008 bytes --]

On Sat, Mar 5, 2022 at 9:09 PM Jiri Olsa <olsajiri@gmail.com> wrote:
>
> On Sat, Mar 05, 2022 at 08:52:18AM +0100, Sedat Dilek wrote:
> > Hi,
> >
> > I am here on Debian/unstable AMD64 which switched over to perl v5.34
> > in February 2022.
> >
> > Unfortunately, my perf does not build with this (lib)perl version:
> >
> > $ ~/bin/perf -vv
> > perf version 5.17-rc6
> >                 dwarf: [ on  ]  # HAVE_DWARF_SUPPORT
> >    dwarf_getlocations: [ on  ]  # HAVE_DWARF_GETLOCATIONS_SUPPORT
> >                 glibc: [ on  ]  # HAVE_GLIBC_SUPPORT
> >         syscall_table: [ on  ]  # HAVE_SYSCALL_TABLE_SUPPORT
> >                libbfd: [ on  ]  # HAVE_LIBBFD_SUPPORT
> >                libelf: [ on  ]  # HAVE_LIBELF_SUPPORT
> >               libnuma: [ on  ]  # HAVE_LIBNUMA_SUPPORT
> > numa_num_possible_cpus: [ on  ]  # HAVE_LIBNUMA_SUPPORT
> >               libperl: [ OFF ]  # HAVE_LIBPERL_SUPPORT
> >             libpython: [ on  ]  # HAVE_LIBPYTHON_SUPPORT
> >              libslang: [ on  ]  # HAVE_SLANG_SUPPORT
> >             libcrypto: [ on  ]  # HAVE_LIBCRYPTO_SUPPORT
> >             libunwind: [ on  ]  # HAVE_LIBUNWIND_SUPPORT
> >    libdw-dwarf-unwind: [ on  ]  # HAVE_DWARF_SUPPORT
> >                  zlib: [ on  ]  # HAVE_ZLIB_SUPPORT
> >                  lzma: [ on  ]  # HAVE_LZMA_SUPPORT
> >             get_cpuid: [ on  ]  # HAVE_AUXTRACE_SUPPORT
> >                   bpf: [ on  ]  # HAVE_LIBBPF_SUPPORT
> >                   aio: [ on  ]  # HAVE_AIO_SUPPORT
> >                  zstd: [ on  ]  # HAVE_ZSTD_SUPPORT
> >               libpfm4: [ OFF ]  # HAVE_LIBPFM
> >
> > $ grep libperl ../make-log_perf-python3.10-install_bin.txt
> > 9:Makefile.config:788: Missing perl devel files. Disabling perl
> > scripting support, please install perl-ExtUtils-Embed/libperl-dev
> > 22:...                       libperl: [ OFF ]
> >
> > Checking for these requirements:
> >
> > # dpkg -l | grep perl | grep 5.34 | awk '/^ii/ {print $1 " " $2 " "
> > $3}' | column -t
> > ii  libperl-dev:amd64  5.34.0-3
> > ii  libperl5.34:amd64  5.34.0-3
> > ii  perl               5.34.0-3
> > ii  perl-base          5.34.0-3
> > ii  perl-modules-5.34  5.34.0-3
> >
> > # dpkg -L perl-modules-5.34 | grep -i ExtUtils | grep -i Embed
> > /usr/share/perl/5.34.0/ExtUtils/Embed.pm
> >
> > Can you please comment on this?
>
> hi,
> is there something in tools/build/feature/test-libperl.make.output ?
>

Hey jirka!

Indeed there is such a file.

$ LC_ALL=C ll tools/build/feature/test-libperl.make.output
-rw-r--r-- 1 dileks dileks 24K Mar  6 03:22
tools/build/feature/test-libperl.make.output

Reproducer:

make distclean
make -C tools/perf clean

MAKE="make"
MAKE_OPTS="HOSTCC=clang-13 HOSTCXX=clang++-13 HOSTLD=ld.lld-13
HOSTAR=llvm-ar-13 CC=clang-13 LD=ld.lld-13 AR=llvm-ar-13 NM=llvm-nm-13
OBJCOPY=llvm-objcopy-13 OBJDUMP=llvm-objdump-13 OBJSIZE=llvm-size-13
READELF=llvm-readelf-13 STRIP=llvm-strip-13 LLVM_IAS=1"

LC_ALL=C $MAKE V=1 $MAKE_OPTS -C tools/perf PYTHON=python3 install-bin

- Sedat -

[-- Attachment #2: test-libperl.make.output --]
[-- Type: application/octet-stream, Size: 24131 bytes --]

In file included from test-libperl.c:3:
In file included from /usr/lib/x86_64-linux-gnu/perl/5.34/CORE/perl.h:4085:
In file included from /usr/lib/x86_64-linux-gnu/perl/5.34/CORE/hv.h:659:
In file included from /usr/lib/x86_64-linux-gnu/perl/5.34/CORE/hv_func.h:34:
In file included from /usr/lib/x86_64-linux-gnu/perl/5.34/CORE/sbox32_hash.h:4:
/usr/lib/x86_64-linux-gnu/perl/5.34/CORE/zaphod32_hash.h:150:5: error: '(' and '{' tokens introducing statement expression appear in different macro expansion contexts [-Werror,-Wcompound-token-split-by-macro]
    ZAPHOD32_SCRAMBLE32(state[0],0x9fade23b);
    ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/lib/x86_64-linux-gnu/perl/5.34/CORE/zaphod32_hash.h:80:38: note: expanded from macro 'ZAPHOD32_SCRAMBLE32'
#define ZAPHOD32_SCRAMBLE32(v,prime) STMT_START {  \
                                     ^~~~~~~~~~
/usr/lib/x86_64-linux-gnu/perl/5.34/CORE/perl.h:737:29: note: expanded from macro 'STMT_START'
#   define STMT_START   (void)( /* gcc supports "({ STATEMENTS; })" */
                              ^
/usr/lib/x86_64-linux-gnu/perl/5.34/CORE/zaphod32_hash.h:150:5: note: '{' token is here
    ZAPHOD32_SCRAMBLE32(state[0],0x9fade23b);
    ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/lib/x86_64-linux-gnu/perl/5.34/CORE/zaphod32_hash.h:80:49: note: expanded from macro 'ZAPHOD32_SCRAMBLE32'
#define ZAPHOD32_SCRAMBLE32(v,prime) STMT_START {  \
                                                ^
/usr/lib/x86_64-linux-gnu/perl/5.34/CORE/zaphod32_hash.h:150:5: error: '}' and ')' tokens terminating statement expression appear in different macro expansion contexts [-Werror,-Wcompound-token-split-by-macro]
    ZAPHOD32_SCRAMBLE32(state[0],0x9fade23b);
    ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/lib/x86_64-linux-gnu/perl/5.34/CORE/zaphod32_hash.h:87:41: note: expanded from macro 'ZAPHOD32_SCRAMBLE32'
    v ^= (v>>23);                       \
                                        ^
/usr/lib/x86_64-linux-gnu/perl/5.34/CORE/zaphod32_hash.h:150:5: note: ')' token is here
    ZAPHOD32_SCRAMBLE32(state[0],0x9fade23b);
    ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/lib/x86_64-linux-gnu/perl/5.34/CORE/zaphod32_hash.h:88:3: note: expanded from macro 'ZAPHOD32_SCRAMBLE32'
} STMT_END
  ^~~~~~~~
/usr/lib/x86_64-linux-gnu/perl/5.34/CORE/perl.h:738:21: note: expanded from macro 'STMT_END'
#   define STMT_END     )
                        ^
In file included from test-libperl.c:3:
In file included from /usr/lib/x86_64-linux-gnu/perl/5.34/CORE/perl.h:4085:
In file included from /usr/lib/x86_64-linux-gnu/perl/5.34/CORE/hv.h:659:
In file included from /usr/lib/x86_64-linux-gnu/perl/5.34/CORE/hv_func.h:34:
In file included from /usr/lib/x86_64-linux-gnu/perl/5.34/CORE/sbox32_hash.h:4:
/usr/lib/x86_64-linux-gnu/perl/5.34/CORE/zaphod32_hash.h:151:5: error: '(' and '{' tokens introducing statement expression appear in different macro expansion contexts [-Werror,-Wcompound-token-split-by-macro]
    ZAPHOD32_SCRAMBLE32(state[1],0xaa6f908d);
    ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/lib/x86_64-linux-gnu/perl/5.34/CORE/zaphod32_hash.h:80:38: note: expanded from macro 'ZAPHOD32_SCRAMBLE32'
#define ZAPHOD32_SCRAMBLE32(v,prime) STMT_START {  \
                                     ^~~~~~~~~~
/usr/lib/x86_64-linux-gnu/perl/5.34/CORE/perl.h:737:29: note: expanded from macro 'STMT_START'
#   define STMT_START   (void)( /* gcc supports "({ STATEMENTS; })" */
                              ^
/usr/lib/x86_64-linux-gnu/perl/5.34/CORE/zaphod32_hash.h:151:5: note: '{' token is here
    ZAPHOD32_SCRAMBLE32(state[1],0xaa6f908d);
    ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/lib/x86_64-linux-gnu/perl/5.34/CORE/zaphod32_hash.h:80:49: note: expanded from macro 'ZAPHOD32_SCRAMBLE32'
#define ZAPHOD32_SCRAMBLE32(v,prime) STMT_START {  \
                                                ^
/usr/lib/x86_64-linux-gnu/perl/5.34/CORE/zaphod32_hash.h:151:5: error: '}' and ')' tokens terminating statement expression appear in different macro expansion contexts [-Werror,-Wcompound-token-split-by-macro]
    ZAPHOD32_SCRAMBLE32(state[1],0xaa6f908d);
    ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/lib/x86_64-linux-gnu/perl/5.34/CORE/zaphod32_hash.h:87:41: note: expanded from macro 'ZAPHOD32_SCRAMBLE32'
    v ^= (v>>23);                       \
                                        ^
/usr/lib/x86_64-linux-gnu/perl/5.34/CORE/zaphod32_hash.h:151:5: note: ')' token is here
    ZAPHOD32_SCRAMBLE32(state[1],0xaa6f908d);
    ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/lib/x86_64-linux-gnu/perl/5.34/CORE/zaphod32_hash.h:88:3: note: expanded from macro 'ZAPHOD32_SCRAMBLE32'
} STMT_END
  ^~~~~~~~
/usr/lib/x86_64-linux-gnu/perl/5.34/CORE/perl.h:738:21: note: expanded from macro 'STMT_END'
#   define STMT_END     )
                        ^
In file included from test-libperl.c:3:
In file included from /usr/lib/x86_64-linux-gnu/perl/5.34/CORE/perl.h:4085:
In file included from /usr/lib/x86_64-linux-gnu/perl/5.34/CORE/hv.h:659:
In file included from /usr/lib/x86_64-linux-gnu/perl/5.34/CORE/hv_func.h:34:
In file included from /usr/lib/x86_64-linux-gnu/perl/5.34/CORE/sbox32_hash.h:4:
/usr/lib/x86_64-linux-gnu/perl/5.34/CORE/zaphod32_hash.h:152:5: error: '(' and '{' tokens introducing statement expression appear in different macro expansion contexts [-Werror,-Wcompound-token-split-by-macro]
    ZAPHOD32_SCRAMBLE32(state[2],0xcdf6b72d);
    ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/lib/x86_64-linux-gnu/perl/5.34/CORE/zaphod32_hash.h:80:38: note: expanded from macro 'ZAPHOD32_SCRAMBLE32'
#define ZAPHOD32_SCRAMBLE32(v,prime) STMT_START {  \
                                     ^~~~~~~~~~
/usr/lib/x86_64-linux-gnu/perl/5.34/CORE/perl.h:737:29: note: expanded from macro 'STMT_START'
#   define STMT_START   (void)( /* gcc supports "({ STATEMENTS; })" */
                              ^
/usr/lib/x86_64-linux-gnu/perl/5.34/CORE/zaphod32_hash.h:152:5: note: '{' token is here
    ZAPHOD32_SCRAMBLE32(state[2],0xcdf6b72d);
    ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/lib/x86_64-linux-gnu/perl/5.34/CORE/zaphod32_hash.h:80:49: note: expanded from macro 'ZAPHOD32_SCRAMBLE32'
#define ZAPHOD32_SCRAMBLE32(v,prime) STMT_START {  \
                                                ^
/usr/lib/x86_64-linux-gnu/perl/5.34/CORE/zaphod32_hash.h:152:5: error: '}' and ')' tokens terminating statement expression appear in different macro expansion contexts [-Werror,-Wcompound-token-split-by-macro]
    ZAPHOD32_SCRAMBLE32(state[2],0xcdf6b72d);
    ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/lib/x86_64-linux-gnu/perl/5.34/CORE/zaphod32_hash.h:87:41: note: expanded from macro 'ZAPHOD32_SCRAMBLE32'
    v ^= (v>>23);                       \
                                        ^
/usr/lib/x86_64-linux-gnu/perl/5.34/CORE/zaphod32_hash.h:152:5: note: ')' token is here
    ZAPHOD32_SCRAMBLE32(state[2],0xcdf6b72d);
    ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/lib/x86_64-linux-gnu/perl/5.34/CORE/zaphod32_hash.h:88:3: note: expanded from macro 'ZAPHOD32_SCRAMBLE32'
} STMT_END
  ^~~~~~~~
/usr/lib/x86_64-linux-gnu/perl/5.34/CORE/perl.h:738:21: note: expanded from macro 'STMT_END'
#   define STMT_END     )
                        ^
In file included from test-libperl.c:3:
In file included from /usr/lib/x86_64-linux-gnu/perl/5.34/CORE/perl.h:4085:
In file included from /usr/lib/x86_64-linux-gnu/perl/5.34/CORE/hv.h:659:
In file included from /usr/lib/x86_64-linux-gnu/perl/5.34/CORE/hv_func.h:34:
In file included from /usr/lib/x86_64-linux-gnu/perl/5.34/CORE/sbox32_hash.h:4:
/usr/lib/x86_64-linux-gnu/perl/5.34/CORE/zaphod32_hash.h:156:5: error: '(' and '{' tokens introducing statement expression appear in different macro expansion contexts [-Werror,-Wcompound-token-split-by-macro]
    ZAPHOD32_MIX(state[0],state[1],state[2],"ZAPHOD32 SEED-STATE A 1/4");
    ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/lib/x86_64-linux-gnu/perl/5.34/CORE/zaphod32_hash.h:116:37: note: expanded from macro 'ZAPHOD32_MIX'
#define ZAPHOD32_MIX(v0,v1,v2,text) STMT_START {                              \
                                    ^~~~~~~~~~
/usr/lib/x86_64-linux-gnu/perl/5.34/CORE/perl.h:737:29: note: expanded from macro 'STMT_START'
#   define STMT_START   (void)( /* gcc supports "({ STATEMENTS; })" */
                              ^
/usr/lib/x86_64-linux-gnu/perl/5.34/CORE/zaphod32_hash.h:156:5: note: '{' token is here
    ZAPHOD32_MIX(state[0],state[1],state[2],"ZAPHOD32 SEED-STATE A 1/4");
    ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/lib/x86_64-linux-gnu/perl/5.34/CORE/zaphod32_hash.h:116:48: note: expanded from macro 'ZAPHOD32_MIX'
#define ZAPHOD32_MIX(v0,v1,v2,text) STMT_START {                              \
                                               ^
/usr/lib/x86_64-linux-gnu/perl/5.34/CORE/zaphod32_hash.h:156:5: error: '}' and ')' tokens terminating statement expression appear in different macro expansion contexts [-Werror,-Wcompound-token-split-by-macro]
    ZAPHOD32_MIX(state[0],state[1],state[2],"ZAPHOD32 SEED-STATE A 1/4");
    ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/lib/x86_64-linux-gnu/perl/5.34/CORE/zaphod32_hash.h:124:32: note: expanded from macro 'ZAPHOD32_MIX'
    v2 = ROTR32(v2, 7) ^ v0;   \
                               ^
/usr/lib/x86_64-linux-gnu/perl/5.34/CORE/zaphod32_hash.h:156:5: note: ')' token is here
    ZAPHOD32_MIX(state[0],state[1],state[2],"ZAPHOD32 SEED-STATE A 1/4");
    ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/lib/x86_64-linux-gnu/perl/5.34/CORE/zaphod32_hash.h:125:3: note: expanded from macro 'ZAPHOD32_MIX'
} STMT_END
  ^~~~~~~~
/usr/lib/x86_64-linux-gnu/perl/5.34/CORE/perl.h:738:21: note: expanded from macro 'STMT_END'
#   define STMT_END     )
                        ^
In file included from test-libperl.c:3:
In file included from /usr/lib/x86_64-linux-gnu/perl/5.34/CORE/perl.h:4085:
In file included from /usr/lib/x86_64-linux-gnu/perl/5.34/CORE/hv.h:659:
In file included from /usr/lib/x86_64-linux-gnu/perl/5.34/CORE/hv_func.h:34:
In file included from /usr/lib/x86_64-linux-gnu/perl/5.34/CORE/sbox32_hash.h:4:
/usr/lib/x86_64-linux-gnu/perl/5.34/CORE/zaphod32_hash.h:157:5: error: '(' and '{' tokens introducing statement expression appear in different macro expansion contexts [-Werror,-Wcompound-token-split-by-macro]
    ZAPHOD32_MIX(state[0],state[1],state[2],"ZAPHOD32 SEED-STATE A 2/4");
    ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/lib/x86_64-linux-gnu/perl/5.34/CORE/zaphod32_hash.h:116:37: note: expanded from macro 'ZAPHOD32_MIX'
#define ZAPHOD32_MIX(v0,v1,v2,text) STMT_START {                              \
                                    ^~~~~~~~~~
/usr/lib/x86_64-linux-gnu/perl/5.34/CORE/perl.h:737:29: note: expanded from macro 'STMT_START'
#   define STMT_START   (void)( /* gcc supports "({ STATEMENTS; })" */
                              ^
/usr/lib/x86_64-linux-gnu/perl/5.34/CORE/zaphod32_hash.h:157:5: note: '{' token is here
    ZAPHOD32_MIX(state[0],state[1],state[2],"ZAPHOD32 SEED-STATE A 2/4");
    ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/lib/x86_64-linux-gnu/perl/5.34/CORE/zaphod32_hash.h:116:48: note: expanded from macro 'ZAPHOD32_MIX'
#define ZAPHOD32_MIX(v0,v1,v2,text) STMT_START {                              \
                                               ^
/usr/lib/x86_64-linux-gnu/perl/5.34/CORE/zaphod32_hash.h:157:5: error: '}' and ')' tokens terminating statement expression appear in different macro expansion contexts [-Werror,-Wcompound-token-split-by-macro]
    ZAPHOD32_MIX(state[0],state[1],state[2],"ZAPHOD32 SEED-STATE A 2/4");
    ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/lib/x86_64-linux-gnu/perl/5.34/CORE/zaphod32_hash.h:124:32: note: expanded from macro 'ZAPHOD32_MIX'
    v2 = ROTR32(v2, 7) ^ v0;   \
                               ^
/usr/lib/x86_64-linux-gnu/perl/5.34/CORE/zaphod32_hash.h:157:5: note: ')' token is here
    ZAPHOD32_MIX(state[0],state[1],state[2],"ZAPHOD32 SEED-STATE A 2/4");
    ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/lib/x86_64-linux-gnu/perl/5.34/CORE/zaphod32_hash.h:125:3: note: expanded from macro 'ZAPHOD32_MIX'
} STMT_END
  ^~~~~~~~
/usr/lib/x86_64-linux-gnu/perl/5.34/CORE/perl.h:738:21: note: expanded from macro 'STMT_END'
#   define STMT_END     )
                        ^
In file included from test-libperl.c:3:
In file included from /usr/lib/x86_64-linux-gnu/perl/5.34/CORE/perl.h:4085:
In file included from /usr/lib/x86_64-linux-gnu/perl/5.34/CORE/hv.h:659:
In file included from /usr/lib/x86_64-linux-gnu/perl/5.34/CORE/hv_func.h:34:
In file included from /usr/lib/x86_64-linux-gnu/perl/5.34/CORE/sbox32_hash.h:4:
/usr/lib/x86_64-linux-gnu/perl/5.34/CORE/zaphod32_hash.h:158:5: error: '(' and '{' tokens introducing statement expression appear in different macro expansion contexts [-Werror,-Wcompound-token-split-by-macro]
    ZAPHOD32_MIX(state[0],state[1],state[2],"ZAPHOD32 SEED-STATE A 3/4");
    ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/lib/x86_64-linux-gnu/perl/5.34/CORE/zaphod32_hash.h:116:37: note: expanded from macro 'ZAPHOD32_MIX'
#define ZAPHOD32_MIX(v0,v1,v2,text) STMT_START {                              \
                                    ^~~~~~~~~~
/usr/lib/x86_64-linux-gnu/perl/5.34/CORE/perl.h:737:29: note: expanded from macro 'STMT_START'
#   define STMT_START   (void)( /* gcc supports "({ STATEMENTS; })" */
                              ^
/usr/lib/x86_64-linux-gnu/perl/5.34/CORE/zaphod32_hash.h:158:5: note: '{' token is here
    ZAPHOD32_MIX(state[0],state[1],state[2],"ZAPHOD32 SEED-STATE A 3/4");
    ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/lib/x86_64-linux-gnu/perl/5.34/CORE/zaphod32_hash.h:116:48: note: expanded from macro 'ZAPHOD32_MIX'
#define ZAPHOD32_MIX(v0,v1,v2,text) STMT_START {                              \
                                               ^
/usr/lib/x86_64-linux-gnu/perl/5.34/CORE/zaphod32_hash.h:158:5: error: '}' and ')' tokens terminating statement expression appear in different macro expansion contexts [-Werror,-Wcompound-token-split-by-macro]
    ZAPHOD32_MIX(state[0],state[1],state[2],"ZAPHOD32 SEED-STATE A 3/4");
    ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/lib/x86_64-linux-gnu/perl/5.34/CORE/zaphod32_hash.h:124:32: note: expanded from macro 'ZAPHOD32_MIX'
    v2 = ROTR32(v2, 7) ^ v0;   \
                               ^
/usr/lib/x86_64-linux-gnu/perl/5.34/CORE/zaphod32_hash.h:158:5: note: ')' token is here
    ZAPHOD32_MIX(state[0],state[1],state[2],"ZAPHOD32 SEED-STATE A 3/4");
    ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/lib/x86_64-linux-gnu/perl/5.34/CORE/zaphod32_hash.h:125:3: note: expanded from macro 'ZAPHOD32_MIX'
} STMT_END
  ^~~~~~~~
/usr/lib/x86_64-linux-gnu/perl/5.34/CORE/perl.h:738:21: note: expanded from macro 'STMT_END'
#   define STMT_END     )
                        ^
In file included from test-libperl.c:3:
In file included from /usr/lib/x86_64-linux-gnu/perl/5.34/CORE/perl.h:4085:
In file included from /usr/lib/x86_64-linux-gnu/perl/5.34/CORE/hv.h:659:
In file included from /usr/lib/x86_64-linux-gnu/perl/5.34/CORE/hv_func.h:34:
In file included from /usr/lib/x86_64-linux-gnu/perl/5.34/CORE/sbox32_hash.h:4:
/usr/lib/x86_64-linux-gnu/perl/5.34/CORE/zaphod32_hash.h:159:5: error: '(' and '{' tokens introducing statement expression appear in different macro expansion contexts [-Werror,-Wcompound-token-split-by-macro]
    ZAPHOD32_MIX(state[0],state[1],state[2],"ZAPHOD32 SEED-STATE A 4/4");
    ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/lib/x86_64-linux-gnu/perl/5.34/CORE/zaphod32_hash.h:116:37: note: expanded from macro 'ZAPHOD32_MIX'
#define ZAPHOD32_MIX(v0,v1,v2,text) STMT_START {                              \
                                    ^~~~~~~~~~
/usr/lib/x86_64-linux-gnu/perl/5.34/CORE/perl.h:737:29: note: expanded from macro 'STMT_START'
#   define STMT_START   (void)( /* gcc supports "({ STATEMENTS; })" */
                              ^
/usr/lib/x86_64-linux-gnu/perl/5.34/CORE/zaphod32_hash.h:159:5: note: '{' token is here
    ZAPHOD32_MIX(state[0],state[1],state[2],"ZAPHOD32 SEED-STATE A 4/4");
    ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/lib/x86_64-linux-gnu/perl/5.34/CORE/zaphod32_hash.h:116:48: note: expanded from macro 'ZAPHOD32_MIX'
#define ZAPHOD32_MIX(v0,v1,v2,text) STMT_START {                              \
                                               ^
/usr/lib/x86_64-linux-gnu/perl/5.34/CORE/zaphod32_hash.h:159:5: error: '}' and ')' tokens terminating statement expression appear in different macro expansion contexts [-Werror,-Wcompound-token-split-by-macro]
    ZAPHOD32_MIX(state[0],state[1],state[2],"ZAPHOD32 SEED-STATE A 4/4");
    ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/lib/x86_64-linux-gnu/perl/5.34/CORE/zaphod32_hash.h:124:32: note: expanded from macro 'ZAPHOD32_MIX'
    v2 = ROTR32(v2, 7) ^ v0;   \
                               ^
/usr/lib/x86_64-linux-gnu/perl/5.34/CORE/zaphod32_hash.h:159:5: note: ')' token is here
    ZAPHOD32_MIX(state[0],state[1],state[2],"ZAPHOD32 SEED-STATE A 4/4");
    ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/lib/x86_64-linux-gnu/perl/5.34/CORE/zaphod32_hash.h:125:3: note: expanded from macro 'ZAPHOD32_MIX'
} STMT_END
  ^~~~~~~~
/usr/lib/x86_64-linux-gnu/perl/5.34/CORE/perl.h:738:21: note: expanded from macro 'STMT_END'
#   define STMT_END     )
                        ^
In file included from test-libperl.c:3:
In file included from /usr/lib/x86_64-linux-gnu/perl/5.34/CORE/perl.h:4085:
In file included from /usr/lib/x86_64-linux-gnu/perl/5.34/CORE/hv.h:659:
In file included from /usr/lib/x86_64-linux-gnu/perl/5.34/CORE/hv_func.h:34:
In file included from /usr/lib/x86_64-linux-gnu/perl/5.34/CORE/sbox32_hash.h:4:
/usr/lib/x86_64-linux-gnu/perl/5.34/CORE/zaphod32_hash.h:162:5: error: '(' and '{' tokens introducing statement expression appear in different macro expansion contexts [-Werror,-Wcompound-token-split-by-macro]
    ZAPHOD32_SCRAMBLE32(state[0],0xc95d22a9);
    ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/lib/x86_64-linux-gnu/perl/5.34/CORE/zaphod32_hash.h:80:38: note: expanded from macro 'ZAPHOD32_SCRAMBLE32'
#define ZAPHOD32_SCRAMBLE32(v,prime) STMT_START {  \
                                     ^~~~~~~~~~
/usr/lib/x86_64-linux-gnu/perl/5.34/CORE/perl.h:737:29: note: expanded from macro 'STMT_START'
#   define STMT_START   (void)( /* gcc supports "({ STATEMENTS; })" */
                              ^
/usr/lib/x86_64-linux-gnu/perl/5.34/CORE/zaphod32_hash.h:162:5: note: '{' token is here
    ZAPHOD32_SCRAMBLE32(state[0],0xc95d22a9);
    ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/lib/x86_64-linux-gnu/perl/5.34/CORE/zaphod32_hash.h:80:49: note: expanded from macro 'ZAPHOD32_SCRAMBLE32'
#define ZAPHOD32_SCRAMBLE32(v,prime) STMT_START {  \
                                                ^
/usr/lib/x86_64-linux-gnu/perl/5.34/CORE/zaphod32_hash.h:162:5: error: '}' and ')' tokens terminating statement expression appear in different macro expansion contexts [-Werror,-Wcompound-token-split-by-macro]
    ZAPHOD32_SCRAMBLE32(state[0],0xc95d22a9);
    ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/lib/x86_64-linux-gnu/perl/5.34/CORE/zaphod32_hash.h:87:41: note: expanded from macro 'ZAPHOD32_SCRAMBLE32'
    v ^= (v>>23);                       \
                                        ^
/usr/lib/x86_64-linux-gnu/perl/5.34/CORE/zaphod32_hash.h:162:5: note: ')' token is here
    ZAPHOD32_SCRAMBLE32(state[0],0xc95d22a9);
    ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/lib/x86_64-linux-gnu/perl/5.34/CORE/zaphod32_hash.h:88:3: note: expanded from macro 'ZAPHOD32_SCRAMBLE32'
} STMT_END
  ^~~~~~~~
/usr/lib/x86_64-linux-gnu/perl/5.34/CORE/perl.h:738:21: note: expanded from macro 'STMT_END'
#   define STMT_END     )
                        ^
In file included from test-libperl.c:3:
In file included from /usr/lib/x86_64-linux-gnu/perl/5.34/CORE/perl.h:4085:
In file included from /usr/lib/x86_64-linux-gnu/perl/5.34/CORE/hv.h:659:
In file included from /usr/lib/x86_64-linux-gnu/perl/5.34/CORE/hv_func.h:34:
In file included from /usr/lib/x86_64-linux-gnu/perl/5.34/CORE/sbox32_hash.h:4:
/usr/lib/x86_64-linux-gnu/perl/5.34/CORE/zaphod32_hash.h:163:5: error: '(' and '{' tokens introducing statement expression appear in different macro expansion contexts [-Werror,-Wcompound-token-split-by-macro]
    ZAPHOD32_SCRAMBLE32(state[1],0x8497242b);
    ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/lib/x86_64-linux-gnu/perl/5.34/CORE/zaphod32_hash.h:80:38: note: expanded from macro 'ZAPHOD32_SCRAMBLE32'
#define ZAPHOD32_SCRAMBLE32(v,prime) STMT_START {  \
                                     ^~~~~~~~~~
/usr/lib/x86_64-linux-gnu/perl/5.34/CORE/perl.h:737:29: note: expanded from macro 'STMT_START'
#   define STMT_START   (void)( /* gcc supports "({ STATEMENTS; })" */
                              ^
/usr/lib/x86_64-linux-gnu/perl/5.34/CORE/zaphod32_hash.h:163:5: note: '{' token is here
    ZAPHOD32_SCRAMBLE32(state[1],0x8497242b);
    ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/lib/x86_64-linux-gnu/perl/5.34/CORE/zaphod32_hash.h:80:49: note: expanded from macro 'ZAPHOD32_SCRAMBLE32'
#define ZAPHOD32_SCRAMBLE32(v,prime) STMT_START {  \
                                                ^
/usr/lib/x86_64-linux-gnu/perl/5.34/CORE/zaphod32_hash.h:163:5: error: '}' and ')' tokens terminating statement expression appear in different macro expansion contexts [-Werror,-Wcompound-token-split-by-macro]
    ZAPHOD32_SCRAMBLE32(state[1],0x8497242b);
    ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/lib/x86_64-linux-gnu/perl/5.34/CORE/zaphod32_hash.h:87:41: note: expanded from macro 'ZAPHOD32_SCRAMBLE32'
    v ^= (v>>23);                       \
                                        ^
/usr/lib/x86_64-linux-gnu/perl/5.34/CORE/zaphod32_hash.h:163:5: note: ')' token is here
    ZAPHOD32_SCRAMBLE32(state[1],0x8497242b);
    ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/lib/x86_64-linux-gnu/perl/5.34/CORE/zaphod32_hash.h:88:3: note: expanded from macro 'ZAPHOD32_SCRAMBLE32'
} STMT_END
  ^~~~~~~~
/usr/lib/x86_64-linux-gnu/perl/5.34/CORE/perl.h:738:21: note: expanded from macro 'STMT_END'
#   define STMT_END     )
                        ^
In file included from test-libperl.c:3:
In file included from /usr/lib/x86_64-linux-gnu/perl/5.34/CORE/perl.h:4085:
In file included from /usr/lib/x86_64-linux-gnu/perl/5.34/CORE/hv.h:659:
In file included from /usr/lib/x86_64-linux-gnu/perl/5.34/CORE/hv_func.h:34:
In file included from /usr/lib/x86_64-linux-gnu/perl/5.34/CORE/sbox32_hash.h:4:
/usr/lib/x86_64-linux-gnu/perl/5.34/CORE/zaphod32_hash.h:164:5: error: '(' and '{' tokens introducing statement expression appear in different macro expansion contexts [-Werror,-Wcompound-token-split-by-macro]
    ZAPHOD32_SCRAMBLE32(state[2],0x9c5cc4e9);
    ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/lib/x86_64-linux-gnu/perl/5.34/CORE/zaphod32_hash.h:80:38: note: expanded from macro 'ZAPHOD32_SCRAMBLE32'
#define ZAPHOD32_SCRAMBLE32(v,prime) STMT_START {  \
                                     ^~~~~~~~~~
/usr/lib/x86_64-linux-gnu/perl/5.34/CORE/perl.h:737:29: note: expanded from macro 'STMT_START'
#   define STMT_START   (void)( /* gcc supports "({ STATEMENTS; })" */
                              ^
/usr/lib/x86_64-linux-gnu/perl/5.34/CORE/zaphod32_hash.h:164:5: note: '{' token is here
    ZAPHOD32_SCRAMBLE32(state[2],0x9c5cc4e9);
    ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/lib/x86_64-linux-gnu/perl/5.34/CORE/zaphod32_hash.h:80:49: note: expanded from macro 'ZAPHOD32_SCRAMBLE32'
#define ZAPHOD32_SCRAMBLE32(v,prime) STMT_START {  \
                                                ^
fatal error: too many errors emitted, stopping now [-ferror-limit=]
20 errors generated.

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [Linux-v5.17-rc6] Building tools/perf with perl v5.34
  2022-03-06  2:28   ` Sedat Dilek
@ 2022-03-06  3:18     ` Sedat Dilek
  2022-03-06 15:42     ` Jiri Olsa
  1 sibling, 0 replies; 10+ messages in thread
From: Sedat Dilek @ 2022-03-06  3:18 UTC (permalink / raw)
  To: Jiri Olsa
  Cc: Peter Zijlstra, Ingo Molnar, Arnaldo Carvalho de Melo,
	Mark Rutland, Alexander Shishkin, Jiri Olsa, Namhyung Kim,
	linux-perf-users, linux-kernel

On Sun, Mar 6, 2022 at 3:28 AM Sedat Dilek <sedat.dilek@gmail.com> wrote:
>
> On Sat, Mar 5, 2022 at 9:09 PM Jiri Olsa <olsajiri@gmail.com> wrote:
> >
> > On Sat, Mar 05, 2022 at 08:52:18AM +0100, Sedat Dilek wrote:
> > > Hi,
> > >
> > > I am here on Debian/unstable AMD64 which switched over to perl v5.34
> > > in February 2022.
> > >
> > > Unfortunately, my perf does not build with this (lib)perl version:
> > >
> > > $ ~/bin/perf -vv
> > > perf version 5.17-rc6
> > >                 dwarf: [ on  ]  # HAVE_DWARF_SUPPORT
> > >    dwarf_getlocations: [ on  ]  # HAVE_DWARF_GETLOCATIONS_SUPPORT
> > >                 glibc: [ on  ]  # HAVE_GLIBC_SUPPORT
> > >         syscall_table: [ on  ]  # HAVE_SYSCALL_TABLE_SUPPORT
> > >                libbfd: [ on  ]  # HAVE_LIBBFD_SUPPORT
> > >                libelf: [ on  ]  # HAVE_LIBELF_SUPPORT
> > >               libnuma: [ on  ]  # HAVE_LIBNUMA_SUPPORT
> > > numa_num_possible_cpus: [ on  ]  # HAVE_LIBNUMA_SUPPORT
> > >               libperl: [ OFF ]  # HAVE_LIBPERL_SUPPORT
> > >             libpython: [ on  ]  # HAVE_LIBPYTHON_SUPPORT
> > >              libslang: [ on  ]  # HAVE_SLANG_SUPPORT
> > >             libcrypto: [ on  ]  # HAVE_LIBCRYPTO_SUPPORT
> > >             libunwind: [ on  ]  # HAVE_LIBUNWIND_SUPPORT
> > >    libdw-dwarf-unwind: [ on  ]  # HAVE_DWARF_SUPPORT
> > >                  zlib: [ on  ]  # HAVE_ZLIB_SUPPORT
> > >                  lzma: [ on  ]  # HAVE_LZMA_SUPPORT
> > >             get_cpuid: [ on  ]  # HAVE_AUXTRACE_SUPPORT
> > >                   bpf: [ on  ]  # HAVE_LIBBPF_SUPPORT
> > >                   aio: [ on  ]  # HAVE_AIO_SUPPORT
> > >                  zstd: [ on  ]  # HAVE_ZSTD_SUPPORT
> > >               libpfm4: [ OFF ]  # HAVE_LIBPFM
> > >
> > > $ grep libperl ../make-log_perf-python3.10-install_bin.txt
> > > 9:Makefile.config:788: Missing perl devel files. Disabling perl
> > > scripting support, please install perl-ExtUtils-Embed/libperl-dev
> > > 22:...                       libperl: [ OFF ]
> > >
> > > Checking for these requirements:
> > >
> > > # dpkg -l | grep perl | grep 5.34 | awk '/^ii/ {print $1 " " $2 " "
> > > $3}' | column -t
> > > ii  libperl-dev:amd64  5.34.0-3
> > > ii  libperl5.34:amd64  5.34.0-3
> > > ii  perl               5.34.0-3
> > > ii  perl-base          5.34.0-3
> > > ii  perl-modules-5.34  5.34.0-3
> > >
> > > # dpkg -L perl-modules-5.34 | grep -i ExtUtils | grep -i Embed
> > > /usr/share/perl/5.34.0/ExtUtils/Embed.pm
> > >
> > > Can you please comment on this?
> >
> > hi,
> > is there something in tools/build/feature/test-libperl.make.output ?
> >
>
> Hey jirka!
>
> Indeed there is such a file.
>
> $ LC_ALL=C ll tools/build/feature/test-libperl.make.output
> -rw-r--r-- 1 dileks dileks 24K Mar  6 03:22
> tools/build/feature/test-libperl.make.output
>
> Reproducer:
>
> make distclean
> make -C tools/perf clean
>
> MAKE="make"
> MAKE_OPTS="HOSTCC=clang-13 HOSTCXX=clang++-13 HOSTLD=ld.lld-13
> HOSTAR=llvm-ar-13 CC=clang-13 LD=ld.lld-13 AR=llvm-ar-13 NM=llvm-nm-13
> OBJCOPY=llvm-objcopy-13 OBJDUMP=llvm-objdump-13 OBJSIZE=llvm-size-13
> READELF=llvm-readelf-13 STRIP=llvm-strip-13 LLVM_IAS=1"
>
> LC_ALL=C $MAKE V=1 $MAKE_OPTS -C tools/perf PYTHON=python3 install-bin
>
> - Sedat -

With this diff:

$ git diff
diff --git a/tools/build/feature/Makefile b/tools/build/feature/Makefile
index 1480910c792e..ef9b37c5c652 100644
--- a/tools/build/feature/Makefile
+++ b/tools/build/feature/Makefile
@@ -81,7 +81,7 @@ PKG_CONFIG ?= $(CROSS_COMPILE)pkg-config

all: $(FILES)

-__BUILD = $(CC) $(CFLAGS) -MD -Wall -Werror -o $@ $(patsubst
%.bin,%.c,$(@F)) $(LDFLAGS)
+__BUILD = $(CC) $(CFLAGS) -MD -Wall -Werror
-Wno-compound-token-split-by-macro -o $@ $(patsubst %.bin,%.c,$(@F))
$(LDFLAGS)
  BUILD = $(__BUILD) > $(@:.bin=.make.output) 2>&1

__BUILDXX = $(CXX) $(CXXFLAGS) -MD -Wall -Werror -o $@ $(patsubst
%.bin,%.cpp,$(@F)) $(LDFLAGS)
diff --git a/tools/perf/Makefile.config b/tools/perf/Makefile.config
index 913bf509bd17..c3e5bcf5264a 100644
--- a/tools/perf/Makefile.config
+++ b/tools/perf/Makefile.config
@@ -213,7 +213,7 @@ endif

# Treat warnings as errors unless directed not to
ifneq ($(WERROR),0)
-  CORE_CFLAGS += -Werror
+  CORE_CFLAGS += -Werror -Wno-compound-token-split-by-macro
  CXXFLAGS += -Werror
  HOSTCFLAGS += -Werror
endif

I am able to build with libperl support:

$ ~/bin/perf -vv
perf version 5.17-rc6
                dwarf: [ on  ]  # HAVE_DWARF_SUPPORT
   dwarf_getlocations: [ on  ]  # HAVE_DWARF_GETLOCATIONS_SUPPORT
                glibc: [ on  ]  # HAVE_GLIBC_SUPPORT
        syscall_table: [ on  ]  # HAVE_SYSCALL_TABLE_SUPPORT
               libbfd: [ on  ]  # HAVE_LIBBFD_SUPPORT
               libelf: [ on  ]  # HAVE_LIBELF_SUPPORT
              libnuma: [ on  ]  # HAVE_LIBNUMA_SUPPORT
numa_num_possible_cpus: [ on  ]  # HAVE_LIBNUMA_SUPPORT
              libperl: [ on  ]  # HAVE_LIBPERL_SUPPORT
            libpython: [ on  ]  # HAVE_LIBPYTHON_SUPPORT
             libslang: [ on  ]  # HAVE_SLANG_SUPPORT
            libcrypto: [ on  ]  # HAVE_LIBCRYPTO_SUPPORT
            libunwind: [ on  ]  # HAVE_LIBUNWIND_SUPPORT
   libdw-dwarf-unwind: [ on  ]  # HAVE_DWARF_SUPPORT
                 zlib: [ on  ]  # HAVE_ZLIB_SUPPORT
                 lzma: [ on  ]  # HAVE_LZMA_SUPPORT
            get_cpuid: [ on  ]  # HAVE_AUXTRACE_SUPPORT
                  bpf: [ on  ]  # HAVE_LIBBPF_SUPPORT
                  aio: [ on  ]  # HAVE_AIO_SUPPORT
                 zstd: [ on  ]  # HAVE_ZSTD_SUPPORT
              libpfm4: [ OFF ]  # HAVE_LIBPFM

Dunno if I need  "-Werror -Wno-compound-token-split-by-macro" for any
HOSTCXX/CXX flags.

- Sedat -

^ permalink raw reply related	[flat|nested] 10+ messages in thread

* Re: [Linux-v5.17-rc6] Building tools/perf with perl v5.34
  2022-03-06  2:28   ` Sedat Dilek
  2022-03-06  3:18     ` Sedat Dilek
@ 2022-03-06 15:42     ` Jiri Olsa
  2022-03-06 16:00       ` Sedat Dilek
  1 sibling, 1 reply; 10+ messages in thread
From: Jiri Olsa @ 2022-03-06 15:42 UTC (permalink / raw)
  To: Sedat Dilek
  Cc: Peter Zijlstra, Ingo Molnar, Arnaldo Carvalho de Melo,
	Mark Rutland, Alexander Shishkin, Jiri Olsa, Namhyung Kim,
	linux-perf-users, linux-kernel

On Sun, Mar 06, 2022 at 03:28:09AM +0100, Sedat Dilek wrote:
> On Sat, Mar 5, 2022 at 9:09 PM Jiri Olsa <olsajiri@gmail.com> wrote:
> >
> > On Sat, Mar 05, 2022 at 08:52:18AM +0100, Sedat Dilek wrote:
> > > Hi,
> > >
> > > I am here on Debian/unstable AMD64 which switched over to perl v5.34
> > > in February 2022.
> > >
> > > Unfortunately, my perf does not build with this (lib)perl version:
> > >
> > > $ ~/bin/perf -vv
> > > perf version 5.17-rc6
> > >                 dwarf: [ on  ]  # HAVE_DWARF_SUPPORT
> > >    dwarf_getlocations: [ on  ]  # HAVE_DWARF_GETLOCATIONS_SUPPORT
> > >                 glibc: [ on  ]  # HAVE_GLIBC_SUPPORT
> > >         syscall_table: [ on  ]  # HAVE_SYSCALL_TABLE_SUPPORT
> > >                libbfd: [ on  ]  # HAVE_LIBBFD_SUPPORT
> > >                libelf: [ on  ]  # HAVE_LIBELF_SUPPORT
> > >               libnuma: [ on  ]  # HAVE_LIBNUMA_SUPPORT
> > > numa_num_possible_cpus: [ on  ]  # HAVE_LIBNUMA_SUPPORT
> > >               libperl: [ OFF ]  # HAVE_LIBPERL_SUPPORT
> > >             libpython: [ on  ]  # HAVE_LIBPYTHON_SUPPORT
> > >              libslang: [ on  ]  # HAVE_SLANG_SUPPORT
> > >             libcrypto: [ on  ]  # HAVE_LIBCRYPTO_SUPPORT
> > >             libunwind: [ on  ]  # HAVE_LIBUNWIND_SUPPORT
> > >    libdw-dwarf-unwind: [ on  ]  # HAVE_DWARF_SUPPORT
> > >                  zlib: [ on  ]  # HAVE_ZLIB_SUPPORT
> > >                  lzma: [ on  ]  # HAVE_LZMA_SUPPORT
> > >             get_cpuid: [ on  ]  # HAVE_AUXTRACE_SUPPORT
> > >                   bpf: [ on  ]  # HAVE_LIBBPF_SUPPORT
> > >                   aio: [ on  ]  # HAVE_AIO_SUPPORT
> > >                  zstd: [ on  ]  # HAVE_ZSTD_SUPPORT
> > >               libpfm4: [ OFF ]  # HAVE_LIBPFM
> > >
> > > $ grep libperl ../make-log_perf-python3.10-install_bin.txt
> > > 9:Makefile.config:788: Missing perl devel files. Disabling perl
> > > scripting support, please install perl-ExtUtils-Embed/libperl-dev
> > > 22:...                       libperl: [ OFF ]
> > >
> > > Checking for these requirements:
> > >
> > > # dpkg -l | grep perl | grep 5.34 | awk '/^ii/ {print $1 " " $2 " "
> > > $3}' | column -t
> > > ii  libperl-dev:amd64  5.34.0-3
> > > ii  libperl5.34:amd64  5.34.0-3
> > > ii  perl               5.34.0-3
> > > ii  perl-base          5.34.0-3
> > > ii  perl-modules-5.34  5.34.0-3
> > >
> > > # dpkg -L perl-modules-5.34 | grep -i ExtUtils | grep -i Embed
> > > /usr/share/perl/5.34.0/ExtUtils/Embed.pm
> > >
> > > Can you please comment on this?
> >
> > hi,
> > is there something in tools/build/feature/test-libperl.make.output ?
> >
> 
> Hey jirka!
> 
> Indeed there is such a file.
> 
> $ LC_ALL=C ll tools/build/feature/test-libperl.make.output
> -rw-r--r-- 1 dileks dileks 24K Mar  6 03:22
> tools/build/feature/test-libperl.make.output
> 
> Reproducer:
> 
> make distclean
> make -C tools/perf clean
> 
> MAKE="make"
> MAKE_OPTS="HOSTCC=clang-13 HOSTCXX=clang++-13 HOSTLD=ld.lld-13
> HOSTAR=llvm-ar-13 CC=clang-13 LD=ld.lld-13 AR=llvm-ar-13 NM=llvm-nm-13
> OBJCOPY=llvm-objcopy-13 OBJDUMP=llvm-objdump-13 OBJSIZE=llvm-size-13
> READELF=llvm-readelf-13 STRIP=llvm-strip-13 LLVM_IAS=1"
> 
> LC_ALL=C $MAKE V=1 $MAKE_OPTS -C tools/perf PYTHON=python3 install-bin

yea, looks like we can't compile perl devel includes with clang,
we use simple perl test program:

	$ cd tools/build/feature/
	$ cat test-libperl.c 
	// SPDX-License-Identifier: GPL-2.0
	#include <EXTERN.h>
	#include <perl.h>

	int main(void)
	{
		perl_alloc();

		return 0;
	}


and if I compile it with:

	$ CC=clang make test-libperl.bin
	clang  -MD -Wall -Werror -o test-libperl.bin test-libperl.c  > test-libperl.make.output 2>&1 `perl -MExtUtils::Embed -e ccopts 2>/dev/null` -Wl,--enable-new-dtags -Wl,-z,relro -Wl,--as-needed -Wl,-z,now -specs=/usr/lib/rpm/redhat/redhat-hardened-ld -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1  -Wl,-z,relro -Wl,--as-needed -Wl,-z,now -specs=/usr/lib/rpm/redhat/redhat-hardened-ld -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1  -fstack-protector-strong -L/usr/local/lib  -L/usr/lib64/perl5/CORE -lperl -lpthread -lresolv -ldl -lm -lcrypt -lutil -lc
	make: *** [Makefile:224: test-libperl.bin] Error 1


I'm getting some other lto related error:

	$ cat test-libperl.make.output 
	clang-13: error: optimization flag '-ffat-lto-objects' is not supported [-Werror,-Wignored-optimization-argument]


with my clang version:

	$ clang --version
	clang version 13.0.0 (Fedora 13.0.0-3.fc35)
	Target: x86_64-redhat-linux-gnu
	Thread model: posix
	InstalledDir: /usr/bin

so you need to figure out how to compile the test program
above first with clang

jirka

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [Linux-v5.17-rc6] Building tools/perf with perl v5.34
  2022-03-06 15:42     ` Jiri Olsa
@ 2022-03-06 16:00       ` Sedat Dilek
  2022-03-07 16:35         ` Arnaldo Carvalho de Melo
  0 siblings, 1 reply; 10+ messages in thread
From: Sedat Dilek @ 2022-03-06 16:00 UTC (permalink / raw)
  To: Jiri Olsa
  Cc: Peter Zijlstra, Ingo Molnar, Arnaldo Carvalho de Melo,
	Mark Rutland, Alexander Shishkin, Jiri Olsa, Namhyung Kim,
	linux-perf-users, linux-kernel

On Sun, Mar 6, 2022 at 4:42 PM Jiri Olsa <olsajiri@gmail.com> wrote:
>
> On Sun, Mar 06, 2022 at 03:28:09AM +0100, Sedat Dilek wrote:
> > On Sat, Mar 5, 2022 at 9:09 PM Jiri Olsa <olsajiri@gmail.com> wrote:
> > >
> > > On Sat, Mar 05, 2022 at 08:52:18AM +0100, Sedat Dilek wrote:
> > > > Hi,
> > > >
> > > > I am here on Debian/unstable AMD64 which switched over to perl v5.34
> > > > in February 2022.
> > > >
> > > > Unfortunately, my perf does not build with this (lib)perl version:
> > > >
> > > > $ ~/bin/perf -vv
> > > > perf version 5.17-rc6
> > > >                 dwarf: [ on  ]  # HAVE_DWARF_SUPPORT
> > > >    dwarf_getlocations: [ on  ]  # HAVE_DWARF_GETLOCATIONS_SUPPORT
> > > >                 glibc: [ on  ]  # HAVE_GLIBC_SUPPORT
> > > >         syscall_table: [ on  ]  # HAVE_SYSCALL_TABLE_SUPPORT
> > > >                libbfd: [ on  ]  # HAVE_LIBBFD_SUPPORT
> > > >                libelf: [ on  ]  # HAVE_LIBELF_SUPPORT
> > > >               libnuma: [ on  ]  # HAVE_LIBNUMA_SUPPORT
> > > > numa_num_possible_cpus: [ on  ]  # HAVE_LIBNUMA_SUPPORT
> > > >               libperl: [ OFF ]  # HAVE_LIBPERL_SUPPORT
> > > >             libpython: [ on  ]  # HAVE_LIBPYTHON_SUPPORT
> > > >              libslang: [ on  ]  # HAVE_SLANG_SUPPORT
> > > >             libcrypto: [ on  ]  # HAVE_LIBCRYPTO_SUPPORT
> > > >             libunwind: [ on  ]  # HAVE_LIBUNWIND_SUPPORT
> > > >    libdw-dwarf-unwind: [ on  ]  # HAVE_DWARF_SUPPORT
> > > >                  zlib: [ on  ]  # HAVE_ZLIB_SUPPORT
> > > >                  lzma: [ on  ]  # HAVE_LZMA_SUPPORT
> > > >             get_cpuid: [ on  ]  # HAVE_AUXTRACE_SUPPORT
> > > >                   bpf: [ on  ]  # HAVE_LIBBPF_SUPPORT
> > > >                   aio: [ on  ]  # HAVE_AIO_SUPPORT
> > > >                  zstd: [ on  ]  # HAVE_ZSTD_SUPPORT
> > > >               libpfm4: [ OFF ]  # HAVE_LIBPFM
> > > >
> > > > $ grep libperl ../make-log_perf-python3.10-install_bin.txt
> > > > 9:Makefile.config:788: Missing perl devel files. Disabling perl
> > > > scripting support, please install perl-ExtUtils-Embed/libperl-dev
> > > > 22:...                       libperl: [ OFF ]
> > > >
> > > > Checking for these requirements:
> > > >
> > > > # dpkg -l | grep perl | grep 5.34 | awk '/^ii/ {print $1 " " $2 " "
> > > > $3}' | column -t
> > > > ii  libperl-dev:amd64  5.34.0-3
> > > > ii  libperl5.34:amd64  5.34.0-3
> > > > ii  perl               5.34.0-3
> > > > ii  perl-base          5.34.0-3
> > > > ii  perl-modules-5.34  5.34.0-3
> > > >
> > > > # dpkg -L perl-modules-5.34 | grep -i ExtUtils | grep -i Embed
> > > > /usr/share/perl/5.34.0/ExtUtils/Embed.pm
> > > >
> > > > Can you please comment on this?
> > >
> > > hi,
> > > is there something in tools/build/feature/test-libperl.make.output ?
> > >
> >
> > Hey jirka!
> >
> > Indeed there is such a file.
> >
> > $ LC_ALL=C ll tools/build/feature/test-libperl.make.output
> > -rw-r--r-- 1 dileks dileks 24K Mar  6 03:22
> > tools/build/feature/test-libperl.make.output
> >
> > Reproducer:
> >
> > make distclean
> > make -C tools/perf clean
> >
> > MAKE="make"
> > MAKE_OPTS="HOSTCC=clang-13 HOSTCXX=clang++-13 HOSTLD=ld.lld-13
> > HOSTAR=llvm-ar-13 CC=clang-13 LD=ld.lld-13 AR=llvm-ar-13 NM=llvm-nm-13
> > OBJCOPY=llvm-objcopy-13 OBJDUMP=llvm-objdump-13 OBJSIZE=llvm-size-13
> > READELF=llvm-readelf-13 STRIP=llvm-strip-13 LLVM_IAS=1"
> >
> > LC_ALL=C $MAKE V=1 $MAKE_OPTS -C tools/perf PYTHON=python3 install-bin
>
> yea, looks like we can't compile perl devel includes with clang,
> we use simple perl test program:
>
>         $ cd tools/build/feature/
>         $ cat test-libperl.c
>         // SPDX-License-Identifier: GPL-2.0
>         #include <EXTERN.h>
>         #include <perl.h>
>
>         int main(void)
>         {
>                 perl_alloc();
>
>                 return 0;
>         }
>
>
> and if I compile it with:
>
>         $ CC=clang make test-libperl.bin
>         clang  -MD -Wall -Werror -o test-libperl.bin test-libperl.c  > test-libperl.make.output 2>&1 `perl -MExtUtils::Embed -e ccopts 2>/dev/null` -Wl,--enable-new-dtags -Wl,-z,relro -Wl,--as-needed -Wl,-z,now -specs=/usr/lib/rpm/redhat/redhat-hardened-ld -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1  -Wl,-z,relro -Wl,--as-needed -Wl,-z,now -specs=/usr/lib/rpm/redhat/redhat-hardened-ld -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1  -fstack-protector-strong -L/usr/local/lib  -L/usr/lib64/perl5/CORE -lperl -lpthread -lresolv -ldl -lm -lcrypt -lutil -lc
>         make: *** [Makefile:224: test-libperl.bin] Error 1
>
>
> I'm getting some other lto related error:
>
>         $ cat test-libperl.make.output
>         clang-13: error: optimization flag '-ffat-lto-objects' is not supported [-Werror,-Wignored-optimization-argument]
>

Hehe.

I was thinking about syncing the flags for both feature test-perl and
perf/libperl-support.

tools/build/feature/Makefile
tools/perf/Makefile.config

So, I guess FLAGS_PERL_EMBED differs.

For building perf '-ffat-lto-objects'  is filtered-out...

$ git grep ffat-lto-objects tools/perf/
tools/perf/Makefile.config:  PERL_EMBED_CCOPTS := $(filter-out
-flto=auto -ffat-lto-objects, $(PERL_EMBED_CCOPTS))

- Sedat -

>
> with my clang version:
>
>         $ clang --version
>         clang version 13.0.0 (Fedora 13.0.0-3.fc35)
>         Target: x86_64-redhat-linux-gnu
>         Thread model: posix
>         InstalledDir: /usr/bin
>
> so you need to figure out how to compile the test program
> above first with clang
>
> jirka

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [Linux-v5.17-rc6] Building tools/perf with perl v5.34
  2022-03-06 16:00       ` Sedat Dilek
@ 2022-03-07 16:35         ` Arnaldo Carvalho de Melo
  0 siblings, 0 replies; 10+ messages in thread
From: Arnaldo Carvalho de Melo @ 2022-03-07 16:35 UTC (permalink / raw)
  To: Sedat Dilek
  Cc: Jiri Olsa, Peter Zijlstra, Ingo Molnar, Mark Rutland,
	Alexander Shishkin, Jiri Olsa, Namhyung Kim, linux-perf-users,
	linux-kernel

Em Sun, Mar 06, 2022 at 05:00:22PM +0100, Sedat Dilek escreveu:
> On Sun, Mar 6, 2022 at 4:42 PM Jiri Olsa <olsajiri@gmail.com> wrote:
> > I'm getting some other lto related error:
> >
> >         $ cat test-libperl.make.output
> >         clang-13: error: optimization flag '-ffat-lto-objects' is not supported [-Werror,-Wignored-optimization-argument]
> >
 
> I was thinking about syncing the flags for both feature test-perl and
> perf/libperl-support.
 
> tools/build/feature/Makefile
> tools/perf/Makefile.config
 
> So, I guess FLAGS_PERL_EMBED differs.
 
> For building perf '-ffat-lto-objects'  is filtered-out...
 
> $ git grep ffat-lto-objects tools/perf/
> tools/perf/Makefile.config:  PERL_EMBED_CCOPTS := $(filter-out
> -flto=auto -ffat-lto-objects, $(PERL_EMBED_CCOPTS))

Right, with the patch below I can build with clang 13. It would be nice
to have this defined into just one place, but for now, for 5.17 the
minimal fix is preferred, can you send a proper patch, s-o-b, etc?

- Arnaldo

diff --git a/tools/build/feature/Makefile b/tools/build/feature/Makefile
index 1480910c792e2cb3..869073cf84493083 100644
--- a/tools/build/feature/Makefile
+++ b/tools/build/feature/Makefile
@@ -218,6 +218,7 @@ PERL_EMBED_LDOPTS = $(shell perl -MExtUtils::Embed -e ldopts 2>/dev/null)
 PERL_EMBED_LDFLAGS = $(call strip-libs,$(PERL_EMBED_LDOPTS))
 PERL_EMBED_LIBADD = $(call grep-libs,$(PERL_EMBED_LDOPTS))
 PERL_EMBED_CCOPTS = `perl -MExtUtils::Embed -e ccopts 2>/dev/null`
+PERL_EMBED_CCOPTS := $(filter-out -ffat-lto-objects, $(PERL_EMBED_CCOPTS))
 FLAGS_PERL_EMBED=$(PERL_EMBED_CCOPTS) $(PERL_EMBED_LDOPTS)
 
 $(OUTPUT)test-libperl.bin:

^ permalink raw reply related	[flat|nested] 10+ messages in thread

end of thread, other threads:[~2022-03-07 16:36 UTC | newest]

Thread overview: 10+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2022-03-05  7:52 [Linux-v5.17-rc6] Building tools/perf with perl v5.34 Sedat Dilek
2022-03-05  7:57 ` Sedat Dilek
2022-03-05  8:26   ` Sedat Dilek
2022-03-05 11:11     ` Sedat Dilek
2022-03-05 20:09 ` Jiri Olsa
2022-03-06  2:28   ` Sedat Dilek
2022-03-06  3:18     ` Sedat Dilek
2022-03-06 15:42     ` Jiri Olsa
2022-03-06 16:00       ` Sedat Dilek
2022-03-07 16:35         ` Arnaldo Carvalho de Melo

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox