commit f21751e784b619ed1bb226775471a4e673afe8e6c451840f82ad6eace7ea63ea Author: Reinhard Max Date: Tue Oct 22 14:55:20 2019 +0000 Accepting request 741872 from home:darix:branches:server:database:postgresql initial package OBS-URL: https://build.opensuse.org/request/show/741872 OBS-URL: https://build.opensuse.org/package/show/server:database:postgresql/postgresql12?expand=0&rev=1 diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..9b03811 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,23 @@ +## Default LFS +*.7z filter=lfs diff=lfs merge=lfs -text +*.bsp filter=lfs diff=lfs merge=lfs -text +*.bz2 filter=lfs diff=lfs merge=lfs -text +*.gem filter=lfs diff=lfs merge=lfs -text +*.gz filter=lfs diff=lfs merge=lfs -text +*.jar filter=lfs diff=lfs merge=lfs -text +*.lz filter=lfs diff=lfs merge=lfs -text +*.lzma filter=lfs diff=lfs merge=lfs -text +*.obscpio filter=lfs diff=lfs merge=lfs -text +*.oxt filter=lfs diff=lfs merge=lfs -text +*.pdf filter=lfs diff=lfs merge=lfs -text +*.png filter=lfs diff=lfs merge=lfs -text +*.rpm filter=lfs diff=lfs merge=lfs -text +*.tbz filter=lfs diff=lfs merge=lfs -text +*.tbz2 filter=lfs diff=lfs merge=lfs -text +*.tgz filter=lfs diff=lfs merge=lfs -text +*.ttf filter=lfs diff=lfs merge=lfs -text +*.txz filter=lfs diff=lfs merge=lfs -text +*.whl filter=lfs diff=lfs merge=lfs -text +*.xz filter=lfs diff=lfs merge=lfs -text +*.zip filter=lfs diff=lfs merge=lfs -text +*.zst filter=lfs diff=lfs merge=lfs -text diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..57affb6 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +.osc diff --git a/_multibuild b/_multibuild new file mode 100644 index 0000000..b5d5d4c --- /dev/null +++ b/_multibuild @@ -0,0 +1,3 @@ + + libs + diff --git a/baselibs.conf b/baselibs.conf new file mode 100644 index 0000000..6dc994f --- /dev/null +++ b/baselibs.conf @@ -0,0 +1,5 @@ +libpq5 + provides "postgresql-libs- = " + obsoletes "postgresql-libs- < " + conflicts "postgresql-libs- < 9.1.6" +libecpg6 diff --git a/postgresql-12.0.tar.bz2 b/postgresql-12.0.tar.bz2 new file mode 100644 index 0000000..5d012fe --- /dev/null +++ b/postgresql-12.0.tar.bz2 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:cda2397215f758b793f741c86be05468257b0e6bcb1a6113882ab5d0df0855c6 +size 20177458 diff --git a/postgresql-12.0.tar.bz2.sha256 b/postgresql-12.0.tar.bz2.sha256 new file mode 100644 index 0000000..720d2b4 --- /dev/null +++ b/postgresql-12.0.tar.bz2.sha256 @@ -0,0 +1 @@ +cda2397215f758b793f741c86be05468257b0e6bcb1a6113882ab5d0df0855c6 postgresql-12.0.tar.bz2 diff --git a/postgresql-README.SUSE b/postgresql-README.SUSE new file mode 100644 index 0000000..2fbea8e --- /dev/null +++ b/postgresql-README.SUSE @@ -0,0 +1,80 @@ +Unix-Domain Socket Directory +============================ + + + +Upgrading PostgreSQL on openSUSE and SUSE Linux Enterprise Server +================================================================= + +Current versions of PostgreSQL come with the pg_upgrade tool that +simplifies and speeds up the migration of a PostgreSQL installation to +a new version. Before version 9.1 dump and restore was needed which +was much slower. + +pg_upgrade needs to have the server binaries of both versions +available. To allow this, we had to change the way PostgreSQL is +packaged as well as the naming of the packages, so that two or more +versions of PostgreSQL can be installed in parallel. The package +names for PostgreSQL contain numbers indicating the major version. + +In PostgreSQL terms for versions up to 9.6 the major version consisted +of the first two components of the three-component version number, +i.e. 8.3, 8.4, 9.0, or 9.1. So, the packages for Postgresql 9.1 are +named postgresql91, postgresql91-server, etc. Inside the packages the +files were moved from their standard locations to a versioned location +such as /usr/lib/postgresql83/bin or /usr/lib/postgresql91/bin to +avoid file conflicts if packages are installed in parallel. + +Starting with version 10 the PostgreSQL project changed their +versioning scheme from from three components to two, which means one +component for the major version and one for the minor. So, the +sequence of major version across the versioning scheme change will be: +9.4, 9.5, 9.6, 10, 11, 12. For versions that use the new versioning +scheme SUSE only puts the single component major version into the +package name, so the postgresql96 package (containg version 9.6 +according to the old versioning scheme) will be followed by +postgresql10, then postgresql11, and so on. + +The update-alternatives mechanism creates and maintains symbolic links +that cause one version (by default the highest installed version) to +re-appear in the standard locations. By default, database data are +stored under /var/lib/pgsql/data on SUSE Linux. + +The following preconditions have to be fulfilled before data migration +can be started: + + 1. If not already done, the packages of the old PostgreSQL version + must be upgraded to the new packaging scheme through a maintenance + update. + + 2. The packages of the new PostgreSQL major version need to be + installed. As pg_upgrade is contained in postgresql91-contrib, that + one has to be installed as well, at least until the migration is + done. + + 3. Unless pg_upgrade is used in link mode, the server must have + enough free disk space to temporarily hold a copy of the database + files. If the database instance was installed in the default + location, the needed space in megabytes can be determined by running + the follwing command as root: "du -hs /var/lib/pgsql/data". If space + is tight, it might help to run the "VACUUM FULL" SQL command on each + database in the instance to be migrated, but be aware that it might + take very long. + +The latest upstream documentation for pg_upgrade including step by +step instructions for performing a database migration can be found +online under https://www.postgresql.org/docs/current/pgupgrade.html , +or locally under +file:///usr/share/doc/packages/postgresqlXX/html/pgupgrade.html , if +the postgresqlXX-docs package is installed. XX is a place holder for +the respective major version here. + +NOTE: The online documentation starts with explaining how you can +install PostgreSQL from the upstream sources (which is not necessary +when you install the SUSE RPMs) and also uses other directory names +(/usr/local instead of the update-alternatives based path as described +above). + +For background information about the inner workings of pg_upgrade and +a performance comparison with the old dump and restore method, see +http://momjian.us/main/writings/pgsql/pg_upgrade.pdf . diff --git a/postgresql-conf.patch b/postgresql-conf.patch new file mode 100644 index 0000000..bd0a31e --- /dev/null +++ b/postgresql-conf.patch @@ -0,0 +1,28 @@ +Index: src/backend/utils/misc/postgresql.conf.sample +=================================================================== +--- src/backend/utils/misc/postgresql.conf.sample.orig ++++ src/backend/utils/misc/postgresql.conf.sample +@@ -416,13 +416,13 @@ + + # - Where to Log - + +-#log_destination = 'stderr' # Valid values are combinations of ++log_destination = 'stderr' # Valid values are combinations of + # stderr, csvlog, syslog, and eventlog, + # depending on platform. csvlog + # requires logging_collector to be on. + + # This is used when logging to stderr: +-#logging_collector = off # Enable capturing of stderr and csvlog ++logging_collector = on # Enable capturing of stderr and csvlog + # into log files. Required to be on for + # csvlogs. + # (change requires restart) +@@ -514,6 +514,7 @@ + #log_error_verbosity = default # terse, default, or verbose messages + #log_hostname = off + #log_line_prefix = '%m [%p] ' # special values: ++log_line_prefix = '%m %d %u [%p]' + # %a = application name + # %u = user name + # %d = database name diff --git a/postgresql-plperl-keep-rpath.patch b/postgresql-plperl-keep-rpath.patch new file mode 100644 index 0000000..8fce391 --- /dev/null +++ b/postgresql-plperl-keep-rpath.patch @@ -0,0 +1,34 @@ +This patch keeps PosgreSQL's configure script from removing the rpath from +Perl's linker options, because otherwise the PL/Perl module can't find +libperl.so (bsc#578053). + +Index: config/perl.m4 +=================================================================== +--- config/perl.m4.orig ++++ config/perl.m4 +@@ -98,9 +98,7 @@ if test "$PORTNAME" = "win32" ; then + fi + fi + else +- pgac_tmp1=`$PERL -MExtUtils::Embed -e ldopts` +- pgac_tmp2=`$PERL -MConfig -e 'print $Config{ccdlflags}'` +- perl_embed_ldflags=`echo X"$pgac_tmp1" | sed -e "s/^X//" -e "s%$pgac_tmp2%%" -e ["s/ -arch [-a-zA-Z0-9_]*//g"]` ++ perl_embed_ldflags=`$PERL -MExtUtils::Embed -e ldopts` + fi + AC_SUBST(perl_embed_ldflags)dnl + if test -z "$perl_embed_ldflags" ; then +Index: configure +=================================================================== +--- configure.orig ++++ configure +@@ -9696,9 +9696,7 @@ if test "$PORTNAME" = "win32" ; then + fi + fi + else +- pgac_tmp1=`$PERL -MExtUtils::Embed -e ldopts` +- pgac_tmp2=`$PERL -MConfig -e 'print $Config{ccdlflags}'` +- perl_embed_ldflags=`echo X"$pgac_tmp1" | sed -e "s/^X//" -e "s%$pgac_tmp2%%" -e "s/ -arch [-a-zA-Z0-9_]*//g"` ++ perl_embed_ldflags=`$PERL -MExtUtils::Embed -e ldopts` + fi + if test -z "$perl_embed_ldflags" ; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 diff --git a/postgresql-regress.patch b/postgresql-regress.patch new file mode 100644 index 0000000..4b0415c --- /dev/null +++ b/postgresql-regress.patch @@ -0,0 +1,70 @@ +Index: src/test/regress/expected/horology.out +=================================================================== +--- src/test/regress/expected/horology.out.orig ++++ src/test/regress/expected/horology.out +@@ -652,26 +652,26 @@ SELECT (timestamp with time zone 'tomorr + (1 row) + + -- timestamp with time zone, interval arithmetic around DST change +-SET TIME ZONE 'CST7CDT'; +-SELECT timestamp with time zone '2005-04-02 12:00-07' + interval '1 day' as "Apr 3, 12:00"; ++SET TIME ZONE 'CST6CDT'; ++SELECT timestamp with time zone '2005-04-02 12:00-06' + interval '1 day' as "Apr 3, 12:00"; + Apr 3, 12:00 + ------------------------------ + Sun Apr 03 12:00:00 2005 CDT + (1 row) + +-SELECT timestamp with time zone '2005-04-02 12:00-07' + interval '24 hours' as "Apr 3, 13:00"; ++SELECT timestamp with time zone '2005-04-02 12:00-06' + interval '24 hours' as "Apr 3, 13:00"; + Apr 3, 13:00 + ------------------------------ + Sun Apr 03 13:00:00 2005 CDT + (1 row) + +-SELECT timestamp with time zone '2005-04-03 12:00-06' - interval '1 day' as "Apr 2, 12:00"; ++SELECT timestamp with time zone '2005-04-03 12:00-05' - interval '1 day' as "Apr 2, 12:00"; + Apr 2, 12:00 + ------------------------------ + Sat Apr 02 12:00:00 2005 CST + (1 row) + +-SELECT timestamp with time zone '2005-04-03 12:00-06' - interval '24 hours' as "Apr 2, 11:00"; ++SELECT timestamp with time zone '2005-04-03 12:00-05' - interval '24 hours' as "Apr 2, 11:00"; + Apr 2, 11:00 + ------------------------------ + Sat Apr 02 11:00:00 2005 CST +Index: src/test/regress/pg_regress.c +=================================================================== +--- src/test/regress/pg_regress.c.orig ++++ src/test/regress/pg_regress.c +@@ -64,7 +64,7 @@ static char *shellprog = SHELLPROG; + */ + #ifndef WIN32 + const char *basic_diff_opts = ""; +-const char *pretty_diff_opts = "-U3"; ++const char *pretty_diff_opts = "-U5"; + #else + const char *basic_diff_opts = "-w"; + const char *pretty_diff_opts = "-w -U3"; +Index: src/test/regress/sql/horology.sql +=================================================================== +--- src/test/regress/sql/horology.sql.orig ++++ src/test/regress/sql/horology.sql +@@ -122,11 +122,11 @@ SELECT (timestamp with time zone 'tomorr + SELECT (timestamp with time zone 'tomorrow' > 'now') as "True"; + + -- timestamp with time zone, interval arithmetic around DST change +-SET TIME ZONE 'CST7CDT'; +-SELECT timestamp with time zone '2005-04-02 12:00-07' + interval '1 day' as "Apr 3, 12:00"; +-SELECT timestamp with time zone '2005-04-02 12:00-07' + interval '24 hours' as "Apr 3, 13:00"; +-SELECT timestamp with time zone '2005-04-03 12:00-06' - interval '1 day' as "Apr 2, 12:00"; +-SELECT timestamp with time zone '2005-04-03 12:00-06' - interval '24 hours' as "Apr 2, 11:00"; ++SET TIME ZONE 'CST6CDT'; ++SELECT timestamp with time zone '2005-04-02 12:00-06' + interval '1 day' as "Apr 3, 12:00"; ++SELECT timestamp with time zone '2005-04-02 12:00-06' + interval '24 hours' as "Apr 3, 13:00"; ++SELECT timestamp with time zone '2005-04-03 12:00-05' - interval '1 day' as "Apr 2, 12:00"; ++SELECT timestamp with time zone '2005-04-03 12:00-05' - interval '24 hours' as "Apr 2, 11:00"; + RESET TIME ZONE; + + diff --git a/postgresql-rpmlintrc b/postgresql-rpmlintrc new file mode 100644 index 0000000..3206290 --- /dev/null +++ b/postgresql-rpmlintrc @@ -0,0 +1,7 @@ +addFilter("useless-explicit-provides") +addFilter("unnecessary-buildrequires") +addFilter("patch-not-applied") +addFilter("non-standard-uid") +addFilter("file-not-in-%lang") +addFilter("no-dependency-on") +addFilter("no-soname") diff --git a/postgresql-testsuite-int8.sql.patch b/postgresql-testsuite-int8.sql.patch new file mode 100644 index 0000000..1d651a5 --- /dev/null +++ b/postgresql-testsuite-int8.sql.patch @@ -0,0 +1,54 @@ +commit a210bee6273041cf9773383e2dda58a7d7c84be4 +Author: yac +Date: Fri Mar 8 17:56:58 2013 +0100 + + + SET LC_ + +Index: postgresql-11beta1/src/test/regress/expected/int8.out +=================================================================== +--- postgresql-11beta1.orig/src/test/regress/expected/int8.out ++++ postgresql-11beta1/src/test/regress/expected/int8.out +@@ -580,6 +580,7 @@ SELECT '' AS to_char_12, to_char(q2, 'FM + | -4567890123456789.000 + (5 rows) + ++SET LC_MONETARY='C'; + SELECT '' AS to_char_13, to_char(q2, 'L9999999999999999.000') FROM INT8_TBL; + to_char_13 | to_char + ------------+------------------------ +Index: postgresql-11beta1/src/test/regress/expected/numeric.out +=================================================================== +--- postgresql-11beta1.orig/src/test/regress/expected/numeric.out ++++ postgresql-11beta1/src/test/regress/expected/numeric.out +@@ -1079,6 +1079,7 @@ SELECT '' AS to_char_15, to_char(val, 'F + | -24926804.04504742 + (10 rows) + ++SET LC_MONETARY='C'; + SELECT '' AS to_char_16, to_char(val, 'L9999999999999999.099999999999999') FROM num_data; + to_char_16 | to_char + ------------+------------------------------------ +Index: postgresql-11beta1/src/test/regress/sql/int8.sql +=================================================================== +--- postgresql-11beta1.orig/src/test/regress/sql/int8.sql ++++ postgresql-11beta1/src/test/regress/sql/int8.sql +@@ -116,6 +116,7 @@ SELECT '' AS to_char_9, to_char(q2, '09 + SELECT '' AS to_char_10, to_char(q2, 'S0999999999999999') FROM INT8_TBL; + SELECT '' AS to_char_11, to_char(q2, 'FM0999999999999999') FROM INT8_TBL; + SELECT '' AS to_char_12, to_char(q2, 'FM9999999999999999.000') FROM INT8_TBL; ++SET LC_MONETARY='C'; + SELECT '' AS to_char_13, to_char(q2, 'L9999999999999999.000') FROM INT8_TBL; + SELECT '' AS to_char_14, to_char(q2, 'FM9999999999999999.999') FROM INT8_TBL; + SELECT '' AS to_char_15, to_char(q2, 'S 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 . 9 9 9') FROM INT8_TBL; +Index: postgresql-11beta1/src/test/regress/sql/numeric.sql +=================================================================== +--- postgresql-11beta1.orig/src/test/regress/sql/numeric.sql ++++ postgresql-11beta1/src/test/regress/sql/numeric.sql +@@ -773,6 +773,7 @@ SELECT '' AS to_char_12, to_char(val, 'F + SELECT '' AS to_char_13, to_char(val, 'FM9999999999990999.990999999999999') FROM num_data; + SELECT '' AS to_char_14, to_char(val, 'FM0999999999999999.999909999999999') FROM num_data; + SELECT '' AS to_char_15, to_char(val, 'FM9999999990999999.099999999999999') FROM num_data; ++SET LC_MONETARY='C'; + SELECT '' AS to_char_16, to_char(val, 'L9999999999999999.099999999999999') FROM num_data; + SELECT '' AS to_char_17, to_char(val, 'FM9999999999999999.99999999999999') FROM num_data; + SELECT '' AS to_char_18, to_char(val, 'S 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 . 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9') FROM num_data; diff --git a/postgresql-testsuite-keep-results-file.patch b/postgresql-testsuite-keep-results-file.patch new file mode 100644 index 0000000..0cfcec3 --- /dev/null +++ b/postgresql-testsuite-keep-results-file.patch @@ -0,0 +1,18 @@ +commit 463154c669010cffc0e96b683576f1e879b61d8b +Author: yac +Date: Mon Mar 11 18:42:39 2013 +0100 + + don't unlink the result file + +Index: postgresql-12beta2/src/test/regress/pg_regress.c +=================================================================== +--- postgresql-12beta2.orig/src/test/regress/pg_regress.c ++++ postgresql-12beta2/src/test/regress/pg_regress.c +@@ -2597,7 +2597,6 @@ regression_main(int argc, char *argv[], + else + { + unlink(difffilename); +- unlink(logfilename); + } + + if (fail_count != 0) diff --git a/postgresql-var-run-socket.patch b/postgresql-var-run-socket.patch new file mode 100644 index 0000000..0443d7e --- /dev/null +++ b/postgresql-var-run-socket.patch @@ -0,0 +1,69 @@ +Change the built-in default socket directory to be /var/run/postgresql. +For backwards compatibility with (probably non-libpq-based) clients that +might still expect to find the socket in /tmp, also create a socket in +/tmp. This is to resolve communication problems with clients operating +under systemd's PrivateTmp environment, which won't be using the same +global /tmp directory as the server; see bug #825448. + +Note that we apply the socket directory change at the level of the +hard-wired defaults in the C code, not by just twiddling the setting in +postgresql.conf.sample; this is so that the change will take effect on +server package update, without requiring any existing postgresql.conf +to be updated. (Of course, a user who dislikes this behavior can still +override it via postgresql.conf.) + + +Index: src/bin/pg_upgrade/test.sh +=================================================================== +--- src/bin/pg_upgrade/test.sh.orig ++++ src/bin/pg_upgrade/test.sh +@@ -64,7 +64,9 @@ case $testhost in + ;; + esac + +-POSTMASTER_OPTS="-F -c listen_addresses=\"$LISTEN_ADDRESSES\" -k \"$PGHOST\"" ++# we want the Unix sockets in $temp_root ++PGHOST=$temp_root ++POSTMASTER_OPTS="-F -c listen_addresses=\"$LISTEN_ADDRESSES\" -k \"$PGHOST\" -c unix_socket_directories='$PGHOST'" + export PGHOST + + # don't rely on $PWD here, as old shells don't set it +Index: src/backend/utils/misc/guc.c +=================================================================== +--- src/backend/utils/misc/guc.c.orig ++++ src/backend/utils/misc/guc.c +@@ -3954,7 +3954,7 @@ static struct config_string ConfigureNam + }, + &Unix_socket_directories, + #ifdef HAVE_UNIX_SOCKETS +- DEFAULT_PGSOCKET_DIR, ++ DEFAULT_PGSOCKET_DIR ", /tmp", + #else + "", + #endif +Index: src/bin/initdb/initdb.c +=================================================================== +--- src/bin/initdb/initdb.c.orig ++++ src/bin/initdb/initdb.c +@@ -1103,7 +1103,7 @@ setup_config(void) + + #ifdef HAVE_UNIX_SOCKETS + snprintf(repltok, sizeof(repltok), "#unix_socket_directories = '%s'", +- DEFAULT_PGSOCKET_DIR); ++ DEFAULT_PGSOCKET_DIR ", /tmp"); + #else + snprintf(repltok, sizeof(repltok), "#unix_socket_directories = ''"); + #endif +Index: src/include/pg_config_manual.h +=================================================================== +--- src/include/pg_config_manual.h.orig ++++ src/include/pg_config_manual.h +@@ -179,7 +179,7 @@ + * here's where to twiddle it. You can also override this at runtime + * with the postmaster's -k switch. + */ +-#define DEFAULT_PGSOCKET_DIR "/tmp" ++#define DEFAULT_PGSOCKET_DIR "/var/run/postgresql" + + /* + * This is the default event source for Windows event log. diff --git a/postgresql12.changes b/postgresql12.changes new file mode 100644 index 0000000..7ab683a --- /dev/null +++ b/postgresql12.changes @@ -0,0 +1,5 @@ +------------------------------------------------------------------- +Mon Oct 7 09:03:24 UTC 2019 - Marcus Rueckert + +- initial package for the postgresql 12 branch + https://www.postgresql.org/about/news/1976/ diff --git a/postgresql12.spec b/postgresql12.spec new file mode 100644 index 0000000..9e78a46 --- /dev/null +++ b/postgresql12.spec @@ -0,0 +1,839 @@ +# +# spec file for package postgresql11 +# +# Copyright (c) 2019 SUSE LINUX GmbH, Nuernberg, Germany. +# +# All modifications and additions to the file contributed by third parties +# remain the property of their copyright owners, unless otherwise agreed +# upon. The license for this file, and modifications and additions to the +# file, is the same license as for the pristine package itself (unless the +# license for the pristine package is not an Open Source License, in which +# case the license is the MIT License). An "Open Source License" is a +# license that conforms to the Open Source Definition (Version 1.9) +# published by the Open Source Initiative. + +# Please submit bugfixes or comments via https://bugs.opensuse.org/ +# + + +%if 0%{?suse_version} >= 1300 +%bcond_without systemd +%else +%bcond_with systemd +%endif +%if 0%{?suse_version} >= 1500 +%bcond_without systemd_notify +%bcond_without llvm +%else +%bcond_with systemd_notify +%bcond_with llvm +%endif + +%bcond_without selinux +%bcond_without icu +%ifnarch %arm +%bcond_without check +%else +%bcond_with check +%endif + +%define pgmajor 12 +%define pgname postgresql%pgmajor +%define priority %{pgmajor} +%define libpq libpq5 +%define libecpg libecpg6 +%define libpq_so libpq.so.5 +%define libecpg_so libecpg.so.6 +%define pgbasedir %_prefix/lib/%pgname +%define pgtestdir %pgbasedir/test +%define pgbindir %pgbasedir/bin +%define pglibdir %pgbasedir/%_lib +%define pgincludedir %_includedir/pgsql +%define pgdatadir %_datadir/%pgname +%define pgdocdir %_docdir/%pgname +%define pgextensiondir %pgdatadir/extension +%define pgcontribdir %pgdatadir/contrib +%define pgmandir %_mandir + +%if "@BUILD_FLAVOR@" == "libs" +Name: %pgname-libs +%define buildmain 0 +%define buildlibs 1 +%define builddevel 1 +%else +Name: %pgname +%define buildmain 1 +%define buildlibs 0 +%define builddevel 0 +%endif + +%if %buildmain +BuildRequires: docbook_4 +BuildRequires: gettext-devel +BuildRequires: libuuid-devel +BuildRequires: ncurses-devel +BuildRequires: pam-devel +BuildRequires: python3-devel +BuildRequires: readline-devel +BuildRequires: tcl-devel +BuildRequires: timezone +BuildRequires: zlib-devel +# +%endif + +BuildRequires: fdupes +%if %{with icu} +BuildRequires: libicu-devel +%endif +%if %{with selinux} +BuildRequires: libselinux-devel +%endif +%if %{with llvm} +BuildRequires: clang-devel +BuildRequires: gcc-c++ +BuildRequires: llvm-devel +%endif +BuildRequires: libxslt-devel +BuildRequires: openldap2-devel +BuildRequires: openssl-devel +BuildRequires: pkg-config +%if 0%{?suse_version} == 1110 +BuildRequires: krb5-devel +%else +BuildRequires: pkgconfig(krb5) +%endif +%if %{with systemd_notify} +BuildRequires: pkgconfig(libsystemd) +BuildRequires: pkgconfig(systemd) +%endif +#!BuildIgnore: %pgname +#!BuildIgnore: %pgname-server +#!BuildIgnore: postgresql-implementation +#!BuildIgnore: postgresql-server-implementation +Summary: Basic Clients and Utilities for PostgreSQL +License: PostgreSQL +Group: Productivity/Databases/Tools +Version: 12.0 +Release: 0 +%define pkg_version 12.0 +Source0: https://ftp.postgresql.org/pub/source/v%{version}/postgresql-%{pkg_version}.tar.bz2 +Source1: https://ftp.postgresql.org/pub/source/v%{version}/postgresql-%{pkg_version}.tar.bz2.sha256 +Source2: baselibs.conf +Source3: postgresql-README.SUSE +Source17: postgresql-rpmlintrc +Source18: series +Patch1: postgresql-conf.patch +Patch2: postgresql-regress.patch +# PL/Perl needs to be linked with rpath (bsc#578053) +Patch4: postgresql-plperl-keep-rpath.patch +Patch6: postgresql-testsuite-int8.sql.patch +Patch8: postgresql-testsuite-keep-results-file.patch +Patch9: postgresql-var-run-socket.patch +Url: https://www.postgresql.org/ +BuildRoot: %{_tmppath}/%{name}-%{version}-build +Provides: postgresql = %version-%release +Provides: postgresql-implementation = %version-%release +Requires: %libpq >= %version +Requires(post): postgresql-noarch >= %pgmajor +Requires(postun): postgresql-noarch >= %pgmajor + +%description +PostgreSQL is an advanced object-relational database management system +that supports an extended subset of the SQL standard, including +transactions, foreign keys, subqueries, triggers, and user-defined +types and functions. + +This package contains the basic utility and client programs necessary +to maintain and work with local or remote PostgreSQL databases as well +as manual pages for the SQL commands that PostgreSQL supports. Full +HTML documentation for PostgreSQL can be found in the postgresql-docs +package. + +%package -n %libpq +Summary: Shared Libraries Required for PostgreSQL Clients +Group: Productivity/Databases/Clients +Provides: postgresql-libs:%_libdir/libpq.so.5 +Obsoletes: postgresql-libs < %version +# bug437293 +%if "%_lib" == "lib64" +Conflicts: %libpq-32bit < %version +%endif +%ifarch ia64 +Conflicts: %libpq-x86 < %version +%endif +%ifarch ppc64 +Obsoletes: postgresql-libs-64bit +%endif + +%description -n %libpq + +PostgreSQL is an advanced object-relational database management system +that supports an extended subset of the SQL standard, including +transactions, foreign keys, subqueries, triggers, user-defined types +and functions. + +This package provides the client library that most PostgreSQL client +program or language bindings are using. + +%package -n %libecpg + +Summary: Shared Libraries Required for PostgreSQL Clients +Group: Productivity/Databases/Clients +Provides: postgresql-libs:%_libdir/libecpg.so.6 + +%description -n %libecpg +PostgreSQL is an advanced object-relational database management system +that supports an extended subset of the SQL standard, including +transactions, foreign keys, subqueries, triggers, user-defined types +and functions. + +This package provides the runtime library of the embedded SQL C +preprocessor for PostgreSQL. + +%if %builddevel +%package -n %pgname-devel +Summary: PostgreSQL client development header files and libraries +Group: Development/Libraries/C and C++ +Provides: postgresql-devel-implementation = %version-%release +Requires: %libecpg >= %version +Requires: %libpq >= %version +Requires(post): postgresql-noarch >= %pgmajor +Requires(postun): postgresql-noarch >= %pgmajor +# Installation of postgresql??-devel is exclusive +Provides: postgresql-devel-exclusive = %pgmajor +Conflicts: postgresql-devel-exclusive < %pgmajor + +%description -n %pgname-devel +PostgreSQL is an advanced object-relational database management system +that supports an extended subset of the SQL standard, including +transactions, foreign keys, subqueries, triggers, and user-defined +types and functions. + +This package contains the header files and libraries needed to compile +C applications which will directly interact with a PostgreSQL database +management server and the ECPG Embedded C Postgres preprocessor. You +need to install this package if you want to develop applications in C +which will interact with a PostgreSQL server. + +For building PostgreSQL server extensions, see the +postgresql%pgmajor-server-devel package. + +%endif + +%if %buildmain + +%package server +Summary: The Programs Needed to Create and Run a PostgreSQL Server +Group: Productivity/Databases/Servers +PreReq: /sbin/chkconfig +PreReq: postgresql = %version +Requires: glibc-locale +Requires: timezone +Recommends: %{name}-llvmjit +Provides: postgresql-server-implementation = %version-%release +Requires: %libpq >= %version +Requires(pre): postgresql-server-noarch >= %pgmajor +Requires(preun): postgresql-server-noarch >= %pgmajor +Requires(postun): postgresql-server-noarch >= %pgmajor +Requires(post): postgresql-noarch >= %pgmajor +Requires(postun): postgresql-noarch >= %pgmajor + +%description server +PostgreSQL is an advanced object-relational database management system +that supports an extended subset of the SQL standard, including +transactions, foreign keys, sub-queries, triggers, and user-defined +types and functions. + +This package includes the programs needed to create and run a +PostgreSQL server, which will in turn allow you to create and maintain +PostgreSQL databases. + +%package server-devel +Summary: PostgreSQL server development header files and utilities +Group: Development/Libraries/C and C++ +Provides: postgresql-server-devel = %version-%release +Provides: postgresql-server-devel-implementation = %version-%release +Requires(post): postgresql-server-noarch >= %pgmajor +Requires(postun): postgresql-server-noarch >= %pgmajor +Requires: %pgname-devel = %version +Requires: %pgname-server = %version-%release +# Installation of postgresql??-devel is exclusive +Provides: postgresql-server-devel-exclusive = %pgmajor +Conflicts: postgresql-server-devel-exclusive < %pgmajor +%if %{with llvm} +Requires: clang-devel +%endif + +%description server-devel +PostgreSQL is an advanced object-relational database management system +that supports an extended subset of the SQL standard, including +transactions, foreign keys, subqueries, triggers, and user-defined +types and functions. + +This package contains the header files and libraries needed to compile +C extensions that link into the PostgreSQL server. For building client +applications, see the postgresql%pgmajor-devel package. + +%if %{with llvm} +%package llvmjit +Summary: Just-in-time compilation support for PostgreSQL +Group: Productivity/Databases/Servers +Provides: postgresql-llvmjit-implementation = %version-%release +Requires: %pgname-server = %version-%release +Requires: postgresql-llvmjit-noarch >= %pgmajor + +%description llvmjit +PostgreSQL is an advanced object-relational database management system +that supports an extended subset of the SQL standard, including +transactions, foreign keys, sub-queries, triggers, and user-defined +types and functions. + +This package contains support for just-in-time compiling parts of +PostgreSQL queries. Using LLVM it compiles e.g. expressions and tuple +deforming into native code, with the goal of accelerating analytics +queries. +%endif + +%package test +Summary: The test suite for PostgreSQL +Group: Productivity/Databases/Servers +Provides: postgresql-test-implementation = %version-%release +Requires: %pgname-server = %version +Requires: postgresql-test-noarch >= %pgmajor + +%description test +This package contains the sources and pre-built binaries of various +tests for the PostgreSQL database management system, including +regression tests and benchmarks. + +%package docs +Summary: HTML Documentation for PostgreSQL +Group: Productivity/Databases/Tools +Provides: postgresql-docs-implementation = %version-%release +Requires: postgresql-docs-noarch >= %pgmajor +%if 0%{?suse_version} >= 1120 +BuildArch: noarch +%endif + +%description docs +PostgreSQL is an advanced object-relational database management system +that supports an extended subset of the SQL standard, including +transactions, foreign keys, subqueries, triggers, and user-defined +types and functions. + +This package contains the HTML documentation for PostgreSQL. The start +page is: file:///usr/share/doc/packages/%pgname/html/index.html . +Manual pages for the PostgreSQL SQL statements can be found in the +postgresql package. + +%package contrib +Summary: Contributed Extensions and Additions to PostgreSQL +Group: Productivity/Databases/Tools +Provides: postgresql-contrib-implementation = %version-%release +Requires: postgresql-contrib-noarch >= %pgmajor +Requires(post): %pgname >= %pgmajor +Requires: %pgname >= %pgmajor +PreReq: %pgname-server = %version-%release + +%description contrib +PostgreSQL is an advanced object-relational database management system +that supports an extended subset of the SQL standard, including +transactions, foreign keys, subqueries, triggers, and user-defined +types and functions. + +The postgresql-contrib package includes extensions and additions that +are distributed along with the PostgreSQL sources, but are not (yet) +officially part of the PostgreSQL core. + +Documentation for the modules contained in this package can be found in +/usr/share/doc/packages/postgresql/contrib. + +%package plperl +Summary: The PL/Tcl, PL/Perl, and PL/Python procedural languages for PostgreSQL +Group: Productivity/Databases/Servers +Provides: postgresql-plperl-implementation = %version-%release +Requires: %pgname-server = %version-%release +Requires: perl = %perl_version +Requires: postgresql-plperl-noarch >= %pgmajor + +%description plperl +This package contains the the PL/Tcl, PL/Perl, and PL/Python procedural +languages for the back-end. With these modules one can use Perl, +Python, and Tcl to write stored procedures, functions and triggers. + +PostgreSQL also offers the builtin procedural language PL/SQL. + +%package plpython +Summary: The PL/Python Procedural Languages for PostgreSQL +Group: Productivity/Databases/Servers +Provides: postgresql-plpython-implementation = %version-%release +Requires: %pgname-server = %version-%release +Requires: postgresql-plpython-noarch >= %pgmajor +Requires: python + +%description plpython +PostgreSQL is an advanced object-relational database management system +that supports an extended subset of the SQL standard, including +transactions, foreign keys, subqueries, triggers, and user-defined +types and functions. + +This package contains the PL/Python procedural language for PostgreSQL. +With this module one can use Python to write stored procedures, +functions, and triggers. + +PostgreSQL also offers the built-in procedural language PL/SQL which is +included in the postgresql-server package. + +%package pltcl +Summary: PL/Tcl Procedural Language for PostgreSQL +Group: Productivity/Databases/Tools +Provides: postgresql-pltcl-implementation = %version-%release +Requires: %pgname-server = %version +Requires: postgresql-pltcl-noarch >= %pgmajor +Requires: tcl + +%description pltcl +PostgreSQL is an advanced object-relational database management system +that supports an extended subset of the SQL standard, including +transactions, foreign keys, subqueries, triggers, and user-defined +types and functions. + +This package contains the PL/Tcl procedural language for PostgreSQL. +With thie module one can use Tcl to write stored procedures, functions, +and triggers. + +PostgreSQL also offers the built-in procedural language PL/SQL which is +included in the postgresql-server package. + +%endif + +%prep +%setup -q -n postgresql-%pkg_version +# Keep the timestamp of configure, because patching it would otherwise +# confuse PostgreSQL's build system +touch -r configure tmp +%patch1 +%patch2 +%patch4 +%patch6 -p1 +%patch8 -p1 +%patch9 +touch -r tmp configure +rm tmp +find src/test/ -name '*.orig' -delete +find -name .gitignore -delete + +%build +%global _lto_cflags %{_lto_cflags} -ffat-lto-objects +export PYTHON=python3 +PACKAGE_TARNAME=%pgname %configure \ + --bindir=%pgbindir \ + --libdir=%pglibdir \ + --includedir=%pgincludedir \ + --datadir=%pgdatadir \ + --docdir=%pgdocdir \ + --mandir=%pgmandir \ + --disable-rpath \ + --enable-nls \ + --enable-thread-safety \ + --enable-integer-datetimes \ +%if %buildmain + --with-python \ + --with-perl \ + --with-tcl \ + --with-tclconfig=%_libdir \ + --with-pam \ + --with-uuid=e2fs \ + --with-libxml \ + --with-libxslt \ +%if %{with systemd_notify} + --with-systemd \ +%endif +%if %{with selinux} + --with-selinux \ +%endif +%if %{with icu} + --with-icu \ +%endif +%if %{with llvm} + --with-llvm \ +%endif +%else + --without-readline \ +%endif + --with-openssl \ + --with-ldap \ + --with-gssapi \ + --with-krb5 \ + --with-system-tzdata=/usr/share/zoneinfo +%if !%buildmain +# Disabled smp_mflags as some dependencies are incorrect in the interfaces code are incorrect which leads to failed builds +make -C src/interfaces # %{?_smp_mflags} +%else +make %{?_smp_mflags} PACKAGE_TARNAME=%pgname + +%if %{with check} + +%check +# +# Run the regression tests. +# +make check || { + for f in src/test/regress/log/* {,src/test/regress/}regression.diffs; do + if test -f $f; then + cat $f + fi + done + exit 1 +} +%endif +%endif + +%install +%if %buildmain +make DESTDIR=%buildroot PACKAGE_TARNAME=%pgname install install-docs +mv %buildroot%pgincludedir/{server,..} +make DESTDIR=%buildroot PACKAGE_TARNAME=%pgname -C src/interfaces uninstall +rm -rf %buildroot%pgincludedir/* +mv %buildroot%pgincludedir{/../server,} + +# {{{ the test package +mkdir -p %buildroot%pgtestdir/regress +install -sm 0755 contrib/spi/{refint.so,autoinc.so} %buildroot%pgtestdir/regress +install -sm 0755 src/test/regress/{pg_regress,regress.so} %buildroot%pgtestdir/regress +for i in src/test/regress/{data,expected,input,output,sql}; do + cp -r $i %buildroot%pgtestdir/regress/ +done +install -m 0644 src/test/regress/{serial,parallel}_schedule %buildroot%pgtestdir/regress +# }}} +%endif +%if %builddevel || %buildlibs +make DESTDIR=%buildroot PACKAGE_TARNAME=%pgname -C src/include install +make DESTDIR=%buildroot PACKAGE_TARNAME=%pgname -C src/interfaces install +rm -rf %buildroot%pgincludedir/server +%endif + +# The client libraries go to libdir +mkdir -p %buildroot/%_libdir +ls %buildroot%pglibdir/lib* | + grep -v walreceiver | + xargs mv -t %buildroot/%_libdir +mv %buildroot%pglibdir/pkgconfig %buildroot%_libdir +find %buildroot%_libdir/pkgconfig -type f -exec sed -i 's, -L%pglibdir,,' '{}' + + +# Don't ship static libraries, +# libpgport.a and libpgcommon.a are needed, though. +rm -f $(ls %buildroot/%_libdir/*.a %buildroot%pglibdir/*.a | grep -F -v -e libpgport.a -e libpgcommon.a) +%if %buildmain +# +# Install and collect the contrib stuff +# +touch flag; sleep 1 # otherwise we have installed files that are not newer than flag +make DESTDIR=%buildroot -C contrib install +find %buildroot -type f -cnewer flag -printf "/%%P\n" | + grep -v -e %_docdir -e %pgbindir -e %pgincludedir -e %pglibdir/bitcode \ + > contrib.files +rm flag +install -d -m 750 %buildroot/var/lib/pgsql +install -d -m755 %buildroot%pgdocdir +cp doc/KNOWN_BUGS doc/MISSING_FEATURES COPYRIGHT \ + README HISTORY %buildroot%pgdocdir +cp -a %SOURCE3 %buildroot%pgdocdir/README.SUSE +# Use versioned names for the man pages: +for f in %buildroot%pgmandir/man*/*; do + mv $f ${f}pg%pgmajor +done +%endif + +mkdir -p %buildroot{%_bindir,%_mandir/man1} +mkdir -p %buildroot/etc/alternatives +genlists () +{ + # usage: genlists packagename basenames + PKG=$1 + shift + for f in $@ + do + BIN=%_bindir/$f + ALTBIN=/etc/alternatives/$f + PGBIN=%pgbindir/$f + MAN=%pgmandir/man1/$f.1* + + touch %buildroot$ALTBIN + ln -s $ALTBIN %buildroot$BIN + + echo "$PGBIN" >> $PKG.files + echo "$BIN" >> $PKG.files + echo "%ghost $ALTBIN" >> $PKG.files + test -e %buildroot$MAN && + echo "%doc $MAN" >> $PKG.files + %find_lang $f-%pgmajor $PKG.files ||: + done +} +%if %buildmain +genlists main \ + createdb clusterdb createuser dropdb \ + dropuser pg_dump pg_dumpall pg_restore pg_rewind psql vacuumdb \ + reindexdb pg_basebackup pg_receivewal pg_isready pg_recvlogical pg_checksums +%find_lang plpgsql-%pgmajor main.files +%find_lang pgscripts-%pgmajor main.files + +genlists server \ + initdb pg_ctl pg_controldata pg_resetwal pg_waldump postgres postmaster + +genlists server-devel \ + pg_config + +genlists contrib \ + oid2name pg_archivecleanup pg_standby pg_test_fsync pg_upgrade \ + pgbench vacuumlo pg_test_timing +for pl in plperl plpython pltcl; do + %find_lang $pl-%{pgmajor} $pl.lang +done +ln -s /etc/alternatives/postgresql %buildroot/usr/lib/postgresql +touch %buildroot/etc/alternatives/postgresql + +# Remove mostly unneeded buildtime requirements for server extensions +sed -i '/^LIBS = /s/= .*/=/' %buildroot/%pglibdir/pgxs/src/Makefile.global +%endif + +%if %builddevel +# Make sure we can also link agaist newer versions +pushd %buildroot%_libdir +for f in *.so; do + ln -sf $f.? $f +done +popd +mkdir -p %buildroot%pgmandir/man1 +cp -a doc/src/sgml/man1/ecpg.1 %buildroot%pgmandir/man1/ecpg.1pg%pgmajor +genlists devel ecpg + +# Build up the file lists for the libpq and libecpg packages +cat > libpq.files < libecpg.files <