summaryrefslogtreecommitdiff
path: root/libre-testing/uboot4extlinux-sunxi
diff options
context:
space:
mode:
Diffstat (limited to 'libre-testing/uboot4extlinux-sunxi')
-rw-r--r--libre-testing/uboot4extlinux-sunxi/u-boot131
-rw-r--r--libre-testing/uboot4extlinux-sunxi/u-boot-libre76
2 files changed, 207 insertions, 0 deletions
diff --git a/libre-testing/uboot4extlinux-sunxi/u-boot b/libre-testing/uboot4extlinux-sunxi/u-boot
new file mode 100644
index 000000000..d7a285e73
--- /dev/null
+++ b/libre-testing/uboot4extlinux-sunxi/u-boot
@@ -0,0 +1,131 @@
+#!/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 uboot_dir)
+{
+ uboot_revision="$1"
+ uboot_dir="$2"
+
+ 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 $1 "$2"
+
+rm -f "build_error"
+printf "\n\n"
+
+if [ "${deleteblobs}" = "true" ]; then
+ bloblist="$3"
+ if [[ -f "${bloblist}" ]]; then
+ 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
+ else
+ printf \
+ "ERROR: %s: bloblist: %s not found.\n" \
+ "$(basename $0)" "${bloblist}"
+ exit 1
+ fi
+fi
+exit 0
diff --git a/libre-testing/uboot4extlinux-sunxi/u-boot-libre b/libre-testing/uboot4extlinux-sunxi/u-boot-libre
new file mode 100644
index 000000000..d63a421d4
--- /dev/null
+++ b/libre-testing/uboot4extlinux-sunxi/u-boot-libre
@@ -0,0 +1,76 @@
+#!/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="v2022.04"
+revision="r1"
+
+printf "Building source code archive, version %s revision %s\n" "${version}" "${revision}"
+
+cd "${topdir}"
+if [[ -x "${topdir}/download" ]]
+then
+ topdir="$(realpath $(dirname $(realpath $0))/../../../../)"
+ download_dir=u-boot/u-boot
+ tmpdir="${topdir}/release/u-boot-libre"
+ download=( "${topdir}/download" u-boot )
+ bloblist="resources/u-boot/default/blobs.list"
+elif [[ -x ./u-boot-download.sh ]]
+then
+ topdir="$(realpath $(dirname $(realpath $0)))"
+ download_dir=${topdir}
+ tmpdir=${topdir}
+ download=( ${topdir}/u-boot-download.sh )
+ bloblist="${topdir}/blobs.list"
+else
+ exit 1
+fi
+"${download[@]}" "${version}" "${download_dir}" "${bloblist}"
+
+release="u-boot-libre-${version/v/}-${revision}"
+tarball="${tmpdir}/${release}.tar"
+
+rm -rf \
+ "${tmpdir}/" \
+ "${tarball}" \
+ "${tarball}.lz" \
+ "${tarball}.xz"
+
+mkdir -p "${tmpdir}"
+cp -R "${download_dir}/" "${tmpdir}/${release}"
+
+rm -rf ${tmpdir}/.git ${tmpdir}/${release}/.gitignore
+make -C ${tmpdir} distclean
+
+prefix="$(sed 's#^/*##' <<<${tmpdir})/"
+tar cf "${tarball}" "${tmpdir}/${release}" --transform="s#${prefix}##"
+lzip -9 --keep -vv "${tarball}"
+xz -9 --keep -vv "${tarball}"
+
+rm -rf "${tmpdir}/${release}/"
+
+printf "Source code archives available at:\n\t%s\n\t%s\n\t%s\n" \
+ "${tarball}" \
+ "${tarball}.lz" \
+ "${tarball}.xz"