python3: Added.

Cinnamon is now moving towards python3.

Signed-off-by: Willy Sudiarto Raharjo <willysr@slackware-id.org>
This commit is contained in:
Willy Sudiarto Raharjo 2016-05-25 08:26:25 +07:00
parent 8fd8685c06
commit a2ba22c64c
No known key found for this signature in database
GPG key ID: 887B8374D7333381
9 changed files with 454 additions and 4 deletions

View file

@ -1,3 +1,4 @@
python3
ptyprocess ptyprocess
gnome-common gnome-common
mozjs mozjs

6
NOTES
View file

@ -13,11 +13,9 @@ NOTES
required by some packages. There *might* be some issues caused required by some packages. There *might* be some issues caused
by usage of older glib version. Let me know if i miss anything. by usage of older glib version. Let me know if i miss anything.
5. This scripts are tested on VM environment only!! 5. Some code in cinnamon packages are hardcoded to /usr/lib, so even
6. Some code in cinnamon packages are hardcoded to /usr/lib, so even
in x86_64, they will be installed in /usr/lib to avoid breakage. in x86_64, they will be installed in /usr/lib to avoid breakage.
7. I removed webkit-related screensaver in cinnamon-screensaver to avoid 6. I removed webkit-related screensaver in cinnamon-screensaver to avoid
building webkitgtk which is very time consuming. It still has the building webkitgtk which is very time consuming. It still has the
default screensaver that is able to lock your desktop (only requires PAM). default screensaver that is able to lock your desktop (only requires PAM).

View file

@ -39,6 +39,7 @@ CSBROOT=$(pwd)
# Loop for all packages # Loop for all packages
for dir in \ for dir in \
python3 \
ptyprocess \ ptyprocess \
gnome-common \ gnome-common \
mozjs \ mozjs \

19
python3/README Normal file
View file

@ -0,0 +1,19 @@
Python is an interpreted, interactive, object-oriented programming
language that combines remarkable power with very clear syntax.
Python's basic power can be extended with your own modules written in C
or C++. Python is also adaptable as an extension language for existing
applications.
Python 3 (a.k.a. "Python 3000" or "Py3k") is a new version of the
language that is incompatible with the 2.x line of releases. The
language is mostly the same, but many details, especially how built-in
objects like dictionaries and strings work, have changed considerably,
and a lot of deprecated features have finally been removed. Also, the
standard library has been reorganized in a few prominent places.
It is safe to install this on a system which already has 2.x version of
Python.
If you'd like to have HTML docs installed, get them from
<https://docs.python.org/3/download.html> (HTML format, .tar.bz2
archive).

View file

