commit:     1ef0e9474ee215c66ea520590e8a77845e2d8646
Author:     Patrick Lauer <patrick <AT> gentoo <DOT> org>
AuthorDate: Thu Jun 20 14:33:29 2019 +0000
Commit:     罗百科 <patrick <AT> gentoo <DOT> org>
CommitDate: Thu Jun 20 14:33:47 2019 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=1ef0e947

dev-db/postgresql: Bump

Package-Manager: Portage-2.3.67, Repoman-2.3.15
Signed-off-by: Patrick Lauer <patrick <AT> gentoo.org>

 dev-db/postgresql/Manifest                         |   7 +-
 ...l-12_beta1-r1.ebuild => postgresql-10.9.ebuild} |  34 +++---
 ...l-12_beta1-r1.ebuild => postgresql-11.4.ebuild} |   2 +-
 ..._beta1-r1.ebuild => postgresql-12_beta2.ebuild} |   2 +-
 ...12_beta1-r1.ebuild => postgresql-9.4.23.ebuild} | 128 +++++++++++---------
 ...12_beta1-r1.ebuild => postgresql-9.5.18.ebuild} | 132 ++++++++++++---------
 ...12_beta1-r1.ebuild => postgresql-9.6.14.ebuild} | 107 ++++++++++-------
 7 files changed, 234 insertions(+), 178 deletions(-)

diff --git a/dev-db/postgresql/Manifest b/dev-db/postgresql/Manifest
index ea182832865..64e71ab19b5 100644
--- a/dev-db/postgresql/Manifest
+++ b/dev-db/postgresql/Manifest
@@ -1,6 +1,11 @@
 DIST postgresql-10.8.tar.bz2 18958913 BLAKE2B 
d2e1664a53c5b2f24b412f497769ffd33e2f48977fa0f4503cb588497b61955a97497c87950ae60d498d75c7385fc63dd832b518174614f695d8882628a4ebb8
 SHA512 
c9cd0298f553e13e32d4315e17e9e61c1fd011391c5203282d9040f26fd08c85f749e6f2cea3bcc42d1ca153a1272bcd773196ef3bf2bdfb74cd12c5f523b7ca
+DIST postgresql-10.9.tar.bz2 18981395 BLAKE2B 
ef2ac003b393ea7cbf24c45fac6b3dc69df2a8694a9e891d5a68f7310d63fb816649d16a7351d03b63a4eb2256703efcab616a0146324478335267c39f3b9829
 SHA512 
4e2f30a0fd262f2e3ce5fc836425be635326600cd6cd4e117c57f59ea7ab2e9ea463a8d357fe7adb8c0dd0094e43d08efc2a137f8f9975715a5908e35920f98e
 DIST postgresql-11.3.tar.bz2 19718775 BLAKE2B 
f56686bff4e70c2b6333554a620a5c2d5c226654a1d61de43b4493c44a14e2bcd9c102dba420994878d328af52d933885e4948cd002f14b693aef1416697a0ea
 SHA512 
03269bb88f44f3a81d5e3a8ca2fe59f63f784436840f08870b2e539755629cbde8ac288e0bb4472ee93294a88b37b814ddff48444254c1a3f7a10b4bb64f7133
-DIST postgresql-12beta1.tar.bz2 20589423 BLAKE2B 
622f936524bca74c20e27967b4cfcec31ba4ffc3132af516fc6dbb89843d688df41b72b7febe7060d2eb6716d64228124b4bc9831e9b11601be0fd95b7727710
 SHA512 
f46017659aa88141b056fc1852280c92ffbc3ba52d1cda2e3e302d3ec6ba478cc2a8ab04c87f10774b0401e8284fc46bb387a3e0e594a26a30ef7a4cf79b1de3
+DIST postgresql-11.4.tar.bz2 19759635 BLAKE2B 
a3f35df40d31dce52073eeacf4e16bc7ccb487dc0a6e15b84d087f04fd130b66b1168ece3edc63927c377ca1044b54ccb3db5fb9b4a5c86a5b0e179a6678c73c
 SHA512 
159fb84134e05ddc58e40a879ca52ed4d58ced7bcd1e7310d59bda84f9055339a31a92cfaab2c063a88685f7417b9a828534394bf9a2477fc33d1fb6cd26186b
+DIST postgresql-12beta2.tar.bz2 20605047 BLAKE2B 
133c453b180c800bf7e8dc15d26453db6e2b86011a1dd175157d46e5dec26199e42ac37f494b9a154352d144c93c4e8dc8410469d52ca31c1bdfef69a25190e2
 SHA512 
64b3ffd7e61ece5572ca72b3168618150214f89d21b113c6f630687372f6f7212bdfa086fa5b22e466a529a0e929c76d34e5b3ed5c04c94299589822fbff4935
 DIST postgresql-9.4.22.tar.bz2 16848787 BLAKE2B 
5c2aaef13ef0cf33c421e6839877a8e4e1fc5dbe41d9cabefddd369925869f92f6c6b8a124b5778f9b25359103f0a7ada1eddcaf4bac498709f563928f25e7e3
 SHA512 
f11623a89b2320616fd53eda52da544bdfcb63bff08cb78fccde134ef628eee7ee90b3de6952f4e08c10297d356624faabf0e5b181b0105f51797796cd04efef
+DIST postgresql-9.4.23.tar.bz2 16848808 BLAKE2B 
fd747fb3f6f540190ecbd53116ef7b8b812d05f5968e32c9d09c5902239eaf073281262dba9836514344303a3c894f48c617e050ce713be7c09f53ee49c7b3cd
 SHA512 
b1eb392b939ac8369c76e4ecc142c78f380afc498b60ec0ea97acb16c21ffa5c11a24c2c46463032865955b7c531492c08feb6ef1efc46a549369f026594ea61
 DIST postgresql-9.5.17.tar.bz2 17563469 BLAKE2B 
d40b7f95d03db594144b4882f36bbe22f348faab0b8d67eda3f946448bb0e09188eccdeb4d1c92742fb29a920b30ede55e536a863b22d2009283eab66679122d
 SHA512 
bb468528b1f18166cda0be136f31a632859ffe6e6800233b1cb0e91ce11d2d00d3dc108a74580b5552a4d30b9f1b6849c91576cd497beac788c429815c66eac5
+DIST postgresql-9.5.18.tar.bz2 17570161 BLAKE2B 
aee7e4570f2571e507fd972e86d3a6a9243d8fd33c356305998a8dce461bc9b06b45e1ff4267a9eb47f58a793c0b70bce0babfc0dce939cb34b1436a55a5d9fd
 SHA512 
0487ac2891c800de045135d4b153659ec10c28750a09e0b87343f8e7145a11f1783ed0b6ca60829776faae1430c8050cc7661c780f171f1b2621f1673a32e6d1
 DIST postgresql-9.6.13.tar.bz2 18767279 BLAKE2B 
c1ec780a7f938f878425cbd6556145e60a613135129daaacc52e9a699cc448a22481b01fac20d0c09373ea6a026f39bc58234aae4f1126333b94f621981a8135
 SHA512 
