You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
326 lines
11 KiB
326 lines
11 KiB
## |
|
## imapd.spec -- OpenPKG RPM Package Specification |
|
## Copyright (c) 2000-2006 OpenPKG Foundation e.V. <http://openpkg.net/> |
|
## Copyright (c) 2000-2006 Ralf S. Engelschall <http://engelschall.com/> |
|
## |
|
## Permission to use, copy, modify, and distribute this software for |
|
## any purpose with or without fee is hereby granted, provided that |
|
## the above copyright notice and this permission notice appear in all |
|
## copies. |
|
## |
|
## THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED |
|
## WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF |
|
## MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. |
|
## IN NO EVENT SHALL THE AUTHORS AND COPYRIGHT HOLDERS AND THEIR |
|
## CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, |
|
## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT |
|
## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF |
|
## USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND |
|
## ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, |
|
## OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT |
|
## OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF |
|
## SUCH DAMAGE. |
|
## |
|
|
|
# package information |
|
Name: imapd |
|
Summary: Cyrus IMAP Server |
|
URL: http://cyrusimap.web.cmu.edu/ |
|
Vendor: Carnegie Mellon University |
|
Packager: OpenPKG |
|
Distribution: OpenPKG |
|
Class: BASE |
|
Group: Mail |
|
License: BSD |
|
Version: 2.3.7 |
|
Release: 20060929 |
|
|
|
# package options |
|
%option with_fsl yes |
|
%option with_group no |
|
%option with_atvdom no |
|
%option with_drac no |
|
%option with_replication no |
|
|
|
# list of sources |
|
Source0: ftp://ftp.andrew.cmu.edu/pub/cyrus-mail/cyrus-imapd-%{version}.tar.gz |
|
Source1: rc.imapd |
|
Source2: cyrus.conf |
|
Source3: imapd.conf |
|
Source4: fsl.imapd |
|
Patch0: imapd.patch |
|
Patch1: imapd.patch.group |
|
|
|
# build information |
|
Prefix: %{l_prefix} |
|
BuildRoot: %{l_buildroot} |
|
BuildPreReq: OpenPKG, openpkg >= 20060823, perl >= 5.8.3, perl-openpkg >= 5.8.3, make, config |
|
PreReq: OpenPKG, openpkg >= 20060823, perl >= 5.8.3, MTA |
|
BuildPreReq: sasl, db >= 4.2.52, openssl |
|
PreReq: sasl, db >= 4.2.52, openssl |
|
%if "%{with_fsl}" == "yes" |
|
BuildPreReq: fsl >= 1.2.0 |
|
PreReq: fsl >= 1.2.0 |
|
%endif |
|
AutoReq: no |
|
AutoReqProv: no |
|
|
|
%description |
|
The Cyrus IMAP server is an IMAP4 and POP3 daemon that 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. |
|
|
|
%track |
|
prog imapd = { |
|
version = %{version} |
|
url = ftp://ftp.andrew.cmu.edu/pub/cyrus-mail/ |
|
regex = cyrus-imapd-(\d+\.\d+\.\d+)\.tar\.gz |
|
} |
|
|
|
%prep |
|
%setup -q -n cyrus-imapd-%{version} |
|
%patch -p0 |
|
|
|
# upgrade config scripts for better platform support |
|
%{l_prefix}/bin/config install |
|
|
|
%if "%{with_group}" == "yes" |
|
%patch -p0 -P 1 |
|
%{l_shtool} subst \ |
|
-e 's;/etc/imapd\.group;%{l_prefix}/etc/imapd/imapd.group;' \ |
|
lib/auth_unix.c |
|
%endif |
|
%if "%{with_drac}" == "yes" |
|
%{l_shtool} subst -e 's;@DRACLIBS@;-ldrac;g' contrib/drac_auth.patch |
|
%{l_patch} -p0 <contrib/drac_auth.patch |
|
sleep 1 |
|
touch configure |
|
%endif |
|
%{l_shtool} subst \ |
|
-e 's;-L/usr/local/lib;;g' \ |
|
-e 's;-I/usr/local/include;;g' \ |
|
-e 's;db-4.1;db;g' \ |
|
configure |
|
|
|
# ensure local et/com_err can be found |
|
%{l_shtool} subst -s \ |
|
-e 's;#include <et/com_err.h>;#include "et/com_err.h";' \ |
|
configure |
|
|
|
# ensure linking of Berkeley DB |
|
loclibs="" |
|
case "%{l_platform -t}" in |
|
*-sunos* ) |
|
%{l_shtool} subst \ |
|
-e 's;^\( *.LIBS..*\)\(\"\],.*\)$;\1 -ldb -lrt\2;' \ |
|
perl/sieve/managesieve/Makefile.PL \ |
|
perl/imap/Makefile.PL |
|
;; |
|
* ) |
|
%{l_shtool} subst \ |
|
-e 's;^\( *.LIBS..*\)\(\"\],.*\)$;\1 -ldb\2;' \ |
|
perl/sieve/managesieve/Makefile.PL \ |
|
perl/imap/Makefile.PL |
|
;; |
|
esac |
|
|
|
# ensure invocation of correct perl |
|
%{l_shtool} subst \ |
|
-e 's;^\(.) exec\) \(perl .*\)$;\1 %{l_prefix}/bin/\2;' \ |
|
perl/imap/cyradm.sh |
|
%{l_shtool} subst \ |
|
-e 's;^\(exec\) \(perl .*\)$;\1 %{l_prefix}/bin/\2;' \ |
|
perl/sieve/scripts/*.pl \ |
|
snmp/[a-z]* \ |
|
tools/[a-z]* |
|
|
|
# adjust hard coded location of sieve |
|
%{l_shtool} subst \ |
|
-e 's;"/usr/sieve";"%{l_prefix}/var/imapd/sieve";g' \ |
|
lib/imapopts.c \ |
|
tools/masssievec \ |
|
tools/rehash \ |
|
tools/translatesieve \ |
|
tools/upgradesieve |
|
|
|
# adjust default config to install environment for use in mkimap install helper script |
|
%{l_shtool} install -c -m 644 \ |
|
-e "s;\(@l_prefix@\);$RPM_BUILD_ROOT\1;g" \ |
|
%{l_value -s -a} \ |
|
%{SOURCE imapd.conf} \ |
|
imapd.conf-mkimap |
|
%{l_shtool} subst \ |
|
-e 's;^exec perl ;exec %{l_prefix}/bin/perl ;' \ |
|
-e "s;/etc/imapd.conf;%{l_prefix}/etc/imapd/imapd.conf;" \ |
|
-e "s;^\(\$sievedir = \).*$;\1 shift || \"%{l_prefix}/var/imapd/sieve\"\;;" \ |
|
tools/mkimap |
|
|
|
# ajdust syslog ident of deliver program |
|
%{l_shtool} subst \ |
|
-e '/alt_config/s;"deliver";"cyrdeliver";' \ |
|
imap/deliver.c |
|
|
|
%build |
|
cflags="%{l_cppflags}" |
|
%if "%{with_atvdom}" == "yes" |
|
cflags="$cflags -DATVDOM=yes" |
|
%endif |
|
ldflags="%{l_ldflags} %{l_fsl_ldflags}" |
|
case "%{l_platform -t}" in |
|
*-sunos* ) ldflags="$ldflags -lsocket -lnsl" ;; |
|
esac |
|
%if "%{with_drac}" == "yes" |
|
cflags="$cflags -DDRAC_AUTH" |
|
%endif |
|
loclibs="" |
|
case "%{l_platform -t}" in |
|
*-sunos* ) |
|
loclibs="-lrt" |
|
;; |
|
esac |
|
CC="%{l_cc}" \ |
|
CPPFLAGS="$cflags" \ |
|
CFLAGS="%{l_cflags -O} $cflags" \ |
|
LDFLAGS="$ldflags" \ |
|
LIBS="%{l_fsl_libs} $loclibs" \ |
|
./configure \ |
|
--cache-file=./cache.config \ |
|
--prefix=%{l_prefix} \ |
|
--sysconfdir=%{l_prefix}/etc/imapd \ |
|
--with-openssl=%{l_prefix} \ |
|
--with-dbdir=%{l_prefix} \ |
|
--with-sasl=%{l_prefix} \ |
|
--with-statedir=%{l_prefix}/var/imapd \ |
|
--with-auth=unix \ |
|
--without-libwrap \ |
|
--disable-gssapi \ |
|
--without-gss_impl \ |
|
--with-perl \ |
|
--without-ucdsnmp \ |
|
--with-cyrus-prefix=%{l_prefix} \ |
|
--with-cyrus-user=%{l_rusr} \ |
|
--with-cyrus-group=%{l_rgrp} \ |
|
--with-pidfile=%{l_prefix}/var/imapd/cyrus-master.pid \ |
|
%if "%{with_replication}" == "yes" |
|
--enable-replication \ |
|
%endif |
|
--without-krb |
|
|
|
# redirect the hard coded file paths |
|
%{l_shtool} subst \ |
|
-e 's;/etc/\(.*\).conf;%{l_prefix}/etc/imapd/\1.conf;' \ |
|
imap/*.c imap/*.h master/*.c master/*.h |
|
%{l_make} %{l_mflags} |
|
|
|
%install |
|
rm -rf $RPM_BUILD_ROOT |
|
|
|
# install package |
|
%{l_make} %{l_mflags} install \ |
|
DESTDIR=$RPM_BUILD_ROOT |
|
|
|
# create additional directories |
|
%{l_shtool} mkdir -f -p -m 755 \ |
|
$RPM_BUILD_ROOT%{l_prefix}/etc/imapd \ |
|
$RPM_BUILD_ROOT%{l_prefix}/etc/rc.d \ |
|
$RPM_BUILD_ROOT%{l_prefix}/var/imapd/log \ |
|
$RPM_BUILD_ROOT%{l_prefix}/var/imapd/tmp \ |
|
$RPM_BUILD_ROOT%{l_prefix}/var/imapd/sieve \ |
|
$RPM_BUILD_ROOT%{l_prefix}/var/imapd/spool \ |
|
$RPM_BUILD_ROOT%{l_prefix}/bin |
|
|
|
# install sieve adminstration script |
|
%{l_shtool} install -c -m 755 \ |
|
perl/sieve/scripts/sieveshell.pl \ |
|
$RPM_BUILD_ROOT%{l_prefix}/bin/sieveshell |
|
|
|
# install sieve command line compiler |
|
%{l_shtool} install -c -m 755 \ |
|
sieve/sievec \ |
|
$RPM_BUILD_ROOT%{l_prefix}/bin/sievec |
|
|
|
# offer a sane configuration |
|
l_hostname=`%{l_shtool} echo -e %h` |
|
l_domainname=`%{l_shtool} echo -e %d | cut -c2-` |
|
%{l_shtool} install -c -m 644 %{l_value -s -a} \ |
|
-e "s;@l_hostname@;$l_hostname;g" \ |
|
-e "s;@l_domainname@;$l_domainname;g" \ |
|
%{SOURCE cyrus.conf} \ |
|
%{SOURCE imapd.conf} \ |
|
$RPM_BUILD_ROOT%{l_prefix}/etc/imapd/ |
|
|
|
# install the run command file |
|
%{l_shtool} install -c -m 755 %{l_value -s -a} \ |
|
%{SOURCE rc.imapd} $RPM_BUILD_ROOT%{l_prefix}/etc/rc.d/ |
|
|
|
# use mkimap to create many directories for us |
|
tools/mkimap imapd.conf-mkimap $RPM_BUILD_ROOT%{l_prefix}/var/imapd/sieve |
|
|
|
# rename files which are likely to cause namespace conflicts |
|
( cd $RPM_BUILD_ROOT%{l_prefix} |
|
for i in deliver master quota reconstruct; do |
|
mv bin/$i bin/cyr$i |
|
mv man/man8/$i.8 man/man8/cyr$i.8 |
|
done |
|
) || exit $? |
|
|
|
# install from tools |
|
%{l_shtool} install -c -m 755 \ |
|
tools/mkimap \ |
|
$RPM_BUILD_ROOT%{l_prefix}/bin/ |
|
|
|
# install OSSP fsl configuration |
|
%{l_shtool} mkdir -f -p -m 755 $RPM_BUILD_ROOT%{l_prefix}/etc/fsl |
|
%{l_shtool} install -c -m 644 %{l_value -s -a} \ |
|
%{SOURCE fsl.imapd} \ |
|
$RPM_BUILD_ROOT%{l_prefix}/etc/fsl/ |
|
|
|
# strip binaries |
|
strip $RPM_BUILD_ROOT%{l_prefix}/bin/* >/dev/null 2>&1 || true |
|
|
|
# determine files |
|
%{l_prefix}/bin/perl-openpkg -F perl-openpkg-files fixate |
|
%{l_rpmtool} files -v -ofiles -r$RPM_BUILD_ROOT \ |
|
%{l_files_std} \ |
|
'%not %dir %{l_prefix}/etc/fsl' \ |
|
'%config %{l_prefix}/etc/fsl/fsl.imapd' \ |
|
'%config %{l_prefix}/etc/imapd/imapd.conf' \ |
|
'%config %{l_prefix}/etc/imapd/cyrus.conf' \ |
|
'%dir %attr(0750,%{l_rusr},%{l_mgrp}) %{l_prefix}/var/imapd' \ |
|
'%dir %attr(0750,%{l_rusr},%{l_rgrp}) %{l_prefix}/var/imapd/*' \ |
|
'%dir %attr(0770,%{l_rusr},%{l_rgrp}) %{l_prefix}/var/imapd/*/*' \ |
|
'%dir %attr(0770,%{l_rusr},%{l_rgrp}) %{l_prefix}/var/imapd/tmp' \ |
|
'%dir %attr(0770,%{l_musr},%{l_rgrp}) %{l_prefix}/var/imapd/socket' \ |
|
`cat perl-openpkg-files` |
|
|
|
%files -f files |
|
|
|
%clean |
|
rm -rf $RPM_BUILD_ROOT |
|
|
|
%pre |
|
# before upgrade, save status and stop service |
|
[ $1 -eq 2 ] || exit 0 |
|
eval `%{l_rc} imapd status 2>/dev/null | tee %{l_tmpfile}` |
|
%{l_rc} imapd stop 2>/dev/null |
|
exit 0 |
|
|
|
%post |
|
if [ $1 -eq 2 ]; then |
|
# after upgrade, restore status |
|
eval `cat %{l_tmpfile}`; rm -f %{l_tmpfile} |
|
[ ".$imapd_active" = .yes ] && %{l_rc} imapd start |
|
fi |
|
exit 0 |
|
|
|
%preun |
|
# before erase, stop service and remove log and temp files |
|
[ $1 -eq 0 ] || exit 0 |
|
%{l_rc} imapd stop 2>/dev/null |
|
rm -f $RPM_INSTALL_PREFIX/var/imapd/log/*.log >/dev/null 2>&1 || true |
|
rm -rf $RPM_INSTALL_PREFIX/var/imapd/tmp >/dev/null 2>&1 || true |
|
exit 0 |
|
|
|
|