diff --git a/mingw-w64-python-cffi/0001-missing-exchange8.patch b/mingw-w64-python-cffi/0001-missing-exchange8.patch new file mode 100644 index 0000000000..5455747180 --- /dev/null +++ b/mingw-w64-python-cffi/0001-missing-exchange8.patch @@ -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 */ diff --git a/mingw-w64-python-cffi/PKGBUILD b/mingw-w64-python-cffi/PKGBUILD index f546e03c03..05137b401e 100644 --- a/mingw-w64-python-cffi/PKGBUILD +++ b/mingw-w64-python-cffi/PKGBUILD @@ -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