summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDenis 'GNUtoo' Carikli <GNUtoo@cyberdimension.org>2022-02-16 13:35:47 +0100
committerDenis 'GNUtoo' Carikli <GNUtoo@cyberdimension.org>2022-02-16 18:00:30 +0100
commit4b2d426a206e6182f4e6676b3d6018f05d6e4d98 (patch)
tree7eae8cf2fdec34d140e14188ddc8674a4535b902
parentf955248044767504fb7c6c0e67e545b84cb1008c (diff)
scripts: download: u-boot: Add help and support for multiple revisions
Signed-off-by: Denis 'GNUtoo' Carikli <GNUtoo@cyberdimension.org>
-rwxr-xr-xresources/scripts/download/u-boot88
1 files changed, 73 insertions, 15 deletions
diff --git a/resources/scripts/download/u-boot b/resources/scripts/download/u-boot
index 704d1c3a..ca7883ca 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"
@@ -99,25 +105,77 @@ strip_comments()
sed '/^$/d'
}
-printf "Downloading u-boot and (if exist in build system) applying patches\n"
-downloadfor
+usage()
+{
+ progname="./download u-boot"
-rm -f "build_error"
-printf "\n\n"
+ 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 --list-revisions # %s\n" \
+ "${progname}" \
+ "List supported u-boot revisions"
+ printf "\t%s --help # %s\n" \
+ "${progname}" \
+ "Prints this help"
+}
-if [ "${deleteblobs}" = "true" ]; then
- bloblist="resources/u-boot/default/blobs.list"
+download_uboot_revision()
+{
+ git_revision="$1"
- 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}"
+ 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
+ bloblist="resources/u-boot/default/blobs.list"
+ 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}"
+ fi
+ done
+ fi
+}
+
+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 ] ; 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