Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package python-psycopg2 for openSUSE:Factory 
checked in at 2023-04-04 21:26:00
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-psycopg2 (Old)
 and      /work/SRC/openSUSE:Factory/.python-psycopg2.new.19717 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "python-psycopg2"

Tue Apr  4 21:26:00 2023 rev:42 rq:1077060 version:2.9.6

Changes:
--------
--- /work/SRC/openSUSE:Factory/python-psycopg2/python-psycopg2.changes  
2022-11-01 13:42:23.991842340 +0100
+++ 
/work/SRC/openSUSE:Factory/.python-psycopg2.new.19717/python-psycopg2.changes   
    2023-04-04 21:26:19.503204175 +0200
@@ -1,0 +2,8 @@
+Mon Apr  3 19:55:26 UTC 2023 - Dirk Müller <[email protected]>
+
+- update to 2.9.6:
+  * Package manylinux 2014 for aarch64 and ppc64le platforms, in
+    order to include libpq 15 in the binary package (:ticket:`#1396`).
+  * Wheel package compiled against OpenSSL 1.1.1t.
+
+-------------------------------------------------------------------

Old:
----
  psycopg2-2.9.5.tar.gz

New:
----
  psycopg2-2.9.6.tar.gz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ python-psycopg2.spec ++++++
--- /var/tmp/diff_new_pack.JT1g28/_old  2023-04-04 21:26:20.151207853 +0200
+++ /var/tmp/diff_new_pack.JT1g28/_new  2023-04-04 21:26:20.163207921 +0200
@@ -1,7 +1,7 @@
 #
 # spec file for package python-psycopg2
 #
-# Copyright (c) 2022 SUSE LLC
+# Copyright (c) 2023 SUSE LLC
 #
 # All modifications and additions to the file contributed by third parties
 # remain the property of their copyright owners, unless otherwise agreed
@@ -19,7 +19,7 @@
 %{?!python_module:%define python_module() python-%{**} python3-%{**}}
 %define skip_python2 1
 Name:           python-psycopg2
-Version:        2.9.5
+Version:        2.9.6
 Release:        0
 Summary:        Python-PostgreSQL Database Adapter
 License:        LGPL-3.0-or-later AND (LGPL-3.0-or-later OR ZPL-2.0) AND 
SUSE-GPL-2.0-with-openssl-exception

++++++ psycopg2-2.9.5.tar.gz -> psycopg2-2.9.6.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/psycopg2-2.9.5/NEWS new/psycopg2-2.9.6/NEWS
--- old/psycopg2-2.9.5/NEWS     2022-10-25 13:05:48.000000000 +0200
+++ new/psycopg2-2.9.6/NEWS     2023-04-02 17:59:20.000000000 +0200
@@ -1,6 +1,14 @@
 Current release
 ---------------
 
+What's new in psycopg 2.9.6
+^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+- Package manylinux 2014 for aarch64 and ppc64le platforms, in order to
+  include libpq 15 in the binary package (:ticket:`#1396`).
+- Wheel package compiled against OpenSSL 1.1.1t.
+
+
 What's new in psycopg 2.9.5
 ^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/psycopg2-2.9.5/PKG-INFO new/psycopg2-2.9.6/PKG-INFO
--- old/psycopg2-2.9.5/PKG-INFO 2022-10-25 13:05:49.455371100 +0200
+++ new/psycopg2-2.9.6/PKG-INFO 2023-04-02 17:59:20.529322100 +0200
@@ -1,6 +1,6 @@
-Metadata-Version: 1.2
+Metadata-Version: 2.1
 Name: psycopg2
-Version: 2.9.5
+Version: 2.9.6
 Summary: psycopg2 - Python-PostgreSQL Database Adapter
 Home-page: https://psycopg.org/
 Author: Federico Di Gregorio
@@ -13,77 +13,6 @@
 Project-URL: Code, https://github.com/psycopg/psycopg2
 Project-URL: Issue Tracker, https://github.com/psycopg/psycopg2/issues
 Project-URL: Download, https://pypi.org/project/psycopg2/
-Description: Psycopg is the most popular PostgreSQL database adapter for the 
Python
-        programming language.  Its main features are the complete 
implementation of
-        the Python DB API 2.0 specification and the thread safety (several 
threads can
-        share the same connection).  It was designed for heavily multi-threaded
-        applications that create and destroy lots of cursors and make a large 
number
-        of concurrent "INSERT"s or "UPDATE"s.
-        
-        Psycopg 2 is mostly implemented in C as a libpq wrapper, resulting in 
being
-        both efficient and secure.  It features client-side and server-side 
cursors,
-        asynchronous communication and notifications, "COPY TO/COPY FROM" 
support.
-        Many Python types are supported out-of-the-box and adapted to matching
-        PostgreSQL data types; adaptation can be extended and customized 
thanks to a
-        flexible objects adaptation system.
-        
-        Psycopg 2 is both Unicode and Python 3 friendly.
-        
-        
-        Documentation
-        -------------
-        
-        Documentation is included in the ``doc`` directory and is `available 
online`__.
-        
-        .. __: https://www.psycopg.org/docs/
-        
-        For any other resource (source code repository, bug tracker, mailing 
list)
-        please check the `project homepage`__.
-        
-        .. __: https://psycopg.org/
-        
-        
-        Installation
-        ------------
-        
-        Building Psycopg requires a few prerequisites (a C compiler, some 
development
-        packages): please check the install_ and the faq_ documents in the 
``doc`` dir
-        or online for the details.
-        
-        If prerequisites are met, you can install psycopg like any other Python
-        package, using ``pip`` to download it from PyPI_::
-        
-            $ pip install psycopg2
-        
-        or using ``setup.py`` if you have downloaded the source package 
locally::
-        
-            $ python setup.py build
-            $ sudo python setup.py install
-        
-        You can also obtain a stand-alone package, not requiring a compiler or
-        external libraries, by installing the `psycopg2-binary`_ package from 
PyPI::
-        
-            $ pip install psycopg2-binary
-        
-        The binary package is a practical choice for development and testing 
but in
-        production it is advised to use the package built from sources.
-        
-        .. _PyPI: https://pypi.org/project/psycopg2/
-        .. _psycopg2-binary: https://pypi.org/project/psycopg2-binary/
-        .. _install: 
https://www.psycopg.org/docs/install.html#install-from-source
-        .. _faq: https://www.psycopg.org/docs/faq.html#faq-compile
-        
-        :Linux/OSX: |gh-actions|
-        :Windows: |appveyor|
-        
-        .. |gh-actions| image:: 
https://github.com/psycopg/psycopg2/actions/workflows/tests.yml/badge.svg
-            :target: 
https://github.com/psycopg/psycopg2/actions/workflows/tests.yml
-            :alt: Linux and OSX build status
-        
-        .. |appveyor| image:: 
https://ci.appveyor.com/api/projects/status/github/psycopg/psycopg2?branch=master&svg=true
-            :target: 
https://ci.appveyor.com/project/psycopg/psycopg2/branch/master
-            :alt: Windows build status
-        
 Platform: any
 Classifier: Development Status :: 5 - Production/Stable
 Classifier: Intended Audience :: Developers
