forked from mirrors/nixpkgs
glibc: use (lib.getBin pkgsBuildBuild.glibc) to generate locales
This is an alternative resolution of the problem identified in https://github.com/NixOS/nixpkgs/pull/259964 which stated that "glibc depends on buildPackages.glibc for locale things. buildPackages.glibc depended on buildPackages.libgcc, which, since it's GCC, depends on the target's bintools, which depend on the target's glibc, which, again, depends on buildPackages.glibc, causing an infinute recursion when evaluating buildPackages.glibc when glibc hasn't come from stdenv (e.g. on musl)." The fact that we use pkgsBuildHost.glibc instead of pkgsBuildBuild.glibc to generate the locales has always been a gross hack. If we simply remove the gross hack the circularity goes away.
This commit is contained in:
parent
5c7aa4a2ca
commit
27a73cd176
|
@ -3,7 +3,7 @@
|
|||
, profilingLibraries ? false
|
||||
, withGd ? false
|
||||
, withLibcrypt? false
|
||||
, buildPackages
|
||||
, pkgsBuildBuild
|
||||
, libgcc
|
||||
}:
|
||||
|
||||
|
@ -98,14 +98,23 @@ in
|
|||
postInstall = previousAttrs.postInstall + (if stdenv.hostPlatform == stdenv.buildPlatform then ''
|
||||
echo SUPPORTED-LOCALES=C.UTF-8/UTF-8 > ../glibc-2*/localedata/SUPPORTED
|
||||
make -j''${NIX_BUILD_CORES:-1} localedata/install-locales
|
||||
'' else lib.optionalString stdenv.buildPlatform.isLinux ''
|
||||
'' else lib.optionalString stdenv.buildPlatform.isLinux
|
||||
# This is based on http://www.linuxfromscratch.org/lfs/view/development/chapter06/glibc.html
|
||||
# Instead of using their patch to build a build-native localedef,
|
||||
# we simply use the one from buildPackages
|
||||
# we simply use the one from pkgsBuildBuild.
|
||||
#
|
||||
# Note that we can't use pkgsBuildHost (aka buildPackages) here, because
|
||||
# that will cause an eval-time infinite recursion: "buildPackages.glibc
|
||||
# depended on buildPackages.libgcc, which, since it's GCC, depends on the
|
||||
# target's bintools, which depend on the target's glibc, which, again,
|
||||
# depends on buildPackages.glibc, causing an infinute recursion when
|
||||
# evaluating buildPackages.glibc when glibc hasn't come from stdenv
|
||||
# (e.g. on musl)." https://github.com/NixOS/nixpkgs/pull/259964
|
||||
''
|
||||
pushd ../glibc-2*/localedata
|
||||
export I18NPATH=$PWD GCONV_PATH=$PWD/../iconvdata
|
||||
mkdir -p $NIX_BUILD_TOP/${buildPackages.glibc}/lib/locale
|
||||
${lib.getBin buildPackages.glibc}/bin/localedef \
|
||||
mkdir -p $NIX_BUILD_TOP/${pkgsBuildBuild.glibc}/lib/locale
|
||||
${lib.getBin pkgsBuildBuild.glibc}/bin/localedef \
|
||||
--alias-file=../intl/locale.alias \
|
||||
-i locales/C \
|
||||
-f charmaps/UTF-8 \
|
||||
|
@ -115,7 +124,7 @@ in
|
|||
else
|
||||
"--big-endian"} \
|
||||
C.UTF-8
|
||||
cp -r $NIX_BUILD_TOP/${buildPackages.glibc}/lib/locale $out/lib
|
||||
cp -r $NIX_BUILD_TOP/${pkgsBuildBuild.glibc}/lib/locale $out/lib
|
||||
popd
|
||||
'') + ''
|
||||
|
||||
|
|
Loading…
Reference in a new issue