summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'dev-db/postgresql-server/postgresql-server-8.3.1.ebuild')
-rw-r--r--dev-db/postgresql-server/postgresql-server-8.3.1.ebuild215
1 files changed, 215 insertions, 0 deletions
diff --git a/dev-db/postgresql-server/postgresql-server-8.3.1.ebuild b/dev-db/postgresql-server/postgresql-server-8.3.1.ebuild
new file mode 100644
index 0000000..c28af9e
--- /dev/null
+++ b/dev-db/postgresql-server/postgresql-server-8.3.1.ebuild
@@ -0,0 +1,215 @@
+# Copyright 1999-2008 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: $
+
+EAPI="1"
+
+WANT_AUTOCONF="latest"
+WANT_AUTOMAKE="none"
+inherit eutils multilib toolchain-funcs versionator autotools
+
+KEYWORDS="~alpha ~amd64 ~arm ~hppa ~ia64 ~mips ~ppc ~ppc64 ~s390 ~sh ~sparc ~sparc-fbsd ~x86 ~x86-fbsd"
+
+DESCRIPTION="PostgreSQL server"
+HOMEPAGE="http://www.postgresql.org/"
+SRC_URI="mirror://postgresql/source/v${PV}/postgresql-${PV}.tar.bz2"
+LICENSE="POSTGRESQL"
+SLOT="$(get_version_component_range 1-2)"
+IUSE_LINGUAS="
+ linguas_af linguas_cs linguas_de linguas_es linguas_fa linguas_fr
+ linguas_hr linguas_hu linguas_it linguas_ko linguas_nb linguas_pl
+ linguas_pt_BR linguas_ro linguas_ru linguas_sk linguas_sl linguas_sv
+ linguas_tr linguas_zh_CN linguas_zh_TW"
+IUSE="doc perl python selinux tcl xml nls kernel_linux ${IUSE_LINGUAS}"
+
+wanted_languages() {
+ for u in ${IUSE_LINGUAS} ; do
+ use $u && echo ${u#linguas_}
+ done
+}
+
+RDEPEND="~dev-db/postgresql-base-${PV}:${SLOT}
+ perl? ( >=dev-lang/perl-5.6.1-r2 )
+ python? ( >=dev-lang/python-2.2 dev-python/egenix-mx-base )
+ selinux? ( sec-policy/selinux-postgresql )
+ tcl? ( >=dev-lang/tcl-8 )
+ xml? ( dev-libs/libxml2 dev-libs/libxslt )"
+DEPEND="${RDEPEND}
+ xml? ( dev-util/pkgconfig )"
+PDEPEND="doc? ( dev-db/postgresql-docs:${SLOT} )"
+
+[[ -r /etc/conf.d/postgresql-${SLOT} ]] && source /etc/conf.d/postgresql-${SLOT}
+[[ -z "${PGDATA}" ]] && PGDATA="/var/lib/postgresql/${SLOT}/data"
+[[ -z "${PG_MAX_CONNECTIONS}" ]] && PG_MAX_CONNECTIONS="512"
+
+S="${WORKDIR}/postgresql-${PV}"
+
+pkg_setup() {
+ if [[ -f "${PGDATA}/PG_VERSION" ]] ; then
+ if [[ $(cat "${PGDATA}/PG_VERSION") != $(get_version_component_range 1-2) ]] ; then
+ eerror "PostgreSQL ${PV} cannot upgrade your existing databases, you must"
+ eerror "use pg_dump to export your existing databases to a file, and then"
+ eerror "pg_restore to import them when you have upgraded completely."
+ eerror "You must remove your entire database directory to continue."
+ eerror "(database directory = ${PGDATA})."
+ die "Remove your database directory to continue"
+ fi
+ fi
+ enewgroup postgres 70
+ enewuser postgres 70 /bin/bash /var/lib postgres
+}
+
+src_unpack() {
+ unpack ${A}
+ cd "${S}"
+
+ epatch "${FILESDIR}/postgresql-${SLOT}-common.patch" \
+ "${FILESDIR}/postgresql-${SLOT}-server.patch"
+
+ if hasq test ${FEATURES}; then
+ 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
+
+ eautoconf
+}
+
+src_compile() {
+ # TODO: test if PPC really cannot work with other CFLAGS settings
+ # use ppc && CFLAGS="-pipe -fsigned-char"
+
+ # eval is needed to get along with pg_config quotation of space-rich entities.
+ eval econf "$(/usr/$(get_libdir)/postgresql-${SLOT}/bin/pg_config --configure)" \
+ --disable-thread-safety \
+ $(use_with perl) \
+ $(use_with python) \
+ $(use_with tcl) \
+ $(use_with xml libxml) \
+ --with-includes="/usr/include/postgresql-${SLOT}/" \
+ "$(built_with_use ~dev-db/postgresql-base-${PV} nls && use_enable nls nls "$(wanted_languages)")" \
+ || die "configure failed"
+
+ for bd in . contrib $(use xml && echo contrib/xml2) ; do
+ PATH="/usr/$(get_libdir)/postgresql-${SLOT}/bin:${PATH}" \
+ emake -C $bd -j1 LD="$(tc-getLD) $(get_abi_LDFLAGS)" \
+ PGXS=$(/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=/usr/share/doc/${PF} || 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
+
+ for bd in . contrib $(use xml && echo contrib/xml2) ; do
+ PATH="/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=$(/usr/$(get_libdir)/postgresql-${SLOT}/bin/pg_config --pgxs) \
+ NO_PGXS=0 USE_PGXS=1 docdir=/usr/share/doc/${PF} || die "emake install in $bd failed"
+ done
+ rm -rf "${D}/usr/share/postgresql-${SLOT}/man/man7/"
+ rm "${D}"/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 /usr/$(get_libdir)/eselect-postgresql/slots/${SLOT}
+ cat >"${D}/usr/$(get_libdir)/eselect-postgresql/slots/${SLOT}/service" <<-__EOF__
+ postgres_ebuilds="\${postgres_ebuilds} ${PF}"
+ postgres_service="postgresql-${SLOT}"
+ __EOF__
+
+ newinitd "${FILESDIR}/postgresql.init-${SLOT}" postgresql-${SLOT} || die "Inserting init.d-file failed"
+ newconfd "${FILESDIR}/postgresql.conf-${SLOT}" postgresql-${SLOT} || die "Inserting conf.d-file failed"
+}
+
+pkg_postinst() {
+ eselect postgresql update
+ [[ "$(eselect postgresql show)" = "(none)" ]] && eselect postgresql set ${SLOT}
+ [[ "$(eselect postgresql show-service)" = "(none)" ]] && eselect postgresql set-service ${SLOT}
+ elog "Execute the following command to setup the initial database environment:"
+ elog
+ elog "emerge --config =${CATEGORY}/${PF}"
+ elog
+ elog "The autovacuum function, which was in contrib, has been moved to the main"
+ elog "PostgreSQL functions starting with 8.1."
+ elog "You can enable it for all clusters in ${ROOT}/etc/postgresql-${SLOT}/postgresql.conf."
+}
+
+pkg_postrm() {
+ eselect postgresql update
+}
+
+pkg_config() {
+ einfo "Creating the data directory ..."
+ mkdir -p "${PGDATA}"
+ chown -Rf postgres:postgres "${PGDATA}"
+ chmod 0700 "${PGDATA}"
+
+ einfo "Initializing the database ..."
+ if [[ -f "${PGDATA}/PG_VERSION" ]] ; then
+ eerror "PostgreSQL ${PV} cannot upgrade your existing databases."
+ eerror "You must remove your entire database directory to continue."
+ eerror "(database directory = ${PGDATA})."
+ die "Remove your database directory to continue"
+ else
+ if use kernel_linux ; then
+ local SEM=`sysctl -n kernel.sem | cut -f-3`
+ local SEMMNI=`sysctl -n kernel.sem | cut -f4`
+ local SEMMNI_MIN=`expr \( ${PG_MAX_CONNECTIONS} + 15 \) / 16`
+ local SHMMAX=`sysctl -n kernel.shmmax`
+ local SHMMAX_MIN=`expr 500000 + 30600 \* ${PG_MAX_CONNECTIONS}`
+
+ if [ ${SEMMNI} -lt ${SEMMNI_MIN} ] ; then
+ eerror "The current value of SEMMNI is too low"
+ eerror "for PostgreSQL to run ${PG_MAX_CONNECTIONS} connections!"
+ eerror "Temporary setting this value to ${SEMMNI_MIN} while creating the initial database."
+ echo ${SEM} ${SEMMNI_MIN} > /proc/sys/kernel/sem
+ fi
+ su postgres -c "/usr/$(get_libdir)/postgresql-${SLOT}/bin/initdb --pgdata ${PGDATA} ${PG_INITDB_OPTS}"
+
+ if [ ! `sysctl -n kernel.sem | cut -f4` -eq ${SEMMNI} ] ; then
+ echo ${SEM} ${SEMMNI} > /proc/sys/kernel/sem
+ ewarn "Restoring the SEMMNI value to the previous value."
+ ewarn "Please edit the last value of kernel.sem in /etc/sysctl.conf"
+ ewarn "and set it to at least ${SEMMNI_MIN}:"
+ ewarn
+ ewarn " kernel.sem = ${SEM} ${SEMMNI_MIN}"
+ ewarn
+ fi
+
+ if [ ${SHMMAX} -lt ${SHMMAX_MIN} ] ; then
+ eerror "The current value of SHMMAX is too low for postgresql to run."
+ eerror "Please edit /etc/sysctl.conf and set this value to at least ${SHMMAX_MIN}:"
+ eerror
+ eerror " kernel.shmmax = ${SHMMAX_MIN}"
+ eerror
+ fi
+ else
+ su postgres -c "/usr/$(get_libdir)/postgresql-${SLOT}/bin/initdb --pgdata ${PGDATA} ${PG_INITDB_OPTS}"
+ fi
+
+ einfo
+ einfo "You can use the '${ROOT}/etc/init.d/postgresql-${SLOT}' script to run PostgreSQL instead of 'pg_ctl'."
+ einfo
+ fi
+}
+
+src_test() {
+ einfo ">>> Test phase [check]: ${CATEGORY}/${PF}"
+ PATH="/usr/$(get_libdir)/postgresql-${SLOT}/bin:${PATH}" \
+ emake -j1 check \
+ PGXS=$(/usr/$(get_libdir)/postgresql-${SLOT}/bin/pg_config --pgxs) \
+ NO_PGXS=0 USE_PGXS=1 SLOT=${SLOT} || die "Make check failed. See above for details."
+
+ einfo "Yes, there are other tests which could be run."
+ einfo "... and no, we don't plan to add/support them."
+ einfo "For now, the main regressions tests will suffice."
+ einfo "If you think other tests are necessary, please submit a"
+ einfo "bug including a patch for this ebuild to enable them."
+}