python-cffi: Update to 2.0.0

This commit is contained in:
Christoph Reiter 2025-09-09 09:14:29 +02:00
parent 4d84c314ed
commit 77f09e51fc
2 changed files with 79 additions and 8 deletions

View File

@ -0,0 +1,65 @@
--- cffi-2.0.0/src/c/misc_win32.h.orig 2025-09-08 23:59:32.000000000 +0200
+++ cffi-2.0.0/src/c/misc_win32.h 2025-09-09 19:02:37.302712500 +0200
@@ -275,7 +275,9 @@
static void *cffi_atomic_load(void **ptr)
{
-#if defined(_M_X64) || defined(_M_IX86)
+#if defined(__GNUC__) || defined(__clang__)
+ return __atomic_load_n(ptr, __ATOMIC_SEQ_CST);
+#elif defined(_M_X64) || defined(_M_IX86)
return *(volatile void **)ptr;
#elif defined(_M_ARM64)
return (void *)__ldar64((volatile unsigned __int64 *)ptr);
@@ -286,7 +288,9 @@
static uint8_t cffi_atomic_load_uint8(uint8_t *ptr)
{
-#if defined(_M_X64) || defined(_M_IX86)
+#if defined(__GNUC__) || defined(__clang__)
+ return __atomic_load_n(ptr, __ATOMIC_SEQ_CST);
+#elif defined(_M_X64) || defined(_M_IX86)
return *(volatile uint8_t *)ptr;
#elif defined(_M_ARM64)
return (uint8_t)__ldar8((volatile uint8_t *)ptr);
@@ -297,7 +301,9 @@
static Py_ssize_t cffi_atomic_load_ssize(Py_ssize_t *ptr)
{
-#if defined(_M_X64) || defined(_M_IX86)
+#if defined(__GNUC__) || defined(__clang__)
+ return __atomic_load_n(ptr, __ATOMIC_SEQ_CST);
+#elif defined(_M_X64) || defined(_M_IX86)
return *(volatile Py_ssize_t *)ptr;
#elif defined(_M_ARM64)
return (Py_ssize_t)__ldar64((volatile unsigned __int64 *)ptr);
@@ -308,17 +314,29 @@
static void cffi_atomic_store_ssize(Py_ssize_t *ptr, Py_ssize_t value)
{
+#if defined(__GNUC__) || defined(__clang__)
+ __atomic_store_n(ptr, value, __ATOMIC_SEQ_CST);
+#else
_InterlockedExchangePointer(ptr, value);
+#endif
}
static void cffi_atomic_store(void **ptr, void *value)
{
+#if defined(__GNUC__) || defined(__clang__)
+ __atomic_store_n(ptr, value, __ATOMIC_SEQ_CST);
+#else
_InterlockedExchangePointer(ptr, value);
+#endif
}
static void cffi_atomic_store_uint8(uint8_t *ptr, uint8_t value)
{
+#if defined(__GNUC__) || defined(__clang__)
+ __atomic_store_n(ptr, value, __ATOMIC_SEQ_CST);
+#else
_InterlockedExchange8(ptr, value);
+#endif
}
#endif /* CFFI_MISC_WIN32_H */

View File

@ -3,8 +3,8 @@
_realname=cffi
pkgbase=mingw-w64-python-${_realname}
pkgname=("${MINGW_PACKAGE_PREFIX}-python-${_realname}")
pkgver=1.17.1
pkgrel=3
pkgver=2.0.0
pkgrel=1
pkgdesc="Foreign Function Interface for Python calling C code (mingw-w64)"
arch=('any')
mingw_arch=('mingw64' 'ucrt64' 'clang64' 'clangarm64')
@ -21,26 +21,32 @@ makedepends=("${MINGW_PACKAGE_PREFIX}-python-build"
"${MINGW_PACKAGE_PREFIX}-python-setuptools"
"${MINGW_PACKAGE_PREFIX}-cc")
source=("https://pypi.org/packages/source/${_realname:0:1}/${_realname}/${_realname}-${pkgver}.tar.gz"
"mingw-non-x86.patch")
sha256sums=('1c39c6016c32bc48dd54561950ebd6836e1670f2ae46128f67cf49e789c52824'
'c8a8ea2d65932ea0b62eae56dbc8afd6baacaadc7cb284ca0e4edf7ed1460c52')
"mingw-non-x86.patch"
"0001-missing-exchange8.patch")
sha256sums=('44d1b5909021139fe36001ae048dbdde8214afa20200eda0f64c068cac5d5529'
'c8a8ea2d65932ea0b62eae56dbc8afd6baacaadc7cb284ca0e4edf7ed1460c52'
'fdb25cf730913cf6270e4cdd80faf62e685aea02ecbf84059f7d91861e1a3a95')
prepare() {
cd "${srcdir}"/"${_realname}-${pkgver}"
patch -Np1 -i "${srcdir}"/mingw-non-x86.patch
# https://github.com/mingw-w64/mingw-w64/issues/118
# https://github.com/python-cffi/cffi/pull/198
patch -Np1 -i "${srcdir}"/0001-missing-exchange8.patch
}
build() {
cp -r "${_realname}-${pkgver}" "python-build-${MSYSTEM}" && cd "python-build-${MSYSTEM}"
CFLAGS+=" -Wno-incompatible-pointer-types"
${MINGW_PREFIX}/bin/python -m build --wheel --skip-dependency-check --no-isolation
python -m build --wheel --skip-dependency-check --no-isolation
}
package() {
cd "${srcdir}"/python-build-${MSYSTEM}
MSYS2_ARG_CONV_EXCL="--prefix=" \
${MINGW_PREFIX}/bin/python -m installer --prefix=${MINGW_PREFIX} \
python -m installer --prefix=${MINGW_PREFIX} \
--destdir="${pkgdir}" dist/*.whl
install -D -m644 LICENSE "${pkgdir}${MINGW_PREFIX}"/share/licenses/python-${_realname}/LICENSE