@@ -107,3 +36,77 @@
 Classifier: Operating System :: Microsoft :: Windows
 Classifier: Operating System :: Unix
 Requires-Python: >=3.6
+License-File: LICENSE
+
+Psycopg is the most popular PostgreSQL database adapter for the Python
+programming language.  Its main features are the complete implementation of
+the Python DB API 2.0 specification and the thread safety (several threads can
+share the same connection).  It was designed for heavily multi-threaded
+applications that create and destroy lots of cursors and make a large number
+of concurrent "INSERT"s or "UPDATE"s.
+
+Psycopg 2 is mostly implemented in C as a libpq wrapper, resulting in being
+both efficient and secure.  It features client-side and server-side cursors,
+asynchronous communication and notifications, "COPY TO/COPY FROM" support.
+Many Python types are supported out-of-the-box and adapted to matching
+PostgreSQL data types; adaptation can be extended and customized thanks to a
+flexible objects adaptation system.
+
+Psycopg 2 is both Unicode and Python 3 friendly.
+
+
+Documentation
+-------------
+
+Documentation is included in the ``doc`` directory and is `available online`__.
+
+.. __: https://www.psycopg.org/docs/
+
+For any other resource (source code repository, bug tracker, mailing list)
+please check the `project homepage`__.
+
+.. __: https://psycopg.org/
+
+
+Installation
+------------
+
+Building Psycopg requires a few prerequisites (a C compiler, some development
+packages): please check the install_ and the faq_ documents in the ``doc`` dir
+or online for the details.
+
+If prerequisites are met, you can install psycopg like any other Python
+package, using ``pip`` to download it from PyPI_::
+
+    $ pip install psycopg2
+
+or using ``setup.py`` if you have downloaded the source package locally::
+
+    $ python setup.py build
+    $ sudo python setup.py install
+
+You can also obtain a stand-alone package, not requiring a compiler or
+external libraries, by installing the `psycopg2-binary`_ package from PyPI::
+
+    $ pip install psycopg2-binary
+
+The binary package is a practical choice for development and testing but in
+production it is advised to use the package built from sources.
+
+.. _PyPI: https://pypi.org/project/psycopg2/
+.. _psycopg2-binary: https://pypi.org/project/psycopg2-binary/
+.. _install: https://www.psycopg.org/docs/install.html#install-from-source
+.. _faq: https://www.psycopg.org/docs/faq.html#faq-compile
+
+:Linux/OSX: |gh-actions|
+:Windows: |appveyor|
+
+.. |gh-actions| image:: 
https://github.com/psycopg/psycopg2/actions/workflows/tests.yml/badge.svg
+    :target: https://github.com/psycopg/psycopg2/actions/workflows/tests.yml
+    :alt: Linux and OSX build status
+
+.. |appveyor| image:: 
https://ci.appveyor.com/api/projects/status/github/psycopg/psycopg2?branch=master&svg=true
+    :target: https://ci.appveyor.com/project/psycopg/psycopg2/branch/master
+    :alt: Windows build status
+
+
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/psycopg2-2.9.5/doc/COPYING.LESSER 
new/psycopg2-2.9.6/doc/COPYING.LESSER
--- old/psycopg2-2.9.5/doc/COPYING.LESSER       2022-10-25 13:05:48.000000000 
+0200
+++ new/psycopg2-2.9.6/doc/COPYING.LESSER       2023-04-02 17:59:20.000000000 
+0200
@@ -1,7 +1,7 @@
                   GNU LESSER GENERAL PUBLIC LICENSE
                        Version 3, 29 June 2007
 
- Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
+ Copyright (C) 2007 Free Software Foundation, Inc. <https://fsf.org/>
  Everyone is permitted to copy and distribute verbatim copies
  of this license document, but changing it is not allowed.
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/psycopg2-2.9.5/psycopg2.egg-info/PKG-INFO 
new/psycopg2-2.9.6/psycopg2.egg-info/PKG-INFO
--- old/psycopg2-2.9.5/psycopg2.egg-info/PKG-INFO       2022-10-25 
13:05:49.000000000 +0200
+++ new/psycopg2-2.9.6/psycopg2.egg-info/PKG-INFO       2023-04-02 
17:59:20.000000000 +0200
@@ -1,6 +1,6 @@
-Metadata-Version: 1.2
+Metadata-Version: 2.1
 Name: psycopg2
-Version: 2.9.5
+Version: 2.9.6
 Summary: psycopg2 - Python-PostgreSQL Database Adapter
 Home-page: https://psycopg.org/
 Author: Federico Di Gregorio
@@ -13,77 +13,6 @@
 Project-URL: Code, https://github.com/psycopg/psycopg2
 Project-URL: Issue Tracker, https://github.com/psycopg/psycopg2/issues
 Project-URL: Download, https://pypi.org/project/psycopg2/
-Description: Psycopg is the most popular PostgreSQL database adapter for the 
Python
-        programming language.  Its main features are the complete 
implementation of
-        the Python DB API 2.0 specification and the thread safety (several 
threads can
-        share the same connection).  It was designed for heavily multi-threaded
-        applications that create and destroy lots of cursors and make a large 
number
-        of concurrent "INSERT"s or "UPDATE"s.
-        
-        Psycopg 2 is mostly implemented in C as a libpq wrapper, resulting in 
being
-        both efficient and secure.  It features client-side and server-side 
cursors,
-        asynchronous communication and notifications, "COPY TO/COPY FROM" 
support.
-        Many Python types are supported out-of-the-box and adapted to matching
-        PostgreSQL data types; adaptation can be extended and customized 
thanks to a
-        flexible objects adaptation system.
-        
-        Psycopg 2 is both Unicode and Python 3 friendly.
-        
-        
-        Documentation
-        -------------
-        
-        Documentation is included in the ``doc`` directory and is `available 
online`__.
-        
-        .. __: https://www.psycopg.org/docs/
-        
-        For any other resource (source code repository, bug tracker, mailing 
list)
-        please check the `project homepage`__.
-        
-        .. __: https://psycopg.org/
-        
-        
-        Installation
-        ------------
-        
-        Building Psycopg requires a few prerequisites (a C compiler, some 
development
-        packages): please check the install_ and the faq_ documents in the 
``doc`` dir
-        or online for the details.
-        
-        If prerequisites are met, you can install psycopg like any other Python
-        package, using ``pip`` to download it from PyPI_::
-        
-            $ pip install psycopg2
-        
-        or using ``setup.py`` if you have downloaded the source package 
locally::
-        
-            $ python setup.py build
-            $ sudo python setup.py install
-        
-        You can also obtain a stand-alone package, not requiring a compiler or
-        external libraries, by installing the `psycopg2-binary`_ package from 
PyPI::
-        
-            $ pip install psycopg2-binary
-        
-        The binary package is a practical choice for development and testing 
but in
-        production it is advised to use the package built from sources.
-        
-        .. _PyPI: https://pypi.org/project/psycopg2/
-        .. _psycopg2-binary: https://pypi.org/project/psycopg2-binary/
-        .. _install: 
https://www.psycopg.org/docs/install.html#install-from-source
-        .. _faq: https://www.psycopg.org/docs/faq.html#faq-compile
-        
-        :Linux/OSX: |gh-actions|
-        :Windows: |appveyor|
-        
-        .. |gh-actions| image:: 
https://github.com/psycopg/psycopg2/actions/workflows/tests.yml/badge.svg
-            :target: 
https://github.com/psycopg/psycopg2/actions/workflows/tests.yml
-            :alt: Linux and OSX build status
-        
-        .. |appveyor| image:: 
https://ci.appveyor.com/api/projects/status/github/psycopg/psycopg2?branch=master&svg=true
-            :target: 
https://ci.appveyor.com/project/psycopg/psycopg2/branch/master
-            :alt: Windows build status
-        
 Platform: any
 Classifier: Development Status :: 5 - Production/Stable
 Classifier: Intended Audience :: Developers
