More multi-profile work

This commit is contained in:
2023-01-12 16:37:53 -05:00
parent 3ee6de5fb1
commit 3683296110

View File

@@ -1,8 +1,8 @@
#!/usr/bin/env bash
#
# Copyright 2022 Bryan C. Roessler
# Copyright 2022-23 Bryan C. Roessler
#
# Build and flash/upgrade OpenWRT devices
# Build and deploy OpenWRT images
#
# Apache 2.0 License
@@ -254,9 +254,9 @@ getImageBuilder() {
declare dl_tool
if [[ -f "${P_ARR[source_archive]}" ]]; then
if askOk "Update ImageBuilder ?"; then
rm -f "${P_ARR[source_archive]}"
if [[ -f "${P_ARR[ib_archive]}" ]]; then
if askOk "Redownload ImageBuilder archive?"; then
rm -f "${P_ARR[ib_archive]}"
else
return 0
fi
@@ -273,13 +273,13 @@ getImageBuilder() {
echo "Downloading imagebuilder archive using $dl_tool"
debug "$dl_tool -o ${P_ARR[source_archive]} ${P_ARR[IB_URL]}"
if ! "$dl_tool" -o "${P_ARR[source_archive]}" "${P_ARR[IB_URL]}"; then
debug "$dl_tool -o ${P_ARR[ib_archive]} ${P_ARR[ib_url]}"
if ! "$dl_tool" -o "${P_ARR[ib_archive]}" "${P_ARR[ib_url]}"; then
echo "Could not download imagebuilder archive"
exit 1
fi
if [[ ! -f "${P_ARR[source_archive]}" ]]; then
if [[ ! -f "${P_ARR[ib_archive]}" ]]; then
echo "Archive missing"
exit 1
fi
@@ -295,9 +295,9 @@ getImageBuilder() {
echo "Extracting image archive"
[[ ! -d "${P_ARR[source_dir]}" ]] && mkdir -p "${P_ARR[source_dir]}"
debug "tar -xf ${P_ARR[source_archive]} -C ${P_ARR[source_dir]} --strip-components 1"
if ! tar -xf "${P_ARR[source_archive]}" -C "${P_ARR[source_dir]}" --strip-components 1; then
[[ ! -d "${P_ARR[sources_dir]}" ]] && mkdir -p "${P_ARR[sources_dir]}"
debug "tar -xf ${P_ARR[ib_archive]} -C ${P_ARR[sources_dir]} --strip-components 1"
if ! tar -xf "${P_ARR[ib_archive]}" -C "${P_ARR[sources_dir]}" --strip-components 1; then
echo "Extraction failed"
exit 1
fi
@@ -308,10 +308,10 @@ addRepos() {
debug "${FUNCNAME[0]}"
if [[ -v P_ARR[repo] ]]; then
if ! grep -q "${P_ARR[repo]}" "${P_ARR[source_dir]}/repositories.conf"; then
echo "${P_ARR[repo]}" >> "${P_ARR[source_dir]}/repositories.conf"
if ! grep -q "${P_ARR[repo]}" "${P_ARR[sources_dir]}/repositories.conf"; then
echo "${P_ARR[repo]}" >> "${P_ARR[sources_dir]}/repositories.conf"
fi
sed -i '/option check_signature/d' "${P_ARR[source_dir]}/repositories.conf"
sed -i '/option check_signature/d' "${P_ARR[sources_dir]}/repositories.conf"
fi
}
@@ -371,7 +371,7 @@ makeImage() {
PROFILE="${P_ARR[profile]}" \
PACKAGES="${P_ARR[packages]}" \
FILES="$FILESDIR" \
--directory="${P_ARR[source_dir]}" \
--directory="${P_ARR[sources_dir]}" \
--jobs=$(( $(nproc) - 1 )) \
> make.log; then
echo "Make image failed!"
@@ -503,9 +503,9 @@ resetAll() {
resetProfile() {
debug "${FUNCNAME[0]}"
askOk "Remove ${P_ARR[source_dir]} ${P_ARR[bin_dir]}?" || exit $?
debug "rm -rf ${P_ARR[source_dir]} ${P_ARR[bin_dir]}"
rm -rf "${P_ARR[source_dir]}" "${P_ARR[bin_dir]}"
askOk "Remove ${P_ARR[sources_dir]} ${P_ARR[bin_dir]}?" || exit $?
debug "rm -rf ${P_ARR[sources_dir]} ${P_ARR[bin_dir]}"
rm -rf "${P_ARR[sources_dir]}" "${P_ARR[bin_dir]}"
}
@@ -635,34 +635,36 @@ main() {
# precedence: user input>profile>env>hardcode
P_ARR[release]="${USER_RELEASE:=${P_ARR[release]}:=$RELEASE}"
P_ARR[build_dir]="$BUILDROOT/$profile/${P_ARR[release]}"
P_ARR[source_dir]="${P_ARR[build_root]}/sources"
P_ARR[source_archive]="${P_ARR[source_dir]}/${P_ARR[profile]}-${P_ARR[release]}.tar.xz"
P_ARR[bin_dir]="${P_ARR[build_dir]}/bin"
P_ARR[build_dir]="$BUILDROOT/${P_ARR[profile]}-${P_ARR[release]}"
P_ARR[sources_dir]="$BUILDROOT/sources"
P_ARR[ib_archive]="${P_ARR[sources_dir]}/${P_ARR[profile]}-${P_ARR[release]}.tar.xz"
P_ARR[bin_dir]="${P_ARR[build_dir]}"
# shellcheck disable=SC2154
# TODO: I don't knwo why shellcheck is catching this
if [[ "${P_ARR[release]}" == "snapshot" ]]; then
P_ARR[OUT_PREFIX]="${P_ARR[bin_dir]}/openwrt-${P_ARR[target]//\//-}-${P_ARR[profile]}"
P_ARR[URL_PREFIX]="https://downloads.openwrt.org/snapshots/targets/${P_ARR[target]}"
P_ARR[FILENAME]="openwrt-imagebuilder-${P_ARR[target]//\//-}.Linux-x86_64.tar.xz"
P_ARR[IB_URL]="${P_ARR[URL_PREFIX]}/${P_ARR[FILENAME]}"
P_ARR[out_prefix]="${P_ARR[bin_dir]}/openwrt-${P_ARR[target]//\//-}-${P_ARR[profile]}"
P_ARR[url_prefix]="https://downloads.openwrt.org/snapshots/targets/${P_ARR[target]}"
P_ARR[url_filename]="openwrt-imagebuilder-${P_ARR[target]//\//-}.Linux-x86_64.tar.xz"
P_ARR[ib_url]="${P_ARR[url_prefix]}/${P_ARR[url_filename]}"
else
P_ARR[OUT_PREFIX]="${P_ARR[bin_dir]}/openwrt-${P_ARR[release]}-${P_ARR[target]//\//-}-${P_ARR[profile]}"
P_ARR[URL_PREFIX]="https://downloads.openwrt.org/releases/${P_ARR[release]}/targets/${P_ARR[target]}"
P_ARR[FILENAME]="openwrt-imagebuilder-${P_ARR[release]}-${P_ARR[target]//\//-}.Linux-x86_64.tar.xz"
P_ARR[IB_URL]="${P_ARR[URL_PREFIX]}/${P_ARR[FILENAME]}"
P_ARR[out_prefix]="${P_ARR[bin_dir]}/openwrt-${P_ARR[release]}-${P_ARR[target]//\//-}-${P_ARR[profile]}"
P_ARR[url_prefix]="https://downloads.openwrt.org/releases/${P_ARR[release]}/targets/${P_ARR[target]}"
P_ARR[url_filename]="openwrt-imagebuilder-${P_ARR[release]}-${P_ARR[target]//\//-}.Linux-x86_64.tar.xz"
P_ARR[ib_url]="${P_ARR[url_prefix]}/${P_ARR[url_filename]}"
fi
P_ARR[factory_img]="${P_ARR[OUT_PREFIX]}-${P_ARR[filesystem]}-factory.img"
P_ARR[factory_img]="${P_ARR[out_prefix]}-${P_ARR[filesystem]}-factory.img"
P_ARR[factory_img_gz]="${P_ARR[factory_img]}.gz"
P_ARR[sysupgrade_img]="${P_ARR[OUT_PREFIX]}-${P_ARR[filesystem]}-sysupgrade.img"
P_ARR[sysupgrade_img]="${P_ARR[out_prefix]}-${P_ARR[filesystem]}-sysupgrade.img"
P_ARR[sysupgrade_img_gz]="${P_ARR[sysupgrade_img]}.gz"
#P_ARR[sysupgrade_bin]=$out_prefix-${P_ARR[filesystem]}-sysupgrade.img
#P_ARR[sysupgrade_bin_fname]=${P_ARR[sysupgrade_bin]##*/}
P_ARR[sysupgrade_bin_gz]="${P_ARR[sysupgrade_bin]}.gz"
P_ARR[sysupgrade_bin_gz_fname]="${P_ARR[sysupgrade_bin_gz]##*/}"
P_ARR[SHA256_URL]="${P_ARR[URL_PREFIX]}/sha256sums"
P_ARR[CONFIG_SEED]="${P_ARR[URL_PREFIX]}"
P_ARR[SHA256_URL]="${P_ARR[url_prefix]}/sha256sums"
P_ARR[CONFIG_SEED]="${P_ARR[url_prefix]}"
if (( DEBUG )) || (( PROFILE_INFO )); then
echo "Profile settings:"