summaryrefslogtreecommitdiff
path: root/dev-python/psycopg
diff options
context:
space:
mode:
Diffstat (limited to 'dev-python/psycopg')
-rw-r--r--dev-python/psycopg/Manifest3
-rw-r--r--dev-python/psycopg/files/psycopg-3.1.17-musl.patch34
-rw-r--r--dev-python/psycopg/psycopg-3.1.17.ebuild50
3 files changed, 80 insertions, 7 deletions
diff --git a/dev-python/psycopg/Manifest b/dev-python/psycopg/Manifest
index 388b44160285..d09804f72b5d 100644
--- a/dev-python/psycopg/Manifest
+++ b/dev-python/psycopg/Manifest
@@ -1,3 +1,4 @@
+AUX psycopg-3.1.17-musl.patch 1316 BLAKE2B f4fb3e0e130777a6300ebd5bc2c357693ec4b35af888319c1fbbccc26e66ebf5f266bdad0c135ed3c6a0cd8f33115b72c0212b1d7d0ea8be27e8de237934f204 SHA512 c02afcc10a375d3649f315591304f9329de4f6dc95dc247fe1a90be3ab2cd092a9159238c6c0e28ee330c72dc63cd13139f92ad4e9e07174d63c31628fef3c63
DIST psycopg-3.1.16.gh.tar.gz 502759 BLAKE2B 6c0b912c2a93425ddbed842a437e042b58ec859b3cf163aa7cd45a0db21084fea58945b40028e0491460b7d4da6648cfc361e1434d43ec7ab71af91f1a0c4c86 SHA512 d6cfcc848c089ef79c817bf271bcbad7078cdacacef4ab26e882fdbe55c90ac12644e7ee0af22f4cf1fa759033e94ee54c812bca7b517b84cda77276557e8ca8
DIST psycopg-3.1.17.gh.tar.gz 503318 BLAKE2B 43c0c5ef0be20c9415c7dbe3b2ff242f30341d055bcf00ff4f9d9926c5c95df3bf10735e338c37f9e805562544637e75fd9edd5dbf71d67b42d04eea19e5c82e SHA512 d9f0ce05be71d67dbd7d1abad548befcdc229b53de93d5c08a52cae287d6f5293de6ede380c9ffc25ffa4d935782e90e9b04783f1c4c1fb88cb9ffd7016aabd5
DIST psycopg2-2.9.4.tar.gz 384017 BLAKE2B 4bc0afcc890c8a257c1ccd5c6e4e5301857a80f8b1428aa46c1473c9e18f5d2914a2e592c13336b06106217bb334d9b0321835bdd123f1627cbeb29dedf97bf7 SHA512 259088e42e0ab0d8a1a0ccf04f5e560f32c6179b4a0a0059e91bcf269baa8f4b0f1f949c332c640a2438c927a29b2c144078a861f8e18ba9c764da7c93c73b8d
@@ -5,5 +6,5 @@ DIST psycopg2-2.9.9.tar.gz 384926 BLAKE2B 8418fca1329703cedfc86be74d85cae5133a06
EBUILD psycopg-2.9.4.ebuild 1248 BLAKE2B 05090945297120771b3983ead32e88a6c178e631441a7fa3a3dea02c528650db938f39e0e8beed6bb46502e5c708efa32fa167285b7eacd214f587de5f8a53b4 SHA512 1e11a0c254f38c7e355d29a824b85546850b39dee02ef39a1275c2e461b3683793ed8c7dcae74cc4b8b70b9885203895e4b701ee39880f7de0fdb666d3826fec
EBUILD psycopg-2.9.9.ebuild 1290 BLAKE2B f478219e54cc7f2c59790b82f72bd38e26a3d1181cedaa67444f7cfa283214c2f6402417099c426d329133e47a5f6e9043eeceeb7cfd2ebff10b4d7433229ece SHA512 8a3d087058f98b069b7326480d8063993ed4d1ae73792c5a5abf9b386bec586af52d015d49171a062c0c6407ec1fd062c8f27bfdcf6366d04bb64420db34836c
EBUILD psycopg-3.1.16.ebuild 1781 BLAKE2B 087e1f67b6ababbf666651d3d9216cb0382507e07b03d2cdc694ea6cc45551126a1cf66cd275881012f8427a4bb31159eace9e0369d32a7e2ba8f2cd4877ecb5 SHA512 e2aefd6658d44d2e28adf5785e035bfdb1c1ff40fe1d275f7bd6aca35e89bcebf7dc1cd4fac24ebe8238067ad6be2e9bd2fb351cd44e83a7bcc3e23541d57521
-EBUILD psycopg-3.1.17.ebuild 1782 BLAKE2B bff43e95ae976dfd508466b12a2c865d8ccd7c15161491a7126fd4892ce5ce1c5a6ecf686661403fc9d370e713223523a685e62d4e76717d03fefd0701628265 SHA512 979f3ef13e8b9e51d715c419a9b72dc845068812fd36ac5fa24adc9f3b5b5c81a8ff2f822e093a1edab62918483661dcfd11213b03a632c9454f7fecb7d410d6
+EBUILD psycopg-3.1.17.ebuild 2590 BLAKE2B f1064930c7da54de6673f6c9a406373188ffbe5e821e9173776420216efce31bda46f43d0e453e046f001698990d353e3507036785b0ca24e9ecbc7a8bed8fdf SHA512 3288147ca5332c28ec225f5b12bc382fca7df1c401be3f01a52c86402e06a5f1ddfc53a712584d3e3234b03d759e7223bd9d7b58e50e0d2c919ae60faaf3e221
MISC metadata.xml 426 BLAKE2B a573dbbef89ba2c3c7e7aa11e87005879fa823daa8d7e2080ce82dab7196429769b5e2ed0c4ffb363443469dfa47524d900fae75c4d7c8c9da901389e746838f SHA512 e3059428d8c00113696bfd232b2ad3fd4efccc304a31ff45801f30bb07c03acd58aafcab187fd85e4d89eff4db6c18a1395744eb1fd5cf8f11e43aca0f4e60cc
diff --git a/dev-python/psycopg/files/psycopg-3.1.17-musl.patch b/dev-python/psycopg/files/psycopg-3.1.17-musl.patch
new file mode 100644
index 000000000000..ca1689931ed8
--- /dev/null
+++ b/dev-python/psycopg/files/psycopg-3.1.17-musl.patch
@@ -0,0 +1,34 @@
+From eeb662bf89e9ffdb3e6fc40eb30d0b53e0b4bece Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Micha=C5=82=20G=C3=B3rny?= <mgorny@gentoo.org>
+Date: Sat, 27 Jan 2024 15:28:34 +0100
+Subject: [PATCH] fix: add `libc.so` fallback for musl systems to the ctypes
+ impl
+
+Add a fallback to `libc.so` library name to fix loading the ctypes
+implementation on musl systems. On musl, `find_library("c")` does
+not work (the problem has been reported to CPython in 2014, and has not
+been resolved yet), causing the module to fail on `assert libcname`.
+Instead, add a fallback to using `libc.so` and let ctypes raise
+an exception if such a library does not exist.
+---
+ psycopg/psycopg/pq/_pq_ctypes.py | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/psycopg/psycopg/pq/_pq_ctypes.py b/psycopg/psycopg/pq/_pq_ctypes.py
+index 9d4dd181..3ecff080 100644
+--- a/psycopg/psycopg/pq/_pq_ctypes.py
++++ b/psycopg/psycopg/pq/_pq_ctypes.py
+@@ -28,8 +28,8 @@ class FILE(Structure):
+ FILE_ptr = POINTER(FILE)
+
+ if sys.platform == "linux":
+- libcname = ctypes.util.find_library("c")
+- assert libcname
++ # find_library("c") does not work on musl, fall back to libc.so instead
++ libcname = ctypes.util.find_library("c") or "libc.so"
+ libc = ctypes.cdll.LoadLibrary(libcname)
+
+ fdopen = libc.fdopen
+--
+2.43.0
+
diff --git a/dev-python/psycopg/psycopg-3.1.17.ebuild b/dev-python/psycopg/psycopg-3.1.17.ebuild
index 5dc95f268c32..df2def1f51f9 100644
--- a/dev-python/psycopg/psycopg-3.1.17.ebuild
+++ b/dev-python/psycopg/psycopg-3.1.17.ebuild
@@ -3,6 +3,7 @@
EAPI=8
+DISTUTILS_EXT=1
DISTUTILS_USE_PEP517=setuptools
PYTHON_COMPAT=( pypy3 python3_{10..12} )
@@ -18,20 +19,29 @@ SRC_URI="
https://github.com/psycopg/psycopg/archive/${PV}.tar.gz
-> ${P}.gh.tar.gz
"
-S=${WORKDIR}/${P}/psycopg
LICENSE="LGPL-3+"
SLOT="0"
KEYWORDS="~alpha amd64 arm arm64 ~hppa ~ia64 ppc ppc64 ~riscv ~s390 ~sparc x86 ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos"
+IUSE="+native-extensions"
DEPEND="
- >=dev-db/postgresql-8.1:*
+ native-extensions? (
+ >=dev-db/postgresql-8.1:=
+ )
+ !native-extensions? (
+ >=dev-db/postgresql-8.1:*
+ )
"
RDEPEND="
${DEPEND}
>=dev-python/typing-extensions-4.1[${PYTHON_USEDEP}]
"
BDEPEND="
+ native-extensions? (
+ dev-python/cython[${PYTHON_USEDEP}]
+ dev-python/tomli[${PYTHON_USEDEP}]
+ )
test? (
>=dev-db/postgresql-8.1[server]
dev-python/anyio[${PYTHON_USEDEP}]
@@ -41,9 +51,27 @@ BDEPEND="
distutils_enable_tests pytest
-src_test() {
- # tests are lurking in top-level directory
+PATCHES=(
+ # https://github.com/psycopg/psycopg/pull/725
+ "${FILESDIR}/${P}-musl.patch"
+)
+
+python_compile() {
+ # Python code + ctypes backend
+ cd psycopg || die
+ distutils-r1_python_compile
+
+ # optional C backend
+ if use native-extensions && [[ ${EPYTHON} != pypy3 ]]; then
+ local DISTUTILS_USE_PEP517=standalone
+ cd ../psycopg_c || die
+ distutils-r1_python_compile
+ fi
cd .. || die
+}
+
+src_test() {
+ rm -r psycopg{,_c} || die
initdb -D "${T}"/pgsql || die
# TODO: random port
@@ -70,7 +98,17 @@ python_test() {
tests/test_dns_srv.py::test_srv
)
+ local impls=( python )
+ if use native-extensions && [[ ${EPYTHON} != pypy3 ]]; then
+ impls+=( c )
+ fi
+
local -x PYTEST_DISABLE_PLUGIN_AUTOLOAD=1
- # leak and timing tests are fragile whereas slow tests are slow
- epytest -p anyio -k "not leak" -m "not timing and not slow"
+ local -x PSYCOPG_IMPL
+ for PSYCOPG_IMPL in "${impls[@]}"; do
+ einfo "Testing with ${PSYCOPG_IMPL} implementation ..."
+ # leak and timing tests are fragile whereas slow tests are slow
+ epytest -p anyio -k "not leak" \
+ -m "not timing and not slow and not flakey"
+ done
}