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-11-30 22:00:04
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-psycopg2 (Old)
and /work/SRC/openSUSE:Factory/.python-psycopg2.new.25432 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-psycopg2"
Thu Nov 30 22:00:04 2023 rev:45 rq:1129668 version:2.9.9
Changes:
--------
--- /work/SRC/openSUSE:Factory/python-psycopg2/python-psycopg2.changes 2023-09-07 21:15:30.387236805 +0200
+++ /work/SRC/openSUSE:Factory/.python-psycopg2.new.25432/python-psycopg2.changes 2023-11-30 22:00:58.536295800 +0100
@@ -1,0 +2,9 @@
+Tue Nov 28 21:39:17 UTC 2023 - Dirk Müller
+
+- update to 2.9.9:
+ * Add support for Python 3.12.
+ * Drop support for Python 3.6.
+ * Wheel package bundled with PostgreSQL 16 libpq in order to
+ add support for recent features, such as ``sslcertmode``.
+
+-------------------------------------------------------------------
Old:
----
psycopg2-2.9.7.tar.gz
New:
----
psycopg2-2.9.9.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-psycopg2.spec ++++++
--- /var/tmp/diff_new_pack.DozLl1/_old 2023-11-30 22:00:59.048314662 +0100
+++ /var/tmp/diff_new_pack.DozLl1/_new 2023-11-30 22:00:59.048314662 +0100
@@ -18,22 +18,22 @@
%{?sle15_python_module_pythons}
Name: python-psycopg2
-Version: 2.9.7
+Version: 2.9.9
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
URL: https://www.psycopg.org/
Source: https://files.pythonhosted.org/packages/source/p/psycopg2/psycopg2-%{version}.tar.gz
-BuildRequires: %{python_module devel >= 3.6}
+BuildRequires: %{python_module devel >= 3.7}
BuildRequires: %{python_module pip}
BuildRequires: %{python_module wheel}
BuildRequires: fdupes
BuildRequires: python-rpm-macros
# newer postgresql packages pg_config in -server-devel
%if 0%{?sle_version} > 150100 || 0%{?suse_version} > 1500
-BuildRequires: postgresql-server-devel >= 9.1
+BuildRequires: postgresql-server-devel >= 15
%else
-BuildRequires: postgresql-devel >= 9.1
+BuildRequires: postgresql-devel >= 15
%endif
%if 0%{?suse_version} || 0%{?fedora_version} >= 24
Suggests: postgresql-server
++++++ psycopg2-2.9.7.tar.gz -> psycopg2-2.9.9.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/psycopg2-2.9.7/NEWS new/psycopg2-2.9.9/NEWS
--- old/psycopg2-2.9.7/NEWS 2023-08-04 18:33:04.000000000 +0200
+++ new/psycopg2-2.9.9/NEWS 2023-10-03 11:41:53.000000000 +0200
@@ -1,13 +1,27 @@
Current release
---------------
+What's new in psycopg 2.9.9
+^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+- Add support for Python 3.12.
+- Drop support for Python 3.6.
+
+
+What's new in psycopg 2.9.8
+^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+- Wheel package bundled with PostgreSQL 16 libpq in order to add support for
+ recent features, such as ``sslcertmode``.
+
+
What's new in psycopg 2.9.7
^^^^^^^^^^^^^^^^^^^^^^^^^^^
- Fix propagation of exceptions raised during module initialization
(:ticket:`#1598`).
- Fix building when pg_config returns an empty string (:ticket:`#1599`).
-- Wheel package compiled against OpenSSL 1.1.1v.
+- Wheel package bundled with OpenSSL 1.1.1v.
What's new in psycopg 2.9.6
@@ -15,7 +29,7 @@
- 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.
+- Wheel package bundled with OpenSSL 1.1.1t.
What's new in psycopg 2.9.5
@@ -24,7 +38,7 @@
- Add support for Python 3.11.
- Add support for rowcount in MERGE statements in binary packages
(:ticket:`#1497`).
-- Wheel package compiled against OpenSSL 1.1.1r and PostgreSQL 15 libpq.
+- Wheel package bundled with OpenSSL 1.1.1r and PostgreSQL 15 libpq.
What's new in psycopg 2.9.4
@@ -38,7 +52,7 @@
binary packages (:ticket:`#1365`).
- `~psycopg2.errorcodes` map and `~psycopg2.errors` classes updated to
PostgreSQL 15.
-- Wheel package compiled against OpenSSL 1.1.1q and PostgreSQL 14.4 libpq.
+- Wheel package bundled with OpenSSL 1.1.1q and PostgreSQL 14.4 libpq.
What's new in psycopg 2.9.3
@@ -55,7 +69,7 @@
- `~psycopg2.errorcodes` map and `~psycopg2.errors` classes updated to
PostgreSQL 14.
- Add preliminary support for Python 3.11 (:tickets:`#1376, #1386`).
-- Wheel package compiled against OpenSSL 1.1.1l and PostgreSQL 14.1 libpq
+- Wheel package bundled with OpenSSL 1.1.1l and PostgreSQL 14.1 libpq
(:ticket:`#1388`).
@@ -92,7 +106,7 @@
platforms.
- Provide :pep:`600` wheels packages (manylinux_2_24 tag) for aarch64 and
ppc64le platforms.
-- Wheel package compiled against OpenSSL 1.1.1k and PostgreSQL 13.3 libpq.
+- Wheel package bundled with OpenSSL 1.1.1k and PostgreSQL 13.3 libpq.
- Build system for Linux/MacOS binary packages moved to GitHub Actions.
@@ -116,7 +130,7 @@
- `~psycopg2.errorcodes` map and `~psycopg2.errors` classes updated to
PostgreSQL 13.
- Added wheel packages for ARM architecture (:ticket:`#1125`).
-- Wheel package compiled against OpenSSL 1.1.1g.
+- Wheel package bundled with OpenSSL 1.1.1g.
What's new in psycopg 2.8.5
@@ -145,7 +159,7 @@
and `~psycopg2.extensions.Column.type_code` (:ticket:`#961`).
- `~psycopg2.errorcodes` map and `~psycopg2.errors` classes updated to
PostgreSQL 12.
-- Wheel package compiled against OpenSSL 1.1.1d and PostgreSQL at least 11.4.
+- Wheel package bundled with OpenSSL 1.1.1d and PostgreSQL at least 11.4.
What's new in psycopg 2.8.3
@@ -234,7 +248,7 @@
source files are now compatible with Python 2 & 3 as is.
- The `!psycopg2.test` package is no longer installed by ``python setup.py
install``.
-- Wheel package compiled against OpenSSL 1.0.2r and PostgreSQL 11.2 libpq.
+- Wheel package bundled with OpenSSL 1.0.2r and PostgreSQL 11.2 libpq.
What's new in psycopg 2.7.7
@@ -242,14 +256,14 @@
- Cleanup of the cursor results assignment code, which might have solved
double free and inconsistencies in concurrent usage (:tickets:`#346, #384`).
-- Wheel package compiled against OpenSSL 1.0.2q.
+- Wheel package bundled with OpenSSL 1.0.2q.
What's new in psycopg 2.7.6.1
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
- Fixed binary package broken on OS X 10.12 (:ticket:`#807`).
-- Wheel package compiled against PostgreSQL 11.1 libpq.
+- Wheel package bundled with PostgreSQL 11.1 libpq.
What's new in psycopg 2.7.6
@@ -266,7 +280,7 @@
- `~psycopg2.extras.execute_values()` accepts `~psycopg2.sql.Composable`
objects (:ticket:`#794`).
- `~psycopg2.errorcodes` map updated to PostgreSQL 11.
-- Wheel package compiled against PostgreSQL 10.5 libpq and OpenSSL 1.0.2p.
+- Wheel package bundled with PostgreSQL 10.5 libpq and OpenSSL 1.0.2p.
What's new in psycopg 2.7.5
@@ -280,7 +294,7 @@
- Maybe fixed building on MSYS2 (as reported in :ticket:`#658`).
- Allow string subclasses in connection and other places (:ticket:`#679`).
- Don't raise an exception closing an unused named cursor (:ticket:`#716`).
-- Wheel package compiled against PostgreSQL 10.4 libpq and OpenSSL 1.0.2o.
+- Wheel package bundled with PostgreSQL 10.4 libpq and OpenSSL 1.0.2o.
What's new in psycopg 2.7.4
@@ -302,7 +316,7 @@
- Fixed `~cursor.rowcount` after `~cursor.executemany()` with :sql:`RETURNING`
statements (:ticket:`#633`).
- Fixed compatibility problem with pypy3 (:ticket:`#649`).
-- Wheel packages compiled against PostgreSQL 10.1 libpq and OpenSSL 1.0.2n.
+- Wheel packages bundled with PostgreSQL 10.1 libpq and OpenSSL 1.0.2n.
- Wheel packages for Python 2.6 no more available (support dropped from
wheel building infrastructure).
@@ -310,7 +324,7 @@
What's new in psycopg 2.7.3.2
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-- Wheel package compiled against PostgreSQL 10.0 libpq and OpenSSL 1.0.2l
+- Wheel package bundled with PostgreSQL 10.0 libpq and OpenSSL 1.0.2l
(:tickets:`#601, #602`).
@@ -383,7 +397,7 @@
them together.
- Added `~psycopg2.__libpq_version__` and
`~psycopg2.extensions.libpq_version()` to inspect the version of the
- ``libpq`` library the module was compiled/loaded with
+ ``libpq`` library the module was bundled with
(:tickets:`#35, #323`).
- The attributes `~connection.notices` and `~connection.notifies` can be
customized replacing them with any object exposing an `!append()` method
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/psycopg2-2.9.7/PKG-INFO new/psycopg2-2.9.9/PKG-INFO
--- old/psycopg2-2.9.7/PKG-INFO 2023-08-04 18:33:04.492184200 +0200
+++ new/psycopg2-2.9.9/PKG-INFO 2023-10-03 11:41:54.191774800 +0200
@@ -1,6 +1,6 @@
Metadata-Version: 2.1
Name: psycopg2
-Version: 2.9.7
+Version: 2.9.9
Summary: psycopg2 - Python-PostgreSQL Database Adapter
Home-page: https://psycopg.org/
Author: Federico Di Gregorio
@@ -19,12 +19,12 @@
Classifier: License :: OSI Approved :: GNU Library or Lesser General Public License (LGPL)
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 3
-Classifier: Programming Language :: Python :: 3.6
Classifier: Programming Language :: Python :: 3.7
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
+Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3 :: Only
Classifier: Programming Language :: Python :: Implementation :: CPython
Classifier: Programming Language :: C
@@ -35,7 +35,7 @@
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Classifier: Operating System :: Microsoft :: Windows
Classifier: Operating System :: Unix
-Requires-Python: >=3.6
+Requires-Python: >=3.7
License-File: LICENSE
Psycopg is the most popular PostgreSQL database adapter for the Python
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/psycopg2-2.9.7/doc/requirements.txt new/psycopg2-2.9.9/doc/requirements.txt
--- old/psycopg2-2.9.7/doc/requirements.txt 2023-08-04 18:33:04.000000000 +0200
+++ new/psycopg2-2.9.9/doc/requirements.txt 2023-10-03 11:41:53.000000000 +0200
@@ -8,7 +8,7 @@
# via sphinx
babel==2.12.1
# via sphinx
-certifi==2022.12.7
+certifi>=2023.7.22
# via requests
charset-normalizer==3.1.0
# via requests
@@ -26,7 +26,7 @@
# via sphinx
pygments==2.15.0
# via sphinx
-requests==2.28.2
+requests==2.31.0
# via sphinx
snowballstemmer==2.2.0
# via sphinx
@@ -46,5 +46,5 @@
# via sphinx
sphinxcontrib-serializinghtml==1.1.5
# via sphinx
-urllib3==1.26.15
+urllib3==1.26.17
# via requests
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/psycopg2-2.9.7/doc/src/install.rst new/psycopg2-2.9.9/doc/src/install.rst
--- old/psycopg2-2.9.7/doc/src/install.rst 2023-08-04 18:33:04.000000000 +0200
+++ new/psycopg2-2.9.9/doc/src/install.rst 2023-10-03 11:41:53.000000000 +0200
@@ -131,8 +131,8 @@
..
NOTE: keep consistent with setup.py and the /features/ page.
-- Python versions from 3.6 to 3.11
-- PostgreSQL server versions from 7.4 to 15
+- Python versions from 3.7 to 3.12
+- PostgreSQL server versions from 7.4 to 16
- PostgreSQL client library version from 9.1
.. note::
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/psycopg2-2.9.7/psycopg/python.h new/psycopg2-2.9.9/psycopg/python.h
--- old/psycopg2-2.9.7/psycopg/python.h 2023-08-04 18:33:04.000000000 +0200
+++ new/psycopg2-2.9.9/psycopg/python.h 2023-10-03 11:41:53.000000000 +0200
@@ -27,8 +27,8 @@
#ifndef PSYCOPG_PYTHON_H
#define PSYCOPG_PYTHON_H 1
-#if PY_VERSION_HEX < 0x03060000
-#error "psycopg requires Python 3.6"
+#if PY_VERSION_HEX < 0x03070000
+#error "psycopg requires Python 3.7"
#endif
#include
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/psycopg2-2.9.7/psycopg/typecast_datetime.c new/psycopg2-2.9.9/psycopg/typecast_datetime.c
--- old/psycopg2-2.9.7/psycopg/typecast_datetime.c 2023-08-04 18:33:04.000000000 +0200
+++ new/psycopg2-2.9.9/psycopg/typecast_datetime.c 2023-10-03 11:41:53.000000000 +0200
@@ -103,18 +103,8 @@
goto exit;
}
-#if defined(PYPY_VERSION) || PY_VERSION_HEX < 0x03070000
- {
- PyObject *tzoff;
- if (!(tzoff = PyDelta_FromDSU(0, 0, 0))) { goto exit; }
- tzinfo = PyObject_CallFunctionObjArgs(tzinfo_factory, tzoff, NULL);
- Py_DECREF(tzoff);
- if (!tzinfo) { goto exit; }
- }
-#else
tzinfo = PyDateTime_TimeZone_UTC;
Py_INCREF(tzinfo);
-#endif
/* m.replace(tzinfo=tzinfo) */
if (!(args = PyTuple_New(0))) { goto exit; }
@@ -178,11 +168,6 @@
appropriate tzinfo object calling the factory */
Dprintf("typecast_PYDATETIMETZ_cast: UTC offset = %ds", tzsec);
-#if PY_VERSION_HEX < 0x03070000
- /* Before Python 3.7 the timezone offset had to be a whole number
- * of minutes, so round the seconds to the closest minute */
- tzsec = 60 * (int)round(tzsec / 60.0);
-#endif
if (!(tzoff = PyDelta_FromDSU(0, tzsec, 0))) { goto exit; }
if (!(tzinfo = PyObject_CallFunctionObjArgs(
tzinfo_factory, tzoff, NULL))) {
@@ -270,11 +255,6 @@
appropriate tzinfo object calling the factory */
Dprintf("typecast_PYTIME_cast: UTC offset = %ds", tzsec);
-#if PY_VERSION_HEX < 0x03070000
- /* Before Python 3.7 the timezone offset had to be a whole number
- * of minutes, so round the seconds to the closest minute */
- tzsec = 60 * (int)round(tzsec / 60.0);
-#endif
if (!(tzoff = PyDelta_FromDSU(0, tzsec, 0))) { goto exit; }
if (!(tzinfo = PyObject_CallFunctionObjArgs(tzinfo_factory, tzoff, NULL))) {
goto exit;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/psycopg2-2.9.7/psycopg2.egg-info/PKG-INFO new/psycopg2-2.9.9/psycopg2.egg-info/PKG-INFO
--- old/psycopg2-2.9.7/psycopg2.egg-info/PKG-INFO 2023-08-04 18:33:04.000000000 +0200
+++ new/psycopg2-2.9.9/psycopg2.egg-info/PKG-INFO 2023-10-03 11:41:54.000000000 +0200
@@ -1,6 +1,6 @@
Metadata-Version: 2.1
Name: psycopg2
-Version: 2.9.7
+Version: 2.9.9
Summary: psycopg2 - Python-PostgreSQL Database Adapter
Home-page: https://psycopg.org/
Author: Federico Di Gregorio
@@ -19,12 +19,12 @@
Classifier: License :: OSI Approved :: GNU Library or Lesser General Public License (LGPL)
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 3
-Classifier: Programming Language :: Python :: 3.6
Classifier: Programming Language :: Python :: 3.7
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
+Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3 :: Only
Classifier: Programming Language :: Python :: Implementation :: CPython
Classifier: Programming Language :: C
@@ -35,7 +35,7 @@
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Classifier: Operating System :: Microsoft :: Windows
Classifier: Operating System :: Unix
-Requires-Python: >=3.6
+Requires-Python: >=3.7
License-File: LICENSE
Psycopg is the most popular PostgreSQL database adapter for the Python
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/psycopg2-2.9.7/psycopg2.egg-info/SOURCES.txt new/psycopg2-2.9.9/psycopg2.egg-info/SOURCES.txt
--- old/psycopg2-2.9.7/psycopg2.egg-info/SOURCES.txt 2023-08-04 18:33:04.000000000 +0200
+++ new/psycopg2-2.9.9/psycopg2.egg-info/SOURCES.txt 2023-10-03 11:41:54.000000000 +0200
@@ -142,6 +142,7 @@
scripts/build/download_packages_appveyor.py
scripts/build/print_so_versions.sh
scripts/build/run_build_macos_arm64.sh
+scripts/build/scaleway_m1.sh
scripts/build/strip_wheel.sh
scripts/build/wheel_linux_before_all.sh
scripts/build/wheel_macos_before_all.sh
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/psycopg2-2.9.7/scripts/build/appveyor.py new/psycopg2-2.9.9/scripts/build/appveyor.py
--- old/psycopg2-2.9.7/scripts/build/appveyor.py 2023-08-04 18:33:04.000000000 +0200
+++ new/psycopg2-2.9.9/scripts/build/appveyor.py 2023-10-03 11:41:53.000000000 +0200
@@ -660,7 +660,7 @@
For large values of 2, occasionally.
"""
rv = os.environ['PY_VER']
- assert rv in ('36', '37', '38', '39', '310', '311'), rv
+ assert rv in ('37', '38', '39', '310', '311', "312"), rv
return rv
@property
@@ -742,12 +742,12 @@
# Py 3.6--3.8 = VS Ver. 14.0 (VS 2015)
# Py 3.9 = VS Ver. 16.0 (VS 2019)
vsvers = {
- '36': '14.0',
'37': '14.0',
'38': '14.0',
'39': '16.0',
'310': '16.0',
'311': '16.0',
+ '312': '16.0',
}
return vsvers[self.py_ver]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/psycopg2-2.9.7/scripts/build/build_libpq.sh new/psycopg2-2.9.9/scripts/build/build_libpq.sh
--- old/psycopg2-2.9.7/scripts/build/build_libpq.sh 2023-08-04 18:33:04.000000000 +0200
+++ new/psycopg2-2.9.9/scripts/build/build_libpq.sh 2023-10-03 11:41:53.000000000 +0200
@@ -155,7 +155,8 @@
# export LD_LIBRARY_PATH="${LIBPQ_BUILD_PREFIX}/lib"
./configure --prefix=${LIBPQ_BUILD_PREFIX} --sysconfdir=/etc/postgresql-common \
- --without-readline --with-gssapi --with-openssl --with-pam --with-ldap \
+ --with-gssapi --with-openssl --with-pam --with-ldap \
+ --without-readline --without-icu \
CPPFLAGS=-I${LIBPQ_BUILD_PREFIX}/include/ LDFLAGS=-L${LIBPQ_BUILD_PREFIX}/lib
make -C src/interfaces/libpq
make -C src/bin/pg_config
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/psycopg2-2.9.7/scripts/build/build_macos_arm64.sh new/psycopg2-2.9.9/scripts/build/build_macos_arm64.sh
--- old/psycopg2-2.9.7/scripts/build/build_macos_arm64.sh 2023-08-04 18:33:04.000000000 +0200
+++ new/psycopg2-2.9.9/scripts/build/build_macos_arm64.sh 2023-10-03 11:41:53.000000000 +0200
@@ -8,10 +8,14 @@
# so it can pretty much only be executed by a sudo user as it is.
set -euo pipefail
-set -x
+# set -x
-python_versions="3.8.10 3.9.13 3.10.5 3.11.0"
-pg_version=15
+python_versions="3.8.10 3.9.13 3.10.5 3.11.0 3.12.0"
+pg_version=16
+
+function log {
+ echo "$@" >&2
+}
# Move to the root of the project
dir="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
@@ -26,6 +30,7 @@
if [[ -x /opt/homebrew/bin/brew ]]; then
eval "$(/opt/homebrew/bin/brew shellenv)"
else
+ log "installing brew"
command -v brew > /dev/null || (
# Not necessary: already installed
# xcode-select --install
@@ -39,11 +44,12 @@
# Install PostgreSQL, if necessary
command -v pg_config > /dev/null || (
+ log "installing postgres"
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
+# Starting from 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
@@ -51,7 +57,8 @@
# brew services start postgresql@${pg_version}
if ! pg_ctl status; then
- pg_ctl -l /opt/homebrew/var/log/postgresql@${pg_version}.log start
+ log "starting the server"
+ pg_ctl -l "/opt/homebrew/var/log/postgresql@${pg_version}.log" start
fi
@@ -59,6 +66,7 @@
for ver3 in $python_versions; do
ver2=$(echo $ver3 | sed 's/\([^\.]*\)\(\.[^\.]*\)\(.*\)/\1\2/')
command -v python${ver2} > /dev/null || (
+ log "installing Python $ver3"
(cd /tmp &&
curl -fsSl -O \
https://www.python.org/ftp/python/${ver3}/python-${ver3}-macos11.pkg)
@@ -68,12 +76,16 @@
# Create a virtualenv where to work
if [[ ! -x .venv/bin/python ]]; then
+ log "creating a virtualenv"
python3 -m venv .venv
fi
+log "installing cibuildwheel"
source .venv/bin/activate
pip install cibuildwheel
+log "building wheels"
+
# Build the binary packages
export CIBW_PLATFORM=macos
export CIBW_ARCHS=arm64
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/psycopg2-2.9.7/scripts/build/run_build_macos_arm64.sh new/psycopg2-2.9.9/scripts/build/run_build_macos_arm64.sh
--- old/psycopg2-2.9.7/scripts/build/run_build_macos_arm64.sh 2023-08-04 18:33:04.000000000 +0200
+++ new/psycopg2-2.9.9/scripts/build/run_build_macos_arm64.sh 2023-10-03 11:41:53.000000000 +0200
@@ -5,36 +5,61 @@
# This script is designed to run on a local machine: it will clone the repos
# remotely and execute the `build_macos_arm64.sh` script remotely, then will
# download the built packages. A tag to build must be specified.
-#
-# In order to run the script, the `m1` host must be specified in
-# `~/.ssh/config`; for instance:
-#
-# Host m1
-# User m1
-# HostName 1.2.3.4
+
+# The script requires a Scaleway secret key in the SCW_SECRET_KEY env var:
+# It will use scaleway_m1.sh to provision a server and use it.
set -euo pipefail
# set -x
+function log {
+ echo "$@" >&2
+}
+function error {
+ # Print an error message and exit.
+ log "ERROR: $@"
+ exit 1
+}
+
tag=${1:-}
if [[ ! "${tag}" ]]; then
- echo "Usage: $0 TAG" >&2
- exit 2
+ error "Usage: $0 REF"
fi
-rdir=psycobuild
+dir="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
-# Clone the repos
-ssh m1 rm -rf "${rdir}"
-ssh m1 git clone https://github.com/psycopg/psycopg2.git --branch ${tag} "${rdir}"
+server=$("${dir}/scaleway_m1.sh" ensure)
-# Allow sudoing without password, to allow brew to install
-ssh -t m1 bash -c \
- 'test -f /etc/sudoers.d/m1 || echo "m1 ALL=(ALL) NOPASSWD:ALL" | sudo tee /etc/sudoers.d/m1'
+status=$(echo "$server" | jq -r .status)
+if [[ "$status" != "ready" ]]; then
+ error "server status is $status"
+fi
+
+# Get user, password, ip from vnc url
+tmp=$(echo "$server" | jq -r .vnc_url) # vnc://m1:PASS@1.2.3.4:5900
+tmp=${tmp/vnc:\/\//} # m1:PASS@1.2.3.4:5900
+user=${tmp%%:*} # m1
+tmp=${tmp#*:} # PASS@1.2.3.4:5900
+password=${tmp%%@*} # PASS
+tmp=${tmp#*@} # 1.2.3.4:5900
+host=${tmp%%:*} # 1.2.3.4
+
+ssh="ssh ${user}@${host} -o StrictHostKeyChecking=no"
+
+# Allow the user to sudo without asking for password.
+echo "$password" | \
+ $ssh sh -c "test -f /etc/sudoers.d/${user} \
+ || sudo -S --prompt= sh -c \
+ 'echo \"${user} ALL=(ALL) NOPASSWD:ALL\" > /etc/sudoers.d/${user}'"
+
+# Clone the repos
+rdir=psycobuild
+$ssh rm -rf "${rdir}"
+$ssh git clone https://github.com/psycopg/psycopg2.git --branch ${tag} "${rdir}"
# Build the wheel packages
-ssh m1 "${rdir}/scripts/build/build_macos_arm64.sh"
+$ssh "${rdir}/scripts/build/build_macos_arm64.sh"
# Transfer the packages locally
-scp -r "m1:${rdir}/wheelhouse" .
+scp -r "${user}@${host}:${rdir}/wheelhouse" .
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/psycopg2-2.9.7/scripts/build/scaleway_m1.sh new/psycopg2-2.9.9/scripts/build/scaleway_m1.sh
--- old/psycopg2-2.9.7/scripts/build/scaleway_m1.sh 1970-01-01 01:00:00.000000000 +0100
+++ new/psycopg2-2.9.9/scripts/build/scaleway_m1.sh 2023-10-03 11:41:53.000000000 +0200
@@ -0,0 +1,119 @@
+#!/bin/bash
+
+# Implement the following commands:
+#
+# ensure:
+#
+# Get data about currently provisioned M1 server on Scaleway. If needed,
+# provision one.
+#
+# The script requires the SCW_SECRET_KEY env var set to a valid secret.
+#
+# If successful, return the response data on stdout. It may look like:
+#
+# {
+# "id": "8b196119-3cea-4a9d-b916-265037a85e60",
+# "type": "M1-M",
+# "name": "mac-m1-psycopg",
+# "project_id": "4cf7a85e-f21e-40d4-b758-21d1f4ad3dfb",
+# "organization_id": "4cf7a85e-f21e-40d4-b758-21d1f4ad3dfb",
+# "ip": "1.2.3.4",
+# "vnc_url": "vnc://m1:PASSWORD@1.2.3.4:5900",
+# "status": "starting",
+# "created_at": "2023-09-22T18:00:18.754646Z",
+# "updated_at": "2023-09-22T18:00:18.754646Z",
+# "deletable_at": "2023-09-23T18:00:18.754646Z",
+# "zone": "fr-par-3"
+# }
+#
+# delete:
+#
+# Delete one provisioned server, if available.
+#
+# See https://www.scaleway.com/en/developers/api/apple-silicon/ for api docs.
+
+set -euo pipefail
+# set -x
+
+project_id="4cf7a85e-f21e-40d4-b758-21d1f4ad3dfb"
+zone=fr-par-3
+servers_url="https://api.scaleway.com/apple-silicon/v1alpha1/zones/${zone}/servers"
+
+function log {
+ echo "$@" >&2
+}
+function error {
+ log "ERROR: $@"
+ exit 1
+}
+
+function req {
+ method=$1
+ shift
+ curl -sSL --fail-with-body -X $method \
+ -H "Content-Type: application/json" \
+ -H "X-Auth-Token: ${SCW_SECRET_KEY}" \
+ "$@"
+}
+function get {
+ req GET "$@"
+}
+function post {
+ req POST "$@"
+}
+function delete {
+ req DELETE "$@"
+}
+
+function server_id {
+ # Return the id of the first server available, else the empty string
+ servers=$(get $servers_url || error "failed to request servers list")
+ server_ids=$(echo "$servers" | jq -r ".servers[].id")
+ for id in $server_ids; do
+ echo $id
+ break
+ done
+}
+
+function maybe_jq {
+ # Process the output via jq if displaying on console, otherwise leave
+ # it unprocessed.
+ if [ -t 1 ]; then
+ jq .
+ else
+ cat
+ fi
+}
+
+cmd=${1:-list}
+case $cmd in
+ ensure)
+ id=$(server_id)
+ if [[ "$id" ]]; then
+ log "You have servers."
+ get "$servers_url/$id" | maybe_jq
+ else
+ log "Creating new server."
+ post $servers_url -d "
+ {
+ \"name\": \"mac-m1-psycopg\",
+ \"project_id\": \"$project_id\",
+ \"type\": \"M1-M\"
+ }" | maybe_jq
+ fi
+ ;;
+ delete)
+ id=$(server_id)
+ if [[ "$id" ]]; then
+ log "Deleting server $id."
+ delete "$servers_url/$id" | maybe_jq
+ else
+ log "No server found."
+ fi
+ ;;
+ list)
+ get $servers_url | maybe_jq
+ ;;
+ *)
+ error "Usage: $(basename $0) [list|ensure|delete]"
+esac
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/psycopg2-2.9.7/scripts/build/wheel_macos_before_all.sh new/psycopg2-2.9.9/scripts/build/wheel_macos_before_all.sh
--- old/psycopg2-2.9.7/scripts/build/wheel_macos_before_all.sh 2023-08-04 18:33:04.000000000 +0200
+++ new/psycopg2-2.9.9/scripts/build/wheel_macos_before_all.sh 2023-10-03 11:41:53.000000000 +0200
@@ -2,6 +2,8 @@
# 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
+#
+# The PG_VERSION env var must be set to a Postgres major version (e.g. 16).
set -euo pipefail
set -x
@@ -9,7 +11,7 @@
dir="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
prjdir="$( cd "${dir}/../.." && pwd )"
-brew install gnu-sed postgresql@15
+brew install gnu-sed postgresql@${PG_VERSION}
# Start the database for testing
brew services start postgresql
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/psycopg2-2.9.7/setup.py new/psycopg2-2.9.9/setup.py
--- old/psycopg2-2.9.7/setup.py 2023-08-04 18:33:04.000000000 +0200
+++ new/psycopg2-2.9.9/setup.py 2023-10-03 11:41:53.000000000 +0200
@@ -36,15 +36,12 @@
from distutils.ccompiler import get_default_compiler
from distutils.errors import CompileError
-try:
- import configparser
-except ImportError:
- import ConfigParser as configparser
+import configparser
# Take a look at https://www.python.org/dev/peps/pep-0440/
# for a consistent versioning pattern.
-PSYCOPG_VERSION = '2.9.7'
+PSYCOPG_VERSION = '2.9.9'
# note: if you are changing the list of supported Python version please fix
@@ -55,12 +52,12 @@
License :: OSI Approved :: GNU Library or Lesser General Public License (LGPL)
Programming Language :: Python
Programming Language :: Python :: 3
-Programming Language :: Python :: 3.6
Programming Language :: Python :: 3.7
Programming Language :: Python :: 3.8
Programming Language :: Python :: 3.9
Programming Language :: Python :: 3.10
Programming Language :: Python :: 3.11
+Programming Language :: Python :: 3.12
Programming Language :: Python :: 3 :: Only
Programming Language :: Python :: Implementation :: CPython
Programming Language :: C
@@ -161,10 +158,7 @@
return None
def _get_pg_config_from_registry(self):
- try:
- import winreg
- except ImportError:
- import _winreg as winreg
+ import winreg
reg = winreg.ConnectRegistry(None, winreg.HKEY_LOCAL_MACHINE)
try:
@@ -557,7 +551,7 @@
url="https://psycopg.org/",
license="LGPL with exceptions",
platforms=["any"],
- python_requires='>=3.6',
+ python_requires='>=3.7',
description=readme.split("\n")[0],
long_description="\n".join(readme.split("\n")[2:]).lstrip(),
classifiers=[x for x in classifiers.split("\n") if x],
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/psycopg2-2.9.7/tests/test_connection.py new/psycopg2-2.9.9/tests/test_connection.py
--- old/psycopg2-2.9.7/tests/test_connection.py 2023-08-04 18:33:04.000000000 +0200
+++ new/psycopg2-2.9.9/tests/test_connection.py 2023-10-03 11:41:53.000000000 +0200
@@ -1922,6 +1922,10 @@
@skip_before_libpq(9, 5)
@skip_after_libpq(16)
def test_ssl_attribute(self):
+ # Skip this test even if libpq built == 15, runtime == 16 (see #1619)
+ if ext.libpq_version() >= 160000:
+ return self.skipTest("libpq runtime version == %s" % ext.libpq_version())
+
attribs = self.conn.info.ssl_attribute_names
self.assert_(attribs)
if self.conn.info.ssl_in_use: