From 9a1aa51fed2b62edcce9f1722cfc822cf07f31a8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vladim=C3=ADr=20=C4=8Cun=C3=A1t?= Date: Mon, 5 Oct 2015 19:26:54 +0200 Subject: [PATCH] harfbuzz-icu: share the non-icu library --- .../libraries/harfbuzz/default.nix | 37 ++++++++++++------- 1 file changed, 24 insertions(+), 13 deletions(-) diff --git a/pkgs/development/libraries/harfbuzz/default.nix b/pkgs/development/libraries/harfbuzz/default.nix index d2f8416b3ea..6ee88f6ea4f 100644 --- a/pkgs/development/libraries/harfbuzz/default.nix +++ b/pkgs/development/libraries/harfbuzz/default.nix @@ -1,38 +1,49 @@ { stdenv, fetchurl, pkgconfig, glib, freetype, cairo, libintlOrEmpty -, icu, graphite2 +, icu, graphite2, harfbuzz # The icu variant uses and propagates the non-icu one. , 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 }: -# TODO: split non-icu and icu lib into different outputs? -# (icu is a ~30 MB dependency, the rest is very small in comparison) +let + version = "1.0.3"; + inherit (stdenv.lib) optional optionals optionalString; +in -stdenv.mkDerivation rec { - name = "harfbuzz-1.0.3"; +stdenv.mkDerivation { + name = "harfbuzz${optionalString withIcu "-icu"}-1.0.3"; src = fetchurl { - url = "http://www.freedesktop.org/software/harfbuzz/release/${name}.tar.bz2"; + url = "http://www.freedesktop.org/software/harfbuzz/release/harfbuzz-${version}.tar.bz2"; sha256 = "1xrxlrvgyr6mm9qjxmkif2kvcah082y94gf1vqi0f0bdl1g8gp7b"; }; - outputs = [ "out" "doc" ]; + outputs = [ "dev" "out" "doc" ]; + outputBin = "dev"; configureFlags = [ ( "--with-graphite2=" + (if withGraphite2 then "yes" else "no") ) # not auto-detected by default ( "--with-icu=" + (if withIcu then "yes" else "no") ) ]; - buildInputs = [ pkgconfig glib freetype cairo ] # recommended by upstream + nativeBuildInputs = [ pkgconfig ]; + buildInputs = [ glib freetype cairo ] # recommended by upstream ++ libintlOrEmpty; propagatedBuildInputs = [] - ++ stdenv.lib.optional withGraphite2 graphite2 - ++ stdenv.lib.optional withIcu icu + ++ optional withGraphite2 graphite2 + ++ optionals withIcu [ icu harfbuzz ] ; - meta = { + # Slightly hacky; some pkgs expect them in a single directory. + postInstall = 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 + ''; + + meta = with stdenv.lib; { description = "An OpenType text shaping engine"; homepage = http://www.freedesktop.org/wiki/Software/HarfBuzz; - maintainers = [ stdenv.lib.maintainers.eelco ]; - platforms = stdenv.lib.platforms.linux ++ stdenv.lib.platforms.darwin; + maintainers = [ maintainers.eelco ]; + platforms = with platforms; linux ++ darwin; }; }