dev-db/postgresql: Bump to 13_beta1
authorPatrick Lauer <patrick@gentoo.org>
Thu, 21 May 2020 15:06:56 +0000 (17:06 +0200)
committerPatrick Lauer <patrick@gentoo.org>
Thu, 21 May 2020 15:09:06 +0000 (17:09 +0200)
Package-Manager: Portage-2.3.99, Repoman-2.3.22
Signed-off-by: Patrick Lauer <patrick@gentoo.org>
dev-db/postgresql/Manifest
dev-db/postgresql/postgresql-13_beta1.ebuild [new file with mode: 0644]

index 5ff74d98e194f6c4289b400c28b5f4120a3228f9..423b260d4c1aba1f94958172c5c2d5b464fb2385 100644 (file)
@@ -4,6 +4,7 @@ DIST postgresql-11.7.tar.bz2 19890063 BLAKE2B 461c372567ff0b4ff4da52889be5d2822b
 DIST postgresql-11.8.tar.bz2 19922770 BLAKE2B a646b585bbafc95957fa60c7d119c02b69b727759d2189588508f8a690dc97a0ed1429a3379bc6fd48fb22ee92f3d811dedbf8aa43271361f9b7ac2c8d42a31b SHA512 fc3d0ebd224de60bda3fa71b6832958698238e9088cf46a80c376b8996cc3b2d017fde5dce1c1da1e5e6e23b78054aafad7ee1caa744bfb12c52317ccc8a1922
 DIST postgresql-12.2.tar.bz2 20363545 BLAKE2B 7b0cfe841d46b117ff5dd793be5537e916f92255eb0d000681ed62c497eef34c5d1261126be408f2b7f95274485e2787869cd4063461ab248b650c168b62548d SHA512 0e0ce8e21856e8f43e58b840c10c4e3ffae6d5207e0d778e9176e36f8e20e34633cbb06f0030a7c963c3491bb7e941456d91b55444c561cfc6f283fba76f33ee
 DIST postgresql-12.3.tar.bz2 20439892 BLAKE2B f7a44725f235c55a2849acd444de3a9c932314e2ae8c68d7f8e827439263b052bdf0fd5b6cdaa8197c4ce9ad1d4fbb02b5ec1af030365363993a36d8d95a4231 SHA512 68e2d244ae2a9f2138d7569bcadc1cf6f62a410fa56ad1d4ac53206f2adefabb5ae136110b41ca9246df0f8b8cb039918997e0f8a81fc7e6efb7ad10b3a59ba1
+DIST postgresql-13beta1.tar.bz2 21361108 BLAKE2B be5e41d49159ec5932ce958aab3b015b33ce02ef56abf47930754219e220672770785f6eed7966cd57fa9f3fd0d4527f5cb2813a4221443b56d70b7db7178b31 SHA512 8d8c13d7abf2127b0b0c04f080303906e8b0829d390530b308cbfa26e07cd2443a32281ef218a147499de5abe1fde8ab8818f581c68bf550cae1fbd235f46b80
 DIST postgresql-9.4.26.tar.bz2 16871195 BLAKE2B f26fd335293669a815a51ceb994b66e154c66f96f91e4c68d7df3490ad25f4b0366ebf7bfe2b209ff34965ea27a08562ace050f40d49cec94eb576d7a1becd1c SHA512 7d379d139c7b2bdac1df38743cbb46a1790a8d5174e8cf1141b7b4febcbc8f612e347bf4d355684eef24dfc73bb2796f85fc532908f26ba7195c685f198cbb72
 DIST postgresql-9.5.21.tar.bz2 17640928 BLAKE2B 8ffcf0befc331317a32d63d3cdfe44f7743f72f18b4bc46bee5ee80f8c489b4b1ef26abc8219f277acc922657fc21e3dc31f3fc9838621f44d95cc9405fca43b SHA512 8527356ee3b4f151c832aef50a8b96e923e0a6c77e5fe6ad597f50527f9d084a8feab7bede8fdbe29aab44383577d3f86e5286fb34e2d2b696cde34bd922e69d
 DIST postgresql-9.5.22.tar.bz2 17667386 BLAKE2B 6fe8ccf638af466e57f239c9d7f1a19bb6c33f6019955824f54f2fe63870675d841811318fb28707cc85ab8a9db550e6655773db0d89d801e26459c9d0d01a43 SHA512 489321fa49e17308d3a78353edf73a16295c1377ad429a94636df069d2bf55f538ba6570e3d2991dd28bcca45fee77c6c41fa9bade35ea7f9e581abff4c9a401
