dev-python/pygraphviz: Remove old

Signed-off-by: Michał Górny <mgorny@gentoo.org>
This commit is contained in:
Michał Górny
2024-05-25 08:16:30 +02:00
parent f7e9610d4c
commit 3c522f860d
3 changed files with 0 additions and 345 deletions

View File

@@ -1,2 +1 @@
DIST pygraphviz-1.12.tar.gz 104941 BLAKE2B 5c2d119c66837d13511ef4756093b159f45ccb2888eb2b86c1d016837059ed34bdc5cb7e69eeff013642d92ec0c2b4a1149316b0baaa742c49a34945fd2563e0 SHA512 2407fdd7de3b2f7f1d9f9e3e3fe0f19c4faad4a72db33a0b4341a01f98eecd4d240079f2d0ea5cf68a5e10236f11fd84e55fd44518611efde2fab7590e3aae90
DIST pygraphviz-1.13.tar.gz 104642 BLAKE2B 6111c1b811d5359da673f9c43719d21e86e93e7e82e5819872fed6f87ebb74efb87dba40b5dac737b93bffcd51683f143528a135a76e3d6f62615593fdc22b88 SHA512 3159fd9fb1226974c3a6289ebc437eed394021a7fc41669e29879fa6fd5e5cb809c808a4016cfb1afaf30dc10e467e8b0fe5c3b71fb9a1f889efcf5ae6ff3597

View File

