3
0
Fork 0
forked from mirrors/nixpkgs
nixpkgs/pkgs/os-specific/darwin/apple-source-releases/ICU/default.nix
2021-01-29 15:42:27 +08:00

57 lines
1.8 KiB
Nix

{ appleDerivation, python3 }:
appleDerivation {
nativeBuildInputs = [ python3 ];
postPatch = ''
substituteInPlace makefile \
--replace "/usr/bin/" "" \
--replace "xcrun --sdk macosx --find" "echo -n" \
--replace "xcrun --sdk macosx.internal --show-sdk-path" "echo -n /dev/null" \
--replace "-install_name " "-install_name $out"
substituteInPlace icuSources/config/mh-darwin \
--replace "-install_name " "-install_name $out/"
# drop using impure /var/db/timezone/icutz
substituteInPlace makefile \
--replace '-DU_TIMEZONE_FILES_DIR=\"\\\"$(TZDATA_LOOKUP_DIR)\\\"\" -DU_TIMEZONE_PACKAGE=\"\\\"$(TZDATA_PACKAGE)\\\"\"' ""
# FIXME: This will cause `ld: warning: OS version (12.0) too small, changing to 13.0.0`, APPLE should fix it.
substituteInPlace makefile \
--replace "ZIPPERING_LDFLAGS=-Wl,-iosmac_version_min,12.0" "ZIPPERING_LDFLAGS="
# skip test for missing encodingSamples data
substituteInPlace icuSources/test/cintltst/ucsdetst.c \
--replace "&TestMailFilterCSS" "NULL"
patchShebangs icuSources
'';
# APPLE is using makefile to save its default configuration and call ./configure, so we hack makeFlags
# instead of configuring ourself, trying to stay abreast of APPLE.
dontConfigure = true;
makeFlags = [
"DSTROOT=$(out)"
# remove /usr prefix on include and lib
"PRIVATE_HDR_PREFIX="
"libdir=/lib/"
"DATA_INSTALL_DIR=/share/icu/"
"DATA_LOOKUP_DIR=$(DSTROOT)$(DATA_INSTALL_DIR)"
# hack to use our lower macos version
"MAC_OS_X_VERSION_MIN_REQUIRED=__MAC_OS_X_VERSION_MIN_REQUIRED"
"OSX_HOST_VERSION_MIN_STRING=$(MACOSX_DEPLOYMENT_TARGET)"
];
doCheck = true;
checkTarget = "check";
postInstall = ''
# we don't need all those in usr/local
rm -rf $out/usr
'';
}