diff options
author | John Ericson <Ericson2314@Yahoo.com> | 2017-05-21 14:02:19 -0400 |
---|---|---|
committer | John Ericson <Ericson2314@Yahoo.com> | 2017-05-22 00:25:02 -0400 |
commit | c5c66060484800ecd97a811157a31e9cdd2241b1 (patch) | |
tree | dc2c516e319378bce11ecd3d5ecc30f905e7fa11 /pkgs | |
parent | 2e7ec6fb702be66389405d48693b322565b27c69 (diff) | |
download | nixlib-c5c66060484800ecd97a811157a31e9cdd2241b1.tar nixlib-c5c66060484800ecd97a811157a31e9cdd2241b1.tar.gz nixlib-c5c66060484800ecd97a811157a31e9cdd2241b1.tar.bz2 nixlib-c5c66060484800ecd97a811157a31e9cdd2241b1.tar.lz nixlib-c5c66060484800ecd97a811157a31e9cdd2241b1.tar.xz nixlib-c5c66060484800ecd97a811157a31e9cdd2241b1.tar.zst nixlib-c5c66060484800ecd97a811157a31e9cdd2241b1.zip |
lib: Infer `libc` field of platform if not specified
This is especially useful when not cross compiling. It means we can remove the `stdenv.isGlibc` predicate too. Additionally, use this to simplify the logic to choose the appropriate libiconv derivation.
Diffstat (limited to 'pkgs')
-rw-r--r-- | pkgs/stdenv/generic/default.nix | 3 | ||||
-rw-r--r-- | pkgs/top-level/all-packages.nix | 22 |
2 files changed, 13 insertions, 12 deletions
diff --git a/pkgs/stdenv/generic/default.nix b/pkgs/stdenv/generic/default.nix index a063a1ed2dc9..e029622dfa49 100644 --- a/pkgs/stdenv/generic/default.nix +++ b/pkgs/stdenv/generic/default.nix @@ -402,9 +402,6 @@ let || system == "aarch64-linux" || system == "mips64el-linux"; isGNU = system == "i686-gnu"; # GNU/Hurd - isGlibc = isGNU # useful for `stdenvNative' - || isLinux - || system == "x86_64-kfreebsd-gnu"; isSunOS = system == "i686-solaris" || system == "x86_64-solaris"; isCygwin = system == "i686-cygwin" diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 88f4bc04b9f5..a74fd79d6e74 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -8653,15 +8653,19 @@ with pkgs; libgsf = callPackage ../development/libraries/libgsf { }; - # glibc provides libiconv so systems with glibc don't need to build libiconv - # separately, but we also provide libiconvReal, which will always be a - # standalone libiconv, just in case you want it - libiconv = if stdenv ? cross then - (if stdenv.cross.libc == "glibc" then libcCross - else if stdenv.cross.libc == "libSystem" then darwin.libiconv - else libiconvReal) - else if stdenv.isGlibc then glibcIconv stdenv.cc.libc - else if stdenv.isDarwin then darwin.libiconv + # GNU libc provides libiconv so systems with glibc don't need to build + # libiconv separately. Additionally, Apple forked/repackaged libiconv so we + # use that instead of the vanilla version on that OS. + # + # We also provide `libiconvReal`, which will always be a standalone libiconv, + # just in case you want it regardless of platform. + libiconv = + if hostPlatform.libc == "glibc" + then glibcIconv (if hostPlatform != buildPlatform + then libcCross + else stdenv.cc.libc) + else if hostPlatform.isDarwin + then darwin.libiconv else libiconvReal; glibcIconv = libc: let |