2017-09-05 01:16:14 +02:00

315 lines
8.4 KiB
Plaintext

# Maintainer: Natanael Copa <ncopa@alpinelinux.org>
# Contributor: G.J.R. Timmer <gjr.timmer@gmail.com>
# Contributor: Jakub Jirutka <jakub@jirutka.cz>
pkgname=postgresql
pkgver=9.6.5
pkgrel=0
pkgdesc="A sophisticated object-relational DBMS"
url="http://www.postgresql.org/"
arch="all"
license="BSD"
depends="postgresql-client"
install="$pkgname.pre-upgrade"
pkgusers="postgres"
pkggroups="postgres"
checkdepends="diffutils"
depends_dev="libressl-dev"
makedepends="$depends_dev libedit-dev zlib-dev libxml2-dev util-linux-dev
openldap-dev tcl-dev perl-dev python2-dev python3-dev"
subpackages="$pkgname-contrib $pkgname-dev $pkgname-doc libpq $pkgname-libs
$pkgname-client $pkgname-pltcl
$pkgname-plperl $pkgname-plperl-contrib:plperl_contrib
$pkgname-plpython2 $pkgname-plpython2-contrib:plpython2_contrib
$pkgname-plpython3 $pkgname-plpython3-contrib:plpython3_contrib"
source="https://ftp.postgresql.org/pub/source/v$pkgver/$pkgname-$pkgver.tar.bz2
initdb.patch
perl-rpath.patch
conf-unix_socket_directories.patch
$pkgname.initd
$pkgname.confd
pg-restore.initd
pg-restore.confd
pltcl_create_tables.sql
"
builddir="$srcdir/$pkgname-$pkgver"
options="!checkroot"
# secfixes:
# 9.6.4-r0:
# - CVE-2017-7546
# - CVE-2017-7547
# - CVE-2017-7548
# 9.6.3-r0:
# - CVE-2017-7484
# - CVE-2017-7485
# - CVE-2017-7486
prepare() {
default_prepare
cd "$builddir"
local file; for file in $pkgname.initd $pkgname.confd; do
sed "s|@VERSION@|${pkgver%.*}|" "$srcdir"/$file > $file
done
# XXX: Disable dblink and postgres_fdw tests. The tests fail due to
# some linking issue, but there's no problem in runtime. I have no
# clue what's wrong here.
sed -Ei 's/^(REGRESS)/#\1/' \
contrib/dblink/Makefile \
contrib/postgres_fdw/Makefile
cp -al "$builddir" "$builddir"~py3
}
# NOTE: plpython requires separate configure/build runs to build against
# python 2 versus python 3. Note that the installed Makefile.global will
# reflect the python 2 build, which seems appropriate since that's still
# considered the default plpython version.
build() {
msg "Building plpython3"
cd "$builddir"~py3
export PYTHON=/usr/bin/python3
_configure
make -C src/backend submake-errcodes
make -C src/pl/plpython all
msg "Building all"
cd "$builddir"
export PYTHON=/usr/bin/python2
_configure && make world
unset PYTHON
}
# Note: (...) instead of {...} is NOT a typo!
_configure() (
export CFLAGS="${CFLAGS/-Os/-O2}"
export CPPFLAGS="${CPPFLAGS/-Os/-O2}"
./configure \
--build=$CBUILD \
--host=$CHOST \
--prefix=/usr \
--mandir=/usr/share/man \
--with-ldap \
--with-libedit-preferred \
--with-libxml \
--with-openssl \
--with-uuid=e2fs \
--disable-rpath \
--with-perl \
--with-python \
--with-tcl
)
check() {
cd "$builddir"
_run_tests src/test
_run_tests src/pl
# Note: test_decoding fails when running in parallel.
_run_tests contrib -j1
}
package() {
cd "$builddir"
make DESTDIR="$pkgdir" install install-docs
install -d -m750 -o postgres -g postgres \
"$pkgdir"/var/lib/postgresql \
"$pkgdir"/var/log/$pkgname
install -D -m755 postgresql.initd \
"$pkgdir"/etc/init.d/postgresql
install -D -m644 postgresql.confd \
"$pkgdir"/etc/conf.d/postgresql
install -D -m755 "$srcdir"/pg-restore.initd \
"$pkgdir"/etc/init.d/pg-restore
install -D -m644 "$srcdir"/pg-restore.confd \
"$pkgdir"/etc/conf.d/pg-restore
}
dev() {
default_dev
mkdir -p "$subpkgdir"/usr/bin "$subpkgdir"/usr/lib/postgresql
mv "$pkgdir"/usr/bin/pg_config \
"$pkgdir"/usr/bin/ecpg \
"$subpkgdir"/usr/bin/
mv "$pkgdir"/usr/lib/postgresql/pgxs "$subpkgdir"/usr/lib/postgresql/
}
libpq() {
pkgdesc="PostgreSQL libraries"
depends=""
mkdir -p "$subpkgdir"/usr/lib
mv "$pkgdir"/usr/lib/libpq.so.* "$subpkgdir"/usr/lib/
}
libs() {
depends=""
default_libs
}
client() {
pkgdesc="PostgreSQL client"
depends=""
mkdir -p "$subpkgdir"/usr/bin
mv \
"$pkgdir"/usr/bin/clusterdb \
"$pkgdir"/usr/bin/createdb \
"$pkgdir"/usr/bin/createlang \
"$pkgdir"/usr/bin/createuser \
"$pkgdir"/usr/bin/dropdb \
"$pkgdir"/usr/bin/droplang \
"$pkgdir"/usr/bin/dropuser \
"$pkgdir"/usr/bin/pg_basebackup \
"$pkgdir"/usr/bin/pg_dump \
"$pkgdir"/usr/bin/pg_dumpall \
"$pkgdir"/usr/bin/pg_isready \
"$pkgdir"/usr/bin/pg_receivexlog \
"$pkgdir"/usr/bin/pg_recvlogical \
"$pkgdir"/usr/bin/pg_restore \
"$pkgdir"/usr/bin/psql \
"$pkgdir"/usr/bin/reindexdb \
"$pkgdir"/usr/bin/vacuumdb \
"$subpkgdir"/usr/bin/
}
contrib() {
pkgdesc="Extension modules distributed with PostgreSQL"
depends=""
cd "$builddir"
# Avoid installing plperl and plpython extensions, these will be
# installed into separate subpackages.
sed -Ei -e 's/(.*_plperl)/#\1/' \
-e 's/(.*_plpython)/#\1/' \
contrib/Makefile
make -C contrib DESTDIR="$subpkgdir" install
mv "$subpkgdir"/usr/share/doc/postgresql/extension \
"$pkgdir"/usr/share/doc/postgresql/
rmdir -p "$subpkgdir"/usr/share/doc/postgresql || true
}
pltcl() {
pkgdesc="PL/Tcl procedural language for PostgreSQL"
depends="pgtcl"
cd "$pkgdir"
_submv usr/bin/pltcl* \
usr/lib/postgresql/pltcl.so \
usr/share/postgresql/unknown.pltcl \
usr/share/postgresql/extension/pltcl*
install -m 644 "$srcdir"/pltcl_create_tables.sql \
"$subpkgdir"/usr/share/postgresql/
}
plperl() {
pkgdesc="PL/Perl procedural language for PostgreSQL"
depends=""
cd "$pkgdir"
_submv usr/lib/postgresql/plperl.so \
usr/share/postgresql/extension/plperl*
}
plperl_contrib() {
_plcontrib plperl "PL/Perl"
cd "$builddir"
make -C contrib/hstore_plperl DESTDIR="$subpkgdir" install
}
plpython2() {
pkgdesc="PL/Python2 procedural language for PostgreSQL"
depends="python2"
cd "$pkgdir"
_submv usr/lib/postgresql/plpython2.so \
usr/share/postgresql/extension/plpython*
}
plpython2_contrib() {
_plcontrib plpython2 "PL/Python 2"
cd "$builddir"
make -C contrib/hstore_plpython DESTDIR="$subpkgdir" install
make -C contrib/ltree_plpython DESTDIR="$subpkgdir" install
rm "$subpkgdir"/usr/share/postgresql/extension/*plpython3*
}
plpython3() {
pkgdesc="PL/Python3 procedural language for PostgreSQL"
depends="python3"
cd "$builddir"~py3
make -C src/pl/plpython DESTDIR="$subpkgdir" install
rm -R "$subpkgdir"/usr/include
}
plpython3_contrib() {
_plcontrib plpython3 "PL/Python 3"
cd "$builddir"~py3
make -C contrib/hstore_plpython DESTDIR="$subpkgdir" install
make -C contrib/ltree_plpython DESTDIR="$subpkgdir" install
cd "$subpkgdir"/usr/share/postgresql/extension/
rm *plpython2* *plpythonu*
}
_plcontrib() {
local subname="$1"
pkgdesc="$2 extension modules distributed with PostgreSQL"
depends="$pkgname-$subname"
install_if="$pkgname-$subname=$pkgver-r$pkgrel $pkgname-contrib=$pkgver-r$pkgrel"
}
_run_tests() {
local path="$1"; shift
msg "Running test suite at $path..."
make -k -C "$path" $@ check MAX_CONNECTIONS=5 || {
printf "\n%s\n\n" "Trying to find all regression.diffs files in build directory..." >&2
find "$path" -name regression.diffs | while read file; do
echo "=== test failure: $file ===" >&2
cat "$file" >&2
done
return 1
}
}
_submv() {
local path; for path in "$@"; do
mkdir -p "$subpkgdir/${path%/*}"
mv "$path" "$subpkgdir/$path"
done
}
sha512sums="ad35c27ea55b18005ea61b49d6994718df86519b3f99addd0ecb17ece1f1c34764eb5194f8961c45cfa75703d810baf54433f8538cfd43a70bd908e1e5878df9 postgresql-9.6.5.tar.bz2
0b88eee78380ed6cf543c851ac1cea5fc50bb6ef1bb51e03694003f43d2bf4e117ff06657f958d0e9c00ace3b8a6bab6ed0bd017d23f80cfd203dab33da81d46 initdb.patch
5f9d8bb4957194069d01af8ab3abc6d4d83a7e7f8bd7ebe1caae5361d621a3e58f91b14b952958138a794e0a80bc154fbb7e3e78d211e2a95b9b7901335de854 perl-rpath.patch
8439a6fdfdea0a4867daeb8bc23d6c825f30c00d91d4c39f48653f5ee77341f23282ce03a77aad94b5369700f11d2cb28d5aee360e59138352a9ab331a9f9d0f conf-unix_socket_directories.patch
224e80f9e62843fd248e625abdd0d9fe477729ff3f9a64fc5c86dd37bb7176d3504107fbed7ce578e3a1db7f60b8cf2abf5fe4862c81f76b6d026e29ca495cfc postgresql.initd
a6d9cba5c7270484b3a22083b2b37742faefb01b6643040050c92235840c601b2e206ebda32804937b729c6cf42c79a558b921900e52fc420df2a03b5f29e1f7 postgresql.confd
f5a1cba051e7d846c2d16703514601cb25729ed96b677c9bd0c199d64552120a8b14b238af01917fdb87106681e12dee6fff7447558155ba273e4f96be5e2892 pg-restore.initd
c14a5684e914abb3b0ee71bbf15eed71a9264deacaa404a6e3af6bfc330d93e7598624d0ed11a94263106cc660f7f54c8ff57e759033cf606a795f69ff6c1c7c pg-restore.confd
5c9bfd9e295dcf678298bf0aa974347a7c311d6e7c2aa76a6920fcb751d01fd1ab77abbec11f3c672f927ad9deaa88e04e370c0b5cd1b60087554c474b748731 pltcl_create_tables.sql"