65cc70410ad4a1a738b92855b92eecdbb9efbbca0eb9a45a138d47b696c8f9c9cd19073fbfdf5c80eea7633d0be29b4ed8acbadd38724acf8f18c90bb30f9b26
+DIST postgresql-9.6.14.tar.bz2 18787744 BLAKE2B 
be5a0d90fe1cd5ea682d8446e512271175f705bc49514215535d7aa4b631669846c0bd6167f985028c07dc5d6d394a1ea809028c5a5e15a5f010e85c2bede8cf
 SHA512 
dccc183a6992ef4ece4ef5c638339708ab484e571ecd66ed993c9071cd55f250b4277fd3367f9a5ee545aa83e29dc5f7a239200e200e3314d5acc847f35e790c

diff --git a/dev-db/postgresql/postgresql-12_beta1-r1.ebuild 
b/dev-db/postgresql/postgresql-10.9.ebuild
similarity index 92%
copy from dev-db/postgresql/postgresql-12_beta1-r1.ebuild
copy to dev-db/postgresql/postgresql-10.9.ebuild
index 5b3d4e8e26c..88115ec2c2a 100644
--- a/dev-db/postgresql/postgresql-12_beta1-r1.ebuild
+++ b/dev-db/postgresql/postgresql-10.9.ebuild
@@ -11,7 +11,7 @@ PLOCALES="af cs de en es fa fr hr hu it ko nb pl pt_BR ro ru 
sk sl sv tr zh_CN
 inherit flag-o-matic l10n linux-info multilib pam prefix python-single-r1 \
                systemd user
 
-KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~mips ~ppc ~ppc64 ~s390 ~sh 
~sparc ~x86 ~amd64-fbsd ~x86-fbsd ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos 
~x86-macos ~sparc-solaris ~sparc64-solaris ~x64-solaris ~x86-solaris"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~mips ~ppc ~ppc64 ~s390 ~sh 
~sparc ~x86 ~amd64-fbsd ~x86-fbsd ~ppc-macos ~x86-solaris"
 
 SLOT=$(ver_cut 1)
 
@@ -22,10 +22,10 @@ 
SRC_URI="mirror://postgresql/source/v${MY_PV}/postgresql-${MY_PV}.tar.bz2"
 
 LICENSE="POSTGRESQL GPL-2"
 DESCRIPTION="PostgreSQL RDBMS"
-HOMEPAGE="http://www.postgresql.org/";
+HOMEPAGE="https://www.postgresql.org/";
 
-IUSE="debug doc icu kerberos kernel_linux ldap libressl llvm nls pam
-         perl python +readline selinux +server systemd ssl static-libs tcl
+IUSE="debug doc icu kerberos kernel_linux ldap libressl nls pam perl
+         python +readline selinux +server systemd ssl static-libs tcl
          threads uuid xml zlib"
 
 REQUIRED_USE="python? ( ${PYTHON_REQUIRED_USE} )"
@@ -37,10 +37,6 @@ virtual/libintl
 icu? ( dev-libs/icu:= )
 kerberos? ( virtual/krb5 )
 ldap? ( net-nds/openldap )
-llvm? (
-       sys-devel/llvm:=
-       sys-devel/clang:=
-)
 pam? ( virtual/pam )
 perl? ( >=dev-lang/perl-5.8:= )
 python? ( ${PYTHON_DEPS} )
