#!/usr/bin/env bash # # helper script: generate deblobbed stable u-boot source code releases # # Copyright (C) 2020,2021 Leah Rowe # Copyright (C) 2022 Denis 'GNUtoo' Carikli # Copyright (C) 2022 Alper Nebi Yasak # # 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 . # [ "x${DEBUG+set}" = 'xset' ] && set -v set -u -e revision="r2" supported_uboot_versions=" \ 2021.07 \ 2022.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/v${version}/" "${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="@${SOURCE_DATE_EPOCH:-0}" \ 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 "${deblob_script}" "${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