From 85350ca2d44fc272d893e566be3044920524d4e5 Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Tue, 28 Aug 2012 15:17:06 +0200 Subject: [PATCH] postfix: clean-up install phase Passing install_root=$out isn't a good idea because the install script is going to pre-pend that prefix to all other paths even though these have the $out prefix already. The resulting installation is a mess. Instead, we use the "fake" install prefix "out" and then move all files and directories into the right place afterward. --- pkgs/servers/mail/postfix/default.nix | 47 +++++++++++++-------------- 1 file changed, 22 insertions(+), 25 deletions(-) diff --git a/pkgs/servers/mail/postfix/default.nix b/pkgs/servers/mail/postfix/default.nix index 37a3869a733f..d505f459b9e6 100644 --- a/pkgs/servers/mail/postfix/default.nix +++ b/pkgs/servers/mail/postfix/default.nix @@ -12,23 +12,14 @@ stdenv.mkDerivation rec { sha256 = "1rfsfhna5hy5lc6hkg1zc2862pdc5c1y9z6aiy8rinlmzrfplhlb"; }; - installTargets = ["non-interactive-package"]; - - installFlags = [" install_root=$out "]; - - preInstall = '' - sed -e '/^PATH=/d' -i postfix-install - ''; - - postInstall = '' - mkdir -p $out - mv ut/$out/* $out/ + buildInputs = [db4 openssl cyrus_sasl bison perl]; - mkdir $out/share/postfix/conf - cp conf/* $out/share/postfix/conf - sed -e 's@PATH=.*@PATH=${coreutils}/bin:${findutils}/bin:${gnused}/bin:${gnugrep}/bin:'$out'/sbin@' -i $out/share/postfix/conf/post-install $out/libexec/postfix/post-install - sed -e '2aPATH=${coreutils}/bin:${findutils}/bin:${gnused}/bin:${gnugrep}/bin:'$out'/sbin' -i $out/share/postfix/conf/postfix-script $out/libexec/postfix/postfix-script - chmod a+x $out/share/postfix/conf/{postfix-script,post-install} + patches = [ ./postfix-2.2.9-db.patch ./postfix-2.2.9-lib.patch ./db-linux3.patch ]; + + postPatch = '' + sed -i -e s,/usr/bin,/var/run/current-system/sw/bin, \ + -e s,/usr/sbin,/var/run/current-system/sw/sbin, \ + -e s,:/sbin,, src/util/sys_defs.h ''; preBuild = '' @@ -46,14 +37,23 @@ stdenv.mkDerivation rec { make makefiles CCARGS='-DUSE_TLS -DUSE_SASL_AUTH -DUSE_CYRUS_SASL -I${cyrus_sasl}/include/sasl' AUXLIBS='-lssl -lcrypto -lsasl2 -ldb -lnsl' ''; - buildInputs = [db4 openssl cyrus_sasl bison perl]; + installPhase = '' + sed -e '/^PATH=/d' -i postfix-install + $SHELL postfix-install install_root=out -non-interactive -package - patches = [ ./postfix-2.2.9-db.patch ./postfix-2.2.9-lib.patch ./db-linux3.patch ]; + mkdir -p $out + mv -v "out$out/"* $out/ - postPatch = '' - sed -i -e s,/usr/bin,/var/run/current-system/sw/bin, \ - -e s,/usr/sbin,/var/run/current-system/sw/sbin, \ - -e s,:/sbin,, src/util/sys_defs.h + mkdir -p $out/share/postfix + mv conf $out/share/postfix/ + mv LICENSE TLS_LICENSE $out/share/postfix/ + + sed -e 's@^PATH=.*@PATH=${coreutils}/bin:${findutils}/bin:${gnused}/bin:${gnugrep}/bin:'$out'/sbin@' -i $out/share/postfix/conf/post-install $out/libexec/postfix/post-install + sed -e '2aPATH=${coreutils}/bin:${findutils}/bin:${gnused}/bin:${gnugrep}/bin:'$out'/sbin' -i $out/share/postfix/conf/postfix-script $out/libexec/postfix/postfix-script + chmod a+x $out/share/postfix/conf/{postfix-script,post-install} + ''; + + inherit glibc; meta = { homepage = "http://www.postfix.org/"; @@ -62,7 +62,4 @@ stdenv.mkDerivation rec { platforms = stdenv.lib.platforms.linux; maintainers = [ stdenv.lib.maintainers.simons ]; }; - ''; - - inherit glibc; }