python27: new package, python 2.7.9

This commit is contained in:
Tom G. Christensen 2015-04-20 12:47:39 +02:00
parent e6f4e99019
commit 93e4b9b208
7 changed files with 558 additions and 0 deletions

98
python27/build.sh Executable file
View File

@ -0,0 +1,98 @@
#!/bin/bash
# This is a buildpkg build.sh script
# build.sh helper functions
. ${BUILDPKG_SCRIPTS}/build.sh.functions
#
###########################################################
# Check the following 4 variables before running the script
topdir=python
version=2.7.9
pkgver=1
source[0]=https://www.python.org/ftp/python/2.7.9/Python-$version.tar.xz
# If there are no patches, simply comment this
patch[0]=python-2.7.9-mmap-fcntl_h.patch
patch[1]=python-2.7.9-tgcware.patch
patch[2]=python-2.7.9-multiprocessing-without-urandom.patch
# Source function library
. ${BUILDPKG_SCRIPTS}/buildpkg.functions
# Global settings
export CPPFLAGS="-I$prefix/include"
export LDFLAGS="-L$prefix/lib -R$prefix/lib"
configure_args+=(--disable-ipv6 --with-system-expat --enable-shared)
make_check_target=test
# Reduce e.g. 2.7.9 to 2.7
pydotver=${version%.*}
dynload_dir=$_libdir/python${pydotver}/lib-dynload
site_packages=$_libdir/python${pydotver}/site-packages
pylibdir=$_libdir/python${pydotver}
topsrcdir=Python-${version}
reg prep
prep()
{
generic_prep
setdir source
echo "crypt cryptmodule.c" >> Modules/Setup.local
rm -f Tools/pynche/*.pyw
${__gsed} -i '/INSTALL_SHARED/ s/555/755/' Makefile*
}
reg build
build()
{
generic_build
}
reg check
check()
{
generic_check
}
reg install
install()
{
generic_install DESTDIR
setdir source
# This borrows heavily from CentOS rpm packages
echo '#!/bin/sh' > ${stagedir}${prefix}/$_bindir/pynche${pydotver}
echo 'exec `python -c "from distutils.sysconfig import get_python_lib; print(get_python_lib(plat_specific = True))"`/pynche/pynche' >> ${stagedir}${prefix}/$_bindir/pynche${pydotver}
cp -pr Tools/pynche ${stagedir}${prefix}/$site_packages
${__install} -p -m755 Tools/i18n/pygettext.py ${stagedir}${prefix}/$_bindir/pygettext${pydotver}.py
${__install} -p -m755 Tools/i18n/msgfmt.py ${stagedir}${prefix}/$_bindir/msgfmt${pydotver}.py
${__install} -p -m755 -d ${stagedir}${prefix}/$pylibdir/Tools/scripts
${__install} -p -m755 Tools/README ${stagedir}${prefix}/$pylibdir/Tools
${__install} -p -m755 Tools/scripts/*py ${stagedir}${prefix}/$pylibdir/Tools/scripts
${__mv} ${stagedir}${prefix}/${_bindir}/2to3 ${stagedir}${prefix}/${_bindir}/2to3-${pydotver}
${__mv} ${stagedir}${prefix}/${_bindir}/idle ${stagedir}${prefix}/${_bindir}/idle${pydotver}
${__mv} ${stagedir}${prefix}/${_bindir}/pydoc ${stagedir}${prefix}/${_bindir}/pydoc${pydotver}
${__mv} ${stagedir}${prefix}/${_bindir}/smtpd.py ${stagedir}${prefix}/${_bindir}/smtpd${pydotver}.py
${__rm} -f ${stagedir}${prefix}/${_bindir}/python{,-config}
${__rm} -f ${stagedir}${prefix}/${_bindir}/python2{,-config}
${__rm} -f ${stagedir}${prefix}/${pylibdir}/LICENSE.txt
${__rm} -f ${stagedir}${prefix}/${_mandir}/man1/python{,2}.1
${__rm} -f ${stagedir}${prefix}/${_libdir}/pkgconfig/python{,2}.pc
docs_for python27 LICENSE README
docs_for python27-libs LICENSE README
}
reg pack
pack()
{
generic_pack
}
reg distclean
distclean()
{
clean distclean
}
###################################################
# No need to look below here
###################################################
build_sh $*

4
python27/meta/ChangeLog Normal file
View File

@ -0,0 +1,4 @@
CHANGELOG
---------
* Sat Mar 21 2015 Tom G. Christensen <swpkg@jupiterrise.com> - 2.7.9-1
- Initial package

5
python27/meta/depend Normal file
View File

@ -0,0 +1,5 @@
TGCpy27 python27-libs auto
TGCpy27to python27 auto
TGCpy27te python27 auto
TGCpy27tk python27 auto
TGCpy27d python27 auto

389
python27/meta/pkgdef Normal file
View File

@ -0,0 +1,389 @@
[python27]
pkgname="${pkgprefix}py27"
name="python27 - Programming language"
pkgcat="application"
pkgvendor="http://python.org"
pkgdesc="An interpreted, interactive, object-oriented programming language"
pkgver="$pkgver"
files(-,root,bin)
default_docs
$_bindir/pydoc${pydotver}
$_bindir/python${pydotver}
$_mandir/man1/python${pydotver}.1
[python27-libs]
pkgname="${pkgprefix}py27l"
name="python27-libs - Runtime libraries"
pkgcat="application"
pkgvendor="http://python.org"
pkgdesc="The python standard library and libpython dynamic library"
pkgver="$pkgver"
files(-,root,bin)
default_docs
$_libdir/libpython*.so.*
$site_packages/README
$pylibdir/BaseHTTPServer.*
$pylibdir/Bastion.*
$pylibdir/CGIHTTPServer.*
$pylibdir/ConfigParser.*
$pylibdir/Cookie.*
$pylibdir/DocXMLRPCServer.*
$pylibdir/HTMLParser.*
$pylibdir/MimeWriter.*
$pylibdir/Queue.*
$pylibdir/SimpleHTTPServer.*
$pylibdir/SimpleXMLRPCServer.*
$pylibdir/SocketServer.*
$pylibdir/StringIO.*
$pylibdir/UserDict.*
$pylibdir/UserList.*
$pylibdir/UserString.*
$pylibdir/_LWPCookieJar.*
$pylibdir/_MozillaCookieJar.*
$pylibdir/__future__.*
$pylibdir/__phello__.*
$pylibdir/_abcoll.*
$pylibdir/_osx_support.*
$pylibdir/_pyio.*
$pylibdir/_strptime.*
$pylibdir/_sysconfigdata.*
$pylibdir/_threading_local.*
$pylibdir/_weakrefset.*
$pylibdir/abc.*
$pylibdir/aifc.*
$pylibdir/antigravity.*
$pylibdir/anydbm.*
$pylibdir/argparse.*
$pylibdir/ast.*
$pylibdir/asynchat.*
$pylibdir/asyncore.*
$pylibdir/atexit.*
$pylibdir/audiodev.*
$pylibdir/base64.*
$pylibdir/bdb.*
$pylibdir/binhex.*
$pylibdir/bisect.*
$pylibdir/bsddb/*.*
$pylibdir/cProfile.*
$pylibdir/calendar.*
$pylibdir/cgi.*
$pylibdir/cgitb.*
$pylibdir/chunk.*
$pylibdir/cmd.*
$pylibdir/code.*
$pylibdir/codecs.*
$pylibdir/codeop.*
$pylibdir/collections.*
$pylibdir/colorsys.*
$pylibdir/commands.*
$pylibdir/compileall.*
$pylibdir/compiler/*.*
$pylibdir/config/Makefile
$pylibdir/contextlib.*
$pylibdir/cookielib.*
$pylibdir/copy.*
$pylibdir/copy_reg.*
$pylibdir/csv.*
$pylibdir/ctypes/*.*
$pylibdir/ctypes/macholib/*
$pylibdir/curses/*.*
$pylibdir/dbhash.*
$pylibdir/decimal.*
$pylibdir/difflib.*
$pylibdir/dircache.*
$pylibdir/dis.*
$pylibdir/distutils/README
$pylibdir/distutils/*.*
$pylibdir/distutils/command/*.*
$pylibdir/doctest.*
$pylibdir/dumbdbm.*
$pylibdir/dummy_thread.*
$pylibdir/dummy_threading.*
$pylibdir/email/*.*
$pylibdir/email/mime/*.*
$pylibdir/encodings/*.*
$pylibdir/ensurepip/*.*
$pylibdir/ensurepip/_bundled/*.*
$pylibdir/filecmp.*
$pylibdir/fileinput.*
$pylibdir/fnmatch.*
$pylibdir/formatter.*
$pylibdir/fpformat.*
$pylibdir/fractions.*
$pylibdir/ftplib.*
$pylibdir/functools.*
$pylibdir/genericpath.*
$pylibdir/getopt.*
$pylibdir/getpass.*
$pylibdir/gettext.*
$pylibdir/glob.*
$pylibdir/gzip.*
$pylibdir/hashlib.*
$pylibdir/heapq.*
$pylibdir/hmac.*
$pylibdir/hotshot/*.*
$pylibdir/htmlentitydefs.*
$pylibdir/htmllib.*
$pylibdir/httplib.*
$pylibdir/idlelib/ChangeLog
$pylibdir/idlelib/*.*
$pylibdir/idlelib/Icons/*.*
$pylibdir/idlelib/idle_test/*.*
$pylibdir/ihooks.*
$pylibdir/imaplib.*
$pylibdir/imghdr.*
$pylibdir/importlib/*.*
$pylibdir/imputil.*
$pylibdir/inspect.*
$pylibdir/io.*
$pylibdir/json/*.*
$pylibdir/keyword.*
$pylibdir/lib2to3/*.*
$pylibdir/lib2to3/pgen2/*.*
$pylibdir/lib2to3/fixes/*.*
$pylibdir/linecache.*
$pylibdir/locale.*
$pylibdir/logging/*.*
$pylibdir/macpath.*
$pylibdir/macurl2path.*
$pylibdir/mailbox.*
$pylibdir/mailcap.*
$pylibdir/markupbase.*
$pylibdir/md5.*
$pylibdir/mhlib.*
$pylibdir/mimetools.*
$pylibdir/mimetypes.*
$pylibdir/mimify.*
$pylibdir/modulefinder.*
$pylibdir/multifile.*
$pylibdir/multiprocessing/*.*
$pylibdir/multiprocessing/dummy/*.*
$pylibdir/mutex.*
$pylibdir/netrc.*
$pylibdir/new.*
$pylibdir/nntplib.*
$pylibdir/ntpath.*
$pylibdir/nturl2path.*
$pylibdir/numbers.*
$pylibdir/opcode.*
$pylibdir/optparse.*
$pylibdir/os.*
$pylibdir/os2emxpath.*
$pylibdir/pdb.*
$pylibdir/pickle.*
$pylibdir/pickletools.*
$pylibdir/pipes.*
$pylibdir/pkgutil.*
$pylibdir/plat-sunos5/*
$pylibdir/platform.*
$pylibdir/plistlib.*
$pylibdir/popen2.*
$pylibdir/poplib.*
$pylibdir/posixfile.*
$pylibdir/posixpath.*
$pylibdir/pprint.*
$pylibdir/profile.*
$pylibdir/pstats.*
$pylibdir/pty.*
$pylibdir/py_compile.*
$pylibdir/pyclbr.*
$pylibdir/pydoc.*
$pylibdir/pydoc_data/*
$pylibdir/quopri.*
$pylibdir/random.*
$pylibdir/re.*
$pylibdir/repr.*
$pylibdir/rexec.*
$pylibdir/rfc822.*
$pylibdir/rlcompleter.*
$pylibdir/robotparser.*
$pylibdir/runpy.*
$pylibdir/sched.*
$pylibdir/sets.*
$pylibdir/sgmllib.*
$pylibdir/sha.*
$pylibdir/shelve.*
$pylibdir/shlex.*
$pylibdir/shutil.*
$pylibdir/site.*
$pylibdir/smtpd.*
$pylibdir/smtplib.*
$pylibdir/sndhdr.*
$pylibdir/socket.*
$pylibdir/sqlite3/*.*
$pylibdir/sre.*
$pylibdir/sre_compile.*
$pylibdir/sre_constants.*
$pylibdir/sre_parse.*
$pylibdir/ssl.*
$pylibdir/stat.*
$pylibdir/statvfs.*
$pylibdir/string.*
$pylibdir/stringold.*
$pylibdir/stringprep.*
$pylibdir/struct.*
$pylibdir/subprocess.*
$pylibdir/sunau.*
$pylibdir/sunaudio.*
$pylibdir/symbol.*
$pylibdir/symtable.*
$pylibdir/sysconfig.*
$pylibdir/tabnanny.*
$pylibdir/tarfile.*
$pylibdir/telnetlib.*
$pylibdir/tempfile.*
$pylibdir/textwrap.*
$pylibdir/this.*
$pylibdir/threading.*
$pylibdir/timeit.*
$pylibdir/toaiff.*
$pylibdir/token.*
$pylibdir/tokenize.*
$pylibdir/trace.*
$pylibdir/traceback.*
$pylibdir/tty.*
$pylibdir/types.*
$pylibdir/unittest/*.*
$pylibdir/unittest/test/*.*
$pylibdir/urllib.*
$pylibdir/urllib2.*
$pylibdir/urlparse.*
$pylibdir/user.*
$pylibdir/uu.*
$pylibdir/uuid.*
$pylibdir/warnings.*
$pylibdir/wave.*
$pylibdir/weakref.*
$pylibdir/webbrowser.*
$pylibdir/whichdb.*
$pylibdir/wsgiref.*
$pylibdir/wsgiref/*.*
$pylibdir/xdrlib.*
$pylibdir/xml
$pylibdir/xmllib.*
$pylibdir/xmlrpclib.*
$pylibdir/zipfile.*
$dynload_dir/Python-${version}-py${pydotver}.egg-info
$dynload_dir/_bisect.so*
$dynload_dir/_codecs_cn.so*
$dynload_dir/_codecs_hk.so*
$dynload_dir/_codecs_iso2022.so*
$dynload_dir/_codecs_jp.so*
$dynload_dir/_codecs_kr.so*
$dynload_dir/_codecs_tw.so*
$dynload_dir/_collections.so*
$dynload_dir/_csv.so*
$dynload_dir/_ctypes.so*
$dynload_dir/_ctypes_test.so*
$dynload_dir/_curses_failed.so*
$dynload_dir/_curses_panel_failed.so*
$dynload_dir/_elementtree.so*
$dynload_dir/_functools.so*
$dynload_dir/_hashlib.so*
$dynload_dir/_heapq.so*
$dynload_dir/_hotshot.so*
$dynload_dir/_io.so*
$dynload_dir/_json.so*
$dynload_dir/_locale.so*
$dynload_dir/_lsprof.so*
$dynload_dir/_multibytecodec.so*
$dynload_dir/_multiprocessing.so*
$dynload_dir/_random.so*
$dynload_dir/_socket.so*
$dynload_dir/_sqlite3.so*
$dynload_dir/_ssl.so*
$dynload_dir/_struct.so*
$dynload_dir/_testcapi.so*
$dynload_dir/array.so*
$dynload_dir/audioop.so*
$dynload_dir/binascii.so*
$dynload_dir/bz2.so*
$dynload_dir/cPickle.so*
$dynload_dir/cStringIO.so*
$dynload_dir/cmath.so*
$dynload_dir/datetime.so*
$dynload_dir/dbm.so*
$dynload_dir/dl.so*
$dynload_dir/fcntl.so*
$dynload_dir/future_builtins.so*
$dynload_dir/grp.so*
$dynload_dir/imageop.so*
$dynload_dir/itertools.so*
$dynload_dir/math.so*
$dynload_dir/mmap.so*
$dynload_dir/nis.so*
$dynload_dir/operator.so*
$dynload_dir/parser.so*
$dynload_dir/pyexpat.so*
$dynload_dir/readline.so*
$dynload_dir/resource.so*
$dynload_dir/select.so*
$dynload_dir/spwd.so*
$dynload_dir/strop.so*
$dynload_dir/sunaudiodev.so*
$dynload_dir/syslog.so*
$dynload_dir/termios.so*
$dynload_dir/time.so*
$dynload_dir/unicodedata.so*
$dynload_dir/zlib.so*
[python27-tools]
pkgname="${pkgprefix}py27to"
name="python27-tools - Development tools for Python"
pkgcat="application"
pkgvendor="http://python.org"
pkgdesc="A collection of development tools included with Python"
pkgver="$pkgver"
files(-,root,bin)
$_bindir/2to3-${pydotver}
$_bindir/idle${pydotver}
$_bindir/smtpd${pydotver}.py
$_bindir/pygettext${pydotver}.py
$_bindir/msgfmt${pydotver}.py
$_bindir/pynche${pydotver}
$pylibdir/Tools
$site_packages/pynche
[python27-test]
pkgname="${pkgprefix}py27te"
name="python27-test - Test modules from the main python package"
pkgcat="application"
pkgvendor="http://python.org"
pkgdesc="Test modules that are rarely if ever needed in production"
pkgver="$pkgver"
files(-,root,bin)
$pylibdir/test
$pylibdir/bsddb/test
$pylibdir/ctypes/test
$pylibdir/email/test
$pylibdir/sqlite3/test
$pylibdir/distutils/tests
$pylibdir/json/tests
$pylibdir/lib2to3/tests
[python27-devel]
pkgname="${pkgprefix}py27d"
name="python27-devel - Development support for Python"
pkgcat="application"
pkgvendor="http://python.org"
pkgdesc="Files needed for developing with Python"
pkgver="$pkgver"
files(-,root,bin)
$_bindir/python*config
$_includedir/python${pydotver}
$_libdir/pkgconfig/python-${pydotver}.pc
$pylibdir/config
$pylibdir/distutils
$_libdir/libpython*.so
[python27-tkinter]
pkgname="${pkgprefix}py27tk"
name="python27-tkinter - Graphical User interface for Python"
pkgcat="application"
pkgvendor="http://python.org"
pkgdesc="A graphical user interface for the Python scripting language"
pkgver="$pkgver"
files(-,root,bin)
$dynload_dir/_tkinter.so
$pylibdir/lib-tk

View File

@ -0,0 +1,12 @@
--- Python-2.7.9/Modules/mmapmodule.c.fnctl 2014-12-10 16:59:55.000000000 +0100
+++ Python-2.7.9/Modules/mmapmodule.c 2015-03-21 12:20:50.544882000 +0100
@@ -23,9 +23,7 @@
#ifndef MS_WINDOWS
#define UNIX
-# ifdef __APPLE__
# include <fcntl.h>
-# endif
#endif
#ifdef MS_WINDOWS

View File

@ -0,0 +1,34 @@
Patch based on http://bugs.python.org/issue6645
--- Python-2.7.9/Lib/multiprocessing/process.py.nourandom 2014-12-10 16:59:39.000000000 +0100
+++ Python-2.7.9/Lib/multiprocessing/process.py 2015-04-20 08:20:38.663871000 +0200
@@ -306,7 +306,12 @@
self._popen = None
self._counter = itertools.count(1)
self._children = set()
- self._authkey = AuthenticationString(os.urandom(32))
+ try:
+ self._authkey = AuthenticationString(os.urandom(32))
+ except:
+ import random
+ bytes = [chr(random.randrange(256)) for i in range(32)]
+ self._authkey = AuthenticationString(bytes)
self._tempdir = None
_current_process = _MainProcess()
--- Python-2.7.9/Lib/multiprocessing/connection.py.nourandom 2014-12-10 16:59:39.000000000 +0100
+++ Python-2.7.9/Lib/multiprocessing/connection.py 2015-04-20 08:21:05.113976000 +0200
@@ -412,7 +412,12 @@
def deliver_challenge(connection, authkey):
import hmac
assert isinstance(authkey, bytes)
- message = os.urandom(MESSAGE_LENGTH)
+ try:
+ message = os.urandom(MESSAGE_LENGTH)
+ except:
+ import random
+ bytes = [chr(random.randrange(256)) for i in range(MESSAGE_LENGTH)]
+ self._authkey = AuthenticationString(bytes)
connection.send_bytes(CHALLENGE + message)
digest = hmac.new(authkey, message).digest()
response = connection.recv_bytes(256) # reject large message

View File

@ -0,0 +1,16 @@
--- Python-2.7.9/setup.py.tgcware 2014-12-10 17:00:01.000000000 +0100
+++ Python-2.7.9/setup.py 2015-03-21 13:24:40.240267000 +0100
@@ -438,10 +438,10 @@
os.unlink(tmpfile)
def detect_modules(self):
- # Ensure that /usr/local is always used
+ # Ensure that /usr/tgcware is always used
if not cross_compiling:
- add_dir_to_list(self.compiler.library_dirs, '/usr/local/lib')
- add_dir_to_list(self.compiler.include_dirs, '/usr/local/include')
+ add_dir_to_list(self.compiler.library_dirs, '/usr/tgcware/lib')
+ add_dir_to_list(self.compiler.include_dirs, '/usr/tgcware/include')
if cross_compiling:
self.add_gcc_paths()
self.add_multiarch_paths()