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.
This commit is contained in:
Peter Simons 2012-08-28 15:17:06 +02:00
parent 40fe2d03b5
commit 85350ca2d4

View File

@ -12,23 +12,14 @@ stdenv.mkDerivation rec {
sha256 = "1rfsfhna5hy5lc6hkg1zc2862pdc5c1y9z6aiy8rinlmzrfplhlb"; sha256 = "1rfsfhna5hy5lc6hkg1zc2862pdc5c1y9z6aiy8rinlmzrfplhlb";
}; };
installTargets = ["non-interactive-package"]; buildInputs = [db4 openssl cyrus_sasl bison perl];
installFlags = [" install_root=$out "]; patches = [ ./postfix-2.2.9-db.patch ./postfix-2.2.9-lib.patch ./db-linux3.patch ];
preInstall = '' postPatch = ''
sed -e '/^PATH=/d' -i postfix-install 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
postInstall = ''
mkdir -p $out
mv ut/$out/* $out/
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}
''; '';
preBuild = '' 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' 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 = '' mkdir -p $out/share/postfix
sed -i -e s,/usr/bin,/var/run/current-system/sw/bin, \ mv conf $out/share/postfix/
-e s,/usr/sbin,/var/run/current-system/sw/sbin, \ mv LICENSE TLS_LICENSE $out/share/postfix/
-e s,:/sbin,, src/util/sys_defs.h
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 = { meta = {
homepage = "http://www.postfix.org/"; homepage = "http://www.postfix.org/";
@ -62,7 +62,4 @@ stdenv.mkDerivation rec {
platforms = stdenv.lib.platforms.linux; platforms = stdenv.lib.platforms.linux;
maintainers = [ stdenv.lib.maintainers.simons ]; maintainers = [ stdenv.lib.maintainers.simons ];
}; };
'';
inherit glibc;
} }