@@ -107,3 +36,77 @@
 Classifier: Operating System :: Microsoft :: Windows
 Classifier: Operating System :: Unix
 Requires-Python: >=3.6
+License-File: LICENSE
+
+Psycopg is the most popular PostgreSQL database adapter for the Python
+programming language.  Its main features are the complete implementation of
+the Python DB API 2.0 specification and the thread safety (several threads can
+share the same connection).  It was designed for heavily multi-threaded
+applications that create and destroy lots of cursors and make a large number
+of concurrent "INSERT"s or "UPDATE"s.
+
+Psycopg 2 is mostly implemented in C as a libpq wrapper, resulting in being
+both efficient and secure.  It features client-side and server-side cursors,
+asynchronous communication and notifications, "COPY TO/COPY FROM" support.
+Many Python types are supported out-of-the-box and adapted to matching
+PostgreSQL data types; adaptation can be extended and customized thanks to a
+flexible objects adaptation system.
+
+Psycopg 2 is both Unicode and Python 3 friendly.
+
+
+Documentation
+-------------
+
+Documentation is included in the ``doc`` directory and is `available online`__.
+
+.. __: https://www.psycopg.org/docs/
+
+For any other resource (source code repository, bug tracker, mailing list)
+please check the `project homepage`__.
+
+.. __: https://psycopg.org/
+
+
+Installation
+------------
+
+Building Psycopg requires a few prerequisites (a C compiler, some development
+packages): please check the install_ and the faq_ documents in the ``doc`` dir
+or online for the details.
+
+If prerequisites are met, you can install psycopg like any other Python
+package, using ``pip`` to download it from PyPI_::
+
+    $ pip install psycopg2
+
+or using ``setup.py`` if you have downloaded the source package locally::
+
+    $ python setup.py build
+    $ sudo python setup.py install
+
+You can also obtain a stand-alone package, not requiring a compiler or
+external libraries, by installing the `psycopg2-binary`_ package from PyPI::
+
+    $ pip install psycopg2-binary
+
+The binary package is a practical choice for development and testing but in
+production it is advised to use the package built from sources.
+
+.. _PyPI: https://pypi.org/project/psycopg2/
+.. _psycopg2-binary: https://pypi.org/project/psycopg2-binary/
+.. _install: https://www.psycopg.org/docs/install.html#install-from-source
+.. _faq: https://www.psycopg.org/docs/faq.html#faq-compile
+
+:Linux/OSX: |gh-actions|
+:Windows: |appveyor|
+
+.. |gh-actions| image:: 
https://github.com/psycopg/psycopg2/actions/workflows/tests.yml/badge.svg
+    :target: https://github.com/psycopg/psycopg2/actions/workflows/tests.yml
+    :alt: Linux and OSX build status
+
+.. |appveyor| image:: 
https://ci.appveyor.com/api/projects/status/github/psycopg/psycopg2?branch=master&svg=true
+    :target: https://ci.appveyor.com/project/psycopg/psycopg2/branch/master
+    :alt: Windows build status
+
+
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/psycopg2-2.9.5/psycopg2.egg-info/SOURCES.txt 
new/psycopg2-2.9.6/psycopg2.egg-info/SOURCES.txt
--- old/psycopg2-2.9.5/psycopg2.egg-info/SOURCES.txt    2022-10-25 
13:05:49.000000000 +0200
+++ new/psycopg2-2.9.6/psycopg2.egg-info/SOURCES.txt    2023-04-02 
17:59:20.000000000 +0200
@@ -137,16 +137,15 @@
 scripts/refcounter.py
 scripts/build/appveyor.py
 scripts/build/build_libpq.sh
-scripts/build/build_macos.sh
 scripts/build/build_macos_arm64.sh
-scripts/build/build_manylinux2014.sh
-scripts/build/build_manylinux_2_24.sh
-scripts/build/build_musllinux_1_1.sh
 scripts/build/build_sdist.sh
 scripts/build/download_packages_appveyor.py
 scripts/build/download_packages_github.py
+scripts/build/print_so_versions.sh
 scripts/build/run_build_macos_arm64.sh
 scripts/build/strip_wheel.sh
+scripts/build/wheel_linux_before_all.sh
+scripts/build/wheel_macos_before_all.sh
 tests/__init__.py
 tests/dbapi20.py
 tests/dbapi20_tpc.py
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/psycopg2-2.9.5/scripts/build/appveyor.py 
new/psycopg2-2.9.6/scripts/build/appveyor.py
--- old/psycopg2-2.9.5/scripts/build/appveyor.py        2022-10-25 
13:05:48.000000000 +0200
+++ new/psycopg2-2.9.6/scripts/build/appveyor.py        2023-04-02 
17:59:20.000000000 +0200
@@ -655,9 +655,12 @@
 
     @property
     def py_ver(self):
-        """The Python version to build as 2 digits string."""
+        """The Python version to build as 2 digits string.
+
+        For large values of 2, occasionally.
+        """
         rv = os.environ['PY_VER']
-        assert rv in ('36', '37', '38', '39', '310'), rv
+        assert rv in ('36', '37', '38', '39', '310', '311'), rv
         return rv
 
     @property
@@ -744,6 +747,7 @@
             '38': '14.0',
             '39': '16.0',
             '310': '16.0',
+            '311': '16.0',
         }
         return vsvers[self.py_ver]
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/psycopg2-2.9.5/scripts/build/build_libpq.sh 
new/psycopg2-2.9.6/scripts/build/build_libpq.sh
--- old/psycopg2-2.9.5/scripts/build/build_libpq.sh     2022-10-25 
13:05:48.000000000 +0200
+++ new/psycopg2-2.9.6/scripts/build/build_libpq.sh     2023-04-02 
17:59:20.000000000 +0200
@@ -6,94 +6,134 @@
 set -x
 
 # Last release: https://www.postgresql.org/ftp/source/
