Fixes bugs 395263, 394389, and 394159
authorAaron Swenson <titanofold@gentoo.org>
Sun, 25 Dec 2011 15:57:21 +0000 (15:57 +0000)
committerAaron Swenson <titanofold@gentoo.org>
Sun, 25 Dec 2011 15:57:21 +0000 (15:57 +0000)
Package-Manager: portage-2.1.10.11/cvs/Linux i686

dev-db/postgresql-server/ChangeLog
dev-db/postgresql-server/Manifest
dev-db/postgresql-server/postgresql-server-8.2.23-r1.ebuild [new file with mode: 0644]
dev-db/postgresql-server/postgresql-server-8.3.17-r1.ebuild [new file with mode: 0644]
dev-db/postgresql-server/postgresql-server-8.4.10-r1.ebuild [new file with mode: 0644]
dev-db/postgresql-server/postgresql-server-9.0.6-r1.ebuild [new file with mode: 0644]
dev-db/postgresql-server/postgresql-server-9.1.2-r2.ebuild [new file with mode: 0644]

index d6fc35959a9d60a7bf3be51838e17ed4d0937abe..9b616cc9f192784d19904c19476eeae21664a94d 100644 (file)
@@ -1,6 +1,18 @@
 # ChangeLog for dev-db/postgresql-server
 # Copyright 1999-2011 Gentoo Foundation; Distributed under the GPL v2
-# $Header: /var/cvsroot/gentoo-x86/dev-db/postgresql-server/ChangeLog,v 1.158 2011/12/17 18:06:48 armin76 Exp $
+# $Header: /var/cvsroot/gentoo-x86/dev-db/postgresql-server/ChangeLog,v 1.159 2011/12/25 15:57:21 titanofold Exp $
+
+*postgresql-server-9.1.2-r2 (25 Dec 2011)
+*postgresql-server-9.0.6-r1 (25 Dec 2011)
+*postgresql-server-8.4.10-r1 (25 Dec 2011)
+*postgresql-server-8.3.17-r1 (25 Dec 2011)
+*postgresql-server-8.2.23-r1 (25 Dec 2011)
+
+  25 Dec 2011; Aaron W. Swenson <titanofold@gentoo.org>
+  +postgresql-server-8.2.23-r1.ebuild, +postgresql-server-8.3.17-r1.ebuild,
+  +postgresql-server-8.4.10-r1.ebuild, +postgresql-server-9.0.6-r1.ebuild,
+  +postgresql-server-9.1.2-r2.ebuild:
+  Fixes bugs 395263, 394389, and 394159
 
   17 Dec 2011; Raúl Porcel <armin76@gentoo.org>
   postgresql-server-9.1.1.ebuild:
index 92bfb04e9c04316eab7b93f3f99f4d79ac070efa..546d803ca4debf3567d2daa8375d9d7750f59c17 100644 (file)
@@ -1,5 +1,5 @@
 -----BEGIN PGP SIGNED MESSAGE-----
-Hash: SHA1
+Hash: SHA256
 
 DIST postgresql-8.2.22.tar.bz2 12777172 RMD160 27e31b4a423984080a87cb6dc86ca8773362a131 SHA1 7b5f56b5d3a1e2e9cee6e7a4f0f04866af45cc7d SHA256 88203528326c152ca556bcff986d824737ea1048ba2c6245e24a1b1efd6aeaf7
 DIST postgresql-8.2.23.tar.bz2 12976249 RMD160 5a1d45cae1e7a9d9caa8e902608404b281bac7ff SHA1 f51ac2051c4b1c95f5f58bf75bbafc50d2bc359b SHA256 56c2ac7394e8ace9ef98a464d08530b91529fd56978f24b55139d20e3039f2d1
@@ -14,6 +14,7 @@ DIST postgresql-9.1.2.tar.bz2 15424814 RMD160 2f98f2ff4e6e2b048dce80335fb3c67275
 DIST postgresql-initscript-1.0.1.tbz2 2635 RMD160 989b89364ff367569c5129dec70c369496a69af1 SHA1 24cfbab756bf2c08e783ecae31c26ca45984de87 SHA256 a85276c431047e0123c988b296869cfa8afbbb6a4721d74fff4b419f608f0293
 DIST postgresql-initscript-1.2.tbz2 2776 RMD160 137a737c928a73886192c822fe31be18e9ee0b85 SHA1 9140008e07c0c71e0fdbc8c2f6d40ab729d094a3 SHA256 19600139714738552e4b6880f6349df27b275814c62954103f20984b607e357f
 DIST postgresql-initscript-2.0.tbz2 2584 RMD160 437c331ba5d4b9ce85725d9d180aa4edd9f47bf1 SHA1 9a99f91c2955bb3cd4414d9165868307d0450364 SHA256 67e75f134b8c55843e3b3a26c69460eca3f180052a6f4f13603c64fcb40b4fd5
+DIST postgresql-initscript-2.1.tbz2 2603 RMD160 033f7189df6132b8bcca378e000bd2b705463b72 SHA1 4125c76d102ea78cb5cebd4a13021930f131ae02 SHA256 42ee83d0bfd1e1733bbc191b065bc70b2b5966f743f692e5133f6c676c8b1c24
 DIST postgresql-patches-8.2-r1.tbz2 4859 RMD160 864f166e01219b1f8f9ca2732a1d6b9c6de0cf7f SHA1 27977244ef48cb1a232542657d76267faa7e9d3d SHA256 7b9f46ca16d7adf29cfd2a3f57f2b54bbf349b4dbbe679f4e31302376bda51cf
 DIST postgresql-patches-8.2-r2.tbz2 4850 RMD160 766861791d68b8307e2686b93dd5b09fb775fdb8 SHA1 41c8b8a36d7dd7aa556ca6e2d5a4bb579226e8f7 SHA256 014f68519d25de055dce373924caf681d517ab66c022c01adb9816545e4bab14
 DIST postgresql-patches-8.3-r1.tbz2 5491 RMD160 6a05ec9a9c0dd587cc86e7684a353cb5e3cd7fa3 SHA1 a60e5f813e77f8b1edc9483f62e067b04457fb1d SHA256 522d4563f2e5fa857751091d1344799d8e22846de20c4fb360a7451d746fd176
@@ -25,21 +26,26 @@ DIST postgresql-patches-9.0-r3.tbz2 4503 RMD160 05d4167c3a48a432ab79cb57fee5e466
 DIST postgresql-patches-9.1-r1.tbz2 4547 RMD160 2cdd98c1f6075a68ef294ceefc94e46ff1583919 SHA1 0ed2fd26ba51fe945b573accec5970b8cee5eb4c SHA256 50cefff4a6f6e1fd38b99dde4793dc5f153b9691ff5c59fbb2b97864f1f7d727
 DIST postgresql-patches-9.1.tbz2 4563 RMD160 1516ee0d26fffe5e275428d08ba926bad9b45407 SHA1 5ff25d423386b476c60bbccfda93b82bfc5e5cc9 SHA256 be0dc8be6029443c9de31b61002c128447d53f8fb4b05e89b86d900ced647c16
 EBUILD postgresql-server-8.2.22.ebuild 10898 RMD160 ae8248bf59287ef90e6e5b82e03f32f18fa3ac2c SHA1 dec431a578c42d97b7e45e376ad1c681082ed4fa SHA256 a0536da4e12736a755616e56b943a8a71ffc239490e17c56cf93a5a10b5d6a26
+EBUILD postgresql-server-8.2.23-r1.ebuild 11477 RMD160 4287b1920ed5970e8431036166783b65ad085fc8 SHA1 59c4240859c968e2fcf45c2ba4fc61151e1f111a SHA256 332eb53043a3344be50939edd858db8579f8435c1544d45c63de65b60e7abb32
 EBUILD postgresql-server-8.2.23.ebuild 11474 RMD160 2b2472aaa112b4932fea58b2ee97db697c3f0b10 SHA1 afc05e7279f89a874b1d307596846ddbae7e6516 SHA256 d069b01a5744c9a36796c8cf9461c31e14df75186e010ca6183ee081e488873f
 EBUILD postgresql-server-8.3.16.ebuild 11096 RMD160 6ceb5797f12d3d68ffef7ebf5a751da91f6a39c9 SHA1 362c7b5b3fd493e92636cd299149ad9bb4b5c0d3 SHA256 d0080a89ae1f94576ae9918fc6a081d5b0357eb17a0e2f92c371f344735a26ac
+EBUILD postgresql-server-8.3.17-r1.ebuild 11536 RMD160 a80ee9d4ab15ff1ff34abda35fc6bcf0f5dae320 SHA1 449b7c44f07c359fda04a3828ab4ee1cbc109375 SHA256 dd0fbbd05a3d5118712141c778fec66d724a356a66bbb5e4cf44534aa5759819
 EBUILD postgresql-server-8.3.17.ebuild 11533 RMD160 e38d67c219bca84d16b19eee7f4053fffb5c78f9 SHA1 b6fcb80203ad832c023ae3860eafbb93005243bf SHA256 74da49e543f4f99e22c4f2ddf21ba7db8d13c6a1736632f7c69717bc8d586e6e
+EBUILD postgresql-server-8.4.10-r1.ebuild 11831 RMD160 a2f83f23be8a9b2d02ba868ae83f62262c239e5c SHA1 68e6d5336e31f7d906bd07c975e9061e10980edd SHA256 5854cb9e0bbbdc6ad29735785480403cbd291cd554572399a95d5d692d73fbfe
 EBUILD postgresql-server-8.4.10.ebuild 11828 RMD160 c59a71080a60e885660ff59b11ef554f5ec51594 SHA1 2254e34721d02cfb684fbabe3f18e2af58cb1a77 SHA256 60fd3a9044630c5af71a961f64168a2aa1c2a78a78c43a95d0a6bd9195b3cc77
 EBUILD postgresql-server-8.4.9.ebuild 11385 RMD160 6ded647d66ef21624c24ecf591cf1bbd2c8e8970 SHA1 376b9bd9c60ff80658f531eb4b3c313a327d2654 SHA256 15a8cde3b9a43b375ab6767b5cef68ac3a33569632a70e1ddd79b3369906766f
 EBUILD postgresql-server-9.0.5.ebuild 11297 RMD160 f681ffd3325f6c16d7d1ea7057af9aed541e2143 SHA1 f40ce5f8672ad8dd1ed0d2c08d11e043f5e72b09 SHA256 5e2b0108038b4eb6e963265921c6de8d82eb019e6c3ed6e7669478a8d4b5fa50
+EBUILD postgresql-server-9.0.6-r1.ebuild 11431 RMD160 96b6b6b9bf689e594d7a9b72411c03d681364aad SHA1 9f36099be9feebd740d66655b55b2d5eba6bc726 SHA256 0e95bcc7b51bda99cb4d99613cad8e26f216df81fc72e42769f44bbeefd1a533
 EBUILD postgresql-server-9.0.6.ebuild 11428 RMD160 b9d6945c62a659c6690ccf5b97413004cd093495 SHA1 ce7b81020f87e89ba8f0450b8f856c8cf5edcfa2 SHA256 81201769e9faa3ebae5216caf8e300d2da042228c33d4c852f8d611347d63622
 EBUILD postgresql-server-9.1.1.ebuild 10773 RMD160 1fdbb45a444ffee2807ceddcfeb35273978a2f59 SHA1 9aa3d559341445c91c138bf431a55e04fd8180e1 SHA256 59d6863592b7b3cc317b33b63464e91d8a3acd245547bc32ed890f78ad6f81f5
 EBUILD postgresql-server-9.1.2-r1.ebuild 11161 RMD160 227013e9f31722f5cd0d12b83d56545b4dfb454c SHA1 54c2cad3a4e2b0a96c6a7ce71746584f7528c6b5 SHA256 e30ccd6d2a089199a1aceb8c88d7c9377ce3df5b633bd5eda486b91e14b37e94
