+Date: Thu, 2 Feb 2023 11:18:36 -0600
+Subject: [PATCH] Fix CMake version symbol testing
+
+Do not check for version symbol support if the necessary linker flag is
+not supported.
+
+Differential Revision: https://reviews.llvm.org/D143200
+---
+ runtime/cmake/config-ix.cmake | 6 +++++-
+ 1 file changed, 5 insertions(+), 1 deletion(-)
+
+diff --git a/runtime/cmake/config-ix.cmake b/runtime/cmake/config-ix.cmake
+index 0fe1266..2ff211f 100644
+--- a/runtime/cmake/config-ix.cmake
++++ b/runtime/cmake/config-ix.cmake
+@@ -242,7 +242,11 @@ endif()
+
+ # Checking features
+ # Check if version symbol assembler directives are supported
+-libomp_check_version_symbols(LIBOMP_HAVE_VERSION_SYMBOLS)
++if (LIBOMP_HAVE_VERSION_SCRIPT_FLAG)
++ libomp_check_version_symbols(LIBOMP_HAVE_VERSION_SYMBOLS)
++else()
++ set(LIBOMP_HAVE_VERSION_SYMBOLS FALSE)
++endif()
+
+ # Check if quad precision types are available
+ if(CMAKE_C_COMPILER_ID STREQUAL "GNU")
diff --git a/packages/coinor-cbc/build.sh b/packages/coinor-cbc/build.sh
new file mode 100644
index 00000000000000..acb61273a66004
--- /dev/null
+++ b/packages/coinor-cbc/build.sh
@@ -0,0 +1,17 @@
+TERMUX_PKG_HOMEPAGE=https://github.com/coin-or/Cbc
+TERMUX_PKG_DESCRIPTION="An open-source mixed integer linear programming solver"
+TERMUX_PKG_LICENSE="EPL-2.0"
+TERMUX_PKG_MAINTAINER="@termux"
+TERMUX_PKG_VERSION="2.10.12"
+TERMUX_PKG_SRCURL=https://github.com/coin-or/Cbc/archive/refs/tags/releases/${TERMUX_PKG_VERSION#*:}.tar.gz
+TERMUX_PKG_SHA256=9ed71e4b61668462fc3794c102e26b4bb01a047efbbbcbd69ae7bde1f04f46a8
+TERMUX_PKG_AUTO_UPDATE=true
+TERMUX_PKG_UPDATE_METHOD=repology
+TERMUX_PKG_DEPENDS="coinor-clp, libc++, libcoinor-cgl, libcoinor-osi, libcoinor-utils"
+
+termux_step_pre_configure() {
+ local _libgcc_file="$($CC -print-libgcc-file-name)"
+ local _libgcc_path="$(dirname $_libgcc_file)"
+ local _libgcc_name="$(basename $_libgcc_file)"
+ LDFLAGS+=" -L$_libgcc_path -l:$_libgcc_name"
+}
diff --git a/packages/coinor-clp/build.sh b/packages/coinor-clp/build.sh
index 93b86245845a24..3181eb19356baf 100644
--- a/packages/coinor-clp/build.sh
+++ b/packages/coinor-clp/build.sh
@@ -2,9 +2,9 @@ TERMUX_PKG_HOMEPAGE=https://github.com/coin-or/Clp
TERMUX_PKG_DESCRIPTION="An open-source linear programming solver"
TERMUX_PKG_LICENSE="EPL-2.0"
TERMUX_PKG_MAINTAINER="@termux"
-TERMUX_PKG_VERSION=1:1.17.9
+TERMUX_PKG_VERSION="1:1.17.10"
TERMUX_PKG_SRCURL=https://github.com/coin-or/Clp/archive/refs/tags/releases/${TERMUX_PKG_VERSION#*:}.tar.gz
-TERMUX_PKG_SHA256=b02109be54e2c9c6babc9480c242b2c3c7499368cfca8c0430f74782a694a49f
+TERMUX_PKG_SHA256=0d79ece896cdaa4a3855c37f1c28e6c26285f74d45f635046ca0b6d68a509885
TERMUX_PKG_AUTO_UPDATE=true
TERMUX_PKG_UPDATE_METHOD=repology
TERMUX_PKG_DEPENDS="libc++, libcoinor-osi, libcoinor-utils"
diff --git a/packages/colm/build.sh b/packages/colm/build.sh
index e94605323b84a1..17ad57329933aa 100644
--- a/packages/colm/build.sh
+++ b/packages/colm/build.sh
@@ -22,7 +22,7 @@ termux_step_host_build() {
for f in ${srcdir}/src/*.lm; do
ln -sf ${f} src/$(basename ${f})
done
- make -j $TERMUX_MAKE_PROCESSES
+ make -j $TERMUX_PKG_MAKE_PROCESSES
}
termux_step_pre_configure() {
diff --git a/packages/command-not-found/build.sh b/packages/command-not-found/build.sh
index 5e8ef883ff6b57..0f9c5fc314700e 100644
--- a/packages/command-not-found/build.sh
+++ b/packages/command-not-found/build.sh
@@ -3,7 +3,7 @@ TERMUX_PKG_DESCRIPTION="Suggest installation of packages in interactive shell se
TERMUX_PKG_LICENSE="Apache-2.0"
TERMUX_PKG_MAINTAINER="@termux"
TERMUX_PKG_VERSION=2.4.0
-TERMUX_PKG_REVISION=26
+TERMUX_PKG_REVISION=70
TERMUX_PKG_SRCURL=https://github.com/termux/command-not-found/archive/${TERMUX_PKG_VERSION}.tar.gz
TERMUX_PKG_SHA256=4b7d3684437a33c343a31db00116a3170d24f0cfeebe1f75951b785cf5736aac
TERMUX_PKG_DEPENDS="libc++"
diff --git a/packages/composer/build.sh b/packages/composer/build.sh
index 4a01b1ff7fe4c8..263adc75153b09 100644
--- a/packages/composer/build.sh
+++ b/packages/composer/build.sh
@@ -2,7 +2,7 @@ TERMUX_PKG_HOMEPAGE=https://getcomposer.org/
TERMUX_PKG_DESCRIPTION="Dependency Manager for PHP"
TERMUX_PKG_LICENSE="MIT"
TERMUX_PKG_MAINTAINER="@termux"
-TERMUX_PKG_VERSION="2.7.6"
+TERMUX_PKG_VERSION="2.8.8"
TERMUX_PKG_GIT_BRANCH=$TERMUX_PKG_VERSION
TERMUX_PKG_SRCURL=git+https://github.com/composer/composer
TERMUX_PKG_DEPENDS="php"
diff --git a/packages/convertlit/build.sh b/packages/convertlit/build.sh
new file mode 100644
index 00000000000000..c6f403694fb688
--- /dev/null
+++ b/packages/convertlit/build.sh
@@ -0,0 +1,36 @@
+# Dependency for ebook-tools
+TERMUX_PKG_HOMEPAGE='http://www.convertlit.com/'
+TERMUX_PKG_DESCRIPTION='An extractor/converter for .LIT eBooks'
+TERMUX_PKG_LICENSE="GPL-2.0"
+TERMUX_PKG_MAINTAINER="@termux"
+TERMUX_PKG_VERSION="1.8"
+TERMUX_PKG_REVISION=1
+TERMUX_PKG_SRCURL=http://www.convertlit.com/clit${TERMUX_PKG_VERSION/./}src.zip
+TERMUX_PKG_SHA256=d70a85f5b945104340d56f48ec17bcf544e3bb3c35b1b3d58d230be699e557ba
+TERMUX_PKG_BUILD_DEPENDS="libtommath-static"
+TERMUX_PKG_AUTO_UPDATE=true
+TERMUX_PKG_BUILD_IN_SRC=true
+
+termux_step_get_source() {
+ termux_download "$TERMUX_PKG_SRCURL" "$TERMUX_PKG_CACHEDIR/${TERMUX_PKG_SRCURL##*/}" "$TERMUX_PKG_SHA256"
+ unzip "$TERMUX_PKG_CACHEDIR/${TERMUX_PKG_SRCURL##*/}" -d $TERMUX_PKG_SRCDIR
+}
+
+termux_step_configure() {
+ # Link to correct libtommath and use system LDFLAGS
+ sed -e 's|../libtommath-0.30/libtommath.a|'$TERMUX_PREFIX'/lib/libtommath.a ${LDFLAGS}|' -i clit${TERMUX_PKG_VERSION/./}/Makefile
+ # Use system CFLAGS
+ sed -e 's|CFLAGS=-O3 -Wall|CFLAGS+=|' -i lib/Makefile
+ sed -e 's|CFLAGS=-funsigned-char -Wall -O2|CFLAGS+=|' -i clit${TERMUX_PKG_VERSION/./}/Makefile
+ sed -e 's|gcc -o|${CC} -o|' -i clit${TERMUX_PKG_VERSION/./}/Makefile
+}
+
+termux_step_make() {
+ export CFLAGS+=" -Wno-implicit-function-declaration"
+ make -C lib
+ make -C clit${TERMUX_PKG_VERSION/./}
+}
+
+termux_step_make_install() {
+ install -Dm755 "clit${TERMUX_PKG_VERSION/./}/clit" -t "$TERMUX_PREFIX/bin"
+}
diff --git a/packages/cookcli/build.sh b/packages/cookcli/build.sh
index bc456c3e84fcd1..2f4ce3a9749bc4 100644
--- a/packages/cookcli/build.sh
+++ b/packages/cookcli/build.sh
@@ -3,9 +3,9 @@ TERMUX_PKG_DESCRIPTION="A suite of tools to create shopping lists and maintain f
TERMUX_PKG_LICENSE="MIT"
TERMUX_PKG_LICENSE_FILE="LICENSE"
TERMUX_PKG_MAINTAINER="@termux"
-TERMUX_PKG_VERSION="0.8.0"
+TERMUX_PKG_VERSION="0.10.0"
TERMUX_PKG_SRCURL=https://github.com/cooklang/cookcli/archive/refs/tags/v${TERMUX_PKG_VERSION}.tar.gz
-TERMUX_PKG_SHA256=050fcbd7f8f938bd6ffc898a403795101807cfa6d76c787e991c8d90031405c6
+TERMUX_PKG_SHA256=6832191a18e4e4a2d9f5e3227631b7c598d239f01f0560bc226cc3ef3948194b
TERMUX_PKG_BUILD_IN_SRC=true
TERMUX_PKG_AUTO_UPDATE=true
@@ -15,7 +15,8 @@ termux_step_pre_configure() {
# i686: __atomic_load
if [[ "${TERMUX_ARCH}" == "i686" ]]; then
- RUSTFLAGS+=" -C link-arg=$(${CC} -print-libgcc-file-name)"
+ local env_host=$(printf $CARGO_TARGET_NAME | tr a-z A-Z | sed s/-/_/g)
+ export CARGO_TARGET_${env_host}_RUSTFLAGS+=" -C link-arg=$(${CC} -print-libgcc-file-name)"
fi
}
@@ -25,7 +26,7 @@ termux_step_make() {
npm run build
popd
- cargo build --jobs "${TERMUX_MAKE_PROCESSES}" --target "${CARGO_TARGET_NAME}" --release
+ cargo build --jobs "${TERMUX_PKG_MAKE_PROCESSES}" --target "${CARGO_TARGET_NAME}" --release
}
termux_step_make_install() {
diff --git a/packages/coreutils/backport-915004f.patch b/packages/coreutils/backport-915004f.patch
new file mode 100644
index 00000000000000..4829635a000a75
--- /dev/null
+++ b/packages/coreutils/backport-915004f.patch
@@ -0,0 +1,98 @@
+From 915004f403cb25fadb207ddfdbe6a2f43bd44fac Mon Sep 17 00:00:00 2001
+From: =?utf8?q?P=C3=A1draig=20Brady?=
+Date: Fri, 17 Jan 2025 17:29:34 +0000
+Subject: [PATCH] ls: fix crash with --context
+
+* src/ls.c (main): Flag that we need to stat()
+if we're going to get security context (call file_has_aclinfo_cache).
+(file_has_aclinfo_cache): Be defensive and only lookup the device
+for the file if the stat has been performed.
+(has_capability_cache): Likewise.
+* tests/ls/selinux-segfault.sh: Add a test case.
+* NEWS: Mention the bug fix.
+Reported by Bruno Haible.
+---
+ NEWS | 5 +++++
+ src/ls.c | 10 +++++-----
+ tests/ls/selinux-segfault.sh | 3 +++
+ 3 files changed, 13 insertions(+), 5 deletions(-)
+
+diff --git a/NEWS b/NEWS
+index 9be61e4c4..c9ba5f196 100644
+--- a/NEWS
++++ b/NEWS
+@@ -2,6 +2,11 @@ GNU coreutils NEWS -*- outline -*-
+
+ * Noteworthy changes in release ?.? (????-??-??) [?]
+
++** Bug fixes
++
++ `ls -Z dir` would crash.
++ [bug introduced in coreutils-9.6]
++
+
+ * Noteworthy changes in release 9.6 (2025-01-17) [stable]
+
+diff --git a/src/ls.c b/src/ls.c
+index 321536021..f67167f16 100644
+--- a/src/ls.c
++++ b/src/ls.c
+@@ -1768,7 +1768,7 @@ main (int argc, char **argv)
+
+ format_needs_stat = ((sort_type == sort_time) | (sort_type == sort_size)
+ | (format == long_format)
+- | print_block_size | print_hyperlink);
++ | print_block_size | print_hyperlink | print_scontext);
+ format_needs_type = ((! format_needs_stat)
+ & (recursive | print_with_color | print_scontext
+ | directories_first
+@@ -3309,7 +3309,7 @@ file_has_aclinfo_cache (char const *file, struct fileinfo *f,
+ static int unsupported_scontext_err;
+ static dev_t unsupported_device;
+
+- if (f->stat.st_dev == unsupported_device)
++ if (f->stat_ok && f->stat.st_dev == unsupported_device)
+ {
+ ai->buf = ai->u.__gl_acl_ch;
+ ai->size = 0;
+@@ -3322,7 +3322,7 @@ file_has_aclinfo_cache (char const *file, struct fileinfo *f,
+ errno = 0;
+ int n = file_has_aclinfo (file, ai, flags);
+ int err = errno;
+- if (n <= 0 && !acl_errno_valid (err))
++ if (f->stat_ok && n <= 0 && !acl_errno_valid (err))
+ {
+ unsupported_return = n;
+ unsupported_scontext = ai->scontext;
+@@ -3342,14 +3342,14 @@ has_capability_cache (char const *file, struct fileinfo *f)
+ found that has_capability fails indicating lack of support. */
+ static dev_t unsupported_device;
+
+- if (f->stat.st_dev == unsupported_device)
++ if (f->stat_ok && f->stat.st_dev == unsupported_device)
+ {
+ errno = ENOTSUP;
+ return 0;
+ }
+
+ bool b = has_capability (file);
+- if ( !b && !acl_errno_valid (errno))
++ if (f->stat_ok && !b && !acl_errno_valid (errno))
+ unsupported_device = f->stat.st_dev;
+ return b;
+ }
+diff --git a/tests/ls/selinux-segfault.sh b/tests/ls/selinux-segfault.sh
+index 11623acb3..1cac2b5fc 100755
+--- a/tests/ls/selinux-segfault.sh
++++ b/tests/ls/selinux-segfault.sh
+@@ -30,4 +30,7 @@ mkdir sedir || framework_failure_
+ ln -sf missing sedir/broken || framework_failure_
+ returns_ 1 ls -L -R -Z -m sedir > out || fail=1
+
++# ls 9.6 would segfault with the following
++ls -Z . > out || fail=1
++
+ Exit $fail
+--
+2.17.1
+
diff --git a/packages/coreutils/backport-d89387b.patch b/packages/coreutils/backport-d89387b.patch
new file mode 100644
index 00000000000000..f6c61de1b1f27f
--- /dev/null
+++ b/packages/coreutils/backport-d89387b.patch
@@ -0,0 +1,34 @@
+From d89387b293068773c74f37ebf8fb692ad962b43a Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?P=C3=A1draig=20Brady?=
+Date: Thu, 20 Mar 2025 18:40:01 +0000
+Subject: [PATCH] ls: fix crash on systems with SELinux but without xattr
+ support
+
+This was seen on termux with ./configure --disable-xattr
+where listxattr() and getxattr() returned ENOTSUP.
+Then the valid security context obtained by file_has_aclinfo()
+was discounted, and problematically then freed multiple times.
+Reported at https://github.com/termux/termux-packages/issues/23752
+
+* src/ls.c (file_has_aclinfo_cache): Only discount the returned
+acl info when all components are defaulted due to being unsupported.
+---
+ NEWS | 3 ++-
+ src/ls.c | 3 ++-
+ 2 files changed, 4 insertions(+), 2 deletions(-)
+
+--- a/src/ls.c
++++ b/src/ls.c
+@@ -3327,7 +3327,8 @@ file_has_aclinfo_cache (char const *file, struct fileinfo *f,
+ errno = 0;
+ int n = file_has_aclinfo (file, ai, flags);
+ int err = errno;
+- if (f->stat_ok && n <= 0 && !acl_errno_valid (err))
++ if (f->stat_ok && n <= 0 && !acl_errno_valid (err)
++ && (!(flags & ACL_GET_SCONTEXT) || !acl_errno_valid (ai->scontext_err)))
+ {
+ unsupported_return = n;
+ unsupported_scontext = ai->scontext;
+--
+2.48.1
+
diff --git a/packages/coreutils/build.sh b/packages/coreutils/build.sh
index e226caf18509fa..bbd713d22f2473 100644
--- a/packages/coreutils/build.sh
+++ b/packages/coreutils/build.sh
@@ -1,14 +1,18 @@
TERMUX_PKG_HOMEPAGE=https://www.gnu.org/software/coreutils/
TERMUX_PKG_DESCRIPTION="Basic file, shell and text manipulation utilities from the GNU project"
TERMUX_PKG_LICENSE="GPL-3.0"
-TERMUX_PKG_MAINTAINER="@termux"
-TERMUX_PKG_VERSION=9.5
+TERMUX_PKG_MAINTAINER="Joshua Kahn @TomJo2000"
+TERMUX_PKG_VERSION=9.6
+TERMUX_PKG_REVISION=1
TERMUX_PKG_SRCURL=https://mirrors.kernel.org/gnu/coreutils/coreutils-${TERMUX_PKG_VERSION}.tar.xz
-TERMUX_PKG_SHA256=cd328edeac92f6a665de9f323c93b712af1858bc2e0d88f3f7100469470a1b8a
-TERMUX_PKG_DEPENDS="libandroid-support, libgmp, libiconv"
+TERMUX_PKG_SHA256=7a0124327b398fd9eb1a6abde583389821422c744ffa10734b24f557610d3283
+TERMUX_PKG_DEPENDS="libandroid-selinux, libandroid-support, libgmp, libiconv"
TERMUX_PKG_BREAKS="chroot, busybox (<< 1.30.1-4)"
TERMUX_PKG_REPLACES="chroot, busybox (<< 1.30.1-4)"
TERMUX_PKG_ESSENTIAL=true
+# On device build is unsupported as it removes utility 'ln' (and maybe
+# something else) in the installation process.
+TERMUX_PKG_ON_DEVICE_BUILD_NOT_SUPPORTED=true
# pinky has no usage on Android.
# df does not work either, let system binary prevail.
@@ -31,10 +35,5 @@ termux_step_pre_configure() {
fi
CPPFLAGS+=" -D__USE_FORTIFY_LEVEL=0"
-
- # On device build is unsupported as it removes utility 'ln' (and maybe
- # something else) in the installation process.
- if $TERMUX_ON_DEVICE_BUILD; then
- termux_error_exit "Package '$TERMUX_PKG_NAME' is not safe for on-device builds."
- fi
+ LDFLAGS+=" -landroid-selinux"
}
diff --git a/packages/coreutils/selinux.patch b/packages/coreutils/selinux.patch
new file mode 100644
index 00000000000000..cf535f48aad005
--- /dev/null
+++ b/packages/coreutils/selinux.patch
@@ -0,0 +1,176 @@
+diff --git a/src/cp.c b/src/cp.c
+index a0ec06714..da3f6a8a7 100644
+--- a/src/cp.c
++++ b/src/cp.c
+@@ -993,7 +993,7 @@ main (int argc, char **argv)
+
+ atexit (close_stdin);
+
+- selinux_enabled = (0 < is_selinux_enabled ());
++ selinux_enabled = (0 < is_selinux_enabled () && geteuid () == 0);
+ cp_option_init (&x);
+
+ while ((c = getopt_long (argc, argv, "abdfHilLnprst:uvxPRS:TZ",
+@@ -1174,7 +1174,7 @@ main (int argc, char **argv)
+ {
+ error (0, 0,
+ _("warning: ignoring --context; "
+- "it requires an SELinux-enabled kernel"));
++ "it requires an SELinux-enabled kernel and root access"));
+ }
+ break;
+
+@@ -1253,7 +1253,7 @@ main (int argc, char **argv)
+ if (x.require_preserve_context && ! selinux_enabled)
+ error (EXIT_FAILURE, 0,
+ _("cannot preserve security context "
+- "without an SELinux-enabled kernel"));
++ "without an SELinux-enabled kernel and root access"));
+
+ /* FIXME: This handles new files. But what about existing files?
+ I.e., if updating a tree, new files would have the specified context,
+diff --git a/src/install.c b/src/install.c
+index b3b26abdb..11caa873b 100644
+--- a/src/install.c
++++ b/src/install.c
+@@ -325,6 +325,10 @@ setdefaultfilecon (char const *file)
+ struct stat st;
+ char *scontext_raw = nullptr;
+
++ /* NOTE: Return early, before `install`'s selinux logic,
++ * because we do not have suitable workaround for it */
++ return;
++
+ if (selinux_enabled != 1)
+ {
+ /* Indicate no context found. */
+@@ -789,7 +793,7 @@ main (int argc, char **argv)
+ bool strip_program_specified = false;
+ char const *scontext = nullptr;
+ /* set iff kernel has extra selinux system calls */
+- selinux_enabled = (0 < is_selinux_enabled ());
++ selinux_enabled = (0 < is_selinux_enabled () && geteuid () == 0);
+
+ initialize_main (&argc, &argv);
+ set_program_name (argv[0]);
+@@ -876,7 +880,7 @@ main (int argc, char **argv)
+ if (! selinux_enabled)
+ {
+ error (0, 0, _("WARNING: ignoring --preserve-context; "
+- "this kernel is not SELinux-enabled"));
++ "this kernel is not SELinux-enabled, or you are using Termux and not running as root"));
+ break;
+ }
+ x.preserve_security_context = true;
+@@ -902,7 +906,7 @@ main (int argc, char **argv)
+ {
+ error (0, 0,
+ _("warning: ignoring --context; "
+- "it requires an SELinux-enabled kernel"));
++ "it requires an SELinux-enabled kernel and root access"));
+ }
+ break;
+ case_GETOPT_HELP_CHAR;
+diff --git a/src/mkdir.c b/src/mkdir.c
+index df4c81976..7225c21b7 100644
+--- a/src/mkdir.c
++++ b/src/mkdir.c
+@@ -228,7 +228,7 @@ main (int argc, char **argv)
+ /* We don't yet support -Z to restore context with SMACK. */
+ scontext = optarg;
+ }
+- else if (is_selinux_enabled () > 0)
++ else if (is_selinux_enabled () > 0 && geteuid () == 0)
+ {
+ if (optarg)
+ scontext = optarg;
+@@ -244,7 +244,7 @@ main (int argc, char **argv)
+ {
+ error (0, 0,
+ _("warning: ignoring --context; "
+- "it requires an SELinux/SMACK-enabled kernel"));
++ "it requires an SELinux/SMACK-enabled kernel and root access"));
+ }
+ break;
+ case_GETOPT_HELP_CHAR;
+diff --git a/src/mkfifo.c b/src/mkfifo.c
+index 52bfa566a..fad605386 100644
+--- a/src/mkfifo.c
++++ b/src/mkfifo.c
+@@ -102,7 +102,7 @@ main (int argc, char **argv)
+ /* We don't yet support -Z to restore context with SMACK. */
+ scontext = optarg;
+ }
+- else if (is_selinux_enabled () > 0)
++ else if (is_selinux_enabled () > 0 && geteuid () == 0)
+ {
+ if (optarg)
+ scontext = optarg;
+@@ -118,7 +118,7 @@ main (int argc, char **argv)
+ {
+ error (0, 0,
+ _("warning: ignoring --context; "
+- "it requires an SELinux/SMACK-enabled kernel"));
++ "it requires an SELinux/SMACK-enabled kernel and root access"));
+ }
+ break;
+ case_GETOPT_HELP_CHAR;
+diff --git a/src/mknod.c b/src/mknod.c
+index 6bfa0f7f7..6ff36f21c 100644
+--- a/src/mknod.c
++++ b/src/mknod.c
+@@ -119,7 +119,7 @@ main (int argc, char **argv)
+ /* We don't yet support -Z to restore context with SMACK. */
+ scontext = optarg;
+ }
+- else if (is_selinux_enabled () > 0)
++ else if (is_selinux_enabled () > 0 && geteuid () == 0)
+ {
+ if (optarg)
+ scontext = optarg;
+@@ -135,7 +135,7 @@ main (int argc, char **argv)
+ {
+ error (0, 0,
+ _("warning: ignoring --context; "
+- "it requires an SELinux/SMACK-enabled kernel"));
++ "it requires an SELinux/SMACK-enabled kernel and root access"));
+ }
+ break;
+ case_GETOPT_HELP_CHAR;
+diff --git a/src/mv.c b/src/mv.c
+index cf1ac56e8..4b68574e0 100644
+--- a/src/mv.c
++++ b/src/mv.c
+@@ -120,7 +120,7 @@ rm_option_init (struct rm_options *x)
+ static void
+ cp_option_init (struct cp_options *x)
+ {
+- bool selinux_enabled = (0 < is_selinux_enabled ());
++ bool selinux_enabled = (0 < is_selinux_enabled () && geteuid () == 0);
+
+ cp_options_default (x);
+ x->copy_as_regular = false; /* FIXME: maybe make this an option */
+@@ -326,7 +326,7 @@ main (int argc, char **argv)
+ bool no_target_directory = false;
+ int n_files;
+ char **file;
+- bool selinux_enabled = (0 < is_selinux_enabled ());
++ bool selinux_enabled = (0 < is_selinux_enabled () && geteuid () == 0);
+
+ initialize_main (&argc, &argv);
+ set_program_name (argv[0]);
+diff --git a/src/runcon.c b/src/runcon.c
+index 32c419427..b62538a41 100644
+--- a/src/runcon.c
++++ b/src/runcon.c
+@@ -190,8 +190,8 @@ main (int argc, char **argv)
+ usage (EXIT_CANCELED);
+ }
+
+- if (is_selinux_enabled () != 1)
+- error (EXIT_CANCELED, 0, _("%s may be used only on a SELinux kernel"),
++ if (is_selinux_enabled () != 1 || geteuid () != 0)
++ error (EXIT_CANCELED, 0, _("%s may be used only on a SELinux kernel and must be run as root"),
+ program_name);
+
+ if (context)
diff --git a/packages/cowsay/build.sh b/packages/cowsay/build.sh
index 6f2f5eb9fd52b9..079174d50d478d 100644
--- a/packages/cowsay/build.sh
+++ b/packages/cowsay/build.sh
@@ -1,10 +1,11 @@
-TERMUX_PKG_HOMEPAGE=https://en.wikipedia.org/wiki/Cowsay
+TERMUX_PKG_HOMEPAGE=https://cowsay.diamonds/
TERMUX_PKG_DESCRIPTION="Program which generates ASCII pictures of a cow with a message"
TERMUX_PKG_LICENSE="GPL-2.0"
TERMUX_PKG_MAINTAINER="@termux"
-TERMUX_PKG_VERSION=3.7.0
+TERMUX_PKG_VERSION="3.8.4"
TERMUX_PKG_SRCURL=https://github.com/cowsay-org/cowsay/archive/refs/tags/v${TERMUX_PKG_VERSION}.tar.gz
-TERMUX_PKG_SHA256=af13a93f1559ea435403cf11eaa6c46be5bf03ac165a4acb471c66a4976167e0
+TERMUX_PKG_SHA256=c15bc10712835d3a9bcda780dc9453362567bf48d1185905dc7ef2334d79aadd
TERMUX_PKG_DEPENDS="perl"
TERMUX_PKG_PLATFORM_INDEPENDENT=true
TERMUX_PKG_BUILD_IN_SRC=true
+TERMUX_PKG_AUTO_UPDATE=true
diff --git a/packages/cppcheck/build.sh b/packages/cppcheck/build.sh
index 0b1365c687c9d4..8356a80a9e2243 100644
--- a/packages/cppcheck/build.sh
+++ b/packages/cppcheck/build.sh
@@ -2,11 +2,11 @@ TERMUX_PKG_HOMEPAGE=https://github.com/danmar/cppcheck
TERMUX_PKG_DESCRIPTION="tool for static C/C++ code analysis"
TERMUX_PKG_LICENSE="GPL-3.0"
TERMUX_PKG_MAINTAINER="@termux"
-TERMUX_PKG_VERSION="2.14.1"
+TERMUX_PKG_VERSION="2.17.1"
TERMUX_PKG_AUTO_UPDATE=true
TERMUX_PKG_UPDATE_METHOD=repology # Upstream only releases major versions theough GitHub. Other minor updates are released using git tags, better rely on repology for updated versiom
TERMUX_PKG_SRCURL=https://github.com/danmar/cppcheck/archive/refs/tags/$TERMUX_PKG_VERSION.tar.gz
-TERMUX_PKG_SHA256=22d1403fbc3158f35b5216d7b0a50bbaf0c80bf6663933a71f65cc4fc307ff3d
+TERMUX_PKG_SHA256=bfd681868248ec03855ca7c2aea7bcb1f39b8b18860d76aec805a92a967b966c
TERMUX_PKG_DEPENDS="libc++"
# Prevent running dmake during builds. dmake just generates Makefile which we
diff --git a/packages/cpufetch/Makefile.patch b/packages/cpufetch/Makefile.patch
index ee5beb2c1f58b4..b912567c840728 100644
--- a/packages/cpufetch/Makefile.patch
+++ b/packages/cpufetch/Makefile.patch
@@ -1,5 +1,5 @@
---- ./Makefile.orig 2022-09-26 22:32:14.860176950 +0530
-+++ ./Makefile 2022-09-26 22:37:14.300176836 +0530
+--- a/Makefile
++++ b/Makefile
@@ -11,8 +11,8 @@
COMMON_HDR = $(SRC_COMMON)ascii.h $(SRC_COMMON)cpu.h $(SRC_COMMON)udev.h $(SRC_COMMON)printer.h $(SRC_COMMON)args.h $(SRC_COMMON)global.h
@@ -8,6 +8,6 @@
- arch := $(shell uname -m)
+ GIT_VERSION := ""
+ arch := ${TERMUX_ARCH}
- ifeq ($(arch), $(filter $(arch), x86_64 amd64 i386 i486 i586 i686))
- SRC_DIR=src/x86/
- SOURCE += $(COMMON_SRC) $(SRC_DIR)cpuid.c $(SRC_DIR)apic.c $(SRC_DIR)cpuid_asm.c $(SRC_DIR)uarch.c
+ os := $(shell uname -s)
+
+ ifeq ($(os), Linux)
diff --git a/packages/cpufetch/build.sh b/packages/cpufetch/build.sh
index 3303a5c9ac2a0a..d0a5735f1dbb8b 100644
--- a/packages/cpufetch/build.sh
+++ b/packages/cpufetch/build.sh
@@ -2,8 +2,8 @@ TERMUX_PKG_HOMEPAGE=https://github.com/Dr-Noob/cpufetch
TERMUX_PKG_DESCRIPTION="Simple yet fancy CPU architecture fetching tool"
TERMUX_PKG_LICENSE="GPL-2.0"
TERMUX_PKG_MAINTAINER="@termux"
-TERMUX_PKG_VERSION="1.05"
+TERMUX_PKG_VERSION="1.06"
TERMUX_PKG_SRCURL=https://github.com/Dr-Noob/cpufetch/archive/refs/tags/v${TERMUX_PKG_VERSION}.tar.gz
-TERMUX_PKG_SHA256=82c8195cc535ad468fa2e61fa9648bb09d55cbcc59f76a72b66bd99fd290a7e6
+TERMUX_PKG_SHA256=b8ec1339cf3a3bb9325cde7fb0748dd609043e8d2938c292956da7e457bdb7d9
TERMUX_PKG_AUTO_UPDATE=true
TERMUX_PKG_BUILD_IN_SRC=true
diff --git a/packages/crawl/build.sh b/packages/crawl/build.sh
index 9f29ae4e31e892..1cc9d8d34d2791 100644
--- a/packages/crawl/build.sh
+++ b/packages/crawl/build.sh
@@ -2,9 +2,10 @@ TERMUX_PKG_HOMEPAGE=https://crawl.develz.org/
TERMUX_PKG_DESCRIPTION="Roguelike adventure through dungeons filled with dangerous monsters"
TERMUX_PKG_LICENSE="GPL-2.0"
TERMUX_PKG_MAINTAINER="@termux"
-TERMUX_PKG_VERSION="0.31.0"
+TERMUX_PKG_VERSION="0.32.1"
TERMUX_PKG_SRCURL=https://github.com/crawl/crawl/archive/refs/tags/${TERMUX_PKG_VERSION}.tar.gz
-TERMUX_PKG_SHA256=23153c36dbf27e1910f4386e3ba112f64bd8489d53aa5df2b57c9536db752c0a
+TERMUX_PKG_SHA256=8b9330a9a8156a7b93cc0964b5cc7cba8312f0cf745b64a072432f17f67f889d
+TERMUX_PKG_AUTO_UPDATE=true
TERMUX_PKG_DEPENDS="libc++, liblua51, libsqlite, ncurses, zlib"
TERMUX_PKG_BUILD_IN_SRC=true
TERMUX_PKG_EXTRA_MAKE_ARGS="
diff --git a/packages/croc/build.sh b/packages/croc/build.sh
index 269595ecf31cf9..ba4c4b92a9e5c0 100644
--- a/packages/croc/build.sh
+++ b/packages/croc/build.sh
@@ -2,9 +2,9 @@ TERMUX_PKG_HOMEPAGE=https://github.com/schollz/croc
TERMUX_PKG_DESCRIPTION="Easily and securely send things from one computer to another"
TERMUX_PKG_LICENSE=MIT
TERMUX_PKG_MAINTAINER="@termux"
-TERMUX_PKG_VERSION="1:10.0.5"
+TERMUX_PKG_VERSION="1:10.2.2"
TERMUX_PKG_SRCURL=https://github.com/schollz/croc/archive/refs/tags/v${TERMUX_PKG_VERSION:2}.tar.gz
-TERMUX_PKG_SHA256=a5d1dc841d01a15e7ccec4280aa0905c69d4076236e1dd53513cde90097688a7
+TERMUX_PKG_SHA256=1d892bbf3f8dacd0f528f683ab6c3678483374b17076187da7d1af805326fa68
TERMUX_PKG_AUTO_UPDATE=true
TERMUX_PKG_BUILD_IN_SRC=true
@@ -13,7 +13,9 @@ termux_step_make() {
termux_setup_golang
- go build -o croc -trimpath
+ # See https://github.com/wlynxg/anet?tab=readme-ov-file#how-to-build-with-go-1230-or-later
+ # regarding -ldflags=-checklinkname=0:
+ go build -ldflags=-checklinkname=0 -o croc -trimpath
}
termux_step_make_install() {
diff --git a/packages/cronie/build.sh b/packages/cronie/build.sh
index 23fa4ed3cfe8e2..00735d5b0e7dfb 100644
--- a/packages/cronie/build.sh
+++ b/packages/cronie/build.sh
@@ -4,6 +4,7 @@ TERMUX_PKG_LICENSE="ISC, BSD 2-Clause, BSD 3-Clause, GPL-2.0, LGPL-2.1"
TERMUX_PKG_LICENSE_FILE="COPYING, COPYING.obstack"
TERMUX_PKG_MAINTAINER="@termux"
TERMUX_PKG_VERSION="1.7.2"
+TERMUX_PKG_REVISION=2
TERMUX_PKG_SRCURL=https://github.com/cronie-crond/cronie/releases/download/cronie-${TERMUX_PKG_VERSION}/cronie-${TERMUX_PKG_VERSION}.tar.gz
TERMUX_PKG_SHA256=f1da374a15ba7605cf378347f96bc8b678d3d7c0765269c8242cfe5b0789c571
TERMUX_PKG_AUTO_UPDATE=true
@@ -12,6 +13,7 @@ TERMUX_PKG_DEPENDS="dash"
TERMUX_PKG_RECOMMENDS="nano"
TERMUX_PKG_SUGGESTS="termux-services"
TERMUX_PKG_CONFLICTS="busybox (<< 1.31.1-11)"
+TERMUX_PKG_REPLACES="anacron"
TERMUX_PKG_EXTRA_CONFIGURE_ARGS="
--disable-anacron
@@ -38,5 +40,6 @@ termux_step_create_debscripts() {
mkdir -p $TERMUX_PREFIX/var/run
mkdir -p $TERMUX_PREFIX/var/spool/cron
mkdir -p $TERMUX_PREFIX/etc/cron.d
+ mkdir -p $TERMUX_ANDROID_HOME/.cache
EOF
}
diff --git a/packages/crowbook/0ff64adee9c7ddf01b9b019fadc04153a1151575.patch b/packages/crowbook/0ff64adee9c7ddf01b9b019fadc04153a1151575.patch
new file mode 100644
index 00000000000000..47ed87c5b17174
--- /dev/null
+++ b/packages/crowbook/0ff64adee9c7ddf01b9b019fadc04153a1151575.patch
@@ -0,0 +1,150 @@
+From 0ff64adee9c7ddf01b9b019fadc04153a1151575 Mon Sep 17 00:00:00 2001
+From: Elisabeth Henry
+Date: Fri, 4 Aug 2023 04:58:47 +0200
+Subject: [PATCH] Replace rustc-serialize dependency with base64
+
+---
+ Cargo.toml | 2 +-
+ src/lib/html_if.rs | 8 +++-----
+ src/lib/html_single.rs | 14 ++++++--------
+ src/lib/misc.rs | 6 ++++++
+ src/lib/resource_handler.rs | 4 ++--
+ 5 files changed, 18 insertions(+), 16 deletions(-)
+
+diff --git a/Cargo.toml b/Cargo.toml
+index 7cecd42..9649a3c 100644
+--- a/Cargo.toml
++++ b/Cargo.toml
+@@ -54,7 +54,7 @@ yaml-rust = "0.4"
+ mustache = "0.9"
+ uuid = { version = "1", features = ["v4"] }
+ walkdir = "2"
+-rustc-serialize = "0.3"
++base64 = "0.21"
+ rayon = "1.6"
+ crowbook-text-processing = "^1.1.1"
+ lazy_static = "1"
+diff --git a/src/lib/html_if.rs b/src/lib/html_if.rs
+index 975d97a..2d749c4 100644
+--- a/src/lib/html_if.rs
++++ b/src/lib/html_if.rs
+@@ -23,8 +23,7 @@ use crate::html::HtmlRenderer;
+ use crate::parser::Parser;
+ use crate::renderer::Renderer;
+ use crate::token::Token;
+-
+-use rustc_serialize::base64::{self, ToBase64};
++use crate::misc;
+
+ use std::convert::{AsMut, AsRef};
+ use std::io;
+@@ -333,12 +332,11 @@ return crowbook_return_variable.replace(/<\\/ul>/g, '');\n",
+ );
+ }
+ if self.html.highlight == Highlight::Js {
+- let highlight_js = self
++ let highlight_js = misc::u8_to_base64(&self
+ .html
+ .book
+ .get_template("html.highlight.js")?
+- .as_bytes()
+- .to_base64(base64::STANDARD);
++ .as_bytes());
+ let highlight_js = format!("data:text/javascript;base64,{highlight_js}");
+ mapbuilder = mapbuilder
+ .insert_bool("highlight_code", true)
+diff --git a/src/lib/html_single.rs b/src/lib/html_single.rs
+index 8850b01..b4dcc7d 100644
+--- a/src/lib/html_single.rs
++++ b/src/lib/html_single.rs
+@@ -24,8 +24,7 @@ use crate::parser::Parser;
+ use crate::renderer::Renderer;
+ use crate::templates::img;
+ use crate::token::Token;
+-
+-use rustc_serialize::base64::{self, ToBase64};
++use crate::misc;
+
+ use std::convert::{AsMut, AsRef};
+ use std::fmt::Write;
+@@ -78,13 +77,13 @@ impl<'a> HtmlSingleRenderer<'a> {
+
+ /// Render books as a standalone HTML file
+ pub fn render_book(&mut self) -> Result {
+- let menu_svg = img::MENU_SVG.to_base64(base64::STANDARD);
++ let menu_svg = misc::u8_to_base64(&img::MENU_SVG);
+ let menu_svg = format!("data:image/svg+xml;base64,{menu_svg}");
+
+- let book_svg = img::BOOK_SVG.to_base64(base64::STANDARD);
++ let book_svg = misc::u8_to_base64(&img::BOOK_SVG);
+ let book_svg = format!("data:image/svg+xml;base64,{book_svg}");
+
+- let pages_svg = img::PAGES_SVG.to_base64(base64::STANDARD);
++ let pages_svg = misc::u8_to_base64(&img::PAGES_SVG);
+ let pages_svg = format!("data:image/svg+xml;base64,{pages_svg}");
+
+ let mut content = String::new();
+@@ -305,12 +304,11 @@ impl<'a> HtmlSingleRenderer<'a> {
+ mapbuilder = mapbuilder.insert_str("toc", toc)
+ }
+ if self.html.highlight == Highlight::Js {
+- let highlight_js = self
++ let highlight_js = misc::u8_to_base64(&self
+ .html
+ .book
+ .get_template("html.highlight.js")?
+- .as_bytes()
+- .to_base64(base64::STANDARD);
++ .as_bytes());
+ let highlight_js = format!("data:text/javascript;base64,{highlight_js}");
+ mapbuilder = mapbuilder
+ .insert_bool("highlight_code", true)
+diff --git a/src/lib/misc.rs b/src/lib/misc.rs
+index 4e98b35..b154e40 100644
+--- a/src/lib/misc.rs
++++ b/src/lib/misc.rs
+@@ -21,6 +21,8 @@ use crate::token::Token;
+
+ use std::io::Result;
+ use std::path::{Path, PathBuf};
++use base64::Engine;
++
+
+ /// Try to canonicalize a path using std::fs::canonicalize, and returns the
+ /// unmodified path if it fails (e.g. if the path doesn't exist (yet))
+@@ -59,3 +61,7 @@ pub fn insert_title(tokens: &mut Vec) {
+ tokens.insert(0, Token::Header(1, vec![]));
+ }
+
++/// Convert to base 64
++pub fn u8_to_base64(s: &[u8]) -> String {
++ base64::engine::general_purpose::STANDARD_NO_PAD.encode(s)
++}
+diff --git a/src/lib/resource_handler.rs b/src/lib/resource_handler.rs
+index 7944463..c993f93 100644
+--- a/src/lib/resource_handler.rs
++++ b/src/lib/resource_handler.rs
+@@ -1,5 +1,6 @@
+ use crate::error::{Error, Result, Source};
+ use crate::token::Token;
++use crate::misc;
+
+ use std::borrow::Cow;
+ use std::collections::HashMap;
+@@ -7,7 +8,6 @@ use std::fs;
+ use std::io::Read;
+ use std::path::{Path, PathBuf};
+
+-use rustc_serialize::base64::{self, ToBase64};
+ use walkdir::WalkDir;
+
+ /// Resource Handler.
+@@ -134,7 +134,7 @@ impl ResourceHandler {
+ );
+ return Ok(file);
+ }
+- let base64 = content.to_base64(base64::STANDARD);
++ let base64 = misc::u8_to_base64(&content);
+ match mime_guess::from_path(file.as_ref()).first() {
+ None => {
+ error!(
diff --git a/packages/crowbook/build.sh b/packages/crowbook/build.sh
index d419a7e43aeb51..b4332fda5b07e9 100644
--- a/packages/crowbook/build.sh
+++ b/packages/crowbook/build.sh
@@ -1,22 +1,40 @@
-TERMUX_PKG_HOMEPAGE=https://github.com/lise-henry
+TERMUX_PKG_HOMEPAGE=https://github.com/crowdagger/crowbook
TERMUX_PKG_DESCRIPTION="Allows you to write a book in Markdown without worrying about formatting or typography"
TERMUX_PKG_LICENSE="LGPL-2.1"
TERMUX_PKG_MAINTAINER="@termux"
TERMUX_PKG_VERSION="0.16.1"
-TERMUX_PKG_REVISION=1
-TERMUX_PKG_SRCURL=https://github.com/lise-henry/crowbook/archive/refs/tags/v${TERMUX_PKG_VERSION}.tar.gz
+TERMUX_PKG_REVISION=3
+TERMUX_PKG_SRCURL=https://github.com/crowdagger/crowbook/archive/refs/tags/v${TERMUX_PKG_VERSION}.tar.gz
TERMUX_PKG_SHA256=2e49a10f1b14666d4f740e9a22a588d44b137c3fca0932afc50ded0280450311
TERMUX_PKG_DEPENDS="openssl"
TERMUX_PKG_BUILD_IN_SRC=true
-# https://github.com/termux/termux-packages/issues/12824
-TERMUX_RUST_VERSION=1.73.0
+termux_step_pre_configure() {
+ termux_setup_rust
+
+ : "${CARGO_HOME:=$HOME/.cargo}"
+ export CARGO_HOME
+
+ cargo vendor
+ patch --silent -p1 \
+ -d ./vendor/time/ \
+ < "$TERMUX_PKG_BUILDER_DIR"/time-items-format_items.diff
+
+ echo "" >> Cargo.toml
+ echo '[patch.crates-io]' >> Cargo.toml
+ echo 'time = { path = "./vendor/time" }' >> Cargo.toml
+}
termux_step_make() {
termux_setup_rust
- cargo build --jobs $TERMUX_MAKE_PROCESSES --target $CARGO_TARGET_NAME --release
+ cargo build --jobs $TERMUX_PKG_MAKE_PROCESSES --target $CARGO_TARGET_NAME --release
}
termux_step_make_install() {
install -Dm700 -t $TERMUX_PREFIX/bin target/${CARGO_TARGET_NAME}/release/crowbook
}
+
+termux_step_post_make_install() {
+ # Remove the vendor sources to save space
+ rm -rf "$TERMUX_PKG_SRCDIR"/vendor
+}
diff --git a/packages/crowbook/time-items-format_items.diff b/packages/crowbook/time-items-format_items.diff
new file mode 100644
index 00000000000000..fb3638c6a897f0
--- /dev/null
+++ b/packages/crowbook/time-items-format_items.diff
@@ -0,0 +1,15 @@
+https://github.com/time-rs/time/pull/671
+
+--- a/src/format_description/parse/mod.rs
++++ b/src/format_description/parse/mod.rs
+@@ -80,9 +80,7 @@ pub fn parse_owned(
+ let mut lexed = lexer::lex::(s.as_bytes());
+ let ast = ast::parse::<_, VERSION>(&mut lexed);
+ let format_items = format_item::parse(ast);
+- let items = format_items
+- .map(|res| res.map(Into::into))
+- .collect::, _>>()?;
++ let items = format_items.collect::, _>>()?;
+ Ok(items.into())
+ }
+
diff --git a/packages/crunch/build.sh b/packages/crunch/build.sh
index f9e48429f3dcb4..a508b7663342c6 100644
--- a/packages/crunch/build.sh
+++ b/packages/crunch/build.sh
@@ -1,4 +1,4 @@
-TERMUX_PKG_HOMEPAGE=https://sourceforge.net/projects/crunch-wordlist
+TERMUX_PKG_HOMEPAGE=https://sourceforge.net/projects/crunch-wordlist/
TERMUX_PKG_DESCRIPTION="Highly customizable wordlist generator"
TERMUX_PKG_LICENSE="GPL-2.0"
TERMUX_PKG_MAINTAINER="@termux"
diff --git a/packages/crystal/build.sh b/packages/crystal/build.sh
index d74f7cfaa8980f..0a47ae6081128e 100644
--- a/packages/crystal/build.sh
+++ b/packages/crystal/build.sh
@@ -2,7 +2,7 @@ TERMUX_PKG_HOMEPAGE=https://crystal-lang.org
TERMUX_PKG_DESCRIPTION="Fast and statically typed, compiled language with Ruby-like syntax"
TERMUX_PKG_LICENSE="Apache-2.0"
TERMUX_PKG_MAINTAINER="@HertzDevil"
-TERMUX_PKG_VERSION="1.12.1"
+TERMUX_PKG_VERSION="1.15.1"
TERMUX_PKG_GIT_BRANCH=$TERMUX_PKG_VERSION
TERMUX_PKG_SRCURL=git+https://github.com/crystal-lang/crystal
TERMUX_PKG_AUTO_UPDATE=true
@@ -11,7 +11,7 @@ _LLVM_MAJOR_VERSION_NEXT=$((_LLVM_MAJOR_VERSION + 1))
TERMUX_PKG_DEPENDS="libc++, libevent, libgc, libgmp, libiconv, libllvm (<< $_LLVM_MAJOR_VERSION_NEXT), libxml2, libyaml, openssl, pcre2, zlib"
TERMUX_PKG_RECOMMENDS="clang, libffi, make, pkg-config"
TERMUX_PKG_BUILD_IN_SRC=true
-TERMUX_PKG_BLACKLISTED_ARCHES="arm, i686, x86_64"
+TERMUX_PKG_EXCLUDED_ARCHES="arm, i686, x86_64"
termux_step_make() {
local SHARDS_VERSION=0.18.0
diff --git a/packages/csview/build.sh b/packages/csview/build.sh
index 3a26b6b4b663ed..dde5362722ef7b 100644
--- a/packages/csview/build.sh
+++ b/packages/csview/build.sh
@@ -3,16 +3,16 @@ TERMUX_PKG_DESCRIPTION="Pretty-printing CSV/TSV/xSV on terminal"
TERMUX_PKG_LICENSE="MIT, Apache-2.0"
TERMUX_PKG_LICENSE_FILE="LICENSE-MIT"
TERMUX_PKG_MAINTAINER="@flosnvjx"
-TERMUX_PKG_VERSION="1.3.2"
+TERMUX_PKG_VERSION="1.3.4"
TERMUX_PKG_AUTO_UPDATE=true
TERMUX_PKG_SRCURL="$TERMUX_PKG_HOMEPAGE/archive/v$TERMUX_PKG_VERSION.tar.gz"
-TERMUX_PKG_SHA256=7c5ae0ff515b97267a0d47b15783d77f6b14d057e7e6110127f19d1f7b61e291
+TERMUX_PKG_SHA256=91fadcddef511265f4bf39897ce4a65c457ac89ffd8dd742dc209d30bf04d6aa
TERMUX_PKG_BUILD_IN_SRC=true
termux_step_make() {
termux_setup_rust
- cargo build --jobs $TERMUX_MAKE_PROCESSES --target $CARGO_TARGET_NAME --release --locked
+ cargo build --jobs $TERMUX_PKG_MAKE_PROCESSES --target $CARGO_TARGET_NAME --release --locked
}
termux_step_make_install() {
diff --git a/packages/ctags/build.sh b/packages/ctags/build.sh
index 805888a211ef26..3365f52a0e32fa 100644
--- a/packages/ctags/build.sh
+++ b/packages/ctags/build.sh
@@ -3,21 +3,14 @@ TERMUX_PKG_DESCRIPTION="Universal ctags: Source code index builder"
TERMUX_PKG_LICENSE="GPL-2.0"
TERMUX_PKG_MAINTAINER="@termux"
TERMUX_PKG_VERSION="2:6.1.0"
+TERMUX_PKG_REVISION=1
TERMUX_PKG_SRCURL=https://github.com/universal-ctags/ctags/archive/refs/tags/v${TERMUX_PKG_VERSION:2}.tar.gz
TERMUX_PKG_SHA256=1eb6d46d4c4cace62d230e7700033b8db9ad3d654f2d4564e87f517d4b652a53
TERMUX_PKG_AUTO_UPDATE=true
TERMUX_PKG_DEPENDS="libiconv, libjansson, libxml2, libyaml"
TERMUX_PKG_EXTRA_CONFIGURE_ARGS="--enable-tmpdir=$TERMUX_PREFIX/tmp --disable-static"
TERMUX_PKG_BUILD_IN_SRC=true
-TERMUX_PKG_HOSTBUILD=true
termux_step_post_get_source() {
- export regcomp_works=yes
./autogen.sh
}
-
-termux_step_pre_configure() {
- ./autogen.sh
- cp $TERMUX_PKG_HOSTBUILD_DIR/packcc $TERMUX_PKG_BUILDDIR/
- touch -d "next hour" $TERMUX_PKG_BUILDDIR/packcc
-}
diff --git a/packages/cups/build.sh b/packages/cups/build.sh
index 9c44d009cf0d42..24dc0842bdc748 100644
--- a/packages/cups/build.sh
+++ b/packages/cups/build.sh
@@ -2,9 +2,9 @@ TERMUX_PKG_HOMEPAGE="https://www.cups.org/"
TERMUX_PKG_DESCRIPTION="Common UNIX Printing System"
TERMUX_PKG_LICENSE="Apache-2.0"
TERMUX_PKG_MAINTAINER="@termux"
-TERMUX_PKG_VERSION="2.4.8"
+TERMUX_PKG_VERSION="2.4.11"
TERMUX_PKG_SRCURL=https://github.com/OpenPrinting/cups/releases/download/v${TERMUX_PKG_VERSION}/cups-${TERMUX_PKG_VERSION}-source.tar.gz
-TERMUX_PKG_SHA256=75c326b4ba73975efcc9a25078c4b04cdb4ee333caaad0d0823dbd522c6479a0
+TERMUX_PKG_SHA256=9a88fe1da3a29a917c3fc67ce6eb3178399d68e1a548c6d86c70d9b13651fd71
TERMUX_PKG_AUTO_UPDATE=true
TERMUX_PKG_DEPENDS="libc++, libcrypt, libgnutls, libiconv, zlib"
TERMUX_PKG_BUILD_DEPENDS="libandroid-spawn"
@@ -12,6 +12,9 @@ TERMUX_PKG_BUILD_IN_SRC=true
TERMUX_PKG_EXTRA_CONFIGURE_ARGS="
--with-tls=gnutls
"
+TERMUX_PKG_EXTRA_MAKE_ARGS="
+DBUSDIR=$PREFIX/etc/dbus-1
+"
TERMUX_PKG_CONFFILES="
etc/cups/cups-files.conf
etc/cups/cupsd.conf
@@ -20,6 +23,11 @@ etc/cups/snmp.conf
TERMUX_PKG_SERVICE_SCRIPT=("cupsd" "mkdir -p $TERMUX_PREFIX/var/run/cups && exec cupsd -f")
+termux_step_pre_configure() {
+ export CHOWNPROG=true CHGRPPROG=true
+}
+
+
termux_step_create_debscripts() {
cat <<- EOF > ./postinst
#!${TERMUX_PREFIX}/bin/sh
diff --git a/packages/cups/cups-scheduler-Makefile.patch b/packages/cups/cups-scheduler-Makefile.patch
index 1fcaddcac3b497..b3baf028030f6a 100644
--- a/packages/cups/cups-scheduler-Makefile.patch
+++ b/packages/cups/cups-scheduler-Makefile.patch
@@ -1,5 +1,4 @@
---- src/scheduler/Makefile 2020-04-27 18:04:29.000000000 +0000
-+++ src-mod/scheduler/Makefile 2020-07-05 14:20:05.730000000 +0000
++++ ./scheduler/Makefile
@@ -164,49 +164,11 @@
$(INSTALL_DIR) -m 1770 -g $(CUPS_GROUP) $(REQUESTS)/tmp
echo Creating $(CACHEDIR)...
@@ -29,12 +28,14 @@
- fi
if test "x$(SMFMANIFESTDIR)" != x; then \
echo Installing SMF manifest in $(SMFMANIFESTDIR)...;\
- $(INSTALL_DIR) $(BUILDROOT)/$(SMFMANIFESTDIR); \
+- $(INSTALL_DIR) $(BUILDROOT)/$(SMFMANIFESTDIR); \
++ $(INSTALL_DIR) $(BUILDROOTs)/$(SMFMANIFESTDIR); \
$(INSTALL_SCRIPT) cups.xml $(BUILDROOT)$(SMFMANIFESTDIR)/cups.xml; \
fi
- if test "x$(SYSTEMD_DIR)" != x; then \
- echo Installing systemd configuration files...; \
- $(INSTALL_DIR) $(BUILDROOT)$(SYSTEMD_DIR); \
+- $(INSTALL_DATA) system-cups.slice $(BUILDROOT)$(SYSTEMD_DIR); \
- $(INSTALL_DATA) cups.path $(BUILDROOT)$(SYSTEMD_DIR); \
- $(INSTALL_DATA) cups.service $(BUILDROOT)$(SYSTEMD_DIR); \
- $(INSTALL_DATA) cups.socket $(BUILDROOT)$(SYSTEMD_DIR); \
@@ -46,7 +47,6 @@
- $(INSTALL_DIR) -m 755 $(BUILDROOT)$(XINETD); \
- $(INSTALL_DATA) cups-lpd.xinetd $(BUILDROOT)$(XINETD)/cups-lpd; \
- fi
--
+
#
- # Install programs...
diff --git a/packages/curlie/build.sh b/packages/curlie/build.sh
index 482639ab4bbd8c..f984c97a76b76d 100644
--- a/packages/curlie/build.sh
+++ b/packages/curlie/build.sh
@@ -2,7 +2,7 @@ TERMUX_PKG_HOMEPAGE=https://curlie.io/
TERMUX_PKG_DESCRIPTION="The power of curl, the ease of use of httpie"
TERMUX_PKG_LICENSE="MIT"
TERMUX_PKG_MAINTAINER="@termux"
-TERMUX_PKG_VERSION="1.7.2"
+TERMUX_PKG_VERSION="1.8.2"
TERMUX_PKG_SRCURL=git+https://github.com/rs/curlie
TERMUX_PKG_BUILD_IN_SRC=true
TERMUX_PKG_AUTO_UPDATE=true
diff --git a/packages/cvs/build.sh b/packages/cvs/build.sh
index 57b4a9499a67e9..adfc01b5b76299 100644
--- a/packages/cvs/build.sh
+++ b/packages/cvs/build.sh
@@ -3,7 +3,7 @@ TERMUX_PKG_DESCRIPTION="Concurrent Versions System"
TERMUX_PKG_LICENSE="GPL-2.0"
TERMUX_PKG_MAINTAINER="@termux"
TERMUX_PKG_VERSION="1:1.12.13"
-TERMUX_PKG_REVISION=3
+TERMUX_PKG_REVISION=4
TERMUX_PKG_SRCURL="https://github.com/termux/distfiles/releases/download/2021.01.04/cvs-${TERMUX_PKG_VERSION:2}+real-26.tar.xz"
TERMUX_PKG_SHA256=0eda91f5e8091b676c90b2a171f24f9293acb552f4e4f77b590ae8d92a547256
TERMUX_PKG_AUTO_UPDATE=false
@@ -13,6 +13,7 @@ cvs_cv_func_printf_ptr=yes
ac_cv_header_syslog_h=no
--disable-server
--with-external-zlib
+--with-editor=$TERMUX_PREFIX/bin/editor
"
TERMUX_PKG_RM_AFTER_INSTALL="bin/cvsbug share/man/man8/cvsbug.8"
diff --git a/packages/dar/build.sh b/packages/dar/build.sh
index 7b76abc027cb29..f2711ab58210c0 100644
--- a/packages/dar/build.sh
+++ b/packages/dar/build.sh
@@ -2,9 +2,9 @@ TERMUX_PKG_HOMEPAGE=http://dar.linux.free.fr/
TERMUX_PKG_DESCRIPTION="A full featured command-line backup tool, short for Disk ARchive"
TERMUX_PKG_LICENSE="GPL-2.0"
TERMUX_PKG_MAINTAINER="@termux"
-TERMUX_PKG_VERSION="2.7.14"
+TERMUX_PKG_VERSION="2.7.17"
TERMUX_PKG_SRCURL=https://downloads.sourceforge.net/project/dar/dar/${TERMUX_PKG_VERSION}/dar-${TERMUX_PKG_VERSION}.tar.gz
-TERMUX_PKG_SHA256=40d4dba44260df3a8ddce1e61f411ea9ab43c2cfc47bd83ab868c939d19dc582
+TERMUX_PKG_SHA256=4a597757d2de2f54821319129090ded8e67cff1a487c3d2e43b9daccefb5140b
TERMUX_PKG_AUTO_UPDATE=true
TERMUX_PKG_DEPENDS="attr, libbz2, libc++, libgcrypt, libgpg-error, liblzma, liblzo, zlib, zstd"
TERMUX_PKG_BUILD_IN_SRC=
diff --git a/packages/dart/build.sh b/packages/dart/build.sh
index 187443cd9966b1..bf087bdb524aa4 100644
--- a/packages/dart/build.sh
+++ b/packages/dart/build.sh
@@ -2,80 +2,77 @@ TERMUX_PKG_HOMEPAGE=https://dart.dev/
TERMUX_PKG_DESCRIPTION="Dart is a general-purpose programming language"
TERMUX_PKG_LICENSE="BSD"
TERMUX_PKG_LICENSE_FILE="sdk/LICENSE"
-TERMUX_PKG_MAINTAINER="@termux"
-TERMUX_PKG_VERSION=3.4.0
-TERMUX_PKG_AUTO_UPDATE=false
+TERMUX_PKG_MAINTAINER="@samujjal-gogoi"
+TERMUX_PKG_VERSION="3.7.2"
+TERMUX_PKG_SRCURL=https://github.com/dart-lang/sdk/archive/refs/tags/${TERMUX_PKG_VERSION}.tar.gz
+TERMUX_PKG_SHA256=cbbd5a98ce4678b33e52a91378b9ecb7a5899e676fbd686c4a0023c7dd263504
TERMUX_PKG_BUILD_IN_SRC=true
-TERMUX_PKG_SKIP_SRC_EXTRACT=true
+TERMUX_PKG_AUTO_UPDATE=true
# Dart uses tar and gzip to extract downloaded packages.
# Busybox-based versions of such utilities cause issues so
# complete ones should be used.
TERMUX_PKG_DEPENDS="gzip, tar"
-termux_step_get_source() {
- mkdir -p $TERMUX_PKG_SRCDIR
- cd $TERMUX_PKG_SRCDIR
-
- git clone --depth=1 https://chromium.googlesource.com/chromium/tools/depot_tools.git
- mkdir -p depot_tools/fakebin
- ln -sfr /usr/bin/python depot_tools/fakebin/python
- export PATH="$(pwd)/depot_tools/fakebin:$(pwd)/depot_tools:${PATH}"
-
- fetch dart
-
- cd sdk
- git checkout $TERMUX_PKG_VERSION
- cd ../
-
- echo "target_os = ['android']" >> .gclient
- gclient sync -D --force --reset
-}
-
-termux_step_pre_configure() {
- sed -i -e 's:\([^A-Za-z0-9_]\)/usr/bin:\1'$TERMUX_PREFIX'/local/bin:g' \
- -e 's:\([^A-Za-z0-9_]\)/bin:\1'$TERMUX_PREFIX'/bin:g' \
- "$TERMUX_PKG_SRCDIR/sdk/third_party/pkg/pub/lib/src/io.dart"
+termux_pkg_auto_update() {
+ curl -fLSso VERSION https://storage.googleapis.com/dart-archive/channels/stable/release/latest/VERSION
+ local latest_version=$(jq -r .version VERSION)
+ rm -f VERSION
+ if [[ ${latest_version} = "null" ]]; then
+ echo "ERROR: Failed to get latest version."
+ exit 1
+ fi
+ if [[ ${latest_version} = ${TERMUX_PKG_VERSION} ]]; then
+ echo "INFO: No update needed. Already at version '${TERMUX_PKG_VERSION}'."
+ return
+ fi
+ termux_pkg_upgrade_version ${latest_version}
}
-termux_step_make() {
- :
+termux_step_get_source() {
+ mkdir -p ${TERMUX_PKG_SRCDIR}
+ cd ${TERMUX_PKG_SRCDIR}
+ git clone --depth 1 https://chromium.googlesource.com/chromium/tools/depot_tools.git
+ export PATH="${PWD}/depot_tools:${PATH}"
+ fetch --no-history --no-hooks dart
+ cd sdk
+ git fetch --depth 1 origin tag ${TERMUX_PKG_VERSION}
+ git checkout ${TERMUX_PKG_VERSION}
+ echo 'target_os = ["android"]' >> ../.gclient
+ gclient sync -DRf
}
termux_step_make_install() {
cd sdk
-
- rm -f ./out/*/args.gn
-
- if [ $TERMUX_ARCH = "arm" ]; then
- python3 ./tools/build.py --no-goma --mode release --arch=arm --os=android create_sdk
- chmod +x ./out/ReleaseAndroidARM/dart-sdk/bin/*
- cp -r ./out/ReleaseAndroidARM/dart-sdk ${TERMUX_PREFIX}/lib
- elif [ $TERMUX_ARCH = "i686" ]; then
- python3 ./tools/build.py --no-goma --mode release --arch=ia32 --os=android create_sdk
- chmod +x ./out/ReleaseAndroidIA32/dart-sdk/bin/*
- cp -r ./out/ReleaseAndroidIA32/dart-sdk ${TERMUX_PREFIX}/lib
- elif [ $TERMUX_ARCH = "aarch64" ]; then
- python3 ./tools/build.py --no-goma --mode release --arch=arm64c --os=android create_sdk
- chmod +x ./out/ReleaseAndroidARM64C/dart-sdk/bin/*
- cp -r ./out/ReleaseAndroidARM64C/dart-sdk ${TERMUX_PREFIX}/lib
- elif [ $TERMUX_ARCH = "x86_64" ]; then
- python3 ./tools/build.py --no-goma --mode release --arch=x64c --os=android create_sdk
- chmod +x ./out/ReleaseAndroidX64C/dart-sdk/bin/*
- cp -r ./out/ReleaseAndroidX64C/dart-sdk ${TERMUX_PREFIX}/lib
- else
- termux_error_exit "Unsupported arch '$TERMUX_ARCH'"
- fi
-
+ case "$TERMUX_ARCH" in
+ arm)
+ ./tools/build.py --no-rbe -m release -a arm --os android create_sdk
+ mv ./out/ReleaseAndroidARM/dart-sdk "${TERMUX_PREFIX}/lib"
+ ;;
+ i686)
+ ./tools/build.py --no-rbe -m release -a ia32 --os android create_sdk
+ mv ./out/ReleaseAndroidIA32/dart-sdk "${TERMUX_PREFIX}/lib"
+ ;;
+ aarch64)
+ ./tools/build.py --no-rbe -m release -a arm64c --os android create_sdk
+ mv ./out/ReleaseAndroidARM64C/dart-sdk "${TERMUX_PREFIX}/lib"
+ ;;
+ x86_64)
+ ./tools/build.py --no-rbe -m release -a x64c --os android create_sdk
+ mv ./out/ReleaseAndroidX64C/dart-sdk "${TERMUX_PREFIX}/lib"
+ ;;
+ *)
+ termux_error_exit "Unsupported arch '${TERMUX_ARCH}'"
+ ;;
+ esac
for file in ${TERMUX_PREFIX}/lib/dart-sdk/bin/*; do
- if [[ -f "$file" ]]; then
- echo -e "#!${TERMUX_PREFIX}/bin/sh\nexec $file \"\$@\"" > ${TERMUX_PREFIX}/bin/$(basename $file)
- chmod +x ${TERMUX_PREFIX}/bin/$(basename $file)
+ if [[ -f ${file} && -x ${file} ]]; then
+ echo -e "#!${TERMUX_PREFIX}/bin/sh\nexec ${file} \"\$@\"" > "${TERMUX_PREFIX}/bin/$(basename "${file}")"
+ chmod +x "${TERMUX_PREFIX}/bin/$(basename "${file}")"
fi
done
}
termux_step_post_make_install() {
- install -Dm600 $TERMUX_PKG_BUILDER_DIR/dart-pub-bin.sh \
- $TERMUX_PREFIX/etc/profile.d/dart-pub-bin.sh
+ install -Dm 600 ${TERMUX_PKG_BUILDER_DIR}/dart-pub-bin.sh ${TERMUX_PREFIX}/etc/profile.d/dart-pub-bin.sh
}
diff --git a/packages/dart/dart-pub-bin.sh b/packages/dart/dart-pub-bin.sh
index b2f7bc8a677331..7b30334617ca20 100644
--- a/packages/dart/dart-pub-bin.sh
+++ b/packages/dart/dart-pub-bin.sh
@@ -1,3 +1,3 @@
-# Executables installed with 'pub global activate' are available
-# in directory $HOME/.pub-cache/bin.
-export PATH="$HOME/.pub-cache/bin:$PATH"
+# Executables installed with 'dart pub global activate'
+# are available in directory $HOME/.pub-cache/bin.
+export PATH="${HOME}/.pub-cache/bin:${PATH}"
diff --git a/packages/dart/fix-shell-path.patch b/packages/dart/fix-shell-path.patch
deleted file mode 100644
index 767e29825a59e5..00000000000000
--- a/packages/dart/fix-shell-path.patch
+++ /dev/null
@@ -1,22 +0,0 @@
---- ./sdk/pkg/_fe_analyzer_shared/lib/src/util/colors.dart 2023-08-18 18:30:44.021019202 +0530
-+++ ./sdk/pkg/_fe_analyzer_shared/lib/src/util/colors.dart 2023-08-18 20:24:26.037025590 +0530
-@@ -163,7 +163,7 @@
- // The `-S` option of `tput` allows us to query multiple capabilities at
- // once.
- ProcessResult result = Process.runSync(
-- "/bin/sh", ["-c", "printf '%s' '$TERMINAL_CAPABILITIES' | tput -S"]);
-+ "@TERMUX_PREFIX@/bin/sh", ["-c", "printf '%s' '$TERMINAL_CAPABILITIES' | tput -S"]);
-
- if (result.exitCode != 0) {
- printEnableColorsReason("Not enabling colors, running tput failed.");
---- ./sdk/sdk/lib/_internal/vm/bin/process_patch.dart 2023-08-18 18:31:28.061019185 +0530
-+++ ./sdk/sdk/lib/_internal/vm/bin/process_patch.dart 2023-08-18 20:36:02.387025324 +0530
-@@ -312,7 +312,7 @@
- if (Platform.isWindows) {
- return 'cmd.exe';
- }
-- return '/bin/sh';
-+ return '@TERMUX_PREFIX@/bin/sh';
- }
-
- static List _getShellArguments(
diff --git a/packages/dart/sdk-pkg-_fe_analyzer_shared-lib-src-util-colors.dart.patch b/packages/dart/sdk-pkg-_fe_analyzer_shared-lib-src-util-colors.dart.patch
new file mode 100644
index 00000000000000..b3aec34628e111
--- /dev/null
+++ b/packages/dart/sdk-pkg-_fe_analyzer_shared-lib-src-util-colors.dart.patch
@@ -0,0 +1,11 @@
+--- ./sdk/pkg/_fe_analyzer_shared/lib/src/util/colors.dart
++++ ./sdk/pkg/_fe_analyzer_shared/lib/src/util/colors.dart
+@@ -141,7 +141,7 @@ bool _computeEnableColors() {
+ // The `-S` option of `tput` allows us to query multiple capabilities at
+ // once.
+ ProcessResult result = Process.runSync(
+- "/bin/sh", ["-c", "printf '%s' '$TERMINAL_CAPABILITIES' | tput -S"]);
++ "@TERMUX_PREFIX@/bin/sh", ["-c", "printf '%s' '$TERMINAL_CAPABILITIES' | tput -S"]);
+
+ if (result.exitCode != 0) {
+ printEnableColorsReason("Not enabling colors, running tput failed.");
diff --git a/packages/dart/sdk-runtime-bin-directory_linux.cc.patch b/packages/dart/sdk-runtime-bin-directory_linux.cc.patch
index dd7a1ef803136a..532cf2a3e0a8bc 100644
--- a/packages/dart/sdk-runtime-bin-directory_linux.cc.patch
+++ b/packages/dart/sdk-runtime-bin-directory_linux.cc.patch
@@ -9,14 +9,3 @@
#else
temp_dir = "/tmp";
#endif
---- ./sdk/runtime/vm/os_android.cc
-+++ ./sdk/runtime/vm/os_android.cc
-@@ -52,7 +52,7 @@ class PerfCodeObserver : public CodeObserver {
- return;
- }
- intptr_t pid = getpid();
-- char* filename = OS::SCreate(nullptr, "/tmp/perf-%" Pd ".map", pid);
-+ char* filename = OS::SCreate(nullptr, "@TERMUX_PREFIX@/tmp/perf-%" Pd ".map", pid);
- out_file_ = (*file_open)(filename, true);
- free(filename);
- }
diff --git a/packages/dart/sdk-runtime-vm-os_android.cc.patch b/packages/dart/sdk-runtime-vm-os_android.cc.patch
new file mode 100644
index 00000000000000..341d8257a0a5b9
--- /dev/null
+++ b/packages/dart/sdk-runtime-vm-os_android.cc.patch
@@ -0,0 +1,11 @@
+--- ./sdk/runtime/vm/os_android.cc
++++ ./sdk/runtime/vm/os_android.cc
+@@ -53,7 +53,7 @@ class PerfCodeObserver : public CodeObserver {
+ return;
+ }
+ intptr_t pid = getpid();
+- char* filename = OS::SCreate(nullptr, "/tmp/perf-%" Pd ".map", pid);
++ char* filename = OS::SCreate(nullptr, "@TERMUX_PREFIX@/tmp/perf-%" Pd ".map", pid);
+ out_file_ = (*file_open)(filename, true);
+ free(filename);
+ }
diff --git a/packages/dart/sdk-sdk-lib-_internal-vm-bin-process_patch.dart.patch b/packages/dart/sdk-sdk-lib-_internal-vm-bin-process_patch.dart.patch
new file mode 100644
index 00000000000000..a5a051f9d615b0
--- /dev/null
+++ b/packages/dart/sdk-sdk-lib-_internal-vm-bin-process_patch.dart.patch
@@ -0,0 +1,11 @@
+--- ./sdk/sdk/lib/_internal/vm/bin/process_patch.dart
++++ ./sdk/sdk/lib/_internal/vm/bin/process_patch.dart
+@@ -313,7 +313,7 @@ base class _ProcessImpl extends _ProcessImplNativeWrapper implements _Process {
+ if (Platform.isWindows) {
+ return 'cmd.exe';
+ }
+- return '/bin/sh';
++ return '@TERMUX_PREFIX@/bin/sh';
+ }
+
+ static List _getShellArguments(
diff --git a/packages/dasel/build.sh b/packages/dasel/build.sh
index d8ec885bcbb520..13cc374982c111 100644
--- a/packages/dasel/build.sh
+++ b/packages/dasel/build.sh
@@ -2,9 +2,9 @@ TERMUX_PKG_HOMEPAGE=https://github.com/TomWright/dasel
TERMUX_PKG_DESCRIPTION="Select, put and delete data from JSON, TOML, YAML, XML and CSV files with a single utility"
TERMUX_PKG_LICENSE="MIT"
TERMUX_PKG_MAINTAINER="@termux"
-TERMUX_PKG_VERSION="2.7.0"
+TERMUX_PKG_VERSION="2.8.1"
TERMUX_PKG_SRCURL=https://github.com/TomWright/dasel/archive/refs/tags/v$TERMUX_PKG_VERSION.tar.gz
-TERMUX_PKG_SHA256=93546e10971ca74c3192940fe9435b48368cefa677cef8a7532b214c6d8b6c39
+TERMUX_PKG_SHA256=ba8da9569f38e7f33453c03ac988382291a01004a96c307d52cccadb9ef7837e
TERMUX_PKG_BUILD_IN_SRC=true
TERMUX_PKG_AUTO_UPDATE=true
diff --git a/packages/dbus-python/build.sh b/packages/dbus-python/build.sh
index 74a0ddf499465b..553ff35f7fb197 100644
--- a/packages/dbus-python/build.sh
+++ b/packages/dbus-python/build.sh
@@ -2,10 +2,10 @@ TERMUX_PKG_HOMEPAGE=https://dbus.freedesktop.org/doc/dbus-python/
TERMUX_PKG_DESCRIPTION="Python bindings for D-Bus"
TERMUX_PKG_LICENSE="MIT"
TERMUX_PKG_MAINTAINER="@termux"
-TERMUX_PKG_VERSION=1.3.2
-TERMUX_PKG_REVISION=2
-TERMUX_PKG_SRCURL=https://dbus.freedesktop.org/releases/dbus-python/dbus-python-${TERMUX_PKG_VERSION}.tar.gz
-TERMUX_PKG_SHA256=ad67819308618b5069537be237f8e68ca1c7fcc95ee4a121fe6845b1418248f8
+TERMUX_PKG_VERSION="1.4.0"
+TERMUX_PKG_SRCURL=https://gitlab.freedesktop.org/dbus/dbus-python/-/archive/dbus-python-${TERMUX_PKG_VERSION}/dbus-python-dbus-python-${TERMUX_PKG_VERSION}.tar.gz
+TERMUX_PKG_SHA256=da4ee9bbb9eb901d463a7cc9f99dfdbe6c751c8b48b29b78d378985a3c9656ad
+TERMUX_PKG_AUTO_UPDATE=true
TERMUX_PKG_DEPENDS="dbus, glib, python"
TERMUX_PKG_PYTHON_COMMON_DEPS="wheel"
TERMUX_PKG_EXTRA_CONFIGURE_ARGS="
diff --git a/packages/dbus/build.sh b/packages/dbus/build.sh
index d0d60d18ae525e..b36e7307ac58b3 100644
--- a/packages/dbus/build.sh
+++ b/packages/dbus/build.sh
@@ -2,29 +2,27 @@ TERMUX_PKG_HOMEPAGE=https://dbus.freedesktop.org
TERMUX_PKG_DESCRIPTION="Freedesktop.org message bus system"
TERMUX_PKG_LICENSE="GPL-2.0"
TERMUX_PKG_MAINTAINER="@termux"
-TERMUX_PKG_VERSION=1.15.6
-TERMUX_PKG_REVISION=3
+TERMUX_PKG_VERSION="1.16.2"
+TERMUX_PKG_REVISION=1
TERMUX_PKG_SRCURL="https://dbus.freedesktop.org/releases/dbus/dbus-$TERMUX_PKG_VERSION.tar.xz"
-TERMUX_PKG_SHA256=f97f5845f9c4a5a1fb3df67dfa9e16b5a3fd545d348d6dc850cb7ccc9942bd8c
+TERMUX_PKG_SHA256=0ba2a1a4b16afe7bceb2c07e9ce99a8c2c3508e5dec290dbb643384bd6beb7e2
TERMUX_PKG_DEPENDS="libexpat, libx11"
TERMUX_PKG_BREAKS="dbus-dev"
TERMUX_PKG_REPLACES="dbus-dev"
-TERMUX_PKG_BUILD_IN_SRC=true
TERMUX_PKG_EXTRA_CONFIGURE_ARGS="
-ac_cv_func_close_range=no
---enable-ld-version-script
---disable-libaudit
---disable-systemd
---disable-tests
---enable-x11-autolaunch
---with-test-socket-dir=$TERMUX_PREFIX/tmp
---with-session-socket-dir=$TERMUX_PREFIX/tmp
---with-x=auto
+-Dlibaudit=disabled
+-Dsystemd=disabled
+-Dmodular_tests=disabled
+-Dx11_autolaunch=enabled
+-Dtest_socket_dir=$TERMUX_PREFIX/tmp
+-Dsession_socket_dir=$TERMUX_PREFIX/tmp
"
termux_step_pre_configure() {
export LIBS="-llog"
+ # Enforce meson building
+ rm CMakeLists.txt
}
termux_step_post_make_install() {
diff --git a/packages/dbus/dbus-dbus-sysdeps-unix.c.patch b/packages/dbus/dbus-dbus-sysdeps-unix.c.patch
index fb440f54ab45ef..691a92e6696612 100644
--- a/packages/dbus/dbus-dbus-sysdeps-unix.c.patch
+++ b/packages/dbus/dbus-dbus-sysdeps-unix.c.patch
@@ -10,3 +10,29 @@
/* The kernel headers are new enough to have the close_range syscall,
* but glibc isn't new enough to have the syscall wrapper, so call the
* syscall directly. */
+@@ -1958,9 +1958,11 @@
+ #if defined(__linux__) && defined(SO_PEERGROUPS)
+ _DBUS_STATIC_ASSERT (sizeof (gid_t) <= sizeof (dbus_gid_t));
+ /* This function assumes socklen_t is unsigned, which is true on Linux */
+- _DBUS_STATIC_ASSERT (((socklen_t) -1) > 0);
++ // But for some reason bionic 32-bit platforms have signed socklet_t so we will use casts.
++ //_DBUS_STATIC_ASSERT (((socklen_t) -1) > 0);
+ gid_t *buf = NULL;
+- socklen_t len = 1024;
++ socklen_t _len = 1024; // in 32-bit
++ size_t len = _len;
+ dbus_bool_t oom = FALSE;
+ /* libdbus has a different representation of group IDs just to annoy you */
+ dbus_gid_t *converted_gids = NULL;
+@@ -1974,8 +1976,9 @@
+ if (buf == NULL)
+ return FALSE;
+
+- while (getsockopt (client_fd, SOL_SOCKET, SO_PEERGROUPS, buf, &len) < 0)
+- {
++ while (getsockopt (client_fd, SOL_SOCKET, SO_PEERGROUPS, buf, &_len) < 0)
++ {
++ len = (size_t) _len; // cast
+ int e = errno;
+ gid_t *replacement;
+
diff --git a/packages/dbus/disable-pidfd-open.patch b/packages/dbus/disable-pidfd-open.patch
new file mode 100644
index 00000000000000..65164d8dacc110
--- /dev/null
+++ b/packages/dbus/disable-pidfd-open.patch
@@ -0,0 +1,22 @@
+A way of reverting this upstream change:
+https://gitlab.freedesktop.org/dbus/dbus/-/merge_requests/398
+
+Fixes https://github.com/termux/termux-packages/issues/23981
+
+--- a/meson.build
++++ b/meson.build
+@@ -810,13 +810,7 @@ config.set('HAVE_FSTATFS',
+ )
+ )
+
+-config.set10('HAVE_DECL_SYS_PIDFD_OPEN',
+- cc.has_header_symbol(
+- 'sys/syscall.h',
+- 'SYS_pidfd_open',
+- args: compile_args_c,
+- )
+-)
++config.set10('HAVE_DECL_SYS_PIDFD_OPEN', false)
+
+ ###############################################################################
+ # Project options
diff --git a/packages/ddrescue/build.sh b/packages/ddrescue/build.sh
index d27bf2e741f88b..f46a4b90c2d085 100644
--- a/packages/ddrescue/build.sh
+++ b/packages/ddrescue/build.sh
@@ -2,8 +2,8 @@ TERMUX_PKG_HOMEPAGE=https://www.gnu.org/software/ddrescue/
TERMUX_PKG_DESCRIPTION="GNU data recovery tool"
TERMUX_PKG_LICENSE="GPL-3.0"
TERMUX_PKG_MAINTAINER="@termux"
-TERMUX_PKG_VERSION="1.28"
+TERMUX_PKG_VERSION="1.29.1"
TERMUX_PKG_SRCURL=https://mirrors.kernel.org/gnu/ddrescue/ddrescue-${TERMUX_PKG_VERSION}.tar.lz
-TERMUX_PKG_SHA256=6626c07a7ca1cc1d03cad0958522c5279b156222d32c342e81117cfefaeb10c1
+TERMUX_PKG_SHA256=ddd7d45df026807835a2ec6ab9c365df2ef19e8de1a50ffe6886cd391e04dd75
TERMUX_PKG_AUTO_UPDATE=true
TERMUX_PKG_DEPENDS="libc++"
diff --git a/packages/debianutils/build.sh b/packages/debianutils/build.sh
index 59d1fe8c451103..b62e99c9181295 100644
--- a/packages/debianutils/build.sh
+++ b/packages/debianutils/build.sh
@@ -2,9 +2,9 @@ TERMUX_PKG_HOMEPAGE=https://packages.debian.org/debianutils
TERMUX_PKG_DESCRIPTION="Small utilities which are used primarily by the installation scripts of Debian packages"
TERMUX_PKG_LICENSE="GPL-2.0"
TERMUX_PKG_MAINTAINER="@termux"
-TERMUX_PKG_VERSION="5.17"
+TERMUX_PKG_VERSION="5.21"
TERMUX_PKG_SRCURL=https://deb.debian.org/debian/pool/main/d/debianutils/debianutils_${TERMUX_PKG_VERSION}.tar.xz
-TERMUX_PKG_SHA256=367654878388f532cd8a897fe64766e2d57ae4c60da1d4d8f20dcdf2fb0cbde8
+TERMUX_PKG_SHA256=0053dcfd89e5c7dbfb2632450c00af6b8a646eeaaf185bbc8f2915488f994fe5
TERMUX_PKG_AUTO_UPDATE=true
TERMUX_PKG_RM_AFTER_INSTALL="
diff --git a/packages/debootstrap/build.sh b/packages/debootstrap/build.sh
index 8784c13c0fd017..be7c2f6a21e60c 100644
--- a/packages/debootstrap/build.sh
+++ b/packages/debootstrap/build.sh
@@ -3,9 +3,9 @@ TERMUX_PKG_DESCRIPTION="Bootstrap a basic Debian system"
TERMUX_PKG_LICENSE="MIT"
TERMUX_PKG_LICENSE_FILE="debian/copyright"
TERMUX_PKG_MAINTAINER="@termux"
-TERMUX_PKG_VERSION="1.0.134"
+TERMUX_PKG_VERSION="1.0.140"
TERMUX_PKG_SRCURL=https://deb.debian.org/debian/pool/main/d/debootstrap/debootstrap_${TERMUX_PKG_VERSION}.tar.gz
-TERMUX_PKG_SHA256=03c1dfbff2f9936acea3954b9c92e348e7e216f706c202744f80c9f1302329b4
+TERMUX_PKG_SHA256=c95eb2aeb952b3fd09f4a07859115d40c4d04a8d551b3071b0a10fcd0db7ebc4
TERMUX_PKG_AUTO_UPDATE=true
TERMUX_PKG_DEPENDS="binutils | binutils-is-llvm, perl, proot, sed, wget"
TERMUX_PKG_BUILD_IN_SRC=true
diff --git a/packages/debootstrap/debootstrap.patch b/packages/debootstrap/debootstrap.patch
index c0d56e74985187..df97c4bd070ea3 100644
--- a/packages/debootstrap/debootstrap.patch
+++ b/packages/debootstrap/debootstrap.patch
@@ -18,7 +18,7 @@
fi
fi
-@@ -541,14 +541,31 @@
+@@ -547,14 +547,31 @@
if in_path dpkg && \
dpkg --print-architecture >/dev/null 2>&1; then
@@ -52,7 +52,7 @@
# basic host OS guessing for non-Debian systems
if [ -z "$HOST_OS" ]; then
case $(uname) in
-@@ -585,12 +602,8 @@
+@@ -591,12 +608,8 @@
if [ "$TARGET" = "/" ]; then
CHROOT_CMD=""
else
@@ -67,7 +67,7 @@
fi
if [ -z "$SHA_SIZE" ]; then
-@@ -604,19 +617,6 @@
+@@ -610,19 +623,6 @@
export ARCH SUITE EXTRA_SUITES TARGET CHROOT_CMD SHA_SIZE DEBOOTSTRAP_CHECKSUM_FIELD
@@ -80,7 +80,7 @@
- fi
- # Ensure that we can create working devices and executables on the target.
- if ! check_sane_mount "$TARGET"; then
-- error 1 NOEXEC "Cannot install into target '$TARGET' mounted with noexec or nodev"
+- error 1 NOEXEC "Cannot install into target '$TARGET' mounted with noexec"
- fi
-fi
-
diff --git a/packages/debootstrap/fix-keyring-paths.patch b/packages/debootstrap/fix-keyring-paths.patch
index e6cfb3131b137d..fcc204e4af11c5 100644
--- a/packages/debootstrap/fix-keyring-paths.patch
+++ b/packages/debootstrap/fix-keyring-paths.patch
@@ -25,15 +25,19 @@ diff -uNr debootstrap/scripts/etch debootstrap.mod/scripts/etch
diff -uNr debootstrap/scripts/gutsy debootstrap.mod/scripts/gutsy
--- debootstrap/scripts/gutsy 2018-11-20 20:55:53.000000000 +0200
+++ debootstrap.mod/scripts/gutsy 2019-01-19 00:01:43.295983852 +0200
-@@ -27,7 +27,7 @@
- download_style apt
- finddebs_style from-indices
- variants - buildd fakechroot minbase
--keyring /usr/share/keyrings/ubuntu-archive-keyring.gpg
-+keyring @TERMUX_PREFIX@/share/keyrings/ubuntu-archive-keyring.gpg
-
- if doing_variant fakechroot; then
- test "$FAKECHROOT" = "true" || error 1 FAKECHROOTREQ "This variant requires fakechroot environment to be started"
+@@ -7,10 +7,10 @@
+ default_mirror http://ports.ubuntu.com/ubuntu-ports
+ ;;
+ esac
+- keyring /usr/share/keyrings/ubuntu-archive-keyring.gpg
++ keyring @TERMUX_PREFIX@/share/keyrings/ubuntu-archive-keyring.gpg
+ else
+ default_mirror http://old-releases.ubuntu.com/ubuntu
+- keyring /usr/share/keyrings/ubuntu-archive-removed-keys.gpg
++ keyring @TERMUX_PREFIX@/share/keyrings/ubuntu-archive-removed-keys.gpg
+ fi
+ # Note: The "removed keys" does not automatically tally with unsupported releases.
+ # In this case the user will need to use the --keyring= switch.
diff -uNr debootstrap/scripts/kali debootstrap.mod/scripts/kali
--- debootstrap/scripts/kali 2018-11-20 20:55:53.000000000 +0200
+++ debootstrap.mod/scripts/kali 2019-01-19 00:01:47.792689365 +0200
diff --git a/packages/debootstrap/functions.patch b/packages/debootstrap/functions.patch
index 45af68e8717360..883d798e6b7393 100644
--- a/packages/debootstrap/functions.patch
+++ b/packages/debootstrap/functions.patch
@@ -1,13 +1,13 @@
--- a/functions
+++ b/functions
-@@ -231,6 +231,9 @@
+@@ -236,6 +236,9 @@
}
detect_container () {
+ #termux
+ return
+
- if [ "$container" = lxc ]; then
+ if [ "${container-}" = lxc ]; then
CONTAINER="lxc"
elif [ "$container" = mmdebstrap-unshare ]; then
@@ -1026,7 +1029,7 @@
@@ -91,11 +91,12 @@
case "$HOST_OS" in
*freebsd*)
umount_on_exit /dev
-@@ -1306,9 +1316,6 @@
+@@ -1306,10 +1316,6 @@
touch "$TARGET/dev/console"
;;
*)
-- if ! setup_devices_simple; then
+- if ! setup_devices_simple ||
+- ! sh -c ': >"$1"' -- "$TARGET/dev/null" 2>/dev/null; then
- setup_devices_bind
- fi
;;
diff --git a/packages/delve/build.sh b/packages/delve/build.sh
index 4d4a46fb21c0bb..badd1d5d802a52 100644
--- a/packages/delve/build.sh
+++ b/packages/delve/build.sh
@@ -2,13 +2,12 @@ TERMUX_PKG_HOMEPAGE=https://github.com/go-delve/delve
TERMUX_PKG_DESCRIPTION="A debugger for the Go programming language"
TERMUX_PKG_LICENSE="MIT"
TERMUX_PKG_MAINTAINER="Krishna kanhaiya @kcubeterm"
-TERMUX_PKG_VERSION="1.22.1"
-TERMUX_PKG_REVISION="1"
+TERMUX_PKG_VERSION="1.24.1"
TERMUX_PKG_DEPENDS="golang, git"
TERMUX_PKG_SRCURL=https://github.com/go-delve/delve/archive/v${TERMUX_PKG_VERSION}.tar.gz
-TERMUX_PKG_SHA256=fe6f0d97c233d4f0f1ed422c11508cc57c14e9e0915f9a258f1912c46824cbfb
+TERMUX_PKG_SHA256=1bc657e7e429c4917b6cae562356bf6da6cebcd4fde35f236e8174743d9e1eb8
TERMUX_PKG_AUTO_UPDATE=true
-TERMUX_PKG_BLACKLISTED_ARCHES="arm, i686"
+TERMUX_PKG_EXCLUDED_ARCHES="arm, i686"
termux_step_make() {
termux_setup_golang
diff --git a/packages/desed/build.sh b/packages/desed/build.sh
index 72c1094a892b0f..302c7851da1306 100644
--- a/packages/desed/build.sh
+++ b/packages/desed/build.sh
@@ -2,14 +2,15 @@ TERMUX_PKG_HOMEPAGE=https://github.com/SoptikHa2/desed
TERMUX_PKG_DESCRIPTION="Demystifies and debugs your sed scripts"
TERMUX_PKG_LICENSE="GPL-3.0"
TERMUX_PKG_MAINTAINER="@termux"
-TERMUX_PKG_VERSION=1.2.1
+TERMUX_PKG_VERSION="1.2.2"
TERMUX_PKG_SRCURL=https://github.com/SoptikHa2/desed/archive/refs/tags/v${TERMUX_PKG_VERSION}.tar.gz
-TERMUX_PKG_SHA256=bee8c60d58f11472c036277b0318bdceb5520cce5a61965bc028b26ccbdeb706
+TERMUX_PKG_SHA256=73c75eaa65cccde5065a947e45daf1da889c054d0f3a3590d376d7090d4f651a
TERMUX_PKG_BUILD_IN_SRC=true
+TERMUX_PKG_AUTO_UPDATE=true
termux_step_make() {
termux_setup_rust
- cargo build --jobs $TERMUX_MAKE_PROCESSES --target $CARGO_TARGET_NAME --release
+ cargo build --jobs $TERMUX_PKG_MAKE_PROCESSES --target $CARGO_TARGET_NAME --release
}
termux_step_make_install() {
diff --git a/packages/deutex/build.sh b/packages/deutex/build.sh
index a2f0723f07c0c9..9f9592fe9ca10b 100644
--- a/packages/deutex/build.sh
+++ b/packages/deutex/build.sh
@@ -2,9 +2,9 @@ TERMUX_PKG_HOMEPAGE=https://github.com/Doom-Utils/deutex/
TERMUX_PKG_DESCRIPTION="WAD composer for Doom, Heretic, Hexen, and Strife"
TERMUX_PKG_LICENSE="GPL-2.0"
TERMUX_PKG_MAINTAINER="@termux"
-TERMUX_PKG_VERSION=5.2.2
+TERMUX_PKG_VERSION="5.2.3"
TERMUX_PKG_SRCURL=https://github.com/Doom-Utils/deutex/archive/v${TERMUX_PKG_VERSION}.tar.gz
-TERMUX_PKG_SHA256=767e75eb3615bb732947448b81031410e26f808dfc3a099d64a483931fe0b313
+TERMUX_PKG_SHA256=74bc442169623d5b35dd5c62d8d1747da4358a6d499a6c8a21e6a71c3cf97e98
TERMUX_PKG_AUTO_UPDATE=true
TERMUX_PKG_DEPENDS="libpng, zlib"
diff --git a/packages/dictd/build.sh b/packages/dictd/build.sh
index bd7e486d1d5e7e..1c266f8e8d222d 100644
--- a/packages/dictd/build.sh
+++ b/packages/dictd/build.sh
@@ -2,11 +2,13 @@ TERMUX_PKG_HOMEPAGE=https://sourceforge.net/projects/dict/
TERMUX_PKG_DESCRIPTION="Online dictionary client and server"
TERMUX_PKG_LICENSE="GPL-2.0"
TERMUX_PKG_MAINTAINER="@termux"
-TERMUX_PKG_VERSION=1.13.1
+TERMUX_PKG_VERSION="1.13.3"
TERMUX_PKG_SRCURL=https://downloads.sourceforge.net/project/dict/dictd/dictd-${TERMUX_PKG_VERSION}/dictd-${TERMUX_PKG_VERSION}.tar.gz
-TERMUX_PKG_SHA256=e4f1a67d16894d8494569d7dc9442c15cc38c011f2b9631c7f1cc62276652a1b
+TERMUX_PKG_SHA256=192129dfb38fa723f48a9586c79c5198fc4904fec1757176917314dd073f1171
+TERMUX_PKG_AUTO_UPDATE=true
TERMUX_PKG_DEPENDS="libmaa, zlib"
TERMUX_PKG_CONFFILES="etc/dict.conf"
+TERMUX_PKG_EXTRA_MAKE_ARGS="LEX=flex"
termux_step_post_make_install() {
install -Dm600 $TERMUX_PKG_BUILDER_DIR/dict.conf $TERMUX_PREFIX/etc/dict.conf
diff --git a/packages/dictd/dictd-1.13.0-lex.patch b/packages/dictd/dictd-1.13.0-lex.patch
deleted file mode 100644
index 699a0b99122210..00000000000000
--- a/packages/dictd/dictd-1.13.0-lex.patch
+++ /dev/null
@@ -1,31 +0,0 @@
-https://github.com/termux/termux-packages/issues/15852
-Borrowed from https://github.com/gentoo/gentoo/blob/f9f2aed0b0a013a41482148a0224d14f70ea6818/app-text/dictd/files/dictd-1.13.0-lex.patch
-
-From: orbea
-Date: Sat, 18 Jun 2022 09:10:18 -0700
-Subject: [PATCH] build: Fix implicit function declarations
-
---- a/clientparse.y
-+++ b/clientparse.y
-@@ -24,6 +24,9 @@
- #define YYERROR_VERBOSE
-
- static dictServer *s;
-+
-+int yylex();
-+void yyerror(const char *s);
- %}
-
- %union {
---- a/servparse.y
-+++ b/servparse.y
-@@ -30,6 +30,9 @@
-
- static dictDatabase *db;
-
-+int yylex();
-+void yyerror(const char *s);
-+
- static int string2bool (const char *str)
- {
- if (
diff --git a/packages/diff-so-fancy/build.sh b/packages/diff-so-fancy/build.sh
new file mode 100644
index 00000000000000..cb4490e1532b5b
--- /dev/null
+++ b/packages/diff-so-fancy/build.sh
@@ -0,0 +1,21 @@
+TERMUX_PKG_HOMEPAGE="https://github.com/so-fancy/diff-so-fancy"
+TERMUX_PKG_DESCRIPTION="Good-lookin' diffs. Actually... nah... The best-lookin' diffs"
+TERMUX_PKG_LICENSE="MIT"
+TERMUX_PKG_VERSION="1.4.4"
+TERMUX_PKG_MAINTAINER="@termux"
+TERMUX_PKG_SRCURL="https://github.com/so-fancy/diff-so-fancy/archive/v${TERMUX_PKG_VERSION}.tar.gz"
+TERMUX_PKG_SHA256="3eac2cfb3b1de9d14b6a712941985d6b240b7f3726c94a5e337317c7161e869d"
+TERMUX_PKG_AUTO_UPDATE=true
+TERMUX_PKG_DEPENDS="perl"
+TERMUX_PKG_RECOMMENDS="git"
+TERMUX_PKG_BUILD_IN_SRC=true
+TERMUX_PKG_PLATFORM_INDEPENDENT=true
+
+termux_step_make_install() {
+ # relative paths of vendored libs to absolute system lib paths
+ sed "s#^use lib .*\$#use lib \"$TERMUX_PREFIX/share/diff-so-fancy\";#" -i diff-so-fancy
+
+ install -Dm700 diff-so-fancy "$TERMUX_PREFIX/bin/diff-so-fancy"
+ install -Dm700 lib/DiffHighlight.pm "$TERMUX_PREFIX/share/diff-so-fancy/DiffHighlight.pm"
+ install -Dm600 README.md "$TERMUX_PREFIX/share/doc/diff-so-fancy/README.md"
+}
diff --git a/packages/diffstat/build.sh b/packages/diffstat/build.sh
index dcf93624557f29..4806226a6eef43 100644
--- a/packages/diffstat/build.sh
+++ b/packages/diffstat/build.sh
@@ -1,14 +1,12 @@
TERMUX_PKG_HOMEPAGE=https://invisible-island.net/diffstat/diffstat.html
TERMUX_PKG_DESCRIPTION="Displays a histogram of changes to a file"
-# License: HPND
-TERMUX_PKG_LICENSE="custom"
-TERMUX_PKG_LICENSE_FILE="COPYING"
+TERMUX_PKG_LICENSE="HPND"
TERMUX_PKG_MAINTAINER="@termux"
-TERMUX_PKG_VERSION="1.66"
+TERMUX_PKG_VERSION="1.67"
TERMUX_PKG_SRCURL=https://github.com/ThomasDickey/diffstat-snapshots/archive/refs/tags/v${TERMUX_PKG_VERSION/./_}.tar.gz
# invisible-mirror.net is not suitable for CI due to bad responsiveness.
#TERMUX_PKG_SRCURL=https://invisible-mirror.net/archives/diffstat/diffstat-${TERMUX_PKG_VERSION}.tgz
#TERMUX_PKG_SRCURL=https://invisible-island.net/datafiles/release/diffstat.tar.gz
-TERMUX_PKG_SHA256=51570ed05b8c13ca2163ce301fc1418545baf05881e18bcd21e4af5ff1bd14eb
+TERMUX_PKG_SHA256=c649165f991d3f4666090ac086281ceab149358419fb04a053d3e1759340f074
TERMUX_PKG_AUTO_UPDATE=true
TERMUX_PKG_UPDATE_TAG_TYPE="newest-tag"
diff --git a/packages/difftastic/build.sh b/packages/difftastic/build.sh
index 6b001840f1f88d..0e57b80ecf4b01 100644
--- a/packages/difftastic/build.sh
+++ b/packages/difftastic/build.sh
@@ -3,9 +3,9 @@ TERMUX_PKG_DESCRIPTION="difft: A structural diff that understands syntax"
TERMUX_PKG_LICENSE="MIT"
TERMUX_PKG_LICENSE_FILE="LICENSE"
TERMUX_PKG_MAINTAINER="@termux"
-TERMUX_PKG_VERSION="0.58.0"
+TERMUX_PKG_VERSION="0.63.0"
TERMUX_PKG_SRCURL="https://github.com/Wilfred/difftastic/archive/refs/tags/$TERMUX_PKG_VERSION.tar.gz"
-TERMUX_PKG_SHA256=2f180ff34e969880613a3cdcd6f2feb53af310180817075199690048d6e23af6
+TERMUX_PKG_SHA256=f96bcf4fc961921d52cd9fe5aa94017924abde3d5a3b5a4727b103e9c2d4b416
TERMUX_PKG_AUTO_UPDATE=true
TERMUX_PKG_DEPENDS="libc++"
TERMUX_PKG_BUILD_IN_SRC=true
diff --git a/packages/diffutils/build.sh b/packages/diffutils/build.sh
index f2eb27036022b5..83fc7a52f8e428 100644
--- a/packages/diffutils/build.sh
+++ b/packages/diffutils/build.sh
@@ -2,9 +2,9 @@ TERMUX_PKG_HOMEPAGE=https://www.gnu.org/software/diffutils/
TERMUX_PKG_DESCRIPTION="Programs (cmp, diff, diff3 and sdiff) related to finding differences between files"
TERMUX_PKG_LICENSE="GPL-3.0"
TERMUX_PKG_MAINTAINER="@termux"
-TERMUX_PKG_VERSION=3.10
+TERMUX_PKG_VERSION="3.11"
TERMUX_PKG_SRCURL=https://mirrors.kernel.org/gnu/diffutils/diffutils-${TERMUX_PKG_VERSION}.tar.xz
-TERMUX_PKG_SHA256=90e5e93cc724e4ebe12ede80df1634063c7a855692685919bfe60b556c9bd09e
+TERMUX_PKG_SHA256=a73ef05fe37dd585f7d87068e4a0639760419f810138bd75c61ddaa1f9e2131e
TERMUX_PKG_DEPENDS="libiconv"
TERMUX_PKG_ESSENTIAL=true
diff --git a/packages/direnv/build.sh b/packages/direnv/build.sh
index 7d10af8983f1a8..9e3b1a785c2a59 100644
--- a/packages/direnv/build.sh
+++ b/packages/direnv/build.sh
@@ -2,9 +2,9 @@ TERMUX_PKG_HOMEPAGE=https://github.com/direnv/direnv
TERMUX_PKG_DESCRIPTION="Environment switcher for shell"
TERMUX_PKG_LICENSE="MIT"
TERMUX_PKG_MAINTAINER="@termux"
-TERMUX_PKG_VERSION="2.34.0"
+TERMUX_PKG_VERSION="2.35.0"
TERMUX_PKG_SRCURL=https://github.com/direnv/direnv/archive/v$TERMUX_PKG_VERSION.tar.gz
-TERMUX_PKG_SHA256=3d7067e71500e95d69eac86a271a6b6fc3f2f2817ba0e9a589524bf3e73e007c
+TERMUX_PKG_SHA256=a7aaec49d1b305f0745dad364af967fb3dc9bb5befc9f29d268d528b5a474e57
TERMUX_PKG_AUTO_UPDATE=true
TERMUX_PKG_BUILD_IN_SRC=true
diff --git a/packages/direvent/build.sh b/packages/direvent/build.sh
index 42f8b2a22e447e..0a6827da4dca3e 100644
--- a/packages/direvent/build.sh
+++ b/packages/direvent/build.sh
@@ -2,9 +2,10 @@ TERMUX_PKG_HOMEPAGE=https://www.gnu.org.ua/software/direvent/
TERMUX_PKG_DESCRIPTION="Monitor of events in file system directories"
TERMUX_PKG_LICENSE="GPL-2.0"
TERMUX_PKG_MAINTAINER="@termux"
-TERMUX_PKG_VERSION=5.3
+TERMUX_PKG_VERSION="5.4"
TERMUX_PKG_SRCURL=https://mirrors.kernel.org/gnu/direvent/direvent-${TERMUX_PKG_VERSION}.tar.gz
-TERMUX_PKG_SHA256=9405a8a77da49fe92bbe4af18bf925ff91f6d3374c10b7d700a031bacb94c497
+TERMUX_PKG_SHA256=1dbbc6192aab67e345725148603d570c6a2828380c964215762af91524d795ba
+TERMUX_PKG_AUTO_UPDATE=true
TERMUX_PKG_DEPENDS="libandroid-glob"
termux_step_pre_configure() {
diff --git a/packages/diskus/build.sh b/packages/diskus/build.sh
index 2fe273b0c71825..75e48891810e00 100644
--- a/packages/diskus/build.sh
+++ b/packages/diskus/build.sh
@@ -2,8 +2,8 @@ TERMUX_PKG_HOMEPAGE=https://github.com/sharkdp/diskus
TERMUX_PKG_DESCRIPTION="A minimal, fast alternative to 'du -sh'"
TERMUX_PKG_LICENSE="Apache-2.0"
TERMUX_PKG_MAINTAINER="@termux"
-TERMUX_PKG_VERSION=0.7.0
+TERMUX_PKG_VERSION="0.8.0"
TERMUX_PKG_SRCURL=https://github.com/sharkdp/diskus/archive/v$TERMUX_PKG_VERSION.tar.gz
-TERMUX_PKG_SHA256=64b1b2e397ef4de81ea20274f98ec418b0fe19b025860e33beaba5494d3b8bd1
+TERMUX_PKG_SHA256=9733570d64a1eafcf96fe233fd978ec3855c77705005037ad253c49a188fdf51
TERMUX_PKG_AUTO_UPDATE=true
TERMUX_PKG_BUILD_IN_SRC=true
diff --git a/packages/distant/build.sh b/packages/distant/build.sh
index b81569de738296..69adf6fc0dc844 100644
--- a/packages/distant/build.sh
+++ b/packages/distant/build.sh
@@ -3,6 +3,7 @@ TERMUX_PKG_DESCRIPTION="Library and tooling that supports remote filesystem and
TERMUX_PKG_LICENSE="Apache-2.0"
TERMUX_PKG_MAINTAINER="@termux"
TERMUX_PKG_VERSION="1:0.20.0"
+TERMUX_PKG_REVISION=2
TERMUX_PKG_SRCURL=https://github.com/chipsenkbeil/distant/archive/refs/tags/v${TERMUX_PKG_VERSION#*:}.tar.gz
TERMUX_PKG_SHA256=28044639adb3a7984a1c2e721debbaa472e6d826795c5d2f7c434c563e261007
TERMUX_PKG_AUTO_UPDATE=true
@@ -11,10 +12,9 @@ TERMUX_PKG_BUILD_IN_SRC=true
termux_step_pre_configure() {
export OPENSSL_NO_VENDOR=1
- export OPENSSL_INCLUDE_DIR=$TERMUX_PREFIX/include/openssl
+ export OPENSSL_INCLUDE_DIR=$TERMUX_PREFIX/include
export OPENSSL_LIB_DIR=$TERMUX_PREFIX/lib
export LIBSSH2_SYS_USE_PKG_CONFIG=1
- export PKG_CONFIG_ALLOW_CROSS=1
sed -i "s%\@TERMUX_PREFIX\@%${TERMUX_PREFIX}%g" ${TERMUX_PKG_SRCDIR}/src/constants.rs
@@ -38,7 +38,7 @@ termux_step_pre_configure() {
}
termux_step_make() {
- cargo build --jobs $TERMUX_MAKE_PROCESSES --target $CARGO_TARGET_NAME --release
+ cargo build --jobs $TERMUX_PKG_MAKE_PROCESSES --target $CARGO_TARGET_NAME --release
}
termux_step_make_install() {
diff --git a/packages/dmagnetic/build.sh b/packages/dmagnetic/build.sh
index 4625e436af7188..cac77a1421b15d 100644
--- a/packages/dmagnetic/build.sh
+++ b/packages/dmagnetic/build.sh
@@ -11,7 +11,7 @@ TERMUX_PKG_GROUPS="games"
termux_step_host_build() {
cd $TERMUX_PKG_BUILDDIR
- make -j $TERMUX_MAKE_PROCESSES dMagnetic
+ make -j $TERMUX_PKG_MAKE_PROCESSES dMagnetic
mv dMagnetic $TERMUX_PKG_HOSTBUILD_DIR/
make clean
}
diff --git a/packages/dnslookup/build.sh b/packages/dnslookup/build.sh
index 602cfce2288abf..166bae850c58a8 100644
--- a/packages/dnslookup/build.sh
+++ b/packages/dnslookup/build.sh
@@ -2,9 +2,9 @@ TERMUX_PKG_HOMEPAGE=https://github.com/ameshkov/dnslookup
TERMUX_PKG_DESCRIPTION="Simple command line utility to make DNS lookups. Supports all known DNS protocols: plain DNS, DoH, DoT, DoQ, DNSCrypt."
TERMUX_PKG_LICENSE="MIT"
TERMUX_PKG_MAINTAINER="kay9925@outlook.com"
-TERMUX_PKG_VERSION="1.10.1"
+TERMUX_PKG_VERSION="1.11.1"
TERMUX_PKG_SRCURL="https://github.com/ameshkov/dnslookup/archive/refs/tags/v${TERMUX_PKG_VERSION}.tar.gz"
-TERMUX_PKG_SHA256=f7b6ffb70136210ee321dee3e30a4c2b97958f7286cc7f0979aab3d8ed8ea723
+TERMUX_PKG_SHA256=31967c89406aa6da5f69c563815e58478b530c8e55f0d995065a363f68d5e535
TERMUX_PKG_BUILD_IN_SRC=true
TERMUX_PKG_AUTO_UPDATE=true
TERMUX_PKG_GO_USE_OLDER=false
diff --git a/packages/dnsutils/build.sh b/packages/dnsutils/build.sh
index 76e8f81fdf022c..d40b5911399333 100644
--- a/packages/dnsutils/build.sh
+++ b/packages/dnsutils/build.sh
@@ -1,66 +1,35 @@
-TERMUX_PKG_HOMEPAGE=https://www.isc.org/downloads/bind/
+TERMUX_PKG_HOMEPAGE=https://www.isc.org/bind/
TERMUX_PKG_DESCRIPTION="Clients provided with BIND"
TERMUX_PKG_LICENSE="MPL-2.0"
TERMUX_PKG_MAINTAINER="@termux"
-TERMUX_PKG_VERSION=9.16.41
-TERMUX_PKG_SRCURL="https://ftp.isc.org/isc/bind9/${TERMUX_PKG_VERSION}/bind-${TERMUX_PKG_VERSION}.tar.xz"
-TERMUX_PKG_SHA256=71904366aa1e04e2075c79a8906b92af936e3bfa4d7e8df5fd964fcf9e94f45c
-TERMUX_PKG_DEPENDS="openssl, readline, resolv-conf, zlib, libuv"
+TERMUX_PKG_VERSION="9.20.7"
+TERMUX_PKG_SRCURL="https://downloads.isc.org/isc/bind9/${TERMUX_PKG_VERSION}/bind-${TERMUX_PKG_VERSION}.tar.xz"
+TERMUX_PKG_SHA256=43323c8d22d2144282c37b4060ec11e98c24835e225688876fad08ba7b95dca6
+TERMUX_PKG_DEPENDS="cmocka, json-c, libandroid-execinfo, libandroid-glob, libcap, libnghttp2, liburcu, libuv, libxml2, openssl, readline, resolv-conf, zlib"
TERMUX_PKG_BREAKS="dnsutils-dev"
TERMUX_PKG_REPLACES="dnsutils-dev"
+TERMUX_PKG_AUTO_UPDATE=true
TERMUX_PKG_BUILD_IN_SRC=true
TERMUX_PKG_EXTRA_CONFIGURE_ARGS="
---disable-linux-caps
---without-python
---with-ecdsa=no
---with-gost=no
---with-gssapi=no
---with-libjson=no
---with-libtool
---with-libxml2=no
---with-openssl=$TERMUX_PREFIX
---with-randomdev=/dev/random
---with-readline=-lreadline
---with-eddsa=no
ax_cv_have_func_attribute_constructor=yes
ax_cv_have_func_attribute_destructor=yes
+lt_cv_prog_compiler_pic_works=yes
+--disable-static
+--with-json-c
+--with-libxml2
+--with-liburcu=qsbr
+--enable-developer
"
termux_step_pre_configure() {
- export BUILD_AR=ar
- export BUILD_CC=gcc
- export BUILD_CFLAGS=
- export BUILD_CPPFLAGS=
- export BUILD_LDFLAGS=
- export BUILD_RANLIB=
-
_RESOLV_CONF=$TERMUX_PREFIX/etc/resolv.conf
CFLAGS+=" $CPPFLAGS -DRESOLV_CONF=\\\"$_RESOLV_CONF\\\""
+ LDFLAGS+=" -landroid-glob"
}
-termux_step_make() {
- make -C lib/isc
- make -C lib/dns
- make -C lib/ns
- make -C lib/isccc
- make -C lib/isccfg
- make -C lib/bind9
- make -C lib/irs
- make -C bin/dig
- make -C bin/delv
- make -C bin/nsupdate
-}
-
-termux_step_make_install() {
- make -C lib/isc install
- make -C lib/dns install
- make -C lib/ns install
- make -C lib/isccc install
- make -C lib/isccfg install
- make -C lib/bind9 install
- make -C lib/irs install
- make -C bin/dig install
- make -C bin/delv install
- make -C bin/nsupdate install
+termux_step_post_configure() {
+ # Android linker is unable to directly resolve versioned libraries.
+ # This will create a symlink to versioned library via `libname.so`.
+ sed -i 's|library_names_spec=.*|library_names_spec="\\\$libname\\\$release\\\$shared_ext \\\$libname\\\$shared_ext"|g' ./libtool
}
diff --git a/packages/dnsutils/fix-underlinking.patch b/packages/dnsutils/fix-underlinking.patch
deleted file mode 100644
index 5b01e32724473a..00000000000000
--- a/packages/dnsutils/fix-underlinking.patch
+++ /dev/null
@@ -1,66 +0,0 @@
---- a/lib/bind9/Makefile.in
-+++ b/lib/bind9/Makefile.in
-@@ -33,7 +33,7 @@
- ISCCFGDEPLIBS = ../../lib/isccfg/libisccfg.@A@
- DNSDEPLIBS = ../../lib/dns/libdns.@A@
-
--LIBS = @LIBS@
-+LIBS = ${OPENSSL_LIBS} ${LIBUV_LIBS} @LIBS@
-
- SUBDIRS = include
-
---- a/lib/dns/Makefile.in
-+++ b/lib/dns/Makefile.in
-@@ -42,7 +42,7 @@
-
- ISCDEPLIBS = ../../lib/isc/libisc.@A@
-
--LIBS = ${FSTRM_LIBS} ${MAXMINDDB_LIBS} ${LMDB_LIBS} ${PROTOBUF_C_LIBS} @LIBS@
-+LIBS = ${FSTRM_LIBS} ${MAXMINDDB_LIBS} ${LMDB_LIBS} ${PROTOBUF_C_LIBS} ${OPENSSL_LIBS} ${LIBUV_LIBS} @LIBS@
-
- # Alphabetically
-
---- a/lib/irs/Makefile.in
-+++ b/lib/irs/Makefile.in
-@@ -37,7 +37,7 @@
-
- ISCCFGDEPLIBS = ../../lib/isccfg/libisccfg.@A@
-
--LIBS = @LIBS@
-+LIBS = ${OPENSSL_LIBS} ${LIBUV_LIBS} @LIBS@
-
- # Alphabetically
- OBJS = context.@O@ \
---- a/lib/isccc/Makefile.in
-+++ b/lib/isccc/Makefile.in
-@@ -30,7 +30,7 @@
- ISCDEPLIBS = ../../lib/isc/libisc.@A@
- ISCCCDEPLIBS = libisccc.@A@
-
--LIBS = @LIBS@
-+LIBS = ${OPENSSL_LIBS} ${LIBUV_LIBS} @LIBS@
-
- SUBDIRS = include
-
---- a/lib/isccfg/Makefile.in
-+++ b/lib/isccfg/Makefile.in
-@@ -29,7 +29,7 @@
- ISCDEPLIBS = ../../lib/isc/libisc.@A@
- ISCCFGDEPLIBS = libisccfg.@A@
-
--LIBS = @LIBS@
-+LIBS = ${OPENSSL_LIBS} ${LIBUV_LIBS} @LIBS@
-
- SUBDIRS = include
- TESTDIRS = @UNITTESTS@
---- a/lib/ns/Makefile.in
-+++ b/lib/ns/Makefile.in
-@@ -35,7 +35,7 @@
-
- DNSDEPLIBS = ../../lib/dns/libdns.@A@
-
--LIBS = @LIBS@
-+LIBS = ${OPENSSL_LIBS} ${LIBUV_LIBS} @LIBS@
-
- # Alphabetically
- OBJS = client.@O@ hooks.@O@ interfacemgr.@O@ lib.@O@ \
diff --git a/packages/dnsutils/lib-irs-context.c.patch b/packages/dnsutils/lib-irs-context.c.patch
deleted file mode 100644
index 33d80b0e099180..00000000000000
--- a/packages/dnsutils/lib-irs-context.c.patch
+++ /dev/null
@@ -1,18 +0,0 @@
-diff -uNr bind-9.16.1/lib/irs/context.c bind-9.16.1.mod/lib/irs/context.c
---- bind-9.16.1/lib/irs/context.c 2020-03-11 18:46:53.000000000 +0200
-+++ bind-9.16.1.mod/lib/irs/context.c 2020-03-19 22:01:16.984465631 +0200
-@@ -34,12 +34,12 @@
-
- #ifndef RESOLV_CONF
- /*% location of resolve.conf */
--#define RESOLV_CONF "/etc/resolv.conf"
-+#define RESOLV_CONF "@TERMUX_PREFIX@/etc/resolv.conf"
- #endif /* ifndef RESOLV_CONF */
-
- #ifndef DNS_CONF
- /*% location of dns.conf */
--#define DNS_CONF "/etc/dns.conf"
-+#define DNS_CONF "@TERMUX_PREFIX@/etc/dns.conf"
- #endif /* ifndef DNS_CONF */
-
- ISC_THREAD_LOCAL irs_context_t *irs_context = NULL;
diff --git a/packages/dnsutils/socklen_t-fix.patch b/packages/dnsutils/socklen_t-fix.patch
new file mode 100644
index 00000000000000..aa5f6732695ff0
--- /dev/null
+++ b/packages/dnsutils/socklen_t-fix.patch
@@ -0,0 +1,10 @@
++++ ./lib/dns/resconf.c
+@@ -227,7 +227,7 @@
+ }
+
+ address = isc_mem_get(mctx, sizeof(*address));
+- if (res->ai_addrlen > sizeof(address->type)) {
++ if ((size_t) res->ai_addrlen > sizeof(address->type)) {
+ isc_mem_put(mctx, address, sizeof(*address));
+ result = ISC_R_RANGE;
+ goto cleanup;
diff --git a/packages/docbook-xml/build.sh b/packages/docbook-xml/build.sh
index ed6da12d73079d..f16e526fb5bea7 100644
--- a/packages/docbook-xml/build.sh
+++ b/packages/docbook-xml/build.sh
@@ -2,9 +2,9 @@ TERMUX_PKG_HOMEPAGE=https://www.oasis-open.org/docbook/
TERMUX_PKG_DESCRIPTION="A widely used XML scheme for writing documentation and help"
TERMUX_PKG_LICENSE="MIT"
TERMUX_PKG_MAINTAINER="@termux"
-TERMUX_PKG_VERSION=4.5
-TERMUX_PKG_REVISION=4
+TERMUX_PKG_VERSION=5.1
TERMUX_PKG_AUTO_UPDATE=false
+TERMUX_PKG_BREAKS="docbook-xsl (<= 1.79.2-1)"
TERMUX_PKG_DEPENDS="libxml2-utils"
TERMUX_PKG_PLATFORM_INDEPENDENT=true
TERMUX_PKG_BUILD_IN_SRC=true
diff --git a/packages/docbook-xsl/build.sh b/packages/docbook-xsl/build.sh
index 9a9741de80adc4..34b10cbd13dc38 100644
--- a/packages/docbook-xsl/build.sh
+++ b/packages/docbook-xsl/build.sh
@@ -3,10 +3,10 @@ TERMUX_PKG_DESCRIPTION="XML stylesheets for Docbook-xml transformations"
TERMUX_PKG_LICENSE="MIT"
TERMUX_PKG_MAINTAINER="@termux"
TERMUX_PKG_VERSION=1.79.2
-TERMUX_PKG_REVISION=1
+TERMUX_PKG_REVISION=2
TERMUX_PKG_AUTO_UPDATE=false
TERMUX_PKG_LICENSE_FILE="docbook-xsl-${TERMUX_PKG_VERSION}/COPYING, docbook-xsl-nons-${TERMUX_PKG_VERSION}/COPYING"
-TERMUX_PKG_DEPENDS="docbook-xml, libxml2-utils, xsltproc"
+TERMUX_PKG_DEPENDS="docbook-xml (= 5.1), libxml2-utils, xsltproc"
TERMUX_PKG_PLATFORM_INDEPENDENT=true
TERMUX_PKG_BUILD_IN_SRC=true
TERMUX_PKG_SKIP_SRC_EXTRACT=true
diff --git a/packages/dog/build.sh b/packages/dog/build.sh
deleted file mode 100644
index 3afc4c27b13175..00000000000000
--- a/packages/dog/build.sh
+++ /dev/null
@@ -1,22 +0,0 @@
-TERMUX_PKG_HOMEPAGE=https://dns.lookup.dog/
-TERMUX_PKG_DESCRIPTION="A command-line DNS client"
-TERMUX_PKG_LICENSE="EUPL-1.2"
-TERMUX_PKG_LICENSE_FILE="LICENCE"
-TERMUX_PKG_MAINTAINER="@termux"
-TERMUX_PKG_VERSION=0.1.0
-TERMUX_PKG_REVISION=2
-TERMUX_PKG_SRCURL=https://github.com/ogham/dog/archive/refs/tags/v${TERMUX_PKG_VERSION}.tar.gz
-TERMUX_PKG_SHA256=82387d38727bac7fcdb080970e84b36de80bfe7923ce83f993a77d9ac7847858
-TERMUX_PKG_DEPENDS="openssl-1.1, resolv-conf"
-TERMUX_PKG_BUILD_IN_SRC=true
-
-termux_step_pre_configure() {
- export OPENSSL_INCLUDE_DIR=$TERMUX_PREFIX/include/openssl-1.1
- export OPENSSL_LIB_DIR=$TERMUX_PREFIX/lib/openssl-1.1
- CFLAGS="-I$TERMUX_PREFIX/include/openssl-1.1 $CFLAGS"
- CPPFLAGS="-I$TERMUX_PREFIX/include/openssl-1.1 $CPPFLAGS"
- CXXFLAGS="-I$TERMUX_PREFIX/include/openssl-1.1 $CXXFLAGS"
- LDFLAGS="-L$TERMUX_PREFIX/lib/openssl-1.1 -Wl,-rpath=$TERMUX_PREFIX/lib/openssl-1.1 $LDFLAGS"
-
- RUSTFLAGS+=" -C link-arg=-Wl,-rpath=$TERMUX_PREFIX/lib/openssl-1.1"
-}
diff --git a/packages/doge/build.sh b/packages/doge/build.sh
new file mode 100644
index 00000000000000..58079aff32975f
--- /dev/null
+++ b/packages/doge/build.sh
@@ -0,0 +1,16 @@
+TERMUX_PKG_HOMEPAGE=https://github.com/Dj-Codeman/dog_community
+TERMUX_PKG_DESCRIPTION="A command-line DNS client"
+TERMUX_PKG_LICENSE="EUPL-1.2"
+TERMUX_PKG_LICENSE_FILE="LICENCE"
+TERMUX_PKG_MAINTAINER="@termux"
+TERMUX_PKG_VERSION=0.2.8
+TERMUX_PKG_REVISION=1
+TERMUX_PKG_SRCURL=https://github.com/Dj-Codeman/dog_community/archive/refs/tags/v$TERMUX_PKG_VERSION.tar.gz
+TERMUX_PKG_SHA256=4ad82572271bc4601ac3b9b5f68be83f2659bdb5370c1b19297ecf3bd964f957
+TERMUX_PKG_REPLACES="dog"
+TERMUX_PKG_DEPENDS="openssl, resolv-conf"
+TERMUX_PKG_BUILD_IN_SRC=true
+
+termux_step_pre_configure() {
+ rm $TERMUX_PKG_SRCDIR/makefile
+}
diff --git a/packages/dog/src-resolve.rs.patch b/packages/doge/src-resolve.rs.patch
similarity index 100%
rename from packages/dog/src-resolve.rs.patch
rename to packages/doge/src-resolve.rs.patch
diff --git a/packages/dotnet-host/build.sh b/packages/dotnet-host/build.sh
new file mode 100644
index 00000000000000..c7ef0f9eb1a15b
--- /dev/null
+++ b/packages/dotnet-host/build.sh
@@ -0,0 +1,12 @@
+TERMUX_PKG_HOMEPAGE=https://dotnet.microsoft.com/en-us/
+TERMUX_PKG_DESCRIPTION="A metapackage for .NET Host"
+TERMUX_PKG_LICENSE="Public Domain"
+TERMUX_PKG_MAINTAINER="@truboxl"
+TERMUX_PKG_VERSION="9.0"
+TERMUX_PKG_DEPENDS="dotnet-host-9.0 | dotnet-host-8.0"
+TERMUX_PKG_ANTI_BUILD_DEPENDS="dotnet-host-9.0, dotnet-host-8.0"
+TERMUX_PKG_AUTO_UPDATE=false
+TERMUX_PKG_METAPACKAGE=true
+TERMUX_PKG_PLATFORM_INDEPENDENT=true
+TERMUX_PKG_SKIP_SRC_EXTRACT=true
+TERMUX_PKG_EXCLUDED_ARCHES="arm"
diff --git a/packages/dotnet8.0/0001-build-all-libs.patch b/packages/dotnet8.0/0001-build-all-libs.patch
new file mode 100644
index 00000000000000..3c083741b16229
--- /dev/null
+++ b/packages/dotnet8.0/0001-build-all-libs.patch
@@ -0,0 +1,26 @@
+--- a/src/runtime/src/native/libs/CMakeLists.txt
++++ b/src/runtime/src/native/libs/CMakeLists.txt
+@@ -115,7 +115,7 @@ add_subdirectory(System.IO.Compression.Native)
+ if (CLR_CMAKE_TARGET_UNIX OR CLR_CMAKE_TARGET_BROWSER OR CLR_CMAKE_TARGET_WASI)
+ include(configure.cmake)
+
+- if (NOT CLR_CMAKE_TARGET_BROWSER AND NOT CLR_CMAKE_TARGET_WASI AND NOT CLR_CMAKE_TARGET_MACCATALYST AND NOT CLR_CMAKE_TARGET_IOS AND NOT CLR_CMAKE_TARGET_TVOS AND NOT CLR_CMAKE_TARGET_ANDROID)
++ if (NOT CLR_CMAKE_TARGET_BROWSER AND NOT CLR_CMAKE_TARGET_WASI AND NOT CLR_CMAKE_TARGET_MACCATALYST AND NOT CLR_CMAKE_TARGET_IOS AND NOT CLR_CMAKE_TARGET_TVOS)
+ add_subdirectory(System.IO.Ports.Native)
+ endif ()
+
+@@ -152,13 +152,10 @@ if (CLR_CMAKE_TARGET_UNIX OR CLR_CMAKE_TARGET_BROWSER OR CLR_CMAKE_TARGET_WASI)
+ #add_subdirectory(System.Net.Security.Native) # no gssapi on tvOS, see https://developer.apple.com/documentation/gss
+ # System.Security.Cryptography.Native is intentionally disabled on tvOS
+ # it is only used for interacting with OpenSSL which isn't useful there
+- elseif (CLR_CMAKE_TARGET_ANDROID AND NOT FORCE_ANDROID_OPENSSL)
+- add_subdirectory(System.Security.Cryptography.Native.Android)
+- elseif (FORCE_ANDROID_OPENSSL)
+- add_subdirectory(System.Security.Cryptography.Native)
+ else ()
+ add_subdirectory(System.Net.Security.Native)
+ add_subdirectory(System.Security.Cryptography.Native)
++ add_subdirectory(System.Security.Cryptography.Native.Android)
+ endif ()
+
+ if (CLR_CMAKE_TARGET_APPLE)
diff --git a/packages/dotnet8.0/0002-define-memfd_create.patch b/packages/dotnet8.0/0002-define-memfd_create.patch
new file mode 100644
index 00000000000000..be433c43dde8ac
--- /dev/null
+++ b/packages/dotnet8.0/0002-define-memfd_create.patch
@@ -0,0 +1,11 @@
+--- a/src/runtime/src/coreclr/minipal/Unix/doublemapping.cpp
++++ b/src/runtime/src/coreclr/minipal/Unix/doublemapping.cpp
+@@ -14,7 +14,7 @@
+ #include
+ #include
+ #include
+-#if defined(TARGET_LINUX) && !defined(MFD_CLOEXEC)
++#if (defined(TARGET_LINUX) && !defined(MFD_CLOEXEC)) || defined(TARGET_ANDROID)
+ #include
+ #include // __NR_memfd_create
+ #define memfd_create(...) syscall(__NR_memfd_create, __VA_ARGS__)
diff --git a/packages/dotnet8.0/0003-runtime-src-native-libs-System.IO.Compression.Native.patch b/packages/dotnet8.0/0003-runtime-src-native-libs-System.IO.Compression.Native.patch
new file mode 100644
index 00000000000000..068e1afa8e02c9
--- /dev/null
+++ b/packages/dotnet8.0/0003-runtime-src-native-libs-System.IO.Compression.Native.patch
@@ -0,0 +1,31 @@
+--- a/src/runtime/src/native/libs/System.IO.Compression.Native/CMakeLists.txt
++++ b/src/runtime/src/native/libs/System.IO.Compression.Native/CMakeLists.txt
+@@ -64,7 +64,7 @@ if (CLR_CMAKE_TARGET_UNIX OR CLR_CMAKE_TARGET_BROWSER OR CLR_CMAKE_TARGET_WASI)
+ ${NATIVE_LIBS_EXTRA}
+ )
+
+- if (NOT CLR_CMAKE_TARGET_MACCATALYST AND NOT CLR_CMAKE_TARGET_IOS AND NOT CLR_CMAKE_TARGET_TVOS AND NOT CLR_CMAKE_TARGET_ANDROID)
++ if (NOT CLR_CMAKE_TARGET_MACCATALYST AND NOT CLR_CMAKE_TARGET_IOS AND NOT CLR_CMAKE_TARGET_TVOS)
+ set(DEF_SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/System.IO.Compression.Native_unixexports.src)
+ set(EXPORTS_FILE ${CMAKE_CURRENT_BINARY_DIR}/System.IO.Compression.Native.exports)
+ generate_exports_file(${DEF_SOURCES} ${EXPORTS_FILE})
+@@ -122,7 +122,7 @@ else ()
+ )
+ endif ()
+
+- if (NOT GEN_SHARED_LIB AND NOT CLR_CMAKE_TARGET_MACCATALYST AND NOT CLR_CMAKE_TARGET_IOS AND NOT CLR_CMAKE_TARGET_TVOS AND NOT CLR_CMAKE_TARGET_ANDROID AND NOT CLR_CMAKE_TARGET_BROWSER AND NOT CLR_CMAKE_TARGET_WASI)
++ if (NOT GEN_SHARED_LIB AND NOT CLR_CMAKE_TARGET_MACCATALYST AND NOT CLR_CMAKE_TARGET_IOS AND NOT CLR_CMAKE_TARGET_TVOS AND NOT CLR_CMAKE_TARGET_BROWSER AND NOT CLR_CMAKE_TARGET_WASI)
+ set(NATIVECOMPRESSION_SOURCES ${NATIVECOMPRESSION_SOURCES} entrypoints.c)
+ endif ()
+
+--- a/src/runtime/src/native/libs/System.IO.Compression.Native/extra_libs.cmake
++++ b/src/runtime/src/native/libs/System.IO.Compression.Native/extra_libs.cmake
+@@ -5,7 +5,7 @@ macro(append_extra_compression_libs NativeLibsExtra)
+ # nothing special to link
+ elseif (CLR_CMAKE_TARGET_ANDROID OR HOST_ANDROID)
+ # need special case here since we want to link against libz.so but find_package() would resolve libz.a
+- set(ZLIB_LIBRARIES z)
++ set(ZLIB_LIBRARIES z m)
+ elseif (CLR_CMAKE_TARGET_SUNOS OR HOST_SOLARIS)
+ set(ZLIB_LIBRARIES z m)
+ else ()
diff --git a/packages/dotnet8.0/0004-ndk-r26.patch b/packages/dotnet8.0/0004-ndk-r26.patch
new file mode 100644
index 00000000000000..bda97ffdf38583
--- /dev/null
+++ b/packages/dotnet8.0/0004-ndk-r26.patch
@@ -0,0 +1,92 @@
+https://github.com/dotnet/runtime/commit/be5c2a28cc4a61e271d8e2c340ced5923dc7e9c1
+
+From be5c2a28cc4a61e271d8e2c340ced5923dc7e9c1 Mon Sep 17 00:00:00 2001
+From: Filip Navara
+Date: Mon, 12 Feb 2024 12:29:14 +0100
+Subject: [PATCH] Fix build with Android 26 NDK (which has some nullability
+ annotations) (#97976)
+
+* Fix build with Android 26 NDK (which has some nullability annotations)
+
+* One more error in System.Security.Cryptography.Native.Android
+---
+ .../System.Native/pal_interfaceaddresses.c | 23 +++++++++++++------
+ .../pal_cipher.c | 2 +-
+ 2 files changed, 17 insertions(+), 8 deletions(-)
+
+--- a/src/runtime/src/native/libs/System.Native/pal_interfaceaddresses.c
++++ b/src/runtime/src/native/libs/System.Native/pal_interfaceaddresses.c
+@@ -117,7 +117,7 @@ static inline uint8_t mask2prefix(uint8_t* mask, int length)
+ static int (*getifaddrs)(struct ifaddrs**) = NULL;
+ static void (*freeifaddrs)(struct ifaddrs*) = NULL;
+
+-static void try_loading_getifaddrs()
++static void try_loading_getifaddrs(void)
+ {
+ if (android_get_device_api_level() >= 24)
+ {
+@@ -139,7 +139,7 @@ static void try_loading_getifaddrs()
+ }
+ }
+
+-static bool ensure_getifaddrs_is_loaded()
++static bool ensure_getifaddrs_is_loaded(void)
+ {
+ static pthread_once_t getifaddrs_is_loaded = PTHREAD_ONCE_INIT;
+ pthread_once(&getifaddrs_is_loaded, try_loading_getifaddrs);
+@@ -169,11 +169,12 @@ int32_t SystemNative_EnumerateInterfaceAddresses(void* context,
+
+ for (struct ifaddrs* current = headAddr; current != NULL; current = current->ifa_next)
+ {
+- if (current->ifa_addr == NULL)
++ char *ifa_name = current->ifa_name;
++ if (current->ifa_addr == NULL || ifa_name == NULL)
+ {
+ continue;
+ }
+- uint32_t interfaceIndex = if_nametoindex(current->ifa_name);
++ uint32_t interfaceIndex = if_nametoindex(ifa_name);
+ // ifa_name may be an aliased interface name.
+ // Use if_indextoname to map back to the true device name.
+ char actualName[IF_NAMESIZE];
+@@ -376,9 +377,17 @@ int32_t SystemNative_GetNetworkInterfaces(int32_t * interfaceCount, NetworkInter
+
+ while (ifaddrsEntry != NULL)
+ {
++ char *ifa_name = ifaddrsEntry->ifa_name;
++
++ if (ifa_name == NULL)
++ {
++ ifaddrsEntry = ifaddrsEntry->ifa_next;
++ continue;
++ }
++
+ //current = NULL;
+ nii = NULL;
+- uint ifindex = if_nametoindex(ifaddrsEntry->ifa_name);
++ uint ifindex = if_nametoindex(ifa_name);
+ for (index = 0; index < (int)ifcount; index ++)
+ {
+ if (((NetworkInterfaceInfo*)memoryBlock)[index].InterfaceIndex == ifindex)
+@@ -393,8 +402,8 @@ int32_t SystemNative_GetNetworkInterfaces(int32_t * interfaceCount, NetworkInter
+ // We git new interface.
+ nii = &((NetworkInterfaceInfo*)memoryBlock)[ifcount++];
+
+- memcpy(nii->Name, ifaddrsEntry->ifa_name, sizeof(nii->Name));
+- nii->InterfaceIndex = if_nametoindex(ifaddrsEntry->ifa_name);
++ memcpy(nii->Name, ifa_name, sizeof(nii->Name));
++ nii->InterfaceIndex = ifindex;
+ nii->Speed = -1;
+ nii->HardwareType = ((ifaddrsEntry->ifa_flags & IFF_LOOPBACK) == IFF_LOOPBACK) ? NetworkInterfaceType_Loopback : NetworkInterfaceType_Unknown;
+
+--- a/src/runtime/src/native/libs/System.Security.Cryptography.Native.Android/pal_cipher.c
++++ b/src/runtime/src/native/libs/System.Security.Cryptography.Native.Android/pal_cipher.c
+@@ -20,7 +20,7 @@ typedef struct CipherInfo
+ } CipherInfo;
+
+ #define DEFINE_CIPHER(cipherId, width, javaName, flags) \
+-CipherInfo* AndroidCryptoNative_ ## cipherId() \
++CipherInfo* AndroidCryptoNative_ ## cipherId(void) \
+ { \
+ static CipherInfo info = { flags, width, javaName }; \
+ return &info; \
diff --git a/packages/dotnet8.0/0005-runtime-src-native-libs-System.Security.Cryptography.Native-opensslshim.c.patch b/packages/dotnet8.0/0005-runtime-src-native-libs-System.Security.Cryptography.Native-opensslshim.c.patch
new file mode 100644
index 00000000000000..b9d7019cb8aa22
--- /dev/null
+++ b/packages/dotnet8.0/0005-runtime-src-native-libs-System.Security.Cryptography.Native-opensslshim.c.patch
@@ -0,0 +1,17 @@
+--- a/src/runtime/src/native/libs/System.Security.Cryptography.Native/opensslshim.c
++++ b/src/runtime/src/native/libs/System.Security.Cryptography.Native/opensslshim.c
+@@ -77,14 +77,6 @@ static void OpenLibraryOnce(void)
+ DlOpen(soName);
+ }
+
+-#ifdef TARGET_ANDROID
+- if (libssl == NULL)
+- {
+- // Android OpenSSL has no soname
+- DlOpen(LIBNAME);
+- }
+-#endif
+-
+ if (libssl == NULL)
+ {
+ // Prefer OpenSSL 3.x
diff --git a/packages/dotnet8.0/0006-runtime-eng-common-cross-toolchain.cmake.patch b/packages/dotnet8.0/0006-runtime-eng-common-cross-toolchain.cmake.patch
new file mode 100644
index 00000000000000..85644adfa488e5
--- /dev/null
+++ b/packages/dotnet8.0/0006-runtime-eng-common-cross-toolchain.cmake.patch
@@ -0,0 +1,55 @@
+--- a/src/runtime/eng/common/cross/toolchain.cmake
++++ b/src/runtime/eng/common/cross/toolchain.cmake
+@@ -36,6 +36,8 @@ if(TARGET_ARCH_NAME STREQUAL "arm")
+ set(TOOLCHAIN "armv7-alpine-linux-musleabihf")
+ elseif(EXISTS ${CROSS_ROOTFS}/usr/lib/gcc/armv6-alpine-linux-musleabihf)
+ set(TOOLCHAIN "armv6-alpine-linux-musleabihf")
++ elseif(EXISTS ${CROSS_ROOTFS}/usr/lib/arm-linux-androideabi)
++ set(TOOLCHAIN "armv7-linux-androideabi")
+ else()
+ set(TOOLCHAIN "arm-linux-gnueabihf")
+ endif()
+@@ -46,6 +48,8 @@ elseif(TARGET_ARCH_NAME STREQUAL "arm64")
+ set(CMAKE_SYSTEM_PROCESSOR aarch64)
+ if(EXISTS ${CROSS_ROOTFS}/usr/lib/gcc/aarch64-alpine-linux-musl)
+ set(TOOLCHAIN "aarch64-alpine-linux-musl")
++ elseif(EXISTS ${CROSS_ROOTFS}/usr/lib/aarch64-linux-android)
++ set(TOOLCHAIN "aarch64-linux-android")
+ elseif(LINUX)
+ set(TOOLCHAIN "aarch64-linux-gnu")
+ if(TIZEN)
+@@ -78,6 +82,8 @@ elseif(TARGET_ARCH_NAME STREQUAL "riscv64")
+ set(CMAKE_SYSTEM_PROCESSOR riscv64)
+ if(EXISTS ${CROSS_ROOTFS}/usr/lib/gcc/riscv64-alpine-linux-musl)
+ set(TOOLCHAIN "riscv64-alpine-linux-musl")
++ elseif(EXISTS ${CROSS_ROOTFS}/usr/lib/riscv64-linux-android)
++ set(TOOLCHAIN "riscv64-linux-android")
+ else()
+ set(TOOLCHAIN "riscv64-linux-gnu")
+ endif()
+@@ -92,6 +98,8 @@ elseif(TARGET_ARCH_NAME STREQUAL "x64")
+ set(CMAKE_SYSTEM_PROCESSOR x86_64)
+ if(EXISTS ${CROSS_ROOTFS}/usr/lib/gcc/x86_64-alpine-linux-musl)
+ set(TOOLCHAIN "x86_64-alpine-linux-musl")
++ elseif(EXISTS ${CROSS_ROOTFS}/usr/lib/x86_64-linux-android)
++ set(TOOLCHAIN "x86_64-linux-android")
+ elseif(LINUX)
+ set(TOOLCHAIN "x86_64-linux-gnu")
+ if(TIZEN)
+@@ -108,6 +116,8 @@ elseif(TARGET_ARCH_NAME STREQUAL "x86")
+ set(CMAKE_SYSTEM_PROCESSOR i686)
+ if(EXISTS ${CROSS_ROOTFS}/usr/lib/gcc/i586-alpine-linux-musl)
+ set(TOOLCHAIN "i586-alpine-linux-musl")
++ elseif(EXISTS ${CROSS_ROOTFS}/usr/lib/i686-linux-android)
++ set(TOOLCHAIN "i686-linux-android")
+ else()
+ set(TOOLCHAIN "i686-linux-gnu")
+ endif()
+@@ -244,6 +254,7 @@ else()
+ set(CMAKE_C_COMPILER_EXTERNAL_TOOLCHAIN "${CROSS_ROOTFS}/usr")
+ set(CMAKE_CXX_COMPILER_EXTERNAL_TOOLCHAIN "${CROSS_ROOTFS}/usr")
+ set(CMAKE_ASM_COMPILER_EXTERNAL_TOOLCHAIN "${CROSS_ROOTFS}/usr")
++ include(${CROSS_ROOTFS}/../build/cmake/android.toolchain.cmake)
+ endif()
+
+ # Specify link flags
diff --git a/packages/dotnet8.0/0007-aspire_fix-gitinfo-target.patch b/packages/dotnet8.0/0007-aspire_fix-gitinfo-target.patch
new file mode 100644
index 00000000000000..33ce773d0e951a
--- /dev/null
+++ b/packages/dotnet8.0/0007-aspire_fix-gitinfo-target.patch
@@ -0,0 +1,20 @@
+https://git.alpinelinux.org/aports/plain/community/dotnet8-runtime/aspire_fix-gitinfo-target.patch
+
+--- a/src/aspire/Directory.Build.targets.orig
++++ b/src/aspire/Directory.Build.targets
+@@ -6,13 +6,12 @@
+ README.md
+
+
+-
+-
++
+
+
+
+
+
+
+-
++
+
diff --git a/packages/dotnet8.0/0008-fix-paths.patch b/packages/dotnet8.0/0008-fix-paths.patch
new file mode 100644
index 00000000000000..1289f753bb6e48
--- /dev/null
+++ b/packages/dotnet8.0/0008-fix-paths.patch
@@ -0,0 +1,302 @@
+--- a/src/msbuild/src/Shared/NamedPipeUtil.cs
++++ b/src/msbuild/src/Shared/NamedPipeUtil.cs
+@@ -31,7 +31,7 @@ namespace Microsoft.Build.Shared
+ // '/tmp' is mandated by POSIX to always be a valid temp directory, so we can use that
+ // instead.
+ #if !CLR2COMPATIBILITY
+- return Path.Combine("/tmp", pipeName);
++ return Path.Combine("@TERMUX_PREFIX@/tmp", pipeName);
+ #else
+ // We should never get here. This would be a net35 task host running on unix.
+ ErrorUtilities.ThrowInternalError("Task host used on unix in retrieving the pipe name.");
+--- a/src/runtime/src/coreclr/debug/createdump/createdumpmain.cpp
++++ b/src/runtime/src/coreclr/debug/createdump/createdumpmain.cpp
+@@ -7,7 +7,7 @@
+ #define DEFAULT_DUMP_PATH "%TEMP%\\"
+ #define DEFAULT_DUMP_TEMPLATE "dump.%p.dmp"
+ #else
+-#define DEFAULT_DUMP_PATH "/tmp/"
++#define DEFAULT_DUMP_PATH "@TERMUX_PREFIX@/tmp/"
+ #define DEFAULT_DUMP_TEMPLATE "coredump.%p"
+ #endif
+
+--- a/src/runtime/src/coreclr/debug/createdump/createdumppal.cpp
++++ b/src/runtime/src/coreclr/debug/createdump/createdumppal.cpp
+@@ -142,7 +142,7 @@ QueryPerformanceFrequency(
+ return TRUE;
+ }
+
+-#define TEMP_DIRECTORY_PATH "/tmp/"
++#define TEMP_DIRECTORY_PATH "@TERMUX_PREFIX@/tmp/"
+
+ DWORD
+ PALAPI
+--- a/src/runtime/src/coreclr/nativeaot/Runtime/eventpipe/ep-rt-aot.h
++++ b/src/runtime/src/coreclr/nativeaot/Runtime/eventpipe/ep-rt-aot.h
+@@ -1028,7 +1028,7 @@ ep_rt_temp_path_get (
+ if (path == NULL){
+ path = getenv ("TEMP");
+ if (path == NULL)
+- path = "/tmp/";
++ path = "@TERMUX_PREFIX@/tmp/";
+ }
+ }
+
+--- a/src/runtime/src/coreclr/pal/src/include/pal/palinternal.h
++++ b/src/runtime/src/coreclr/pal/src/include/pal/palinternal.h
+@@ -599,7 +599,7 @@ function_name() to call the system's implementation
+ #else
+ // On Android, "/tmp/" doesn't exist; temporary files should go to
+ // /data/local/tmp/
+-#define TEMP_DIRECTORY_PATH "/data/local/tmp/"
++#define TEMP_DIRECTORY_PATH "@TERMUX_PREFIX@/tmp/"
+ #endif
+
+ #define PROCESS_PIPE_NAME_PREFIX ".dotnet-pal-processpipe"
+--- a/src/runtime/src/coreclr/vm/perfmap.cpp
++++ b/src/runtime/src/coreclr/vm/perfmap.cpp
+@@ -24,7 +24,7 @@
+ #else
+ // On Android, "/tmp/" doesn't exist; temporary files should go to
+ // /data/local/tmp/
+-#define TEMP_DIRECTORY_PATH "/data/local/tmp"
++#define TEMP_DIRECTORY_PATH "@TERMUX_PREFIX@/tmp"
+ #endif
+
+ Volatile PerfMap::s_enabled = false;
+--- a/src/runtime/src/libraries/Common/src/System/Net/NetworkInformation/UnixCommandLinePing.cs
++++ b/src/runtime/src/libraries/Common/src/System/Net/NetworkInformation/UnixCommandLinePing.cs
+@@ -10,7 +10,7 @@ namespace System.Net.NetworkInformation
+ internal static class UnixCommandLinePing
+ {
+ // Ubuntu has ping under /bin, OSX under /sbin, ArchLinux under /usr/bin, Android under /system/bin, NixOS under /run/current-system/sw/bin.
+- private static readonly string[] s_binFolders = { "/bin", "/sbin", "/usr/bin", "/system/bin", "/run/current-system/sw/bin" };
++ private static readonly string[] s_binFolders = { "@TERMUX_PREFIX@/bin", "/bin", "/sbin", "/usr/bin", "/system/bin", "/run/current-system/sw/bin" };
+ private const string s_ipv4PingFile = "ping";
+ private const string s_ipv6PingFile = "ping6";
+
+--- a/src/runtime/src/libraries/Microsoft.Extensions.DependencyModel/src/Resolution/DotNetReferenceAssembliesPathResolver.cs
++++ b/src/runtime/src/libraries/Microsoft.Extensions.DependencyModel/src/Resolution/DotNetReferenceAssembliesPathResolver.cs
+@@ -49,6 +49,11 @@ public class DotNetReferenceAssembliesPathResolver
+ return "/Library/Frameworks/Mono.framework/Versions/Current/lib/mono/xbuild-frameworks";
+ }
+
++ if (fileSystem.Directory.Exists("@TERMUX_PREFIX@/lib/mono/xbuild-frameworks"))
++ {
++ return "@TERMUX_PREFIX@/lib/mono/xbuild-frameworks";
++ }
++
+ if (fileSystem.Directory.Exists("/usr/local/lib/mono/xbuild-frameworks"))
+ {
+ return "/usr/local/lib/mono/xbuild-frameworks";
+--- a/src/runtime/src/libraries/System.Console/src/System/TermInfo.DatabaseFactory.cs
++++ b/src/runtime/src/libraries/System.Console/src/System/TermInfo.DatabaseFactory.cs
+@@ -16,11 +16,11 @@ internal sealed class DatabaseFactory
+ /// This is the ordering of well-known locations used by ncurses.
+ ///
+ internal static readonly string[] SystemTermInfoLocations = {
+- "/etc/terminfo",
+- "/lib/terminfo",
+- "/usr/share/terminfo",
+- "/usr/share/misc/terminfo",
+- "/usr/local/share/terminfo"
++ "@TERMUX_PREFIX@/etc/terminfo",
++ "@TERMUX_PREFIX@/lib/terminfo",
++ "@TERMUX_PREFIX@/share/terminfo",
++ "@TERMUX_PREFIX@/share/misc/terminfo",
++ "@TERMUX_PREFIX@/local/share/terminfo"
+ };
+
+ internal static string? HomeTermInfoLocation
+--- a/src/runtime/src/libraries/System.Formats.Tar/src/System/Formats/Tar/TarHeader.Write.cs
++++ b/src/runtime/src/libraries/System.Formats.Tar/src/System/Formats/Tar/TarHeader.Write.cs
+@@ -1087,7 +1087,7 @@ private static string GenerateGlobalExtendedAttributeName(int globalExtendedAttr
+
+ string result = $"{tmp}/GlobalHead.{Environment.ProcessId}.{globalExtendedAttributesEntryNumber}";
+ return result.Length >= FieldLengths.Name ?
+- string.Concat("/tmp", result.AsSpan(tmp.Length)) :
++ string.Concat("@TERMUX_PREFIX@/tmp", result.AsSpan(tmp.Length)) :
+ result;
+ }
+
+--- a/src/runtime/src/libraries/System.Net.NetworkInformation/src/System/Net/NetworkInformation/NetworkFiles.cs
++++ b/src/runtime/src/libraries/System.Net.NetworkInformation/src/System/Net/NetworkInformation/NetworkFiles.cs
+@@ -17,15 +17,15 @@ internal static class NetworkFiles
+ public const string SockstatFile = "/proc/net/sockstat";
+ public const string Sockstat6File = "/proc/net/sockstat6";
+ public const string SysClassNetFolder = "/sys/class/net";
+- public const string EtcResolvConfFile = "/etc/resolv.conf";
++ public const string EtcResolvConfFile = "@TERMUX_PREFIX@/etc/resolv.conf";
+ public const string Tcp4ConnectionsFile = "/proc/net/tcp";
+ public const string Tcp6ConnectionsFile = "/proc/net/tcp6";
+ public const string Udp4ConnectionsFile = "/proc/net/udp";
+ public const string Udp6ConnectionsFile = "/proc/net/udp6";
+- public const string DHClientLeasesFile = "/var/lib/dhcp/dhclient.leases";
+- public const string DHClientInterfaceLeasesFile = "/var/lib/dhcp/dhclient.{0}.leases";
+- public const string DHClientSecondaryInterfaceLeasesFile = "/var/lib/dhcp/dhclient6.{0}.leases";
+- public const string SmbConfFile = "/etc/samba/smb.conf";
++ public const string DHClientLeasesFile = "@TERMUX_PREFIX@/var/lib/dhcp/dhclient.leases";
++ public const string DHClientInterfaceLeasesFile = "@TERMUX_PREFIX@/var/lib/dhcp/dhclient.{0}.leases";
++ public const string DHClientSecondaryInterfaceLeasesFile = "@TERMUX_PREFIX@/var/lib/dhcp/dhclient6.{0}.leases";
++ public const string SmbConfFile = "@TERMUX_PREFIX@/etc/samba/smb.conf";
+
+ // Individual file names
+ public const string AllNetworkInterfaceFileName = "all";
+--- a/src/runtime/src/libraries/System.Private.CoreLib/src/System/Environment.Android.cs
++++ b/src/runtime/src/libraries/System.Private.CoreLib/src/System/Environment.Android.cs
+@@ -80,7 +80,7 @@ private static string GetFolderPathCore(SpecialFolder folder, SpecialFolderOptio
+ return Path.Combine(home, "Videos");
+
+ case SpecialFolder.CommonTemplates:
+- return "/usr/share/templates";
++ return "@TERMUX_PREFIX@/share/templates";
+
+ case SpecialFolder.Fonts:
+ return Path.Combine(home, ".fonts");
+@@ -89,7 +89,7 @@ private static string GetFolderPathCore(SpecialFolder folder, SpecialFolderOptio
+ return home;
+
+ case SpecialFolder.CommonApplicationData:
+- return "/usr/share";
++ return "@TERMUX_PREFIX@/share";
+
+ default:
+ return string.Empty;
+--- a/src/runtime/src/libraries/System.Private.CoreLib/src/System/Environment.GetFolderPathCore.Unix.cs
++++ b/src/runtime/src/libraries/System.Private.CoreLib/src/System/Environment.GetFolderPathCore.Unix.cs
+@@ -52,8 +52,8 @@ private static string GetFolderPathCore(SpecialFolder folder, SpecialFolderOptio
+ // https://www.freedesktop.org/software/systemd/man/file-hierarchy.html
+ switch (folder)
+ {
+- case SpecialFolder.CommonApplicationData: return "/usr/share";
+- case SpecialFolder.CommonTemplates: return "/usr/share/templates";
++ case SpecialFolder.CommonApplicationData: return "@TERMUX_PREFIX@/share";
++ case SpecialFolder.CommonTemplates: return "@TERMUX_PREFIX@/share/templates";
+ #if TARGET_OSX
+ case SpecialFolder.ProgramFiles: return "/Applications";
+ case SpecialFolder.System: return "/System";
+--- a/src/runtime/src/libraries/System.Private.CoreLib/src/System/IO/Path.Unix.NoniOS.cs
++++ b/src/runtime/src/libraries/System.Private.CoreLib/src/System/IO/Path.Unix.NoniOS.cs
+@@ -5,6 +5,6 @@ namespace System.IO
+ {
+ public static partial class Path
+ {
+- private static string DefaultTempPath => "/tmp/";
++ private static string DefaultTempPath => "@TERMUX_PREFIX@/tmp/";
+ }
+ }
+--- a/src/runtime/src/libraries/System.Private.CoreLib/src/System/TimeZoneInfo.Unix.cs
++++ b/src/runtime/src/libraries/System.Private.CoreLib/src/System/TimeZoneInfo.Unix.cs
+@@ -16,7 +16,7 @@ namespace System
+ {
+ public sealed partial class TimeZoneInfo
+ {
+- private const string DefaultTimeZoneDirectory = "/usr/share/zoneinfo/";
++ private const string DefaultTimeZoneDirectory = "@TERMUX_PREFIX@/usr/share/zoneinfo/";
+
+ // Set fallback values using abbreviations, base offset, and id
+ // These are expected in environments without time zone globalization data
+--- a/src/runtime/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/X509Certificates/OpenSslCachedSystemStoreProvider.cs
++++ b/src/runtime/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/X509Certificates/OpenSslCachedSystemStoreProvider.cs
+@@ -177,7 +177,7 @@ private static Tuple LoadMachineStores
+
+ if (firstLoad && !hasStoreData && s_defaultRootDir)
+ {
+- const string DefaultCertDir = "/etc/ssl/certs";
++ const string DefaultCertDir = "@TERMUX_PREFIX@/etc/ssl/certs";
+ hasStoreData = ProcessDir(DefaultCertDir, out DateTime lastModified);
+ if (hasStoreData)
+ {
+--- a/src/runtime/src/mono/mono/eglib/gmisc-unix.c
++++ b/src/runtime/src/mono/mono/eglib/gmisc-unix.c
+@@ -121,7 +121,7 @@ g_get_tmp_dir (void)
+ if (tmp_dir == NULL){
+ tmp_dir = g_getenv ("TEMP");
+ if (tmp_dir == NULL)
+- tmp_dir = "/tmp";
++ tmp_dir = "@TERMUX_PREFIX@/tmp";
+ }
+ }
+ }
+--- a/src/runtime/src/mono/mono/mini/graph.c
++++ b/src/runtime/src/mono/mono/mini/graph.c
+@@ -205,7 +205,7 @@ mono_draw_graph (MonoCompile *cfg, MonoGraphOptions draw_options)
+ FILE *fp;
+ int _i G_GNUC_UNUSED;
+
+- fn = "/tmp/minidtree.graph";
++ fn = "@TERMUX_PREFIX@/tmp/minidtree.graph";
+ fp = fopen (fn, "w+");
+ g_assert (fp);
+
+--- a/src/runtime/src/mono/mono/mini/mini-posix.c
++++ b/src/runtime/src/mono/mono/mini/mini-posix.c
+@@ -989,7 +989,7 @@ mono_gdb_render_native_backtraces (pid_t crashed_pid)
+
+ char commands_filename [100];
+ commands_filename [0] = '\0';
+- g_snprintf (commands_filename, sizeof (commands_filename), "/tmp/mono-gdb-commands.%d", crashed_pid);
++ g_snprintf (commands_filename, sizeof (commands_filename), "@TERMUX_PREFIX@/tmp/mono-gdb-commands.%d", crashed_pid);
+
+ // Create this file, overwriting if it already exists
+ int commands_handle = g_open (commands_filename, O_TRUNC | O_WRONLY | O_CREAT, S_IWUSR | S_IRUSR | S_IRGRP | S_IROTH);
+--- a/src/runtime/src/mono/mono/mini/mini-runtime.c
++++ b/src/runtime/src/mono/mono/mini/mini-runtime.c
+@@ -1980,7 +1980,7 @@ mono_enable_jit_map (void)
+ {
+ if (!perf_map_file) {
+ char name [64];
+- g_snprintf (name, sizeof (name), "/tmp/perf-%d.map", getpid ());
++ g_snprintf (name, sizeof (name), "@TERMUX_PREFIX@/tmp/perf-%d.map", getpid ());
+ unlink (name);
+ perf_map_file = fopen (name, "w");
+ }
+@@ -2105,7 +2105,7 @@ mono_enable_jit_dump (void)
+ mono_os_mutex_init (&perf_dump_mutex);
+ mono_os_mutex_lock (&perf_dump_mutex);
+
+- g_snprintf (name, sizeof (name), "/tmp/jit-%d.dump", perf_dump_pid);
++ g_snprintf (name, sizeof (name), "@TERMUX_PREFIX@/tmp/jit-%d.dump", perf_dump_pid);
+ unlink (name);
+ perf_dump_file = fopen (name, "w+");
+
+--- a/src/runtime/src/mono/mono/mini/viewstat.pl
++++ b/src/runtime/src/mono/mono/mini/viewstat.pl
+@@ -75,7 +75,7 @@ if ($stattitle ne "") {
+ $outfile = $Opts{'o'};
+
+ if ($outfile eq "") {
+- $tmp = $outfile = "/tmp/viewstat" . $$ . ".png";
++ $tmp = $outfile = "@TERMUX_PREFIX@/tmp/viewstat" . $$ . ".png";
+ }
+
+ $graph->plot(\@data);
+--- a/src/runtime/src/native/corehost/hostmisc/pal.unix.cpp
++++ b/src/runtime/src/native/corehost/hostmisc/pal.unix.cpp
+@@ -416,7 +416,7 @@ bool pal::get_global_dotnet_dirs(std::vector* recv)
+
+ pal::string_t pal::get_dotnet_self_registered_config_location(pal::architecture arch)
+ {
+- pal::string_t config_location = _X("/etc/dotnet");
++ pal::string_t config_location = _X("@TERMUX_PREFIX@/etc/dotnet");
+
+ // ***Used only for testing***
+ pal::string_t environment_install_location_override;
+@@ -592,7 +592,7 @@ bool pal::get_default_installation_dir_for_arch(pal::architecture arch, pal::str
+ }
+ #endif
+ #else
+- recv->assign(_X("/usr/share/dotnet"));
++ recv->assign(_X("@TERMUX_PREFIX@/share/dotnet"));
+ #endif
+ return true;
+ }
+@@ -797,7 +797,7 @@ pal::string_t normalize_linux_rid(pal::string_t rid)
+ pal::string_t pal::get_current_os_rid_platform()
+ {
+ pal::string_t ridOS;
+- pal::string_t versionFile(_X("/etc/os-release"));
++ pal::string_t versionFile(_X("@TERMUX_PREFIX@/etc/os-release"));
+
+ if (pal::file_exists(versionFile))
+ {
diff --git a/packages/dotnet8.0/0009-runtime-src-native-libs-System.Security.Cryptography.Native-CMakelists.txt.patch b/packages/dotnet8.0/0009-runtime-src-native-libs-System.Security.Cryptography.Native-CMakelists.txt.patch
new file mode 100644
index 00000000000000..8f954bdbfccf48
--- /dev/null
+++ b/packages/dotnet8.0/0009-runtime-src-native-libs-System.Security.Cryptography.Native-CMakelists.txt.patch
@@ -0,0 +1,13 @@
+System.Security.Native.Cryptography.Native needs libssl.so and libcrypto.so, both of which are provided by Termux
+This sets rpath to help the linker find them during runtime
+
+--- a/src/runtime/src/native/libs/System.Security.Cryptography.Native/CMakeLists.txt
++++ b/src/runtime/src/native/libs/System.Security.Cryptography.Native/CMakeLists.txt
+@@ -1,6 +1,7 @@
+ project(System.Security.Cryptography.Native C)
+
+ # These are happening inside of OpenSSL-defined macros out of our control
++add_link_options("-Wl,-rpath,@TERMUX_PREFIX@/lib")
+ add_compile_options(-Wno-cast-align)
+ add_compile_options(-Wno-reserved-id-macro)
+ add_compile_options(-Wno-documentation)
diff --git a/packages/dotnet8.0/aspnetcore-runtime-8.0.subpackage.sh b/packages/dotnet8.0/aspnetcore-runtime-8.0.subpackage.sh
new file mode 100644
index 00000000000000..626117042c1943
--- /dev/null
+++ b/packages/dotnet8.0/aspnetcore-runtime-8.0.subpackage.sh
@@ -0,0 +1,4 @@
+TERMUX_SUBPKG_DESCRIPTION="ASP.NET Core 8.0 Runtime"
+TERMUX_SUBPKG_DEPEND_ON_PARENT=false
+TERMUX_SUBPKG_DEPENDS="dotnet-runtime-8.0"
+TERMUX_SUBPKG_INCLUDE=$(cat "${TERMUX_PKG_TMPDIR}"/aspnetcore-runtime.txt)
diff --git a/packages/dotnet8.0/aspnetcore-runtime-dbg-8.0.subpackage.sh b/packages/dotnet8.0/aspnetcore-runtime-dbg-8.0.subpackage.sh
new file mode 100644
index 00000000000000..f12af30d351596
--- /dev/null
+++ b/packages/dotnet8.0/aspnetcore-runtime-dbg-8.0.subpackage.sh
@@ -0,0 +1,4 @@
+TERMUX_SUBPKG_DESCRIPTION="ASP.NET Core 8.0 Runtime Managed Debug Symbols"
+TERMUX_SUBPKG_DEPEND_ON_PARENT=false
+TERMUX_SUBPKG_DEPENDS="aspnetcore-runtime-8.0"
+TERMUX_SUBPKG_INCLUDE=$(cat "${TERMUX_PKG_TMPDIR}"/aspnetcore-runtime-dbg.txt)
diff --git a/packages/dotnet8.0/aspnetcore-targeting-pack-8.0.subpackage.sh b/packages/dotnet8.0/aspnetcore-targeting-pack-8.0.subpackage.sh
new file mode 100644
index 00000000000000..9c919ed4bf3e14
--- /dev/null
+++ b/packages/dotnet8.0/aspnetcore-targeting-pack-8.0.subpackage.sh
@@ -0,0 +1,4 @@
+TERMUX_SUBPKG_DESCRIPTION="ASP.NET Core 8.0 Targeting Pack"
+TERMUX_SUBPKG_DEPEND_ON_PARENT=false
+TERMUX_SUBPKG_DEPENDS="dotnet-host"
+TERMUX_SUBPKG_INCLUDE=$(cat "${TERMUX_PKG_TMPDIR}"/aspnetcore-targeting-pack.txt)
diff --git a/packages/dotnet8.0/build.sh b/packages/dotnet8.0/build.sh
new file mode 100644
index 00000000000000..04a188abb6f637
--- /dev/null
+++ b/packages/dotnet8.0/build.sh
@@ -0,0 +1,351 @@
+TERMUX_PKG_HOMEPAGE=https://dotnet.microsoft.com/en-us/
+TERMUX_PKG_DESCRIPTION=".NET 8.0"
+TERMUX_PKG_LICENSE="MIT"
+TERMUX_PKG_MAINTAINER="@truboxl"
+TERMUX_PKG_VERSION="8.0.14"
+TERMUX_PKG_REVISION=2
+TERMUX_PKG_SRCURL=git+https://github.com/dotnet/dotnet
+TERMUX_PKG_GIT_BRANCH="v${TERMUX_PKG_VERSION}"
+TERMUX_PKG_BUILD_DEPENDS="krb5, libicu, openssl, zlib"
+TERMUX_PKG_SUGGESTS="dotnet-sdk-8.0"
+TERMUX_PKG_BUILD_IN_SRC=true
+TERMUX_PKG_NO_STATICSPLIT=true
+# https://github.com/dotnet/runtime/issues/7335
+# linux-x86 is not officially supported but works
+# TODO linux-bionic-arm is broken
+TERMUX_PKG_EXCLUDED_ARCHES="arm"
+
+termux_step_post_get_source() {
+ # set up dotnet cli and override source files
+ ./prep.sh
+}
+
+termux_step_pre_configure() {
+ # this is a workaround for build-all.sh
+ TERMUX_PKG_DEPENDS="aspnetcore-runtime-8.0, dotnet-host, dotnet-runtime-8.0"
+
+ termux_setup_cmake
+ termux_setup_ninja
+
+ # aspnetcore needs nodejs <= 19, but nodejs 19.x is EOL
+ local NODEJS_VERSION=18.20.5
+ local NODEJS_SHA256=e4a3a21e5ac7e074ed50d2533dd0087d8460647ab567464867141a2b643f3fb3
+ local NODEJS_FOLDER="${TERMUX_PKG_CACHEDIR}/nodejs-${NODEJS_VERSION}"
+ local NODEJS_TAR_XZ="${TERMUX_PKG_CACHEDIR}/node.tar.xz"
+ termux_download \
+ https://nodejs.org/dist/v${NODEJS_VERSION}/node-v${NODEJS_VERSION}-linux-x64.tar.xz \
+ "${NODEJS_TAR_XZ}" \
+ "${NODEJS_SHA256}"
+ mkdir -p "${NODEJS_FOLDER}"
+ tar -xf "${NODEJS_TAR_XZ}" -C "${NODEJS_FOLDER}" --strip-components=1
+ export PATH="${NODEJS_FOLDER}/bin:${PATH}"
+ if [[ "$(node --version)" != "v${NODEJS_VERSION}" ]]; then
+ termux_error_exit "$(command -v node) $(node --version) != ${NODEJS_VERSION}"
+ fi
+}
+
+termux_step_configure() {
+ export arch
+ case "${TERMUX_ARCH}" in
+ aarch64) arch=arm64 ;;
+ arm) arch=arm ;;
+ i686) arch=x86 ;;
+ x86_64) arch=x64 ;;
+ *) termux_error_exit "Unknown arch: ${TERMUX_ARCH}"
+ esac
+
+ export CONFIG="Release"
+ if [[ "${TERMUX_DEBUG_BUILD}" == "true" ]]; then
+ CONFIG="Debug"
+ fi
+
+ export ANDROID_NDK_ROOT="${TERMUX_PKG_TMPDIR}"
+
+ # unified sysroot needed when CMAKE_SYSROOT / --sysroot cannot be used
+ export ROOTFS_DIR="${TERMUX_PKG_TMPDIR}/sysroot"
+ if [[ -e "${TERMUX_STANDALONE_TOOLCHAIN}/sysroot.tmp" ]]; then
+ rm -f "${TERMUX_STANDALONE_TOOLCHAIN}/sysroot"
+ mv -v "${TERMUX_STANDALONE_TOOLCHAIN}"/sysroot{.tmp,}
+ fi
+ rm -fr "${ROOTFS_DIR}"
+ echo "INFO: Copying ${TERMUX_STANDALONE_TOOLCHAIN}/sysroot to ${ROOTFS_DIR}"
+ cp -fr "${TERMUX_STANDALONE_TOOLCHAIN}/sysroot" "${ROOTFS_DIR}"
+ echo "INFO: Copying ${TERMUX_PREFIX} to ${ROOTFS_DIR}"
+ cp -fr "${TERMUX_PREFIX}" "${ROOTFS_DIR}"
+ mv -v "${TERMUX_STANDALONE_TOOLCHAIN}"/sysroot{,.tmp}
+ ln -sv "${ROOTFS_DIR}" "${TERMUX_STANDALONE_TOOLCHAIN}/sysroot"
+
+ #echo "RID=android.${TERMUX_PKG_API_LEVEL}-${arch}" > "${ROOTFS_DIR}/android_platform"
+
+ # manual termux_step_configure_cmake
+ CMAKE_PROC="${TERMUX_ARCH}"
+ if [[ "${CMAKE_PROC}" == "arm" ]]; then
+ CMAKE_PROC="armv7-a"
+ fi
+ export CFLAGS+=" --target=${CCTERMUX_HOST_PLATFORM}"
+ # https://github.com/dotnet/android/pull/4958
+ # apphost remove dependency on libc++_shared.so
+ # by linking statically
+ export CXXFLAGS+=" --target=${CCTERMUX_HOST_PLATFORM} -stdlib=libc++ -static-libstdc++"
+
+ # easier to embed in toolchain file than CMakeArgs
+ mkdir -p "${TERMUX_PKG_TMPDIR}/build/cmake"
+ cat <<- EOL > "${TERMUX_PKG_TMPDIR}/build/cmake/android.toolchain.cmake"
+ set(CMAKE_C_FLAGS "\${CMAKE_C_FLAGS} ${CFLAGS}")
+ set(CMAKE_CXX_FLAGS "\${CMAKE_CXX_FLAGS} ${CXXFLAGS}")
+ set(CMAKE_SYSROOT "${ROOTFS_DIR}")
+ set(CMAKE_C_COMPILER "${TERMUX_STANDALONE_TOOLCHAIN}/bin/${CC}")
+ set(CMAKE_CXX_COMPILER "${TERMUX_STANDALONE_TOOLCHAIN}/bin/${CXX}")
+ set(CMAKE_AR "$(command -v ${AR})")
+ set(CMAKE_UNAME "$(command -v uname)")
+ set(CMAKE_RANLIB "$(command -v ${RANLIB})")
+ set(CMAKE_STRIP "$(command -v ${STRIP})")
+ set(CMAKE_FIND_ROOT_PATH "${TERMUX_PREFIX}")
+ set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM "NEVER")
+ set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE "ONLY")
+ set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY "ONLY")
+ #set(CMAKE_INSTALL_PREFIX "${TERMUX_PREFIX}")
+ #set(CMAKE_INSTALL_LIBDIR "${TERMUX_PREFIX}/lib")
+ set(CMAKE_SKIP_INSTALL_RPATH "ON")
+ set(CMAKE_USE_SYSTEM_LIBRARIES "True")
+ set(CMAKE_CROSSCOMPILING "True")
+ set(DOXYGEN_EXECUTABLE "")
+ set(BUILD_TESTING "OFF")
+ set(CMAKE_LINKER "${TERMUX_STANDALONE_TOOLCHAIN}/bin/${LD}")
+ set(CMAKE_SYSTEM_NAME "Android")
+ set(CMAKE_SYSTEM_VERSION "${TERMUX_PKG_API_LEVEL}")
+ set(CMAKE_SYSTEM_PROCESSOR "${CMAKE_PROC}")
+ set(CMAKE_ANDROID_STANDALONE_TOOLCHAIN "${TERMUX_STANDALONE_TOOLCHAIN}")
+
+ # https://github.com/dotnet/runtime/blob/445dac9e8e541b2364deea000dde8487ea1ec20e/src/coreclr/pal/src/configure.cmake#L776-L793
+ # for unknown reason, this is needed here
+ set(HAVE_COMPATIBLE_EXP_EXITCODE 0)
+
+ # https://github.com/dotnet/runtime/issues/57784
+ # Android has no liblttng-ust, Linux also has different issue
+ set(FEATURE_EVENT_TRACE 0)
+ EOL
+
+ echo "INFO: ${TERMUX_PKG_TMPDIR}/build/cmake/android.toolchain.cmake"
+ cat "${TERMUX_PKG_TMPDIR}/build/cmake/android.toolchain.cmake"
+ echo
+
+ export EXTRA_CFLAGS="${CFLAGS}"
+ export EXTRA_CXXFLAGS="${CXXFLAGS}"
+ export EXTRA_LDFLAGS="${LDFLAGS}"
+
+ unset CC CFLAGS CXX CXXFLAGS LD LDFLAGS PKGCONFIG PKG_CONFIG PKG_CONFIG_DIR PKG_CONFIG_LIBDIR
+}
+
+termux_step_make() {
+ export CROSSCOMPILE=1
+ # --online needed to workaround restore issue
+ time ./build.sh \
+ --clean-while-building \
+ --use-mono-runtime \
+ --online \
+ -- \
+ -m:${TERMUX_PKG_MAKE_PROCESSES} \
+ /p:Configuration=${CONFIG} \
+ /p:OverrideTargetRid=linux-bionic-${arch}
+
+ "${TERMUX_PKG_BUILDDIR}/.dotnet/dotnet" build-server shutdown
+}
+
+termux_step_make_install() {
+ local _DOTNET_ROOT="${TERMUX_PREFIX}/lib/dotnet"
+ rm -fr "${_DOTNET_ROOT}"
+ mkdir -p "${_DOTNET_ROOT}"
+
+ # DEBUG copy the artifacts
+ #mkdir -p "${TERMUX_PREFIX}/opt/${TERMUX_PKG_NAME}"
+ #find "${TERMUX_PKG_BUILDDIR}/artifacts/x64" -type f \( -name "*.tar.gz" -o -name "*.zip" \) -exec cp -fv "{}" "${TERMUX_PREFIX}/opt/${TERMUX_PKG_NAME}" \;
+
+ # TODO fix hardcode in source, fixed in dotnet9.0
+ # extract tarball
+ tar -xf "${TERMUX_PKG_BUILDDIR}/artifacts/x64/${CONFIG}"/dotnet-sdk-*.tar.gz -C "${_DOTNET_ROOT}"
+ tar -xf "${TERMUX_PKG_BUILDDIR}/artifacts/x64/${CONFIG}"/dotnet-symbols-sdk-*.tar.gz -C "${_DOTNET_ROOT}"
+
+ # TODO fix hardcode in source, fixed in dotnet9.0
+ # needed to fix default build target
+ echo "INFO: Patching Microsoft.NETCoreSdk.BundledVersions.props"
+ grep "" -nH "${_DOTNET_ROOT}"/sdk/*/Microsoft.NETCoreSdk.BundledVersions.props
+ grep "" -nH "${_DOTNET_ROOT}"/sdk/*/Microsoft.NETCoreSdk.BundledVersions.props
+ sed \
+ -e "s|