When emerging the new vpopmail with mysql feature set to on, no mysql support
is compiled into the package. This happens because the ebuild script overrides
the configure options in lines 95 and 96 by setting the myopts variable to
${myconf} --enable-clear-passwd ... but it should set the myopts to ${myopts} -
enable-clear-passwd ... thereby overriding the configure options set before.
Reproducible: Always
Steps to Reproduce:
1. USE=mysql emerge net-mail/vpopmail
2.
3.
Actual Results:
You can't authenticate to your virtual pop3 accounts stored in mysql
# Copyright 1999-2003 Gentoo Technologies, Inc.
# Distributed under the terms of the GNU General Public License v2
# $Header: /home/cvsroot/gentoo-x86/net-mail/vpopmail/vpopmail-5.2.1-r6.ebuild,v
1.8 2003/10/01 21:21:14 robbat2 Exp $
IUSE="mysql ipalias clearpasswd"
inherit eutils
# TODO: all ldap, sybase support
HOMEPAGE="http://www.inter7.com/vpopmail"
DESCRIPTION="A collection of programs to manage virtual email domains and
accounts on your Qmail or Postfix mail servers."
SRC_URI="http://www.inter7.com/${PN}/${P}.tar.gz
mysql? ( http://gentoo.twobit.net/misc/${P}-mysql.diff )"
SLOT="0"
LICENSE="GPL-2"
KEYWORDS="x86 ~sparc"
DEPEND_COMMON="net-mail/qmail
mysql? ( >=dev-db/mysql-3.23* )"
DEPEND="sys-apps/sed
sys-apps/ucspi-tcp
${DEPEND_COMMON}"
RDEPEND="${DEPEND_COMMON}
virtual/cron"
# Define vpopmail home dir in /etc/password if different
VPOP_DEFAULT_HOME="/var/vpopmail"
VPOP_HOME="$VPOP_DEFAULT_HOME"
# This makes sure the variable is set, and that it isn't null.
vpopmail_set_homedir() {
VPOP_HOME=`getent passwd vpopmail | cut -d: -f6`
if [ -z "$VPOP_HOME" ]; then
echo -ne "\a"
eerror "vpopmail's home directory is null in passwd data!"
eerror "You probably want to check that out."
eerror "Continuing with default."
sleep 1; echo -ne "\a"; sleep 1; echo -ne "\a"
VPOP_HOME="${VPOP_DEFAULT_HOME}"
else
einfo "Setting VPOP_HOME to: $VPOP_HOME"
fi
}
pkg_setup() {
if [ -z `getent group vpopmail` ]; then
(groupadd -g 89 vpopmail 2>/dev/null || groupadd vpopmail
) || die "problem adding vpopmail group"
fi
if [ -z `getent passwd vpopmail` ]; then
useradd -g vpopmail -u 89 -d ${VPOP_DEFAULT_HOME} -c "vpopmail_directory"
-s /bin/false -m vpopmail || \
useradd -g vpopmail -u `getent group vpopmail | awk -F":"
'{ print $3 }'` -d ${VPOP_DEFAULT_HOME} -c "vpopmail_directory" \
-s /bin/false -m vpopmail || die "problem adding vpopmail
user"
fi
}
src_unpack() {
cd ${WORKDIR}
unpack ${P}.tar.gz
cd ${S}
epatch ${FILESDIR}/vpopmail-5.2.1-showall.patch
if [ "`use mysql`" ]; then
einfo "Applying MySQL patch..."
# Thanks to Nicholas Jones (carpaski@gentoo.org)
epatch ${DISTDIR}/vpopmail-5.2.1-mysql.diff
fi
# Thanks to Vadim Berezniker (vadim@berezniker.com)
# This patch backports a bug fix from the devel version re: logons
epatch ${FILESDIR}/vpopmail.diff
}
src_compile() {
vpopmail_set_homedir
use ipalias && myopts="${myopts} --enable-ip-alias-domains=y" \
|| myopts="${myopts} --enable-ip-alias-domains=n"
use mysql && myopts="${myopts} --enable-mysql=y \
--enable-libs=/usr/include/mysql \
--enable-sqllibdir=/usr/lib/mysql \
--enable-mysql-logging=y \
--enable-auth-logging=y \
--enable-valias=y \
--enable-mysql-replication=n" \
|| myopts="${myopts} --enable-mysql=n"
# the configure script tries to force root and make directories not
using ${D}
sed -e '1282,1289d' -e '1560,1567d' -e '2349d' -e '2107d' -e '2342d'
configure > configure.new
mv --force configure.new configure
chmod u+x configure
# Bug 20127
use clearpasswd &&
myopts="${myopts} --enable-clear-passwd=y" ||
myopts="${myopts} --enable-clear-passwd=n"
econf ${myopts} --sbindir=/usr/sbin \
--bindir=/usr/bin \
--sysconfdir=${VPOP_HOME}/etc \
--enable-qmaildir=/var/qmail \
--enable-qmail-newu=/var/qmail/bin/qmail-newu \
--enable-qmail-inject=/var/qmail/bin/qmail-inject \
--enable-qmail-newmrh=/var/qmail/bin/qmail-newmrh \
--enable-vpopuser=vpopmail \
--enable-many-domains=y \
--enable-vpopgroup=vpopmail \
--enable-file-locking=y \
--enable-file-sync=y \
--enable-md5-passwords=y \
--enable-defaultquota=30000000,1000C \
--enable-roaming-users=y --enable-relay-clear-minutes=60
\
--enable-tcprules-prog=/usr/bin/tcprules --enable-tcpserver-file=/etc/tcp.smtp
\
--enable-logging=y \
--enable-log-name=vpopmail
[ "`use mysql`" ] && echo '#define MYSQL_PASSWORD_FILE "/etc/vpopmail.conf"'
>> config.h
emake || die "Make failed."
}
src_install () {
vpopmail_set_homedir
make DESTDIR=${D} install-strip || die
# Install documentation.
dodoc AUTHORS ChangeLog COPYING FAQ INSTALL NEWS TODO
dodoc README README.* RELEASE.NOTES UPGRADE.*
dodoc doc/doc_html/* doc/man_html/*
rm -rf ${D}/${VPOP_HOME}/doc
dosym /usr/share/doc/${PF}/ ${VPOP_HOME}/doc
# Create /etc/vpopmail.conf
if use mysql; then
einfo "Installing vpopmail mysql configuration file"
dodir /etc
insinto /etc
doins ${FILESDIR}/vpopmail.conf
fperms 600 /etc/vpopmail.conf
fi
# Install a proper cronjob instead of the old nastiness
einfo "Installing cronjob"
dodir /etc/cron.hourly
insinto /etc/cron.hourly
doins ${FILESDIR}/vpopmail.clearopensmtp
fperms +x /etc/cron.hourly/vpopmail.clearopensmtp
einfo "Installing env.d entry"
dodir /etc/env.d
insinto /etc/env.d
doins ${FILESDIR}/99vpopmail
# Configure b0rked. We'll do this manually
echo "-I${VPOP_HOME}/include" > ${D}/${VPOP_HOME}/etc/inc_deps
local libs_extra
use mysql && libs_extra="-L/usr/lib/mysql -lmysqlclient -lz" || libs_extra=""
echo "-L${VPOP_HOME}/lib -lvpopmail ${libs_extra}" > ${D}/${VPOP_HOME}/etc/lib_deps
einfo "Locking down vpopmail permissions"
# secure things more, i don't want the vpopmail user being able to
write this stuff!
chown -R root.root ${D}${VPOP_HOME}/{bin,etc,include}
}
pkg_preinst() {
vpopmail_set_homedir
# Keep DATA
keepdir ${VPOP_HOME}/domains
# This is a workaround until portage handles binary packages+users
better.
pkg_setup
}
pkg_postinst() {
einfo "Performing post-installation routines for ${P}."
if [ "`use mysql`" ]; then
echo
einfo "You have 'mysql' turned on in your USE"
einfo "Vpopmail needs a VALID MySQL USER. Let's call it 'vpopmail'"
einfo "You MUST add it and then specify its passwd in the
/etc/vpopmail.conf file"
echo
einfo "First log into mysql as your mysql root user and pass.
Then:"
einfo "> create database vpopmail;"
einfo "> use mysql;"
einfo "> grant select, insert, update, delete, create, drop
on vpopmail.* to"
einfo " vpopmail@localhost identified by 'your password';"
einfo "> flush privileges;"
echo
fi
# do this for good measure
[ -e /etc/vpopmail.conf ] && chmod 600 /etc/vpopmail.conf
}
pkg_postrm() {
vpopmail_set_homedir
einfo "The vpopmail DATA will NOT be removed automatically."
einfo "You can delete them manually by removing the ${VPOP_HOME}
directory."
}