diff --git a/.gitignore b/.gitignore index 1ab1ad1..9c1bc00 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1 @@ -SOURCES/postgresql-10.5.tar.bz2 +SOURCES/postgresql-12.1.tar.bz2 diff --git a/.libpq.metadata b/.libpq.metadata index 70e748f..5c59073 100644 --- a/.libpq.metadata +++ b/.libpq.metadata @@ -1 +1 @@ -8c7b4406b0ba2987f4170657f89908ad47947429 SOURCES/postgresql-10.5.tar.bz2 +b9bd13230fa02a4d0105e92d15d56e7842119e26 SOURCES/postgresql-12.1.tar.bz2 diff --git a/SOURCES/libpq-10.4-symbol-versioning.patch b/SOURCES/libpq-10.4-symbol-versioning.patch deleted file mode 100644 index ad09569..0000000 --- a/SOURCES/libpq-10.4-symbol-versioning.patch +++ /dev/null @@ -1,89 +0,0 @@ -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 67e7998f55..86612a42c3 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..bdcfb40d48 ---- /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 95b82a6dea..a7065d02a4 100644 ---- a/src/Makefile.shlib -+++ b/src/Makefile.shlib -@@ -221,7 +221,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 --git a/src/interfaces/libpq/exports.txt b/src/interfaces/libpq/exports.txt -index d6a38d0df8..29bebeac7e 100644 ---- a/src/interfaces/libpq/exports.txt -+++ b/src/interfaces/libpq/exports.txt -@@ -171,4 +171,4 @@ PQsslAttributeNames 168 - PQsslAttribute 169 - PQsetErrorContextVisibility 170 - PQresultVerboseErrorMessage 171 --PQencryptPasswordConn 172 -+PQencryptPasswordConn 172 10 --- -2.17.0 - diff --git a/SOURCES/libpq-12.0-symbol-versioning.patch b/SOURCES/libpq-12.0-symbol-versioning.patch new file mode 100644 index 0000000..2ff9570 --- /dev/null +++ b/SOURCES/libpq-12.0-symbol-versioning.patch @@ -0,0 +1,92 @@ +- 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 67e7998f55..86612a42c3 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 --git a/src/interfaces/libpq/exports.txt b/src/interfaces/libpq/exports.txt +index ccec59919b..4c2be8b7d5 100644 +--- a/src/interfaces/libpq/exports.txt ++++ b/src/interfaces/libpq/exports.txt +@@ -171,8 +171,8 @@ PQsslAttributeNames 168 + PQsslAttribute 169 + PQsetErrorContextVisibility 170 + PQresultVerboseErrorMessage 171 +-PQencryptPasswordConn 172 +-PQresultMemorySize 173 ++PQencryptPasswordConn 172 10 ++PQresultMemorySize 173 12 + PQhostaddr 174 + PQgssEncInUse 175 + PQgetgssctx 176 diff --git a/SOURCES/postgresql-10.5.tar.bz2.sha256 b/SOURCES/postgresql-10.5.tar.bz2.sha256 deleted file mode 100644 index 62d14ed..0000000 --- a/SOURCES/postgresql-10.5.tar.bz2.sha256 +++ /dev/null @@ -1 +0,0 @@ -6c8e616c91a45142b85c0aeb1f29ebba4a361309e86469e0fb4617b6a73c4011 postgresql-10.5.tar.bz2 diff --git a/SOURCES/postgresql-12.1.tar.bz2.sha256 b/SOURCES/postgresql-12.1.tar.bz2.sha256 new file mode 100644 index 0000000..27f8f97 --- /dev/null +++ b/SOURCES/postgresql-12.1.tar.bz2.sha256 @@ -0,0 +1 @@ +a09bf3abbaf6763980d0f8acbb943b7629a8b20073de18d867aecdb7988483ed postgresql-12.1.tar.bz2 diff --git a/SPECS/libpq.spec b/SPECS/libpq.spec index 7dabaf4..d878136 100644 --- a/SPECS/libpq.spec +++ b/SPECS/libpq.spec @@ -1,21 +1,22 @@ -%global majorversion 10 +%global majorversion 12 +%global obsoletes_version %( echo $(( %majorversion + 1 )) ) Summary: PostgreSQL client library Name: libpq -Version: %majorversion.5 -Release: 1%{?dist} +Version: %{majorversion}.1 +Release: 3%{?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 +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-10.4-symbol-versioning.patch +Patch3: libpq-12.0-symbol-versioning.patch BuildRequires: gcc BuildRequires: glibc-devel bison flex gawk @@ -26,6 +27,9 @@ BuildRequires: openldap-devel BuildRequires: gettext BuildRequires: multilib-rpm-config +Obsoletes: postgresql-libs < %obsoletes_version +Provides: postgresql-libs = %version-%release + %description The libpq package provides the essential shared library for any PostgreSQL @@ -42,101 +46,83 @@ Requires: %name%{?_isa} = %version-%release # 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 -n libpq-devel +%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 %_sourcedir; sha256sum -c %SOURCE1 -%autosetup -n postgresql-%version -p1 +( 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 -# Fiddling with CFLAGS. -CFLAGS="${CFLAGS:-%optflags}" -CFLAGS=`echo $CFLAGS | xargs -n 1 | sed 's|-O2|-O3|g' | xargs -n 100` -# Strip out -ffast-math from CFLAGS.... -CFLAGS=`echo $CFLAGS|xargs -n 1|grep -v ffast-math|xargs -n 100` -export CFLAGS - -# We don't build server binaries in this package, so we need to disable some -# configure options which are only related to server builds. -configure_no_server=--without-readline - +# 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 \ - $configure_no_server \ - --datadir=%_datadir/pgsql + --disable-rpath \ + --with-ldap \ + --with-openssl \ + --with-gssapi \ + --enable-nls \ + --without-readline \ + --datadir=%_datadir/pgsql %global build_subdirs \\\ - src/interfaces/libpq \\\ - src/bin/pg_config \\\ - src/include - -make -C "src/backend" ../../src/include/utils/fmgroids.h -make -C "src/backend" ../../src/include/utils/fmgrprotos.h + src/include \\\ + src/common \\\ + src/port \\\ + src/interfaces/libpq \\\ + src/bin/pg_config for subdir in %build_subdirs; do - make -C "$subdir" %{?_smp_mflags} + %make_build -C "$subdir" done %install for subdir in %build_subdirs; do - make -C "$subdir" install DESTDIR=$RPM_BUILD_ROOT + %make_install -C "$subdir" done # remove files not to be packaged -rm $RPM_BUILD_ROOT%_libdir/libpq.a +find $RPM_BUILD_ROOT -name '*.a' -delete rm -r $RPM_BUILD_ROOT%_includedir/pgsql/server -for header in \ - %{_includedir}/pg_config.h \ - %{_includedir}/pg_config_ext.h -do - %multilib_fix_c_header --file "$header" -done - -# initialize file lists -cp /dev/null libpq.lst -cp /dev/null libpq-devel.lst +%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 - for binary; do - %find_lang "$binary"-%majorversion - cat "$binary"-%majorversion.lang >>$lstfile - done + lstfile=$1 ; shift + cp /dev/null "$lstfile" + for binary; do + %find_lang "$binary"-%majorversion + cat "$binary"-%majorversion.lang >>"$lstfile" + done } -find_lang_bins libpq.lst libpq5 -find_lang_bins libpq-devel.lst pg_config - +find_lang_bins %name.lst libpq5 +find_lang_bins %name-devel.lst pg_config -%ldconfig_scriptlets - -%files -f libpq.lst +%files -f %name.lst %license COPYRIGHT %_libdir/libpq.so.* %dir %_datadir/pgsql %doc %_datadir/pgsql/pg_service.conf.sample -%files devel -f libpq-devel.lst +%files devel -f %name-devel.lst %_bindir/pg_config %_includedir/* %_libdir/libpq.so @@ -144,6 +130,22 @@ find_lang_bins libpq-devel.lst pg_config %changelog +* Tue Nov 19 2019 Patrik Novotný - 12.1-3 +- Rebuild with rebased symbol versioning patch + +* Fri Nov 15 2019 Patrik Novotný - 12.1-2 +- Rebuild with rebased symbol versioning patch + +* Tue Nov 12 2019 Patrik Novotný - 12.1-1 +- Rebase to upstream release 12.1 + +* Fri Nov 08 2019 Honza Horak - 12.0-2 +- Bump release for a new build with gating.yaml added + Related: #1749461 + +* Thu Oct 03 2019 Patrik Novotný - 12.0-1 +- Initial release for upstream version 12.0 + * Wed Aug 08 2018 Pavel Raiskup - 10.5-1 - update to 10.5 per release notes: https://www.postgresql.org/docs/10/static/release-10-5.html