jobextra/postfix/PKGBUILD

283 lines
11 KiB
Bash

#!/usr/bin/bash
# JOBoRun : Jwm OpenBox Obarun RUNit
# Maintainer : Joe Bo Run <joborun@disroot.org>
# PkgSource : url="https://gittea.disroot.org/joborun-pkg/jobextra/$pkgname"
# Website : https://pozol.eu
#-----------------------------------------| DESCRIPTION |---------------------------------------
pkgbase=postfix
pkgname=(postfix postfix-{cdb,ldap,lmdb,mongodb,mysql,pcre,pgsql,sqlite})
pkgver=3.9.0
pkgrel=02
pkgdesc="Fast, easy to administer, secure mail server w/o systemd - now (3.8.3) BSD4 clause and copyrights "
url="http://www.postfix.org/"
depends=(glibc)
makedepends=(icu libldap libnsl libsasl lmdb mariadb-libs
mongo-c-driver openssl pcre2 postgresql-libs sqlite tinycdb)
#options=(debug) ### uncomment this to have the debug pkg produced
source=(
https://de.postfix.org/ftpmirror/official/$pkgbase-$pkgver.tar.gz
$pkgbase-$pkgver.tar.gz.sig::https://de.postfix.org/ftpmirror/official/$pkgbase-$pkgver.tar.gz.gpg2
$pkgbase-3.5.8-main_defaults.patch
$pkgbase-3.9.0-mail_params.patch
$pkgbase.install
$pkgbase.sysusers
$pkgbase.tmpfiles
)
_pick() {
local p="$1" f d; shift
for f; do
d="$srcdir/$p/${f#$pkgdir/}"
mkdir -p "$(dirname "$d")"
mv "$f" "$d"
rmdir -p --ignore-fail-on-non-empty "$(dirname "$f")"
done
}
prepare() {
# add distribution defaults to main.cf (alias_maps and alias_database)
patch -Np1 -d $pkgbase-$pkgver -i ../$pkgbase-3.5.8-main_defaults.patch
patch -Np1 -d $pkgbase-$pkgver -i ../$pkgbase-3.9.0-mail_params.patch
}
build() {
local ccargs=(
'-fPIC' '-fcommon'
'-DUSE_SASL_AUTH'
'-DUSE_CYRUS_SASL' '-I/usr/include/sasl'
'-DHAS_LDAP'
'-DUSE_LDAP_SASL'
'-DHAS_LMDB'
'-DUSE_TLS'
'-DHAS_MONGODB' '-I/usr/include/libmongoc-1.0' '-I/usr/include/libbson-1.0'
'-DHAS_MYSQL' '-I/usr/include/mysql'
'-DHAS_PCRE=2'
'-DHAS_PGSQL' '-I/usr/include/postgresql'
'-DHAS_SQLITE'
'-DHAS_CDB'
'-DNO_DB'
'-DDEF_DB_TYPE=\"lmdb\"'
'-DDEF_COMMAND_DIR=\"/usr/bin\"'
'-DDEF_DAEMON_DIR=\"/usr/lib/postfix/bin\"'
'-DDEF_SENDMAIL_PATH=\"/usr/bin/sendmail\"'
'-DDEF_README_DIR=\"/usr/share/doc/postfix\"'
'-DDEF_MANPAGE_DIR=\"/usr/share/man\"'
)
# NOTE: descriptions of options in makedefs
local make_options=(
DEBUG=''
pie=yes
shared=yes
dynamicmaps=yes
CCARGS="${ccargs[*]}"
AUXLIBS="$(pkgconf --libs openssl libsasl2) -lnsl"
AUXLIBS_LDAP='-lldap -llber'
AUXLIBS_LMDB="$(pkgconf --libs lmdb)"
AUXLIBS_PCRE="$(pcre2-config --libs8)"
AUXLIBS_MONGODB="$(pkgconf --libs libmongoc-1.0)"
AUXLIBS_MYSQL="$(pkgconf --libs mariadb)"
AUXLIBS_PGSQL="$(pkgconf --libs libpq)"
AUXLIBS_SQLITE="$(pkgconf --libs sqlite3)"
AUXLIBS_CDB='-lcdb'
SHLIB_RPATH="-Wl,-rpath,/usr/lib/postfix $LDFLAGS"
OPT="$CFLAGS $CPPFLAGS $LDFLAGS"
)
make makefiles "${make_options[@]}" -C $pkgbase-$pkgver
make -C $pkgbase-$pkgver
}
package_postfix() {
local _name _feature
local _dynamicmaps_file="$pkgdir/etc/$pkgbase/dynamicmaps.cf"
local _dynamicmaps_dir="$pkgdir/etc/$pkgbase/dynamicmaps.cf.d"
local _files_file="$pkgdir/etc/$pkgbase/$pkgbase-files"
local _files_dir="$pkgdir/etc/$pkgbase/$pkgbase-files.d"
depends+=(
icu libicuuc.so
libnsl libnsl.so
libsasl libsasl2.so
openssl libcrypto.so libssl.so
postfix-lmdb
sh
)
optdepends=(
'perl: for postfix-collate.pl, postfix-tlstype.pl and qshape'
'postfix-cdb: for CDB integration'
'postfix-ldap: for LDAP integration'
'postfix-lmdb: for LMDB integration'
'postfix-mongodb: for MongoDB integration'
'postfix-mysql: for MySQL integration'
'postfix-pcre: for PCRE integration'
'postfix-pgsql: for PostgreSQL integration'
'postfix-sqlite: for SQLite integration'
)
conflicts=(smtp-server smtp-forwarder)
provides=(smtp-server smtp-forwarder)
backup=(etc/postfix/{access,aliases,canonical,generic,header_checks,main.cf,master.cf,relocated,transport,virtual})
install=$pkgbase.install
cd $pkgname-$pkgver
LD_LIBRARY_PATH="lib:$LD_LIBRARY_PATH" \
sh postfix-install -non-interactive install_root="$pkgdir"
# additional man pages and scripts
for _name in posttls-finger {smtp,qmqp}-{sink,source}; do
install -vDm 644 man/man1/$_name.1 -t "$pkgdir/usr/share/man/man1/"
install -vDm 755 bin/$_name -t "$pkgdir/usr/bin/"
done
install -vDm 644 man/man1/qshape.1 -t "$pkgdir/usr/share/man/man1/"
install -vDm 755 auxiliary/qshape/qshape.pl "$pkgdir/usr/bin/qshape"
install -vDm 755 auxiliary/collate/collate.pl "$pkgdir/usr/bin/postfix-collate.pl"
install -vDm 755 auxiliary/collate/tlstype.pl "$pkgdir/usr/bin/postfix-tlstype.pl"
install -vDm 644 auxiliary/collate/README* -t "$pkgdir/usr/share/doc/$pkgname/collate/"
# licenses
install -vDm 644 LICENSE COPYRIGHT -t "$pkgdir/usr/share/licenses/$pkgname/"
# sysusers.d
install -vDm 644 ../$pkgname.sysusers "$pkgdir/usr/lib/sysusers.d/$pkgname.conf"
# tmpfiles.d
# NOTE: follows setup in conf/postfix-files
install -vDm 644 ../$pkgname.tmpfiles "$pkgdir/usr/lib/tmpfiles.d/$pkgname.conf"
# create dynamicmaps.cf.d and postfix-files.d entries for split packages
# remove targetted files from main configuration files
for _feature in {cdb,ldap,lmdb,mongodb,mysql,pcre,pgsql,sqlite}; do
printf "Split out dynamicmaps file for %s\n" $pkgbase-$_feature
grep "$pkgbase-$_feature" "$_dynamicmaps_file" > "$_dynamicmaps_dir/$pkgbase-$_feature.cf"
sed -e "/$pkgbase-$_feature/d" -i "$_dynamicmaps_file"
(
cd "$pkgdir"
_pick $pkgbase-$_feature etc/$pkgbase/dynamicmaps.cf.d/$pkgbase-$_feature.cf
)
printf "Split out %s from %s-files.d\n" $pkgbase-$_feature $pkgbase
grep "$pkgbase-$_feature" "$_files_file" > "$_files_dir/$pkgbase-$_feature.cf"
sed -e "/$pkgbase-$_feature/d" -i "$_files_file"
printf "Split %s from %s-files\n" ${_feature^^}_README $pkgbase
grep "${_feature^^}_README:" "$_files_file" >> "$_files_dir/$pkgbase-$_feature.cf"
sed -e "/${_feature^^}_README:/d" -i "$_files_file"
if [[ "$_feature" != cdb ]]; then
printf "Split %s from %s-files\n" ${_feature}_table.5 $pkgbase
grep "${_feature}_table.5:" "$_files_file" >> "$_files_dir/$pkgbase-$_feature.cf"
sed -e "/${_feature}_table.5:/d" -i "$_files_file"
(
cd "$pkgdir"
_pick $pkgbase-$_feature usr/share/man/man5/${_feature}_table.5
)
fi
(
cd "$pkgdir"
_pick $pkgbase-$_feature etc/$pkgbase/$pkgbase-files.d/$pkgbase-$_feature.cf
_pick $pkgbase-$_feature usr/lib/$pkgbase/$pkgbase-$_feature.so
_pick $pkgbase-$_feature usr/share/doc/$pkgbase/${_feature^^}_README
)
# install directories that are otherwise cleared by calls to _pick()
install -vdm 755 "$_dynamicmaps_dir"
install -vdm 755 "$_files_dir"
done
# remove non-reproducible file, that only lists what the build circumstances were
rm -v "$pkgdir/etc/$pkgname/makedefs.out"
sed -e '/makedefs/d' -i "$pkgdir/etc/$pkgname/$pkgname-files"
}
package_postfix-cdb() {
depends+=(postfix tinycdb libcdb.so)
pkgdesc+=' (CDB integration w/o systemd)'
mv -v $pkgname/* "$pkgdir"
install -vDm 644 $pkgbase-$pkgver/{LICENSE,COPYRIGHT} -t "$pkgdir/usr/share/licenses/$pkgname/"
}
package_postfix-ldap() {
depends+=(postfix libldap)
pkgdesc+=' (LDAP integration w/o systemd)'
mv -v $pkgname/* "$pkgdir"
install -vDm 644 $pkgbase-$pkgver/{LICENSE,COPYRIGHT} -t "$pkgdir/usr/share/licenses/$pkgname/"
}
package_postfix-lmdb() {
depends+=(lmdb postfix)
pkgdesc+=' (LMDB integration w/o systemd)'
mv -v $pkgname/* "$pkgdir"
install -vDm 644 $pkgbase-$pkgver/{LICENSE,COPYRIGHT} -t "$pkgdir/usr/share/licenses/$pkgname/"
}
package_postfix-mongodb() {
depends+=(
mongo-c-driver
postfix
)
pkgdesc+=' (MongoDB integration w/o systemd)'
mv -v $pkgname/* "$pkgdir"
install -vDm 644 $pkgbase-$pkgver/{LICENSE,COPYRIGHT} -t "$pkgdir/usr/share/licenses/$pkgname/"
}
package_postfix-mysql() {
depends+=(postfix mariadb-libs libmariadb.so)
pkgdesc+=' (MySQL integration w/o systemd)'
mv -v $pkgname/* "$pkgdir"
install -vDm 644 $pkgbase-$pkgver/{LICENSE,COPYRIGHT} -t "$pkgdir/usr/share/licenses/$pkgname/"
}
package_postfix-pcre() {
depends+=(pcre2 libpcre2-8.so postfix)
pkgdesc+=' (PCRE integration w/o systemd)'
mv -v $pkgname/* "$pkgdir"
install -vDm 644 $pkgbase-$pkgver/{LICENSE,COPYRIGHT} -t "$pkgdir/usr/share/licenses/$pkgname/"
}
package_postfix-pgsql() {
depends+=(postfix libpq.so postgresql-libs )
pkgdesc+=' (PostgreSQL integration w/o systemd)'
mv -v $pkgname/* "$pkgdir"
install -vDm 644 $pkgbase-$pkgver/{LICENSE,COPYRIGHT} -t "$pkgdir/usr/share/licenses/$pkgname/"
}
package_postfix-sqlite() {
depends+=(postfix sqlite libsqlite3.so)
pkgdesc+=' (SQLite integration w/o systemd)'
mv -v $pkgname/* "$pkgdir"
install -vDm 644 $pkgbase-$pkgver/{LICENSE,COPYRIGHT} -t "$pkgdir/usr/share/licenses/$pkgname/"
}
#---- arch license gpg-key & sha256sums ----
arch=(x86_64)
license=('EPL-2.0 OR IPL-1.0' BSD-4-Clause-UC)
validpgpkeys=('622C7C012254C186677469C50C0B590E80CA15A7') # Wietse Venema <wietse@porcupine.org>
sha256sums=(56f5e420e7c25455a4e96c19b672f80f9a0a35fb5becc9247c9e3d5dcc617f34 # postfix-3.9.0.tar.gz
c1358424395efa2c51f91d8bd64df85393a921c610a9c13be98625b7ef71c2a0 # postfix-3.9.0.tar.gz.sig
b138efb38f234b9751d371bbe673f16029726771f2fc42e7124f606613c1e54e # postfix-3.5.8-main_defaults.patch
9c9a945ce7053ace12da82704f3a6f4c8a3b74f5464d87eadfc0cb9626ffbb5b # postfix-3.9.0-mail_params.patch
9097509ec3e15c111a45c693e40151e3addfd9d38b9a94e1eafd304435b32238 # postfix.install
63f39147887336bdd173fb9425998f0a0c6f00a31241f922a255c157bfd8d02e # postfix.sysusers
825106bc3a6db8872160c5d65be04ad92828a043b8c8decc531341f0fe4a5742) # postfix.tmpfiles
## 6d56ff4bc7dddbbd8e676cad2cefbf817f6534bc783a347596efdf877684a182 postfix-3.9.0-02-x86_64.pkg.tar.lz
## 814e05a049cc37796ea2a9bb6997a92a80554368734a7096e791661218c82ea1 postfix-cdb-3.9.0-02-x86_64.pkg.tar.lz
## a64f557c6dfa2d9f8ac65f6f0c54f6b8d9024ecbf278fd625517f5dda5791630 postfix-ldap-3.9.0-02-x86_64.pkg.tar.lz
## 8dcc4e18b5e41228dcf9ea987ac3e82354345d747ddccc4637cb8520e48b5c1d postfix-lmdb-3.9.0-02-x86_64.pkg.tar.lz
## 9acf305045be6b2991968c4ac612780febe097cbb1dfa900c951ff99f80ed57a postfix-mongodb-3.9.0-02-x86_64.pkg.tar.lz
## bedae37df3134992f6ced19e73954db51969fe7e5bc420e60997339f46d12017 postfix-mysql-3.9.0-02-x86_64.pkg.tar.lz
## 2c8e4a185461bed7c08eca85ed004e582515e8bdd86daa16c91caadbcafbede1 postfix-pcre-3.9.0-02-x86_64.pkg.tar.lz
## 00c52446530208a917549d8848044f2424fc31593b3cb6da66de622eeb7e8097 postfix-pgsql-3.9.0-02-x86_64.pkg.tar.lz
## 6c766277cf5b18a4c679fd8b41ae15ba2dd3e6ee03b06ccdf0a9d37f576c5b35 postfix-sqlite-3.9.0-02-x86_64.pkg.tar.lz