summary refs log tree commit diff
path: root/pkgs/build-support/build-fhsenv-chroot
diff options
context:
space:
mode:
authorSergei Trofimovich <slyich@gmail.com>2023-08-21 07:37:01 +0100
committerSergei Trofimovich <slyich@gmail.com>2023-08-21 07:50:37 +0100
commit2da03072206223ed6ee968bdd654a4d82da33001 (patch)
tree8dce735de05a0825276ea6bdcecfa79e08802b03 /pkgs/build-support/build-fhsenv-chroot
parentf03d4e0eec54bd1b344977bfc172446c56c95987 (diff)
downloadnixpkgs-2da03072206223ed6ee968bdd654a4d82da33001.tar
nixpkgs-2da03072206223ed6ee968bdd654a4d82da33001.tar.gz
nixpkgs-2da03072206223ed6ee968bdd654a4d82da33001.tar.bz2
nixpkgs-2da03072206223ed6ee968bdd654a4d82da33001.tar.lz
nixpkgs-2da03072206223ed6ee968bdd654a4d82da33001.tar.xz
nixpkgs-2da03072206223ed6ee968bdd654a4d82da33001.tar.zst
nixpkgs-2da03072206223ed6ee968bdd654a4d82da33001.zip
buildFHSEnv: fix `NIX_LDFLAGS` propagation to `ld` wrapper
Before the change the following command did not work:

    $ nix develop -i --impure --expr 'with import <nixpkgs> { system = "i686-linux"; }; (buildFHSUserEnv { name = "t"; targetPkgs = ps: with ps; [ libmpc stdenv.cc ]; }).env'
    $ ld -lmpc -o a
    ld: cannot find -lmpc: No such file or directory

It is expected to work as `NIX_LDFLAGS` does contain valid values:

    $ echo $NIX_LDFLAGS
    -L/usr/lib -L/usr/lib32

Note that for `gcc` it does work:

    $ printf "int main(){}" |  gcc -x c - -lmpc -o a

It happens because `HOST` role is enabled for `cc`:

    $ echo $NIX_CC_WRAPPER_TARGET_HOST_i686_unknown_linux_gnu
    1

But not for `BINTOOLS`:

    $ echo $NIX_BINTOOLS_WRAPPER_TARGET_HOST_i686_unknown_linux_gnu
    <empty>

The change adds BINTOOLS role and fixes linking:

    $ nix develop -i --impure --expr 'with import ~/nm { system = "i686-linux"; }; (buildFHSUserEnv { name = "t"; targetPkgs = ps: with ps; [ libmpc stdenv.cc ]; }).env'
    $ printf "int main(){}" |  gcc -x c - -lmpc -o a
    $ ld -lmpc -o a
    ld: warning: cannot find entry symbol _start; not setting start address
Diffstat (limited to 'pkgs/build-support/build-fhsenv-chroot')
-rw-r--r--pkgs/build-support/build-fhsenv-chroot/env.nix1
1 files changed, 1 insertions, 0 deletions
diff --git a/pkgs/build-support/build-fhsenv-chroot/env.nix b/pkgs/build-support/build-fhsenv-chroot/env.nix
index abc9ac4c026..a1a26472373 100644
--- a/pkgs/build-support/build-fhsenv-chroot/env.nix
+++ b/pkgs/build-support/build-fhsenv-chroot/env.nix
@@ -78,6 +78,7 @@ let
 
     # Force compilers and other tools to look in default search paths
     unset NIX_ENFORCE_PURITY
+    export NIX_BINTOOLS_WRAPPER_TARGET_HOST_${stdenv.cc.suffixSalt}=1
     export NIX_CC_WRAPPER_TARGET_HOST_${stdenv.cc.suffixSalt}=1
     export NIX_CFLAGS_COMPILE='-idirafter /usr/include'
     export NIX_CFLAGS_LINK='-L/usr/lib -L/usr/lib32'