modules/android_integration: termux-setup-storage & unsupported

This commit is contained in:
Alexander Sosedkin 2024-07-05 22:52:18 +02:00
parent c4c4f09e3d
commit 733a9fe55c
7 changed files with 265 additions and 4 deletions

View file

@ -0,0 +1,99 @@
# Copyright (c) 2019-2024, see AUTHORS. Licensed under MIT License, see LICENSE.
{ stdenvNoCC
, fetchFromGitHub
, autoreconfHook
, makeWrapper
, gnused
, getopt
, termux-am
}:
stdenvNoCC.mkDerivation rec {
name = "termux-tools";
version = "1.42.4";
src = fetchFromGitHub {
owner = "termux";
repo = "termux-tools";
rev = "v${version}";
sha256 = "sha256-LkkeaEQcY8HgunBYAg3Ymn5xYPvrGqGNCZTd/NyIOKY=";
};
nativeBuildInputs = [ autoreconfHook makeWrapper ];
propagatedInputs = [ termux-am ];
# https://github.com/termux/termux-tools/pull/95
patches = [ ./termux-tools.patch ];
postPatch = ''
substituteInPlace scripts/termux-setup-storage.in \
--replace @TERMUX_HOME@ /data/data/com.termux.nix/files/home/ \
--replace @TERMUX_APP_PACKAGE@ com.termux.nix
substituteInPlace scripts/termux-open.in \
--replace @TERMUX_APP_PACKAGE@.app com.termux.app \
--replace @TERMUX_APP_PACKAGE@ com.termux.nix \
--replace 'getopt ' '${getopt}/bin/getopt '
${gnused}/bin/sed -i 's|^am |${termux-am}/bin/am |' scripts/*
rm -r doc # manpage is half misleading, pulling pandoc is not worth it
substituteInPlace Makefile.am --replace \
'SUBDIRS = . scripts doc mirrors motds' \
'SUBDIRS = . scripts'
substituteInPlace configure.ac --replace \
'AC_CONFIG_FILES([Makefile scripts/Makefile doc/Makefile' \
'AC_CONFIG_FILES([Makefile scripts/Makefile])'
substituteInPlace configure.ac --replace \
'mirrors/Makefile motds/Makefile])' ""
'';
outputs = [
"out" # all the unsupported unsorted stuff
"setup_storage" # termux-setup-storage
];
postInstall = ''
rm $out/etc/termux-login.sh
rm $out/etc/profile.d/init-termux-properties.sh
rm -d $out/etc/profile.d
rm -d $out/etc
rm $out/bin/chsh # we offer a declarative way to change your shell
rm $out/bin/cmd # doesn't work because we overlay /system/bin
rm $out/bin/dalvikvm # doesn't work because we overlay /system/bin
rm $out/bin/df # works without the magic
rm $out/bin/getprop # doesn't work because we overlay /system/bin
rm $out/bin/logcat # doesn't work because we overlay /system/bin
rm $out/bin/login # we have our own, very complex login
rm $out/bin/ping # doesn't work because we overlay /system/bin
rm $out/bin/ping6 # doesn't work because we overlay /system/bin
rm $out/bin/pkg # we use Nix
rm $out/bin/pm # doesn't work because we overlay /system/bin
rm $out/bin/settings # doesn't work because we overlay /system/bin
rm $out/bin/su # doesn't work because we overlay /bin
rm $out/bin/top # doesn't work because we overlay /system/bin
rm $out/bin/termux-change-repo # we use Nix
rm $out/bin/termux-fix-shebang # we use Nix
rm $out/bin/termux-info # Termux-specific. write our own?
rm $out/bin/termux-reset # untested and dangerous
rm $out/bin/termux-restore # untested and dangerous
rm $out/bin/termux-setup-package-manager # we use Nix
mkdir -p $setup_storage/bin
mv $out/bin/termux-setup-storage $setup_storage/bin/
# check that we didn't package we didn't want to
find $out | ${gnused}/bin/sed "s|^$out|.|" | sort > effective
echo . >> expected
echo ./bin >> expected
echo ./bin/termux-backup >> expected # entirely untested
echo ./bin/termux-open >> expected # good candidate for fixing
echo ./bin/termux-open-url >> expected # good candidate for fixing
echo ./bin/termux-reload-settings >> expected # good candidate for fixing
echo ./bin/termux-wake-lock >> expected # good candidate for fixing
echo ./bin/termux-wake-unlock >> expected # good candidate for fixing
echo ./bin/xdg-open >> expected # good candidate for fixing
echo ./share >> expected
echo ./share/examples >> expected
echo ./share/examples/termux >> expected
echo ./share/examples/termux/termux.properties >> expected # useful
diff -u expected effective
'';
}

View file

@ -0,0 +1,87 @@
From 6d72b44d90347ddce8473b604c38f352e6773f8d Mon Sep 17 00:00:00 2001
From: Alexander Sosedkin <monk@unboiled.info>
Date: Sat, 1 Jun 2024 17:14:22 +0200
Subject: [PATCH] scripts: replace com.termux with @TERMUX_APP_PACKAGE@
---
scripts/termux-open.in | 2 +-
scripts/termux-reload-settings.in | 2 +-
scripts/termux-reset.in | 2 +-
scripts/termux-setup-storage.in | 4 ++--
scripts/termux-wake-lock.in | 4 ++--
scripts/termux-wake-unlock.in | 4 ++--
6 files changed, 9 insertions(+), 9 deletions(-)
diff --git a/scripts/termux-open.in b/scripts/termux-open.in
index 9c81630..9a04e7b 100644
--- a/scripts/termux-open.in
+++ b/scripts/termux-open.in
@@ -44,7 +44,7 @@ case "${TERMUX__USER_ID:-}" in ''|*[!0-9]*|0[0-9]*) TERMUX__USER_ID=0;; esac
am broadcast --user "$TERMUX__USER_ID" \
-a $ACTION \
- -n com.termux/com.termux.app.TermuxOpenReceiver \
+ -n @TERMUX_APP_PACKAGE@/@TERMUX_APP_PACKAGE@.app.TermuxOpenReceiver \
$EXTRAS \
-d "$FILE" \
> /dev/null
diff --git a/scripts/termux-reload-settings.in b/scripts/termux-reload-settings.in
index 4e71f8a..ef8b0f4 100644
--- a/scripts/termux-reload-settings.in
+++ b/scripts/termux-reload-settings.in
@@ -11,4 +11,4 @@ fi
case "${TERMUX__USER_ID:-}" in ''|*[!0-9]*|0[0-9]*) TERMUX__USER_ID=0;; esac
-am broadcast --user "$TERMUX__USER_ID" -a com.termux.app.reload_style com.termux > /dev/null
+am broadcast --user "$TERMUX__USER_ID" -a @TERMUX_APP_PACKAGE@.app.reload_style @TERMUX_APP_PACKAGE@ > /dev/null
diff --git a/scripts/termux-reset.in b/scripts/termux-reset.in
index 6f807a7..2161d1f 100644
--- a/scripts/termux-reset.in
+++ b/scripts/termux-reset.in
@@ -45,6 +45,6 @@ else
/system/bin/killall -9 "$SHELL"
else
export CLASSPATH="@TERMUX_CACHE_DIR@/termux-am/am.apk"
- /system/bin/app_process / com.termux.termuxam.Am stopservice com.termux/.app.TermuxService
+ /system/bin/app_process / @TERMUX_APP_PACKAGE@.termuxam.Am stopservice @TERMUX_APP_PACKAGE@/.app.TermuxService
fi
fi
diff --git a/scripts/termux-setup-storage.in b/scripts/termux-setup-storage.in
index c621234..a086159 100644
--- a/scripts/termux-setup-storage.in
+++ b/scripts/termux-setup-storage.in
@@ -27,5 +27,5 @@ fi
case "${TERMUX__USER_ID:-}" in ''|*[!0-9]*|0[0-9]*) TERMUX__USER_ID=0;; esac
am broadcast --user "$TERMUX__USER_ID" \
- --es com.termux.app.reload_style storage \
- -a com.termux.app.reload_style com.termux > /dev/null
+ --es @TERMUX_APP_PACKAGE@.app.reload_style storage \
+ -a @TERMUX_APP_PACKAGE@.app.reload_style @TERMUX_APP_PACKAGE@ > /dev/null
diff --git a/scripts/termux-wake-lock.in b/scripts/termux-wake-lock.in
index ba4b899..f3fd59e 100644
--- a/scripts/termux-wake-lock.in
+++ b/scripts/termux-wake-lock.in
@@ -10,6 +10,6 @@ case "${TERMUX__USER_ID:-}" in ''|*[!0-9]*|0[0-9]*) TERMUX__USER_ID=0;; esac
am startservice \
--user "$TERMUX__USER_ID" \
- -a com.termux.service_wake_lock \
- com.termux/com.termux.app.TermuxService \
+ -a @TERMUX_APP_PACKAGE@.service_wake_lock \
+ @TERMUX_APP_PACKAGE@/@TERMUX_APP_PACKAGE@.app.TermuxService \
> /dev/null
diff --git a/scripts/termux-wake-unlock.in b/scripts/termux-wake-unlock.in
index a4b1f57..d53ce31 100644
--- a/scripts/termux-wake-unlock.in
+++ b/scripts/termux-wake-unlock.in
@@ -10,6 +10,6 @@ case "${TERMUX__USER_ID:-}" in ''|*[!0-9]*|0[0-9]*) TERMUX__USER_ID=0;; esac
am startservice \
--user "$TERMUX__USER_ID" \
- -a com.termux.service_wake_unlock \
- com.termux/com.termux.app.TermuxService \
+ -a @TERMUX_APP_PACKAGE@.service_wake_unlock \
+ @TERMUX_APP_PACKAGE@/@TERMUX_APP_PACKAGE@.app.TermuxService \
> /dev/null