diff options
| author | Leah Rowe <leah@libreboot.org> | 2023-05-20 18:52:33 +0100 | 
|---|---|---|
| committer | Leah Rowe <leah@libreboot.org> | 2023-05-20 18:52:33 +0100 | 
| commit | 16f878e88219f9040acf976828034818cd4c114a (patch) | |
| tree | f9b71e4e14a648ecc1c73ed525ecb7beed17f416 /resources/scripts/build/release | |
| parent | 4e2ee58ac5282b1a7d5d65a264207f512f3e4a42 (diff) | |
build/release/src: split logic into functions
main() on top
top-down logic
Signed-off-by: Leah Rowe <leah@libreboot.org>
Diffstat (limited to 'resources/scripts/build/release')
| -rwxr-xr-x | resources/scripts/build/release/src | 233 | 
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 $@ | 
