Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

gcc: always enable inhibit_libc=true for --without-headers builds #182666

Merged
merged 1 commit into from
Jul 24, 2022

Commits on Jul 24, 2022

  1. gcc: always enable inhibit_libc=true for --without-headers builds

    It's a follow-up to the breakage caused by 21966e1
    ("gcc: pass --with-build-sysroot=/"). It caused `pkgsLLVM`
    cross-toolchain bootstrap breakage:
    
        $ nix build --no-link -f. pkgsLLVM.hello
        ...
        failed: /nix/store/...-x86_64-unknown-linux-gnu-stage-static-gcc-13.0.0.drv:
        ...
        configure flags: ... --enable-languages=c --disable-multilib \
          --disable-shared --enable-plugin ... --disable-libssp --disable-nls \
          --without-headers --disable-threads --disable-libgomp --disable-libquadmath \
          --disable-shared --disable-libatomic --disable-decimal-float --disable-libmpx \
          --disable-bootstrap \
          \
          --build=x86_64-unknown-linux-gnu \
          --host=x86_64-unknown-linux-gnu \
          --target=x86_64-unknown-linux-gnu
        ...
        The directory that should contain system headers does not exist:
          /usr/include
        make[2]: *** [Makefile:3279: stmp-fixinc] Error 1 shuffle=1658621302
        rm gfdl.pod gcc.pod gcov-dump.pod gcov-tool.pod fsf-funding.pod gpl.pod cpp.pod gcov.pod lto-dump.pod
        make[2]: Leaving directory '/build/build/gcc'
    
    Note: it's a no-libc build. It's not expected to use any libc headers.
    But in this case fixincludes tries to run and uses default /usr/include
    location.
    
    Fixinsludes is not normally expected to run during cross-compilation
    on --without-headers. gcc/configure.ac:
    
        : ${inhibit_libc=false}
        if { { test x$host != x$target && test "x$with_sysroot" = x ; } ||
               test x$with_newlib = xyes ; } &&
             { test "x$with_headers" = xno || test ! -f "$target_header_dir/stdio.h"; } ; then
               inhibit_libc=true
        fi
    
    The change explicitly passes inhibit_libc=true to configure to disable
    include fixing on such cases.
    
    Fixed `nix build --no-link -f. pkgsLLVM.hello` toolchain bootstrap.
    trofi committed Jul 24, 2022
    Configuration menu
    Copy the full SHA
    ea8e124 View commit details
    Browse the repository at this point in the history