-postgres_version="15.0"
+# IMPORTANT! Change the cache key in packages.yml when upgrading libraries
+postgres_version="${LIBPQ_VERSION:-15.0}"
+
 # last release: https://www.openssl.org/source/
-openssl_version="1.1.1r"
+openssl_version="${OPENSSL_VERSION:-1.1.1t}"
+
 # last release: https://openldap.org/software/download/
-ldap_version="2.4.59"
+ldap_version="2.6.3"
+
 # last release: https://github.com/cyrusimap/cyrus-sasl/releases
 sasl_version="2.1.28"
 
-yum install -y zlib-devel krb5-devel pam-devel
+export LIBPQ_BUILD_PREFIX=${LIBPQ_BUILD_PREFIX:-/tmp/libpq.build}
 
+if [[ -f "${LIBPQ_BUILD_PREFIX}/lib/libpq.so" ]]; then
+    echo "libpq already available: build skipped" >&2
+    exit 0
+fi
 
-# Build openssl if needed
-openssl_tag="OpenSSL_${openssl_version//./_}"
-openssl_dir="openssl-${openssl_tag}"
-if [ ! -d "${openssl_dir}" ]; then curl -sL \
-        https://github.com/openssl/openssl/archive/${openssl_tag}.tar.gz \
-        | tar xzf -
+source /etc/os-release
 
-    cd "${openssl_dir}"
+case "$ID" in
+    centos)
+        yum update -y
+        yum install -y zlib-devel krb5-devel pam-devel
+        ;;
+
+    alpine)
+        apk upgrade
+        apk add --no-cache zlib-dev krb5-dev linux-pam-dev openldap-dev
+        ;;
+
+    *)
+        echo "$0: unexpected Linux distribution: '$ID'" >&2
+        exit 1
+        ;;
+esac
+
+if [ "$ID" == "centos" ]; then
+
+    # Build openssl if needed
+    openssl_tag="OpenSSL_${openssl_version//./_}"
+    openssl_dir="openssl-${openssl_tag}"
+    if [ ! -d "${openssl_dir}" ]; then curl -sL \
+            https://github.com/openssl/openssl/archive/${openssl_tag}.tar.gz \
+            | tar xzf -
+
+        cd "${openssl_dir}"
+
+        ./config --prefix=${LIBPQ_BUILD_PREFIX} 
--openssldir=${LIBPQ_BUILD_PREFIX} \
+            zlib -fPIC shared
+        make depend
+        make
+    else
+        cd "${openssl_dir}"
+    fi
+
+    # Install openssl
+    make install_sw
+    cd ..
 
-    ./config --prefix=/usr/local/ --openssldir=/usr/local/ \
-        zlib -fPIC shared
-    make depend
-    make
-else
-    cd "${openssl_dir}"
 fi
 
-# Install openssl
-make install_sw
-cd ..
 
+if [ "$ID" == "centos" ]; then
 
-# Build libsasl2 if needed
-# The system package (cyrus-sasl-devel) causes an amazing error on i686:
-# "unsupported version 0 of Verneed record"
-# https://github.com/pypa/manylinux/issues/376
-sasl_tag="cyrus-sasl-${sasl_version}"
-sasl_dir="cyrus-sasl-${sasl_tag}"
-if [ ! -d "${sasl_dir}" ]; then
-    curl -sL \
-        https://github.com/cyrusimap/cyrus-sasl/archive/${sasl_tag}.tar.gz \
-        | tar xzf -
+    # Build libsasl2 if needed
+    # The system package (cyrus-sasl-devel) causes an amazing error on i686:
+    # "unsupported version 0 of Verneed record"
+    # https://github.com/pypa/manylinux/issues/376
+    sasl_tag="cyrus-sasl-${sasl_version}"
+    sasl_dir="cyrus-sasl-${sasl_tag}"
+    if [ ! -d "${sasl_dir}" ]; then
+        curl -sL \
+            https://github.com/cyrusimap/cyrus-sasl/archive/${sasl_tag}.tar.gz 
\
+            | tar xzf -
+
+        cd "${sasl_dir}"
+
+        autoreconf -i
+        ./configure --prefix=${LIBPQ_BUILD_PREFIX} \
+            CPPFLAGS=-I${LIBPQ_BUILD_PREFIX}/include/ 
LDFLAGS=-L${LIBPQ_BUILD_PREFIX}/lib
+        make
+    else
+        cd "${sasl_dir}"
+    fi
 
-    cd "${sasl_dir}"
+    # Install libsasl2
+    # requires missing nroff to build
+    touch saslauthd/saslauthd.8
+    make install
+    cd ..
 
-    autoreconf -i
-    ./configure
-    make
-else
-    cd "${sasl_dir}"
 fi
 
-# Install libsasl2
-# requires missing nroff to build
-touch saslauthd/saslauthd.8
-make install
-cd ..
 
+if [ "$ID" == "centos" ]; then
 
-# Build openldap if needed
-ldap_tag="${ldap_version}"
-ldap_dir="openldap-${ldap_tag}"
-if [ ! -d "${ldap_dir}" ]; then
-    curl -sL \
-        
https://www.openldap.org/software/download/OpenLDAP/openldap-release/openldap-${ldap_tag}.tgz
 \
-        | tar xzf -
+    # Build openldap if needed
+    ldap_tag="${ldap_version}"
+    ldap_dir="openldap-${ldap_tag}"
+    if [ ! -d "${ldap_dir}" ]; then
+        curl -sL \
+            
https://www.openldap.org/software/download/OpenLDAP/openldap-release/openldap-${ldap_tag}.tgz
 \
+            | tar xzf -
+
+        cd "${ldap_dir}"
+
+        ./configure --prefix=${LIBPQ_BUILD_PREFIX} --enable-backends=no 
--enable-null \
+            CPPFLAGS=-I${LIBPQ_BUILD_PREFIX}/include/ 
LDFLAGS=-L${LIBPQ_BUILD_PREFIX}/lib
+
+        make depend
+        make -C libraries/liblutil/
+        make -C libraries/liblber/
+        make -C libraries/libldap/
+    else
+        cd "${ldap_dir}"
+    fi
 
-    cd "${ldap_dir}"
+    # Install openldap
+    make -C libraries/liblber/ install
+    make -C libraries/libldap/ install
+    make -C include/ install
+    chmod +x ${LIBPQ_BUILD_PREFIX}/lib/{libldap,liblber}*.so*
+    cd ..
 
-    ./configure --enable-backends=no --enable-null
-    make depend
-    make -C libraries/liblutil/
-    make -C libraries/liblber/
-    make -C libraries/libldap/
-    make -C libraries/libldap_r/
-else
-    cd "${ldap_dir}"
 fi
 
