
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>
143 lines
3.5 KiB
Nix
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"
|
|
];
|
|
};
|
|
})
|