diff options
Diffstat (limited to 'community/python3-tkinter')
-rw-r--r-- | community/python3-tkinter/APKBUILD | 10 | ||||
-rw-r--r-- | community/python3-tkinter/bpo-30353.patch | 133 |
2 files changed, 4 insertions, 139 deletions
diff --git a/community/python3-tkinter/APKBUILD b/community/python3-tkinter/APKBUILD index 4f15f4ea83..1bbce8f638 100644 --- a/community/python3-tkinter/APKBUILD +++ b/community/python3-tkinter/APKBUILD @@ -2,7 +2,7 @@ # Contributor: Kiyoshi Aman <kiyoshi.aman@gmail.com> pkgname=python3-tkinter -pkgver=3.6.3 +pkgver=3.6.7 _basever="${pkgver%.*}" pkgrel=1 pkgdesc="A graphical user interface for the Python" @@ -11,13 +11,12 @@ arch="all" license="custom" replaces=python3 subpackages="$pkgname-tests python3-idle:_idle" -makedepends="expat-dev libressl-dev zlib-dev ncurses-dev bzip2-dev xz-dev +makedepends="expat-dev openssl-dev zlib-dev ncurses-dev bzip2-dev xz-dev sqlite-dev libffi-dev tcl-dev linux-headers gdbm-dev readline-dev tk tk-dev python3" source="https://www.python.org/ftp/python/$pkgver/Python-$pkgver.tar.xz musl-find_library.patch fix-xattrs-glibc.patch - bpo-30353.patch " builddir="$srcdir/Python-$pkgver" @@ -111,7 +110,6 @@ _idle() { _mv_files usr/lib/python*/idlelib } -sha512sums="32f24a3adcb7880003c7ecdc5e53e838e774adda76b308961d8215e28db630b2fa2828097817924c76afa4212b2df3362eb64d4e10f37c0147f512ec5aa8662b Python-3.6.3.tar.xz +sha512sums="7be753046db8d12fc00f90d9c1b2edcc5ae80ac39e9d0d8d07553081a26f59a60c0d0cf6986006f0729f425d5751273110db3aa2d413d9405fafa9bd6c052fdf Python-3.6.7.tar.xz ab8eaa2858d5109049b1f9f553198d40e0ef8d78211ad6455f7b491af525bffb16738fed60fc84e960c4889568d25753b9e4a1494834fea48291b33f07000ec2 musl-find_library.patch -37b6ee5d0d5de43799316aa111423ba5a666c17dc7f81b04c330f59c1d1565540eac4c585abe2199bbed52ebe7426001edb1c53bd0a17486a2a8e052d0f494ad fix-xattrs-glibc.patch -df54032e66171483aad24f9f370e185072dcb2d6981210a8dd79b5fa51c2c7aa64da2501aa96bb5009bfb658387851068bc82f23c515f739672722495c2c98dd bpo-30353.patch" +37b6ee5d0d5de43799316aa111423ba5a666c17dc7f81b04c330f59c1d1565540eac4c585abe2199bbed52ebe7426001edb1c53bd0a17486a2a8e052d0f494ad fix-xattrs-glibc.patch" diff --git a/community/python3-tkinter/bpo-30353.patch b/community/python3-tkinter/bpo-30353.patch deleted file mode 100644 index 28fc93eef0..0000000000 --- a/community/python3-tkinter/bpo-30353.patch +++ /dev/null @@ -1,133 +0,0 @@ -https://github.com/python/cpython/commit/9ba3aa4d02a110d1a1ea464a8aff3be7dd9c63c3.patch - -From 9ba3aa4d02a110d1a1ea464a8aff3be7dd9c63c3 Mon Sep 17 00:00:00 2001 -From: Erik Bray <erik.m.bray@gmail.com> -Date: Wed, 7 Jun 2017 18:42:24 +0100 -Subject: [PATCH] bpo-30353: Fix pass by value for structs on 64-bit - Cygwin/MinGW (GH-1559) - ---- - Lib/ctypes/test/test_as_parameter.py | 4 ++++ - Lib/ctypes/test/test_structures.py | 22 ++++++++++++++++++++++ - Modules/_ctypes/_ctypes_test.c | 18 ++++++++++++++++++ - Modules/_ctypes/callproc.c | 23 +++++++++++++++++++++-- - 4 files changed, 65 insertions(+), 2 deletions(-) - -diff --git a/Lib/ctypes/test/test_as_parameter.py b/Lib/ctypes/test/test_as_parameter.py -index 2a3484bec01..a2640575a07 100644 ---- a/Lib/ctypes/test/test_as_parameter.py -+++ b/Lib/ctypes/test/test_as_parameter.py -@@ -169,6 +169,10 @@ class S2H(Structure): - s2h = dll.ret_2h_func(self.wrap(inp)) - self.assertEqual((s2h.x, s2h.y), (99*2, 88*3)) - -+ # Test also that the original struct was unmodified (i.e. was passed by -+ # value) -+ self.assertEqual((inp.x, inp.y), (99, 88)) -+ - def test_struct_return_8H(self): - class S8I(Structure): - _fields_ = [("a", c_int), -diff --git a/Lib/ctypes/test/test_structures.py b/Lib/ctypes/test/test_structures.py -index 2e778fb1b43..d90c71144c9 100644 ---- a/Lib/ctypes/test/test_structures.py -+++ b/Lib/ctypes/test/test_structures.py -@@ -417,6 +417,28 @@ class X(Structure): - self.assertEqual(s.second, 0xcafebabe) - self.assertEqual(s.third, 0x0bad1dea) - -+ def test_pass_by_value_in_register(self): -+ class X(Structure): -+ _fields_ = [ -+ ('first', c_uint), -+ ('second', c_uint) -+ ] -+ -+ s = X() -+ s.first = 0xdeadbeef -+ s.second = 0xcafebabe -+ dll = CDLL(_ctypes_test.__file__) -+ func = dll._testfunc_reg_struct_update_value -+ func.argtypes = (X,) -+ func.restype = None -+ func(s) -+ self.assertEqual(s.first, 0xdeadbeef) -+ self.assertEqual(s.second, 0xcafebabe) -+ got = X.in_dll(dll, "last_tfrsuv_arg") -+ self.assertEqual(s.first, got.first) -+ self.assertEqual(s.second, got.second) -+ -+ - class PointerMemberTestCase(unittest.TestCase): - - def test(self): -diff --git a/Modules/_ctypes/_ctypes_test.c b/Modules/_ctypes/_ctypes_test.c -index fe0015c8013..2255e573393 100644 ---- a/Modules/_ctypes/_ctypes_test.c -+++ b/Modules/_ctypes/_ctypes_test.c -@@ -57,6 +57,24 @@ _testfunc_large_struct_update_value(Test in) - ((volatile Test *)&in)->third = 0x0badf00d; - } - -+typedef struct { -+ unsigned int first; -+ unsigned int second; -+} TestReg; -+ -+ -+EXPORT(TestReg) last_tfrsuv_arg; -+ -+ -+EXPORT(void) -+_testfunc_reg_struct_update_value(TestReg in) -+{ -+ last_tfrsuv_arg = in; -+ ((volatile TestReg *)&in)->first = 0x0badf00d; -+ ((volatile TestReg *)&in)->second = 0x0badf00d; -+} -+ -+ - EXPORT(void)testfunc_array(int values[4]) - { - printf("testfunc_array %d %d %d %d\n", -diff --git a/Modules/_ctypes/callproc.c b/Modules/_ctypes/callproc.c -index 0b6faf96c68..5439b939dc4 100644 ---- a/Modules/_ctypes/callproc.c -+++ b/Modules/_ctypes/callproc.c -@@ -1039,6 +1039,13 @@ GetComError(HRESULT errcode, GUID *riid, IUnknown *pIunk) - } - #endif - -+#if (defined(__x86_64__) && (defined(__MINGW64__) || defined(__CYGWIN__))) || \ -+ defined(__aarch64__) -+#define CTYPES_PASS_BY_REF_HACK -+#define POW2(x) (((x & ~(x - 1)) == x) ? x : 0) -+#define IS_PASS_BY_REF(x) (x > 8 || !POW2(x)) -+#endif -+ - /* - * Requirements, must be ensured by the caller: - * - argtuple is tuple of arguments -@@ -1136,8 +1143,20 @@ PyObject *_ctypes_callproc(PPROC pProc, - } - for (i = 0; i < argcount; ++i) { - atypes[i] = args[i].ffi_type; -- if (atypes[i]->type == FFI_TYPE_STRUCT -- ) -+#ifdef CTYPES_PASS_BY_REF_HACK -+ size_t size = atypes[i]->size; -+ if (IS_PASS_BY_REF(size)) { -+ void *tmp = alloca(size); -+ if (atypes[i]->type == FFI_TYPE_STRUCT) -+ memcpy(tmp, args[i].value.p, size); -+ else -+ memcpy(tmp, (void*)&args[i].value, size); -+ -+ avalues[i] = tmp; -+ } -+ else -+#endif -+ if (atypes[i]->type == FFI_TYPE_STRUCT) - avalues[i] = (void *)args[i].value.p; - else - avalues[i] = (void *)&args[i].value; |