#105 Second patch set for improving scripts to do u-boot tarball releases

Merged
vimuser merged 9 commits from GNUtoo/master into libreboot/master 2 years ago

+ 6 - 3
Makefile

@@ -20,9 +20,10 @@
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 #
 
-.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

+ 3 - 0
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
 }

+ 217 - 0
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 <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
+
+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

+ 0 - 60
resources/scripts/build/release/u-boot-stable-src-release

@@ -1,60 +0,0 @@
-#!/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"

+ 36 - 0
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

+ 17 - 0
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:

+ 17 - 0
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
 # ------------------------------------------------------------------------------
 

+ 17 - 0
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

+ 17 - 0
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

+ 0 - 0
resources/scripts/download/seabios


Some files were not shown because too many files changed in this diff