- debpython is the commands `py3compile` and `py3clean` from Debian. I
am calling them that because a large chunk of their source code is
found inside a folder inside Debian's source code named "debpython"
- 5348f70466
- rather than packaging `.pyc` files into packages, `py3compile` and
`py3clean` can be called from `postinst` and `prerm` scripts to
generate all `.pyc` for the `.py` files in the package immediately
after the package is installed, and remove all `.pyc` files immediately
before uninstalling the package, respectively
- fixes the error `trying to overwrite '/data/data/com.termux/files/usr/lib/python3.12/__pycache__/cProfile.cpython-312.pyc'` when packages were built on-device, but at the same time, also:
- prevents the warnings `dpkg: warning: while removing python, directory '/data/data/com.termux/files/usr/lib/python3.12/site-packages' not empty so not removed` as long as no packages were installed using `pip`
- The `termux_step_create_python_debscripts.sh` can configure work on debpython (i.e. its `py3copile` and `py3clean` commands) from the glibc package `python-glibc`, if some glibc package is being compiled.
- New variables have been implemented:
- `TERMUX_PYTHON_CROSSENV_BUILDHOME` - location of crossenv's python build libraries.
- `TERMUX_PKG_PYTHON_RUNTIME_DEPS` - configures the installation of the python modules via pip3 in the pkg's debscripts. If not configured in the package, it will use the value from `TERMUX_PKG_PYTHON_TARGET_DEPS`. If the variable is set to `false`, then the customization of installing python modules will be disabled, even if the `TERMUX_PKG_PYTHON_TARGET_DEPS` variable is set in the package.
- `TERMUX_SUBPKG_PYTHON_RUNTIME_DEPS` - configures the installation of the python modules via pip3 in the subpkg's debscripts.
- Implemented reconfiguration of prefixes in python module `sysconfig` and setting in `TERMUX_PYTHON_CROSSENV_BUILDHOME`, so that python modules from crossenv building can specify system paths of termux for correct compilation.
- Added automatic addition of `python-glibc{-glibc}` dependency when using the `TERMUX_PKG_PYTHON_RUNTIME_DEPS` (for pkg; will be disabled, i.e. will not be added, if the variable is set to `false`) or `TERMUX_SUBPKG_PYTHON_RUNTIME_DEPS` (for subpkg) value.
> How to add a new Python package after this?
Everything is the same, except, now, this block is no longer necessary in `build.sh`.
```bash
termux_step_create_debscripts() {
cat <<- EOF > ./postinst
#!$TERMUX_PREFIX/bin/sh
echo "Installing dependencies through pip..."
pip3 install ${TERMUX_PKG_PYTHON_TARGET_DEPS//, / }
EOF
}
```
- Instead, `scripts/build/termux_step_create_python_debscripts.sh` can now detect the presence of `pip` package lists in `$TERMUX_PKG_PYTHON_TARGET_DEPS`, `$TERMUX_SUBPKG_PYTHON_TARGET_DEPS`, and the `METADATA` file of the Python package if it exists, and automatically insert them as a block into the `postinst` script for all relevant packages.
- `$TERMUX_PKG_PYTHON_TARGET_DEPS` is used for `pip` dependencies that are both on-device build-time and on-device run-time dependencies, and `$TERMUX_PKG_PYTHON_RUNTIME_DEPS` is used for runtime-only `pip` dependencies. `$TERMUX_PKG_PYTHON_RUNTIME_DEPS` overrides `$TERMUX_PKG_PYTHON_TARGET_DEPS` for runtime dependencies,
- i.e. if `TERMUX_PKG_PYTHON_RUNTIME_DEPS` is not specified, but `TERMUX_PKG_PYTHON_TARGET_DEPS` is, then `TERMUX_PKG_PYTHON_TARGET_DEPS` will be used as both on-device build and on-device runtime dependencies,
- but if `TERMUX_PKG_PYTHON_RUNTIME_DEPS` is specified, then `TERMUX_PKG_PYTHON_TARGET_DEPS`, if specified, is used only for on-device build-time dependencies.
- If `python-pip` is not already in the dependencies of any package that needs it, the build will fail with an error instructing maintainers to add `python-pip` to the dependencies of the package that needs it.
Co-authored-by: Maxython <mixython@gmail.com>
In issue https://github.com/termux/termux-packages/issues/6160 I have found
that community repo "its-pointless.github.io" specifies us as maintainer
for its packages. This is NOT TRUE and potentially misleads people using
these packages.
Now TERMUX_PKG_MAINTAINER will contain a default value which is neutral
and not specify maintainer. So all packages now have to override it to
the correct value.
[skip ci]
%ci:no-build
* 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