diff --git a/gpkg/bash/build.sh b/gpkg/bash/build.sh
index 219a23532..048d6375e 100644
--- a/gpkg/bash/build.sh
+++ b/gpkg/bash/build.sh
@@ -3,7 +3,7 @@ TERMUX_PKG_DESCRIPTION="A sh-compatible shell that incorporates useful features
TERMUX_PKG_LICENSE="GPL-3.0"
TERMUX_PKG_MAINTAINER="@termux-pacman"
_MAIN_VERSION=5.2
-_PATCH_VERSION=15
+_PATCH_VERSION=26
TERMUX_PKG_VERSION=${_MAIN_VERSION}.${_PATCH_VERSION}
TERMUX_PKG_SRCURL=https://mirrors.kernel.org/gnu/bash/bash-${_MAIN_VERSION}.tar.gz
TERMUX_PKG_SHA256=a139c166df7ff4471c5e0733051642ee5556c1cc8a4a78f145583c5c81ab32fb
@@ -18,7 +18,6 @@ TERMUX_PKG_EXTRA_CONFIGURE_ARGS="
--with-installed-readline
"
TERMUX_PKG_CONFFILES="glibc/etc/bash.bashrc glibc/etc/bash.bash_logout glibc/etc/profile"
-TERMUX_PKG_RM_AFTER_INSTALL="share/man/man1/bashbug.1 bin/bashbug"
termux_step_pre_configure() {
declare -A PATCH_CHECKSUMS
@@ -38,6 +37,17 @@ termux_step_pre_configure() {
PATCH_CHECKSUMS[013]=094b4fd81bc488a26febba5d799689b64d52a5505b63e8ee854f48d356bc7ce6
PATCH_CHECKSUMS[014]=3ef9246f2906ef1e487a0a3f4c647ae1c289cbd8459caa7db5ce118ef136e624
PATCH_CHECKSUMS[015]=ef73905169db67399a728e238a9413e0d689462cb9b72ab17a05dba51221358a
+ PATCH_CHECKSUMS[016]=155853bc5bd10e40a9bea369fb6f50a203a7d0358e9e32321be0d9fa21585915
+ PATCH_CHECKSUMS[017]=1c48cecbc9b7b4217990580203b7e1de19c4979d0bd2c0e310167df748df2c89
+ PATCH_CHECKSUMS[018]=4641dd49dd923b454dd0a346277907090410f5d60a29a2de3b82c98e49aaaa80
+ PATCH_CHECKSUMS[019]=325c26860ad4bba8558356c4ab914ac57e7b415dac6f5aae86b9b05ccb7ed282
+ PATCH_CHECKSUMS[020]=b6fc252aeb95ce67c9b017d29d81e8a5e285db4bf20d4ec8cdca35892be5c01d
+ PATCH_CHECKSUMS[021]=8334b88117ad047598f23581aeb0c66c0248cdd77abc3b4e259133aa307650cd
+ PATCH_CHECKSUMS[022]=78b5230a49594ec30811e72dcd0f56d1089710ec7828621022d08507aa57e470
+ PATCH_CHECKSUMS[023]=af905502e2106c8510ba2085aa2b56e64830fc0fdf6ee67ebb459ac11696dcd3
+ PATCH_CHECKSUMS[024]=971534490117eb05d97d7fd81f5f9d8daf927b4d581231844ffae485651b02c3
+ PATCH_CHECKSUMS[025]=5138f487e7cf71a6323dc81d22419906f1535b89835cc2ff68847e1a35613075
+ PATCH_CHECKSUMS[026]=96ee1f549aa0b530521e36bdc0ba7661602cfaee409f7023cac744dd42852eac
for PATCH_NUM in $(seq -f '%03g' ${_PATCH_VERSION}); do
PATCHFILE=$TERMUX_PKG_CACHEDIR/bash_patch_${PATCH_NUM}.patch
diff --git a/gpkg/glibc/build.sh b/gpkg/glibc/build.sh
index a10a7f9cb..41a4f1d1a 100644
--- a/gpkg/glibc/build.sh
+++ b/gpkg/glibc/build.sh
@@ -3,7 +3,7 @@ TERMUX_PKG_DESCRIPTION="GNU C Library"
TERMUX_PKG_LICENSE="GPL-3.0, LGPL-3.0"
TERMUX_PKG_MAINTAINER="@termux-pacman"
TERMUX_PKG_VERSION=2.39
-TERMUX_PKG_REVISION=2
+TERMUX_PKG_REVISION=3
TERMUX_PKG_SRCURL=https://ftp.gnu.org/gnu/libc/glibc-$TERMUX_PKG_VERSION.tar.xz
TERMUX_PKG_SHA256=f77bd47cf8170c57365ae7bf86696c118adb3b120d3259c64c502d3dc1e2d926
TERMUX_PKG_DEPENDS="linux-api-headers-glibc"
diff --git a/gpkg/glibc/shmctl.c.patch b/gpkg/glibc/shmctl.c.patch
index 9518c17c0..2647f0f7f 100644
--- a/gpkg/glibc/shmctl.c.patch
+++ b/gpkg/glibc/shmctl.c.patch
@@ -1,6 +1,6 @@
---- glibc-2.39/sysdeps/unix/sysv/linux/shmctl.c 2023-02-01 06:27:45.000000000 +0300
-+++ glibc-2.39/sysdeps/unix/sysv/linux/shmctl.c.patch 2023-06-08 12:43:28.639174307 +0300
-@@ -15,277 +15,76 @@
+--- src/sysdeps/unix/sysv/linux/shmctl.c 2024-04-07 14:20:48.746263018 +0300
++++ src/sysdeps/unix/sysv/linux/shmctl.c.patch 2024-04-07 14:23:00.096262968 +0300
+@@ -15,277 +15,78 @@
License along with the GNU C Library; if not, see
. */
@@ -164,7 +164,9 @@
- {
- shmid64_to_kshmid64 (buf, &kshmid);
- arg = &kshmid;
-- }
++ pthread_mutex_unlock (&mutex);
++ return 0;
+ }
-# ifdef __ASSUME_SYSVIPC_BROKEN_MODE_T
- if (cmd == IPC_SET)
- arg->shm_perm.mode *= 0x10000U;
@@ -186,7 +188,7 @@
- return -1;
- }
-
--
+
- int ret = shmctl_syscall (shmid, cmd, arg);
- if (ret < 0)
- return ret;
@@ -215,10 +217,13 @@
-#else /* !IPC_CTL_NEED_TRANSLATION */
- return shmctl_syscall (shmid, cmd, buf);
-#endif
--}
++ DBG("%s: cmd %d not implemented yet!\n", __PRETTY_FUNCTION__, cmd);
++ errno = EINVAL;
++ return -1;
+ }
-#if __TIMESIZE != 64
-libc_hidden_def (__shmctl64)
--
+
-static void
-shmid_to_shmid64 (struct __shmid64_ds *shm64, const struct shmid_ds *shm)
-{
@@ -265,15 +270,13 @@
- {
- shmid_to_shmid64 (&shmid64, buf);
- buf64 = &shmid64;
-+ pthread_mutex_unlock (&mutex);
-+ return 0;
- }
+- }
- }
-
- int ret = __shmctl64 (shmid, cmd, buf64);
- if (ret < 0)
- return ret;
-
+-
- switch (cmd)
- {
- case IPC_STAT:
@@ -283,10 +286,7 @@
- }
-
- return ret;
-+ DBG("%s: cmd %d not implemented yet!\n", __PRETTY_FUNCTION__, cmd);
-+ errno = EINVAL;
-+ return -1;
- }
+-}
-#endif
-
-#ifndef DEFAULT_VERSION
@@ -342,3 +342,4 @@
-}
-compat_symbol (libc, __old_shmctl, shmctl, GLIBC_2_0);
-#endif
++weak_alias (shmctl, __shmctl64)
diff --git a/gpkg/libclc/build.sh b/gpkg/libclc/build.sh
index 86441d3c3..419d3563c 100644
--- a/gpkg/libclc/build.sh
+++ b/gpkg/libclc/build.sh
@@ -2,9 +2,9 @@ TERMUX_PKG_HOMEPAGE=https://libclc.llvm.org/
TERMUX_PKG_DESCRIPTION="Library requirements of the OpenCL C programming language"
TERMUX_PKG_LICENSE="MIT"
TERMUX_PKG_MAINTAINER="@termux-pacman"
-TERMUX_PKG_VERSION=17.0.6
+TERMUX_PKG_VERSION=18.1.3
TERMUX_PKG_SRCURL=https://github.com/llvm/llvm-project/releases/download/llvmorg-$TERMUX_PKG_VERSION/libclc-$TERMUX_PKG_VERSION.src.tar.xz
-TERMUX_PKG_SHA256=122f641d94d5dfbb3c37534f2b76612fa59d15c36c2a4917369a85eaaca32148
+TERMUX_PKG_SHA256=b117efb9a27ab923e03e565435f30ca8c5c1624d0832a09e32d14c3eb4995a7c
TERMUX_PKG_BUILD_DEPENDS="clang-glibc, lld-glibc, python-glibc, spirv-llvm-translator-glibc"
TERMUX_PKG_PLATFORM_INDEPENDENT=true
diff --git a/gpkg/mesa/build.sh b/gpkg/mesa/build.sh
index c875abf5a..7b12743e0 100644
--- a/gpkg/mesa/build.sh
+++ b/gpkg/mesa/build.sh
@@ -3,9 +3,9 @@ TERMUX_PKG_DESCRIPTION="An open-source implementation of the OpenGL specificatio
TERMUX_PKG_LICENSE="MIT"
TERMUX_PKG_LICENSE_FILE="docs/license.rst"
TERMUX_PKG_MAINTAINER="@termux-pacman"
-TERMUX_PKG_VERSION="24.0.3"
+TERMUX_PKG_VERSION="24.0.4"
TERMUX_PKG_SRCURL="https://archive.mesa3d.org/mesa-${TERMUX_PKG_VERSION}.tar.xz"
-TERMUX_PKG_SHA256="77aec9a2a37b7d3596ea1640b3cc53d0b5d9b3b52abed89de07e3717e91bfdbe"
+TERMUX_PKG_SHA256="90febd30a098cbcd97ff62ecc3dcf5c93d76f7fa314de944cfce81951ba745f0"
TERMUX_PKG_DEPENDS="libglvnd-glibc, gcc-libs-glibc, libdrm-glibc, libllvm-glibc, libexpat-glibc, zlib-glibc, zstd-glibc, libx11-glibc, libxcb-glibc, libxext-glibc, libxfixes-glibc, libxshmfence-glibc, libxxf86vm-glibc, libwayland-glibc, libvdpau-glibc, libomxil-bellagio-glibc, libva-glibc, libxml2-glibc, libelf-glibc, libbz2-glibc, libclc-glibc"
TERMUX_PKG_SUGGESTS="mesa-dev-glibc"
TERMUX_PKG_BUILD_DEPENDS="llvm-glibc, libwayland-protocols-glibc, xorgproto-glibc, glslang-glibc"
diff --git a/gpkg/spirv-headers/build.sh b/gpkg/spirv-headers/build.sh
index 02246cfe4..418127816 100755
--- a/gpkg/spirv-headers/build.sh
+++ b/gpkg/spirv-headers/build.sh
@@ -2,7 +2,7 @@ TERMUX_PKG_HOMEPAGE=https://github.com/KhronosGroup/SPIRV-Headers
TERMUX_PKG_DESCRIPTION="SPIR-V Headers"
TERMUX_PKG_LICENSE="Apache-2.0"
TERMUX_PKG_MAINTAINER="@termux-pacman"
-TERMUX_PKG_VERSION="1.3.275.0"
+TERMUX_PKG_VERSION="1.3.280.0"
TERMUX_PKG_SRCURL=https://github.com/KhronosGroup/SPIRV-Headers/archive/refs/tags/vulkan-sdk-${TERMUX_PKG_VERSION}/spirv-headers-${TERMUX_PKG_VERSION}.tar.gz
-TERMUX_PKG_SHA256=d46b261f1fbc5e85022cb2fada9a6facb5b0c9932b45007a77fe05639a605bd1
+TERMUX_PKG_SHA256=a00906b6bddaac1e37192eff2704582f82ce2d971f1aacee4d51d9db33b0f772
TERMUX_PKG_PLATFORM_INDEPENDENT=true
diff --git a/gpkg/spirv-llvm-translator/build.sh b/gpkg/spirv-llvm-translator/build.sh
index a3990d37d..84667f447 100644
--- a/gpkg/spirv-llvm-translator/build.sh
+++ b/gpkg/spirv-llvm-translator/build.sh
@@ -3,10 +3,9 @@ TERMUX_PKG_DESCRIPTION="Tool and a library for bi-directional translation betwee
TERMUX_PKG_LICENSE="custom"
TERMUX_PKG_LICENSE_FILE="LICENSE.TXT"
TERMUX_PKG_MAINTAINER="@termux-pacman"
-TERMUX_PKG_VERSION=17.0.0
-TERMUX_PKG_REVISION=1
+TERMUX_PKG_VERSION=18.1.0
TERMUX_PKG_SRCURL=https://github.com/KhronosGroup/SPIRV-LLVM-Translator/archive/refs/tags/v${TERMUX_PKG_VERSION}.tar.gz
-TERMUX_PKG_SHA256=eba381e1dd99b4ff6c672a28f52755d1adf2d810a97b51e6074ad4fa67937fb2
+TERMUX_PKG_SHA256=78a770eff24d5ffe2798479845adec4b909cbf058ddc55830ea00fa7d2c1698a
TERMUX_PKG_DEPENDS="libllvm-glibc, spirv-tools-glibc"
TERMUX_PKG_BUILD_DEPENDS="llvm-glibc"
TERMUX_PKG_NO_STATICSPLIT=true
diff --git a/gpkg/spirv-tools/build.sh b/gpkg/spirv-tools/build.sh
index c31a09762..1ede4dd80 100755
--- a/gpkg/spirv-tools/build.sh
+++ b/gpkg/spirv-tools/build.sh
@@ -2,9 +2,9 @@ TERMUX_PKG_HOMEPAGE=https://github.com/KhronosGroup/SPIRV-Tools
TERMUX_PKG_DESCRIPTION="SPIR-V Tools"
TERMUX_PKG_LICENSE="Apache-2.0"
TERMUX_PKG_MAINTAINER="@termux-pacman"
-TERMUX_PKG_VERSION="2023.6"
+TERMUX_PKG_VERSION="2024.1"
TERMUX_PKG_SRCURL=https://github.com/KhronosGroup/SPIRV-Tools/archive/refs/tags/v${TERMUX_PKG_VERSION}.rc1.tar.gz
-TERMUX_PKG_SHA256=750e4bfcaccd636fb04dd912b668a8a6d29940f8f83b7d9a266170b1023a1a89
+TERMUX_PKG_SHA256=793715a2b09b86bbd795101a201724a8fc86fe9619b1ecbaf78677e77a183b92
TERMUX_PKG_DEPENDS="gcc-libs-glibc"
TERMUX_PKG_BUILD_DEPENDS="spirv-headers-glibc"
TERMUX_PKG_NO_STATICSPLIT=true
diff --git a/gpkg/util-linux/build.sh b/gpkg/util-linux/build.sh
index 1621db22a..f96e47278 100644
--- a/gpkg/util-linux/build.sh
+++ b/gpkg/util-linux/build.sh
@@ -9,10 +9,11 @@ Documentation/licenses/COPYING.BSD-3-Clause
Documentation/licenses/COPYING.BSD-4-Clause-UC
Documentation/licenses/COPYING.ISC"
TERMUX_PKG_MAINTAINER="@termux-pacman"
-TERMUX_PKG_VERSION=2.39.3
-TERMUX_PKG_SRCURL=https://www.kernel.org/pub/linux/utils/util-linux/v${TERMUX_PKG_VERSION:0:4}/util-linux-${TERMUX_PKG_VERSION}.tar.xz
-TERMUX_PKG_SHA256=7b6605e48d1a49f43cc4b4cfc59f313d0dd5402fa40b96810bd572e167dfed0f
+TERMUX_PKG_VERSION=2.40
+TERMUX_PKG_SRCURL=https://github.com/util-linux/util-linux/archive/refs/tags/v2.40.zip
+TERMUX_PKG_SHA256=9ed02b0ba40948f1127fc2b9f6fb0444e23f6f49e760cfd25735d7b861387f5d
TERMUX_PKG_DEPENDS="libcap-ng-glibc, ncurses-glibc, zlib-glibc, libpam-glibc, libsmartcols-glibc, bash-glibc"
+TERMUX_PKG_BUILD_DEPENDS="python-glibc"
TERMUX_PKG_ESSENTIAL=true
TERMUX_PKG_EXTRA_CONFIGURE_ARGS="
-Dlibuser=disabled
@@ -32,9 +33,10 @@ TERMUX_PKG_EXTRA_CONFIGURE_ARGS="
-Dbuild-su=disabled
-Dbuild-lsmem=disabled
-Dbuild-chmem=disabled
--Dbuild-python=disabled
+-Dpython=$TERMUX_PREFIX/bin/python
"
termux_step_configure() {
+ LDFLAGS+=" -lrt"
termux_step_configure_meson
}
diff --git a/gpkg/util-linux/setdirs.patch b/gpkg/util-linux/setdirs.patch
index 743f049e0..3df5907b3 100644
--- a/gpkg/util-linux/setdirs.patch
+++ b/gpkg/util-linux/setdirs.patch
@@ -1,8 +1,8 @@
diff --git a/disk-utils/fsck.c b/disk-utils/fsck.c
-index 1b11e82..798528d 100644
+index c63ce1c..fa8c93c 100644
--- a/disk-utils/fsck.c
+++ b/disk-utils/fsck.c
-@@ -1120,7 +1120,7 @@ static int ignore(struct libmnt_fs *fs)
+@@ -1124,7 +1124,7 @@ static int ignore(struct libmnt_fs *fs)
* If this is a bind mount, ignore it.
*/
if (opt_in_list("bind", mnt_fs_get_options(fs))) {
@@ -12,7 +12,7 @@ index 1b11e82..798528d 100644
mnt_fs_get_target(fs));
return 1;
diff --git a/include/pathnames.h b/include/pathnames.h
-index 56f64c3..877e8c8 100644
+index 81fa405..2db093d 100644
--- a/include/pathnames.h
+++ b/include/pathnames.h
@@ -19,77 +19,69 @@
@@ -131,7 +131,7 @@ index 56f64c3..877e8c8 100644
#define _PATH_PROC_UIDMAP "/proc/self/uid_map"
#define _PATH_PROC_GIDMAP "/proc/self/gid_map"
#define _PATH_PROC_SETGROUPS "/proc/self/setgroups"
-@@ -129,7 +121,7 @@
+@@ -130,7 +122,7 @@
# ifdef MOUNTED /* deprecated */
# define _PATH_MOUNTED MOUNTED
# else
@@ -140,7 +140,7 @@ index 56f64c3..877e8c8 100644
# endif
#endif
-@@ -137,7 +129,7 @@
+@@ -138,7 +130,7 @@
# ifdef MNTTAB /* deprecated */
# define _PATH_MNTTAB MNTTAB
# else
@@ -149,7 +149,7 @@ index 56f64c3..877e8c8 100644
# endif
#endif
-@@ -148,26 +140,26 @@
+@@ -149,26 +141,26 @@
# define _PATH_DEV "/dev/"
#endif
@@ -186,7 +186,7 @@ index 56f64c3..877e8c8 100644
#ifdef __ia64__
diff --git a/lib/exec_shell.c b/lib/exec_shell.c
-index 6fef6c7..952f8fc 100644
+index 96d3e95..46840a5 100644
--- a/lib/exec_shell.c
+++ b/lib/exec_shell.c
@@ -28,7 +28,7 @@
@@ -234,10 +234,10 @@ index 9563122..ed34dc9 100644
if (!econf_readFile(&file_l, path, "= \t", "#")) {
if (file == NULL)
diff --git a/lib/loopdev.c b/lib/loopdev.c
-index dd9ead3..c7e0aec 100644
+index c72fb2c..41ef586 100644
--- a/lib/loopdev.c
+++ b/lib/loopdev.c
-@@ -126,13 +126,13 @@ int loopcxt_set_device(struct loopdev_cxt *lc, const char *device)
+@@ -128,13 +128,13 @@ int loopcxt_set_device(struct loopdev_cxt *lc, const char *device)
/* set new */
if (device) {
if (*device != '/') {
@@ -255,10 +255,10 @@ index dd9ead3..c7e0aec 100644
}
snprintf(lc->device, sizeof(lc->device), "%s%s",
diff --git a/libblkid/src/blkidP.h b/libblkid/src/blkidP.h
-index 007cc35..4e7dc96 100644
+index ea7d81b..556356e 100644
--- a/libblkid/src/blkidP.h
+++ b/libblkid/src/blkidP.h
-@@ -304,15 +304,15 @@ struct blkid_struct_cache
+@@ -307,15 +307,15 @@ struct blkid_struct_cache
#define BLKID_BIC_FL_CHANGED 0x0004 /* Cache has changed from disk */
/* config file */
@@ -291,7 +291,7 @@ index 772340b..04f673d 100644
fd = mkostemp(name, O_RDWR|O_CREAT|O_EXCL|O_CLOEXEC);
if (fd == -1)
diff --git a/libfdisk/src/script.c b/libfdisk/src/script.c
-index f537a7d..0c99cf0 100644
+index e357fad..82f707c 100644
--- a/libfdisk/src/script.c
+++ b/libfdisk/src/script.c
@@ -1636,7 +1636,7 @@ int fdisk_apply_script(struct fdisk_context *cxt, struct fdisk_script *dp)
@@ -304,7 +304,7 @@ index f537a7d..0c99cf0 100644
struct fdisk_script *dp;
struct fdisk_context *cxt;
diff --git a/libmount/python/tab.c b/libmount/python/tab.c
-index 000bc13..f26aaff 100644
+index d33a1fe..b852108 100644
--- a/libmount/python/tab.c
+++ b/libmount/python/tab.c
@@ -332,7 +332,7 @@ static PyObject *Table_is_fs_mounted(TableObject *self, PyObject *args, PyObject
@@ -335,7 +335,7 @@ index 000bc13..f26aaff 100644
"\n" \
"See also Tab.parser_errcb().\n" \
diff --git a/libmount/src/mountP.h b/libmount/src/mountP.h
-index 339e276..d2ee5f9 100644
+index fcc40bf..6917a4f 100644
--- a/libmount/src/mountP.h
+++ b/libmount/src/mountP.h
@@ -77,7 +77,7 @@ UL_DEBUG_DECLARE_MASK(libmount);
@@ -348,10 +348,10 @@ index 339e276..d2ee5f9 100644
#define MNT_PATH_UTAB MNT_RUNTIME_TOPDIR "/mount/utab"
/* temporary mount target */
diff --git a/login-utils/last.c b/login-utils/last.c
-index 37c6abe..ddbf35a 100644
+index f5a9fec..f279efc 100644
--- a/login-utils/last.c
+++ b/login-utils/last.c
-@@ -925,7 +925,7 @@ int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
+@@ -935,7 +935,7 @@ int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
.tv_usec = 816074
}
};
@@ -361,10 +361,10 @@ index 37c6abe..ddbf35a 100644
fd = mkstemp_cloexec(name);
diff --git a/login-utils/login.c b/login-utils/login.c
-index 74bdf38..437c240 100644
+index c8544f6..5940bdb 100644
--- a/login-utils/login.c
+++ b/login-utils/login.c
-@@ -1516,7 +1516,7 @@ int main(int argc, char **argv)
+@@ -1551,7 +1551,7 @@ int main(int argc, char **argv)
char *buff;
xasprintf(&buff, "exec %s", pwd->pw_shell);
@@ -373,17 +373,8 @@ index 74bdf38..437c240 100644
child_argv[child_argc++] = "-sh";
child_argv[child_argc++] = "-c";
child_argv[child_argc++] = buff;
-@@ -1538,7 +1538,7 @@ int main(int argc, char **argv)
-
- execvp(child_argv[0], child_argv + 1);
-
-- if (!strcmp(child_argv[0], "/bin/sh"))
-+ if (!strcmp(child_argv[0], "@TERMUX_PREFIX@/bin/sh"))
- warn(_("couldn't exec shell script"));
- else
- warn(_("no shell"));
diff --git a/login-utils/lslogins.c b/login-utils/lslogins.c
-index 76d2812..3d84e8c 100644
+index 217f3f3..35665ba 100644
--- a/login-utils/lslogins.c
+++ b/login-utils/lslogins.c
@@ -1446,7 +1446,7 @@ static void __attribute__((__noreturn__)) usage(void)
@@ -428,10 +419,10 @@ index 9578592..883d4b7 100644
extern int setpwnam (struct passwd *pwd, const char *prefix);
diff --git a/login-utils/su-common.c b/login-utils/su-common.c
-index b674920..d0c1472 100644
+index 9bc0231..53d069c 100644
--- a/login-utils/su-common.c
+++ b/login-utils/su-common.c
-@@ -99,8 +99,8 @@ UL_DEBUG_DEFINE_MASKNAMES(su) = UL_DEBUG_EMPTY_MASKNAMES;
+@@ -100,8 +100,8 @@ UL_DEBUG_DEFINE_MASKNAMES(su) = UL_DEBUG_EMPTY_MASKNAMES;
#define _PATH_LOGINDEFS_SU "default/su"
#define _PATH_LOGINDEFS_RUNUSER "default/runuser"
#else
@@ -442,7 +433,7 @@ index b674920..d0c1472 100644
#endif
#define is_pam_failure(_rc) ((_rc) != PAM_SUCCESS)
-@@ -874,9 +874,9 @@ static bool is_restricted_shell(const char *shell)
+@@ -877,9 +877,9 @@ static bool is_restricted_shell(const char *shell)
return false;
}
#ifdef USE_VENDORDIR
@@ -454,20 +445,20 @@ index b674920..d0c1472 100644
#endif
return true;
}
-@@ -896,7 +896,7 @@ static void usage_common(void)
+@@ -899,7 +899,7 @@ static void usage_common(void)
fputs(_(" --session-command pass a single command to the shell with -c\n"
" and do not create a new session\n"), stdout);
fputs(_(" -f, --fast pass -f to the shell (for csh or tcsh)\n"), stdout);
- fputs(_(" -s, --shell run if /etc/shells allows it\n"), stdout);
+ fputs(_(" -s, --shell run if @TERMUX_PREFIX@/etc/shells allows it\n"), stdout);
fputs(_(" -P, --pty create a new pseudo-terminal\n"), stdout);
+ fputs(_(" -T, --no-pty do not create a new pseudo-terminal (bad security!)\n"), stdout);
- fputs(USAGE_SEPARATOR, stdout);
diff --git a/login-utils/sulogin.c b/login-utils/sulogin.c
-index 45a558d..308e853 100644
+index 2682c30..64cafd4 100644
--- a/login-utils/sulogin.c
+++ b/login-utils/sulogin.c
-@@ -813,7 +813,7 @@ static void sushell(struct passwd *pwd)
+@@ -890,7 +890,7 @@ static void sushell(struct passwd *pwd, struct console *con)
if (pwd->pw_shell[0])
su_shell = pwd->pw_shell;
else
@@ -476,7 +467,7 @@ index 45a558d..308e853 100644
}
if ((p = strrchr(su_shell, '/')) == NULL)
p = su_shell;
-@@ -863,9 +863,9 @@ static void sushell(struct passwd *pwd)
+@@ -939,9 +939,9 @@ static void sushell(struct passwd *pwd, struct console *con)
execl(su_shell, shell, (char *)NULL);
warn(_("failed to execute %s"), su_shell);
@@ -488,9 +479,9 @@ index 45a558d..308e853 100644
+ warn(_("failed to execute %s"), "@TERMUX_PREFIX@/bin/sh");
}
- static void usage(void)
+ #ifdef HAVE_LIBSELINUX
diff --git a/login-utils/vipw.c b/login-utils/vipw.c
-index 5049706..958e044 100644
+index 0c4565b..4c4cc76 100644
--- a/login-utils/vipw.c
+++ b/login-utils/vipw.c
@@ -127,7 +127,7 @@ static FILE * pw_tmpfile(int lockfd)
@@ -503,7 +494,7 @@ index 5049706..958e044 100644
err(EXIT_FAILURE, _("can't open temporary file"));
}
diff --git a/misc-utils/whereis.c b/misc-utils/whereis.c
-index d21b434..108bd15 100644
+index c11efa5..97f1729 100644
--- a/misc-utils/whereis.c
+++ b/misc-utils/whereis.c
@@ -101,84 +101,18 @@ struct wh_dirlist {
@@ -596,7 +587,7 @@ index d21b434..108bd15 100644
};
diff --git a/sys-utils/eject.c b/sys-utils/eject.c
-index 6037ddc..b42c189 100644
+index 166d591..c76d1a4 100644
--- a/sys-utils/eject.c
+++ b/sys-utils/eject.c
@@ -152,7 +152,7 @@ static void __attribute__((__noreturn__)) usage(void)
@@ -624,7 +615,7 @@ index 6037ddc..b42c189 100644
case -1:
warn( _("unable to fork"));
diff --git a/sys-utils/fstrim.c b/sys-utils/fstrim.c
-index 96b7d2d..a97977d 100644
+index 446217e..a59a8d4 100644
--- a/sys-utils/fstrim.c
+++ b/sys-utils/fstrim.c
@@ -294,7 +294,7 @@ static int fstrim_all_from_file(struct fstrim_control *ctl, const char *filename
@@ -646,10 +637,10 @@ index 96b7d2d..a97977d 100644
fputs(_(" -o, --offset the offset in bytes to start discarding from\n"), out);
fputs(_(" -l, --length the number of bytes to discard\n"), out);
diff --git a/sys-utils/mount.c b/sys-utils/mount.c
-index dba6fca..fc65790 100644
+index 50e66de..0d9358a 100644
--- a/sys-utils/mount.c
+++ b/sys-utils/mount.c
-@@ -498,11 +498,11 @@ static void __attribute__((__noreturn__)) usage(void)
+@@ -490,7 +490,7 @@ static void __attribute__((__noreturn__)) usage(void)
fputs(_(" -c, --no-canonicalize don't canonicalize paths\n"), out);
fputs(_(" -f, --fake dry run; skip the mount(2) syscall\n"), out);
fputs(_(" -F, --fork fork off for each device (use with -a)\n"), out);
@@ -657,6 +648,10 @@ index dba6fca..fc65790 100644
+ fputs(_(" -T, --fstab alternative file to @TERMUX_PREFIX@/etc/fstab\n"), out);
fputs(_(" -i, --internal-only don't call the mount. helpers\n"), out);
fputs(_(" -l, --show-labels show also filesystem labels\n"), out);
+ fputs(_(" --map-groups ::\n"
+@@ -500,7 +500,7 @@ static void __attribute__((__noreturn__)) usage(void)
+ fputs(_(" --map-users /proc//ns/user\n"
+ " specify the user namespace for an ID-mapped mount\n"), out);
fputs(_(" -m, --mkdir[=] alias to '-o X-mount.mkdir[=]'\n"), out);
- fputs(_(" -n, --no-mtab don't write to /etc/mtab\n"), out);
+ fputs(_(" -n, --no-mtab don't write to @TERMUX_PREFIX@/etc/mtab\n"), out);
@@ -664,10 +659,10 @@ index dba6fca..fc65790 100644
" what to do with options loaded from fstab\n"), out);
fputs(_(" --options-source \n"
diff --git a/sys-utils/setarch.c b/sys-utils/setarch.c
-index 1a255e4..2f0e6be 100644
+index 227bc6b..07c6275 100644
--- a/sys-utils/setarch.c
+++ b/sys-utils/setarch.c
-@@ -471,7 +471,7 @@ int main(int argc, char *argv[])
+@@ -477,7 +477,7 @@ int main(int argc, char *argv[])
/* Don't use ifdef sparc here, we get "Unrecognized architecture"
* error message later if necessary */
if (strcmp(arch, "sparc32bash") == 0) {
@@ -676,7 +671,7 @@ index 1a255e4..2f0e6be 100644
shell_arg = "";
goto set_arch;
}
-@@ -594,7 +594,7 @@ set_arch:
+@@ -600,7 +600,7 @@ set_arch:
verify_arch_domain(doms, target, arch);
if (!argc) {
@@ -686,10 +681,10 @@ index 1a255e4..2f0e6be 100644
}
if (verbose) {
diff --git a/sys-utils/setpriv.c b/sys-utils/setpriv.c
-index ddc2cc6..34cd0d9 100644
+index 74d3fbe..4a49cfe 100644
--- a/sys-utils/setpriv.c
+++ b/sys-utils/setpriv.c
-@@ -52,7 +52,7 @@
+@@ -53,7 +53,7 @@
#define SETPRIV_EXIT_PRIVERR 127 /* how we exit when we fail to set privs */
/* The shell to set SHELL env.variable if none is given in the user's passwd entry. */
@@ -699,10 +694,10 @@ index ddc2cc6..34cd0d9 100644
static gid_t get_group(const char *s, const char *err);
diff --git a/sys-utils/swapon.c b/sys-utils/swapon.c
-index 8735549..54955b8 100644
+index ce499c1..9aa8f66 100644
--- a/sys-utils/swapon.c
+++ b/sys-utils/swapon.c
-@@ -810,14 +810,14 @@ static void __attribute__((__noreturn__)) usage(void)
+@@ -823,14 +823,14 @@ static void __attribute__((__noreturn__)) usage(void)
fputs(_("Enable devices and files for paging and swapping.\n"), out);
fputs(USAGE_OPTIONS, out);
@@ -720,7 +715,7 @@ index 8735549..54955b8 100644
fputs(_(" --noheadings don't print table heading (with --show)\n"), out);
fputs(_(" --raw use the raw output format (with --show)\n"), out);
diff --git a/sys-utils/umount.c b/sys-utils/umount.c
-index e579fb7..84d208e 100644
+index 17e668c..6f90976 100644
--- a/sys-utils/umount.c
+++ b/sys-utils/umount.c
@@ -96,7 +96,7 @@ static void __attribute__((__noreturn__)) usage(void)
@@ -733,10 +728,10 @@ index e579fb7..84d208e 100644
fputs(_(" -O, --test-opts limit the set of filesystems (use with -a)\n"), out);
fputs(_(" -R, --recursive recursively unmount a target with all its children\n"), out);
diff --git a/tests/helpers/test_mkfds.c b/tests/helpers/test_mkfds.c
-index 194c175..772f748 100644
+index 39427ba..4825bf8 100644
--- a/tests/helpers/test_mkfds.c
+++ b/tests/helpers/test_mkfds.c
-@@ -75,7 +75,7 @@ static void __attribute__((__noreturn__)) usage(FILE *out, int status)
+@@ -96,7 +96,7 @@ static void __attribute__((__noreturn__)) usage(FILE *out, int status)
fputs("\n", out);
fputs("Examples:\n", out);
@@ -745,7 +740,7 @@ index 194c175..772f748 100644
program_invocation_short_name);
fprintf(out, "Using 3 and 4, make a pipe:\n\n $ %s pipe-no-fork 3 4\n\n",
program_invocation_short_name);
-@@ -1901,7 +1901,7 @@ static const struct factory factories[] = {
+@@ -3277,7 +3277,7 @@ static const struct factory factories[] = {
.name = "file",
.type = PTYPE_STRING,
.desc = "file to be opened",
@@ -754,7 +749,7 @@ index 194c175..772f748 100644
},
{
.name = "offset",
-@@ -2095,7 +2095,7 @@ static const struct factory factories[] = {
+@@ -3543,7 +3543,7 @@ static const struct factory factories[] = {
.name = "path",
.type = PTYPE_STRING,
.desc = "path for listening-socket bound to",
@@ -763,7 +758,7 @@ index 194c175..772f748 100644
},
{
.name = "backlog",
-@@ -2142,7 +2142,7 @@ static const struct factory factories[] = {
+@@ -3590,7 +3590,7 @@ static const struct factory factories[] = {
.name = "path",
.type = PTYPE_STRING,
.desc = "path for unix non-stream bound to",
@@ -772,7 +767,7 @@ index 194c175..772f748 100644
},
{
.name = "abstract",
-@@ -2171,7 +2171,7 @@ static const struct factory factories[] = {
+@@ -3619,7 +3619,7 @@ static const struct factory factories[] = {
.name = "path",
.type = PTYPE_STRING,
.desc = "path for unix non-stream bound to",
@@ -782,7 +777,7 @@ index 194c175..772f748 100644
{
.name = "abstract",
diff --git a/text-utils/pg.c b/text-utils/pg.c
-index adb3840..6ba0231 100644
+index 30ed046..93111ba 100644
--- a/text-utils/pg.c
+++ b/text-utils/pg.c
@@ -1364,7 +1364,7 @@ static void pgfile(FILE *f, const char *name)