summaryrefslogtreecommitdiff
path: root/resources/scripts/download
diff options
context:
space:
mode:
authorLeah Rowe <leah@libreboot.org>2022-02-10 13:28:45 +0000
committerGogs <gogitservice@gmail.com>2022-02-10 13:28:45 +0000
commitcceffff659452daca0c1cd05d5bf981551dbee9c (patch)
treeaa8e06a16936e3efe844739b286a2d14c43c6e4a /resources/scripts/download
parent37b450051362b4c54a8e05807f173b04649ce501 (diff)
parent7422411b247945e000911f3f738227d17c337b20 (diff)
Merge branch 'master' of GNUtoo/lbmk into master
Diffstat (limited to 'resources/scripts/download')
-rwxr-xr-xresources/scripts/download/coreboot2
-rwxr-xr-xresources/scripts/download/u-boot123
2 files changed, 124 insertions, 1 deletions
diff --git a/resources/scripts/download/coreboot b/resources/scripts/download/coreboot
index a500de61..6d0aa353 100755
--- a/resources/scripts/download/coreboot
+++ b/resources/scripts/download/coreboot
@@ -125,7 +125,7 @@ downloadfor() {
fi
cp -R coreboot "${cbtree}" || touch ../build_error
- if [ -d ../build_error ]; then
+ if [ -f ../build_error ]; then
printf "ERROR: download/coreboot: Unable to copy directory. Check file system permissions or free space.\n"
rm -Rf "${cbtree}/"
cd ../; return 1
diff --git a/resources/scripts/download/u-boot b/resources/scripts/download/u-boot
new file mode 100755
index 00000000..704d1c3a
--- /dev/null
+++ b/resources/scripts/download/u-boot
@@ -0,0 +1,123 @@
+#!/usr/bin/env bash
+
+# helper script: download u-boot
+#
+# Copyright (C) 2014, 2015, 2016, 2020, 2021 Leah Rowe <info@minifree.org>
+# Copyright (C) 2021 Denis 'GNUtoo' Carikli <GNUtoo@cyberdimension.org>
+#
+# 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 <http://www.gnu.org/licenses/>.
+#
+
+[ "x${DEBUG+set}" = 'xset' ] && set -v
+set -u -e
+
+# set this when you want to modify each u-boot tree
+# for example, you want to test custom patches
+# NODELETE= ./download coreboot
+deleteblobs="true"
+[ "x${NODELETE+set}" = 'xset' ] && deleteblobs="false"
+
+# Error handling is extreme in this script.
+# This script handles the internet, and Git. Both are inherently unreliable.
+[[ -f build_error ]] && rm -f build_error
+
+downloadfor() {
+ uboot_revision="v2021.07"
+ uboot_dir="u-boot/u-boot"
+ if [ -d "${uboot_dir}" ]; then
+ printf \
+ "REMARK: '%s' directory already exists. Skipping setup.\n" \
+ "${uboot_dir}"
+ return 0
+ fi
+
+ if [ ! -d "${uboot_dir}" ]; then
+ mkdir -p "${uboot_dir}"
+ fi
+
+ if [ ! -d "${uboot_dir}" ]; then
+ printf \
+ "ERROR: '%s' directory not created. Check file system permissions\n" \
+ "${uboot_dir}"
+ return 1
+ fi
+
+ if [ ! -d "${uboot_dir}/.git" ] && [ -d "${uboot_dir}" ]; then
+ rm -Rf "${uboot_dir}"
+ fi
+
+ if [ ! -d "${uboot_dir}" ]; then
+ printf "Download u-boot from upstream:\n"
+ git clone https://source.denx.de/u-boot/u-boot \
+ "${uboot_dir}" || \
+ rm -Rf "${uboot_dir}"
+ if [ ! -d "${uboot_dir}" ]; then
+ printf \
+ "ERROR: %s: Problem with git-clone. Network issue?\n" \
+ "download/u-boot"
+ return 1
+ fi
+ else
+ git -C "${uboot_dir}" pull || touch build_error
+ if [ -f build_error ]; then
+ printf \
+ "ERROR: %s: Problem with git-pull. Network issue?\n" \
+ "download/u-boot"
+ return 1
+ fi
+ fi
+
+ git -C "${uboot_dir}" reset --hard ${uboot_revision} || \
+ touch build_error
+ if [ -f build_error ]; then
+ printf \
+ "ERROR: %s: Unable to reset to commit ID/tag '%s' for board '%s' on tree '%s'\n" \
+ "download/u-boot" "${uboot_revision}" "${1}" "${uboot_dir}"
+ return 1
+ fi
+}
+
+strip_comments()
+{
+ file="$1"
+ # Remove comments
+ sed 's/#.*//' "${file}" | \
+ # Remove lines composed of whitespaces only
+ sed '/^\W\+$/d' | \
+ # Remove empty lines
+ sed '/^$/d'
+}
+
+printf "Downloading u-boot and (if exist in build system) applying patches\n"
+downloadfor
+
+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
+exit 0