From 1b2139b3e2cda13c6816bafd22871ac60ddf83ac Mon Sep 17 00:00:00 2001 From: Nikolay Amiantov Date: Sun, 29 May 2016 21:40:53 +0300 Subject: [PATCH] buildFHSEnv: use separate gcc for 64- and 32-bit --- .../build-support/build-fhs-chrootenv/env.nix | 29 ++++++------------- 1 file changed, 9 insertions(+), 20 deletions(-) diff --git a/pkgs/build-support/build-fhs-chrootenv/env.nix b/pkgs/build-support/build-fhs-chrootenv/env.nix index 01d75727f0bf..0b2f8bcba6a4 100644 --- a/pkgs/build-support/build-fhs-chrootenv/env.nix +++ b/pkgs/build-support/build-fhs-chrootenv/env.nix @@ -37,21 +37,20 @@ let # list of packages which are installed for both x86 and x86_64 on x86_64 # systems - multiPaths = if isMultiBuild - then multiPkgs nixpkgs_i686 - else []; + multiPaths = multiPkgs nixpkgs_i686; # base packages of the chroot - # these match the host's architecture, gcc/glibc_multi are used for multilib + # these match the host's architecture, glibc_multi is used for multilib # builds. - chosenGcc = if isMultiBuild then nixpkgs.gcc_multi else nixpkgs.gcc; basePkgs = with nixpkgs; [ (if isMultiBuild then glibc_multi else glibc) - chosenGcc - bashInteractive coreutils less shadow su + gcc.cc.lib bashInteractive coreutils less shadow su gawk diffutils findutils gnused gnugrep gnutar gzip bzip2 xz glibcLocales ]; + baseMultiPkgs = with nixpkgs_i686; + [ gcc.cc.lib + ]; etcProfile = nixpkgs.writeText "profile" '' export PS1='${name}-chrootenv:\u@\h:\w\$ ' @@ -125,8 +124,8 @@ let }; staticUsrProfileMulti = nixpkgs.buildEnv { - name = "system-profile-multi"; - paths = multiPaths; + name = "${name}-usr-multi"; + paths = baseMultiPkgs ++ multiPaths; extraOutputsToInstall = [ "lib" "out" ] ++ extraOutputsToInstall; ignoreCollisions = true; }; @@ -154,18 +153,8 @@ let # copy content of targetPaths (64bit libs) cp -rsHf ${staticUsrProfileTarget}/lib/* lib64/ && chmod u+w -R lib64/ - # most 64bit only libs put their stuff into /lib - # some pkgs (like gcc_multi) put 32bit libs into /lib and 64bit libs into /lib64 - # by overwriting these we will hopefully catch all these cases - # in the end /lib32 should only contain 32bit and /lib64 only 64bit libs - cp -rsHf ${staticUsrProfileTarget}/lib64/* lib64/ && chmod u+w -R lib64/ - - # copy gcc libs - cp -rsHf ${chosenGcc.cc.lib}/lib/* lib32/ - cp -rsHf ${chosenGcc.cc.lib}/lib64/* lib64/ - # symlink 32-bit ld-linux.so - ln -s ${staticUsrProfileTarget}/lib/32/ld-linux.so.2 lib/ + ln -Ls ${staticUsrProfileTarget}/lib/32/ld-linux.so.2 lib/ ''; setupLibDirs = if isTargetBuild then setupLibDirs_target