postfix: fix generating aliases db files

When generating aliases db files, the newaliases tries to chdir
/var/spool/postfix on the host. It would cause a failure if the host
doesn't install postfix:
newaliases: fatal: chdir /var/spool/postfix: No such file or directory

Move this step from do_install to pkg_postinst to make sure newaliases
and postmap run during the image creation.

Signed-off-by: Yi Zhao <yi.zhao@windriver.com>
Signed-off-by: Armin Kuster <akuster808@gmail.com>
Signed-off-by: Joe MacDonald <joe_macdonald@mentor.com>
This commit is contained in:
Yi Zhao 2018-01-10 11:09:56 +08:00 committed by Joe MacDonald
parent 10b7674398
commit b5b95422e7
3 changed files with 10 additions and 11 deletions

View File

@ -33,7 +33,7 @@ queue_directory = /var/spool/postfix
mail_spool_directory = /var/spool/mail
readme_directory = no
command_directory = /usr/sbin
daemon_directory = @LIBEXECDIR@
daemon_directory = @LIBEXECDIR@/postfix
mail_owner = postfix
setgid_group = postdrop
unknown_local_recipient_reject_code = 450

View File

@ -7,7 +7,7 @@ Conflicts=sendmail.service exim.service
Type=forking
PIDFile=@LOCALSTATEDIR@/spool/postfix/pid/master.pid
ExecStartPre=-@SBINDIR@/check_hostname.sh
ExecStartPre=-@LIBEXECDIR@/aliasesdb
ExecStartPre=-@LIBEXECDIR@/postfix/aliasesdb
ExecStart=@SBINDIR@/postfix start
ExecReload=@SBINDIR@/postfix reload
ExecStop=@SBINDIR@/postfix stop

View File

@ -150,7 +150,7 @@ do_install () {
install -m 755 ${S}/bin/smtp-sink ${D}/${sbindir}/
install -d ${D}${sysconfdir}/init.d
install -m 644 ${WORKDIR}/main.cf ${D}${sysconfdir}/postfix/main.cf
sed -i 's#@LIBEXECDIR@#${libexecdir}/postfix#' ${D}${sysconfdir}/postfix/main.cf
sed -i 's#@LIBEXECDIR@#${libexecdir}#' ${D}${sysconfdir}/postfix/main.cf
install -m 755 ${WORKDIR}/check_hostname.sh ${D}${sbindir}/
@ -159,7 +159,7 @@ do_install () {
install -d ${D}${systemd_unitdir}/system
install -m 0644 ${WORKDIR}/postfix.service ${D}${systemd_unitdir}/system
sed -i -e 's#@LIBEXECDIR@#${libexecdir}/postfix#g' ${D}${systemd_unitdir}/system/postfix.service
sed -i -e 's#@LIBEXECDIR@#${libexecdir}#g' ${D}${systemd_unitdir}/system/postfix.service
sed -i -e 's#@LOCALSTATEDIR@#${localstatedir}#g' ${D}${systemd_unitdir}/system/postfix.service
sed -i -e 's#@SBINDIR@#${sbindir}#g' ${D}${systemd_unitdir}/system/postfix.service
@ -217,12 +217,6 @@ do_install_append_class-native() {
do_install_append_class-target() {
# Remove references to buildmachine paths in target makedefs.out
sed -i 's:-fdebug-prefix-map[^ ]*::g; s:--sysroot=${STAGING_DIR_TARGET}::g' ${D}/etc/postfix/makedefs.out
# Since we are building recipe postfix, newaliases and postmap come from our sysroot_native.
touch ${D}/etc/aliases
newaliases -C ${D}/etc/postfix/main.cf -oA${D}/etc/aliases
touch ${D}/etc/postfix/virtual_alias
postmap -c ${D}/etc/postfix ${D}/etc/postfix/virtual_alias
}
ALTERNATIVE_${PN} = "sendmail"
@ -235,6 +229,7 @@ ALTERNATIVE_LINK_NAME[mailq.1] = "${mandir}/man1/mailq.1"
ALTERNATIVE_LINK_NAME[newaliases.1] = "${mandir}/man1/newaliases.1"
ALTERNATIVE_LINK_NAME[sendmail.1] = "${mandir}/man1/sendmail.1"
PACKAGE_WRITE_DEPS += "postfix-native"
pkg_postinst_${PN} () {
if [ "x$D" = "x" ]; then
touch /etc/aliases
@ -244,6 +239,11 @@ pkg_postinst_${PN} () {
touch /etc/postfix/virtual_alias
postmap /etc/postfix/virtual_alias
else
touch $D/etc/aliases
newaliases -C $D/etc/postfix/main.cf -oA$D/etc/aliases
touch $D/etc/postfix/virtual_alias
postmap -c $D/etc/postfix $D/etc/postfix/virtual_alias
if ${@'true' if 'linuxstdbase' in d.getVar('DISTROOVERRIDES', False) else 'false'}; then
# /usr/lib/sendmail is required by LSB core test
[ ! -L $D/usr/lib/sendmail ] && ln -sf ${sbindir}/sendmail $D/usr/lib/
@ -254,5 +254,4 @@ pkg_postinst_${PN} () {
# Exclude .debug directories from the main package
FILES_${PN} = "${sysconfdir} ${localstatedir} ${bindir}/* ${sbindir}/* \
${libexecdir}/* ${systemd_unitdir}/*"
CONFFILES_${PN} = "/etc/aliases /etc/postfix/virtual_alias*"
FILES_${PN}-dbg += "${libexecdir}/postfix/.debug"