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 = [
"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

@ -238,6 +238,7 @@ let
autoconf
automake
bison
bmake
brotli
cmake
cpio
@ -289,9 +290,14 @@ let
;
};
darwinPackages = prevStage: { inherit (prevStage.darwin) locale sigtool; };
darwinPackages = prevStage: { inherit (prevStage.darwin) sigtool; };
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

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;