@@ -1,290 +0,0 @@
https://bugs.gentoo.org/921637
https://github.com/swig/swig/issues/2778
https://github.com/pygraphviz/pygraphviz/commit/6ecae22cc382407652f9d3b57e9da89a3a03043b
From 6ecae22cc382407652f9d3b57e9da89a3a03043b Mon Sep 17 00:00:00 2001
From: William S Fulton <wsf@fultondesigns.co.uk>
Date: Fri, 26 Jan 2024 00:52:44 +0000
Subject: [PATCH] Remove outdated pystrings.swg (#508)
Remove pystring.swg - a very ancient copy from SWIG which does not
compile when using swig-4.2.0. Instead SWIG's version of pystrings.swg
that is kept up to date in SWIG is used. SWIG_PYTHON_STRICT_BYTE_CHAR
needs to be defined in order to maintain the current behaviour of only
allowing Python 3 byte type instead of Python 3 string type as input.
As the output of swig is in graphviz_wrap.c and is committed to the
repo, the updates committed in this file (keeping the current swig-4.1.1
version). A later commit could update it to swig-4.2.0.
Fixes build problems on Fedora where SWIG_Python_str_AsChar no longer exists,
as reported at https://github.com/swig/swig/issues/2778.
---
pygraphviz/graphviz.i | 4 ++
pygraphviz/graphviz_wrap.c | 106 ++++++++++++++++++++++++++++---------
pystrings.swg | 86 ------------------------------
3 files changed, 84 insertions(+), 112 deletions(-)
delete mode 100644 pystrings.swg
diff --git a/pygraphviz/graphviz.i b/pygraphviz/graphviz.i
index c63eb2d3..d7c49330 100644
--- a/pygraphviz/graphviz.i
+++ b/pygraphviz/graphviz.i
@@ -1,5 +1,9 @@
%module graphviz
+%begin %{
+#define SWIG_PYTHON_STRICT_BYTE_CHAR
+%}
+
%{
#include "graphviz/cgraph.h"
#include "graphviz/gvc.h"
diff --git a/pygraphviz/graphviz_wrap.c b/pygraphviz/graphviz_wrap.c
index 8f4d3a62..cb06da79 100644
--- a/pygraphviz/graphviz_wrap.c
+++ b/pygraphviz/graphviz_wrap.c
@@ -6,6 +6,9 @@
* the SWIG interface file instead.
* ----------------------------------------------------------------------------- */
+#define SWIG_PYTHON_STRICT_BYTE_CHAR
+
+
#define SWIG_VERSION 0x040101
#define SWIGPYTHON
@@ -3038,49 +3041,96 @@ SWIGINTERN int
SWIG_AsCharPtrAndSize(PyObject *obj, char** cptr, size_t* psize, int *alloc)
{
#if PY_VERSION_HEX>=0x03000000
+#if defined(SWIG_PYTHON_STRICT_BYTE_CHAR)
if (PyBytes_Check(obj))
#else
+ if (PyUnicode_Check(obj))
+#endif
+#else
if (PyString_Check(obj))
#endif
{
char *cstr; Py_ssize_t len;
+ int ret = SWIG_OK;
#if PY_VERSION_HEX>=0x03000000
- PyBytes_AsStringAndSize(obj, &cstr, &len);
- if(alloc) *alloc = SWIG_NEWOBJ;
+#if !defined(SWIG_PYTHON_STRICT_BYTE_CHAR)
+ if (!alloc && cptr) {
+ /* We can't allow converting without allocation, since the internal
+ representation of string in Python 3 is UCS-2/UCS-4 but we require
+ a UTF-8 representation.
+ TODO(bhy) More detailed explanation */
+ return SWIG_RuntimeError;
+ }
+ obj = PyUnicode_AsUTF8String(obj);
+ if (!obj)
+ return SWIG_TypeError;
+ if (alloc)
+ *alloc = SWIG_NEWOBJ;
+#endif
+ if (PyBytes_AsStringAndSize(obj, &cstr, &len) == -1)
+ return SWIG_TypeError;
#else
- PyString_AsStringAndSize(obj, &cstr, &len);
+ if (PyString_AsStringAndSize(obj, &cstr, &len) == -1)
+ return SWIG_TypeError;
#endif
if (cptr) {
if (alloc) {
- /*
- In python the user should not be able to modify the inner
- string representation. To warranty that, if you define
- SWIG_PYTHON_SAFE_CSTRINGS, a new/copy of the python string
- buffer is always returned.
-
- The default behavior is just to return the pointer value,
- so, be careful.
- */
-#if defined(SWIG_PYTHON_SAFE_CSTRINGS)
- if (*alloc != SWIG_OLDOBJ)
-#else
- if (*alloc == SWIG_NEWOBJ)
-#endif
- {
- *cptr = (char *)memcpy(malloc((len + 1)*sizeof(char)), cstr, sizeof(char)*(len + 1));
- *alloc = SWIG_NEWOBJ;
- }
- else {
+ if (*alloc == SWIG_NEWOBJ) {
+ *cptr = (char *)memcpy(malloc((len + 1)*sizeof(char)), cstr, sizeof(char)*(len + 1));
+ *alloc = SWIG_NEWOBJ;
+ } else {
*cptr = cstr;
*alloc = SWIG_OLDOBJ;
}
} else {
+#if PY_VERSION_HEX>=0x03000000
+#if defined(SWIG_PYTHON_STRICT_BYTE_CHAR)
+ *cptr = PyBytes_AsString(obj);
+#else
+ assert(0); /* Should never reach here with Unicode strings in Python 3 */
+#endif
+#else
*cptr = SWIG_Python_str_AsChar(obj);
+ if (!*cptr)
+ ret = SWIG_TypeError;
+#endif
}
}
if (psize) *psize = len + 1;
- return SWIG_OK;
+#if PY_VERSION_HEX>=0x03000000 && !defined(SWIG_PYTHON_STRICT_BYTE_CHAR)
+ Py_XDECREF(obj);
+#endif
+ return ret;
} else {
+#if defined(SWIG_PYTHON_2_UNICODE)
+#if defined(SWIG_PYTHON_STRICT_BYTE_CHAR)
+#error "Cannot use both SWIG_PYTHON_2_UNICODE and SWIG_PYTHON_STRICT_BYTE_CHAR at once"
+#endif
+#if PY_VERSION_HEX<0x03000000
+ if (PyUnicode_Check(obj)) {
+ char *cstr; Py_ssize_t len;
+ if (!alloc && cptr) {
+ return SWIG_RuntimeError;
+ }
+ obj = PyUnicode_AsUTF8String(obj);
+ if (!obj)
+ return SWIG_TypeError;
+ if (PyString_AsStringAndSize(obj, &cstr, &len) != -1) {
+ if (cptr) {
+ if (alloc) *alloc = SWIG_NEWOBJ;
+ *cptr = (char *)memcpy(malloc((len + 1)*sizeof(char)), cstr, sizeof(char)*(len + 1));
+ }
+ if (psize) *psize = len + 1;
+
+ Py_XDECREF(obj);
+ return SWIG_OK;
+ } else {
+ Py_XDECREF(obj);
+ }
+ }
+#endif
+#endif
+
swig_type_info* pchar_descriptor = SWIG_pchar_descriptor();
if (pchar_descriptor) {
void* vptr = 0;
@@ -3311,13 +3361,17 @@ SWIG_FromCharPtrAndSize(const char* carray, size_t size)
if (carray) {
if (size > INT_MAX) {
swig_type_info* pchar_descriptor = SWIG_pchar_descriptor();
- return pchar_descriptor ?
+ return pchar_descriptor ?
SWIG_InternalNewPointerObj((char *)(carray), pchar_descriptor, 0) : SWIG_Py_Void();
} else {
#if PY_VERSION_HEX >= 0x03000000
- return PyBytes_FromStringAndSize(carray, (int)(size));
+#if defined(SWIG_PYTHON_STRICT_BYTE_CHAR)
+ return PyBytes_FromStringAndSize(carray, (Py_ssize_t)(size));
+#else
+ return PyUnicode_DecodeUTF8(carray, (Py_ssize_t)(size), "surrogateescape");
+#endif
#else
- return PyString_FromStringAndSize(carray, (int)(size));
+ return PyString_FromStringAndSize(carray, (Py_ssize_t)(size));
#endif
}
} else {
diff --git a/pystrings.swg b/pystrings.swg
deleted file mode 100644
index 7988a353..00000000
--- a/pystrings.swg
+++ /dev/null
@@ -1,86 +0,0 @@
-/* Fixed fragments for work with bytes in Python 3. */
-
-%fragment("SWIG_AsCharPtrAndSize","header",fragment="SWIG_pchar_descriptor") {
-SWIGINTERN int
-SWIG_AsCharPtrAndSize(PyObject *obj, char** cptr, size_t* psize, int *alloc)
-{
-%#if PY_VERSION_HEX>=0x03000000
- if (PyBytes_Check(obj))
-%#else
- if (PyString_Check(obj))
-%#endif
- {
- char *cstr; Py_ssize_t len;
-%#if PY_VERSION_HEX>=0x03000000
- PyBytes_AsStringAndSize(obj, &cstr, &len);
- if(alloc) *alloc = SWIG_NEWOBJ;
-%#else
- PyString_AsStringAndSize(obj, &cstr, &len);
-%#endif
- if (cptr) {
- if (alloc) {
- /*
- In python the user should not be able to modify the inner
- string representation. To warranty that, if you define
- SWIG_PYTHON_SAFE_CSTRINGS, a new/copy of the python string
- buffer is always returned.
-
- The default behavior is just to return the pointer value,
- so, be careful.
- */
-%#if defined(SWIG_PYTHON_SAFE_CSTRINGS)
- if (*alloc != SWIG_OLDOBJ)
-%#else
- if (*alloc == SWIG_NEWOBJ)
-%#endif
- {
- *cptr = %new_copy_array(cstr, len + 1, char);
- *alloc = SWIG_NEWOBJ;
- }
- else {
- *cptr = cstr;
- *alloc = SWIG_OLDOBJ;
- }
- } else {
- *cptr = SWIG_Python_str_AsChar(obj);
- }
- }
- if (psize) *psize = len + 1;
- return SWIG_OK;
- } else {
- swig_type_info* pchar_descriptor = SWIG_pchar_descriptor();
- if (pchar_descriptor) {
- void* vptr = 0;
- if (SWIG_ConvertPtr(obj, &vptr, pchar_descriptor, 0) == SWIG_OK) {
- if (cptr) *cptr = (char *) vptr;
- if (psize) *psize = vptr ? (strlen((char *)vptr) + 1) : 0;
- if (alloc) *alloc = SWIG_OLDOBJ;
- return SWIG_OK;
- }
- }
- }
- return SWIG_TypeError;
-}
-}
-
-%fragment("SWIG_FromCharPtrAndSize","header",fragment="SWIG_pchar_descriptor") {
-SWIGINTERNINLINE PyObject *
-SWIG_FromCharPtrAndSize(const char* carray, size_t size)
-{
- if (carray) {
- if (size > INT_MAX) {
- swig_type_info* pchar_descriptor = SWIG_pchar_descriptor();
- return pchar_descriptor ?
- SWIG_InternalNewPointerObj(%const_cast(carray,char *), pchar_descriptor, 0) : SWIG_Py_Void();
- } else {
-%#if PY_VERSION_HEX >= 0x03000000
- return PyBytes_FromStringAndSize(carray, %numeric_cast(size,int));
-%#else
- return PyString_FromStringAndSize(carray, %numeric_cast(size,int));
-%#endif
- }
- } else {
- return SWIG_Py_Void();
- }
-}
-}

View File

@@ -1,54 +0,0 @@
# Copyright 1999-2024 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
DISTUTILS_EXT=1
DISTUTILS_USE_PEP517=setuptools
PYTHON_COMPAT=( python3_{10..12} )
inherit distutils-r1 pypi
DESCRIPTION="Python wrapper for the Graphviz Agraph data structure"
HOMEPAGE="
https://pygraphviz.github.io/
https://github.com/pygraphviz/pygraphviz/
https://pypi.org/project/pygraphviz/
"
LICENSE="BSD"
SLOT="0"
KEYWORDS="amd64 ~arm ~arm64 ~ppc64 ~riscv x86 ~x86-linux ~ppc-macos ~x64-macos"
# Note: only C API of graphviz is used, PYTHON_USEDEP unnecessary.
DEPEND="
media-gfx/graphviz
"
RDEPEND="
${DEPEND}
"
BDEPEND="
dev-lang/swig:0
"
distutils_enable_tests pytest
PATCHES=(
"${FILESDIR}"/${P}-swig-4.2.0.patch
)
src_configure() {
swig -python pygraphviz/graphviz.i || die
}
python_test() {
cd "${BUILD_DIR}"/install || die
epytest
}
python_install_all() {
dodoc -r examples
docompress -x /usr/share/doc/${PF}/examples
distutils-r1_python_install_all
}