@ -0,0 +1,59 @@
diff -uar Python-3.5.1.orig/Makefile.pre.in Python-3.5.1/Makefile.pre.in
--- Python-3.5.1.orig/Makefile.pre.in 2015-12-07 03:39:09.000000000 +0200
+++ Python-3.5.1/Makefile.pre.in 2015-12-14 21:25:22.103542432 +0200
@@ -564,7 +564,7 @@
$(RUNSHARED) $(PYTHON_FOR_BUILD) ./Tools/clinic/clinic.py --make
# Build the interpreter
-$(BUILDPYTHON): Programs/python.o $(LIBRARY) $(LDLIBRARY) $(PY3LIBRARY)
+$(BUILDPYTHON): Programs/python.o $(LDLIBRARY) $(PY3LIBRARY)
$(LINKCC) $(PY_LDFLAGS) $(LINKFORSHARED) -o $@ Programs/python.o $(BLDLIBRARY) $(LIBS) $(MODLIBS) $(SYSLIBS) $(LDLAST)
platform: $(BUILDPYTHON) pybuilddir.txt
@@ -599,18 +599,6 @@
_TCLTK_INCLUDES='$(TCLTK_INCLUDES)' _TCLTK_LIBS='$(TCLTK_LIBS)' \
$(PYTHON_FOR_BUILD) $(srcdir)/setup.py $$quiet build
-# Build static library
-# avoid long command lines, same as LIBRARY_OBJS
-$(LIBRARY): $(LIBRARY_OBJS)
- -rm -f $@
- $(AR) $(ARFLAGS) $@ Modules/getbuildinfo.o
- $(AR) $(ARFLAGS) $@ $(PARSER_OBJS)
- $(AR) $(ARFLAGS) $@ $(OBJECT_OBJS)
- $(AR) $(ARFLAGS) $@ $(PYTHON_OBJS) Python/frozen.o
- $(AR) $(ARFLAGS) $@ $(MODULE_OBJS) $(SIGNAL_OBJS)
- $(AR) $(ARFLAGS) $@ $(MODOBJS)
- $(RANLIB) $@
-
libpython$(LDVERSION).so: $(LIBRARY_OBJS)
if test $(INSTSONAME) != $(LDLIBRARY); then \
$(BLDSHARED) -Wl,-h$(INSTSONAME) -o $(INSTSONAME) $(LIBRARY_OBJS) $(MODLIBS) $(SHLIBS) $(LIBC) $(LIBM) $(LDLAST); \
@@ -700,7 +688,7 @@
echo "-----------------------------------------------"; \
fi
-Programs/_testembed: Programs/_testembed.o $(LIBRARY) $(LDLIBRARY) $(PY3LIBRARY)
+Programs/_testembed: Programs/_testembed.o $(LDLIBRARY) $(PY3LIBRARY)
$(LINKCC) $(PY_LDFLAGS) $(LINKFORSHARED) -o $@ Programs/_testembed.o $(BLDLIBRARY) $(LIBS) $(MODLIBS) $(SYSLIBS) $(LDLAST)
############################################################################
@@ -1372,18 +1360,6 @@
else true; \
fi; \
done
- @if test -d $(LIBRARY); then :; else \
- if test "$(PYTHONFRAMEWORKDIR)" = no-framework; then \
- if test "$(SHLIB_SUFFIX)" = .dll; then \
- $(INSTALL_DATA) $(LDLIBRARY) $(DESTDIR)$(LIBPL) ; \
- else \
- $(INSTALL_DATA) $(LIBRARY) $(DESTDIR)$(LIBPL)/$(LIBRARY) ; \
- $(RANLIB) $(DESTDIR)$(LIBPL)/$(LIBRARY) ; \
- fi; \
- else \
- echo Skip install of $(LIBRARY) - use make frameworkinstall; \
- fi; \
- fi
$(INSTALL_DATA) Modules/config.c $(DESTDIR)$(LIBPL)/config.c
$(INSTALL_DATA) Programs/python.o $(DESTDIR)$(LIBPL)/python.o
$(INSTALL_DATA) $(srcdir)/Modules/config.c.in $(DESTDIR)$(LIBPL)/config.c.in

View file

@ -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!

View file

