mirror of
https://github.com/NixOS/nixpkgs.git
synced 2024-11-22 15:03:28 +00:00
build-fhsenv-bubblewrap: reference 32-bit binaries only if multiArch
Fixes issues using bubblewrap'd fhsenvs in scenarios where i686 is not supported (such as Rosetta 2 emulation in a Linux VM on Apple Silicon).
This commit is contained in:
parent
14ac570560
commit
9bcd91ba09
@ -40,12 +40,11 @@ let
|
|||||||
isMultiBuild = multiArch && stdenv.system == "x86_64-linux";
|
isMultiBuild = multiArch && stdenv.system == "x86_64-linux";
|
||||||
isTargetBuild = !isMultiBuild;
|
isTargetBuild = !isMultiBuild;
|
||||||
|
|
||||||
# list of packages (usually programs) which are only be installed for the
|
# list of packages (usually programs) which match the host's architecture
|
||||||
# host's architecture
|
# (which includes stuff from multiPkgs)
|
||||||
targetPaths = targetPkgs pkgs ++ (if multiPkgs == null then [] else multiPkgs pkgs);
|
targetPaths = targetPkgs pkgs ++ (if multiPkgs == null then [] else multiPkgs pkgs);
|
||||||
|
|
||||||
# list of packages which are installed for both x86 and x86_64 on x86_64
|
# list of packages which are for x86 (only multiPkgs, only for x86_64 hosts)
|
||||||
# systems
|
|
||||||
multiPaths = multiPkgs pkgsi686Linux;
|
multiPaths = multiPkgs pkgsi686Linux;
|
||||||
|
|
||||||
# base packages of the chroot
|
# base packages of the chroot
|
||||||
@ -76,8 +75,8 @@ let
|
|||||||
];
|
];
|
||||||
|
|
||||||
ldconfig = writeShellScriptBin "ldconfig" ''
|
ldconfig = writeShellScriptBin "ldconfig" ''
|
||||||
# due to a glibc bug, 64-bit ldconfig complains about patchelf'd 32-bit libraries, so we're using 32-bit ldconfig
|
# due to a glibc bug, 64-bit ldconfig complains about patchelf'd 32-bit libraries, so we use 32-bit ldconfig when we have them
|
||||||
exec ${if stdenv.system == "x86_64-linux" then pkgsi686Linux.glibc.bin else pkgs.glibc.bin}/bin/ldconfig -f /etc/ld.so.conf -C /etc/ld.so.cache "$@"
|
exec ${if isMultiBuild then pkgsi686Linux.glibc.bin else pkgs.glibc.bin}/bin/ldconfig -f /etc/ld.so.conf -C /etc/ld.so.cache "$@"
|
||||||
'';
|
'';
|
||||||
|
|
||||||
etcProfile = writeText "profile" ''
|
etcProfile = writeText "profile" ''
|
||||||
@ -251,7 +250,7 @@ let
|
|||||||
|
|
||||||
in runCommandLocal "${name}-fhs" {
|
in runCommandLocal "${name}-fhs" {
|
||||||
passthru = {
|
passthru = {
|
||||||
inherit args baseTargetPaths targetPaths baseMultiPaths ldconfig;
|
inherit args baseTargetPaths targetPaths baseMultiPaths ldconfig isMultiBuild;
|
||||||
};
|
};
|
||||||
} ''
|
} ''
|
||||||
mkdir -p $out
|
mkdir -p $out
|
||||||
|
@ -252,7 +252,7 @@ let
|
|||||||
--symlink /etc/ld.so.cache ${glibc}/etc/ld.so.cache \
|
--symlink /etc/ld.so.cache ${glibc}/etc/ld.so.cache \
|
||||||
--ro-bind ${glibc}/etc/rpc ${glibc}/etc/rpc \
|
--ro-bind ${glibc}/etc/rpc ${glibc}/etc/rpc \
|
||||||
--remount-ro ${glibc}/etc \
|
--remount-ro ${glibc}/etc \
|
||||||
'' + optionalString (stdenv.isx86_64 && stdenv.isLinux) (indentLines ''
|
'' + optionalString fhsenv.isMultiBuild (indentLines ''
|
||||||
--tmpfs ${pkgsi686Linux.glibc}/etc \
|
--tmpfs ${pkgsi686Linux.glibc}/etc \
|
||||||
--symlink /etc/ld.so.conf ${pkgsi686Linux.glibc}/etc/ld.so.conf \
|
--symlink /etc/ld.so.conf ${pkgsi686Linux.glibc}/etc/ld.so.conf \
|
||||||
--symlink /etc/ld.so.cache ${pkgsi686Linux.glibc}/etc/ld.so.cache \
|
--symlink /etc/ld.so.cache ${pkgsi686Linux.glibc}/etc/ld.so.cache \
|
||||||
|
Loading…
Reference in New Issue
Block a user