From 16f878e88219f9040acf976828034818cd4c114a Mon Sep 17 00:00:00 2001 From: Leah Rowe Date: Sat, 20 May 2023 18:52:33 +0100 Subject: build/release/src: split logic into functions main() on top top-down logic Signed-off-by: Leah Rowe --- resources/scripts/build/release/src | 233 ++++++++++++++++++++---------------- 1 file changed, 130 insertions(+), 103 deletions(-) (limited to 'resources') diff --git a/resources/scripts/build/release/src b/resources/scripts/build/release/src index 65456ab7..f551904b 100755 --- a/resources/scripts/build/release/src +++ b/resources/scripts/build/release/src @@ -1,126 +1,153 @@ #!/usr/bin/env sh -# # helper script: generate release archive (source code) # -# Copyright (C) 2020,2021 Leah Rowe +# Copyright (C) 2020,2021,2023 Leah Rowe # -# 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 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. +# 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 . +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . # -# This script assumes that the working directory is the root -# of git or release archive - [ "x${DEBUG+set}" = 'xset' ] && set -v set -u -e projectname="$(cat projectname)" - +modlist="coreboot flashrom grub memtest86plus seabios me_cleaner u-boot bios_extract" +dirlist="resources util" # do not add blobs directory here. it is handled below +filelist="blobutil modify download build README.md COPYING Makefile update version versiondate projectname .gitcheck gitclone" version="version-unknown" -if [ -f version ]; then - version="$(cat version)" -fi versiondate="version-date-unknown" -if [ -f versiondate ]; then - versiondate="$(cat versiondate)" -fi - -reldir="release/${version}" -dirname="${projectname}-${version}_src" -srcdir="${reldir}/${dirname}" +reldir="" +dirname="" +srcdir="" printf "Building source code archive, version %s\n" "${version}" -[ ! -d "release/" ] && mkdir -p release/ -[ ! -d "${reldir}/" ] && mkdir -p "${reldir}/" -[ -d "${srcdir}/" ] && \ - rm -Rf "${srcdir}/" -[ -f "${srcdir}.tar.xz" ] && \ - rm -f "${srcdir}.tar.xz/" - -mkdir -p "${srcdir}/" +main() +{ + [ -f version ] && \ + version="$(cat version)" + [ -f versiondate ] && \ + versiondate="$(cat versiondate)" + + create_release_directory + download_modules + copy_files + purge_files + + create_release_archive + + printf "Source code archive available at %s.tar.xz\n\n" "${srcdir}" +} + +create_release_directory() +{ + reldir="release/${version}" + dirname="${projectname}-${version}_src" + srcdir="${reldir}/${dirname}" + + [ ! -d "release/" ] && mkdir -p release/ + [ ! -d "${reldir}/" ] && mkdir -p "${reldir}/" + [ -d "${srcdir}/" ] && \ + rm -Rf "${srcdir}/" + [ -f "${srcdir}.tar.xz" ] && \ + rm -f "${srcdir}.tar.xz/" + + mkdir -p "${srcdir}/" + printf "%s" "${version}" > "${srcdir}"/version +} + +download_modules() +{ + for modname in ${modlist}; do + if [ ! -d "${modname}/" ]; then + ./download ${modname} + fi + done +} -printf "%s" "${version}" > "${srcdir}"/version +copy_files() +{ + for dir in ${modlist} ${dirlist}; do + cp -R "${dir}/" "${srcdir}/" + done -modlist="coreboot flashrom grub memtest86plus seabios me_cleaner u-boot bios_extract" -dirlist="resources util" # do not add blobs directory here. it is handled below -filelist="blobutil modify download build README.md COPYING Makefile update version versiondate projectname .gitcheck gitclone" + copy_blobs -for modname in ${modlist}; do - if [ ! -d "${modname}/" ]; then - ./download ${modname} - fi -done - -for dir in ${modlist} ${dirlist}; do - cp -R "${dir}/" "${srcdir}/" -done - -mkdir -p "${srcdir}"/blobs -# do not copy intel ME etc, but do copy ifd/gbe files -for i in t440p xx20 xx30 hp8200sff hp_ivybridge hp_sandybridge; do - for j in ifd gbe 16_ifd; do - if [ -f "blobs/${i}/${j}.bin" ]; then - if [ ! -e "${srcdir}/blobs/${i}" ]; then - mkdir -p "${srcdir}/blobs/${i}" - fi - cp blobs/${i}/${j}.bin "${srcdir}/blobs/${i}" + for i in ${filelist}; do + if [ ! -f "${i}" ]; then + printf "build/release/src: ERROR: file '%s' does not exist.\n" "${i}" + rm -Rf "${srcdir}" + exit 1 fi + cp ${i} "${srcdir}/" done -done - -for i in ${filelist}; do - if [ ! -f "${i}" ]; then - printf "build/release/src: ERROR: file '%s' does not exist.\n" "${i}" - rm -Rf "${srcdir}" - exit 1 - fi - cp ${i} "${srcdir}/" -done - -( - cd "${srcdir}/coreboot/" - for i in *; do - [ ! -d "${i}" ] && continue - ( - cd "${i}/" - make distclean - ) - make clean -BC default/util/kbc1126/ - done -) - -( - cd "${srcdir}/" - ./build clean all - make clean -BC util/nvmutil - make clean -BC util/ich9utils - - rm -Rf coreboot/coreboot/ - rm -Rf .git .gitignore */.git* coreboot/*/.git* coreboot/*/3rdparty/*/.git* - rm -Rf coreboot/*/util/nvidia/cbootimage/.git* - rm -Rf u-boot/u-boot/ u-boot/*/.git* -) - -( -cd "${reldir}/" -printf "%s\n" "${version}" > "${dirname}/version" -printf "%s\n" "${versiondate}" > "${dirname}/versiondate" -printf "%s\n" "${projectname}" > "${dirname}/projectname" -tar -c "${dirname}/" | xz -9e >"${dirname}.tar.xz" -rm -Rf "${dirname}/" -) - -printf "Source code archive available at %s.tar.xz\n\n" "${srcdir}" - +} + +copy_blobs() +{ + mkdir -p "${srcdir}"/blobs + # do not copy intel ME etc, but do copy ifd/gbe files + for i in t440p xx20 xx30 hp8200sff hp_ivybridge hp_sandybridge; do + for j in ifd gbe 16_ifd; do + if [ -f "blobs/${i}/${j}.bin" ]; then + if [ ! -e "${srcdir}/blobs/${i}" ]; then + mkdir -p "${srcdir}/blobs/${i}" + fi + cp blobs/${i}/${j}.bin "${srcdir}/blobs/${i}" + fi + done + done +} + +purge_files() +{ + ( + cd "${srcdir}/coreboot/" + for i in *; do + [ ! -d "${i}" ] && \ + continue + ( + cd "${i}/" + make distclean + ) + make clean -BC default/util/kbc1126/ + done + ) + + ( + cd "${srcdir}/" + ./build clean all + make clean -BC util/nvmutil + make clean -BC util/ich9utils + + rm -Rf coreboot/coreboot/ + rm -Rf .git .gitignore */.git* coreboot/*/.git* coreboot/*/3rdparty/*/.git* + rm -Rf coreboot/*/util/nvidia/cbootimage/.git* + rm -Rf u-boot/u-boot/ u-boot/*/.git* + ) +} + +create_release_archive() +{ + ( + cd "${reldir}/" + printf "%s\n" "${version}" > "${dirname}/version" + printf "%s\n" "${versiondate}" > "${dirname}/versiondate" + printf "%s\n" "${projectname}" > "${dirname}/projectname" + tar -c "${dirname}/" | xz -9e >"${dirname}.tar.xz" + rm -Rf "${dirname}/" + ) +} + +main $@ -- cgit v1.2.1