From 629dad748050bf5ae7bdd8f50bcfdee871854b1e Mon Sep 17 00:00:00 2001 From: Filip Janus Date: Tue, 5 Dec 2023 14:57:41 +0100 Subject: [PATCH 01/15] Update to version 16 Build with ICU support --- libpq-10.3-var-run-socket.patch | 52 +++++++------ libpq-12.1-symbol-versioning.patch | 113 +++++++++++++++-------------- libpq.spec | 9 ++- sources | 4 +- 4 files changed, 92 insertions(+), 86 deletions(-) diff --git a/libpq-10.3-var-run-socket.patch b/libpq-10.3-var-run-socket.patch index 4b130b0..2c5c128 100644 --- a/libpq-10.3-var-run-socket.patch +++ b/libpq-10.3-var-run-socket.patch @@ -1,3 +1,4 @@ + 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 @@ -12,37 +13,34 @@ 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 4dde819652..8c2f601333 100644 ---- a/src/backend/utils/misc/guc.c -+++ b/src/backend/utils/misc/guc.c -@@ -4159,7 +4159,7 @@ static struct config_string ConfigureNamesString[] = +diff -ur postgresql-16.1/src/backend/utils/misc/guc_tables.c pg_patched/src/backend/utils/misc/guc_tables.c +--- postgresql-16.1/src/backend/utils/misc/guc_tables.c 2023-11-06 23:04:27.000000000 +0100 ++++ pg_patched/src/backend/utils/misc/guc_tables.c 2023-12-05 12:02:46.000000000 +0100 +@@ -4271,7 +4271,7 @@ + GUC_LIST_INPUT | GUC_LIST_QUOTE | GUC_SUPERUSER_ONLY }, &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 4ff0c6c700..6ccd96b1f2 100644 ---- a/src/bin/initdb/initdb.c -+++ b/src/bin/initdb/initdb.c -@@ -1091,7 +1091,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 8f3ec6bde1..066daf3f08 100644 ---- a/src/include/pg_config_manual.h -+++ b/src/include/pg_config_manual.h -@@ -201,7 +201,7 @@ + NULL, NULL, NULL + }, + +diff -ur postgresql-16.1/src/bin/initdb/initdb.c pg_patched/src/bin/initdb/initdb.c +--- postgresql-16.1/src/bin/initdb/initdb.c 2023-11-06 23:04:27.000000000 +0100 ++++ pg_patched/src/bin/initdb/initdb.c 2023-12-05 12:04:19.000000000 +0100 +@@ -1287,7 +1287,7 @@ + * these are indeed defaults, keep the postgresql.conf lines commented. + */ + conflines = replace_guc_value(conflines, "unix_socket_directories", +- DEFAULT_PGSOCKET_DIR, true); ++ DEFAULT_PGSOCKET_DIR ", /tmp", true); + + conflines = replace_guc_value(conflines, "port", + DEF_PGPORT_STR, true); +diff -ur postgresql-16.1/src/include/pg_config_manual.h pg_patched/src/include/pg_config_manual.h +--- postgresql-16.1/src/include/pg_config_manual.h 2023-11-06 23:04:27.000000000 +0100 ++++ pg_patched/src/include/pg_config_manual.h 2023-12-05 11:45:20.000000000 +0100 +@@ -206,7 +206,7 @@ * support them yet. */ #ifndef WIN32 diff --git a/libpq-12.1-symbol-versioning.patch b/libpq-12.1-symbol-versioning.patch index 48a2482..955510c 100644 --- a/libpq-12.1-symbol-versioning.patch +++ b/libpq-12.1-symbol-versioning.patch @@ -6,11 +6,10 @@ Date: Fri Oct 30 20:16:50 2020 +0100 available in RHEL 8, and ABI versioning will guarantee us that modular RPMs will depend on appropriate libpq ABI version (picked at build-time). -diff --git a/config/Makefile b/config/Makefile -index 67e7998..86612a4 100644 ---- a/config/Makefile -+++ b/config/Makefile -@@ -8,6 +8,7 @@ include $(top_builddir)/src/Makefile.global +diff -ur postgresql-16.1/config/Makefile postgresql_patched/config/Makefile +--- postgresql-16.1/config/Makefile 2023-11-06 23:04:27.000000000 +0100 ++++ postgresql_patched/config/Makefile 2023-12-05 10:43:19.733619095 +0100 +@@ -8,6 +8,7 @@ install: all installdirs $(INSTALL_SCRIPT) $(srcdir)/install-sh '$(DESTDIR)$(pgxsdir)/config/install-sh' $(INSTALL_SCRIPT) $(srcdir)/missing '$(DESTDIR)$(pgxsdir)/config/missing' @@ -18,6 +17,46 @@ index 67e7998..86612a4 100644 installdirs: $(MKDIR_P) '$(DESTDIR)$(pgxsdir)/config' +diff -ur postgresql-16.1/src/interfaces/libpq/exports.txt postgresql_patched/src/interfaces/libpq/exports.txt +--- postgresql-16.1/src/interfaces/libpq/exports.txt 2023-11-06 23:04:27.000000000 +0100 ++++ postgresql_patched/src/interfaces/libpq/exports.txt 2023-12-05 10:48:24.627604638 +0100 +@@ -171,19 +171,19 @@ + PQsslAttribute 169 + PQsetErrorContextVisibility 170 + PQresultVerboseErrorMessage 171 +-PQencryptPasswordConn 172 +-PQresultMemorySize 173 ++PQencryptPasswordConn 172 10 ++PQresultMemorySize 173 12 + PQhostaddr 174 + PQgssEncInUse 175 + PQgetgssctx 176 +-PQsetSSLKeyPassHook_OpenSSL 177 ++PQsetSSLKeyPassHook_OpenSSL 177 13 + PQgetSSLKeyPassHook_OpenSSL 178 + PQdefaultSSLKeyPassHook_OpenSSL 179 +-PQenterPipelineMode 180 ++PQenterPipelineMode 180 14 + PQexitPipelineMode 181 + PQpipelineSync 182 + PQpipelineStatus 183 + PQsetTraceFlags 184 + PQmblenBounded 185 + PQsendFlushRequest 186 +-PQconnectionUsedGSSAPI 187 ++PQconnectionUsedGSSAPI 187 16 +diff -ur postgresql-16.1/src/Makefile.shlib postgresql_patched/src/Makefile.shlib +--- postgresql-16.1/src/Makefile.shlib 2023-11-06 23:04:27.000000000 +0100 ++++ postgresql_patched/src/Makefile.shlib 2023-12-05 10:43:19.739634021 +0100 +@@ -185,7 +185,7 @@ + ifdef soname + LINK.shared += -Wl,-soname,$(soname) + endif +- BUILD.exports = ( echo '{ global:'; $(AWK) '/^[^\#]/ {printf "%s;\n",$$1}' $<; echo ' local: *; };' ) >$@ ++ BUILD.exports = $(SHELL) $(top_srcdir)/config/build-exports-gnu-ld < $< > $@ + exports_file = $(SHLIB_EXPORTS:%.txt=%.list) + ifneq (,$(exports_file)) + LINK.shared += -Wl,--version-script=$(exports_file) diff --git a/config/build-exports-gnu-ld b/config/build-exports-gnu-ld new file mode 100755 index 0000000000..84c48e3ade @@ -38,66 +77,30 @@ index 0000000000..84c48e3ade + +open_block () +{ -+ $first || echo -+ first=false -+ echo "${SYMBOL_VERSION_PREFIX}$version {" -+ echo "global:" ++ $first || echo ++ first=false ++ echo "${SYMBOL_VERSION_PREFIX}$version {" ++ echo "global:" +} + +close_block () +{ -+ echo "}${version_prev:+ $SYMBOL_VERSION_PREFIX$version_prev};" -+ version_prev=$version -+ version=$1 ++ echo "}${version_prev:+ $SYMBOL_VERSION_PREFIX$version_prev};" ++ version_prev=$version ++ version=$1 +} + +open_block +while read -r symbol _ new_version +do -+ case $symbol in '#'*) continue ;; esac -+ if test -n "$new_version" && test "$new_version" != "$version"; then -+ close_block "$new_version" -+ open_block -+ fi -+ echo " $symbol;" ++ case $symbol in '#'*) continue ;; esac ++ if test -n "$new_version" && test "$new_version" != "$version"; then ++ close_block "$new_version" ++ open_block ++ fi ++ echo " $symbol;" +done + +echo "local:" -+echo " *;" ++echo " *;" +close_block -diff --git a/src/Makefile.shlib b/src/Makefile.shlib -index 373d73caef..d5bd5468cd 100644 ---- a/src/Makefile.shlib -+++ b/src/Makefile.shlib -@@ -231,7 +231,7 @@ ifeq ($(PORTNAME), linux) - ifdef soname - LINK.shared += -Wl,-soname,$(soname) - endif -- BUILD.exports = ( echo '{ global:'; $(AWK) '/^[^\#]/ {printf "%s;\n",$$1}' $<; echo ' local: *; };' ) >$@ -+ BUILD.exports = $(SHELL) $(top_srcdir)/config/build-exports-gnu-ld < $< > $@ - exports_file = $(SHLIB_EXPORTS:%.txt=%.list) - ifneq (,$(exports_file)) - LINK.shared += -Wl,--version-script=$(exports_file) -diff -ur postgresql-14.1/src/interfaces/libpq/exports.txt patched/src/interfaces/libpq/exports.txt ---- postgresql-14.1/src/interfaces/libpq/exports.txt 2021-11-08 22:58:24.000000000 +0100 -+++ patched/src/interfaces/libpq/exports.txt 2022-01-12 12:00:28.000000000 +0100 -@@ -171,15 +171,15 @@ - PQsslAttribute 169 - PQsetErrorContextVisibility 170 - PQresultVerboseErrorMessage 171 --PQencryptPasswordConn 172 --PQresultMemorySize 173 -+PQencryptPasswordConn 172 10 -+PQresultMemorySize 173 12 - PQhostaddr 174 - PQgssEncInUse 175 - PQgetgssctx 176 --PQsetSSLKeyPassHook_OpenSSL 177 -+PQsetSSLKeyPassHook_OpenSSL 177 13 - PQgetSSLKeyPassHook_OpenSSL 178 - PQdefaultSSLKeyPassHook_OpenSSL 179 --PQenterPipelineMode 180 -+PQenterPipelineMode 180 14 - PQexitPipelineMode 181 - PQpipelineSync 182 - PQpipelineStatus 183 diff --git a/libpq.spec b/libpq.spec index d621239..3eb7a3d 100644 --- a/libpq.spec +++ b/libpq.spec @@ -1,9 +1,9 @@ -%global majorversion 15 +%global majorversion 16 %global obsoletes_version %( echo $(( %majorversion + 1 )) ) Summary: PostgreSQL client library Name: libpq -Version: %{majorversion}.3 +Version: %{majorversion}.1 Release: 1%{?dist} License: PostgreSQL @@ -27,6 +27,7 @@ BuildRequires: openldap-devel BuildRequires: gettext BuildRequires: multilib-rpm-config BuildRequires: make +BuildRequires: libicu-devel Obsoletes: postgresql-libs < %obsoletes_version Provides: postgresql-libs = %version-%release @@ -130,6 +131,10 @@ find_lang_bins %name-devel.lst pg_config %_libdir/pkgconfig/libpq.pc %changelog +* Tue Dec 5 2023 Filip Janus - 16.1-1 +- Update to 16.1 +- Build with ICU by default - new upstream feature + * Wed Aug 2 2023 Filip Janus - 15.3-1 - Update to the latest upstream version diff --git a/sources b/sources index 214826a..2bc1280 100755 --- a/sources +++ b/sources @@ -1,2 +1,2 @@ -SHA512 (postgresql-15.3.tar.bz2) = cac97edeb40df1e8f2162f401b465751132929d7249495ef001e950645a2db46343bd732e7bd6504a7f795e25aea66724f2f4ab0065e3d9331b36db4b3a3bec6 -SHA512 (postgresql-15.3.tar.bz2.sha256) = 1c4874650352b8c61b24271d668e09fe64d7e3a961bb7fcf46a5cafe2d4daa8d7a25e2e0ff6fc49ad889c82be8fd03709ff1c032f87f943ba5feb5b3892c7b15 +SHA512 (postgresql-16.1.tar.bz2) = 69f4635e5841452599f13b47df41ce2425ab34b4e4582fd2c635bc78d561fa36c5b03eccb4ae6569872dc74775be1b5a62dee20c9a4f12a43339250128352918 +SHA512 (postgresql-16.1.tar.bz2.sha256) = 3f573d81a7af02dea2a3eee180d4e465546fc4d283dde5b6627d25af0be4a546ffd3ae914dd3490e45264d1a43cf143e829e14e5cd9c6bd8f179b6eae4fd6ff1 From cf1cdcbd24b7dd267d140e506ebf46969d6d9a46 Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Sun, 21 Jan 2024 05:03:08 +0000 Subject: [PATCH 02/15] Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild --- libpq.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/libpq.spec b/libpq.spec index 3eb7a3d..b7f35fe 100644 --- a/libpq.spec +++ b/libpq.spec @@ -4,7 +4,7 @@ Summary: PostgreSQL client library Name: libpq Version: %{majorversion}.1 -Release: 1%{?dist} +Release: 2%{?dist} License: PostgreSQL Url: http://www.postgresql.org/ @@ -131,6 +131,9 @@ find_lang_bins %name-devel.lst pg_config %_libdir/pkgconfig/libpq.pc %changelog +* Sun Jan 21 2024 Fedora Release Engineering - 16.1-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild + * Tue Dec 5 2023 Filip Janus - 16.1-1 - Update to 16.1 - Build with ICU by default - new upstream feature From e7a8590fe373fbb38c9def228d74870c5a496a1d Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Thu, 25 Jan 2024 03:15:35 +0000 Subject: [PATCH 03/15] Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild --- libpq.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/libpq.spec b/libpq.spec index b7f35fe..6902fb1 100644 --- a/libpq.spec +++ b/libpq.spec @@ -4,7 +4,7 @@ Summary: PostgreSQL client library Name: libpq Version: %{majorversion}.1 -Release: 2%{?dist} +Release: 3%{?dist} License: PostgreSQL Url: http://www.postgresql.org/ @@ -131,6 +131,9 @@ find_lang_bins %name-devel.lst pg_config %_libdir/pkgconfig/libpq.pc %changelog +* Thu Jan 25 2024 Fedora Release Engineering - 16.1-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild + * Sun Jan 21 2024 Fedora Release Engineering - 16.1-2 - Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild From 7831b20fe31ba1f1e951e3baa2d354c58498b293 Mon Sep 17 00:00:00 2001 From: Yaakov Selkowitz Date: Mon, 19 Feb 2024 21:53:23 -0500 Subject: [PATCH 04/15] Backport OpenSSL 3.2 fix from upstream master https://git.postgresql.org/gitweb/?p=postgresql.git;h=b2b1f12882fb561c7d474b834044dd8ed570bfea --- libpq.spec | 6 +- postgresql-openssl32.patch | 142 +++++++++++++++++++++++++++++++++++++ 2 files changed, 147 insertions(+), 1 deletion(-) create mode 100644 postgresql-openssl32.patch diff --git a/libpq.spec b/libpq.spec index 6902fb1..6357a62 100644 --- a/libpq.spec +++ b/libpq.spec @@ -4,7 +4,7 @@ Summary: PostgreSQL client library Name: libpq Version: %{majorversion}.1 -Release: 3%{?dist} +Release: 4%{?dist} License: PostgreSQL Url: http://www.postgresql.org/ @@ -17,6 +17,7 @@ Source1: https://ftp.postgresql.org/pub/source/v%{version}/postgresql-%{version} Patch1: libpq-10.3-rpm-pgsql.patch Patch2: libpq-10.3-var-run-socket.patch Patch3: libpq-12.1-symbol-versioning.patch +Patch4: postgresql-openssl32.patch BuildRequires: gcc BuildRequires: glibc-devel bison flex gawk @@ -131,6 +132,9 @@ find_lang_bins %name-devel.lst pg_config %_libdir/pkgconfig/libpq.pc %changelog +* Tue Feb 20 2024 Yaakov Selkowitz - 16.1-4 +- Backport OpenSSL 3.2 fix from upstream master + * Thu Jan 25 2024 Fedora Release Engineering - 16.1-3 - Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild diff --git a/postgresql-openssl32.patch b/postgresql-openssl32.patch new file mode 100644 index 0000000..683ffc5 --- /dev/null +++ b/postgresql-openssl32.patch @@ -0,0 +1,142 @@ +Backport of commit b2b1f12882fb561c7d474b834044dd8ed570bfea to 16.1 + +Use BIO_{get,set}_app_data instead of BIO_{get,set}_data. + +We should have done it this way all along, but we accidentally got +away with using the wrong BIO field up until OpenSSL 3.2. There, +the library's BIO routines that we rely on use the "data" field +for their own purposes, and our conflicting use causes assorted +weird behaviors up to and including core dumps when SSL connections +are attempted. Switch to using the approved field for the purpose, +i.e. app_data. + +While at it, remove our configure probes for BIO_get_data as well +as the fallback implementation. BIO_{get,set}_app_data have been +there since long before any OpenSSL version that we still support, +even in the back branches. + +Also, update src/test/ssl/t/001_ssltests.pl to allow for a minor +change in an error message spelling that evidently came in with 3.2. + +Tristan Partin and Bo Andreson. Back-patch to all supported branches. + +Discussion: https://postgr.es/m/CAN55FZ1eDDYsYaL7mv+oSLUij2h_u6hvD4Qmv-7PK7jkji0uyQ@mail.gmail.com +--- + +diff --git a/src/backend/libpq/be-secure-openssl.c b/src/backend/libpq/be-secure-openssl.c +index 31b6a6eacdf0..1b8b32c5b39e 100644 +--- a/src/backend/libpq/be-secure-openssl.c ++++ b/src/backend/libpq/be-secure-openssl.c +@@ -842,11 +842,6 @@ be_tls_write(Port *port, void *ptr, size_t len, int *waitfor) + * to retry; do we need to adopt their logic for that? + */ + +-#ifndef HAVE_BIO_GET_DATA +-#define BIO_get_data(bio) (bio->ptr) +-#define BIO_set_data(bio, data) (bio->ptr = data) +-#endif +- + static BIO_METHOD *my_bio_methods = NULL; + + static int +@@ -856,7 +851,7 @@ my_sock_read(BIO *h, char *buf, int size) + + if (buf != NULL) + { +- res = secure_raw_read(((Port *) BIO_get_data(h)), buf, size); ++ res = secure_raw_read(((Port *) BIO_get_app_data(h)), buf, size); + BIO_clear_retry_flags(h); + if (res <= 0) + { +@@ -876,7 +871,7 @@ my_sock_write(BIO *h, const char *buf, int size) + { + int res = 0; + +- res = secure_raw_write(((Port *) BIO_get_data(h)), buf, size); ++ res = secure_raw_write(((Port *) BIO_get_app_data(h)), buf, size); + BIO_clear_retry_flags(h); + if (res <= 0) + { +@@ -952,7 +947,7 @@ my_SSL_set_fd(Port *port, int fd) + SSLerr(SSL_F_SSL_SET_FD, ERR_R_BUF_LIB); + goto err; + } +- BIO_set_data(bio, port); ++ BIO_set_app_data(bio, port); + + BIO_set_fd(bio, fd, BIO_NOCLOSE); + SSL_set_bio(port->ssl, bio, bio); +diff --git a/src/interfaces/libpq/fe-secure-openssl.c b/src/interfaces/libpq/fe-secure-openssl.c +index 4aeaf08312ce..e669bdbf1d2d 100644 +--- a/src/interfaces/libpq/fe-secure-openssl.c ++++ b/src/interfaces/libpq/fe-secure-openssl.c +@@ -1815,11 +1815,6 @@ PQsslAttribute(PGconn *conn, const char *attribute_name) + * to retry; do we need to adopt their logic for that? + */ + +-#ifndef HAVE_BIO_GET_DATA +-#define BIO_get_data(bio) (bio->ptr) +-#define BIO_set_data(bio, data) (bio->ptr = data) +-#endif +- + static BIO_METHOD *my_bio_methods; + + static int +@@ -1828,7 +1823,7 @@ my_sock_read(BIO *h, char *buf, int size) + { + int res; + +- res = pqsecure_raw_read((PGconn *) BIO_get_data(h), buf, size); ++ res = pqsecure_raw_read((PGconn *) BIO_get_app_data(h), buf, size); + BIO_clear_retry_flags(h); + if (res < 0) + { +@@ -1858,7 +1853,7 @@ my_sock_write(BIO *h, const char *buf, int size) + { + int res; + +- res = pqsecure_raw_write((PGconn *) BIO_get_data(h), buf, size); ++ res = pqsecure_raw_write((PGconn *) BIO_get_app_data(h), buf, size); + BIO_clear_retry_flags(h); + if (res < 0) + { +@@ -1968,7 +1963,7 @@ my_SSL_set_fd(PGconn *conn, int fd) + SSLerr(SSL_F_SSL_SET_FD, ERR_R_BUF_LIB); + goto err; + } +- BIO_set_data(bio, conn); ++ BIO_set_app_data(bio, conn); + + SSL_set_bio(conn->ssl, bio, bio); + BIO_set_fd(bio, fd, BIO_NOCLOSE); +diff --git a/src/test/ssl/t/001_ssltests.pl b/src/test/ssl/t/001_ssltests.pl +index a049fd2ff03a..d921f1dde9fa 100644 +--- a/src/test/ssl/t/001_ssltests.pl ++++ b/src/test/ssl/t/001_ssltests.pl +@@ -776,7 +776,7 @@ sub switch_server_cert + "$common_connstr user=ssltestuser sslcert=ssl/client-revoked.crt " + . sslkey('client-revoked.key'), + "certificate authorization fails with revoked client cert", +- expected_stderr => qr/SSL error: sslv3 alert certificate revoked/, ++ expected_stderr => qr|SSL error: ssl[a-z0-9/]* alert certificate revoked|, + # temporarily(?) skip this check due to timing issue + # log_like => [ + # qr{Client certificate verification failed at depth 0: certificate revoked}, +@@ -881,7 +881,7 @@ sub switch_server_cert + "$common_connstr user=ssltestuser sslcert=ssl/client-revoked.crt " + . sslkey('client-revoked.key'), + "certificate authorization fails with revoked client cert with server-side CRL directory", +- expected_stderr => qr/SSL error: sslv3 alert certificate revoked/, ++ expected_stderr => qr|SSL error: ssl[a-z0-9/]* alert certificate revoked|, + # temporarily(?) skip this check due to timing issue + # log_like => [ + # qr{Client certificate verification failed at depth 0: certificate revoked}, +@@ -894,7 +894,7 @@ sub switch_server_cert + "$common_connstr user=ssltestuser sslcert=ssl/client-revoked-utf8.crt " + . sslkey('client-revoked-utf8.key'), + "certificate authorization fails with revoked UTF-8 client cert with server-side CRL directory", +- expected_stderr => qr/SSL error: sslv3 alert certificate revoked/, ++ expected_stderr => qr|SSL error: ssl[a-z0-9/]* alert certificate revoked|, + # temporarily(?) skip this check due to timing issue + # log_like => [ + # qr{Client certificate verification failed at depth 0: certificate revoked}, From 1e3a712a3a6d6042834e0454d792fc4a939b29c9 Mon Sep 17 00:00:00 2001 From: Ales Nezbeda Date: Mon, 27 May 2024 13:29:59 +0200 Subject: [PATCH 05/15] Bump version to 16.3 and remove unneeded OpenSSL patch --- libpq.spec | 9 ++- postgresql-openssl32.patch | 142 ------------------------------------- sources | 4 +- 3 files changed, 8 insertions(+), 147 deletions(-) delete mode 100644 postgresql-openssl32.patch diff --git a/libpq.spec b/libpq.spec index 6357a62..52a05aa 100644 --- a/libpq.spec +++ b/libpq.spec @@ -3,8 +3,8 @@ Summary: PostgreSQL client library Name: libpq -Version: %{majorversion}.1 -Release: 4%{?dist} +Version: %{majorversion}.3 +Release: 1%{?dist} License: PostgreSQL Url: http://www.postgresql.org/ @@ -17,7 +17,6 @@ Source1: https://ftp.postgresql.org/pub/source/v%{version}/postgresql-%{version} Patch1: libpq-10.3-rpm-pgsql.patch Patch2: libpq-10.3-var-run-socket.patch Patch3: libpq-12.1-symbol-versioning.patch -Patch4: postgresql-openssl32.patch BuildRequires: gcc BuildRequires: glibc-devel bison flex gawk @@ -132,6 +131,10 @@ find_lang_bins %name-devel.lst pg_config %_libdir/pkgconfig/libpq.pc %changelog +* Mon May 27 2024 Ales Nezbeda - 16.3-1 +- Update to 16.3 +- Remove backported OpenSSL fix + * Tue Feb 20 2024 Yaakov Selkowitz - 16.1-4 - Backport OpenSSL 3.2 fix from upstream master diff --git a/postgresql-openssl32.patch b/postgresql-openssl32.patch deleted file mode 100644 index 683ffc5..0000000 --- a/postgresql-openssl32.patch +++ /dev/null @@ -1,142 +0,0 @@ -Backport of commit b2b1f12882fb561c7d474b834044dd8ed570bfea to 16.1 - -Use BIO_{get,set}_app_data instead of BIO_{get,set}_data. - -We should have done it this way all along, but we accidentally got -away with using the wrong BIO field up until OpenSSL 3.2. There, -the library's BIO routines that we rely on use the "data" field -for their own purposes, and our conflicting use causes assorted -weird behaviors up to and including core dumps when SSL connections -are attempted. Switch to using the approved field for the purpose, -i.e. app_data. - -While at it, remove our configure probes for BIO_get_data as well -as the fallback implementation. BIO_{get,set}_app_data have been -there since long before any OpenSSL version that we still support, -even in the back branches. - -Also, update src/test/ssl/t/001_ssltests.pl to allow for a minor -change in an error message spelling that evidently came in with 3.2. - -Tristan Partin and Bo Andreson. Back-patch to all supported branches. - -Discussion: https://postgr.es/m/CAN55FZ1eDDYsYaL7mv+oSLUij2h_u6hvD4Qmv-7PK7jkji0uyQ@mail.gmail.com ---- - -diff --git a/src/backend/libpq/be-secure-openssl.c b/src/backend/libpq/be-secure-openssl.c -index 31b6a6eacdf0..1b8b32c5b39e 100644 ---- a/src/backend/libpq/be-secure-openssl.c -+++ b/src/backend/libpq/be-secure-openssl.c -@@ -842,11 +842,6 @@ be_tls_write(Port *port, void *ptr, size_t len, int *waitfor) - * to retry; do we need to adopt their logic for that? - */ - --#ifndef HAVE_BIO_GET_DATA --#define BIO_get_data(bio) (bio->ptr) --#define BIO_set_data(bio, data) (bio->ptr = data) --#endif -- - static BIO_METHOD *my_bio_methods = NULL; - - static int -@@ -856,7 +851,7 @@ my_sock_read(BIO *h, char *buf, int size) - - if (buf != NULL) - { -- res = secure_raw_read(((Port *) BIO_get_data(h)), buf, size); -+ res = secure_raw_read(((Port *) BIO_get_app_data(h)), buf, size); - BIO_clear_retry_flags(h); - if (res <= 0) - { -@@ -876,7 +871,7 @@ my_sock_write(BIO *h, const char *buf, int size) - { - int res = 0; - -- res = secure_raw_write(((Port *) BIO_get_data(h)), buf, size); -+ res = secure_raw_write(((Port *) BIO_get_app_data(h)), buf, size); - BIO_clear_retry_flags(h); - if (res <= 0) - { -@@ -952,7 +947,7 @@ my_SSL_set_fd(Port *port, int fd) - SSLerr(SSL_F_SSL_SET_FD, ERR_R_BUF_LIB); - goto err; - } -- BIO_set_data(bio, port); -+ BIO_set_app_data(bio, port); - - BIO_set_fd(bio, fd, BIO_NOCLOSE); - SSL_set_bio(port->ssl, bio, bio); -diff --git a/src/interfaces/libpq/fe-secure-openssl.c b/src/interfaces/libpq/fe-secure-openssl.c -index 4aeaf08312ce..e669bdbf1d2d 100644 ---- a/src/interfaces/libpq/fe-secure-openssl.c -+++ b/src/interfaces/libpq/fe-secure-openssl.c -@@ -1815,11 +1815,6 @@ PQsslAttribute(PGconn *conn, const char *attribute_name) - * to retry; do we need to adopt their logic for that? - */ - --#ifndef HAVE_BIO_GET_DATA --#define BIO_get_data(bio) (bio->ptr) --#define BIO_set_data(bio, data) (bio->ptr = data) --#endif -- - static BIO_METHOD *my_bio_methods; - - static int -@@ -1828,7 +1823,7 @@ my_sock_read(BIO *h, char *buf, int size) - { - int res; - -- res = pqsecure_raw_read((PGconn *) BIO_get_data(h), buf, size); -+ res = pqsecure_raw_read((PGconn *) BIO_get_app_data(h), buf, size); - BIO_clear_retry_flags(h); - if (res < 0) - { -@@ -1858,7 +1853,7 @@ my_sock_write(BIO *h, const char *buf, int size) - { - int res; - -- res = pqsecure_raw_write((PGconn *) BIO_get_data(h), buf, size); -+ res = pqsecure_raw_write((PGconn *) BIO_get_app_data(h), buf, size); - BIO_clear_retry_flags(h); - if (res < 0) - { -@@ -1968,7 +1963,7 @@ my_SSL_set_fd(PGconn *conn, int fd) - SSLerr(SSL_F_SSL_SET_FD, ERR_R_BUF_LIB); - goto err; - } -- BIO_set_data(bio, conn); -+ BIO_set_app_data(bio, conn); - - SSL_set_bio(conn->ssl, bio, bio); - BIO_set_fd(bio, fd, BIO_NOCLOSE); -diff --git a/src/test/ssl/t/001_ssltests.pl b/src/test/ssl/t/001_ssltests.pl -index a049fd2ff03a..d921f1dde9fa 100644 ---- a/src/test/ssl/t/001_ssltests.pl -+++ b/src/test/ssl/t/001_ssltests.pl -@@ -776,7 +776,7 @@ sub switch_server_cert - "$common_connstr user=ssltestuser sslcert=ssl/client-revoked.crt " - . sslkey('client-revoked.key'), - "certificate authorization fails with revoked client cert", -- expected_stderr => qr/SSL error: sslv3 alert certificate revoked/, -+ expected_stderr => qr|SSL error: ssl[a-z0-9/]* alert certificate revoked|, - # temporarily(?) skip this check due to timing issue - # log_like => [ - # qr{Client certificate verification failed at depth 0: certificate revoked}, -@@ -881,7 +881,7 @@ sub switch_server_cert - "$common_connstr user=ssltestuser sslcert=ssl/client-revoked.crt " - . sslkey('client-revoked.key'), - "certificate authorization fails with revoked client cert with server-side CRL directory", -- expected_stderr => qr/SSL error: sslv3 alert certificate revoked/, -+ expected_stderr => qr|SSL error: ssl[a-z0-9/]* alert certificate revoked|, - # temporarily(?) skip this check due to timing issue - # log_like => [ - # qr{Client certificate verification failed at depth 0: certificate revoked}, -@@ -894,7 +894,7 @@ sub switch_server_cert - "$common_connstr user=ssltestuser sslcert=ssl/client-revoked-utf8.crt " - . sslkey('client-revoked-utf8.key'), - "certificate authorization fails with revoked UTF-8 client cert with server-side CRL directory", -- expected_stderr => qr/SSL error: sslv3 alert certificate revoked/, -+ expected_stderr => qr|SSL error: ssl[a-z0-9/]* alert certificate revoked|, - # temporarily(?) skip this check due to timing issue - # log_like => [ - # qr{Client certificate verification failed at depth 0: certificate revoked}, diff --git a/sources b/sources index 2bc1280..4f151c0 100755 --- a/sources +++ b/sources @@ -1,2 +1,2 @@ -SHA512 (postgresql-16.1.tar.bz2) = 69f4635e5841452599f13b47df41ce2425ab34b4e4582fd2c635bc78d561fa36c5b03eccb4ae6569872dc74775be1b5a62dee20c9a4f12a43339250128352918 -SHA512 (postgresql-16.1.tar.bz2.sha256) = 3f573d81a7af02dea2a3eee180d4e465546fc4d283dde5b6627d25af0be4a546ffd3ae914dd3490e45264d1a43cf143e829e14e5cd9c6bd8f179b6eae4fd6ff1 +SHA512 (postgresql-16.3.tar.bz2) = dc1c8d4fbc8e53e9be91dcf1b644b3969bd634f11bf5a1c4fe16619fd386f3349a5509788d43e6a57d099ad75233026d4dd4e0bb180ffc747fd3c1a575c51a5f +SHA512 (postgresql-16.3.tar.bz2.sha256) = eeebced14bc6c42df864c00397caaafa91b3ddc1c3900943989f04d396674907f63051b93aeb6b1b2408ffeb1b2fc44521b123b42b986b45c19bdcf706523c84 From e52f462d6fd40e6b3090984d5c981fc94bdb58f6 Mon Sep 17 00:00:00 2001 From: Filip Janus Date: Tue, 18 Jun 2024 09:36:59 +0200 Subject: [PATCH 06/15] Ship errcodes.h header file in -devel pacakge - kea package requires errorcodes. --- libpq.spec | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/libpq.spec b/libpq.spec index 52a05aa..34c6464 100644 --- a/libpq.spec +++ b/libpq.spec @@ -4,7 +4,7 @@ Summary: PostgreSQL client library Name: libpq Version: %{majorversion}.3 -Release: 1%{?dist} +Release: 2%{?dist} License: PostgreSQL Url: http://www.postgresql.org/ @@ -98,6 +98,8 @@ done # remove files not to be packaged find $RPM_BUILD_ROOT -name '*.a' -delete +mv $RPM_BUILD_ROOT%{_includedir}/pgsql/server/utils/errcodes.h \ + $RPM_BUILD_ROOT%{_includedir}/pgsql rm -r $RPM_BUILD_ROOT%_includedir/pgsql/server %multilib_fix_c_header --file "%_includedir/pg_config.h" @@ -131,6 +133,9 @@ find_lang_bins %name-devel.lst pg_config %_libdir/pkgconfig/libpq.pc %changelog +* Tue Jun 18 2024 Filip Janus - 16.3-2 +- Ship errcodes.h in -devel package (kea package requires errorcodes) + * Mon May 27 2024 Ales Nezbeda - 16.3-1 - Update to 16.3 - Remove backported OpenSSL fix From e98e1d2454186d7c7608c52823c43f99d4f73761 Mon Sep 17 00:00:00 2001 From: Filip Janus Date: Tue, 18 Jun 2024 17:59:04 +0200 Subject: [PATCH 07/15] Move errcodes.h to usr/include/pgsql/server/utils/ to be consistent with the upstream --- libpq.spec | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/libpq.spec b/libpq.spec index 34c6464..65f61f2 100644 --- a/libpq.spec +++ b/libpq.spec @@ -4,7 +4,7 @@ Summary: PostgreSQL client library Name: libpq Version: %{majorversion}.3 -Release: 2%{?dist} +Release: 3%{?dist} License: PostgreSQL Url: http://www.postgresql.org/ @@ -98,9 +98,14 @@ done # remove files not to be packaged find $RPM_BUILD_ROOT -name '*.a' -delete +# preserve just errcodes.h mv $RPM_BUILD_ROOT%{_includedir}/pgsql/server/utils/errcodes.h \ $RPM_BUILD_ROOT%{_includedir}/pgsql rm -r $RPM_BUILD_ROOT%_includedir/pgsql/server +mkdir -p $RPM_BUILD_ROOT%{_includedir}/pgsql/server/utils +mv $RPM_BUILD_ROOT%{_includedir}/pgsql/errcodes.h \ + $RPM_BUILD_ROOT%{_includedir}/pgsql/server/utils + %multilib_fix_c_header --file "%_includedir/pg_config.h" %multilib_fix_c_header --file "%_includedir/pg_config_ext.h" @@ -133,6 +138,10 @@ find_lang_bins %name-devel.lst pg_config %_libdir/pkgconfig/libpq.pc %changelog +* Tue Jun 18 2024 Filip Janus - 16.3-3 +- Move errcodes.h to usr/include/pgsql/server/utils/ +- to be consistent with upstream + * Tue Jun 18 2024 Filip Janus - 16.3-2 - Ship errcodes.h in -devel package (kea package requires errorcodes) From ff838b3058edc8ad422db00a527a85983f5de816 Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Thu, 18 Jul 2024 14:48:59 +0000 Subject: [PATCH 08/15] Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild --- libpq.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/libpq.spec b/libpq.spec index 65f61f2..3401db5 100644 --- a/libpq.spec +++ b/libpq.spec @@ -4,7 +4,7 @@ Summary: PostgreSQL client library Name: libpq Version: %{majorversion}.3 -Release: 3%{?dist} +Release: 4%{?dist} License: PostgreSQL Url: http://www.postgresql.org/ @@ -138,6 +138,9 @@ find_lang_bins %name-devel.lst pg_config %_libdir/pkgconfig/libpq.pc %changelog +* Thu Jul 18 2024 Fedora Release Engineering - 16.3-4 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild + * Tue Jun 18 2024 Filip Janus - 16.3-3 - Move errcodes.h to usr/include/pgsql/server/utils/ - to be consistent with upstream From 266c646e51ecfaec22469a2850fb9a5f36d0f944 Mon Sep 17 00:00:00 2001 From: Ales Nezbeda Date: Tue, 30 Jul 2024 09:36:55 +0200 Subject: [PATCH 09/15] Disable ENGINE API --- libpq.spec | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/libpq.spec b/libpq.spec index 3401db5..3c0d8a2 100644 --- a/libpq.spec +++ b/libpq.spec @@ -4,7 +4,7 @@ Summary: PostgreSQL client library Name: libpq Version: %{majorversion}.3 -Release: 4%{?dist} +Release: 5%{?dist} License: PostgreSQL Url: http://www.postgresql.org/ @@ -68,6 +68,7 @@ find . -type f -name .gitignore | xargs rm # complements symbol-versioning patch export SYMBOL_VERSION_PREFIX=RHPG_ +export CFLAGS="$CFLAGS -DOPENSSL_NO_ENGINE" # We don't build server nor client (e.g. /bin/psql) binaries in this package, so # we can disable some configure options. %configure \ @@ -138,6 +139,11 @@ find_lang_bins %name-devel.lst pg_config %_libdir/pkgconfig/libpq.pc %changelog +* Tue Jul 30 2024 Ales Nezbeda - 16.3-5 +- Disable openssl ENGINE_API +- Fedora change: https://fedoraproject.org/wiki/Changes/OpensslDeprecateEngine +- BZ: 2300910 + * Thu Jul 18 2024 Fedora Release Engineering - 16.3-4 - Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild From 9fcf3c0030cc0f228a3af80dc231dc3633cf1895 Mon Sep 17 00:00:00 2001 From: Ales Nezbeda Date: Wed, 21 Aug 2024 15:54:41 +0200 Subject: [PATCH 10/15] Update to 16.4 --- libpq.spec | 7 +++++-- sources | 4 ++-- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/libpq.spec b/libpq.spec index 3c0d8a2..fbad5c2 100644 --- a/libpq.spec +++ b/libpq.spec @@ -3,8 +3,8 @@ Summary: PostgreSQL client library Name: libpq -Version: %{majorversion}.3 -Release: 5%{?dist} +Version: %{majorversion}.4 +Release: 1%{?dist} License: PostgreSQL Url: http://www.postgresql.org/ @@ -139,6 +139,9 @@ find_lang_bins %name-devel.lst pg_config %_libdir/pkgconfig/libpq.pc %changelog +* Wed Aug 21 2024 Ales Nezbeda - 16.4-1 +- Update to 16.4 + * Tue Jul 30 2024 Ales Nezbeda - 16.3-5 - Disable openssl ENGINE_API - Fedora change: https://fedoraproject.org/wiki/Changes/OpensslDeprecateEngine diff --git a/sources b/sources index 4f151c0..04b03aa 100755 --- a/sources +++ b/sources @@ -1,2 +1,2 @@ -SHA512 (postgresql-16.3.tar.bz2) = dc1c8d4fbc8e53e9be91dcf1b644b3969bd634f11bf5a1c4fe16619fd386f3349a5509788d43e6a57d099ad75233026d4dd4e0bb180ffc747fd3c1a575c51a5f -SHA512 (postgresql-16.3.tar.bz2.sha256) = eeebced14bc6c42df864c00397caaafa91b3ddc1c3900943989f04d396674907f63051b93aeb6b1b2408ffeb1b2fc44521b123b42b986b45c19bdcf706523c84 +SHA512 (postgresql-16.4.tar.bz2) = f2070299f0857a270317ac984f8393374cf00d4f32a082fe3c5481e36c560595ea711fed95e40d1bc90c5089edf8f165649d443d8b9c68614e1c83fc91268e96 +SHA512 (postgresql-16.4.tar.bz2.sha256) = f5a33591b4a0810e2f90d21df471ba086acbd1f97099e38aed46e4d3b45ee72037ef5958c7f155dd9fb7969152599fb6946b792a12d92575bfbc595049b74674 From 5687a6828e176811ddd683dd8587f231cb4a4a81 Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Fri, 17 Jan 2025 13:04:16 +0000 Subject: [PATCH 11/15] Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild --- libpq.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/libpq.spec b/libpq.spec index fbad5c2..4fbed95 100644 --- a/libpq.spec +++ b/libpq.spec @@ -4,7 +4,7 @@ Summary: PostgreSQL client library Name: libpq Version: %{majorversion}.4 -Release: 1%{?dist} +Release: 2%{?dist} License: PostgreSQL Url: http://www.postgresql.org/ @@ -139,6 +139,9 @@ find_lang_bins %name-devel.lst pg_config %_libdir/pkgconfig/libpq.pc %changelog +* Fri Jan 17 2025 Fedora Release Engineering - 16.4-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild + * Wed Aug 21 2024 Ales Nezbeda - 16.4-1 - Update to 16.4 From 38488413a7a79856de54a2d940d09a53dea17274 Mon Sep 17 00:00:00 2001 From: Filip Janus Date: Sun, 2 Feb 2025 15:24:31 +0000 Subject: [PATCH 12/15] gcc now uses std=gnu23 Use std=c17 to avoid errors --- libpq.spec | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libpq.spec b/libpq.spec index 4fbed95..bc85739 100644 --- a/libpq.spec +++ b/libpq.spec @@ -68,7 +68,7 @@ find . -type f -name .gitignore | xargs rm # complements symbol-versioning patch export SYMBOL_VERSION_PREFIX=RHPG_ -export CFLAGS="$CFLAGS -DOPENSSL_NO_ENGINE" +export CFLAGS="$CFLAGS -DOPENSSL_NO_ENGINE -std=c17" # We don't build server nor client (e.g. /bin/psql) binaries in this package, so # we can disable some configure options. %configure \ From efc0e9a401ab2a74206a7494887946a95c4ea951 Mon Sep 17 00:00:00 2001 From: Nikola Davidova Date: Mon, 9 Jun 2025 14:53:40 +0200 Subject: [PATCH 13/15] Rebase to 18.0 (beta) --- libpq-10.3-rpm-pgsql.patch | 2 +- libpq-10.3-var-run-socket.patch | 6 +++--- libpq-12.1-symbol-versioning.patch | 11 ++++++++--- libpq.spec | 24 +++++++++++++++++------- sources | 4 ++-- 5 files changed, 31 insertions(+), 16 deletions(-) diff --git a/libpq-10.3-rpm-pgsql.patch b/libpq-10.3-rpm-pgsql.patch index 93a3532..71a28e5 100644 --- a/libpq-10.3-rpm-pgsql.patch +++ b/libpq-10.3-rpm-pgsql.patch @@ -21,7 +21,7 @@ index 9a6265b3a0..c9371a07c4 100644 # # In a PGXS build, we cannot use the values inserted into Makefile.global # by configure, since the installation tree may have been relocated. -@@ -101,45 +100,23 @@ datarootdir := @datarootdir@ +@@ -111,45 +110,23 @@ datarootdir := @datarootdir@ bindir := @bindir@ datadir := @datadir@ diff --git a/libpq-10.3-var-run-socket.patch b/libpq-10.3-var-run-socket.patch index 2c5c128..3081c26 100644 --- a/libpq-10.3-var-run-socket.patch +++ b/libpq-10.3-var-run-socket.patch @@ -16,7 +16,7 @@ override it via postgresql.conf.) diff -ur postgresql-16.1/src/backend/utils/misc/guc_tables.c pg_patched/src/backend/utils/misc/guc_tables.c --- postgresql-16.1/src/backend/utils/misc/guc_tables.c 2023-11-06 23:04:27.000000000 +0100 +++ pg_patched/src/backend/utils/misc/guc_tables.c 2023-12-05 12:02:46.000000000 +0100 -@@ -4271,7 +4271,7 @@ +@@ -4648,7 +4648,7 @@ GUC_LIST_INPUT | GUC_LIST_QUOTE | GUC_SUPERUSER_ONLY }, &Unix_socket_directories, @@ -28,7 +28,7 @@ diff -ur postgresql-16.1/src/backend/utils/misc/guc_tables.c pg_patched/src/back diff -ur postgresql-16.1/src/bin/initdb/initdb.c pg_patched/src/bin/initdb/initdb.c --- postgresql-16.1/src/bin/initdb/initdb.c 2023-11-06 23:04:27.000000000 +0100 +++ pg_patched/src/bin/initdb/initdb.c 2023-12-05 12:04:19.000000000 +0100 -@@ -1287,7 +1287,7 @@ +@@ -1368,7 +1368,7 @@ * these are indeed defaults, keep the postgresql.conf lines commented. */ conflines = replace_guc_value(conflines, "unix_socket_directories", @@ -40,7 +40,7 @@ diff -ur postgresql-16.1/src/bin/initdb/initdb.c pg_patched/src/bin/initdb/initd diff -ur postgresql-16.1/src/include/pg_config_manual.h pg_patched/src/include/pg_config_manual.h --- postgresql-16.1/src/include/pg_config_manual.h 2023-11-06 23:04:27.000000000 +0100 +++ pg_patched/src/include/pg_config_manual.h 2023-12-05 11:45:20.000000000 +0100 -@@ -206,7 +206,7 @@ +@@ -190,7 +190,7 @@ * support them yet. */ #ifndef WIN32 diff --git a/libpq-12.1-symbol-versioning.patch b/libpq-12.1-symbol-versioning.patch index 955510c..2bd2525 100644 --- a/libpq-12.1-symbol-versioning.patch +++ b/libpq-12.1-symbol-versioning.patch @@ -20,7 +20,7 @@ diff -ur postgresql-16.1/config/Makefile postgresql_patched/config/Makefile diff -ur postgresql-16.1/src/interfaces/libpq/exports.txt postgresql_patched/src/interfaces/libpq/exports.txt --- postgresql-16.1/src/interfaces/libpq/exports.txt 2023-11-06 23:04:27.000000000 +0100 +++ postgresql_patched/src/interfaces/libpq/exports.txt 2023-12-05 10:48:24.627604638 +0100 -@@ -171,19 +171,19 @@ +@@ -171,23 +171,23 @@ PQsslAttribute 169 PQsetErrorContextVisibility 170 PQresultVerboseErrorMessage 171 @@ -44,12 +44,17 @@ diff -ur postgresql-16.1/src/interfaces/libpq/exports.txt postgresql_patched/src PQmblenBounded 185 PQsendFlushRequest 186 -PQconnectionUsedGSSAPI 187 +-PQclosePrepared 188 +PQconnectionUsedGSSAPI 187 16 ++PQclosePrepared 188 18 + PQclosePortal 189 + PQsendClosePrepared 190 + PQsendClosePortal 191 diff -ur postgresql-16.1/src/Makefile.shlib postgresql_patched/src/Makefile.shlib --- postgresql-16.1/src/Makefile.shlib 2023-11-06 23:04:27.000000000 +0100 +++ postgresql_patched/src/Makefile.shlib 2023-12-05 10:43:19.739634021 +0100 -@@ -185,7 +185,7 @@ - ifdef soname +@@ -176,7 +176,7 @@ + endif LINK.shared += -Wl,-soname,$(soname) endif - BUILD.exports = ( echo '{ global:'; $(AWK) '/^[^\#]/ {printf "%s;\n",$$1}' $<; echo ' local: *; };' ) >$@ diff --git a/libpq.spec b/libpq.spec index bc85739..2419153 100644 --- a/libpq.spec +++ b/libpq.spec @@ -1,16 +1,21 @@ -%global majorversion 16 +%global majorversion 18 %global obsoletes_version %( echo $(( %majorversion + 1 )) ) +%global betaversion 18beta1 Summary: PostgreSQL client library Name: libpq -Version: %{majorversion}.4 -Release: 2%{?dist} +Version: %{majorversion}.0 +Release: 1%{?dist} License: PostgreSQL Url: http://www.postgresql.org/ -Source0: https://ftp.postgresql.org/pub/source/v%{version}/postgresql-%{version}.tar.bz2 -Source1: https://ftp.postgresql.org/pub/source/v%{version}/postgresql-%{version}.tar.bz2.sha256 +# Use this when 18.0 is released +# Source0: https://ftp.postgresql.org/pub/source/v%%{version}/postgresql-%%{version}.tar.bz2 +# Source1: https://ftp.postgresql.org/pub/source/v%%{version}/postgresql-%%{version}.tar.bz2.sha256 + +Source0: https://ftp.postgresql.org/pub/source/v%{betaversion}/postgresql-%{betaversion}.tar.bz2 +Source1: https://ftp.postgresql.org/pub/source/v%{betaversion}/postgresql-%{betaversion}.tar.bz2.sha256 # Comments for these patches are in the patch files. @@ -28,6 +33,7 @@ BuildRequires: gettext BuildRequires: multilib-rpm-config BuildRequires: make BuildRequires: libicu-devel +BuildRequires: perl Obsoletes: postgresql-libs < %obsoletes_version Provides: postgresql-libs = %version-%release @@ -58,7 +64,7 @@ package or any clients that need to connect to a PostgreSQL server. %prep ( cd "$(dirname "%SOURCE1")" ; sha256sum -c "%SOURCE1" ) -%autosetup -n postgresql-%version -p1 +%autosetup -n postgresql-%{betaversion} -p1 # remove .gitignore files to ensure none get into the RPMs (bug #642210) find . -type f -name .gitignore | xargs rm @@ -109,7 +115,6 @@ mv $RPM_BUILD_ROOT%{_includedir}/pgsql/errcodes.h \ %multilib_fix_c_header --file "%_includedir/pg_config.h" -%multilib_fix_c_header --file "%_includedir/pg_config_ext.h" find_lang_bins () { @@ -130,6 +135,8 @@ find_lang_bins %name-devel.lst pg_config %_libdir/libpq.so.5* %dir %_datadir/pgsql %doc %_datadir/pgsql/pg_service.conf.sample +%_datadir/pgsql/postgres.bki +%_datadir/pgsql/system_constraints.sql %files devel -f %name-devel.lst @@ -139,6 +146,9 @@ find_lang_bins %name-devel.lst pg_config %_libdir/pkgconfig/libpq.pc %changelog +* Mon Jun 09 2025 Nikola Davidova - 18.0-1 +- Rebase to upstream release 18.0 + * Fri Jan 17 2025 Fedora Release Engineering - 16.4-2 - Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild diff --git a/sources b/sources index 04b03aa..26803b0 100755 --- a/sources +++ b/sources @@ -1,2 +1,2 @@ -SHA512 (postgresql-16.4.tar.bz2) = f2070299f0857a270317ac984f8393374cf00d4f32a082fe3c5481e36c560595ea711fed95e40d1bc90c5089edf8f165649d443d8b9c68614e1c83fc91268e96 -SHA512 (postgresql-16.4.tar.bz2.sha256) = f5a33591b4a0810e2f90d21df471ba086acbd1f97099e38aed46e4d3b45ee72037ef5958c7f155dd9fb7969152599fb6946b792a12d92575bfbc595049b74674 +SHA512 (postgresql-18beta1.tar.bz2) = 881a3442552d282fbe03ea22fab4bdd818cb901f8410485f19867ff64dc577d50cd9f7bb898828aec9783ff7e482798ffae63ff1cbfd19c4e1c64fed9e0a2daf +SHA512 (postgresql-18beta1.tar.bz2.sha256) = fc8fb34666d899dde9bb3c5886dec3ea87241913d47a464f960d1d1b4b105c8b007a36dac6f62ae2c45b9d254fe3c1b1a32fa42693af43d8561a192fee4340d9 From 4f9cf9e4faead9de283dabdb18bab332e0f98299 Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Thu, 24 Jul 2025 20:12:06 +0000 Subject: [PATCH 14/15] Rebuilt for https://fedoraproject.org/wiki/Fedora_43_Mass_Rebuild --- libpq.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/libpq.spec b/libpq.spec index 2419153..3098ae0 100644 --- a/libpq.spec +++ b/libpq.spec @@ -5,7 +5,7 @@ Summary: PostgreSQL client library Name: libpq Version: %{majorversion}.0 -Release: 1%{?dist} +Release: 2%{?dist} License: PostgreSQL Url: http://www.postgresql.org/ @@ -146,6 +146,9 @@ find_lang_bins %name-devel.lst pg_config %_libdir/pkgconfig/libpq.pc %changelog +* Thu Jul 24 2025 Fedora Release Engineering - 18.0-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_43_Mass_Rebuild + * Mon Jun 09 2025 Nikola Davidova - 18.0-1 - Rebase to upstream release 18.0 From ace31f6aa0c5404a3508437c76badafcc77c4af8 Mon Sep 17 00:00:00 2001 From: Filip Janus Date: Wed, 17 Sep 2025 11:49:36 +0000 Subject: [PATCH 15/15] libpq: Remove server-based files from client library package - Remove postgres.bki and system_constraints.sql files from package - These files are server-specific and should not be included in the client library - Fixes issue introduced by previous rebase to PostgreSQL 18.0 Resolves packaging inconsistency where server files were incorrectly included in the client library package. --- libpq.spec | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/libpq.spec b/libpq.spec index 3098ae0..4db4d81 100644 --- a/libpq.spec +++ b/libpq.spec @@ -5,7 +5,7 @@ Summary: PostgreSQL client library Name: libpq Version: %{majorversion}.0 -Release: 2%{?dist} +Release: 3%{?dist} License: PostgreSQL Url: http://www.postgresql.org/ @@ -112,7 +112,8 @@ rm -r $RPM_BUILD_ROOT%_includedir/pgsql/server mkdir -p $RPM_BUILD_ROOT%{_includedir}/pgsql/server/utils mv $RPM_BUILD_ROOT%{_includedir}/pgsql/errcodes.h \ $RPM_BUILD_ROOT%{_includedir}/pgsql/server/utils - +rm $RPM_BUILD_ROOT%_datadir/pgsql/postgres.bki +rm $RPM_BUILD_ROOT%_datadir/pgsql/system_constraints.sql %multilib_fix_c_header --file "%_includedir/pg_config.h" @@ -135,8 +136,6 @@ find_lang_bins %name-devel.lst pg_config %_libdir/libpq.so.5* %dir %_datadir/pgsql %doc %_datadir/pgsql/pg_service.conf.sample -%_datadir/pgsql/postgres.bki -%_datadir/pgsql/system_constraints.sql %files devel -f %name-devel.lst @@ -146,6 +145,9 @@ find_lang_bins %name-devel.lst pg_config %_libdir/pkgconfig/libpq.pc %changelog +* Wed Sep 17 2025 Filip Janus - 18.0-3 +- Removes server based files + * Thu Jul 24 2025 Fedora Release Engineering - 18.0-2 - Rebuilt for https://fedoraproject.org/wiki/Fedora_43_Mass_Rebuild