summaryrefslogtreecommitdiff
blob: 5e948c1a6828c5cd67d2a39262473971e837d4b1 (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
# Copyright 1999-2023 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2

EAPI=7

POSTGRES_COMPAT=( {11..15} )
POSTGRES_USEDEP="server"
inherit autotools postgres-multi toolchain-funcs

MY_P="${PN}-$(ver_rs 3 '')"

if [[ ${PV} = *9999* ]] ; then
	inherit git-r3
	EGIT_REPO_URI="https://git.osgeo.org/gitea/postgis/postgis.git"
else
	PGIS="$(ver_cut 1-2)"
	SRC_URI="https://download.osgeo.org/postgis/source/${MY_P}.tar.gz"
	KEYWORDS="amd64 x86 ~amd64-linux ~x86-linux"
fi

DESCRIPTION="Geographic Objects for PostgreSQL"
HOMEPAGE="https://postgis.net"

S="${WORKDIR}/${MY_P}"

LICENSE="GPL-2"
SLOT="0"
IUSE="address-standardizer doc gtk static-libs topology"

REQUIRED_USE="${POSTGRES_REQ_USE}"

# Needs a running psql instance, doesn't work out of the box
RESTRICT="test"

RDEPEND="${POSTGRES_DEP}
	dev-libs/json-c:=
	dev-libs/libxml2:2
	dev-libs/protobuf-c:=
	>=sci-libs/geos-3.9.0
	>=sci-libs/proj-4.9.0:=
	>=sci-libs/gdal-1.10.0:=
	address-standardizer? ( dev-libs/libpcre2 )
	gtk? ( x11-libs/gtk+:2 )
"
DEPEND="${RDEPEND}
	virtual/pkgconfig
	doc? (
		app-text/docbook-xsl-stylesheets
		app-text/docbook-xml-dtd:4.5
		dev-libs/libxslt
		virtual/imagemagick-tools[png]
	)
"

PATCHES=(
	"${FILESDIR}/${PN}-3.0.3-try-other-cpp-names.patch"
	# source: https://github.com/google/flatbuffers/pull/7897
	"${FILESDIR}/${P}-flatbuffers-abseil-2023.patch" # bug 905378
)

src_prepare() {
	default

	if [[ ${PV} = *9999* ]] ; then
		source "${S}"/Version.config
		PGIS="${POSTGIS_MAJOR_VERSION}.${POSTGIS_MINOR_VERSION}"
	fi

	# These modules are built using the same *FLAGS that were used to build
	# dev-db/postgresql. The right thing to do is to ignore the current
	# *FLAGS settings.
	QA_FLAGS_IGNORED="usr/lib(64)?/(rt)?postgis-${PGIS}\.so"

	# bug #775968
	touch build-aux/ar-lib || die

	local AT_M4DIR="macros"
	eautoreconf

	postgres-multi_src_prepare
}

src_configure() {
	export CPP=$(tc-getCPP)

	local myeconfargs=(
		$(use_with address-standardizer)
		$(use_with gtk gui)
		$(use_with topology)
	)
	postgres-multi_foreach econf "${myeconfargs[@]}"
}

src_compile() {
	postgres-multi_foreach emake
	postgres-multi_foreach emake -C topology

	if use doc ; then
		postgres-multi_foreach emake comments
		postgres-multi_foreach emake cheatsheets
		postgres-multi_forbest emake -C doc html
	fi
}

src_install() {
	postgres-multi_foreach emake DESTDIR="${D}" install
	postgres-multi_foreach emake -C topology DESTDIR="${D}" install
	postgres-multi_forbest dobin ./utils/postgis_restore.pl

	dodoc CREDITS TODO loader/README.* doc/*txt

	docinto topology
	dodoc topology/{TODO,README}

	if use doc ; then
		postgres-multi_foreach emake DESTDIR="${D}" comments-install

		docinto html
		postgres-multi_forbest dodoc doc/html/{postgis.html,style.css}

		docinto html/images
		postgres-multi_forbest dodoc doc/html/images/*
	fi

	use static-libs || find "${ED}" -name '*.a' -delete
}

pkg_postinst() {
	ebegin "Refreshing PostgreSQL symlinks"
	postgresql-config update
	eend $?

	local base_uri="https://postgis.net/docs/manual-"
	if [[ ${PV} = *9999* ]] ; then
		base_uri+="dev"
	else
		base_uri+="${PGIS}"
	fi

	elog "To finish installing PostGIS, follow the directions detailed at:"
	elog "${base_uri}/postgis_installation.html#create_new_db_extensions"
}