Browse Source

Cleanup checksum path

bryan 2 years ago
parent
commit
423e910a04
1 changed files with 70 additions and 61 deletions
  1. 70 61
      openwrtbuilder

+ 70 - 61
openwrtbuilder

@@ -41,7 +41,7 @@ printHelp() {
 init() {
 init() {
     debug "${FUNCNAME[0]}"
     debug "${FUNCNAME[0]}"
 
 
-    declare -g ID RPM_MGR SCRIPTDIR
+    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"
 
 
@@ -117,6 +117,15 @@ init() {
             pkg_install(){ sudo pacman -S --noconfirm --needed "$@"; }
             pkg_install(){ sudo pacman -S --noconfirm --needed "$@"; }
             ;;
             ;;
     esac
     esac
+
+    if hash axel &>/dev/null; then
+        DL_TOOL="axel"
+    elif hash curl &>/dev/null; then
+        DL_TOOL="curl"
+    else
+        echo "Downloading the Image Builder requires axel or curl!"
+        return 1
+    fi
 }
 }
 
 
 
 
@@ -337,67 +346,36 @@ installDependencies() {
 getImageBuilder() {
 getImageBuilder() {
     debug "${FUNCNAME[0]}"
     debug "${FUNCNAME[0]}"
 
 
-    declare dl_tool
-
     if [[ -f "$IB_ARCHIVE" ]]; then
     if [[ -f "$IB_ARCHIVE" ]]; then
-        echo "Image Builder $IB_ARCHIVE exists"
-        if askOk "Redownload Image Builder archive?"; then
+        if askOK "$IB_ARCHIVE exists. Re-download?"; then
             rm -f "$IB_ARCHIVE"
             rm -f "$IB_ARCHIVE"
         else
         else
             return 0
             return 0
         fi
         fi
     fi
     fi
 
 
-    if hash axel &>/dev/null; then
-        dl_tool="axel"
-    elif hash curl &>/dev/null; then
-        dl_tool="curl"
-    else
-        echo "Downloading the Image Builder requires axel or curl!"
-        return 1
-    fi
-    
-    echo "Downloading Image Builder archive using $dl_tool"
-
-    debug "$dl_tool -o $IB_ARCHIVE $IB_URL"
-    if ! "$dl_tool" -o "$IB_ARCHIVE" "$IB_URL"; then
-        echo "Could not download Image Builder archive"
-        return 1
-    fi
-
-    if [[ ! -f "$IB_ARCHIVE" ]]; then
-        echo "Archive missing"
-        return 1
-    fi
+    echo "Downloading Image Builder archive using $DL_TOOL"
+    debug "$DL_TOOL -o $IB_ARCHIVE $IB_URL"
+    "$DL_TOOL" -o "$IB_ARCHIVE" "$IB_URL"
 }
 }
 
 
 
 
-verifyImage() {
+getImageBuilderChecksum() {
     debug "${FUNCNAME[0]}"
     debug "${FUNCNAME[0]}"
 
 
-    declare checksum
-
-    if hash sha256sum &>/dev/null; then
-        debug "Verifying Image Builder checksums"
-
-        if [[ -f $SHA256_FILE ]]; then
-            if askOk "$SHA256_FILE exists. Re-download?"; then
-                if ! curl -so "$SHA256_FILE" "$SHA256_URL"; then
-                    debug "Failed to download checksum"
-                fi
-            fi
-        elif ! curl -so "$SHA256_FILE" "$SHA256_URL"; then
-            debug "Failed to download checksum"
+    if [[ -f $IB_SHA256_FILE ]]; then
+        if askOk "$IB_SHA256_FILE exists. Re-download?"; then
+            rm -f "$IB_SHA256_FILE"
+        else
+            return 0
         fi
         fi
-
-        checksum=$(grep "${IB_ARCHIVE##*/}" "$SHA256_FILE" | cut -f1 -d' ')
-        debug "$IB_ARCHIVE $checksum"
-        echo -n "$checksum $IB_ARCHIVE" | sha256sum --check --status
     fi
     fi
+
+    "$DL_TOOL" -o "$IB_SHA256_FILE" "$IB_SHA256_URL"
 }
 }
 
 
 
 
-extractImage() {
+extractImageBuilder() {
     debug "${FUNCNAME[0]}"
     debug "${FUNCNAME[0]}"
 
 
     echo "Extracting Image Builder archive"
     echo "Extracting Image Builder archive"
@@ -459,7 +437,7 @@ sshBackup() {
 }
 }
 
 
 
 
-makeImage() {
+makeImages() {
     debug "${FUNCNAME[0]}"
     debug "${FUNCNAME[0]}"
 
 
     # Reuse the existing output
     # Reuse the existing output
@@ -473,17 +451,25 @@ makeImage() {
 
 
     [[ -d "$BUILDDIR" ]] || mkdir -p "$BUILDDIR"
     [[ -d "$BUILDDIR" ]] || mkdir -p "$BUILDDIR"
 
 
-    if ! make image \
+    make image \
         BIN_DIR="$THIS_BINDIR" \
         BIN_DIR="$THIS_BINDIR" \
         PROFILE="${P_ARR[profile]}" \
         PROFILE="${P_ARR[profile]}" \
         PACKAGES="${P_ARR[packages]}" \
         PACKAGES="${P_ARR[packages]}" \
         FILES="${FILESDIR}" \
         FILES="${FILESDIR}" \
         --directory="$BUILDDIR" \
         --directory="$BUILDDIR" \
         --jobs="$(nproc)"  \
         --jobs="$(nproc)"  \
-        > "$BUILDDIR/make.log"; then
-            echo "Make image failed!"
-            exit 1
-    fi
+        > "$BUILDDIR/make.log"
+}
+
+
+verifyImages() {
+    debug "${FUNCNAME[0]}"
+
+    declare outfile
+
+    for outfile in "$THIS_BINDIR"/*.img.gz; do
+        verify "$outfile" "$IB_OUT_SHA256_FILE" || return 1
+    done
 }
 }
 
 
 
 
@@ -648,6 +634,19 @@ loadProfiles() {
 }
 }
 
 
 
 
+verify() {
+    debug "${FUNCNAME[0]}"
+    declare file_to_check="$1"
+    declare sumfile="$2"
+    declare checksum
+
+    hash sha256sum &>/dev/null || return 1
+    [[ -f $sumfile && -f $file_to_check ]] || return 1
+    checksum=$(grep "${file_to_check##*/}" "$sumfile" | cut -f1 -d' ')
+    echo -n "$checksum $file_to_check" | sha256sum --check --status
+}
+
+
 main() {
 main() {
     debug "${FUNCNAME[0]}"
     debug "${FUNCNAME[0]}"
 
 
@@ -710,8 +709,9 @@ main() {
 
 
         declare -g IB_URL="$url_prefix/$url_filename"
         declare -g IB_URL="$url_prefix/$url_filename"
         declare -g IB_ARCHIVE="$SRCDIR/$url_filename"
         declare -g IB_ARCHIVE="$SRCDIR/$url_filename"
-        declare -g SHA256_URL="$url_prefix/sha256sums"
-        declare -g SHA256_FILE="$BUILDDIR/sha256sums"
+        declare -g IB_SHA256_URL="$url_prefix/sha256sums"
+        declare -g IB_SHA256_FILE="$BUILDDIR/sha256sums"
+        declare -g IB_OUT_SHA256_FILE="$THIS_BINDIR/sha256sums"
         declare -g SEED_URL="$url_prefix/config.buildinfo"
         declare -g SEED_URL="$url_prefix/config.buildinfo"
         declare -g SEED_FILE="$GITSRCDIR/.config"
         declare -g SEED_FILE="$GITSRCDIR/.config"
 
 
@@ -742,10 +742,11 @@ main() {
 				IB_ARCHIVE=$IB_ARCHIVE
 				IB_ARCHIVE=$IB_ARCHIVE
 				SEED_URL=$SEED_URL
 				SEED_URL=$SEED_URL
 				SEED_FILE=$SEED_FILE
 				SEED_FILE=$SEED_FILE
-				SHA256_URL=$SHA256_URL
-				SHA256_FILE=$SHA256_FILE
-				FACTORIMGGZ: $FACTORYIMGGZ
-				FACTORIMGGZFNAME: $FACTORYIMGGZFNAME
+				IB_SHA256_URL=$IB_SHA256_URL
+				IB_SHA256_FILE=$IB_SHA256_FILE
+				IB_OUT_SHA256_FILE=$IB_OUT_SHA256_FILE
+				FACTORYIMGGZ: $FACTORYIMGGZ
+				FACTORYIMGGZFNAME: $FACTORYIMGGZFNAME
 				SYSUPGRADEIMGGZ: $SYSUPGRADEIMGGZ
 				SYSUPGRADEIMGGZ: $SYSUPGRADEIMGGZ
 				SYSUPGRADEIMGGZFNAME: $SYSUPGRADEIMGGZFNAME
 				SYSUPGRADEIMGGZFNAME: $SYSUPGRADEIMGGZFNAME
 			EOF
 			EOF
@@ -755,13 +756,21 @@ main() {
 
 
         (( FROM_SOURCE )) && fromSource
         (( FROM_SOURCE )) && fromSource
 
 
-        getImageBuilder || return $?
-        verifyImage || getImageBuilder || verifyImage || return $?
-        extractImage || return $?
+        # Acquire and verify Image Builder
+        getImageBuilder && 
+        getImageBuilderChecksum &&
+        verify "$IB_ARCHIVE" "$IB_SHA256_FILE" || 
+        return $?
+        
+        extractImageBuilder || return $?
+
         addRepos
         addRepos
+
         #copyFiles
         #copyFiles
+
         [[ -v SSH_BACKUP_PATH ]] && sshBackup
         [[ -v SSH_BACKUP_PATH ]] && sshBackup
-        if makeImage; then
+
+        if makeImages && verifyImages; then
             [[ -v SSH_UPGRADE_PATH ]] && sshUpgrade
             [[ -v SSH_UPGRADE_PATH ]] && sshUpgrade
             [[ -v FLASH_DEV ]] && flashImage
             [[ -v FLASH_DEV ]] && flashImage
         fi
         fi