From 9cb2b33e77c3ca6fa6c319ca7ee8687a73a48abd Mon Sep 17 00:00:00 2001 From: Ivan Max Date: Sat, 12 Nov 2022 19:42:02 +0000 Subject: [PATCH] fix(fakeroot): removed hangup when executing commands (#13048) --- packages/fakeroot/build.sh | 1 + packages/fakeroot/communicate.c.patch | 52 +++++++++++++++++++++++++++ 2 files changed, 53 insertions(+) create mode 100644 packages/fakeroot/communicate.c.patch diff --git a/packages/fakeroot/build.sh b/packages/fakeroot/build.sh index d4b29933e3..b3145777f5 100644 --- a/packages/fakeroot/build.sh +++ b/packages/fakeroot/build.sh @@ -3,6 +3,7 @@ TERMUX_PKG_DESCRIPTION="Tool for simulating superuser privileges (with tcp ipc)" TERMUX_PKG_LICENSE="GPL-3.0" TERMUX_PKG_MAINTAINER="@termux" TERMUX_PKG_VERSION=1.30.1 +TERMUX_PKG_REVISION=1 TERMUX_PKG_SRCURL=https://deb.debian.org/debian/pool/main/f/fakeroot/fakeroot_${TERMUX_PKG_VERSION}.orig.tar.gz TERMUX_PKG_SHA256=32ebb1f421aca0db7141c32a8c104eb95d2b45c393058b9435fbf903dd2b6a75 TERMUX_PKG_EXTRA_CONFIGURE_ARGS="--with-ipc=tcp" diff --git a/packages/fakeroot/communicate.c.patch b/packages/fakeroot/communicate.c.patch new file mode 100644 index 0000000000..345a01198b --- /dev/null +++ b/packages/fakeroot/communicate.c.patch @@ -0,0 +1,52 @@ +--- fakeroot-1.30.1/communicate.c 2022-01-17 23:42:20.000000000 +0300 ++++ fakeroot-1.30.1/communicate.c.patch 2022-11-11 22:36:56.954338881 +0300 +@@ -494,9 +494,9 @@ + } + } + +-void lock_comm_sd(void) ++int lock_comm_sd(void) + { +- pthread_mutex_lock(&comm_sd_mutex); ++ return pthread_mutex_trylock(&comm_sd_mutex); + } + + void unlock_comm_sd(void) +@@ -654,12 +654,12 @@ + + void send_fakem(const struct fake_msg *buf) + { +- lock_comm_sd(); ++ if (!lock_comm_sd()) { ++ open_comm_sd(); ++ send_fakem_nr(buf); + +- open_comm_sd(); +- send_fakem_nr(buf); +- +- unlock_comm_sd(); ++ unlock_comm_sd(); ++ } + } + + static void get_fakem_nr(struct fake_msg *buf) +@@ -694,13 +694,13 @@ + + void send_get_fakem(struct fake_msg *buf) + { +- lock_comm_sd(); ++ if (!lock_comm_sd()) { ++ open_comm_sd(); ++ send_fakem_nr(buf); ++ get_fakem_nr(buf); + +- open_comm_sd(); +- send_fakem_nr(buf); +- get_fakem_nr(buf); +- +- unlock_comm_sd(); ++ unlock_comm_sd(); ++ } + } + + #endif /* FAKEROOT_FAKENET */