envkernel.sh: various improvements (!1883)

* Change prompt
* Add deactivate
* Use /tmp/envkernel for run-scripts
This commit is contained in:
Iskren Chernev 2020-03-01 01:20:57 +02:00 committed by Oliver Smith
parent b18ec9a693
commit 41a7089e21
No known key found for this signature in database
GPG Key ID: 5AE7F5513E0885CB
1 changed files with 37 additions and 4 deletions

View File

@ -166,8 +166,8 @@ initialize_chroot() {
sudo mkdir -p "$chroot/mnt/linux"
# Mark as initialized
mkdir -p "$chroot/tmp/envkernel"
touch "$flag"
"$pmbootstrap" -q chroot -- su pmos -c \
"mkdir /tmp/envkernel; touch /tmp/envkernel/$(basename "$flag")"
}
@ -232,7 +232,7 @@ set_alias_make() {
cmd="$cmd if [ -e \"\$_script\" ]; then"
cmd="$cmd echo \"Running \$_script in the chroot native /mnt/linux/\";"
cmd="$cmd pmbootstrap -q chroot --user -- sh -c \"cd /mnt/linux;"
cmd="$cmd srcdir=/mnt/linux/ builddir=/mnt/linux/.output"
cmd="$cmd srcdir=/mnt/linux builddir=/mnt/linux/.output tmpdir=/tmp/envkernel"
cmd="$cmd ./\"\$_script\"\";"
cmd="$cmd else"
cmd="$cmd echo \"Error: \$_script not found.\";"
@ -264,6 +264,36 @@ cross_compiler_version() {
}
update_prompt() {
if [ -n "$ZSH_VERSION" ]; then
# assume Zsh
export _OLD_PROMPT="$PROMPT"
export PROMPT="[envkernel] $PROMPT"
elif [ -n "$BASH_VERSION" ]; then
export _OLD_PS1="$PS1"
export PS1="[envkernel] $PS1"
fi
}
set_deactivate() {
cmd="_deactivate() {"
cmd="$cmd unalias make kernelroot pmbootstrap pmbroot run-script deactivate;"
cmd="$cmd if [ -n \"\$_OLD_PS1\" ]; then"
cmd="$cmd export PS1=\"\$_OLD_PS1\";"
cmd="$cmd unset _OLD_PS1;"
cmd="$cmd elif [ -n \"\$_OLD_PROMPT\" ]; then"
cmd="$cmd export PROMPT=\"\$_OLD_PROMPT\";"
cmd="$cmd unset _OLD_PROMPT;"
cmd="$cmd fi"
cmd="$cmd };"
cmd="$cmd _deactivate \"\$@\""
# shellcheck disable=SC2139
alias deactivate="$cmd"
unset cmd
}
print_usage() {
# shellcheck disable=SC2039
if [ -n "${BASH_SOURCE[0]}" ]; then
@ -328,7 +358,9 @@ main() {
&& mount_kernel_source \
&& create_output_folder \
&& set_alias_make \
&& set_alias_pmbroot_kernelroot; then
&& set_alias_pmbroot_kernelroot \
&& update_prompt \
&& set_deactivate; then
# Success
echo "pmbootstrap envkernel.sh activated successfully."
@ -338,6 +370,7 @@ main() {
echo " * cross compile: $(cross_compiler_version)"
echo " * aliases: make, kernelroot, pmbootstrap, pmbroot," \
"run-script (see 'type make' etc.)"
echo " * run 'deactivate' to revert all env changes"
else
# Failure
echo "See also: <https://postmarketos.org/troubleshooting>"