-# Install openldap
-make -C libraries/liblber/ install
-make -C libraries/libldap/ install
-make -C libraries/libldap_r/ install
-make -C include/ install
-chmod +x /usr/local/lib/{libldap,liblber}*.so*
-cd ..
-
 
 # Build libpq if needed
 postgres_tag="REL_${postgres_version//./_}"
@@ -111,14 +151,12 @@
 '|#define DEFAULT_PGSOCKET_DIR "/var/run/postgresql"|' \
         src/include/pg_config_manual.h
 
-    # Without this, libpq ./configure fails on i686
-    if [[ "$(uname -m)" == "i686" ]]; then
-        export LD_LIBRARY_PATH=/usr/local/lib
-    fi
+    # Often needed, but currently set by the workflow
+    # export LD_LIBRARY_PATH="${LIBPQ_BUILD_PREFIX}/lib"
 
-    ./configure --prefix=/usr/local --without-readline \
-        --with-gssapi --with-openssl --with-pam --with-ldap \
-        --sysconfdir=/etc/postgresql-common
+    ./configure --prefix=${LIBPQ_BUILD_PREFIX} 
--sysconfdir=/etc/postgresql-common \
+        --without-readline --with-gssapi --with-openssl --with-pam --with-ldap 
\
+        CPPFLAGS=-I${LIBPQ_BUILD_PREFIX}/include/ 
LDFLAGS=-L${LIBPQ_BUILD_PREFIX}/lib
     make -C src/interfaces/libpq
     make -C src/bin/pg_config
     make -C src/include
@@ -132,4 +170,4 @@
 make -C src/include install
 cd ..
 
-find /usr/local/ -name \*.so.\* -type f -exec strip --strip-unneeded {} \;
+find ${LIBPQ_BUILD_PREFIX} -name \*.so.\* -type f -exec strip --strip-unneeded 
{} \;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/psycopg2-2.9.5/scripts/build/build_macos.sh 
new/psycopg2-2.9.6/scripts/build/build_macos.sh
--- old/psycopg2-2.9.5/scripts/build/build_macos.sh     2022-10-25 
13:05:48.000000000 +0200
+++ new/psycopg2-2.9.6/scripts/build/build_macos.sh     1970-01-01 
01:00:00.000000000 +0100
@@ -1,82 +0,0 @@
-#!/bin/bash
-
-# Create macOS wheels for psycopg2
-#
-# Following instructions from 
https://github.com/MacPython/wiki/wiki/Spinning-wheels
-# Cargoculting pieces of implementation from 
https://github.com/matthew-brett/multibuild
-
-set -euo pipefail
-set -x
-
-dir="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
-prjdir="$( cd "${dir}/../.." && pwd )"
-
-brew update
-brew install gnu-sed postgresql@14
-# Fetch 14.1 if 14.0 is still the default  version
-brew reinstall postgresql
-
-# Start the database for testing
-brew services start postgresql
-
-for i in $(seq 10 -1 0); do
-  eval pg_isready && break
-  if [ $i == 0 ]; then
-      echo "PostgreSQL service not ready, giving up"
-      exit 1
-  fi
-  echo "PostgreSQL service not ready, waiting a bit, attempts left: $i"
-  sleep 5
-done
-
-# Find psycopg version
-version=$(grep -e ^PSYCOPG_VERSION "${prjdir}/setup.py" | gsed 
"s/.*'\(.*\)'/\1/")
-# A gratuitous comment to fix broken vim syntax file: '")
-distdir="${prjdir}/dist/psycopg2-$version"
-mkdir -p "$distdir"
-
-# Install required python packages
-pip install -U pip wheel delocate
-
-# Replace the package name
-if [[ "${PACKAGE_NAME:-}" ]]; then
-    gsed -i "s/^setup(name=\"psycopg2\"/setup(name=\"${PACKAGE_NAME}\"/" \
-        "${prjdir}/setup.py"
-fi
-
-# Build the wheels
-wheeldir="${prjdir}/wheels"
-pip wheel -w ${wheeldir} .
-delocate-listdeps ${wheeldir}/*.whl
-
-# Check where is the libpq. I'm gonna kill it for testing
-if [[ -z "${LIBPQ:-}" ]]; then
-    export LIBPQ=$(delocate-listdeps ${wheeldir}/*.whl | grep libpq)
-fi
-
-delocate-wheel ${wheeldir}/*.whl
-# 
https://github.com/MacPython/wiki/wiki/Spinning-wheels#question-will-pip-give-me-a-broken-wheel
-delocate-addplat --rm-orig -x 10_9 -x 10_10 ${wheeldir}/*.whl
-cp ${wheeldir}/*.whl ${distdir}
-
-# kill the libpq to make sure tests don't depend on it
-mv "$LIBPQ" "${LIBPQ}-bye"
-
-# Install and test the built wheel
-pip install ${PACKAGE_NAME:-psycopg2} --no-index -f "$distdir"
-
-# Print psycopg and libpq versions
-python -c "import psycopg2; print(psycopg2.__version__)"
-python -c "import psycopg2; print(psycopg2.__libpq_version__)"
-python -c "import psycopg2; print(psycopg2.extensions.libpq_version())"
-
-# fail if we are not using the expected libpq library
-# Disabled as we just use what's available on the system on macOS
-# if [[ "${WANT_LIBPQ:-}" ]]; then
-#     python -c "import psycopg2, sys; sys.exit(${WANT_LIBPQ} != 
psycopg2.extensions.libpq_version())"
-# fi
-
-python -c "import tests; tests.unittest.main(defaultTest='tests.test_suite')"
-
-# just because I'm a boy scout
-mv "${LIBPQ}-bye" "$LIBPQ"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/psycopg2-2.9.5/scripts/build/build_macos_arm64.sh 
new/psycopg2-2.9.6/scripts/build/build_macos_arm64.sh
--- old/psycopg2-2.9.5/scripts/build/build_macos_arm64.sh       2022-10-25 
13:05:48.000000000 +0200
+++ new/psycopg2-2.9.6/scripts/build/build_macos_arm64.sh       2023-04-02 
17:59:20.000000000 +0200
@@ -10,8 +10,8 @@
 set -euo pipefail
 set -x
 
-python_versions="3.8.10 3.9.13 3.10.5 3.11"
-postgres_version=15
+python_versions="3.8.10 3.9.13 3.10.5 3.11.0"
+pg_version=15
 
 # Move to the root of the project
 dir="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
@@ -35,17 +35,26 @@
     eval "$(/opt/homebrew/bin/brew shellenv)"
 fi
 
+export PGDATA=/opt/homebrew/var/postgresql@${pg_version}
+
 # Install PostgreSQL, if necessary
 command -v pg_config > /dev/null || (
-    brew install postgresql@${postgres_version}
-    # Currently not working
-    # brew services start postgresql@${postgres_version}
-    pg_ctl \
-        -D /opt/homebrew/var/postgresql@${postgres_version} \
-        -l /opt/homebrew/var/log/postgresql@${postgres_version}.log \
-        start
+    brew install postgresql@${pg_version}
 )
 
+# After PostgreSQL 15, the bin path is not in the path.
+export PATH=$(ls -d1 /opt/homebrew/Cellar/postgresql@${pg_version}/*/bin):$PATH
+
+# Make sure the server is running
+
+# Currently not working
+# brew services start postgresql@${pg_version}
+
+if ! pg_ctl status; then
+    pg_ctl -l /opt/homebrew/var/log/postgresql@${pg_version}.log start
+fi
+
+
 # Install the Python versions we want to build
 for ver3 in $python_versions; do
     ver2=$(echo $ver3 | sed 's/\([^\.]*\)\(\.[^\.]*\)\(.*\)/\1\2/')
