dmd: set --sysroot=/ to avoid cc-wrapper value

After https://github.com/NixOS/nixpkgs/pull/210004 `dmd` started failing
build as:

    ld: warning: libm.so.6, needed by ./generated/linux/release/64/lib.so, not found (try using -rpath or -rpath-link)
    ld: /build/druntime/generated/linux/release/64/libdruntime.so: undefined reference to `log10@GLIBC_2.2.5'

This happens because --sysroot=/nix/store/does/not/exist removes not
just include headers by prefixing wrong path, but also removes RUNPATH
dependencies of linked libraries. It's an unintended effect.

Restore the build by reversing the effect with --sysroot=/.
This commit is contained in:
Sergei Trofimovich 2023-01-28 11:31:08 +00:00
parent 277d34fbdf
commit 7c73d1e025

View file

@ -151,6 +151,13 @@ stdenv.mkDerivation rec {
git
];
# Workaround cc-wrapper's --sysroot= value for `staging-next`: it
# breaks library lookup via RUNPATH:
# ld: warning: libm.so.6, needed by ./generated/linux/release/64/lib.so, not found (try using -rpath or -rpath-link)
# ld: /build/druntime/generated/linux/release/64/libdruntime.so: undefined reference to `log10@GLIBC_2.2.5'
# TODO(trofi): remove the workaround once cc-wrapper is fixed.
NIX_CFLAGS_COMPILE = [ "--sysroot=/" ];
buildInputs = [
curl
tzdata