# Maintainer: Natanael Copa # Contributor: G.J.R. Timmer # Contributor: Jakub Jirutka setvar pkgname = 'postgresql' setvar pkgver = '9.6.5' setvar pkgrel = '0' setvar pkgdesc = ""A sophisticated object-relational DBMS"" setvar url = ""http://www.postgresql.org/"" setvar arch = ""all"" setvar license = ""BSD"" setvar depends = ""postgresql-client"" setvar install = ""$pkgname.pre-upgrade"" setvar pkgusers = ""postgres"" setvar pkggroups = ""postgres"" setvar checkdepends = ""diffutils"" setvar depends_dev = ""libressl-dev"" setvar makedepends = ""$depends_dev libedit-dev zlib-dev libxml2-dev util-linux-dev openldap-dev tcl-dev perl-dev python2-dev python3-dev"" setvar 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"" setvar 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 "" setvar builddir = ""$srcdir/$pkgname-$pkgver"" setvar 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 proc prepare { default_prepare cd $builddir local file; for file in $pkgname.initd $pkgname.confd { sed "s|@VERSION@|${pkgver%.*}|" "$srcdir"/$file > $file } # 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. proc 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! proc _configure _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 ) proc check { cd $builddir _run_tests src/test _run_tests src/pl # Note: test_decoding fails when running in parallel. _run_tests contrib -j1 } proc 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 } proc 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/ } proc libpq { setvar pkgdesc = ""PostgreSQL libraries"" setvar depends = """" mkdir -p "$subpkgdir"/usr/lib mv "$pkgdir"/usr/lib/libpq.so.* "$subpkgdir"/usr/lib/ } proc libs { setvar depends = """" default_libs } proc client { setvar pkgdesc = ""PostgreSQL client"" setvar 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/ } proc contrib { setvar pkgdesc = ""Extension modules distributed with PostgreSQL"" setvar 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 } proc pltcl { setvar pkgdesc = ""PL/Tcl procedural language for PostgreSQL"" setvar 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/ } proc plperl { setvar pkgdesc = ""PL/Perl procedural language for PostgreSQL"" setvar depends = """" cd $pkgdir _submv usr/lib/postgresql/plperl.so \ usr/share/postgresql/extension/plperl* } proc plperl_contrib { _plcontrib plperl "PL/Perl" cd $builddir make -C contrib/hstore_plperl DESTDIR="$subpkgdir" install } proc plpython2 { setvar pkgdesc = ""PL/Python2 procedural language for PostgreSQL"" setvar depends = ""python2"" cd $pkgdir _submv usr/lib/postgresql/plpython2.so \ usr/share/postgresql/extension/plpython* } proc 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* } proc plpython3 { setvar pkgdesc = ""PL/Python3 procedural language for PostgreSQL"" setvar depends = ""python3"" cd "$builddir"~py3 make -C src/pl/plpython DESTDIR="$subpkgdir" install rm -R "$subpkgdir"/usr/include } proc 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* } proc _plcontrib { local subname="$1" setvar pkgdesc = ""$2 extension modules distributed with PostgreSQL"" setvar depends = ""$pkgname-$subname"" setvar install_if = ""$pkgname-$subname=$pkgver-r$pkgrel $pkgname-contrib=$pkgver-r$pkgrel"" } proc _run_tests { local path="$1"; shift msg "Running test suite at $path..." make -k -C $path $[join(ARGV)] check MAX_CONNECTIONS=5 || do { printf "\n%s\n\n" "Trying to find all regression.diffs files in build directory..." >&2 find $path -name regression.diffs | while read file { echo "=== test failure: $file ===" >&2 cat $file >&2 } return 1 } } proc _submv { local path; for path in "$@" { mkdir -p "$subpkgdir/${path%/*}" mv $path "$subpkgdir/$path" } } setvar 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""