@@ -68,7 +77,7 @@
 # Build the binary packages
 export CIBW_PLATFORM=macos
 export CIBW_ARCHS=arm64
-export CIBW_BUILD='cp{38,39,310}-*'
+export CIBW_BUILD='cp{38,39,310,311}-*'
 export CIBW_TEST_COMMAND='python -c "import tests; 
tests.unittest.main(defaultTest=\"tests.test_suite\")"'
 
 export PSYCOPG2_TESTDB=postgres
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/psycopg2-2.9.5/scripts/build/build_manylinux2014.sh 
new/psycopg2-2.9.6/scripts/build/build_manylinux2014.sh
--- old/psycopg2-2.9.5/scripts/build/build_manylinux2014.sh     2022-10-25 
13:05:48.000000000 +0200
+++ new/psycopg2-2.9.6/scripts/build/build_manylinux2014.sh     1970-01-01 
01:00:00.000000000 +0100
@@ -1,76 +0,0 @@
-#!/bin/bash
-
-# Create manylinux2014 wheels for psycopg2
-#
-# manylinux2014 is built on CentOS 7, which packages an old version of the
-# libssl, (1.0, which has concurrency problems with the Python libssl). So we
-# need to build these libraries from source.
-#
-# Look at the .github/workflows/packages.yml file for hints about how to use 
it.
-
-set -euo pipefail
-set -x
-
-dir="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
-prjdir="$( cd "${dir}/../.." && pwd )"
-
-# Build all the available versions, or just the ones specified in PYVERS
-if [ ! "${PYVERS:-}" ]; then
-    PYVERS="$(ls /opt/python/)"
-fi
-
-# Find psycopg version
-version=$(grep -e ^PSYCOPG_VERSION "${prjdir}/setup.py" | sed 
"s/.*'\(.*\)'/\1/")
-# A gratuitous comment to fix broken vim syntax file: '")
-distdir="${prjdir}/dist/psycopg2-$version"
-
-# Replace the package name
-if [[ "${PACKAGE_NAME:-}" ]]; then
-    sed -i "s/^setup(name=\"psycopg2\"/setup(name=\"${PACKAGE_NAME}\"/" \
-        "${prjdir}/setup.py"
-fi
-
-# Build depending libraries
-"${dir}/build_libpq.sh" > /dev/null
-
-# Create the wheel packages
-for pyver in $PYVERS; do
-    pybin="/opt/python/${pyver}/bin"
-    "${pybin}/pip" wheel "${prjdir}" -w "${prjdir}/dist/"
-done
-
-# Bundle external shared libraries into the wheels
-for whl in "${prjdir}"/dist/*.whl; do
-    "${dir}/strip_wheel.sh" "$whl"
-    auditwheel repair "$whl" -w "$distdir"
-done
-
-# Make sure the libpq is not in the system
-for f in $(find /usr/local/lib -name libpq\*) ; do
-    mkdir -pv "/libpqbak/$(dirname $f)"
-    mv -v "$f" "/libpqbak/$(dirname $f)"
-done
-
-# Install packages and test
-cd "${prjdir}"
-for pyver in $PYVERS; do
-    pybin="/opt/python/${pyver}/bin"
-    "${pybin}/pip" install ${PACKAGE_NAME:-psycopg2} --no-index -f "$distdir"
-
-    # Print psycopg and libpq versions
-    "${pybin}/python" -c "import psycopg2; print(psycopg2.__version__)"
-    "${pybin}/python" -c "import psycopg2; print(psycopg2.__libpq_version__)"
-    "${pybin}/python" -c "import psycopg2; 
print(psycopg2.extensions.libpq_version())"
-
-    # Fail if we are not using the expected libpq library
-    if [[ "${WANT_LIBPQ:-}" ]]; then
-        "${pybin}/python" -c "import psycopg2, sys; sys.exit(${WANT_LIBPQ} != 
psycopg2.extensions.libpq_version())"
-    fi
-
-    "${pybin}/python" -c "import tests; 
tests.unittest.main(defaultTest='tests.test_suite')"
-done
-
-# Restore the libpq packages
-for f in $(cd /libpqbak/ && find . -not -type d); do
-    mv -v "/libpqbak/$f" "/$f"
-done
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/psycopg2-2.9.5/scripts/build/build_manylinux_2_24.sh 
new/psycopg2-2.9.6/scripts/build/build_manylinux_2_24.sh
--- old/psycopg2-2.9.5/scripts/build/build_manylinux_2_24.sh    2022-10-25 
13:05:48.000000000 +0200
+++ new/psycopg2-2.9.6/scripts/build/build_manylinux_2_24.sh    1970-01-01 
01:00:00.000000000 +0100
@@ -1,76 +0,0 @@
-#!/bin/bash
-
-# Create manylinux_2_24 wheels for psycopg2
-#
-# Look at the .github/workflows/packages.yml file for hints about how to use 
it.
-
-set -euo pipefail
-set -x
-
-dir="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
-prjdir="$( cd "${dir}/../.." && pwd )"
-
-# Build all the available versions, or just the ones specified in PYVERS
-if [ ! "${PYVERS:-}" ]; then
-    PYVERS="$(ls /opt/python/)"
-fi
-
-# Find psycopg version
-version=$(grep -e ^PSYCOPG_VERSION "${prjdir}/setup.py" | sed 
"s/.*'\(.*\)'/\1/")
-# A gratuitous comment to fix broken vim syntax file: '")
-distdir="${prjdir}/dist/psycopg2-$version"
-
-# Replace the package name
-if [[ "${PACKAGE_NAME:-}" ]]; then
-    sed -i "s/^setup(name=\"psycopg2\"/setup(name=\"${PACKAGE_NAME}\"/" \
-        "${prjdir}/setup.py"
-fi
-
-# Install prerequisite libraries
-curl -k -s https://www.postgresql.org/media/keys/ACCC4CF8.asc | apt-key add -
-echo "deb http://apt.postgresql.org/pub/repos/apt stretch-pgdg main" \
-    > /etc/apt/sources.list.d/pgdg.list
-apt-get -y update
-apt-get install -y libpq-dev
-
-# Create the wheel packages
-for pyver in $PYVERS; do
-    pybin="/opt/python/${pyver}/bin"
-    "${pybin}/pip" wheel "${prjdir}" -w "${prjdir}/dist/"
-done
-
-# Bundle external shared libraries into the wheels
-for whl in "${prjdir}"/dist/*.whl; do
-    "${dir}/strip_wheel.sh" "$whl"
-    auditwheel repair "$whl" -w "$distdir"
-done
-
-# Make sure the libpq is not in the system
-for f in $(find /usr/lib /usr/lib64 -name libpq\*) ; do
-    mkdir -pv "/libpqbak/$(dirname $f)"
-    mv -v "$f" "/libpqbak/$(dirname $f)"
-done
-
-# Install packages and test
-cd "${prjdir}"
-for pyver in $PYVERS; do
-    pybin="/opt/python/${pyver}/bin"
-    "${pybin}/pip" install ${PACKAGE_NAME:-psycopg2} --no-index -f "$distdir"
-
-    # Print psycopg and libpq versions
-    "${pybin}/python" -c "import psycopg2; print(psycopg2.__version__)"
-    "${pybin}/python" -c "import psycopg2; print(psycopg2.__libpq_version__)"
-    "${pybin}/python" -c "import psycopg2; 
print(psycopg2.extensions.libpq_version())"
-
-    # Fail if we are not using the expected libpq library
-    if [[ "${WANT_LIBPQ:-}" ]]; then
-        "${pybin}/python" -c "import psycopg2, sys; sys.exit(${WANT_LIBPQ} != 
psycopg2.extensions.libpq_version())"
-    fi
-
-    "${pybin}/python" -c "import tests; 
tests.unittest.main(defaultTest='tests.test_suite')"
-done
-
-# Restore the libpq packages
-for f in $(cd /libpqbak/ && find . -not -type d); do
-    mv -v "/libpqbak/$f" "/$f"
-done
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/psycopg2-2.9.5/scripts/build/build_musllinux_1_1.sh 
new/psycopg2-2.9.6/scripts/build/build_musllinux_1_1.sh
--- old/psycopg2-2.9.5/scripts/build/build_musllinux_1_1.sh     2022-10-25 
13:05:48.000000000 +0200
+++ new/psycopg2-2.9.6/scripts/build/build_musllinux_1_1.sh     1970-01-01 
01:00:00.000000000 +0100
@@ -1,68 +0,0 @@
-#!/bin/bash
-
-# Create musllinux_1_1 wheels for psycopg2
-#
-# Look at the .github/workflows/packages.yml file for hints about how to use 
it.
-
-set -euo pipefail
-set -x
-
-dir="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
-prjdir="$( cd "${dir}/../.." && pwd )"
-
-# Build all the available versions, or just the ones specified in PYVERS
-if [ ! "${PYVERS:-}" ]; then
-    PYVERS="$(ls /opt/python/)"
-fi
-
-# Find psycopg version
-version=$(grep -e ^PSYCOPG_VERSION "${prjdir}/setup.py" | sed 
"s/.*'\(.*\)'/\1/")
-# A gratuitous comment to fix broken vim syntax file: '")
-distdir="${prjdir}/dist/psycopg2-$version"
-
-# Replace the package name
-if [[ "${PACKAGE_NAME:-}" ]]; then
-    sed -i "s/^setup(name=\"psycopg2\"/setup(name=\"${PACKAGE_NAME}\"/" \
-        "${prjdir}/setup.py"
-fi
-
-# Install prerequisite libraries
-apk update
-apk add postgresql-dev
-# Add findutils because the Busybox version lacks the `-ls` flag, used by the
-# `strip_wheel.sh` script.
-apk add findutils
-
-# Create the wheel packages
-for pyver in $PYVERS; do
-    pybin="/opt/python/${pyver}/bin"
-    "${pybin}/python" -m build -w -o "${prjdir}/dist/" "${prjdir}"
-done
-
-# Bundle external shared libraries into the wheels
-for whl in "${prjdir}"/dist/*.whl; do
-    "${dir}/strip_wheel.sh" "$whl"
-    auditwheel repair "$whl" -w "$distdir"
-done
-
-# Make sure the postgresql-dev is not in the system
-apk del postgresql-dev
-
-# Install packages and test
-cd "${prjdir}"
-for pyver in $PYVERS; do
-    pybin="/opt/python/${pyver}/bin"
-    "${pybin}/pip" install ${PACKAGE_NAME:-psycopg2} --no-index -f "$distdir"
-
-    # Print psycopg and libpq versions
-    "${pybin}/python" -c "import psycopg2; print(psycopg2.__version__)"
-    "${pybin}/python" -c "import psycopg2; print(psycopg2.__libpq_version__)"
-    "${pybin}/python" -c "import psycopg2; 
print(psycopg2.extensions.libpq_version())"
-
-    # Fail if we are not using the expected libpq library
-    if [[ "${WANT_LIBPQ:-}" ]]; then
-        "${pybin}/python" -c "import psycopg2, sys; sys.exit(${WANT_LIBPQ} != 
psycopg2.extensions.libpq_version())"
-    fi
-
-    "${pybin}/python" -c "import tests; 
tests.unittest.main(defaultTest='tests.test_suite')"
-done
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/psycopg2-2.9.5/scripts/build/build_sdist.sh 
new/psycopg2-2.9.6/scripts/build/build_sdist.sh
--- old/psycopg2-2.9.5/scripts/build/build_sdist.sh     2022-10-25 
13:05:48.000000000 +0200
+++ new/psycopg2-2.9.6/scripts/build/build_sdist.sh     2023-04-02 
17:59:20.000000000 +0200
@@ -9,7 +9,7 @@
 # Find psycopg version
 version=$(grep -e ^PSYCOPG_VERSION setup.py | sed "s/.*'\(.*\)'/\1/")
 # A gratuitous comment to fix broken vim syntax file: '")
-distdir="${prjdir}/dist/psycopg2-$version"
+distdir="${prjdir}/dist"
 
 # Replace the package name
 if [[ "${PACKAGE_NAME:-}" ]]; then
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/psycopg2-2.9.5/scripts/build/print_so_versions.sh 
new/psycopg2-2.9.6/scripts/build/print_so_versions.sh
--- old/psycopg2-2.9.5/scripts/build/print_so_versions.sh       1970-01-01 
01:00:00.000000000 +0100
+++ new/psycopg2-2.9.6/scripts/build/print_so_versions.sh       2023-04-02 
17:59:20.000000000 +0200
@@ -0,0 +1,37 @@
+#!/bin/bash
+
+# Take a .so file as input and print the Debian packages and versions of the
+# libraries it links.
+
+set -euo pipefail
+# set -x
+
+source /etc/os-release
+
+sofile="$1"
+
+case "$ID" in
+    alpine)
+        depfiles=$( (ldd "$sofile" 2>/dev/null || true) | grep '=>' | sed 
's/.*=> \(.*\) (.*)/\1/')
+        (for depfile in $depfiles; do
+             echo "$(basename "$depfile") => $(apk info --who-owns 
"${depfile}" | awk '{print $(NF)}')"
+        done) | sort | uniq
+        ;;
+
+    debian)
+        depfiles=$(ldd "$sofile" | grep '=>' | sed 's/.*=> \(.*\) (.*)/\1/')
+        (for depfile in $depfiles; do
+            pkgname=$(dpkg -S "${depfile}" | sed 's/\(\): .*/\1/')
+            dpkg -l "${pkgname}" | grep '^ii' | awk '{print $2 " => " $3}'
+        done) | sort | uniq
+        ;;
+
+    centos)
+        echo "TODO!"
+        ;;
+
+    *)
+        echo "$0: unexpected Linux distribution: '$ID'" >&2
+        exit 1
+        ;;
+esac
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/psycopg2-2.9.5/scripts/build/strip_wheel.sh 
new/psycopg2-2.9.6/scripts/build/strip_wheel.sh
--- old/psycopg2-2.9.5/scripts/build/strip_wheel.sh     2022-10-25 
13:05:48.000000000 +0200
+++ new/psycopg2-2.9.6/scripts/build/strip_wheel.sh     2023-04-02 
17:59:20.000000000 +0200
@@ -14,28 +14,36 @@
 # This script is designed to run on a wheel archive before auditwheel.
 
 set -euo pipefail
