summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLeah Rowe <leah@libreboot.org>2023-05-20 18:52:33 +0100
committerLeah Rowe <leah@libreboot.org>2023-05-20 18:52:33 +0100
commit16f878e88219f9040acf976828034818cd4c114a (patch)
treef9b71e4e14a648ecc1c73ed525ecb7beed17f416
parent4e2ee58ac5282b1a7d5d65a264207f512f3e4a42 (diff)
build/release/src: split logic into functions
main() on top top-down logic Signed-off-by: Leah Rowe <leah@libreboot.org>
-rwxr-xr-xresources/scripts/build/release/src233
1 files changed, 130 insertions, 103 deletions
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 <info@minifree.org>
+# Copyright (C) 2020,2021,2023 Leah Rowe <info@minifree.org>
#
-# 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 <http://www.gnu.org/licenses/>.
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
-# 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 $@