|
@@ -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
|