diff --git a/dev-db/postgresql/postgresql-13_beta1.ebuild b/dev-db/postgresql/postgresql-13_beta1.ebuild
new file mode 100644 (file)
index 0000000..888813e
--- /dev/null
@@ -0,0 +1,458 @@
+# Copyright 1999-2020 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+PYTHON_COMPAT=( python3_{6,7} )
+
+inherit flag-o-matic linux-info multilib pam prefix python-single-r1 systemd
+
+KEYWORDS=""
+
+SLOT=$(ver_cut 1)
+
+MY_PV=${PV/_/}
+S="${WORKDIR}/${PN}-${MY_PV}"
+
+SRC_URI="https://ftp.postgresql.org/pub/source/v${MY_PV}/postgresql-${MY_PV}.tar.bz2"
+
+LICENSE="POSTGRESQL GPL-2"
+DESCRIPTION="PostgreSQL RDBMS"
+HOMEPAGE="http://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"
+
+REQUIRED_USE="python? ( ${PYTHON_REQUIRED_USE} )"
+
+CDEPEND="
+>=app-eselect/eselect-postgresql-2.0
+acct-group/postgres
+acct-user/postgres
+sys-apps/less
+virtual/libintl
+icu? ( dev-libs/icu:= )
+kerberos? ( virtual/krb5 )
+ldap? ( net-nds/openldap )
+llvm? (
+       sys-devel/llvm:=
+       sys-devel/clang:=
+)
+pam? ( sys-libs/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:= )
+)
+tcl? ( >=dev-lang/tcl-8:0= )
+xml? ( dev-libs/libxml2 dev-libs/libxslt )
+zlib? ( sys-libs/zlib )
+"
+
+# uuid flags -- depend on sys-apps/util-linux for Linux libcs, or if no
+# supported libc in use depend on dev-libs/ossp-uuid. For BSD systems,
+# the libc includes UUID functions.
+UTIL_LINUX_LIBC=( elibc_{glibc,uclibc,musl} )
+BSD_LIBC=( elibc_{Free,Net,Open}BSD )
+
+nest_usedep() {
+       local front back
+       while [[ ${#} -gt 1 ]]; do
+               front+="${1}? ( "
+               back+=" )"
+               shift
+       done
+       echo "${front}${1}${back}"
+}
+
+IUSE+=" ${UTIL_LINUX_LIBC[@]} ${BSD_LIBC[@]}"
+CDEPEND+="
+uuid? (
+       ${UTIL_LINUX_LIBC[@]/%/? ( sys-apps/util-linux )}
+       $(nest_usedep ${UTIL_LINUX_LIBC[@]/#/!} ${BSD_LIBC[@]/#/!} dev-libs/ossp-uuid)
+)"
+
+DEPEND="${CDEPEND}
+sys-devel/bison
+sys-devel/flex
+nls? ( sys-devel/gettext )
+xml? ( virtual/pkgconfig )
+"
+
+RDEPEND="${CDEPEND}
+selinux? ( sec-policy/selinux-postgresql )
+"
+
+pkg_setup() {
+       use server && CONFIG_CHECK="~SYSVIPC" linux-info_pkg_setup
+
+       use python && python-single-r1_pkg_setup
+}
+
+src_prepare() {
+       # Set proper run directory
+       sed "s|\(PGSOCKET_DIR\s\+\)\"/tmp\"|\1\"${EPREFIX}/run/postgresql\"|" \
+               -i src/include/pg_config_manual.h || die
+
+       # Rely on $PATH being in the proper order so that the correct
+       # install program is used for modules utilizing PGXS in both
+       # hardened and non-hardened environments. (Bug #528786)
+       sed 's/@install_bin@/install -c/' -i src/Makefile.global.in || die
+
+       use server || eapply "${FILESDIR}/${PN}-12.1-no-server.patch"
+
+       if use pam ; then
+               sed "s/\(#define PGSQL_PAM_SERVICE \"postgresql\)/\1-${SLOT}/" \
+                       -i src/backend/libpq/auth.c || \
+                       die 'PGSQL_PAM_SERVICE rename failed.'
+       fi
+
+       eapply_user
+}
+
+src_configure() {
+       case ${CHOST} in
+               *-darwin*|*-solaris*)
+                       use nls && append-libs intl
+                       ;;
+       esac
+
+       export LDFLAGS_SL="${LDFLAGS}"
+       export LDFLAGS_EX="${LDFLAGS}"
+
+       local PO="${EPREFIX}"
+
+       local i uuid_config=""
+       if use uuid; then
+               for i in ${UTIL_LINUX_LIBC[@]}; do
+                       use ${i} && uuid_config="--with-uuid=e2fs"
+               done
+               for i in ${BSD_LIBC[@]}; do
+                       use ${i} && uuid_config="--with-uuid=bsd"
+               done
+               [[ -z $uuid_config ]] && uuid_config="--with-uuid=ossp"
+       fi
+
+       econf \
+               --prefix="${PO}/usr/$(get_libdir)/postgresql-${SLOT}" \
+               --datadir="${PO}/usr/share/postgresql-${SLOT}" \
+               --includedir="${PO}/usr/include/postgresql-${SLOT}" \
+               --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 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) \
+               $(use_with xml libxslt) \
+               $(use_with zlib) \
+               $(use_enable nls)
+}
+
+src_compile() {
+       emake
+       emake -C contrib
+}
+
+src_install() {
+       emake DESTDIR="${D}" install
+       emake DESTDIR="${D}" install -C contrib
+
+       dodoc README HISTORY
+
+       # man pages are already built, but if we have the target make them,
+       # they'll be generated from source before being installed so we
+       # manually install man pages.
+       # We use ${SLOT} instead of doman for postgresql.eselect
+       insinto /usr/share/postgresql-${SLOT}/man/
+       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
+                       rm "${ED}/usr/share/postgresql-${SLOT}/man/man1/${m}.1"
+               done
+       fi
+       docompress /usr/share/postgresql-${SLOT}/man/man{1,3,7}
+
+       # Create slot specific man pages
+       local bn f mansec slotted_name
+       for mansec in 1 3 7 ; do
+               local rel_manpath="../../postgresql-${SLOT}/man/man${mansec}"
+
+               mkdir -p "${ED}"/usr/share/man/man${mansec} || die "making man dir"
+               pushd "${ED}"/usr/share/man/man${mansec} > /dev/null || die "pushd failed"
+
+               for f in "${ED}/usr/share/postgresql-${SLOT}/man/man${mansec}"/* ; do
+                       bn=$(basename "${f}")
+                       slotted_name=${bn%.${mansec}}${SLOT}.${mansec}
+                       case ${bn} in
+                               TABLE.7|WITH.7)
+                                       echo ".so ${rel_manpath}/SELECT.7" > ${slotted_name}
+                                       ;;
+                               *)
+                                       echo ".so ${rel_manpath}/${bn}" > ${slotted_name}
+                                       ;;
+                       esac
+               done
+
+               popd > /dev/null
+       done
+
+       insinto /etc/postgresql-${SLOT}
+       newins src/bin/psql/psqlrc.sample psqlrc
+
+       # Don't delete libpg{port,common}.a (Bug #571046). They're always
+       # needed by extensions utilizing PGXS.
+       use static-libs || \
+               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}")
+               dosym "../$(get_libdir)/postgresql-${SLOT}/bin/${bn}" \
+                         "/usr/bin/${bn}${SLOT/.}"
+       done
+
+       if use doc ; then
+               docinto html
+               dodoc doc/src/sgml/html/*
+       fi
+
+       if use server; then
+               sed -e "s|@SLOT@|${SLOT}|g" -e "s|@LIBDIR@|$(get_libdir)|g" \
+                       "${FILESDIR}/${PN}.confd-9.3" | newconfd - ${PN}-${SLOT}
+
+               sed -e "s|@SLOT@|${SLOT}|g" -e "s|@LIBDIR@|$(get_libdir)|g" \
+                       "${FILESDIR}/${PN}.init-9.3-r1" | newinitd - ${PN}-${SLOT}
+
+               if use systemd; then
+                       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
+
+               use pam && pamd_mimic system-auth ${PN}-${SLOT} auth account session
+
+               if use prefix ; then
+                       keepdir /run/postgresql
+                       fperms 1775 /run/postgresql
+               fi
+       fi
+}
+
+pkg_postinst() {
+       use server && use systemd && systemd_tmpfiles_create ${PN}-${SLOT}.conf
+       postgresql-config update
+
+       elog "If you need a global psqlrc-file, you can place it in:"
+       elog "    ${EROOT}/etc/postgresql-${SLOT}/"
+
+       if use server ; then
+               elog
+               elog "Gentoo specific documentation:"
+               elog "https://wiki.gentoo.org/wiki/PostgreSQL"
+               elog
+               elog "Official documentation:"
+               elog "http://www.postgresql.org/docs/${SLOT}/static/index.html"
+               elog
+               elog "The default location of the Unix-domain socket is:"
+               elog "    ${EROOT}/run/postgresql/"
+               elog
+               elog "Before initializing the database, you may want to edit PG_INITDB_OPTS"
+               elog "so that it contains your preferred locale in:"
+               elog "    ${EROOT}/etc/conf.d/postgresql-${SLOT}"
+               elog
+               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
+}
+
+pkg_prerm() {
+       if use server && [[ -z ${REPLACED_BY_VERSION} ]] ; then
+               ewarn "Have you dumped and/or migrated the ${SLOT} database cluster?"
+               ewarn "\thttps://wiki.gentoo.org/wiki/PostgreSQL/QuickStart#Migrating_PostgreSQL"
+
+               ebegin "Resuming removal in 10 seconds (Control-C to cancel)"
+               sleep 10
+               eend 0
+       fi
+}
+
+pkg_postrm() {
+       postgresql-config update
+}
+
+pkg_config() {
+       use server || die "USE flag 'server' not enabled. Nothing to configure."
+
+       [[ -f "${EROOT}/etc/conf.d/postgresql-${SLOT}" ]] \
+               && source "${EROOT}/etc/conf.d/postgresql-${SLOT}"
+       [[ -z "${PGDATA}" ]] && PGDATA="${EROOT}/etc/postgresql-${SLOT}/"
+       [[ -z "${DATA_DIR}" ]] \
+               && DATA_DIR="${EROOT}/var/lib/postgresql/${SLOT}/data"
+
+       # environment.bz2 may not contain the same locale as the current system
+       # locale. Unset and source from the current system locale.
+       if [ -f "${EROOT}/etc/env.d/02locale" ]; then
+               unset LANG
+               unset LC_CTYPE
+               unset LC_NUMERIC
+               unset LC_TIME
+               unset LC_COLLATE
+               unset LC_MONETARY
+               unset LC_MESSAGES
+               unset LC_ALL
+               source "${EROOT}/etc/env.d/02locale"
+               [ -n "${LANG}" ] && export LANG
+               [ -n "${LC_CTYPE}" ] && export LC_CTYPE
+               [ -n "${LC_NUMERIC}" ] && export LC_NUMERIC
+               [ -n "${LC_TIME}" ] && export LC_TIME
+               [ -n "${LC_COLLATE}" ] && export LC_COLLATE
+               [ -n "${LC_MONETARY}" ] && export LC_MONETARY
+               [ -n "${LC_MESSAGES}" ] && export LC_MESSAGES
+               [ -n "${LC_ALL}" ] && export LC_ALL
+       fi
+
+       einfo "You can modify the paths and options passed to initdb by editing:"
+       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
+       einfo "PG_INITDB_OPTS is currently set to:"
+       if [[ -z "${PG_INITDB_OPTS}" ]] ; then
+               einfo "    (none)"
+       else
+               einfo "    ${PG_INITDB_OPTS}"
+       fi
+       einfo
+       einfo "Configuration files will be installed to:"
+       einfo "    ${PGDATA}"
+       einfo
+       einfo "The database cluster will be created in:"
+       einfo "    ${DATA_DIR}"
+       einfo
+
+       ebegin "Continuing initialization in 5 seconds (Control-C to cancel)"
+       sleep 5
+       eend 0
+
+       if [ -n "$(ls -A ${DATA_DIR} 2> /dev/null)" ] ; then
+               eerror "The given directory, '${DATA_DIR}', is not empty."
+               eerror "Modify DATA_DIR to point to an empty directory."
+               die "${DATA_DIR} is not empty."
+       fi
+
+       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"
+       fi
+
+       einfo "Initializing the database ..."
+
+       if [[ ${EUID} == 0 ]] ; then
+               su postgres -c "${EROOT}/usr/$(get_libdir)/postgresql-${SLOT}/bin/initdb -D \"${DATA_DIR}\" ${PG_INITDB_OPTS}"
+       else
+               "${EROOT}"/usr/$(get_libdir)/postgresql-${SLOT}/bin/initdb -U postgres -D "${DATA_DIR}" ${PG_INITDB_OPTS}
+       fi
+
+       if [[ "${DATA_DIR%/}" != "${PGDATA%/}" ]] ; then
+               mv "${DATA_DIR%/}"/{pg_{hba,ident},postgresql}.conf "${PGDATA}"
+               ln -s "${PGDATA%/}"/{pg_{hba,ident},postgresql}.conf "${DATA_DIR%/}"
+       fi
+
+       # unix_socket_directory has no effect in postgresql.conf as it's
+       # overridden in the initscript
+       sed '/^#unix_socket_directories/,+1d' -i "${PGDATA%/}"/postgresql.conf
+
+       cat <<- EOF >> "${PGDATA%/}"/postgresql.conf
+               # This is here because of https://bugs.gentoo.org/show_bug.cgi?id=518522
+               # On the off-chance that you might need to work with UTF-8 encoded
+               # characters in PL/Perl
+               plperl.on_init = 'use utf8; use re; package utf8; require "utf8_heavy.pl";'
+       EOF
+
+       einfo "The autovacuum function, which was in contrib, has been moved to the main"
+       einfo "PostgreSQL functions starting with 8.1, and starting with 8.4 is now enabled"
+       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
+       if use prefix ; then
+               einfo "The location of the configuration files have moved to:"
+               einfo "    ${PGDATA}"
+               einfo "To start the server:"
+               einfo "    pg_ctl start -D ${DATA_DIR} -o '-D ${PGDATA} --data-directory=${DATA_DIR}'"
+               einfo "To stop:"
+               einfo "    pg_ctl stop -D ${DATA_DIR}"
+               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'."
+       fi
+}
+
+src_test() {
+       if use server && [[ ${UID} -ne 0 ]] ; then
+               emake check
+
+               einfo "If you think other tests besides the regression tests are necessary, please"
+               einfo "submit a bug including a patch for this ebuild to enable them."
+       else
+               use server || \
+                       ewarn 'Tests cannot be run without the "server" use flag enabled.'
+               [[ ${UID} -eq 0 ]] || \
+                       ewarn 'Tests cannot be run as root. Enable "userpriv" in FEATURES.'
+
+               ewarn 'Skipping.'
+       fi
+}