summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.gitignore4
-rw-r--r--Makefile.regress69
-rw-r--r--generate-pdf.sh58
-rw-r--r--postgresql-14.11.tar.bz2.sha2561
-rw-r--r--postgresql-15.6.tar.bz2.sha2561
-rw-r--r--postgresql-bashprofile4
-rw-r--r--postgresql-datalayout-mismatch-on-s390.patch99
-rw-r--r--postgresql-external-libpq.patch43
-rw-r--r--postgresql-logging.patch32
-rw-r--r--postgresql-man.patch49
-rw-r--r--postgresql-no-libecpg.patch12
-rw-r--r--postgresql-pgcrypto-openssl3-tests.patch90
-rw-r--r--postgresql-server-pg_config.patch58
-rw-r--r--postgresql-var-run-socket.patch53
-rw-r--r--postgresql.pam3
-rw-r--r--postgresql.spec1414
-rw-r--r--postgresql.tmpfiles.d1
-rw-r--r--rpm-pgsql.patch72
-rw-r--r--sources4
19 files changed, 2067 insertions, 0 deletions
diff --git a/.gitignore b/.gitignore
index e69de29..691f506 100644
--- a/.gitignore
+++ b/.gitignore
@@ -0,0 +1,4 @@
+/postgresql-14.11.tar.bz2
+/postgresql-15.6-US.pdf
+/postgresql-15.6.tar.bz2
+/postgresql-setup-8.8.tar.gz
diff --git a/Makefile.regress b/Makefile.regress
new file mode 100644
index 0000000..95bc589
--- /dev/null
+++ b/Makefile.regress
@@ -0,0 +1,69 @@
+#
+# Simplified makefile for running the PostgreSQL regression tests
+# in an RPM installation
+#
+
+# maximum simultaneous connections for parallel tests
+MAXCONNOPT =
+ifdef MAX_CONNECTIONS
+MAXCONNOPT += --max-connections=$(MAX_CONNECTIONS)
+endif
+
+# locale
+NOLOCALE =
+ifdef NO_LOCALE
+NOLOCALE += --no-locale
+endif
+
+srcdir := .
+
+REGRESS_OPTS += --dlpath=.
+
+pg_regress_locale_flags = $(if $(ENCODING),--encoding=$(ENCODING)) $(NOLOCALE)
+
+pg_regress_installcheck = ./pg_regress --inputdir=$(srcdir) --bindir=@bindir@ $(pg_regress_locale_flags)
+
+# Test input and expected files. These are created by pg_regress itself, so we
+# don't have a rule to create them. We do need rules to clean them however.
+ifile_list := $(subst .source,, $(notdir $(wildcard $(srcdir)/input/*.source)))
+input_files := $(foreach file, $(ifile_list), sql/$(file).sql)
+ofile_list := $(subst .source,, $(notdir $(wildcard $(srcdir)/output/*.source)))
+output_files := $(foreach file, $(ofile_list), expected/$(file).out)
+
+abs_srcdir := $(shell pwd)
+abs_builddir := $(shell pwd)
+
+check: installcheck-parallel
+
+installcheck: cleandirs
+ $(pg_regress_installcheck) $(REGRESS_OPTS) --schedule=$(srcdir)/serial_schedule $(EXTRA_TESTS)
+
+installcheck-parallel: cleandirs
+ $(pg_regress_installcheck) $(REGRESS_OPTS) --schedule=$(srcdir)/parallel_schedule $(MAXCONNOPT) $(EXTRA_TESTS)
+
+# The tests command the server to write into testtablespace and results.
+# On a SELinux-enabled system this will fail unless we mark those directories
+# as writable by the server.
+cleandirs:
+ -rm -rf testtablespace results
+ mkdir testtablespace results
+ if test -x /usr/bin/chcon && ! test -f /.dockerenv; then \
+ /usr/bin/chcon -u system_u -r object_r -t postgresql_db_t testtablespace results ; \
+ fi
+
+# old interfaces follow...
+
+runcheck: check
+runtest: installcheck
+runtest-parallel: installcheck-parallel
+
+
+##
+## Clean up
+##
+
+clean distclean maintainer-clean:
+ rm -f $(output_files) $(input_files)
+ rm -rf testtablespace
+ rm -rf results tmp_check log
+ rm -f regression.diffs regression.out regress.out run_check.out
diff --git a/generate-pdf.sh b/generate-pdf.sh
new file mode 100644
index 0000000..e0ed008
--- /dev/null
+++ b/generate-pdf.sh
@@ -0,0 +1,58 @@
+#! /bin/sh
+
+# This script builds the PDF version of the PostgreSQL documentation.
+#
+# In principle we could do this as part of the RPM build, but there are
+# good reasons not to:
+# 1. The build would take longer and have a larger BuildRequires footprint.
+# 2. The generated PDF has timestamps in it, which would inevitably result
+# in multilib conflicts due to slightly different timestamps.
+# So instead, we run this manually when rebasing to a new upstream release,
+# and treat the resulting PDF as a separate Source file.
+#
+# You will need to have the docbook packages installed to run this.
+# Expect it to take about 20 minutes and use about 160MB of disk.
+
+set -e
+
+# Pass package version (e.g., 9.1.2) as argument
+VERSION=$1
+
+test -z "$VERSION" && VERSION=`awk '/^Version:/ { print $2; }' postgresql.spec`
+
+TARGETFILE=postgresql-$VERSION-US.pdf
+test -f "$TARGETFILE" && echo "$TARGETFILE exists" && exit 1
+
+echo Building $TARGETFILE ...
+
+# Unpack postgresql
+
+rm -rf postgresql-$VERSION
+
+tar xfj postgresql-$VERSION.tar.bz2
+
+cd postgresql-$VERSION
+
+# Apply any patches that affect the PDF documentation
+
+# patch -p1 < ../xxx.patch
+
+# Configure ...
+
+./configure >/dev/null
+
+# Build the PDF docs
+
+cd doc/src/sgml
+
+make postgres-US.pdf >make.log
+
+mv -f postgres-US.pdf ../../../../$TARGETFILE
+
+# Clean up
+
+cd ../../../..
+
+rm -rf postgresql-$VERSION
+
+exit 0
diff --git a/postgresql-14.11.tar.bz2.sha256 b/postgresql-14.11.tar.bz2.sha256
new file mode 100644
index 0000000..34cfe9a
--- /dev/null
+++ b/postgresql-14.11.tar.bz2.sha256
@@ -0,0 +1 @@
+a670bd7dce22dcad4297b261136b3b1d4a09a6f541719562aa14ca63bf2968a8 postgresql-14.11.tar.bz2
diff --git a/postgresql-15.6.tar.bz2.sha256 b/postgresql-15.6.tar.bz2.sha256
new file mode 100644
index 0000000..b9cc1cf
--- /dev/null
+++ b/postgresql-15.6.tar.bz2.sha256
@@ -0,0 +1 @@
+8455146ed9c69c93a57de954aead0302cafad035c2b242175d6aa1e17ebcb2fb postgresql-15.6.tar.bz2
diff --git a/postgresql-bashprofile b/postgresql-bashprofile
new file mode 100644
index 0000000..1cd70d3
--- /dev/null
+++ b/postgresql-bashprofile
@@ -0,0 +1,4 @@
+[ -f /etc/profile ] && source /etc/profile
+
+PGDATA=/var/lib/pgsql/data
+export PGDATA
diff --git a/postgresql-datalayout-mismatch-on-s390.patch b/postgresql-datalayout-mismatch-on-s390.patch
new file mode 100644
index 0000000..eef0378
--- /dev/null
+++ b/postgresql-datalayout-mismatch-on-s390.patch
@@ -0,0 +1,99 @@
+From 0edaa982336823d4d7af8f10b91579fe0099ef3d Mon Sep 17 00:00:00 2001
+From: Tom Stellard <tstellar@redhat.com>
+Date: Tue, 20 Apr 2021 20:14:21 -0700
+Subject: [PATCH] jit: Workaround potential datalayout mismatch on s390x
+
+LLVM's s390x target uses a different datalayout for z13 and newer processors.
+If llvmjit_types.bc is compiled to target a processor older than z13, and
+then the JIT runs on a z13 or newer processor, then there will be a mismatch
+in datalayouts between llvmjit_types.bc and the JIT engine. This mismatch
+causes the JIT to fail at runtime.
+---
+ src/backend/jit/llvm/llvmjit.c | 46 ++++++++++++++++++++++++++++++++--
+ 1 file changed, 44 insertions(+), 2 deletions(-)
+
+diff --git a/src/backend/jit/llvm/llvmjit.c b/src/backend/jit/llvm/llvmjit.c
+index 98a27f08bf..05b6438ba8 100644
+--- a/src/backend/jit/llvm/llvmjit.c
++++ b/src/backend/jit/llvm/llvmjit.c
+@@ -776,6 +776,35 @@ llvm_compile_module(LLVMJitContext *context)
+ errhidecontext(true)));
+ }
+
++/*
++ * For the systemz target, LLVM uses a different datalayout for z13 and newer
++ * CPUs than it does for older CPUs. This can cause a mismatch in datalayouts
++ * in the case where the llvm_types_module is compiled with a pre-z13 CPU
++ * and the JIT is running on z13 or newer.
++ * See computeDataLayout() function in
++ * llvm/lib/Target/SystemZ/SystemZTargetMachine.cpp for information on the
++ * datalayout differences.
++ */
++static bool
++needs_systemz_workaround(void)
++{
++ bool ret = false;
++ LLVMContextRef llvm_context;
++ LLVMTypeRef vec_type;
++ LLVMTargetDataRef llvm_layoutref;
++ if (strncmp(LLVMGetTargetName(llvm_targetref), "systemz", strlen("systemz")))
++ {
++ return false;
++ }
++
++ llvm_context = LLVMGetModuleContext(llvm_types_module);
++ vec_type = LLVMVectorType(LLVMIntTypeInContext(llvm_context, 32), 4);
++ llvm_layoutref = LLVMCreateTargetData(llvm_layout);
++ ret = (LLVMABIAlignmentOfType(llvm_layoutref, vec_type) == 16);
++ LLVMDisposeTargetData(llvm_layoutref);
++ return ret;
++}
++
+ /*
+ * Per session initialization.
+ */
+@@ -785,6 +814,7 @@ llvm_session_initialize(void)
+ MemoryContext oldcontext;
+ char *error = NULL;
+ char *cpu = NULL;
++ char *host_features = NULL;
+ char *features = NULL;
+ LLVMTargetMachineRef opt0_tm;
+ LLVMTargetMachineRef opt3_tm;
+@@ -816,10 +846,17 @@ llvm_session_initialize(void)
+ * features not all CPUs have (weird, huh).
+ */
+ cpu = LLVMGetHostCPUName();
+- features = LLVMGetHostCPUFeatures();
++ features = host_features = LLVMGetHostCPUFeatures();
+ elog(DEBUG2, "LLVMJIT detected CPU \"%s\", with features \"%s\"",
+ cpu, features);
+
++ if (needs_systemz_workaround())
++ {
++ const char *no_vector =",-vector";
++ features = malloc(sizeof(char) * (strlen(host_features) + strlen(no_vector) + 1));
++ sprintf(features, "%s%s", host_features, no_vector);
++ }
++
+ opt0_tm =
+ LLVMCreateTargetMachine(llvm_targetref, llvm_triple, cpu, features,
+ LLVMCodeGenLevelNone,
+@@ -833,8 +870,13 @@ llvm_session_initialize(void)
+
+ LLVMDisposeMessage(cpu);
+ cpu = NULL;
+- LLVMDisposeMessage(features);
++ if (features != host_features)
++ {
++ free(features);
++ }
+ features = NULL;
++ LLVMDisposeMessage(host_features);
++ host_features = NULL;
+
+ /* force symbols in main binary to be loaded */
+ LLVMLoadLibraryPermanently(NULL);
+--
+2.27.0
+
diff --git a/postgresql-external-libpq.patch b/postgresql-external-libpq.patch
new file mode 100644
index 0000000..ba7ef73
--- /dev/null
+++ b/postgresql-external-libpq.patch
@@ -0,0 +1,43 @@
+We don't build/install interfaces by upstream's implicit rules.
+
+This patch is used on two places; postgresql.spec and libecpg.spec -- keep those
+in sync!
+
+Related: rhbz#1618698
+
+diff --git a/src/Makefile b/src/Makefile
+index bcdbd95..4bea236 100644
+--- a/src/Makefile
++++ b/src/Makefile
+@@ -20,7 +20,6 @@ SUBDIRS = \
+ backend/utils/mb/conversion_procs \
+ backend/snowball \
+ include \
+- interfaces \
+ backend/replication/libpqwalreceiver \
+ backend/replication/pgoutput \
+ fe_utils \
+diff --git a/src/Makefile.global.in b/src/Makefile.global.in
+index b9d86ac..29df69f 100644
+--- a/src/Makefile.global.in
++++ b/src/Makefile.global.in
+@@ -549,7 +549,7 @@ endif
+ # How to link to libpq. (This macro may be used as-is by backend extensions.
+ # Client-side code should go through libpq_pgport or libpq_pgport_shlib,
+ # instead.)
+-libpq = -L$(libpq_builddir) -lpq
++libpq = -lpq
+
+ # libpq_pgport is for use by client executables (not libraries) that use libpq.
+ # We force clients to pull symbols from the non-shared libraries libpgport
+@@ -579,7 +579,6 @@ endif
+ # Commonly used submake targets
+
+ submake-libpq: | submake-generated-headers
+- $(MAKE) -C $(libpq_builddir) all
+
+ submake-libpgport: | submake-generated-headers
+ $(MAKE) -C $(top_builddir)/src/port all
+--
+2.21.0
+
diff --git a/postgresql-logging.patch b/postgresql-logging.patch
new file mode 100644
index 0000000..c4fac84
--- /dev/null
+++ b/postgresql-logging.patch
@@ -0,0 +1,32 @@
+diff -up postgresql-15.0_original/src/backend/utils/misc/postgresql.conf.sample postgresql-15.0/src/backend/utils/misc/postgresql.conf.sample
+--- postgresql-15.0_original/src/backend/utils/misc/postgresql.conf.sample 2022-09-27 16:57:00.652909198 +0200
++++ postgresql-15.0/src/backend/utils/misc/postgresql.conf.sample 2022-09-27 17:01:56.073606108 +0200
+@@ -449,7 +449,7 @@
+ # logging_collector to be on.
+
+ # This is used when logging to stderr:
+-#logging_collector = off # Enable capturing of stderr, jsonlog,
++logging_collector = on # Enable capturing of stderr, jsonlog,
+ # and csvlog into log files. Required
+ # to be on for csvlogs and jsonlogs.
+ # (change requires restart)
+@@ -457,16 +457,16 @@
+ # These are only used if logging_collector is on:
+ #log_directory = 'log' # directory where log files are written,
+ # can be absolute or relative to PGDATA
+-#log_filename = 'postgresql-%Y-%m-%d_%H%M%S.log' # log file name pattern,
++log_filename = 'postgresql-%a.log' # log file name pattern,
+ # can include strftime() escapes
+ #log_file_mode = 0600 # creation mode for log files,
+ # begin with 0 to use octal notation
+-#log_rotation_age = 1d # Automatic rotation of logfiles will
++log_rotation_age = 1d # Automatic rotation of logfiles will
+ # happen after that time. 0 disables.
+ #log_rotation_size = 10MB # Automatic rotation of logfiles will
+ # happen after that much log output.
+ # 0 disables.
+-#log_truncate_on_rotation = off # If on, an existing log file with the
++log_truncate_on_rotation = on # If on, an existing log file with the
+ # same name as the new log file will be
+ # truncated rather than appended to.
+ # But such truncation only occurs on
diff --git a/postgresql-man.patch b/postgresql-man.patch
new file mode 100644
index 0000000..6b0ed00
--- /dev/null
+++ b/postgresql-man.patch
@@ -0,0 +1,49 @@
+PostgreSQL ecpg/initdb manual page fixes
+
+This was generated based on automatic Red Hat manual page scan (private
+RHBZ#948933).
+
+diff -up postgresql-13.1/doc/src/sgml/man1/ecpg.1.patch6 postgresql-13.1/doc/src/sgml/man1/ecpg.1
+--- postgresql-13.1/doc/src/sgml/man1/ecpg.1.patch6 2020-11-09 23:38:03.000000000 +0100
++++ postgresql-13.1/doc/src/sgml/man1/ecpg.1 2020-11-18 09:26:40.547324791 +0100
+@@ -81,6 +81,11 @@ ORACLE\&.
+ Define a C preprocessor symbol\&.
+ .RE
+ .PP
++\fB\-h \fR
++.RS 4
++Parse a header file, this option includes option \fB\-c\fR\&.
++.RE
++.PP
+ \fB\-h\fR
+ .RS 4
+ Process header files\&. When this option is specified, the output file extension becomes
+@@ -144,6 +149,11 @@ Allow question mark as placeholder for c
+ .RE
+ .RE
+ .PP
++\fB\-\-regression\fR
++.RS 4
++Run in regression testing mode\&.
++.RE
++.PP
+ \fB\-t\fR
+ .RS 4
+ Turn on autocommit of transactions\&. In this mode, each SQL command is automatically committed unless it is inside an explicit transaction block\&. In the default mode, commands are committed only when
+diff -up postgresql-13.1/doc/src/sgml/man1/initdb.1.patch6 postgresql-13.1/doc/src/sgml/man1/initdb.1
+--- postgresql-13.1/doc/src/sgml/man1/initdb.1.patch6 2020-11-09 23:38:05.000000000 +0100
++++ postgresql-13.1/doc/src/sgml/man1/initdb.1 2020-11-18 09:25:05.082348424 +0100
+@@ -311,6 +311,13 @@ determines that an error prevented it fr
+ .PP
+ Other options:
+ .PP
++\fB\-s\fR
++.br
++\fB\-\-show\fR
++.RS 4
++Print the internal settings, then exit\&.
++.RE
++.PP
+ \fB\-V\fR
+ .br
+ \fB\-\-version\fR
diff --git a/postgresql-no-libecpg.patch b/postgresql-no-libecpg.patch
new file mode 100644
index 0000000..0d2e9c1
--- /dev/null
+++ b/postgresql-no-libecpg.patch
@@ -0,0 +1,12 @@
+diff -up postgresql-13.1/src/interfaces/Makefile.patch10 postgresql-13.1/src/interfaces/Makefile
+--- postgresql-13.1/src/interfaces/Makefile.patch10 2021-02-02 21:33:23.235292305 +0100
++++ postgresql-13.1/src/interfaces/Makefile 2021-02-02 21:33:30.281365440 +0100
+@@ -12,7 +12,7 @@ subdir = src/interfaces
+ top_builddir = ../..
+ include $(top_builddir)/src/Makefile.global
+
+-SUBDIRS = libpq ecpg
++SUBDIRS = libpq
+
+ $(recurse)
+
diff --git a/postgresql-pgcrypto-openssl3-tests.patch b/postgresql-pgcrypto-openssl3-tests.patch
new file mode 100644
index 0000000..6ca2a9b
--- /dev/null
+++ b/postgresql-pgcrypto-openssl3-tests.patch
@@ -0,0 +1,90 @@
+diff -ur postgresql-13.4/contrib/pgcrypto/expected/pgp-decrypt.out postgresql-13.4.patched/contrib/pgcrypto/expected/pgp-decrypt.out
+--- postgresql-13.4/contrib/pgcrypto/expected/pgp-decrypt.out 2021-08-09 16:49:05.000000000 -0400
++++ postgresql-13.4.patched/contrib/pgcrypto/expected/pgp-decrypt.out 2021-09-01 08:16:48.138600886 -0400
+@@ -4,20 +4,6 @@
+ -- Checking ciphers
+ select pgp_sym_decrypt(dearmor('
+ -----BEGIN PGP MESSAGE-----
+-Comment: dat1.blowfish.sha1.mdc.s2k3.z0
+-
+-jA0EBAMCfFNwxnvodX9g0jwB4n4s26/g5VmKzVab1bX1SmwY7gvgvlWdF3jKisvS
+-yA6Ce1QTMK3KdL2MPfamsTUSAML8huCJMwYQFfE=
+-=JcP+
+------END PGP MESSAGE-----
+-'), 'foobar');
+- pgp_sym_decrypt
+------------------
+- Secret message.
+-(1 row)
+-
+-select pgp_sym_decrypt(dearmor('
+------BEGIN PGP MESSAGE-----
+ Comment: dat1.aes.sha1.mdc.s2k3.z0
+
+ jA0EBwMCci97v0Q6Z0Zg0kQBsVf5Oe3iC+FBzUmuMV9KxmAyOMyjCc/5i8f1Eest
+diff -ur postgresql-13.4/contrib/pgcrypto/expected/pgp-pubkey-decrypt.out postgresql-13.4.patched/contrib/pgcrypto/expected/pgp-pubkey-decrypt.out
+--- postgresql-13.4/contrib/pgcrypto/expected/pgp-pubkey-decrypt.out 2021-08-09 16:49:05.000000000 -0400
++++ postgresql-13.4.patched/contrib/pgcrypto/expected/pgp-pubkey-decrypt.out 2021-09-01 08:05:27.750172653 -0400
+@@ -594,13 +594,6 @@
+ (1 row)
+
+ select pgp_pub_decrypt(dearmor(data), dearmor(seckey))
+-from keytbl, encdata where keytbl.id=2 and encdata.id=2;
+- pgp_pub_decrypt
+------------------
+- Secret msg
+-(1 row)
+-
+-select pgp_pub_decrypt(dearmor(data), dearmor(seckey))
+ from keytbl, encdata where keytbl.id=3 and encdata.id=3;
+ pgp_pub_decrypt
+ -----------------
+diff -ur postgresql-15.0_original/contrib/pgcrypto/Makefile postgresql-15.0/contrib/pgcrypto/Makefile
+--- postgresql-15.0_original/contrib/pgcrypto/Makefile 2022-09-05 23:12:45.000000000 +0200
++++ postgresql-15.0/contrib/pgcrypto/Makefile 2022-09-27 17:12:54.463159362 +0200
+@@ -39,9 +39,9 @@
+ pgcrypto--1.0--1.1.sql
+ PGFILEDESC = "pgcrypto - cryptographic functions"
+
+-REGRESS = init md5 sha1 hmac-md5 hmac-sha1 blowfish rijndael \
+- sha2 des 3des cast5 \
+- crypt-des crypt-md5 crypt-blowfish crypt-xdes \
++REGRESS = init md5 sha1 hmac-md5 hmac-sha1 rijndael \
++ sha2 \
++ crypt-md5 \
+ pgp-armor pgp-decrypt pgp-encrypt $(CF_PGP_TESTS) \
+ pgp-pubkey-decrypt pgp-pubkey-encrypt pgp-info
+
+diff -ur postgresql-13.4/contrib/pgcrypto/sql/pgp-decrypt.sql postgresql-13.4.patched/contrib/pgcrypto/sql/pgp-decrypt.sql
+--- postgresql-13.4/contrib/pgcrypto/sql/pgp-decrypt.sql 2021-08-09 16:49:05.000000000 -0400
++++ postgresql-13.4.patched/contrib/pgcrypto/sql/pgp-decrypt.sql 2021-09-01 08:16:12.525212175 -0400
+@@ -5,16 +5,6 @@
+ -- Checking ciphers
+ select pgp_sym_decrypt(dearmor('
+ -----BEGIN PGP MESSAGE-----
+-Comment: dat1.blowfish.sha1.mdc.s2k3.z0
+-
+-jA0EBAMCfFNwxnvodX9g0jwB4n4s26/g5VmKzVab1bX1SmwY7gvgvlWdF3jKisvS
+-yA6Ce1QTMK3KdL2MPfamsTUSAML8huCJMwYQFfE=
+-=JcP+
+------END PGP MESSAGE-----
+-'), 'foobar');
+-
+-select pgp_sym_decrypt(dearmor('
+------BEGIN PGP MESSAGE-----
+ Comment: dat1.aes.sha1.mdc.s2k3.z0
+
+ jA0EBwMCci97v0Q6Z0Zg0kQBsVf5Oe3iC+FBzUmuMV9KxmAyOMyjCc/5i8f1Eest
+diff -ur postgresql-13.4/contrib/pgcrypto/sql/pgp-pubkey-decrypt.sql postgresql-13.4.patched/contrib/pgcrypto/sql/pgp-pubkey-decrypt.sql
+--- postgresql-13.4/contrib/pgcrypto/sql/pgp-pubkey-decrypt.sql 2021-08-09 16:49:05.000000000 -0400
++++ postgresql-13.4.patched/contrib/pgcrypto/sql/pgp-pubkey-decrypt.sql 2021-09-01 08:06:18.963732342 -0400
+@@ -606,9 +606,6 @@
+ from keytbl, encdata where keytbl.id=1 and encdata.id=1;
+
+ select pgp_pub_decrypt(dearmor(data), dearmor(seckey))
+-from keytbl, encdata where keytbl.id=2 and encdata.id=2;
+-
+-select pgp_pub_decrypt(dearmor(data), dearmor(seckey))
+ from keytbl, encdata where keytbl.id=3 and encdata.id=3;
+
+ select pgp_pub_decrypt(dearmor(data), dearmor(seckey))
diff --git a/postgresql-server-pg_config.patch b/postgresql-server-pg_config.patch
new file mode 100644
index 0000000..83793e1
--- /dev/null
+++ b/postgresql-server-pg_config.patch
@@ -0,0 +1,58 @@
+We should ideally provide '/bin/pg_config' in postgresql-server-devel, and
+provide no pg_config binary in libpq package. But most of the Fedora packages
+that use pg_config actually only build against PG libraries (and
+postgresql-server-devel isn't needed). So.., to avoid the initial rush around
+rhbz#1618698 change, rather provide pg_server_config binary, which int urn means
+that we'll have to fix only a minimal set of packages which really build
+PostgreSQL server modules.
+
+diff -ur postgresql-14rc1/src/bin/pg_config/Makefile pgsql14/src/bin/pg_config/Makefile
+--- postgresql-14rc1/src/bin/pg_config/Makefile 2021-09-20 23:33:01.000000000 +0200
++++ pgsql14/src/bin/pg_config/Makefile 2021-09-22 10:48:06.484093152 +0200
+@@ -11,6 +11,8 @@
+ PGFILEDESC = "pg_config - report configuration information"
+ PGAPPICON=win32
+
++PG_CONFIG = pg_server_config$(X)
++
+ subdir = src/bin/pg_config
+ top_builddir = ../../..
+ include $(top_builddir)/src/Makefile.global
+@@ -19,22 +21,22 @@
+ $(WIN32RES) \
+ pg_config.o
+
+-all: pg_config
++all: $(PG_CONFIG)
+
+-pg_config: $(OBJS) | submake-libpgport
+- $(CC) $(CFLAGS) $(OBJS) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X)
++$(PG_CONFIG): $(OBJS) | submake-libpgport
++ $(CC) $(CFLAGS) $(OBJS) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@
+
+ install: all installdirs
+- $(INSTALL_SCRIPT) pg_config$(X) '$(DESTDIR)$(bindir)/pg_config$(X)'
++ $(INSTALL_SCRIPT) $(PG_CONFIG) '$(DESTDIR)$(bindir)/$(PG_CONFIG)'
+
+ installdirs:
+ $(MKDIR_P) '$(DESTDIR)$(bindir)'
+
+ uninstall:
+- rm -f '$(DESTDIR)$(bindir)/pg_config$(X)'
++ rm -f '$(DESTDIR)$(bindir)/$(PG_CONFIG)'
+
+ clean distclean maintainer-clean:
+- rm -f pg_config$(X) $(OBJS)
++ rm -f $(PG_CONFIG) $(OBJS)
+ rm -rf tmp_check
+
+ check:
+diff -ur postgresql-15.0_original/src/bin/pg_config/nls.mk postgresql-15.0/src/bin/pg_config/nls.mk
+--- postgresql-15.0_original/src/bin/pg_config/nls.mk 2022-09-05 23:12:45.000000000 +0200
++++ postgresql-15.0/src/bin/pg_config/nls.mk 2022-09-27 17:04:14.618932977 +0200
+@@ -1,4 +1,4 @@
+ # src/bin/pg_config/nls.mk
+-CATALOG_NAME = pg_config
++CATALOG_NAME = pg_server_config
+ AVAIL_LANGUAGES = cs de el es fr he it ja ka ko pl pt_BR ru sv tr uk vi zh_CN
+ GETTEXT_FILES = pg_config.c ../../common/config_info.c ../../common/exec.c
diff --git a/postgresql-var-run-socket.patch b/postgresql-var-run-socket.patch
new file mode 100644
index 0000000..91dceab
--- /dev/null
+++ b/postgresql-var-run-socket.patch
@@ -0,0 +1,53 @@
+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.)
+
+diff --git a/src/backend/utils/misc/guc.c b/src/backend/utils/misc/guc.c
+index 9481f2d..75532c7 100644
+--- a/src/backend/utils/misc/guc.c
++++ b/src/backend/utils/misc/guc.c
+@@ -3196,7 +3196,7 @@ static struct config_string ConfigureNamesString[] =
+ },
+ &Unix_socket_directories,
+ #ifdef HAVE_UNIX_SOCKETS
+- DEFAULT_PGSOCKET_DIR,
++ DEFAULT_PGSOCKET_DIR ", /tmp",
+ #else
+ "",
+ #endif
+diff --git a/src/bin/initdb/initdb.c b/src/bin/initdb/initdb.c
+index feeff9e..3e3d784 100644
+--- a/src/bin/initdb/initdb.c
++++ b/src/bin/initdb/initdb.c
+@@ -1234,7 +1234,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
+diff --git a/src/include/pg_config_manual.h b/src/include/pg_config_manual.h
+index e278fa0..9ee15d4 100644
+--- a/src/include/pg_config_manual.h
++++ b/src/include/pg_config_manual.h
+@@ -201,7 +201,7 @@
+ * support them yet.
+ */
+ #ifndef WIN32
+-#define DEFAULT_PGSOCKET_DIR "/tmp"
++#define DEFAULT_PGSOCKET_DIR "/var/run/postgresql"
+ #else
+ #define DEFAULT_PGSOCKET_DIR ""
+ #endif
diff --git a/postgresql.pam b/postgresql.pam
new file mode 100644
index 0000000..1d78594
--- /dev/null
+++ b/postgresql.pam
@@ -0,0 +1,3 @@
+#%PAM-1.0
+auth include password-auth
+account include password-auth
diff --git a/postgresql.spec b/postgresql.spec
new file mode 100644
index 0000000..7302b92
--- /dev/null
+++ b/postgresql.spec
@@ -0,0 +1,1414 @@
+%{!?beta:%global beta 0}
+%{!?test:%global test 1}
+%ifarch riscv64 loongarch64
+# Fail to pass tests on riscv64
+%{!?llvmjit:%global llvmjit 0}
+%else
+%{!?llvmjit:%global llvmjit 1}
+%endif
+%{!?external_libpq:%global external_libpq 0}
+%{!?upgrade:%global upgrade 0}
+%{!?plpython:%global plpython 0}
+%{!?plpython3:%global plpython3 1}
+%{!?pltcl:%global pltcl 1}
+%{!?plperl:%global plperl 1}
+%{!?ssl:%global ssl 1}
+%{!?icu:%global icu 1}
+%{!?kerberos:%global kerberos 1}
+%{!?ldap:%global ldap 1}
+%{!?nls:%global nls 1}
+%{!?uuid:%global uuid 1}
+%{!?xml:%global xml 1}
+%{!?pam:%global pam 1}
+%{!?sdt:%global sdt 1}
+%{!?selinux:%global selinux 1}
+%{!?runselftest:%global runselftest 1}
+
+%global _default_patch_flags --no-backup-if-mismatch
+
+%global macrosdir %(d=%{_rpmconfigdir}/macros.d; [ -d $d ] || d=%{_sysconfdir}/rpm; echo $d)
+
+Summary: PostgreSQL client programs
+Name: postgresql
+%global majorversion 15
+Version: %{majorversion}.6
+Release: 1
+
+# The PostgreSQL license is very similar to other MIT licenses, but the OSI
+# recognizes it as an independent license, so we do as well.
+License: PostgreSQL
+Url: http://www.postgresql.org/
+
+%global prevmajorversion 14
+%global prevversion %{prevmajorversion}.11
+%global prev_prefix %{_libdir}/pgsql/postgresql-%{prevmajorversion}
+%global precise_version %{?epoch:%epoch:}%version-%release
+
+%global setup_version 8.8
+
+%global service_name postgresql.service
+
+Source0: https://ftp.postgresql.org/pub/source/v%{version}/postgresql-%{version}.tar.bz2
+Source1: postgresql-%{version}-US.pdf
+Source2: generate-pdf.sh
+Source3: https://ftp.postgresql.org/pub/source/v%{prevversion}/postgresql-%{prevversion}.tar.bz2
+Source4: Makefile.regress
+Source9: postgresql.tmpfiles.d
+Source10: postgresql.pam
+Source11: postgresql-bashprofile
+
+
+# git: https://github.com/devexp-db/postgresql-setup
+Source12: https://github.com/devexp-db/postgresql-setup/releases/download/v%{setup_version}/postgresql-setup-%{setup_version}.tar.gz
+
+# Those here are just to enforce packagers check that the tarball was downloaded
+# correctly. Also, this allows us check that packagers-only tarballs do not
+# differ with publicly released ones.
+Source16: https://ftp.postgresql.org/pub/source/v%{version}/postgresql-%{version}.tar.bz2.sha256
+Source17: https://ftp.postgresql.org/pub/source/v%{prevversion}/postgresql-%{prevversion}.tar.bz2.sha256
+
+# Comments for these patches are in the patch files.
+Patch1: rpm-pgsql.patch
+Patch2: postgresql-logging.patch
+Patch5: postgresql-var-run-socket.patch
+Patch6: postgresql-man.patch
+Patch8: postgresql-external-libpq.patch
+Patch9: postgresql-server-pg_config.patch
+Patch10: postgresql-no-libecpg.patch
+Patch11: postgresql-datalayout-mismatch-on-s390.patch
+Patch16: postgresql-pgcrypto-openssl3-tests.patch
+
+BuildRequires: gcc clang
+BuildRequires: perl(ExtUtils::MakeMaker) glibc-devel bison flex gawk
+BuildRequires: perl(ExtUtils::Embed), perl-devel
+BuildRequires: perl-generators
+BuildRequires: readline-devel zlib-devel
+BuildRequires: systemd systemd-devel util-linux
+BuildRequires: multilib-rpm-config
+%if %external_libpq
+BuildRequires: libpq-devel >= %version
+%endif
+BuildRequires: docbook-style-xsl
+
+# postgresql-setup build requires
+BuildRequires: m4 elinks docbook-utils help2man
+
+%if %plpython
+BuildRequires: python2-devel
+%endif
+
+%if %plpython3
+BuildRequires: python3-devel
+%endif
+
+%if %pltcl
+BuildRequires: tcl-devel
+%endif
+
+%if %ssl
+BuildRequires: openssl-devel
+%endif
+
+%if %kerberos
+BuildRequires: krb5-devel
+%endif
+
+%if %ldap
+BuildRequires: openldap-devel
+%endif
+
+%if %nls
+BuildRequires: gettext >= 0.10.35
+%endif
+
+%if %uuid
+BuildRequires: uuid-devel
+%endif
+
+%if %xml
+BuildRequires: libxml2-devel libxslt-devel
+%endif
+
+%if %pam
+BuildRequires: pam-devel
+%endif
+
+%if %sdt
+BuildRequires: systemtap-sdt-devel
+%endif
+
+%if %selinux
+BuildRequires: libselinux-devel
+%endif
+
+%if %icu
+BuildRequires: libicu-devel
+%endif
+
+%global __provides_exclude_from %{_libdir}/pgsql
+
+%description
+PostgreSQL is an advanced Object-Relational database management system (DBMS).
+The base postgresql package contains the client programs that you'll need to
+access a PostgreSQL DBMS server, as well as HTML documentation for the whole
+system. These client programs can be located on the same machine as the
+PostgreSQL server, or on a remote machine that accesses a PostgreSQL server
+over a network connection. The PostgreSQL server can be found in the
+postgresql-server sub-package.
+
+%if ! %external_libpq
+%package private-libs
+Summary: The shared libraries required only for this build of PostgreSQL server
+Group: Applications/Databases
+# for /sbin/ldconfig
+Requires(post): glibc
+Requires(postun): glibc
+
+%description private-libs
+The postgresql-private-libs package provides the shared libraries for this
+build of PostgreSQL server and plugins build with this version of server.
+For shared libraries used by client packages that need to connect to a
+PostgreSQL server, install libpq package instead.
+
+
+%package private-devel
+Summary: PostgreSQL development header files for this build of PostgreSQL server
+Group: Development/Libraries
+Requires: %{name}-private-libs%{?_isa} = %precise_version
+# Conflict is desired here, a user must pick one or another
+Conflicts: libpq-devel
+
+%description private-devel
+The postgresql-private-devel package contains the header files and libraries
+needed to compile C or C++ applications which will directly interact
+with a PostgreSQL database management server.
+You need to install this package if you want to develop applications which
+will interact with a PostgreSQL server.
+%endif
+
+%package server
+Summary: The programs needed to create and run a PostgreSQL server
+Requires: %{name}%{?_isa} = %precise_version
+Requires(pre): /usr/sbin/useradd
+Requires: systemd
+%{?systemd_requires}
+Provides: %{name}-server(:MODULE_COMPAT_%{majorversion})
+Provides: bundled(postgresql-setup) = %setup_version
+
+%description server
+PostgreSQL is an advanced Object-Relational database management system (DBMS).
+The postgresql-server package contains the programs needed to create
+and run a PostgreSQL server, which will in turn allow you to create
+and maintain PostgreSQL databases.
+
+
+%package docs
+Summary: Extra documentation for PostgreSQL
+Requires: %{name}%{?_isa} = %precise_version
+Provides: %{name}-doc = %precise_version
+
+%description docs
+The postgresql-docs package contains some additional documentation for
+PostgreSQL. Currently, this includes the main documentation in PDF format
+and source files for the PostgreSQL tutorial.
+
+
+%package contrib
+Summary: Extension modules distributed with PostgreSQL
+Requires: %{name}%{?_isa} = %precise_version
+
+%description contrib
+The postgresql-contrib package contains various extension modules that are
+included in the PostgreSQL distribution.
+
+
+%package server-devel
+Summary: PostgreSQL development header files and libraries
+%if %icu
+Requires: libicu-devel
+%endif
+%if %kerberos
+Requires: krb5-devel
+%endif
+
+%description server-devel
+The postgresql-server-devel package contains the header files and configuration
+needed to compile PostgreSQL server extension.
+
+%package test-rpm-macros
+Summary: Convenience RPM macros for build-time testing against PostgreSQL server
+Requires: %{name}-server = %precise_version
+BuildArch: noarch
+
+%description test-rpm-macros
+This package is meant to be added as BuildRequires: dependency of other packages
+that want to run build-time testsuite against running PostgreSQL server.
+
+
+%package static
+Summary: Statically linked PostgreSQL libraries
+Requires: %{name}-server-devel%{?_isa} = %precise_version
+
+%description static
+Statically linked PostgreSQL libraries that do not have dynamically linked
+counterparts.
+
+
+%if %upgrade
+%package upgrade
+Summary: Support for upgrading from the previous major release of PostgreSQL
+Requires: %{name}-server%{?_isa} = %precise_version
+Provides: bundled(postgresql-server) = %prevversion
+
+%description upgrade
+The postgresql-upgrade package contains the pg_upgrade utility and supporting
+files needed for upgrading a PostgreSQL database from the previous major
+version of PostgreSQL.
+
+
+%package upgrade-devel
+Summary: Support for build of extensions required for upgrade process
+Requires: %{name}-upgrade%{?_isa} = %precise_version
+
+%description upgrade-devel
+The postgresql-devel package contains the header files and libraries
+needed to compile C or C++ applications which are necessary in upgrade
+process.
+%endif
+
+
+%if %plperl
+%package plperl
+Summary: The Perl procedural language for PostgreSQL
+Requires: %{name}-server%{?_isa} = %precise_version
+Requires: perl(:MODULE_COMPAT_%(eval "`%{__perl} -V:version`"; echo $version))
+%if %runselftest
+BuildRequires: perl(Opcode)
+BuildRequires: perl(Data::Dumper)
+%endif
+
+%description plperl
+The postgresql-plperl package contains the PL/Perl procedural language,
+which is an extension to the PostgreSQL database server.
+Install this if you want to write database functions in Perl.
+%endif
+
+
+%if %plpython
+%package plpython
+Summary: The Python2 procedural language for PostgreSQL
+Requires: %{name}-server%{?_isa} = %precise_version
+Provides: %{name}-plpython2 = %precise_version
+
+%description plpython
+The postgresql-plpython package contains the PL/Python procedural language,
+which is an extension to the PostgreSQL database server.
+Install this if you want to write database functions in Python 2.
+%endif
+
+
+%if %plpython3
+%package plpython3
+Summary: The Python3 procedural language for PostgreSQL
+Requires: %{name}-server%{?_isa} = %precise_version
+
+%description plpython3
+The postgresql-plpython3 package contains the PL/Python3 procedural language,
+which is an extension to the PostgreSQL database server.
+Install this if you want to write database functions in Python 3.
+%endif
+
+
+%if %pltcl
+%package pltcl
+Summary: The Tcl procedural language for PostgreSQL
+Requires: %{name}-server%{?_isa} = %precise_version
+
+%description pltcl
+The postgresql-pltcl package contains the PL/Tcl procedural language,
+which is an extension to the PostgreSQL database server.
+Install this if you want to write database functions in Tcl.
+%endif
+
+
+%if %test
+%package test
+Summary: The test suite distributed with PostgreSQL
+Requires: %{name}-server%{?_isa} = %precise_version
+Requires: %{name}-server-devel%{?_isa} = %precise_version
+
+%description test
+The postgresql-test package contains files needed for various tests for the
+PostgreSQL database management system, including regression tests and
+benchmarks.
+%endif
+
+%if %llvmjit
+%package llvmjit
+Summary: Just-in-time compilation support for PostgreSQL
+Requires: %{name}-server%{?_isa} = %{version}-%{release}
+Requires: llvm => 5.0
+Provides: postgresql-llvmjit >= %{version}-%{release}
+BuildRequires: llvm-devel >= 5.0 clang-devel >= 5.0
+
+%description llvmjit
+The postgresql-llvmjit 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
+
+%prep
+(
+ cd "$(dirname "%{SOURCE0}")"
+ sha256sum -c %{SOURCE16}
+%if %upgrade
+ sha256sum -c %{SOURCE17}
+%endif
+)
+%setup -q -a 12 -n postgresql-%{version}
+%patch -P 1 -p1
+%patch -P 2 -p1
+%patch -P 5 -p1
+%patch -P 6 -p1
+%if %external_libpq
+%patch -P 8 -p1
+%else
+%patch -P 10 -p1
+%endif
+%patch -P 9 -p1
+%patch -P 11 -p1
+%patch -P 16 -p1
+
+# We used to run autoconf here, but there's no longer any real need to,
+# since Postgres ships with a reasonably modern configure script.
+
+cp -p %{SOURCE1} .
+
+%if ! %external_libpq
+%global private_soname private%{majorversion}
+find . -type f -name Makefile -exec sed -i -e "s/SO_MAJOR_VERSION=\s\?\([0-9]\+\)/SO_MAJOR_VERSION= %{private_soname}-\1/" {} \;
+%endif
+
+%if %upgrade
+tar xfj %{SOURCE3}
+
+# libpq from this upgrade-only build is dropped and the libpq from the main
+# version is used. Use the same major hack therefore.
+%if ! %external_libpq
+find . -type f -name Makefile -exec sed -i -e "s/SO_MAJOR_VERSION=\s\?\([0-9]\+\)/SO_MAJOR_VERSION= %{private_soname}-\1/" {} \;
+%endif
+
+# apply once SOURCE3 is extracted
+%endif
+
+# remove .gitignore files to ensure none get into the RPMs (bug #642210)
+find . -type f -name .gitignore | xargs rm
+
+
+%build
+# fail quickly and obviously if user tries to build as root
+%if %runselftest
+ if [ x"`id -u`" = x0 ]; then
+ echo "postgresql's regression tests fail if run as root."
+ echo "If you really need to build the RPM as root, use"
+ echo "--define='runselftest 0' to skip the regression tests."
+ exit 1
+ fi
+%endif
+
+# Building postgresql-setup
+
+cd postgresql-setup-%{setup_version}
+export pgsetup_cv_os_family=redhat
+%configure \
+ pgdocdir=%{_pkgdocdir} \
+ PGVERSION=%{version} \
+ PGMAJORVERSION=%{majorversion} \
+ NAME_DEFAULT_PREV_SERVICE=postgresql
+
+make %{?_smp_mflags}
+unset pgsetup_cv_os_family
+cd ..
+
+# Fiddling with CFLAGS.
+
+CFLAGS="${CFLAGS:-%optflags}"
+# Strip out -ffast-math from CFLAGS....
+CFLAGS=`echo $CFLAGS|xargs -n 1|grep -v ffast-math|xargs -n 100`
+export CFLAGS
+
+# plpython requires separate configure/build runs to build against python 2
+# versus python 3. Our strategy is to do the python 3 run first, then make
+# distclean and do it again for the "normal" build. Note that the installed
+# Makefile.global will reflect the python 2 build, which seems appropriate
+# since that's still considered the default plpython version.
+common_configure_options='
+ --disable-rpath
+%ifarch riscv64 loongarch64
+ --disable-spinlocks
+%endif
+%if %beta
+ --enable-debug
+ --enable-cassert
+%endif
+%if %plperl
+ --with-perl
+%endif
+%if %pltcl
+ --with-tcl
+ --with-tclconfig=%_libdir
+%endif
+%if %ldap
+ --with-ldap
+%endif
+%if %ssl
+ --with-openssl
+%endif
+%if %pam
+ --with-pam
+%endif
+%if %kerberos
+ --with-gssapi
+%endif
+%if %uuid
+ --with-ossp-uuid
+%endif
+%if %xml
+ --with-libxml
+ --with-libxslt
+%endif
+%if %nls
+ --enable-nls
+%endif
+%if %sdt
+ --enable-dtrace
+%endif
+%if %selinux
+ --with-selinux
+%endif
+ --with-system-tzdata=%_datadir/zoneinfo
+ --datadir=%_datadir/pgsql
+ --with-systemd
+%if %icu
+ --with-icu
+%endif
+%if %llvmjit
+ --with-llvm
+%endif
+'
+
+%if %plpython3
+
+export PYTHON=/usr/bin/python3
+
+# These configure options must match main build
+%configure $common_configure_options \
+ --with-python
+
+# Fortunately we don't need to build much except plpython itself.
+%global python_subdirs \\\
+ src/pl/plpython \\\
+ contrib/hstore_plpython \\\
+ contrib/jsonb_plpython \\\
+ contrib/ltree_plpython
+
+for dir in %python_subdirs; do
+ %make_build -C "$dir" all
+done
+
+# save built form in a directory that "make distclean" won't touch
+for dir in %python_subdirs; do
+ rm -rf "${dir}3" # shouldn't exist, unless --short-circuit
+ cp -a "$dir" "${dir}3"
+done
+
+# must also save this version of Makefile.global for later
+cp src/Makefile.global src/Makefile.global.python3
+
+make distclean
+
+%endif # %%plpython3
+
+PYTHON=/usr/bin/python2
+
+# Normal (python2) build begins here
+%configure $common_configure_options \
+%if %plpython
+ --with-python
+%endif
+
+unset PYTHON
+
+%make_build world
+
+# Have to hack makefile to put correct path into tutorial scripts
+sed "s|C=\`pwd\`;|C=%{_libdir}/pgsql/tutorial;|" < src/tutorial/Makefile > src/tutorial/GNUmakefile
+make %{?_smp_mflags} -C src/tutorial NO_PGXS=1 all
+rm -f src/tutorial/GNUmakefile
+
+# The object files shouldn't be copied to rpm bz#1187514
+rm -f src/tutorial/*.o
+
+# run_testsuite WHERE
+# -------------------
+# Run 'make check' in WHERE path. When that command fails, return the logs
+# given by PostgreSQL build system and set 'test_failure=1'. This function
+# never exits directly nor stops rpmbuild where `set -e` is enabled.
+run_testsuite()
+{
+ make -k -C "$1" MAX_CONNECTIONS=5 check && return 0 || test_failure=1
+ (
+ set +x
+ echo "=== trying to find all regression.diffs files in build directory ==="
+ find "$1" -name 'regression.diffs' | \
+ while read line; do
+ echo "=== make failure: $line ==="
+ cat "$line"
+ done
+ )
+}
+
+test_failure=0
+
+%if %runselftest
+ run_testsuite "src/test/regress"
+ make clean -C "src/test/regress"
+ run_testsuite "src/pl"
+%if %plpython3
+ # must install Makefile.global that selects python3
+ mv src/Makefile.global src/Makefile.global.save
+ cp src/Makefile.global.python3 src/Makefile.global
+ touch -r src/Makefile.global.save src/Makefile.global
+
+ for dir in %python_subdirs; do
+ # because "make check" does "make install" on the whole tree,
+ # we must temporarily install *plpython3 dir as *plpython,
+ # since that is the subdirectory src/pl/Makefile knows about
+ mv "$dir" "${dir}2"
+ mv "${dir}3" "$dir"
+ done
+
+ for dir in %python_subdirs; do
+ run_testsuite "$dir"
+ done
+
+ for dir in %python_subdirs; do
+ # and clean up our mess
+ mv "$dir" "${dir}3"
+ mv "${dir}2" "${dir}"
+ done
+
+ mv -f src/Makefile.global.save src/Makefile.global
+%endif
+ run_testsuite "contrib"
+%endif
+
+# "assert(ALL_TESTS_OK)"
+test "$test_failure" -eq 0
+
+%if %test
+ # undo the "make clean" above
+ make all -C src/test/regress
+%endif
+
+%if %upgrade
+ pushd postgresql-%{prevversion}
+
+ # The upgrade build can be pretty stripped-down, but make sure that
+ # any options that affect on-disk file layout match the previous
+ # major release!
+
+ # The set of built server modules here should ideally create superset
+ # of modules we used to ship in %%prevversion (in the installation
+ # the user will upgrade from), including *-contrib or *-pl*
+ # subpackages. This increases chances that the upgrade from
+ # %%prevversion will work smoothly.
+
+upgrade_configure ()
+{
+ # Note we intentionally do not use %%configure here, because we *don't* want
+ # its ideas about installation paths.
+
+ # The -fno-aggressive-loop-optimizations is hack for #993532
+ PYTHON="${PYTHON-/usr/bin/python2}" \
+ CFLAGS="$CFLAGS -fno-aggressive-loop-optimizations" ./configure \
+ --build=%{_build} \
+ --host=%{_host} \
+ --prefix=%prev_prefix \
+ --disable-rpath \
+%ifarch riscv64 loongarch64
+ --disable-spinlocks \
+%endif
+%if %beta
+ --enable-debug \
+ --enable-cassert \
+%endif
+%if %icu
+ --with-icu \
+%endif
+%if %plperl
+ --with-perl \
+%endif
+%if %pltcl
+ --with-tcl \
+%endif
+ --with-tclconfig=%_libdir \
+ --with-system-tzdata=/usr/share/zoneinfo \
+ "$@"
+}
+
+%if %plpython3
+ export PYTHON=/usr/bin/python3
+ upgrade_configure --with-python
+ for dir in %python_subdirs; do
+ # Previous version doesn't necessarily have this.
+ test -d "$dir" || continue
+ %make_build -C "$dir" all
+
+ # save aside the only one file which we are interested here
+ cp "$dir"/*plpython3.so ./
+ done
+ unset PYTHON
+ make distclean
+%endif
+
+ upgrade_configure \
+%if %plpython
+ --with-python
+%endif
+
+ make %{?_smp_mflags} all
+ make -C contrib %{?_smp_mflags} all
+ popd
+%endif # %%upgrade
+
+
+%install
+cd postgresql-setup-%{setup_version}
+make install DESTDIR=$RPM_BUILD_ROOT
+cd ..
+
+# For some reason, having '%%doc %%{_pkgdocdir}/README.rpm-dist' in %%files
+# causes FTBFS (at least on RHEL6), see rhbz#1250006.
+mv $RPM_BUILD_ROOT/%{_pkgdocdir}/README.rpm-dist ./
+
+cat > $RPM_BUILD_ROOT%{_sysconfdir}/postgresql-setup/upgrade/postgresql.conf <<EOF
+id postgresql
+major %{prevmajorversion}
+data_default %{_localstatedir}/pgsql/data
+package postgresql-upgrade
+engine %{_libdir}/pgsql/postgresql-%{prevmajorversion}/bin
+description "Upgrade data from system PostgreSQL version (PostgreSQL %{prevmajorversion})"
+redhat_sockets_hack no
+EOF
+
+make DESTDIR=$RPM_BUILD_ROOT install-world
+
+# We ship pg_config through libpq-devel
+mv $RPM_BUILD_ROOT/%_mandir/man1/pg_{,server_}config.1
+%if %external_libpq
+rm $RPM_BUILD_ROOT/%_includedir/pg_config*.h
+rm $RPM_BUILD_ROOT/%_includedir/libpq/libpq-fs.h
+rm $RPM_BUILD_ROOT/%_includedir/postgres_ext.h
+rm -r $RPM_BUILD_ROOT/%_includedir/pgsql/internal/
+%else
+ln -s pg_server_config $RPM_BUILD_ROOT/%_bindir/pg_config
+rm $RPM_BUILD_ROOT/%{_libdir}/libpq.a
+%endif
+
+%if %plpython3
+ mv src/Makefile.global src/Makefile.global.save
+ cp src/Makefile.global.python3 src/Makefile.global
+ touch -r src/Makefile.global.save src/Makefile.global
+ for dir in %python_subdirs; do
+ %make_install -C "${dir}3"
+ done
+ mv -f src/Makefile.global.save src/Makefile.global
+%endif
+
+# make sure these directories exist even if we suppressed all contrib modules
+install -d -m 755 $RPM_BUILD_ROOT%{_datadir}/pgsql/contrib
+install -d -m 755 $RPM_BUILD_ROOT%{_datadir}/pgsql/extension
+
+# multilib header hack
+for header in \
+ %{_includedir}/pgsql/server/pg_config.h \
+ %{_includedir}/pgsql/server/pg_config_ext.h
+do
+%multilib_fix_c_header --file "$header"
+done
+
+install -d -m 755 $RPM_BUILD_ROOT%{_libdir}/pgsql/tutorial
+cp -p src/tutorial/* $RPM_BUILD_ROOT%{_libdir}/pgsql/tutorial
+
+%if %pam
+install -d $RPM_BUILD_ROOT/etc/pam.d
+install -m 644 %{SOURCE10} $RPM_BUILD_ROOT/etc/pam.d/postgresql
+%endif
+
+# Create the directory for sockets.
+install -d -m 755 $RPM_BUILD_ROOT%{?_localstatedir}/run/postgresql
+
+# ... and make a tmpfiles script to recreate it at reboot.
+mkdir -p $RPM_BUILD_ROOT%{_tmpfilesdir}
+install -m 0644 %{SOURCE9} $RPM_BUILD_ROOT%{_tmpfilesdir}/postgresql.conf
+
+# PGDATA needs removal of group and world permissions due to pg_pwd hole.
+install -d -m 700 $RPM_BUILD_ROOT%{?_localstatedir}/lib/pgsql/data
+
+# backups of data go here...
+install -d -m 700 $RPM_BUILD_ROOT%{?_localstatedir}/lib/pgsql/backups
+
+# postgres' .bash_profile
+install -m 644 %{SOURCE11} $RPM_BUILD_ROOT%{?_localstatedir}/lib/pgsql/.bash_profile
+
+rm $RPM_BUILD_ROOT/%{_datadir}/man/man1/ecpg.1
+
+%if %upgrade
+ pushd postgresql-%{prevversion}
+ make DESTDIR=$RPM_BUILD_ROOT install
+ make -C contrib DESTDIR=$RPM_BUILD_ROOT install
+%if %plpython3
+ for file in *plpython3.so; do
+ install -m 755 "$file" \
+ $RPM_BUILD_ROOT/%_libdir/pgsql/postgresql-%prevmajorversion/lib
+ done
+%endif
+ popd
+
+ # remove stuff we don't actually need for upgrade purposes
+ pushd $RPM_BUILD_ROOT%{_libdir}/pgsql/postgresql-%{prevmajorversion}
+ rm bin/clusterdb
+ rm bin/createdb
+ rm bin/createuser
+ rm bin/dropdb
+ rm bin/dropuser
+ rm bin/ecpg
+ rm bin/initdb
+ rm bin/pg_basebackup
+ rm bin/pg_dump
+ rm bin/pg_dumpall
+ rm bin/pg_restore
+ rm bin/pgbench
+ rm bin/psql
+ rm bin/reindexdb
+ rm bin/vacuumdb
+ rm -rf share/doc
+ rm -rf share/man
+ rm -rf share/tsearch_data
+ rm lib/*.a
+ # Drop libpq. This might need some tweaks once there's
+ # soname bump between %%prevversion and %%version.
+ rm lib/libpq.so*
+ # Drop libraries.
+ rm lib/lib{ecpg,ecpg_compat,pgtypes}.so*
+ rm share/*.bki
+ rm share/*description
+ rm share/*.sample
+ rm share/*.sql
+ rm share/*.txt
+ rm share/extension/*.sql
+ rm share/extension/*.control
+ popd
+ cat <<EOF > $RPM_BUILD_ROOT%macrosdir/macros.%name-upgrade
+%%postgresql_upgrade_prefix %prev_prefix
+EOF
+%endif
+
+
+%if %test
+ # tests. There are many files included here that are unnecessary,
+ # but include them anyway for completeness. We replace the original
+ # Makefiles, however.
+ mkdir -p $RPM_BUILD_ROOT%{_libdir}/pgsql/test
+ cp -a src/test/regress $RPM_BUILD_ROOT%{_libdir}/pgsql/test
+ # pg_regress binary should be only in one subpackage,
+ # there will be a symlink from -test to -devel
+ rm -f $RPM_BUILD_ROOT%{_libdir}/pgsql/test/regress/pg_regress
+ ln -sf ../../pgxs/src/test/regress/pg_regress $RPM_BUILD_ROOT%{_libdir}/pgsql/test/regress/pg_regress
+ pushd $RPM_BUILD_ROOT%{_libdir}/pgsql/test/regress
+ rm -f GNUmakefile Makefile *.o
+ chmod 0755 pg_regress regress.so
+ popd
+ sed 's|@bindir@|%{_bindir}|g' \
+ < %{SOURCE4} \
+ > $RPM_BUILD_ROOT%{_libdir}/pgsql/test/regress/Makefile
+ chmod 0644 $RPM_BUILD_ROOT%{_libdir}/pgsql/test/regress/Makefile
+%endif
+
+rm -rf doc/html # HACK! allow 'rpmbuild -bi --short-circuit'
+mv $RPM_BUILD_ROOT%{_docdir}/pgsql/html doc
+rm -rf $RPM_BUILD_ROOT%{_docdir}/pgsql
+
+# remove files not to be packaged
+rm $RPM_BUILD_ROOT%{_libdir}/libpgfeutils.a
+
+%if !%plperl
+rm -f $RPM_BUILD_ROOT%{_bindir}/pgsql/hstore_plperl.so
+%endif
+
+%if !%plpython
+rm -f $RPM_BUILD_ROOT%{_bindir}/pgsql/hstore_plpython2.so
+rm -f $RPM_BUILD_ROOT%{_datadir}/pgsql/extension/*_plpythonu*
+rm -f $RPM_BUILD_ROOT%{_datadir}/pgsql/extension/*_plpython2u*
+%endif
+
+%if %nls
+find_lang_bins ()
+{
+ lstfile=$1 ; shift
+ cp /dev/null "$lstfile"
+ for binary; do
+ %find_lang "$binary"-%{majorversion}
+ cat "$binary"-%{majorversion}.lang >>"$lstfile"
+ done
+}
+find_lang_bins devel.lst pg_server_config
+find_lang_bins server.lst \
+ initdb pg_basebackup pg_controldata pg_ctl pg_resetwal pg_rewind plpgsql \
+ postgres pg_checksums pg_verifybackup
+find_lang_bins contrib.lst \
+ pg_amcheck pg_archivecleanup pg_test_fsync pg_test_timing pg_waldump
+find_lang_bins main.lst \
+ pg_dump pg_upgrade pgscripts psql \
+%if ! %external_libpq
+libpq%{private_soname}-5
+%endif
+%if %plperl
+find_lang_bins plperl.lst plperl
+%endif
+%if %plpython
+find_lang_bins plpython.lst plpython
+%endif
+%if %plpython3
+# plpython3 shares message files with plpython
+find_lang_bins plpython3.lst plpython
+%endif
+%if %pltcl
+find_lang_bins pltcl.lst pltcl
+%endif
+%endif
+
+%pre server
+/usr/sbin/groupadd -g 26 -o -r postgres >/dev/null 2>&1 || :
+/usr/sbin/useradd -M -N -g postgres -o -r -d /var/lib/pgsql -s /bin/bash \
+ -c "PostgreSQL Server" -u 26 postgres >/dev/null 2>&1 || :
+
+%post server
+%systemd_post %service_name
+
+
+%preun server
+%systemd_preun %service_name
+
+
+%postun server
+%systemd_postun_with_restart %service_name
+
+
+%check
+%if %runselftest
+make -C postgresql-setup-%{setup_version} check
+%endif
+
+# FILES sections.
+%files -f main.lst
+%doc doc/KNOWN_BUGS doc/MISSING_FEATURES doc/TODO
+%doc COPYRIGHT README HISTORY
+%doc README.rpm-dist
+%{_bindir}/clusterdb
+%{_bindir}/createdb
+%{_bindir}/createuser
+%{_bindir}/dropdb
+%{_bindir}/dropuser
+%{_bindir}/pg_dump
+%{_bindir}/pg_dumpall
+%{_bindir}/pg_isready
+%{_bindir}/pg_restore
+%{_bindir}/pg_upgrade
+%{_bindir}/psql
+%{_bindir}/reindexdb
+%{_bindir}/vacuumdb
+%{_mandir}/man1/clusterdb.*
+%{_mandir}/man1/createdb.*
+%{_mandir}/man1/createuser.*
+%{_mandir}/man1/dropdb.*
+%{_mandir}/man1/dropuser.*
+%{_mandir}/man1/pg_dump.*
+%{_mandir}/man1/pg_dumpall.*
+%{_mandir}/man1/pg_isready.*
+%{_mandir}/man1/pg_restore.*
+%{_mandir}/man1/pg_upgrade.*
+%{_mandir}/man1/psql.*
+%{_mandir}/man1/reindexdb.*
+%{_mandir}/man1/vacuumdb.*
+%{_mandir}/man7/*
+%if %llvmjit
+# Install bitcode directory along with the main package,
+# so that extensions can use this dir.
+%dir %{_libdir}/pgsql/bitcode
+%endif
+%if ! %external_libpq
+%{_libdir}/libpq.so.*
+%endif
+
+%files docs
+%doc *-US.pdf
+%doc doc/html
+%{_libdir}/pgsql/tutorial/
+
+
+%files contrib -f contrib.lst
+%doc contrib/spi/*.example
+%{_bindir}/oid2name
+%{_bindir}/pg_amcheck
+%{_bindir}/pg_archivecleanup
+%{_bindir}/pg_test_fsync
+%{_bindir}/pg_test_timing
+%{_bindir}/pg_waldump
+%{_bindir}/pgbench
+%{_bindir}/vacuumlo
+%{_datadir}/pgsql/extension/adminpack*
+%{_datadir}/pgsql/extension/amcheck*
+%{_datadir}/pgsql/extension/autoinc*
+%{_datadir}/pgsql/extension/bloom*
+%{_datadir}/pgsql/extension/btree_gin*
+%{_datadir}/pgsql/extension/btree_gist*
+%{_datadir}/pgsql/extension/citext*
+%{_datadir}/pgsql/extension/cube*
+%{_datadir}/pgsql/extension/dblink*
+%{_datadir}/pgsql/extension/dict_int*
+%{_datadir}/pgsql/extension/dict_xsyn*
+%{_datadir}/pgsql/extension/earthdistance*
+%{_datadir}/pgsql/extension/file_fdw*
+%{_datadir}/pgsql/extension/fuzzystrmatch*
+%{_datadir}/pgsql/extension/hstore*
+%{_datadir}/pgsql/extension/insert_username*
+%{_datadir}/pgsql/extension/intagg*
+%{_datadir}/pgsql/extension/intarray*
+%{_datadir}/pgsql/extension/isn*
+%if %{plperl}
+%{_datadir}/pgsql/extension/jsonb_plperl*
+%endif
+%if %{plpython}
+%{_datadir}/pgsql/extension/jsonb_plpythonu*
+%{_datadir}/pgsql/extension/jsonb_plpython2u*
+%endif
+%if %{plpython3}
+%{_datadir}/pgsql/extension/jsonb_plpython3u*
+%endif
+%{_datadir}/pgsql/extension/lo*
+%{_datadir}/pgsql/extension/ltree*
+%{_datadir}/pgsql/extension/moddatetime*
+%{_datadir}/pgsql/extension/old_snapshot*
+%{_datadir}/pgsql/extension/pageinspect*
+%{_datadir}/pgsql/extension/pg_buffercache*
+%{_datadir}/pgsql/extension/pg_freespacemap*
+%{_datadir}/pgsql/extension/pg_prewarm*
+%{_datadir}/pgsql/extension/pg_stat_statements*
+%{_datadir}/pgsql/extension/pg_surgery*
+%{_datadir}/pgsql/extension/pg_trgm*
+%{_datadir}/pgsql/extension/pg_visibility*
+%{_datadir}/pgsql/extension/pg_walinspect*
+%{_datadir}/pgsql/extension/pgcrypto*
+%{_datadir}/pgsql/extension/pgrowlocks*
+%{_datadir}/pgsql/extension/pgstattuple*
+%{_datadir}/pgsql/extension/postgres_fdw*
+%{_datadir}/pgsql/extension/refint*
+%{_datadir}/pgsql/extension/seg*
+%{_datadir}/pgsql/extension/tablefunc*
+%{_datadir}/pgsql/extension/tcn*
+%{_datadir}/pgsql/extension/tsm_system_rows*
+%{_datadir}/pgsql/extension/tsm_system_time*
+%{_datadir}/pgsql/extension/unaccent*
+%{_libdir}/pgsql/_int.so
+%{_libdir}/pgsql/adminpack.so
+%{_libdir}/pgsql/amcheck.so
+%{_libdir}/pgsql/auth_delay.so
+%{_libdir}/pgsql/auto_explain.so
+%{_libdir}/pgsql/autoinc.so
+%{_libdir}/pgsql/bloom.so
+%{_libdir}/pgsql/btree_gin.so
+%{_libdir}/pgsql/btree_gist.so
+%{_libdir}/pgsql/citext.so
+%{_libdir}/pgsql/cube.so
+%{_libdir}/pgsql/dblink.so
+%{_libdir}/pgsql/dict_int.so
+%{_libdir}/pgsql/dict_xsyn.so
+%{_libdir}/pgsql/earthdistance.so
+%{_libdir}/pgsql/file_fdw.so
+%{_libdir}/pgsql/fuzzystrmatch.so
+%{_libdir}/pgsql/hstore.so
+%if %plperl
+%{_libdir}/pgsql/hstore_plperl.so
+%endif
+%if %plpython
+%{_libdir}/pgsql/hstore_plpython2.so
+%endif
+%if %plpython3
+%{_libdir}/pgsql/hstore_plpython3.so
+%endif
+%{_libdir}/pgsql/insert_username.so
+%{_libdir}/pgsql/isn.so
+%if %plperl
+%{_libdir}/pgsql/jsonb_plperl.so
+%endif
+%if %plpython
+%{_libdir}/pgsql/jsonb_plpython2.so
+%endif
+%if %plpython3
+%{_libdir}/pgsql/jsonb_plpython3.so
+%endif
+%{_libdir}/pgsql/lo.so
+%{_libdir}/pgsql/ltree.so
+%if %plpython
+%{_libdir}/pgsql/ltree_plpython2.so
+%endif
+%if %plpython3
+%{_libdir}/pgsql/ltree_plpython3.so
+%endif
+%{_libdir}/pgsql/moddatetime.so
+%{_libdir}/pgsql/old_snapshot.so
+%{_libdir}/pgsql/pageinspect.so
+%{_libdir}/pgsql/passwordcheck.so
+%{_libdir}/pgsql/pg_buffercache.so
+%{_libdir}/pgsql/pg_freespacemap.so
+%{_libdir}/pgsql/pg_stat_statements.so
+%{_libdir}/pgsql/pg_surgery.so
+%{_libdir}/pgsql/pg_trgm.so
+%{_libdir}/pgsql/pg_visibility.so
+%{_libdir}/pgsql/basebackup_to_shell.so
+%{_libdir}/pgsql/basic_archive.so
+%{_libdir}/pgsql/pg_walinspect.so
+%{_libdir}/pgsql/pgcrypto.so
+%{_libdir}/pgsql/pgrowlocks.so
+%{_libdir}/pgsql/pgstattuple.so
+%{_libdir}/pgsql/postgres_fdw.so
+%{_libdir}/pgsql/refint.so
+%{_libdir}/pgsql/seg.so
+%{_libdir}/pgsql/tablefunc.so
+%{_libdir}/pgsql/tcn.so
+%{_libdir}/pgsql/test_decoding.so
+%{_libdir}/pgsql/tsm_system_rows.so
+%{_libdir}/pgsql/tsm_system_time.so
+%{_libdir}/pgsql/unaccent.so
+%{_mandir}/man1/oid2name.*
+%{_mandir}/man1/pg_amcheck.*
+%{_mandir}/man1/pg_archivecleanup.*
+%{_mandir}/man1/pg_recvlogical.*
+%{_mandir}/man1/pg_test_fsync.*
+%{_mandir}/man1/pg_test_timing.*
+%{_mandir}/man1/pg_waldump.*
+%{_mandir}/man1/pgbench.*
+%{_mandir}/man1/vacuumlo.*
+%{_mandir}/man3/dblink*
+%if %selinux
+%{_datadir}/pgsql/contrib/sepgsql.sql
+%{_libdir}/pgsql/sepgsql.so
+%endif
+%if %ssl
+%{_datadir}/pgsql/extension/sslinfo*
+%{_libdir}/pgsql/sslinfo.so
+%endif
+%if %uuid
+%{_datadir}/pgsql/extension/uuid-ossp*
+%{_libdir}/pgsql/uuid-ossp.so
+%endif
+%if %xml
+%{_datadir}/pgsql/extension/xml2*
+%{_libdir}/pgsql/pgxml.so
+%endif
+
+%files server -f server.lst
+%{_bindir}/initdb
+%{_bindir}/pg_basebackup
+%{_bindir}/pg_controldata
+%{_bindir}/pg_ctl
+%{_bindir}/pg_receivewal
+%{_bindir}/pg_recvlogical
+%{_bindir}/pg_resetwal
+%{_bindir}/pg_rewind
+%{_bindir}/pg_checksums
+%{_bindir}/pg_verifybackup
+%{_bindir}/postgres
+%{_bindir}/postgresql-setup
+%{_bindir}/postgresql-upgrade
+%{_bindir}/postmaster
+%dir %{_datadir}/pgsql
+%{_datadir}/pgsql/*.sample
+%dir %{_datadir}/pgsql/contrib
+%dir %{_datadir}/pgsql/extension
+%{_datadir}/pgsql/extension/plpgsql*
+%{_datadir}/pgsql/information_schema.sql
+%{_datadir}/pgsql/postgres.bki
+%{_datadir}/pgsql/snowball_create.sql
+%{_datadir}/pgsql/sql_features.txt
+%{_datadir}/pgsql/system_constraints.sql
+%{_datadir}/pgsql/system_functions.sql
+%{_datadir}/pgsql/system_views.sql
+%{_datadir}/pgsql/timezonesets/
+%{_datadir}/pgsql/tsearch_data/
+%dir %{_datadir}/postgresql-setup
+%{_datadir}/postgresql-setup/library.sh
+%dir %{_libdir}/pgsql
+%{_libdir}/pgsql/*_and_*.so
+%{_libdir}/pgsql/dict_snowball.so
+%{_libdir}/pgsql/euc2004_sjis2004.so
+%{_libdir}/pgsql/libpqwalreceiver.so
+%{_libdir}/pgsql/pg_prewarm.so
+%{_libdir}/pgsql/pgoutput.so
+%{_libdir}/pgsql/plpgsql.so
+%dir %{_libexecdir}/initscripts/legacy-actions/postgresql
+%{_libexecdir}/initscripts/legacy-actions/postgresql/*
+%{_libexecdir}/postgresql-check-db-dir
+%dir %{_sysconfdir}/postgresql-setup
+%dir %{_sysconfdir}/postgresql-setup/upgrade
+%config %{_sysconfdir}/postgresql-setup/upgrade/*.conf
+%{_mandir}/man1/initdb.*
+%{_mandir}/man1/pg_basebackup.*
+%{_mandir}/man1/pg_controldata.*
+%{_mandir}/man1/pg_ctl.*
+%{_mandir}/man1/pg_receivewal.*
+%{_mandir}/man1/pg_resetwal.*
+%{_mandir}/man1/pg_rewind.*
+%{_mandir}/man1/pg_checksums.*
+%{_mandir}/man1/pg_verifybackup.*
+%{_mandir}/man1/postgres.*
+%{_mandir}/man1/postgresql-new-systemd-unit.*
+%{_mandir}/man1/postgresql-setup.*
+%{_mandir}/man1/postgresql-upgrade.*
+%{_mandir}/man1/postmaster.*
+%{_sbindir}/postgresql-new-systemd-unit
+%{_tmpfilesdir}/postgresql.conf
+%{_unitdir}/*postgresql*.service
+%attr(700,postgres,postgres) %dir %{?_localstatedir}/lib/pgsql
+%attr(644,postgres,postgres) %config(noreplace) %{?_localstatedir}/lib/pgsql/.bash_profile
+%attr(700,postgres,postgres) %dir %{?_localstatedir}/lib/pgsql/backups
+%attr(700,postgres,postgres) %dir %{?_localstatedir}/lib/pgsql/data
+%attr(755,postgres,postgres) %dir %{?_localstatedir}/run/postgresql
+%if %pam
+%config(noreplace) /etc/pam.d/postgresql
+%endif
+
+%files server-devel -f devel.lst
+%{_bindir}/pg_server_config
+%dir %{_datadir}/pgsql
+%{_datadir}/pgsql/errcodes.txt
+%dir %{_includedir}/pgsql
+%{_includedir}/pgsql/server
+%{_libdir}/pgsql/pgxs/
+%{_mandir}/man1/pg_server_config.*
+%{_mandir}/man3/SPI_*
+%{macrosdir}/macros.%name
+
+%if ! %external_libpq
+%files private-libs
+%{_libdir}/libpq.so.*
+%endif
+
+%if ! %external_libpq
+%files private-devel
+%{_bindir}/pg_config
+%{_includedir}/libpq-events.h
+%{_includedir}/libpq-fe.h
+%{_includedir}/postgres_ext.h
+%{_includedir}/pgsql/internal/*.h
+%{_includedir}/pgsql/internal/libpq/pqcomm.h
+%{_includedir}/libpq/*.h
+%{_libdir}/pkgconfig/*.pc
+%{_libdir}/libpq.so
+%{_includedir}/pg_config*.h
+%endif
+
+%files test-rpm-macros
+%{_datadir}/postgresql-setup/postgresql_pkg_tests.sh
+%{macrosdir}/macros.%name-test
+
+
+%files static
+%{_libdir}/libpgcommon.a
+%{_libdir}/libpgport.a
+%{_libdir}/libpgcommon_shlib.a
+%{_libdir}/libpgport_shlib.a
+
+
+%if %upgrade
+%files upgrade
+%{_libdir}/pgsql/postgresql-%{prevmajorversion}/bin
+%exclude %{_libdir}/pgsql/postgresql-%{prevmajorversion}/bin/pg_config
+%{_libdir}/pgsql/postgresql-%{prevmajorversion}/lib
+%exclude %{_libdir}/pgsql/postgresql-%{prevmajorversion}/lib/pgxs
+%exclude %{_libdir}/pgsql/postgresql-%{prevmajorversion}/lib/pkgconfig
+%{_libdir}/pgsql/postgresql-%{prevmajorversion}/share
+
+
+%files upgrade-devel
+%{_libdir}/pgsql/postgresql-%{prevmajorversion}/bin/pg_config
+%{_libdir}/pgsql/postgresql-%{prevmajorversion}/include
+%{_libdir}/pgsql/postgresql-%{prevmajorversion}/lib/pkgconfig
+%{_libdir}/pgsql/postgresql-%{prevmajorversion}/lib/pgxs
+%{macrosdir}/macros.%name-upgrade
+%endif
+
+%if %llvmjit
+%files llvmjit
+%defattr(-,root,root)
+%{_libdir}/pgsql/bitcode/*
+%{_libdir}/pgsql/llvmjit.so
+%{_libdir}/pgsql/llvmjit_types.bc
+%endif
+
+%if %plperl
+%files plperl -f plperl.lst
+%{_datadir}/pgsql/extension/bool_plperl*
+%{_datadir}/pgsql/extension/plperl*
+%{_libdir}/pgsql/bool_plperl.so
+%{_libdir}/pgsql/plperl.so
+%endif
+
+
+%if %pltcl
+%files pltcl -f pltcl.lst
+%{_datadir}/pgsql/extension/pltcl*
+%{_libdir}/pgsql/pltcl.so
+%endif
+
+
+%if %plpython
+%files plpython -f plpython.lst
+%{_datadir}/pgsql/extension/plpython2*
+%{_datadir}/pgsql/extension/plpythonu*
+%{_libdir}/pgsql/plpython2.so
+%endif
+
+
+%if %plpython3
+%files plpython3 -f plpython3.lst
+%{_datadir}/pgsql/extension/plpython3*
+%{_libdir}/pgsql/plpython3.so
+%endif
+
+
+%if %test
+%files test
+%attr(-,postgres,postgres) %{_libdir}/pgsql/test
+%endif
+
+
+%changelog
+* Fri Mar 29 2024 xiejing <xiejing@kylinos.cn> - 15.6-1
+- update to 15.6
+
+* Tue Nov 14 2023 dillon chen <dillon.chen@gmail.com> - 15.5-1
+- update to 15.5
+
+* Fri Aug 11 2023 Funda Wang <fundawang@yeah.net> - 15.4-1
+- update to 15.4
+
+* Tue Aug 8 2023 dillon chen <dillon.chen@gmail.com> - 15.3-1
+- update to 15.3
+
+* Tue Aug 1 2023 dillon chen <dillon.chen@gmail.com> - 14.8-1
+- update to 14.8
+
+* Thu Jul 27 2023 dillon chen <dillon.chen@gmail.com> - 13.11-1
+- update to 13.11
+
+* Tue Apr 18 2023 Wenlong Zhang<zhangwenlong@loongson.cn> - 13.3-8
+- Fix build error for loongarch64
+
+* Tue Mar 7 2023 dillon chen <dillon.chen@gmail.com> - 13.3-7
+- Fix issue: confilct between libpq-devel and postgresql-devel
+- guess init spec from redhat
+- change redhat spec:rm private package and add files to server-devel
+- so add delete lines to Fix issue
+- Next: write oe libpq and postgresql spec by myself
+
+* Tue Feb 14 2023 dillon chen <dillon.chen@gmail.com> - 13.3-7
+- patch 15,16 for openssl upgrade to 3.0
+
+* Mon Aug 1 2022 bzhaoop <bzhaojyathousandy@gmail.com> - 13.3-6
+- Porting "Fix subtransaction test failed" from master branch
+- Fri May 6 2022 caodongxia <caodongxia@h-partners.com> - 13.3-4
+- sync the same line with master
+
+* Fri Mar 11 2022 wangkai <wangkai385@huawei.com> - 13.3-5
+- Fix CVE-2021-23214 CVE-2021-23222
+
+* Tue Jan 18 2022 lvxiaoqian<xiaoqian@nj.iscas.ac.cn> - 13.3-4
+- Disable spinlocks on RISC-V 64-bit (riscv64)
+- Disable LLVM/Clang for riscv64 (fails tests)
+
+* Tue Aug 3 2021 bzhaoop<bzhaojyathousandy@gmail.com> - 13.3-3
+- Add the missed libpq.so file into postgresql-server-devel package.
+
+* Mon Jun 28 2021 bzhaoop<bzhaojyathousandy@gmail.com> - 13.3-2
+- Figure out the dependency by postgresql-odbc, refactor the package to fix
+
+* Thu Jun 17 2021 bzhaoop<bzhaojyathousandy@gmail.com> - 13.3-1
+- Package init for new version 13.3
+
+* Fri Feb 26 2021 wangyue <wangyue92@huawei.com> - 10.5-19
+- Fix CVE-2021-20229
+
+* Tue Dec 8 2020 wangxiao <wangxiao65@huawei.com> - 10.5-18
+- Fix CVE-2020-25694 CVE-2020-25695 CVE-2020-25696
+
+* Thu Sep 10 2020 yanglongkang <yanglongkang@huawei.com> - 10.5-17
+- Fix CVE-2020-14349 CVE-2020-14350
+
+* Fri Jun 19 2020 cuibaobao <cuibaobao1@huawei.com> - 10.5-16
+- Type: enhancement
+- DESC: delete all about residual parse_upgrade_setup in postgresql-setup
+
+* Wed May 6 2020 cuibaobao <cuibaobao1@huawei.com> - 10.5-15
+- Type:cve
+- ID:CVE-2020-1720
+- SUG: NA
+- DESC: fix CVE-2020-1720
+
+* Tue Apr 08 2020 daiqianwen <daiqianwen@huawei.com> - 10.5-14
+- Type: enhancement
+- DESC: add postgresql-test-rpm-macros
+
+* Tue Apr 07 2020 daiqianwen <daiqianwen@huawei.com> - 10.5-13
+- Type: enhancement
+- DESC: delete unseless tarball
+
+* Tue Mar 10 2020 steven <steven_ygui@163.com> - 10.5-12
+- Type: enhancement
+- DESC: remove python2
+
+* Mon Mar 10 2020 yanzhihua <yanzhihua4@huawei.com> - 10.5-11
+- Type: bug fix
+- ID: #I1AHMH
+- SUG: NA
+- DESC: fix issue #I1AHMH
+
+* Mon Feb 3 2020 chenli <chenli147@huawei.com> 10.5-10
+- Type:cve
+- ID:CVE-2019-10130
+- SUG: NA
+- DESC: fix CVE-2019-10130
+
+* Tue Jan 14 2020 openEuler Buildteam <buildteam@openeuler.org> - 10.5-9
+- Type:enhancement
+- ID:NA
+- SUG:restart
+- DESC: remove useless files
+
+* Mon Jan 13 2020 yanzhihua <yanzhihua4@huawei.com> - 10.5-8
+- Type: enhancement
+- ID: NA
+- SUG: NA
+- DESC: modify buildrequire
+
+* Tue Dec 24 2019 fengbing <fengbing7@huawei.com> - 10.5-7
+- Type:cves
+- ID:CVE-2019-10208 CVE-2018-16850
+- SUG:restart
+- DESC: fix CVE-2019-10208 CVE-2018-16850
+
+* Fri Nov 15 2019 yanzhihua<yanzhihua4@huawei.com> - 10.5-6
+- Package init
diff --git a/postgresql.tmpfiles.d b/postgresql.tmpfiles.d
new file mode 100644
index 0000000..d8d960d
--- /dev/null
+++ b/postgresql.tmpfiles.d
@@ -0,0 +1 @@
+d /var/run/postgresql 0755 postgres postgres -
diff --git a/rpm-pgsql.patch b/rpm-pgsql.patch
new file mode 100644
index 0000000..aec64ac
--- /dev/null
+++ b/rpm-pgsql.patch
@@ -0,0 +1,72 @@
+For the RPMs, we want the custom installation directories to end in
+/pgsql not /postgresql. This is historical but not worth changing.
+
+Notice that this patch also makes the appending of /pgsql unconditional.
+This is to avoid unexpected behavior if the RPM is built in a working
+directory whose path happens to include "postgres" or "pgsql" already.
+However, datadir and sysconfdir are already set up in the specfile's
+configure call, so we do not have to append anything to them.
+
+
+diff -Naur postgresql-9.0.1.orig/src/Makefile.global.in postgresql-9.0.1/src/Makefile.global.in
+--- postgresql-9.0.1.orig/src/Makefile.global.in 2010-10-01 10:25:44.000000000 -0400
++++ postgresql-9.0.1/src/Makefile.global.in 2010-10-11 11:52:05.224975308 -0400
+@@ -55,8 +55,7 @@
+ # Installation directories
+ #
+ # These are set by the equivalent --xxxdir configure options. We
+-# append "postgresql" to some of them, if the string does not already
+-# contain "pgsql" or "postgres", in order to avoid directory clutter.
++# append "pgsql" to some of them, in order to avoid directory clutter.
+ #
+ # In a PGXS build, we cannot use the values inserted into Makefile.global
+ # by configure, since the installation tree may have been relocated.
+@@ -74,45 +73,23 @@
+ bindir := @bindir@
+
+ datadir := @datadir@
+-ifeq "$(findstring pgsql, $(datadir))" ""
+-ifeq "$(findstring postgres, $(datadir))" ""
+-override datadir := $(datadir)/postgresql
+-endif
+-endif
+
+ sysconfdir := @sysconfdir@
+-ifeq "$(findstring pgsql, $(sysconfdir))" ""
+-ifeq "$(findstring postgres, $(sysconfdir))" ""
+-override sysconfdir := $(sysconfdir)/postgresql
+-endif
+-endif
+
+ libdir := @libdir@
+
+ pkglibdir = $(libdir)
+-ifeq "$(findstring pgsql, $(pkglibdir))" ""
+-ifeq "$(findstring postgres, $(pkglibdir))" ""
+-override pkglibdir := $(pkglibdir)/postgresql
+-endif
+-endif
++override pkglibdir := $(pkglibdir)/pgsql
+
+ includedir := @includedir@
+
+ pkgincludedir = $(includedir)
+-ifeq "$(findstring pgsql, $(pkgincludedir))" ""
+-ifeq "$(findstring postgres, $(pkgincludedir))" ""
+-override pkgincludedir := $(pkgincludedir)/postgresql
+-endif
+-endif
++override pkgincludedir := $(pkgincludedir)/pgsql
+
+ mandir := @mandir@
+
+ docdir := @docdir@
+-ifeq "$(findstring pgsql, $(docdir))" ""
+-ifeq "$(findstring postgres, $(docdir))" ""
+-override docdir := $(docdir)/postgresql
+-endif
+-endif
++override docdir := $(docdir)/pgsql
+
+ htmldir := @htmldir@
+
diff --git a/sources b/sources
new file mode 100644
index 0000000..a77d0ce
--- /dev/null
+++ b/sources
@@ -0,0 +1,4 @@
+9f9ed8060f4e68db110d6bff9b6b954a postgresql-14.11.tar.bz2
+a18130f9081b8307641be57e4f108138 postgresql-15.6-US.pdf
+666511aeb53bd4ac029e236e35b42ca8 postgresql-15.6.tar.bz2
+84cea5ea978de8626a21ddced52be373 postgresql-setup-8.8.tar.gz