Unverified Commit 48ae217c authored by Randy Eckenrode's avatar Randy Eckenrode
Browse files

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.
parent a7804159
Loading
Loading
Loading
Loading
+0 −7
Original line number Diff line number Diff line
@@ -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 = {
+63 −0
Original line number Diff line number Diff line
{
  lib,
  adv_cmds,
  bmake,
  fetchFromGitHub,
  stdenvNoCC,
}:

stdenvNoCC.mkDerivation {
  pname = "locale";
  version = "118";

  # This data is old, but it’s 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 gnulib’s `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;
  };
}
+1 −0
Original line number Diff line number Diff line
@@ -25,6 +25,7 @@ tag="macos-${sdkVersion//.}"

declare -A ignoredPackages=(
    [libsbuf]=1
    [locale]=1
    [mkAppleDerivation]=1
    [update-source-releases.sh]=1
    [versions.json]=1
+1 −1
Original line number Diff line number Diff line
@@ -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;