pkgsrc-WIP-changes archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Introducing draft package for cyrus-imapd30. From version 3 on, the Cyrus IMAP server also offers the option of serving calendars and address books via a CalDAV / CardDAV interface. The information is stored in special directories in the same location that is used for the emails. This makes Cyrus IMAP a self-contained groupware server.



Module Name:	pkgsrc-wip
Committed By:	Matthias Petermann <mp%petermann-it.de@localhost>
Pushed By:	mp
Date:		Sun Mar 8 14:15:53 2020 +0100
Changeset:	4e113b9223b70ba7ee0bece1d704058f3ffb2d93

Added Files:
	cyrus-imapd30/DEINSTALL
	cyrus-imapd30/DESCR
	cyrus-imapd30/MESSAGE
	cyrus-imapd30/Makefile
	cyrus-imapd30/PLIST
	cyrus-imapd30/TODO
	cyrus-imapd30/distinfo
	cyrus-imapd30/files/cyrus.sh
	cyrus-imapd30/files/imapd.conf
	cyrus-imapd30/options.mk
	cyrus-imapd30/patches/patch-ac
	cyrus-imapd30/patches/patch-ah
	cyrus-imapd30/patches/patch-ai
	cyrus-imapd30/patches/patch-am
	cyrus-imapd30/patches/patch-ao
	cyrus-imapd30/patches/patch-aq
	cyrus-imapd30/patches/patch-imap_mailbox.c

Log Message:
Introducing draft package for cyrus-imapd30. From version 3 on, the
Cyrus IMAP server also offers the option of serving calendars and
address books via a CalDAV / CardDAV interface. The information is
stored in special directories in the same location that is used for
the emails. This makes Cyrus IMAP a self-contained groupware server.

Done so far:

- created copy of mail/cyrus-imapd24 → wip/cyrus-imapd30
- cleared CVS versioning (netbsd$ tag) information from file headers
- make 3.0.13 source fetchable, adjusted distinfo
- updated DESCR

To see a diff of this commit:
https://wip.pkgsrc.org/cgi-bin/gitweb.cgi?p=pkgsrc-wip.git;a=commitdiff;h=4e113b9223b70ba7ee0bece1d704058f3ffb2d93

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

diffstat:
 cyrus-imapd30/DEINSTALL                    |  38 ++++++
 cyrus-imapd30/DESCR                        |  13 ++
 cyrus-imapd30/MESSAGE                      |  17 +++
 cyrus-imapd30/Makefile                     | 142 +++++++++++++++++++++
 cyrus-imapd30/PLIST                        | 190 +++++++++++++++++++++++++++++
 cyrus-imapd30/TODO                         |  22 ++++
 cyrus-imapd30/distinfo                     |  13 ++
 cyrus-imapd30/files/cyrus.sh               |  80 ++++++++++++
 cyrus-imapd30/files/imapd.conf             |  25 ++++
 cyrus-imapd30/options.mk                   | 118 ++++++++++++++++++
 cyrus-imapd30/patches/patch-ac             |  35 ++++++
 cyrus-imapd30/patches/patch-ah             |  13 ++
 cyrus-imapd30/patches/patch-ai             |  13 ++
 cyrus-imapd30/patches/patch-am             |  19 +++
 cyrus-imapd30/patches/patch-ao             |  17 +++
 cyrus-imapd30/patches/patch-aq             |  28 +++++
 cyrus-imapd30/patches/patch-imap_mailbox.c |  21 ++++
 17 files changed, 804 insertions(+)