@ -0,0 +1,197 @@
diff -uar Python-3.5.1.orig/Lib/distutils/command/install.py Python-3.5.1/Lib/distutils/command/install.py
--- Python-3.5.1.orig/Lib/distutils/command/install.py 2015-12-07 03:39:07.000000000 +0200
+++ Python-3.5.1/Lib/distutils/command/install.py 2015-12-14 21:27:46.083400395 +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.5.1.orig/Lib/distutils/sysconfig.py Python-3.5.1/Lib/distutils/sysconfig.py
--- Python-3.5.1.orig/Lib/distutils/sysconfig.py 2015-12-07 03:39:07.000000000 +0200
+++ Python-3.5.1/Lib/distutils/sysconfig.py 2015-12-14 21:27:46.083400395 +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.5.1.orig/Lib/site.py Python-3.5.1/Lib/site.py
--- Python-3.5.1.orig/Lib/site.py 2015-12-07 03:39:08.000000000 +0200
+++ Python-3.5.1/Lib/site.py 2015-12-14 21:27:46.083400395 +0200
@@ -303,7 +303,7 @@
seen.add(prefix)
if os.sep == '/':
- sitepackages.append(os.path.join(prefix, "lib",
+ sitepackages.append(os.path.join(prefix, "lib64",
"python" + sys.version[:3],
"site-packages"))
else:
diff -uar Python-3.5.1.orig/Lib/sysconfig.py Python-3.5.1/Lib/sysconfig.py
--- Python-3.5.1.orig/Lib/sysconfig.py 2015-12-07 03:39:08.000000000 +0200
+++ Python-3.5.1/Lib/sysconfig.py 2015-12-14 21:27:46.084400429 +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.5.1.orig/Makefile.pre.in Python-3.5.1/Makefile.pre.in
--- Python-3.5.1.orig/Makefile.pre.in 2015-12-07 03:39:09.000000000 +0200
+++ Python-3.5.1/Makefile.pre.in 2015-12-14 21:27:46.084400429 +0200
@@ -125,7 +125,7 @@
MANDIR= @mandir@
INCLUDEDIR= @includedir@
CONFINCLUDEDIR= $(exec_prefix)/include
-SCRIPTDIR= $(prefix)/lib
+SCRIPTDIR= $(prefix)/lib64
ABIFLAGS= @ABIFLAGS@
# Detailed destination directories
diff -uar Python-3.5.1.orig/Modules/getpath.c Python-3.5.1/Modules/getpath.c
--- Python-3.5.1.orig/Modules/getpath.c 2015-12-07 03:39:10.000000000 +0200
+++ Python-3.5.1/Modules/getpath.c 2015-12-14 21:27:46.085400463 +0200
@@ -118,8 +118,8 @@
#endif
#ifndef PYTHONPATH
-#define PYTHONPATH PREFIX "/lib/python" VERSION ":" \
- EXEC_PREFIX "/lib/python" VERSION "/lib-dynload"
+#define PYTHONPATH PREFIX "/lib64/python" VERSION ":" \
+ EXEC_PREFIX "/lib64/python" VERSION "/lib-dynload"
#endif
#ifndef LANDMARK
@@ -511,7 +511,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(
@@ -700,7 +700,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];
@@ -712,7 +712,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.5.1.orig/configure Python-3.5.1/configure
--- Python-3.5.1.orig/configure 2015-12-07 03:39:11.000000000 +0200
+++ Python-3.5.1/configure 2015-12-14 21:27:46.089400598 +0200
@@ -14464,7 +14464,7 @@
$as_echo "$LDVERSION" >&6; }
-LIBPL='$(prefix)'"/lib/python${VERSION}/config-${LDVERSION}"
+LIBPL='$(prefix)'"/lib64/python${VERSION}/config-${LDVERSION}"
# Check whether right shifting a negative integer extends the sign bit
diff -uar Python-3.5.1.orig/setup.py Python-3.5.1/setup.py
--- Python-3.5.1.orig/setup.py 2015-12-07 03:39:11.000000000 +0200
+++ Python-3.5.1/setup.py 2015-12-14 21:27:46.090400632 +0200
@@ -469,7 +469,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:
@@ -750,11 +750,11 @@
elif curses_library:
readline_libs.append(curses_library)
elif self.compiler.find_library_file(lib_dirs +
- ['/usr/lib/termcap'],
+ ['/usr/lib64/termcap'],
'termcap'):
readline_libs.append('termcap')
exts.append( Extension('readline', ['readline.c'],
- library_dirs=['/usr/lib/termcap'],
+ library_dirs=['/usr/lib64/termcap'],
extra_link_args=readline_extra_link_args,
libraries=readline_libs) )
else:
@@ -791,8 +791,8 @@
if krb5_h:
ssl_incs += krb5_h
ssl_libs = find_library_file(self.compiler, 'ssl',lib_dirs,
- ['/usr/local/ssl/lib',
- '/usr/contrib/ssl/lib/'
+ ['/usr/local/ssl/lib64',
+ '/usr/contrib/ssl/lib64/'
] )
if (ssl_incs is not None and

151
python3/python3.SlackBuild Normal file
View file

@ -0,0 +1,151 @@
#!/bin/sh
# Slackware build script for python3
# Copyright 2012-2015 Audrius Kažukauskas <audrius@neutrino.lt>
# 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.
# Modified by Willy Sudiarto Raharjo for CSB Project
PRGNAM=python3
VERSION=${VERSION:-3.5.1}
BUILD=${BUILD:-1}
TAG=${TAG:-_csb}
if [ -z "$ARCH" ]; then
case "$( uname -m )" in
i?86) ARCH=i486 ;;
arm*) ARCH=arm ;;
*) ARCH=$( uname -m ) ;;
esac
fi
wget -c https://www.python.org/ftp/python/$VERSION/Python-$VERSION.tar.xz
CWD=$(pwd)
TMP=${TMP:-/tmp/csb}
PKG=$TMP/package-$PRGNAM
OUTPUT=${OUTPUT:-/tmp}
# Don't set any SLKCFLAGS here, or OPT="$SLKCFLAGS" before the ./configure.
# Python gets the compile options right without any help.
if [ "$ARCH" = "i486" ]; then
LIBDIRSUFFIX=""
elif [ "$ARCH" = "i686" ]; then
LIBDIRSUFFIX=""
elif [ "$ARCH" = "x86_64" ]; then
LIBDIRSUFFIX="64"
else
LIBDIRSUFFIX=""
fi
PYVER=$(cut -d. -f1,2 <<< "$VERSION")
set -eu
# Location for Python site-packages.
SITEPK=$PKG/usr/lib${LIBDIRSUFFIX}/python${PYVER}/site-packages
# Same as above without $PKG.
TOOLSDIR=/usr/lib${LIBDIRSUFFIX}/python${PYVER}/site-packages
rm -rf $PKG
mkdir -p $TMP $PKG $OUTPUT
cd $TMP
rm -rf Python-$VERSION
tar xvf $CWD/Python-$VERSION.tar.xz
cd Python-$VERSION
patch -p1 -i $CWD/patches/python3.readline.set_pre_input_hook.diff
# We don't want a large libpython*.a.
patch -p1 -i $CWD/patches/python3.no-static-library.diff
if [ "$ARCH" = "x86_64" ]; then
# Install to lib64 instead of lib.
patch -p1 -i $CWD/patches/python3.x86_64.diff
fi
# Fix python3 path in cgi.py.
sed -i '1s|^#.*/usr/local/bin/python|#!/usr/bin/python3|' Lib/cgi.py
# If this system 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/$PRGNAM-$VERSION \
--with-threads \
--enable-ipv6 \
--enable-shared \
--with-system-expat \
--with-system-ffi \
--build=$ARCH-slackware-linux
make
make install DESTDIR=$PKG
# Restore original ensurepip behaviour.
sed -i 's|\("install",\) "--ignore-installed",|\1|' \
$PKG/usr/lib${LIBDIRSUFFIX}/python${PYVER}/ensurepip/__init__.py
# 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/$PRGNAM-$VERSION
cp -a README LICENSE Misc $PKG/usr/doc/$PRGNAM-$VERSION
mv $SITEPK/README $PKG/usr/doc/$PRGNAM-$VERSION/README.python-tools
( cd $PKG/usr/doc/$PRGNAM-$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/$PRGNAM-$VERSION/html
chown -R root:root $PKG/usr/doc/$PRGNAM-$VERSION/html
fi
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 $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.${PKGTYPE:-txz}

12
python3/slack-desc Normal file
View file

@ -0,0 +1,12 @@
|-----handy-ruler------------------------------------------------------|
python3: python3 (object-oriented interpreted programming language)
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: