From 55b7d3a181f644586bfc4c6ee5be0dd2a213a733 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vladim=C3=ADr=20=C4=8Cun=C3=A1t?= Date: Wed, 28 Oct 2015 11:52:23 +0100 Subject: [PATCH] glib: fixup output paths and use system pcre Now pcre costs us <0.5 MB and using internal one would cost ~0.2 MB, so if we take into account that pcre is often used, e.g. by grep... --- pkgs/development/libraries/glib/default.nix | 15 +++++---- pkgs/development/libraries/glib/setup-hook.sh | 32 ++++++------------- 2 files changed, 18 insertions(+), 29 deletions(-) diff --git a/pkgs/development/libraries/glib/default.nix b/pkgs/development/libraries/glib/default.nix index ae64f1f68e08..6b6b39848e20 100644 --- a/pkgs/development/libraries/glib/default.nix +++ b/pkgs/development/libraries/glib/default.nix @@ -31,12 +31,12 @@ let # This is intended to be run in postInstall of any package # which has $out/include/ containing just some disjunct directories. flattenInclude = '' - for dir in "$out"/include/*; do - cp -r "$dir"/* "$out/include/" + for dir in "''${!outputInclude}"/include/*; do + cp -r "$dir"/* "''${!outputInclude}/include/" rm -r "$dir" ln -s . "$dir" done - ln -sr -t "$out/include/" "$out"/lib/*/include/* 2>/dev/null || true + ln -sr -t "''${!outputInclude}/include/" "''${!outputInclude}"/lib/*/include/* 2>/dev/null || true ''; ver_maj = "2.46"; @@ -53,20 +53,21 @@ stdenv.mkDerivation rec { patches = optional stdenv.isDarwin ./darwin-compilation.patch ++ optional doCheck ./skip-timer-test.patch; - outputs = [ "dev" "out" "doc" ]; + outputs = [ "dev" "out" "docdev" ]; outputBin = "dev"; setupHook = ./setup-hook.sh; - buildInputs = [ libelf setupHook/*get the gtk-doc hook*/ ] + buildInputs = [ libelf setupHook pcre ] ++ optionals doCheck [ tzdata libxml2 desktop_file_utils shared_mime_info ]; nativeBuildInputs = [ pkgconfig gettext perl python ]; - propagatedBuildInputs = [ zlib libffi libiconv /*pcre*/ ] + propagatedBuildInputs = [ zlib libffi libiconv ] ++ libintlOrEmpty; - configureFlags = [ ] # [ "--with-pcre=system" ] # internal pcre only adds <200kB + # internal pcre would only add <200kB, but it's relatively common + configureFlags = [ "--with-pcre=system" ] ++ optional stdenv.isDarwin "--disable-compile-warnings" ++ optional stdenv.isSunOS "--disable-modular-tests"; diff --git a/pkgs/development/libraries/glib/setup-hook.sh b/pkgs/development/libraries/glib/setup-hook.sh index 5ead702f0069..c5cf293902cd 100644 --- a/pkgs/development/libraries/glib/setup-hook.sh +++ b/pkgs/development/libraries/glib/setup-hook.sh @@ -1,5 +1,3 @@ -# Install gschemas, if any, in a package-specific directory -installFlagsArray+=("gsettingsschemadir=$out/share/gsettings-schemas/$name/glib-2.0/schemas/") make_glib_find_gsettings_schemas() { # For packages that need gschemas of other packages (e.g. empathy) @@ -7,32 +5,22 @@ make_glib_find_gsettings_schemas() { addToSearchPath GSETTINGS_SCHEMAS_PATH "$1/share/gsettings-schemas/"* fi } - envHooks+=(make_glib_find_gsettings_schemas) +# Install gschemas, if any, in a package-specific directory +glibPreInstallPhase() { + installFlagsArray+=("gsettingsschemadir=${!outputLib}/share/gsettings-schemas/$name/glib-2.0/schemas/") +} +preInstallPhases+=(glibPreInstallPhase) + glibPreFixupPhase() { # Move gschemas in case the install flag didn't help - if [ -d "$out/share/glib-2.0/schemas" ]; then - mkdir -p "$out/share/gsettings-schemas/$name/glib-2.0" - mv "$out/share/glib-2.0/schemas" "$out/share/gsettings-schemas/$name/glib-2.0/" + if [ -d "${!outputLib}/share/glib-2.0/schemas" ]; then + mkdir -p "${!outputLib}/share/gsettings-schemas/$name/glib-2.0" + mv "${!outputLib}/share/glib-2.0/schemas" "${!outputLib}/share/gsettings-schemas/$name/glib-2.0/" fi - addToSearchPath GSETTINGS_SCHEMAS_PATH "$out/share/gsettings-schemas/$name" + addToSearchPath GSETTINGS_SCHEMAS_PATH "${!outputLib}/share/gsettings-schemas/$name" } - preFixupPhases+=(glibPreFixupPhase) - -preFixupHooks+=(_multioutGtkDocs) - -# Move documentation to the desired outputs. -_multioutGtkDocs() { - if [ "$outputs" = "out" ]; then return; fi; - _moveToOutput share/gtk-doc "${!outputDoc}" - - # Remove empty share directory. - if [ -d "$out/share" ]; then - rmdir "$out/share" 2> /dev/null || true - fi -} -