2015-09-17 03:08:59 +02:00
|
|
|
TERMUX_PKG_HOMEPAGE=http://python.org/
|
2016-02-28 07:49:55 +01:00
|
|
|
TERMUX_PKG_DESCRIPTION="Python 2 programming language intended to enable clear programs"
|
2019-01-21 15:00:12 +01:00
|
|
|
TERMUX_PKG_LICENSE="PythonPL"
|
2015-09-17 03:08:59 +02:00
|
|
|
_MAJOR_VERSION=2.7
|
2020-04-22 02:44:14 +02:00
|
|
|
TERMUX_PKG_VERSION=${_MAJOR_VERSION}.18
|
Copy LICENSE file for some licenses instead of using generic one (#5478)
* termux-licenses: remove licenses that contain copyright information
These licenses cannot be taken from the common termux-licenses package as the copyright information needs to be distributed with the package as well.
271 packages in the main repository needs to be rebuilt after this change.
* termux_step_install_license: remove duplicated comment
* Bump packages that has a license with copyright information
We need to include this copyright information in the package so need
to rebuild them now that termux_step_install_license has been
modified.
The affected licenses are: MIT, ISC, PythonPL, Openfont-1.1, ZLIB,
Libpng, BSD, BSD 2-Clause, BSD 3-Clause.
* zlib: extract license file from zlib.h
* xorgproto: include all individual license files in package
* libgcrypt: include LICENSE file in package
It contains some copyright information so needs to be included in package
* libcrypt: add a dummy BSD 2-Clause license
According to homepage it is suppose to be BSD 2-Clause, but original
project did not include a license file
* libandroid-spawn: add LICENSE file to package
* libandroid-glob: add license file to package
* licenses: allow for comma separated TERMUX_PKG_LICENSE_FILE
%ci:no-build
* libicu: fix so that termux_step_install_license finds license file
%ci:no-build
* termux_step_install_license: check for license file as "License"
%ci:no-build
* libtiff: specify TERMUX_PKG_LICENSE_FILE
%ci:no-build
* asciidoctor: install license to standard location
* krb5: specify license file
* libdb: specify path to license file
%ci:no-build
* libprotobuf: specify path to license file
* darkhttpd: extract license file from darkhttpd.c
* w3m: ensure host libraries are not picked up
* w3m: extract LICENSE file from dock/README
* liblua{,52}: extract license files from doc/readme.html
* termux_step_install_license: look for License.txt as well
* dart: specify path to LICENSE file
* nim: specify license file
* runit: specify license file
* termux_step_install_license: look for LICENSE.TXT as well
* ossp-uuid: extract LICENSE from README
* pigz: extract LICENSE from pigz.c
* ttyrec: extract LICENSE from ttyrec.c
%ci:no-build
* bmon: specify license files
Most of the source files are licensed under MIT, it is not clear (to me) which
parts that are licensed under BSD 2-Clause.
%ci:no-build
* wordgrinder: specify license files
* fdupes: add LICENSE
* autossh: add LICENSE patch
* cmake: specify LICENSE file
* dos2unix: specify LICENSE file
* gnuplot: specify LICENSE file
* termux_step_install_license: look for variants of "copyright" also
* picolisp: specify LICENSE file
* lua-lpeg: extract license file
* tidy: specify license file
* gflags: specify LICENSE file
* timewarrior: fix src url
It seems to have been changed.
* postgresql: specify license file
* ttyrec: fix license patch header
* fossil: specify license file
* fmt: specify license file
* i2pd: specify license file
* leptonica: specify license file
* imgflo: add license file patch
* ired: add license file from ired github repo
* libzen: specify license file
* libmediainfo: specify license file
* mediainfo: specify license file
* tty-clock: add license patch
* samefile: add license patch
* quickjs: add license patch
* docbook-xml: add LICENSE patch
* docbook-xsl: specify LICENSE files
* gnuplot: configure with --without-latex
* timewarrior: add libshared to SRCURL as well
The non-release archives does not contain gitsubmodules so we need to
download it manually.
* restic: switch back to using 0.9.6 archive
* dart: revert revision bump
dart's SDK does not fully support python3 yet, and trying to solve
that is not entirely trivial. We save the dart bump (and upgrade to
2.8.4) for another day.
%ci:no-build
2020-07-07 18:45:45 +02:00
|
|
|
TERMUX_PKG_REVISION=2
|
2017-03-04 21:54:30 +01:00
|
|
|
TERMUX_PKG_SRCURL=https://www.python.org/ftp/python/${TERMUX_PKG_VERSION}/Python-${TERMUX_PKG_VERSION}.tar.xz
|
2020-04-22 02:44:14 +02:00
|
|
|
TERMUX_PKG_SHA256=b62c0e7937551d0cc02b8fd5cb0f544f9405bafc9a54d3808ed4594812edef43
|
2020-06-27 13:03:27 +02:00
|
|
|
TERMUX_PKG_DEPENDS="libandroid-support, ncurses, readline, libffi, openssl, libbz2, libsqlite, gdbm, ncurses-ui-libs, libcrypt, zlib"
|
|
|
|
TERMUX_PKG_RECOMMENDS="clang, make, pkg-config"
|
|
|
|
TERMUX_PKG_BREAKS="python2-dev"
|
|
|
|
TERMUX_PKG_REPLACES="python2-dev"
|
|
|
|
TERMUX_PKG_HOSTBUILD=true
|
2015-09-17 03:08:59 +02:00
|
|
|
|
|
|
|
# The flag --with(out)-pymalloc (disable/enable specialized mallocs) is enabled by default and causes m suffix versions of python.
|
|
|
|
# Set ac_cv_func_wcsftime=no to avoid errors such as "character U+ca0025 is not in range [U+0000; U+10ffff]"
|
|
|
|
# when executing e.g. "from time import time, strftime, localtime; print(strftime(str('%Y-%m-%d %H:%M'), localtime()))"
|
|
|
|
TERMUX_PKG_EXTRA_CONFIGURE_ARGS="ac_cv_file__dev_ptmx=yes ac_cv_file__dev_ptc=no ac_cv_func_wcsftime=no"
|
|
|
|
# Avoid trying to include <sys/timeb.h> which does not exist on android-21:
|
|
|
|
TERMUX_PKG_EXTRA_CONFIGURE_ARGS+=" ac_cv_func_ftime=no"
|
|
|
|
# Avoid trying to use AT_EACCESS which is not defined:
|
|
|
|
TERMUX_PKG_EXTRA_CONFIGURE_ARGS+=" ac_cv_func_faccessat=no"
|
|
|
|
# The gethostbyname_r function does not exist on device libc:
|
|
|
|
TERMUX_PKG_EXTRA_CONFIGURE_ARGS+=" ac_cv_func_gethostbyname_r=no"
|
2016-12-03 22:18:51 +01:00
|
|
|
# Do not assume getaddrinfo is buggy when cross compiling:
|
|
|
|
TERMUX_PKG_EXTRA_CONFIGURE_ARGS+=" ac_cv_buggy_getaddrinfo=no"
|
2018-04-04 00:17:22 +02:00
|
|
|
# Fix https://github.com/termux/termux-packages/issues/2236:
|
|
|
|
TERMUX_PKG_EXTRA_CONFIGURE_ARGS+=" ac_cv_little_endian_double=yes"
|
2017-01-07 06:38:04 +01:00
|
|
|
TERMUX_PKG_EXTRA_CONFIGURE_ARGS+=" --build=$TERMUX_BUILD_TUPLE --with-system-ffi --without-ensurepip"
|
2015-11-15 23:24:35 +01:00
|
|
|
TERMUX_PKG_EXTRA_CONFIGURE_ARGS+=" --enable-unicode=ucs4"
|
2018-05-17 22:40:42 +02:00
|
|
|
TERMUX_PKG_RM_AFTER_INSTALL="
|
|
|
|
bin/smtpd.py
|
|
|
|
bin/python
|
|
|
|
bin/python-config
|
|
|
|
share/man/man1/python.1
|
2018-05-17 22:47:23 +02:00
|
|
|
bin/idle*
|
|
|
|
lib/python${_MAJOR_VERSION}/idlelib
|
|
|
|
lib/python${_MAJOR_VERSION}/lib-tk
|
|
|
|
lib/python${_MAJOR_VERSION}/test
|
|
|
|
lib/python${_MAJOR_VERSION}/*/test
|
|
|
|
lib/python${_MAJOR_VERSION}/*/tests
|
2018-05-17 22:40:42 +02:00
|
|
|
"
|
2015-09-17 03:08:59 +02:00
|
|
|
|
2019-02-08 10:37:29 +01:00
|
|
|
termux_step_host_build() {
|
2015-09-17 03:08:59 +02:00
|
|
|
# We need a host-built Parser/pgen binary, copied into cross-compile build in termux_step_post_configure() below
|
|
|
|
$TERMUX_PKG_SRCDIR/configure
|
|
|
|
make Parser/pgen
|
2019-02-12 09:23:21 +01:00
|
|
|
# We need a python$_MAJOR_VERSION binary to be picked up by configure check:
|
2015-09-17 03:08:59 +02:00
|
|
|
make
|
2019-02-12 09:23:21 +01:00
|
|
|
rm -f python$_MAJOR_VERSION # Remove symlink if already exists to get a newer timestamp
|
|
|
|
ln -s python python$_MAJOR_VERSION
|
2015-09-17 03:08:59 +02:00
|
|
|
}
|
|
|
|
|
2019-02-08 10:37:29 +01:00
|
|
|
termux_step_post_configure() {
|
2015-09-17 03:08:59 +02:00
|
|
|
cp $TERMUX_PKG_HOSTBUILD_DIR/Parser/pgen $TERMUX_PKG_BUILDDIR/Parser/pgen
|
2017-04-18 08:19:48 +02:00
|
|
|
touch -d "next hour" $TERMUX_PKG_BUILDDIR/Parser/pgen
|
2015-09-17 03:08:59 +02:00
|
|
|
}
|
|
|
|
|
2016-09-16 13:29:54 +02:00
|
|
|
termux_step_pre_configure() {
|
|
|
|
# Put the host-built python in path:
|
|
|
|
export TERMUX_ORIG_PATH=$PATH
|
|
|
|
export PATH=$TERMUX_PKG_HOSTBUILD_DIR:$PATH
|
2017-01-17 10:05:20 +01:00
|
|
|
|
|
|
|
# Needed when building with clang, as setup.py only probes
|
|
|
|
# gcc for include paths when finding headers for determining
|
|
|
|
# if extension modules should be built (specifically, the
|
|
|
|
# zlib extension module is not built without this):
|
|
|
|
CPPFLAGS+=" -I$TERMUX_STANDALONE_TOOLCHAIN/sysroot/usr/include"
|
2017-01-17 22:06:27 +01:00
|
|
|
LDFLAGS+=" -L$TERMUX_STANDALONE_TOOLCHAIN/sysroot/usr/lib"
|
2017-11-17 01:37:31 +01:00
|
|
|
if [ $TERMUX_ARCH = x86_64 ]; then LDFLAGS+=64; fi
|
2016-09-16 13:29:54 +02:00
|
|
|
}
|
|
|
|
|
2019-02-08 10:37:29 +01:00
|
|
|
termux_step_post_make_install() {
|
2015-09-17 03:08:59 +02:00
|
|
|
# Avoid file clashes with the python (3) package:
|
2018-05-17 22:40:42 +02:00
|
|
|
(cd $TERMUX_PREFIX/bin
|
|
|
|
mv 2to3 2to3-${_MAJOR_VERSION}
|
|
|
|
mv pydoc pydoc${_MAJOR_VERSION}
|
|
|
|
ln -sf pydoc${_MAJOR_VERSION} pydoc2)
|
2019-02-12 09:23:21 +01:00
|
|
|
# Restore path which termux_step_host_build messed with
|
|
|
|
export PATH=$TERMUX_ORIG_PATH
|
2017-01-17 10:05:20 +01:00
|
|
|
}
|
2015-09-30 23:33:01 +02:00
|
|
|
|
2019-02-08 10:37:29 +01:00
|
|
|
termux_step_post_massage() {
|
2017-01-17 10:05:20 +01:00
|
|
|
# Verify that desired modules have been included:
|
|
|
|
for module in _ssl bz2 zlib _curses _sqlite3; do
|
|
|
|
if [ ! -f lib/python${_MAJOR_VERSION}/lib-dynload/${module}.so ]; then
|
2017-04-09 15:10:01 +02:00
|
|
|
termux_error_exit "Python module library $module not built"
|
2017-01-17 10:05:20 +01:00
|
|
|
fi
|
|
|
|
done
|
2015-09-17 03:08:59 +02:00
|
|
|
}
|
|
|
|
|
2019-02-08 10:37:29 +01:00
|
|
|
termux_step_create_debscripts() {
|
2015-09-17 03:08:59 +02:00
|
|
|
## POST INSTALL:
|
2017-08-15 07:09:08 +02:00
|
|
|
echo "#!$TERMUX_PREFIX/bin/sh" > postinst
|
|
|
|
echo "echo 'Setting up pip2...'" >> postinst
|
2016-07-20 00:54:58 +02:00
|
|
|
# Fix historical mistake which removed bin/pip2 but left site-packages/pip-*.dist-info,
|
|
|
|
# which causes ensurepip to avoid installing pip due to already existing pip install:
|
|
|
|
echo "if [ ! -f $TERMUX_PREFIX/bin/pip2 -a -d $TERMUX_PREFIX/lib/python${_MAJOR_VERSION}/site-packages/pip-*.dist-info ]; then rm -Rf $TERMUX_PREFIX/lib/python${_MAJOR_VERSION}/site-packages/pip-*.dist-info ; fi" >> postinst
|
|
|
|
# Setup bin/pip2:
|
2015-09-17 03:08:59 +02:00
|
|
|
echo "$TERMUX_PREFIX/bin/python2 -m ensurepip --upgrade --no-default-pip" >> postinst
|
|
|
|
|
|
|
|
## PRE RM:
|
2017-08-15 07:09:08 +02:00
|
|
|
# Avoid running on update
|
|
|
|
echo "#!$TERMUX_PREFIX/bin/sh" > prerm:
|
|
|
|
echo 'if [ $1 != "remove" ]; then exit 0; fi' >> prerm
|
2016-07-20 00:54:58 +02:00
|
|
|
# Uninstall everything installed through pip:
|
|
|
|
echo "pip2 freeze 2> /dev/null | xargs pip2 uninstall -y > /dev/null 2> /dev/null" >> prerm
|
2018-04-28 15:11:03 +02:00
|
|
|
# Cleanup *.pyc files
|
2018-04-28 15:15:19 +02:00
|
|
|
echo "find $TERMUX_PREFIX/lib/python${_MAJOR_VERSION} -depth -name *.pyc -exec rm -rf {} +" >> prerm
|
2016-07-20 00:54:58 +02:00
|
|
|
# Remove contents of site-packages/ folder:
|
|
|
|
echo "rm -Rf $TERMUX_PREFIX/lib/python${_MAJOR_VERSION}/site-packages/*" >> prerm
|
2018-04-28 14:41:28 +02:00
|
|
|
# Remove pip and easy_install installed by ensurepip in postinst:
|
|
|
|
echo "rm -f $TERMUX_PREFIX/bin/pip2* $TERMUX_PREFIX/bin/easy_install-2*" >> prerm
|
2015-09-17 03:08:59 +02:00
|
|
|
|
2016-07-20 00:54:58 +02:00
|
|
|
echo "exit 0" >> postinst
|
|
|
|
echo "exit 0" >> prerm
|
2015-09-17 03:08:59 +02:00
|
|
|
chmod 0755 postinst prerm
|
|
|
|
}
|