From 354e9bd187694d2b98289c29f05b31732177aed8 Mon Sep 17 00:00:00 2001 From: Denis 'GNUtoo' Carikli Date: Wed, 16 Feb 2022 12:44:10 +0100 Subject: u-boot-stable-src-release: follow u-boot and linux-libre naming conventions Many people using FSDG compliant distributions or wanting to use one are already familiar with linux-libre. This change renames the resulting tarball to u-boot-libre to make it easier for people to understand the goal of this tarball. In addition we also rename the version from v2021.07 (which is the git tag corresponding to the release) to 2021.07 as u-boot upstream tarballs use that. The revision wasn't bumped as we didn't have any releases of u-boot-libre yet. Signed-off-by: Denis 'GNUtoo' Carikli --- resources/scripts/build/release/u-boot-stable-src-release | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'resources') diff --git a/resources/scripts/build/release/u-boot-stable-src-release b/resources/scripts/build/release/u-boot-stable-src-release index 357338cf..97a97628 100755 --- a/resources/scripts/build/release/u-boot-stable-src-release +++ b/resources/scripts/build/release/u-boot-stable-src-release @@ -23,11 +23,11 @@ [ "x${DEBUG+set}" = 'xset' ] && set -v set -u -e -version="v2021.07" +version="2021.07" revision="r1" topdir="$(realpath $(dirname $(realpath $0))/../../../../)" -tmpdir="${topdir}/release/u-boot/u-boot-${version}-${revision}" +tmpdir="${topdir}/release/u-boot-libre/${version}-${revision}/u-boot-libre-${version}-${revision}" tarball="${tmpdir}.tar" printf "Building source code archive, version %s revision %s\n" "${version}" "${revision}" -- cgit v1.2.1 From f955248044767504fb7c6c0e67e545b84cb1008c Mon Sep 17 00:00:00 2001 From: Denis 'GNUtoo' Carikli Date: Wed, 16 Feb 2022 17:58:43 +0100 Subject: u-boot-stable-src-release: rename to u-boot-libre If the script is named u-boot-stable-src-release and that users see an u-boot-libre tarball they will not make the link between both unless we rename the script. Signed-off-by: Denis 'GNUtoo' Carikli --- resources/scripts/build/release/u-boot-libre | 60 ++++++++++++++++++++++ .../build/release/u-boot-stable-src-release | 60 ---------------------- 2 files changed, 60 insertions(+), 60 deletions(-) create mode 100755 resources/scripts/build/release/u-boot-libre delete mode 100755 resources/scripts/build/release/u-boot-stable-src-release (limited to 'resources') diff --git a/resources/scripts/build/release/u-boot-libre b/resources/scripts/build/release/u-boot-libre new file mode 100755 index 00000000..97a97628 --- /dev/null +++ b/resources/scripts/build/release/u-boot-libre @@ -0,0 +1,60 @@ +#!/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 +# +# 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 + +version="2021.07" +revision="r1" + +topdir="$(realpath $(dirname $(realpath $0))/../../../../)" +tmpdir="${topdir}/release/u-boot-libre/${version}-${revision}/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 + +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" diff --git a/resources/scripts/build/release/u-boot-stable-src-release b/resources/scripts/build/release/u-boot-stable-src-release deleted file mode 100755 index 97a97628..00000000 --- a/resources/scripts/build/release/u-boot-stable-src-release +++ /dev/null @@ -1,60 +0,0 @@ -#!/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 -# -# 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 - -version="2021.07" -revision="r1" - -topdir="$(realpath $(dirname $(realpath $0))/../../../../)" -tmpdir="${topdir}/release/u-boot-libre/${version}-${revision}/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 - -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" -- cgit v1.2.1 From 4b2d426a206e6182f4e6676b3d6018f05d6e4d98 Mon Sep 17 00:00:00 2001 From: Denis 'GNUtoo' Carikli Date: Wed, 16 Feb 2022 13:35:47 +0100 Subject: scripts: download: u-boot: Add help and support for multiple revisions Signed-off-by: Denis 'GNUtoo' Carikli --- resources/scripts/download/u-boot | 88 ++++++++++++++++++++++++++++++++------- 1 file changed, 73 insertions(+), 15 deletions(-) (limited to 'resources') diff --git a/resources/scripts/download/u-boot b/resources/scripts/download/u-boot index 704d1c3a..ca7883ca 100755 --- a/resources/scripts/download/u-boot +++ b/resources/scripts/download/u-boot @@ -32,6 +32,12 @@ deleteblobs="true" # This script handles the internet, and Git. Both are inherently unreliable. [[ -f build_error ]] && rm -f build_error +# Make sure that older revision are first as code uses that order to +# find the latest supported revision. +supported_uboot_revisions=" \ + v2021.07 \ +" + downloadfor() { uboot_revision="v2021.07" uboot_dir="u-boot/u-boot" @@ -99,25 +105,77 @@ strip_comments() sed '/^$/d' } -printf "Downloading u-boot and (if exist in build system) applying patches\n" -downloadfor +usage() +{ + progname="./download u-boot" -rm -f "build_error" -printf "\n\n" + printf "Usage:\n" + printf "\t%s # %s\n" \ + "${progname}" \ + "Download latest u-boot git revision and deblob it" + printf "\t%s [revision] # %s\n" \ + "${progname}" \ + "Download given u-boot git revision and deblob it" + printf "\t%s --list-revisions # %s\n" \ + "${progname}" \ + "List supported u-boot revisions" + printf "\t%s --help # %s\n" \ + "${progname}" \ + "Prints this help" +} -if [ "${deleteblobs}" = "true" ]; then - bloblist="resources/u-boot/default/blobs.list" +download_uboot_revision() +{ + git_revision="$1" - 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}" + printf "Downloading u-boot " + printf "and (if exist in build system) applying patches\n" + downloadfor "${git_revision}" + + rm -f "build_error" + printf "\n\n" + + if [ "${deleteblobs}" = "true" ]; then + bloblist="resources/u-boot/default/blobs.list" + 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 + fi +} + +if [ $# -eq 0 ] ; then + latest_revision="$(echo ${supported_uboot_revisions} | tail -n1)" + download_uboot_revision "${latest_revision}" + exit 0 +elif [ $# -eq 1 -a "$1" == "--help" ] ; then + usage + exit 0 +elif [ $# -eq 1 -a "$1" == "--list-revisions" ] ; then + for revision in ${supported_uboot_revisions} ; do + printf "${revision}\n" + done + exit 0 +elif [ $# -eq 1 ] ; then + found=0 + for revision in ${supported_uboot_revisions} ; do + if [ "${revision}" = "$1" ] ; then + download_uboot_revision "$1" + exit 0 fi done + + printf "Error: Revision '${1}' is not supported\n" + + exit 1 fi + exit 0 -- cgit v1.2.1 From 2bb805e2e07a7d3e1268a09d720ecd13e26af418 Mon Sep 17 00:00:00 2001 From: Denis 'GNUtoo' Carikli Date: Wed, 16 Feb 2022 14:04:16 +0100 Subject: download: Add --help in the individual download scripts This doesn't change the existing usage of the scripts: - For the Coreboot script, before this change, all arguments that were passed were considered as board to download the Coreboot source code for. Here we added the '--help' and '--list-boards' arguments, so it should not be an issue as it is extremely unlikely that a board would be called '--help' or '--list-boards'. - All the other scripts don't use any arguments so passing --help should not conflict with the existing usage. Signed-off-by: Denis 'GNUtoo' Carikli --- resources/scripts/download/coreboot | 36 ++++++++++++++++++++++++++++++++ resources/scripts/download/flashrom | 17 +++++++++++++++ resources/scripts/download/grub | 17 +++++++++++++++ resources/scripts/download/ich9utils | 17 +++++++++++++++ resources/scripts/download/memtest86plus | 17 +++++++++++++++ resources/scripts/download/seabios | 17 +++++++++++++++ 6 files changed, 121 insertions(+) (limited to 'resources') diff --git a/resources/scripts/download/coreboot b/resources/scripts/download/coreboot index 6d0aa353..b94b1bc9 100755 --- a/resources/scripts/download/coreboot +++ b/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 diff --git a/resources/scripts/download/flashrom b/resources/scripts/download/flashrom index a22f22f2..c5ff4bac 100755 --- a/resources/scripts/download/flashrom +++ b/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: diff --git a/resources/scripts/download/grub b/resources/scripts/download/grub index 47c75bc1..97bae1ed 100755 --- a/resources/scripts/download/grub +++ b/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 # ------------------------------------------------------------------------------ diff --git a/resources/scripts/download/ich9utils b/resources/scripts/download/ich9utils index a00f27dd..d8232b03 100755 --- a/resources/scripts/download/ich9utils +++ b/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 diff --git a/resources/scripts/download/memtest86plus b/resources/scripts/download/memtest86plus index 1b3da822..c0897c80 100755 --- a/resources/scripts/download/memtest86plus +++ b/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 diff --git a/resources/scripts/download/seabios b/resources/scripts/download/seabios index 58ea2bb8..a7c4ab5e 100755 --- a/resources/scripts/download/seabios +++ b/resources/scripts/download/seabios @@ -19,6 +19,23 @@ [ "x${DEBUG+set}" = 'xset' ] && set -v set -u -e +usage() +{ + progname="./download seabios" + printf "Usage:\n" + printf "\t%s # %s\n" \ + "${progname}" \ + "Download SeaBIOS" + printf "\t%s --help # %s\n" \ + "${progname}" \ + "Prints this help" +} + +if [ $# -ne 0 ] ; then + usage + exit 0 +fi + # Get SeaBIOS, revert to commit last used and apply patches. # Remove the old version that may still exist -- cgit v1.2.1 From 1afdbaad1af3376b64cf7e9f7264db8da7070046 Mon Sep 17 00:00:00 2001 From: Denis 'GNUtoo' Carikli Date: Wed, 16 Feb 2022 14:56:13 +0100 Subject: u-boot-libre: Add reproducible builds and tests The tar options come from the tutorial to remove archives metadata at reproducible-builds.org[1]. [1]https://reproducible-builds.org/docs/archives/ Signed-off-by: Denis 'GNUtoo' Carikli --- resources/scripts/build/release/u-boot-libre | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) (limited to 'resources') diff --git a/resources/scripts/build/release/u-boot-libre b/resources/scripts/build/release/u-boot-libre index 97a97628..0f492421 100755 --- a/resources/scripts/build/release/u-boot-libre +++ b/resources/scripts/build/release/u-boot-libre @@ -48,7 +48,13 @@ rm -rf ${tmpdir}/.git ${tmpdir}/.gitignore make -C ${tmpdir} distclean prefix="$(dirname ${tmpdir} | sed 's#^/*##')/" -tar cf "${tarball}" "${tmpdir}" --transform="s#${prefix}##" +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}" -- cgit v1.2.1 From 414aa562875477e58684d40d9472cd2b94c3e9b4 Mon Sep 17 00:00:00 2001 From: Denis 'GNUtoo' Carikli Date: Wed, 16 Feb 2022 15:16:33 +0100 Subject: u-boot-libre: Add help and support for multiple versions Signed-off-by: Denis 'GNUtoo' Carikli --- resources/scripts/build/release/u-boot-libre | 118 ++++++++++++++++++++------- 1 file changed, 88 insertions(+), 30 deletions(-) (limited to 'resources') diff --git a/resources/scripts/build/release/u-boot-libre b/resources/scripts/build/release/u-boot-libre index 0f492421..7aaff3bf 100755 --- a/resources/scripts/build/release/u-boot-libre +++ b/resources/scripts/build/release/u-boot-libre @@ -23,44 +23,102 @@ [ "x${DEBUG+set}" = 'xset' ] && set -v set -u -e -version="2021.07" revision="r1" -topdir="$(realpath $(dirname $(realpath $0))/../../../../)" -tmpdir="${topdir}/release/u-boot-libre/${version}-${revision}/u-boot-libre-${version}-${revision}" -tarball="${tmpdir}.tar" +supported_uboot_versions=" \ + 2021.07 \ +" -printf "Building source code archive, version %s revision %s\n" "${version}" "${revision}" +usage() +{ + progname="resources/scripts/build/release/u-boot-libre" -cd "${topdir}" -"${topdir}/download" u-boot + 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" +} -rm -rf \ - "${tmpdir}/" \ - "${tarball}" \ - "${tarball}.lz" \ - "${tarball}.xz" +release_deblobbed_uboot() +{ + version="$1" -mkdir -p "$(dirname ${tmpdir})" -cp -R "u-boot/u-boot/" "${tmpdir}" + topdir="$(realpath $(dirname $(realpath $0))/../../../../)" + versiondir="${topdir}/release/u-boot-libre/${version}-${revision}" + tmpdir="${versiondir}/u-boot-libre-${version}-${revision}" + tarball="${tmpdir}.tar" -rm -rf ${tmpdir}/.git ${tmpdir}/.gitignore -make -C ${tmpdir} distclean + printf "Building source code archive, version %s revision %s\n" \ + "${version}" "${revision}" -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" \ + cd "${topdir}" + "${topdir}/download" u-boot "v${version}" -lzip -9 --keep -vv "${tarball}" -xz -9 --keep -vv "${tarball}" + rm -rf \ + "${tmpdir}/" \ + "${tarball}" \ + "${tarball}.lz" \ + "${tarball}.xz" -rm -rf "${tmpdir}/" + mkdir -p "$(dirname ${tmpdir})" + cp -R "u-boot/u-boot/" "${tmpdir}" -printf "Source code archives available at:\n\t%s\n\t%s\n\t%s\n" \ - "${tarball}" \ - "${tarball}.lz" \ - "${tarball}.xz" + 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}/" + + printf "Source code archives available at:\n\t%s\n\t%s\n\t%s\n" \ + "${tarball}" \ + "${tarball}.lz" \ + "${tarball}.xz" +} + +if [ $# -eq 0 ] ; then + for version in ${supported_uboot_versions} ; do + release_deblobbed_uboot "${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" + exit 0 + fi + done + + printf "Error: Version '${1}' is not supported\n" + + exit 1 +fi + +exit 0 -- cgit v1.2.1 From ee2731af4493e0e9510e1a5f9bb48bb91feaddcc Mon Sep 17 00:00:00 2001 From: Denis 'GNUtoo' Carikli Date: Wed, 16 Feb 2022 15:31:08 +0100 Subject: boot-libre: ship the blob list too This should enable various distributions and build system to reuse that blob to deblob u-boot releases themselves. Signed-off-by: Denis 'GNUtoo' Carikli --- resources/scripts/build/release/u-boot-libre | 66 ++++++++++++++++++++++++++-- resources/scripts/download/u-boot | 39 +++++++++++++--- 2 files changed, 95 insertions(+), 10 deletions(-) (limited to 'resources') diff --git a/resources/scripts/build/release/u-boot-libre b/resources/scripts/build/release/u-boot-libre index 7aaff3bf..30c5a0ab 100755 --- a/resources/scripts/build/release/u-boot-libre +++ b/resources/scripts/build/release/u-boot-libre @@ -29,6 +29,11 @@ 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" @@ -48,13 +53,36 @@ usage() "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() +{ + printf "Source code archives available at:\n" + for file in "${release_files}" ; do + printf "\t${file}\n" + done +} + release_deblobbed_uboot() { version="$1" - topdir="$(realpath $(dirname $(realpath $0))/../../../../)" - versiondir="${topdir}/release/u-boot-libre/${version}-${revision}" - tmpdir="${versiondir}/u-boot-libre-${version}-${revision}" + 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" \ @@ -88,15 +116,44 @@ release_deblobbed_uboot() rm -rf "${tmpdir}/" - printf "Source code archives available at:\n\t%s\n\t%s\n\t%s\n" \ + 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" +} + if [ $# -eq 0 ] ; then for version in ${supported_uboot_versions} ; do release_deblobbed_uboot "${version}" + release_uboot_blobs_list "${version}" done exit 0 elif [ $# -eq 1 -a "$1" == "--help" ] ; then @@ -112,6 +169,7 @@ elif [ $# -eq 1 ] ; then for revision in ${supported_uboot_revisions} ; do if [ "${revision}" = "$1" ] ; then release_deblobbed_uboot "$1" + release_uboot_blobs_list "$1" exit 0 fi done diff --git a/resources/scripts/download/u-boot b/resources/scripts/download/u-boot index ca7883ca..b67d6bd0 100755 --- a/resources/scripts/download/u-boot +++ b/resources/scripts/download/u-boot @@ -110,16 +110,22 @@ usage() progname="./download u-boot" printf "Usage:\n" - printf "\t%s # %s\n" \ + printf "\t%s # %s\n" \ "${progname}" \ "Download latest u-boot git revision and deblob it" - printf "\t%s [revision] # %s\n" \ + printf "\t%s [revision] # %s\n" \ "${progname}" \ "Download given u-boot git revision and deblob it" - printf "\t%s --list-revisions # %s\n" \ + printf "\t%s --blobs-list # %s\n" \ + "${progname}" \ + "Print the path of the blobs.list file for the latest supported u-boot revision" + printf "\t%s --blobs-list [revision] # %s\n" \ + "${progname}" \ + "Print the path of the blobs.list file for the given u-boot revision" + printf "\t%s --list-revisions # %s\n" \ "${progname}" \ "List supported u-boot revisions" - printf "\t%s --help # %s\n" \ + printf "\t%s --help # %s\n" \ "${progname}" \ "Prints this help" } @@ -136,8 +142,8 @@ download_uboot_revision() printf "\n\n" if [ "${deleteblobs}" = "true" ]; then - bloblist="resources/u-boot/default/blobs.list" - for blob_path in $(strip_comments "${bloblist}"); do + blobslist="resources/u-boot/default/blobs.list" + for blob_path in $(strip_comments "${blobslist}"); do if echo "${blob_path}" | \ grep '/$' 2>&1 >/dev/null ; then printf "Deleting blob directory: '%s/%s'\n" \ @@ -152,6 +158,11 @@ download_uboot_revision() fi } +print_blobs_list_path() +{ + printf "resources/u-boot/default/blobs.list\n" +} + if [ $# -eq 0 ] ; then latest_revision="$(echo ${supported_uboot_revisions} | tail -n1)" download_uboot_revision "${latest_revision}" @@ -164,6 +175,22 @@ elif [ $# -eq 1 -a "$1" == "--list-revisions" ] ; then printf "${revision}\n" done exit 0 +elif [ $# -eq 1 -a "$1" == "--blobs-list" ] ; then + latest_revision="$(echo ${supported_uboot_revisions} | tail -n1)" + print_blobs_list_path "${latest_revision}" + exit 0 +elif [ $# -eq 2 -a "$1" == "--blobs-list" ] ; then + found=0 + for revision in ${supported_uboot_revisions} ; do + if [ "${revision}" = "$2" ] ; then + print_blobs_list_path "$2" + exit 0 + fi + done + + printf "Error: Revision '${1}' is not supported\n" + + exit 1 elif [ $# -eq 1 ] ; then found=0 for revision in ${supported_uboot_revisions} ; do -- cgit v1.2.1 From 425162db93c50033df08ada44f3a08142bf1ed12 Mon Sep 17 00:00:00 2001 From: Denis 'GNUtoo' Carikli Date: Wed, 16 Feb 2022 17:37:26 +0100 Subject: boot-libre: add --gen-blob-script to generate a deblob script This should enable various distributions and build system to reuse the generated script to deblob u-boot releases themselves. Signed-off-by: Denis 'GNUtoo' Carikli --- resources/scripts/build/release/u-boot-libre | 39 +++++++++++- resources/scripts/download/u-boot | 93 ++++++++++++++++++++++++++-- 2 files changed, 124 insertions(+), 8 deletions(-) (limited to 'resources') diff --git a/resources/scripts/build/release/u-boot-libre b/resources/scripts/build/release/u-boot-libre index 30c5a0ab..a871aab7 100755 --- a/resources/scripts/build/release/u-boot-libre +++ b/resources/scripts/build/release/u-boot-libre @@ -71,8 +71,11 @@ append_release_files() print_release_files() { - printf "Source code archives available at:\n" - for file in "${release_files}" ; do + 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 } @@ -150,10 +153,40 @@ release_uboot_blobs_list() "${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 @@ -170,6 +203,8 @@ elif [ $# -eq 1 ] ; then 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 diff --git a/resources/scripts/download/u-boot b/resources/scripts/download/u-boot index b67d6bd0..8c94d338 100755 --- a/resources/scripts/download/u-boot +++ b/resources/scripts/download/u-boot @@ -105,27 +105,83 @@ strip_comments() sed '/^$/d' } +generate_deblob_script() +{ + blob_list_file="$1" + output="$2" + + # Add sheebang and copyright headers from this file + awk '{ + if ($0 !~ /^#/ && NF > 0) { + stop=1; + } + if (stop !=1) { + printf("%s\n", $0); + } + }' $0 >> ${output} + + # Add rm -rf before directories and rm -f before files + awk \ + '{ + }{ + if (NF == 0) { + printf("\n"); + } else { + if ($0 !~ /#/ && $NF ~ /\/$/) { + printf("rm -rf %s\n", $0); + } else if ($0 !~ /#/) { + printf("rm -f %s\n", $0); + } else { + # We have comments, try to see if they are + # still valid paths before the comments + comments_found=0 + last_field=0 + for(i=1; i<=NF; i++) { + if($i ~ /#/) { + comments_found=1; + } else if(comments_found != 1) { + last_field=i; + } + } + if (last_field == 0) { + printf("%s\n", $0); + } else if ($last_field ~ /\/$/) { + printf("rm -rf %s\n", $0); + } else { + printf("rm -f %s\n", $0); + } + } + } + }' "${blob_list_file}" >> "${output}" +} + usage() { progname="./download u-boot" printf "Usage:\n" - printf "\t%s # %s\n" \ + printf "\t%s # %s\n" \ "${progname}" \ "Download latest u-boot git revision and deblob it" - printf "\t%s [revision] # %s\n" \ + printf "\t%s [revision] # %s\n" \ "${progname}" \ "Download given u-boot git revision and deblob it" - printf "\t%s --blobs-list # %s\n" \ + printf "\t%s --blobs-list # %s\n" \ "${progname}" \ "Print the path of the blobs.list file for the latest supported u-boot revision" - printf "\t%s --blobs-list [revision] # %s\n" \ + printf "\t%s --blobs-list [revision] # %s\n" \ "${progname}" \ "Print the path of the blobs.list file for the given u-boot revision" - printf "\t%s --list-revisions # %s\n" \ + printf "\t%s --gen-deblob-script # %s\n" \ + "${progname}" \ + "Print the path of the generated deblob script for the latest supported u-boot revision" + printf "\t%s --gen-deblob-script [revision] # %s\n" \ + "${progname}" \ + "Print the path of the generated deblob script for the given u-boot revision" + printf "\t%s --list-revisions # %s\n" \ "${progname}" \ "List supported u-boot revisions" - printf "\t%s --help # %s\n" \ + printf "\t%s --help # %s\n" \ "${progname}" \ "Prints this help" } @@ -163,6 +219,15 @@ print_blobs_list_path() printf "resources/u-boot/default/blobs.list\n" } +print_deblob_script_path() +{ + version="$1" + path="$(mktemp)" + + generate_deblob_script "$(print_blobs_list_path ${version})" "${path}" + printf "%s\n" ${path} +} + if [ $# -eq 0 ] ; then latest_revision="$(echo ${supported_uboot_revisions} | tail -n1)" download_uboot_revision "${latest_revision}" @@ -190,6 +255,22 @@ elif [ $# -eq 2 -a "$1" == "--blobs-list" ] ; then printf "Error: Revision '${1}' is not supported\n" + exit 1 +elif [ $# -eq 1 -a "$1" == "--gen-deblob-script" ] ; then + latest_revision="$(echo ${supported_uboot_revisions} | tail -n1)" + print_deblob_script_path "${latest_revision}" + exit 0 +elif [ $# -eq 2 -a "$1" == "--gen-deblob-script" ] ; then + found=0 + for revision in ${supported_uboot_revisions} ; do + if [ "${revision}" = "$2" ] ; then + print_deblob_script_path "$2" + exit 0 + fi + done + + printf "Error: Revision '${1}' is not supported\n" + exit 1 elif [ $# -eq 1 ] ; then found=0 -- cgit v1.2.1 From 8833be159bfff1c417a7459dec323384bcbcb4d0 Mon Sep 17 00:00:00 2001 From: Denis 'GNUtoo' Carikli Date: Wed, 16 Feb 2022 19:33:07 +0100 Subject: scripts: download: u-boot: fix u-boot repository URL Without that fix we have the following warning during the download: Cloning into 'u-boot/u-boot'... warning: redirecting to https://source.denx.de/u-boot/u-boot.git/ Signed-off-by: Denis 'GNUtoo' Carikli --- resources/scripts/download/u-boot | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'resources') diff --git a/resources/scripts/download/u-boot b/resources/scripts/download/u-boot index 8c94d338..bd0258c0 100755 --- a/resources/scripts/download/u-boot +++ b/resources/scripts/download/u-boot @@ -65,7 +65,7 @@ downloadfor() { if [ ! -d "${uboot_dir}" ]; then printf "Download u-boot from upstream:\n" - git clone https://source.denx.de/u-boot/u-boot \ + git clone https://source.denx.de/u-boot/u-boot.git \ "${uboot_dir}" || \ rm -Rf "${uboot_dir}" if [ ! -d "${uboot_dir}" ]; then -- cgit v1.2.1