From c5c66060484800ecd97a811157a31e9cdd2241b1 Mon Sep 17 00:00:00 2001 From: John Ericson Date: Sun, 21 May 2017 14:02:19 -0400 Subject: 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. --- pkgs/stdenv/generic/default.nix | 3 --- pkgs/top-level/all-packages.nix | 22 +++++++++++++--------- 2 files changed, 13 insertions(+), 12 deletions(-) (limited to 'pkgs') 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 -- cgit 1.4.1