summaryrefslogtreecommitdiff
path: root/resources/scripts/update
diff options
context:
space:
mode:
Diffstat (limited to 'resources/scripts/update')
-rwxr-xr-xresources/scripts/update/blobs/download65
-rwxr-xr-xresources/scripts/update/blobs/inject21
2 files changed, 54 insertions, 32 deletions
diff --git a/resources/scripts/update/blobs/download b/resources/scripts/update/blobs/download
index 0896ed47..2368e8e9 100755
--- a/resources/scripts/update/blobs/download
+++ b/resources/scripts/update/blobs/download
@@ -5,6 +5,8 @@
# SPDX-FileCopyrightText: 2023 Leah Rowe <info@minifree.org>
# SPDX-License-Identifier: GPL-3.0-only
+agent="Mozilla/5.0 (Windows NT 10.0; rv:91.0) Gecko/20100101 Firefox/91.0"
+
ec_url=""
ec_url_bkup=""
ec_hash=""
@@ -106,14 +108,14 @@ scan_sources_config()
while read -r line ; do
case ${line} in
- EC_url*)
- set ${line}
- ec_url=${2}
- ;;
EC_url_bkup*)
set ${line}
ec_url_bkup=${2}
;;
+ EC_url*)
+ set ${line}
+ ec_url=${2}
+ ;;
EC_hash*)
set ${line}
ec_hash=${2}
@@ -122,26 +124,26 @@ scan_sources_config()
set ${line}
dl_hash=${2}
;;
- DL_url*)
- set ${line}
- dl_url=${2}
- ;;
DL_url_bkup*)
set ${line}
dl_url_bkup=${2}
;;
- E6400_VGA_DL_hash*)
+ DL_url*)
set ${line}
- e6400_vga_dl_hash=${2}
+ dl_url=${2}
;;
- E6400_VGA_DL_url*)
+ E6400_VGA_DL_hash*)
set ${line}
- e6400_vga_dl_url=${2}
+ e6400_vga_dl_hash=${2}
;;
E6400_VGA_DL_url_bkup*)
set ${line}
e6400_vga_dl_url_bkup=${2}
;;
+ E6400_VGA_DL_url*)
+ set ${line}
+ e6400_vga_dl_url=${2}
+ ;;
E6400_VGA_offset*)
set ${line}
e6400_vga_offset=${2}
@@ -235,8 +237,9 @@ extract_blob_intel_me()
printf "Extracting and stripping Intel ME firmware\n"
- innoextract ${dl_path} -d ${blobdir} \
+ innoextract ${dl_path} -d ${appdir} \
|| 7z x ${dl_path} -o${appdir} \
+ || unar "${dl_path}" -o "${appdir}" \
|| fail 'Could not extract vendor update'
bruteforce_extract_blob_intel_me "$(pwd)/${_me_destination}" \
@@ -278,19 +281,21 @@ bruteforce_extract_blob_intel_me()
"${me7updateparser}" -O ${_me_destination} "${i}" \
&& break # (we found me.bin)
_7ztest="${_7ztest}a"
- 7z x "${i}" -o${_7ztest} || continue
+ 7z x "${i}" -o${_7ztest} \
+ || innoextract "${i}" -d "${_7ztest}" \
+ || unar "${i}" -o "${_7ztest}" \
+ || continue
bruteforce_extract_blob_intel_me "${_me_destination}" \
"${cdir}/${_7ztest}"
- cdir="${1}"
- cd "${cdir}"
elif [ -d "$i" ]; then
bruteforce_extract_blob_intel_me "${_me_destination}" \
"${cdir}/${i}"
- cdir="${1}"
- cd "${cdir}"
else
printf "SKIPPING: %s\n" "${i}"
+ continue
fi
+ cdir="${1}"
+ cd "${cdir}"
done
)
@@ -337,6 +342,11 @@ extract_ec()
unar -D ROM.CAB Rom.bin
mv Rom.bin ec.bin
fi
+ if [ ! -f ec.bin ]; then
+ printf "could not extract ec.bin for board '%s'" ${board} \
+ 1>&2
+ fail "aborting the build. please audit blobutil carefully."
+ fi
"${kbc1126_ec_dump}" ec.bin
)
@@ -442,11 +452,20 @@ fetch_update()
dl_path=${blobdir}/cache/${dlsum}
mkdir -p ${blobdir}/cache
- vendor_checksum ${dlsum} || \
- wget ${dl} -O ${dl_path} || wget ${dl_bkup} -O ${dl_path}
-
- vendor_checksum ${dlsum} || fail \
- "Cannot guarantee intergity of vendor update for: ${board}"
+ dl_fail="y"
+ vendor_checksum ${dlsum} && dl_fail="n"
+ for x in "${dl}" "${dl_bkup}"; do
+ if [ "${dl_fail}" = "n" ]; then
+ break
+ fi
+ rm -f "${dl_path}"
+ wget -U "${agent}" ${x} -O ${dl_path}
+ vendor_checksum ${dlsum} && dl_fail="n"
+ done
+ if [ "${dl_fail}" = "y" ]; then
+ printf "Could not download blob file\n" 1>&2
+ return 1
+ fi
}
vendor_checksum()
diff --git a/resources/scripts/update/blobs/inject b/resources/scripts/update/blobs/inject
index 891cb198..bc8a9a4d 100755
--- a/resources/scripts/update/blobs/inject
+++ b/resources/scripts/update/blobs/inject
@@ -50,15 +50,18 @@ main()
while getopts r:b:m: option
do
- case "${option}"
- in
- r)rom=${OPTARG};;
- b)board=${OPTARG};;
+ case "${option}" in
+ r)
+ rom=${OPTARG}
+ ;;
+ b)
+ board=${OPTARG}
+ ;;
m)
modifygbe=true
new_mac=${OPTARG}
;;
- esac
+ esac
done
check_board
@@ -111,17 +114,17 @@ detect_board()
path=${1}
filename=$(basename ${path})
case ${filename} in
- grub_*)
+ grub_*)
board=$(echo "${filename}" | cut -d '_' -f2-3)
;;
- seabios_withgrub_*)
+ seabios_withgrub_*)
board=$(echo "${filename}" | cut -d '_' -f3-4)
;;
- *.tar.xz)
+ *.tar.xz)
_stripped_prefix=${filename#*_}
board="${_stripped_prefix%.tar.xz}"
;;
- *)
+ *)
return 1
esac