diff options
Diffstat (limited to 'script/update/project/release')
| -rwxr-xr-x | script/update/project/release | 247 | 
1 files changed, 0 insertions, 247 deletions
diff --git a/script/update/project/release b/script/update/project/release deleted file mode 100755 index e7973537..00000000 --- a/script/update/project/release +++ /dev/null @@ -1,247 +0,0 @@ -#!/usr/bin/env sh -# SPDX-License-Identifier: MIT -# SPDX-FileCopyrightText: 2020-2023 Leah Rowe <leah@libreboot.org> - -[ "x${DEBUG+set}" = 'xset' ] && set -v -set -u -e - -. "include/err.sh" -. "include/option.sh" - -eval "$(setvars "" vdir relname src_dirname srcdir _nogit _xm target romdir \ -    microcode_required mode)" - -_f="coreboot u-boot seabios flashrom grub memtest86plus uefitool" -_f="${_f} bios_extract biosutilities pico-serprog stm32-vserprog" -_f="${_f} rpi-pico-serprog" - -main() -{ -	vdir="release" -	while getopts d:m: option; do -		[ -z "${OPTARG}" ] && err "Empty argument not allowed" -		case "${option}" in -		d) vdir="${OPTARG}" ;; -		m) mode="${OPTARG}" ;; -		*) err "Invalid option" ;; -		esac -	done - -	vdir="${vdir}/${version}" -	relname="${projectname}-${version}" -	src_dirname="${relname}_src" -	srcdir="${vdir}/${src_dirname}" - -	[ -e "${vdir}" ] && err "already exists: \"${vdir}\"" - -	mkvdir -	build_release -} - -mkvdir() -{ -	mkdir -p "${vdir}" || err "mkvdir: !mkdir -p \"${vdir}\"" - -	git_init || err "mkvdir: !git_init \"${vdir}\"" -	git clone . "${srcdir}" || err "mkdir: !gitclone \"${srcdir}\"" -	[ -z "${_nogit}" ] || x_ rm -Rf ".git" - -	rm -Rf "${srcdir}/.git" -	insert_version_files "${srcdir}" || err "mkvdir ${srcdir}: versionfile" -} - -# release archives contain .gitignore, but not .git. -# this script can be run from lbmk.git, or an archive. -git_init() -{ -	[ -L ".git" ] && err "Reference .git is a symlink" -	[ -e ".git" ] && return 0 -	eval "$(setvars "$(date -Rd @${versiondate})" cdate _nogit)" - -	git init || return 1 -	git add -A . || return 1 -	git commit -m "${projectname} ${version}" --date "${cdate}" || return 1 -	git tag -a "${version}" -m "${projectname} ${version}" || return 1 -} - -build_release() -{ -	_xm="build_release ${vdir}" -	( -	cd "${srcdir}" || err "${_xm}: !cd \"${srcdir}\"" -	fetch_trees -	) -	( -	cd "${srcdir%/*}" || err "${_xm}: mktarball \"${srcdir}\"" -	mktarball "${srcdir##*/}" "${srcdir##*/}.tar.xz" || err "${_xm}: mksrc" -	) -	if [ "${mode}" != "src" ]; then -		( -		cd "${srcdir}" || err "${_xm}: 2 !cd \"${srcdir}\"" -		mkrom_images -		) -	fi -	rm -Rf "${srcdir}" || err "${_xm}: !rm -Rf \"${srcdir}\"" -} - -fetch_trees() -{ -	for x in ${_f}; do -		./update project trees -f "${x}" || err "${_xm}: fetch ${x}" -	done -	for x in config/*/build.list; do -		[ -f "${x}" ] || continue -		xp="${x#*/}"; xp="${xp%/*}" -		[ -L "${xp}" ] || x_ rm -Rf "src/${xp}/${xp}" -	done -	rm -Rf */.git* */*/.git* */*/*/.git* */*/*/*/.git* */*/*/*/*/.git* \ -	    */*/*/*/*/*/.git* */*/*/*/*/*/*/.git* */*/*/*/*/*/*/*/.git* \ -	    .git tmp || err "${_xm}: rm-dotgit" -} - -mkrom_images() -{ -	./build fw coreboot all || err "${_xm}: roms-all" -	./build fw serprog rp2040 || err "${_xm}: rp2040" -	./build fw 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/" -} - -handle_rom_archive() -{ -	builddir="${1}" -	romdir="tmp/romdir" -	x_ rm -Rf "${romdir}" -	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}" -		mktarball "${builddir}" "${tarball}" -		return 0 -	fi - -	romdir="${romdir}/bin/${target}" -	x_ mkdir -p "${romdir}" -	x_ cp "${builddir}/"* "${romdir}" - -	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" - -	insert_copying_files "${romdir}" -	mkrom_tarball -} - -nukerom() -{ -	microcode_required="y" -	. "config/coreboot/${target}/target.cfg" -	if [ "${microcode_required}" != "y" ] && \ -	    [ "${microcode_required}" != "n" ]; then microcode_required="y"; fi -	if [ "${microcode_required}" = "n" ]; then -		for romfile in "${romdir}"/*.rom; do -			[ -f "${romfile}" ] || continue -			strip_ucode "${romfile}" -		done -		for romfile in "${romdir}"/*.tmprom; do -			[ -f "${romfile}" ] || continue -			x_ mv "${romfile}" "${romfile%.tmprom}.rom" -		done -	fi - -	# Hash the images before removing vendor files -	# which ./update vendor inject uses for verification -	x_ rm -f "${romdir}/vendorhashes" -	x_ touch "${romdir}/vendorhashes" -	( -	x_ cd "${romdir}" -	x_ sha512sum *.rom >> vendorhashes -	) - -	for romfile in "${romdir}"/*.rom; do -		[ -f "${romfile}" ] || continue -		x_ ./update vendor inject -r "${romfile}" -b ${target} -n nuke -	done -} - -strip_ucode() -{ -	romfile=${1} -	_newrom_b="${romfile%.rom}_nomicrocode.tmprom" -	x_ cp "${romfile}" "${_newrom_b}" -	microcode_present="y" -	"${cbfstool}" "${_newrom_b}" remove -n \ -	    cpu_microcode_blob.bin 2>/dev/null || microcode_present="n" -	[ "${microcode_present}" = "n" ] || return 0 -	printf "REMARK: '%s' already lacks microcode\n" "${romfile}" 1>&2 -	printf "Renaming default ROM file instead.\n" 1>&2 -	x_ mv "${romfile}" "${_newrom_b}" -} - -insert_copying_files() -{ -	x_ rm -Rf "${1}/licenses" -	x_ mkdir -p "${1}/licenses" -	l="${1}/licenses" -	# copy licenses to rom image archive, for completion -	x_ cp "src/grub/COPYING" "${l}/COPYING.grub" -	x_ cp "src/coreboot/default/COPYING" "${l}/COPYING.coreboot" -	x_ cp -R "src/coreboot/default/LICENSES" "${l}/LICENSES.coreboot" -	x_ cp "src/seabios/default/COPYING" "${l}/COPYING.coreboot" -	x_ cp "src/seabios/default/COPYING.LESSER" "${l}/COPYING.LESSER.seabios" -	x_ cp -R "src/u-boot/default/Licenses" "${l}/COPYING.u-boot" -} - -mkrom_tarball() -{ -	archivename="${relname}_${target##*/}" -	f="release/${version}/roms/${archivename}" -	x_ mkdir -p "${f%/*}" -	( -	x_ cd "${romdir%/bin/${target}}" -	mktarball "bin/${target}" "${archivename}.tar.xz" -	) -	x_ mv "${romdir%/bin/${target}}/${archivename}.tar.xz"* "${f%/*}" - -	printf "Created ROM archive: ${f%/*}/${archivename}.tar.xz" -} - -insert_version_files() -{ -	printf "%s\n" "${version}" > "${1}/version" || return 1 -	printf "%s\n" "${versiondate}" > "${1}/versiondate" || return 1 -	printf "%s\n" "${projectname}" > "${1}/projectname" || return 1 -} - -mktarball() -{ -	# preserve timestamps for reproducible tarballs -	tar_implementation=$(tar --version | head -n1) || : - -	[ "${2%/*}" = "${2}" ] || x_ mkdir -p "${2%/*}" -	if [ "${tar_implementation% *}" = "tar (GNU tar)" ]; then -		tar --sort=name --owner=root:0 --group=root:0 \ -		    --mtime="UTC 2023-10-14" -c "${1}" | xz -T0 -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}" -	fi -	( -	[ "${2%/*}" != "${2}" ] && x_ cd "${2%/*}" -	x_ sha512sum "${2##*/}" > "${2##*/}.sha512" -	) -} - -main $@  | 
