Unverified Commit f63d9984 authored by Emily's avatar Emily Committed by GitHub
Browse files

darwin.locale: restore locale data (#347817)

parents d6ca1f0a 840a4f77
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
+8 −2
Original line number Diff line number Diff line
@@ -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
+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;