From c642f848389418bfab6b4de811364d0fe6cae005 Mon Sep 17 00:00:00 2001 From: Eelco Dolstra Date: Sat, 25 Aug 2012 21:19:26 -0400 Subject: [PATCH] stdenvMulti: Set the configure/install flags in the pre-hook Flags like $(dev)/include don't always get expanded, e.g. leading to incorrect pkgconfig files. So set them in the pre-hook. --- pkgs/build-support/multiple-outputs.nix | 40 ++++++++++++++----------- 1 file changed, 22 insertions(+), 18 deletions(-) diff --git a/pkgs/build-support/multiple-outputs.nix b/pkgs/build-support/multiple-outputs.nix index 2a582e681e9..ab7b65dd113 100644 --- a/pkgs/build-support/multiple-outputs.nix +++ b/pkgs/build-support/multiple-outputs.nix @@ -6,30 +6,34 @@ with stdenv.lib; stdenv.mkDerivation (args // { - configureFlags = - optionals (elem "bin" outputs) - [ "--bindir=$(bin)/bin" "--mandir=$(bin)/share/man" ] - ++ optionals (elem "lib" outputs) - [ "--libdir=$(lib)/lib" ] - ++ optional (elem "dev" outputs) - "--includedir=$(dev)/include" - ++ [ (toString args.configureFlags or []) ]; - - installFlags = - optionals (elem "dev" outputs) - [ "pkgconfigdir=$(dev)/lib/pkgconfig" "m4datadir=$(dev)/share/aclocal" "aclocaldir=$(dev)/share/aclocal" ] - ++ [ (toString args.installFlags or []) ]; - #postPhases = [ "fixupOutputsPhase" ] ++ args.postPhases or []; + preHook = + '' + ${optionalString (elem "bin" outputs) '' + configureFlags="--bindir=$bin/bin --mandir=$bin/share/man $configureFlags" + ''} + ${optionalString (elem "lib" outputs) '' + configureFlags="--libdir=$lib/lib $configureFlags" + ''} + ${optionalString (elem "dev" outputs) '' + configureFlags="--includedir=$dev/include $configureFlags" + installFlags="pkgconfigdir=$dev/lib/pkgconfig m4datadir=$dev/share/aclocal aclocaldir=$dev/share/aclocal $installFlags" + ''} + ''; + preFixup = '' runHook preFixupOutputs - if [ -n "$doc" -a -e $out/share/doc ]; then - mkdir -p $doc/share/doc - mv $out/share/doc/* $doc/share/doc - rmdir $out/share/doc + if [ -n "$doc" ]; then + for i in share/doc share/gtk-doc; do + if [ -e $out/$i ]; then + mkdir -p $doc/$i + mv $out/$i/* $doc/$i/ + rmdir $out/$i + fi + done rmdir --ignore-fail-on-non-empty $out/share fi