stdenv bootstrap: hack around glibc version mismatch
With this we shouldn't need other workarounds for the LTO problems.
This commit is contained in:
parent
e9a1b2009e
commit
5a71fa8447
1 changed files with 19 additions and 0 deletions
|
@ -258,6 +258,25 @@ in
|
|||
# Rewrap the binutils with the new glibc, so both the next
|
||||
# stage's wrappers use it.
|
||||
libc = getLibc self;
|
||||
|
||||
# Unfortunately, when building gcc in the next stage, its LTO plugin
|
||||
# would use the final libc but `ld` would use the bootstrap one,
|
||||
# and that can fail to load. Therefore we upgrade `ld` to use newer libc;
|
||||
# apparently the interpreter needs to match libc, too.
|
||||
bintools = self.stdenvNoCC.mkDerivation {
|
||||
inherit (prevStage.bintools.bintools) name;
|
||||
dontUnpack = true;
|
||||
dontBuild = true;
|
||||
# We wouldn't need to *copy* all, but it's easier and the result is temporary anyway.
|
||||
installPhase = ''
|
||||
mkdir -p "$out"/bin
|
||||
cp -a '${prevStage.bintools.bintools}'/bin/* "$out"/bin/
|
||||
chmod +w "$out"/bin/ld.bfd
|
||||
patchelf --set-interpreter '${getLibc self}'/lib/ld*.so.? \
|
||||
--set-rpath "${getLibc self}/lib:$(patchelf --print-rpath "$out"/bin/ld.bfd)" \
|
||||
"$out"/bin/ld.bfd
|
||||
'';
|
||||
};
|
||||
};
|
||||
};
|
||||
})
|
||||
|
|
Loading…
Reference in a new issue