Versión parchada de Dbmail por el mismo bug de RETURNING de Dbmail 2.0
This commit is contained in:
parent
f22b97af49
commit
3031019855
4 changed files with 335 additions and 3 deletions
145
net-mail/dbmail/dbmail-3.2.2-r1.ebuild
Normal file
145
net-mail/dbmail/dbmail-3.2.2-r1.ebuild
Normal file
|
@ -0,0 +1,145 @@
|
|||
# Copyright 1999-2015 Gentoo Foundation
|
||||
# Distributed under the terms of the GNU General Public License v2
|
||||
# $Header: /var/cvsroot/gentoo-x86/net-mail/dbmail/dbmail-3.2.2.ebuild,v 1.4 2015/03/22 12:53:43 pacho Exp $
|
||||
|
||||
EAPI="4"
|
||||
inherit eutils multilib versionator user
|
||||
|
||||
DESCRIPTION="DBMail is an open-source project that enables storage of mail messages in a relational database"
|
||||
HOMEPAGE="http://www.dbmail.org/"
|
||||
SRC_URI="http://www.dbmail.org/download/$(get_version_component_range 1-2)/${P}.tar.gz"
|
||||
|
||||
LICENSE="GPL-2"
|
||||
SLOT="0"
|
||||
KEYWORDS="amd64 x86"
|
||||
IUSE="ldap sieve +sqlite ssl static"
|
||||
|
||||
DEPEND="dev-db/libzdb
|
||||
sieve? ( >=mail-filter/libsieve-2.2.1 )
|
||||
ldap? ( >=net-nds/openldap-2.3.33 )
|
||||
app-text/asciidoc
|
||||
app-text/xmlto
|
||||
app-crypt/mhash
|
||||
sys-libs/zlib
|
||||
dev-libs/gmime:2.6
|
||||
>=dev-libs/glib-2.16
|
||||
dev-libs/libevent
|
||||
ssl? ( dev-libs/openssl )"
|
||||
#asciidoc and xmlto needed?
|
||||
RDEPEND="${DEPEND}"
|
||||
|
||||
pkg_setup() {
|
||||
enewgroup dbmail
|
||||
enewuser dbmail -1 -1 /var/lib/dbmail dbmail
|
||||
}
|
||||
|
||||
src_prepare() {
|
||||
epatch "${FILESDIR}/3.2-pgsql-RETURNING.patch"
|
||||
}
|
||||
|
||||
src_configure() {
|
||||
local myconf=""
|
||||
use ldap && myconf=${myconf}" --with-auth-ldap"
|
||||
|
||||
econf \
|
||||
--sysconfdir=/etc/dbmail \
|
||||
$(use_enable static) \
|
||||
$(use_with sieve) \
|
||||
${myconf}
|
||||
}
|
||||
|
||||
src_compile() {
|
||||
emake || die "emake failed"
|
||||
}
|
||||
|
||||
src_install() {
|
||||
emake DESTDIR="${D}" install || die "emake install failed"
|
||||
|
||||
dodoc AUTHORS BUGS ChangeLog README* INSTALL NEWS THANKS UPGRADING
|
||||
|
||||
docompress -x /usr/share/doc/${PF}/sql
|
||||
dodoc -r sql
|
||||
dodoc -r test-scripts
|
||||
dodoc -r contrib
|
||||
## TODO: install other contrib stuff
|
||||
|
||||
sed -i -e "s:nobody:dbmail:" dbmail.conf
|
||||
sed -i -e "s:nogroup:dbmail:" dbmail.conf
|
||||
sed -i -e "s:/var/run:/var/run/dbmail:" dbmail.conf
|
||||
#sed -i -e "s:#library_directory:library_directory:" dbmail.conf
|
||||
|
||||
insinto /etc/dbmail
|
||||
newins dbmail.conf dbmail.conf.dist
|
||||
|
||||
# change config path to our default and use the conf.d and init.d files from the contrib dir
|
||||
sed -i -e "s:/etc/dbmail.conf:/etc/dbmail/dbmail.conf:" contrib/startup-scripts/gentoo/init.d-dbmail
|
||||
#sed -i -e "s:exit 0:return 1:" contrib/startup-scripts/gentoo/init.d-dbmail
|
||||
#sed -i -e "s:/var/run:/var/run/dbmail:" contrib/startup-scripts/gentoo/init.d-dbmail
|
||||
#newconfd contrib/startup-scripts/gentoo/conf.d-dbmail dbmail
|
||||
#newinitd contrib/startup-scripts/gentoo/init.d-dbmail dbmail
|
||||
# use custom init scripts until updated in upstream contrib
|
||||
newinitd "${FILESDIR}/dbmail-imapd.initd" dbmail-imapd
|
||||
newinitd "${FILESDIR}/dbmail-lmtpd.initd" dbmail-lmtpd
|
||||
newinitd "${FILESDIR}/dbmail-pop3d.initd" dbmail-pop3d
|
||||
newinitd "${FILESDIR}/dbmail-timsieved.initd" dbmail-timsieved
|
||||
|
||||
dobin contrib/mailbox2dbmail/mailbox2dbmail
|
||||
doman contrib/mailbox2dbmail/mailbox2dbmail.1
|
||||
#doman man/*.{1,5,8}
|
||||
|
||||
# ldap schema
|
||||
if use ldap; then
|
||||
insinto /etc/openldap/schema
|
||||
doins "${S}/dbmail.schema"
|
||||
fi
|
||||
|
||||
keepdir /var/lib/dbmail
|
||||
fperms 750 /var/lib/dbmail
|
||||
fowners dbmail:dbmail /var/lib/dbmail
|
||||
# create this through init-scripts instead of at installt ime (bug #455002)
|
||||
#keepdir /var/run/dbmail
|
||||
#fowners dbmail:dbmail /var/run/dbmail
|
||||
}
|
||||
|
||||
pkg_postinst() {
|
||||
elog "Please read the INSTALL file in /usr/share/doc/${PF}/"
|
||||
elog "for remaining instructions on setting up dbmail users and "
|
||||
elog "for finishing configuration to connect to your MTA and "
|
||||
elog "to connect to your db."
|
||||
echo
|
||||
elog "DBMail requires either SQLite, PostgreSQL or MySQL."
|
||||
elog "Database schemes can be found in /usr/share/doc/${PF}/"
|
||||
elog "You will also want to follow the installation instructions"
|
||||
elog "on setting up the maintenance program to delete old messages."
|
||||
elog "Don't forget to edit /etc/dbmail/dbmail.conf as well."
|
||||
echo
|
||||
elog "For regular maintenance, add this to crontab:"
|
||||
elog "0 3 * * * /usr/bin/dbmail-util -cpdy >/dev/null 2>&1"
|
||||
echo
|
||||
elog "Please make sure to run etc-update."
|
||||
elog "If you get an error message about plugins not found"
|
||||
elog "please add the library_directory configuration switch to"
|
||||
elog "dbmail.conf and set it to the correct path"
|
||||
elog "(usually /usr/lib/dbmail or /usr/lib64/dbmail on amd64)"
|
||||
elog "A sample can be found in dbmail.conf.dist after etc-update."
|
||||
echo
|
||||
elog "We are now using the init script from upstream."
|
||||
elog "Please edit /etc/conf.d/dbmail to set which services to start"
|
||||
elog "and delete /etc/init.d/dbmail-* when you are done. (don't"
|
||||
elog "forget to rc-update del dbmail-* first)"
|
||||
echo
|
||||
elog "Changed pid directory to /var/run/dbmail (see"
|
||||
elog "http://www.dbmail.org/mantis/view.php?id=949 for details)"
|
||||
echo
|
||||
ewarn "The database config has changed to support libzdb db URI"
|
||||
ewarn "Please check the documentation (or Bug #479664)"
|
||||
echo
|
||||
ewarn "The database schema has changed since 3.0.x make sure"
|
||||
ewarn "to run the migration script"
|
||||
echo
|
||||
ewarn "Please be aware, that the single init-script for all services"
|
||||
ewarn "has been replaced with seperate init scripts for the individual services."
|
||||
ewarn "Make sure to add dbmail-(imapd|lmtpd|pop3d|timsieved) using rc-update"
|
||||
ewarn "and remove dbmail if you want to take advantage of this change."
|
||||
echo
|
||||
}
|
141
net-mail/dbmail/dbmail-3.2.2.ebuild
Normal file
141
net-mail/dbmail/dbmail-3.2.2.ebuild
Normal file
|
@ -0,0 +1,141 @@
|
|||
# Copyright 1999-2015 Gentoo Foundation
|
||||
# Distributed under the terms of the GNU General Public License v2
|
||||
# $Header: /var/cvsroot/gentoo-x86/net-mail/dbmail/dbmail-3.2.2.ebuild,v 1.4 2015/03/22 12:53:43 pacho Exp $
|
||||
|
||||
EAPI="4"
|
||||
inherit eutils multilib versionator user
|
||||
|
||||
DESCRIPTION="DBMail is an open-source project that enables storage of mail messages in a relational database"
|
||||
HOMEPAGE="http://www.dbmail.org/"
|
||||
SRC_URI="http://www.dbmail.org/download/$(get_version_component_range 1-2)/${P}.tar.gz"
|
||||
|
||||
LICENSE="GPL-2"
|
||||
SLOT="0"
|
||||
KEYWORDS="amd64 x86"
|
||||
IUSE="ldap sieve +sqlite ssl static"
|
||||
|
||||
DEPEND="dev-db/libzdb
|
||||
sieve? ( >=mail-filter/libsieve-2.2.1 )
|
||||
ldap? ( >=net-nds/openldap-2.3.33 )
|
||||
app-text/asciidoc
|
||||
app-text/xmlto
|
||||
app-crypt/mhash
|
||||
sys-libs/zlib
|
||||
dev-libs/gmime:2.6
|
||||
>=dev-libs/glib-2.16
|
||||
dev-libs/libevent
|
||||
ssl? ( dev-libs/openssl )"
|
||||
#asciidoc and xmlto needed?
|
||||
RDEPEND="${DEPEND}"
|
||||
|
||||
pkg_setup() {
|
||||
enewgroup dbmail
|
||||
enewuser dbmail -1 -1 /var/lib/dbmail dbmail
|
||||
}
|
||||
|
||||
src_configure() {
|
||||
local myconf=""
|
||||
use ldap && myconf=${myconf}" --with-auth-ldap"
|
||||
|
||||
econf \
|
||||
--sysconfdir=/etc/dbmail \
|
||||
$(use_enable static) \
|
||||
$(use_with sieve) \
|
||||
${myconf}
|
||||
}
|
||||
|
||||
src_compile() {
|
||||
emake || die "emake failed"
|
||||
}
|
||||
|
||||
src_install() {
|
||||
emake DESTDIR="${D}" install || die "emake install failed"
|
||||
|
||||
dodoc AUTHORS BUGS ChangeLog README* INSTALL NEWS THANKS UPGRADING
|
||||
|
||||
docompress -x /usr/share/doc/${PF}/sql
|
||||
dodoc -r sql
|
||||
dodoc -r test-scripts
|
||||
dodoc -r contrib
|
||||
## TODO: install other contrib stuff
|
||||
|
||||
sed -i -e "s:nobody:dbmail:" dbmail.conf
|
||||
sed -i -e "s:nogroup:dbmail:" dbmail.conf
|
||||
sed -i -e "s:/var/run:/var/run/dbmail:" dbmail.conf
|
||||
#sed -i -e "s:#library_directory:library_directory:" dbmail.conf
|
||||
|
||||
insinto /etc/dbmail
|
||||
newins dbmail.conf dbmail.conf.dist
|
||||
|
||||
# change config path to our default and use the conf.d and init.d files from the contrib dir
|
||||
sed -i -e "s:/etc/dbmail.conf:/etc/dbmail/dbmail.conf:" contrib/startup-scripts/gentoo/init.d-dbmail
|
||||
#sed -i -e "s:exit 0:return 1:" contrib/startup-scripts/gentoo/init.d-dbmail
|
||||
#sed -i -e "s:/var/run:/var/run/dbmail:" contrib/startup-scripts/gentoo/init.d-dbmail
|
||||
#newconfd contrib/startup-scripts/gentoo/conf.d-dbmail dbmail
|
||||
#newinitd contrib/startup-scripts/gentoo/init.d-dbmail dbmail
|
||||
# use custom init scripts until updated in upstream contrib
|
||||
newinitd "${FILESDIR}/dbmail-imapd.initd" dbmail-imapd
|
||||
newinitd "${FILESDIR}/dbmail-lmtpd.initd" dbmail-lmtpd
|
||||
newinitd "${FILESDIR}/dbmail-pop3d.initd" dbmail-pop3d
|
||||
newinitd "${FILESDIR}/dbmail-timsieved.initd" dbmail-timsieved
|
||||
|
||||
dobin contrib/mailbox2dbmail/mailbox2dbmail
|
||||
doman contrib/mailbox2dbmail/mailbox2dbmail.1
|
||||
#doman man/*.{1,5,8}
|
||||
|
||||
# ldap schema
|
||||
if use ldap; then
|
||||
insinto /etc/openldap/schema
|
||||
doins "${S}/dbmail.schema"
|
||||
fi
|
||||
|
||||
keepdir /var/lib/dbmail
|
||||
fperms 750 /var/lib/dbmail
|
||||
fowners dbmail:dbmail /var/lib/dbmail
|
||||
# create this through init-scripts instead of at installt ime (bug #455002)
|
||||
#keepdir /var/run/dbmail
|
||||
#fowners dbmail:dbmail /var/run/dbmail
|
||||
}
|
||||
|
||||
pkg_postinst() {
|
||||
elog "Please read the INSTALL file in /usr/share/doc/${PF}/"
|
||||
elog "for remaining instructions on setting up dbmail users and "
|
||||
elog "for finishing configuration to connect to your MTA and "
|
||||
elog "to connect to your db."
|
||||
echo
|
||||
elog "DBMail requires either SQLite, PostgreSQL or MySQL."
|
||||
elog "Database schemes can be found in /usr/share/doc/${PF}/"
|
||||
elog "You will also want to follow the installation instructions"
|
||||
elog "on setting up the maintenance program to delete old messages."
|
||||
elog "Don't forget to edit /etc/dbmail/dbmail.conf as well."
|
||||
echo
|
||||
elog "For regular maintenance, add this to crontab:"
|
||||
elog "0 3 * * * /usr/bin/dbmail-util -cpdy >/dev/null 2>&1"
|
||||
echo
|
||||
elog "Please make sure to run etc-update."
|
||||
elog "If you get an error message about plugins not found"
|
||||
elog "please add the library_directory configuration switch to"
|
||||
elog "dbmail.conf and set it to the correct path"
|
||||
elog "(usually /usr/lib/dbmail or /usr/lib64/dbmail on amd64)"
|
||||
elog "A sample can be found in dbmail.conf.dist after etc-update."
|
||||
echo
|
||||
elog "We are now using the init script from upstream."
|
||||
elog "Please edit /etc/conf.d/dbmail to set which services to start"
|
||||
elog "and delete /etc/init.d/dbmail-* when you are done. (don't"
|
||||
elog "forget to rc-update del dbmail-* first)"
|
||||
echo
|
||||
elog "Changed pid directory to /var/run/dbmail (see"
|
||||
elog "http://www.dbmail.org/mantis/view.php?id=949 for details)"
|
||||
echo
|
||||
ewarn "The database config has changed to support libzdb db URI"
|
||||
ewarn "Please check the documentation (or Bug #479664)"
|
||||
echo
|
||||
ewarn "The database schema has changed since 3.0.x make sure"
|
||||
ewarn "to run the migration script"
|
||||
echo
|
||||
ewarn "Please be aware, that the single init-script for all services"
|
||||
ewarn "has been replaced with seperate init scripts for the individual services."
|
||||
ewarn "Make sure to add dbmail-(imapd|lmtpd|pop3d|timsieved) using rc-update"
|
||||
ewarn "and remove dbmail if you want to take advantage of this change."
|
||||
echo
|
||||
}
|
|
@ -1,6 +1,3 @@
|
|||
Only in dbmail-3.0.2/src: .dbmailtypes.h.swp
|
||||
Binary files dbmail-3.0.2.orig/src/.dm_db.c.swp and dbmail-3.0.2/src/.dm_db.c.swp differ
|
||||
Only in dbmail-3.0.2.orig/src: .strtoll.c.swp
|
||||
diff -uri dbmail-3.0.2.orig/src/dm_db.c dbmail-3.0.2/src/dm_db.c
|
||||
--- dbmail-3.0.2.orig/src/dm_db.c 2013-07-20 01:47:11.000000000 -0500
|
||||
+++ dbmail-3.0.2/src/dm_db.c 2013-07-20 02:47:38.000000000 -0500
|
||||
|
|
49
net-mail/dbmail/files/3.2-pgsql-RETURNING.patch
Normal file
49
net-mail/dbmail/files/3.2-pgsql-RETURNING.patch
Normal file
|
@ -0,0 +1,49 @@
|
|||
diff -uriN dbmail-3.2.2.orig/src/dm_db.c dbmail-3.2.2/src/dm_db.c
|
||||
--- dbmail-3.2.2.orig/src/dm_db.c 2014-12-20 16:32:38.000000000 -0600
|
||||
+++ dbmail-3.2.2/src/dm_db.c 2015-04-03 17:32:19.000000000 -0600
|
||||
@@ -568,16 +568,43 @@
|
||||
|
||||
if (! db_result_next(r)) { /* ignore */ }
|
||||
|
||||
+ /* In PostgreSQL 9.1 lastRowId is _not_ always zero
|
||||
+ *
|
||||
+dbmail=# INSERT INTO dbmail_physmessage (internal_date) VALUES
|
||||
+dbmail-# (TO_TIMESTAMP('2013-07-20 07:22:34'::text, 'YYYY-MM-DD HH24:MI:SS')) RETURNING id;
|
||||
+ id
|
||||
+----------
|
||||
+ 29196224
|
||||
+(1 row)
|
||||
+
|
||||
+INSERT 0 1
|
||||
+dbmail=# INSERT INTO dbmail_messages(mailbox_idnr, physmessage_id, unique_id,recent_flag, status) VALUES (10993, 29196223, 'acc98da420bfe6d3dc2c707a9863001c', 1, 5) RETURNING message_idnr;
|
||||
+ message_idnr
|
||||
+--------------
|
||||
+ 36650725
|
||||
+(1 row)
|
||||
+
|
||||
+INSERT 82105867 1
|
||||
+ *
|
||||
+ * Connection_lastRowId(c) is returning the OID instead of
|
||||
+ * the message_idnr we are expecting.
|
||||
+ * However, we are expecting only one row to be returned so
|
||||
+ * we should always use db_result_get_u64(r, 0);
|
||||
+ */
|
||||
+ if (_db_params.db_driver == DM_DRIVER_POSTGRESQL) {
|
||||
+ id = db_result_get_u64(r, 0); // postgresql
|
||||
+ }
|
||||
+
|
||||
// lastRowId is always zero for pgsql tables without OIDs
|
||||
// or possibly for sqlite after calling executeQuery but
|
||||
// before calling db_result_next
|
||||
|
||||
- if ((id = (uint64_t )Connection_lastRowId(c)) == 0) { // mysql
|
||||
+ else if ((id = (uint64_t )Connection_lastRowId(c)) == 0) { // mysql
|
||||
// but if we're using 'RETURNING id' clauses on inserts
|
||||
// or we're using the sqlite backend, we can do this
|
||||
|
||||
if ((id = (uint64_t )Connection_lastRowId(c)) == 0) // sqlite
|
||||
- id = db_result_get_u64(r, 0); // postgresql
|
||||
+ id = db_result_get_u64(r, 0); // postgresql - should not get this far
|
||||
}
|
||||
assert(id);
|
||||
return id;
|
Loading…
Reference in a new issue