From a6654739034d7be09043c19dbc51e360c1a15772 Mon Sep 17 00:00:00 2001 From: Timothy Pidashev Date: Tue, 14 Apr 2026 09:22:55 -0700 Subject: [PATCH] update scripts --- coreboot-t440p/steps/attach_ch341a.sh | 2 +- coreboot-t440p/steps/extract_bios.sh | 12 +++---- coreboot-t440p/system.sh | 10 +++--- coreboot-t440p/utils.sh | 45 +++++++++++++++++++++++++-- 4 files changed, 55 insertions(+), 14 deletions(-) diff --git a/coreboot-t440p/steps/attach_ch341a.sh b/coreboot-t440p/steps/attach_ch341a.sh index d41ab13..092824a 100755 --- a/coreboot-t440p/steps/attach_ch341a.sh +++ b/coreboot-t440p/steps/attach_ch341a.sh @@ -21,7 +21,7 @@ step_attach_ch341a() { echo "" # Show reference image (cached locally, rendered inline if possible) - show_image "spi_flasher_assembly.png" "Reference: CH341A + SOIC-8 clip assembly" + show_image "spi_flasher_assembly.webp" "Reference: CH341A + SOIC-8 clip assembly" echo "" prompt_continue diff --git a/coreboot-t440p/steps/extract_bios.sh b/coreboot-t440p/steps/extract_bios.sh index 4198b44..12118b2 100755 --- a/coreboot-t440p/steps/extract_bios.sh +++ b/coreboot-t440p/steps/extract_bios.sh @@ -46,15 +46,13 @@ step_extract_bios() { info "Each chip is read twice so we can diff the results and catch flaky reads." echo "" - # Show reference image for chip locations - show_image "eeprom_chips_location.png" "Reference: EEPROM chip locations on T440p mainboard" - echo "" - cd "$WORK_DIR" || return 1 # --- 4MB chip (do first: smaller = faster iteration on setup) --- echo "" - info "Clip the CH341A onto the ${BOLD}4MB (top)${NC} chip." + show_image "eeprom_chip_4mb.webp" "Reference: 4MB (top) chip location on T440p" + echo "" + info "Clip the CH341A onto the ${BOLD}4MB (top)${NC} chip shown above." info "Align the red ribbon wire with the dot/notch on the chip (pin 1)." prompt_continue @@ -64,7 +62,9 @@ step_extract_bios() { # --- 8MB chip --- echo "" - info "Now move the clip to the ${BOLD}8MB (bottom)${NC} chip." + show_image "eeprom_chip_8mb.webp" "Reference: 8MB (bottom) chip location on T440p" + echo "" + info "Now move the clip to the ${BOLD}8MB (bottom)${NC} chip shown above." info "Re-check pin 1 alignment before pressing down." prompt_continue diff --git a/coreboot-t440p/system.sh b/coreboot-t440p/system.sh index 24baf4c..7a5ae5f 100755 --- a/coreboot-t440p/system.sh +++ b/coreboot-t440p/system.sh @@ -7,24 +7,24 @@ install_dependencies() { case "$DISTRO" in arch) info "Installing packages via pacman..." - run_cmd "sudo pacman -S --needed base-devel curl git gcc-ada ncurses zlib nasm sharutils unzip flashrom usbutils chafa" + run_cmd "sudo pacman -S --needed base-devel curl git gcc-ada ncurses zlib nasm sharutils unzip flashrom usbutils chafa libwebp" ;; debian) info "Installing packages via apt..." run_cmd "sudo apt update" - run_cmd "sudo apt install -y build-essential curl git gnat libncurses-dev zlib1g-dev nasm sharutils unzip flashrom usbutils chafa" + run_cmd "sudo apt install -y build-essential curl git gnat libncurses-dev zlib1g-dev nasm sharutils unzip flashrom usbutils chafa webp" ;; fedora) info "Installing packages via dnf..." - run_cmd "sudo dnf install -y @development-tools curl git gcc-gnat ncurses-devel zlib-devel nasm sharutils unzip flashrom usbutils chafa" + run_cmd "sudo dnf install -y @development-tools curl git gcc-gnat ncurses-devel zlib-devel nasm sharutils unzip flashrom usbutils chafa libwebp-tools" ;; gentoo) info "Installing packages via emerge..." - run_cmd "sudo emerge --ask sys-devel/base-devel net-misc/curl dev-vcs/git sys-devel/gcc ncurses dev-libs/zlib dev-lang/nasm app-arch/sharutils app-arch/unzip sys-apps/flashrom sys-apps/usbutils media-gfx/chafa" + run_cmd "sudo emerge --ask sys-devel/base-devel net-misc/curl dev-vcs/git sys-devel/gcc ncurses dev-libs/zlib dev-lang/nasm app-arch/sharutils app-arch/unzip sys-apps/flashrom sys-apps/usbutils media-gfx/chafa media-libs/libwebp" ;; nix) info "Installing packages via nix-env..." - run_cmd "nix-env -i stdenv curl git gcc gnat ncurses zlib nasm sharutils unzip flashrom usbutils chafa" + run_cmd "nix-env -i stdenv curl git gcc gnat ncurses zlib nasm sharutils unzip flashrom usbutils chafa libwebp" ;; *) warn "Could not detect your distribution." diff --git a/coreboot-t440p/utils.sh b/coreboot-t440p/utils.sh index dbb66a3..142c221 100755 --- a/coreboot-t440p/utils.sh +++ b/coreboot-t440p/utils.sh @@ -113,9 +113,36 @@ _render_image() { return 1 } +# Transcode a webp file to png next to it. Echoes the png path on success. +_webp_to_png() { + _webp="$1" + _png="${_webp%.webp}.png" + + [ -f "$_png" ] && { printf '%s' "$_png"; return 0; } + + if check_command dwebp; then + dwebp "$_webp" -o "$_png" >/dev/null 2>&1 && { + printf '%s' "$_png"; return 0; + } + fi + if check_command magick; then + magick "$_webp" "$_png" >/dev/null 2>&1 && { + printf '%s' "$_png"; return 0; + } + fi + if check_command convert; then + convert "$_webp" "$_png" >/dev/null 2>&1 && { + printf '%s' "$_png"; return 0; + } + fi + + return 1 +} + # show_image [caption] # Downloads $IMAGE_BASE_URL/ into $WORK_DIR/.images/, # renders inline if possible, otherwise prints the URL. +# If the image is webp and the renderer can't decode it, transcodes to png. show_image() { _name="$1" _caption="$2" @@ -134,15 +161,29 @@ show_image() { fi fi + # First attempt: render the file as-is. if _render_image "$_local"; then [ -n "$_caption" ] && printf " ${DIM}%s${NC}\n" "$_caption" return 0 fi - # No renderer available + # Fallback: if webp, try to transcode to png and re-render. + case "$_name" in + *.webp) + _png=$(_webp_to_png "$_local") + if [ -n "$_png" ] && _render_image "$_png"; then + [ -n "$_caption" ] && printf " ${DIM}%s${NC}\n" "$_caption" + return 0 + fi + ;; + esac + + # No renderer / transcode available — degrade to URL. info "Reference image: $_url" if ! check_command chafa; then - info "(Install 'chafa' for inline image previews: sudo pacman -S chafa)" + info "(Install 'chafa' for inline image previews)" + elif case "$_name" in *.webp) true ;; *) false ;; esac; then + info "(Install 'libwebp' (dwebp) or 'imagemagick' to preview webp inline)" fi [ -n "$_caption" ] && info "$_caption" }