diff options
Diffstat (limited to 'pkgs/development/libraries/harfbuzz')
-rw-r--r-- | pkgs/development/libraries/harfbuzz/default.nix | 93 |
1 files changed, 60 insertions, 33 deletions
diff --git a/pkgs/development/libraries/harfbuzz/default.nix b/pkgs/development/libraries/harfbuzz/default.nix index d27021280a3..db142286fe4 100644 --- a/pkgs/development/libraries/harfbuzz/default.nix +++ b/pkgs/development/libraries/harfbuzz/default.nix @@ -1,65 +1,95 @@ -{ stdenv, fetchurl, pkgconfig, glib, freetype, cairo, libintl +{ lib +, stdenv +, fetchFromGitHub +, pkg-config +, glib +, freetype +, fontconfig +, libintl +, meson +, ninja , gobject-introspection -, icu, graphite2, harfbuzz # The icu variant uses and propagates the non-icu one. -, ApplicationServices, CoreText +, icu +, graphite2 +, harfbuzz # The icu variant uses and propagates the non-icu one. +, ApplicationServices +, CoreText , 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 -, python +, python3 +, gtk-doc +, docbook-xsl-nons +, docbook_xml_dtd_43 }: let - version = "2.6.7"; - inherit (stdenv.lib) optional optionals optionalString; + version = "2.8.1"; + inherit (lib) optional optionals optionalString; + mesonFeatureFlag = opt: b: + "-D${opt}=${if b then "enabled" else "disabled"}"; + isNativeCompilation = stdenv.buildPlatform == stdenv.hostPlatform; in stdenv.mkDerivation { name = "harfbuzz${optionalString withIcu "-icu"}-${version}"; - src = fetchurl { - url = "https://www.freedesktop.org/software/harfbuzz/release/harfbuzz-${version}.tar.xz"; - sha256 = "065jg6s8xix45s4msj0l2r0iycw5yyyjdylripv7pyfzdk883r29"; + src = fetchFromGitHub { + owner = "harfbuzz"; + repo = "harfbuzz"; + rev = version; + sha256 = "107l9jhvwy6pnq5032kr7r21md65qg09j7iikr4jihf9pvh7gn5w"; }; postPatch = '' - patchShebangs src/gen-def.py + patchShebangs src/*.py patchShebangs test - '' + stdenv.lib.optionalString stdenv.isDarwin '' + '' + lib.optionalString stdenv.isDarwin '' # ApplicationServices.framework headers have cast-align warnings. substituteInPlace src/hb.hh \ --replace '#pragma GCC diagnostic error "-Wcast-align"' "" ''; - outputs = [ "out" "dev" ]; + outputs = [ "out" "dev" "devdoc" ]; outputBin = "dev"; - configureFlags = [ - # not auto-detected by default - "--with-graphite2=${if withGraphite2 then "yes" else "no"}" - "--with-icu=${if withIcu then "yes" else "no"}" - "--with-gobject=yes" - "--enable-introspection=yes" - ] - ++ stdenv.lib.optional withCoreText "--with-coretext=yes"; + 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. + (mesonFeatureFlag "cairo" false) + # chafa is only used in a development utility, not in the library + (mesonFeatureFlag "chafa" false) + (mesonFeatureFlag "coretext" withCoreText) + (mesonFeatureFlag "graphite" withGraphite2) + (mesonFeatureFlag "icu" withIcu) + (mesonFeatureFlag "introspection" isNativeCompilation) + ]; nativeBuildInputs = [ + meson + ninja gobject-introspection libintl - pkgconfig + pkg-config + python3 + gtk-doc + docbook-xsl-nons + docbook_xml_dtd_43 ]; - buildInputs = [ glib freetype cairo ] # recommended by upstream - ++ stdenv.lib.optionals withCoreText [ ApplicationServices CoreText ]; + buildInputs = [ glib freetype ] + ++ lib.optionals withCoreText [ ApplicationServices CoreText ] + ++ lib.optionals isNativeCompilation [ gobject-introspection ]; - propagatedBuildInputs = [] - ++ optional withGraphite2 graphite2 + propagatedBuildInputs = optional withGraphite2 graphite2 ++ optionals withIcu [ icu harfbuzz ]; - checkInputs = [ python ]; - doInstallCheck = false; # fails, probably a bug + doCheck = true; # Slightly hacky; some pkgs expect them in a single directory. - postInstall = optionalString withIcu '' + postFixup = optionalString withIcu '' rm "$out"/lib/libharfbuzz.* "$dev/lib/pkgconfig/harfbuzz.pc" ln -s {'${harfbuzz.out}',"$out"}/lib/libharfbuzz.la ln -s {'${harfbuzz.dev}',"$dev"}/lib/pkgconfig/harfbuzz.pc @@ -69,14 +99,11 @@ stdenv.mkDerivation { ''} ''; - meta = with stdenv.lib; { + meta = with lib; { description = "An OpenType text shaping engine"; - homepage = "http://www.freedesktop.org/wiki/Software/HarfBuzz"; - downloadPage = "https://www.freedesktop.org/software/harfbuzz/release/"; + homepage = "https://harfbuzz.github.io/"; maintainers = [ maintainers.eelco ]; license = licenses.mit; platforms = with platforms; linux ++ darwin; - inherit version; - updateWalker = true; }; } |