mozilla / neqo

Neqo, the Mozilla Firefox implementation of QUIC in Rust
https://firefox-source-docs.mozilla.org/networking/http/http3.html
Apache License 2.0
1.83k stars 123 forks source link

Fails to cross-compile for PowerPC (big-endian, 32-bit): 'failed to generate bindings' #823

Open wyatt8740 opened 4 years ago

wyatt8740 commented 4 years ago

While attempting to build the Firefox 75 source code tarball:

0:03.81 error: failed to run custom build command for `neqo-crypto v0.2.0 (https://github.com/mozilla/neqo?tag=v0.2.0#b2ae7691)`
 0:03.81 Caused by:
 0:03.81   process didn't exit successfully: `/home2/wyatt/development/mozilla_ppc/obj-powerpc-linux-gnu/release/build/neqo-crypto-84b53fd10c6b4bc9/build-script-build` (exit code: 101)
 0:03.81 --- stdout
 0:03.81 cargo:rustc-link-lib=dylib=nssutil3
 0:03.81 cargo:rustc-link-lib=dylib=nss3
 0:03.81 cargo:rustc-link-lib=dylib=ssl3
 0:03.81 cargo:rustc-link-lib=dylib=plds4
 0:03.81 cargo:rustc-link-lib=dylib=plc4
 0:03.81 cargo:rustc-link-lib=dylib=nspr4
 0:03.81 cargo:rustc-link-search=native=/home2/wyatt/development/mozilla_ppc/obj-powerpc-linux-gnu/dist/bin
 0:03.81 cargo:rustc-link-search=native=/home2/wyatt/development/mozilla_ppc/obj-powerpc-linux-gnu/security/nss/lib/nss/nss_nss3
 0:03.81 cargo:rustc-link-search=native=/home2/wyatt/development/mozilla_ppc/obj-powerpc-linux-gnu/security/nss/lib/ssl/ssl_ssl3
 0:03.81 cargo:rustc-link-search=native=/home2/wyatt/development/mozilla_ppc/obj-powerpc-linux-gnu/config/external/nspr/pr
 0:03.81 cargo:rerun-if-changed=/home2/wyatt/development/mozilla_ppc/obj-powerpc-linux-gnu/netwerk/socket/neqo/extra-bindgen-flags
 0:03.81 cargo:rerun-if-changed=bindings/bindings.toml
 0:03.81 cargo:rerun-if-changed=bindings/nss_ssl.h
 0:03.81 --- stderr
 0:03.81 clang version 9.0.1-13
 0:03.81 Target: powerpc-unknown-linux-gnu
 0:03.81 Thread model: posix
 0:03.81 InstalledDir:
 0:03.81 Found candidate GCC installation: /usr/lib/gcc-cross/powerpc-linux-gnu/9
 0:03.81 Found candidate GCC installation: /usr/lib/gcc-cross/powerpc64-linux-gnu/9
 0:03.81 Selected GCC installation: /usr/lib/gcc-cross/powerpc-linux-gnu/9
 0:03.81 Candidate multilib: .;@m32
 0:03.81 Candidate multilib: 64;@m64
 0:03.81 Selected multilib: .;@m32
 0:03.81 ignoring nonexistent directory "/usr/lib/gcc-cross/powerpc-linux-gnu/9/../../../../include/powerpc-linux-gnu/c++/9"
 0:03.81 ignoring nonexistent directory "/usr/lib/gcc-cross/powerpc-linux-gnu/9/../../../../include/powerpc-linux-gnu/c++/9"
 0:03.81 ignoring duplicate directory "/usr/bin/../lib/gcc-cross/powerpc-linux-gnu/9/../../../../include/c++/9"
 0:03.81 ignoring duplicate directory "/usr/bin/../lib/gcc-cross/powerpc-linux-gnu/9/../../../../include/c++/9/backward"
 0:03.81 ignoring duplicate directory "/usr/local/include"
 0:03.81 ignoring duplicate directory "/usr/lib/llvm-9/lib/clang/9.0.1/include"
 0:03.81 ignoring duplicate directory "/usr/include/powerpc-linux-gnu"
 0:03.81 ignoring duplicate directory "/include"
 0:03.81 ignoring duplicate directory "/usr/include"
 0:03.81 #include "..." search starts here:
 0:03.81 #include <...> search starts here:
 0:03.81  /home2/wyatt/development/mozilla_ppc/obj-powerpc-linux-gnu/dist/include/nspr
 0:03.81  /home2/wyatt/development/mozilla_ppc/obj-powerpc-linux-gnu/dist/include/nss
 0:03.81  /home2/wyatt/development/mozilla_ppc/obj-powerpc-linux-gnu/dist/include/cairo
 0:03.81  /usr/bin/../lib/gcc-cross/powerpc-linux-gnu/9/../../../../include/c++/9
 0:03.81  /usr/bin/../lib/gcc-cross/powerpc-linux-gnu/9/../../../../include/c++/9/backward
 0:03.81  /usr/local/include
 0:03.81  /usr/lib/llvm-9/lib/clang/9.0.1/include
 0:03.81  /usr/include/powerpc-linux-gnu
 0:03.81  /include
 0:03.81  /usr/include
 0:03.82 End of search list.
 0:03.82 /usr/include/bits/socket.h:354:11: fatal error: 'asm/socket.h' file not found
 0:03.82 /usr/include/bits/socket.h:354:11: fatal error: 'asm/socket.h' file not found, err: true
 0:03.82 thread 'main' panicked at 'unable to generate bindings: ()', /home2/wyatt/development/mozilla_ppc/firefox-75.0/third_party/rust/neqo-crypto/build.rs:273:20
 0:03.82 stack backtrace:
 0:03.82    0:     0x562e346414e4 - backtrace::backtrace::libunwind::trace::h812748238d609e46
 0:03.82                                at /cargo/registry/src/github.com-1ecc6299db9ec823/backtrace-0.3.46/src/backtrace/libunwind.rs:86
 0:03.82    1:     0x562e346414e4 - backtrace::backtrace::trace_unsynchronized::h7c97e818aebf09c8
 0:03.82                                at /cargo/registry/src/github.com-1ecc6299db9ec823/backtrace-0.3.46/src/backtrace/mod.rs:66
 0:03.82    2:     0x562e346414e4 - std::sys_common::backtrace::_print_fmt::h60d914263b0ccd71
 0:03.82                                at src/libstd/sys_common/backtrace.rs:78
 0:03.82    3:     0x562e346414e4 - <std::sys_common::backtrace::_print::DisplayBacktrace as core::fmt::Display>::fmt::hf78227137afc7565
 0:03.82                                at src/libstd/sys_common/backtrace.rs:59
 0:03.82    4:     0x562e3466bbcc - core::fmt::write::h543cdf60775f89bf
 0:03.82                                at src/libcore/fmt/mod.rs:1069
 0:03.82    5:     0x562e3463de63 - std::io::Write::write_fmt::h0c7f3ce24c679426
 0:03.82                                at src/libstd/io/mod.rs:1504
 0:03.82    6:     0x562e34643f15 - std::sys_common::backtrace::_print::h80e55e24be231368
 0:03.82                                at src/libstd/sys_common/backtrace.rs:62
 0:03.82    7:     0x562e34643f15 - std::sys_common::backtrace::print::h3b197b9c1261c865
 0:03.82                                at src/libstd/sys_common/backtrace.rs:49
 0:03.83    8:     0x562e34643f15 - std::panicking::default_hook::{{closure}}::ha6c807149ce20f8f
 0:03.83                                at src/libstd/panicking.rs:198
 0:03.83    9:     0x562e34643c52 - std::panicking::default_hook::he49a9c12e358cc45
 0:03.83                                at src/libstd/panicking.rs:218
 0:03.83   10:     0x562e34644572 - std::panicking::rust_panic_with_hook::h93f74f5ef2f71f31
 0:03.83                                at src/libstd/panicking.rs:511
 0:03.83   11:     0x562e3464415b - rust_begin_unwind
 0:03.83                                at src/libstd/panicking.rs:419
 0:03.83   12:     0x562e3466a5c1 - core::panicking::panic_fmt::h1ce7d3a6bb2a90c1
 0:03.83                                at src/libcore/panicking.rs:111
 0:03.83   13:     0x562e3466a3e3 - core::option::expect_none_failed::hb01994a49b20448c
 0:03.83                                at src/libcore/option.rs:1268
 0:03.83   14:     0x562e344a92c7 - build_script_build::main::h9454879a34f8e1e8
 0:03.83   15:     0x562e344968a3 - std::rt::lang_start::{{closure}}::heb4a2052ba823a74
 0:03.83   16:     0x562e34644a88 - std::rt::lang_start_internal::{{closure}}::h44dc84346eeba462
 0:03.83                                at src/libstd/rt.rs:52
 0:03.83   17:     0x562e34644a88 - std::panicking::try::do_call::h3559ee6be71549e2
 0:03.83                                at src/libstd/panicking.rs:331
 0:03.83   18:     0x562e34644a88 - std::panicking::try::h78f4c77016541848
 0:03.83                                at src/libstd/panicking.rs:274
 0:03.83   19:     0x562e34644a88 - std::panic::catch_unwind::hfe46f382761b3d41
 0:03.83                                at src/libstd/panic.rs:394
 0:03.83   20:     0x562e34644a88 - std::rt::lang_start_internal::he05790f0cb2000df
 0:03.83                                at src/libstd/rt.rs:51
 0:03.83   21:     0x562e344a9bf2 - main
 0:03.83   22:     0x7fdd89b68cca - __libc_start_main
 0:03.83                                at ../csu/libc-start.c:308
 0:03.83   23:     0x562e344961ba - _start
 0:03.83   24:                0x0 - <unknown>

