summaryrefslogtreecommitdiff
path: root/resources/scripts
diff options
context:
space:
mode:
authorDenis 'GNUtoo' Carikli <GNUtoo@cyberdimension.org>2022-02-16 17:37:26 +0100
committerDenis 'GNUtoo' Carikli <GNUtoo@cyberdimension.org>2022-02-16 19:11:14 +0100
commit425162db93c50033df08ada44f3a08142bf1ed12 (patch)
treeb7e01053c381542984582bbed27dd8ff2d546df0 /resources/scripts
parentee2731af4493e0e9510e1a5f9bb48bb91feaddcc (diff)
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 <GNUtoo@cyberdimension.org>
Diffstat (limited to 'resources/scripts')
-rwxr-xr-xresources/scripts/build/release/u-boot-libre39
-rwxr-xr-xresources/scripts/download/u-boot93
2 files changed, 124 insertions, 8 deletions
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}"
@@ -191,6 +256,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
for revision in ${supported_uboot_revisions} ; do