From 7e8a4e68e0f4210135d4cfd7b7116cc03b96bd22 Mon Sep 17 00:00:00 2001 From: sdrausty Date: Mon, 3 Sep 2018 12:16:33 -0400 Subject: [PATCH] Commit on 20180903 branch master 70746909049856 --- archlinuxconfig.sh | 8 +-- knownconfigurations.sh | 10 +-- maintenanceroutines.sh | 2 +- necessaryfunctions.sh | 13 ++-- printoutstatements.sh | 68 ++++++------------ scripts/files/stable/archlinuxconfig.sh | 8 +-- scripts/files/stable/knownconfigurations.sh | 10 +-- scripts/files/stable/maintenanceroutines.sh | 2 +- scripts/files/stable/necessaryfunctions.sh | 13 ++-- scripts/files/stable/printoutstatements.sh | 68 ++++++------------ scripts/files/stable/setupTermuxArch.sh | 70 +++++++++++-------- scripts/files/working/archlinuxconfig.sh | 8 +-- scripts/files/working/knownconfigurations.sh | 10 +-- scripts/files/working/maintenanceroutines.sh | 2 +- scripts/files/working/necessaryfunctions.sh | 13 ++-- scripts/files/working/printoutstatements.sh | 68 ++++++------------ scripts/files/working/setupTermuxArch.sh | 70 +++++++++++-------- scripts/{files/working/t => frags/aarray.sh} | 0 setupTermuxArch.sh | 70 +++++++++++-------- setupTermuxArch.sha512 | 2 +- setupTermuxArch.tar.gz | Bin 29703 -> 29377 bytes 21 files changed, 241 insertions(+), 274 deletions(-) rename scripts/{files/working/t => frags/aarray.sh} (100%) diff --git a/archlinuxconfig.sh b/archlinuxconfig.sh index 1e97bb0185..f67adb9773 100644 --- a/archlinuxconfig.sh +++ b/archlinuxconfig.sh @@ -131,7 +131,7 @@ addch() { _CFLHDR_ root/bin/ch "# Creates .hushlogin and .hushlogout file" cat >> root/bin/ch <<- EOM declare -a args -versionid="v1.6 id7431" +versionid="v1.6 id2361" _TRPEXIT_() { # on exit printf "\\e[?25h\\e[0m" @@ -353,7 +353,7 @@ addkeys() { _CFLHDR_ root/bin/keys cat >> root/bin/keys <<- EOM declare -a keyrings -versionid="v1.6 id7431" +versionid="v1.6 id2361" _TRPEXIT_() { # on exit printf "\\e[?25h\\e[0m" @@ -446,7 +446,7 @@ addpc() { _CFLHDR_ root/bin/pc "# Pacman install packages wrapper without system update." cat >> root/bin/pc <<- EOM declare -g args="\$@" -versionid="v1.6 id7431" +versionid="v1.6 id2361" _TRPEXIT_() { # on exit printf "\\e[?25h\\e[0m" @@ -500,7 +500,7 @@ addpci() { _CFLHDR_ root/bin/pci "# Pacman install packages wrapper with system update." cat >> root/bin/pci <<- EOM declare args="\$@" -versionid="v1.6 id7431" +versionid="v1.6 id2361" _TRPEXIT_() { # on exit printf "\\e[?25h\\e[0m" diff --git a/knownconfigurations.sh b/knownconfigurations.sh index a88d5cb259..409c9d1889 100644 --- a/knownconfigurations.sh +++ b/knownconfigurations.sh @@ -70,13 +70,9 @@ if [[ "$koe" ]]; then prootstmnt+="--kill-on-exit " fi prootstmnt+="--link2symlink -0 -r $INSTALLDIR " -if [[ ! -r /dev/shm ]] ; then - if [[ -r /dev/ashmem ]] ; then - prootstmnt+="-b /dev/ashmem:/dev/shm " - else - prootstmnt+="-b $INSTALLDIR/tmp:/dev/shm " - fi -fi +# if [[ ! -r /dev/shm ]] ; then +# prootstmnt+="-b $INSTALLDIR/tmp:/dev/shm " +# fi if [[ -f /proc/stat ]] ; then if [[ ! "$(head /proc/stat)" ]] ; then prootstmnt+="-b $INSTALLDIR/var/binds/fbindprocstat:/proc/stat " diff --git a/maintenanceroutines.sh b/maintenanceroutines.sh index cf800749bb..271caabee7 100644 --- a/maintenanceroutines.sh +++ b/maintenanceroutines.sh @@ -96,7 +96,7 @@ loadimage() { spaceinfo printf "\\n" wakelock - _PREPINSTALLDIR + _PREPINSTALLDIR_ copyimage ## "$@" & spinner "Copying" "…" _PRINTMD5CHECK_ md5check diff --git a/necessaryfunctions.sh b/necessaryfunctions.sh index 81c0d0b9fb..a4d9290960 100644 --- a/necessaryfunctions.sh +++ b/necessaryfunctions.sh @@ -91,7 +91,7 @@ lkernid mainblock() { namestartarch spaceinfo - _PREPINSTALLDIR + _PREPINSTALLDIR_ detectsystem wakeunlock _PRINTFOOTER_ @@ -104,7 +104,7 @@ makefinishsetup() { binfnstp=finishsetup.sh _CFLHDR_ root/bin/"$binfnstp" cat >> root/bin/"$binfnstp" <<- EOM -versionid="v1.6 id7431" +versionid="v1.6 id2361" printf "\\n\\e[0;32m%s\\e[1;32m%s\\e[0;32m%s\\e[1;32m%s\\e[0;32m%s\\n\\n\\e[1;32m%s\\e[0;32m" "To generate locales in a preferred language, you can use " "Settings > Language & Keyboard > Language " "in Android. Then run " "${0##*/} r " "for a quick system refresh." "==> " locale-gen ||: printf "\\n\\e[1;34m:: \\e[1;37mRemoving redundant packages for Termux PRoot installation…\\n" @@ -149,7 +149,7 @@ versionid="v1.6 id7431" makesetupbin() { _CFLHDR_ root/bin/setupbin.sh cat >> root/bin/setupbin.sh <<- EOM -versionid="v1.6 id7431" +versionid="v1.6 id2361" unset LD_PRELOAD EOM echo "$prootstmnt /root/bin/finishsetup.sh ||:" >> root/bin/setupbin.sh @@ -158,9 +158,10 @@ versionid="v1.6 id7431" makestartbin() { _CFLHDR_ "$startbin" + printf "%s\\n" "${FLHDRP[@]}" >> "$startbin" cat >> "$startbin" <<- EOM -versionid="v1.6 id7431" - unset LD_PRELOAD +versionid="v1.6 id2361" +# unset LD_PRELOAD declare -g ar2ar="\${@:2}" declare -g ar3ar="\${@:3}" _PRINTUSAGE_() { @@ -254,7 +255,7 @@ _PREPROOTDIR() { mkdir -p usr/bin } -_PREPINSTALLDIR() { +_PREPINSTALLDIR_() { _PREPROOTDIR _SETLANGUAGE_ addREADME diff --git a/printoutstatements.sh b/printoutstatements.sh index bc8b644b72..823dfb216b 100644 --- a/printoutstatements.sh +++ b/printoutstatements.sh @@ -1,24 +1,6 @@ #!/bin/env bash -# Copyright 2017-2018 by SDRausty. All rights reserved. 🌎 🌍 🌏 🌐 πŸ—Ί -# Hosting https://sdrausty.github.io/TermuxArch courtesy https://pages.github.com -# https://sdrausty.github.io/TermuxArch/CONTRIBUTORS Thank you for your help. -# https://sdrausty.github.io/TermuxArch/README has information about this project. # Printout statement subroutines for `setupTermuxArch.sh`. ################################################################################ - -# FLHDR[0]="#!/bin/env bash" -# FLHDR[1]="# Copyright 2017-2018 by SDRausty. All rights reserved. 🌎 🌍 🌏 🌐 πŸ—Ί" -# FLHDR[2]="# Hosting sdrausty.github.io/TermuxArch courtesy https://pages.github.com." -# FLHDR[3]="# https://sdrausty.github.io/TermuxArch/README has info about this project." -# FLHDR[4]="# https://sdrausty.github.io/TermuxArch/CONTRIBUTORS Thank you for your help." -# FLHDR[5]="################################################################################" -# FLHDR[7]="IFS=$'\\n\\t'" -# FLHDR[8]="set -Eeuo pipefail" -# FLHDR[9]="shopt -s nullglob globstar" -# FLHDR[10]="versionid=\"v1.6 id9909\"" -# FLHDR[11]=" " -# TRPERROR[0]="_TRPERROR_() { # Run on script error." -FLHDR0[0]="#!/bin/env bash" FLHDR0[1]="# Copyright 2017-2018 by SDRausty. All rights reserved. 🌎 🌍 🌏 🌐 πŸ—Ί" FLHDR0[2]="# Hosting sdrausty.github.io/TermuxArch courtesy https://pages.github.com." FLHDR0[3]="# https://sdrausty.github.io/TermuxArch/README has info about this project." @@ -27,15 +9,18 @@ FLHDR1[5]="##################################################################### FLHDR1[7]="IFS=$'\\n\\t'" FLHDR1[8]="set -Eeuo pipefail" FLHDR1[9]="shopt -s nullglob globstar" -FLHDR1[10]="versionid=\"v1.6 id9909\"" -FLHDR1[11]=" " -TRPERROR[0]="_TRPERROR_() { # Run on script error." -TRPERROR[1]=" local rv=\"\$?\"" -TRPERROR[2]=" printf \"\\e[?25h\\n\\e[1;48;5;138m %s\\e[0m\\n\\n\" \"TermuxArch WARNING: Generated script signal \${rv:-unknown} near or at line number \${1:-unknown} by \`\${2:-command}\`!\"" +FLHDR1[10]="unset LD_PRELOAD" +FLHDR1[11]="versionid=\"v1.6 id9909\"" +FLHDR1[12]=" " +FLHDRP[0]="## BEGIN #######################################################################" +FLHDRP[1]="LD_PRELOAD=\"env /data/data/com.termux/files/usr/lib/libandroid-shmem.so\"" +TRPERROR[0]="_TRPERR_() { # Run on script error." +TRPERROR[1]=" local RV=\"\$?\"" +TRPERROR[2]=" printf \"\\e[?25h\\n\\e[1;48;5;138m %s\\e[0m\\n\\n\" \"TermuxArch WARNING: Generated script signal \${RV:-unknown} near or at line number \${1:-unknown} by \`\${2:-command}\`!\"" TRPERROR[3]=" exit 201" TRPERROR[4]="}" TRPERROR[5]=" " -TRPEXIT[0]="_TRPEXIT_() { # Run on exit." +TRPEXIT[0]="_TRPET_() { # Run on exit." TRPEXIT[1]=" local RV=\"\$?\" " TRPEXIT[2]=" printf \"\\a\\a\\a\\a\" " TRPEXIT[3]=" sleep 0.4 " @@ -51,40 +36,33 @@ TRPEXIT[12]=" set +Eeuo pipefail" TRPEXIT[13]=" exit" TRPEXIT[14]="}" TRPEXIT[15]=" " -TRPSIGNAL[0]="_TRPSIGNAL_() { # Run on signal." +TRPSIGNAL[0]="_TRPSIG_() { # Run on signal." TRPSIGNAL[1]=" printf \"\\e[?25h\\e[1;7;38;5;0mTermuxArch WARNING: Signal \$? received!\\e[0m\\n\"" TRPSIGNAL[2]=" rm -rf \"\$TAMPDIR\"" TRPSIGNAL[3]=" exit 211" TRPSIGNAL[4]="}" TRPSIGNAL[5]=" " -TRPQUIT[0]="_TRPQUIT_() { # Run on quit." +TRPQUIT[0]="_TRPQ_() { # Run on quit." TRPQUIT[1]=" printf \"\\e[?25h\\e[1;7;38;5;0mTermuxArch WARNING: Quit signal \$? received!\\e[0m\\n\"" TRPQUIT[2]=" rm -rf \"\$TAMPDIR\"" TRPQUIT[3]=" exit 221" TRPQUIT[4]="}" TRPQUIT[5]=" " -TRAPS[0]="trap \"_TRPERROR_ \$LINENO \$BASH_COMMAND \$?\" ERR" -# TRAPS[1]="trap \"_TRPEXIT_ \$LINENO \$BASH_COMMAND \$?\" EXIT" -TRAPS[1]="trap _TRPEXIT_ EXIT" -TRAPS[2]="trap _TRPSIGNAL_ HUP INT TERM" -TRAPS[3]="trap _TRPQUIT_ QUIT" +TRAPS[0]="trap \"_TRPERR_ \$LINENO \$BASH_COMMAND \$?\" ERR" +TRAPS[1]="trap _TRPET_ EXIT" +TRAPS[2]="trap _TRPSIG_ HUP INT TERM" +TRAPS[3]="trap _TRPQ_ QUIT" TRAPS[4]=" " _CFLHDR_() { # Create file headers, and interests comments. - if [[ -z "${2:-}" ]] ; then - printf "%s\\n" "${FLHDR0[@]}" > "$1" - else - for i in {0..3} ; do - if [[ $i = 0 ]] ; then - printf "%s\\n" "${FLHDR0[i]}" > "$1" - else - printf "%s\\n" "${FLHDR0[i]}" >> "$1" - fi - done - printf "%s\\n" "${@:2}" >> "$1" - printf "%s\\n" "${FLHDR0[4]}" >> "$1" - fi - printf "%s\\n" "${FLHDR1[@]}" >> "$1" + if [[ -z "${2:-}" ]] ; then + printf "%s\\n" "${FLHDR0[@]}" > "$1" + printf "%s\\n" "${FLHDR1[@]}" >> "$1" + else + printf "%s\\n" "${FLHDR0[@]}" > "$1" + printf "%s\\n" "${@:2}" >> "$1" + printf "%s\\n" "${FLHDR1[@]}" >> "$1" + fi printf "%s\\n" "${TRPERROR[@]}" >> "$1" printf "%s\\n" "${TRPEXIT[@]}" >> "$1" printf "%s\\n" "${TRPSIGNAL[@]}" >> "$1" diff --git a/scripts/files/stable/archlinuxconfig.sh b/scripts/files/stable/archlinuxconfig.sh index 1e97bb0185..f67adb9773 100644 --- a/scripts/files/stable/archlinuxconfig.sh +++ b/scripts/files/stable/archlinuxconfig.sh @@ -131,7 +131,7 @@ addch() { _CFLHDR_ root/bin/ch "# Creates .hushlogin and .hushlogout file" cat >> root/bin/ch <<- EOM declare -a args -versionid="v1.6 id7431" +versionid="v1.6 id2361" _TRPEXIT_() { # on exit printf "\\e[?25h\\e[0m" @@ -353,7 +353,7 @@ addkeys() { _CFLHDR_ root/bin/keys cat >> root/bin/keys <<- EOM declare -a keyrings -versionid="v1.6 id7431" +versionid="v1.6 id2361" _TRPEXIT_() { # on exit printf "\\e[?25h\\e[0m" @@ -446,7 +446,7 @@ addpc() { _CFLHDR_ root/bin/pc "# Pacman install packages wrapper without system update." cat >> root/bin/pc <<- EOM declare -g args="\$@" -versionid="v1.6 id7431" +versionid="v1.6 id2361" _TRPEXIT_() { # on exit printf "\\e[?25h\\e[0m" @@ -500,7 +500,7 @@ addpci() { _CFLHDR_ root/bin/pci "# Pacman install packages wrapper with system update." cat >> root/bin/pci <<- EOM declare args="\$@" -versionid="v1.6 id7431" +versionid="v1.6 id2361" _TRPEXIT_() { # on exit printf "\\e[?25h\\e[0m" diff --git a/scripts/files/stable/knownconfigurations.sh b/scripts/files/stable/knownconfigurations.sh index a88d5cb259..409c9d1889 100644 --- a/scripts/files/stable/knownconfigurations.sh +++ b/scripts/files/stable/knownconfigurations.sh @@ -70,13 +70,9 @@ if [[ "$koe" ]]; then prootstmnt+="--kill-on-exit " fi prootstmnt+="--link2symlink -0 -r $INSTALLDIR " -if [[ ! -r /dev/shm ]] ; then - if [[ -r /dev/ashmem ]] ; then - prootstmnt+="-b /dev/ashmem:/dev/shm " - else - prootstmnt+="-b $INSTALLDIR/tmp:/dev/shm " - fi -fi +# if [[ ! -r /dev/shm ]] ; then +# prootstmnt+="-b $INSTALLDIR/tmp:/dev/shm " +# fi if [[ -f /proc/stat ]] ; then if [[ ! "$(head /proc/stat)" ]] ; then prootstmnt+="-b $INSTALLDIR/var/binds/fbindprocstat:/proc/stat " diff --git a/scripts/files/stable/maintenanceroutines.sh b/scripts/files/stable/maintenanceroutines.sh index cf800749bb..271caabee7 100644 --- a/scripts/files/stable/maintenanceroutines.sh +++ b/scripts/files/stable/maintenanceroutines.sh @@ -96,7 +96,7 @@ loadimage() { spaceinfo printf "\\n" wakelock - _PREPINSTALLDIR + _PREPINSTALLDIR_ copyimage ## "$@" & spinner "Copying" "…" _PRINTMD5CHECK_ md5check diff --git a/scripts/files/stable/necessaryfunctions.sh b/scripts/files/stable/necessaryfunctions.sh index 81c0d0b9fb..a4d9290960 100644 --- a/scripts/files/stable/necessaryfunctions.sh +++ b/scripts/files/stable/necessaryfunctions.sh @@ -91,7 +91,7 @@ lkernid mainblock() { namestartarch spaceinfo - _PREPINSTALLDIR + _PREPINSTALLDIR_ detectsystem wakeunlock _PRINTFOOTER_ @@ -104,7 +104,7 @@ makefinishsetup() { binfnstp=finishsetup.sh _CFLHDR_ root/bin/"$binfnstp" cat >> root/bin/"$binfnstp" <<- EOM -versionid="v1.6 id7431" +versionid="v1.6 id2361" printf "\\n\\e[0;32m%s\\e[1;32m%s\\e[0;32m%s\\e[1;32m%s\\e[0;32m%s\\n\\n\\e[1;32m%s\\e[0;32m" "To generate locales in a preferred language, you can use " "Settings > Language & Keyboard > Language " "in Android. Then run " "${0##*/} r " "for a quick system refresh." "==> " locale-gen ||: printf "\\n\\e[1;34m:: \\e[1;37mRemoving redundant packages for Termux PRoot installation…\\n" @@ -149,7 +149,7 @@ versionid="v1.6 id7431" makesetupbin() { _CFLHDR_ root/bin/setupbin.sh cat >> root/bin/setupbin.sh <<- EOM -versionid="v1.6 id7431" +versionid="v1.6 id2361" unset LD_PRELOAD EOM echo "$prootstmnt /root/bin/finishsetup.sh ||:" >> root/bin/setupbin.sh @@ -158,9 +158,10 @@ versionid="v1.6 id7431" makestartbin() { _CFLHDR_ "$startbin" + printf "%s\\n" "${FLHDRP[@]}" >> "$startbin" cat >> "$startbin" <<- EOM -versionid="v1.6 id7431" - unset LD_PRELOAD +versionid="v1.6 id2361" +# unset LD_PRELOAD declare -g ar2ar="\${@:2}" declare -g ar3ar="\${@:3}" _PRINTUSAGE_() { @@ -254,7 +255,7 @@ _PREPROOTDIR() { mkdir -p usr/bin } -_PREPINSTALLDIR() { +_PREPINSTALLDIR_() { _PREPROOTDIR _SETLANGUAGE_ addREADME diff --git a/scripts/files/stable/printoutstatements.sh b/scripts/files/stable/printoutstatements.sh index bc8b644b72..823dfb216b 100644 --- a/scripts/files/stable/printoutstatements.sh +++ b/scripts/files/stable/printoutstatements.sh @@ -1,24 +1,6 @@ #!/bin/env bash -# Copyright 2017-2018 by SDRausty. All rights reserved. 🌎 🌍 🌏 🌐 πŸ—Ί -# Hosting https://sdrausty.github.io/TermuxArch courtesy https://pages.github.com -# https://sdrausty.github.io/TermuxArch/CONTRIBUTORS Thank you for your help. -# https://sdrausty.github.io/TermuxArch/README has information about this project. # Printout statement subroutines for `setupTermuxArch.sh`. ################################################################################ - -# FLHDR[0]="#!/bin/env bash" -# FLHDR[1]="# Copyright 2017-2018 by SDRausty. All rights reserved. 🌎 🌍 🌏 🌐 πŸ—Ί" -# FLHDR[2]="# Hosting sdrausty.github.io/TermuxArch courtesy https://pages.github.com." -# FLHDR[3]="# https://sdrausty.github.io/TermuxArch/README has info about this project." -# FLHDR[4]="# https://sdrausty.github.io/TermuxArch/CONTRIBUTORS Thank you for your help." -# FLHDR[5]="################################################################################" -# FLHDR[7]="IFS=$'\\n\\t'" -# FLHDR[8]="set -Eeuo pipefail" -# FLHDR[9]="shopt -s nullglob globstar" -# FLHDR[10]="versionid=\"v1.6 id9909\"" -# FLHDR[11]=" " -# TRPERROR[0]="_TRPERROR_() { # Run on script error." -FLHDR0[0]="#!/bin/env bash" FLHDR0[1]="# Copyright 2017-2018 by SDRausty. All rights reserved. 🌎 🌍 🌏 🌐 πŸ—Ί" FLHDR0[2]="# Hosting sdrausty.github.io/TermuxArch courtesy https://pages.github.com." FLHDR0[3]="# https://sdrausty.github.io/TermuxArch/README has info about this project." @@ -27,15 +9,18 @@ FLHDR1[5]="##################################################################### FLHDR1[7]="IFS=$'\\n\\t'" FLHDR1[8]="set -Eeuo pipefail" FLHDR1[9]="shopt -s nullglob globstar" -FLHDR1[10]="versionid=\"v1.6 id9909\"" -FLHDR1[11]=" " -TRPERROR[0]="_TRPERROR_() { # Run on script error." -TRPERROR[1]=" local rv=\"\$?\"" -TRPERROR[2]=" printf \"\\e[?25h\\n\\e[1;48;5;138m %s\\e[0m\\n\\n\" \"TermuxArch WARNING: Generated script signal \${rv:-unknown} near or at line number \${1:-unknown} by \`\${2:-command}\`!\"" +FLHDR1[10]="unset LD_PRELOAD" +FLHDR1[11]="versionid=\"v1.6 id9909\"" +FLHDR1[12]=" " +FLHDRP[0]="## BEGIN #######################################################################" +FLHDRP[1]="LD_PRELOAD=\"env /data/data/com.termux/files/usr/lib/libandroid-shmem.so\"" +TRPERROR[0]="_TRPERR_() { # Run on script error." +TRPERROR[1]=" local RV=\"\$?\"" +TRPERROR[2]=" printf \"\\e[?25h\\n\\e[1;48;5;138m %s\\e[0m\\n\\n\" \"TermuxArch WARNING: Generated script signal \${RV:-unknown} near or at line number \${1:-unknown} by \`\${2:-command}\`!\"" TRPERROR[3]=" exit 201" TRPERROR[4]="}" TRPERROR[5]=" " -TRPEXIT[0]="_TRPEXIT_() { # Run on exit." +TRPEXIT[0]="_TRPET_() { # Run on exit." TRPEXIT[1]=" local RV=\"\$?\" " TRPEXIT[2]=" printf \"\\a\\a\\a\\a\" " TRPEXIT[3]=" sleep 0.4 " @@ -51,40 +36,33 @@ TRPEXIT[12]=" set +Eeuo pipefail" TRPEXIT[13]=" exit" TRPEXIT[14]="}" TRPEXIT[15]=" " -TRPSIGNAL[0]="_TRPSIGNAL_() { # Run on signal." +TRPSIGNAL[0]="_TRPSIG_() { # Run on signal." TRPSIGNAL[1]=" printf \"\\e[?25h\\e[1;7;38;5;0mTermuxArch WARNING: Signal \$? received!\\e[0m\\n\"" TRPSIGNAL[2]=" rm -rf \"\$TAMPDIR\"" TRPSIGNAL[3]=" exit 211" TRPSIGNAL[4]="}" TRPSIGNAL[5]=" " -TRPQUIT[0]="_TRPQUIT_() { # Run on quit." +TRPQUIT[0]="_TRPQ_() { # Run on quit." TRPQUIT[1]=" printf \"\\e[?25h\\e[1;7;38;5;0mTermuxArch WARNING: Quit signal \$? received!\\e[0m\\n\"" TRPQUIT[2]=" rm -rf \"\$TAMPDIR\"" TRPQUIT[3]=" exit 221" TRPQUIT[4]="}" TRPQUIT[5]=" " -TRAPS[0]="trap \"_TRPERROR_ \$LINENO \$BASH_COMMAND \$?\" ERR" -# TRAPS[1]="trap \"_TRPEXIT_ \$LINENO \$BASH_COMMAND \$?\" EXIT" -TRAPS[1]="trap _TRPEXIT_ EXIT" -TRAPS[2]="trap _TRPSIGNAL_ HUP INT TERM" -TRAPS[3]="trap _TRPQUIT_ QUIT" +TRAPS[0]="trap \"_TRPERR_ \$LINENO \$BASH_COMMAND \$?\" ERR" +TRAPS[1]="trap _TRPET_ EXIT" +TRAPS[2]="trap _TRPSIG_ HUP INT TERM" +TRAPS[3]="trap _TRPQ_ QUIT" TRAPS[4]=" " _CFLHDR_() { # Create file headers, and interests comments. - if [[ -z "${2:-}" ]] ; then - printf "%s\\n" "${FLHDR0[@]}" > "$1" - else - for i in {0..3} ; do - if [[ $i = 0 ]] ; then - printf "%s\\n" "${FLHDR0[i]}" > "$1" - else - printf "%s\\n" "${FLHDR0[i]}" >> "$1" - fi - done - printf "%s\\n" "${@:2}" >> "$1" - printf "%s\\n" "${FLHDR0[4]}" >> "$1" - fi - printf "%s\\n" "${FLHDR1[@]}" >> "$1" + if [[ -z "${2:-}" ]] ; then + printf "%s\\n" "${FLHDR0[@]}" > "$1" + printf "%s\\n" "${FLHDR1[@]}" >> "$1" + else + printf "%s\\n" "${FLHDR0[@]}" > "$1" + printf "%s\\n" "${@:2}" >> "$1" + printf "%s\\n" "${FLHDR1[@]}" >> "$1" + fi printf "%s\\n" "${TRPERROR[@]}" >> "$1" printf "%s\\n" "${TRPEXIT[@]}" >> "$1" printf "%s\\n" "${TRPSIGNAL[@]}" >> "$1" diff --git a/scripts/files/stable/setupTermuxArch.sh b/scripts/files/stable/setupTermuxArch.sh index cc3676edb2..c82649bfd4 100755 --- a/scripts/files/stable/setupTermuxArch.sh +++ b/scripts/files/stable/setupTermuxArch.sh @@ -8,7 +8,7 @@ IFS=$'\n\t' set -Eeuo pipefail shopt -s nullglob globstar unset LD_PRELOAD -versionid="v1.6 id7431" +versionid="v1.6 id2361" ## INIT FUNCTIONS ############################################################## aria2cif() { @@ -141,6 +141,7 @@ dependbp() { depends() { # Checks for missing commands. printf "\\e[1;34mChecking prerequisites…\\n\\e[1;32m" + libandroidshmemif # # Checks if download manager is set. aria2cifdm axelifdm @@ -286,6 +287,15 @@ lftpifdm() { fi } +libandroidshmemif() { + dm=lftp + if [[ ! -f /data/data/com.termux/files/usr/lib/libandroid-shmem.so ]] ; then + aptin+="libandroid-shmem " + maptin+=(libandroid-shmem) + apton+=(libandroid-shmem) + fi +} + loadconf() { if [[ -f "${wdir}setupTermuxArchConfigs.sh" ]] ; then . "${wdir}setupTermuxArchConfigs.sh" @@ -558,36 +568,39 @@ _STANDARDIF_() { } _TRPERROR_() { # Run on script error. - local rv="$?" - printf "\\e[?25h\\n\\e[1;48;5;138m %s\\e[0m\\n\\n" "TermuxArch WARNING: Generated script signal ${rv:-unknown} near or at line number ${1:-unknown} by \`${2:-command}\`!" + local RV="$?" + printf "\\e[?25h\\n\\e[1;48;5;138m %s\\e[0m\\n\\n" "TermuxArch WARNING: Generated script signal ${RV:-unknown} near or at line number ${1:-unknown} by \`${2:-command}\`!" exit 201 } _TRPEXIT_() { # Run on exit. - local rv="$?" - printf "\\a\\a\\a\\a" + local RV="$?" + rm -rf "$TAMPDIR" + sleep 0.04 CDIRS=( bin boot dev etc home lib mnt opt proc root run sbin srv sys tmp usr var ) - CDIRSR="0" - for i in "${CDIRS[@]}" ; do - if [ "$(ls -A $INSTALLDIR/$i 2>/dev/null)" ] ; then - CDIRSR="1" + CDIRSV="0" + for i in "${CDIRS[@]}" + do + if $(ls -A $INSTALLDIR/$i 2>/dev/null) + then + CDIRSV="1" fi done - if [[ "$CDIRSR" = 0 ]] ; then + if "$CDIRSV" = 0 + then rmdir $TAMPDIR rmdir $INSTALLDIR fi - sleep 0.4 - if [[ "$rv" = 0 ]] ; then - printf "\\a\\e[0;32m%s %s \\a\\e[0m$versionid\\e[1;34m: \\a\\e[1;32m%s\\e[0m\\n\\n\\a\\e[0m" "${0##*/}" "$args" "DONE 🏁" - printf "\\e]2; %s: %s \007" "${0##*/} $args" "DONE 🏁" + if "$RV" = 0 + then + printf "\\a\\e[0;32m%s %s \\a\\e[0m$versionid\\e[1;34m: \\a\\e[1;32m%s\\e[0m\\n\\n\\a\\e[0m" "${0##*/}" "$args" "DONE 🏁 " + printf "\\e]2; %s: %s \\007" "${0##*/} $args" "DONE 🏁 " else - printf "\\a\\e[0;32m%s %s \\a\\e[0m$versionid\\e[1;34m: \\a\\e[1;32m%s %s\\e[0m\\n\\n\\a\\e[0m" "${0##*/}" "$args" "(Exit Signal $rv)" "DONE 🏁" - printf "\033]2; %s: %s %s \007" "${0##*/} $args" "(Exit Signal $rv)" "DONE 🏁" + printf "\\a\\e[0;32m%s %s \\a\\e[0m$versionid\\e[1;34m: \\a\\e[1;32m%s %s\\e[0m\\n\\n\\a\\e[0m" "${0##*/}" "$args" "(Exit Signal $RV)" "DONE 🏁 " + printf "\033]2; %s: %s %s \\007" "${0##*/} $args" "(Exit Signal $RV)" "DONE 🏁 " fi printf "\\e[?25h\\e[0m" - rm -rf "$TAMPDIR" - set +Eeuo pipefail + unset set -Eeuo pipefail exit } @@ -625,6 +638,7 @@ declare -a ADM=("aria2" "axel" "curl" "lftp" "wget") # exit declare -a ATM=("wget" "$PREFIX/applets/tar" "tar") declare -a args="$@" + declare aptin="" ## apt string declare apton="" ## exception string declare commandif="" @@ -644,7 +658,7 @@ declare lcp="" declare opt="" declare rootdir="" declare wdir="$PWD/" -declare sti="" ## Generates pseudo random number. +declare STI="" ## Generates pseudo random number. declare STIME="" ## Generates pseudo random number. declare tm="" ## tar manager trap "_TRPERROR_ $LINENO $BASH_COMMAND $?" ERR @@ -662,17 +676,17 @@ if [[ "$commandif" = "" ]] ; then fi ## Generates pseudo random number to create uniq strings. if [[ -f /proc/sys/kernel/random/uuid ]] ; then - sti="$(cat /proc/sys/kernel/random/uuid)" - stim="${sti//-}" - STIME="${stim:0:3}" + STI="$(cat /proc/sys/kernel/random/uuid)" + STIM="${STI//-}" + STIME="${STIM:0:3}" else - sti="$(date +%s)" - STIME="$(echo "${sti:7:4}"|rev)" + STI="$(date +%s)" + STIME="$(echo "${STI:7:4}"|rev)" fi -oned="$(date +%s)" -oneda="${oned: -1}" -STIME="$oneda$STIME" -## Gets information with `getprop` about device. +ONES="$(date +%s)" +ONESA="${ONES: -1}" +STIME="$ONESA$STIME" +## Information from `getprop` about device: CPUABI="$(getprop ro.product.cpu.abi)" ## OPTIONS STATUS: UNDERGOING TESTING; Image file and compound options are still under development. USE WITH CAUTION! IMPORTANT NOTE: CURRENTLY ONLY curl AND wget ARE THOROUGHLY TESTED. All the download managers are NOT yet fully implemented. ## GRAMMAR: `setupTermuxArch.sh [HOW] [WHAT] [WHERE]`; all options are optional for network install. AVAILABLE OPTIONS: `setupTermuxArch.sh [HOW] [WHAT] [WHERE]` and `setupTermuxArch.sh [~/|./|/absolute/path/]systemimage.tar.gz [WHERE]`. diff --git a/scripts/files/working/archlinuxconfig.sh b/scripts/files/working/archlinuxconfig.sh index acc3e1944f..f67adb9773 100644 --- a/scripts/files/working/archlinuxconfig.sh +++ b/scripts/files/working/archlinuxconfig.sh @@ -131,7 +131,7 @@ addch() { _CFLHDR_ root/bin/ch "# Creates .hushlogin and .hushlogout file" cat >> root/bin/ch <<- EOM declare -a args -versionid="gen.v1.6 id374990413571" +versionid="v1.6 id2361" _TRPEXIT_() { # on exit printf "\\e[?25h\\e[0m" @@ -353,7 +353,7 @@ addkeys() { _CFLHDR_ root/bin/keys cat >> root/bin/keys <<- EOM declare -a keyrings -versionid="gen.v1.6 id374990413571" +versionid="v1.6 id2361" _TRPEXIT_() { # on exit printf "\\e[?25h\\e[0m" @@ -446,7 +446,7 @@ addpc() { _CFLHDR_ root/bin/pc "# Pacman install packages wrapper without system update." cat >> root/bin/pc <<- EOM declare -g args="\$@" -versionid="gen.v1.6 id374990413571" +versionid="v1.6 id2361" _TRPEXIT_() { # on exit printf "\\e[?25h\\e[0m" @@ -500,7 +500,7 @@ addpci() { _CFLHDR_ root/bin/pci "# Pacman install packages wrapper with system update." cat >> root/bin/pci <<- EOM declare args="\$@" -versionid="gen.v1.6 id374990413571" +versionid="v1.6 id2361" _TRPEXIT_() { # on exit printf "\\e[?25h\\e[0m" diff --git a/scripts/files/working/knownconfigurations.sh b/scripts/files/working/knownconfigurations.sh index a88d5cb259..409c9d1889 100644 --- a/scripts/files/working/knownconfigurations.sh +++ b/scripts/files/working/knownconfigurations.sh @@ -70,13 +70,9 @@ if [[ "$koe" ]]; then prootstmnt+="--kill-on-exit " fi prootstmnt+="--link2symlink -0 -r $INSTALLDIR " -if [[ ! -r /dev/shm ]] ; then - if [[ -r /dev/ashmem ]] ; then - prootstmnt+="-b /dev/ashmem:/dev/shm " - else - prootstmnt+="-b $INSTALLDIR/tmp:/dev/shm " - fi -fi +# if [[ ! -r /dev/shm ]] ; then +# prootstmnt+="-b $INSTALLDIR/tmp:/dev/shm " +# fi if [[ -f /proc/stat ]] ; then if [[ ! "$(head /proc/stat)" ]] ; then prootstmnt+="-b $INSTALLDIR/var/binds/fbindprocstat:/proc/stat " diff --git a/scripts/files/working/maintenanceroutines.sh b/scripts/files/working/maintenanceroutines.sh index cf800749bb..271caabee7 100644 --- a/scripts/files/working/maintenanceroutines.sh +++ b/scripts/files/working/maintenanceroutines.sh @@ -96,7 +96,7 @@ loadimage() { spaceinfo printf "\\n" wakelock - _PREPINSTALLDIR + _PREPINSTALLDIR_ copyimage ## "$@" & spinner "Copying" "…" _PRINTMD5CHECK_ md5check diff --git a/scripts/files/working/necessaryfunctions.sh b/scripts/files/working/necessaryfunctions.sh index 9c4de6452e..a4d9290960 100644 --- a/scripts/files/working/necessaryfunctions.sh +++ b/scripts/files/working/necessaryfunctions.sh @@ -91,7 +91,7 @@ lkernid mainblock() { namestartarch spaceinfo - _PREPINSTALLDIR + _PREPINSTALLDIR_ detectsystem wakeunlock _PRINTFOOTER_ @@ -104,7 +104,7 @@ makefinishsetup() { binfnstp=finishsetup.sh _CFLHDR_ root/bin/"$binfnstp" cat >> root/bin/"$binfnstp" <<- EOM -versionid="gen.v1.6 id374990413571" +versionid="v1.6 id2361" printf "\\n\\e[0;32m%s\\e[1;32m%s\\e[0;32m%s\\e[1;32m%s\\e[0;32m%s\\n\\n\\e[1;32m%s\\e[0;32m" "To generate locales in a preferred language, you can use " "Settings > Language & Keyboard > Language " "in Android. Then run " "${0##*/} r " "for a quick system refresh." "==> " locale-gen ||: printf "\\n\\e[1;34m:: \\e[1;37mRemoving redundant packages for Termux PRoot installation…\\n" @@ -149,7 +149,7 @@ versionid="gen.v1.6 id374990413571" makesetupbin() { _CFLHDR_ root/bin/setupbin.sh cat >> root/bin/setupbin.sh <<- EOM -versionid="gen.v1.6 id374990413571" +versionid="v1.6 id2361" unset LD_PRELOAD EOM echo "$prootstmnt /root/bin/finishsetup.sh ||:" >> root/bin/setupbin.sh @@ -158,9 +158,10 @@ versionid="gen.v1.6 id374990413571" makestartbin() { _CFLHDR_ "$startbin" + printf "%s\\n" "${FLHDRP[@]}" >> "$startbin" cat >> "$startbin" <<- EOM -versionid="gen.v1.6 id374990413571" - unset LD_PRELOAD +versionid="v1.6 id2361" +# unset LD_PRELOAD declare -g ar2ar="\${@:2}" declare -g ar3ar="\${@:3}" _PRINTUSAGE_() { @@ -254,7 +255,7 @@ _PREPROOTDIR() { mkdir -p usr/bin } -_PREPINSTALLDIR() { +_PREPINSTALLDIR_() { _PREPROOTDIR _SETLANGUAGE_ addREADME diff --git a/scripts/files/working/printoutstatements.sh b/scripts/files/working/printoutstatements.sh index bc8b644b72..823dfb216b 100644 --- a/scripts/files/working/printoutstatements.sh +++ b/scripts/files/working/printoutstatements.sh @@ -1,24 +1,6 @@ #!/bin/env bash -# Copyright 2017-2018 by SDRausty. All rights reserved. 🌎 🌍 🌏 🌐 πŸ—Ί -# Hosting https://sdrausty.github.io/TermuxArch courtesy https://pages.github.com -# https://sdrausty.github.io/TermuxArch/CONTRIBUTORS Thank you for your help. -# https://sdrausty.github.io/TermuxArch/README has information about this project. # Printout statement subroutines for `setupTermuxArch.sh`. ################################################################################ - -# FLHDR[0]="#!/bin/env bash" -# FLHDR[1]="# Copyright 2017-2018 by SDRausty. All rights reserved. 🌎 🌍 🌏 🌐 πŸ—Ί" -# FLHDR[2]="# Hosting sdrausty.github.io/TermuxArch courtesy https://pages.github.com." -# FLHDR[3]="# https://sdrausty.github.io/TermuxArch/README has info about this project." -# FLHDR[4]="# https://sdrausty.github.io/TermuxArch/CONTRIBUTORS Thank you for your help." -# FLHDR[5]="################################################################################" -# FLHDR[7]="IFS=$'\\n\\t'" -# FLHDR[8]="set -Eeuo pipefail" -# FLHDR[9]="shopt -s nullglob globstar" -# FLHDR[10]="versionid=\"v1.6 id9909\"" -# FLHDR[11]=" " -# TRPERROR[0]="_TRPERROR_() { # Run on script error." -FLHDR0[0]="#!/bin/env bash" FLHDR0[1]="# Copyright 2017-2018 by SDRausty. All rights reserved. 🌎 🌍 🌏 🌐 πŸ—Ί" FLHDR0[2]="# Hosting sdrausty.github.io/TermuxArch courtesy https://pages.github.com." FLHDR0[3]="# https://sdrausty.github.io/TermuxArch/README has info about this project." @@ -27,15 +9,18 @@ FLHDR1[5]="##################################################################### FLHDR1[7]="IFS=$'\\n\\t'" FLHDR1[8]="set -Eeuo pipefail" FLHDR1[9]="shopt -s nullglob globstar" -FLHDR1[10]="versionid=\"v1.6 id9909\"" -FLHDR1[11]=" " -TRPERROR[0]="_TRPERROR_() { # Run on script error." -TRPERROR[1]=" local rv=\"\$?\"" -TRPERROR[2]=" printf \"\\e[?25h\\n\\e[1;48;5;138m %s\\e[0m\\n\\n\" \"TermuxArch WARNING: Generated script signal \${rv:-unknown} near or at line number \${1:-unknown} by \`\${2:-command}\`!\"" +FLHDR1[10]="unset LD_PRELOAD" +FLHDR1[11]="versionid=\"v1.6 id9909\"" +FLHDR1[12]=" " +FLHDRP[0]="## BEGIN #######################################################################" +FLHDRP[1]="LD_PRELOAD=\"env /data/data/com.termux/files/usr/lib/libandroid-shmem.so\"" +TRPERROR[0]="_TRPERR_() { # Run on script error." +TRPERROR[1]=" local RV=\"\$?\"" +TRPERROR[2]=" printf \"\\e[?25h\\n\\e[1;48;5;138m %s\\e[0m\\n\\n\" \"TermuxArch WARNING: Generated script signal \${RV:-unknown} near or at line number \${1:-unknown} by \`\${2:-command}\`!\"" TRPERROR[3]=" exit 201" TRPERROR[4]="}" TRPERROR[5]=" " -TRPEXIT[0]="_TRPEXIT_() { # Run on exit." +TRPEXIT[0]="_TRPET_() { # Run on exit." TRPEXIT[1]=" local RV=\"\$?\" " TRPEXIT[2]=" printf \"\\a\\a\\a\\a\" " TRPEXIT[3]=" sleep 0.4 " @@ -51,40 +36,33 @@ TRPEXIT[12]=" set +Eeuo pipefail" TRPEXIT[13]=" exit" TRPEXIT[14]="}" TRPEXIT[15]=" " -TRPSIGNAL[0]="_TRPSIGNAL_() { # Run on signal." +TRPSIGNAL[0]="_TRPSIG_() { # Run on signal." TRPSIGNAL[1]=" printf \"\\e[?25h\\e[1;7;38;5;0mTermuxArch WARNING: Signal \$? received!\\e[0m\\n\"" TRPSIGNAL[2]=" rm -rf \"\$TAMPDIR\"" TRPSIGNAL[3]=" exit 211" TRPSIGNAL[4]="}" TRPSIGNAL[5]=" " -TRPQUIT[0]="_TRPQUIT_() { # Run on quit." +TRPQUIT[0]="_TRPQ_() { # Run on quit." TRPQUIT[1]=" printf \"\\e[?25h\\e[1;7;38;5;0mTermuxArch WARNING: Quit signal \$? received!\\e[0m\\n\"" TRPQUIT[2]=" rm -rf \"\$TAMPDIR\"" TRPQUIT[3]=" exit 221" TRPQUIT[4]="}" TRPQUIT[5]=" " -TRAPS[0]="trap \"_TRPERROR_ \$LINENO \$BASH_COMMAND \$?\" ERR" -# TRAPS[1]="trap \"_TRPEXIT_ \$LINENO \$BASH_COMMAND \$?\" EXIT" -TRAPS[1]="trap _TRPEXIT_ EXIT" -TRAPS[2]="trap _TRPSIGNAL_ HUP INT TERM" -TRAPS[3]="trap _TRPQUIT_ QUIT" +TRAPS[0]="trap \"_TRPERR_ \$LINENO \$BASH_COMMAND \$?\" ERR" +TRAPS[1]="trap _TRPET_ EXIT" +TRAPS[2]="trap _TRPSIG_ HUP INT TERM" +TRAPS[3]="trap _TRPQ_ QUIT" TRAPS[4]=" " _CFLHDR_() { # Create file headers, and interests comments. - if [[ -z "${2:-}" ]] ; then - printf "%s\\n" "${FLHDR0[@]}" > "$1" - else - for i in {0..3} ; do - if [[ $i = 0 ]] ; then - printf "%s\\n" "${FLHDR0[i]}" > "$1" - else - printf "%s\\n" "${FLHDR0[i]}" >> "$1" - fi - done - printf "%s\\n" "${@:2}" >> "$1" - printf "%s\\n" "${FLHDR0[4]}" >> "$1" - fi - printf "%s\\n" "${FLHDR1[@]}" >> "$1" + if [[ -z "${2:-}" ]] ; then + printf "%s\\n" "${FLHDR0[@]}" > "$1" + printf "%s\\n" "${FLHDR1[@]}" >> "$1" + else + printf "%s\\n" "${FLHDR0[@]}" > "$1" + printf "%s\\n" "${@:2}" >> "$1" + printf "%s\\n" "${FLHDR1[@]}" >> "$1" + fi printf "%s\\n" "${TRPERROR[@]}" >> "$1" printf "%s\\n" "${TRPEXIT[@]}" >> "$1" printf "%s\\n" "${TRPSIGNAL[@]}" >> "$1" diff --git a/scripts/files/working/setupTermuxArch.sh b/scripts/files/working/setupTermuxArch.sh index c710d32994..f05bd07cf7 100755 --- a/scripts/files/working/setupTermuxArch.sh +++ b/scripts/files/working/setupTermuxArch.sh @@ -8,7 +8,7 @@ IFS=$'\n\t' set -Eeuo pipefail shopt -s nullglob globstar unset LD_PRELOAD -versionid="gen.v1.6 id374990413571" +versionid="v1.6 id2361" ## INIT FUNCTIONS ############################################################## aria2cif() { @@ -141,6 +141,7 @@ dependbp() { depends() { # Checks for missing commands. printf "\\e[1;34mChecking prerequisites…\\n\\e[1;32m" + libandroidshmemif # # Checks if download manager is set. aria2cifdm axelifdm @@ -286,6 +287,15 @@ lftpifdm() { fi } +libandroidshmemif() { + dm=lftp + if [[ ! -f /data/data/com.termux/files/usr/lib/libandroid-shmem.so ]] ; then + aptin+="libandroid-shmem " + maptin+=(libandroid-shmem) + apton+=(libandroid-shmem) + fi +} + loadconf() { if [[ -f "${wdir}setupTermuxArchConfigs.sh" ]] ; then . "${wdir}setupTermuxArchConfigs.sh" @@ -558,36 +568,39 @@ _STANDARDIF_() { } _TRPERROR_() { # Run on script error. - local rv="$?" - printf "\\e[?25h\\n\\e[1;48;5;138m %s\\e[0m\\n\\n" "TermuxArch WARNING: Generated script signal ${rv:-unknown} near or at line number ${1:-unknown} by \`${2:-command}\`!" + local RV="$?" + printf "\\e[?25h\\n\\e[1;48;5;138m %s\\e[0m\\n\\n" "TermuxArch WARNING: Generated script signal ${RV:-unknown} near or at line number ${1:-unknown} by \`${2:-command}\`!" exit 201 } _TRPEXIT_() { # Run on exit. - local rv="$?" - printf "\\a\\a\\a\\a" + local RV="$?" + rm -rf "$TAMPDIR" + sleep 0.04 CDIRS=( bin boot dev etc home lib mnt opt proc root run sbin srv sys tmp usr var ) - CDIRSR="0" - for i in "${CDIRS[@]}" ; do - if [ "$(ls -A $INSTALLDIR/$i 2>/dev/null)" ] ; then - CDIRSR="1" + CDIRSV="0" + for i in "${CDIRS[@]}" + do + if $(ls -A $INSTALLDIR/$i 2>/dev/null) + then + CDIRSV="1" fi done - if [[ "$CDIRSR" = 0 ]] ; then + if "$CDIRSV" = 0 + then rmdir $TAMPDIR rmdir $INSTALLDIR fi - sleep 0.4 - if [[ "$rv" = 0 ]] ; then - printf "\\a\\e[0;32m%s %s \\a\\e[0m$versionid\\e[1;34m: \\a\\e[1;32m%s\\e[0m\\n\\n\\a\\e[0m" "${0##*/}" "$args" "DONE 🏁" - printf "\\e]2; %s: %s \007" "${0##*/} $args" "DONE 🏁" + if "$RV" = 0 + then + printf "\\a\\e[0;32m%s %s \\a\\e[0m$versionid\\e[1;34m: \\a\\e[1;32m%s\\e[0m\\n\\n\\a\\e[0m" "${0##*/}" "$args" "DONE 🏁 " + printf "\\e]2; %s: %s \\007" "${0##*/} $args" "DONE 🏁 " else - printf "\\a\\e[0;32m%s %s \\a\\e[0m$versionid\\e[1;34m: \\a\\e[1;32m%s %s\\e[0m\\n\\n\\a\\e[0m" "${0##*/}" "$args" "(Exit Signal $rv)" "DONE 🏁" - printf "\033]2; %s: %s %s \007" "${0##*/} $args" "(Exit Signal $rv)" "DONE 🏁" + printf "\\a\\e[0;32m%s %s \\a\\e[0m$versionid\\e[1;34m: \\a\\e[1;32m%s %s\\e[0m\\n\\n\\a\\e[0m" "${0##*/}" "$args" "(Exit Signal $RV)" "DONE 🏁 " + printf "\033]2; %s: %s %s \\007" "${0##*/} $args" "(Exit Signal $RV)" "DONE 🏁 " fi printf "\\e[?25h\\e[0m" - rm -rf "$TAMPDIR" - set +Eeuo pipefail + unset set -Eeuo pipefail exit } @@ -625,6 +638,7 @@ declare -a ADM=("aria2" "axel" "curl" "lftp" "wget") # exit declare -a ATM=("wget" "$PREFIX/applets/tar" "tar") declare -a args="$@" + declare aptin="" ## apt string declare apton="" ## exception string declare commandif="" @@ -644,7 +658,7 @@ declare lcp="" declare opt="" declare rootdir="" declare wdir="$PWD/" -declare sti="" ## Generates pseudo random number. +declare STI="" ## Generates pseudo random number. declare STIME="" ## Generates pseudo random number. declare tm="" ## tar manager trap "_TRPERROR_ $LINENO $BASH_COMMAND $?" ERR @@ -662,17 +676,17 @@ if [[ "$commandif" = "" ]] ; then fi ## Generates pseudo random number to create uniq strings. if [[ -f /proc/sys/kernel/random/uuid ]] ; then - sti="$(cat /proc/sys/kernel/random/uuid)" - stim="${sti//-}" - STIME="${stim:0:3}" + STI="$(cat /proc/sys/kernel/random/uuid)" + STIM="${STI//-}" + STIME="${STIM:0:3}" else - sti="$(date +%s)" - STIME="$(echo "${sti:7:4}"|rev)" + STI="$(date +%s)" + STIME="$(echo "${STI:7:4}"|rev)" fi -oned="$(date +%s)" -oneda="${oned: -1}" -STIME="$oneda$STIME" -## Gets information with `getprop` about device. +ONES="$(date +%s)" +ONESA="${ONES: -1}" +STIME="$ONESA$STIME" +## Information from `getprop` about device: CPUABI="$(getprop ro.product.cpu.abi)" ## OPTIONS STATUS: UNDERGOING TESTING; Image file and compound options are still under development. USE WITH CAUTION! IMPORTANT NOTE: CURRENTLY ONLY curl AND wget ARE THOROUGHLY TESTED. All the download managers are NOT yet fully implemented. ## GRAMMAR: `setupTermuxArch.sh [HOW] [WHAT] [WHERE]`; all options are optional for network install. AVAILABLE OPTIONS: `setupTermuxArch.sh [HOW] [WHAT] [WHERE]` and `setupTermuxArch.sh [~/|./|/absolute/path/]systemimage.tar.gz [WHERE]`. diff --git a/scripts/files/working/t b/scripts/frags/aarray.sh similarity index 100% rename from scripts/files/working/t rename to scripts/frags/aarray.sh diff --git a/setupTermuxArch.sh b/setupTermuxArch.sh index cc3676edb2..c82649bfd4 100755 --- a/setupTermuxArch.sh +++ b/setupTermuxArch.sh @@ -8,7 +8,7 @@ IFS=$'\n\t' set -Eeuo pipefail shopt -s nullglob globstar unset LD_PRELOAD -versionid="v1.6 id7431" +versionid="v1.6 id2361" ## INIT FUNCTIONS ############################################################## aria2cif() { @@ -141,6 +141,7 @@ dependbp() { depends() { # Checks for missing commands. printf "\\e[1;34mChecking prerequisites…\\n\\e[1;32m" + libandroidshmemif # # Checks if download manager is set. aria2cifdm axelifdm @@ -286,6 +287,15 @@ lftpifdm() { fi } +libandroidshmemif() { + dm=lftp + if [[ ! -f /data/data/com.termux/files/usr/lib/libandroid-shmem.so ]] ; then + aptin+="libandroid-shmem " + maptin+=(libandroid-shmem) + apton+=(libandroid-shmem) + fi +} + loadconf() { if [[ -f "${wdir}setupTermuxArchConfigs.sh" ]] ; then . "${wdir}setupTermuxArchConfigs.sh" @@ -558,36 +568,39 @@ _STANDARDIF_() { } _TRPERROR_() { # Run on script error. - local rv="$?" - printf "\\e[?25h\\n\\e[1;48;5;138m %s\\e[0m\\n\\n" "TermuxArch WARNING: Generated script signal ${rv:-unknown} near or at line number ${1:-unknown} by \`${2:-command}\`!" + local RV="$?" + printf "\\e[?25h\\n\\e[1;48;5;138m %s\\e[0m\\n\\n" "TermuxArch WARNING: Generated script signal ${RV:-unknown} near or at line number ${1:-unknown} by \`${2:-command}\`!" exit 201 } _TRPEXIT_() { # Run on exit. - local rv="$?" - printf "\\a\\a\\a\\a" + local RV="$?" + rm -rf "$TAMPDIR" + sleep 0.04 CDIRS=( bin boot dev etc home lib mnt opt proc root run sbin srv sys tmp usr var ) - CDIRSR="0" - for i in "${CDIRS[@]}" ; do - if [ "$(ls -A $INSTALLDIR/$i 2>/dev/null)" ] ; then - CDIRSR="1" + CDIRSV="0" + for i in "${CDIRS[@]}" + do + if $(ls -A $INSTALLDIR/$i 2>/dev/null) + then + CDIRSV="1" fi done - if [[ "$CDIRSR" = 0 ]] ; then + if "$CDIRSV" = 0 + then rmdir $TAMPDIR rmdir $INSTALLDIR fi - sleep 0.4 - if [[ "$rv" = 0 ]] ; then - printf "\\a\\e[0;32m%s %s \\a\\e[0m$versionid\\e[1;34m: \\a\\e[1;32m%s\\e[0m\\n\\n\\a\\e[0m" "${0##*/}" "$args" "DONE 🏁" - printf "\\e]2; %s: %s \007" "${0##*/} $args" "DONE 🏁" + if "$RV" = 0 + then + printf "\\a\\e[0;32m%s %s \\a\\e[0m$versionid\\e[1;34m: \\a\\e[1;32m%s\\e[0m\\n\\n\\a\\e[0m" "${0##*/}" "$args" "DONE 🏁 " + printf "\\e]2; %s: %s \\007" "${0##*/} $args" "DONE 🏁 " else - printf "\\a\\e[0;32m%s %s \\a\\e[0m$versionid\\e[1;34m: \\a\\e[1;32m%s %s\\e[0m\\n\\n\\a\\e[0m" "${0##*/}" "$args" "(Exit Signal $rv)" "DONE 🏁" - printf "\033]2; %s: %s %s \007" "${0##*/} $args" "(Exit Signal $rv)" "DONE 🏁" + printf "\\a\\e[0;32m%s %s \\a\\e[0m$versionid\\e[1;34m: \\a\\e[1;32m%s %s\\e[0m\\n\\n\\a\\e[0m" "${0##*/}" "$args" "(Exit Signal $RV)" "DONE 🏁 " + printf "\033]2; %s: %s %s \\007" "${0##*/} $args" "(Exit Signal $RV)" "DONE 🏁 " fi printf "\\e[?25h\\e[0m" - rm -rf "$TAMPDIR" - set +Eeuo pipefail + unset set -Eeuo pipefail exit } @@ -625,6 +638,7 @@ declare -a ADM=("aria2" "axel" "curl" "lftp" "wget") # exit declare -a ATM=("wget" "$PREFIX/applets/tar" "tar") declare -a args="$@" + declare aptin="" ## apt string declare apton="" ## exception string declare commandif="" @@ -644,7 +658,7 @@ declare lcp="" declare opt="" declare rootdir="" declare wdir="$PWD/" -declare sti="" ## Generates pseudo random number. +declare STI="" ## Generates pseudo random number. declare STIME="" ## Generates pseudo random number. declare tm="" ## tar manager trap "_TRPERROR_ $LINENO $BASH_COMMAND $?" ERR @@ -662,17 +676,17 @@ if [[ "$commandif" = "" ]] ; then fi ## Generates pseudo random number to create uniq strings. if [[ -f /proc/sys/kernel/random/uuid ]] ; then - sti="$(cat /proc/sys/kernel/random/uuid)" - stim="${sti//-}" - STIME="${stim:0:3}" + STI="$(cat /proc/sys/kernel/random/uuid)" + STIM="${STI//-}" + STIME="${STIM:0:3}" else - sti="$(date +%s)" - STIME="$(echo "${sti:7:4}"|rev)" + STI="$(date +%s)" + STIME="$(echo "${STI:7:4}"|rev)" fi -oned="$(date +%s)" -oneda="${oned: -1}" -STIME="$oneda$STIME" -## Gets information with `getprop` about device. +ONES="$(date +%s)" +ONESA="${ONES: -1}" +STIME="$ONESA$STIME" +## Information from `getprop` about device: CPUABI="$(getprop ro.product.cpu.abi)" ## OPTIONS STATUS: UNDERGOING TESTING; Image file and compound options are still under development. USE WITH CAUTION! IMPORTANT NOTE: CURRENTLY ONLY curl AND wget ARE THOROUGHLY TESTED. All the download managers are NOT yet fully implemented. ## GRAMMAR: `setupTermuxArch.sh [HOW] [WHAT] [WHERE]`; all options are optional for network install. AVAILABLE OPTIONS: `setupTermuxArch.sh [HOW] [WHAT] [WHERE]` and `setupTermuxArch.sh [~/|./|/absolute/path/]systemimage.tar.gz [WHERE]`. diff --git a/setupTermuxArch.sha512 b/setupTermuxArch.sha512 index 71a8d21418..a742bf015b 100644 --- a/setupTermuxArch.sha512 +++ b/setupTermuxArch.sha512 @@ -1 +1 @@ -f1c9b23176a999fef3fb444746bfa58e4d0fe11a916cef89572dca325648c2b8f271376bcc96c9a1598b57b2f4d28f2a4ca22ec850ebe1336c41e02a972c72b5 setupTermuxArch.tar.gz +2b340a2c987d1edc190df13056bcbceafa8776360d16c451689b2793bdb210689b7737b7308fafedea7f43920d8da4549b768077cf4bc33eea544e7e9a45e557 setupTermuxArch.tar.gz diff --git a/setupTermuxArch.tar.gz b/setupTermuxArch.tar.gz index 06a580e7769ab28acfe921e630440f4ca531d75f..0d11a9247be777c4d6d8d93a8f661beab7a69188 100644 GIT binary patch literal 29377 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 M07g~m7XTgt03BjUlmGw# literal 29703 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 a@or(id+wgQ=kEEH&wl_HQTs#yDgpqXne)~F