diff --git a/Makefile b/Makefile index 5749c97..2fcb755 100644 --- a/Makefile +++ b/Makefile @@ -20,9 +20,10 @@ # along with this program. If not, see . # -.PHONY: all download modules ich9m-descriptors payloads roms release clean \ - crossgcc-clean install-dependencies-ubuntu install-dependencies-debian \ - install-dependencies-arch install-dependencies-void +.PHONY: all check download modules ich9m-descriptors payloads roms release \ + clean crossgcc-clean install-dependencies-ubuntu \ + install-dependencies-debian install-dependencies-arch \ + install-dependencies-void all: roms @@ -69,3 +70,5 @@ install-dependencies-arch: install-dependencies-void: ./build dependencies void +check: + ./tests/u-boot-libre diff --git a/download b/download index 7d32a35..8de5e22 100755 --- a/download +++ b/download @@ -60,6 +60,9 @@ help() { coreboot trees by default, but './download coreboot x60' will only download the coreboot tree required for the target: x60 + Each program download script should also accept the --help paramater to + display the usage of the script. + Refer to the documentation for more information. EOF } diff --git a/resources/scripts/build/release/u-boot-libre b/resources/scripts/build/release/u-boot-libre new file mode 100755 index 0000000..a871aab --- /dev/null +++ b/resources/scripts/build/release/u-boot-libre @@ -0,0 +1,217 @@ +#!/usr/bin/env bash + +# +# helper script: generate deblobbed stable u-boot source code releases +# +# Copyright (C) 2020,2021 Leah Rowe +# Copyright (C) 2022 Denis 'GNUtoo' Carikli +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . +# + +[ "x${DEBUG+set}" = 'xset' ] && set -v +set -u -e + +revision="r1" + +supported_uboot_versions=" \ + 2021.07 \ +" + +topdir="$(realpath $(dirname $(realpath $0))/../../../../)" +uboot_release_topdir="${topdir}/release/u-boot-libre" + +release_files="" + +usage() +{ + progname="resources/scripts/build/release/u-boot-libre" + + printf "Usage:\n" + printf "\t%s # %s\n" \ + "${progname}" \ + "Release deblobbed u-boot tarballs for all supported versions" + printf "\t%s [version] # %s\n" \ + "${progname}" \ + "Release deblobbed u-boot tarballs for the given versions" + printf "\t%s --list-versions # %s\n" \ + "${progname}" \ + "List supported u-boot versions" + printf "\t%s --help # %s\n" \ + "${progname}" \ + "Prints this help" +} + +append_release_file() +{ + if [ -z "${release_files}" ] ; then + release_files="${release_files}$1" + else + release_files="${release_files} $1" + fi +} + +append_release_files() +{ + for file in "$@" ; do + append_release_file "${file}" + done +} + +print_release_files() +{ + version="$1" + printf "Source code archives for u-boot-libre-%s-%s available at:\n" \ + "${version}" "${revision}" + + for file in ${release_files} ; do + printf "\t${file}\n" + done +} + +release_deblobbed_uboot() +{ + version="$1" + + release_version_dir="${uboot_release_topdir}/${version}-${revision}" + tmpdir="${release_version_dir}/u-boot-libre-${version}-${revision}" + tarball="${tmpdir}.tar" + + printf "Building source code archive, version %s revision %s\n" \ + "${version}" "${revision}" + + cd "${topdir}" + "${topdir}/download" u-boot "v${version}" + + rm -rf \ + "${tmpdir}/" \ + "${tarball}" \ + "${tarball}.lz" \ + "${tarball}.xz" + + mkdir -p "$(dirname ${tmpdir})" + cp -R "u-boot/u-boot/" "${tmpdir}" + + rm -rf ${tmpdir}/.git ${tmpdir}/.gitignore + make -C ${tmpdir} distclean + + prefix="$(dirname ${tmpdir} | sed 's#^/*##')/" + tar cf "${tarball}" "${tmpdir}" \ + --transform="s#${prefix}##" \ + --format=gnu \ + --sort=name \ + --owner=0 --group=0 --numeric-owner \ + --mtime="1970-01-01" \ + + lzip -9 --keep -vv "${tarball}" + xz -9 --keep -vv "${tarball}" + + rm -rf "${tmpdir}/" + + append_release_files \ + "${tarball}" \ + "${tarball}.lz" \ + "${tarball}.xz" +} + +release_uboot_blobs_list() +{ + version="$1" + + blobs_list="$(${topdir}/download u-boot --blobs-list v${version})" + + release_version_dir="${uboot_release_topdir}/${version}-${revision}" + destination="${release_version_dir}/blobs-${version}-${revision}.list" + + cd "${topdir}" + + rm -rf \ + "${destination}" \ + "${destination}.lz" \ + "${destination}.xz" + + install -m 755 -d "${release_version_dir}" + install -m 644 -T "${blobs_list}" "${destination}" + + lzip -9 --keep -vv "${destination}" + xz -9 --keep -vv "${destination}" + + append_release_files \ + "${destination}" \ + "${destination}.lz" \ + "${destination}.xz" +} + +release_uboot_deblob_script() +{ + version="$1" + + deblob_script="$(${topdir}/download u-boot --gen-deblob-script v${version})" + + release_version_dir="${uboot_release_topdir}/${version}-${revision}" + destination="${release_version_dir}/deblob-${version}-${revision}.sh" + + cd "${topdir}" + + rm -rf \ + "${destination}" \ + "${destination}.lz" \ + "${destination}.xz" + + install -m 755 -d "${release_version_dir}" + install -m 644 -T "${blobs_list}" "${destination}" + + lzip -9 --keep -vv "${destination}" + xz -9 --keep -vv "${destination}" + + append_release_files \ + "${destination}" \ + "${destination}.lz" \ + "${destination}.xz" +} + +if [ $# -eq 0 ] ; then + for version in ${supported_uboot_versions} ; do + release_deblobbed_uboot "${version}" + release_uboot_blobs_list "${version}" + release_uboot_deblob_script "${version}" + print_release_files "${version}" + done + exit 0 +elif [ $# -eq 1 -a "$1" == "--help" ] ; then + usage + exit 0 +elif [ $# -eq 1 -a "$1" == "--list-versions" ] ; then + for version in ${supported_uboot_versions} ; do + printf "${version}\n" + done + exit 0 +elif [ $# -eq 1 ] ; then + found=0 + for revision in ${supported_uboot_revisions} ; do + if [ "${revision}" = "$1" ] ; then + release_deblobbed_uboot "$1" + release_uboot_blobs_list "$1" + release_uboot_deblob_script "$1" + print_release_files "$1" + exit 0 + fi + done + + printf "Error: Version '${1}' is not supported\n" + + exit 1 +fi + +exit 0 diff --git a/resources/scripts/build/release/u-boot-stable-src-release b/resources/scripts/build/release/u-boot-stable-src-release deleted file mode 100755 index 357338c..0000000 --- a/resources/scripts/build/release/u-boot-stable-src-release +++ /dev/null @@ -1,60 +0,0 @@ -#!/usr/bin/env bash - -# -# helper script: generate deblobbed stable u-boot source code releases -# -# Copyright (C) 2020,2021 Leah Rowe -# Copyright (C) 2022 Denis 'GNUtoo' Carikli -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see . -# - -[ "x${DEBUG+set}" = 'xset' ] && set -v -set -u -e - -version="v2021.07" -revision="r1" - -topdir="$(realpath $(dirname $(realpath $0))/../../../../)" -tmpdir="${topdir}/release/u-boot/u-boot-${version}-${revision}" -tarball="${tmpdir}.tar" - -printf "Building source code archive, version %s revision %s\n" "${version}" "${revision}" - -cd "${topdir}" -"${topdir}/download" u-boot - -rm -rf \ - "${tmpdir}/" \ - "${tarball}" \ - "${tarball}.lz" \ - "${tarball}.xz" - -mkdir -p "$(dirname ${tmpdir})" -cp -R "u-boot/u-boot/" "${tmpdir}" - -rm -rf ${tmpdir}/.git ${tmpdir}/.gitignore -make -C ${tmpdir} distclean - -prefix="$(dirname ${tmpdir} | sed 's#^/*##')/" -tar cf "${tarball}" "${tmpdir}" --transform="s#${prefix}##" -lzip -9 --keep -vv "${tarball}" -xz -9 --keep -vv "${tarball}" - -rm -rf "${tmpdir}/" - -printf "Source code archives available at:\n\t%s\n\t%s\n\t%s\n" \ - "${tarball}" \ - "${tarball}.lz" \ - "${tarball}.xz" diff --git a/resources/scripts/download/coreboot b/resources/scripts/download/coreboot index 6d0aa35..b94b1bc 100755 --- a/resources/scripts/download/coreboot +++ b/resources/scripts/download/coreboot @@ -21,6 +21,42 @@ [ "x${DEBUG+set}" = 'xset' ] && set -v set -u -e +list_supported_boards() +{ + for board in resources/coreboot/*; do + echo $board | sed 's#resources/coreboot/##' + done +} + +usage() +{ + progname="./download coreboot" + printf "Usage:\n" + printf "\t%s # %s\n" \ + "${progname}" \ + "Download and deblob Coreboot for all the boards" + printf "\t%s [board [board] ...] # %s\n" \ + "${progname}" \ + "Download and deblob Coreboot for the given boards" + printf "\t%s --list-boards # %s\n" \ + "${progname}" \ + "Prints this help" + printf "\t%s --help # %s\n" \ + "${progname}" \ + "List supported boards" + printf "\t%s --help # %s\n" \ + "${progname}" \ + "Prints this help" +} + +if [ $# -eq 1 -a "$1" == "--help" ] ; then + usage + exit 0 +elif [ $# -eq 1 -a "$1" == "--list-boards" ] ; then + list_supported_boards + exit 0 +fi + # set this when you want to modify each coreboot tree # for example, you want to test custom patches # NODELETE= ./download coreboot diff --git a/resources/scripts/download/flashrom b/resources/scripts/download/flashrom index a22f22f..c5ff4ba 100755 --- a/resources/scripts/download/flashrom +++ b/resources/scripts/download/flashrom @@ -21,6 +21,23 @@ [ "x${DEBUG+set}" = 'xset' ] && set -v set -u -e +usage() +{ + progname="./download flashrom" + printf "Usage:\n" + printf "\t%s # %s\n" \ + "${progname}" \ + "Download flashrom" + printf "\t%s --help # %s\n" \ + "${progname}" \ + "Prints this help" +} + +if [ $# -ne 0 ] ; then + usage + exit 0 +fi + # Get flashrom at the last previously tested revision # Remove the old version that may still exist: diff --git a/resources/scripts/download/grub b/resources/scripts/download/grub index 47c75bc..97bae1e 100755 --- a/resources/scripts/download/grub +++ b/resources/scripts/download/grub @@ -21,6 +21,23 @@ [ "x${DEBUG+set}" = 'xset' ] && set -v set -u -e +usage() +{ + progname="./download grub" + printf "Usage:\n" + printf "\t%s # %s\n" \ + "${progname}" \ + "Download GRUB" + printf "\t%s --help # %s\n" \ + "${progname}" \ + "Prints this help" +} + +if [ $# -ne 0 ] ; then + usage + exit 0 +fi + # Remove the old version that may still exist # ------------------------------------------------------------------------------ diff --git a/resources/scripts/download/ich9utils b/resources/scripts/download/ich9utils index a00f27d..d8232b0 100755 --- a/resources/scripts/download/ich9utils +++ b/resources/scripts/download/ich9utils @@ -21,6 +21,23 @@ [ "x${DEBUG+set}" = 'xset' ] && set -v set -u -e +usage() +{ + progname="./download ich9utils" + printf "Usage:\n" + printf "\t%s # %s\n" \ + "${progname}" \ + "Download ich9utils" + printf "\t%s --help # %s\n" \ + "${progname}" \ + "Prints this help" +} + +if [ $# -ne 0 ] ; then + usage + exit 0 +fi + printf "Downloading ich9utils\n" if [ -d ich9utils ]; then diff --git a/resources/scripts/download/memtest86plus b/resources/scripts/download/memtest86plus index 1b3da82..c0897c8 100755 --- a/resources/scripts/download/memtest86plus +++ b/resources/scripts/download/memtest86plus @@ -23,6 +23,23 @@ [ "x${DEBUG+set}" = 'xset' ] && set -v set -u -e +usage() +{ + progname="./download memtest86plus" + printf "Usage:\n" + printf "\t%s # %s\n" \ + "${progname}" \ + "Download MemTest86+" + printf "\t%s --help # %s\n" \ + "${progname}" \ + "Prints this help" +} + +if [ $# -ne 0 ] ; then + usage + exit 0 +fi + # Get the last version of MemTest86+ used, apply patches, build it. # Remove the old version that may exist diff --git a/resources/scripts/download/seabios b/resources/scripts/download/seabios index 58ea2bb..a7c4ab5 100755 --- a/resources/scripts/download/seabios +++ b/resources/scripts/download/seabios @@ -19,6 +19,23 @@ [ "x${DEBUG+set}" = 'xset' ] && set -v set -u -e +usage() +{ + progname="./download seabios" + printf "Usage:\n" + printf "\t%s # %s\n" \ + "${progname}" \ + "Download SeaBIOS" + printf "\t%s --help # %s\n" \ + "${progname}" \ + "Prints this help" +} + +if [ $# -ne 0 ] ; then + usage + exit 0 +fi + # Get SeaBIOS, revert to commit last used and apply patches. # Remove the old version that may still exist diff --git a/resources/scripts/download/u-boot b/resources/scripts/download/u-boot index 704d1c3..bd0258c 100755 --- a/resources/scripts/download/u-boot +++ b/resources/scripts/download/u-boot @@ -32,6 +32,12 @@ deleteblobs="true" # This script handles the internet, and Git. Both are inherently unreliable. [[ -f build_error ]] && rm -f build_error +# Make sure that older revision are first as code uses that order to +# find the latest supported revision. +supported_uboot_revisions=" \ + v2021.07 \ +" + downloadfor() { uboot_revision="v2021.07" uboot_dir="u-boot/u-boot" @@ -59,7 +65,7 @@ downloadfor() { if [ ! -d "${uboot_dir}" ]; then printf "Download u-boot from upstream:\n" - git clone https://source.denx.de/u-boot/u-boot \ + git clone https://source.denx.de/u-boot/u-boot.git \ "${uboot_dir}" || \ rm -Rf "${uboot_dir}" if [ ! -d "${uboot_dir}" ]; then @@ -99,25 +105,185 @@ strip_comments() sed '/^$/d' } -printf "Downloading u-boot and (if exist in build system) applying patches\n" -downloadfor +generate_deblob_script() +{ + blob_list_file="$1" + output="$2" -rm -f "build_error" -printf "\n\n" + # Add sheebang and copyright headers from this file + awk '{ + if ($0 !~ /^#/ && NF > 0) { + stop=1; + } + if (stop !=1) { + printf("%s\n", $0); + } + }' $0 >> ${output} -if [ "${deleteblobs}" = "true" ]; then - bloblist="resources/u-boot/default/blobs.list" + # Add rm -rf before directories and rm -f before files + awk \ + '{ + }{ + if (NF == 0) { + printf("\n"); + } else { + if ($0 !~ /#/ && $NF ~ /\/$/) { + printf("rm -rf %s\n", $0); + } else if ($0 !~ /#/) { + printf("rm -f %s\n", $0); + } else { + # We have comments, try to see if they are + # still valid paths before the comments + comments_found=0 + last_field=0 + for(i=1; i<=NF; i++) { + if($i ~ /#/) { + comments_found=1; + } else if(comments_found != 1) { + last_field=i; + } + } + if (last_field == 0) { + printf("%s\n", $0); + } else if ($last_field ~ /\/$/) { + printf("rm -rf %s\n", $0); + } else { + printf("rm -f %s\n", $0); + } + } + } + }' "${blob_list_file}" >> "${output}" +} - for blob_path in $(strip_comments "${bloblist}"); do - if echo "${blob_path}" | grep '/$' 2>&1 >/dev/null ; then - printf "Deleting blob directory: '%s/%s'\n" \ - "${uboot_dir}" "${blob_path}" - rm -rf "${uboot_dir}/${blob_path}" - else - printf "Deleting blob file: '%s/%s'\n" \ - "${uboot_dir}" "${blob_path}" - rm -f "${uboot_dir}/${blob_path}" +usage() +{ + progname="./download u-boot" + + printf "Usage:\n" + printf "\t%s # %s\n" \ + "${progname}" \ + "Download latest u-boot git revision and deblob it" + printf "\t%s [revision] # %s\n" \ + "${progname}" \ + "Download given u-boot git revision and deblob it" + printf "\t%s --blobs-list # %s\n" \ + "${progname}" \ + "Print the path of the blobs.list file for the latest supported u-boot revision" + printf "\t%s --blobs-list [revision] # %s\n" \ + "${progname}" \ + "Print the path of the blobs.list file for the given u-boot revision" + printf "\t%s --gen-deblob-script # %s\n" \ + "${progname}" \ + "Print the path of the generated deblob script for the latest supported u-boot revision" + printf "\t%s --gen-deblob-script [revision] # %s\n" \ + "${progname}" \ + "Print the path of the generated deblob script for the given u-boot revision" + printf "\t%s --list-revisions # %s\n" \ + "${progname}" \ + "List supported u-boot revisions" + printf "\t%s --help # %s\n" \ + "${progname}" \ + "Prints this help" +} + +download_uboot_revision() +{ + git_revision="$1" + + printf "Downloading u-boot " + printf "and (if exist in build system) applying patches\n" + downloadfor "${git_revision}" + + rm -f "build_error" + printf "\n\n" + + if [ "${deleteblobs}" = "true" ]; then + blobslist="resources/u-boot/default/blobs.list" + for blob_path in $(strip_comments "${blobslist}"); do + if echo "${blob_path}" | \ + grep '/$' 2>&1 >/dev/null ; then + printf "Deleting blob directory: '%s/%s'\n" \ + "${uboot_dir}" "${blob_path}" + rm -rf "${uboot_dir}/${blob_path}" + else + printf "Deleting blob file: '%s/%s'\n" \ + "${uboot_dir}" "${blob_path}" + rm -f "${uboot_dir}/${blob_path}" + fi + done + fi +} + +print_blobs_list_path() +{ + printf "resources/u-boot/default/blobs.list\n" +} + +print_deblob_script_path() +{ + version="$1" + path="$(mktemp)" + + generate_deblob_script "$(print_blobs_list_path ${version})" "${path}" + printf "%s\n" ${path} +} + +if [ $# -eq 0 ] ; then + latest_revision="$(echo ${supported_uboot_revisions} | tail -n1)" + download_uboot_revision "${latest_revision}" + exit 0 +elif [ $# -eq 1 -a "$1" == "--help" ] ; then + usage + exit 0 +elif [ $# -eq 1 -a "$1" == "--list-revisions" ] ; then + for revision in ${supported_uboot_revisions} ; do + printf "${revision}\n" + done + exit 0 +elif [ $# -eq 1 -a "$1" == "--blobs-list" ] ; then + latest_revision="$(echo ${supported_uboot_revisions} | tail -n1)" + print_blobs_list_path "${latest_revision}" + exit 0 +elif [ $# -eq 2 -a "$1" == "--blobs-list" ] ; then + found=0 + for revision in ${supported_uboot_revisions} ; do + if [ "${revision}" = "$2" ] ; then + print_blobs_list_path "$2" + exit 0 fi done + + printf "Error: Revision '${1}' is not supported\n" + + exit 1 +elif [ $# -eq 1 -a "$1" == "--gen-deblob-script" ] ; then + latest_revision="$(echo ${supported_uboot_revisions} | tail -n1)" + print_deblob_script_path "${latest_revision}" + exit 0 +elif [ $# -eq 2 -a "$1" == "--gen-deblob-script" ] ; then + found=0 + for revision in ${supported_uboot_revisions} ; do + if [ "${revision}" = "$2" ] ; then + print_deblob_script_path "$2" + exit 0 + fi + done + + printf "Error: Revision '${1}' is not supported\n" + + exit 1 +elif [ $# -eq 1 ] ; then + found=0 + for revision in ${supported_uboot_revisions} ; do + if [ "${revision}" = "$1" ] ; then + download_uboot_revision "$1" + exit 0 + fi + done + + printf "Error: Revision '${1}' is not supported\n" + + exit 1 fi + exit 0 diff --git a/tests/u-boot-libre b/tests/u-boot-libre new file mode 100755 index 0000000..de23402 --- /dev/null +++ b/tests/u-boot-libre @@ -0,0 +1,29 @@ +#!/usr/bin/env bash + +# +# tests for resources/scripts/build/release/u-boot-stable-src-release +# +# Copyright (C) 2022 Denis 'GNUtoo' Carikli +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . +# + +[ "x${DEBUG+set}" = 'xset' ] && set -v +set -u -e + +topdir="$(realpath $(dirname $(realpath $0))/../)" +progname="$(basename $(realpath $0))" + +"${topdir}/resources/scripts/build/release/u-boot-libre" +sha512sum -c "${topdir}/tests/${progname}.sha512" diff --git a/tests/u-boot-libre.sha512 b/tests/u-boot-libre.sha512 new file mode 100644 index 0000000..4439175 --- /dev/null +++ b/tests/u-boot-libre.sha512 @@ -0,0 +1,9 @@ +1684a70273e177cdc4f94da7214198cde5e86bebf76ff29a8e7a7ed8c2470bd392eb4b1ec7eda55ee95335e76123dc28429e90b2015453734f07c28f83358bf2 release/u-boot-libre/2021.07-r1/u-boot-libre-2021.07-r1.tar +3e26aa796759dd5af01795963cc35b1ae9c9e93844c73f22a4881bae30e98f68f8d1695983da76ab5fb8aa9785b0c37d3b8a1186ed5d64b11758a4ae2b146e2c release/u-boot-libre/2021.07-r1/u-boot-libre-2021.07-r1.tar.lz +d6bbd0c311fa7d73a018d2195618a9cff9984502624e83097e94c310557eb47da85f43a9e06bb3bc15828b050d9af0799fbaa828aff0a73e7f0592cccc4a2f47 release/u-boot-libre/2021.07-r1/u-boot-libre-2021.07-r1.tar.xz +007968618d182bb26eb13f25720a06f28a59b0a67e5b0e66ae2f7c1246c82139091606e61f780d60496866b31cb037a5a41f207d1b00e293280bcfc17cba8317 release/u-boot-libre/2021.07-r1/blobs-2021.07-r1.list +cc338a69266cc94d3a283a2f0e14660a649573eaf70f11254db00c190a85da5892f9ca78d2d44633d46f90c857297b954ba41d3d9e076a94433326a161f73b61 release/u-boot-libre/2021.07-r1/blobs-2021.07-r1.list.lz +174726b4505a9af850fb15cbfba73c6ea2eeb669352f37e577f37c225c8407f8c0da63f43d0d2285fdd6123fab4ac59233c8bd01bc863ba0e338c8469df10c1c release/u-boot-libre/2021.07-r1/blobs-2021.07-r1.list.xz +007968618d182bb26eb13f25720a06f28a59b0a67e5b0e66ae2f7c1246c82139091606e61f780d60496866b31cb037a5a41f207d1b00e293280bcfc17cba8317 release/u-boot-libre/2021.07-r1/deblob-2021.07-r1.sh +cc338a69266cc94d3a283a2f0e14660a649573eaf70f11254db00c190a85da5892f9ca78d2d44633d46f90c857297b954ba41d3d9e076a94433326a161f73b61 release/u-boot-libre/2021.07-r1/deblob-2021.07-r1.sh.lz +174726b4505a9af850fb15cbfba73c6ea2eeb669352f37e577f37c225c8407f8c0da63f43d0d2285fdd6123fab4ac59233c8bd01bc863ba0e338c8469df10c1c release/u-boot-libre/2021.07-r1/deblob-2021.07-r1.sh.xz