[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#1037938: linux FTCBFS: perf builds a python extension for the build architecture



Hi,

On Wed, 14 Jun 2023 16:40:54 +0200 Helmut Grohne <helmut@subdivi.de> wrote:
> linux fails to cross build from source again. It seems like the perf build
> gained a python extension and that extension happens to be built for the
> build architecture, which doesn't go well. Please export the magic python
> cross building environment variable to make this work. I'm attaching a patch
> for your convenience.

I put Helmut's patch as a MR on salsa:

https://salsa.debian.org/kernel-team/linux/-/merge_requests/866/diffs

I stumbled across this, because after the recent python3.11 upload, the
cross-build not just builds something wrong but straight-up fails with:

LDSHARED="aarch64-linux-gnu-gcc -pthread -shared" \
        CFLAGS='-g -O2 -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -mbranch-protection=standard -Wall -Wdate-time -D_FORTIFY_SOURCE=2 -I/<<PKGBUILDDIR>>/tools/perf -I/<<PKGBUILDDIR>>/debian/build/build-tools/tools/perf -isystem /<<PKGBUILDDIR>>/debian/build/build-tools/include -Wbad-function-cast -Wdeclaration-after-statement -Wformat-security -Wformat-y2k -Winit-self -Wmissing-declarations -Wmissing-prototypes -Wno-system-headers -Wold-style-definition -Wpacked -Wredundant-decls -Wstrict-prototypes -Wswitch-default -Wswitch-enum -Wundef -Wwrite-strings -Wformat -Wno-type-limits -Wstrict-aliasing=3 -Wshadow -DHAVE_SYSCALL_TABLE_SUPPORT -I/<<PKGBUILDDIR>>/debian/build/build-tools/tools/perf/arch/arm64/include/generated -DHAVE_PERF_REGS_SUPPORT -DHAVE_ARCH_REGS_QUERY_REGISTER_OFFSET -DNDEBUG=1 -O6 -fno-omit-frame-pointer -ggdb3 -funwind-tables -Wall -Wextra -std=gnu11 -fstack-protector-all -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE -I/<<PKGBUILDDIR>>/tools/perf/util/include -I/<<PKGBUILDDIR>>/tools/perf/arch/arm64/include -I/<<PKGBUILDDIR>>/tools/include/ -I/<<PKGBUILDDIR>>/tools/arch/arm64/include/uapi -I/<<PKGBUILDDIR>>/tools/include/uapi -I/<<PKGBUILDDIR>>/tools/arch/arm64/include/ -I/<<PKGBUILDDIR>>/tools/arch/arm64/ -I/<<PKGBUILDDIR>>/debian/build/build-tools/tools/perf//util -I/<<PKGBUILDDIR>>/debian/build/build-tools/tools/perf/ -I/<<PKGBUILDDIR>>/tools/perf/util -I/<<PKGBUILDDIR>>/tools/perf -DHAVE_PTHREAD_ATTR_SETAFFINITY_NP -DHAVE_PTHREAD_BARRIER -DHAVE_EVENTFD_SUPPORT -DHAVE_GET_CURRENT_DIR_NAME -DHAVE_GETTID -DHAVE_FILE_HANDLE -DHAVE_DWARF_GETLOCATIONS_SUPPORT -DHAVE_AIO_SUPPORT -DHAVE_SCANDIRAT_SUPPORT -DHAVE_SCHED_GETCPU_SUPPORT -DHAVE_SETNS_SUPPORT -DHAVE_CSTRACE_SUPPORT  -DHAVE_LIBELF_SUPPORT -DHAVE_ELF_GETPHDRNUM_SUPPORT -DHAVE_GELF_GETNOTE_SUPPORT -DHAVE_ELF_GETSHDRSTRNDX_SUPPORT -DHAVE_DWARF_SUPPORT  -DHAVE_LIBBPF_SUPPORT -DHAVE_BPF_PROLOGUE -DHAVE_JITDUMP -DHAVE_LIBUNWIND_AARCH64_SUPPORT -DHAVE_DWARF_UNWIND_SUPPORT -DHAVE_LIBUNWIND_SUPPORT -DHAVE_SLANG_SUPPORT -DHAVE_LIBPERL_SUPPORT -DHAVE_TIMERFD_SUPPORT -DHAVE_LIBPYTHON_SUPPORT -DHAVE_CXA_DEMANGLE_SUPPORT -DHAVE_ZLIB_SUPPORT -DHAVE_LZMA_SUPPORT -DHAVE_ZSTD_SUPPORT -DHAVE_LIBCAP_SUPPORT -DHAVE_BACKTRACE_SUPPORT -DHAVE_LIBNUMA_SUPPORT -DHAVE_KVM_STAT_SUPPORT -DHAVE_LIBBABELTRACE_SUPPORT  -DHAVE_AUXTRACE_SUPPORT -DHAVE_LIBTRACEEVENT -DLIBTRACEEVENT_VERSION=66813 -DLIBTRACEFS_VERSION=66810 -I/<<PKGBUILDDIR>>/debian/build/build-tools/tools/perf/libapi/include -I/<<PKGBUILDDIR>>/debian/build/build-tools/tools/perf/libbpf/include -I/<<PKGBUILDDIR>>/debian/build/build-tools/tools/perf/libsubcmd/include -I/<<PKGBUILDDIR>>/debian/build/build-tools/tools/perf/libsymbol/include -I/<<PKGBUILDDIR>>/debian/build/build-tools/tools/perf/libperf/include -I/<<PKGBUILDDIR>>/debian/build/build-tools/tools/perf/' LDFLAGS='-Wl,-z,relro' \
  '/usr/bin/python3' util/setup.py \
  --quiet build_ext; \
cc1: error: ‘-fcf-protection=full’ is not supported for this target
error: command '/usr/bin/aarch64-linux-gnu-gcc' failed with exit code 1

The reason is likely, that python3.11 was now rebuilt with a dpkg
version exposing the new build flags which get captured at build time
into sysconfigdata and make the build fail because flags that only
work with amd64 gcc get used with arm64 gcc.

Since Diederik de Haas is already looking into the MR, this email is
more a memo for myself so that I find this issue later on in my email
inbox. :)

Thanks!

cheers, josch

Attachment: signature.asc
Description: signature


Reply to: