mirror of
https://github.com/servo/servo.git
synced 2025-07-25 08:10:21 +01:00
Use system lld on NixOS instead of rust-lld (#30123)
The -Zgcc-ld=lld flag makes rust use the rust-lld linker that is distributed as part of rust toolchain. However, this flag doesn't work on nixos correctly as 1) rust-lld needs to be patched to have the correct rpath to find libz.so 2) the bin/gcc-ld/ld.lld wrapper which calls rust-lld also needs to be patched to use the correct dynamic loader 3) rust-lld doesn't respect NIX_LDFLAGS which contains the additional search path derived from buildInputs. The system linkers on nixos are wrapped so that NIX_LDFLAGS is added as the rpath to the final binary. Signed-off-by: Mukilan Thiyagarajan <mukilan@igalia.com>
This commit is contained in:
parent
218ad8f574
commit
1efecf9b50
4 changed files with 17 additions and 2 deletions
|
@ -127,6 +127,17 @@ class Linux(Base):
|
|||
installed_something |= self._platform_bootstrap_gstreamer(force)
|
||||
return installed_something
|
||||
|
||||
def linker_flag(self) -> str:
|
||||
# the rust-lld binary downloaded by rustup
|
||||
# doesn't respect NIX_LDFLAGS and also needs
|
||||
# other patches to work correctly. Use system
|
||||
# version of lld for now. See
|
||||
# https://github.com/NixOS/nixpkgs/issues/220717
|
||||
if self.distro.lower() == 'nixos':
|
||||
return '-C link-arg=-fuse-ld=lld'
|
||||
else:
|
||||
return '-Zgcc-ld=lld'
|
||||
|
||||
def install_non_gstreamer_dependencies(self, force: bool) -> bool:
|
||||
install = False
|
||||
pkgs = []
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue