# Copyright 1999-2009 Gentoo Foundation # Distributed under the terms of the GNU General Public License v2 # $Header: /var/cvsroot/gentoo-x86/dev-db/postgis/postgis-1.2.1.ebuild,v 1.3 2009/03/07 06:27:50 zmedico Exp $ inherit autotools eutils versionator KEYWORDS="~x86 ~ppc ~amd64" DESCRIPTION="Geographic Objects for PostgreSQL" HOMEPAGE="http://postgis.refractions.net" SRC_URI="http://www.postgis.org/download/${P}.tar.gz" LICENSE="GPL-2" SLOT="0" IUSE="geos proj doc" RDEPEND=">=virtual/postgresql-server-7.4 geos? ( sci-libs/geos ) proj? ( sci-libs/proj )" DEPEND="${RDEPEND} doc? ( app-text/docbook-xsl-stylesheets )" RESTRICT="test" pkg_setup(){ local tmp tmp="$(portageq match / ${CATEGORY}/${PN} | cut -d'.' -f2)" if [ "${tmp}" != "$(get_version_component_range 2)" ]; then elog "You must soft upgrade your existing postgis enabled databases" elog "using 'emerge --config postgis'." require_soft_upgrade="1" ebeep 2 fi } src_unpack(){ unpack ${A} cd "${S}" epatch "${FILESDIR}/${PN}_xsl.patch" eautoconf } src_compile(){ local myconf if use geos; then myconf="--with-geos" fi if use doc;then myconf="${myconf} --with-xsl=$(ls "${ROOT}"usr/share/sgml/docbook/* | \ grep xsl\- | cut -d':' -f1)" fi econf --enable-autoconf \ --datadir=/usr/share/postgresql/contrib/ \ --libdir=/usr/$(get_libdir)/postgresql/ \ --with-docdir=/usr/share/doc/${PF}/html/ \ ${myconf} \ $(use_with proj) ||\ die "Error: econf failed" emake || die "Error: emake failed" cd topology/ emake || die "Unable to build topology sql file" if use doc ; then cd "${S}" emake docs || die "Unable to build documentation" fi } src_install(){ dodir /usr/$(get_libdir)/postgresql /usr/share/postgresql/contrib/ emake DESTDIR="${D}" install || die "emake install failed" cd "${S}/topology/" emake DESTDIR="${D}" install || die "emake install topology failed" cd "${S}" dodoc Changelog CREDITS TODO loader/README.* doc/*txt docinto topology dodoc topology/{TODO,README} dobin ./utils/postgis_restore.pl cd "${S}" if use doc; then emake DESTDIR="${D}" docs-install || die "emake install docs failed" fi if [ ! -z "${require_soft_upgrade}" ]; then grep "'C'" -B 4 "${D}"usr/share/postgresql/contrib/lwpostgis.sql |\ grep -v "'sql'" > \ "${D}"usr/share/postgresql/contrib/load_before_upgrade.sql fi } pkg_postinst() { elog "To create new spatial database use 'emerge --config ${PN}.'" } pkg_config(){ PGUSER="${PGUSER:-postgres}" PGDATABASE="${PGDATABASE:-template_postgis}" is_template=false if [ "${PGDATABASE:0:8}" == "template" ];then is_template=true mytype="template database" else mytype="database" fi einfo "Create or upgrade a spatial template and database." einfo "Using the user ${PGUSER} and the ${PGDATABASE} ${mytype}." einfo "Please do 'export PGUSER=...' to use another user." einfo "Please do 'export PGDATABASE=...' to set another template/database" einfo "name (templates name have to be prefixed with 'template')." logfile=$(mktemp "${ROOT}tmp/error.log.XXXXXX") safe_exit(){ eerror "Removing created ${mydb} ${mytype}" dropdb -q || (eerror "${1}" die "Removing old db failed, you must do it manually") eerror "Please see ${logfile} for more information." die "${1}" } # if there is not a table or a template existing with the same name, create. psql -ql 2> ${logfile} if [ "$?" == 2 ];then die "Unable to access databases server using the ${PGUSER} user" fi PGDBS="$(psql template1 -Atc \ 'select 1 from pg_tables where tablename=${PGDATABASE};')" if [ "$(psql -l | grep "${PGDATABASE}")" != 1 ]; then einfo einfo "Please hit ENTER if you want to create the ${PGDATABASE}" einfo "${mytype} as "${PGUSER}" user, or Control-C to abort now..." read einfo "Creating the ${mytype} ${PGDATABASE}." createdb -q -O ${PGUSER} ||\ die "Unable to create the ${mydb} ${mytype} as ${myuser}" createlang plpgsql if [ "$?" == 2 ]; then safe_exit "${myuser} not allowed to createlang plpgsql ${mydb}." fi einfo "Loading PostGIS files into ${PGDATABASE}." (psql -q -f \ "${ROOT}"usr/share/postgresql/contrib/lwpostgis.sql && psql -q -f \ "${ROOT}"usr/share/postgresql/contrib/spatial_ref_sys.sql) 2>\ "${logfile}" if [ "$(grep -c ERROR "${logfile}")" \> 0 ]; then safe_exit "Unable to load the sql files." fi if ${is_template}; then einfo "Configure ${PGDATABASE} as a ${mytype}" psql -q -c \ "UPDATE pg_database SET datistemplate=TRUE, datallowconn=FALSE WHERE datname = '${PGDATABASE}'; VACUUM FREEZE;" || die "Unable to create ${mydb}" fi else einfo einfo "Please hit ENTER if you want to upgrade the ${mydb}" einfo "${mytype} as ${myuser} user, or Control-C to abort now..." read if [ -e "${ROOT}"usr/share/postgresql/contrib/load_before_upgrade.sql ]; then einfo "Updating the dynamic library references" psql -q -f \ "${ROOT}"usr/share/postgresql/contrib/load_before_upgrade.sql\ 2> "${logfile}" if [ "$(grep -c ERROR "${logfile}")" \> 0 ]; then safe_exit "Unable to update references." fi fi if [ -e "${ROOT}"usr/share/postgresql/contrib/lwpostgis_upgrade.sql ]; then einfo "Running soft upgrade" psql -q -f \ "${ROOT}"usr/share/postgresql/contrib/lwpostgis_upgrade.sql 2>\ "${logfile}" if [ "$(grep -c ERROR "${logfile}")" \> 0 ]; then safe_exit "Unable to run soft upgrade." fi fi fi if ${is_template}; then einfo "You can now create a spatial database using :" einfo "createdb -T ${PGDATABASE} " fi }