diff options
Diffstat (limited to 'script/update/release')
| -rwxr-xr-x | script/update/release | 102 | 
1 files changed, 54 insertions, 48 deletions
| diff --git a/script/update/release b/script/update/release index 357840c2..fcee49e7 100755 --- a/script/update/release +++ b/script/update/release @@ -1,6 +1,6 @@  #!/usr/bin/env sh  # SPDX-License-Identifier: MIT -# SPDX-FileCopyrightText: 2020-2023 Leah Rowe <leah@libreboot.org> +# SPDX-FileCopyrightText: 2020-2024 Leah Rowe <leah@libreboot.org>  set -u -e @@ -9,15 +9,18 @@ set -u -e  eval "$(setvars "" vdir relname src_dirname srcdir _xm target romdir mode)" +export LBMK_RELEASE="y" +export LBMK_STATUS="n" +  main()  {  	vdir="release"  	while getopts d:m: option; do -		[ -z "${OPTARG}" ] && err "Empty argument not allowed" +		[ -z "${OPTARG}" ] && $err "Empty argument not allowed"  		case "${option}" in  		d) vdir="${OPTARG}" ;;  		m) mode="${OPTARG}" ;; -		*) err "Invalid option" ;; +		*) $err "Invalid option" ;;  		esac  	done @@ -29,7 +32,7 @@ main()  	src_dirname="${relname}_src"  	srcdir="${vdir}/${src_dirname}" -	[ -e "${vdir}" ] && err "already exists: \"${vdir}\"" +	[ -e "${vdir}" ] && $err "already exists: \"${vdir}\""  	mkvdir  	build_release @@ -39,45 +42,45 @@ main()  mkvdir()  { -	mkdir -p "${vdir}" || err "mkvdir: !mkdir -p \"${vdir}\"" -	git clone . "${srcdir}" || err "mkdir: !gitclone \"${srcdir}\"" -	insert_version_files "$srcdir" || err "mkvdir $srcdir: versionfile" +	mkdir -p "${vdir}" || $err "mkvdir: !mkdir -p \"${vdir}\"" +	git clone . "${srcdir}" || $err "mkdir: !gitclone \"${srcdir}\"" +	insert_version_files "$srcdir" || $err "mkvdir $srcdir: versionfile"  }  build_release()  {  	_xm="build_release ${vdir}"  	( -	cd "${srcdir}" || err "${_xm}: !cd \"${srcdir}\"" +	cd "${srcdir}" || $err "${_xm}: !cd \"${srcdir}\""  	fetch_trees  	[ "${mode}" = "u-boot" ] || x_ mv src/docs docs -	) || err "can't create release files" +	) || $err "can't create release files"  	git log --graph --pretty=format:'%Cred%h%Creset %s %Creset' \  	    --abbrev-commit > "${srcdir}/CHANGELOG" || \ -	    err "build_release $srcdir: couldn't generate changelog" +	    $err "build_release $srcdir: couldn't generate changelog"  	(  	if [ "${mode}" = "u-boot" ]; then -		cd "${srcdir}/src/" || err "${_xm}: mktarball \"${srcdir}\"" +		cd "${srcdir}/src/" || $err "${_xm}: mktarball \"${srcdir}\""  		mktarball u-boot "../../${srcdir##*/}.tar.xz" || \ -		    err "$_xm: mksrc" +		    $err "$_xm: mksrc"  		# make a src archive containing only u-boot  	else -		cd "${srcdir%/*}" || err "${_xm}: mktarball \"${srcdir}\"" +		cd "${srcdir%/*}" || $err "${_xm}: mktarball \"${srcdir}\""  		mktarball "${srcdir##*/}" "${srcdir##*/}.tar.xz" || \ -		    err "$_xm: mksrc" +		    $err "$_xm: mksrc"  	fi -	) || err "can't create src tarball" +	) || $err "can't create src tarball"  	[ "${mode}" = "src" ] && return 0  	[ "${mode}" = "u-boot" ] && return 0  	( -	cd "${srcdir}" || err "${_xm}: 2 !cd \"${srcdir}\"" +	cd "${srcdir}" || $err "${_xm}: 2 !cd \"${srcdir}\""  	mkrom_images -	) || err "can't build rom images" +	) || $err "can't build rom images" -	rm -Rf "${srcdir}" || err "!rm -Rf ${srcdir}" +	rm -Rf "${srcdir}" || $err "!rm -Rf ${srcdir}"  }  fetch_trees() @@ -85,7 +88,7 @@ fetch_trees()  	for x in config/git/*; do  		[ "${mode}" = "u-boot" ] && break  		[ ! -f "${x}" ] || ./update trees -f "${x#config/git/}" || \ -		    err "${_xm}: fetch ${x#config/git/}" +		    $err "${_xm}: fetch ${x#config/git/}"  	done  	[ "${mode}" = "u-boot" ] && x_ ./update trees -f u-boot @@ -93,56 +96,56 @@ fetch_trees()  		[ -f "${x}" ] || continue  		xp="${x#*/}"; xp="${xp%/*}"  		[ -L "${xp}" ] || rm -Rf "src/${xp}/${xp}" || \ -		    err "!rm -Rf \"src/${xp}/${xp}\"" +		    $err "!rm -Rf \"src/${xp}/${xp}\""  	done -	find . -name ".git" -exec rm -Rf {} + || err "$_xm: rm .git" -	find . -name ".gitmodules" -exec rm -Rf {} + || err "$_xm: rm .gitmod" +	find . -name ".git" -exec rm -Rf {} + || $err "$_xm: rm .git" +	find . -name ".gitmodules" -exec rm -Rf {} + || $err "$_xm: rm .gitmod"  	x_ rm -Rf tmp .git  }  mkrom_images()  { -	./build roms all || err "${_xm}: roms-all" -	./build serprog rp2040 || err "${_xm}: rp2040" -	./build serprog stm32 || err "${_xm}: stm32" +	./build roms all || $err "${_xm}: roms-all" +	./build serprog rp2040 || $err "${_xm}: rp2040" +	./build serprog stm32 || $err "${_xm}: stm32"  	for rombuild in bin/*; do  		[ -d "${rombuild}" ] || continue  		handle_rom_archive "${rombuild}"  	done -	mv "release/${version}/roms/" ../roms || err "${_xm}: copy roms/" +	mv "release/${version}/roms/" ../roms || $err "${_xm}: copy roms/"  }  handle_rom_archive()  {  	builddir="${1}"  	romdir="tmp/romdir" -	rm -Rf "${romdir}" || err "!rm romdir, handle_rom_archive" +	rm -Rf "${romdir}" || $err "!rm romdir, handle_rom_archive"  	target="${builddir##*/}"  	if [ ! -f "config/coreboot/${target}/target.cfg" ]; then  		# No config, just make a tarball  		tarball="release/${version}/roms/${relname}_${target}.tar.xz"  		insert_copying_files "${builddir}" || \ -		    err "!insert copy, handle, ${builddir}" +		    $err "!insert copy, handle, ${builddir}"  		mktarball "${builddir}" "${tarball}"  		return 0  	fi  	romdir="${romdir}/bin/${target}" -	mkdir -p "${romdir}" || err "!mkdir -p romdir, handle_rom_archive" -	cp "$builddir/"* "$romdir" || err "!cp romdir, handle_rom_archive" +	mkdir -p "${romdir}" || $err "!mkdir -p romdir, handle_rom_archive" +	cp "$builddir/"* "$romdir" || $err "!cp romdir, handle_rom_archive"  	nukerom  	printf "Generating release/%s/roms/%s-%s_%s.tar.xz\n" \  	    "${version}" "${projectname}" "${version}" "${target##*/}"  	insert_version_files "${romdir}" || \ -	    err "mkrom_tarball ${romdir}: versionfile" +	    $err "mkrom_tarball ${romdir}: versionfile" -	insert_copying_files "$romdir" || err "!insert copy, handle 2, $romdir" +	insert_copying_files "$romdir" || $err "!insert copy, handle 2, $romdir"  	mkrom_tarball  } @@ -152,18 +155,18 @@ nukerom()  	# Hash the images before removing vendor files  	# which "./vendor inject" uses for verification -	rm -f "${romdir}/vendorhashes" || err "!rm ${romdir}/vendorhashes" -	touch "${romdir}/vendorhashes" || err "!touch ${romdir}/vendorhashes" +	rm -f "${romdir}/vendorhashes" || $err "!rm ${romdir}/vendorhashes" +	touch "${romdir}/vendorhashes" || $err "!touch ${romdir}/vendorhashes"  	( -	cd "${romdir}" || err "!cd romdir ${romdir}, nukerom" +	cd "${romdir}" || $err "!cd romdir ${romdir}, nukerom"  	sha512sum ./*.rom >> vendorhashes || \ -	    err "!create vendorhashes, nukerom" -	) || err "can't create vendor hashes" +	    $err "!create vendorhashes, nukerom" +	) || $err "can't create vendor hashes"  	for romfile in "${romdir}"/*.rom; do  		[ -f "${romfile}" ] || continue  		./vendor inject -r "$romfile" -b "$target" -n nuke || \ -		    err "!vendor inject (nuke) ${romfile}, nukerom" +		    $err "!vendor inject (nuke) ${romfile}, nukerom"  	done  } @@ -182,19 +185,20 @@ insert_copying_files()  	cp -R "src/u-boot/default/Licenses" "${l}/COPYING.u-boot" || return 1  	printf "Multiple licenses. Check corresponding %s source archive\n" \  	    "${projectname}" > "${1}/COPYING" || return 1 +	rm -f src/u-boot/*/test/lib/strlcat.c || return 1  }  mkrom_tarball()  {  	archivename="${relname}_${target##*/}"  	f="release/${version}/roms/${archivename}" -	mkdir -p "${f%/*}" || err "mkrom_tarball: !mkdir -p ${f%/*}" +	mkdir -p "${f%/*}" || $err "mkrom_tarball: !mkdir -p ${f%/*}"  	( -	cd "${romdir%"/bin/$target"}" || err "!cd ${romdir%"/bin/$target"}" +	cd "${romdir%"/bin/$target"}" || $err "!cd ${romdir%"/bin/$target"}"  	mktarball "bin/${target}" "${archivename}.tar.xz" -	) || err "can't create rom tarball" +	) || $err "can't create rom tarball"  	mv "${romdir%"/bin/${target}"}/${archivename}.tar.xz"* "${f%/*}" || \ -	    err "mktar ${f%/*}/${romdir%"/bin/$target"}/$archivename.tar.xz" +	    $err "mktar ${f%/*}/${romdir%"/bin/$target"}/$archivename.tar.xz"  	printf "Created ROM archive: %s" "${f%/*}/${archivename}.tar.xz"  } @@ -212,20 +216,22 @@ mktarball()  	tar_implementation=$(tar --version | head -n1) || :  	[ "${2%/*}" = "${2}" ] || \ -		mkdir -p "${2%/*}" || err "mk, !mkdir -p \"${2%/*}\"" +		mkdir -p "${2%/*}" || $err "mk, !mkdir -p \"${2%/*}\"" +	printf "\nCreating archive: %s\n\n" "$2"  	if [ "${tar_implementation% *}" = "tar (GNU tar)" ]; then  		tar --sort=name --owner=root:0 --group=root:0 \ -		    --mtime="UTC 2024-02-25" -c "$1" | xz -T0 -9e > "$2" || \ -		    err "mktarball 1, ${1}" +		    --mtime="UTC 2024-02-25" -c "$1" | xz -T$threads -9e \ +		    > "$2" || $err "mktarball 1, ${1}"  	else  		# TODO: reproducible tarballs on non-GNU systems -		tar -c "$1" | xz -T0 -9e > "$2" || err "mktarball 2, $1" +		tar -c "$1" | xz -T$threads -9e > "$2" || \ +		    $err "mktarball 2, $1"  	fi  	(  	[ "${2%/*}" != "${2}" ] && x_ cd "${2%/*}"  	sha512sum "${2##*/}" > "${2##*/}.sha512" || \ -	    err "!sha512sum \"${2##*/}\" > \"${2##*/}.sha512\"" -	) || err "failed to create tarball checksum" +	    $err "!sha512sum \"${2##*/}\" > \"${2##*/}.sha512\"" +	) || $err "failed to create tarball checksum"  }  main $@ | 
