Date: Wednesday, June 27, 2018 @ 13:26:31 Author: bpiotrowski Revision: 327692
archrelease: copy trunk to staging-x86_64 Added: python2/repos/staging-x86_64/ python2/repos/staging-x86_64/PKGBUILD (from rev 327691, python2/trunk/PKGBUILD) python2/repos/staging-x86_64/descr_ref.patch (from rev 327691, python2/trunk/descr_ref.patch) -----------------+ PKGBUILD | 128 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ descr_ref.patch | 58 ++++++++++++++++++++++++ 2 files changed, 186 insertions(+) Copied: python2/repos/staging-x86_64/PKGBUILD (from rev 327691, python2/trunk/PKGBUILD) =================================================================== --- staging-x86_64/PKGBUILD (rev 0) +++ staging-x86_64/PKGBUILD 2018-06-27 13:26:31 UTC (rev 327692) @@ -0,0 +1,128 @@ +# $Id$ +# Maintainer: Felix Yan <felixonm...@archlinux.org> +# Contributor: Stéphane Gaudreault <steph...@archlinux.org> +# Contributor: Allan McRae <al...@archlinux.org> +# Contributor: Jason Chu <ja...@archlinux.org> + +pkgname=python2 +pkgver=2.7.15 +pkgrel=2 +_pybasever=2.7 +pkgdesc="A high-level scripting language" +arch=('x86_64') +license=('PSF') +url="http://www.python.org/" +depends=('bzip2' 'expat' 'gdbm' 'libffi' 'libnsl' 'openssl' 'sqlite' 'zlib') +makedepends=('tk' 'bluez-libs') +checkdepends=('gdb' 'file' 'xorg-server-xvfb') +optdepends=('tk: for IDLE' + 'python2-setuptools' + 'python2-pip') +conflicts=('python<3') +source=("https://www.python.org/ftp/python/${pkgver%rc?}/Python-${pkgver}.tar.xz"{,.asc} + descr_ref.patch) +sha512sums=('27ea43eb45fc68f3d2469d5f07636e10801dee11635a430ec8ec922ed790bb426b072da94df885e4dfa1ea8b7a24f2f56dd92f9b0f51e162330f161216bd6de6' + 'SKIP' + '2e16eb23eb402dbe921c09bce99b400c10939114b4a1ded0e94a744d8cb66427947bc8d07c4fb054f9fe0906d10d1da509fc2273fd136225c0f019cc43dd045d') +validpgpkeys=('C01E1CAD5EA2C4F0B8E3571504C367C218ADD4FF') # Benjamin Peterson + +prepare() { + cd Python-${pkgver} + + # Temporary workaround for FS#22322 + # See http://bugs.python.org/issue10835 for upstream report + sed -i "/progname =/s/python/python${_pybasever}/" Python/pythonrun.c + + # Enable built-in SQLite module to load extensions (fix FS#22122) + sed -i "/SQLITE_OMIT_LOAD_EXTENSION/d" setup.py + + # FS#23997 + sed -i -e "s|^#.* /usr/local/bin/python|#!/usr/bin/python2|" Lib/cgi.py + + sed -i "s/python2.3/python2/g" Lib/distutils/tests/test_build_scripts.py \ + Lib/distutils/tests/test_install_scripts.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 + rm -r Modules/zlib + rm -r Modules/_ctypes/{darwin,libffi}* + + # clean up #!s + find . -name '*.py' | \ + xargs sed -i "s|#[ ]*![ ]*/usr/bin/env python$|#!/usr/bin/env python2|" + + # 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 +} + +build() { + cd "${srcdir}/Python-${pkgver}" + + export OPT="${CFLAGS}" + ./configure --prefix=/usr \ + --enable-shared \ + --with-threads \ + --enable-optimizations \ + --with-lto \ + --enable-ipv6 \ + --enable-unicode=ucs4 \ + --with-system-expat \ + --with-system-ffi \ + --with-dbmliborder=gdbm:ndbm \ + --without-ensurepip + + make +} + +check() { + # Since 2.7.14 with latest xvfb + # test_idle, test_tk, test_ttk_guionly: segfaults + # Since 2.7.15: test_ctypes + + cd Python-${pkgver} + LD_LIBRARY_PATH="${srcdir}/Python-${pkgver}":${LD_LIBRARY_PATH} \ + xvfb-run "${srcdir}/Python-${pkgver}/python" -m test.regrtest -v -uall -x test_idle test_tk test_ttk_guionly test_ctypes +} + +package() { + cd Python-${pkgver} + + # 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 + + ln -sf python${_pybasever} "${pkgdir}"/usr/bin/python2 + ln -sf python${_pybasever}-config "${pkgdir}"/usr/bin/python2-config + ln -sf python${_pybasever}.1 "${pkgdir}"/usr/share/man/man1/python2.1 + + # FS#33954 + ln -sf python-${_pybasever}.pc "${pkgdir}"/usr/lib/pkgconfig/python2.pc + + ln -sf ../../libpython${_pybasever}.so "${pkgdir}"/usr/lib/python${_pybasever}/config/libpython${_pybasever}.so + + mv "${pkgdir}"/usr/bin/smtpd.py "${pkgdir}"/usr/lib/python${_pybasever}/ + + # some useful "stuff" + install -dm755 "${pkgdir}"/usr/lib/python${_pybasever}/Tools/{i18n,scripts} + install -m755 Tools/i18n/{msgfmt,pygettext}.py "${pkgdir}"/usr/lib/python${_pybasever}/Tools/i18n/ + install -m755 Tools/scripts/{README,*py} "${pkgdir}"/usr/lib/python${_pybasever}/Tools/scripts/ + + # fix conflicts with python + mv "${pkgdir}"/usr/bin/idle{,2} + mv "${pkgdir}"/usr/bin/pydoc{,2} + mv "${pkgdir}"/usr/bin/2to3{,-2.7} + + # clean-up reference to build directory + sed -i "s#${srcdir}/Python-${pkgver}:##" "${pkgdir}"/usr/lib/python${_pybasever}/config/Makefile + + # license + install -Dm644 LICENSE "${pkgdir}"/usr/share/licenses/${pkgname}/LICENSE +} Copied: python2/repos/staging-x86_64/descr_ref.patch (from rev 327691, python2/trunk/descr_ref.patch) =================================================================== --- staging-x86_64/descr_ref.patch (rev 0) +++ staging-x86_64/descr_ref.patch 2018-06-27 13:26:31 UTC (rev 327692) @@ -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; + } +