From fb486c082b04946caae9f6912d2cbbd4604cebca Mon Sep 17 00:00:00 2001 From: Britney Fransen Date: Fri, 16 Feb 2018 17:18:06 +0000 Subject: python: initial inclusion of python 3 --- abs/core/python/PKGBUILD | 113 +++++++++++++++++++++ abs/core/python/__changelog | 1 + abs/core/python/dont-make-libpython-readonly.patch | 13 +++ 3 files changed, 127 insertions(+) create mode 100644 abs/core/python/PKGBUILD create mode 100644 abs/core/python/__changelog create mode 100644 abs/core/python/dont-make-libpython-readonly.patch diff --git a/abs/core/python/PKGBUILD b/abs/core/python/PKGBUILD new file mode 100644 index 0000000..914da6b --- /dev/null +++ b/abs/core/python/PKGBUILD @@ -0,0 +1,113 @@ +# $Id$ +# Maintainer: Angel Velasquez +# Maintainer: Felix Yan +# Contributor: Stéphane Gaudreault +# Contributor: Allan McRae +# Contributor: Jason Chu + +pkgname=python +pkgver=3.6.4 +pkgrel=2 +_pybasever=3.6 +pkgdesc="Next generation of the python high-level scripting language" +arch=('x86_64') +license=('custom') +url="http://www.python.org/" +depends=('expat' 'bzip2' 'gdbm' 'openssl' 'libffi' 'zlib') +makedepends=('tk' 'sqlite' 'valgrind' 'bluez-libs' 'mpdecimal' 'llvm' 'gdb' 'xorg-server-xvfb') +optdepends=('python-setuptools' + 'python-pip' + 'sqlite' + 'mpdecimal: for decimal' + 'xz: for lzma' + 'tk: for tkinter') +provides=('python3') +replaces=('python3') +source=("https://www.python.org/ftp/python/${pkgver%rc*}/Python-${pkgver}.tar.xz"{,.asc} + dont-make-libpython-readonly.patch) +sha512sums=('09ba2103ac517ac4d262f00380c9aac836a53401ce252540c17fd821a3b92e1ddf32528d00772221eb3126b12cb95b62c3ac3e852f4951e6f2eb406c88c848a2' + 'SKIP' + '2ef96708d5b13ae2a3d2cc62c87b4780e60ecfce914e190564492def3a11d5e56977659f41c7f9d12266e58050c766bce4e2b5d50b708eb792794fa8357920c4') +validpgpkeys=('0D96DF4D4110E5C43FBFB17F2D347EA6AA65421D') # Ned Deily (Python release signing key) + +prepare() { + cd Python-${pkgver} + + # FS#45809 + patch -p1 -i ../dont-make-libpython-readonly.patch + + # FS#23997 + sed -i -e "s|^#.* /usr/local/bin/python|#!/usr/bin/python|" Lib/cgi.py + + # Ensure that we are using the system copy of various libraries (expat, zlib, libffi, and libmpdec), + # rather than copies shipped in the tarball + rm -r Modules/expat + rm -r Modules/zlib + rm -r Modules/_ctypes/{darwin,libffi}* + rm -r Modules/_decimal/libmpdec +} + +build() { + cd Python-${pkgver} + + # Disable bundled pip & setuptools + ./configure --prefix=/usr \ + --enable-shared \ + --with-threads \ + --with-computed-gotos \ + --enable-optimizations \ + --with-lto \ + --enable-ipv6 \ + --with-system-expat \ + --with-dbmliborder=gdbm:ndbm \ + --with-system-ffi \ + --with-system-libmpdec \ + --enable-loadable-sqlite-extensions \ + --without-ensurepip + + # Obtain next free server number for xvfb-run; this even works in a chroot environment. + #export servernum=99 + #while ! xvfb-run -a -n "$servernum" /bin/true 2>/dev/null; do servernum=$((servernum+1)); done + + #LC_CTYPE=en_US.UTF-8 xvfb-run -a -n "$servernum" make EXTRA_CFLAGS="$CFLAGS" + LC_CTYPE=en_US.UTF-8 make EXTRA_CFLAGS="$CFLAGS" +} + +check() { + # test_gdb is expected to fail with LTO + # test_subprocess hangs on 3.6.3 + + cd Python-${pkgver} + + # Obtain next free server number for xvfb-run; this even works in a chroot environment. + export servernum=99 + while ! xvfb-run -a -n "$servernum" /bin/true 2>/dev/null; do servernum=$((servernum+1)); done + + LD_LIBRARY_PATH="${srcdir}/Python-${pkgver}":${LD_LIBRARY_PATH} \ + LC_CTYPE=en_US.UTF-8 xvfb-run -a -n "$servernum" \ + "${srcdir}/Python-${pkgver}/python" -m test.regrtest -v -uall -x test_gdb -x test_subprocess +} + +package() { + cd Python-${pkgver} + + # Hack to avoid building again + sed -i 's/^all:.*$/all: build_all/' Makefile + + make DESTDIR="${pkgdir}" EXTRA_CFLAGS="$CFLAGS" install + + # Why are these not done by default... + ln -s python3 "${pkgdir}"/usr/bin/python + ln -s python3-config "${pkgdir}"/usr/bin/python-config + ln -s idle3 "${pkgdir}"/usr/bin/idle + ln -s pydoc3 "${pkgdir}"/usr/bin/pydoc + ln -s python${_pybasever}.1 "${pkgdir}"/usr/share/man/man1/python.1 + + # some useful "stuff" FS#46146 + 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/ + + # License + install -Dm644 LICENSE "${pkgdir}/usr/share/licenses/${pkgname}/LICENSE" +} diff --git a/abs/core/python/__changelog b/abs/core/python/__changelog new file mode 100644 index 0000000..33c291f --- /dev/null +++ b/abs/core/python/__changelog @@ -0,0 +1 @@ +PKGBUILD: don't use xvfb-run to make diff --git a/abs/core/python/dont-make-libpython-readonly.patch b/abs/core/python/dont-make-libpython-readonly.patch new file mode 100644 index 0000000..92308bf --- /dev/null +++ b/abs/core/python/dont-make-libpython-readonly.patch @@ -0,0 +1,13 @@ +diff --git a/Makefile.pre.in b/Makefile.pre.in +index ce2c0aa..7d6dcf7 100644 +--- a/Makefile.pre.in ++++ b/Makefile.pre.in +@@ -60,7 +60,7 @@ INSTALL_DATA= @INSTALL_DATA@ + # Shared libraries must be installed with executable mode on some systems; + # rather than figuring out exactly which, we always give them executable mode. + # Also, making them read-only seems to be a good idea... +-INSTALL_SHARED= ${INSTALL} -m 555 ++INSTALL_SHARED= ${INSTALL} -m 755 + + MKDIR_P= @MKDIR_P@ + -- cgit v0.12