Cleanup global scope

This commit is contained in:
2023-02-14 10:45:11 -05:00
parent 498b491dc6
commit bff5d058b0

View File

@@ -46,9 +46,9 @@ printHelp() {
--help,-h
EXAMPLES
./openwrtbuilder -p r4s -r snapshot --debug
./openwrtbuilder -p ax6000_stock -r 23.03.3 --source --debug
./openwrtbuilder -p rpi4 -r 23.03.3 --flash /dev/sdX
./openwrtbuilder -p r4s -r snapshot
./openwrtbuilder -p ax6000_stock -r 22.03.3 --source --debug
./openwrtbuilder -p rpi4 -r 22.03.3 --flash /dev/sdX
./openwrtbuilder -p linksys -r snapshot --ssh-upgrade root@192.168.1.1
EOF
}
@@ -59,7 +59,7 @@ init() {
declare -g ID RPM_MGR SCRIPTDIR DL_TOOL
debug || echo "To enable debugging output, use --debug or -d"
(( DEBUG )) || echo "To enable debugging output, use --debug or -d"
# Save the script directory
# https://stackoverflow.com/a/4774063
@@ -140,7 +140,7 @@ init() {
elif hash curl &>/dev/null; then
DL_TOOL="curl"
else
echo "Downloading the Image Builder requires axel or curl!"
echo "Downloading the Image Builder requires axel or curl"
return 1
fi
}
@@ -359,6 +359,8 @@ installDependencies() {
getImageBuilder() {
debug "${FUNCNAME[0]}"
declare url="$1"
if [[ -f "$IB_ARCHIVE" ]]; then
if askOK "$IB_ARCHIVE exists. Re-download?"; then
rm -f "$IB_ARCHIVE"
@@ -368,8 +370,8 @@ getImageBuilder() {
fi
echo "Downloading Image Builder archive using $DL_TOOL"
debug "$DL_TOOL -o $IB_ARCHIVE $IB_URL"
"$DL_TOOL" -o "$IB_ARCHIVE" "$IB_URL"
debug "$DL_TOOL -o $IB_ARCHIVE $url"
"$DL_TOOL" -o "$IB_ARCHIVE" "$url"
}
@@ -384,8 +386,7 @@ getImageBuilderChecksum() {
fi
fi
debug "$DL_TOOL -o $IB_SHA256_FILE $IB_SHA256_URL"
"$DL_TOOL" -o "$IB_SHA256_FILE" "$IB_SHA256_URL"
execute "$DL_TOOL -o $IB_SHA256_FILE $IB_SHA256_URL"
}
@@ -404,37 +405,33 @@ addRepos() {
sshBackup() {
debug "${FUNCNAME[0]}"
local _date _hostname _backup_fname
declare date hostname backup_fname
[[ -d "$FILESDIR" ]] || mkdir -p "$FILESDIR"
printf -v _date '%(%Y-%m-%d-%H-%M-%S)T'
_hostname=$(ssh -qt "$SSH_BACKUP_PATH" echo -n \$HOSTNAME)
_backup_fname="backup-$_hostname-$_date.tar.gz"
printf -v date '%(%Y-%m-%d-%H-%M-%S)T'
hostname=$(ssh -qt "$SSH_BACKUP_PATH" echo -n \$HOSTNAME)
backup_fname="backup-$hostname-$date.tar.gz"
# Make backup archive on remote
debug "ssh -t $SSH_BACKUP_PATH sysupgrade -b /tmp/$_backup_fname"
if ! ssh -t "$SSH_BACKUP_PATH" "sysupgrade -b /tmp/$_backup_fname"; then
if ! execute "ssh -t $SSH_BACKUP_PATH sysupgrade -b /tmp/$backup_fname"; then
echo "SSH backup failed"
exit 1
fi
# Move backup archive locally
debug "rsync -avz --remove-source-files $SSH_BACKUP_PATH:/tmp/$_backup_fname $BUILDDIR/"
if ! rsync -avz --remove-source-files \
"$SSH_BACKUP_PATH":"/tmp/$_backup_fname" "$BUILDDIR/"; then
if ! execute "rsync -avz --remove-source-files $SSH_BACKUP_PATH:/tmp/$backup_fname $BUILDDIR/"; then
echo "Could not copy SSH backup"
exit 1
fi
# Extract backup archive
debug "tar -C $FILESDIR -xzf $BUILDDIR/$_backup_fname"
if ! tar -C "$FILESDIR" -xzf "$BUILDDIR/$_backup_fname"; then
if ! execute "tar -C $FILESDIR -xzf $BUILDDIR/$backup_fname"; then
echo "Could not extract SSH backup"
exit 1
fi
rm "$BUILDDIR/$_backup_fname"
execute "rm $BUILDDIR/$backup_fname"
}
@@ -452,8 +449,8 @@ makeImages() {
make image \
BIN_DIR="$BINDIR" \
PROFILE="${P_ARR[profile]}" \
PACKAGES="${P_ARR[packages]:+"${P_ARR[packages]}"}" \
PROFILE="$PROFILE" \
PACKAGES="$PACKAGES" \
FILES="${FILESDIR}" \
--directory="$BUILDDIR" \
--jobs="$(nproc)" \
@@ -526,7 +523,7 @@ sshUpgrade() {
echo "Copying '$img_gz' to $ssh_path/tmp/$img_fname"
debug "scp $img_gz $ssh_path:/tmp/$img_fname"
if ! scp "$img_gz" "$ssh_path":"/tmp/$img_fname"; then
if ! scp "$img_gz" "$ssh_path:/tmp/$img_fname"; then
echo "Could not copy $img_gz to $ssh_path:/tmp/$img_fname"
return 1
fi
@@ -543,12 +540,11 @@ sshUpgrade() {
fromSource() {
debug "${FUNCNAME[0]}"
declare src_dir="$BUILDROOT/src/openwrt"
declare src_url="https://github.com/openwrt/openwrt.git"
declare pkg kopt opt commit gitworktreedir seed_file
declare -a make_opts config_opts
declare src_dir="$BUILDROOT/src/openwrt"
echo "Building from source is under development"
# Update source code
@@ -602,7 +598,7 @@ fromSource() {
config_opts+=("CONFIG_BINARY_FOLDER=\"$BINDIR\"")
# Add custom packages
for pkg in ${P_ARR[packages]}; do
for pkg in $PACKAGES; do
if [[ $pkg == -* ]]; then
config_opts+=("CONFIG_PACKAGE_${pkg#-}=n") # remove package
else
@@ -629,8 +625,8 @@ fromSource() {
# Only compile selected target image
sed -i '/CONFIG_TARGET_DEVICE_/d' "$seed_file"
config_opts+=("CONFIG_TARGET_MULTI_PROFILE=n")
config_opts+=("CONFIG_TARGET_PROFILE=DEVICE_${P_ARR[profile]}")
config_opts+=("CONFIG_TARGET_${P_ARR[target]//\//_}_DEVICE_${P_ARR[profile]}=y")
config_opts+=("CONFIG_TARGET_PROFILE=DEVICE_$PROFILE")
config_opts+=("CONFIG_TARGET_${TARGET//\//_}_DEVICE_$PROFILE=y")
config_opts+=("CONFIG_SDK=n")
config_opts+=("CONFIG_SDK_LLVM_BPF=n")
config_opts+=("CONFIG_IB=n")
@@ -665,7 +661,7 @@ fromSource() {
popd &>/dev/null || return 1
# Provide symlinks to images in root of BINDIR (to match Image Builder)
for image in "$BINDIR/targets/${P_ARR[target]}/"*.{img,img.gz,ubi}; do
for image in "$BINDIR/targets/${TARGET}/"*.{img,img.gz,ubi}; do
ln -fs "$image" "$BINDIR/${image##*/}"
done
@@ -707,6 +703,11 @@ load() {
# shellcheck disable=SC1090
[[ -f $source_file ]] && source "$source_file"
}
execute() {
declare cmd="$*"
debug "$cmd" || cmd+=" &>/dev/null"
eval "${cmd[*]}"
}
main() {
@@ -714,16 +715,20 @@ main() {
init
# shellcheck source=./profiles
load "$SCRIPTDIR/profiles"
readInput "$@"
# Fallback to SCRIPTDIR if BUILDROOT has not been set
declare -g BUILDROOT="${BUILDROOT:=$SCRIPTDIR}"
[[ $BUILDROOT == "/" ]] && echo "Invalid --buildroot" && exit 1
declare -g FILESDIR="${FILESDIR:=$BUILDROOT/src/files}"
# This could be dangerous
if [[ $BUILDROOT == "/" ]]; then
echo "Invalid --buildroot"
exit 1
fi
for dir in "$BUILDROOT/src" "$BUILDROOT/bin"; do
[[ -d "$dir" ]] || mkdir -p "$dir"
done
@@ -754,23 +759,35 @@ main() {
declare -g BUILDDIR="$BUILDROOT/src/$profile/$RELEASE"
declare -g BINDIR="$BUILDROOT/bin/$profile/$RELEASE"
declare -g FILESYSTEM="${P_ARR[filesystem]:="squashfs"}"
declare -g TARGET="${P_ARR[target]}"
declare -g PROFILE="${P_ARR[profile]}"
declare -g PACKAGES="${P_ARR[packages]:-}"
if (( RESET )); then
askOk "Remove $BUILDDIR and $BINDIR?" || exit $?
debug "rm -rf $BUILDDIR $BINDIR"
rm -rf "$BUILDDIR" "$BINDIR"
fi
[[ -d $BUILDDIR ]] || mkdir -p "$BUILDDIR"
if [[ "$RELEASE" == "snapshot" ]]; then
declare url_prefix="https://downloads.openwrt.org/snapshots/targets/${P_ARR[target]}"
declare url_filename="openwrt-imagebuilder-${P_ARR[target]//\//-}.Linux-x86_64.tar.xz"
declare img_fname="openwrt-${P_ARR[target]//\//-}-${P_ARR[profile]}-$FILESYSTEM"
declare url_prefix="https://downloads.openwrt.org/snapshots/targets/$TARGET"
declare url_filename="openwrt-imagebuilder-${TARGET//\//-}.Linux-x86_64.tar.xz"
declare img_fname="openwrt-${TARGET//\//-}-$PROFILE-$FILESYSTEM"
else
declare url_prefix="https://downloads.openwrt.org/releases/$RELEASE/targets/${P_ARR[target]}"
declare url_filename="openwrt-imagebuilder-$RELEASE-${P_ARR[target]//\//-}.Linux-x86_64.tar.xz"
declare img_fname="openwrt-$RELEASE-${P_ARR[target]//\//-}-${P_ARR[profile]}-$FILESYSTEM"
declare url_prefix="https://downloads.openwrt.org/releases/$RELEASE/targets/$TARGET"
declare url_filename="openwrt-imagebuilder-$RELEASE-${TARGET//\//-}.Linux-x86_64.tar.xz"
declare img_fname="openwrt-$RELEASE-${TARGET//\//-}-$PROFILE-$FILESYSTEM"
fi
declare ib_url="$url_prefix/$url_filename"
if (( FROM_SOURCE )); then
declare -g SYSUPGRADEIMGGZ="$BINDIR/targets/$img_fname-sysupgrade.img.gz"
declare -g SEED_URL="$url_prefix/config.buildinfo"
else
declare -g SYSUPGRADEIMGGZ="$BUILDDIR/$img_fname-sysupgrade.img.gz"
declare -g IB_URL="$url_prefix/$url_filename"
declare -g IB_ARCHIVE="$BUILDDIR/$url_filename"
declare -g IB_SHA256_URL="$url_prefix/sha256sums"
declare -g IB_SHA256_FILE="$IB_ARCHIVE.sha256sums"
@@ -782,30 +799,23 @@ main() {
for x in "${!P_ARR[@]}"; do printf "%s=%s\n" "$x" "${P_ARR[$x]}"; done
echo "Build settings:"
cat <<- EOF
ALIAS (\$profile, \$P_ARR)=$profile, $P_ARR
ALIAS (\$profile, \$P_ARR -- should match)=$profile, $P_ARR
BUILDROOT=$BUILDROOT
BUILDDIR=$BUILDDIR
BINDIR=$BINDIR
TARGET=${P_ARR[target]}
PROFILE=${P_ARR[profile]}
TARGET=$TARGET
PROFILE=$PROFILE
RELEASE=$RELEASE
FILESYSTEM=$FILESYSTEM
SYSUPGRADEIMGGZ=$SYSUPGRADEIMGGZ
ib_url=$ib_url
EOF
fi
if (( RESET )); then
askOk "Remove $BUILDDIR and $BINDIR?" || exit $?
debug "rm -rf $BUILDDIR $BINDIR"
rm -rf "$BUILDDIR" "$BINDIR"
fi
[[ -d $BUILDDIR ]] || mkdir -p "$BUILDDIR"
if (( FROM_SOURCE )); then
fromSource || return $?
else
getImageBuilder &&
getImageBuilder "$ib_url" &&
getImageBuilderChecksum &&
verify "$IB_ARCHIVE" "$IB_SHA256_FILE" &&
extract "$IB_ARCHIVE" "$BUILDDIR" || return $?