diffs:
diff --git a/cyrus-imapd30/DEINSTALL b/cyrus-imapd30/DEINSTALL
new file mode 100644
index 0000000000..b4ba0a13e4
--- /dev/null
+++ b/cyrus-imapd30/DEINSTALL
@@ -0,0 +1,38 @@
+# $NetBSD: $
+
+IMAPDCONF=@IMAPDCONF@
+
+case ${STAGE} in
+DEINSTALL)
+	if [ -f ${IMAPDCONF} ]; then
+		IMAPDIRS=`
+			${AWK} '/configdirectory:/      { print $2 };	\
+				/partition-.*:/         { print $2 };	\
+				/sievedir:/             { print $2 }'	\
+				${IMAPDCONF} | ${SORT} -ur`
+		_IMAPDIRS=
+		for dir in ${IMAPDIRS}; do
+			${RMDIR} -p ${dir} 2>/dev/null || ${TRUE}
+			if [ -d ${dir} ]; then
+				_IMAPDIRS="${_IMAPDIRS} ${dir}"
+			fi
+		done
+		if [ -n "${_IMAPDIRS}" ]; then
+			${CAT} << EOF
+===========================================================================
+If you won't be using ${PKGNAME} any longer, you may want to remove
+the following directories:
+
+EOF
+			for dir in ${_IMAPDIRS}; do
+				if [ -d "${dir}" ]; then
+					${ECHO} "	${dir}"
+				fi
+			done
+                	${CAT} << EOF
+===========================================================================
+EOF
+		fi
+	fi
+	;;
+esac
diff --git a/cyrus-imapd30/DESCR b/cyrus-imapd30/DESCR
new file mode 100644
index 0000000000..5a06d94219
--- /dev/null
+++ b/cyrus-imapd30/DESCR
@@ -0,0 +1,13 @@
+IMAP (Internet Message Access Protocol) is an Internet standards-track
+protocol for accessing messages (mail, bboards, news, etc). The Cyrus
+IMAP server differs from other IMAP server implementations in that it
+is generally intended to be run on "sealed" servers, where normal users
+are not permitted to log in. The mailbox database is stored in parts of
+the filesystem that are private to the Cyrus IMAP system. All user
+access to mail is through the IMAP, POP3, or KPOP protocols.
+
+From version 3 on, the Cyrus IMAP server also offers the option of
+serving calendars and address books via a CalDAV / CardDAV interface.
+The information is stored in special directories in the same location
+that is used for the emails. This makes Cyrus IMAP a self-contained
+groupware server.
diff --git a/cyrus-imapd30/MESSAGE b/cyrus-imapd30/MESSAGE
new file mode 100644
index 0000000000..6e222f13a9
--- /dev/null
+++ b/cyrus-imapd30/MESSAGE
@@ -0,0 +1,17 @@
+===========================================================================
+$NetBSD: $
+
+Please refer to:
+
+	${PREFIX}/share/doc/cyrus-imapd/install.html
+
+for more detailed instructions on setting up the environment before
+starting the Cyrus IMAP server.  In particular, several services may
+need to be added to /etc/services.
+
+Anyone upgrading from an earlier version of the Cyrus IMAP server should
+read:
+
+	${PREFIX}/share/doc/cyrus-imapd/install-upgrade.html
+
+===========================================================================
diff --git a/cyrus-imapd30/Makefile b/cyrus-imapd30/Makefile
new file mode 100644
index 0000000000..f2d965b908
--- /dev/null
+++ b/cyrus-imapd30/Makefile
@@ -0,0 +1,142 @@
+# $NetBSD: $
+
+DISTNAME=	cyrus-imapd-3.0.13
+#PKGREVISION=	1
+CATEGORIES=	mail
+MASTER_SITES=	https://github.com/cyrusimap/cyrus-imapd/releases/download/${PKGNAME}/
+#MASTER_SITES=	${MASTER_SITE_GITHUB:=cyrusimap/}
+#GITHUB_TAG=     v${PKGVERSION_NOREV}
+
+MAINTAINER=	mp%petermann-it.de@localhost
+HOMEPAGE=	https://www.cyrusimap.org/
+COMMENT=	Cyrus IMAP server
+#LICENSE=	original-bsd # like license
+
+MAKE_JOBS_SAFE=	no
+
+USE_TOOLS+=		perl:run makedepend
+USE_PKGLOCALEDIR=	yes
+GNU_CONFIGURE=		yes
+PERL5_CONFIGURE=	no
+
+BUILD_DEFS+=		VARBASE
+
+CHECK_PORTABILITY_SKIP=	configure.lineno
+
+.include "../../mk/bsd.prefs.mk"
+
+# CYRUS_USER		username of the Cyrus administrator
+# CYRUS_GROUP		group of the Cyrus administrator
+#
+CYRUS_USER?=		cyrus
+CYRUS_GROUP?=		mail
+
+BUILD_DEFS+=		CYRUS_USER CYRUS_GROUP
+FILES_SUBST+=		CYRUS_USER=${CYRUS_USER}
+FILES_SUBST+=		CYRUS_GROUP=${CYRUS_GROUP}
+
+CONFIGURE_ARGS+=	--sysconfdir=${PKG_SYSCONFDIR}
+CONFIGURE_ARGS+=	--with-cyrus-user=${CYRUS_USER}
+CONFIGURE_ARGS+=	--with-cyrus-group=${CYRUS_GROUP}
+CONFIGURE_ARGS+=	--with-cyrus-prefix=${PREFIX}/cyrus
+CONFIGURE_ARGS+=	--with-pidfile=${VARBASE}/run/cyrus-master.pid
+CONFIGURE_ARGS+=	--with-openssl=${SSLBASE:Q}
+CONFIGURE_ARGS+=	--with-sasl=${BUILDLINK_PREFIX.cyrus-sasl}
+CONFIGURE_ARGS+=	--with-perl=${PERL5:Q}
+CONFIGURE_ARGS+=	--with-libwrap=${BUILDLINK_PREFIX.tcp_wrappers}
+CONFIGURE_ENV+=		ac_cv_lib_wrap_request_init=yes
+
+CONFIGURE_ARGS+=	--enable-idled
+CONFIGURE_ARGS+=	--enable-murder
+CONFIGURE_ARGS+=	--enable-nntp
+CONFIGURE_ARGS+=	--enable-replication
+
+CONFIGURE_ARGS+=	andrew_cv_runpath_switch=${COMPILER_RPATH_FLAG}
+
+.include "options.mk"
+
+MAKE_ENV+=		PERL=${PERL5:Q}
+
+HTMLDIR=		${PREFIX}/share/doc/cyrus-imapd
+EGDIR=			${PREFIX}/share/examples/cyrus-imapd
+CONF_FILES=		${EGDIR}/imapd.conf ${PKG_SYSCONFDIR}/imapd.conf
+CONF_FILES+=		${EGDIR}/normal.conf ${PKG_SYSCONFDIR}/cyrus.conf
+RCD_SCRIPTS=		cyrus
+FILES_SUBST+=		IMAPDCONF=${PKG_SYSCONFDIR}/imapd.conf
+
+REPLACE_PERL+=		tools/rehash
+
+SUBST_CLASSES+=		sh
+SUBST_STAGE.sh=		post-build
+SUBST_FILES.sh=		perl/imap/blib/script/cyradm
+SUBST_SED.sh+=		-e 's|^\#!.*|\#!/bin/sh|'
+
+PERL5_PACKLIST= \
+	auto/Cyrus/IMAP/.packlist			\
+	auto/Cyrus/SIEVE/managesieve/.packlist
+
+pre-build:
+	${RUN}${_ULIMIT_CMD} \
+	cd ${WRKSRC} && ${BUILD_MAKE_CMD} depend
+
+.include "../../lang/perl5/module.mk"
+BUILDLINK_API_DEPENDS.cyrus-sasl+=	cyrus-sasl>=2.1.17
+.include "../../security/cyrus-sasl/buildlink3.mk"
+.include "../../security/openssl/buildlink3.mk"
+.include "../../security/tcp_wrappers/buildlink3.mk"
+
+# Only imap/mupdate needs to be build with pthreads support, so selectively
+# enable it via patches for just that one program.
+#
+.include "../../mk/pthread.buildlink3.mk"
+
+# Change references of some manpages from foo.8 to cyrus-foo.8 to avoid
+# manpage conflicts with other packages.  Also change references to
+# "/etc/{cyrus,imapd}.conf" into "${PKG_SYSCONFDIR}/{cyrus,imapd}.conf".
+#
+post-patch:
+	cd ${WRKSRC}/man;						\
+	set --	deliver 8 fetchnews 8 idled 8 imapd 8 lmtpd 8 master 8	\
+		nntpd 8	notifyd 8 pop3d 8 quota 8;			\
+	while [ $$# -gt 0 ]; do						\
+		man=$$1.$$2;						\
+		for file in Makefile.in *.[0-9]; do			\
+			sed	-e "s|\(\$$(srcdir)/\)\($$man\)|\1cyrus-\2|g" \
+				-e "s|\(\\\fB\)\($$1($$2)\\\fR\)|\1cyrus-\2|g" \
+				$$file > $$file.fixed;			\
+			mv -f $$file.fixed $$file;			\
+		done;							\
+		if [ -f $$man ]; then					\
+			mv $$man cyrus-$$man;			\
+		fi;							\
+		shift 2;						\
+	done
+	find ${WRKSRC} -type f -print |					\
+	xargs -n 1 ${GREP} -l -e /etc/imapd\.conf -e /etc/cyrus\.conf | \
+	while read file; do						\
+		sed	-e "s|/etc/\(cyrus\.conf\)|${PKG_SYSCONFDIR}/\1|g" \
+			-e "s|/etc/\(imapd\.conf\)|${PKG_SYSCONFDIR}/\1|g" \
+			$${file} > $${file}.fixed;			\
+		mv -f $${file}.fixed $${file};			\
+	done
+
+post-install:
+	${INSTALL_SCRIPT} ${WRKSRC}/tools/masssievec ${DESTDIR}${PREFIX}/cyrus/bin
+	${INSTALL_SCRIPT} ${WRKSRC}/tools/migrate-metadata ${DESTDIR}${PREFIX}/cyrus/bin
+	${INSTALL_SCRIPT} ${WRKSRC}/tools/mkimap ${DESTDIR}${PREFIX}/cyrus/bin
+	${INSTALL_SCRIPT} ${WRKSRC}/tools/mknewsgroups ${DESTDIR}${PREFIX}/cyrus/bin
+	${INSTALL_SCRIPT} ${WRKSRC}/tools/translatesieve ${DESTDIR}${PREFIX}/cyrus/bin
+	${INSTALL_SCRIPT} ${WRKSRC}/tools/rehash ${DESTDIR}${PREFIX}/cyrus/bin
+	${INSTALL_DATA_DIR} ${DESTDIR}${EGDIR}
+	${INSTALL_DATA} ${FILESDIR}/imapd.conf ${DESTDIR}${EGDIR}
+	cd ${WRKSRC}/master/conf; for file in *.conf; do		\
+		${INSTALL_DATA} $${file} ${DESTDIR}${EGDIR};		\
+	done
+	${INSTALL_DATA_DIR} ${DESTDIR}${HTMLDIR}
+	cd ${WRKSRC}/doc; for file in *.html cyrusv2.mc; do		\
+		${INSTALL_DATA} $${file} ${DESTDIR}${HTMLDIR};		\
+	done
+
+.include "../../devel/zlib/buildlink3.mk"
+CONFIGURE_ARGS+=	--with-zlib=${BUILDLINK_PREFIX.zlib}
+.include "../../mk/bsd.pkg.mk"
diff --git a/cyrus-imapd30/PLIST b/cyrus-imapd30/PLIST
new file mode 100644
index 0000000000..143b5ae81b
--- /dev/null
+++ b/cyrus-imapd30/PLIST
@@ -0,0 +1,190 @@
+@comment $NetBSD: $
+bin/imtest
+bin/installsieve
+bin/lmtptest
+bin/mupdatetest
+bin/nntptest
+bin/pop3test
+bin/sieveshell
+bin/sivtest
+bin/smtptest
+bin/synctest
+cyrus/bin/arbitron
+cyrus/bin/chk_cyrus
+cyrus/bin/ctl_cyrusdb
+cyrus/bin/ctl_deliver
+cyrus/bin/ctl_mboxlist
+cyrus/bin/cvt_cyrusdb
+cyrus/bin/cyr_dbtool
+cyrus/bin/cyr_df
+cyrus/bin/cyr_expire
+cyrus/bin/cyr_sequence
+cyrus/bin/cyr_synclog
+cyrus/bin/cyr_userseen
+cyrus/bin/cyrdump
+cyrus/bin/deliver
+cyrus/bin/fetchnews
+cyrus/bin/fud
+cyrus/bin/idled
+cyrus/bin/imapd
+cyrus/bin/ipurge
+cyrus/bin/lmtpd
+cyrus/bin/lmtpproxyd
+cyrus/bin/masssievec
+cyrus/bin/master
+cyrus/bin/mbexamine
+cyrus/bin/mbpath
+cyrus/bin/migrate-metadata
+cyrus/bin/mkimap
+cyrus/bin/mknewsgroups
+cyrus/bin/mupdate
+cyrus/bin/nntpd
+cyrus/bin/notifyd
+cyrus/bin/pop3d
+cyrus/bin/pop3proxyd
+cyrus/bin/proxyd
+${PLIST.ldap}cyrus/bin/ptdump
+${PLIST.ldap}cyrus/bin/ptexpire
+${PLIST.ldap}cyrus/bin/ptloader
+cyrus/bin/quota
+cyrus/bin/reconstruct
+cyrus/bin/rehash
+cyrus/bin/sievec
+cyrus/bin/sieved
+cyrus/bin/smmapd
+cyrus/bin/squatter
+cyrus/bin/sync_client
+cyrus/bin/sync_reset
+cyrus/bin/sync_server
+cyrus/bin/timsieved
+cyrus/bin/tls_prune
+cyrus/bin/translatesieve
+cyrus/bin/unexpunge
+include/cyrus/acl.h
+include/cyrus/assert.h
+include/cyrus/auth.h
+include/cyrus/bsearch.h
+include/cyrus/byteorder64.h
+include/cyrus/charset.h
+include/cyrus/crc32.h
+include/cyrus/cyr_lock.h
+include/cyrus/cyrusdb.h
+include/cyrus/glob.h
+include/cyrus/gmtoff.h
+include/cyrus/hash.h
+include/cyrus/imapopts.h
+include/cyrus/imapurl.h
+include/cyrus/imclient.h
+include/cyrus/imparse.h
+include/cyrus/iptostring.h
+include/cyrus/libconfig.h
+include/cyrus/libcyr_cfg.h
+include/cyrus/lsort.h
+include/cyrus/map.h
+include/cyrus/md5.h
+include/cyrus/mkgmtime.h
+include/cyrus/mpool.h
+include/cyrus/nonblock.h
+include/cyrus/parseaddr.h
+include/cyrus/prot.h
+include/cyrus/retry.h
+include/cyrus/rfc822date.h
+include/cyrus/signals.h
+include/cyrus/strarray.h
+include/cyrus/strhash.h
+include/cyrus/stristr.h
+include/cyrus/sysexits.h
+include/cyrus/util.h
+include/cyrus/xmalloc.h
+include/cyrus/xstrlcat.h
+include/cyrus/xstrlcpy.h
+lib/libcyrus.a
+lib/libcyrus_min.a
+man/man1/imtest.1
+man/man1/installsieve.1
+man/man1/lmtptest.1
+man/man1/mupdatetest.1
+man/man1/nntptest.1
+man/man1/pop3test.1
+man/man1/sieveshell.1
+man/man1/sivtest.1
+man/man1/smtptest.1
+man/man3/imclient.3
+man/man5/cyrus.conf.5
+man/man5/imapd.conf.5
+man/man5/krb.equiv.5
+man/man8/arbitron.8
+man/man8/chk_cyrus.8
+man/man8/ctl_cyrusdb.8
+man/man8/ctl_deliver.8
+man/man8/ctl_mboxlist.8
+man/man8/cvt_cyrusdb.8
+man/man8/cyr_dbtool.8
+man/man8/cyr_df.8
+man/man8/cyr_expire.8
+man/man8/cyr_synclog.8
+man/man8/cyrus-deliver.8
+man/man8/cyrus-fetchnews.8
+man/man8/cyrus-idled.8
+man/man8/cyrus-imapd.8
+man/man8/cyrus-lmtpd.8
+man/man8/cyrus-master.8
+man/man8/cyrus-nntpd.8
+man/man8/cyrus-notifyd.8
+man/man8/cyrus-pop3d.8
+man/man8/cyrus-quota.8
+man/man8/fud.8
+man/man8/ipurge.8
+man/man8/mbexamine.8
+man/man8/mbpath.8
+man/man8/reconstruct.8
+man/man8/rmnews.8
+man/man8/smmapd.8
+man/man8/squatter.8
+man/man8/sync_client.8
+man/man8/sync_reset.8
+man/man8/sync_server.8
+man/man8/syncnews.8
+man/man8/timsieved.8
+man/man8/tls_prune.8
+man/man8/unexpunge.8
+share/doc/cyrus-imapd/ag.html
+share/doc/cyrus-imapd/altnamespace.html
+share/doc/cyrus-imapd/anoncvs.html
+share/doc/cyrus-imapd/bugs.html
+share/doc/cyrus-imapd/changes.html
+share/doc/cyrus-imapd/cyrusv2.mc
+share/doc/cyrus-imapd/faq.html
+share/doc/cyrus-imapd/feedback.html
+share/doc/cyrus-imapd/index.html
+share/doc/cyrus-imapd/install-admin-mb.html
+share/doc/cyrus-imapd/install-auth.html
+share/doc/cyrus-imapd/install-compile.html
+share/doc/cyrus-imapd/install-configure.html
+share/doc/cyrus-imapd/install-murder.html
+share/doc/cyrus-imapd/install-netnews.html
+share/doc/cyrus-imapd/install-perf.html
+share/doc/cyrus-imapd/install-prereq.html
+share/doc/cyrus-imapd/install-replication.html
+share/doc/cyrus-imapd/install-sieve.html
+share/doc/cyrus-imapd/install-snmpmon.html
+share/doc/cyrus-imapd/install-testing.html
+share/doc/cyrus-imapd/install-upgrade.html
+share/doc/cyrus-imapd/install-virtdomains.html
+share/doc/cyrus-imapd/install.html
+share/doc/cyrus-imapd/mailing-list.html
+share/doc/cyrus-imapd/man.html
+share/doc/cyrus-imapd/notes.html
+share/doc/cyrus-imapd/os.html
+share/doc/cyrus-imapd/overview.html
+share/doc/cyrus-imapd/questions.html
+share/doc/cyrus-imapd/readme.html
+share/doc/cyrus-imapd/sieve-protocol.html
+share/doc/cyrus-imapd/sieve.html
+share/doc/cyrus-imapd/specs.html
+share/examples/cyrus-imapd/cmu-backend.conf
+share/examples/cyrus-imapd/cmu-frontend.conf
+share/examples/cyrus-imapd/imapd.conf
+share/examples/cyrus-imapd/normal.conf
+share/examples/cyrus-imapd/prefork.conf
+share/examples/cyrus-imapd/small.conf
diff --git a/cyrus-imapd30/TODO b/cyrus-imapd30/TODO
new file mode 100644
index 0000000000..17bfa68ef0
--- /dev/null
+++ b/cyrus-imapd30/TODO
@@ -0,0 +1,22 @@
+Warning: this pkg is currently under construction. It was created as a
+copy of mail/cyrus-imap24. It cannot currently be expected that it can
+be built, let alone that it will work as expected. I plan to keep the
+pkg up to date here so that the progress is transparent. I am open to
+suggestions or active support.
+
+Next steps:
+
+1) Make it build the most basic way
+
+2) Evaluation of the patches of the existing Cyrus-imap-pkgs and
+   their applicability for cyrus-imap 3
+
+3) Possibly create further patches for cyrus-imap 3 (especially with
+   regard to the newly added functions CalDAV / CardDAV), if necessary
+
+4) Review and adjustment of scripts / provided files (configuration
+   examples, man pages)
+
+5) Fine-tuning of the build
+
+For questions, tips or offers of help you can contact me at mp%petermann-it.de@localhost
diff --git a/cyrus-imapd30/distinfo b/cyrus-imapd30/distinfo
new file mode 100644
index 0000000000..4aff170fa9
--- /dev/null
+++ b/cyrus-imapd30/distinfo
@@ -0,0 +1,13 @@
+$NetBSD: $
+
+SHA1 (cyrus-imapd-3.0.13.tar.gz) = 69d29e09ae4e4f3c8ae0c49a1024b7ec4dffbf57
+RMD160 (cyrus-imapd-3.0.13.tar.gz) = b789c903620e83160fce4de3e06bbe0c842f7957
+SHA512 (cyrus-imapd-3.0.13.tar.gz) = 5cd066916797efb975cdb97720f65edc72d3fe82afbd78a26aa8369d95ae4ca09c0593dd4bec5521156c64ea38af7a13065f3b35447a76267dec93feb0ac6ac6
+Size (cyrus-imapd-3.0.13.tar.gz) = 10840005 bytes
+SHA1 (patch-ac) = c3b0f801b17bad99a2d84c4885aadbdfca2c28ce
+SHA1 (patch-ah) = 4bc62dfdeafdca83ddac02aff0ffd05db28fe0b9
+SHA1 (patch-ai) = 9167678988f411479d187b232eb10ad8622b4151
+SHA1 (patch-am) = e100e13d5137116f5bd7674e954031b2615e5ab1
+SHA1 (patch-ao) = c01c9d32b4d73cbc32d2ad8bfca8b8b021ca2474
+SHA1 (patch-aq) = 101f5d253dae303f187e15eca28aa687f846ba6b
+SHA1 (patch-imap_mailbox.c) = 9a000763a153863f6c40f8939fe19eab41973cea
diff --git a/cyrus-imapd30/files/cyrus.sh b/cyrus-imapd30/files/cyrus.sh
new file mode 100644
index 0000000000..f5acdfb10f
--- /dev/null
+++ b/cyrus-imapd30/files/cyrus.sh
@@ -0,0 +1,80 @@
+#!@RCD_SCRIPTS_SHELL@
+#
+# $NetBSD: $
+#
+# PROVIDE: cyrus
+# REQUIRE: DAEMON
+# BEFORE: mail
+# KEYWORD: shutdown
+#
+# To start cyrus-imapd at startup, copy this script to /etc/rc.d and set
+# cyrus=YES in /etc/rc.conf.
+
+if [ -f /etc/rc.subr ]; then
+	. /etc/rc.subr
+fi
+
+rcd_dir=`@DIRNAME@ $0`
+
+name="cyrus"
+rcvar=$name
+command="@PREFIX@/cyrus/bin/master"
+command_args="-d"
+pidfile="@VARBASE@/run/cyrus-master.pid"
+sig_stop=QUIT
+required_files="@PKG_SYSCONFDIR@/cyrus.conf @IMAPDCONF@"
+extra_commands="mkimap reload"
+
+mkimap_cmd="cyrus_mkimap"
+start_precmd="cyrus_prestart"
+
+cyrus_prestart()
+{
+	# Check to see if "configdirectory" is present before we start
+	# the Cyrus IMAP server.  Otherwise, we run mkimap to generate
+	# the necessary directories.
+	#
+	if [ -f @IMAPDCONF@ ]; then
+		configdir=`						\
+			@AWK@ '/^configdirectory:/ { print $2; exit };'	\
+			      @IMAPDCONF@				\
+		`
+		if [ -z "$configdir" ]; then
+			@ECHO@ "@IMAPDCONF@ missing 'configdirectory' setting"
+			exit 1
+		fi
+		if [ ! -d "$configdir" ]; then
+			$rcd_dir/cyrus mkimap
+		fi
+	fi
+}
+
+cyrus_mkimap()
+{
+	# Generate the prerequisite directory structure for Cyrus IMAP.
+	if [ -f @IMAPDCONF@ ]; then
+		@AWK@ '/^configdirectory:/	{ print $2 };		\
+		       /^partition-.*:/		{ print $2 };		\
+		       /^sievedir:/		{ print $2 }'		\
+		      @IMAPDCONF@ |					\
+		while read dir; do
+			if [ ! -d "$dir" ]; then
+				@MKDIR@ "$dir"
+				@CHMOD@ 750 "$dir"
+				@CHOWN@ @CYRUS_USER@ "$dir"
+				@CHGRP@ @CYRUS_GROUP@ "$dir"
+			fi
+		done
+		@SU@ -m @CYRUS_USER@ -c "@PREFIX@/cyrus/bin/mkimap"
+	fi
+}
+
+if [ -f /etc/rc.subr -a -f /etc/rc.conf \
+     -a -d /etc/rc.d -a -f /etc/rc.d/DAEMON ]; then
+	load_rc_config $name
+	run_rc_command "$1"
+else
+	@ECHO@ -n " ${name}"
+	eval ${start_precmd}
+	${command} ${cyrus_flags} ${command_args}
+fi
diff --git a/cyrus-imapd30/files/imapd.conf b/cyrus-imapd30/files/imapd.conf
new file mode 100644
index 0000000000..aba0e6b82a
--- /dev/null
+++ b/cyrus-imapd30/files/imapd.conf
@@ -0,0 +1,25 @@
+# $NetBSD: $
+#
+# Cyrus IMAP server configuration file.  Refer to imapd.conf(5) for
+# more options.
+
+configdirectory: /var/imap
+partition-default: /var/spool/imap
+sieveusehomedir: false
+sievedir: /var/sieve
+hashimapspool: false
+
+admins: cyrus
+
+# If use the saslauthd daemon to verify plaintext passwords, please ensure that
+# the saslauthd daemon is running before trying to authenticate.
+#
+#sasl_pwcheck_method: saslauthd
+sasl_pwcheck_method: auxprop
+
+# The server certificate and key files must be specified for the
+# server to repond to IMAPS or POP3S requests.  See imapd.conf(5) for
+# a complete listing of tls_* options.
+#
+#tls_cert_file: /var/imap/server.pem
+#tls_key_file: /var/imap/server.pem
diff --git a/cyrus-imapd30/options.mk b/cyrus-imapd30/options.mk
new file mode 100644
index 0000000000..1e80f61bc9
--- /dev/null
+++ b/cyrus-imapd30/options.mk
@@ -0,0 +1,118 @@
+# $NetBSD: $
+#
+
+PKG_OPTIONS_VAR=	PKG_OPTIONS.cyrus-imapd
+PKG_SUPPORTED_OPTIONS=	gssapi kerberos kerberos4 ldap pcre snmp
+PKG_SUPPORTED_OPTIONS+=	bdb mysql pgsql sqlite
+PKG_SUGGESTED_OPTIONS=	bdb pcre
+
+.include "../../mk/bsd.options.mk"
+
+PLIST_VARS+=	ldap
+
+.if !empty(PKG_OPTIONS:Mkerberos)
+.  if empty(PKG_OPTIONS:Mgssapi)
+PKG_OPTIONS+=	gssapi
+.  endif
+.endif
+
+.if !empty(PKG_OPTIONS:Mkerberos4)
+.  if exists(/usr/include/kerberosIV/krb.h)
+PKG_USE_KERBEROS=	yes
+CONFIGURE_ARGS+=	--with-krb=/usr
+.  endif
+.elif !empty(PKG_OPTIONS:Mgssapi)
+.  include "../../mk/krb5.buildlink3.mk"
+CONFIGURE_ARGS+=	--enable-gssapi=${KRB5BASE}
+CONFIGURE_ARGS+=	--with-gss_impl=${GSSIMPL.${KRB5_TYPE}}
+GSSIMPL.heimdal=	heimdal
+GSSIMPL.mit-krb5=	mit
+CONFIGURE_ENV+=		COMPILE_ET=${KRB5BASE}/bin/compile_et
+.else
+CONFIGURE_ARGS+=	--without-krb
+CONFIGURE_ARGS+=	--disable-gssapi
+CHECK_BUILTIN.heimdal:=		yes
+.  include "../../security/heimdal/builtin.mk"
+CHECK_BUILTIN.heimdal:=		no
+CHECK_BUILTIN.mit-krb5:=	yes
+.  include "../../security/mit-krb5/builtin.mk"
+CHECK_BUILTIN.mit-krb5:=	no
+.  if ( !empty(USE_BUILTIN.heimdal:M[Yy][Ee][Ss]) || \
+	!empty(USE_BUILTIN.mit-krb5:M[Yy][Ee][Ss])) && \
+        exists(/usr/bin/compile_et) && exists(/usr/include/krb5/com_err.h)
+CPPFLAGS+=	-I/usr/include/krb5
+CONFIGURE_ENV+=	COMPILE_ET=/usr/bin/compile_et
+.  elif ${OPSYS} != "Linux" && \
+	exists(/usr/bin/compile_et) && exists(/usr/include/com_err.h)
+CONFIGURE_ENV+=	COMPILE_ET=/usr/bin/compile_et
+.  else
+CONFIGURE_ARGS+=	--with-com-err=yes
+.  endif
+.endif
+.if defined(CONFIGURE_ENV) && !empty(CONFIGURE_ENV:MCOMPILE_ET=*)
+post-configure:		generate-compile-et
+.endif
+
+generate-compile-et:
+	${RUN}cd ${WRKSRC}/com_err/et;				\
+	if ${TEST} ! -f Makefile -a  ! -f compile_et; then	\
+		${SED} 	-e 's,@SED@,${SED},g'			\
+			-e 's,@AWK@,${AWK},g'			\
+			-e 's,@DIR@,${WRKSRC}/com_err/et,g'	\
+			< compile_et.sh > compile_et;		\
+		${CHMOD} +x compile_et;				\
+	fi
+
+.if !empty(PKG_OPTIONS:Mldap)
+.  include "../../databases/openldap-client/buildlink3.mk"
+CONFIGURE_ARGS+=	--with-ldap=${BUILDLINK_PREFIX.openldap-client}
+PLIST.ldap=		yes
+.else
+CONFIGURE_ARGS+=	--without-ldap
+.endif
+
+.if !empty(PKG_OPTIONS:Msnmp)
+.  include "../../net/net-snmp/buildlink3.mk"
+CONFIGURE_ARGS+=	--with-snmp=${BUILDLINK_PREFIX.net-snmp}
+USE_TOOLS+=		perl:run
+.else
+CONFIGURE_ARGS+=	--without-snmp
+.endif
+
+.if !empty(PKG_OPTIONS:Mbdb)
+BDB_ACCEPTED=		db3 db4 db5
+.  include "../../mk/bdb.buildlink3.mk"
+CONFIGURE_ARGS+=	--with-bdb=${BDB_TYPE}
+CONFIGURE_ARGS+=	--with-bdb-incdir=${BDBBASE}/include/${BDB_TYPE}
+CONFIGURE_ARGS+=	--with-bdb-libdir=${BDBBASE}/lib
+.else
+CONFIGURE_ARGS+=	--without-bdb
+.endif
+
+.if !empty(PKG_OPTIONS:Mmysql)
+.  include "../../mk/mysql.buildlink3.mk"
+CONFIGURE_ARGS+=	--with-mysql=${BUILDLINK_PREFIX.mysql-client}
+.else
+CONFIGURE_ARGS+=	--without-mysql
+.endif
+
+.if !empty(PKG_OPTIONS:Mpgsql)
+.  include "../../mk/pgsql.buildlink3.mk"
+CONFIGURE_ARGS+=	--with-pgsql=${PGSQL_PREFIX}
+.else
+CONFIGURE_ARGS+=	--without-pgsql
+.endif
+
+.if !empty(PKG_OPTIONS:Msqlite)
+.  include "../../databases/sqlite3/buildlink3.mk"
+CONFIGURE_ARGS+=	--with-sqlite=${BUILDLINK_PREFIX.sqlite3}
+.else
+CONFIGURE_ARGS+=	--without-sqlite
+.endif
+
+.if !empty(PKG_OPTIONS:Mpcre)
+.  include "../../devel/pcre/buildlink3.mk"
+CONFIGURE_ARGS+=	--enable-pcre
+.else
+CONFIGURE_ARGS+=	--disable-pcre
+.endif
diff --git a/cyrus-imapd30/patches/patch-ac b/cyrus-imapd30/patches/patch-ac
new file mode 100644
index 0000000000..7512d2a8f6
--- /dev/null
+++ b/cyrus-imapd30/patches/patch-ac
@@ -0,0 +1,35 @@
+$NetBSD: $
+
+--- imap/Makefile.in.orig	2010-10-19 03:08:28.000000000 +0000
++++ imap/Makefile.in
+@@ -179,6 +179,9 @@ mupdate_err.c: mupdate_err.et
+ 
+ mupdate_err.h: mupdate_err.c
+ 
++mutex_pthread.o: mutex_pthread.c
++	$(CC) -c $(CPPFLAGS) $(DEFS) $(CFLAGS) $(PTHREAD_CFLAGS) $<
++
+ ### Services
+ idled: idled.o idlemsg.o mutex_fake.o libimap.a $(DEPLIBS)
+ 	$(CC) $(LDFLAGS) -o idled \
+@@ -213,16 +216,16 @@ imapd.quant: $(IMAPDOBJS) mutex_fake.o l
+ 
+ mupdate: mupdate.o mupdate-slave.o mupdate-client.o mutex_pthread.o tls.o \
+ 	libimap.a $(DEPLIBS)
+-	$(CC) $(LDFLAGS) -o mupdate \
++	$(CC) $(LDFLAGS) $(PTHREAD_LDFLAGS) -o mupdate \
+ 	 $(SERVICETHREAD) mupdate.o mupdate-slave.o mupdate-client.o \
+ 	 mutex_pthread.o tls.o libimap.a \
+-	 $(DEPLIBS) $(LIBS) $(LIB_WRAP) -lpthread
++	 $(DEPLIBS) $(LIBS) $(LIB_WRAP) $(PTHREAD_LIBS)
+ 
+ mupdate.pure: mupdate.o mupdate-slave.o mupdate-client.o mutex_pthread.o \
+ 	libimap.a $(DEPLIBS)
+-	$(PURIFY) $(PUREOPT) $(CC) $(LDFLAGS) -o mupdate.pure \
++	$(PURIFY) $(PUREOPT) $(CC) $(LDFLAGS) $(PTHREAD_LDFLAGS) -o mupdate.pure \
+ 	 $(SERVICETHREAD) mupdate.o mupdate-slave.o mupdate-client.o \
+-	 mutex_pthread.o libimap.a $(DEPLIBS) $(LIBS) $(LIB_WRAP) -lpthread
++	 mutex_pthread.o libimap.a $(DEPLIBS) $(LIBS) $(LIB_WRAP) $(PTHREAD_LIBS)
+ 
+ pop3d: pop3d.o proxy.o backend.o tls.o mutex_fake.o libimap.a \
+ 	$(DEPLIBS) $(SERVICE)
diff --git a/cyrus-imapd30/patches/patch-ah b/cyrus-imapd30/patches/patch-ah
new file mode 100644
index 0000000000..f0996c74dc
--- /dev/null
+++ b/cyrus-imapd30/patches/patch-ah
@@ -0,0 +1,13 @@
+$NetBSD: $
+
+--- perl/Makefile.in.orig	2010-10-19 03:08:28.000000000 +0000
++++ perl/Makefile.in
+@@ -86,7 +86,7 @@ all::
+ 			   BDB_LIB="$(BDB_LIB)" BDB_INC="$(BDB_INC)" \
+ 			   OPENSSL_LIB="$(OPENSSL_LIB)" OPENSSL_INC="$(OPENSSL_INC)" \
+ 			   SASL_LIB="$(SASL_LIB)" SASL_INC="$(SASL_INC)" CC="$(CC)" \
+-			     $(PERL) Makefile.PL PREFIX=$(prefix); \
++			     $(PERL) Makefile.PL INSTALLDIRS=vendor PREFIX=$(prefix); \
+ 			fi; \
+ 			$(MAKE) $(MFLAGS) DESTDIR=$(DESTDIR) all) || exit 1; \
+ 	done
diff --git a/cyrus-imapd30/patches/patch-ai b/cyrus-imapd30/patches/patch-ai
new file mode 100644
index 0000000000..6ec75d41f8
--- /dev/null
+++ b/cyrus-imapd30/patches/patch-ai
@@ -0,0 +1,13 @@
+$NetBSD: $
+
+--- perl/sieve/Makefile.in.orig	2010-10-19 03:08:28.000000000 +0000
++++ perl/sieve/Makefile.in
+@@ -86,7 +86,7 @@ all::
+ 			   BDB_LIB="$(BDB_LIB)" BDB_INC="$(BDB_INC)" \
+ 			   OPENSSL_LIB="$(OPENSSL_LIB)" OPENSSL_INC="$(OPENSSL_INC)" \
+ 			   SASL_LIB="$(SASL_LIB)" SASL_INC="$(SASL_INC)" CC="$(CC)" \
+-			     $(PERL) Makefile.PL PREFIX=$(prefix); \
++			     $(PERL) Makefile.PL INSTALLDIRS=vendor PREFIX=$(prefix); \
+ 			fi; \
+ 			$(MAKE) $(MFLAGS) DESTDIR=$(DESTDIR) all) || exit 1; \
+ 	done
diff --git a/cyrus-imapd30/patches/patch-am b/cyrus-imapd30/patches/patch-am
new file mode 100644
index 0000000000..5654588d80
--- /dev/null
+++ b/cyrus-imapd30/patches/patch-am
@@ -0,0 +1,19 @@
+$NetBSD: $
+
+--- tools/config2header.orig	2010-10-19 03:08:28.000000000 +0000
++++ tools/config2header
+@@ -79,6 +79,14 @@ while ($#ARGV >= 0) {
+ 
+ my $use_gcc_extension = ($CC and $CC eq 'gcc');
+ 
++#
++# Skip any CC options such as -pipe
++# The last two parameters are the .c and .h files
++#
++while ($#ARGV > 1) {
++	shift @ARGV;
++}
++
+ die "wrong number of arguments" if ($#ARGV != 1);
+ my ($cfile, $hfile) = @ARGV;
+ 
diff --git a/cyrus-imapd30/patches/patch-ao b/cyrus-imapd30/patches/patch-ao
new file mode 100644
index 0000000000..96fff81478
--- /dev/null
+++ b/cyrus-imapd30/patches/patch-ao
@@ -0,0 +1,17 @@
+$NetBSD: $
+
+--- imap/imap_err.et.orig	2010-10-19 03:08:28.000000000 +0000
++++ imap/imap_err.et
+@@ -201,10 +201,10 @@ ec IMAP_NO_MSGGONE,
+    "Message %d no longer exists"
+ 
+ ec IMAP_NO_CHECKSEEN,
+-   "Unable to checkpoint \\Seen state"
++   "Unable to checkpoint \\\\Seen state"
+ 
+ ec IMAP_NO_CHECKPRESERVE,
+-   "Unable to preserve \\Seen state"
++   "Unable to preserve \\\\Seen state"
+ 
+ ec IMAP_NO_NOSUCHMSG,
+    "No matching messages"
diff --git a/cyrus-imapd30/patches/patch-aq b/cyrus-imapd30/patches/patch-aq
new file mode 100644
index 0000000000..eebf0bb3ef
--- /dev/null
+++ b/cyrus-imapd30/patches/patch-aq
@@ -0,0 +1,28 @@
+$NetBSD: $
+
+* cast to unsigned long for platform sizeof(time_t) > sizeof(unsigned long).
+  https://bugzilla.cyrusimap.org/show_bug.cgi?id=3376
+
+--- imap/sync_client.c.orig	2012-12-01 19:57:54.000000000 +0000
++++ imap/sync_client.c
+@@ -573,7 +573,7 @@ static int folder_unannotation(const cha
+ /* ====================================================================== */
+ 
+ static int sieve_upload(const char *userid, const char *filename,
+-			unsigned long last_update)
++			time_t last_update)
+ {
+     const char *cmd = "SIEVE";
+     struct dlist *kl;
+@@ -913,9 +913,9 @@ static void log_record(const char *name,
+ 		       struct index_record *record)
+ {
+     syslog(LOG_NOTICE, "SYNCNOTICE: %s uid:%u modseq:" MODSEQ_FMT " "
+-	  "last_updated:%lu internaldate:%lu flags:(%s)",
++	  "last_updated:" MODSEQ_FMT " internaldate:" MODSEQ_FMT " flags:(%s)",
+ 	   name, record->uid, record->modseq,
+-	   record->last_updated, record->internaldate,
++	   (modseq_t)record->last_updated, (modseq_t)record->internaldate,
+ 	   make_flags(mailbox, record));
+ }
+ 
diff --git a/cyrus-imapd30/patches/patch-imap_mailbox.c b/cyrus-imapd30/patches/patch-imap_mailbox.c
new file mode 100644
index 0000000000..9cff763cec
--- /dev/null
+++ b/cyrus-imapd30/patches/patch-imap_mailbox.c
@@ -0,0 +1,21 @@
+$NetBSD: $
+
+* cast to unsigned long for platform sizeof(time_t) > sizeof(unsigned long).
+  https://bugzilla.cyrusimap.org/show_bug.cgi?id=3376
+
+--- imap/mailbox.c.orig	2012-12-01 19:57:54.000000000 +0000
++++ imap/mailbox.c
+@@ -1960,10 +1960,10 @@ bit32 make_sync_crc(struct mailbox *mail
+ 	flagcrc ^= crc32_cstring(buf);
+     }
+ 
+-    snprintf(buf, 4096, "%u " MODSEQ_FMT " %lu (%u) %lu %s",
+-	    record->uid, record->modseq, record->last_updated,
++    snprintf(buf, 4096, "%u " MODSEQ_FMT " " MODSEQ_FMT " (%u) " MODSEQ_FMT " %s",
++	    record->uid, record->modseq, (modseq_t)record->last_updated,
+ 	    flagcrc,
+-	    record->internaldate,
++	    (modseq_t)record->internaldate,
+ 	    message_guid_encode(&record->guid));
+ 
+     return crc32_cstring(buf);


Home | Main Index | Thread Index | Old Index