@@ -103,6 +99,9 @@ pkg_setup() {
 }
 
 src_prepare() {
+       # Work around PPC{,64} compilation bug where bool is already defined
+       sed '/#ifndef __cplusplus/a #undef bool' -i src/include/c.h || die
+
        # Set proper run directory
        sed "s|\(PGSOCKET_DIR\s\+\)\"/tmp\"|\1\"${EPREFIX}/run/postgresql\"|" \
                -i src/include/pg_config_manual.h || die
@@ -112,10 +111,10 @@ src_prepare() {
        # hardened and non-hardened environments. (Bug #528786)
        sed 's/@install_bin@/install -c/' -i src/Makefile.global.in || die
 
-       use server || eapply "${FILESDIR}/${PN}-11_beta1-no-server.patch"
+       use server || eapply "${FILESDIR}/${PN}-10.2-no-server.patch"
 
        if use pam ; then
-               sed "s/\(#define PGSQL_PAM_SERVICE \"postgresql\)/\1-${SLOT}/" \
+               sed -e "s/\(#define PGSQL_PAM_SERVICE 
\"postgresql\)/\1-${SLOT}/" \
                        -i src/backend/libpq/auth.c || \
                        die 'PGSQL_PAM_SERVICE rename failed.'
        fi
@@ -160,7 +159,6 @@ src_configure() {
                $(use_with icu) \
                $(use_with kerberos gssapi) \
                $(use_with ldap) \
-               $(use_with llvm) \
                $(use_with pam) \
                $(use_with perl) \
                $(use_with python) \
@@ -184,7 +182,7 @@ src_install() {
        emake DESTDIR="${D}" install
        emake DESTDIR="${D}" install -C contrib
 
-       dodoc README HISTORY
+       dodoc README HISTORY doc/{TODO,bug.template}
 
        # man pages are already built, but if we have the target make them,
        # they'll be generated from source before being installed so we
@@ -291,7 +289,7 @@ pkg_postinst() {
                elog "https://wiki.gentoo.org/wiki/PostgreSQL";
                elog
                elog "Official documentation:"
-               elog "http://www.postgresql.org/docs/${SLOT}/static/index.html";
+               elog "https://www.postgresql.org/docs/${SLOT}/static/index.html";
                elog
                elog "The default location of the Unix-domain socket is:"
                elog "    ${EROOT%/}/run/postgresql/"
@@ -364,8 +362,8 @@ pkg_config() {
        einfo "    ${EROOT%/}/etc/conf.d/postgresql-${SLOT}"
        einfo
        einfo "Information on options that can be passed to initdb are found 
at:"
-       einfo "    
http://www.postgresql.org/docs/${SLOT}/static/creating-cluster.html";
-       einfo "    
http://www.postgresql.org/docs/${SLOT}/static/app-initdb.html";
+       einfo "    
https://www.postgresql.org/docs/${SLOT}/static/creating-cluster.html";
+       einfo "    
https://www.postgresql.org/docs/${SLOT}/static/app-initdb.html";
        einfo
        einfo "PG_INITDB_OPTS is currently set to:"
        if [[ -z "${PG_INITDB_OPTS}" ]] ; then
@@ -393,9 +391,9 @@ pkg_config() {
 
        einfo "Creating the data directory ..."
        if [[ ${EUID} == 0 ]] ; then
-               mkdir -p "$(dirname ${DATA_DIR%/})" || die "Couldn't parent 
dirs"
-               mkdir -m 0700 "${DATA_DIR%/}" || die "Couldn't make DATA_DIR"
-               chown -h postgres:postgres "${DATA_DIR%/}" || die "Couldn't 
chown"
+               mkdir -p "${DATA_DIR}"
+               chown -Rf postgres:postgres "${DATA_DIR}"
+               chmod 0700 "${DATA_DIR}"
        fi
 
        einfo "Initializing the database ..."

diff --git a/dev-db/postgresql/postgresql-12_beta1-r1.ebuild 
b/dev-db/postgresql/postgresql-11.4.ebuild
similarity index 99%
copy from dev-db/postgresql/postgresql-12_beta1-r1.ebuild
copy to dev-db/postgresql/postgresql-11.4.ebuild
index 5b3d4e8e26c..b55fe07666c 100644
--- a/dev-db/postgresql/postgresql-12_beta1-r1.ebuild
+++ b/dev-db/postgresql/postgresql-11.4.ebuild
@@ -184,7 +184,7 @@ src_install() {
        emake DESTDIR="${D}" install
        emake DESTDIR="${D}" install -C contrib
 
-       dodoc README HISTORY
+       dodoc README HISTORY doc/{TODO,bug.template}
 
        # man pages are already built, but if we have the target make them,
        # they'll be generated from source before being installed so we

diff --git a/dev-db/postgresql/postgresql-12_beta1-r1.ebuild 
b/dev-db/postgresql/postgresql-12_beta2.ebuild
similarity index 99%
copy from dev-db/postgresql/postgresql-12_beta1-r1.ebuild
copy to dev-db/postgresql/postgresql-12_beta2.ebuild
index 5b3d4e8e26c..1a74ef1db19 100644
--- a/dev-db/postgresql/postgresql-12_beta1-r1.ebuild
+++ b/dev-db/postgresql/postgresql-12_beta2.ebuild
@@ -18,7 +18,7 @@ SLOT=$(ver_cut 1)
 MY_PV=${PV/_/}
 S="${WORKDIR}/${PN}-${MY_PV}"
 
-SRC_URI="mirror://postgresql/source/v${MY_PV}/postgresql-${MY_PV}.tar.bz2"
+SRC_URI="mirror://postgresql/source/v${SLOT}/postgresql-${MY_PV}.tar.bz2"
 
 LICENSE="POSTGRESQL GPL-2"
 DESCRIPTION="PostgreSQL RDBMS"

diff --git a/dev-db/postgresql/postgresql-12_beta1-r1.ebuild 
b/dev-db/postgresql/postgresql-9.4.23.ebuild
similarity index 80%
copy from dev-db/postgresql/postgresql-12_beta1-r1.ebuild
copy to dev-db/postgresql/postgresql-9.4.23.ebuild
index 5b3d4e8e26c..b08e6262967 100644
--- a/dev-db/postgresql/postgresql-12_beta1-r1.ebuild
+++ b/dev-db/postgresql/postgresql-9.4.23.ebuild
@@ -6,27 +6,24 @@ EAPI=7
 PYTHON_COMPAT=( python2_7 python3_{5,6,7} )
 
 PLOCALES="af cs de en es fa fr hr hu it ko nb pl pt_BR ro ru sk sl sv tr zh_CN
-                zh_TW"
+                 zh_TW"
 
 inherit flag-o-matic l10n linux-info multilib pam prefix python-single-r1 \
                systemd user
 
-KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~mips ~ppc ~ppc64 ~s390 ~sh 
~sparc ~x86 ~amd64-fbsd ~x86-fbsd ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos 
~x86-macos ~sparc-solaris ~sparc64-solaris ~x64-solaris ~x86-solaris"
+KEYWORDS="~alpha ~amd64 ~arm ~hppa ~ia64 ~mips ~ppc ~ppc64 ~s390 ~sh ~sparc 
~x86 ~amd64-fbsd ~x86-fbsd ~ppc-macos ~x86-solaris"
 
-SLOT=$(ver_cut 1)
+SLOT=$(ver_cut 1-2)
 
-MY_PV=${PV/_/}
-S="${WORKDIR}/${PN}-${MY_PV}"
-
-SRC_URI="mirror://postgresql/source/v${MY_PV}/postgresql-${MY_PV}.tar.bz2"
+SRC_URI="mirror://postgresql/source/v${PV}/postgresql-${PV}.tar.bz2"
 
 LICENSE="POSTGRESQL GPL-2"
 DESCRIPTION="PostgreSQL RDBMS"
-HOMEPAGE="http://www.postgresql.org/";
+HOMEPAGE="https://www.postgresql.org/";
 
-IUSE="debug doc icu kerberos kernel_linux ldap libressl llvm nls pam
-         perl python +readline selinux +server systemd ssl static-libs tcl
-         threads uuid xml zlib"
+IUSE="debug doc kerberos kernel_linux ldap libressl nls pam perl
+         -pg_legacytimestamp python +readline selinux +server systemd ssl
+         static-libs tcl threads uuid xml zlib"
 
 REQUIRED_USE="python? ( ${PYTHON_REQUIRED_USE} )"
 
@@ -34,18 +31,12 @@ CDEPEND="
 >=app-eselect/eselect-postgresql-2.0
 sys-apps/less
 virtual/libintl
-icu? ( dev-libs/icu:= )
 kerberos? ( virtual/krb5 )
 ldap? ( net-nds/openldap )
-llvm? (
-       sys-devel/llvm:=
-       sys-devel/clang:=
-)
 pam? ( virtual/pam )
 perl? ( >=dev-lang/perl-5.8:= )
 python? ( ${PYTHON_DEPS} )
 readline? ( sys-libs/readline:0= )
-server? ( systemd? ( sys-apps/systemd ) )
 ssl? (
        !libressl? ( >=dev-libs/openssl-0.9.6-r1:0= )
        libressl? ( dev-libs/libressl:= )
@@ -103,6 +94,9 @@ pkg_setup() {
 }
 
 src_prepare() {
+       # Work around PPC{,64} compilation bug where bool is already defined
+       sed '/#ifndef __cplusplus/a #undef bool' -i src/include/c.h || die
+
        # Set proper run directory
        sed "s|\(PGSOCKET_DIR\s\+\)\"/tmp\"|\1\"${EPREFIX}/run/postgresql\"|" \
                -i src/include/pg_config_manual.h || die
@@ -112,10 +106,10 @@ src_prepare() {
        # hardened and non-hardened environments. (Bug #528786)
        sed 's/@install_bin@/install -c/' -i src/Makefile.global.in || die
 
-       use server || eapply "${FILESDIR}/${PN}-11_beta1-no-server.patch"
+       use server || eapply "${FILESDIR}/${PN}-9.4.10-no-server.patch"
 
        if use pam ; then
-               sed "s/\(#define PGSQL_PAM_SERVICE \"postgresql\)/\1-${SLOT}/" \
+               sed -e "s/\(#define PGSQL_PAM_SERVICE 
\"postgresql\)/\1-${SLOT}/" \
                        -i src/backend/libpq/auth.c || \
                        die 'PGSQL_PAM_SERVICE rename failed.'
        fi
@@ -154,19 +148,16 @@ src_configure() {
                --mandir="${PO}/usr/share/postgresql-${SLOT}/man" \
                --sysconfdir="${PO}/etc/postgresql-${SLOT}" \
                --with-system-tzdata="${PO}/usr/share/zoneinfo" \
-               $(use_enable !alpha spinlocks) \
+               $(use_enable !pg_legacytimestamp integer-datetimes) \
                $(use_enable debug) \
                $(use_enable threads thread-safety) \
-               $(use_with icu) \
                $(use_with kerberos gssapi) \
                $(use_with ldap) \
-               $(use_with llvm) \
                $(use_with pam) \
                $(use_with perl) \
                $(use_with python) \
                $(use_with readline) \
                $(use_with ssl openssl) \
-               $(usex server "$(use_with systemd)" '--without-systemd') \
                $(use_with tcl) \
                ${uuid_config} \
                $(use_with xml libxml) \
@@ -184,7 +175,7 @@ src_install() {
        emake DESTDIR="${D}" install
        emake DESTDIR="${D}" install -C contrib
 
-       dodoc README HISTORY
+       dodoc README HISTORY doc/{TODO,bug.template}
 
        # man pages are already built, but if we have the target make them,
        # they'll be generated from source before being installed so we
@@ -194,13 +185,7 @@ src_install() {
        doins -r doc/src/sgml/man{1,3,7}
        if ! use server; then
                # Remove man pages for non-existent binaries
-               serverman=(
-                       initdb
-                       
pg_{archivecleanup,controldata,ctl,resetwal,rewind,standby}
-                       pg_{test_{fsync,timing},upgrade,waldump}
-                       post{gres,master}
-               )
-               for m in ${serverman[@]} ; do
+               for m in 
{initdb,pg_{controldata,ctl,resetxlog},post{gres,master}}; do
                        rm "${ED}/usr/share/postgresql-${SLOT}/man/man1/${m}.1"
                done
        fi
@@ -216,7 +201,7 @@ src_install() {
 
                for f in 
"${ED}/usr/share/postgresql-${SLOT}/man/man${mansec}"/* ; do
                        bn=$(basename "${f}")
-                       slotted_name=${bn%.${mansec}}${SLOT}.${mansec}
+                       slotted_name=${bn%.${mansec}}${SLOT/.}.${mansec}
                        case ${bn} in
                                TABLE.7|WITH.7)
                                        echo ".so ${rel_manpath}/SELECT.7" > 
${slotted_name}
@@ -239,19 +224,24 @@ src_install() {
                find "${ED}" -name '*.a' ! -name libpgport.a ! -name 
libpgcommon.a \
                         -delete
 
-       # Make slot specific links to programs
        local f bn
        for f in $(find "${ED}/usr/$(get_libdir)/postgresql-${SLOT}/bin" \
                                        -mindepth 1 -maxdepth 1)
        do
                bn=$(basename "${f}")
+               # Temporarily tack on tmp to workaround a file collision
+               # issue. This is only necessary for 9.7 and earlier. 10 never
+               # had this issue.
                dosym "../$(get_libdir)/postgresql-${SLOT}/bin/${bn}" \
-                         "/usr/bin/${bn}${SLOT/.}"
+                         "/usr/bin/${bn}${SLOT/.}tmp"
        done
 
        if use doc ; then
                docinto html
                dodoc doc/src/sgml/html/*
+
+               docinto sgml
+               dodoc doc/src/sgml/*.{sgml,dsl}
        fi
 
        if use server; then
@@ -263,12 +253,13 @@ src_install() {
 
                if use systemd; then
                        sed -e "s|@SLOT@|${SLOT}|g" -e 
"s|@LIBDIR@|$(get_libdir)|g" \
-                               "${FILESDIR}/${PN}.service-9.6-r1" | \
+                               "${FILESDIR}/${PN}.service-9.2" | \
                                systemd_newunit - ${PN}-${SLOT}.service
-                       newbin "${FILESDIR}"/${PN}-check-db-dir 
${PN}-${SLOT}-check-db-dir
                        systemd_newtmpfilesd "${FILESDIR}"/${PN}.tmpfiles 
${PN}-${SLOT}.conf
                fi
 
+               newbin "${FILESDIR}"/${PN}-check-db-dir 
${PN}-${SLOT}-check-db-dir
+
                use pam && pamd_mimic system-auth ${PN}-${SLOT} auth account 
session
 
                if use prefix ; then
@@ -278,6 +269,40 @@ src_install() {
        fi
 }
 
+pkg_preinst() {
+       # Find all of the slot-specific symlinks, if any, in /usr/bin (e.g.,
+       # /usr/bin/psql96). They may have been created by the
+       # postgresql.eselect module, but they're handled within this ebuild
+       # now. It's alright if we momentarily delete /usr/bin/psql as it
+       # will be recreated by the eselect module in pkg_ppostinst(). This
+       # is only necessary for 9.7 and earlier. 10 and later were never
+       # handled in this manner.
+       local canonicalise
+       if type -p realpath > /dev/null; then
+               canonicalise=realpath
+       elif type -p readlink > /dev/null; then
+               canonicalise='readlink -f'
+       else
+               # can't die, subshell
+               die "No readlink nor realpath found, cannot canonicalise"
+       fi
+
+       local l
+       # First remove any symlinks in /usr/bin that may have been created
+       # by the old eselect
+       for l in $(find "${ROOT%/}/usr/bin" -mindepth 1 -maxdepth 1 -type l) ; 
do
+               if [[ $(${canonicalise} "${l}") == *postgresql-${SLOT}* ]] ; 
then
+                       rm "${l}" || ewarn "Couldn't remove ${l}"
+               fi
+       done
+
+       # Then move the symlinks created by the ebuild to their proper place.
+       for l in "${ED}"/usr/bin/*tmp ; do
+               mv "${l}" "${l%tmp}" \
+                       || ewarn "Couldn't rename $(basename ${l}) to 
$(basename ${l%tmp})"
+       done
+}
+
 pkg_postinst() {
        use server && use systemd && systemd_tmpfiles_create ${PN}-${SLOT}.conf
        postgresql-config update
@@ -291,7 +316,7 @@ pkg_postinst() {
                elog "https://wiki.gentoo.org/wiki/PostgreSQL";
                elog
                elog "Official documentation:"
-               elog "http://www.postgresql.org/docs/${SLOT}/static/index.html";
+               elog "https://www.postgresql.org/docs/${SLOT}/static/index.html";
                elog
                elog "The default location of the Unix-domain socket is:"
                elog "    ${EROOT%/}/run/postgresql/"
@@ -303,14 +328,6 @@ pkg_postinst() {
                elog "Then, execute the following command to setup the initial 
database"
                elog "environment:"
                elog "    emerge --config =${CATEGORY}/${PF}"
-
-               if [[ -n ${REPLACING_VERSIONS} ]] ; then
-                       ewarn "If your system is using 'pg_stat_statements' and 
you are running a"
-                       ewarn "version of PostgreSQL ${SLOT}, we advise that 
you execute"
-                       ewarn "the following command after upgrading:"
-                       ewarn
-                       ewarn "ALTER EXTENSION pg_stat_statements UPDATE;"
-               fi
        fi
 }
 
@@ -364,8 +381,8 @@ pkg_config() {
        einfo "    ${EROOT%/}/etc/conf.d/postgresql-${SLOT}"
        einfo
        einfo "Information on options that can be passed to initdb are found 
at:"
-       einfo "    
http://www.postgresql.org/docs/${SLOT}/static/creating-cluster.html";
-       einfo "    
http://www.postgresql.org/docs/${SLOT}/static/app-initdb.html";
+       einfo "    
https://www.postgresql.org/docs/${SLOT}/static/creating-cluster.html";
+       einfo "    
https://www.postgresql.org/docs/${SLOT}/static/app-initdb.html";
        einfo
        einfo "PG_INITDB_OPTS is currently set to:"
        if [[ -z "${PG_INITDB_OPTS}" ]] ; then
@@ -393,9 +410,9 @@ pkg_config() {
 
        einfo "Creating the data directory ..."
        if [[ ${EUID} == 0 ]] ; then
-               mkdir -p "$(dirname ${DATA_DIR%/})" || die "Couldn't parent 
dirs"
-               mkdir -m 0700 "${DATA_DIR%/}" || die "Couldn't make DATA_DIR"
-               chown -h postgres:postgres "${DATA_DIR%/}" || die "Couldn't 
chown"
+               mkdir -p "${DATA_DIR}"
+               chown -Rf postgres:postgres "${DATA_DIR}"
+               chmod 0700 "${DATA_DIR}"
        fi
 
        einfo "Initializing the database ..."
@@ -427,11 +444,9 @@ pkg_config() {
        einfo "by default. You can disable it in the cluster's:"
        einfo "    ${PGDATA%/}/postgresql.conf"
        einfo
-       if ! use systemd; then
-               einfo "The PostgreSQL server, by default, will log events to:"
-               einfo "    ${DATA_DIR%/}/postmaster.log"
-               einfo
-       fi
+       einfo "The PostgreSQL server, by default, will log events to:"
+       einfo "    ${DATA_DIR%/}/postmaster.log"
+       einfo
        if use prefix ; then
                einfo "The location of the configuration files have moved to:"
                einfo "    ${PGDATA}"
@@ -442,9 +457,6 @@ pkg_config() {
                einfo
                einfo "Or move the configuration files back:"
                einfo "mv ${PGDATA}*.conf ${DATA_DIR}"
-       elif use systemd; then
-               einfo "You should use the 'postgresql-${SLOT}.service' unit to 
run PostgreSQL"
-               einfo "instead of 'pg_ctl'."
        else
                einfo "You should use the 
'${EROOT%/}/etc/init.d/postgresql-${SLOT}' script to run PostgreSQL"
                einfo "instead of 'pg_ctl'."

diff --git a/dev-db/postgresql/postgresql-12_beta1-r1.ebuild 
b/dev-db/postgresql/postgresql-9.5.18.ebuild
similarity index 79%
copy from dev-db/postgresql/postgresql-12_beta1-r1.ebuild
copy to dev-db/postgresql/postgresql-9.5.18.ebuild
index 5b3d4e8e26c..14d84350ff6 100644
--- a/dev-db/postgresql/postgresql-12_beta1-r1.ebuild
+++ b/dev-db/postgresql/postgresql-9.5.18.ebuild
@@ -6,27 +6,24 @@ EAPI=7
 PYTHON_COMPAT=( python2_7 python3_{5,6,7} )
 
 PLOCALES="af cs de en es fa fr hr hu it ko nb pl pt_BR ro ru sk sl sv tr zh_CN
-                zh_TW"
+                 zh_TW"
 
 inherit flag-o-matic l10n linux-info multilib pam prefix python-single-r1 \
                systemd user
 
-KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~mips ~ppc ~ppc64 ~s390 ~sh 
~sparc ~x86 ~amd64-fbsd ~x86-fbsd ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos 
~x86-macos ~sparc-solaris ~sparc64-solaris ~x64-solaris ~x86-solaris"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~mips ~ppc ~ppc64 ~s390 ~sh 
~sparc ~x86 ~amd64-fbsd ~x86-fbsd ~ppc-macos ~x86-solaris"
 
-SLOT=$(ver_cut 1)
+SLOT=$(ver_cut 1-2)
 
-MY_PV=${PV/_/}
-S="${WORKDIR}/${PN}-${MY_PV}"
-
-SRC_URI="mirror://postgresql/source/v${MY_PV}/postgresql-${MY_PV}.tar.bz2"
+SRC_URI="mirror://postgresql/source/v${PV}/postgresql-${PV}.tar.bz2"
 
 LICENSE="POSTGRESQL GPL-2"
 DESCRIPTION="PostgreSQL RDBMS"
-HOMEPAGE="http://www.postgresql.org/";
+HOMEPAGE="https://www.postgresql.org/";
 
-IUSE="debug doc icu kerberos kernel_linux ldap libressl llvm nls pam
-         perl python +readline selinux +server systemd ssl static-libs tcl
-         threads uuid xml zlib"
+IUSE="debug doc kerberos kernel_linux ldap libressl nls pam perl
+         -pg_legacytimestamp python +readline selinux +server systemd ssl
+         static-libs tcl threads uuid xml zlib"
 
 REQUIRED_USE="python? ( ${PYTHON_REQUIRED_USE} )"
 
@@ -34,18 +31,12 @@ CDEPEND="
 >=app-eselect/eselect-postgresql-2.0
 sys-apps/less
 virtual/libintl
-icu? ( dev-libs/icu:= )
 kerberos? ( virtual/krb5 )
 ldap? ( net-nds/openldap )
-llvm? (
-       sys-devel/llvm:=
-       sys-devel/clang:=
-)
 pam? ( virtual/pam )
 perl? ( >=dev-lang/perl-5.8:= )
 python? ( ${PYTHON_DEPS} )
 readline? ( sys-libs/readline:0= )
-server? ( systemd? ( sys-apps/systemd ) )
 ssl? (
        !libressl? ( >=dev-libs/openssl-0.9.6-r1:0= )
        libressl? ( dev-libs/libressl:= )
@@ -103,6 +94,9 @@ pkg_setup() {
 }
 
 src_prepare() {
+       # Work around PPC{,64} compilation bug where bool is already defined
+       sed '/#ifndef __cplusplus/a #undef bool' -i src/include/c.h || die
+
        # Set proper run directory
        sed "s|\(PGSOCKET_DIR\s\+\)\"/tmp\"|\1\"${EPREFIX}/run/postgresql\"|" \
                -i src/include/pg_config_manual.h || die
@@ -112,10 +106,10 @@ src_prepare() {
        # hardened and non-hardened environments. (Bug #528786)
        sed 's/@install_bin@/install -c/' -i src/Makefile.global.in || die
 
-       use server || eapply "${FILESDIR}/${PN}-11_beta1-no-server.patch"
+       use server || eapply "${FILESDIR}/${PN}-9.5.5-no-server.patch"
 
        if use pam ; then
-               sed "s/\(#define PGSQL_PAM_SERVICE \"postgresql\)/\1-${SLOT}/" \
+               sed -e "s/\(#define PGSQL_PAM_SERVICE 
\"postgresql\)/\1-${SLOT}/" \
                        -i src/backend/libpq/auth.c || \
                        die 'PGSQL_PAM_SERVICE rename failed.'
        fi
@@ -155,18 +149,16 @@ src_configure() {
                --sysconfdir="${PO}/etc/postgresql-${SLOT}" \
                --with-system-tzdata="${PO}/usr/share/zoneinfo" \
                $(use_enable !alpha spinlocks) \
+               $(use_enable !pg_legacytimestamp integer-datetimes) \
                $(use_enable debug) \
                $(use_enable threads thread-safety) \
-               $(use_with icu) \
                $(use_with kerberos gssapi) \
                $(use_with ldap) \
-               $(use_with llvm) \
                $(use_with pam) \
                $(use_with perl) \
                $(use_with python) \
                $(use_with readline) \
                $(use_with ssl openssl) \
-               $(usex server "$(use_with systemd)" '--without-systemd') \
                $(use_with tcl) \
                ${uuid_config} \
                $(use_with xml libxml) \
@@ -184,7 +176,7 @@ src_install() {
        emake DESTDIR="${D}" install
        emake DESTDIR="${D}" install -C contrib
 
-       dodoc README HISTORY
+       dodoc README HISTORY doc/{TODO,bug.template}
 
        # man pages are already built, but if we have the target make them,
        # they'll be generated from source before being installed so we
@@ -194,13 +186,7 @@ src_install() {
        doins -r doc/src/sgml/man{1,3,7}
        if ! use server; then
                # Remove man pages for non-existent binaries
-               serverman=(
-                       initdb
-                       
pg_{archivecleanup,controldata,ctl,resetwal,rewind,standby}
-                       pg_{test_{fsync,timing},upgrade,waldump}
-                       post{gres,master}
-               )
-               for m in ${serverman[@]} ; do
+               for m in 
{initdb,pg_{controldata,ctl,resetxlog},post{gres,master}}; do
                        rm "${ED}/usr/share/postgresql-${SLOT}/man/man1/${m}.1"
                done
        fi
@@ -216,7 +202,7 @@ src_install() {
 
                for f in 
"${ED}/usr/share/postgresql-${SLOT}/man/man${mansec}"/* ; do
                        bn=$(basename "${f}")
-                       slotted_name=${bn%.${mansec}}${SLOT}.${mansec}
+                       slotted_name=${bn%.${mansec}}${SLOT/.}.${mansec}
                        case ${bn} in
                                TABLE.7|WITH.7)
                                        echo ".so ${rel_manpath}/SELECT.7" > 
${slotted_name}
@@ -239,19 +225,24 @@ src_install() {
                find "${ED}" -name '*.a' ! -name libpgport.a ! -name 
libpgcommon.a \
                         -delete
 
-       # Make slot specific links to programs
        local f bn
        for f in $(find "${ED}/usr/$(get_libdir)/postgresql-${SLOT}/bin" \
                                        -mindepth 1 -maxdepth 1)
        do
                bn=$(basename "${f}")
+               # Temporarily tack on tmp to workaround a file collision
+               # issue. This is only necessary for 9.7 and earlier. 10 never
+               # had this issue.
                dosym "../$(get_libdir)/postgresql-${SLOT}/bin/${bn}" \
-                         "/usr/bin/${bn}${SLOT/.}"
+                         "/usr/bin/${bn}${SLOT/.}tmp"
        done
 
        if use doc ; then
                docinto html
                dodoc doc/src/sgml/html/*
+
+               docinto sgml
+               dodoc doc/src/sgml/*.{sgml,dsl}
        fi
 
        if use server; then
@@ -263,12 +254,13 @@ src_install() {
 
                if use systemd; then
                        sed -e "s|@SLOT@|${SLOT}|g" -e 
"s|@LIBDIR@|$(get_libdir)|g" \
-                               "${FILESDIR}/${PN}.service-9.6-r1" | \
+                               "${FILESDIR}/${PN}.service-9.2" | \
                                systemd_newunit - ${PN}-${SLOT}.service
-                       newbin "${FILESDIR}"/${PN}-check-db-dir 
${PN}-${SLOT}-check-db-dir
                        systemd_newtmpfilesd "${FILESDIR}"/${PN}.tmpfiles 
${PN}-${SLOT}.conf
                fi
 
+               newbin "${FILESDIR}"/${PN}-check-db-dir 
${PN}-${SLOT}-check-db-dir
+
                use pam && pamd_mimic system-auth ${PN}-${SLOT} auth account 
session
 
                if use prefix ; then
@@ -278,10 +270,49 @@ src_install() {
        fi
 }
 
+pkg_preinst() {
+       # Find all of the slot-specific symlinks, if any, in /usr/bin (e.g.,
+       # /usr/bin/psql96). They may have been created by the
+       # postgresql.eselect module, but they're handled within this ebuild
+       # now. It's alright if we momentarily delete /usr/bin/psql as it
+       # will be recreated by the eselect module in pkg_ppostinst(). This
+       # is only necessary for 9.7 and earlier. 10 and later were never
+       # handled in this manner.
+       local canonicalise
+       if type -p realpath > /dev/null; then
+               canonicalise=realpath
+       elif type -p readlink > /dev/null; then
+               canonicalise='readlink -f'
+       else
+               # can't die, subshell
+               die "No readlink nor realpath found, cannot canonicalise"
+       fi
+
+       local l
+       # First remove any symlinks in /usr/bin that may have been created
+       # by the old eselect
+       for l in $(find "${ROOT%/}/usr/bin" -mindepth 1 -maxdepth 1 -type l) ; 
do
+               if [[ $(${canonicalise} "${l}") == *postgresql-${SLOT}* ]] ; 
then
+                       rm "${l}" || ewarn "Couldn't remove ${l}"
+               fi
+       done
+
+       # Then move the symlinks created by the ebuild to their proper place.
+       for l in "${ED}"/usr/bin/*tmp ; do
+               mv "${l}" "${l%tmp}" \
+                       || ewarn "Couldn't rename $(basename ${l}) to 
$(basename ${l%tmp})"
+       done
+}
+
 pkg_postinst() {
        use server && use systemd && systemd_tmpfiles_create ${PN}-${SLOT}.conf
        postgresql-config update
 
+       if use alpha && use server ; then
+               ewarn "PostgreSQL 9.5+ no longer has native spinlock support on 
Alpha platforms."
+               ewarn "As a result, performance will be extremely degraded."
+       fi
+
        elog "If you need a global psqlrc-file, you can place it in:"
        elog "    ${EROOT%/}/etc/postgresql-${SLOT}/"
 
@@ -291,7 +322,7 @@ pkg_postinst() {
                elog "https://wiki.gentoo.org/wiki/PostgreSQL";
                elog
                elog "Official documentation:"
-               elog "http://www.postgresql.org/docs/${SLOT}/static/index.html";
+               elog "https://www.postgresql.org/docs/${SLOT}/static/index.html";
                elog
                elog "The default location of the Unix-domain socket is:"
                elog "    ${EROOT%/}/run/postgresql/"
@@ -303,14 +334,6 @@ pkg_postinst() {
                elog "Then, execute the following command to setup the initial 
database"
                elog "environment:"
                elog "    emerge --config =${CATEGORY}/${PF}"
-
-               if [[ -n ${REPLACING_VERSIONS} ]] ; then
-                       ewarn "If your system is using 'pg_stat_statements' and 
you are running a"
-                       ewarn "version of PostgreSQL ${SLOT}, we advise that 
you execute"
-                       ewarn "the following command after upgrading:"
-                       ewarn
-                       ewarn "ALTER EXTENSION pg_stat_statements UPDATE;"
-               fi
        fi
 }
 
@@ -364,8 +387,8 @@ pkg_config() {
        einfo "    ${EROOT%/}/etc/conf.d/postgresql-${SLOT}"
        einfo
        einfo "Information on options that can be passed to initdb are found 
at:"
-       einfo "    
http://www.postgresql.org/docs/${SLOT}/static/creating-cluster.html";
-       einfo "    
http://www.postgresql.org/docs/${SLOT}/static/app-initdb.html";
+       einfo "    
https://www.postgresql.org/docs/${SLOT}/static/creating-cluster.html";
+       einfo "    
https://www.postgresql.org/docs/${SLOT}/static/app-initdb.html";
        einfo
        einfo "PG_INITDB_OPTS is currently set to:"
        if [[ -z "${PG_INITDB_OPTS}" ]] ; then
@@ -393,9 +416,9 @@ pkg_config() {
 
        einfo "Creating the data directory ..."
        if [[ ${EUID} == 0 ]] ; then
-               mkdir -p "$(dirname ${DATA_DIR%/})" || die "Couldn't parent 
dirs"
-               mkdir -m 0700 "${DATA_DIR%/}" || die "Couldn't make DATA_DIR"
-               chown -h postgres:postgres "${DATA_DIR%/}" || die "Couldn't 
chown"
+               mkdir -p "${DATA_DIR}"
+               chown -Rf postgres:postgres "${DATA_DIR}"
+               chmod 0700 "${DATA_DIR}"
        fi
 
        einfo "Initializing the database ..."
@@ -427,11 +450,9 @@ pkg_config() {
        einfo "by default. You can disable it in the cluster's:"
        einfo "    ${PGDATA%/}/postgresql.conf"
        einfo
-       if ! use systemd; then
-               einfo "The PostgreSQL server, by default, will log events to:"
-               einfo "    ${DATA_DIR%/}/postmaster.log"
-               einfo
-       fi
+       einfo "The PostgreSQL server, by default, will log events to:"
+       einfo "    ${DATA_DIR%/}/postmaster.log"
+       einfo
        if use prefix ; then
                einfo "The location of the configuration files have moved to:"
                einfo "    ${PGDATA}"
@@ -442,9 +463,6 @@ pkg_config() {
                einfo
                einfo "Or move the configuration files back:"
                einfo "mv ${PGDATA}*.conf ${DATA_DIR}"
-       elif use systemd; then
-               einfo "You should use the 'postgresql-${SLOT}.service' unit to 
run PostgreSQL"
-               einfo "instead of 'pg_ctl'."
        else
                einfo "You should use the 
'${EROOT%/}/etc/init.d/postgresql-${SLOT}' script to run PostgreSQL"
                einfo "instead of 'pg_ctl'."

diff --git a/dev-db/postgresql/postgresql-12_beta1-r1.ebuild 
b/dev-db/postgresql/postgresql-9.6.14.ebuild
similarity index 82%
rename from dev-db/postgresql/postgresql-12_beta1-r1.ebuild
rename to dev-db/postgresql/postgresql-9.6.14.ebuild
index 5b3d4e8e26c..a6c2ed402e2 100644
--- a/dev-db/postgresql/postgresql-12_beta1-r1.ebuild
+++ b/dev-db/postgresql/postgresql-9.6.14.ebuild
@@ -6,14 +6,14 @@ EAPI=7
 PYTHON_COMPAT=( python2_7 python3_{5,6,7} )
 
 PLOCALES="af cs de en es fa fr hr hu it ko nb pl pt_BR ro ru sk sl sv tr zh_CN
-                zh_TW"
+                 zh_TW"
 
 inherit flag-o-matic l10n linux-info multilib pam prefix python-single-r1 \
                systemd user
 
 KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~mips ~ppc ~ppc64 ~s390 ~sh 
~sparc ~x86 ~amd64-fbsd ~x86-fbsd ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos 
~x86-macos ~sparc-solaris ~sparc64-solaris ~x64-solaris ~x86-solaris"
 
-SLOT=$(ver_cut 1)
+SLOT=$(ver_cut 1-2)
 
 MY_PV=${PV/_/}
 S="${WORKDIR}/${PN}-${MY_PV}"
@@ -22,11 +22,11 @@ 
SRC_URI="mirror://postgresql/source/v${MY_PV}/postgresql-${MY_PV}.tar.bz2"
 
 LICENSE="POSTGRESQL GPL-2"
 DESCRIPTION="PostgreSQL RDBMS"
-HOMEPAGE="http://www.postgresql.org/";
+HOMEPAGE="https://www.postgresql.org/";
 
-IUSE="debug doc icu kerberos kernel_linux ldap libressl llvm nls pam
-         perl python +readline selinux +server systemd ssl static-libs tcl
-         threads uuid xml zlib"
+IUSE="debug doc kerberos kernel_linux ldap libressl nls pam perl
+         -pg_legacytimestamp python +readline selinux +server systemd ssl
+         static-libs tcl threads uuid xml zlib"
 
 REQUIRED_USE="python? ( ${PYTHON_REQUIRED_USE} )"
 
@@ -34,22 +34,17 @@ CDEPEND="
 >=app-eselect/eselect-postgresql-2.0
 sys-apps/less
 virtual/libintl
-icu? ( dev-libs/icu:= )
 kerberos? ( virtual/krb5 )
 ldap? ( net-nds/openldap )
-llvm? (
-       sys-devel/llvm:=
-       sys-devel/clang:=
-)
 pam? ( virtual/pam )
 perl? ( >=dev-lang/perl-5.8:= )
 python? ( ${PYTHON_DEPS} )
 readline? ( sys-libs/readline:0= )
-server? ( systemd? ( sys-apps/systemd ) )
 ssl? (
        !libressl? ( >=dev-libs/openssl-0.9.6-r1:0= )
        libressl? ( dev-libs/libressl:= )
 )
+server? ( systemd? ( sys-apps/systemd ) )
 tcl? ( >=dev-lang/tcl-8:0= )
 xml? ( dev-libs/libxml2 dev-libs/libxslt )
 zlib? ( sys-libs/zlib )
@@ -103,6 +98,9 @@ pkg_setup() {
 }
 
 src_prepare() {
+       # Work around PPC{,64} compilation bug where bool is already defined
+       sed '/#ifndef __cplusplus/a #undef bool' -i src/include/c.h || die
+
        # Set proper run directory
        sed "s|\(PGSOCKET_DIR\s\+\)\"/tmp\"|\1\"${EPREFIX}/run/postgresql\"|" \
                -i src/include/pg_config_manual.h || die
@@ -112,10 +110,10 @@ src_prepare() {
        # hardened and non-hardened environments. (Bug #528786)
        sed 's/@install_bin@/install -c/' -i src/Makefile.global.in || die
 
-       use server || eapply "${FILESDIR}/${PN}-11_beta1-no-server.patch"
+       use server || eapply "${FILESDIR}/${PN}-${SLOT}.3-no-server.patch"
 
        if use pam ; then
-               sed "s/\(#define PGSQL_PAM_SERVICE \"postgresql\)/\1-${SLOT}/" \
+               sed -e "s/\(#define PGSQL_PAM_SERVICE 
\"postgresql\)/\1-${SLOT}/" \
                        -i src/backend/libpq/auth.c || \
                        die 'PGSQL_PAM_SERVICE rename failed.'
        fi
@@ -155,12 +153,11 @@ src_configure() {
                --sysconfdir="${PO}/etc/postgresql-${SLOT}" \
                --with-system-tzdata="${PO}/usr/share/zoneinfo" \
                $(use_enable !alpha spinlocks) \
+               $(use_enable !pg_legacytimestamp integer-datetimes) \
                $(use_enable debug) \
                $(use_enable threads thread-safety) \
-               $(use_with icu) \
                $(use_with kerberos gssapi) \
                $(use_with ldap) \
-               $(use_with llvm) \
                $(use_with pam) \
                $(use_with perl) \
                $(use_with python) \
@@ -184,7 +181,7 @@ src_install() {
        emake DESTDIR="${D}" install
        emake DESTDIR="${D}" install -C contrib
 
-       dodoc README HISTORY
+       dodoc README HISTORY doc/{TODO,bug.template}
 
        # man pages are already built, but if we have the target make them,
        # they'll be generated from source before being installed so we
@@ -194,13 +191,7 @@ src_install() {
        doins -r doc/src/sgml/man{1,3,7}
        if ! use server; then
                # Remove man pages for non-existent binaries
-               serverman=(
-                       initdb
-                       
pg_{archivecleanup,controldata,ctl,resetwal,rewind,standby}
-                       pg_{test_{fsync,timing},upgrade,waldump}
-                       post{gres,master}
-               )
-               for m in ${serverman[@]} ; do
+               for m in 
{initdb,pg_{controldata,ctl,resetxlog},post{gres,master}}; do
                        rm "${ED}/usr/share/postgresql-${SLOT}/man/man1/${m}.1"
                done
        fi
@@ -216,7 +207,7 @@ src_install() {
 
                for f in 
"${ED}/usr/share/postgresql-${SLOT}/man/man${mansec}"/* ; do
                        bn=$(basename "${f}")
-                       slotted_name=${bn%.${mansec}}${SLOT}.${mansec}
+                       slotted_name=${bn%.${mansec}}${SLOT/.}.${mansec}
                        case ${bn} in
                                TABLE.7|WITH.7)
                                        echo ".so ${rel_manpath}/SELECT.7" > 
${slotted_name}
@@ -239,19 +230,24 @@ src_install() {
                find "${ED}" -name '*.a' ! -name libpgport.a ! -name 
libpgcommon.a \
                         -delete
 
-       # Make slot specific links to programs
        local f bn
        for f in $(find "${ED}/usr/$(get_libdir)/postgresql-${SLOT}/bin" \
                                        -mindepth 1 -maxdepth 1)
        do
                bn=$(basename "${f}")
+               # Temporarily tack on tmp to workaround a file collision
+               # issue. This is only necessary for 9.7 and earlier. 10 never
+               # had this issue.
                dosym "../$(get_libdir)/postgresql-${SLOT}/bin/${bn}" \
-                         "/usr/bin/${bn}${SLOT/.}"
+                         "/usr/bin/${bn}${SLOT/.}tmp"
        done
 
        if use doc ; then
                docinto html
                dodoc doc/src/sgml/html/*
+
+               docinto sgml
+               dodoc doc/src/sgml/*.{sgml,dsl}
        fi
 
        if use server; then
@@ -265,10 +261,11 @@ src_install() {
                        sed -e "s|@SLOT@|${SLOT}|g" -e 
"s|@LIBDIR@|$(get_libdir)|g" \
                                "${FILESDIR}/${PN}.service-9.6-r1" | \
                                systemd_newunit - ${PN}-${SLOT}.service
-                       newbin "${FILESDIR}"/${PN}-check-db-dir 
${PN}-${SLOT}-check-db-dir
                        systemd_newtmpfilesd "${FILESDIR}"/${PN}.tmpfiles 
${PN}-${SLOT}.conf
                fi
 
+               newbin "${FILESDIR}"/${PN}-check-db-dir 
${PN}-${SLOT}-check-db-dir
+
                use pam && pamd_mimic system-auth ${PN}-${SLOT} auth account 
session
 
                if use prefix ; then
@@ -278,6 +275,40 @@ src_install() {
        fi
 }
 
+pkg_preinst() {
+       # Find all of the slot-specific symlinks, if any, in /usr/bin (e.g.,
+       # /usr/bin/psql96). They may have been created by the
+       # postgresql.eselect module, but they're handled within this ebuild
+       # now. It's alright if we momentarily delete /usr/bin/psql as it
+       # will be recreated by the eselect module in pkg_ppostinst(). This
+       # is only necessary for 9.7 and earlier. 10 and later were never
+       # handled in this manner.
+       local canonicalise
+       if type -p realpath > /dev/null; then
+               canonicalise=realpath
+       elif type -p readlink > /dev/null; then
+               canonicalise='readlink -f'
+       else
+               # can't die, subshell
+               die "No readlink nor realpath found, cannot canonicalise"
+       fi
+
+       local l
+       # First remove any symlinks in /usr/bin that may have been created
+       # by the old eselect
+       for l in $(find "${ROOT%/}/usr/bin" -mindepth 1 -maxdepth 1 -type l) ; 
do
+               if [[ $(${canonicalise} "${l}") == *postgresql-${SLOT}* ]] ; 
then
+                       rm "${l}" || ewarn "Couldn't remove ${l}"
+               fi
+       done
+
+       # Then move the symlinks created by the ebuild to their proper place.
+       for l in "${ED}"/usr/bin/*tmp ; do
+               mv "${l}" "${l%tmp}" \
+                       || ewarn "Couldn't rename $(basename ${l}) to 
$(basename ${l%tmp})"
+       done
+}
+
 pkg_postinst() {
        use server && use systemd && systemd_tmpfiles_create ${PN}-${SLOT}.conf
        postgresql-config update
@@ -291,7 +322,7 @@ pkg_postinst() {
                elog "https://wiki.gentoo.org/wiki/PostgreSQL";
                elog
                elog "Official documentation:"
-               elog "http://www.postgresql.org/docs/${SLOT}/static/index.html";
+               elog "https://www.postgresql.org/docs/${SLOT}/static/index.html";
                elog
                elog "The default location of the Unix-domain socket is:"
                elog "    ${EROOT%/}/run/postgresql/"
@@ -303,14 +334,6 @@ pkg_postinst() {
                elog "Then, execute the following command to setup the initial 
database"
                elog "environment:"
                elog "    emerge --config =${CATEGORY}/${PF}"
-
-               if [[ -n ${REPLACING_VERSIONS} ]] ; then
-                       ewarn "If your system is using 'pg_stat_statements' and 
you are running a"
-                       ewarn "version of PostgreSQL ${SLOT}, we advise that 
you execute"
-                       ewarn "the following command after upgrading:"
-                       ewarn
-                       ewarn "ALTER EXTENSION pg_stat_statements UPDATE;"
-               fi
        fi
 }
 
@@ -364,8 +387,8 @@ pkg_config() {
        einfo "    ${EROOT%/}/etc/conf.d/postgresql-${SLOT}"
        einfo
        einfo "Information on options that can be passed to initdb are found 
at:"
-       einfo "    
http://www.postgresql.org/docs/${SLOT}/static/creating-cluster.html";
-       einfo "    
http://www.postgresql.org/docs/${SLOT}/static/app-initdb.html";
+       einfo "    
https://www.postgresql.org/docs/${SLOT}/static/creating-cluster.html";
+       einfo "    
https://www.postgresql.org/docs/${SLOT}/static/app-initdb.html";
        einfo
        einfo "PG_INITDB_OPTS is currently set to:"
        if [[ -z "${PG_INITDB_OPTS}" ]] ; then
@@ -393,9 +416,9 @@ pkg_config() {
 
        einfo "Creating the data directory ..."
        if [[ ${EUID} == 0 ]] ; then
-               mkdir -p "$(dirname ${DATA_DIR%/})" || die "Couldn't parent 
dirs"
-               mkdir -m 0700 "${DATA_DIR%/}" || die "Couldn't make DATA_DIR"
-               chown -h postgres:postgres "${DATA_DIR%/}" || die "Couldn't 
chown"
+               mkdir -p "${DATA_DIR}"
+               chown -Rf postgres:postgres "${DATA_DIR}"
+               chmod 0700 "${DATA_DIR}"
        fi
 
        einfo "Initializing the database ..."

Reply via email to