forked from Mirror/pmbootstrap
Fall back to pmbootstrap from PATH (MR 2229)
This makes it possible to use envkernel.sh without sourcing it from a full source tree as long as "pmbootstrap" is available in PATH (e.g. from a distro package). In this case the "pmbroot" and "pmbootstrap" aliases won't be set, and neither the pmbootstrap_dir environment variable.
This commit is contained in:
parent
f1311424d1
commit
dc653d9c9f
1 changed files with 53 additions and 27 deletions
|
@ -40,37 +40,51 @@ clean_kernel_src_dir() {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
export_envkernel_sh() {
|
||||||
|
# Get script location
|
||||||
|
# See also: <https://stackoverflow.com/a/29835459>
|
||||||
|
# shellcheck disable=SC3054
|
||||||
|
if [ -n "${BASH_SOURCE[0]}" ]; then
|
||||||
|
envkernel_sh="$(realpath "$BASH_SOURCE")"
|
||||||
|
else
|
||||||
|
envkernel_sh="$1"
|
||||||
|
fi
|
||||||
|
export envkernel_sh
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
export_pmbootstrap_dir() {
|
export_pmbootstrap_dir() {
|
||||||
if [ -n "$pmbootstrap_dir" ]; then
|
if [ -n "$pmbootstrap_dir" ]; then
|
||||||
return 0;
|
return 0;
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Get pmbootstrap dir based on this script's location
|
# Get pmbootstrap dir based on this script's location, if it's
|
||||||
# See also: <https://stackoverflow.com/a/29835459>
|
# in a pmbootstrap source tree
|
||||||
# shellcheck disable=SC3054
|
pmbootstrap_dir="$(realpath "$(dirname "${envkernel_sh}")/..")"
|
||||||
if [ -n "${BASH_SOURCE[0]}" ]; then
|
if [ -e "$pmbootstrap_dir/pmbootstrap.py" ]; then
|
||||||
script_dir="$(dirname "$(realpath "$BASH_SOURCE")")"
|
export pmbootstrap_dir
|
||||||
else
|
else
|
||||||
script_dir="$(dirname "$1")"
|
unset pmbootstrap_dir
|
||||||
fi
|
|
||||||
|
|
||||||
# Fail with debug information
|
|
||||||
# shellcheck disable=SC2155
|
|
||||||
export pmbootstrap_dir="$(realpath "$script_dir/..")"
|
|
||||||
if ! [ -e "$pmbootstrap_dir/pmbootstrap.py" ]; then
|
|
||||||
echo "ERROR: Failed to get the script's location with your shell."
|
|
||||||
echo "Please adjust export_pmbootstrap_dir in envkernel.sh. Debug info:"
|
|
||||||
echo "\$1: $1"
|
|
||||||
echo "\$pmbootstrap_dir: $pmbootstrap_dir"
|
|
||||||
return 1
|
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
set_alias_pmbootstrap() {
|
set_alias_pmbootstrap() {
|
||||||
|
if [ -n "$pmbootstrap_dir" ] \
|
||||||
|
&& [ -e "$pmbootstrap_dir/pmbootstrap.py" ]; then
|
||||||
pmbootstrap="$pmbootstrap_dir"/pmbootstrap.py
|
pmbootstrap="$pmbootstrap_dir"/pmbootstrap.py
|
||||||
# shellcheck disable=SC2139
|
# shellcheck disable=SC2139
|
||||||
alias pmbootstrap="\"$pmbootstrap\""
|
alias pmbootstrap="\"$pmbootstrap\""
|
||||||
|
elif [ -n "$(command -v pmbootstrap)" ]; then
|
||||||
|
pmbootstrap="$(command -v pmbootstrap)"
|
||||||
|
else
|
||||||
|
echo "ERROR: pmbootstrap not found!"
|
||||||
|
echo "If you're loading envkernel.sh from a pmbootstrap source tree,"
|
||||||
|
echo "please check export_pmbootstrap_dir in envkernel.sh. Otherwise "
|
||||||
|
echo "please make sure 'pmbootstrap' is on your PATH."
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
|
||||||
if [ -e "${XDG_CONFIG_HOME:-$HOME/.config}"/pmbootstrap.cfg ]; then
|
if [ -e "${XDG_CONFIG_HOME:-$HOME/.config}"/pmbootstrap.cfg ]; then
|
||||||
"$pmbootstrap" work_migrate
|
"$pmbootstrap" work_migrate
|
||||||
else
|
else
|
||||||
|
@ -259,8 +273,10 @@ set_alias_make() {
|
||||||
|
|
||||||
|
|
||||||
set_alias_pmbroot_kernelroot() {
|
set_alias_pmbroot_kernelroot() {
|
||||||
|
if [ -n "$pmbootstrap_dir" ]; then
|
||||||
# shellcheck disable=SC2139
|
# shellcheck disable=SC2139
|
||||||
alias pmbroot="cd '$pmbootstrap_dir'"
|
alias pmbroot="cd '$pmbootstrap_dir'"
|
||||||
|
fi
|
||||||
# shellcheck disable=SC2139
|
# shellcheck disable=SC2139
|
||||||
alias kernelroot="cd '$PWD'"
|
alias kernelroot="cd '$PWD'"
|
||||||
}
|
}
|
||||||
|
@ -292,8 +308,12 @@ update_prompt() {
|
||||||
set_deactivate() {
|
set_deactivate() {
|
||||||
cmd="_deactivate() {"
|
cmd="_deactivate() {"
|
||||||
cmd="$cmd unset POSTMARKETOS_ENVKERNEL_ENABLED;"
|
cmd="$cmd unset POSTMARKETOS_ENVKERNEL_ENABLED;"
|
||||||
cmd="$cmd unalias make kernelroot pmbootstrap pmbroot run-script;"
|
if [ -n "$pmbootstrap_dir" ]; then
|
||||||
|
cmd="$cmd unalias pmbootstrap pmbroot;"
|
||||||
|
fi
|
||||||
|
cmd="$cmd unalias make kernelroot run-script;"
|
||||||
cmd="$cmd unalias deactivate reactivate;"
|
cmd="$cmd unalias deactivate reactivate;"
|
||||||
|
cmd="$cmd unset pmbootstrap pmbootstrap_dir;"
|
||||||
cmd="$cmd if [ -n \"\$_OLD_PS1\" ]; then"
|
cmd="$cmd if [ -n \"\$_OLD_PS1\" ]; then"
|
||||||
cmd="$cmd export PS1=\"\$_OLD_PS1\";"
|
cmd="$cmd export PS1=\"\$_OLD_PS1\";"
|
||||||
cmd="$cmd unset _OLD_PS1;"
|
cmd="$cmd unset _OLD_PS1;"
|
||||||
|
@ -310,7 +330,7 @@ set_deactivate() {
|
||||||
|
|
||||||
set_reactivate() {
|
set_reactivate() {
|
||||||
# shellcheck disable=SC2139
|
# shellcheck disable=SC2139
|
||||||
alias reactivate="deactivate; pushd '$PWD'; . '$pmbootstrap_dir'/helpers/envkernel.sh; popd"
|
alias reactivate="deactivate; pushd '$PWD'; . '$envkernel_sh'; popd"
|
||||||
}
|
}
|
||||||
|
|
||||||
check_and_deactivate() {
|
check_and_deactivate() {
|
||||||
|
@ -375,7 +395,8 @@ main() {
|
||||||
if check_and_deactivate \
|
if check_and_deactivate \
|
||||||
&& check_kernel_folder \
|
&& check_kernel_folder \
|
||||||
&& clean_kernel_src_dir \
|
&& clean_kernel_src_dir \
|
||||||
&& export_pmbootstrap_dir "$1" \
|
&& export_envkernel_sh "$1" \
|
||||||
|
&& export_pmbootstrap_dir \
|
||||||
&& set_alias_pmbootstrap \
|
&& set_alias_pmbootstrap \
|
||||||
&& export_chroot_device_deviceinfo \
|
&& export_chroot_device_deviceinfo \
|
||||||
&& check_device \
|
&& check_device \
|
||||||
|
@ -397,8 +418,13 @@ main() {
|
||||||
echo " * output folder: $PWD/.output"
|
echo " * output folder: $PWD/.output"
|
||||||
echo " * architecture: $arch ($device is $deviceinfo_arch)"
|
echo " * architecture: $arch ($device is $deviceinfo_arch)"
|
||||||
echo " * cross compile: $(cross_compiler_version)"
|
echo " * cross compile: $(cross_compiler_version)"
|
||||||
|
if [ -n "$pmbootstrap_dir" ]; then
|
||||||
echo " * aliases: make, kernelroot, pmbootstrap, pmbroot," \
|
echo " * aliases: make, kernelroot, pmbootstrap, pmbroot," \
|
||||||
"run-script (see 'type make' etc.)"
|
"run-script (see 'type make' etc.)"
|
||||||
|
else
|
||||||
|
echo " * aliases: make, kernelroot, run-script"\
|
||||||
|
"(see 'type make' etc.)"
|
||||||
|
fi
|
||||||
echo " * run 'deactivate' to revert all env changes"
|
echo " * run 'deactivate' to revert all env changes"
|
||||||
else
|
else
|
||||||
# Failure
|
# Failure
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue