From 82afd4d7a901e97a1552b8a5ba5bc870dde1c00c Mon Sep 17 00:00:00 2001 From: Robert Kirkman Date: Wed, 5 Nov 2025 04:29:42 -0600 Subject: [PATCH 1/3] fix(scripts/setup-termux): add some more packages to continue to synchronize `setup-termux.sh` closer to `setup-ubuntu.sh` - Follow-up to https://github.com/termux/termux-packages/pull/24977 - Fixes https://github.com/termux/termux-packages/issues/26373 - Split from https://github.com/termux/termux-packages/pull/23652 because it does not really depend on the other things in that PR and it is now needed separately --- scripts/setup-termux.sh | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/scripts/setup-termux.sh b/scripts/setup-termux.sh index 30d6f764bd1577..401669409f58ef 100755 --- a/scripts/setup-termux.sh +++ b/scripts/setup-termux.sh @@ -8,6 +8,7 @@ PACKAGES+=" gnupg" # Used in termux_get_repo_files() and build-package.sh. PACKAGES+=" lzip" # Used by tar to extract *.tar.lz source archives. PACKAGES+=" patch" # Used for applying patches on source code. PACKAGES+=" python" # Used buildorder.py core script. +PACKAGES+=" python-pip" # Necessary to install 'itstool' for on-device-building (since Ubuntu gets it from 'apt') PACKAGES+=" unzip" # Used to extract *.zip source archives. PACKAGES+=" jq" # Used for parsing repo.json. PACKAGES+=" binutils-is-llvm" # Used for checking symbols. @@ -25,9 +26,11 @@ PACKAGES+=" ed" PACKAGES+=" flex" PACKAGES+=" gettext" PACKAGES+=" git" +PACKAGES+=" glslang" # Needed by mesa PACKAGES+=" golang" PACKAGES+=" gperf" PACKAGES+=" help2man" +PACKAGES+=" intltool" # Needed by qalc PACKAGES+=" libtool" PACKAGES+=" llvm-tools" # Needed to build rust PACKAGES+=" m4" @@ -42,11 +45,25 @@ PACKAGES+=" re2c" # Needed by kphp-timelib PACKAGES+=" rust" PACKAGES+=" scdoc" PACKAGES+=" texinfo" +PACKAGES+=" spirv-tools" # Needed by mesa PACKAGES+=" uuid-utils" PACKAGES+=" valac" PACKAGES+=" xmlto" # Needed by git's manpage generation PACKAGES+=" zip" +PYTHON_PACKAGES="" +PYTHON_PACKAGES+=" itstool" # necessary to build orca and some other packages +PYTHON_PACKAGES+=" pygments" # necessary to build mesa (dependency of mako that _must_ be kept `--upgrade`d) +PYTHON_PACKAGES+=" mako" # necessary to build mesa +PYTHON_PACKAGES+=" pyyaml" # necessary to build mesa +PYTHON_PACKAGES+=" setuptools" # necessary to build mesa (explicitly 'system'-wide unlike the setuptools in termux_setup_python_pip) +# More 'system-wide' python packages should be added here if working towards the goal +# of setup-termux.sh for on-device building having closer behavior +# to setup-ubuntu.sh for cross-compilation. If adding packages here, please add a comment +# for each one naming at least one of its reverse build dependencies, for which least one +# error during on-device building is solved by installing the dependency through pip. +#PYTHON_PACKAGES+=" " + # Definition of a package manager export TERMUX_SCRIPTDIR=$(dirname "$(realpath "$0")")/../ . $(dirname "$(realpath "$0")")/properties.sh @@ -62,3 +79,9 @@ else echo "Error: no package manager defined" exit 1 fi + +# Should not be installed inside venv because on Ubuntu cross-builder image, these +# particular python packages are installed system-wide, +# so should be installed Termux-wide for on-device building to be reasonably accurate +# compared with the behavior of the Ubuntu cross-builder image. +pip install --upgrade $PYTHON_PACKAGES From fd040a7049a4172430a2207b0cc98dd09cebe1c3 Mon Sep 17 00:00:00 2001 From: Robert Kirkman Date: Wed, 5 Nov 2025 07:14:37 -0600 Subject: [PATCH 2/3] tree-wide: never run tests for `cpan` installations in `postinst` scripts - These tests take way too long to run and are much too time-consuming to wait for on slow devices - Remove all instances of `-f` because `-f` forces tests to run (and be ignored), overriding `-T`, rather than skipping tests --- packages/dpkg/build.sh | 2 +- packages/dpkg/dpkg-perl.subpackage.sh | 2 +- packages/intltool/build.sh | 4 ++-- packages/sendxmpp/build.sh | 3 ++- x11-packages/xdg-menu/build.sh | 3 ++- x11-packages/xdg-utils/build.sh | 3 ++- 6 files changed, 10 insertions(+), 7 deletions(-) diff --git a/packages/dpkg/build.sh b/packages/dpkg/build.sh index e66a59bbb00a46..777bb133512313 100644 --- a/packages/dpkg/build.sh +++ b/packages/dpkg/build.sh @@ -3,7 +3,7 @@ TERMUX_PKG_DESCRIPTION="Debian package management system" TERMUX_PKG_LICENSE="GPL-2.0" TERMUX_PKG_MAINTAINER="@termux" TERMUX_PKG_VERSION="1.22.6" -TERMUX_PKG_REVISION=4 +TERMUX_PKG_REVISION=5 # old tarball are removed in https://mirrors.kernel.org/debian/pool/main/d/dpkg/dpkg_${TERMUX_PKG_VERSION}.tar.xz TERMUX_PKG_SRCURL=git+https://salsa.debian.org/dpkg-team/dpkg.git TERMUX_PKG_GIT_BRANCH="${TERMUX_PKG_VERSION}" diff --git a/packages/dpkg/dpkg-perl.subpackage.sh b/packages/dpkg/dpkg-perl.subpackage.sh index 620e96cf03ec2a..f6128b1e874d77 100644 --- a/packages/dpkg/dpkg-perl.subpackage.sh +++ b/packages/dpkg/dpkg-perl.subpackage.sh @@ -9,7 +9,7 @@ termux_step_create_subpkg_debscripts() { set -e echo "Sideloading Perl Locale::gettext ..." - cpan -fi Locale::gettext + cpan -Ti Locale::gettext exit 0 POSTINST_EOF diff --git a/packages/intltool/build.sh b/packages/intltool/build.sh index 618d9d2cf53d4e..765dfbb2c368e2 100644 --- a/packages/intltool/build.sh +++ b/packages/intltool/build.sh @@ -3,7 +3,7 @@ TERMUX_PKG_DESCRIPTION="The internationalization tool collection" TERMUX_PKG_MAINTAINER="@suhan-paradkar" TERMUX_PKG_LICENSE="GPL-2.0" TERMUX_PKG_VERSION=0.51.0 -TERMUX_PKG_REVISION=3 +TERMUX_PKG_REVISION=4 TERMUX_PKG_SRCURL=https://launchpad.net/intltool/trunk/$TERMUX_PKG_VERSION/+download/intltool-$TERMUX_PKG_VERSION.tar.gz TERMUX_PKG_SHA256=67c74d94196b153b774ab9f89b2fa6c6ba79352407037c8c14d5aeb334e959cd TERMUX_PKG_DEPENDS="perl, clang, make, libexpat" @@ -15,7 +15,7 @@ termux_step_create_debscripts() { set -e echo "Sideloading Perl XML::Parser..." - cpan install XML::Parser + cpan -Ti XML::Parser exit 0 POSTINST_EOF diff --git a/packages/sendxmpp/build.sh b/packages/sendxmpp/build.sh index 252bfed9f67d69..6fcb43e3e2caea 100644 --- a/packages/sendxmpp/build.sh +++ b/packages/sendxmpp/build.sh @@ -3,6 +3,7 @@ TERMUX_PKG_DESCRIPTION="A perl-script to send XMPP (jabber) messages" TERMUX_PKG_MAINTAINER="@termux" TERMUX_PKG_LICENSE="GPL-2.0" TERMUX_PKG_VERSION=1.24 +TERMUX_PKG_REVISION=1 TERMUX_PKG_SRCURL=https://github.com/lhost/sendxmpp/archive/refs/tags/${TERMUX_PKG_VERSION}.tar.gz TERMUX_PKG_SHA256=dfaf735b4585efd6b3b0f95db31203f9ab0fe607b50e75c6951bc18a6269837d TERMUX_PKG_DEPENDS="perl, clang, make" @@ -19,7 +20,7 @@ termux_step_create_debscripts() { set -e echo "Sideloading Perl Authen::SASL and Net::XMPP ..." - cpan -fi Authen::SASL Net::XMPP + cpan -Ti Authen::SASL Net::XMPP exit 0 POSTINST_EOF diff --git a/x11-packages/xdg-menu/build.sh b/x11-packages/xdg-menu/build.sh index 8c71cae4db58d4..e03e8791355425 100644 --- a/x11-packages/xdg-menu/build.sh +++ b/x11-packages/xdg-menu/build.sh @@ -3,6 +3,7 @@ TERMUX_PKG_DESCRIPTION="Tool that generates XDG Desktop Menus for icewm and othe TERMUX_PKG_LICENSE="GPL-2.0-or-later" TERMUX_PKG_MAINTAINER="@termux" TERMUX_PKG_VERSION="0.7.6.6" +TERMUX_PKG_REVISION=1 TERMUX_PKG_SRCURL="https://arch.p5n.pp.ru/~sergej/dl/2023/arch-xdg-menu-$TERMUX_PKG_VERSION.tar.gz" TERMUX_PKG_SHA256=01cbd3749939c180fed33783f0f7c4f47ac9563af2d1c4b39e23cb6cba792b40 TERMUX_PKG_DEPENDS="perl" @@ -38,7 +39,7 @@ termux_step_create_debscripts() { set -e echo "Sideloading Perl XML::Parser..." - cpan install XML::Parser + cpan -Ti XML::Parser exit 0 POSTINST_EOF diff --git a/x11-packages/xdg-utils/build.sh b/x11-packages/xdg-utils/build.sh index e2f87371512841..49dae605558546 100644 --- a/x11-packages/xdg-utils/build.sh +++ b/x11-packages/xdg-utils/build.sh @@ -3,6 +3,7 @@ TERMUX_PKG_DESCRIPTION="A set of simple scripts that provide basic desktop integ TERMUX_PKG_LICENSE="MIT" TERMUX_PKG_MAINTAINER="@termux" TERMUX_PKG_VERSION="1.2.1" +TERMUX_PKG_REVISION=1 TERMUX_PKG_SRCURL=https://gitlab.freedesktop.org/xdg/xdg-utils/-/archive/v${TERMUX_PKG_VERSION}/xdg-utils-v${TERMUX_PKG_VERSION}.tar.bz2 TERMUX_PKG_SHA256=93d510dccf328378f012fe195b4574c2fac1cd65a74d0852d6eaa72e5a2065a7 TERMUX_PKG_AUTO_UPDATE=true @@ -34,7 +35,7 @@ termux_step_create_debscripts() { set -e echo "Sideloading Perl File::MimeInfo ..." - cpan -fi File::MimeInfo + cpan -Ti File::MimeInfo exit 0 POSTINST_EOF From 016b45ff90e2e3bf91633b84fd826c22282ef496 Mon Sep 17 00:00:00 2001 From: Robert Kirkman Date: Wed, 5 Nov 2025 07:49:22 -0600 Subject: [PATCH 3/3] fix(main/perl): force `cpan` to never interactively prompt to use `local::lib`, just always default to it Gets rid of this infinite loop that can permanently freeze many noninteractive scripts which need to run `cpan`: ``` What approach do you want? (Choose 'local::lib', 'sudo' or 'manual') [local::lib] Warning: You do not have write permission for Perl library directories. To install modules, you need to configure a local Perl library directory or escalate your privileges. CPAN can help you by bootstrapping the local::lib module or by configuring itself to use 'sudo' (if available). You may also resolve this problem manually if you need to customize your setup. What approach do you want? (Choose 'local::lib', 'sudo' or 'manual') [local::lib] Warning: You do not have write permission for Perl library directories. To install modules, you need to configure a local Perl library directory or escalate your privileges. CPAN can help you by bootstrapping the local::lib module or by configuring itself to use 'sudo' (if available). You may also resolve this problem manually if you need to customize your setup. What approach do you want? (Choose 'local::lib', 'sudo' or 'manual') [local::lib] Warning: You do not have write permission for Perl library directories. To install modules, you need to configure a local Perl library directory or escalate your privileges. CPAN can help you by bootstrapping the local::lib module or by configuring itself to use 'sudo' (if available). You may also resolve this problem manually if you need to customize your setup. What approach do you want? (Choose 'local::lib', 'sudo' or 'manual') [local::lib] ``` --- packages/dpkg/dpkg-perl.subpackage.sh | 2 ++ packages/intltool/build.sh | 2 ++ packages/perl/build.sh | 2 +- packages/perl/cpan-force-auto-local-lib.patch | 10 ++++++++++ packages/sendxmpp/build.sh | 2 ++ x11-packages/xdg-menu/build.sh | 2 ++ x11-packages/xdg-utils/build.sh | 2 ++ 7 files changed, 21 insertions(+), 1 deletion(-) create mode 100644 packages/perl/cpan-force-auto-local-lib.patch diff --git a/packages/dpkg/dpkg-perl.subpackage.sh b/packages/dpkg/dpkg-perl.subpackage.sh index f6128b1e874d77..609bff9637db1c 100644 --- a/packages/dpkg/dpkg-perl.subpackage.sh +++ b/packages/dpkg/dpkg-perl.subpackage.sh @@ -8,6 +8,8 @@ termux_step_create_subpkg_debscripts() { #!$TERMUX_PREFIX/bin/bash set -e + export PERL_MM_USE_DEFAULT=1 + echo "Sideloading Perl Locale::gettext ..." cpan -Ti Locale::gettext diff --git a/packages/intltool/build.sh b/packages/intltool/build.sh index 765dfbb2c368e2..4a580d3134acbf 100644 --- a/packages/intltool/build.sh +++ b/packages/intltool/build.sh @@ -14,6 +14,8 @@ termux_step_create_debscripts() { #!$TERMUX_PREFIX/bin/bash set -e + export PERL_MM_USE_DEFAULT=1 + echo "Sideloading Perl XML::Parser..." cpan -Ti XML::Parser diff --git a/packages/perl/build.sh b/packages/perl/build.sh index 88cecf53785dbf..07cf85b9c03b5b 100644 --- a/packages/perl/build.sh +++ b/packages/perl/build.sh @@ -11,7 +11,7 @@ TERMUX_PKG_MAINTAINER="@termux" # - subversion TERMUX_PKG_VERSION=(5.40.3 1.6.2) -TERMUX_PKG_REVISION=1 +TERMUX_PKG_REVISION=2 TERMUX_PKG_SHA256=(65f63b4763ab6cb9bb3d5731dd10369e1705be3c59be9847d453eb60b349ab43 f74ab2a6cacc574c98398ae9d36660b4cc0ba0e3d34e87b24d27b9cd2a27787d) TERMUX_PKG_SRCURL=(https://www.cpan.org/src/5.0/perl-${TERMUX_PKG_VERSION[0]}.tar.xz diff --git a/packages/perl/cpan-force-auto-local-lib.patch b/packages/perl/cpan-force-auto-local-lib.patch new file mode 100644 index 00000000000000..5269c641488c2a --- /dev/null +++ b/packages/perl/cpan-force-auto-local-lib.patch @@ -0,0 +1,10 @@ +--- a/cpan/CPAN/lib/CPAN/FirstTime.pm ++++ b/cpan/CPAN/lib/CPAN/FirstTime.pm +@@ -904,7 +904,6 @@ sub init { + unless ( $matcher + || _can_write_to_libdirs() || _using_installbase() || _using_sudo() + ) { +- local $auto_config = 0; # We *must* ask, even under autoconfig + local *_real_prompt; # We *must* show prompt + my_prompt_loop(install_help => 'local::lib', $matcher, + 'local::lib|sudo|manual'); diff --git a/packages/sendxmpp/build.sh b/packages/sendxmpp/build.sh index 6fcb43e3e2caea..5da9c3871f7017 100644 --- a/packages/sendxmpp/build.sh +++ b/packages/sendxmpp/build.sh @@ -19,6 +19,8 @@ termux_step_create_debscripts() { #!$TERMUX_PREFIX/bin/bash set -e + export PERL_MM_USE_DEFAULT=1 + echo "Sideloading Perl Authen::SASL and Net::XMPP ..." cpan -Ti Authen::SASL Net::XMPP diff --git a/x11-packages/xdg-menu/build.sh b/x11-packages/xdg-menu/build.sh index e03e8791355425..68649cd323c80f 100644 --- a/x11-packages/xdg-menu/build.sh +++ b/x11-packages/xdg-menu/build.sh @@ -38,6 +38,8 @@ termux_step_create_debscripts() { #!$TERMUX_PREFIX/bin/bash set -e + export PERL_MM_USE_DEFAULT=1 + echo "Sideloading Perl XML::Parser..." cpan -Ti XML::Parser diff --git a/x11-packages/xdg-utils/build.sh b/x11-packages/xdg-utils/build.sh index 49dae605558546..74da6ff3b857ec 100644 --- a/x11-packages/xdg-utils/build.sh +++ b/x11-packages/xdg-utils/build.sh @@ -34,6 +34,8 @@ termux_step_create_debscripts() { #!$TERMUX_PREFIX/bin/bash set -e + export PERL_MM_USE_DEFAULT=1 + echo "Sideloading Perl File::MimeInfo ..." cpan -Ti File::MimeInfo