[dev-db/postgresql] bump 17 series, add 18
This commit is contained in:
@@ -1 +1,2 @@
|
|||||||
DIST postgresql-17.6.tar.bz2 21623975 BLAKE2B 9287eab85e17a65333d970bf7d4d254e25295615b4787072ff2a6c705cb66b7775dbe3a0c6b6fa3e2ab37c3278d204ccfdd3e587226d4c1d6363868569149216 SHA512 d377ed208b3fd1bf9611f148f4286e8c655374218cc3b12cd766917063001750f7dede140065874b7c8bdc2f2b3ecaf15c18cc6cd341929b2c3a574a7797a67e
|
DIST postgresql-17.7.tar.bz2 21646334 BLAKE2B 245f866c7375566ca772171b89eb2277a17175b599973e740ce599605292a5847e68b857f83b208a24d0ab6938740faf00ab26758d72c7e119131745f8ab63cb SHA512 99042ce4a5932ded4bc01d30ab59de9b8626de3e3805822cacbdd6b6c5337f1576b30a2a1041cd5a4d366d8cc404268bbf362f6e5b033f0779ca50d10bc7c272
|
||||||
|
DIST postgresql-18.1.tar.bz2 22423920 BLAKE2B 5e3cc11ab2940f2c1f971b3ac4c6c4850cfb446da4322ca389e1fcdb4d5f9369c5618ca8d57687fea15512d004cf596fd701811f3ad807742a66ded8264d41c8 SHA512 bac8a9bfb12c0c70b5870d92c6f322edbfd559e9ac939e841f16d8271b5c2bc4fb2628e053b407aed71b4032e9f4cba55f1e0a8dc6a3bd4933c2b701fe69ec08
|
||||||
|
|||||||
@@ -1,36 +0,0 @@
|
|||||||
From 282d0bdee6192f1a859ee34672ae73abf49794dc Mon Sep 17 00:00:00 2001
|
|
||||||
From: Peter Eisentraut <peter@eisentraut.org>
|
|
||||||
Date: Mon, 15 Sep 2025 08:13:21 +0200
|
|
||||||
Subject: [PATCH 1/1] jit: fix build with LLVM-21
|
|
||||||
MIME-Version: 1.0
|
|
||||||
Content-Type: text/plain; charset=utf8
|
|
||||||
Content-Transfer-Encoding: 8bit
|
|
||||||
|
|
||||||
LLVM-21 renamed llvm::GlobalValue::getGUID() to
|
|
||||||
getGUIDAssumingExternalLinkage(), so add a version guard.
|
|
||||||
|
|
||||||
Author: Holger Hoffstätte <holger@applied-asynchrony.com>
|
|
||||||
Discussion: https://www.postgresql.org/message-id/flat/d25e6e4a-d1b4-84d3-2f8a-6c45b975f53d%40applied-asynchrony.com
|
|
||||||
---
|
|
||||||
src/backend/jit/llvm/llvmjit_inline.cpp | 4 ++++
|
|
||||||
1 file changed, 4 insertions(+)
|
|
||||||
|
|
||||||
diff --git a/src/backend/jit/llvm/llvmjit_inline.cpp b/src/backend/jit/llvm/llvmjit_inline.cpp
|
|
||||||
index 2764c3bbe2f..51b32cd9f94 100644
|
|
||||||
--- a/src/backend/jit/llvm/llvmjit_inline.cpp
|
|
||||||
+++ b/src/backend/jit/llvm/llvmjit_inline.cpp
|
|
||||||
@@ -238,7 +238,11 @@ llvm_build_inline_plan(LLVMContextRef lc, llvm::Module *mod)
|
|
||||||
|
|
||||||
llvm_split_symbol_name(symbolName.data(), &cmodname, &cfuncname);
|
|
||||||
|
|
||||||
+#if LLVM_VERSION_MAJOR >= 21
|
|
||||||
+ funcGUID = llvm::GlobalValue::getGUIDAssumingExternalLinkage(cfuncname);
|
|
||||||
+#else
|
|
||||||
funcGUID = llvm::GlobalValue::getGUID(cfuncname);
|
|
||||||
+#endif
|
|
||||||
|
|
||||||
/* already processed */
|
|
||||||
if (inlineState.processed)
|
|
||||||
--
|
|
||||||
2.39.5
|
|
||||||
|
|
||||||
148
dev-db/postgresql/files/postgresql-18.0-no-server.patch
Normal file
148
dev-db/postgresql/files/postgresql-18.0-no-server.patch
Normal file
@@ -0,0 +1,148 @@
|
|||||||
|
--- a/contrib/Makefile
|
||||||
|
+++ b/contrib/Makefile
|
||||||
|
@@ -5,59 +5,9 @@
|
||||||
|
include $(top_builddir)/src/Makefile.global
|
||||||
|
|
||||||
|
SUBDIRS = \
|
||||||
|
- amcheck \
|
||||||
|
- auth_delay \
|
||||||
|
- auto_explain \
|
||||||
|
- basic_archive \
|
||||||
|
- basebackup_to_shell \
|
||||||
|
- bloom \
|
||||||
|
- btree_gin \
|
||||||
|
- btree_gist \
|
||||||
|
- citext \
|
||||||
|
- cube \
|
||||||
|
- dblink \
|
||||||
|
- dict_int \
|
||||||
|
- dict_xsyn \
|
||||||
|
- earthdistance \
|
||||||
|
- file_fdw \
|
||||||
|
- fuzzystrmatch \
|
||||||
|
- hstore \
|
||||||
|
- intagg \
|
||||||
|
- intarray \
|
||||||
|
- isn \
|
||||||
|
- lo \
|
||||||
|
- ltree \
|
||||||
|
oid2name \
|
||||||
|
- pageinspect \
|
||||||
|
- passwordcheck \
|
||||||
|
- pg_buffercache \
|
||||||
|
- pg_freespacemap \
|
||||||
|
- pg_logicalinspect \
|
||||||
|
- pg_overexplain \
|
||||||
|
- pg_prewarm \
|
||||||
|
- pg_stat_statements \
|
||||||
|
- pg_surgery \
|
||||||
|
- pg_trgm \
|
||||||
|
- pgrowlocks \
|
||||||
|
- pgstattuple \
|
||||||
|
- pg_visibility \
|
||||||
|
- pg_walinspect \
|
||||||
|
- postgres_fdw \
|
||||||
|
- seg \
|
||||||
|
- spi \
|
||||||
|
- tablefunc \
|
||||||
|
- tcn \
|
||||||
|
- test_decoding \
|
||||||
|
- tsm_system_rows \
|
||||||
|
- tsm_system_time \
|
||||||
|
- unaccent \
|
||||||
|
vacuumlo
|
||||||
|
|
||||||
|
-ifeq ($(with_ssl),openssl)
|
||||||
|
-SUBDIRS += pgcrypto sslinfo
|
||||||
|
-else
|
||||||
|
-ALWAYS_SUBDIRS += pgcrypto sslinfo
|
||||||
|
-endif
|
||||||
|
|
||||||
|
ifneq ($(with_uuid),no)
|
||||||
|
SUBDIRS += uuid-ossp
|
||||||
|
--- a/src/backend/Makefile
|
||||||
|
+++ b/src/backend/Makefile
|
||||||
|
@@ -56,7 +56,7 @@
|
||||||
|
|
||||||
|
##########################################################################
|
||||||
|
|
||||||
|
-all: submake-libpgport submake-catalog-headers submake-utils-headers postgres $(POSTGRES_IMP)
|
||||||
|
+all: generated-headers
|
||||||
|
|
||||||
|
ifneq ($(PORTNAME), cygwin)
|
||||||
|
ifneq ($(PORTNAME), win32)
|
||||||
|
@@ -194,23 +194,7 @@
|
||||||
|
|
||||||
|
##########################################################################
|
||||||
|
|
||||||
|
-install: all installdirs install-bin
|
||||||
|
-ifeq ($(PORTNAME), cygwin)
|
||||||
|
-ifeq ($(MAKE_DLL), true)
|
||||||
|
- $(INSTALL_DATA) libpostgres.a '$(DESTDIR)$(libdir)/libpostgres.a'
|
||||||
|
-endif
|
||||||
|
-endif
|
||||||
|
-ifeq ($(PORTNAME), win32)
|
||||||
|
-ifeq ($(MAKE_DLL), true)
|
||||||
|
- $(INSTALL_DATA) libpostgres.a '$(DESTDIR)$(libdir)/libpostgres.a'
|
||||||
|
-endif
|
||||||
|
-endif
|
||||||
|
- $(MAKE) -C catalog install-data
|
||||||
|
- $(MAKE) -C tsearch install-data
|
||||||
|
- $(MAKE) -C utils install-data
|
||||||
|
- $(INSTALL_DATA) $(srcdir)/libpq/pg_hba.conf.sample '$(DESTDIR)$(datadir)/pg_hba.conf.sample'
|
||||||
|
- $(INSTALL_DATA) $(srcdir)/libpq/pg_ident.conf.sample '$(DESTDIR)$(datadir)/pg_ident.conf.sample'
|
||||||
|
- $(INSTALL_DATA) $(srcdir)/utils/misc/postgresql.conf.sample '$(DESTDIR)$(datadir)/postgresql.conf.sample'
|
||||||
|
+install:
|
||||||
|
|
||||||
|
ifeq ($(with_llvm), yes)
|
||||||
|
install-bin: install-postgres-bitcode
|
||||||
|
--- a/src/bin/Makefile
|
||||||
|
+++ b/src/bin/Makefile
|
||||||
|
@@ -14,24 +14,8 @@
|
||||||
|
include $(top_builddir)/src/Makefile.global
|
||||||
|
|
||||||
|
SUBDIRS = \
|
||||||
|
- initdb \
|
||||||
|
- pg_amcheck \
|
||||||
|
- pg_archivecleanup \
|
||||||
|
- pg_basebackup \
|
||||||
|
- pg_checksums \
|
||||||
|
- pg_combinebackup \
|
||||||
|
pg_config \
|
||||||
|
- pg_controldata \
|
||||||
|
- pg_ctl \
|
||||||
|
pg_dump \
|
||||||
|
- pg_resetwal \
|
||||||
|
- pg_rewind \
|
||||||
|
- pg_test_fsync \
|
||||||
|
- pg_test_timing \
|
||||||
|
- pg_upgrade \
|
||||||
|
- pg_verifybackup \
|
||||||
|
- pg_waldump \
|
||||||
|
- pg_walsummary \
|
||||||
|
pgbench \
|
||||||
|
psql \
|
||||||
|
scripts
|
||||||
|
--- a/src/Makefile
|
||||||
|
+++ b/src/Makefile
|
||||||
|
@@ -17,19 +17,11 @@
|
||||||
|
port \
|
||||||
|
timezone \
|
||||||
|
backend \
|
||||||
|
- backend/utils/mb/conversion_procs \
|
||||||
|
- backend/snowball \
|
||||||
|
include \
|
||||||
|
interfaces \
|
||||||
|
- backend/replication/libpqwalreceiver \
|
||||||
|
- backend/replication/pgoutput \
|
||||||
|
fe_utils \
|
||||||
|
bin \
|
||||||
|
- pl \
|
||||||
|
- makefiles \
|
||||||
|
- test/regress \
|
||||||
|
- test/isolation \
|
||||||
|
- test/perl
|
||||||
|
+ makefiles
|
||||||
|
|
||||||
|
ifeq ($(with_llvm), yes)
|
||||||
|
SUBDIRS += backend/jit/llvm
|
||||||
@@ -9,10 +9,19 @@
|
|||||||
<flag name="llvm">
|
<flag name="llvm">
|
||||||
Add support for llvm JIT engine
|
Add support for llvm JIT engine
|
||||||
</flag>
|
</flag>
|
||||||
|
<flag name="numa">
|
||||||
|
Add support for NUMA
|
||||||
|
</flag>
|
||||||
|
<flag name="oauth">
|
||||||
|
Enable OAuth2 authentication support
|
||||||
|
</flag>
|
||||||
<flag name="server">
|
<flag name="server">
|
||||||
Disable to build and install the clients and libraries
|
Disable to build and install the clients and libraries
|
||||||
only.
|
only.
|
||||||
</flag>
|
</flag>
|
||||||
|
<flag name="uring">
|
||||||
|
Build with support for <pkg>sys-libs/liburing</pkg> AIO backend
|
||||||
|
</flag>
|
||||||
<flag name="uuid">
|
<flag name="uuid">
|
||||||
Enable server side UUID generation (via
|
Enable server side UUID generation (via
|
||||||
<pkg>dev-libs/ossp-uuid</pkg>).
|
<pkg>dev-libs/ossp-uuid</pkg>).
|
||||||
|
|||||||
@@ -9,7 +9,7 @@ LLVM_OPTIONAL=1
|
|||||||
|
|
||||||
inherit dot-a flag-o-matic linux-info llvm-r1 pam python-single-r1 systemd tmpfiles
|
inherit dot-a flag-o-matic linux-info llvm-r1 pam python-single-r1 systemd tmpfiles
|
||||||
|
|
||||||
KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~mips ppc ppc64 ~riscv ~s390 ~sparc x86 ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos ~x64-solaris"
|
KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos ~x64-solaris"
|
||||||
|
|
||||||
SLOT=$(ver_cut 1)
|
SLOT=$(ver_cut 1)
|
||||||
|
|
||||||
@@ -50,7 +50,7 @@ server? ( systemd? ( sys-apps/systemd ) )
|
|||||||
ssl? ( >=dev-libs/openssl-0.9.6-r1:0= )
|
ssl? ( >=dev-libs/openssl-0.9.6-r1:0= )
|
||||||
tcl? ( >=dev-lang/tcl-8:0= )
|
tcl? ( >=dev-lang/tcl-8:0= )
|
||||||
xml? ( dev-libs/libxml2:= dev-libs/libxslt )
|
xml? ( dev-libs/libxml2:= dev-libs/libxslt )
|
||||||
zlib? ( sys-libs/zlib )
|
zlib? ( virtual/zlib:= )
|
||||||
zstd? ( app-arch/zstd )
|
zstd? ( app-arch/zstd )
|
||||||
"
|
"
|
||||||
|
|
||||||
@@ -98,8 +98,6 @@ dev-libs/libxml2
|
|||||||
dev-libs/libxslt
|
dev-libs/libxslt
|
||||||
"
|
"
|
||||||
|
|
||||||
PATCHES=( "${FILESDIR}"/postgresql-17.6-llvm21.patch )
|
|
||||||
|
|
||||||
pkg_setup() {
|
pkg_setup() {
|
||||||
use llvm && llvm-r1_pkg_setup
|
use llvm && llvm-r1_pkg_setup
|
||||||
|
|
||||||
480
dev-db/postgresql/postgresql-18.1.ebuild
Normal file
480
dev-db/postgresql/postgresql-18.1.ebuild
Normal file
@@ -0,0 +1,480 @@
|
|||||||
|
# Copyright 1999-2025 Gentoo Authors
|
||||||
|
# Distributed under the terms of the GNU General Public License v2
|
||||||
|
|
||||||
|
EAPI=8
|
||||||
|
|
||||||
|
PYTHON_COMPAT=( python3_{11..14} )
|
||||||
|
LLVM_COMPAT=( {15..21} )
|
||||||
|
LLVM_OPTIONAL=1
|
||||||
|
|
||||||
|
inherit dot-a flag-o-matic linux-info llvm-r1 pam python-single-r1 systemd tmpfiles
|
||||||
|
|
||||||
|
DESCRIPTION="PostgreSQL RDBMS"
|
||||||
|
HOMEPAGE="https://www.postgresql.org/"
|
||||||
|
|
||||||
|
MY_PV=${PV/_/}
|
||||||
|
SRC_URI="https://ftp.postgresql.org/pub/source/v${MY_PV}/postgresql-${MY_PV}.tar.bz2"
|
||||||
|
S="${WORKDIR}/${PN}-${MY_PV}"
|
||||||
|
LICENSE="POSTGRESQL GPL-2"
|
||||||
|
SLOT=$(ver_cut 1)
|
||||||
|
|
||||||
|
KEYWORDS="~amd64 ~arm ~arm64 ~hppa ~loong ~mips ~ppc ~ppc64 ~riscv ~sparc ~x86 ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos ~x64-solaris"
|
||||||
|
|
||||||
|
IUSE="debug doc +icu kerberos ldap llvm +lz4 +numa nls oauth pam perl python
|
||||||
|
+readline selinux +server systemd ssl static-libs tcl uuid +uring
|
||||||
|
xml zlib +zstd"
|
||||||
|
|
||||||
|
REQUIRED_USE="python? ( ${PYTHON_REQUIRED_USE} )"
|
||||||
|
|
||||||
|
CDEPEND="
|
||||||
|
>=app-eselect/eselect-postgresql-2.0
|
||||||
|
acct-group/postgres
|
||||||
|
acct-user/postgres
|
||||||
|
sys-apps/less
|
||||||
|
virtual/libintl
|
||||||
|
icu? ( dev-libs/icu:= )
|
||||||
|
kerberos? ( app-crypt/mit-krb5 )
|
||||||
|
ldap? ( net-nds/openldap:= )
|
||||||
|
llvm? ( $(llvm_gen_dep '
|
||||||
|
llvm-core/clang:${LLVM_SLOT}
|
||||||
|
llvm-core/llvm:${LLVM_SLOT}
|
||||||
|
') )
|
||||||
|
lz4? ( app-arch/lz4 )
|
||||||
|
numa? ( sys-process/numactl )
|
||||||
|
oauth? ( net-misc/curl[adns] )
|
||||||
|
pam? ( sys-libs/pam )
|
||||||
|
perl? ( >=dev-lang/perl-5.8:= )
|
||||||
|
python? ( ${PYTHON_DEPS} )
|
||||||
|
readline? ( sys-libs/readline:0= )
|
||||||
|
server? ( systemd? ( sys-apps/systemd ) )
|
||||||
|
ssl? ( >=dev-libs/openssl-0.9.6-r1:0= )
|
||||||
|
tcl? ( >=dev-lang/tcl-8:0= )
|
||||||
|
uring? ( sys-libs/liburing )
|
||||||
|
xml? ( dev-libs/libxml2:= dev-libs/libxslt )
|
||||||
|
zlib? ( virtual/zlib:= )
|
||||||
|
zstd? ( app-arch/zstd )
|
||||||
|
"
|
||||||
|
|
||||||
|
# uuid flags -- depend on sys-apps/util-linux for Linux libcs, or if no
|
||||||
|
# supported libc in use depend on dev-libs/ossp-uuid. For BSD systems,
|
||||||
|
# the libc includes UUID functions.
|
||||||
|
UTIL_LINUX_LIBC=( elibc_{glibc,musl} )
|
||||||
|
|
||||||
|
nest_usedep() {
|
||||||
|
local front back
|
||||||
|
while [[ ${#} -gt 1 ]]; do
|
||||||
|
front+="${1}? ( "
|
||||||
|
back+=" )"
|
||||||
|
shift
|
||||||
|
done
|
||||||
|
echo "${front}${1}${back}"
|
||||||
|
}
|
||||||
|
|
||||||
|
CDEPEND+="
|
||||||
|
uuid? (
|
||||||
|
${UTIL_LINUX_LIBC[@]/%/? ( sys-apps/util-linux )}
|
||||||
|
$(nest_usedep ${UTIL_LINUX_LIBC[@]/#/!} dev-libs/ossp-uuid)
|
||||||
|
)"
|
||||||
|
|
||||||
|
DEPEND="${CDEPEND}
|
||||||
|
sys-devel/bison
|
||||||
|
app-alternatives/lex
|
||||||
|
nls? ( sys-devel/gettext )
|
||||||
|
xml? ( virtual/pkgconfig )
|
||||||
|
"
|
||||||
|
|
||||||
|
RDEPEND="${CDEPEND}
|
||||||
|
selinux? ( sec-policy/selinux-postgresql )
|
||||||
|
"
|
||||||
|
|
||||||
|
# Openjade, docbook, XML, and XSLT are needed to generate manpages and
|
||||||
|
# any documentation that may be elected.
|
||||||
|
BDEPEND="
|
||||||
|
app-text/openjade
|
||||||
|
app-text/docbook-dsssl-stylesheets
|
||||||
|
app-text/docbook-sgml-dtd:4.5
|
||||||
|
app-text/docbook-xml-dtd:4.5
|
||||||
|
app-text/docbook-xsl-stylesheets
|
||||||
|
dev-libs/libxml2
|
||||||
|
dev-libs/libxslt
|
||||||
|
"
|
||||||
|
|
||||||
|
pkg_setup() {
|
||||||
|
use llvm && llvm-r1_pkg_setup
|
||||||
|
|
||||||
|
use server && CONFIG_CHECK="~SYSVIPC" linux-info_pkg_setup
|
||||||
|
|
||||||
|
use python && python-single-r1_pkg_setup
|
||||||
|
}
|
||||||
|
|
||||||
|
src_prepare() {
|
||||||
|
# Set proper run directory
|
||||||
|
sed "s|\(PGSOCKET_DIR\s\+\)\"/tmp\"|\1\"${EPREFIX}/run/postgresql\"|" \
|
||||||
|
-i src/include/pg_config_manual.h || die
|
||||||
|
|
||||||
|
# Rely on $PATH being in the proper order so that the correct
|
||||||
|
# install program is used for modules utilizing PGXS in both
|
||||||
|
# hardened and non-hardened environments. (Bug #528786)
|
||||||
|
sed 's/@install_bin@/install -c/' -i src/Makefile.global.in || die
|
||||||
|
|
||||||
|
use server || eapply "${FILESDIR}/${PN}-18.0-no-server.patch"
|
||||||
|
|
||||||
|
if use pam ; then
|
||||||
|
sed "s/\(#define PGSQL_PAM_SERVICE \"postgresql\)/\1-${SLOT}/" \
|
||||||
|
-i src/backend/libpq/auth.c || \
|
||||||
|
die 'PGSQL_PAM_SERVICE rename failed.'
|
||||||
|
fi
|
||||||
|
|
||||||
|
default
|
||||||
|
eapply_user
|
||||||
|
}
|
||||||
|
|
||||||
|
src_configure() {
|
||||||
|
lto-guarantee-fat
|
||||||
|
|
||||||
|
# Fails to build with C23, fallback to the old default in < GCC 15
|
||||||
|
# for now: https://marc.info/?l=pgsql-bugs&m=173185132906874&w=2
|
||||||
|
append-cflags -std=gnu17
|
||||||
|
|
||||||
|
case ${CHOST} in
|
||||||
|
*-darwin*|*-solaris*)
|
||||||
|
use nls && append-libs intl
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
export LDFLAGS_SL="${LDFLAGS}"
|
||||||
|
export LDFLAGS_EX="${LDFLAGS}"
|
||||||
|
|
||||||
|
local PO="${EPREFIX}"
|
||||||
|
|
||||||
|
local i uuid_config=""
|
||||||
|
if use uuid; then
|
||||||
|
for i in ${UTIL_LINUX_LIBC[@]}; do
|
||||||
|
use ${i} && uuid_config="--with-uuid=e2fs"
|
||||||
|
done
|
||||||
|
[[ -z $uuid_config ]] && uuid_config="--with-uuid=ossp"
|
||||||
|
fi
|
||||||
|
|
||||||
|
local myconf="\
|
||||||
|
--prefix="${PO}/usr/$(get_libdir)/postgresql-${SLOT}" \
|
||||||
|
--datadir="${PO}/usr/share/postgresql-${SLOT}" \
|
||||||
|
--includedir="${PO}/usr/include/postgresql-${SLOT}" \
|
||||||
|
--mandir="${PO}/usr/share/postgresql-${SLOT}/man" \
|
||||||
|
--sysconfdir="${PO}/etc/postgresql-${SLOT}" \
|
||||||
|
--with-system-tzdata="${PO}/usr/share/zoneinfo" \
|
||||||
|
$(use_enable debug) \
|
||||||
|
$(use_with icu) \
|
||||||
|
$(use_with kerberos gssapi) \
|
||||||
|
$(use_with ldap) \
|
||||||
|
$(use_with llvm) \
|
||||||
|
$(use_with lz4) \
|
||||||
|
$(use_with numa libnuma) \
|
||||||
|
$(use_with oauth libcurl) \
|
||||||
|
$(use_with pam) \
|
||||||
|
$(use_with perl) \
|
||||||
|
$(use_with python) \
|
||||||
|
$(use_with readline) \
|
||||||
|
$(use_with ssl openssl) \
|
||||||
|
$(usex server "$(use_with systemd)" '--without-systemd') \
|
||||||
|
$(use_with tcl) \
|
||||||
|
$(use_with uring liburing) \
|
||||||
|
${uuid_config} \
|
||||||
|
$(use_with xml libxml) \
|
||||||
|
$(use_with xml libxslt) \
|
||||||
|
$(use_with zlib) \
|
||||||
|
$(use_with zstd) \
|
||||||
|
$(use_enable nls)"
|
||||||
|
|
||||||
|
econf ${myconf}
|
||||||
|
}
|
||||||
|
|
||||||
|
src_compile() {
|
||||||
|
emake
|
||||||
|
emake -C contrib
|
||||||
|
emake -C doc
|
||||||
|
}
|
||||||
|
|
||||||
|
src_install() {
|
||||||
|
emake DESTDIR="${D}" install
|
||||||
|
emake DESTDIR="${D}" install -C contrib
|
||||||
|
|
||||||
|
dodoc HISTORY
|
||||||
|
|
||||||
|
# man pages are already built, but if we have the target make them,
|
||||||
|
# they'll be generated from source before being installed so we
|
||||||
|
# manually install man pages.
|
||||||
|
# We use ${SLOT} instead of doman for postgresql.eselect
|
||||||
|
insinto /usr/share/postgresql-${SLOT}/man/
|
||||||
|
doins -r doc/src/sgml/man{1,3,7}
|
||||||
|
if ! use server; then
|
||||||
|
# Remove man pages for non-existent binaries
|
||||||
|
serverman=(
|
||||||
|
initdb
|
||||||
|
pg_{archivecleanup,controldata,ctl,resetwal,rewind,standby}
|
||||||
|
pg_{test_{fsync,timing},upgrade,waldump}
|
||||||
|
post{gres,master}
|
||||||
|
)
|
||||||
|
for m in ${serverman[@]} ; do
|
||||||
|
rm "${ED}/usr/share/postgresql-${SLOT}/man/man1/${m}.1"
|
||||||
|
done
|
||||||
|
fi
|
||||||
|
docompress /usr/share/postgresql-${SLOT}/man/man{1,3,7}
|
||||||
|
|
||||||
|
# Create slot specific man pages
|
||||||
|
local bn f mansec slotted_name
|
||||||
|
for mansec in 1 3 7 ; do
|
||||||
|
local rel_manpath="../../postgresql-${SLOT}/man/man${mansec}"
|
||||||
|
|
||||||
|
mkdir -p "${ED}"/usr/share/man/man${mansec} || die "making man dir"
|
||||||
|
pushd "${ED}"/usr/share/man/man${mansec} > /dev/null || die "pushd failed"
|
||||||
|
|
||||||
|
for f in "${ED}/usr/share/postgresql-${SLOT}/man/man${mansec}"/* ; do
|
||||||
|
bn=$(basename "${f}")
|
||||||
|
slotted_name=${bn%.${mansec}}${SLOT}.${mansec}
|
||||||
|
case ${bn} in
|
||||||
|
TABLE.7|WITH.7)
|
||||||
|
echo ".so ${rel_manpath}/SELECT.7" > ${slotted_name}
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
echo ".so ${rel_manpath}/${bn}" > ${slotted_name}
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
|
||||||
|
popd > /dev/null
|
||||||
|
done
|
||||||
|
|
||||||
|
insinto /etc/postgresql-${SLOT}
|
||||||
|
newins src/bin/psql/psqlrc.sample psqlrc
|
||||||
|
|
||||||
|
# Don't delete libpg{port,common}.a (Bug #571046). They're always
|
||||||
|
# needed by extensions utilizing PGXS.
|
||||||
|
use static-libs || \
|
||||||
|
find "${ED}" -name '*.a' ! -name libpgport.a ! -name libpgcommon.a \
|
||||||
|
-delete
|
||||||
|
strip-lto-bytecode "${ED}"
|
||||||
|
|
||||||
|
# Make slot specific links to programs
|
||||||
|
local f bn
|
||||||
|
for f in $(find "${ED}/usr/$(get_libdir)/postgresql-${SLOT}/bin" \
|
||||||
|
-mindepth 1 -maxdepth 1)
|
||||||
|
do
|
||||||
|
bn=$(basename "${f}")
|
||||||
|
dosym "../$(get_libdir)/postgresql-${SLOT}/bin/${bn}" \
|
||||||
|
"/usr/bin/${bn}${SLOT/.}"
|
||||||
|
done
|
||||||
|
|
||||||
|
if use doc ; then
|
||||||
|
docinto html
|
||||||
|
dodoc doc/src/sgml/html/*
|
||||||
|
fi
|
||||||
|
|
||||||
|
if use server; then
|
||||||
|
sed -e "s|@SLOT@|${SLOT}|g" -e "s|@LIBDIR@|$(get_libdir)|g" \
|
||||||
|
"${FILESDIR}/${PN}.confd-9.3" | newconfd - ${PN}-${SLOT}
|
||||||
|
|
||||||
|
sed -e "s|@SLOT@|${SLOT}|g" -e "s|@LIBDIR@|$(get_libdir)|g" \
|
||||||
|
"${FILESDIR}/${PN}.init-9.3-r1" | newinitd - ${PN}-${SLOT}
|
||||||
|
|
||||||
|
if use systemd; then
|
||||||
|
sed -e "s|@SLOT@|${SLOT}|g" -e "s|@LIBDIR@|$(get_libdir)|g" \
|
||||||
|
"${FILESDIR}/${PN}.service-9.6-r1" | \
|
||||||
|
systemd_newunit - ${PN}-${SLOT}.service
|
||||||
|
newbin "${FILESDIR}"/${PN}-check-db-dir ${PN}-${SLOT}-check-db-dir
|
||||||
|
newtmpfiles "${FILESDIR}"/${PN}.tmpfiles ${PN}-${SLOT}.conf
|
||||||
|
fi
|
||||||
|
|
||||||
|
use pam && pamd_mimic system-auth ${PN}-${SLOT} auth account session
|
||||||
|
|
||||||
|
if use prefix ; then
|
||||||
|
keepdir /run/postgresql
|
||||||
|
fperms 1775 /run/postgresql
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
pkg_postinst() {
|
||||||
|
use server && use systemd && tmpfiles_process ${PN}-${SLOT}.conf
|
||||||
|
postgresql-config update
|
||||||
|
|
||||||
|
elog "If you need a global psqlrc-file, you can place it in:"
|
||||||
|
elog " ${EROOT}/etc/postgresql-${SLOT}/"
|
||||||
|
|
||||||
|
if use server ; then
|
||||||
|
elog
|
||||||
|
elog "Gentoo specific documentation:"
|
||||||
|
elog "https://wiki.gentoo.org/wiki/PostgreSQL"
|
||||||
|
elog
|
||||||
|
elog "Official documentation:"
|
||||||
|
elog "https://www.postgresql.org/docs/${SLOT}/static/index.html"
|
||||||
|
elog
|
||||||
|
elog "The default location of the Unix-domain socket is:"
|
||||||
|
elog " ${EROOT}/run/postgresql/"
|
||||||
|
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}"
|
||||||
|
|
||||||
|
if [[ -n ${REPLACING_VERSIONS} ]] ; then
|
||||||
|
ewarn "If your system is using 'pg_stat_statements' and you are running a"
|
||||||
|
ewarn "version of PostgreSQL ${SLOT}, we advise that you execute"
|
||||||
|
ewarn "the following command after upgrading:"
|
||||||
|
ewarn
|
||||||
|
ewarn "ALTER EXTENSION pg_stat_statements UPDATE;"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
pkg_prerm() {
|
||||||
|
if use server && [[ -z ${REPLACED_BY_VERSION} ]] ; then
|
||||||
|
ewarn "Have you dumped and/or migrated the ${SLOT} database cluster?"
|
||||||
|
ewarn "\thttps://wiki.gentoo.org/wiki/PostgreSQL/QuickStart#Migrating_PostgreSQL"
|
||||||
|
|
||||||
|
ebegin "Resuming removal in 10 seconds (Control-C to cancel)"
|
||||||
|
sleep 10
|
||||||
|
eend 0
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
pkg_postrm() {
|
||||||
|
postgresql-config update
|
||||||
|
}
|
||||||
|
|
||||||
|
pkg_config() {
|
||||||
|
use server || die "USE flag 'server' not enabled. Nothing to configure."
|
||||||
|
|
||||||
|
[[ -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 " https://www.postgresql.org/docs/${SLOT}/static/creating-cluster.html"
|
||||||
|
einfo " https://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
|
||||||
|
|
||||||
|
ebegin "Continuing initialization in 5 seconds (Control-C to cancel)"
|
||||||
|
sleep 5
|
||||||
|
eend 0
|
||||||
|
|
||||||
|
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
|
||||||
|
|
||||||
|
einfo "Creating the data directory ..."
|
||||||
|
if [[ ${EUID} == 0 ]] ; then
|
||||||
|
mkdir -p "$(dirname ${DATA_DIR%/})" || die "Couldn't parent dirs"
|
||||||
|
mkdir -m 0700 "${DATA_DIR%/}" || die "Couldn't make DATA_DIR"
|
||||||
|
chown -h postgres:postgres "${DATA_DIR%/}" || die "Couldn't chown"
|
||||||
|
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
|
||||||
|
|
||||||
|
if [[ "${DATA_DIR%/}" != "${PGDATA%/}" ]] ; then
|
||||||
|
mv "${DATA_DIR%/}"/{pg_{hba,ident},postgresql}.conf "${PGDATA}"
|
||||||
|
ln -s "${PGDATA%/}"/{pg_{hba,ident},postgresql}.conf "${DATA_DIR%/}"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# unix_socket_directory has no effect in postgresql.conf as it's
|
||||||
|
# overridden in the initscript
|
||||||
|
sed '/^#unix_socket_directories/,+1d' -i "${PGDATA%/}"/postgresql.conf
|
||||||
|
|
||||||
|
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
|
||||||
|
if ! use systemd; then
|
||||||
|
einfo "The PostgreSQL server, by default, will log events to:"
|
||||||
|
einfo " ${DATA_DIR%/}/postmaster.log"
|
||||||
|
einfo
|
||||||
|
fi
|
||||||
|
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}"
|
||||||
|
elif use systemd; then
|
||||||
|
einfo "You should use the 'postgresql-${SLOT}.service' unit to run PostgreSQL"
|
||||||
|
einfo "instead of 'pg_ctl'."
|
||||||
|
else
|
||||||
|
einfo "You should use the '${EROOT}/etc/init.d/postgresql-${SLOT}' script to run PostgreSQL"
|
||||||
|
einfo "instead of 'pg_ctl'."
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
src_test() {
|
||||||
|
if use server && [[ ${UID} -ne 0 ]] ; then
|
||||||
|
# Some ICU tests fail if LC_CTYPE and LC_COLLATE aren't the same. We set
|
||||||
|
# LC_CTYPE to be equal to LC_COLLATE since LC_COLLATE is set by Portage.
|
||||||
|
local old_ctype=${LC_CTYPE}
|
||||||
|
export LC_CTYPE=${LC_COLLATE}
|
||||||
|
emake check
|
||||||
|
export LC_CTYPE=${old_ctype}
|
||||||
|
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
|
||||||
|
use server || \
|
||||||
|
ewarn 'Tests cannot be run without the "server" use flag enabled.'
|
||||||
|
[[ ${UID} -eq 0 ]] || \
|
||||||
|
ewarn 'Tests cannot be run as root. Enable "userpriv" in FEATURES.'
|
||||||
|
|
||||||
|
ewarn 'Skipping.'
|
||||||
|
fi
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user