123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220 |
- #!/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>
- # Copyright (C) 2022 Alper Nebi Yasak <alpernebiyasak@gmail.com>
- #
- # 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="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
|