diff options
author | Eric Hameleers <alien@slackware.com> | 2019-01-14 20:01:33 +0000 |
---|---|---|
committer | Eric Hameleers <alien@slackware.com> | 2019-01-14 20:01:33 +0000 |
commit | 7d02117764d6cca3fcf0b5718bad0c97382a3d5a (patch) | |
tree | 283bbd601058b27216fa0a15bfbd68e4dd326c05 /python3 | |
parent | 893f93d23430e71395898d6bae864a650575a01e (diff) | |
download | asb-7d02117764d6cca3fcf0b5718bad0c97382a3d5a.tar.gz asb-7d02117764d6cca3fcf0b5718bad0c97382a3d5a.tar.xz |
Initial revision
Diffstat (limited to 'python3')
-rw-r--r-- | python3/build/patches/python3.readline.set_pre_input_hook.diff | 12 | ||||
-rw-r--r-- | python3/build/patches/python3.x86_64.diff | 164 | ||||
-rwxr-xr-x | python3/build/python3.SlackBuild | 161 | ||||
-rw-r--r-- | python3/build/slack-desc | 19 |
4 files changed, 356 insertions, 0 deletions
diff --git a/python3/build/patches/python3.readline.set_pre_input_hook.diff b/python3/build/patches/python3.readline.set_pre_input_hook.diff new file mode 100644 index 00000000..b55820c4 --- /dev/null +++ b/python3/build/patches/python3.readline.set_pre_input_hook.diff @@ -0,0 +1,12 @@ +--- ./Modules/readline.c.orig 2009-10-26 21:32:51.000000000 +0200 ++++ ./Modules/readline.c 2010-05-30 14:07:10.000000000 +0300 +@@ -12,6 +12,9 @@ + #include <errno.h> + #include <sys/time.h> + ++/* This seems to be needed for set_pre_input_hook to work */ ++#define HAVE_RL_PRE_INPUT_HOOK 1 ++ + #if defined(HAVE_SETLOCALE) + /* GNU readline() mistakenly sets the LC_CTYPE locale. + * This is evil. Only the user or the app's main() should do this! diff --git a/python3/build/patches/python3.x86_64.diff b/python3/build/patches/python3.x86_64.diff new file mode 100644 index 00000000..182fc629 --- /dev/null +++ b/python3/build/patches/python3.x86_64.diff @@ -0,0 +1,164 @@ +diff -uar Python-3.6.1.orig/Lib/distutils/command/install.py Python-3.6.1/Lib/distutils/command/install.py +--- Python-3.6.1.orig/Lib/distutils/command/install.py 2017-03-21 08:32:38.000000000 +0200 ++++ Python-3.6.1/Lib/distutils/command/install.py 2017-03-22 21:42:23.915962369 +0200 +@@ -29,15 +29,15 @@ + + INSTALL_SCHEMES = { + 'unix_prefix': { +- 'purelib': '$base/lib/python$py_version_short/site-packages', +- 'platlib': '$platbase/lib/python$py_version_short/site-packages', ++ 'purelib': '$base/lib64/python$py_version_short/site-packages', ++ 'platlib': '$platbase/lib64/python$py_version_short/site-packages', + 'headers': '$base/include/python$py_version_short$abiflags/$dist_name', + 'scripts': '$base/bin', + 'data' : '$base', + }, + 'unix_home': { +- 'purelib': '$base/lib/python', +- 'platlib': '$base/lib/python', ++ 'purelib': '$base/lib64/python', ++ 'platlib': '$base/lib64/python', + 'headers': '$base/include/python/$dist_name', + 'scripts': '$base/bin', + 'data' : '$base', +diff -uar Python-3.6.1.orig/Lib/distutils/sysconfig.py Python-3.6.1/Lib/distutils/sysconfig.py +--- Python-3.6.1.orig/Lib/distutils/sysconfig.py 2017-03-21 08:32:38.000000000 +0200 ++++ Python-3.6.1/Lib/distutils/sysconfig.py 2017-03-22 21:42:23.915962369 +0200 +@@ -133,7 +133,7 @@ + + if os.name == "posix": + libpython = os.path.join(prefix, +- "lib", "python" + get_python_version()) ++ "lib64", "python" + get_python_version()) + if standard_lib: + return libpython + else: +diff -uar Python-3.6.1.orig/Lib/site.py Python-3.6.1/Lib/site.py +--- Python-3.6.1.orig/Lib/site.py 2017-03-21 08:32:38.000000000 +0200 ++++ Python-3.6.1/Lib/site.py 2017-03-22 21:42:23.915962369 +0200 +@@ -304,7 +304,7 @@ + seen.add(prefix) + + if os.sep == '/': +- sitepackages.append(os.path.join(prefix, "lib", ++ sitepackages.append(os.path.join(prefix, "lib64", + "python%d.%d" % sys.version_info[:2], + "site-packages")) + else: +diff -uar Python-3.6.1.orig/Lib/sysconfig.py Python-3.6.1/Lib/sysconfig.py +--- Python-3.6.1.orig/Lib/sysconfig.py 2017-03-21 08:32:38.000000000 +0200 ++++ Python-3.6.1/Lib/sysconfig.py 2017-03-22 21:42:23.916962405 +0200 +@@ -20,10 +20,10 @@ + + _INSTALL_SCHEMES = { + 'posix_prefix': { +- 'stdlib': '{installed_base}/lib/python{py_version_short}', +- 'platstdlib': '{platbase}/lib/python{py_version_short}', +- 'purelib': '{base}/lib/python{py_version_short}/site-packages', +- 'platlib': '{platbase}/lib/python{py_version_short}/site-packages', ++ 'stdlib': '{installed_base}/lib64/python{py_version_short}', ++ 'platstdlib': '{platbase}/lib64/python{py_version_short}', ++ 'purelib': '{base}/lib64/python{py_version_short}/site-packages', ++ 'platlib': '{platbase}/lib64/python{py_version_short}/site-packages', + 'include': + '{installed_base}/include/python{py_version_short}{abiflags}', + 'platinclude': +@@ -32,10 +32,10 @@ + 'data': '{base}', + }, + 'posix_home': { +- 'stdlib': '{installed_base}/lib/python', +- 'platstdlib': '{base}/lib/python', +- 'purelib': '{base}/lib/python', +- 'platlib': '{base}/lib/python', ++ 'stdlib': '{installed_base}/lib64/python', ++ 'platstdlib': '{base}/lib64/python', ++ 'purelib': '{base}/lib64/python', ++ 'platlib': '{base}/lib64/python', + 'include': '{installed_base}/include/python', + 'platinclude': '{installed_base}/include/python', + 'scripts': '{base}/bin', +@@ -61,10 +61,10 @@ + 'data': '{userbase}', + }, + 'posix_user': { +- 'stdlib': '{userbase}/lib/python{py_version_short}', +- 'platstdlib': '{userbase}/lib/python{py_version_short}', +- 'purelib': '{userbase}/lib/python{py_version_short}/site-packages', +- 'platlib': '{userbase}/lib/python{py_version_short}/site-packages', ++ 'stdlib': '{userbase}/lib64/python{py_version_short}', ++ 'platstdlib': '{userbase}/lib64/python{py_version_short}', ++ 'purelib': '{userbase}/lib64/python{py_version_short}/site-packages', ++ 'platlib': '{userbase}/lib64/python{py_version_short}/site-packages', + 'include': '{userbase}/include/python{py_version_short}', + 'scripts': '{userbase}/bin', + 'data': '{userbase}', +diff -uar Python-3.6.1.orig/Makefile.pre.in Python-3.6.1/Makefile.pre.in +--- Python-3.6.1.orig/Makefile.pre.in 2017-03-21 08:32:38.000000000 +0200 ++++ Python-3.6.1/Makefile.pre.in 2017-03-22 21:42:23.916962405 +0200 +@@ -131,7 +131,7 @@ + MANDIR= @mandir@ + INCLUDEDIR= @includedir@ + CONFINCLUDEDIR= $(exec_prefix)/include +-SCRIPTDIR= $(prefix)/lib ++SCRIPTDIR= $(prefix)/lib64 + ABIFLAGS= @ABIFLAGS@ + + # Detailed destination directories +diff -uar Python-3.6.1.orig/Modules/getpath.c Python-3.6.1/Modules/getpath.c +--- Python-3.6.1.orig/Modules/getpath.c 2017-03-21 08:32:38.000000000 +0200 ++++ Python-3.6.1/Modules/getpath.c 2017-03-22 21:42:23.917962441 +0200 +@@ -494,7 +494,7 @@ + _pythonpath = Py_DecodeLocale(PYTHONPATH, NULL); + _prefix = Py_DecodeLocale(PREFIX, NULL); + _exec_prefix = Py_DecodeLocale(EXEC_PREFIX, NULL); +- lib_python = Py_DecodeLocale("lib/python" VERSION, NULL); ++ lib_python = Py_DecodeLocale("lib64/python" VERSION, NULL); + + if (!_pythonpath || !_prefix || !_exec_prefix || !lib_python) { + Py_FatalError( +@@ -683,7 +683,7 @@ + } + else + wcsncpy(zip_path, _prefix, MAXPATHLEN); +- joinpath(zip_path, L"lib/python00.zip"); ++ joinpath(zip_path, L"lib64/python00.zip"); + bufsz = wcslen(zip_path); /* Replace "00" with version */ + zip_path[bufsz - 6] = VERSION[0]; + zip_path[bufsz - 5] = VERSION[2]; +@@ -695,7 +695,7 @@ + fprintf(stderr, + "Could not find platform dependent libraries <exec_prefix>\n"); + wcsncpy(exec_prefix, _exec_prefix, MAXPATHLEN); +- joinpath(exec_prefix, L"lib/lib-dynload"); ++ joinpath(exec_prefix, L"lib64/lib-dynload"); + } + /* If we found EXEC_PREFIX do *not* reduce it! (Yet.) */ + +diff -uar Python-3.6.1.orig/configure Python-3.6.1/configure +--- Python-3.6.1.orig/configure 2017-03-21 08:32:38.000000000 +0200 ++++ Python-3.6.1/configure 2017-03-22 21:42:23.920962550 +0200 +@@ -14963,9 +14963,9 @@ + + + if test x$PLATFORM_TRIPLET = x; then +- LIBPL='$(prefix)'"/lib/python${VERSION}/config-${LDVERSION}" ++ LIBPL='$(prefix)'"/lib64/python${VERSION}/config-${LDVERSION}" + else +- LIBPL='$(prefix)'"/lib/python${VERSION}/config-${LDVERSION}-${PLATFORM_TRIPLET}" ++ LIBPL='$(prefix)'"/lib64/python${VERSION}/config-${LDVERSION}-${PLATFORM_TRIPLET}" + fi + + +diff -uar Python-3.6.1.orig/setup.py Python-3.6.1/setup.py +--- Python-3.6.1.orig/setup.py 2017-03-21 08:32:38.000000000 +0200 ++++ Python-3.6.1/setup.py 2017-03-22 21:47:59.638077062 +0200 +@@ -491,7 +491,7 @@ + # directories (i.e. '.' and 'Include') must be first. See issue + # 10520. + if not cross_compiling: +- add_dir_to_list(self.compiler.library_dirs, '/usr/local/lib') ++ add_dir_to_list(self.compiler.library_dirs, '/usr/local/lib64') + add_dir_to_list(self.compiler.include_dirs, '/usr/local/include') + # only change this for cross builds for 3.3, issues on Mageia + if cross_compiling: diff --git a/python3/build/python3.SlackBuild b/python3/build/python3.SlackBuild new file mode 100755 index 00000000..c703bebd --- /dev/null +++ b/python3/build/python3.SlackBuild @@ -0,0 +1,161 @@ +#!/bin/bash + +# Slackware build script for python3 + +# Copyright 2012-2017 Audrius Kažukauskas <audrius@neutrino.lt> +# Copyright 2017, 2018, 2019 Patrick J. Volkerding, Sebeka, MN, USA +# All rights reserved. +# +# Redistribution and use of this script, with or without modification, is +# permitted provided that the following conditions are met: +# +# 1. Redistributions of this script must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# +# THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR IMPLIED +# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO +# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; +# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR +# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF +# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +# Lightly adapted 2019 by Eric Hameleers <alien@slackware.com> + +cd $(dirname $0) ; CWD=$(pwd) + +PKGNAM=python3 +SRCNAM=Python +VERSION=${VERSION:-3.6.8} +BRANCH_VERSION=$(echo $VERSION | cut -f 1,2 -d . ) +BUILD=${BUILD:-1} +TAG=${TAG:-alien} + +NUMJOBS=${NUMJOBS:-" -j$(expr $(nproc) + 1) "} + +# Automatically determine the architecture we're building on: +if [ -z "$ARCH" ]; then + case "$( uname -m )" in + i?86) export ARCH=i586 ;; + arm*) export ARCH=arm ;; + # Unless $ARCH is already set, use uname -m for all other archs: + *) export ARCH=$( uname -m ) ;; + esac +fi + +TMP=${TMP:-/tmp} +PKG=$TMP/package-$PKGNAM +rm -rf $PKG +mkdir -p $TMP $PKG + +# Don't set any SLKCFLAGS here, or OPT="$SLKCFLAGS" before the ./configure. +# Python gets the compile options right without any help. +if [ "$ARCH" = "i586" ]; then + LIBDIRSUFFIX="" +elif [ "$ARCH" = "s390" ]; then + LIBDIRSUFFIX="" +elif [ "$ARCH" = "x86_64" ]; then + LIBDIRSUFFIX="64" +elif [ "$ARCH" = "arm" ]; then + LIBDIRSUFFIX="" +elif [ "$ARCH" = "armel" ]; then + LIBDIRSUFFIX="" +fi + +# Location for Python site-packages: +SITEPK=$PKG/usr/lib${LIBDIRSUFFIX}/python${BRANCH_VERSION}/site-packages +# same as above without $PKG +TOOLSDIR=/usr/lib${LIBDIRSUFFIX}/python${BRANCH_VERSION}/site-packages + +cd $TMP +rm -rf $SRCNAM-$VERSION +tar xf $CWD/$SRCNAM-$VERSION.tar.xz || exit 1 +cd $SRCNAM-$VERSION || exit 1 + +cat $CWD/patches/python3.readline.set_pre_input_hook.diff |patch -p1 --verbose || exit 1 +# We don't want a large libpython*.a. +cat $CWD/patches/python3.no-static-library.diff |patch -p1 --verbose || exit 1 + +if [ "$ARCH" = "x86_64" ]; then + # Install to lib64 instead of lib. + cat $CWD/patches//python3.x86_64.diff |patch -p1 --verbose || exit 1 +fi + +# Fix python3 path in cgi.py. +sed -i '1s|^#.*/usr/local/bin/python|#!/usr/bin/python3|' Lib/cgi.py + +# If system we're building on already has Python3 with pip in site-packages, +# ignore it and install pip anyway. +sed -i 's|\("install",\)|\1 "--ignore-installed",|' Lib/ensurepip/__init__.py + +chown -R root:root . +find -L . \ + \( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 \ + -o -perm 511 \) -exec chmod 755 {} \; -o \ + \( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \ + -o -perm 440 -o -perm 400 \) -exec chmod 644 {} \; + +./configure \ + --prefix=/usr \ + --libdir=/usr/lib${LIBDIRSUFFIX} \ + --mandir=/usr/man \ + --docdir=/usr/doc/$PKGNAM-$VERSION \ + --with-threads \ + --enable-ipv6 \ + --enable-shared \ + --with-system-expat \ + --with-system-ffi \ + --enable-loadable-sqlite-extensions \ + --without-ensurepip \ + --build=$ARCH-slackware-linux || exit 1 + +make $NUMJOBS || make || exit 1 +make install DESTDIR=$PKG || exit 1 + +# Remove to avoid overwriting a copy from Python2. +rm -f $PKG/usr/bin/2to3 + +# We'll install the python-tools under site-packages. +mkdir -p $SITEPK +cp -a Tools/* $SITEPK + +# Remove DOS batch/exe files. +find $PKG \( -name '*.exe' -o -name '*.bat' \) -exec rm -f '{}' \; + +# Fix permissions on dynamic libraries. +find $PKG -type f -perm 555 -exec chmod 755 '{}' \; + +# Install docs. +mkdir -p $PKG/usr/doc/$PKGNAM-$VERSION +cp -a README.rst LICENSE Misc $PKG/usr/doc/$PKGNAM-$VERSION +# Delete stuff that we don't need to package: +rm -f $PKG/usr/doc/$PKGNAM-$VERSION/Misc/{HISTORY,*.in,*.wpr,python.man,svnmap.txt} +mv $SITEPK/README $PKG/usr/doc/$PKGNAM-$VERSION/README.python-tools +( cd $PKG/usr/doc/$PKGNAM-$VERSION ; ln -sf $TOOLSDIR Tools ) +if [ -e "$CWD/python-$VERSION-docs-html.tar.bz2" ]; then + tar xf $CWD/python-$VERSION-docs-html.tar.bz2 + mv python-$VERSION-docs-html $PKG/usr/doc/$PKGNAM-$VERSION/html + chown -R root:root $PKG/usr/doc/$PKGNAM-$VERSION/html +fi + +# Fix possible incorrect permissions. +( cd $PKG + find . -type d -exec chmod 755 "{}" \; + find . -perm 640 -exec chmod 644 "{}" \; + find . -perm 750 -exec chmod 755 "{}" \; +) + +find $PKG -print0 | xargs -0 file | grep -e "executable" -e "shared object" | grep ELF \ + | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null || true + +find $PKG/usr/man -type f -exec gzip -9 {} \; +for i in $( find $PKG/usr/man -type l ) ; do ln -s $( readlink $i ).gz $i.gz ; rm $i ; done + +mkdir -p $PKG/install +cat $CWD/slack-desc > $PKG/install/slack-desc + +cd $PKG +/sbin/makepkg -l y -c n $TMP/python3-$VERSION-$ARCH-$BUILD$TAG.txz diff --git a/python3/build/slack-desc b/python3/build/slack-desc new file mode 100644 index 00000000..ca18863a --- /dev/null +++ b/python3/build/slack-desc @@ -0,0 +1,19 @@ +# HOW TO EDIT THIS FILE: +# The "handy ruler" below makes it easier to edit a package description. +# Line up the first '|' above the ':' following the base package name, and +# the '|' on the right side marks the last column you can put a character in. +# You must make exactly 11 lines for the formatting to be correct. It's also +# customary to leave one space after the ':' except on otherwise blank lines. + + |-----handy-ruler------------------------------------------------------| +python3: python3 (object-oriented interpreted programming language v3) +python3: +python3: Python is an interpreted, interactive, object-oriented programming +python3: language that combines remarkable power with very clear syntax. +python3: This is a new version of the language that is incompatible with the +python3: 2.x line of releases. The language is mostly the same, but many +python3: details, especially how built-in objects like dictionaries and strings +python3: work, have changed considerably, and a lot of deprecated features have +python3: finally been removed. Also, the standard library has been reorganized +python3: in a few prominent places. +python3: |