From 075fd1f8cabc5879c6eb42127fb84c3058677fde Mon Sep 17 00:00:00 2001 From: V3n3RiX Date: Sat, 18 May 2024 00:01:42 +0100 Subject: gentoo auto-resync : 18:05:2024 - 00:01:41 --- dev-db/postgresql/Manifest | 2 +- dev-db/postgresql/postgresql-9999.ebuild | 307 +++++++++++++++++-------------- 2 files changed, 174 insertions(+), 135 deletions(-) (limited to 'dev-db/postgresql') diff --git a/dev-db/postgresql/Manifest b/dev-db/postgresql/Manifest index 1b5382a68106..f15bd92fef14 100644 --- a/dev-db/postgresql/Manifest +++ b/dev-db/postgresql/Manifest @@ -18,5 +18,5 @@ EBUILD postgresql-13.15-r2.ebuild 13520 BLAKE2B 93deeac89aee3a2c2b388edd6d16ad1e EBUILD postgresql-14.12-r2.ebuild 13511 BLAKE2B 163634f66d4add4dbbafb1ee8ea6dff3e4e5cbf35117dff28b5c1577ec71eb9d1ecf85b481247dfc30622f2e4785a4595b2fbd079760a33bd918d2878ea888dd SHA512 0c86440928f8e8b0c30705ebf77b5b260987840b4c8df989e02cde5fa0fac045c49d45a04a5e3a8eeac2c80007050e0e1c0d502b3061f5c56b02841b2253e527 EBUILD postgresql-15.7-r2.ebuild 13573 BLAKE2B 26330426a892e7de3f0b441327984aa7a959f303c9572c72076ae7ec004168f992596506008b836c4d1ee2595329bca80a22eba76e5844b4928b478012a3f307 SHA512 0052c5ab32c994fe464ddff22eed6f768e7ddd4efb5ad3c8be73b1b73afb40d98788073b084e513194d21ec20df890c9c785c5c04fd8d3c4ed72f5ee32fb4cb4 EBUILD postgresql-16.3-r2.ebuild 13583 BLAKE2B 466c7178312b160e43118a92aa5200d132ebd3d09d1df2e7d1f9cf32b5ec1d292edcbb02cb5ff9246755256c859f6d14d542101d7cf986b28fa87e422695bd72 SHA512 6f2f36e77b2263d2f0dc53bce3f601f441de1d3fc4e34ef430e86558d176be4b6f27faabb4b6d0d05ed34bc60342dfa1c06142637624de1ea811430c13a43ccd -EBUILD postgresql-9999.ebuild 12632 BLAKE2B 24105cf271c4bfb9cdad4ca9aef815c69a62e3fca9bac8882241e7acc87306f7c15ab1cd0be4315aaaca0e94bc8883f53ecb101511bda2fa204c65e318340121 SHA512 f80d09a2f49cbf59dc8f6c724e097e9e02282b754e9c69a24f9ef0e2a0e9f5dadac1e8293118a395de284a79815bcdf6cfb21abc108f7b8df09ce9e6fb13c837 +EBUILD postgresql-9999.ebuild 14262 BLAKE2B 666cd28147b2d18c9e3ed623067f6168f2883e936cdc6438672a9b363e050530d50c284905d2b556de3af05d8f09fbac05049aac2e56da5840f56030e43cddf5 SHA512 f1764f55850e4ee8377c5f9bc1989f25ebca4b796c54b84497dca25e644bb1ee238185cdb8e6391ac154c44ec4d254d024a958823b240057f9d91f63c8ffe648 MISC metadata.xml 653 BLAKE2B b5b85d83ee78ac502e2707d156e2fadf6fea857160e2f48da51c755e221c52a14b9eb04354202287f4aba15c274c07ba7b0911c76fd034bfa774ce3500ccb165 SHA512 fd543af224f6f8677e138cb1db7154d2444295c45df8696e3584911943176023d8d1b179f6b16d88ffc6d290265ec1b2f4c902cf95cc79eb37599ae3635b0942 diff --git a/dev-db/postgresql/postgresql-9999.ebuild b/dev-db/postgresql/postgresql-9999.ebuild index 7933efb78c75..e5eaa285027b 100644 --- a/dev-db/postgresql/postgresql-9999.ebuild +++ b/dev-db/postgresql/postgresql-9999.ebuild @@ -3,25 +3,38 @@ EAPI=8 -PYTHON_COMPAT=( python3_{10,11,12} ) +PYTHON_COMPAT=( python3_{10,11,12,13} ) +LLVM_COMPAT=( {15..18} ) +LLVM_OPTIONAL=1 -inherit flag-o-matic git-r3 linux-info meson pam python-single-r1 \ +inherit flag-o-matic linux-info llvm-r1 meson pam python-single-r1 \ systemd tmpfiles -KEYWORDS="" +DESCRIPTION="PostgreSQL RDBMS" +HOMEPAGE="https://www.postgresql.org/" +LICENSE="POSTGRESQL GPL-2" -SLOT="9999" +SLOT=$(ver_cut 1) -EGIT_REPO_URI="https://git.postgresql.org/git/postgresql.git" +if [[ $PV = *9999* ]] ; then + inherit git-r3 + EGIT_REPO_URI="https://git.postgresql.org/git/postgresql.git" +else + KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~loong ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos ~x64-solaris" -LICENSE="POSTGRESQL GPL-2" -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}" +fi -IUSE="debug +icu kerberos ldap llvm +lz4 nls pam perl python +readline - selinux server systemd ssl static-libs tcl uuid xml zlib zstd" +IUSE="debug doc +icu kerberos ldap llvm +lz4 nls pam perl python +readline + selinux systemd ssl static-libs tcl test uuid xml zlib zstd" -REQUIRED_USE="python? ( ${PYTHON_REQUIRED_USE} )" +REQUIRED_USE=" +llvm? ( ${LLVM_REQUIRED_USE} ) +python? ( ${PYTHON_REQUIRED_USE} ) +" +RESTRICT="!test? ( test )" CDEPEND=" >=app-eselect/eselect-postgresql-2.0 @@ -32,20 +45,22 @@ virtual/libintl icu? ( dev-libs/icu:= ) kerberos? ( app-crypt/mit-krb5 ) ldap? ( net-nds/openldap:= ) -llvm? ( - sys-devel/llvm:= - sys-devel/clang:= -) +llvm? ( $(llvm_gen_dep ' + sys-devel/clang:${LLVM_SLOT} + sys-devel/llvm:${LLVM_SLOT} + ') ) lz4? ( app-arch/lz4 ) pam? ( sys-libs/pam ) -perl? ( >=dev-lang/perl-5.8:= ) +perl? ( >=dev-lang/perl-5.14:= ) python? ( ${PYTHON_DEPS} ) readline? ( sys-libs/readline:0= ) ssl? ( >=dev-libs/openssl-0.9.6-r1:0= ) systemd? ( sys-apps/systemd ) tcl? ( >=dev-lang/tcl-8:0= ) -uuid? ( dev-libs/ossp-uuid ) -xml? ( dev-libs/libxml2 dev-libs/libxslt ) +xml? ( + dev-libs/libxml2 + dev-libs/libxslt +) zlib? ( sys-libs/zlib ) zstd? ( app-arch/zstd ) " @@ -73,37 +88,38 @@ uuid? ( DEPEND="${CDEPEND} >=dev-lang/perl-5.8 -app-text/docbook-dsssl-stylesheets -app-text/docbook-sgml-dtd:4.5 -app-text/docbook-xml-dtd:4.5 -app-text/docbook-xsl-stylesheets -app-text/openjade -dev-libs/libxml2 -dev-libs/libxslt -sys-devel/bison app-alternatives/lex +sys-devel/bison nls? ( sys-devel/gettext ) xml? ( virtual/pkgconfig ) " + RDEPEND="${CDEPEND} selinux? ( sec-policy/selinux-postgresql ) " -pkg_pretend() { - if ! use server; then - elog "You are using a live ebuild that uses the current source code as it is" - elog "available from PostgreSQL's Git repository at emerge time. Given such," - elog "the Meson build files may be altered by upstream without notice and the" - elog "documentation for this live version is not readily available" - elog "online. Ergo, the ebuild maintainers will not support building a" - elog "client-only and/or document-free version." - ewarn "Building server anyway." - fi -} +# 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 +test? ( + >=dev-lang/perl-5.14:= + dev-perl/IPC-Run + virtual/perl-Test-Simple + virtual/perl-ExtUtils-MakeMaker +) +" pkg_setup() { CONFIG_CHECK="~SYSVIPC" linux-info_pkg_setup + use llvm && llvm-r1_pkg_setup use python && python-single-r1_pkg_setup } @@ -118,42 +134,30 @@ src_prepare() { sed 's/@install_bin@/install -c/' -i src/Makefile.global.in || die if use pam ; then - sed -e "s/\(#define PGSQL_PAM_SERVICE \"postgresql\)/\1-${SLOT}/" \ + sed "s/\(#define PGSQL_PAM_SERVICE \"postgresql\)/\1-${SLOT}/" \ -i src/backend/libpq/auth.c || \ die 'PGSQL_PAM_SERVICE rename failed.' fi - eapply_user + default } src_configure() { - local emesonargs=() - case ${CHOST} in *-darwin*|*-solaris*) use nls && append-libs intl ;; esac + export LDFLAGS_SL="${LDFLAGS}" + export LDFLAGS_EX="${LDFLAGS}" - local i uuid_config="" - if use uuid; then - for i in ${UTIL_LINUX_LIBC[@]}; do - use ${i} && uuid_config="-Duuid=e2fs" - done - - emesonargs+=( ${uuid_config:-"-Duuid=ossp"} ) - fi - - use debug && emesonargs+=( "--debug" ) - - local PO="${EPREFIX}" - emesonargs+=( - --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}" - -Dsystem_tzdata="${PO}/usr/share/zoneinfo" + local emesonargs=( + --prefix="${EPREFIX}/usr/$(get_libdir)/postgresql-${SLOT}" + --datadir="${EPREFIX}/usr/share/postgresql-${SLOT}" + --includedir="${EPREFIX}/usr/include/postgresql-${SLOT}" + --mandir="${EPREFIX}/usr/share/postgresql-${SLOT}/man" + --sysconfdir="${EPREFIX}/etc/postgresql-${SLOT}" + -Dsystem_tzdata="${EPREFIX}/usr/share/zoneinfo" $(meson_feature icu) $(meson_feature kerberos gssapi) $(meson_feature ldap) @@ -170,60 +174,64 @@ src_configure() { $(meson_feature xml libxslt) $(meson_feature zlib) $(meson_feature zstd) + $(meson_use !alpha spinlocks) ) + use debug && emesonargs+=( "--debug" ) use ssl && emesonargs+=( "-Dssl=openssl" ) - use alpha && emesonargs+=( "-Dspinlocks=false" ) - export LDFLAGS_SL="${LDFLAGS}" - export LDFLAGS_EX="${LDFLAGS}" + local i uuid_config="" + if use uuid; then + for i in ${UTIL_LINUX_LIBC[@]}; do + use ${i} && uuid_config="-Duuid=e2fs" + done + + emesonargs+=( ${uuid_config:-"-Duuid=ossp"} ) + fi meson_src_configure } src_compile() { meson_src_compile - meson_src_compile {docs,man} + + if use doc ; then + # Generates both manpages and HTML documentation. + meson_src_compile docs + else + meson_src_compile man:alias + fi +} + +src_test() { + if [[ ${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} + meson_src_test + export LC_CTYPE=${old_ctype} + else + ewarn 'Tests cannot be run as root. Enable "userpriv" in FEATURES.' + ewarn 'Skipping.' + fi } src_install() { meson_src_install - dodoc README HISTORY doc/TODO - dodoc -r "${BUILD_DIR}"/doc/src/sgml/html - - # postgresql.eselect places the man files of the selected slot, which may - # not be this ${SLOT}, hence doins instead of doman - insinto /usr/share/postgresql-${SLOT}/man/ - doins -r "${BUILD_DIR}"/doc/src/sgml/man{1,3,7} - docompress /usr/share/postgresql-${SLOT}/man/man{1,3,7} - - 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 - sed -e "s|@SLOT@|${SLOT}|g" -e "s|@LIBDIR@|$(get_libdir)|g" \ - "${FILESDIR}/${PN}.confd-9.3" | newconfd - ${PN}-${SLOT} + "${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} + "${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 - newtmpfiles "${FILESDIR}"/${PN}.tmpfiles ${PN}-${SLOT}.conf - fi - - newbin "${FILESDIR}"/${PN}-check-db-dir ${PN}-${SLOT}-check-db-dir - - use pam && pamd_mimic system-auth ${PN}-${SLOT} auth account session + insinto "/etc/postgresql-${SLOT}" + newins src/bin/psql/psqlrc.sample psqlrc + # Create slot specific links to their related executables, so that they're + # always available. For example, pg_config9999 is always available whereas + # the pg_config is controlled by postgresql.eselect. local f bn for f in $(find "${ED}/usr/$(get_libdir)/postgresql-${SLOT}/bin" \ -mindepth 1 -maxdepth 1) @@ -233,7 +241,15 @@ src_install() { "/usr/bin/${bn}${SLOT/.}" done - # Create slot specific man pages + # Create slot specific man pages so that they're always available. As above + # for the executables, make `man pg_config9999` always refer to the same + # manpage, whereas postgresql.eselect controls which manpage `man pg_config` + # refers. And, since postgresql.eselect controls the manpages, doman would + # actually do the wrong thing for us, hence insinto and doins. + insinto "/usr/share/postgresql-${SLOT}/man/" + doins -r "${BUILD_DIR}"/doc/src/sgml/man{1,3,7} + docompress /usr/share/postgresql-"${SLOT}"/man/man{1,3,7} + local bn f mansec slotted_name for mansec in 1 3 7 ; do local rel_manpath="../../postgresql-${SLOT}/man/man${mansec}" @@ -243,54 +259,90 @@ src_install() { for f in "${ED}/usr/share/postgresql-${SLOT}/man/man${mansec}"/* ; do bn=$(basename "${f}") - slotted_name=${bn%.${mansec}}${SLOT}.${mansec} + 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}/SELECT.7" > "${slotted_name}" ;; *) - echo ".so ${rel_manpath}/${bn}" > ${slotted_name} + echo ".so ${rel_manpath}/${bn}" > "${slotted_name}" ;; esac done - popd > /dev/null + popd > /dev/null || die "popd failed" done + # All of the use flag influenced installs/removals begin here. + use doc && dodoc -r "${BUILD_DIR}"/doc/src/sgml/html + + use pam && pamd_mimic system-auth "${PN}-${SLOT}" auth account session + if use prefix ; then keepdir /run/postgresql fperms 1775 /run/postgresql fi + + # 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 + + if use systemd; then + newbin "${FILESDIR}/${PN}-check-db-dir" "${PN}-${SLOT}-check-db-dir" + + sed -e "s|@SLOT@|${SLOT}|g" -e "s|@LIBDIR@|$(get_libdir)|g" \ + "${FILESDIR}/${PN}.service-9.6-r1" | \ + systemd_newunit - "${PN}-${SLOT}.service" + newtmpfiles "${FILESDIR}/${PN}.tmpfiles" "${PN}-${SLOT}.conf" + fi } pkg_postinst() { - use systemd && tmpfiles_process ${PN}-${SLOT}.conf - postgresql-config update + use systemd && tmpfiles_process "${PN}-${SLOT}.conf" - elog "If you need a global psqlrc-file, you can place it in:" - elog " ${EROOT}/etc/postgresql-${SLOT}/" + # See comment in pkg_postrm(). + [[ ${SLOT} = $(postgresql-config show) ]] && postgresql-config update - elog elog "Gentoo specific documentation:" elog "https://wiki.gentoo.org/wiki/PostgreSQL" elog elog "Official documentation:" - elog "${EROOT}/usr/share/doc/${PF}/html" + if use doc ; then + elog "${EROOT}/usr/share/doc/${PF}/html" + else + elog "https://www.postgresql.org/docs/${SLOT/9999*/devel}/index.html" + fi elog - elog "The default location of the Unix-domain socket is:" - elog " ${EROOT}/run/postgresql/" + + elog "You can find release notes at:" + if use doc ; then + elog "${EROOT}/usr/share/doc/${PF}/html/release.html" + else + elog "https://www.postgresql.org/docs/${SLOT/9999*/devel}/release.html" + fi elog - elog "Before initializing the database, you may want to edit PG_INITDB_OPTS" - elog "so that it contains your preferred locale, and other options, in:" + + elog "If you need a global psqlrc-file, you can place it in:" + elog " ${EROOT}/etc/postgresql-${SLOT}/" + elog + elog "The next two items only apply when running a server on this machine." + elog "------------------------------------------------------------------------" + elog "1. You may want to edit PG_INITDB_OPTS in the following file so that it" + elog " contains your preferred locale, and other options, before" + elog " initializing the cluster:" 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}" + elog "2. Then, run the following command to initialize database cluster:" + elog " emerge --config =${CATEGORY}/${PN}:${SLOT}" } pkg_prerm() { if [[ -z ${REPLACED_BY_VERSION} ]] ; then + ewarn "Were you running PostgreSQL ${SLOT} as a server? If no, ignore the rest" + ewarn "of this warning." + ewarn ewarn "Have you dumped and/or migrated the ${SLOT} database cluster?" ewarn "\thttps://wiki.gentoo.org/wiki/PostgreSQL/QuickStart#Migrating_PostgreSQL" @@ -301,7 +353,11 @@ pkg_prerm() { } pkg_postrm() { - postgresql-config update + # The links managed by eselect are unversioned only, and would only be + # impacted if the selected slot and ebuild slot are the same. For example, + # if the selected slot is SLOT+1, then nothing that happened with this + # ebuild will impact the unversioned links. + [[ ${SLOT} = $(postgresql-config show) ]] && postgresql-config update } pkg_config() { @@ -358,7 +414,7 @@ pkg_config() { sleep 5 eend 0 - if [ -n "$(ls -A ${DATA_DIR} 2> /dev/null)" ] ; then + 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." @@ -366,9 +422,9 @@ pkg_config() { einfo "Creating the data directory ..." if [[ ${EUID} == 0 ]] ; then - mkdir -p "${DATA_DIR}" - chown -Rf postgres:postgres "${DATA_DIR}" - chmod 0700 "${DATA_DIR}" + 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 ..." @@ -416,20 +472,3 @@ pkg_config() { einfo "instead of 'pg_ctl'." fi } - -src_test() { - if [[ ${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} - meson_src_test - 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 - ewarn 'Tests cannot be run as root. Enable "userpriv" in FEATURES.' - ewarn 'Skipping.' - fi -} -- cgit v1.2.3