summaryrefslogtreecommitdiff
path: root/resources/scripts
diff options
context:
space:
mode:
Diffstat (limited to 'resources/scripts')
-rwxr-xr-xresources/scripts/build/release/u-boot-stable-src-release60
-rwxr-xr-xresources/scripts/download/coreboot2
-rwxr-xr-xresources/scripts/download/u-boot123
3 files changed, 184 insertions, 1 deletions
diff --git a/resources/scripts/build/release/u-boot-stable-src-release b/resources/scripts/build/release/u-boot-stable-src-release
new file mode 100755
index 00000000..357338cf
--- /dev/null
+++ b/resources/scripts/build/release/u-boot-stable-src-release
@@ -0,0 +1,60 @@
+#!/usr/bin/env bash
+
+#
+# helper script: generate deblobbed stable u-boot source code releases
+#
+# Copyright (C) 2020,2021 Leah Rowe <info@minifree.org>
+# Copyright (C) 2022 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
+
+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 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