summaryrefslogtreecommitdiff
blob: 68f31ccdc88e40dcdbc801f522fa10f897181b7a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
# Copyright 1999-2007 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Header: $

WANT_AUTOCONF="latest"
WANT_AUTOMAKE="none"
inherit eutils gnuconfig toolchain-funcs versionator autotools

KEYWORDS="~alpha ~amd64 ~arm ~hppa ~ia64 ~mips ~ppc ~ppc64 ~s390 ~sh ~sparc ~sparc-fbsd ~x86 ~x86-fbsd"

DESCRIPTION="PostgreSQL libraries"
HOMEPAGE="http://www.postgresql.org/"
SRC_URI="mirror://postgresql/source/v${PV}/postgresql-base-${PV}.tar.bz2"
LICENSE="POSTGRESQL"
SLOT="$(get_version_component_range 1-2)"
# find . -name \*.po | xargs -n 1 basename | cut -d. -f1|sort|uniq|sed 's/^/linguas_/'
IUSE_LINGUAS="
	linguas_cs linguas_de linguas_es linguas_fr linguas_hr linguas_hu
	linguas_pt_BR linguas_ru linguas_sv linguas_tr linguas_zh_CN
	linguas_zh_TW"
IUSE="doc kerberos nls pam pg-intdatetime readline ssl threads zlib eselect ${IUSE_LINGUAS}"
RESTRICT="test"

wanted_languages() {
	for u in ${IUSE_LINGUAS} ; do
		use $u && echo ${u#linguas_}
	done
}

RDEPEND="kerberos? ( virtual/krb5 )
		pam? ( virtual/pam )
		readline? ( >=sys-libs/readline-4.1 )
		ssl? ( >=dev-libs/openssl-0.9.6-r1 )
		zlib? ( >=sys-libs/zlib-1.1.3 )
		>=app-admin/eselect-postgresql-0.1
		!<dev-db/libpq-99.99.99
		"
DEPEND="${RDEPEND}
		>=sys-devel/bison-1.875
		nls? ( sys-devel/gettext )"
PDEPEND="doc? ( ~dev-db/postgresql-docs-${PV} )"

S="${WORKDIR}/postgresql-${PV}"

src_unpack() {
	unpack ${A}
	cd "${S}"
	epatch "${FILESDIR}/postgresql-${SLOT}-nls.patch"
	epatch "${FILESDIR}/postgresql-${SLOT}-libs.patch"

	# to avoid collision - it only should be installed by server
	rm "${S}/src/backend/nls.mk"

	eautoconf
	gnuconfig_update
}

src_compile() {
	# TODO: test if PPC really cannot work with other CFLAGS settings
	# use ppc && CFLAGS="-pipe -fsigned-char"
	./configure --prefix=/usr/$(get_libdir)/postgresql-${SLOT} \
		--datadir=/usr/share/postgresql-${SLOT} \
		--sysconfdir=/etc/postgresql-${SLOT} \
		--includedir=/usr/include/postgresql-${SLOT} \
		--with-locale-dir=/usr/share/postgresql-${SLOT}/locale \
		--mandir=/usr/share/postgresql-${SLOT}/man \
		--host=${CHOST} \
		--with-docdir=/usr/share/doc/${PF} \
		--without-perl \
		--without-python \
		--without-tcl \
		$(use_with kerberos krb5) \
		"$(use_enable nls nls "$(wanted_languages)")" \
		$(use_with pam) \
		$(use_enable pg-intdatetime integer-datetimes ) \
		$(use_with readline) \
		$(use_with ssl openssl) \
		$(use_enable threads thread-safety ) \
		$(use_with zlib) \
		|| die "configure failed"

	emake LD="$(tc-getLD) $(get_abi_LDFLAGS)" || die "emake failed"
}

src_install() {
	emake DESTDIR="${D}" install || die "emake install failed"
	dodir /usr/share/postgresql-${SLOT}/man/man1
	tar -zxf ${S}/doc/man.tar.gz -C "${D}"/usr/share/postgresql-${SLOT}/man man1/{ecpg,pg_config}.1

	dodoc README HISTORY doc/{README.*,TODO,bug.template}

	dodir /usr/lib/eselect-postgresql/slots/${SLOT}
	{
		echo "postgres_ebuilds=\"\${postgres_ebuilds} ${PF}\""
		echo "postgres_bindir=/usr/$(get_libdir)/postgresql-${SLOT}/bin"
		echo "postgres_symlinks=("
			IDIR="/usr/include/postgresql-${SLOT}"
			echo " " ${IDIR} /usr/include/postgresql
			echo " " {${IDIR},/usr/include}/libpq-fe.h
			echo " " {${IDIR},/usr/include}/libpq
			echo " " {${IDIR},/usr/include}/postgres_ext.h
		echo ")"
	} >"${D}/usr/lib/eselect-postgresql/slots/${SLOT}/libs"
	cat >"${T}/50postgresql-99-${SLOT}" <<-__EOF__
		LDPATH=/usr/$(get_libdir)/postgresql-${SLOT}/$(get_libdir)
		MANPATH=/usr/share/postgresql-${SLOT}/man
	__EOF__
	doenvd "${T}/50postgresql-99-${SLOT}"
}

pkg_setup() {
	local ff=""
	for f in "${ROOT}"/usr/include/{postgresql,libpq-fe.h,libpq,postgres_ext.h} ; do
		[[ -e "${f}" ]] || continue
		[[ -L "${f}" ]] && continue
		if [[ -d "${f}" ]] ; then
			if [[ -z "$(find "${f}" -not \( -type l -or -type d \))" ]] ; then
				rm -rf "${f}"
			else
				ff="$ff $f"
			fi
		else
			ff="$ff $f"
		fi
	done
	if [[ ! -z "$ff" ]] ; then
		eerror "You have leftovers from previous installations that can't be"
		eerror "dealt with automatically. The proper way to treat files is:"
		eerror ""
		eerror "rm -rf ${ff}"
		eerror ""
		die "Please, remove the files manually"
	fi
}

pkg_postinst() {
	use eselect && eselect postgresql set ${SLOT}
	eselect postgresql update
	elog "If you need a global psqlrc-file, you can place it in '${ROOT}/etc/postgresql-${SLOT}/'."
}

pkg_prerm() {
	[[ "$(eselect postgresql show)" = "${SLOT}" ]] && eselect postgresql reset
}

pkg_postrm() {
	eselect postgresql update
}