diff options
Diffstat (limited to 'resources/scripts')
-rwxr-xr-x | resources/scripts/build/boot/roms_helper | 35 | ||||
-rw-r--r-- | resources/scripts/build/dependencies/arch | 2 | ||||
-rwxr-xr-x | resources/scripts/build/dependencies/debian | 2 | ||||
-rwxr-xr-x | resources/scripts/build/dependencies/fedora38 | 2 | ||||
-rwxr-xr-x | resources/scripts/build/dependencies/parabola | 2 | ||||
-rwxr-xr-x | resources/scripts/build/dependencies/ubuntu2004 | 2 | ||||
-rwxr-xr-x | resources/scripts/build/dependencies/void | 2 | ||||
-rwxr-xr-x | resources/scripts/update/blobs/download | 65 | ||||
-rwxr-xr-x | resources/scripts/update/blobs/inject | 21 |
9 files changed, 89 insertions, 44 deletions
diff --git a/resources/scripts/build/boot/roms_helper b/resources/scripts/build/boot/roms_helper index 21110e59..32a6e537 100755 --- a/resources/scripts/build/boot/roms_helper +++ b/resources/scripts/build/boot/roms_helper @@ -40,16 +40,16 @@ payloads="" keyboard_layouts="" while [ $# -gt 0 ]; do case ${1} in - -d) + -d) displaymodes="${displaymodes}${2}" shift ;; - -p) + -p) payloads="${payloads}${2}" shift ;; - -k) + -k) keyboard_layouts="${keyboard_layouts}${2}" shift ;; - *) + *) board=${1} ;; esac shift @@ -84,6 +84,8 @@ seabios_opromloadonly="0" payload_memtest="n" payload_uboot="n" uboot_config="undefined" +# ditto option whether to compile ada in crossgcc: +crossgcc_ada="y" # yes by default # Override the above defaults using board.cfg . "resources/coreboot/${board}/board.cfg" @@ -170,7 +172,13 @@ if [ "${blobs_required}" != "n" ] \ blobs_required="y" fi +# ada support needed for libgfxinit submodule +if [ "${crossgcc_ada}" != "y" ] && [ "${crossgcc_ada}" != "n" ]; then + crossgcc_ada="y" +fi + # Override all payload directives with cmdline args +# (do not override crossgcc_ada) if [ ! -z ${payloads} ]; then echo "setting payloads $payloads" payload_grub="n" @@ -203,6 +211,9 @@ fi cat version > "${cbdir}/.coreboot-version" +if [ "${crossgcc_ada}" = "n" ]; then + export BUILD_LANGUAGES=c +fi if [ "${arch}" = "x86_32" ] || [ "${arch}" = "x86_64" ]; then if [ ! -d "${cbdir}/util/crossgcc/xgcc/i386-elf/" ]; then # Even for 64-bit machines, coreboot builds 32-bit ROM @@ -334,6 +345,19 @@ moverom() { cp ${rompath} ${newrompath} fi + # pike2008 cards cause a system hang when loading option roms in seabios + # if there is an empty option rom in cbfs, no option rom will be loaded + if [ "${cuttype}" = "d8d16sas" ]; then + emptyrom=$(mktemp -t coreboot_rom.XXXXXXXXXX) + rm -f "${emptyrom}" + touch "${emptyrom}" + for deviceID in "0072" "3050"; do + "${cbfstool}" "${newrompath}" add -f "${emptyrom}" \ + -n pci1000,${deviceID}.rom -t raw + done + rm -f "${emptyrom}" + fi + for romsize in 4 8 16; do ifdgbe="descriptors/ich9m/ich9fdgbe_${romsize}m.bin" if [ "${cuttype}" = "${romsize}MiB ICH9 IFD NOR flash" ]; then @@ -390,8 +414,7 @@ mkCoreboot() { printf "Skipping build.\n" return 0 fi - printf "%s-%s\n" "$(cat projectname)" "$(cat version)" \ - > "${cbdir}/.coreboot-version" + cat version > "${cbdir}/.coreboot-version" ( if [ -f "${cbfstool}" ]; then mv "${cbfstool}" "${cbdir}/cbfstool" diff --git a/resources/scripts/build/dependencies/arch b/resources/scripts/build/dependencies/arch index c20a1faf..407915e1 100644 --- a/resources/scripts/build/dependencies/arch +++ b/resources/scripts/build/dependencies/arch @@ -92,7 +92,7 @@ pacman -S --needed --noconfirm libpciaccess pciutils zlib libftdi \ # Management engine extraction dependencies # ------------------------------------------------------------ -pacman -S --needed --noconfirm innoextract p7zip +pacman -S --needed --noconfirm innoextract p7zip unar # U-Boot build dependencies # ------------------------------------------------------------ diff --git a/resources/scripts/build/dependencies/debian b/resources/scripts/build/dependencies/debian index fb0ae248..b9ab42e6 100755 --- a/resources/scripts/build/dependencies/debian +++ b/resources/scripts/build/dependencies/debian @@ -131,4 +131,4 @@ apt-get -y install libpci-dev pciutils zlib1g-dev libftdi-dev \ # Blobs building dependencies (for me) # ------------------------------------------------------------ -apt-get -y install innoextract p7zip p7zip-full +apt-get -y install innoextract p7zip p7zip-full unar diff --git a/resources/scripts/build/dependencies/fedora38 b/resources/scripts/build/dependencies/fedora38 index 2389b806..0f852f44 100755 --- a/resources/scripts/build/dependencies/fedora38 +++ b/resources/scripts/build/dependencies/fedora38 @@ -95,4 +95,4 @@ dnf -y install pciutils-devel zlib-devel libftdi-devel gcc libusb-devel # For extracting IntelME from lenovo updates (X230 etc) -dnf -y install innoextract p7zip p7zip-plugins +dnf -y install innoextract p7zip p7zip-plugins unar diff --git a/resources/scripts/build/dependencies/parabola b/resources/scripts/build/dependencies/parabola index da284bed..4e40b175 100755 --- a/resources/scripts/build/dependencies/parabola +++ b/resources/scripts/build/dependencies/parabola @@ -95,7 +95,7 @@ pacman -S --needed --noconfirm libpciaccess pciutils zlib \ # # ------------------------------------------------------------ -pacman -S --needed --noconfirm innoextract p7zip +pacman -S --needed --noconfirm innoextract p7zip unar # U-Boot build dependencies # ------------------------------------------------------------ diff --git a/resources/scripts/build/dependencies/ubuntu2004 b/resources/scripts/build/dependencies/ubuntu2004 index 14a1d8c2..bacb1e46 100755 --- a/resources/scripts/build/dependencies/ubuntu2004 +++ b/resources/scripts/build/dependencies/ubuntu2004 @@ -113,4 +113,4 @@ apt-get -y install libpci-dev pciutils zlib1g-dev libftdi-dev \ # Blobs building dependencies (for me) # ------------------------------------------------------------ -apt-get -y install innoextract p7zip p7zip-full +apt-get -y install innoextract p7zip p7zip-full unar diff --git a/resources/scripts/build/dependencies/void b/resources/scripts/build/dependencies/void index e46cd5ee..7ceaafde 100755 --- a/resources/scripts/build/dependencies/void +++ b/resources/scripts/build/dependencies/void @@ -88,4 +88,4 @@ xbps-install -y libpciaccess pciutils zlib libftdi1 base-devel libusb # Management engine extraction dependencies # ------------------------------------------------------------ -xbps-install -y innoextract p7zip +xbps-install -y innoextract p7zip unar 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 |