From a5ef64919a7a43380dd0008272490e5544bba9e2 Mon Sep 17 00:00:00 2001 From: Joshua Tauberer Date: Sat, 23 May 2015 13:56:48 -0400 Subject: [PATCH] ppa: build the dovecot-lucene package --- ppa/Makefile | 36 ++++- ppa/Vagrantfile | 1 + ppa/dovecot_lucene.diff | 292 +++++++++++++++++++++++++++++++++++----- 3 files changed, 293 insertions(+), 36 deletions(-) diff --git a/ppa/Makefile b/ppa/Makefile index ba53b92..23c2937 100755 --- a/ppa/Makefile +++ b/ppa/Makefile @@ -1,13 +1,13 @@ -all: +all: clean build_postgrey build_dovecot_lucene + +clean: # Clean. rm -rf /tmp/build # Prepare to build source packages. - sudo apt-get install -y git dpkg-dev devscripts dput mkdir -p /tmp/build - # POSTGREY - +build_postgrey: # Download our fork of the Debian postgrey package. git clone https://github.com/mail-in-a-box/postgrey /tmp/build/postgrey @@ -15,8 +15,6 @@ all: wget -O /tmp/build/postgrey_1.35.orig.tar.gz http://postgrey.schweikert.ch/pub/postgrey-1.35.tar.gz # Build the source package. - sudo apt-get build-dep -y postgrey - (cd /tmp/build/postgrey; dpkg-source -b .) (cd /tmp/build/postgrey; dpkg-buildpackage -S -us -uc -nc) # Sign the packages. @@ -28,3 +26,29 @@ all: # Clear the intermediate files. rm -rf /tmp/build/postgrey + # TESTING BINARY PACKAGE + #sudo apt-get build-dep -y postgrey + #(cd /tmp/build/postgrey; dpkg-buildpackage -us -uc -nc) + +build_dovecot_lucene: + # Get the upstream source. + (cd /tmp/build; apt-get source dovecot) + + # Patch it so that we build dovecot-lucene (and nothing else). + patch -p1 -d /tmp/build/dovecot-2.2.9 < dovecot_lucene.diff + + # Build the source package. + (cd /tmp/build/dovecot-2.2.9; dpkg-buildpackage -S -us -uc -nc) + + # Sign the packages. + #debsign /tmp/build/dovecot_2.2.9-1ubuntu2.1_amd64.changes + + # Upload it. + #dput ppa:mail-in-a-box/ppa /tmp/build/dovecot_2.2.9-1ubuntu2.1_amd64.changes + + # TESTING BINARY PACKAGE + # Install build dependencies and build dependencies we've added in our patch, + # and then build the binary package. + #sudo apt-get build-dep -y dovecot + #sudo apt-get install libclucene-dev liblzma-dev libexttextcat-dev libstemmer-dev + #(cd /tmp/build/dovecot-2.2.9; dpkg-buildpackage -us -uc -nc) diff --git a/ppa/Vagrantfile b/ppa/Vagrantfile index 34cc406..7d839b1 100644 --- a/ppa/Vagrantfile +++ b/ppa/Vagrantfile @@ -7,5 +7,6 @@ Vagrant.configure("2") do |config| config.vm.provision :shell, :inline => <<-SH sudo apt-get update + sudo apt-get install -y git dpkg-dev devscripts dput SH end diff --git a/ppa/dovecot_lucene.diff b/ppa/dovecot_lucene.diff index 08ebce3..e358295 100644 --- a/ppa/dovecot_lucene.diff +++ b/ppa/dovecot_lucene.diff @@ -1,62 +1,294 @@ --- a/debian/control +++ b/debian/control -@@ -4,7 +4,7 @@ - Maintainer: Ubuntu Developers - XSBC-Original-Maintainer: Dovecot Maintainers - Uploaders: Jaldhar H. Vyas , Fabio Tranchitella , Joel Johnson , Marco Nenciarini +@@ -1,210 +1,22 @@ + Source: dovecot + Section: mail + Priority: optional +-Maintainer: Ubuntu Developers +-XSBC-Original-Maintainer: Dovecot Maintainers +-Uploaders: Jaldhar H. Vyas , Fabio Tranchitella , Joel Johnson , Marco Nenciarini -Build-Depends: debhelper (>= 7.2.3~), dpkg-dev (>= 1.16.1), pkg-config, libssl-dev, libpam0g-dev, libldap2-dev, libpq-dev, libmysqlclient-dev, libsqlite3-dev, libsasl2-dev, zlib1g-dev, libkrb5-dev, drac-dev (>= 1.12-5), libbz2-dev, libdb-dev, libcurl4-gnutls-dev, libexpat-dev, libwrap0-dev, dh-systemd, po-debconf, lsb-release, hardening-wrapper, dh-autoreconf, autotools-dev ++Maintainer: Joshua Tauberer ++XSBC-Original-Maintainer: Ubuntu Developers +Build-Depends: debhelper (>= 7.2.3~), dpkg-dev (>= 1.16.1), pkg-config, libssl-dev, libpam0g-dev, libldap2-dev, libpq-dev, libmysqlclient-dev, libsqlite3-dev, libsasl2-dev, zlib1g-dev, libkrb5-dev, drac-dev (>= 1.12-5), libbz2-dev, libdb-dev, libcurl4-gnutls-dev, libexpat-dev, libwrap0-dev, dh-systemd, po-debconf, lsb-release, libclucene-dev (>= 2.3), liblzma-dev, libexttextcat-dev, libstemmer-dev, hardening-wrapper, dh-autoreconf, autotools-dev Standards-Version: 3.9.4 Homepage: http://dovecot.org/ Vcs-Git: git://git.debian.org/git/collab-maint/dovecot.git -@@ -13,7 +13,7 @@ - Package: dovecot-core - Architecture: any - Depends: ${shlibs:Depends}, ${misc:Depends}, libpam-runtime (>= 0.76-13.1), openssl, adduser, ucf (>= 2.0020), ssl-cert (>= 1.0-11ubuntu1), lsb-base (>= 3.2-12ubuntu3) + Vcs-Browser: http://git.debian.org/?p=collab-maint/dovecot.git + +-Package: dovecot-core +-Architecture: any +-Depends: ${shlibs:Depends}, ${misc:Depends}, libpam-runtime (>= 0.76-13.1), openssl, adduser, ucf (>= 2.0020), ssl-cert (>= 1.0-11ubuntu1), lsb-base (>= 3.2-12ubuntu3) -Suggests: ntp, dovecot-gssapi, dovecot-sieve, dovecot-pgsql, dovecot-mysql, dovecot-sqlite, dovecot-ldap, dovecot-imapd, dovecot-pop3d, dovecot-lmtpd, dovecot-managesieved, dovecot-solr, ufw -+Suggests: ntp, dovecot-gssapi, dovecot-sieve, dovecot-pgsql, dovecot-mysql, dovecot-sqlite, dovecot-ldap, dovecot-imapd, dovecot-pop3d, dovecot-lmtpd, dovecot-managesieved, dovecot-solr, dovecot-lucene, ufw - Recommends: ntpdate - Provides: dovecot-common - Replaces: dovecot-common (<< 1:2.0.14-2~), mailavenger (<< 0.8.1-4) -@@ -180,6 +180,18 @@ - . - This package provides Solr full text search support for Dovecot. - +-Recommends: ntpdate +-Provides: dovecot-common +-Replaces: dovecot-common (<< 1:2.0.14-2~), mailavenger (<< 0.8.1-4) +-Breaks: dovecot-common (<< 1:2.0.14-2~), mailavenger (<< 0.8.1-4) +-Description: secure POP3/IMAP server - core files +- Dovecot is a mail server whose major goals are security and extreme +- reliability. It tries very hard to handle all error conditions and verify +- that all data is valid, making it nearly impossible to crash. It supports +- mbox/Maildir and its own dbox/mdbox formats, and should also be pretty +- fast, extensible, and portable. +- . +- This package contains the Dovecot main server and its command line utility. +- +-Package: dovecot-dev +-Architecture: any +-Depends: ${shlibs:Depends}, ${misc:Depends}, dovecot-core (= ${binary:Version}) +-Replaces: dovecot-common (<< 1:2.0.14-2~) +-Breaks: dovecot-common (<< 1:2.0.14-2~) +-Description: secure POP3/IMAP server - header files +- Dovecot is a mail server whose major goals are security and extreme +- reliability. It tries very hard to handle all error conditions and verify +- that all data is valid, making it nearly impossible to crash. It supports +- mbox/Maildir and its own dbox/mdbox formats, and should also be pretty +- fast, extensible, and portable. +- . +- This package contains header files needed to compile plugins for the Dovecot +- mail server. +- +-Package: dovecot-imapd +-Architecture: any +-Depends: ${shlibs:Depends}, ${misc:Depends}, dovecot-core (= ${binary:Version}), ucf (>= 2.0020) +-Provides: imap-server +-Description: secure POP3/IMAP server - IMAP daemon +- Dovecot is a mail server whose major goals are security and extreme +- reliability. It tries very hard to handle all error conditions and verify +- that all data is valid, making it nearly impossible to crash. It supports +- mbox/Maildir and its own dbox/mdbox formats, and should also be pretty +- fast, extensible, and portable. +- . +- This package contains the Dovecot IMAP server. +- +-Package: dovecot-pop3d +-Architecture: any +-Depends: ${shlibs:Depends}, ${misc:Depends}, dovecot-core (= ${binary:Version}), ucf (>= 2.0020) +-Provides: pop3-server +-Description: secure POP3/IMAP server - POP3 daemon +- Dovecot is a mail server whose major goals are security and extreme +- reliability. It tries very hard to handle all error conditions and verify +- that all data is valid, making it nearly impossible to crash. It supports +- mbox/Maildir and its own dbox/mdbox formats, and should also be pretty +- fast, extensible, and portable. +- . +- This package contains the Dovecot POP3 server. +- +-Package: dovecot-lmtpd +-Architecture: any +-Depends: ${shlibs:Depends}, ${misc:Depends}, dovecot-core (= ${binary:Version}), ucf (>= 2.0020) +-Replaces: dovecot-common (<< 1:2.0.14-2~) +-Breaks: dovecot-common (<< 1:2.0.14-2~) +-Description: secure POP3/IMAP server - LMTP server +- Dovecot is a mail server whose major goals are security and extreme +- reliability. It tries very hard to handle all error conditions and verify +- that all data is valid, making it nearly impossible to crash. It supports +- mbox/Maildir and its own dbox/mdbox formats, and should also be pretty +- fast, extensible, and portable. +- . +- This package contains the Dovecot LMTP server. +- +-Package: dovecot-managesieved +-Architecture: any +-Depends: ${shlibs:Depends}, ${misc:Depends}, dovecot-core (= ${binary:Version}), dovecot-sieve (= ${binary:Version}), ucf (>= 2.0020) +-Replaces: dovecot-common (<< 1:2.0.14-2~) +-Breaks: dovecot-common (<< 1:2.0.14-2~) +-Description: secure POP3/IMAP server - ManageSieve server +- Dovecot is a mail server whose major goals are security and extreme +- reliability. It tries very hard to handle all error conditions and verify +- that all data is valid, making it nearly impossible to crash. It supports +- mbox/Maildir and its own dbox/mdbox formats, and should also be pretty +- fast, extensible, and portable. +- . +- This package contains the Dovecot ManageSieve server. +- +-Package: dovecot-pgsql +-Architecture: any +-Depends: ${shlibs:Depends}, ${misc:Depends}, dovecot-core (= ${binary:Version}) +-Description: secure POP3/IMAP server - PostgreSQL support +- Dovecot is a mail server whose major goals are security and extreme +- reliability. It tries very hard to handle all error conditions and verify +- that all data is valid, making it nearly impossible to crash. It supports +- mbox/Maildir and its own dbox/mdbox formats, and should also be pretty +- fast, extensible, and portable. +- . +- This package provides PostgreSQL support for Dovecot. +- +-Package: dovecot-mysql +-Architecture: any +-Depends: ${shlibs:Depends}, ${misc:Depends}, dovecot-core (= ${binary:Version}) +-Description: secure POP3/IMAP server - MySQL support +- Dovecot is a mail server whose major goals are security and extreme +- reliability. It tries very hard to handle all error conditions and verify +- that all data is valid, making it nearly impossible to crash. It supports +- mbox/Maildir and its own dbox/mdbox formats, and should also be pretty +- fast, extensible, and portable. +- . +- This package provides MySQL support for Dovecot. +- +-Package: dovecot-sqlite +-Architecture: any +-Depends: ${shlibs:Depends}, ${misc:Depends}, dovecot-core (= ${binary:Version}) +-Description: secure POP3/IMAP server - SQLite support +- Dovecot is a mail server whose major goals are security and extreme +- reliability. It tries very hard to handle all error conditions and verify +- that all data is valid, making it nearly impossible to crash. It supports +- mbox/Maildir and its own dbox/mdbox formats, and should also be pretty +- fast, extensible, and portable. +- . +- This package provides SQLite support for Dovecot. +- +-Package: dovecot-ldap +-Architecture: any +-Depends: ${shlibs:Depends}, ${misc:Depends}, dovecot-core (= ${binary:Version}), ucf (>= 2.0020) +-Description: secure POP3/IMAP server - LDAP support +- Dovecot is a mail server whose major goals are security and extreme +- reliability. It tries very hard to handle all error conditions and verify +- that all data is valid, making it nearly impossible to crash. It supports +- mbox/Maildir and its own dbox/mdbox formats, and should also be pretty +- fast, extensible, and portable. +- . +- This package provides LDAP support for Dovecot. +- +-Package: dovecot-gssapi +Package: dovecot-lucene -+Architecture: any -+Depends: ${shlibs:Depends}, ${misc:Depends}, dovecot-core (= ${binary:Version}) + Architecture: any + Depends: ${shlibs:Depends}, ${misc:Depends}, dovecot-core (= ${binary:Version}) +-Description: secure POP3/IMAP server - GSSAPI support +Description: secure POP3/IMAP server - Lucene support -+ Dovecot is a mail server whose major goals are security and extreme -+ reliability. It tries very hard to handle all error conditions and verify -+ that all data is valid, making it nearly impossible to crash. It supports -+ mbox/Maildir and its own dbox/mdbox formats, and should also be pretty -+ fast, extensible, and portable. -+ . + Dovecot is a mail server whose major goals are security and extreme + reliability. It tries very hard to handle all error conditions and verify + that all data is valid, making it nearly impossible to crash. It supports + mbox/Maildir and its own dbox/mdbox formats, and should also be pretty + fast, extensible, and portable. + . +- This package provides GSSAPI authentication support for Dovecot. +- +-Package: dovecot-sieve +-Architecture: any +-Depends: ${shlibs:Depends}, ${misc:Depends}, dovecot-core (= ${binary:Version}), ucf (>= 2.0020) +-Description: secure POP3/IMAP server - Sieve filters support +- Dovecot is a mail server whose major goals are security and extreme +- reliability. It tries very hard to handle all error conditions and verify +- that all data is valid, making it nearly impossible to crash. It supports +- mbox/Maildir and its own dbox/mdbox formats, and should also be pretty +- fast, extensible, and portable. +- . +- This package provides Sieve filters support for Dovecot. +- +-Package: dovecot-solr +-Architecture: any +-Depends: ${shlibs:Depends}, ${misc:Depends}, dovecot-core (= ${binary:Version}) +-Description: secure POP3/IMAP server - Solr support +- Dovecot is a mail server whose major goals are security and extreme +- reliability. It tries very hard to handle all error conditions and verify +- that all data is valid, making it nearly impossible to crash. It supports +- mbox/Maildir and its own dbox/mdbox formats, and should also be pretty +- fast, extensible, and portable. +- . +- This package provides Solr full text search support for Dovecot. +- +-Package: dovecot-dbg +-Section: debug +-Priority: extra +-Architecture: any +-Depends: ${misc:Depends}, dovecot-core (= ${binary:Version}) +-Description: secure POP3/IMAP server - debug symbols +- Dovecot is a mail server whose major goals are security and extreme +- reliability. It tries very hard to handle all error conditions and verify +- that all data is valid, making it nearly impossible to crash. It supports +- mbox/Maildir and its own dbox/mdbox formats, and should also be pretty +- fast, extensible, and portable. +- . +- This package contains debug symbols for Dovecot. +- +-Package: mail-stack-delivery +-Architecture: all +-Depends: dovecot-core, dovecot-imapd, dovecot-pop3d, dovecot-managesieved, +- postfix, ${misc:Depends} +-Replaces: dovecot-postfix (<< 1:1.2.12-0ubuntu1~) +-Description: mail server delivery agent stack provided by Ubuntu server team +- Ubuntu's mail stack provides fully operational delivery with +- safe defaults and additional options. Out of the box it supports IMAP, +- POP3 and SMTP services with SASL authentication and Maildir as default +- storage engine. +- . +- This package contains configuration files for dovecot. +- . +- This package modifies postfix's configuration to integrate with dovecot + This package provides Lucene full text search support for Dovecot. -+ - Package: dovecot-dbg - Section: debug - Priority: extra +diff --git a/debian/dovecot-lucene.links b/debian/dovecot-lucene.links +new file mode 100644 +index 0000000..6ffcbeb --- /dev/null +++ b/debian/dovecot-lucene.links @@ -0,0 +1 @@ +/usr/share/bug/dovecot-core /usr/share/bug/dovecot-lucene +diff --git a/debian/dovecot-lucene.lintian-overrides b/debian/dovecot-lucene.lintian-overrides +new file mode 100644 +index 0000000..60d90fd --- /dev/null +++ b/debian/dovecot-lucene.lintian-overrides @@ -0,0 +1,2 @@ +dovecot-lucene: hardening-no-fortify-functions usr/lib/dovecot/modules/lib21_fts_lucene_plugin.so + +diff --git a/debian/dovecot-lucene.substvars b/debian/dovecot-lucene.substvars +new file mode 100644 +index 0000000..ed54f36 +--- /dev/null ++++ b/debian/dovecot-lucene.substvars +@@ -0,0 +1,2 @@ ++shlibs:Depends=libc6 (>= 2.4), libclucene-core1 (>= 2.3.3.4), libgcc1 (>= 1:4.1.1), libstdc++6 (>= 4.1.1), libstemmer0d (>= 0+svn527) ++misc:Depends= +diff --git a/debian/dovecot-lucene.triggers b/debian/dovecot-lucene.triggers +new file mode 100644 +index 0000000..3d933a5 --- /dev/null +++ b/debian/dovecot-lucene.triggers @@ -0,0 +1 @@ +activate register-dovecot-plugin +diff --git a/debian/rules b/debian/rules +index dcee2f6..9533a4a 100755 --- a/debian/rules +++ b/debian/rules -@@ -40,6 +40,7 @@ +@@ -40,6 +40,7 @@ config-stamp: configure --with-solr \ --with-ioloop=best \ --with-libwrap \ + --with-lucene \ --host=$(DEB_HOST_GNU_TYPE) \ --build=$(DEB_BUILD_GNU_TYPE) \ - --prefix=/usr \ \ No newline at end of file + --prefix=/usr \ +@@ -95,6 +96,10 @@ install: build + dh_testroot + dh_clean -k + dh_installdirs ++ mkdir -p $(CURDIR)/debian/dovecot-lucene/usr/lib/dovecot/modules ++ mv $(CURDIR)/src/plugins/fts-lucene/.libs/* $(CURDIR)/debian/dovecot-lucene/usr/lib/dovecot/modules/ ++ ++rest_disabled_by_miab: + $(MAKE) install DESTDIR=$(CURDIR)/debian/dovecot-core + $(MAKE) -C $(PIGEONHOLE_DIR) install DESTDIR=$(CURDIR)/debian/dovecot-core + rm `find $(CURDIR)/debian -name '*.la'` +@@ -209,7 +214,7 @@ binary-arch: build install + dh_installdocs -a + dh_installexamples -a + dh_installpam -a +- mv $(CURDIR)/debian/dovecot-core/etc/pam.d/dovecot-core $(CURDIR)/debian/dovecot-core/etc/pam.d/dovecot ++ # mv $(CURDIR)/debian/dovecot-core/etc/pam.d/dovecot-core $(CURDIR)/debian/dovecot-core/etc/pam.d/dovecot + dh_systemd_enable + dh_installinit -pdovecot-core --name=dovecot + dh_systemd_start +@@ -220,10 +225,10 @@ binary-arch: build install + dh_lintian -a + dh_installchangelogs -a ChangeLog + dh_link -a +- dh_strip -a --dbg-package=dovecot-dbg ++ #dh_strip -a --dbg-package=dovecot-dbg + dh_compress -a + dh_fixperms -a +- chmod 0700 debian/dovecot-core/etc/dovecot/private ++ #chmod 0700 debian/dovecot-core/etc/dovecot/private + dh_makeshlibs -a -n + dh_installdeb -a + dh_shlibdeps -a