darwin.locale: restore locale data (#347817)

This commit is contained in:
Emily 2024-10-11 23:05:33 +01:00 committed by GitHub
commit f63d99842f
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
5 changed files with 73 additions and 10 deletions

View File

@ -35,7 +35,6 @@ mkAppleDerivation {
outputs = [ outputs = [
"out" "out"
"locale"
"ps" "ps"
"man" "man"
]; ];
@ -86,15 +85,9 @@ mkAppleDerivation {
(lib.mesonOption "sdk_version" (lib.getVersion apple-sdk)) (lib.mesonOption "sdk_version" (lib.getVersion apple-sdk))
]; ];
postBuild = ''
# Build the locales TODO
'';
postInstall = '' postInstall = ''
moveToOutput share/locale "$locale"
moveToOutput bin/ps "$ps" moveToOutput bin/ps "$ps"
ln -s "$ps/bin/ps" "$out/bin/ps" ln -s "$ps/bin/ps" "$out/bin/ps"
mkdir -p "$locale/share/locale"
''; '';
meta = { meta = {

View File

@ -0,0 +1,63 @@
{
lib,
adv_cmds,
bmake,
fetchFromGitHub,
stdenvNoCC,
}:
stdenvNoCC.mkDerivation {
pname = "locale";
version = "118";
# This data is old, but its closer to what macOS has than FreeBSD. Trying to use the FreeBSD data
# results in test failures due to different behavior (e.g., with zh_CN and spaces in gnulibs `trim` test).
# TODO(@reckenrode) Update locale data using https://cldr.unicode.org to match current macOS locale data.
src = fetchFromGitHub {
owner = "apple-oss-distributions";
repo = "adv_cmds";
rev = "adv_cmds-118";
hash = "sha256-KzaAlqXqfJW2s31qmA0D7qteaZY57Va2o86aZrwyR74=";
};
sourceRoot = "source/usr-share-locale.tproj";
postPatch = ''
# bmake expects `Makefile` not `BSDmakefile`.
find . -name Makefile -exec rm {} \; -exec ln -s BSDmakefile {} \;
# Update `Makefile`s to: get commands from `PATH`, and install to the correct location.
# Note: not every `Makefile` has `rsync` or the project name in it.
for subproject in colldef mklocale monetdef msgdef numericdef timedef; do
substituteInPlace "$subproject/BSDmakefile" \
--replace-warn "../../$subproject.tproj/" "" \
--replace-fail /usr/share/locale /share/locale \
--replace-fail '-o ''${BINOWN} -g ''${BINGRP}' "" \
--replace-warn "rsync -a" "cp -r"
done
# Update `bsdmake` references to `bmake`
substituteInPlace Makefile \
--replace-fail bsdmake bmake
'';
enableParallelBuilding = true;
nativeBuildInputs = [
adv_cmds
bmake
];
enableParallelInstalling = true;
installFlags = [ "DESTDIR=${placeholder "out"}" ];
meta = {
description = "Locale data for Darwin";
license = [
lib.licenses.apsl10
lib.licenses.apsl20
];
maintainers = lib.teams.darwin.members;
};
}

View File

@ -25,6 +25,7 @@ tag="macos-${sdkVersion//.}"
declare -A ignoredPackages=( declare -A ignoredPackages=(
[libsbuf]=1 [libsbuf]=1
[locale]=1
[mkAppleDerivation]=1 [mkAppleDerivation]=1
[update-source-releases.sh]=1 [update-source-releases.sh]=1
[versions.json]=1 [versions.json]=1

View File

@ -238,6 +238,7 @@ let
autoconf autoconf
automake automake
bison bison
bmake
brotli brotli
cmake cmake
cpio cpio
@ -289,9 +290,14 @@ let
; ;
}; };
darwinPackages = prevStage: { inherit (prevStage.darwin) locale sigtool; }; darwinPackages = prevStage: { inherit (prevStage.darwin) sigtool; };
darwinPackagesNoCC = prevStage: { darwinPackagesNoCC = prevStage: {
inherit (prevStage.darwin) binutils binutils-unwrapped libSystem; inherit (prevStage.darwin)
binutils
binutils-unwrapped
libSystem
locale
;
}; };
# These packages are not allowed to be used in the Darwin bootstrap # These packages are not allowed to be used in the Darwin bootstrap

View File

@ -118,7 +118,7 @@ impure-cmds // apple-source-packages // apple-source-headers // stubs // {
extraBuildInputs = []; extraBuildInputs = [];
}; };
inherit (self.adv_cmds) locale ps; inherit (self.adv_cmds) ps;
binutils-unwrapped = callPackage ../os-specific/darwin/binutils { binutils-unwrapped = callPackage ../os-specific/darwin/binutils {
inherit (pkgs) cctools; inherit (pkgs) cctools;