mozconfig:

CROSS_COMPILE=1
export PKG_CONFIG_PATH=/usr/lib/powerpc-linux-gnu/pkgconfig:/home/wyatt/development/powerpc-chroot/usr/lib/powerpc-linux-gnu/pkgconfig

export CC=powerpc-linux-gnu-gcc
export CXX=powerpc-linux-gnu-g++
export LD=powerpc-linux-gnu-ld
export AR=powerpc-linux-gnu-ar
export AS=powerpc-linux-gnu-as
export NM=powerpc-linux-gnu-nm
export CPP=powerpc-linux-gnu-cpp
export RANLIB=powerpc-linux-gnu-ranlib
export GPROF=powerpc-linux-gnu-gprof
export GCOV=powerpc-linux-gnu-gcov
export OBJCOPY=powerpc-linux-gnu-objcopy
export OBJDUMP=powerpc-linux-gnu-objdump
export PKGCONFIG=powerpc-linux-gnu-pkg-config
export PKG_CONFIG=powerpc-linux-gnu-pkg-config
export STRIP=powerpc-linux-gnu-strip

mk_add_options MOZ_MAKE_FLAGS="-j4"
mk_add_options MOZ_OBJDIR=/home/wyatt/development/mozilla_ppc/obj-powerpc-linux-gnu
ac_add_options --host=x86_64-linux-gnu
ac_add_options --target=powerpc-linux-gnu
ac_add_options --prefix=/usr
ac_add_options --enable-release
ac_add_options --disable-updater
ac_add_options --enable-optimize="-O2 -fno-delete-null-pointer-checks"
ac_add_options --disable-necko-wifi
ac_add_options --disable-pulseaudio
ac_add_options --enable-alsa
ac_add_options --disable-tests

# Fix ICU bug that causes segfaults (that was a REALLY fun one to figure out)
ac_add_options --with-system-icu

export LDFLAGS="-Wl,--no-keep-memory -Wl,--relax"
export CFLAGS="-Wl,--no-keep-memory -Wl,--relax -fno-delete-null-pointer-checks -fno-schedule-insns2"
export CXXFLAGS="-Wl,--no-keep-memory -Wl,--relax -fno-delete-null-pointer-checks -fno-schedule-insns2"

This basic mozconfig worked to build SeaMonkey / Firefox 57-ish. Rust kind of threw a wrench into things, though.

I have installed my kernel headers, so the asm/socket.h error is mystifying. I run Debian Sid, and the host is amd64.

I'm sorry I can't be more descriptive.

larseggert commented 5 months ago

@wyatt8740 still an issue?