Browse Source

More multi-profile work

bryan 2 years ago
parent
commit
3ee6de5fb1
1 changed files with 33 additions and 40 deletions
  1. 33 40
      openwrtbuilder

+ 33 - 40
openwrtbuilder

@@ -13,7 +13,7 @@ printHelp() {
     debug "${FUNCNAME[0]}"
 
     cat <<-'EOF'
-Run and deploy OpenWRT images using the Image Builder.
+Create and deploy OpenWRT images using the Image Builder.
 
 USAGE:
 openwrtbuilder [OPTION [VALUE]] -p PROFILE [-p PROFILE2]...
@@ -23,7 +23,7 @@ OPTIONS
     --info, -i (print profile info)
     --list-profiles, -l
     --release, -r, --version, -v RELEASE_VERSION ("snapshot", "22.03.3", etc.)
-    --builddir, -b PATH
+    --buildroot, -b PATH
     --ssh-upgrade HOST
         Example: root@192.168.1.1
     --ssh-backup SSH_PATH
@@ -46,7 +46,7 @@ readInput() {
     declare -ga PROFILES
     declare -g PROFILE_INFO 
 
-    if _input=$(getopt -o +r:v:p:i:lb:sf:dh -l release:,version:,profile:,info:,list-profiles,builddir:,from-source,ssh-upgrade:,ssh-backup:,flash:,reset,debug,help -- "$@"); then
+    if _input=$(getopt -o +r:v:p:i:lb:sf:dh -l release:,version:,profile:,info:,list-profiles,buildroot:,from-source,ssh-upgrade:,ssh-backup:,flash:,reset,debug,help -- "$@"); then
         eval set -- "$_input"
         while true; do
             case "$1" in
@@ -62,8 +62,8 @@ readInput() {
                 --list-profiles|-l)
                     listProfiles && exit $?
                     ;;
-                --builddir|-b)
-                    shift && BUILDDIR="$1"
+                --buildroot|-b)
+                    shift && BUILDROOT="$1"
                     ;;
                 --from-source|-s)
                     FROM_SOURCE=1
@@ -252,7 +252,7 @@ installDependencies() {
 getImageBuilder() {
     debug "${FUNCNAME[0]}"
 
-    declare dl_tool sha256sum
+    declare dl_tool
 
     if [[ -f "${P_ARR[source_archive]}" ]]; then
         if askOk "Update ImageBuilder ?"; then
@@ -493,12 +493,11 @@ askOk() {
 
 resetAll() {
     debug "${FUNCNAME[0]}"
-    # BUILDDIR may not be set, so fallback to SCRIPTDIR
-    askOk "Remove ${BUILDDIR}/sources and ${BUILDDIR}/bin?" || exit $?
-    debug "rm -rf ${BUILDDIR}/sources ${BUILDDIR}/bin"
-    find "${BUILDDIR}/sources" "${BUILDDIR}/bin" \
+    askOk "Remove ${BUILDROOT}/sources and ${BUILDROOT}/bin?" || exit $?
+    debug "rm -rf ${BUILDROOT}/sources ${BUILDROOT}/bin"
+    find "${BUILDROOT}/sources" "${BUILDROOT}/bin" \
         ! -dir "$FILESDIR" -type f -delete +
-    #rm -rf "${BUILDDIR}/sources" "${BUILDDIR}/bin"
+    #rm -rf "${BUILDROOT}/sources" "${BUILDROOT}/bin"
 }
 
 
@@ -602,10 +601,6 @@ init() {
 main() {
     debug "${FUNCNAME[0]}"
 
-    # Use openwrtbuilder directory as fallback if BUILDDIR cannot be determined
-    declare -g SCRIPTDIR
-    SCRIPTDIR="$( cd -- "$(dirname "$0")" >/dev/null 2>&1 || exit $? ; pwd -P )"
-
     init
 
     loadProfiles
@@ -630,44 +625,42 @@ main() {
 
         [[ ! ${!profile@a} = A ]] && echo "Profile does not exist" && return 1
 
+        # Set profile vars in the P_ARR array
         declare -gn P_ARR="$profile"
 
-        # Fallback to SCRIPTDIR if BUILDDIR has not been set
-        BUILDDIR="${BUILDDIR:=$SCRIPTDIR}"
-        FILESDIR="${FILESDIR:=$BUILDDIR/files}"
+        # Fallback to SCRIPTDIR if BUILDROOT has not been set
+        SCRIPTDIR="$(cd -- "$(dirname "$0")" >/dev/null 2>&1 || exit $? ; pwd -P)"
+        BUILDROOT="${BUILDROOT:=$SCRIPTDIR}"
+        FILESDIR="${FILESDIR:=$BUILDROOT/files}"
 
-        P_ARR[release]=${USER_RELEASE:=${P_ARR[release]}:=$RELEASE} # precedence: user input>profile>env>hardcode
-        P_ARR[source_archive]=${P_ARR[build_dir]}/sources/${P_ARR[profile]}-${P_ARR[release]}.tar.xz
-        P_ARR[source_dir]=${P_ARR[source_archive]%.tar.xz}
-        P_ARR[bin_dir]=${P_ARR[build_dir]}/bin/${P_ARR[profile]}-${P_ARR[release]}
+        # 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"
 
         if [[ "${P_ARR[release]}" == "snapshot" ]]; then
             P_ARR[OUT_PREFIX]="${P_ARR[bin_dir]}/openwrt-${P_ARR[target]//\//-}-${P_ARR[profile]}"
-        else
-            P_ARR[OUT_PREFIX]="${P_ARR[bin_dir]}/openwrt-${P_ARR[release]}-${P_ARR[target]//\//-}-${P_ARR[profile]}"
-        fi
-
-        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_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[build_dir]="${BUILDDIR}"
-
-        if [[ "${P_ARR[release]}" == "snapshot" ]]; then
             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]="${URL_PREFIX}/$FILENAME"
+            P_ARR[IB_URL]="${P_ARR[URL_PREFIX]}/${P_ARR[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]="${URL_PREFIX}/$FILENAME"
+            P_ARR[IB_URL]="${P_ARR[URL_PREFIX]}/${P_ARR[FILENAME]}"
         fi
 
+        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_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]}"