-set -x
+# set -x
+
+source /etc/os-release
+dir="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
 
 wheel=$(realpath "$1")
 shift
 
-# python or python3?
-if which python > /dev/null; then
-    py=python
-else
-    py=python3
-fi
-
 tmpdir=$(mktemp -d)
 trap "rm -r ${tmpdir}" EXIT
 
 cd "${tmpdir}"
-$py -m zipfile -e "${wheel}" .
+python -m zipfile -e "${wheel}" .
+
+echo "
+Libs before:"
+# Busybox doesn't have "find -ls"
+find . -name \*.so | xargs ls -l
+
+# On Debian, print the package versions libraries come from
+echo "
+Dependencies versions of '_psycopg.so' library:"
+"${dir}/print_so_versions.sh" "$(find . -name \*_psycopg\*.so)"
+
+find . -name \*.so -exec strip "$@" {} \;
 
-find . -name *.so -ls -exec strip "$@" {} \;
-# Display the size after strip
-find . -name *.so -ls
+echo "
+Libs after:"
+find . -name \*.so | xargs ls -l
 
-$py -m zipfile -c "${wheel}" *
+python -m zipfile -c ${wheel} *
 
 cd -
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/psycopg2-2.9.5/scripts/build/wheel_linux_before_all.sh 
new/psycopg2-2.9.6/scripts/build/wheel_linux_before_all.sh
--- old/psycopg2-2.9.5/scripts/build/wheel_linux_before_all.sh  1970-01-01 
01:00:00.000000000 +0100
+++ new/psycopg2-2.9.6/scripts/build/wheel_linux_before_all.sh  2023-04-02 
17:59:20.000000000 +0200
@@ -0,0 +1,53 @@
+#!/bin/bash
+
+# Configure the libraries needed to build wheel packages on linux.
+# This script is designed to be used by cibuildwheel as CIBW_BEFORE_ALL_LINUX
+
+set -euo pipefail
+set -x
+
+dir="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
+prjdir="$( cd "${dir}/../.." && pwd )"
+
+source /etc/os-release
+
+# Install PostgreSQL development files.
+case "$ID" in
+    alpine)
+        "${dir}/build_libpq.sh" > /dev/null
+        ;;
+
+    debian)
+        # Note that the pgdg doesn't have an aarch64 repository so wheels are
+        # build with the libpq packaged with Debian 9, which is 9.6.
+        if [ "$AUDITWHEEL_ARCH" != 'aarch64' ]; then
+            echo "deb http://apt.postgresql.org/pub/repos/apt 
$VERSION_CODENAME-pgdg main" \
+                > /etc/apt/sources.list.d/pgdg.list
+            # TODO: On 2021-11-09 curl fails on 'ppc64le' with:
+            #   curl: (60) SSL certificate problem: certificate has expired
+            # Test again later if -k can be removed.
+            curl -skf https://www.postgresql.org/media/keys/ACCC4CF8.asc \
+                > /etc/apt/trusted.gpg.d/postgresql.asc
+        fi
+
+        apt-get update
+        apt-get -y upgrade
+        apt-get -y install libpq-dev
+        ;;
+
+    centos)
+        "${dir}/build_libpq.sh" > /dev/null
+        ;;
+
+    *)
+        echo "$0: unexpected Linux distribution: '$ID'" >&2
+        exit 1
+        ;;
+esac
+
+# Replace the package name
+if [[ "${PACKAGE_NAME:-}" ]]; then
+    sed -i "s/^setup(name=\"psycopg2\"/setup(name=\"${PACKAGE_NAME}\"/" \
+        "${prjdir}/setup.py"
+fi
+
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/psycopg2-2.9.5/scripts/build/wheel_macos_before_all.sh 
new/psycopg2-2.9.6/scripts/build/wheel_macos_before_all.sh
--- old/psycopg2-2.9.5/scripts/build/wheel_macos_before_all.sh  1970-01-01 
01:00:00.000000000 +0100
+++ new/psycopg2-2.9.6/scripts/build/wheel_macos_before_all.sh  2023-04-02 
17:59:20.000000000 +0200
@@ -0,0 +1,32 @@
+#!/bin/bash
+
+# Configure the environment needed to build wheel packages on Mac OS.
+# This script is designed to be used by cibuildwheel as CIBW_BEFORE_ALL_MACOS
+
+set -euo pipefail
+set -x
+
+dir="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
+prjdir="$( cd "${dir}/../.." && pwd )"
+
+brew install gnu-sed postgresql@15
+
+# Start the database for testing
+brew services start postgresql
+
+# Wait for postgres to come up
+for i in $(seq 10 -1 0); do
+  eval pg_isready && break
+  if [ $i == 0 ]; then
+      echo "PostgreSQL service not ready, giving up"
+      exit 1
+  fi
+  echo "PostgreSQL service not ready, waiting a bit, attempts left: $i"
+  sleep 5
+done
+
+# Replace the package name
+if [[ "${PACKAGE_NAME:-}" ]]; then
+    gsed -i "s/^setup(name=\"psycopg2\"/setup(name=\"${PACKAGE_NAME}\"/" \
+        "${prjdir}/setup.py"
+fi
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/psycopg2-2.9.5/setup.py new/psycopg2-2.9.6/setup.py
--- old/psycopg2-2.9.5/setup.py 2022-10-25 13:05:48.000000000 +0200
+++ new/psycopg2-2.9.6/setup.py 2023-04-02 17:59:20.000000000 +0200
@@ -44,7 +44,7 @@
 # Take a look at https://www.python.org/dev/peps/pep-0440/
 # for a consistent versioning pattern.
 
-PSYCOPG_VERSION = '2.9.5'
+PSYCOPG_VERSION = '2.9.6'
 
 
 # note: if you are changing the list of supported Python version please fix

Reply via email to