From 99386916bbaf4d29bc546ae0a24fed284f655a46 Mon Sep 17 00:00:00 2001 From: Britney Fransen Date: Tue, 13 Feb 2018 19:40:33 +0000 Subject: python2: update to 2.7.14 --- abs/core/python2/PKGBUILD | 50 ++++++++++++++++------------ abs/core/python2/__changelog | 1 - abs/core/python2/descr_ref.patch | 58 +++++++++++++++++++++++++++++++++ abs/core/python2/fix-profile-task.patch | 13 ++++++++ 4 files changed, 100 insertions(+), 22 deletions(-) delete mode 100644 abs/core/python2/__changelog create mode 100644 abs/core/python2/descr_ref.patch create mode 100644 abs/core/python2/fix-profile-task.patch diff --git a/abs/core/python2/PKGBUILD b/abs/core/python2/PKGBUILD index 8615d48..aabe74a 100644 --- a/abs/core/python2/PKGBUILD +++ b/abs/core/python2/PKGBUILD @@ -5,22 +5,27 @@ # Contributor: Jason Chu pkgname=python2 -pkgver=2.7.11 +pkgver=2.7.14 pkgrel=2 _pybasever=2.7 pkgdesc="A high-level scripting language" -arch=('i686' 'x86_64') +arch=('x86_64') license=('PSF') url="http://www.python.org/" depends=('bzip2' 'gdbm' 'openssl' 'zlib' 'expat' 'sqlite' 'libffi') -makedepends=('tk' 'bluez-libs' 'hardening-wrapper') -checkdepends=('gdb' 'file') +makedepends=('tk' 'bluez-libs') +checkdepends=('gdb' 'file' 'xorg-server-xvfb') optdepends=('tk: for IDLE' 'python2-setuptools' 'python2-pip') conflicts=('python<3') -source=(http://www.python.org/ftp/python/${pkgver%rc?}/Python-${pkgver}.tar.xz) -sha1sums=('c3b8bbe3f084c4d4ea13ffb03d75a5e22f9756ff') +source=("https://www.python.org/ftp/python/${pkgver%rc?}/Python-${pkgver}.tar.xz"{,.asc} + descr_ref.patch fix-profile-task.patch) +sha512sums=('78310b0be6388ffa15f29a80afb9ab3c03a572cb094e9da00cfe391afadb51696e41f592eb658d6a31a2f422fdac8a55214a382cbb8cfb43d4a127d5b35ea7f9' + 'SKIP' + '2e16eb23eb402dbe921c09bce99b400c10939114b4a1ded0e94a744d8cb66427947bc8d07c4fb054f9fe0906d10d1da509fc2273fd136225c0f019cc43dd045d' + '5d7b47bfa9f13cf5fb827546189d823033278f96866366fca5257aaf819c92ffb26e2116426c84ab78d9ae3178eebb591fa4b2f22cfc2725e3e3e795fdb5c2b6') +validpgpkeys=('C01E1CAD5EA2C4F0B8E3571504C367C218ADD4FF') # Benjamin Peterson prepare() { cd Python-${pkgver} @@ -38,11 +43,6 @@ prepare() { sed -i "s/python2.3/python2/g" Lib/distutils/tests/test_build_scripts.py \ Lib/distutils/tests/test_install_scripts.py - # TODO: Still not passed - # Silent test_gdb failures on 'no symbol table loaded'. - #sed -i '/ignore_patterns = (/a "No symbol table is loaded. Use the \\"file\\" command.",' \ - # Lib/test/test_gdb.py - # Ensure that we are using the system copy of various libraries (expat, zlib and libffi), # rather than copies shipped in the tarball rm -r Modules/expat @@ -55,6 +55,13 @@ prepare() { # Workaround asdl_c.py/makeopcodetargets.py errors after we touched the shebangs touch Include/Python-ast.h Python/Python-ast.c Python/opcode_targets.h + + # FS#48761 + # http://bugs.python.org/issue25750 + patch -Np1 -i ../descr_ref.patch + + # Backport from Python 3.x + patch -Np2 -i ../fix-profile-task.patch } build() { @@ -64,6 +71,8 @@ build() { ./configure --prefix=/usr \ --enable-shared \ --with-threads \ + --enable-optimizations \ + --with-lto \ --enable-ipv6 \ --enable-unicode=ucs4 \ --with-system-expat \ @@ -75,23 +84,22 @@ build() { } check() { - # As of 2.7.11, 2 tests failed: - # test_doctest test_gdb - # Besides, test_thread disabled as it will stuck - - # $SHELL was set to avoid a test failure in test_gdb (it still fails due to other reasons, though) + # Since 2.7.13, + # test_replace_overflow (present in test_bytes, test_str, test_string, test_unicode, test_userstring) segfault on i686 + # test_bigrepeat (present in test_tuple) segfault on i686 cd Python-${pkgver} - SHELL=/bin/sh LD_LIBRARY_PATH="${srcdir}/Python-${pkgver}":${LD_LIBRARY_PATH} \ - "${srcdir}/Python-${pkgver}/python" -m test.regrtest -v -uall -x test_thread || warning "Tests failed" + LD_LIBRARY_PATH="${srcdir}/Python-${pkgver}":${LD_LIBRARY_PATH} \ + xvfb-run "${srcdir}/Python-${pkgver}/python" -m test.regrtest -v -uall -x test_bytes test_str test_string test_tuple test_unicode test_userstring } package() { cd Python-${pkgver} - make DESTDIR="${pkgdir}" altinstall maninstall - #LinHES - ln -sf python2 "${pkgdir}/usr/bin/python" + # Hack to avoid building again + sed -i 's/^all:.*$/all: build_all/' Makefile + + make DESTDIR="${pkgdir}" altinstall maninstall rm "${pkgdir}"/usr/share/man/man1/python.1 diff --git a/abs/core/python2/__changelog b/abs/core/python2/__changelog deleted file mode 100644 index d8cc127..0000000 --- a/abs/core/python2/__changelog +++ /dev/null @@ -1 +0,0 @@ -PKGBUILD: add symlink making python2->python diff --git a/abs/core/python2/descr_ref.patch b/abs/core/python2/descr_ref.patch new file mode 100644 index 0000000..b55cf58 --- /dev/null +++ b/abs/core/python2/descr_ref.patch @@ -0,0 +1,58 @@ +When calling tp_descr_get(self, obj, type), make sure that we own a reference to "self" + +diff -ru Python-2.7.9/Objects/typeobject.c Python-2.7.9-fixed//Objects/typeobject.c +--- Python-2.7.9/Objects/typeobject.c 2014-12-10 16:59:57.000000000 +0100 ++++ Python-2.7.9-fixed//Objects/typeobject.c 2015-11-27 20:39:58.276156800 +0100 +@@ -2542,6 +2542,7 @@ + PyTypeObject *metatype = Py_TYPE(type); + PyObject *meta_attribute, *attribute; + descrgetfunc meta_get; ++ PyObject* res; + + if (!PyString_Check(name)) { + PyErr_Format(PyExc_TypeError, +@@ -2563,6 +2564,7 @@ + meta_attribute = _PyType_Lookup(metatype, name); + + if (meta_attribute != NULL) { ++ Py_INCREF(meta_attribute); + meta_get = Py_TYPE(meta_attribute)->tp_descr_get; + + if (meta_get != NULL && PyDescr_IsData(meta_attribute)) { +@@ -2570,10 +2572,11 @@ + * writes. Assume the attribute is not overridden in + * type's tp_dict (and bases): call the descriptor now. + */ +- return meta_get(meta_attribute, (PyObject *)type, ++ res = meta_get(meta_attribute, (PyObject *)type, + (PyObject *)metatype); ++ Py_DECREF(meta_attribute); ++ return res; + } +- Py_INCREF(meta_attribute); + } + + /* No data descriptor found on metatype. Look in tp_dict of this +@@ -2581,6 +2584,7 @@ + attribute = _PyType_Lookup(type, name); + if (attribute != NULL) { + /* Implement descriptor functionality, if any */ ++ Py_INCREF(attribute); + descrgetfunc local_get = Py_TYPE(attribute)->tp_descr_get; + + Py_XDECREF(meta_attribute); +@@ -2588,11 +2592,12 @@ + if (local_get != NULL) { + /* NULL 2nd argument indicates the descriptor was + * found on the target object itself (or a base) */ +- return local_get(attribute, (PyObject *)NULL, ++ res = local_get(attribute, (PyObject *)NULL, + (PyObject *)type); ++ Py_DECREF(attribute); ++ return res; + } + +- Py_INCREF(attribute); + return attribute; + } + diff --git a/abs/core/python2/fix-profile-task.patch b/abs/core/python2/fix-profile-task.patch new file mode 100644 index 0000000..c6558ef --- /dev/null +++ b/abs/core/python2/fix-profile-task.patch @@ -0,0 +1,13 @@ +diff --git a/Python-2.7.13/Makefile.pre.in b/Python-2.7.13/Makefile.pre.in +index e288964..22edc27 100644 +--- a/Python-2.7.13/Makefile.pre.in ++++ b/Python-2.7.13/Makefile.pre.in +@@ -456,7 +456,7 @@ build_all_generate_profile: + + run_profile_task: + : # FIXME: can't run for a cross build +- $(LLVM_PROF_FILE) ./$(BUILDPYTHON) $(PROFILE_TASK) || true ++ $(LLVM_PROF_FILE) $(RUNSHARED) ./$(BUILDPYTHON) $(PROFILE_TASK) || true + + build_all_merge_profile: + $(LLVM_PROF_MERGER) -- cgit v0.12