commit 562a6b4a307945150c9958b6c8fd179e3f576704 Author: Toshaan Bharvani Date: Sun Jan 8 03:16:18 2023 +0100 initial package creation Signed-off-by: Toshaan Bharvani diff --git a/SOURCES/libpq-10.3-rpm-pgsql.patch b/SOURCES/libpq-10.3-rpm-pgsql.patch new file mode 100644 index 0000000..93a3532 --- /dev/null +++ b/SOURCES/libpq-10.3-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 --git a/src/Makefile.global.in b/src/Makefile.global.in +index 9a6265b3a0..c9371a07c4 100644 +--- a/src/Makefile.global.in ++++ b/src/Makefile.global.in +@@ -82,8 +82,7 @@ vpathsearch = `for f in $(addsuffix /$(1),$(subst :, ,. $(VPATH))); do test -r $ + # 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. +@@ -101,45 +100,23 @@ datarootdir := @datarootdir@ + 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/libpq-10.3-var-run-socket.patch b/SOURCES/libpq-10.3-var-run-socket.patch new file mode 100644 index 0000000..4b130b0 --- /dev/null +++ b/SOURCES/libpq-10.3-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 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[] = + }, + &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 @@ + * 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/SOURCES/libpq-12.1-symbol-versioning.patch b/SOURCES/libpq-12.1-symbol-versioning.patch new file mode 100644 index 0000000..cd5edc3 --- /dev/null +++ b/SOURCES/libpq-12.1-symbol-versioning.patch @@ -0,0 +1,106 @@ +commit 75040c3388d9a7dd5ad2bee53cbcc8bf3d35cd17 +Author: Honza Horak +Date: Fri Oct 30 20:16:50 2020 +0100 + + The libpq package is supposed to be used for all the PostgreSQL modules + 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 + install: all installdirs + $(INSTALL_SCRIPT) $(srcdir)/install-sh '$(DESTDIR)$(pgxsdir)/config/install-sh' + $(INSTALL_SCRIPT) $(srcdir)/missing '$(DESTDIR)$(pgxsdir)/config/missing' ++ $(INSTALL_SCRIPT) $(srcdir)/build-exports-gnu-ld '$(DESTDIR)$(pgxsdir)/config/build-exports-gnu-ld' + + installdirs: + $(MKDIR_P) '$(DESTDIR)$(pgxsdir)/config' +diff --git a/config/build-exports-gnu-ld b/config/build-exports-gnu-ld +new file mode 100755 +index 0000000000..84c48e3ade +--- /dev/null ++++ b/config/build-exports-gnu-ld +@@ -0,0 +1,41 @@ ++#! /bin/sh ++ ++# by default use PG_ prefix ++: "${SYMBOL_VERSION_PREFIX=PG_}" ++ ++# we started symbol versioning since v10 ++: "${SYMBOL_VERSION_START=9.6}" ++ ++version=$SYMBOL_VERSION_START ++version_prev= ++first=: ++ ++open_block () ++{ ++ $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 ++} ++ ++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;" ++done ++ ++echo "local:" ++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-15.0_original/src/interfaces/libpq/exports.txt postgresql-15.0/src/interfaces/libpq/exports.txt +--- postgresql-15.0_original/src/interfaces/libpq/exports.txt 2022-10-10 22:57:37.000000000 +0200 ++++ postgresql-15.0/src/interfaces/libpq/exports.txt 2022-10-19 15:07:19.733908438 +0200 +@@ -171,16 +171,16 @@ + 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 +-PQexitPipelineMode 181 ++PQenterPipelineMode 180 14 ++PQexitPipelineMode 181 15 + PQpipelineSync 182 + PQpipelineStatus 183 + PQsetTraceFlags 184 + \ No newline at end of file diff --git a/SPECS/libpq.spec b/SPECS/libpq.spec new file mode 100644 index 0000000..3c92fff --- /dev/null +++ b/SPECS/libpq.spec @@ -0,0 +1,239 @@ +%global majorversion 15 +%global obsoletes_version %( echo $(( %majorversion + 1 )) ) + +Summary: PostgreSQL client library +Name: libpq +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 + + +# Comments for these patches are in the patch files. +Patch1: libpq-10.3-rpm-pgsql.patch +Patch2: libpq-10.3-var-run-socket.patch +Patch3: libpq-12.1-symbol-versioning.patch + +BuildRequires: gcc +BuildRequires: glibc-devel bison flex gawk +BuildRequires: zlib-devel +BuildRequires: openssl-devel +BuildRequires: krb5-devel +BuildRequires: openldap-devel +BuildRequires: gettext +BuildRequires: multilib-rpm-config +BuildRequires: make + +Obsoletes: postgresql-libs < %obsoletes_version +Provides: postgresql-libs = %version-%release + + +%description +The libpq package provides the essential shared library for any PostgreSQL +client program or interface. You will need to install this package to use any +other PostgreSQL package or any clients that need to connect to a PostgreSQL +server. + + +%package devel +Summary: Development files for building PostgreSQL client tools +Requires: %name%{?_isa} = %version-%release +# Historically we had 'postgresql-devel' package which was used for building +# both PG clients and PG server modules; let's have this fake provide to cover +# most of the depending packages and the rest (those which want to build server +# modules) need to be fixed to require postgresql-server-devel package. +Provides: postgresql-devel = %version-%release +Obsoletes: postgresql-devel < %obsoletes_version + +%description devel +The libpq package provides the essential shared library for any PostgreSQL +client program or interface. You will need to install this package to build any +package or any clients that need to connect to a PostgreSQL server. + + +%prep +( cd "$(dirname "%SOURCE1")" ; sha256sum -c "%SOURCE1" ) +%autosetup -n postgresql-%version -p1 + +# remove .gitignore files to ensure none get into the RPMs (bug #642210) +find . -type f -name .gitignore | xargs rm + + +%build +# complements symbol-versioning patch +export SYMBOL_VERSION_PREFIX=RHPG_ + +# We don't build server nor client (e.g. /bin/psql) binaries in this package, so +# we can disable some configure options. +%configure \ + --disable-rpath \ + --with-ldap \ + --with-openssl \ + --with-gssapi \ + --enable-nls \ + --without-readline \ + --datadir=%_datadir/pgsql + +%global build_subdirs \\\ + src/include \\\ + src/common \\\ + src/port \\\ + src/interfaces/libpq \\\ + src/bin/pg_config + +for subdir in %build_subdirs; do + %make_build -C "$subdir" +done + + +%install +for subdir in %build_subdirs; do + %make_install -C "$subdir" +done + +# remove files not to be packaged +find $RPM_BUILD_ROOT -name '*.a' -delete +rm -r $RPM_BUILD_ROOT%_includedir/pgsql/server + +%multilib_fix_c_header --file "%_includedir/pg_config.h" +%multilib_fix_c_header --file "%_includedir/pg_config_ext.h" + +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 %name.lst libpq5 +find_lang_bins %name-devel.lst pg_config + + +%files -f %name.lst +%license COPYRIGHT +%_libdir/libpq.so.5* +%dir %_datadir/pgsql +%doc %_datadir/pgsql/pg_service.conf.sample + + +%files devel -f %name-devel.lst +%_bindir/pg_config +%_includedir/* +%_libdir/libpq.so +%_libdir/pkgconfig/libpq.pc + +%changelog +* Tue Sep 27 2022 Ondrej Sloup - 15.1-1 +- Update to v15 +- Update patches +- Resolves: https://fedoraproject.org/wiki/Changes/PostgreSQL_15 + +* Thu Jul 21 2022 Fedora Release Engineering - 14.3-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild + +* Tue Jun 14 2022 Filip Januš - 14.3-1 +- Update to 14.3 + +* Tue Feb 22 2022 Filip Januš - 14.2-1 +- Update to 14.2 + +* Thu Jan 20 2022 Fedora Release Engineering - 14.1-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild + +* Mon Jan 03 2022 Filip Januš - 14.1-1 +- Update to v14 +- Resolves: https://fedoraproject.org/wiki/Changes/PostgreSQL_14 + +* Tue Sep 14 2021 Sahana Prasad - 13.4-2 +- Rebuilt with OpenSSL 3.0.0 + +* Thu Aug 12 2021 Filip Januš - 13.4-1 +- Update to 13.4 + +* Thu Jul 22 2021 Fedora Release Engineering - 13.3-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild + +* Mon May 17 2021 Filip Januš - 13.3-1 +- Update to 13.3 + +* Tue Feb 16 2021 Honza Horak - 13.2-1 +- Update to 13.2 + +* Mon Feb 08 2021 Patrik Novotný - 13.1-3 +- Fix symbol versioning + +* Tue Jan 26 2021 Fedora Release Engineering - 13.1-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild + +* Mon Nov 16 2020 Patrik Novotný - 13.1-1 +- Rebase to upstream release 13.1 + +* Mon Nov 02 2020 Patrik Novotný - 13.0-2 +- Rebuild for symbol versioning fix + +* Wed Oct 14 2020 Patrik Novotný - 13.0-1 +- Rebase to upstream release 13.0 + +* Tue Aug 18 2020 Patrik Novotný - 12.4-1 +- Rebase to upstream release 12.4 + +* Tue Jul 28 2020 Fedora Release Engineering - 12.3-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild + +* Mon May 18 2020 Patrik Novotný - 12.3-1 +- Rebase to upstream release 12.3 + +* Mon Feb 17 2020 Patrik Novotný - 12.2-1 +- Rebase to upstream release 12.2 + +* Tue Feb 04 2020 Patrik Novotný - 12.1-1 +- Rebase to upstream release 12.1 + +* Wed Jan 29 2020 Fedora Release Engineering - 11.6-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild + +* Mon Nov 25 2019 Patrik Novotný - 11.6-1 +- Rebase to upstream version 11.6 + +* Wed Aug 07 2019 Petr Kubat - 11.5-1 +- New upstream version 11.5 + +* Thu Jul 25 2019 Fedora Release Engineering - 11.4-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild + +* Tue Jul 09 2019 Petr Kubat - 11.4-1 +- New upstream version 11.4 + +* Fri May 10 2019 Pavel Raiskup - 11.3-2 +- obsolete anything < %%majorversion+1 + +* Thu May 09 2019 Patrik Novotný - 11.3-1 +- New upstream version 11.3 + +* Mon Feb 18 2019 Pavel Raiskup - 11.2-2 +- fix dnf system-upgrade from f29 to f29+, rhbz#1677849 + +* Thu Feb 14 2019 Pavel Raiskup - 11.2-1 +- latest upstream release, per release notes: + https://www.postgresql.org/docs/11/static/release-11-1.html + https://www.postgresql.org/docs/11/static/release-11-2.html + +* Fri Feb 01 2019 Fedora Release Engineering - 11.0-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild + +* Tue Oct 16 2018 Pavel Raiskup - 11.0-1 +- latest upstream release, per release notes: + https://www.postgresql.org/docs/11/static/release-11-0.html + +* Tue Sep 04 2018 Pavel Raiskup - 10.5-4 +- fix provides/obsoletes to final state + +* Thu Aug 30 2018 Pavel Raiskup - 10.5-1 +- libpq packaging for Fedora