darwin.locale: reinit at 118

The locale data used on macOS has not been included in a source release
since adv_cmds-118. Fortunately, that data can be parsed by the current
version of adv_cmds. It’s a bit old, but other sources of data (such as
FreeBSD) are not compatible enough and may cause divergent behavior.
This commit is contained in:
Randy Eckenrode 2024-10-10 19:24:52 -04:00
parent a7804159c0
commit 48ae217cc5
No known key found for this signature in database
GPG Key ID: 64C1CD4EC2A600D9
4 changed files with 65 additions and 8 deletions

View File

@ -35,7 +35,6 @@ mkAppleDerivation {
outputs = [
"out"
"locale"
"ps"
"man"
];
@ -86,15 +85,9 @@ mkAppleDerivation {
(lib.mesonOption "sdk_version" (lib.getVersion apple-sdk))
];
postBuild = ''
# Build the locales TODO
'';
postInstall = ''
moveToOutput share/locale "$locale"
moveToOutput bin/ps "$ps"
ln -s "$ps/bin/ps" "$out/bin/ps"
mkdir -p "$locale/share/locale"
'';
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=(
[libsbuf]=1
[locale]=1
[mkAppleDerivation]=1
[update-source-releases.sh]=1
[versions.json]=1

View File

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