Ihar Hrachyshka dd0f03a56c treewide: remove usage of deprecated apple_sdk framework stubs
They are not doing anything right now. This is in preparation for their
complete removal from the tree.

Note: several changes that affect the derivation inputs (e.g. removal of
references to stub paths in build instructions) were left out. They will
be cleaned up the next iteration and will require special care.

Note: this PR is a result of a mix of ugly regex (not AST) based
automation and some manual labor. For reference, the regex automation
part was hacked in: https://github.com/booxter/nix-clean-apple_sdk

Signed-off-by: Ihar Hrachyshka <ihar.hrachyshka@gmail.com>
2025-04-19 20:28:20 -04:00

143 lines
3.5 KiB
Nix

{
lib,
stdenv,
fetchurl,
pkg-config,
glib,
freetype,
libintl,
meson,
ninja,
gobject-introspection,
buildPackages,
withIntrospection ?
lib.meta.availableOn stdenv.hostPlatform gobject-introspection
&& stdenv.hostPlatform.emulatorAvailable buildPackages,
icu,
graphite2,
harfbuzz, # The icu variant uses and propagates the non-icu one.
withCoreText ? false,
withIcu ? false, # recommended by upstream as default, but most don't needed and it's big
withGraphite2 ? true, # it is small and major distros do include it
python3,
gtk-doc,
docbook-xsl-nons,
docbook_xml_dtd_43,
# for passthru.tests
gimp,
gtk3,
gtk4,
mapnik,
qt5,
testers,
}:
stdenv.mkDerivation (finalAttrs: {
pname = "harfbuzz${lib.optionalString withIcu "-icu"}";
version = "10.2.0";
src = fetchurl {
url = "https://github.com/harfbuzz/harfbuzz/releases/download/${finalAttrs.version}/harfbuzz-${finalAttrs.version}.tar.xz";
hash = "sha256-Yg40aPrsLqhoXTLEalhGm4UO9jBAs1Zc3gWVmCW0gic=";
};
postPatch =
''
patchShebangs src/*.py test
''
+ lib.optionalString stdenv.hostPlatform.isDarwin ''
# ApplicationServices.framework headers have cast-align warnings.
substituteInPlace src/hb.hh \
--replace '#pragma GCC diagnostic error "-Wcast-align"' ""
'';
outputs = [
"out"
"dev"
"devdoc"
];
outputBin = "dev";
mesonFlags = [
# upstream recommends cairo, but it is only used for development purposes
# and is not part of the library.
# Cairo causes transitive (build) dependencies on various X11 or other
# GUI-related libraries, so it shouldn't be re-added lightly.
(lib.mesonEnable "cairo" false)
# chafa is only used in a development utility, not in the library
(lib.mesonEnable "chafa" false)
(lib.mesonEnable "coretext" withCoreText)
(lib.mesonEnable "graphite" withGraphite2)
(lib.mesonEnable "icu" withIcu)
(lib.mesonEnable "introspection" withIntrospection)
(lib.mesonOption "cmakepackagedir" "${placeholder "dev"}/lib/cmake")
];
depsBuildBuild = [
pkg-config
];
nativeBuildInputs = [
meson
ninja
libintl
pkg-config
python3
glib
gtk-doc
docbook-xsl-nons
docbook_xml_dtd_43
] ++ lib.optional withIntrospection gobject-introspection;
buildInputs = [
glib
freetype
];
propagatedBuildInputs =
lib.optional withGraphite2 graphite2
++ lib.optionals withIcu [
icu
harfbuzz
];
doCheck = true;
# Slightly hacky; some pkgs expect them in a single directory.
postFixup = lib.optionalString withIcu ''
rm "$out"/lib/libharfbuzz.* "$dev/lib/pkgconfig/harfbuzz.pc"
ln -s {'${harfbuzz.dev}',"$dev"}/lib/pkgconfig/harfbuzz.pc
${lib.optionalString stdenv.hostPlatform.isDarwin ''
ln -s {'${harfbuzz.out}',"$out"}/lib/libharfbuzz.dylib
ln -s {'${harfbuzz.out}',"$out"}/lib/libharfbuzz.0.dylib
''}
'';
passthru.tests = {
inherit
gimp
gtk3
gtk4
mapnik
;
inherit (qt5) qtbase;
pkg-config = testers.hasPkgConfigModules {
package = finalAttrs.finalPackage;
};
};
meta = with lib; {
description = "OpenType text shaping engine";
homepage = "https://harfbuzz.github.io/";
changelog = "https://github.com/harfbuzz/harfbuzz/raw/${finalAttrs.version}/NEWS";
maintainers = [ ];
license = licenses.mit;
platforms = platforms.unix ++ platforms.windows;
pkgConfigModules = [
"harfbuzz"
"harfbuzz-gobject"
"harfbuzz-subset"
];
};
})