-MISC ChangeLog 49971 RMD160 1bdbdaec919fbd2abebc3f0dc1d943111e2eb04d SHA1 778179716b66175410c3b1daa52aebc7efb77b39 SHA256 77f085b4490ca8f55e0d6a7d666ec999c2d8fcb9917f2bfd0eb80195e9dae1a6
+EBUILD postgresql-server-9.1.2-r2.ebuild 11161 RMD160 bc56c57a7c89683e87f7e0e499fabf9fa2377d1a SHA1 03881c8b236631df0f306534bcef12d4dbc36ee8 SHA256 41927f7ae1a6d43f54e809f9325f42ec2a543d1ae9b568dd33afd604e3fc1dd1
+MISC ChangeLog 50474 RMD160 94d21b7d751b079c63068cf0ef24fa31430487fe SHA1 31a093348e93d9ed9f08b8020dd23754fa6adf7b SHA256 6adfd37c91562f131374435b9348b143fb7b635c7a0e2c7484e8219d10087e37
 MISC metadata.xml 420 RMD160 789f5a0ce45d05125098fd7e74a816cf08f4c39b SHA1 d308d7434a37f12cd320f74ed85e1d3ca7dabc75 SHA256 ac37a5084450a782d02510149d030bd0d4a63164f2ffb7bdda3ddf344606ca62
 -----BEGIN PGP SIGNATURE-----
 Version: GnuPG v2.0.17 (GNU/Linux)
 
-iEUEARECAAYFAk7s2kEACgkQuQc30/atMkC3MgCYqp0GU9dpxiQ/subqFZfex5gr
-JwCeI+QCGjJdsGmsAyZ9HaF+XbEyP7Q=
-=TEFa
+iF4EAREIAAYFAk73R+oACgkQVxOqA9G7/aACsAD9GXiS4t/dXxmLgc6/960yRzLJ
+VarIRNlpm3KrnyKU0MsA/1NMa5VgjgN4ow1tqLbvA2SLr6+ybafNCqlu7atf2yoO
+=+/C/
 -----END PGP SIGNATURE-----
