From c09f4121f25ec4b8828898890b3ad10e7f6cb56a Mon Sep 17 00:00:00 2001 From: sternenseemann Date: Sat, 6 Sep 2025 19:51:59 +0200 Subject: [PATCH 1/2] haskell.compiler.*: libc == glibc implies isLinux --- pkgs/development/compilers/ghc/common-hadrian.nix | 2 +- pkgs/development/compilers/ghc/common-make-native-bignum.nix | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/development/compilers/ghc/common-hadrian.nix b/pkgs/development/compilers/ghc/common-hadrian.nix index 0cb9ea8b866e..74c294502fcc 100644 --- a/pkgs/development/compilers/ghc/common-hadrian.nix +++ b/pkgs/development/compilers/ghc/common-hadrian.nix @@ -549,7 +549,7 @@ stdenv.mkDerivation ( "${buildTargetLlvmPackages.clang}/bin/${buildTargetLlvmPackages.clang.targetPrefix}clang" }" '' - + lib.optionalString (stdenv.hostPlatform.isLinux && hostPlatform.libc == "glibc") '' + + lib.optionalString (stdenv.hostPlatform.libc == "glibc") '' export LOCALE_ARCHIVE="${glibcLocales}/lib/locale/locale-archive" '' + lib.optionalString (!stdenv.hostPlatform.isDarwin) '' diff --git a/pkgs/development/compilers/ghc/common-make-native-bignum.nix b/pkgs/development/compilers/ghc/common-make-native-bignum.nix index 3840ddda57db..8e33b71b1123 100644 --- a/pkgs/development/compilers/ghc/common-make-native-bignum.nix +++ b/pkgs/development/compilers/ghc/common-make-native-bignum.nix @@ -436,7 +436,7 @@ stdenv.mkDerivation ( echo -n "${buildMK}" > mk/build.mk sed -i -e 's|-isysroot /Developer/SDKs/MacOSX10.5.sdk||' configure '' - + lib.optionalString (stdenv.hostPlatform.isLinux && hostPlatform.libc == "glibc") '' + + lib.optionalString (stdenv.hostPlatform.libc == "glibc") '' export LOCALE_ARCHIVE="${glibcLocales}/lib/locale/locale-archive" '' + lib.optionalString (!stdenv.hostPlatform.isDarwin) '' From e7627649cd09fc054bb05b942de1472423ede814 Mon Sep 17 00:00:00 2001 From: sternenseemann Date: Sat, 6 Sep 2025 19:53:01 +0200 Subject: [PATCH 2/2] haskell.compiler.*: locales are required for build not host The commit adding LOCALE_ARCHIVE, 8a21e02e3177c, cites haddock generation which happens during the build and on the build platform. As it turns out, the user guide also depends on locales because sphinx tries to set a locale during execution. This should fix cross compiling ghc from glibc to non glibc, e.g. x86_64-pc-linux-gnu -> aarch64-unknown-linux-musl --- pkgs/development/compilers/ghc/common-hadrian.nix | 5 ++--- pkgs/development/compilers/ghc/common-make-native-bignum.nix | 5 ++--- 2 files changed, 4 insertions(+), 6 deletions(-) diff --git a/pkgs/development/compilers/ghc/common-hadrian.nix b/pkgs/development/compilers/ghc/common-hadrian.nix index 74c294502fcc..0b22b1ff3812 100644 --- a/pkgs/development/compilers/ghc/common-hadrian.nix +++ b/pkgs/development/compilers/ghc/common-hadrian.nix @@ -36,7 +36,6 @@ libiconv ? null, ncurses, - glibcLocales ? null, # GHC can be built with system libffi or a bundled one. libffi ? null, @@ -549,8 +548,8 @@ stdenv.mkDerivation ( "${buildTargetLlvmPackages.clang}/bin/${buildTargetLlvmPackages.clang.targetPrefix}clang" }" '' - + lib.optionalString (stdenv.hostPlatform.libc == "glibc") '' - export LOCALE_ARCHIVE="${glibcLocales}/lib/locale/locale-archive" + + lib.optionalString (stdenv.buildPlatform.libc == "glibc") '' + export LOCALE_ARCHIVE="${buildPackages.glibcLocales}/lib/locale/locale-archive" '' + lib.optionalString (!stdenv.hostPlatform.isDarwin) '' export NIX_LDFLAGS+=" -rpath $out/lib/ghc-${version}" diff --git a/pkgs/development/compilers/ghc/common-make-native-bignum.nix b/pkgs/development/compilers/ghc/common-make-native-bignum.nix index 8e33b71b1123..8cde6f42148c 100644 --- a/pkgs/development/compilers/ghc/common-make-native-bignum.nix +++ b/pkgs/development/compilers/ghc/common-make-native-bignum.nix @@ -29,7 +29,6 @@ libiconv ? null, ncurses, - glibcLocales ? null, # GHC can be built with system libffi or a bundled one. libffi ? null, @@ -436,8 +435,8 @@ stdenv.mkDerivation ( echo -n "${buildMK}" > mk/build.mk sed -i -e 's|-isysroot /Developer/SDKs/MacOSX10.5.sdk||' configure '' - + lib.optionalString (stdenv.hostPlatform.libc == "glibc") '' - export LOCALE_ARCHIVE="${glibcLocales}/lib/locale/locale-archive" + + lib.optionalString (stdenv.buildPlatform.libc == "glibc") '' + export LOCALE_ARCHIVE="${buildPackages.glibcLocales}/lib/locale/locale-archive" '' + lib.optionalString (!stdenv.hostPlatform.isDarwin) '' export NIX_LDFLAGS+=" -rpath $out/lib/ghc-${version}"