summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.gitignore1
-rw-r--r--add-loongarch-support.patch50
-rw-r--r--libpq-10.3-rpm-pgsql.patch72
-rw-r--r--libpq-10.3-var-run-socket.patch53
-rw-r--r--libpq-12.1-symbol-versioning.patch99
-rw-r--r--libpq.spec46
-rw-r--r--sources2
7 files changed, 310 insertions, 13 deletions
diff --git a/.gitignore b/.gitignore
index 81a0469..94342fd 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1 +1,2 @@
/postgresql-11.21.tar.bz2
+/postgresql-13.12.tar.bz2
diff --git a/add-loongarch-support.patch b/add-loongarch-support.patch
new file mode 100644
index 0000000..053ba09
--- /dev/null
+++ b/add-loongarch-support.patch
@@ -0,0 +1,50 @@
+diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
+index 6b368a5..86e0e84 100644
+--- a/src/include/storage/s_lock.h
++++ b/src/include/storage/s_lock.h
+@@ -696,6 +696,45 @@ do \
+
+ #endif /* __mips__ && !__sgi */
+
++#if defined(__loongarch__) /* loongarch */
++#define HAS_TEST_AND_SET
++
++typedef unsigned int slock_t;
++
++#define TAS(lock) tas(lock)
++
++static __inline__ int
++tas(volatile slock_t *lock)
++{
++ register volatile slock_t *_l = lock;
++ register int _res;
++ register int _tmp;
++
++ __asm__ __volatile__(
++ " ll.w %0, %2 \n"
++ " ori %1, %0, 1 \n"
++ " sc.w %1, %2 \n"
++ " xori %1, %1, 1 \n"
++ " or %0, %0, %1 \n"
++ " dbar 0 \n"
++: "=&r" (_res), "=&r" (_tmp), "+R" (*_l)
++: /* no inputs */
++: "memory");
++ return _res;
++}
++
++#define S_UNLOCK(lock) \
++do \
++{ \
++ __asm__ __volatile__( \
++ " dbar 0 \n" \
++: /* no outputs */ \
++: /* no inputs */ \
++: "memory"); \
++ *((volatile slock_t *) (lock)) = 0; \
++} while (0)
++#endif /* __loongarch__ */
++
+
+ #if defined(__m32r__) && defined(HAVE_SYS_TAS_H) /* Renesas' M32R */
+ #define HAS_TEST_AND_SET
diff --git a/libpq-10.3-rpm-pgsql.patch b/libpq-10.3-rpm-pgsql.patch
new file mode 100644
index 0000000..93a3532
--- /dev/null
+++ b/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/libpq-10.3-var-run-socket.patch b/libpq-10.3-var-run-socket.patch
new file mode 100644
index 0000000..4b130b0
--- /dev/null
+++ b/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/libpq-12.1-symbol-versioning.patch b/libpq-12.1-symbol-versioning.patch
new file mode 100644
index 0000000..9bbb15b
--- /dev/null
+++ b/libpq-12.1-symbol-versioning.patch
@@ -0,0 +1,99 @@
+commit 75040c3388d9a7dd5ad2bee53cbcc8bf3d35cd17
+Author: Honza Horak <hhorak@redhat.com>
+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 --git a/src/interfaces/libpq/exports.txt b/src/interfaces/libpq/exports.txt
+index bbc1f90..fc3ef8a 100644
+--- a/src/interfaces/libpq/exports.txt
++++ b/src/interfaces/libpq/exports.txt
+@@ -171,11 +171,11 @@ PQsslAttributeNames 168
+ PQsslAttribute 169
+ PQsetErrorContextVisibility 170
+ PQresultVerboseErrorMessage 171
+-PQencryptPasswordConn 172
++PQencryptPasswordConn 172 10
+-PQresultMemorySize 173
++PQresultMemorySize 173 12
+ PQhostaddr 174
+ PQgssEncInUse 175
+ PQgetgssctx 176
+-PQsetSSLKeyPassHook_OpenSSL 177
++PQsetSSLKeyPassHook_OpenSSL 177 13
+ PQgetSSLKeyPassHook_OpenSSL 178
+ PQdefaultSSLKeyPassHook_OpenSSL 179
diff --git a/libpq.spec b/libpq.spec
index 2049475..4ca74d1 100644
--- a/libpq.spec
+++ b/libpq.spec
@@ -1,14 +1,22 @@
Name: libpq
-Version: 11.21
+Version: 13.12
Release: 1
-Summary: A share library of PostgreSQL
+Summary: PostgreSQL client library
License: PostgreSQL
Url: http://www.postgresql.org/
-Source0: https://ftp.postgresql.org/pub/source/v11.21/postgresql-11.21.tar.bz2
+
+Source0: https://ftp.postgresql.org/pub/source/v%{version}/postgresql-%{version}.tar.bz2
+Patch0001: libpq-10.3-rpm-pgsql.patch
+Patch0002: libpq-10.3-var-run-socket.patch
+Patch0003: libpq-12.1-symbol-versioning.patch
+Patch0004: add-loongarch-support.patch
+
BuildRequires: gcc glibc-devel bison flex gawk zlib-devel openssl-devel
BuildRequires: krb5-devel openldap-devel gettext multilib-rpm-config
-Obsoletes: postgresql-libs < 11
+
+Obsoletes: postgresql-libs < 14
Provides: postgresql-libs = %{version}-%{release}
+
%description
PostgreSQL is a powerful, open source object-relational database system
that uses and extends the SQL language combined with many features that
@@ -20,9 +28,11 @@ or interface.
Summary: Development files for building PostgreSQL client tools
Requires: libpq%{?_isa} = %{version}-%{release}
Provides: postgresql-devel = %{version}-%{release}
-Obsoletes: postgresql-devel < 11
+Obsoletes: postgresql-devel < 14
+
%description devel
The development package of libpq
+
%prep
%autosetup -n postgresql-%{version} -p1
@@ -31,6 +41,7 @@ export SYMBOL_VERSION_PREFIX=RHPG_
%configure --disable-rpath --with-ldap --with-openssl --with-gssapi \
--enable-nls --without-readline --datadir=%_datadir/pgsql
%global build_subdirs \\\
+ src/port \\\
src/interfaces/libpq \\\
src/bin/pg_config \\\
src/include
@@ -42,17 +53,19 @@ done
for subdir in %build_subdirs; do
%make_install -C "$subdir"
done
+
find $RPM_BUILD_ROOT -name '*.a' -delete
-# rm -r $RPM_BUILD_ROOT%_includedir/pgsql/server
+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"
cp /dev/null libpq.lst
-%find_lang libpq5-11
-cat libpq5-11.lang >>libpq.lst
+%find_lang libpq5-13
+cat libpq5-13.lang >>libpq.lst
cp /dev/null libpq-devel.lst
-%find_lang pg_config-11
-cat pg_config-11.lang >>libpq-devel.lst
+%find_lang pg_config-13
+cat pg_config-13.lang >>libpq-devel.lst
%files -f libpq.lst
%license COPYRIGHT
@@ -67,8 +80,17 @@ cat pg_config-11.lang >>libpq-devel.lst
%_libdir/pkgconfig/libpq.pc
%changelog
-* Wed Aug 30 2023 ZhenyuZheng <zhengzhenyu@openeuler.sh> - 11.21-1
-- Bump to 11.21 for CVE-2023-39417
+* Thu Aug 31 2023 ZhengZhenyu <zhengzhenyu@openeuler.sh> - 13.12-1
+- aupgrade libpq to 13.12,fix CVE-2023-2455, CVE-2023-2454, CVE-2023-39417, CVE-2023-39418, CVE-2020-21469
+
+* Thu Dec 1 2022 huajingyun <huajingyun@loongson.cn> - 13.7-2
+- add loongarch support
+
+* Mon Jun 13 2022 duyiwei <duyiwei@kylinos.cn> - 13.7-1
+- upgrade libpq to 13.7,fix CVE-2021-32027,CVE-2022-1552
+
+* Thu May 19 2022 yangweidong <yangweidong9@huawei.com> - 11.16-1
+- Upgrade libpq to 11.16, fix CVES: CVE-2021-32028 CVE-2021-3677 CVE-2021-23222
* Wed Sep 2 2020 chengzihan <chengzihan2@huawei.com> - 11.2-5
- Change actually numbers of version and release to macros
diff --git a/sources b/sources
index 6474d02..c4b497b 100644
--- a/sources
+++ b/sources
@@ -1 +1 @@
-8d0c4236a5879bd3a988d024607cb5c7 postgresql-11.21.tar.bz2
+01c68c8f05a7e537977ee00e57110815 postgresql-13.12.tar.bz2