diff --git a/dev-db/postgresql-server/postgresql-server-8.2.23-r1.ebuild b/dev-db/postgresql-server/postgresql-server-8.2.23-r1.ebuild
new file mode 100644 (file)
index 0000000..86d65da
--- /dev/null
@@ -0,0 +1,338 @@
+# Copyright 1999-2011 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/dev-db/postgresql-server/postgresql-server-8.2.23-r1.ebuild,v 1.1 2011/12/25 15:57:21 titanofold Exp $
+
+EAPI="4"
+
+WANT_AUTOMAKE="none"
+inherit autotools eutils multilib pam prefix versionator
+
+SLOT="$(get_version_component_range 1-2)"
+
+KEYWORDS="~alpha ~amd64 ~arm ~hppa ~ia64 ~ppc ~s390 ~sh ~sparc ~x86"
+
+DESCRIPTION="PostgreSQL server"
+HOMEPAGE="http://www.postgresql.org/"
+SRC_URI="mirror://postgresql/source/v${PV}/postgresql-${PV}.tar.bz2
+                http://dev.gentoo.org/~titanofold/postgresql-patches-8.2-r2.tbz2
+                http://dev.gentoo.org/~titanofold/postgresql-initscript-2.1.tbz2"
+LICENSE="POSTGRESQL"
+
+S="${WORKDIR}/postgresql-${PV}"
+
+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="doc kernel_linux nls pam perl python selinux tcl xml"
+
+for lingua in ${LINGUAS} ; do
+       IUSE+=" linguas_${lingua}"
+done
+
+wanted_languages() {
+       local enable_langs
+
+       for lingua in ${LINGUAS} ; do
+               use linguas_${lingua} && enable_langs+="${lingua} "
+       done
+
+       echo -n ${enable_langs}
+}
+
+RDEPEND="~dev-db/postgresql-base-${PV}:${SLOT}[pam?,nls=]
+                perl? ( >=dev-lang/perl-5.8 )
+                selinux? ( sec-policy/selinux-postgresql )
+                tcl? ( >=dev-lang/tcl-8 )
+                xml? ( dev-libs/libxml2 dev-libs/libxslt )"
+
+DEPEND="${RDEPEND}
+               sys-devel/flex
+               xml? ( dev-util/pkgconfig )"
+
+PDEPEND="doc? ( ~dev-db/postgresql-docs-${PV} )"
+
+# Support /var/run or /run for the socket directory
+[[ ! -d /run ]] && RUNDIR=/var
+
+pkg_setup() {
+       enewgroup postgres 70
+       enewuser postgres 70 /bin/bash /var/lib/postgresql postgres
+}
+
+src_prepare() {
+       epatch "${WORKDIR}/autoconf.patch" \
+               "${WORKDIR}/bool.patch" \
+               "${WORKDIR}/darwin.patch" \
+               "${WORKDIR}/pg_ctl-exit-status.patch" \
+               "${WORKDIR}/server.patch" \
+               "${WORKDIR}/SuperH.patch"
+
+       eprefixify src/include/pg_config_manual.h
+
+       if use test ; then
+               epatch "${WORKDIR}/regress.patch"
+               sed -e "s|@SOCKETDIR@|${T}|g" -i src/test/regress/pg_regress.c
+               sed -e "s|/no/such/location|${S}/src/test/regress/tmp_check/no/such/location|g" \
+                       -i src/test/regress/{input,output}/tablespace.source
+       else
+               echo "all install:" > "${S}/src/test/regress/GNUmakefile"
+       fi
+
+       sed -e "s|@RUNDIR@|${RUNDIR}|g" \
+               -i src/include/pg_config_manual.h "${WORKDIR}/postgresql.init" || \
+               die "RUNDIR sed failed"
+       sed -e "s|@SLOT@|${SLOT}|g" \
+               -i "${WORKDIR}/postgresql.init" "${WORKDIR}/postgresql.confd" || \
+               die "SLOT sed failed"
+
+       eautoconf
+}
+
+src_configure() {
+       # eval is needed to get along with pg_config quotation of space-rich entities.
+       eval econf "$(${EPREFIX%/}/usr/$(get_libdir)/postgresql-${SLOT}/bin/pg_config --configure)" \
+               --with-includes="${EPREFIX%/}/usr/include/postgresql-${SLOT}/" \
+               $(use_with perl) \
+               $(use_with python) \
+               $(use_with tcl) \
+               "$(has_version ~dev-db/postgresql-base-${PV}[nls] && use_enable nls nls "$(wanted_languages)")"
+}
+
+src_compile() {
+       local bd
+       for bd in . contrib $(use xml && echo contrib/xml2); do
+               PATH="${EROOT%/}/usr/$(get_libdir)/postgresql-${SLOT}/bin:${PATH}" \
+                       emake -C $bd -j1 \
+                               PGXS=$(${EROOT%/}/usr/$(get_libdir)/postgresql-${SLOT}/bin/pg_config --pgxs) \
+                               PGXS_IN_SERVER=1 PGXS_WITH_SERVER="${S}/src/backend/postgres" \
+                               NO_PGXS=0 USE_PGXS=1 docdir=${EROOT%/}/usr/share/doc/${PF}
+       done
+}
+
+src_install() {
+       if use perl ; then
+               mv -f "${S}/src/pl/plperl/GNUmakefile" "${S}/src/pl/plperl/GNUmakefile_orig"
+               sed -e "s:\$(DESTDIR)\$(plperl_installdir):\$(plperl_installdir):" \
+                       "${S}/src/pl/plperl/GNUmakefile_orig" > "${S}/src/pl/plperl/GNUmakefile"
+       fi
+
+       local bd
+       for bd in . contrib $(use xml && echo contrib/xml2) ; do
+               PATH="${EROOT%/}/usr/$(get_libdir)/postgresql-${SLOT}/bin:${PATH}" \
+                       emake install -C $bd -j1 DESTDIR="${D}" \
+                       PGXS_IN_SERVER=1 PGXS_WITH_SERVER="${S}/src/backend/postgres" \
+                       PGXS=$(${EROOT%/}/usr/$(get_libdir)/postgresql-${SLOT}/bin/pg_config --pgxs) \
+                       NO_PGXS=0 USE_PGXS=1 docdir=${EROOT%/}/usr/share/doc/${PF}
+       done
+
+       rm -r "${ED}/usr/share/postgresql-${SLOT}/man/man7/" "${ED}/usr/share/doc/${PF}/html"
+       rm "${ED}"/usr/share/postgresql-${SLOT}/man/man1/{clusterdb,create{db,lang,user},drop{db,lang,user},ecpg,pg_{config,dump,dumpall,restore},psql,reindexdb,vacuumdb}.1
+       docompress /usr/share/postgresql-${SLOT}/man/man1
+
+       dodoc README HISTORY doc/{README.*,TODO,bug.template}
+
+       dodir /etc/eselect/postgresql/slots/${SLOT}
+       echo "postgres_ebuilds=\"\${postgres_ebuilds} ${PF}\"" \
+               > "${ED}/etc/eselect/postgresql/slots/${SLOT}/server"
+
+       newconfd "${WORKDIR}/postgresql.confd" postgresql-${SLOT}
+       newinitd "${WORKDIR}/postgresql.init" postgresql-${SLOT}
+
+       use pam && pamd_mimic system-auth postgresql auth account session
+
+       if use prefix ; then
+               keepdir ${RUNDIR}/run/postgresql
+               fperms 0770 ${RUNDIR}/run/postgresql
+       fi
+}
+
+pkg_postinst() {
+       postgresql-config update
+
+       elog "Gentoo specific documentation:"
+       elog "http://www.gentoo.org/doc/en/postgres-howto.xml"
+       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%/}${RUNDIR}/run/postgresql/"
+       elog
+       elog "If you have users and/or services that you would like to utilize the"
+       elog "socket, you must add them to the 'postgres' system group:"
+       elog "    usermod -a -G postgres <user>"
+       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}"
+}
+
+pkg_postrm() {
+       postgresql-config update
+}
+
+pkg_config() {
+       [[ -f ${EROOT%/}/etc/conf.d/postgresql-${SLOT} ]] && source ${EROOT%/}/etc/conf.d/postgresql-${SLOT}
+       [[ -z ${PGDATA} ]] && PGDATA="${EROOT%/}/etc/postgresql-${SLOT}/"
+       [[ -z ${DATA_DIR} ]] && DATA_DIR="${EROOT%/}/var/lib/postgresql/${SLOT}/data"
+
+       # environment.bz2 may not contain the same locale as the current system
+       # locale. Unset and source from the current system locale.
+       if [[ -f ${EROOT%/}/etc/env.d/02locale ]] ; then
+               unset LANG
+               unset LC_CTYPE
+               unset LC_NUMERIC
+               unset LC_TIME
+               unset LC_COLLATE
+               unset LC_MONETARY
+               unset LC_MESSAGES
+               unset LC_ALL
+               source ${EROOT%/}/etc/env.d/02locale
+               [[ -n ${LANG} ]] && export LANG
+               [[ -n ${LC_CTYPE} ]] && export LC_CTYPE
+               [[ -n ${LC_NUMERIC} ]] && export LC_NUMERIC
+               [[ -n ${LC_TIME} ]] && export LC_TIME
+               [[ -n ${LC_COLLATE} ]] && export LC_COLLATE
+               [[ -n ${LC_MONETARY} ]] && export LC_MONETARY
+               [[ -n ${LC_MESSAGES} ]] && export LC_MESSAGES
+               [[ -n ${LC_ALL} ]] && export LC_ALL
+       fi
+
+       einfo "You can modify the paths and options passed to initdb by editing:"
+       einfo "    ${EROOT%/}/etc/conf.d/postgresql-${SLOT}"
+       einfo
+       einfo "Information on options that can be passed to initdb are found at:"
+       einfo "    http://www.postgresql.org/docs/${SLOT}/static/creating-cluster.html"
+       einfo "    http://www.postgresql.org/docs/${SLOT}/static/app-initdb.html"
+       einfo
+       einfo "PG_INITDB_OPTS is currently set to:"
+       if [[ -z "${PG_INITDB_OPTS}" ]] ; then
+               einfo "    (none)"
+       else
+               einfo "    ${PG_INITDB_OPTS}"
+       fi
+       einfo
+       einfo "Configuration files will be installed to:"
+       einfo "    ${PGDATA}"
+       einfo
+       einfo "The database cluster will be created in:"
+       einfo "    ${DATA_DIR}"
+       einfo
+       while [[ $correct != "true" ]] ; do
+               einfo "Are you ready to continue? (y/n)"
+               read answer
+               if [[ $answer =~ ^[Yy]([Ee][Ss])?$ ]] ; then
+                       correct="true"
+               elif [[ $answer =~ ^[Nn]([Oo])?$ ]] ; then
+                       die "Aborting initialization."
+               else
+                       echo "Answer not recognized"
+               fi
+       done
+
+       if [ -n "$(ls -A ${DATA_DIR} 2> /dev/null)" ] ; then
+               eerror "The given directory, '${DATA_DIR}', is not empty."
+               eerror "Modify DATA_DIR to point to an empty directory."
+               die "${DATA_DIR} is not empty."
+       fi
+
+       [[ -z ${PG_MAX_CONNECTIONS} ]] && PG_MAX_CONNECTIONS=128
+       einfo "Checking system parameters..."
+
+       if ! use kernel_linux ; then
+               einfo "Skipped."
+               einfo "Tests not supported on this OS (yet)"
+       else
+               if [[ -z ${SKIP_SYSTEM_TESTS} ]] ; then
+                       ebegin "Checking whether your system supports at least ${PG_MAX_CONNECTIONS} connections"
+
+                       local SEMMSL=$(sysctl -n kernel.sem | cut -f1)
+                       local SEMMNS=$(sysctl -n kernel.sem | cut -f2)
+                       local SEMMNI=$(sysctl -n kernel.sem | cut -f4)
+                       local SHMMAX=$(sysctl -n kernel.shmmax)
+
+                       local SEMMSL_MIN=17
+                       local SEMMNS_MIN=$(( ( ${PG_MAX_CONNECTIONS}/16 ) * 17 ))
+                       local SEMMNI_MIN=$(( ( ${PG_MAX_CONNECTIONS}+15 ) / 16 ))
+                       local SHMMAX_MIN=$(( 500000 + ( 30600 * ${PG_MAX_CONNECTIONS} ) ))
+
+                       for p in SEMMSL SEMMNS SEMMNI SHMMAX ; do
+                               if [[ $(eval echo \$$p) -lt $(eval echo \$${p}_MIN) ]] ; then
+                                       eerror "The value for ${p} $(eval echo \$$p) is below the"
+                                       eerror "recommended value $(eval echo \$${p}_MIN)"
+                                       eerror "You have now several options:"
+                                       eerror "  - Change the mentioned system parameter"
+                                       eerror "  - Lower the number of max.connections by setting PG_MAX_CONNECTIONS to"
+                                       eerror "    a value lower than ${PG_MAX_CONNECTIONS}"
+                                       eerror "  - Set SKIP_SYSTEM_TESTS in case you want to ignore this test"
+                                       eerror "    completely"
+                                       eerror "More information can be found here:"
+                                       eerror "  http://www.postgresql.org/docs/${SLOT}/static/kernel-resources.html"
+                                       die "System test failed."
+                               fi
+                       done
+                       eend
+               else
+                       ewarn "SKIP_SYSTEM_TESTS set, so skipping."
+               fi
+       fi
+
+       if [[ ${EUID} == 0 ]] ; then
+               einfo "Creating the data directory ..."
+               mkdir -p "${DATA_DIR}"
+               chown -Rf postgres:postgres "${DATA_DIR}"
+               chmod 0700 "${DATA_DIR}"
+       fi
+
+       einfo "Initializing the database ..."
+       if [[ ${EUID} == 0 ]] ; then
+               su postgres -c "${EROOT%/}/usr/$(get_libdir)/postgresql-${SLOT}/bin/initdb -D \"${DATA_DIR}\" ${PG_INITDB_OPTS}"
+       else
+               "${EROOT%/}"/usr/$(get_libdir)/postgresql-${SLOT}/bin/initdb -U postgres -D "${DATA_DIR}" ${PG_INITDB_OPTS}
+       fi
+       mv "${DATA_DIR%/}"/*.conf "${PGDATA}"
+
+       einfo "The autovacuum function, which was in contrib, has been moved to the"
+       einfo "main PostgreSQL functions starting with 8.1."
+       einfo "You can enable it in the cluster's:"
+       einfo "    ${PGDATA%/}/postgresql.conf"
+       einfo
+       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}"
+               einfo
+               einfo "To start the server:"
+               einfo "    pg_ctl start -D ${DATA_DIR} -o '-D ${PGDATA} --data-directory=${DATA_DIR}'"
+               einfo
+               einfo "To stop:"
+               einfo "    pg_ctl stop -D ${DATA_DIR}"
+               einfo
+               einfo "Or move the configuration files back:"
+               einfo "    mv ${PGDATA}*.conf ${DATA_DIR}"
+       else
+               einfo "You should use the '${EROOT%/}/etc/init.d/postgresql-${SLOT}' script to run PostgreSQL"
+               einfo "instead of 'pg_ctl'."
+       fi
+}
+
+src_test() {
+       einfo ">>> Test phase [check]: ${CATEGORY}/${PF}"
+
+       if [[ ${UID} != 0 ]] ; then
+               PATH="${EROOT%/}/usr/$(get_libdir)/postgresql-${SLOT}/bin/:${PATH}" \
+                       emake check \
+                       PGXS=$("${EROOT%/}"/usr/$(get_libdir)/postgresql-${SLOT}/bin/pg_config --pgxs) \
+                       NO_PGXS=0 USE_PGXS=1 SLOT="${SLOT}"
+
+               einfo "If you think other tests besides the regression tests are necessary,"
+               einfo "please submit a bug including a patch for this ebuild to enable them."
+       else
+               ewarn "Tests cannot be run as root. Skipping."
+               ewarn "HINT: FEATURES=\"userpriv\""
+       fi
+}
diff --git a/dev-db/postgresql-server/postgresql-server-8.3.17-r1.ebuild b/dev-db/postgresql-server/postgresql-server-8.3.17-r1.ebuild
new file mode 100644 (file)
index 0000000..21e2cc7
--- /dev/null
@@ -0,0 +1,339 @@
+# Copyright 1999-2011 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/dev-db/postgresql-server/postgresql-server-8.3.17-r1.ebuild,v 1.1 2011/12/25 15:57:21 titanofold Exp $
+
+EAPI="4"
+
+WANT_AUTOMAKE="none"
+inherit autotools eutils multilib pam prefix versionator
+
+SLOT="$(get_version_component_range 1-2)"
+
+KEYWORDS="~alpha ~amd64 ~arm ~hppa ~ia64 ~mips ~ppc ~ppc64 ~s390 ~sh ~sparc ~x86 ~x86-fbsd"
+
+DESCRIPTION="PostgreSQL server"
+HOMEPAGE="http://www.postgresql.org/"
+SRC_URI="mirror://postgresql/source/v${PV}/postgresql-${PV}.tar.bz2
+                http://dev.gentoo.org/~titanofold/postgresql-patches-8.3-r2.tbz2
+                http://dev.gentoo.org/~titanofold/postgresql-initscript-2.1.tbz2"
+LICENSE="POSTGRESQL"
+
+S="${WORKDIR}/postgresql-${PV}"
+
+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="doc kernel_linux nls pam perl python selinux tcl uuid xml"
+
+for lingua in ${LINGUAS} ; do
+       IUSE+=" linguas_${lingua}"
+done
+
+wanted_languages() {
+       local enable_langs
+
+       for lingua in ${LINGUAS} ; do
+               use linguas_${lingua} && enable_langs+="${lingua} "
+       done
+
+       echo -n ${enable_langs}
+}
+
+RDEPEND="~dev-db/postgresql-base-${PV}:${SLOT}[pam?,nls=]
+                perl? ( >=dev-lang/perl-5.8 )
+                selinux? ( sec-policy/selinux-postgresql )
+                tcl? ( >=dev-lang/tcl-8 )
+                uuid? ( dev-libs/ossp-uuid )
+                xml? ( dev-libs/libxml2 dev-libs/libxslt )"
+
+DEPEND="${RDEPEND}
+               sys-devel/flex
+               xml? ( dev-util/pkgconfig )"
+
+PDEPEND="doc? ( ~dev-db/postgresql-docs-${PV} )"
+
+# Support /var/run or /run for the socket directory
+[[ ! -d /run ]] && RUNDIR=/var
+
+pkg_setup() {
+       enewgroup postgres 70
+       enewuser postgres 70 /bin/bash /var/lib/postgresql postgres
+}
+
+src_prepare() {
+       epatch "${WORKDIR}/autoconf.patch" \
+               "${WORKDIR}/bool.patch" \
+               "${WORKDIR}/darwin.patch" \
+               "${WORKDIR}/pg_ctl-exit-status.patch" \
+               "${WORKDIR}/server.patch" \
+               "${WORKDIR}/SuperH.patch"
+
+       eprefixify src/include/pg_config_manual.h
+
+       if use test ; then
+               epatch "${WORKDIR}/regress.patch"
+               sed -e "s|@SOCKETDIR@|${T}|g" -i src/test/regress/pg_regress{,_main}.c
+               sed -e "s|/no/such/location|${S}/src/test/regress/tmp_check/no/such/location|g" \
+                       -i src/test/regress/{input,output}/tablespace.source
+       else
+               echo "all install:" > "${S}/src/test/regress/GNUmakefile"
+       fi
+
+       sed -e "s|@RUNDIR@|${RUNDIR}|g" \
+               -i src/include/pg_config_manual.h "${WORKDIR}/postgresql.init" || \
+               die "RUNDIR sed failed"
+       sed -e "s|@SLOT@|${SLOT}|g" \
+               -i "${WORKDIR}/postgresql.init" "${WORKDIR}/postgresql.confd" || \
+               die "SLOT sed failed"
+
+       eautoconf
+}
+
+src_configure() {
+       # eval is needed to get along with pg_config quotation of space-rich entities.
+       eval econf "$(${EPREFIX%/}/usr/$(get_libdir)/postgresql-${SLOT}/bin/pg_config --configure)" \
+               --with-includes="${EPREFIX%/}/usr/include/postgresql-${SLOT}/" \
+               --with-system-tzdata="${EPREFIX%/}/usr/share/zoneinfo" \
+               $(use_with perl) \
+               $(use_with python) \
+               $(use_with tcl) \
+               $(use_with xml libxml) \
+               $(use_with xml libxslt) \
+               $(use_with uuid ossp-uuid) \
+               "$(has_version ~dev-db/postgresql-base-${PV}[nls] && use_enable nls nls "$(wanted_languages)")"
+}
+
+src_compile() {
+       local bd
+       for bd in . contrib $(use xml && echo contrib/xml2); do
+               PATH="${EROOT%/}/usr/$(get_libdir)/postgresql-${SLOT}/bin:${PATH}" \
+                       emake -C $bd -j1 \
+                               PGXS=$(${EROOT%/}/usr/$(get_libdir)/postgresql-${SLOT}/bin/pg_config --pgxs) \
+                               PGXS_IN_SERVER=1 PGXS_WITH_SERVER="${S}/src/backend/postgres" \
+                               NO_PGXS=0 USE_PGXS=1 docdir=${EROOT%/}/usr/share/doc/${PF}
+       done
+}
+
+src_install() {
+       if use perl ; then
+               mv -f "${S}/src/pl/plperl/GNUmakefile" "${S}/src/pl/plperl/GNUmakefile_orig"
+               sed -e "s:\$(DESTDIR)\$(plperl_installdir):\$(plperl_installdir):" \
+                       "${S}/src/pl/plperl/GNUmakefile_orig" \
+                       > "${S}/src/pl/plperl/GNUmakefile"
+       fi
+
+       local bd
+       for bd in . contrib $(use xml && echo contrib/xml2) ; do
+               PATH="${EROOT%/}/usr/$(get_libdir)/postgresql-${SLOT}/bin:${PATH}" \
+                       emake install -C $bd -j1 DESTDIR="${D}" \
+                               PGXS_IN_SERVER=1 PGXS_WITH_SERVER="${S}/src/backend/postgres" \
+                               PGXS=$(${EROOT%/}/usr/$(get_libdir)/postgresql-${SLOT}/bin/pg_config --pgxs) \
+                               NO_PGXS=0 USE_PGXS=1 docdir=${EROOT%/}/usr/share/doc/${PF}
+       done
+
+       rm -r "${ED}/usr/share/postgresql-${SLOT}/man/man7/" \
+               "${ED}/usr/share/doc/${PF}/html"
+       rm "${ED}"/usr/share/postgresql-${SLOT}/man/man1/{clusterdb,create{db,lang,user},drop{db,lang,user},ecpg,pg_{config,dump,dumpall,restore},psql,reindexdb,vacuumdb}.1
+       docompress /usr/share/postgresql-${SLOT}/man/man1
+
+       dodoc README HISTORY doc/{README.*,TODO,bug.template}
+
+       dodir /etc/eselect/postgresql/slots/${SLOT}
+       echo "postgres_ebuilds=\"\${postgres_ebuilds} ${PF}\"" \
+               > "${ED}/etc/eselect/postgresql/slots/${SLOT}/server"
+
+       newconfd "${WORKDIR}/postgresql.confd" postgresql-${SLOT}
+       newinitd "${WORKDIR}/postgresql.init" postgresql-${SLOT}
+
+       use pam && pamd_mimic system-auth postgresql auth account session
+
+       if use prefix ; then
+               keepdir ${RUNDIR}/run/postgresql
+               fperms 0770 ${RUNDIR}/run/postgresql
+       fi
+}
+
+pkg_postinst() {
+       postgresql-config update
+
+       elog "Gentoo specific documentation:"
+       elog "http://www.gentoo.org/doc/en/postgres-howto.xml"
+       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%/}${RUNDIR}/run/postgresql/"
+       elog
+       elog "If you have users and/or services that you would like to utilize the"
+       elog "socket, you must add them to the 'postgres' system group:"
+       elog "    usermod -a -G postgres <user>"
+       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}"
+}
+
+pkg_postrm() {
+       postgresql-config update
+}
+
+pkg_config() {
+       [[ -f ${EROOT%/}/etc/conf.d/postgresql-${SLOT} ]] && source "${EROOT%/}/etc/conf.d/postgresql-${SLOT}"
+       [[ -z ${PGDATA} ]] && PGDATA="${EROOT%/}/etc/postgresql-${SLOT}/"
+       [[ -z ${DATA_DIR} ]] && DATA_DIR="${EROOT%/}/var/lib/postgresql/${SLOT}/data"
+
+       # environment.bz2 may not contain the same locale as the current system
+       # locale. Unset and source from the current system locale.
+       if [[ -f ${EROOT%/}/etc/env.d/02locale ]] ; then
+               unset LANG
+               unset LC_CTYPE
+               unset LC_NUMERIC
+               unset LC_TIME
+               unset LC_COLLATE
+               unset LC_MONETARY
+               unset LC_MESSAGES
+               unset LC_ALL
+               source ${EROOT%/}/etc/env.d/02locale
+               [[ -n ${LANG} ]] && export LANG
+               [[ -n ${LC_CTYPE} ]] && export LC_CTYPE
+               [[ -n ${LC_NUMERIC} ]] && export LC_NUMERIC
+               [[ -n ${LC_TIME} ]] && export LC_TIME
+               [[ -n ${LC_COLLATE} ]] && export LC_COLLATE
+               [[ -n ${LC_MONETARY} ]] && export LC_MONETARY
+               [[ -n ${LC_MESSAGES} ]] && export LC_MESSAGES
+               [[ -n ${LC_ALL} ]] && export LC_ALL
+       fi
+
+       einfo "You can modify the paths and options passed to initdb by editing:"
+       einfo "    ${EROOT%/}/etc/conf.d/postgresql-${SLOT}"
+       einfo
+       einfo "Information on options that can be passed to initdb are found at:"
+       einfo "    http://www.postgresql.org/docs/${SLOT}/static/creating-cluster.html"
+       einfo "    http://www.postgresql.org/docs/${SLOT}/static/app-initdb.html"
+       einfo
+       einfo "PG_INITDB_OPTS is currently set to:"
+       if [[ -z ${PG_INITDB_OPTS} ]] ; then
+               einfo "    (none)"
+       else
+               einfo "    ${PG_INITDB_OPTS}"
+       fi
+       einfo
+       einfo "Configuration files will be installed to:"
+       einfo "    ${PGDATA}"
+       einfo
+       einfo "The database cluster will be created in:"
+       einfo "    ${DATA_DIR}"
+       einfo
+       while [[ $correct != "true" ]] ; do
+               einfo "Are you ready to continue? (y/n)"
+               read answer
+               if [[ $answer =~ ^[Yy]([Ee][Ss])?$ ]] ; then
+                       correct="true"
+               elif [[ $answer =~ ^[Nn]([Oo])?$ ]] ; then
+                       die "Aborting initialization."
+               else
+                       echo "Answer not recognized."
+               fi
+       done
+
+       if [[ -n "$(ls -A ${DATA_DIR} 2> /dev/null)" ]] ; then
+               eerror "The given directory, '${DATA_DIR}', is not empty."
+               eerror "Modify DATA_DIR to point to an empty directory."
+               die "${DATA_DIR} is not empty."
+       fi
+
+       [[ -z ${PG_MAX_CONNECTIONS} ]] && PG_MAX_CONNECTIONS=128
+       einfo "Checking system parameters..."
+
+       if ! use kernel_linux ; then
+               einfo "Skipped."
+               einfo "Tests not supported on this OS (yet)."
+       else
+               if [[ -z ${SKIP_SYSTEM_TESTS} ]] ; then
+                       ebegin "Checking whether your system supports at least ${PG_MAX_CONNECTIONS} connections"
+
+                       local SEMMSL=$(sysctl -n kernel.sem | cut -f1)
+                       local SEMMNS=$(sysctl -n kernel.sem | cut -f2)
+                       local SEMMNI=$(sysctl -n kernel.sem | cut -f4)
+                       local SHMMAX=$(sysctl -n kernel.shmmax)
+
+                       local SEMMSL_MIN=17
+                       local SEMMNS_MIN=$(( ( ${PG_MAX_CONNECTIONS}/16 ) * 17 ))
+                       local SEMMNI_MIN=$(( ( ${PG_MAX_CONNECTIONS}+15 ) / 16 ))
+                       local SHMMAX_MIN=$(( 500000 + ( 30600 * ${PG_MAX_CONNECTIONS} ) ))
+
+                       for p in SEMMSL SEMMNS SEMMNI SHMMAX ; do
+                               if [[ $(eval echo \$$p) -lt $(eval echo \$${p}_MIN) ]] ; then
+                                       eerror "The value for ${p} $(eval echo \$$p) is below the recommended value $(eval echo \$${p}_MIN)"
+                                       eerror "You have now several options:"
+                                       eerror "  - Change the mentioned system parameter"
+                                       eerror "  - Lower the number of max connections by setting PG_MAX_CONNECTIONS to a"
+                                       eerror "    value lower than ${PG_MAX_CONNECTIONS}"
+                                       eerror "  - Set SKIP_SYSTEM_TESTS in case you want to ignore this test completely"
+                                       eerror "More information can be found here:"
+                                       eerror "    http://www.postgresql.org/docs/${SLOT}/static/kernel-resources.html"
+                                       die "System test failed."
+                               fi
+                       done
+                       eend
+               else
+                       ewarn "SKIP_SYSTEM_TESTS is set, so skipping."
+               fi
+       fi
+
+       if [[ ${EUID} == 0 ]] ; then
+               einfo "Creating the data directory ..."
+               mkdir -p "${DATA_DIR}"
+               chown -Rf postgres:postgres "${DATA_DIR}"
+               chmod 0700 "${DATA_DIR}"
+       fi
+
+       einfo "Initializing the database ..."
+       if [[ ${EUID} == 0 ]] ; then
+               su postgres -c "${EROOT%/}/usr/$(get_libdir)/postgresql-${SLOT}/bin/initdb -D \"${DATA_DIR}\" ${PG_INITDB_OPTS}"
+       else
+               "${EROOT%/}"/usr/$(get_libdir)/postgresql-${SLOT}/bin/initdb -U postgres -D "${DATA_DIR}" ${PG_INITDB_OPTS}
+       fi
+       mv "${DATA_DIR%/}"/*.conf "${PGDATA}"
+
+       einfo "The autovacuum function, which was in contrib, has been moved to the main"
+       einfo "PostgreSQL functions starting with 8.1. You can enable it in the clusters"
+       einfo "postgresql.conf."
+       einfo
+       if use prefix ; then
+               einfo "The location of the configuration files have moved to:"
+               einfo "    ${PGDATA}"
+               einfo
+               einfo "To start the server:"
+               einfo "    pg_ctl start -D ${DATA_DIR} -o '-D ${PGDATA} --data-directory=${DATA_DIR}'"
+               einfo
+               einfo "To stop:"
+               einfo "    pg_ctl stop -D ${DATA_DIR}"
+               einfo
+               einfo "Or move the configuration files back:"
+               einfo "    mv ${PGDATA}*.conf ${DATA_DIR}"
+       else
+               einfo "You should use the '${EROOT%/}/etc/init.d/postgresql-${SLOT}' script to run PostgreSQL"
+               einfo "instead of 'pg_ctl'."
+       fi
+}
+
+src_test() {
+       einfo ">>> Test phase [check]: ${CATEGORY}/${PF}"
+
+       if [[ ${UID} != 0 ]] ; then
+               PATH="${EROOT%/}/usr/$(get_libdir)/postgresql-${SLOT}/bin/:${PATH}" \
+                       emake check \
+                       PGXS=$(${EROOT%/}/usr/$(get_libdir)/postgresql-${SLOT}/bin/pg_config --pgxs) \
+                       NO_PGXS=0 USE_PGXS=1 SLOT=${SLOT}
+
+               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. Skipping."
+               ewarn "HINT: FEATURES=\"userpriv\""
+       fi
+}
diff --git a/dev-db/postgresql-server/postgresql-server-8.4.10-r1.ebuild b/dev-db/postgresql-server/postgresql-server-8.4.10-r1.ebuild
new file mode 100644 (file)
index 0000000..6734fda
--- /dev/null
@@ -0,0 +1,348 @@
+# Copyright 1999-2011 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/dev-db/postgresql-server/postgresql-server-8.4.10-r1.ebuild,v 1.1 2011/12/25 15:57:21 titanofold Exp $
+
+EAPI="3"
+PYTHON_DEPEND="python? 2"
+
+WANT_AUTOMAKE="none"
+inherit autotools eutils multilib pam prefix python versionator
+
+SLOT="$(get_version_component_range 1-2)"
+
+KEYWORDS="~alpha ~amd64 ~arm ~hppa ~ia64 ~mips ~ppc ~ppc64 ~s390 ~sh ~sparc ~x86 ~x86-fbsd"
+
+DESCRIPTION="PostgreSQL server"
+HOMEPAGE="http://www.postgresql.org/"
+SRC_URI="mirror://postgresql/source/v${PV}/postgresql-${PV}.tar.bz2
+                http://dev.gentoo.org/~titanofold/postgresql-patches-8.4-r2.tbz2
+                http://dev.gentoo.org/~titanofold/postgresql-initscript-2.1.tbz2"
+LICENSE="POSTGRESQL"
+
+S="${WORKDIR}/postgresql-${PV}"
+
+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="doc kernel_linux nls pam perl -pg_legacytimestamp python selinux tcl uuid xml"
+
+for lingua in ${LINGUAS} ; do
+       IUSE+=" linguas_${lingua}"
+done
+
+wanted_languages() {
+       local enable_langs
+
+       for lingua in ${LINGUAS} ; do
+               use linguas_${lingua} && enable_langs+="${lingua} "
+       done
+
+       echo -n ${enable_langs}
+}
+
+RDEPEND="~dev-db/postgresql-base-${PV}:${SLOT}[pam?,pg_legacytimestamp=,nls=]
+                perl? ( >=dev-lang/perl-5.8 )
+                selinux? ( sec-policy/selinux-postgresql )
+                tcl? ( >=dev-lang/tcl-8 )
+                uuid? ( dev-libs/ossp-uuid )
+                xml? ( dev-libs/libxml2 dev-libs/libxslt )"
+
+DEPEND="${RDEPEND}
+               sys-devel/flex
+               xml? ( dev-util/pkgconfig )"
+
+PDEPEND="doc? ( ~dev-db/postgresql-docs-${PV} )"
+
+# Support /var/run or /run for the socket directory
+[[ ! -d /run ]] && RUNDIR=/var
+
+pkg_setup() {
+       enewgroup postgres 70
+       enewuser postgres 70 /bin/bash /var/lib/postgresql postgres
+
+       use python && python_set_active_version 2
+}
+
+src_prepare() {
+       epatch "${WORKDIR}/autoconf.patch" \
+               "${WORKDIR}/bool.patch" \
+               "${WORKDIR}/darwin.patch" \
+               "${WORKDIR}/ldflags.patch" \
+               "${WORKDIR}/pg_ctl-exit-status.patch" \
+               "${WORKDIR}/server.patch" \
+               "${WORKDIR}/SuperH.patch"
+
+       eprefixify src/include/pg_config_manual.h
+
+       if use test ; then
+               epatch "${WORKDIR}/regress.patch"
+               sed -e "s|@SOCKETDIR@|${T}|g" -i src/test/regress/pg_regress{,_main}.c
+               sed -e "s|/no/such/location|${S}/src/test/regress/tmp_check/no/such/location|g" \
+                       -i src/test/regress/{input,output}/tablespace.source
+       else
+               echo "all install:" > "${S}/src/test/regress/GNUmakefile"
+       fi
+
+       sed -e "s|@RUNDIR@|${RUNDIR}|g" \
+               -i src/include/pg_config_manual.h "${WORKDIR}/postgresql.init" || \
+               die "RUNDIR sed failed"
+       sed -e "s|@SLOT@|${SLOT}|g" \
+               -i "${WORKDIR}/postgresql.init" "${WORKDIR}/postgresql.confd" || \
+               die "SLOT sed failed"
+
+       eautoconf
+}
+
+src_configure() {
+       # eval is needed to get along with pg_config quotation of space-rich entities.
+       eval econf "$(${EPREFIX%/}/usr/$(get_libdir)/postgresql-${SLOT}/bin/pg_config --configure)" \
+               --with-includes="${EPREFIX%/}/usr/include/postgresql-${SLOT}/" \
+               --with-libraries="${EPREFIX%/}/usr/$(get_libdir)/postgresql-${SLOT}/$(get_libdir)" \
+               --with-system-tzdata="${EPREFIX%/}/usr/share/zoneinfo" \
+               $(use_with perl) \
+               $(use_with python) \
+               $(use_with tcl) \
+               $(use_with xml libxml) \
+               $(use_with xml libxslt) \
+               $(use_with uuid ossp-uuid) \
+               "$(has_version ~dev-db/postgresql-base-${PV}[nls] && use_enable nls nls "$(wanted_languages)")"
+}
+
+src_compile() {
+       local bd
+       for bd in . contrib $(use xml && echo contrib/xml2) ; do
+               PATH="${EROOT%/}/usr/$(get_libdir)/postgresql-${SLOT}/bin:${PATH}" \
+                       emake -C $bd -j1 || die "emake in $bd failed"
+       done
+}
+
+src_install() {
+       if use perl ; then
+               mv -f "${S}/src/pl/plperl/GNUmakefile" \
+                       "${S}/src/pl/plperl/GNUmakefile_orig"
+               sed -e "s:\$(DESTDIR)\$(plperl_installdir):\$(plperl_installdir):" \
+                       "${S}/src/pl/plperl/GNUmakefile_orig" \
+                       > "${S}/src/pl/plperl/GNUmakefile"
+       fi
+
+       local bd
+       for bd in . contrib $(use xml && echo contrib/xml2) ; do
+               PATH="${EROOT%/}/usr/$(get_libdir)/postgresql-${SLOT}/bin:${PATH}" \
+                       emake install -C $bd -j1 DESTDIR="${D}" \
+                       || die "emake install in $bd failed"
+       done
+
+       rm -r "${ED}/usr/share/postgresql-${SLOT}/man/man7/" \
+               "${ED}/usr/share/doc/postgresql-${SLOT}/html"
+       rm "${ED}"/usr/share/postgresql-${SLOT}/man/man1/{clusterdb,create{db,lang,user},drop{db,lang,user},ecpg,pg_{config,dump,dumpall,restore},psql,reindexdb,vacuumdb}.1
+
+       dodoc README HISTORY doc/{README.*,TODO,bug.template}
+
+       dodir /etc/eselect/postgresql/slots/${SLOT}
+       echo "postgres_ebuilds=\"\${postgres_ebuilds} ${PF}\"" \
+               > "${ED}/etc/eselect/postgresql/slots/${SLOT}/server"
+
+       newconfd "${WORKDIR}"/postgresql.confd postgresql-${SLOT} \
+               || die "Inserting conf.d file failed"
+
+       newinitd "${WORKDIR}"/postgresql.init postgresql-${SLOT} \
+               || die "Inserting init.d file failed"
+
+       use pam && pamd_mimic system-auth postgresql auth account session
+
+       if use prefix ; then
+               keepdir ${RUNDIR}/run/postgresql
+               fperms 0770 ${RUNDIR}/run/postgresql
+       fi
+}
+
+pkg_postinst() {
+       postgresql-config update
+
+       elog "The time stamp format is 64 bit integers now. If you upgrade from older"
+       elog "databases, this may force you to either do a dump and reload of enable"
+       elog "pg_legacytimestamp until you find time to do so. If the database can't start"
+       elog "please try enabling pg_legacytimestamp and rebuild."
+       elog
+       elog "Gentoo specific documentation:"
+       elog "http://www.gentoo.org/doc/en/postgres-howto.xml"
+       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%/}${RUNDIR}/run/postgresql/"
+       elog
+       elog "If you have users and/or services that you would like to utilize the"
+       elog "socket, you must add them to the 'postgres' system group:"
+       elog "    usermod -a -G postgres <user>"
+       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}"
+}
+
+pkg_postrm() {
+       postgresql-config update
+}
+
+pkg_config() {
+       [[ -f ${EROOT%/}/etc/conf.d/postgresql-${SLOT} ]] && source "${EROOT%/}/etc/conf.d/postgresql-${SLOT}"
+       [[ -z ${PGDATA} ]] && PGDATA="${EROOT%/}/etc/postgresql-${SLOT}/"
+       [[ -z ${DATA_DIR} ]] && DATA_DIR="${EROOT%/}/var/lib/postgresql/${SLOT}/data"
+
+       # environment.bz2 may not contain the same locale as the current system
+       # locale. Unset and source from the current system locale.
+       if [[ -f ${EROOT%/}/etc/env.d/02locale ]] ; then
+               unset LANG
+               unset LC_CTYPE
+               unset LC_NUMERIC
+               unset LC_TIME
+               unset LC_COLLATE
+               unset LC_MONETARY
+               unset LC_MESSAGES
+               unset LC_ALL
+               source "${EROOT%/}/etc/env.d/02locale"
+               [[ -n ${LANG} ]] && export LANG
+               [[ -n ${LC_CTYPE} ]] && export LC_CTYPE
+               [[ -n ${LC_NUMERIC} ]] && export LC_NUMERIC
+               [[ -n ${LC_TIME} ]] && export LC_TIME
+               [[ -n ${LC_COLLATE} ]] && export LC_COLLATE
+               [[ -n ${LC_MONETARY} ]] && export LC_MONETARY
+               [[ -n ${LC_MESSAGES} ]] && export LC_MESSAGES
+               [[ -n ${LC_ALL} ]] && export LC_ALL
+       fi
+
+       einfo "You can modify the paths and options passed to initdb by editing:"
+       einfo "    ${EROOT%/}/etc/conf.d/postgresql-${SLOT}"
+       einfo
+       einfo "Information on options that can be passed to initdb are found at:"
+       einfo "    http://www.postgresql.org/docs/${SLOT}/static/creating-cluster.html"
+       einfo "    http://www.postgresql.org/docs/${SLOT}/static/app-initdb.html"
+       einfo
+       einfo "PG_INITDB_OPTS is currently set to:"
+       if [[ -z ${PG_INITDB_OPTS} ]] ; then
+               einfo "    (none)"
+       else
+               einfo "    ${PG_INITDB_OPTS}"
+       fi
+       einfo
+       einfo "Configuration files will be installed to:"
+       einfo "    ${PGDATA}"
+       einfo
+       einfo "The database cluster will be created in:"
+       einfo "    ${DATA_DIR}"
+       einfo
+       while [[ $correct != "true" ]] ; do
+               einfo "Are you ready to continue? (y/n)"
+               read answer
+               if [[ $answer =~ ^[Yy]([Ee][Ss])?$ ]] ; then
+                       correct="true"
+               elif [[ $answer =~ ^[Nn]([Oo])?$ ]] ; then
+                       die "Aborting initialization."
+               else
+                       echo "Answer not recognized"
+               fi
+       done
+
+       if [[ -n "$(ls -A ${DATA_DIR} 2> /dev/null)" ]] ; then
+               eerror "The given directory, '${DATA_DIR}', is not empty."
+               eerror "Modify DATA_DIR to point to an empty directory."
+               die "${DATA_DIR} is not empty."
+       fi
+
+       [[ -z ${PG_MAX_CONNECTIONS} ]] && PG_MAX_CONNECTIONS=128
+       einfo "Checking system parameters..."
+
+       if ! use kernel_linux ; then
+               einfo "Skipped."
+               einfo "  Tests not supported on this OS (yet)"
+       else
+               if [[ -z ${SKIP_SYSTEM_TESTS} ]] ; then
+                       einfo "Checking whether your system supports at least ${PG_MAX_CONNECTIONS} connections..."
+
+                       local SEMMSL=$(sysctl -n kernel.sem | cut -f1)
+                       local SEMMNS=$(sysctl -n kernel.sem | cut -f2)
+                       local SEMMNI=$(sysctl -n kernel.sem | cut -f4)
+                       local SHMMAX=$(sysctl -n kernel.shmmax)
+
+                       local SEMMSL_MIN=17
+                       local SEMMNS_MIN=$(( ( ${PG_MAX_CONNECTIONS}/16 ) * 17 ))
+                       local SEMMNI_MIN=$(( ( ${PG_MAX_CONNECTIONS}+15 ) / 16 ))
+                       local SHMMAX_MIN=$(( 500000 + ( 30600 * ${PG_MAX_CONNECTIONS} ) ))
+
+                       for p in SEMMSL SEMMNS SEMMNI SHMMAX ; do
+                               if [[ $(eval echo \$$p) -lt $(eval echo \$${p}_MIN) ]] ; then
+                                       eerror "The value for ${p} $(eval echo \$$p) is below the recommended value $(eval echo \$${p}_MIN)"
+                                       eerror "You have now several options:"
+                                       eerror "  - Change the mentioned system parameter"
+                                       eerror "  - Lower the number of max.connections by setting PG_MAX_CONNECTIONS to a"
+                                       eerror "    value lower than ${PG_MAX_CONNECTIONS}"
+                                       eerror "  - Set SKIP_SYSTEM_TESTS in case you want to ignore this test completely"
+                                       eerror "More information can be found here:"
+                                       eerror "    http://www.postgresql.org/docs/${SLOT}/static/kernel-resources.html"
+                                       die "System test failed."
+                               fi
+                       done
+                       einfo "Passed."
+               else
+                       ewarn "SKIP_SYSTEM_TESTS set, so skipping."
+               fi
+       fi
+
+       if [[ ${EUID} == 0 ]] ; then
+               einfo "Creating the data directory ..."
+               mkdir -p "${DATA_DIR}"
+               chown -Rf postgres:postgres "${DATA_DIR}"
+               chmod 0700 "${DATA_DIR}"
+       fi
+
+       einfo "Initializing the database ..."
+       if [[ ${EUID} == 0 ]] ; then
+               su postgres -c "${EROOT%/}/usr/$(get_libdir)/postgresql-${SLOT}/bin/initdb -D \"${DATA_DIR}\" ${PG_INITDB_OPTS}"
+       else
+               "${EROOT%/}"/usr/$(get_libdir)/postgresql-${SLOT}/bin/initdb -U postgres -D "${DATA_DIR}" ${PG_INITDB_OPTS}
+       fi
+       mv "${DATA_DIR%/}"/*.conf "${PGDATA}"
+
+       einfo "The autovacuum function, which was in contrib, has been moved to the main"
+       einfo "PostgreSQL functions starting with 8.1, and starting with 8.4 is now enabled by"
+       einfo "default. You can disable it in the cluster's:"
+       einfo "    ${PGDATA%/}/postgresql.conf"
+       einfo
+       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}"
+               einfo
+               einfo "To start the server:"
+               einfo "    pg_ctl start -D ${DATA_DIR} -o '-D ${PGDATA} --data-directory=${DATA_DIR}'"
+               einfo
+               einfo "To stop:"
+               einfo "    pg_ctl stop -D ${DATA_DIR}"
+               einfo
+               einfo "Or move the configuration files back:"
+               einfo "    mv ${PGDATA}*.conf ${DATA_DIR}"
+       else
+               einfo "You should use the '${EROOT%/}/etc/init.d/postgresql-${SLOT}' script to run PostgreSQL"
+               einfo "instead of 'pg_ctl'."
+       fi
+}
+
+src_test() {
+       einfo ">>> Test phase [check]: ${CATEGORY}/${PF}"
+
+       if [[ ${UID} != 0 ]] ; then
+               emake check || die "Make check failed. See above for details."
+
+               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. Skipping."
+               ewarn "HINT: FEATURES=\"userpriv\""
+       fi
+}
diff --git a/dev-db/postgresql-server/postgresql-server-9.0.6-r1.ebuild b/dev-db/postgresql-server/postgresql-server-9.0.6-r1.ebuild
new file mode 100644 (file)
index 0000000..f2586b3
--- /dev/null
@@ -0,0 +1,342 @@
+# Copyright 1999-2011 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/dev-db/postgresql-server/postgresql-server-9.0.6-r1.ebuild,v 1.1 2011/12/25 15:57:21 titanofold Exp $
+
+EAPI="3"
+PYTHON_DEPEND="python? 2"
+
+WANT_AUTOMAKE="none"
+inherit autotools eutils multilib pam prefix python versionator
+
+SLOT="$(get_version_component_range 1-2)"
+
+KEYWORDS="~alpha ~amd64 ~arm ~hppa ~ia64 ~mips ~ppc ~ppc64 ~s390 ~sh ~sparc ~x86 ~x86-fbsd ~ppc-macos ~x86-solaris"
+
+DESCRIPTION="PostgreSQL server"
+HOMEPAGE="http://www.postgresql.org/"
+SRC_URI="mirror://postgresql/source/v${PV}/postgresql-${PV}.tar.bz2
+                http://dev.gentoo.org/~titanofold/postgresql-patches-9.0-r3.tbz2
+                http://dev.gentoo.org/~titanofold/postgresql-initscript-2.1.tbz2"
+LICENSE="POSTGRESQL"
+
+S="${WORKDIR}/postgresql-${PV}"
+
+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="doc kernel_linux nls pam perl -pg_legacytimestamp python selinux tcl uuid xml"
+
+for lingua in ${LINGUAS}; do
+       IUSE+=" linguas_${lingua}"
+done
+
+wanted_languages() {
+       local enable_langs
+
+       for lingua in ${LINGUAS} ; do
+               use linguas_${lingua} && enable_langs+="${lingua} "
+       done
+
+       echo -n ${enable_langs}
+}
+
+RDEPEND="~dev-db/postgresql-base-${PV}:${SLOT}[pam?,pg_legacytimestamp=,nls=]
+                perl? ( >=dev-lang/perl-5.8 )
+                selinux? ( sec-policy/selinux-postgresql )
+                tcl? ( >=dev-lang/tcl-8 )
+                uuid? ( dev-libs/ossp-uuid )
+                xml? ( dev-libs/libxml2 dev-libs/libxslt )"
+
+DEPEND="${RDEPEND}
+               sys-devel/flex
+               xml? ( dev-util/pkgconfig )"
+
+PDEPEND="doc? ( ~dev-db/postgresql-docs-${PV} )"
+
+# Support /var/run or /run for the socket directory
+[[ ! -d /run ]] && RUNDIR=/var
+
+pkg_setup() {
+       enewgroup postgres 70
+       enewuser postgres 70 /bin/bash /var/lib/postgresql postgres
+
+       use python && python_set_active_version 2
+}
+
+src_prepare() {
+       epatch "${WORKDIR}/autoconf.patch" \
+               "${WORKDIR}/bool.patch" \
+               "${WORKDIR}/pg_ctl-exit-status.patch" \
+               "${WORKDIR}/server.patch"
+
+       eprefixify src/include/pg_config_manual.h
+
+       if use test ; then
+               epatch "${WORKDIR}/regress.patch"
+               sed -e "s|@SOCKETDIR@|${T}|g" -i src/test/regress/pg_regress{,_main}.c
+               sed -e "s|/no/such/location|${S}/src/test/regress/tmp_check/no/such/location|g" \
+                       -i src/test/regress/{input,output}/tablespace.source
+       else
+               echo "all install:" > "${S}/src/test/regress/GNUmakefile"
+       fi
+
+       sed -e "s|@RUNDIR@|${RUNDIR}|g" \
+               -i src/include/pg_config_manual.h "${WORKDIR}/postgresql.init" || \
+               die "RUNDIR sed failed"
+       sed -e "s|@SLOT@|${SLOT}|g" \
+               -i "${WORKDIR}/postgresql.init" "${WORKDIR}/postgresql.confd" || \
+               die "SLOT sed failed"
+
+       eautoconf
+}
+
+src_configure() {
+       # eval is needed to get along with pg_config quotation of space-rich entities.
+       eval econf "$(${EPREFIX%/}/usr/$(get_libdir)/postgresql-${SLOT}/bin/pg_config --configure)" \
+               --with-includes="${EPREFIX%/}/usr/include/postgresql-${SLOT}/" \
+               --with-libraries="${EPREFIX%/}/usr/$(get_libdir)/postgresql-${SLOT}/$(get_libdir)" \
+               --with-system-tzdata="${EPREFIX%/}/usr/share/zoneinfo" \
+               $(use_with perl) \
+               $(use_with python) \
+               $(use_with tcl) \
+               $(use_with xml libxml) \
+               $(use_with xml libxslt) \
+               $(use_with uuid ossp-uuid) \
+               "$(use_enable nls nls "$(wanted_languages)")"
+}
+
+src_compile() {
+       local bd
+       for bd in . contrib $(use xml && echo contrib/xml2); do
+               PATH="${EROOT%/}/usr/$(get_libdir)/postgresql-${SLOT}/bin:${PATH}" \
+                       emake -C $bd -j1 || die "emake in $bd failed"
+       done
+}
+
+src_install() {
+       if use perl ; then
+               mv -f "${S}/src/pl/plperl/GNUmakefile" "${S}/src/pl/plperl/GNUmakefile_orig"
+               sed -e "s:\$(DESTDIR)\$(plperl_installdir):\$(plperl_installdir):" \
+                       "${S}/src/pl/plperl/GNUmakefile_orig" > "${S}/src/pl/plperl/GNUmakefile"
+       fi
+
+       local bd
+       for bd in . contrib $(use xml && echo contrib/xml2) ; do
+               PATH="${EROOT%/}/usr/$(get_libdir)/postgresql-${SLOT}/bin:${PATH}" \
+                       emake install -C $bd -j1 DESTDIR="${D}" || die "emake install in $bd failed"
+       done
+
+       dodir /usr/share/postgresql-${SLOT}/man/man1/
+       cp "${S}"/doc/src/sgml/man1/{initdb,pg_controldata,pg_ctl,pg_resetxlog,post{gres,master}}.1 \
+               "${ED}"/usr/share/postgresql-${SLOT}/man/man1/ || die
+
+       dodoc README HISTORY doc/{README.*,TODO,bug.template}
+
+       dodir /etc/eselect/postgresql/slots/${SLOT}
+       echo "postgres_ebuilds=\"\${postgres_ebuilds} ${PF}\"" \
+               > "${ED}/etc/eselect/postgresql/slots/${SLOT}/server"
+
+       newconfd "${WORKDIR}/postgresql.confd" postgresql-${SLOT} \
+               || die "Inserting conf.d file failed"
+
+       newinitd "${WORKDIR}/postgresql.init" postgresql-${SLOT} \
+               || die "Inserting init.d file failed"
+
+       use pam && pamd_mimic system-auth postgresql auth account session
+
+       if use prefix ; then
+               keepdir ${RUNDIR}/run/postgresql
+               fperms 0770 ${RUNDIR}/run/postgresql
+       fi
+}
+
+pkg_postinst() {
+       postgresql-config update
+
+       elog "Gentoo specific documentation:"
+       elog "http://www.gentoo.org/doc/en/postgres-howto.xml"
+       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%/}${RUNDIR}/run/postgresql/"
+       elog
+       elog "If you have users and/or services that you would like to utilize the"
+       elog "socket, you must add them to the 'postgres' system group:"
+       elog "    usermod -a -G postgres <user>"
+       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}"
+}
+
+pkg_postrm() {
+       postgresql-config update
+}
+
+pkg_config() {
+       [[ -f ${EROOT%/}/etc/conf.d/postgresql-${SLOT} ]] && source "${EROOT%/}/etc/conf.d/postgresql-${SLOT}"
+       [[ -z ${PGDATA} ]] && PGDATA="${EROOT%/}/etc/postgresql-${SLOT}/"
+       [[ -z ${DATA_DIR} ]] && DATA_DIR="${EROOT%/}/var/lib/postgresql/${SLOT}/data"
+
+       # environment.bz2 may not contain the same locale as the current system
+       # locale. Unset and source from the current system locale.
+       if [[ -f ${EROOT%/}/etc/env.d/02locale ]] ; then
+               unset LANG
+               unset LC_CTYPE
+               unset LC_NUMERIC
+               unset LC_TIME
+               unset LC_COLLATE
+               unset LC_MONETARY
+               unset LC_MESSAGES
+               unset LC_ALL
+               source "${EROOT%/}/etc/env.d/02locale"
+               [[ -n ${LANG} ]] && export LANG
+               [[ -n ${LC_CTYPE} ]] && export LC_CTYPE
+               [[ -n ${LC_NUMERIC} ]] && export LC_NUMERIC
+               [[ -n ${LC_TIME} ]] && export LC_TIME
+               [[ -n ${LC_COLLATE} ]] && export LC_COLLATE
+               [[ -n ${LC_MONETARY} ]] && export LC_MONETARY
+               [[ -n ${LC_MESSAGES} ]] && export LC_MESSAGES
+               [[ -n ${LC_ALL} ]] && export LC_ALL
+       fi
+
+       einfo "You can modify the paths and options passed to initdb by editing:"
+       einfo "    ${EROOT%/}/etc/conf.d/postgresql-${SLOT}"
+       einfo
+       einfo "Information on options that can be passed to initdb are found at:"
+       einfo "    http://www.postgresql.org/docs/${SLOT}/static/creating-cluster.html"
+       einfo "    http://www.postgresql.org/docs/${SLOT}/static/app-initdb.html"
+       einfo
+       einfo "PG_INITDB_OPTS is currently set to:"
+       if [[ -z "${PG_INITDB_OPTS}" ]] ; then
+               einfo "    (none)"
+       else
+               einfo "    ${PG_INITDB_OPTS}"
+       fi
+       einfo
+       einfo "Configuration files will be installed to:"
+       einfo "    ${PGDATA}"
+       einfo
+       einfo "The database cluster will be created in:"
+       einfo "    ${DATA_DIR}"
+       einfo
+       while [[ $correct != "true" ]] ; do
+               einfo "Are you ready to continue? (y/n)"
+               read answer
+               if [[ $answer =~ ^[Yy]([Ee][Ss])?$ ]] ; then
+                       correct="true"
+               elif [[ $answer =~ ^[Nn]([Oo])?$ ]] ; then
+                       die "Aborting initialization."
+               else
+                       echo "Answer not recognized"
+               fi
+       done
+
+       if [[ -n "$(ls -A ${DATA_DIR} 2> /dev/null)" ]] ; then
+               eerror "The given directory, '${DATA_DIR}', is not empty."
+               eerror "Modify DATA_DIR to point to an empty directory."
+               die "${DATA_DIR} is not empty."
+       fi
+
+       [[ -z ${PG_MAX_CONNECTIONS} ]] && PG_MAX_CONNECTIONS=128
+       einfo "Checking system parameters..."
+
+       if ! use kernel_linux ; then
+               einfo "Skipped."
+               einfo "  Tests not supported on this OS (yet)"
+       else
+               if [[ -z ${SKIP_SYSTEM_TESTS} ]] ; then
+                       einfo "Checking whether your system supports at least ${PG_MAX_CONNECTIONS} connections..."
+
+                       local SEMMSL=$(sysctl -n kernel.sem | cut -f1)
+                       local SEMMNS=$(sysctl -n kernel.sem | cut -f2)
+                       local SEMMNI=$(sysctl -n kernel.sem | cut -f4)
+                       local SHMMAX=$(sysctl -n kernel.shmmax)
+
+                       local SEMMSL_MIN=17
+                       local SEMMNS_MIN=$(( ( ${PG_MAX_CONNECTIONS}/16 ) * 17 ))
+                       local SEMMNI_MIN=$(( ( ${PG_MAX_CONNECTIONS}+15 ) / 16 ))
+                       local SHMMAX_MIN=$(( 500000 + ( 30600 * ${PG_MAX_CONNECTIONS} ) ))
+
+                       for p in SEMMSL SEMMNS SEMMNI SHMMAX ; do
+                               if [[ $(eval echo \$$p) -lt $(eval echo \$${p}_MIN) ]] ; then
+                                       eerror "The value for ${p} $(eval echo \$$p) is below the recommended value $(eval echo \$${p}_MIN)"
+                                       eerror "You have now several options:"
+                                       eerror "    - Change the mentioned system parameter"
+                                       eerror "    - Lower the number of max connections by setting PG_MAX_CONNECTIONS to a"
+                                       eerror "      value lower than ${PG_MAX_CONNECTIONS}"
+                                       eerror "    - Set SKIP_SYSTEM_TESTS in case you want to ignore this test completely"
+                                       eerror "More information can be found here:"
+                                       eerror "    http://www.postgresql.org/docs/${SLOT}/static/kernel-resources.html"
+                                       die "System test failed."
+                               fi
+                       done
+                       einfo "Passed."
+               else
+                       ewarn "SKIP_SYSTEM_TESTS set, so skipping."
+               fi
+       fi
+
+       if [[ ${EUID} == 0 ]] ; then
+               einfo "Creating the data directory ..."
+               mkdir -p "${DATA_DIR}"
+               chown -Rf postgres:postgres "${DATA_DIR}"
+               chmod 0700 "${DATA_DIR}"
+       fi
+
+       einfo "Initializing the database ..."
+
+       if [[ ${EUID} == 0 ]] ; then
+               su postgres \
+                       -c "${EROOT%/}/usr/$(get_libdir)/postgresql-${SLOT}/bin/initdb -D '${DATA_DIR}' -L '${EROOT%/}/usr/share/postgresql-${SLOT}/' ${PG_INITDB_OPTS}"
+       else
+               "${EROOT%/}"/usr/$(get_libdir)/postgresql-${SLOT}/bin/initdb \
+                       -U postgres -D "${DATA_DIR}" \
+                       -L "${EROOT%/}/usr/share/postgresql-${SLOT}/" ${PG_INITDB_OPTS}
+       fi
+
+       mv "${DATA_DIR%/}"/*.conf "${PGDATA}"
+
+       einfo "The autovacuum function, which was in contrib, has been moved to the main"
+       einfo "PostgreSQL functions starting with 8.1, and starting with 8.4 is now enabled"
+       einfo "by default. You can disable it in the cluster's:"
+       einfo "    ${PGDATA%/}/postgresql.conf"
+       einfo
+       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}"
+               einfo
+               einfo "To start the server:"
+               einfo "    pg_ctl start -D ${DATA_DIR} -o '-D ${PGDATA} --data-directory=${DATA_DIR}'"
+               einfo
+               einfo "To stop:"
+               einfo "    pg_ctl stop -D ${DATA_DIR}"
+               einfo
+               einfo "Or move the configuration files back:"
+               einfo "    mv ${PGDATA}*.conf ${DATA_DIR}"
+       else
+               einfo "You should use the '${EROOT%/}/etc/init.d/postgresql-${SLOT}' script to run PostgreSQL"
+               einfo "instead of 'pg_ctl'."
+       fi
+}
+
+src_test() {
+       einfo ">>> Test phase [check]: ${CATEGORY}/${PF}"
+
+       if [[ ${UID} != 0 ]] ; then
+               emake check || die "Make check failed. See above for details."
+
+               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. Skipping."
+               ewarn "HINT: FEATURES=\"userpriv\""
+       fi
+}
diff --git a/dev-db/postgresql-server/postgresql-server-9.1.2-r2.ebuild b/dev-db/postgresql-server/postgresql-server-9.1.2-r2.ebuild
new file mode 100644 (file)
index 0000000..420ece7
--- /dev/null
@@ -0,0 +1,337 @@
+# Copyright 1999-2011 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/dev-db/postgresql-server/postgresql-server-9.1.2-r2.ebuild,v 1.1 2011/12/25 15:57:21 titanofold Exp $
+
+EAPI="3"
+PYTHON_DEPEND="python? 2"
+
+WANT_AUTOMAKE="none"
+inherit autotools eutils flag-o-matic multilib pam prefix python versionator
+
+KEYWORDS="~alpha ~amd64 ~arm ~hppa ~ia64 ~mips ~ppc ~ppc64 ~s390 ~sh ~sparc ~x86 ~x86-fbsd ~ppc-macos ~x86-solaris"
+
+SLOT="$(get_version_component_range 1-2)"
+S="${WORKDIR}/postgresql-${PV}"
+
+DESCRIPTION="PostgreSQL server"
+HOMEPAGE="http://www.postgresql.org/"
+SRC_URI="mirror://postgresql/source/v${PV}/postgresql-${PV}.tar.bz2
+                http://dev.gentoo.org/~titanofold/postgresql-patches-9.1-r1.tbz2
+                http://dev.gentoo.org/~titanofold/postgresql-initscript-2.1.tbz2"
+LICENSE="POSTGRESQL"
+
+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="doc kernel_linux nls pam perl -pg_legacytimestamp python selinux tcl uuid xml"
+
+for lingua in ${LINGUAS}; do
+       IUSE+=" linguas_${lingua}"
+done
+
+wanted_languages() {
+       local enable_langs
+
+       for lingua in ${LINGUAS} ; do
+               use linguas_${lingua} && enable_langs+="${lingua} "
+       done
+
+       echo -n ${enable_langs}
+}
+
+RDEPEND="~dev-db/postgresql-base-${PV}:${SLOT}[pam?,pg_legacytimestamp=,nls=]
+       perl? ( >=dev-lang/perl-5.8 )
+       selinux? ( sec-policy/selinux-postgresql )
+       tcl? ( >=dev-lang/tcl-8 )
+       uuid? ( dev-libs/ossp-uuid )
+       xml? ( dev-libs/libxml2 dev-libs/libxslt )"
+DEPEND="${RDEPEND}
+       sys-devel/flex
+       xml? ( dev-util/pkgconfig )"
+PDEPEND="doc? ( ~dev-db/postgresql-docs-${PV} )"
+
+# Support /var/run or /run for the socket directory
+[[ ! -d /run ]] && RUNDIR=/var
+
+pkg_setup() {
+       enewgroup postgres 70
+       enewuser postgres 70 /bin/bash /var/lib/postgresql postgres
+
+       use python && python_set_active_version 2
+}
+
+src_prepare() {
+       epatch "${WORKDIR}/autoconf.patch" \
+               "${WORKDIR}/bool.patch" \
+               "${WORKDIR}/pg_ctl-exit-status.patch" \
+               "${WORKDIR}/server.patch"
+
+       eprefixify src/include/pg_config_manual.h
+
+       if use test ; then
+               epatch "${WORKDIR}/regress.patch"
+               sed -e "s|@SOCKETDIR@|${T}|g" -i src/test/regress/pg_regress{,_main}.c
+               sed -e "s|/no/such/location|${S}/src/test/regress/tmp_check/no/such/location|g" \
+                       -i src/test/regress/{input,output}/tablespace.source
+       else
+               echo "all install:" > "${S}/src/test/regress/GNUmakefile"
+       fi
+
+       sed -e "s|@RUNDIR@|${RUNDIR}|g" \
+               -i src/include/pg_config_manual.h "${WORKDIR}/postgresql.init" || \
+               die "RUNDIR sed failed"
+       sed -e "s|@SLOT@|${SLOT}|g" \
+               -i "${WORKDIR}/postgresql.init" "${WORKDIR}/postgresql.confd" || \
+               die "SLOT sed failed"
+
+       eautoconf
+}
+
+src_configure() {
+       case ${CHOST} in
+               *-darwin*|*-solaris*)
+                       use nls && append-libs intl
+                       ;;
+       esac
+
+       local PO="${EPREFIX%/}"
+
+       # eval is needed to get along with pg_config quotation of space-rich entities.
+       eval econf "$(${PO}/usr/$(get_libdir)/postgresql-${SLOT}/bin/pg_config --configure)" \
+               $(use_with perl) \
+               $(use_with python) \
+               $(use_with tcl) \
+               $(use_with xml libxml) \
+               $(use_with xml libxslt) \
+               $(use_with uuid ossp-uuid) \
+               --with-system-tzdata="${PO}/usr/share/zoneinfo" \
+               --with-includes="${PO}/usr/include/postgresql-${SLOT}/" \
+               --with-libraries="${PO}/usr/$(get_libdir)/postgresql-${SLOT}/$(get_libdir)" \
+               "$(use_enable nls nls "$(wanted_languages)")"
+}
+
+src_compile() {
+       local bd
+       for bd in . contrib $(use xml && echo contrib/xml2); do
+               PATH="${EROOT%/}/usr/$(get_libdir)/postgresql-${SLOT}/bin:${PATH}" \
+                       emake -C $bd || die "emake in $bd failed"
+       done
+}
+
+src_install() {
+       if use perl ; then
+               mv -f "${S}/src/pl/plperl/GNUmakefile" "${S}/src/pl/plperl/GNUmakefile_orig"
+               sed -e "s:\$(DESTDIR)\$(plperl_installdir):\$(plperl_installdir):" \
+                       "${S}/src/pl/plperl/GNUmakefile_orig" > "${S}/src/pl/plperl/GNUmakefile"
+       fi
+
+       local bd
+       for bd in . contrib $(use xml && echo contrib/xml2) ; do
+               PATH="${EROOT%/}/usr/$(get_libdir)/postgresql-${SLOT}/bin:${PATH}" \
+                       emake install -C $bd DESTDIR="${D}" || die "emake install in $bd failed"
+       done
+
+       dodoc README HISTORY doc/{TODO,bug.template}
+
+       dodir /etc/eselect/postgresql/slots/${SLOT}
+       echo "postgres_ebuilds=\"\${postgres_ebuilds} ${PF}\"" > \
+               "${ED}/etc/eselect/postgresql/slots/${SLOT}/server"
+
+       newconfd "${WORKDIR}/postgresql.confd" postgresql-${SLOT} || \
+               die "Inserting conf failed"
+       newinitd "${WORKDIR}/postgresql.init" postgresql-${SLOT} || \
+               die "Inserting conf failed"
+
+       use pam && pamd_mimic system-auth postgresql auth account session
+
+       if use prefix ; then
+               keepdir ${RUNDIR}/run/postgresql
+               fperms 0770 ${RUNDIR}/run/postgresql
+       fi
+}
+
+pkg_postinst() {
+       postgresql-config update
+
+       elog "Gentoo specific documentation:"
+       elog "http://www.gentoo.org/doc/en/postgres-howto.xml"
+       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%/}${RUNDIR}/run/postgresql/"
+       elog
+       elog "If you have users and/or services that you would like to utilize the"
+       elog "socket, you must add them to the 'postgres' system group:"
+       elog "    usermod -a -G postgres <user>"
+       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}"
+}
+
+pkg_postrm() {
+       postgresql-config update
+}
+
+pkg_config() {
+       [[ -f "${EROOT%/}/etc/conf.d/postgresql-${SLOT}" ]] && source "${EROOT%/}/etc/conf.d/postgresql-${SLOT}"
+       [[ -z "${PGDATA}" ]] && PGDATA="${EROOT%/}/etc/postgresql-${SLOT}/"
+       [[ -z "${DATA_DIR}" ]] && DATA_DIR="${EROOT%/}/var/lib/postgresql/${SLOT}/data"
+
+       # environment.bz2 may not contain the same locale as the current system
+       # locale. Unset and source from the current system locale.
+       if [ -f "${EROOT%/}/etc/env.d/02locale" ]; then
+               unset LANG
+               unset LC_CTYPE
+               unset LC_NUMERIC
+               unset LC_TIME
+               unset LC_COLLATE
+               unset LC_MONETARY
+               unset LC_MESSAGES
+               unset LC_ALL
+               source "${EROOT%/}/etc/env.d/02locale"
+               [ -n "${LANG}" ] && export LANG
+               [ -n "${LC_CTYPE}" ] && export LC_CTYPE
+               [ -n "${LC_NUMERIC}" ] && export LC_NUMERIC
+               [ -n "${LC_TIME}" ] && export LC_TIME
+               [ -n "${LC_COLLATE}" ] && export LC_COLLATE
+               [ -n "${LC_MONETARY}" ] && export LC_MONETARY
+               [ -n "${LC_MESSAGES}" ] && export LC_MESSAGES
+               [ -n "${LC_ALL}" ] && export LC_ALL
+       fi
+
+       einfo "You can modify the paths and options passed to initdb by editing:"
+       einfo "    ${EROOT%/}/etc/conf.d/postgresql-${SLOT}"
+       einfo
+       einfo "Information on options that can be passed to initdb are found at:"
+       einfo "    http://www.postgresql.org/docs/${SLOT}/static/creating-cluster.html"
+       einfo "    http://www.postgresql.org/docs/${SLOT}/static/app-initdb.html"
+       einfo
+       einfo "PG_INITDB_OPTS is currently set to:"
+       if [[ -z "${PG_INITDB_OPTS}" ]] ; then
+               einfo "    (none)"
+       else
+               einfo "    ${PG_INITDB_OPTS}"
+       fi
+       einfo
+       einfo "Configuration files will be installed to:"
+       einfo "    ${PGDATA}"
+       einfo
+       einfo "The database cluster will be created in:"
+       einfo "    ${DATA_DIR}"
+       einfo
+       while [ "$correct" != "true" ] ; do
+               einfo "Are you ready to continue? (y/n)"
+               read answer
+               if [[ $answer =~ ^[Yy]([Ee][Ss])?$ ]] ; then
+                       correct="true"
+               elif [[ $answer =~ ^[Nn]([Oo])?$ ]] ; then
+                       die "Aborting initialization."
+               else
+                       echo "Answer not recognized"
+               fi
+       done
+
+       if [ -n "$(ls -A ${DATA_DIR} 2> /dev/null)" ] ; then
+               eerror "The given directory, '${DATA_DIR}', is not empty."
+               eerror "Modify DATA_DIR to point to an empty directory."
+               die "${DATA_DIR} is not empty."
+       fi
+
+       [ -z "${PG_MAX_CONNECTIONS}" ] && PG_MAX_CONNECTIONS="128"
+       einfo "Checking system parameters..."
+
+       if ! use kernel_linux ; then
+               einfo "Skipped."
+               einfo "  Tests not supported on this OS (yet)"
+       else
+               if [ -z ${SKIP_SYSTEM_TESTS} ] ; then
+                       einfo "Checking whether your system supports at least ${PG_MAX_CONNECTIONS} connections..."
+
+                       local SEMMSL=$(sysctl -n kernel.sem | cut -f1)
+                       local SEMMNS=$(sysctl -n kernel.sem | cut -f2)
+                       local SEMMNI=$(sysctl -n kernel.sem | cut -f4)
+                       local SHMMAX=$(sysctl -n kernel.shmmax)
+
+                       local SEMMSL_MIN=17
+                       local SEMMNS_MIN=$(( ( ${PG_MAX_CONNECTIONS}/16 ) * 17 ))
+                       local SEMMNI_MIN=$(( ( ${PG_MAX_CONNECTIONS}+15 ) / 16 ))
+                       local SHMMAX_MIN=$(( 500000 + ( 30600 * ${PG_MAX_CONNECTIONS} ) ))
+
+                       for p in SEMMSL SEMMNS SEMMNI SHMMAX ; do
+                               if [ $(eval echo \$$p) -lt $(eval echo \$${p}_MIN) ] ; then
+                                       eerror "The value for ${p} $(eval echo \$$p) is below the recommended value $(eval echo \$${p}_MIN)"
+                                       eerror "You have now several options:"
+                                       eerror "    - Change the mentioned system parameter"
+                                       eerror "    - Lower the number of max.connections by setting PG_MAX_CONNECTIONS to a"
+                                       eerror "      value lower than ${PG_MAX_CONNECTIONS}"
+                                       eerror "    - Set SKIP_SYSTEM_TESTS in case you want to ignore this test completely"
+                                       eerror "More information can be found here:"
+                                       eerror "    http://www.postgresql.org/docs/${SLOT}/static/kernel-resources.html"
+                                       die "System test failed."
+                               fi
+                       done
+                       einfo "Passed."
+               else
+                       ewarn "SKIP_SYSTEM_TESTS set, so skipping."
+               fi
+       fi
+
+       einfo "Creating the data directory ..."
+       if [[ ${EUID} == 0 ]] ; then
+               mkdir -p "${DATA_DIR}"
+               chown -Rf postgres:postgres "${DATA_DIR}"
+               chmod 0700 "${DATA_DIR}"
+       fi
+
+       einfo "Initializing the database ..."
+
+       if [[ ${EUID} == 0 ]] ; then
+               su postgres -c "${EROOT%/}/usr/$(get_libdir)/postgresql-${SLOT}/bin/initdb -D \"${DATA_DIR}\" ${PG_INITDB_OPTS}"
+       else
+               "${EROOT%/}"/usr/$(get_libdir)/postgresql-${SLOT}/bin/initdb -U postgres -D "${DATA_DIR}" ${PG_INITDB_OPTS}
+       fi
+
+       mv "${DATA_DIR%/}"/*.conf "${PGDATA}"
+
+       einfo "The autovacuum function, which was in contrib, has been moved to the main"
+       einfo "PostgreSQL functions starting with 8.1, and starting with 8.4 is now enabled"
+       einfo "by default. You can disable it in the cluster's:"
+       einfo "    ${PGDATA%/}/postgresql.conf"
+       einfo
+       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}"
+               einfo "To start the server:"
+               einfo "    pg_ctl start -D ${DATA_DIR} -o '-D ${PGDATA} --data-directory=${DATA_DIR}'"
+               einfo "To stop:"
+               einfo "    pg_ctl stop -D ${DATA_DIR}"
+               einfo
+               einfo "Or move the configuration files back:"
+               einfo "mv ${PGDATA}*.conf ${DATA_DIR}"
+       else
+               einfo "You should use the '${EROOT%/}/etc/init.d/postgresql-${SLOT}' script to run PostgreSQL"
+               einfo "instead of 'pg_ctl'."
+       fi
+}
+
+src_test() {
+       einfo ">>> Test phase [check]: ${CATEGORY}/${PF}"
+
+       if [ ${UID} -ne 0 ] ; then
+               emake -j1 check  || die "Make check failed. See above for details."
+
+               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. Skipping."
+               ewarn "HINT: FEATURES=\"userpriv\""
+       fi
+}