From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from lists.gentoo.org (pigeon.gentoo.org [208.92.234.80]) by finch.gentoo.org (Postfix) with ESMTP id 69F9F13888F for ; Thu, 8 Oct 2015 20:34:17 +0000 (UTC) Received: from pigeon.gentoo.org (localhost [127.0.0.1]) by pigeon.gentoo.org (Postfix) with SMTP id 2C31E21C002; Thu, 8 Oct 2015 20:34:15 +0000 (UTC) Received: from smtp.gentoo.org (smtp.gentoo.org [140.211.166.183]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by pigeon.gentoo.org (Postfix) with ESMTPS id 9CE9C21C001 for ; Thu, 8 Oct 2015 20:34:14 +0000 (UTC) Received: from oystercatcher.gentoo.org (unknown [IPv6:2a01:4f8:202:4333:225:90ff:fed9:fc84]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by smtp.gentoo.org (Postfix) with ESMTPS id 9728234072E for ; Thu, 8 Oct 2015 20:34:13 +0000 (UTC) Received: from localhost.localdomain (localhost [127.0.0.1]) by oystercatcher.gentoo.org (Postfix) with ESMTP id C7EB3C67 for ; Thu, 8 Oct 2015 20:34:10 +0000 (UTC) From: "Aaron 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 Swenson" Message-ID: <1444336362.e32726a494db57f6847c7743ace48f871c3bb148.titanofold@gentoo> Subject: [gentoo-commits] repo/gentoo:master commit in: dev-db/postgresql/ X-VCS-Repository: repo/gentoo X-VCS-Files: dev-db/postgresql/Manifest dev-db/postgresql/postgresql-9.0.23.ebuild dev-db/postgresql/postgresql-9.1.19.ebuild dev-db/postgresql/postgresql-9.2.14.ebuild dev-db/postgresql/postgresql-9.3.10.ebuild dev-db/postgresql/postgresql-9.4.5.ebuild dev-db/postgresql/postgresql-9.5_alpha1-r1.ebuild dev-db/postgresql/postgresql-9.5_beta1.ebuild dev-db/postgresql/postgresql-9999.ebuild X-VCS-Directories: dev-db/postgresql/ X-VCS-Committer: titanofold X-VCS-Committer-Name: Aaron Swenson X-VCS-Revision: e32726a494db57f6847c7743ace48f871c3bb148 X-VCS-Branch: master Date: Thu, 8 Oct 2015 20:34:10 +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-Archives-Salt: 2c7e6a45-1abe-4124-941f-c4ac46605ca7 X-Archives-Hash: 5e36a4ea48fc8fd3c4662d8bb03930c0 commit: e32726a494db57f6847c7743ace48f871c3bb148 Author: Aaron W. Swenson gentoo org> AuthorDate: Thu Oct 8 20:30:13 2015 +0000 Commit: Aaron Swenson gentoo org> CommitDate: Thu Oct 8 20:32:42 2015 +0000 URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=e32726a4 dev-db/postgresql: Security Bump Security update fixes issues: 1. CVE-2015-5288: The crypt() function included with the optional pgCrypto extension could be exploited to read a few additional bytes of memory. No working exploit for this issue has been developed. 2. CVE-2015-5289: json or jsonb input values constructed from arbitrary user input can crash the PostgreSQL server and cause a denial of service. Also added note for new installations that re-sourcing /etc/profile is reuiqred to pick up environment changes, like MANPATH so man can find pages installed in non-standard locations. Package-Manager: portage-2.2.20.1 dev-db/postgresql/Manifest | 7 + ...gresql-9999.ebuild => postgresql-9.0.23.ebuild} | 165 +++++++++--------- ...gresql-9999.ebuild => postgresql-9.1.19.ebuild} | 169 +++++++++--------- ...gresql-9999.ebuild => postgresql-9.2.14.ebuild} | 155 ++++++++++------- ...gresql-9999.ebuild => postgresql-9.3.10.ebuild} | 155 ++++++++++------- ...tgresql-9999.ebuild => postgresql-9.4.5.ebuild} | 191 +++++++++++++-------- ...9999.ebuild => postgresql-9.5_alpha1-r1.ebuild} | 187 +++++++++++++------- ...sql-9999.ebuild => postgresql-9.5_beta1.ebuild} | 187 +++++++++++++------- dev-db/postgresql/postgresql-9999.ebuild | 8 + 9 files changed, 739 insertions(+), 485 deletions(-) diff --git a/dev-db/postgresql/Manifest b/dev-db/postgresql/Manifest index 1af4066..e7612a7 100644 --- a/dev-db/postgresql/Manifest +++ b/dev-db/postgresql/Manifest @@ -1,5 +1,12 @@ DIST postgresql-9.0.22.tar.bz2 15046629 SHA256 94d4b20d854cd7fa4c9c322c0b602751edbc5ca0d4f29fe92f996e28bb32f8a5 SHA512 19e7888f92c0cc6c948dd78831768fd7184fc4bc25ca1950a76f5175ed1763b8a34949e90eebbb063b072fbcac64c9fdf6072f5a22eaaae0c33e93cf6c49955b WHIRLPOOL 8b785c90a40fc32975cb81a9d8bf22bdd8667fd26710a962cecbf81c25f6348b3c49f30a91066ad8bb1bffce55658bab50181a2a82e217a7e71d7d361f2e5d92 +DIST postgresql-9.0.23.tar.bz2 15045569 SHA256 3dbcbe19c814139a3f4be8bc6b49db804753cbc49979f345083e835c52b4d7de SHA512 db8fe64a5a5a1caae97e792ee5b8bcc375c6d6e10ef9c35f1003f174745568854dc5a7a58dbaf46794dcd35dee5a13f6eb1ba356f9618134b601b7759c753c9f WHIRLPOOL 5177facff628271a0d57d1f2925cfc04796020492c4102f0b0c6fa34149da9ddd9ccb0a38629e320521fe82163bdd4aa56f74af3a887ff4389cd9f62e921c53a DIST postgresql-9.1.18.tar.bz2 15822081 SHA256 2726d526666904b454f87fe2ae54357c2ab9eb8aba299a4c904829b7598584a8 SHA512 ba51e431c947b749c6522fd887ecbf50bf50cc08f2323b122a35fb18fccceb46d50f0e632a5b19df9855b5a29c98534d19f241d31e5bc235b0b06e8fb210210e WHIRLPOOL 59b5e6fb5626d630e41a8c0497480948d5bb0751fffbe1602dc62009948bad047c2ddc805caa3510157924c0fc74ead2fb2a71d0569d5c1b56eae753d9dbcd1a +DIST postgresql-9.1.19.tar.bz2 15843978 SHA256 cbd5057451147dd63a1e764176a4e17a7795773be1e4266ea9faa951064c0ec6 SHA512 23dd4108556edcc667f599c5663356a1106bc239a1c5337d153c13a1e1871d52316825b84802bbc1d79612dfa4c9c77f4c4b96d59d23d7338988bdf370e956d4 WHIRLPOOL 6845fd8071032e987ab65a642ca04adbc8b464332bac8c346f01e011411947aa4341ea596fd910342124fcbae4cc25410c25ab695894b0b68d20441df5424722 DIST postgresql-9.2.13.tar.bz2 16401289 SHA256 5dcbd6209a8c0f508504fa433486583a42caaa240c823e1b3576db8a72db6a44 SHA512 0bcf8284aad756a70cd5e6d34a9f2cc17825151740da1c90a459edbf188a9a366831b71999803d301f0de35a5778f524b72779818b89599ffeb41cf1c2140077 WHIRLPOOL 3859e3e5c994441bc931ee92042a08eeb7b1196301b603f311372c2c2c65083b38713f4eac3e06c243703c2446a260b1ae861b7690f1fea03184d0518b10b486 +DIST postgresql-9.2.14.tar.bz2 16451398 SHA256 54c20b3f320a48c38487f2711e98b2fa3f9ce4305905a294ad0449e8b4fb292e SHA512 268015d9e397ee62eebbbc9abf1ee25d0d4aa6bf5943b404009b3aab31f485b8523353c679beed34cc00304b9d4c7aca9de0ba841d9841dbf885d05d1a5692a1 WHIRLPOOL 4f6d5d6989a67d14082ddb215411b55d0dc0be29772e6a593b4df133489ff4a7e6c265d0830adba64d4c6be47e17a949cbc21d6570dceb9362399649af2be88e +DIST postgresql-9.3.10.tar.bz2 16995860 SHA256 e5444f0f76aff98a251400b7c28bc361d65e3d72d8d6cb9bb5d8361a69541531 SHA512 6b048fd1d0b38f72bab6ea70e40f10e7b805b94fc4c6fd865e0ec5e86da3c54043f20059dbf716d29eb4ca787dc50da561b1c7b48ab9f3096ebc651300855672 WHIRLPOOL b8ea15a04d18535662832d444b556aedffaa8c954b52dcd42d548f53f93b8a9dbfbe9298f63c26d44c8b757e8c10d76711c303cd83c84d9c86bf23c2837e74ce DIST postgresql-9.3.9.tar.bz2 16959310 SHA256 f73bd0ec2028511732430beb22414a022d2114231366e8cbe78c149793910549 SHA512 c6a9cae07968c99039910bb98d3e365fc285d2cdef02dd594128bd69ae65926392b18b65b0e13c3f17c366413bffbe226b6e8ce3453774b0439745b18ea129a8 WHIRLPOOL bcbc66a7b846b42c2d17d187e8b2c751afda8e5cdc7fa385ba1145f84e34950fad3b82fc1d04ae7ff9b7de01fd5705d9e507aa841880b97df2edb2ac8749a5fd DIST postgresql-9.4.4.tar.bz2 17616272 SHA256 538ed99688d6fdbec6fd166d1779cf4588bf2f16c52304e5ef29f904c43b0013 SHA512 e0f0efc2e3a01c93dad98796476808d60be243841104ceb496d2227214a9b4c5a32c5f550f0a456b0c64f2458aae32026960b63f68188269d367d900683a6061 WHIRLPOOL 9041b4b4e1b53bc97345fe587bc874df1185ef76fe105bfb54e9c882f3fd51841448e92deb12e1415ce76158da0683fcff333e08b9e54a8be565562ebfec6175 +DIST postgresql-9.4.5.tar.bz2 17660960 SHA256 b87c50c66b6ea42a9712b5f6284794fabad0616e6ae420cf0f10523be6d94a39 SHA512 01ad4b5a097efa70f74a9e96b764c32953a9df57d6bf81b893a1e552475f6aba0381580dcd1f27b2c443ce89fecc429eeeb0219af60a0b2f84798f76eb1757f5 WHIRLPOOL 8ea0e9a40cefa53568071f2137bac996898f9bd486cfb5cfcf8bb49590816833f37878f10caabffb9d3127e047f00c916b8830594a485ebe16fb9fe6fc834c95 +DIST postgresql-9.5alpha1.tar.bz2 18103456 SHA256 c97779f6c539e9072fa853fca8273f910f08805ae74456a01ab1fd0841ecfca2 SHA512 b220bf7f3ac97aaa790d09f981c7050ebed0d08517e61749d10e2f837cac0de259ca650aae4c31295147d7791a1a8f1c973057448937e386fb197b1b03cf9ec1 WHIRLPOOL 7bfac23f5942bc557655f2c6f97d6ad1bf6bfd568fb0497ed127c50dec4ef07ae88f89568588e20e00f681c921a512b14e61f3ca6a506508d17e96d8eb4f0817 +DIST postgresql-9.5beta1.tar.bz2 18291273 SHA256 b53199e2667982de2039ad7e30467f67c5d7af678e69d6211de8ba1cac75c9f0 SHA512 e8881939bdba346f3770102324d7b011c16e4529603280459e17587e06d933c9f3505b40c5cc82ed3f0410ffd88b5e2f18b2a3272aa4680c3798cf7a0fcc0374 WHIRLPOOL 0cf2c3fd40b2a8d482da5a1597abbc20d239f577c6472a03f8d9795a3e8ef142dfaad7a1eeebf2b2544e34712c243bbd9de63fb4045c4ce15dbde8ec74acb707 diff --git a/dev-db/postgresql/postgresql-9999.ebuild b/dev-db/postgresql/postgresql-9.0.23.ebuild similarity index 70% copy from dev-db/postgresql/postgresql-9999.ebuild copy to dev-db/postgresql/postgresql-9.0.23.ebuild index 6dec347..22d4167 100644 --- a/dev-db/postgresql/postgresql-9999.ebuild +++ b/dev-db/postgresql/postgresql-9.0.23.ebuild @@ -4,17 +4,20 @@ EAPI="5" +# Testing within Portage's environment is broken, and the patch no +# longer applies cleanly. +RESTRICT="test" + PYTHON_COMPAT=( python{2_7,3_4} ) -inherit base eutils flag-o-matic git-2 linux-info multilib pam prefix \ - python-single-r1 systemd user versionator +inherit eutils flag-o-matic linux-info multilib pam prefix python-single-r1 \ + systemd user versionator -KEYWORDS="" +KEYWORDS="~alpha ~amd64 ~arm ~hppa ~ia64 ~mips ~ppc ~ppc64 ~s390 ~sh ~sparc ~x86 ~amd64-fbsd ~sparc-fbsd ~x86-fbsd ~ppc-macos ~x86-solaris" -# Fix if needed -SLOT="9.6" +SLOT="$(get_version_component_range 1-2)" -EGIT_REPO_URI="git://git.postgresql.org/git/postgresql.git" +SRC_URI="mirror://postgresql/source/v${PV}/postgresql-${PV}.tar.bz2" LICENSE="POSTGRESQL GPL-2" DESCRIPTION="PostgreSQL RDBMS" @@ -22,7 +25,7 @@ HOMEPAGE="http://www.postgresql.org/" LINGUAS="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" -IUSE="kerberos kernel_linux ldap libressl nls pam perl -pg_legacytimestamp python +IUSE="doc kerberos kernel_linux ldap libressl nls pam perl -pg_legacytimestamp python +readline selinux +server ssl static-libs tcl threads uuid xml zlib" for lingua in ${LINGUAS}; do @@ -61,23 +64,11 @@ zlib? ( sys-libs/zlib ) 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 ) " -src_unpack() { - base_src_unpack - git-2_src_unpack -} RDEPEND="${CDEPEND} !dev-db/postgresql-docs:${SLOT} @@ -86,17 +77,8 @@ RDEPEND="${CDEPEND} selinux? ( sec-policy/selinux-postgresql ) " -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 @@ -112,6 +94,10 @@ src_prepare() { sed "s|\(PGSOCKET_DIR\s\+\)\"/tmp\"|\1\"${EPREFIX}/run/postgresql\"|" \ -i src/include/pg_config_manual.h || die + epatch "${FILESDIR}/pg_ctl-exit-status.patch" + + use server || epatch "${FILESDIR}/${PN}-${SLOT}-no-server.patch" + if use pam ; then sed -e "s/\(#define PGSQL_PAM_SERVICE \"postgresql\)/\1-${SLOT}/" \ -i src/backend/libpq/auth.c || \ @@ -144,6 +130,7 @@ src_configure() { $(use_enable !pg_legacytimestamp integer-datetimes) \ $(use_enable threads thread-safety) \ $(use_with kerberos gssapi) \ + $(use_with kerberos krb5) \ $(use_with ldap) \ $(use_with pam) \ $(use_with perl) \ @@ -159,14 +146,30 @@ src_configure() { } 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} + # 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 + docompress /usr/share/postgresql-${SLOT}/man/man{1,3,7} + insinto /etc/postgresql-${SLOT} newins src/bin/psql/psqlrc.sample psqlrc @@ -176,25 +179,35 @@ src_install() { use static-libs || find "${ED}" -name '*.a' -delete - sed -e "s|@SLOT@|${SLOT}|g" -e "s|@LIBDIR@|$(get_libdir)|g" \ - "${FILESDIR}/${PN}.confd" | newconfd - ${PN}-${SLOT} + if use doc ; then + docinto html + dodoc doc/src/sgml/html/* + + docinto sgml + dodoc doc/src/sgml/*.{sgml,dsl} + fi - sed -e "s|@SLOT@|${SLOT}|g" -e "s|@LIBDIR@|$(get_libdir)|g" \ - "${FILESDIR}/${PN}.init" | newinitd - ${PN}-${SLOT} + if use server; then + sed -e "s|@SLOT@|${SLOT}|g" -e "s|@LIBDIR@|$(get_libdir)|g" \ + "${FILESDIR}/${PN}.confd" | newconfd - ${PN}-${SLOT} - sed -e "s|@SLOT@|${SLOT}|g" -e "s|@LIBDIR@|$(get_libdir)|g" \ - "${FILESDIR}/${PN}.service" | \ - systemd_newunit - ${PN}-${SLOT}.service + sed -e "s|@SLOT@|${SLOT}|g" -e "s|@LIBDIR@|$(get_libdir)|g" \ + "${FILESDIR}/${PN}.init-pre_9.2" | newinitd - ${PN}-${SLOT} - systemd_newtmpfilesd "${FILESDIR}"/${PN}.tmpfilesd ${PN}-${SLOT}.conf + sed -e "s|@SLOT@|${SLOT}|g" -e "s|@LIBDIR@|$(get_libdir)|g" \ + "${FILESDIR}/${PN}.service" | \ + systemd_newunit - ${PN}-${SLOT}.service - newbin "${FILESDIR}"/${PN}-check-db-dir ${PN}-${SLOT}-check-db-dir + systemd_newtmpfilesd "${FILESDIR}"/${PN}.tmpfilesd ${PN}-${SLOT}.conf - use pam && pamd_mimic system-auth ${PN}-${SLOT} auth account session + newbin "${FILESDIR}"/${PN}-check-db-dir ${PN}-${SLOT}-check-db-dir - if use prefix ; then - keepdir /run/postgresql - fperms 0775 /run/postgresql + use pam && pamd_mimic system-auth ${PN}-${SLOT} auth account session + + if use prefix ; then + keepdir /run/postgresql + fperms 0775 /run/postgresql + fi fi } @@ -204,27 +217,37 @@ pkg_postinst() { 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 [[ -z ${REPLACING_VERSIONS} ]] ; then + elog + elog "It looks like this is your first time installing PostgreSQL. Run the" + elog "following command in all active shells to pick up changes to the default" + elog "environemnt:" + elog " source /etc/profile" + fi + + 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}" + 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" @@ -239,6 +262,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}/" @@ -355,19 +380,3 @@ pkg_config() { einfo "instead of 'pg_ctl'." fi } - -src_test() { - einfo ">>> Test phase [check]: ${CATEGORY}/${PF}" - - if [[ ${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 - [[ ${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.1.19.ebuild similarity index 69% copy from dev-db/postgresql/postgresql-9999.ebuild copy to dev-db/postgresql/postgresql-9.1.19.ebuild index 6dec347..de9a2ba 100644 --- a/dev-db/postgresql/postgresql-9999.ebuild +++ b/dev-db/postgresql/postgresql-9.1.19.ebuild @@ -4,17 +4,20 @@ EAPI="5" +# Testing within Portage's environment is broken, and the patch no +# longer applies cleanly. +RESTRICT="test" + PYTHON_COMPAT=( python{2_7,3_4} ) -inherit base eutils flag-o-matic git-2 linux-info multilib pam prefix \ - python-single-r1 systemd user versionator +inherit eutils flag-o-matic linux-info multilib pam prefix python-single-r1 \ + systemd user versionator -KEYWORDS="" +KEYWORDS="~alpha ~amd64 ~arm ~hppa ~ia64 ~mips ~ppc ~ppc64 ~s390 ~sh ~sparc ~x86 ~amd64-fbsd ~sparc-fbsd ~x86-fbsd ~ppc-macos ~x86-solaris" -# Fix if needed -SLOT="9.6" +SLOT="$(get_version_component_range 1-2)" -EGIT_REPO_URI="git://git.postgresql.org/git/postgresql.git" +SRC_URI="mirror://postgresql/source/v${PV}/postgresql-${PV}.tar.bz2" LICENSE="POSTGRESQL GPL-2" DESCRIPTION="PostgreSQL RDBMS" @@ -22,7 +25,7 @@ HOMEPAGE="http://www.postgresql.org/" LINGUAS="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" -IUSE="kerberos kernel_linux ldap libressl nls pam perl -pg_legacytimestamp python +IUSE="doc kerberos kernel_linux ldap libressl nls pam perl -pg_legacytimestamp python +readline selinux +server ssl static-libs tcl threads uuid xml zlib" for lingua in ${LINGUAS}; do @@ -61,23 +64,11 @@ zlib? ( sys-libs/zlib ) 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 ) " -src_unpack() { - base_src_unpack - git-2_src_unpack -} RDEPEND="${CDEPEND} !dev-db/postgresql-docs:${SLOT} @@ -86,17 +77,8 @@ RDEPEND="${CDEPEND} selinux? ( sec-policy/selinux-postgresql ) " -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 @@ -112,6 +94,14 @@ src_prepare() { sed "s|\(PGSOCKET_DIR\s\+\)\"/tmp\"|\1\"${EPREFIX}/run/postgresql\"|" \ -i src/include/pg_config_manual.h || die + epatch "${FILESDIR}/pg_ctl-exit-status.patch" + + use server || epatch "${FILESDIR}/${PN}-${SLOT}-no-server.patch" + + # Fix bug 486556 where the server would crash at start up because of + # an infinite loop caused by a self-referencing symlink. + epatch "${FILESDIR}/postgresql-9.1-tz-dir-overflow.patch" + if use pam ; then sed -e "s/\(#define PGSQL_PAM_SERVICE \"postgresql\)/\1-${SLOT}/" \ -i src/backend/libpq/auth.c || \ @@ -144,6 +134,7 @@ src_configure() { $(use_enable !pg_legacytimestamp integer-datetimes) \ $(use_enable threads thread-safety) \ $(use_with kerberos gssapi) \ + $(use_with kerberos krb5) \ $(use_with ldap) \ $(use_with pam) \ $(use_with perl) \ @@ -159,14 +150,30 @@ src_configure() { } 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} + # 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 + docompress /usr/share/postgresql-${SLOT}/man/man{1,3,7} + insinto /etc/postgresql-${SLOT} newins src/bin/psql/psqlrc.sample psqlrc @@ -176,25 +183,35 @@ src_install() { use static-libs || find "${ED}" -name '*.a' -delete - sed -e "s|@SLOT@|${SLOT}|g" -e "s|@LIBDIR@|$(get_libdir)|g" \ - "${FILESDIR}/${PN}.confd" | newconfd - ${PN}-${SLOT} + if use doc ; then + docinto html + dodoc doc/src/sgml/html/* + + docinto sgml + dodoc doc/src/sgml/*.{sgml,dsl} + fi - sed -e "s|@SLOT@|${SLOT}|g" -e "s|@LIBDIR@|$(get_libdir)|g" \ - "${FILESDIR}/${PN}.init" | newinitd - ${PN}-${SLOT} + if use server; then + sed -e "s|@SLOT@|${SLOT}|g" -e "s|@LIBDIR@|$(get_libdir)|g" \ + "${FILESDIR}/${PN}.confd" | newconfd - ${PN}-${SLOT} - sed -e "s|@SLOT@|${SLOT}|g" -e "s|@LIBDIR@|$(get_libdir)|g" \ - "${FILESDIR}/${PN}.service" | \ - systemd_newunit - ${PN}-${SLOT}.service + sed -e "s|@SLOT@|${SLOT}|g" -e "s|@LIBDIR@|$(get_libdir)|g" \ + "${FILESDIR}/${PN}.init-pre_9.2" | newinitd - ${PN}-${SLOT} - systemd_newtmpfilesd "${FILESDIR}"/${PN}.tmpfilesd ${PN}-${SLOT}.conf + sed -e "s|@SLOT@|${SLOT}|g" -e "s|@LIBDIR@|$(get_libdir)|g" \ + "${FILESDIR}/${PN}.service" | \ + systemd_newunit - ${PN}-${SLOT}.service - newbin "${FILESDIR}"/${PN}-check-db-dir ${PN}-${SLOT}-check-db-dir + systemd_newtmpfilesd "${FILESDIR}"/${PN}.tmpfilesd ${PN}-${SLOT}.conf - use pam && pamd_mimic system-auth ${PN}-${SLOT} auth account session + newbin "${FILESDIR}"/${PN}-check-db-dir ${PN}-${SLOT}-check-db-dir - if use prefix ; then - keepdir /run/postgresql - fperms 0775 /run/postgresql + use pam && pamd_mimic system-auth ${PN}-${SLOT} auth account session + + if use prefix ; then + keepdir /run/postgresql + fperms 0775 /run/postgresql + fi fi } @@ -204,27 +221,37 @@ pkg_postinst() { 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 [[ -z ${REPLACING_VERSIONS} ]] ; then + elog + elog "It looks like this is your first time installing PostgreSQL. Run the" + elog "following command in all active shells to pick up changes to the default" + elog "environemnt:" + elog " source /etc/profile" + fi + + 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}" + 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" @@ -239,6 +266,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}/" @@ -355,19 +384,3 @@ pkg_config() { einfo "instead of 'pg_ctl'." fi } - -src_test() { - einfo ">>> Test phase [check]: ${CATEGORY}/${PF}" - - if [[ ${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 - [[ ${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.2.14.ebuild similarity index 69% copy from dev-db/postgresql/postgresql-9999.ebuild copy to dev-db/postgresql/postgresql-9.2.14.ebuild index 6dec347..d92037d 100644 --- a/dev-db/postgresql/postgresql-9999.ebuild +++ b/dev-db/postgresql/postgresql-9.2.14.ebuild @@ -6,15 +6,14 @@ EAPI="5" PYTHON_COMPAT=( python{2_7,3_4} ) -inherit base eutils flag-o-matic git-2 linux-info multilib pam prefix \ - python-single-r1 systemd user versionator +inherit eutils flag-o-matic linux-info multilib pam prefix python-single-r1 \ + systemd user versionator -KEYWORDS="" +KEYWORDS="~alpha ~amd64 ~arm ~hppa ~ia64 ~mips ~ppc ~ppc64 ~s390 ~sh ~sparc ~x86 ~amd64-fbsd ~sparc-fbsd ~x86-fbsd ~ppc-macos ~x86-solaris" -# Fix if needed -SLOT="9.6" +SLOT="$(get_version_component_range 1-2)" -EGIT_REPO_URI="git://git.postgresql.org/git/postgresql.git" +SRC_URI="mirror://postgresql/source/v${PV}/postgresql-${PV}.tar.bz2" LICENSE="POSTGRESQL GPL-2" DESCRIPTION="PostgreSQL RDBMS" @@ -22,7 +21,7 @@ HOMEPAGE="http://www.postgresql.org/" LINGUAS="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" -IUSE="kerberos kernel_linux ldap libressl nls pam perl -pg_legacytimestamp python +IUSE="doc kerberos kernel_linux ldap libressl nls pam perl -pg_legacytimestamp python +readline selinux +server ssl static-libs tcl threads uuid xml zlib" for lingua in ${LINGUAS}; do @@ -61,23 +60,11 @@ zlib? ( sys-libs/zlib ) 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 ) " -src_unpack() { - base_src_unpack - git-2_src_unpack -} RDEPEND="${CDEPEND} !dev-db/postgresql-docs:${SLOT} @@ -86,17 +73,8 @@ RDEPEND="${CDEPEND} selinux? ( sec-policy/selinux-postgresql ) " -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 @@ -112,6 +90,12 @@ src_prepare() { sed "s|\(PGSOCKET_DIR\s\+\)\"/tmp\"|\1\"${EPREFIX}/run/postgresql\"|" \ -i src/include/pg_config_manual.h || die + use server || epatch "${FILESDIR}/${PN}-${SLOT}-no-server.patch" + + # Fix bug 486556 where the server would crash at start up because of + # an infinite loop caused by a self-referencing symlink. + epatch "${FILESDIR}/postgresql-9.2-9.4-tz-dir-overflow.patch" + if use pam ; then sed -e "s/\(#define PGSQL_PAM_SERVICE \"postgresql\)/\1-${SLOT}/" \ -i src/backend/libpq/auth.c || \ @@ -144,6 +128,7 @@ src_configure() { $(use_enable !pg_legacytimestamp integer-datetimes) \ $(use_enable threads thread-safety) \ $(use_with kerberos gssapi) \ + $(use_with kerberos krb5) \ $(use_with ldap) \ $(use_with pam) \ $(use_with perl) \ @@ -159,14 +144,30 @@ src_configure() { } 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} + # 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 + docompress /usr/share/postgresql-${SLOT}/man/man{1,3,7} + insinto /etc/postgresql-${SLOT} newins src/bin/psql/psqlrc.sample psqlrc @@ -176,25 +177,35 @@ src_install() { use static-libs || find "${ED}" -name '*.a' -delete - sed -e "s|@SLOT@|${SLOT}|g" -e "s|@LIBDIR@|$(get_libdir)|g" \ - "${FILESDIR}/${PN}.confd" | newconfd - ${PN}-${SLOT} + if use doc ; then + docinto html + dodoc doc/src/sgml/html/* + + docinto sgml + dodoc doc/src/sgml/*.{sgml,dsl} + fi - sed -e "s|@SLOT@|${SLOT}|g" -e "s|@LIBDIR@|$(get_libdir)|g" \ - "${FILESDIR}/${PN}.init" | newinitd - ${PN}-${SLOT} + if use server; then + sed -e "s|@SLOT@|${SLOT}|g" -e "s|@LIBDIR@|$(get_libdir)|g" \ + "${FILESDIR}/${PN}.confd" | newconfd - ${PN}-${SLOT} - sed -e "s|@SLOT@|${SLOT}|g" -e "s|@LIBDIR@|$(get_libdir)|g" \ - "${FILESDIR}/${PN}.service" | \ - systemd_newunit - ${PN}-${SLOT}.service + sed -e "s|@SLOT@|${SLOT}|g" -e "s|@LIBDIR@|$(get_libdir)|g" \ + "${FILESDIR}/${PN}.init" | newinitd - ${PN}-${SLOT} - systemd_newtmpfilesd "${FILESDIR}"/${PN}.tmpfilesd ${PN}-${SLOT}.conf + sed -e "s|@SLOT@|${SLOT}|g" -e "s|@LIBDIR@|$(get_libdir)|g" \ + "${FILESDIR}/${PN}.service" | \ + systemd_newunit - ${PN}-${SLOT}.service - newbin "${FILESDIR}"/${PN}-check-db-dir ${PN}-${SLOT}-check-db-dir + systemd_newtmpfilesd "${FILESDIR}"/${PN}.tmpfilesd ${PN}-${SLOT}.conf - use pam && pamd_mimic system-auth ${PN}-${SLOT} auth account session + newbin "${FILESDIR}"/${PN}-check-db-dir ${PN}-${SLOT}-check-db-dir - if use prefix ; then - keepdir /run/postgresql - fperms 0775 /run/postgresql + use pam && pamd_mimic system-auth ${PN}-${SLOT} auth account session + + if use prefix ; then + keepdir /run/postgresql + fperms 0775 /run/postgresql + fi fi } @@ -204,27 +215,37 @@ pkg_postinst() { 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 [[ -z ${REPLACING_VERSIONS} ]] ; then + elog + elog "It looks like this is your first time installing PostgreSQL. Run the" + elog "following command in all active shells to pick up changes to the default" + elog "environemnt:" + elog " source /etc/profile" + fi + + 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}" + 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" @@ -239,6 +260,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}/" @@ -359,15 +382,17 @@ pkg_config() { src_test() { einfo ">>> Test phase [check]: ${CATEGORY}/${PF}" - 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 + 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 'Tests cannot be run as root. Enable "userpriv" in FEATURES.' - ewarn "Skipping." + ewarn 'Skipping.' fi } diff --git a/dev-db/postgresql/postgresql-9999.ebuild b/dev-db/postgresql/postgresql-9.3.10.ebuild similarity index 69% copy from dev-db/postgresql/postgresql-9999.ebuild copy to dev-db/postgresql/postgresql-9.3.10.ebuild index 6dec347..1022684 100644 --- a/dev-db/postgresql/postgresql-9999.ebuild +++ b/dev-db/postgresql/postgresql-9.3.10.ebuild @@ -6,15 +6,14 @@ EAPI="5" PYTHON_COMPAT=( python{2_7,3_4} ) -inherit base eutils flag-o-matic git-2 linux-info multilib pam prefix \ - python-single-r1 systemd user versionator +inherit eutils flag-o-matic linux-info multilib pam prefix python-single-r1 \ + systemd user versionator -KEYWORDS="" +KEYWORDS="~alpha ~amd64 ~arm ~hppa ~ia64 ~mips ~ppc ~ppc64 ~s390 ~sh ~sparc ~x86 ~amd64-fbsd ~sparc-fbsd ~x86-fbsd ~ppc-macos ~x86-solaris" -# Fix if needed -SLOT="9.6" +SLOT="$(get_version_component_range 1-2)" -EGIT_REPO_URI="git://git.postgresql.org/git/postgresql.git" +SRC_URI="mirror://postgresql/source/v${PV}/postgresql-${PV}.tar.bz2" LICENSE="POSTGRESQL GPL-2" DESCRIPTION="PostgreSQL RDBMS" @@ -22,7 +21,7 @@ HOMEPAGE="http://www.postgresql.org/" LINGUAS="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" -IUSE="kerberos kernel_linux ldap libressl nls pam perl -pg_legacytimestamp python +IUSE="doc kerberos kernel_linux ldap libressl nls pam perl -pg_legacytimestamp python +readline selinux +server ssl static-libs tcl threads uuid xml zlib" for lingua in ${LINGUAS}; do @@ -61,23 +60,11 @@ zlib? ( sys-libs/zlib ) 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 ) " -src_unpack() { - base_src_unpack - git-2_src_unpack -} RDEPEND="${CDEPEND} !dev-db/postgresql-docs:${SLOT} @@ -86,17 +73,8 @@ RDEPEND="${CDEPEND} selinux? ( sec-policy/selinux-postgresql ) " -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 @@ -112,6 +90,12 @@ src_prepare() { sed "s|\(PGSOCKET_DIR\s\+\)\"/tmp\"|\1\"${EPREFIX}/run/postgresql\"|" \ -i src/include/pg_config_manual.h || die + use server || epatch "${FILESDIR}/${PN}-${SLOT}-no-server.patch" + + # Fix bug 486556 where the server would crash at start up because of + # an infinite loop caused by a self-referencing symlink. + epatch "${FILESDIR}/postgresql-9.2-9.4-tz-dir-overflow.patch" + if use pam ; then sed -e "s/\(#define PGSQL_PAM_SERVICE \"postgresql\)/\1-${SLOT}/" \ -i src/backend/libpq/auth.c || \ @@ -144,6 +128,7 @@ src_configure() { $(use_enable !pg_legacytimestamp integer-datetimes) \ $(use_enable threads thread-safety) \ $(use_with kerberos gssapi) \ + $(use_with kerberos krb5) \ $(use_with ldap) \ $(use_with pam) \ $(use_with perl) \ @@ -159,14 +144,30 @@ src_configure() { } 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} + # 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 + docompress /usr/share/postgresql-${SLOT}/man/man{1,3,7} + insinto /etc/postgresql-${SLOT} newins src/bin/psql/psqlrc.sample psqlrc @@ -176,25 +177,35 @@ src_install() { use static-libs || find "${ED}" -name '*.a' -delete - sed -e "s|@SLOT@|${SLOT}|g" -e "s|@LIBDIR@|$(get_libdir)|g" \ - "${FILESDIR}/${PN}.confd" | newconfd - ${PN}-${SLOT} + if use doc ; then + docinto html + dodoc doc/src/sgml/html/* + + docinto sgml + dodoc doc/src/sgml/*.{sgml,dsl} + fi - sed -e "s|@SLOT@|${SLOT}|g" -e "s|@LIBDIR@|$(get_libdir)|g" \ - "${FILESDIR}/${PN}.init" | newinitd - ${PN}-${SLOT} + if use server; then + sed -e "s|@SLOT@|${SLOT}|g" -e "s|@LIBDIR@|$(get_libdir)|g" \ + "${FILESDIR}/${PN}.confd" | newconfd - ${PN}-${SLOT} - sed -e "s|@SLOT@|${SLOT}|g" -e "s|@LIBDIR@|$(get_libdir)|g" \ - "${FILESDIR}/${PN}.service" | \ - systemd_newunit - ${PN}-${SLOT}.service + sed -e "s|@SLOT@|${SLOT}|g" -e "s|@LIBDIR@|$(get_libdir)|g" \ + "${FILESDIR}/${PN}.init-9.3" | newinitd - ${PN}-${SLOT} - systemd_newtmpfilesd "${FILESDIR}"/${PN}.tmpfilesd ${PN}-${SLOT}.conf + sed -e "s|@SLOT@|${SLOT}|g" -e "s|@LIBDIR@|$(get_libdir)|g" \ + "${FILESDIR}/${PN}.service" | \ + systemd_newunit - ${PN}-${SLOT}.service - newbin "${FILESDIR}"/${PN}-check-db-dir ${PN}-${SLOT}-check-db-dir + systemd_newtmpfilesd "${FILESDIR}"/${PN}.tmpfilesd ${PN}-${SLOT}.conf - use pam && pamd_mimic system-auth ${PN}-${SLOT} auth account session + newbin "${FILESDIR}"/${PN}-check-db-dir ${PN}-${SLOT}-check-db-dir - if use prefix ; then - keepdir /run/postgresql - fperms 0775 /run/postgresql + use pam && pamd_mimic system-auth ${PN}-${SLOT} auth account session + + if use prefix ; then + keepdir /run/postgresql + fperms 0775 /run/postgresql + fi fi } @@ -204,27 +215,37 @@ pkg_postinst() { 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 [[ -z ${REPLACING_VERSIONS} ]] ; then + elog + elog "It looks like this is your first time installing PostgreSQL. Run the" + elog "following command in all active shells to pick up changes to the default" + elog "environemnt:" + elog " source /etc/profile" + fi + + 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}" + 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" @@ -239,6 +260,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}/" @@ -359,15 +382,17 @@ pkg_config() { src_test() { einfo ">>> Test phase [check]: ${CATEGORY}/${PF}" - 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 + 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 'Tests cannot be run as root. Enable "userpriv" in FEATURES.' - ewarn "Skipping." + ewarn 'Skipping.' fi } diff --git a/dev-db/postgresql/postgresql-9999.ebuild b/dev-db/postgresql/postgresql-9.4.5.ebuild similarity index 64% copy from dev-db/postgresql/postgresql-9999.ebuild copy to dev-db/postgresql/postgresql-9.4.5.ebuild index 6dec347..9cc6a16 100644 --- a/dev-db/postgresql/postgresql-9999.ebuild +++ b/dev-db/postgresql/postgresql-9.4.5.ebuild @@ -6,15 +6,14 @@ EAPI="5" PYTHON_COMPAT=( python{2_7,3_4} ) -inherit base eutils flag-o-matic git-2 linux-info multilib pam prefix \ - python-single-r1 systemd user versionator +inherit eutils flag-o-matic linux-info multilib pam prefix python-single-r1 \ + systemd user versionator -KEYWORDS="" +KEYWORDS="~alpha ~amd64 ~arm ~hppa ~ia64 ~mips ~ppc ~ppc64 ~s390 ~sh ~sparc ~x86 ~amd64-fbsd ~sparc-fbsd ~x86-fbsd ~ppc-macos ~x86-solaris" -# Fix if needed -SLOT="9.6" +SLOT="$(get_version_component_range 1-2)" -EGIT_REPO_URI="git://git.postgresql.org/git/postgresql.git" +SRC_URI="mirror://postgresql/source/v${PV}/postgresql-${PV}.tar.bz2" LICENSE="POSTGRESQL GPL-2" DESCRIPTION="PostgreSQL RDBMS" @@ -22,7 +21,7 @@ HOMEPAGE="http://www.postgresql.org/" LINGUAS="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" -IUSE="kerberos kernel_linux ldap libressl nls pam perl -pg_legacytimestamp python +IUSE="doc kerberos kernel_linux ldap libressl nls pam perl -pg_legacytimestamp python +readline selinux +server ssl static-libs tcl threads uuid xml zlib" for lingua in ${LINGUAS}; do @@ -54,30 +53,40 @@ ssl? ( libressl? ( dev-libs/libressl:= ) ) tcl? ( >=dev-lang/tcl-8:0= ) -uuid? ( dev-libs/ossp-uuid ) 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} !!=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 ) " -src_unpack() { - base_src_unpack - git-2_src_unpack -} RDEPEND="${CDEPEND} !dev-db/postgresql-docs:${SLOT} @@ -86,17 +95,8 @@ RDEPEND="${CDEPEND} selinux? ( sec-policy/selinux-postgresql ) " -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 @@ -112,6 +112,12 @@ src_prepare() { sed "s|\(PGSOCKET_DIR\s\+\)\"/tmp\"|\1\"${EPREFIX}/run/postgresql\"|" \ -i src/include/pg_config_manual.h || die + use server || epatch "${FILESDIR}/${PN}-${SLOT}-no-server.patch" + + # Fix bug 486556 where the server would crash at start up because of + # an infinite loop caused by a self-referencing symlink. + epatch "${FILESDIR}/postgresql-9.2-9.4-tz-dir-overflow.patch" + if use pam ; then sed -e "s/\(#define PGSQL_PAM_SERVICE \"postgresql\)/\1-${SLOT}/" \ -i src/backend/libpq/auth.c || \ @@ -133,6 +139,17 @@ src_configure() { 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}" \ @@ -151,7 +168,7 @@ src_configure() { $(use_with readline) \ $(use_with ssl openssl) \ $(use_with tcl) \ - $(use_with uuid ossp-uuid) \ + ${uuid_config} \ $(use_with xml libxml) \ $(use_with xml libxslt) \ $(use_with zlib) \ @@ -159,14 +176,30 @@ src_configure() { } 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} + # 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 + docompress /usr/share/postgresql-${SLOT}/man/man{1,3,7} + insinto /etc/postgresql-${SLOT} newins src/bin/psql/psqlrc.sample psqlrc @@ -176,25 +209,35 @@ src_install() { use static-libs || find "${ED}" -name '*.a' -delete - sed -e "s|@SLOT@|${SLOT}|g" -e "s|@LIBDIR@|$(get_libdir)|g" \ - "${FILESDIR}/${PN}.confd" | newconfd - ${PN}-${SLOT} + if use doc ; then + docinto html + dodoc doc/src/sgml/html/* + + docinto sgml + dodoc doc/src/sgml/*.{sgml,dsl} + fi - sed -e "s|@SLOT@|${SLOT}|g" -e "s|@LIBDIR@|$(get_libdir)|g" \ - "${FILESDIR}/${PN}.init" | newinitd - ${PN}-${SLOT} + if use server; then + sed -e "s|@SLOT@|${SLOT}|g" -e "s|@LIBDIR@|$(get_libdir)|g" \ + "${FILESDIR}/${PN}.confd" | newconfd - ${PN}-${SLOT} - sed -e "s|@SLOT@|${SLOT}|g" -e "s|@LIBDIR@|$(get_libdir)|g" \ - "${FILESDIR}/${PN}.service" | \ - systemd_newunit - ${PN}-${SLOT}.service + sed -e "s|@SLOT@|${SLOT}|g" -e "s|@LIBDIR@|$(get_libdir)|g" \ + "${FILESDIR}/${PN}.init-9.3" | newinitd - ${PN}-${SLOT} - systemd_newtmpfilesd "${FILESDIR}"/${PN}.tmpfilesd ${PN}-${SLOT}.conf + sed -e "s|@SLOT@|${SLOT}|g" -e "s|@LIBDIR@|$(get_libdir)|g" \ + "${FILESDIR}/${PN}.service" | \ + systemd_newunit - ${PN}-${SLOT}.service - newbin "${FILESDIR}"/${PN}-check-db-dir ${PN}-${SLOT}-check-db-dir + systemd_newtmpfilesd "${FILESDIR}"/${PN}.tmpfilesd ${PN}-${SLOT}.conf - use pam && pamd_mimic system-auth ${PN}-${SLOT} auth account session + newbin "${FILESDIR}"/${PN}-check-db-dir ${PN}-${SLOT}-check-db-dir - if use prefix ; then - keepdir /run/postgresql - fperms 0775 /run/postgresql + use pam && pamd_mimic system-auth ${PN}-${SLOT} auth account session + + if use prefix ; then + keepdir /run/postgresql + fperms 0775 /run/postgresql + fi fi } @@ -204,27 +247,37 @@ pkg_postinst() { 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 [[ -z ${REPLACING_VERSIONS} ]] ; then + elog + elog "It looks like this is your first time installing PostgreSQL. Run the" + elog "following command in all active shells to pick up changes to the default" + elog "environemnt:" + elog " source /etc/profile" + fi + + 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}" + 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" @@ -239,6 +292,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}/" @@ -359,15 +414,17 @@ pkg_config() { src_test() { einfo ">>> Test phase [check]: ${CATEGORY}/${PF}" - 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 + 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 'Tests cannot be run as root. Enable "userpriv" in FEATURES.' - ewarn "Skipping." + ewarn 'Skipping.' fi } diff --git a/dev-db/postgresql/postgresql-9999.ebuild b/dev-db/postgresql/postgresql-9.5_alpha1-r1.ebuild similarity index 65% copy from dev-db/postgresql/postgresql-9999.ebuild copy to dev-db/postgresql/postgresql-9.5_alpha1-r1.ebuild index 6dec347..50d2cec 100644 --- a/dev-db/postgresql/postgresql-9999.ebuild +++ b/dev-db/postgresql/postgresql-9.5_alpha1-r1.ebuild @@ -6,15 +6,20 @@ EAPI="5" PYTHON_COMPAT=( python{2_7,3_4} ) -inherit base eutils flag-o-matic git-2 linux-info multilib pam prefix \ - python-single-r1 systemd user versionator +inherit eutils flag-o-matic linux-info multilib pam prefix python-single-r1 \ + systemd user versionator +# This is a prerelease version, so no keywords please KEYWORDS="" +#KEYWORDS="~alpha ~amd64 ~arm ~hppa ~ia64 ~mips ~ppc ~ppc64 ~s390 ~sh ~sparc ~x86 ~amd64-fbsd ~sparc-fbsd ~x86-fbsd ~ppc-macos ~x86-solaris" -# Fix if needed -SLOT="9.6" +SLOT="$(get_version_component_range 1-2)" -EGIT_REPO_URI="git://git.postgresql.org/git/postgresql.git" +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" @@ -22,7 +27,7 @@ HOMEPAGE="http://www.postgresql.org/" LINGUAS="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" -IUSE="kerberos kernel_linux ldap libressl nls pam perl -pg_legacytimestamp python +IUSE="doc kerberos kernel_linux ldap libressl nls pam perl -pg_legacytimestamp python +readline selinux +server ssl static-libs tcl threads uuid xml zlib" for lingua in ${LINGUAS}; do @@ -54,30 +59,40 @@ ssl? ( libressl? ( dev-libs/libressl:= ) ) tcl? ( >=dev-lang/tcl-8:0= ) -uuid? ( dev-libs/ossp-uuid ) 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} !!=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 ) " -src_unpack() { - base_src_unpack - git-2_src_unpack -} RDEPEND="${CDEPEND} !dev-db/postgresql-docs:${SLOT} @@ -86,17 +101,8 @@ RDEPEND="${CDEPEND} selinux? ( sec-policy/selinux-postgresql ) " -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 @@ -112,6 +118,12 @@ src_prepare() { sed "s|\(PGSOCKET_DIR\s\+\)\"/tmp\"|\1\"${EPREFIX}/run/postgresql\"|" \ -i src/include/pg_config_manual.h || die + use server || epatch "${FILESDIR}/${PN}-${SLOT}-no-server.patch" + + # Fix bug 486556 where the server would crash at start up because of + # an infinite loop caused by a self-referencing symlink. + epatch "${FILESDIR}/postgresql-9.2-9.4-tz-dir-overflow.patch" + if use pam ; then sed -e "s/\(#define PGSQL_PAM_SERVICE \"postgresql\)/\1-${SLOT}/" \ -i src/backend/libpq/auth.c || \ @@ -133,6 +145,17 @@ src_configure() { 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}" \ @@ -151,7 +174,7 @@ src_configure() { $(use_with readline) \ $(use_with ssl openssl) \ $(use_with tcl) \ - $(use_with uuid ossp-uuid) \ + ${uuid_config} \ $(use_with xml libxml) \ $(use_with xml libxslt) \ $(use_with zlib) \ @@ -159,14 +182,30 @@ src_configure() { } 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} + # 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 + docompress /usr/share/postgresql-${SLOT}/man/man{1,3,7} + insinto /etc/postgresql-${SLOT} newins src/bin/psql/psqlrc.sample psqlrc @@ -176,25 +215,35 @@ src_install() { use static-libs || find "${ED}" -name '*.a' -delete - sed -e "s|@SLOT@|${SLOT}|g" -e "s|@LIBDIR@|$(get_libdir)|g" \ - "${FILESDIR}/${PN}.confd" | newconfd - ${PN}-${SLOT} + if use doc ; then + docinto html + dodoc doc/src/sgml/html/* - sed -e "s|@SLOT@|${SLOT}|g" -e "s|@LIBDIR@|$(get_libdir)|g" \ - "${FILESDIR}/${PN}.init" | newinitd - ${PN}-${SLOT} + docinto sgml + dodoc doc/src/sgml/*.{sgml,dsl} + fi - sed -e "s|@SLOT@|${SLOT}|g" -e "s|@LIBDIR@|$(get_libdir)|g" \ - "${FILESDIR}/${PN}.service" | \ - systemd_newunit - ${PN}-${SLOT}.service + if use server; then + sed -e "s|@SLOT@|${SLOT}|g" -e "s|@LIBDIR@|$(get_libdir)|g" \ + "${FILESDIR}/${PN}.confd" | newconfd - ${PN}-${SLOT} - systemd_newtmpfilesd "${FILESDIR}"/${PN}.tmpfilesd ${PN}-${SLOT}.conf + sed -e "s|@SLOT@|${SLOT}|g" -e "s|@LIBDIR@|$(get_libdir)|g" \ + "${FILESDIR}/${PN}.init-9.3" | newinitd - ${PN}-${SLOT} - newbin "${FILESDIR}"/${PN}-check-db-dir ${PN}-${SLOT}-check-db-dir + sed -e "s|@SLOT@|${SLOT}|g" -e "s|@LIBDIR@|$(get_libdir)|g" \ + "${FILESDIR}/${PN}.service" | \ + systemd_newunit - ${PN}-${SLOT}.service - use pam && pamd_mimic system-auth ${PN}-${SLOT} auth account session + systemd_newtmpfilesd "${FILESDIR}"/${PN}.tmpfilesd ${PN}-${SLOT}.conf - if use prefix ; then - keepdir /run/postgresql - fperms 0775 /run/postgresql + 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 0775 /run/postgresql + fi fi } @@ -204,27 +253,29 @@ pkg_postinst() { 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}" + 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" @@ -239,6 +290,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}/" @@ -359,15 +412,17 @@ pkg_config() { src_test() { einfo ">>> Test phase [check]: ${CATEGORY}/${PF}" - 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 + 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 'Tests cannot be run as root. Enable "userpriv" in FEATURES.' - ewarn "Skipping." + ewarn 'Skipping.' fi } diff --git a/dev-db/postgresql/postgresql-9999.ebuild b/dev-db/postgresql/postgresql-9.5_beta1.ebuild similarity index 65% copy from dev-db/postgresql/postgresql-9999.ebuild copy to dev-db/postgresql/postgresql-9.5_beta1.ebuild index 6dec347..50d2cec 100644 --- a/dev-db/postgresql/postgresql-9999.ebuild +++ b/dev-db/postgresql/postgresql-9.5_beta1.ebuild @@ -6,15 +6,20 @@ EAPI="5" PYTHON_COMPAT=( python{2_7,3_4} ) -inherit base eutils flag-o-matic git-2 linux-info multilib pam prefix \ - python-single-r1 systemd user versionator +inherit eutils flag-o-matic linux-info multilib pam prefix python-single-r1 \ + systemd user versionator +# This is a prerelease version, so no keywords please KEYWORDS="" +#KEYWORDS="~alpha ~amd64 ~arm ~hppa ~ia64 ~mips ~ppc ~ppc64 ~s390 ~sh ~sparc ~x86 ~amd64-fbsd ~sparc-fbsd ~x86-fbsd ~ppc-macos ~x86-solaris" -# Fix if needed -SLOT="9.6" +SLOT="$(get_version_component_range 1-2)" -EGIT_REPO_URI="git://git.postgresql.org/git/postgresql.git" +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" @@ -22,7 +27,7 @@ HOMEPAGE="http://www.postgresql.org/" LINGUAS="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" -IUSE="kerberos kernel_linux ldap libressl nls pam perl -pg_legacytimestamp python +IUSE="doc kerberos kernel_linux ldap libressl nls pam perl -pg_legacytimestamp python +readline selinux +server ssl static-libs tcl threads uuid xml zlib" for lingua in ${LINGUAS}; do @@ -54,30 +59,40 @@ ssl? ( libressl? ( dev-libs/libressl:= ) ) tcl? ( >=dev-lang/tcl-8:0= ) -uuid? ( dev-libs/ossp-uuid ) 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} !!=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 ) " -src_unpack() { - base_src_unpack - git-2_src_unpack -} RDEPEND="${CDEPEND} !dev-db/postgresql-docs:${SLOT} @@ -86,17 +101,8 @@ RDEPEND="${CDEPEND} selinux? ( sec-policy/selinux-postgresql ) " -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 @@ -112,6 +118,12 @@ src_prepare() { sed "s|\(PGSOCKET_DIR\s\+\)\"/tmp\"|\1\"${EPREFIX}/run/postgresql\"|" \ -i src/include/pg_config_manual.h || die + use server || epatch "${FILESDIR}/${PN}-${SLOT}-no-server.patch" + + # Fix bug 486556 where the server would crash at start up because of + # an infinite loop caused by a self-referencing symlink. + epatch "${FILESDIR}/postgresql-9.2-9.4-tz-dir-overflow.patch" + if use pam ; then sed -e "s/\(#define PGSQL_PAM_SERVICE \"postgresql\)/\1-${SLOT}/" \ -i src/backend/libpq/auth.c || \ @@ -133,6 +145,17 @@ src_configure() { 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}" \ @@ -151,7 +174,7 @@ src_configure() { $(use_with readline) \ $(use_with ssl openssl) \ $(use_with tcl) \ - $(use_with uuid ossp-uuid) \ + ${uuid_config} \ $(use_with xml libxml) \ $(use_with xml libxslt) \ $(use_with zlib) \ @@ -159,14 +182,30 @@ src_configure() { } 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} + # 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 + docompress /usr/share/postgresql-${SLOT}/man/man{1,3,7} + insinto /etc/postgresql-${SLOT} newins src/bin/psql/psqlrc.sample psqlrc @@ -176,25 +215,35 @@ src_install() { use static-libs || find "${ED}" -name '*.a' -delete - sed -e "s|@SLOT@|${SLOT}|g" -e "s|@LIBDIR@|$(get_libdir)|g" \ - "${FILESDIR}/${PN}.confd" | newconfd - ${PN}-${SLOT} + if use doc ; then + docinto html + dodoc doc/src/sgml/html/* - sed -e "s|@SLOT@|${SLOT}|g" -e "s|@LIBDIR@|$(get_libdir)|g" \ - "${FILESDIR}/${PN}.init" | newinitd - ${PN}-${SLOT} + docinto sgml + dodoc doc/src/sgml/*.{sgml,dsl} + fi - sed -e "s|@SLOT@|${SLOT}|g" -e "s|@LIBDIR@|$(get_libdir)|g" \ - "${FILESDIR}/${PN}.service" | \ - systemd_newunit - ${PN}-${SLOT}.service + if use server; then + sed -e "s|@SLOT@|${SLOT}|g" -e "s|@LIBDIR@|$(get_libdir)|g" \ + "${FILESDIR}/${PN}.confd" | newconfd - ${PN}-${SLOT} - systemd_newtmpfilesd "${FILESDIR}"/${PN}.tmpfilesd ${PN}-${SLOT}.conf + sed -e "s|@SLOT@|${SLOT}|g" -e "s|@LIBDIR@|$(get_libdir)|g" \ + "${FILESDIR}/${PN}.init-9.3" | newinitd - ${PN}-${SLOT} - newbin "${FILESDIR}"/${PN}-check-db-dir ${PN}-${SLOT}-check-db-dir + sed -e "s|@SLOT@|${SLOT}|g" -e "s|@LIBDIR@|$(get_libdir)|g" \ + "${FILESDIR}/${PN}.service" | \ + systemd_newunit - ${PN}-${SLOT}.service - use pam && pamd_mimic system-auth ${PN}-${SLOT} auth account session + systemd_newtmpfilesd "${FILESDIR}"/${PN}.tmpfilesd ${PN}-${SLOT}.conf - if use prefix ; then - keepdir /run/postgresql - fperms 0775 /run/postgresql + 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 0775 /run/postgresql + fi fi } @@ -204,27 +253,29 @@ pkg_postinst() { 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}" + 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" @@ -239,6 +290,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}/" @@ -359,15 +412,17 @@ pkg_config() { src_test() { einfo ">>> Test phase [check]: ${CATEGORY}/${PF}" - 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 + 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 'Tests cannot be run as root. Enable "userpriv" in FEATURES.' - ewarn "Skipping." + ewarn 'Skipping.' fi } diff --git a/dev-db/postgresql/postgresql-9999.ebuild b/dev-db/postgresql/postgresql-9999.ebuild index 6dec347..36e35fd 100644 --- a/dev-db/postgresql/postgresql-9999.ebuild +++ b/dev-db/postgresql/postgresql-9999.ebuild @@ -204,6 +204,14 @@ pkg_postinst() { elog "If you need a global psqlrc-file, you can place it in:" elog " ${EROOT%/}/etc/postgresql-${SLOT}/" + if [[ -z ${REPLACING_VERSIONS} ]] ; then + elog + elog "It looks like this is your first time installing PostgreSQL. Run the" + elog "following command in all active shells to pick up changes to the default" + elog "environemnt:" + elog " source /etc/profile" + fi + elog elog "Gentoo specific documentation:" elog "https://wiki.gentoo.org/wiki/PostgreSQL"