From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from lists.gentoo.org (pigeon.gentoo.org [208.92.234.80]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by finch.gentoo.org (Postfix) with ESMTPS id 2E42C138334 for ; Mon, 3 Jun 2019 10:25:23 +0000 (UTC) Received: from pigeon.gentoo.org (localhost [127.0.0.1]) by pigeon.gentoo.org (Postfix) with SMTP id 0276DE07D0; Mon, 3 Jun 2019 10:25:22 +0000 (UTC) Received: from smtp.gentoo.org (smtp.gentoo.org [140.211.166.183]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by pigeon.gentoo.org (Postfix) with ESMTPS id C4863E07D0 for ; Mon, 3 Jun 2019 10:25:21 +0000 (UTC) Received: from oystercatcher.gentoo.org (oystercatcher.gentoo.org [148.251.78.52]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.gentoo.org (Postfix) with ESMTPS id EBC973455B9 for ; Mon, 3 Jun 2019 10:25:19 +0000 (UTC) Received: from localhost.localdomain (localhost [IPv6:::1]) by oystercatcher.gentoo.org (Postfix) with ESMTP id 7209258B for ; Mon, 3 Jun 2019 10:25:17 +0000 (UTC) From: "Aaron W. Swenson" To: gentoo-commits@lists.gentoo.org Content-Transfer-Encoding: 8bit Content-type: text/plain; charset=UTF-8 Reply-To: gentoo-dev@lists.gentoo.org, "Aaron W. Swenson" Message-ID: <1559557501.edcac752028d3a882dbc2f64e37e1e95dff21276.titanofold@gentoo> Subject: [gentoo-commits] repo/gentoo:master commit in: dev-db/postgresql/ X-VCS-Repository: repo/gentoo X-VCS-Files: dev-db/postgresql/postgresql-10.8-r1.ebuild dev-db/postgresql/postgresql-11.3-r1.ebuild dev-db/postgresql/postgresql-12_beta1-r1.ebuild dev-db/postgresql/postgresql-9.4.22-r1.ebuild dev-db/postgresql/postgresql-9.5.17-r1.ebuild dev-db/postgresql/postgresql-9.6.13-r1.ebuild dev-db/postgresql/postgresql-9999.ebuild X-VCS-Directories: dev-db/postgresql/ X-VCS-Committer: titanofold X-VCS-Committer-Name: Aaron W. Swenson X-VCS-Revision: edcac752028d3a882dbc2f64e37e1e95dff21276 X-VCS-Branch: master Date: Mon, 3 Jun 2019 10:25:17 +0000 (UTC) Precedence: bulk List-Post: List-Help: List-Unsubscribe: List-Subscribe: List-Id: Gentoo Linux mail X-BeenThere: gentoo-commits@lists.gentoo.org X-Auto-Response-Suppress: DR, RN, NRN, OOF, AutoReply X-Archives-Salt: aeb28848-7185-47d0-a25b-f4ef90f55b39 X-Archives-Hash: 1c403761f9208567e4e93f1cde63d8c3 commit: edcac752028d3a882dbc2f64e37e1e95dff21276 Author: Aaron W. Swenson gentoo org> AuthorDate: Mon Jun 3 10:23:37 2019 +0000 Commit: Aaron W. Swenson gentoo org> CommitDate: Mon Jun 3 10:25:01 2019 +0000 URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=edcac752 dev-db/postgresql: Multiple Fixes/Improvements Bump to EAPI 7. Use ver-cut instead of versionator. Preserve libpg{port,common}.a as they're needed by some PGXS builds. Add Python 3.7 support. Thanks to Jeff Kowalczyk for verifying. Allow ICU collations via icu USE flag. Add debug use flag to allow debugging of extensions. Bug: https://bugs.gentoo.org/671114 Bug: https://bugs.gentoo.org/571046 Bug: https://bugs.gentoo.org/685536 Package-Manager: Portage-2.3.62, Repoman-2.3.11 Signed-off-by: Aaron W. Swenson gentoo.org> ...resql-9999.ebuild => postgresql-10.8-r1.ebuild} | 269 ++++++++++---------- ...resql-9999.ebuild => postgresql-11.3-r1.ebuild} | 275 ++++++++++----------- ...l-9999.ebuild => postgresql-12_beta1-r1.ebuild} | 275 ++++++++++----------- ...sql-9999.ebuild => postgresql-9.4.22-r1.ebuild} | 257 +++++++++---------- ...sql-9999.ebuild => postgresql-9.5.17-r1.ebuild} | 261 +++++++++---------- ...sql-9999.ebuild => postgresql-9.6.13-r1.ebuild} | 250 ++++++++++--------- dev-db/postgresql/postgresql-9999.ebuild | 20 +- 7 files changed, 806 insertions(+), 801 deletions(-) diff --git a/dev-db/postgresql/postgresql-9999.ebuild b/dev-db/postgresql/postgresql-10.8-r1.ebuild similarity index 67% copy from dev-db/postgresql/postgresql-9999.ebuild copy to dev-db/postgresql/postgresql-10.8-r1.ebuild index e90d6a96bf1..88115ec2c2a 100644 --- a/dev-db/postgresql/postgresql-9999.ebuild +++ b/dev-db/postgresql/postgresql-10.8-r1.ebuild @@ -1,33 +1,32 @@ # Copyright 1999-2019 Gentoo Authors # Distributed under the terms of the GNU General Public License v2 -EAPI="6" +EAPI=7 -PYTHON_COMPAT=( python2_7 python3_{5,6} ) +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" -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" -inherit flag-o-matic git-r3 linux-info multilib pam prefix python-single-r1 \ - systemd user versionator -KEYWORDS="" +inherit flag-o-matic l10n linux-info multilib pam prefix python-single-r1 \ + systemd user -# Bump when rc released. -SLOT="13" +KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~mips ~ppc ~ppc64 ~s390 ~sh ~sparc ~x86 ~amd64-fbsd ~x86-fbsd ~ppc-macos ~x86-solaris" -EGIT_REPO_URI="https://git.postgresql.org/git/postgresql.git" +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" LICENSE="POSTGRESQL GPL-2" DESCRIPTION="PostgreSQL RDBMS" HOMEPAGE="https://www.postgresql.org/" -IUSE="kerberos kernel_linux ldap libressl llvm nls pam perl python +readline - selinux systemd ssl static-libs tcl threads uuid xml zlib" -for my_locale in ${PLOCALES}; do - IUSE+=" l10n_${my_locale}" -done +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} )" @@ -35,23 +34,19 @@ 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:= ) ) -systemd? ( sys-apps/systemd ) tcl? ( >=dev-lang/tcl-8:0= ) -uuid? ( dev-libs/ossp-uuid ) xml? ( dev-libs/libxml2 dev-libs/libxslt ) zlib? ( sys-libs/zlib ) " @@ -81,19 +76,12 @@ uuid? ( DEPEND="${CDEPEND} !!=dev-lang/perl-5.8 -app-text/docbook-dsssl-stylesheets -app-text/docbook-sgml-dtd:4.2 -app-text/docbook-xml-dtd:4.2 -app-text/docbook-xsl-stylesheets -app-text/openjade -dev-libs/libxml2 -dev-libs/libxslt sys-devel/bison sys-devel/flex nls? ( sys-devel/gettext ) xml? ( virtual/pkgconfig ) " + RDEPEND="${CDEPEND} !dev-db/postgresql-docs:${SLOT} !dev-db/postgresql-base:${SLOT} @@ -101,25 +89,8 @@ RDEPEND="${CDEPEND} selinux? ( sec-policy/selinux-postgresql ) " -my_get_locales() { - local my_locale locale_list - for my_locale in ${PLOCALES[@]}; do - use l10n_${my_locale} && locale_list+=( ${my_locale} ) - done - echo -n ${locale_list[@]} -} - -pkg_pretend() { - ewarn "You are using a live ebuild that uses the current source code as it is" - ewarn "available from PostgreSQL's Git repository at emerge time. Given such," - ewarn "the GNU Makefiles may be altered by upstream without notice and the" - ewarn "documentation for this live version is not readily available" - ewarn "online. Ergo, the ebuild maintainers will not support building a" - ewarn "client-only and/or document-free version." -} - pkg_setup() { - CONFIG_CHECK="~SYSVIPC" linux-info_pkg_setup + use server && CONFIG_CHECK="~SYSVIPC" linux-info_pkg_setup enewgroup postgres 70 enewuser postgres 70 /bin/sh /var/lib/postgresql postgres @@ -128,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 @@ -137,6 +111,8 @@ 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}-10.2-no-server.patch" + if use pam ; then sed -e "s/\(#define PGSQL_PAM_SERVICE \"postgresql\)/\1-${SLOT}/" \ -i src/backend/libpq/auth.c || \ @@ -178,66 +154,55 @@ src_configure() { --sysconfdir="${PO}/etc/postgresql-${SLOT}" \ --with-system-tzdata="${PO}/usr/share/zoneinfo" \ $(use_enable !alpha spinlocks) \ - $(use_enable nls nls "'$(my_get_locales)'") \ + $(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_with systemd) \ - ${uuid_config} + $(use_enable nls nls "'$(l10n_get_locales)'") } src_compile() { - emake world + emake + emake -C contrib } src_install() { - emake DESTDIR="${D}" install-world + emake DESTDIR="${D}" install + emake DESTDIR="${D}" install -C contrib dodoc README HISTORY doc/{TODO,bug.template} - insinto /etc/postgresql-${SLOT} - newins src/bin/psql/psqlrc.sample psqlrc - - use static-libs || find "${ED}" -name '*.a' -delete - - 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 - systemd_newtmpfilesd "${FILESDIR}"/${PN}.tmpfiles ${PN}-${SLOT}.conf + # 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 - - newbin "${FILESDIR}"/${PN}-check-db-dir ${PN}-${SLOT}-check-db-dir - - use pam && pamd_mimic system-auth ${PN}-${SLOT} auth account session - - 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/.}tmp" - done + docompress /usr/share/postgresql-${SLOT}/man/man{1,3,7} # Create slot specific man pages local bn f mansec slotted_name @@ -263,74 +228,92 @@ src_install() { popd > /dev/null done - if use prefix ; then - keepdir /run/postgresql - fperms 1775 /run/postgresql - fi -} + insinto /etc/postgresql-${SLOT} + newins src/bin/psql/psqlrc.sample psqlrc -pkg_preinst() { - # Find all of the slot-specific symlinks, if any, in /usr/bin (e.g., - # /usr/bin/psql97). 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(). We - # only worry about the 9.7 slot as that's the last slot that had its - # slot-specific links generated by eselect. - # - # This can be removed when 10 is the lowest slot in the tree. - 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 + # 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 - 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 - [[ $(${canonicalise} "${l}") == *postgresql-9.7* ]] && rm "${l}" + # 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 - # 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 + 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 systemd && systemd_tmpfiles_create ${PN}-${SLOT}.conf + 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}/" - elog - elog "Gentoo specific documentation:" - elog "https://wiki.gentoo.org/wiki/PostgreSQL" - elog - elog "Official documentation:" - elog "${EROOT%/}/usr/share/doc/${PF}/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, and other options, 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 use server ; then + elog + elog "Gentoo specific documentation:" + elog "https://wiki.gentoo.org/wiki/PostgreSQL" + elog + elog "Official documentation:" + 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/" + 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 [[ -z ${REPLACED_BY_VERSION} ]] ; then + 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" @@ -345,6 +328,8 @@ pkg_postrm() { } 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}/" @@ -465,13 +450,17 @@ pkg_config() { } src_test() { - if [[ ${UID} -ne 0 ]] ; then + 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 - ewarn 'Tests cannot be run as root. Enable "userpriv" in FEATURES.' + 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 } diff --git a/dev-db/postgresql/postgresql-9999.ebuild b/dev-db/postgresql/postgresql-11.3-r1.ebuild similarity index 65% copy from dev-db/postgresql/postgresql-9999.ebuild copy to dev-db/postgresql/postgresql-11.3-r1.ebuild index e90d6a96bf1..b55fe07666c 100644 --- a/dev-db/postgresql/postgresql-9999.ebuild +++ b/dev-db/postgresql/postgresql-11.3-r1.ebuild @@ -1,33 +1,32 @@ # Copyright 1999-2019 Gentoo Authors # Distributed under the terms of the GNU General Public License v2 -EAPI="6" +EAPI=7 -PYTHON_COMPAT=( python2_7 python3_{5,6} ) +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" -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" -inherit flag-o-matic git-r3 linux-info multilib pam prefix python-single-r1 \ - systemd user versionator -KEYWORDS="" +inherit flag-o-matic l10n linux-info multilib pam prefix python-single-r1 \ + systemd user -# Bump when rc released. -SLOT="13" +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" -EGIT_REPO_URI="https://git.postgresql.org/git/postgresql.git" +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" LICENSE="POSTGRESQL GPL-2" DESCRIPTION="PostgreSQL RDBMS" -HOMEPAGE="https://www.postgresql.org/" +HOMEPAGE="http://www.postgresql.org/" -IUSE="kerberos kernel_linux ldap libressl llvm nls pam perl python +readline - selinux systemd ssl static-libs tcl threads uuid xml zlib" -for my_locale in ${PLOCALES}; do - IUSE+=" l10n_${my_locale}" -done +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} )" @@ -35,6 +34,7 @@ CDEPEND=" >=app-eselect/eselect-postgresql-2.0 sys-apps/less virtual/libintl +icu? ( dev-libs/icu:= ) kerberos? ( virtual/krb5 ) ldap? ( net-nds/openldap ) llvm? ( @@ -45,13 +45,12 @@ 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:= ) ) -systemd? ( sys-apps/systemd ) tcl? ( >=dev-lang/tcl-8:0= ) -uuid? ( dev-libs/ossp-uuid ) xml? ( dev-libs/libxml2 dev-libs/libxslt ) zlib? ( sys-libs/zlib ) " @@ -81,19 +80,12 @@ uuid? ( DEPEND="${CDEPEND} !!=dev-lang/perl-5.8 -app-text/docbook-dsssl-stylesheets -app-text/docbook-sgml-dtd:4.2 -app-text/docbook-xml-dtd:4.2 -app-text/docbook-xsl-stylesheets -app-text/openjade -dev-libs/libxml2 -dev-libs/libxslt sys-devel/bison sys-devel/flex nls? ( sys-devel/gettext ) xml? ( virtual/pkgconfig ) " + RDEPEND="${CDEPEND} !dev-db/postgresql-docs:${SLOT} !dev-db/postgresql-base:${SLOT} @@ -101,25 +93,8 @@ RDEPEND="${CDEPEND} selinux? ( sec-policy/selinux-postgresql ) " -my_get_locales() { - local my_locale locale_list - for my_locale in ${PLOCALES[@]}; do - use l10n_${my_locale} && locale_list+=( ${my_locale} ) - done - echo -n ${locale_list[@]} -} - -pkg_pretend() { - ewarn "You are using a live ebuild that uses the current source code as it is" - ewarn "available from PostgreSQL's Git repository at emerge time. Given such," - ewarn "the GNU Makefiles may be altered by upstream without notice and the" - ewarn "documentation for this live version is not readily available" - ewarn "online. Ergo, the ebuild maintainers will not support building a" - ewarn "client-only and/or document-free version." -} - pkg_setup() { - CONFIG_CHECK="~SYSVIPC" linux-info_pkg_setup + use server && CONFIG_CHECK="~SYSVIPC" linux-info_pkg_setup enewgroup postgres 70 enewuser postgres 70 /bin/sh /var/lib/postgresql postgres @@ -137,8 +112,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" + if use pam ; then - sed -e "s/\(#define PGSQL_PAM_SERVICE \"postgresql\)/\1-${SLOT}/" \ + sed "s/\(#define PGSQL_PAM_SERVICE \"postgresql\)/\1-${SLOT}/" \ -i src/backend/libpq/auth.c || \ die 'PGSQL_PAM_SERVICE rename failed.' fi @@ -178,8 +155,9 @@ src_configure() { --sysconfdir="${PO}/etc/postgresql-${SLOT}" \ --with-system-tzdata="${PO}/usr/share/zoneinfo" \ $(use_enable !alpha spinlocks) \ - $(use_enable nls nls "'$(my_get_locales)'") \ + $(use_enable debug) \ $(use_enable threads thread-safety) \ + $(use_with icu) \ $(use_with kerberos gssapi) \ $(use_with ldap) \ $(use_with llvm) \ @@ -188,56 +166,45 @@ src_configure() { $(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_with systemd) \ - ${uuid_config} + $(use_enable nls nls "'$(l10n_get_locales)'") } src_compile() { - emake world + emake + emake -C contrib } src_install() { - emake DESTDIR="${D}" install-world + emake DESTDIR="${D}" install + emake DESTDIR="${D}" install -C contrib dodoc README HISTORY doc/{TODO,bug.template} - insinto /etc/postgresql-${SLOT} - newins src/bin/psql/psqlrc.sample psqlrc - - use static-libs || find "${ED}" -name '*.a' -delete - - 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 - systemd_newtmpfilesd "${FILESDIR}"/${PN}.tmpfiles ${PN}-${SLOT}.conf + # 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 - - newbin "${FILESDIR}"/${PN}-check-db-dir ${PN}-${SLOT}-check-db-dir - - use pam && pamd_mimic system-auth ${PN}-${SLOT} auth account session - - 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/.}tmp" - done + docompress /usr/share/postgresql-${SLOT}/man/man{1,3,7} # Create slot specific man pages local bn f mansec slotted_name @@ -263,74 +230,92 @@ src_install() { popd > /dev/null done - if use prefix ; then - keepdir /run/postgresql - fperms 1775 /run/postgresql - fi -} + insinto /etc/postgresql-${SLOT} + newins src/bin/psql/psqlrc.sample psqlrc -pkg_preinst() { - # Find all of the slot-specific symlinks, if any, in /usr/bin (e.g., - # /usr/bin/psql97). 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(). We - # only worry about the 9.7 slot as that's the last slot that had its - # slot-specific links generated by eselect. - # - # This can be removed when 10 is the lowest slot in the tree. - 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 + # 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 - 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 - [[ $(${canonicalise} "${l}") == *postgresql-9.7* ]] && rm "${l}" + # 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 - # 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 + 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 systemd && systemd_tmpfiles_create ${PN}-${SLOT}.conf + 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}/" - elog - elog "Gentoo specific documentation:" - elog "https://wiki.gentoo.org/wiki/PostgreSQL" - elog - elog "Official documentation:" - elog "${EROOT%/}/usr/share/doc/${PF}/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, and other options, 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 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 [[ -z ${REPLACED_BY_VERSION} ]] ; then + 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" @@ -345,6 +330,8 @@ pkg_postrm() { } 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}/" @@ -377,8 +364,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 " https://www.postgresql.org/docs/${SLOT}/static/creating-cluster.html" - einfo " https://www.postgresql.org/docs/${SLOT}/static/app-initdb.html" + 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 @@ -406,9 +393,9 @@ pkg_config() { einfo "Creating the data directory ..." if [[ ${EUID} == 0 ]] ; then - mkdir -p "${DATA_DIR}" - chown -Rf postgres:postgres "${DATA_DIR}" - chmod 0700 "${DATA_DIR}" + 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 ..." @@ -465,13 +452,17 @@ pkg_config() { } src_test() { - if [[ ${UID} -ne 0 ]] ; then + 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 - ewarn 'Tests cannot be run as root. Enable "userpriv" in FEATURES.' + 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 } diff --git a/dev-db/postgresql/postgresql-9999.ebuild b/dev-db/postgresql/postgresql-12_beta1-r1.ebuild similarity index 65% copy from dev-db/postgresql/postgresql-9999.ebuild copy to dev-db/postgresql/postgresql-12_beta1-r1.ebuild index e90d6a96bf1..b55fe07666c 100644 --- a/dev-db/postgresql/postgresql-9999.ebuild +++ b/dev-db/postgresql/postgresql-12_beta1-r1.ebuild @@ -1,33 +1,32 @@ # Copyright 1999-2019 Gentoo Authors # Distributed under the terms of the GNU General Public License v2 -EAPI="6" +EAPI=7 -PYTHON_COMPAT=( python2_7 python3_{5,6} ) +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" -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" -inherit flag-o-matic git-r3 linux-info multilib pam prefix python-single-r1 \ - systemd user versionator -KEYWORDS="" +inherit flag-o-matic l10n linux-info multilib pam prefix python-single-r1 \ + systemd user -# Bump when rc released. -SLOT="13" +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" -EGIT_REPO_URI="https://git.postgresql.org/git/postgresql.git" +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" LICENSE="POSTGRESQL GPL-2" DESCRIPTION="PostgreSQL RDBMS" -HOMEPAGE="https://www.postgresql.org/" +HOMEPAGE="http://www.postgresql.org/" -IUSE="kerberos kernel_linux ldap libressl llvm nls pam perl python +readline - selinux systemd ssl static-libs tcl threads uuid xml zlib" -for my_locale in ${PLOCALES}; do - IUSE+=" l10n_${my_locale}" -done +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} )" @@ -35,6 +34,7 @@ CDEPEND=" >=app-eselect/eselect-postgresql-2.0 sys-apps/less virtual/libintl +icu? ( dev-libs/icu:= ) kerberos? ( virtual/krb5 ) ldap? ( net-nds/openldap ) llvm? ( @@ -45,13 +45,12 @@ 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:= ) ) -systemd? ( sys-apps/systemd ) tcl? ( >=dev-lang/tcl-8:0= ) -uuid? ( dev-libs/ossp-uuid ) xml? ( dev-libs/libxml2 dev-libs/libxslt ) zlib? ( sys-libs/zlib ) " @@ -81,19 +80,12 @@ uuid? ( DEPEND="${CDEPEND} !!=dev-lang/perl-5.8 -app-text/docbook-dsssl-stylesheets -app-text/docbook-sgml-dtd:4.2 -app-text/docbook-xml-dtd:4.2 -app-text/docbook-xsl-stylesheets -app-text/openjade -dev-libs/libxml2 -dev-libs/libxslt sys-devel/bison sys-devel/flex nls? ( sys-devel/gettext ) xml? ( virtual/pkgconfig ) " + RDEPEND="${CDEPEND} !dev-db/postgresql-docs:${SLOT} !dev-db/postgresql-base:${SLOT} @@ -101,25 +93,8 @@ RDEPEND="${CDEPEND} selinux? ( sec-policy/selinux-postgresql ) " -my_get_locales() { - local my_locale locale_list - for my_locale in ${PLOCALES[@]}; do - use l10n_${my_locale} && locale_list+=( ${my_locale} ) - done - echo -n ${locale_list[@]} -} - -pkg_pretend() { - ewarn "You are using a live ebuild that uses the current source code as it is" - ewarn "available from PostgreSQL's Git repository at emerge time. Given such," - ewarn "the GNU Makefiles may be altered by upstream without notice and the" - ewarn "documentation for this live version is not readily available" - ewarn "online. Ergo, the ebuild maintainers will not support building a" - ewarn "client-only and/or document-free version." -} - pkg_setup() { - CONFIG_CHECK="~SYSVIPC" linux-info_pkg_setup + use server && CONFIG_CHECK="~SYSVIPC" linux-info_pkg_setup enewgroup postgres 70 enewuser postgres 70 /bin/sh /var/lib/postgresql postgres @@ -137,8 +112,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" + if use pam ; then - sed -e "s/\(#define PGSQL_PAM_SERVICE \"postgresql\)/\1-${SLOT}/" \ + sed "s/\(#define PGSQL_PAM_SERVICE \"postgresql\)/\1-${SLOT}/" \ -i src/backend/libpq/auth.c || \ die 'PGSQL_PAM_SERVICE rename failed.' fi @@ -178,8 +155,9 @@ src_configure() { --sysconfdir="${PO}/etc/postgresql-${SLOT}" \ --with-system-tzdata="${PO}/usr/share/zoneinfo" \ $(use_enable !alpha spinlocks) \ - $(use_enable nls nls "'$(my_get_locales)'") \ + $(use_enable debug) \ $(use_enable threads thread-safety) \ + $(use_with icu) \ $(use_with kerberos gssapi) \ $(use_with ldap) \ $(use_with llvm) \ @@ -188,56 +166,45 @@ src_configure() { $(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_with systemd) \ - ${uuid_config} + $(use_enable nls nls "'$(l10n_get_locales)'") } src_compile() { - emake world + emake + emake -C contrib } src_install() { - emake DESTDIR="${D}" install-world + emake DESTDIR="${D}" install + emake DESTDIR="${D}" install -C contrib dodoc README HISTORY doc/{TODO,bug.template} - insinto /etc/postgresql-${SLOT} - newins src/bin/psql/psqlrc.sample psqlrc - - use static-libs || find "${ED}" -name '*.a' -delete - - 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 - systemd_newtmpfilesd "${FILESDIR}"/${PN}.tmpfiles ${PN}-${SLOT}.conf + # 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 - - newbin "${FILESDIR}"/${PN}-check-db-dir ${PN}-${SLOT}-check-db-dir - - use pam && pamd_mimic system-auth ${PN}-${SLOT} auth account session - - 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/.}tmp" - done + docompress /usr/share/postgresql-${SLOT}/man/man{1,3,7} # Create slot specific man pages local bn f mansec slotted_name @@ -263,74 +230,92 @@ src_install() { popd > /dev/null done - if use prefix ; then - keepdir /run/postgresql - fperms 1775 /run/postgresql - fi -} + insinto /etc/postgresql-${SLOT} + newins src/bin/psql/psqlrc.sample psqlrc -pkg_preinst() { - # Find all of the slot-specific symlinks, if any, in /usr/bin (e.g., - # /usr/bin/psql97). 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(). We - # only worry about the 9.7 slot as that's the last slot that had its - # slot-specific links generated by eselect. - # - # This can be removed when 10 is the lowest slot in the tree. - 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 + # 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 - 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 - [[ $(${canonicalise} "${l}") == *postgresql-9.7* ]] && rm "${l}" + # 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 - # 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 + 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 systemd && systemd_tmpfiles_create ${PN}-${SLOT}.conf + 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}/" - elog - elog "Gentoo specific documentation:" - elog "https://wiki.gentoo.org/wiki/PostgreSQL" - elog - elog "Official documentation:" - elog "${EROOT%/}/usr/share/doc/${PF}/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, and other options, 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 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 [[ -z ${REPLACED_BY_VERSION} ]] ; then + 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" @@ -345,6 +330,8 @@ pkg_postrm() { } 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}/" @@ -377,8 +364,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 " https://www.postgresql.org/docs/${SLOT}/static/creating-cluster.html" - einfo " https://www.postgresql.org/docs/${SLOT}/static/app-initdb.html" + 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 @@ -406,9 +393,9 @@ pkg_config() { einfo "Creating the data directory ..." if [[ ${EUID} == 0 ]] ; then - mkdir -p "${DATA_DIR}" - chown -Rf postgres:postgres "${DATA_DIR}" - chmod 0700 "${DATA_DIR}" + 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 ..." @@ -465,13 +452,17 @@ pkg_config() { } src_test() { - if [[ ${UID} -ne 0 ]] ; then + 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 - ewarn 'Tests cannot be run as root. Enable "userpriv" in FEATURES.' + 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 } diff --git a/dev-db/postgresql/postgresql-9999.ebuild b/dev-db/postgresql/postgresql-9.4.22-r1.ebuild similarity index 70% copy from dev-db/postgresql/postgresql-9999.ebuild copy to dev-db/postgresql/postgresql-9.4.22-r1.ebuild index e90d6a96bf1..b08e6262967 100644 --- a/dev-db/postgresql/postgresql-9999.ebuild +++ b/dev-db/postgresql/postgresql-9.4.22-r1.ebuild @@ -1,33 +1,29 @@ # Copyright 1999-2019 Gentoo Authors # Distributed under the terms of the GNU General Public License v2 -EAPI="6" +EAPI=7 -PYTHON_COMPAT=( python2_7 python3_{5,6} ) +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" -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" -inherit flag-o-matic git-r3 linux-info multilib pam prefix python-single-r1 \ - systemd user versionator + zh_TW" -KEYWORDS="" +inherit flag-o-matic l10n linux-info multilib pam prefix python-single-r1 \ + systemd user -# Bump when rc released. -SLOT="13" +KEYWORDS="~alpha ~amd64 ~arm ~hppa ~ia64 ~mips ~ppc ~ppc64 ~s390 ~sh ~sparc ~x86 ~amd64-fbsd ~x86-fbsd ~ppc-macos ~x86-solaris" -EGIT_REPO_URI="https://git.postgresql.org/git/postgresql.git" +SLOT=$(ver_cut 1-2) + +SRC_URI="mirror://postgresql/source/v${PV}/postgresql-${PV}.tar.bz2" LICENSE="POSTGRESQL GPL-2" DESCRIPTION="PostgreSQL RDBMS" HOMEPAGE="https://www.postgresql.org/" -IUSE="kerberos kernel_linux ldap libressl llvm nls pam perl python +readline - selinux systemd ssl static-libs tcl threads uuid xml zlib" -for my_locale in ${PLOCALES}; do - IUSE+=" l10n_${my_locale}" -done +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} )" @@ -37,10 +33,6 @@ sys-apps/less virtual/libintl 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} ) @@ -49,9 +41,7 @@ ssl? ( !libressl? ( >=dev-libs/openssl-0.9.6-r1:0= ) libressl? ( dev-libs/libressl:= ) ) -systemd? ( sys-apps/systemd ) tcl? ( >=dev-lang/tcl-8:0= ) -uuid? ( dev-libs/ossp-uuid ) xml? ( dev-libs/libxml2 dev-libs/libxslt ) zlib? ( sys-libs/zlib ) " @@ -81,19 +71,12 @@ uuid? ( DEPEND="${CDEPEND} !!=dev-lang/perl-5.8 -app-text/docbook-dsssl-stylesheets -app-text/docbook-sgml-dtd:4.2 -app-text/docbook-xml-dtd:4.2 -app-text/docbook-xsl-stylesheets -app-text/openjade -dev-libs/libxml2 -dev-libs/libxslt sys-devel/bison sys-devel/flex nls? ( sys-devel/gettext ) xml? ( virtual/pkgconfig ) " + RDEPEND="${CDEPEND} !dev-db/postgresql-docs:${SLOT} !dev-db/postgresql-base:${SLOT} @@ -101,25 +84,8 @@ RDEPEND="${CDEPEND} selinux? ( sec-policy/selinux-postgresql ) " -my_get_locales() { - local my_locale locale_list - for my_locale in ${PLOCALES[@]}; do - use l10n_${my_locale} && locale_list+=( ${my_locale} ) - done - echo -n ${locale_list[@]} -} - -pkg_pretend() { - ewarn "You are using a live ebuild that uses the current source code as it is" - ewarn "available from PostgreSQL's Git repository at emerge time. Given such," - ewarn "the GNU Makefiles may be altered by upstream without notice and the" - ewarn "documentation for this live version is not readily available" - ewarn "online. Ergo, the ebuild maintainers will not support building a" - ewarn "client-only and/or document-free version." -} - pkg_setup() { - CONFIG_CHECK="~SYSVIPC" linux-info_pkg_setup + use server && CONFIG_CHECK="~SYSVIPC" linux-info_pkg_setup enewgroup postgres 70 enewuser postgres 70 /bin/sh /var/lib/postgresql postgres @@ -128,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 @@ -137,6 +106,8 @@ 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}-9.4.10-no-server.patch" + if use pam ; then sed -e "s/\(#define PGSQL_PAM_SERVICE \"postgresql\)/\1-${SLOT}/" \ -i src/backend/libpq/auth.c || \ @@ -177,67 +148,48 @@ 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 nls nls "'$(my_get_locales)'") \ + $(use_enable !pg_legacytimestamp integer-datetimes) \ + $(use_enable debug) \ $(use_enable threads thread-safety) \ $(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) \ $(use_with tcl) \ + ${uuid_config} \ $(use_with xml libxml) \ $(use_with xml libxslt) \ $(use_with zlib) \ - $(use_with systemd) \ - ${uuid_config} + $(use_enable nls nls "'$(l10n_get_locales)'") } src_compile() { - emake world + emake + emake -C contrib } src_install() { - emake DESTDIR="${D}" install-world + emake DESTDIR="${D}" install + emake DESTDIR="${D}" install -C contrib dodoc README HISTORY doc/{TODO,bug.template} - insinto /etc/postgresql-${SLOT} - newins src/bin/psql/psqlrc.sample psqlrc - - use static-libs || find "${ED}" -name '*.a' -delete - - 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 - systemd_newtmpfilesd "${FILESDIR}"/${PN}.tmpfiles ${PN}-${SLOT}.conf + # 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 + for m in {initdb,pg_{controldata,ctl,resetxlog},post{gres,master}}; do + rm "${ED}/usr/share/postgresql-${SLOT}/man/man1/${m}.1" + done fi - - newbin "${FILESDIR}"/${PN}-check-db-dir ${PN}-${SLOT}-check-db-dir - - use pam && pamd_mimic system-auth ${PN}-${SLOT} auth account session - - 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/.}tmp" - done + docompress /usr/share/postgresql-${SLOT}/man/man{1,3,7} # Create slot specific man pages local bn f mansec slotted_name @@ -249,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} @@ -263,22 +215,68 @@ src_install() { popd > /dev/null done - if use prefix ; then - keepdir /run/postgresql - fperms 1775 /run/postgresql + 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 + + 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/.}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 + 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.2" | \ + systemd_newunit - ${PN}-${SLOT}.service + 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 + keepdir /run/postgresql + fperms 1775 /run/postgresql + fi fi } pkg_preinst() { # Find all of the slot-specific symlinks, if any, in /usr/bin (e.g., - # /usr/bin/psql97). They may have been created by the + # /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(). We - # only worry about the 9.7 slot as that's the last slot that had its - # slot-specific links generated by eselect. - # - # This can be removed when 10 is the lowest slot in the tree. + # 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 @@ -293,7 +291,9 @@ pkg_preinst() { # 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 - [[ $(${canonicalise} "${l}") == *postgresql-9.7* ]] && rm "${l}" + 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. @@ -304,33 +304,35 @@ pkg_preinst() { } pkg_postinst() { - use systemd && systemd_tmpfiles_create ${PN}-${SLOT}.conf + 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}/" - elog - elog "Gentoo specific documentation:" - elog "https://wiki.gentoo.org/wiki/PostgreSQL" - elog - elog "Official documentation:" - elog "${EROOT%/}/usr/share/doc/${PF}/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, and other options, 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 use server ; then + elog + elog "Gentoo specific documentation:" + elog "https://wiki.gentoo.org/wiki/PostgreSQL" + elog + elog "Official documentation:" + 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/" + 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}" + fi } pkg_prerm() { - if [[ -z ${REPLACED_BY_VERSION} ]] ; then + 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" @@ -345,6 +347,8 @@ pkg_postrm() { } 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}/" @@ -440,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}" @@ -455,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'." @@ -465,13 +464,17 @@ pkg_config() { } src_test() { - if [[ ${UID} -ne 0 ]] ; then + 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 - ewarn 'Tests cannot be run as root. Enable "userpriv" in FEATURES.' + 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 } diff --git a/dev-db/postgresql/postgresql-9999.ebuild b/dev-db/postgresql/postgresql-9.5.17-r1.ebuild similarity index 69% copy from dev-db/postgresql/postgresql-9999.ebuild copy to dev-db/postgresql/postgresql-9.5.17-r1.ebuild index e90d6a96bf1..14d84350ff6 100644 --- a/dev-db/postgresql/postgresql-9999.ebuild +++ b/dev-db/postgresql/postgresql-9.5.17-r1.ebuild @@ -1,33 +1,29 @@ # Copyright 1999-2019 Gentoo Authors # Distributed under the terms of the GNU General Public License v2 -EAPI="6" +EAPI=7 -PYTHON_COMPAT=( python2_7 python3_{5,6} ) +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" -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" -inherit flag-o-matic git-r3 linux-info multilib pam prefix python-single-r1 \ - systemd user versionator + zh_TW" -KEYWORDS="" +inherit flag-o-matic l10n linux-info multilib pam prefix python-single-r1 \ + systemd user -# Bump when rc released. -SLOT="13" +KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~mips ~ppc ~ppc64 ~s390 ~sh ~sparc ~x86 ~amd64-fbsd ~x86-fbsd ~ppc-macos ~x86-solaris" -EGIT_REPO_URI="https://git.postgresql.org/git/postgresql.git" +SLOT=$(ver_cut 1-2) + +SRC_URI="mirror://postgresql/source/v${PV}/postgresql-${PV}.tar.bz2" LICENSE="POSTGRESQL GPL-2" DESCRIPTION="PostgreSQL RDBMS" HOMEPAGE="https://www.postgresql.org/" -IUSE="kerberos kernel_linux ldap libressl llvm nls pam perl python +readline - selinux systemd ssl static-libs tcl threads uuid xml zlib" -for my_locale in ${PLOCALES}; do - IUSE+=" l10n_${my_locale}" -done +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} )" @@ -37,10 +33,6 @@ sys-apps/less virtual/libintl 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} ) @@ -49,9 +41,7 @@ ssl? ( !libressl? ( >=dev-libs/openssl-0.9.6-r1:0= ) libressl? ( dev-libs/libressl:= ) ) -systemd? ( sys-apps/systemd ) tcl? ( >=dev-lang/tcl-8:0= ) -uuid? ( dev-libs/ossp-uuid ) xml? ( dev-libs/libxml2 dev-libs/libxslt ) zlib? ( sys-libs/zlib ) " @@ -81,19 +71,12 @@ uuid? ( DEPEND="${CDEPEND} !!=dev-lang/perl-5.8 -app-text/docbook-dsssl-stylesheets -app-text/docbook-sgml-dtd:4.2 -app-text/docbook-xml-dtd:4.2 -app-text/docbook-xsl-stylesheets -app-text/openjade -dev-libs/libxml2 -dev-libs/libxslt sys-devel/bison sys-devel/flex nls? ( sys-devel/gettext ) xml? ( virtual/pkgconfig ) " + RDEPEND="${CDEPEND} !dev-db/postgresql-docs:${SLOT} !dev-db/postgresql-base:${SLOT} @@ -101,25 +84,8 @@ RDEPEND="${CDEPEND} selinux? ( sec-policy/selinux-postgresql ) " -my_get_locales() { - local my_locale locale_list - for my_locale in ${PLOCALES[@]}; do - use l10n_${my_locale} && locale_list+=( ${my_locale} ) - done - echo -n ${locale_list[@]} -} - -pkg_pretend() { - ewarn "You are using a live ebuild that uses the current source code as it is" - ewarn "available from PostgreSQL's Git repository at emerge time. Given such," - ewarn "the GNU Makefiles may be altered by upstream without notice and the" - ewarn "documentation for this live version is not readily available" - ewarn "online. Ergo, the ebuild maintainers will not support building a" - ewarn "client-only and/or document-free version." -} - pkg_setup() { - CONFIG_CHECK="~SYSVIPC" linux-info_pkg_setup + use server && CONFIG_CHECK="~SYSVIPC" linux-info_pkg_setup enewgroup postgres 70 enewuser postgres 70 /bin/sh /var/lib/postgresql postgres @@ -128,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 @@ -137,6 +106,8 @@ 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}-9.5.5-no-server.patch" + if use pam ; then sed -e "s/\(#define PGSQL_PAM_SERVICE \"postgresql\)/\1-${SLOT}/" \ -i src/backend/libpq/auth.c || \ @@ -178,66 +149,48 @@ src_configure() { --sysconfdir="${PO}/etc/postgresql-${SLOT}" \ --with-system-tzdata="${PO}/usr/share/zoneinfo" \ $(use_enable !alpha spinlocks) \ - $(use_enable nls nls "'$(my_get_locales)'") \ + $(use_enable !pg_legacytimestamp integer-datetimes) \ + $(use_enable debug) \ $(use_enable threads thread-safety) \ $(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) \ $(use_with tcl) \ + ${uuid_config} \ $(use_with xml libxml) \ $(use_with xml libxslt) \ $(use_with zlib) \ - $(use_with systemd) \ - ${uuid_config} + $(use_enable nls nls "'$(l10n_get_locales)'") } src_compile() { - emake world + emake + emake -C contrib } src_install() { - emake DESTDIR="${D}" install-world + emake DESTDIR="${D}" install + emake DESTDIR="${D}" install -C contrib dodoc README HISTORY doc/{TODO,bug.template} - insinto /etc/postgresql-${SLOT} - newins src/bin/psql/psqlrc.sample psqlrc - - use static-libs || find "${ED}" -name '*.a' -delete - - 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 - systemd_newtmpfilesd "${FILESDIR}"/${PN}.tmpfiles ${PN}-${SLOT}.conf + # 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 + for m in {initdb,pg_{controldata,ctl,resetxlog},post{gres,master}}; do + rm "${ED}/usr/share/postgresql-${SLOT}/man/man1/${m}.1" + done fi - - newbin "${FILESDIR}"/${PN}-check-db-dir ${PN}-${SLOT}-check-db-dir - - use pam && pamd_mimic system-auth ${PN}-${SLOT} auth account session - - 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/.}tmp" - done + docompress /usr/share/postgresql-${SLOT}/man/man{1,3,7} # Create slot specific man pages local bn f mansec slotted_name @@ -249,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} @@ -263,22 +216,68 @@ src_install() { popd > /dev/null done - if use prefix ; then - keepdir /run/postgresql - fperms 1775 /run/postgresql + 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 + + 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/.}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 + 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.2" | \ + systemd_newunit - ${PN}-${SLOT}.service + 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 + keepdir /run/postgresql + fperms 1775 /run/postgresql + fi fi } pkg_preinst() { # Find all of the slot-specific symlinks, if any, in /usr/bin (e.g., - # /usr/bin/psql97). They may have been created by the + # /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(). We - # only worry about the 9.7 slot as that's the last slot that had its - # slot-specific links generated by eselect. - # - # This can be removed when 10 is the lowest slot in the tree. + # 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 @@ -293,7 +292,9 @@ pkg_preinst() { # 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 - [[ $(${canonicalise} "${l}") == *postgresql-9.7* ]] && rm "${l}" + 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. @@ -304,33 +305,40 @@ pkg_preinst() { } pkg_postinst() { - use systemd && systemd_tmpfiles_create ${PN}-${SLOT}.conf + 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}/" - elog - elog "Gentoo specific documentation:" - elog "https://wiki.gentoo.org/wiki/PostgreSQL" - elog - elog "Official documentation:" - elog "${EROOT%/}/usr/share/doc/${PF}/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, and other options, 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 use server ; then + elog + elog "Gentoo specific documentation:" + elog "https://wiki.gentoo.org/wiki/PostgreSQL" + elog + elog "Official documentation:" + 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/" + 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}" + fi } pkg_prerm() { - if [[ -z ${REPLACED_BY_VERSION} ]] ; then + 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" @@ -345,6 +353,8 @@ pkg_postrm() { } 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}/" @@ -440,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}" @@ -455,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'." @@ -465,13 +470,17 @@ pkg_config() { } src_test() { - if [[ ${UID} -ne 0 ]] ; then + 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 - ewarn 'Tests cannot be run as root. Enable "userpriv" in FEATURES.' + 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 } diff --git a/dev-db/postgresql/postgresql-9999.ebuild b/dev-db/postgresql/postgresql-9.6.13-r1.ebuild similarity index 70% copy from dev-db/postgresql/postgresql-9999.ebuild copy to dev-db/postgresql/postgresql-9.6.13-r1.ebuild index e90d6a96bf1..a6c2ed402e2 100644 --- a/dev-db/postgresql/postgresql-9999.ebuild +++ b/dev-db/postgresql/postgresql-9.6.13-r1.ebuild @@ -1,33 +1,32 @@ # Copyright 1999-2019 Gentoo Authors # Distributed under the terms of the GNU General Public License v2 -EAPI="6" +EAPI=7 -PYTHON_COMPAT=( python2_7 python3_{5,6} ) +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" -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" -inherit flag-o-matic git-r3 linux-info multilib pam prefix python-single-r1 \ - systemd user versionator + zh_TW" -KEYWORDS="" +inherit flag-o-matic l10n linux-info multilib pam prefix python-single-r1 \ + systemd user -# Bump when rc released. -SLOT="13" +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" -EGIT_REPO_URI="https://git.postgresql.org/git/postgresql.git" +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" LICENSE="POSTGRESQL GPL-2" DESCRIPTION="PostgreSQL RDBMS" HOMEPAGE="https://www.postgresql.org/" -IUSE="kerberos kernel_linux ldap libressl llvm nls pam perl python +readline - selinux systemd ssl static-libs tcl threads uuid xml zlib" -for my_locale in ${PLOCALES}; do - IUSE+=" l10n_${my_locale}" -done +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} )" @@ -37,10 +36,6 @@ sys-apps/less virtual/libintl 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} ) @@ -49,9 +44,8 @@ ssl? ( !libressl? ( >=dev-libs/openssl-0.9.6-r1:0= ) libressl? ( dev-libs/libressl:= ) ) -systemd? ( sys-apps/systemd ) +server? ( systemd? ( sys-apps/systemd ) ) tcl? ( >=dev-lang/tcl-8:0= ) -uuid? ( dev-libs/ossp-uuid ) xml? ( dev-libs/libxml2 dev-libs/libxslt ) zlib? ( sys-libs/zlib ) " @@ -81,19 +75,12 @@ uuid? ( DEPEND="${CDEPEND} !!=dev-lang/perl-5.8 -app-text/docbook-dsssl-stylesheets -app-text/docbook-sgml-dtd:4.2 -app-text/docbook-xml-dtd:4.2 -app-text/docbook-xsl-stylesheets -app-text/openjade -dev-libs/libxml2 -dev-libs/libxslt sys-devel/bison sys-devel/flex nls? ( sys-devel/gettext ) xml? ( virtual/pkgconfig ) " + RDEPEND="${CDEPEND} !dev-db/postgresql-docs:${SLOT} !dev-db/postgresql-base:${SLOT} @@ -101,25 +88,8 @@ RDEPEND="${CDEPEND} selinux? ( sec-policy/selinux-postgresql ) " -my_get_locales() { - local my_locale locale_list - for my_locale in ${PLOCALES[@]}; do - use l10n_${my_locale} && locale_list+=( ${my_locale} ) - done - echo -n ${locale_list[@]} -} - -pkg_pretend() { - ewarn "You are using a live ebuild that uses the current source code as it is" - ewarn "available from PostgreSQL's Git repository at emerge time. Given such," - ewarn "the GNU Makefiles may be altered by upstream without notice and the" - ewarn "documentation for this live version is not readily available" - ewarn "online. Ergo, the ebuild maintainers will not support building a" - ewarn "client-only and/or document-free version." -} - pkg_setup() { - CONFIG_CHECK="~SYSVIPC" linux-info_pkg_setup + use server && CONFIG_CHECK="~SYSVIPC" linux-info_pkg_setup enewgroup postgres 70 enewuser postgres 70 /bin/sh /var/lib/postgresql postgres @@ -128,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 @@ -137,6 +110,8 @@ 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}-${SLOT}.3-no-server.patch" + if use pam ; then sed -e "s/\(#define PGSQL_PAM_SERVICE \"postgresql\)/\1-${SLOT}/" \ -i src/backend/libpq/auth.c || \ @@ -178,66 +153,49 @@ src_configure() { --sysconfdir="${PO}/etc/postgresql-${SLOT}" \ --with-system-tzdata="${PO}/usr/share/zoneinfo" \ $(use_enable !alpha spinlocks) \ - $(use_enable nls nls "'$(my_get_locales)'") \ + $(use_enable !pg_legacytimestamp integer-datetimes) \ + $(use_enable debug) \ $(use_enable threads thread-safety) \ $(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_with systemd) \ - ${uuid_config} + $(use_enable nls nls "'$(l10n_get_locales)'") } src_compile() { - emake world + emake + emake -C contrib } src_install() { - emake DESTDIR="${D}" install-world + emake DESTDIR="${D}" install + emake DESTDIR="${D}" install -C contrib dodoc README HISTORY doc/{TODO,bug.template} - insinto /etc/postgresql-${SLOT} - newins src/bin/psql/psqlrc.sample psqlrc - - use static-libs || find "${ED}" -name '*.a' -delete - - 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 - systemd_newtmpfilesd "${FILESDIR}"/${PN}.tmpfiles ${PN}-${SLOT}.conf + # 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 + for m in {initdb,pg_{controldata,ctl,resetxlog},post{gres,master}}; do + rm "${ED}/usr/share/postgresql-${SLOT}/man/man1/${m}.1" + done fi - - newbin "${FILESDIR}"/${PN}-check-db-dir ${PN}-${SLOT}-check-db-dir - - use pam && pamd_mimic system-auth ${PN}-${SLOT} auth account session - - 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/.}tmp" - done + docompress /usr/share/postgresql-${SLOT}/man/man{1,3,7} # Create slot specific man pages local bn f mansec slotted_name @@ -249,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} @@ -263,22 +221,68 @@ src_install() { popd > /dev/null done - if use prefix ; then - keepdir /run/postgresql - fperms 1775 /run/postgresql + 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 + + 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/.}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 + 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 + 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 + keepdir /run/postgresql + fperms 1775 /run/postgresql + fi fi } pkg_preinst() { # Find all of the slot-specific symlinks, if any, in /usr/bin (e.g., - # /usr/bin/psql97). They may have been created by the + # /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(). We - # only worry about the 9.7 slot as that's the last slot that had its - # slot-specific links generated by eselect. - # - # This can be removed when 10 is the lowest slot in the tree. + # 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 @@ -293,7 +297,9 @@ pkg_preinst() { # 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 - [[ $(${canonicalise} "${l}") == *postgresql-9.7* ]] && rm "${l}" + 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. @@ -304,33 +310,35 @@ pkg_preinst() { } pkg_postinst() { - use systemd && systemd_tmpfiles_create ${PN}-${SLOT}.conf + 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}/" - elog - elog "Gentoo specific documentation:" - elog "https://wiki.gentoo.org/wiki/PostgreSQL" - elog - elog "Official documentation:" - elog "${EROOT%/}/usr/share/doc/${PF}/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, and other options, 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 use server ; then + elog + elog "Gentoo specific documentation:" + elog "https://wiki.gentoo.org/wiki/PostgreSQL" + elog + elog "Official documentation:" + 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/" + 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}" + fi } pkg_prerm() { - if [[ -z ${REPLACED_BY_VERSION} ]] ; then + 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" @@ -345,6 +353,8 @@ pkg_postrm() { } 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}/" @@ -465,13 +475,17 @@ pkg_config() { } src_test() { - if [[ ${UID} -ne 0 ]] ; then + 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 - ewarn 'Tests cannot be run as root. Enable "userpriv" in FEATURES.' + 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 } diff --git a/dev-db/postgresql/postgresql-9999.ebuild b/dev-db/postgresql/postgresql-9999.ebuild index e90d6a96bf1..76764654058 100644 --- a/dev-db/postgresql/postgresql-9999.ebuild +++ b/dev-db/postgresql/postgresql-9999.ebuild @@ -1,16 +1,16 @@ # Copyright 1999-2019 Gentoo Authors # Distributed under the terms of the GNU General Public License v2 -EAPI="6" +EAPI=7 -PYTHON_COMPAT=( python2_7 python3_{5,6} ) +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" 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" inherit flag-o-matic git-r3 linux-info multilib pam prefix python-single-r1 \ - systemd user versionator + systemd user KEYWORDS="" @@ -23,8 +23,9 @@ LICENSE="POSTGRESQL GPL-2" DESCRIPTION="PostgreSQL RDBMS" HOMEPAGE="https://www.postgresql.org/" -IUSE="kerberos kernel_linux ldap libressl llvm nls pam perl python +readline - selinux systemd ssl static-libs tcl threads uuid xml zlib" +IUSE="debug icu kerberos kernel_linux ldap libressl llvm nls pam perl + python +readline selinux systemd ssl static-libs tcl threads uuid + xml zlib" for my_locale in ${PLOCALES}; do IUSE+=" l10n_${my_locale}" done @@ -35,6 +36,7 @@ CDEPEND=" >=app-eselect/eselect-postgresql-2.0 sys-apps/less virtual/libintl +icu? ( dev-libs/icu:= ) kerberos? ( virtual/krb5 ) ldap? ( net-nds/openldap ) llvm? ( @@ -178,8 +180,10 @@ src_configure() { --sysconfdir="${PO}/etc/postgresql-${SLOT}" \ --with-system-tzdata="${PO}/usr/share/zoneinfo" \ $(use_enable !alpha spinlocks) \ + $(use_enable debug) \ $(use_enable nls nls "'$(my_get_locales)'") \ $(use_enable threads thread-safety) \ + $(use_with icu) \ $(use_with kerberos gssapi) \ $(use_with ldap) \ $(use_with llvm) \ @@ -208,7 +212,11 @@ src_install() { insinto /etc/postgresql-${SLOT} newins src/bin/psql/psqlrc.sample psqlrc - use static-libs || find "${ED}" -name '*.a' -delete + # 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 sed -e "s|@SLOT@|${SLOT}|g" -e "s|@LIBDIR@|$(get_libdir)|g" \ "${FILESDIR}/${PN}.confd-9.3" | newconfd - ${PN}-${SLOT}