diff options
| -rwxr-xr-x | script/build/boot/roms_helper | 25 | ||||
| -rwxr-xr-x | script/build/release/roms | 86 | 
2 files changed, 67 insertions, 44 deletions
| diff --git a/script/build/boot/roms_helper b/script/build/boot/roms_helper index bd94a4b8..93574d9e 100755 --- a/script/build/boot/roms_helper +++ b/script/build/boot/roms_helper @@ -33,7 +33,6 @@ projectname="$(cat projectname)"  cfgsdir="resources/coreboot"  blobs_required="" -microcode_required=""  board=""  ubdir="" @@ -150,9 +149,6 @@ configure_target()  	[ "${payload_uboot}" = "y" ] && [ "${uboot_config}" = "undefined" ] && \  		uboot_config="default" -	[ "${microcode_required}" != "n" ] && \ -	    [ "${microcode_required}" != "y" ] && \ -		microcode_required="y"  	[ "${blobs_required}" != "n" ] && [ "${blobs_required}" != "y" ] && \  		blobs_required="y" @@ -530,28 +526,13 @@ mkUbootRom() {  moverom() {  	rompath="${1}"  	newrompath="${2}" -	[ "${blobs_required}" = "n" ] && \ -		newrompath="${newrompath%.rom}_noblobs.rom"  	printf "\nCreating new ROM image: %s\n" "${newrompath}" -	cp "${rompath}" "${newrompath}" || err "moverom: can't copy rom" +	[ "${blobs_required}" = "n" ] && \ +		newrompath="${newrompath%.rom}_noblobs.rom" -	if [ "${microcode_required}" = "n" ]; then -		_newrom_b="${newrompath%.rom}_nomicrocode.rom" -		cp "${newrompath}" "${_newrom_b}" || \ -		    err "moverom: cp \"${newrompath}\" \"${_newrom_b}\"" -		microcode_present="y" -		"${cbfstool}" "${_newrom_b}" remove -n \ -		    cpu_microcode_blob.bin 2>/dev/null || microcode_present="n" -		if [ "${microcode_present}" = "n" ]; then -			printf "REMARK: '%s' already lacks microcode\n" \ -			    "${newrompath}" -			printf "Renaming default ROM file instead.\n" -			mv "${newrompath}" "${_newrom_b}" || \ -			    err "moverom: mv \"${newrompath}\" \"${_newrom_b}\"" -		fi -	fi +	cp "${rompath}" "${newrompath}" || err "moverom: can't copy rom"  }  main $@ diff --git a/script/build/release/roms b/script/build/release/roms index 572ceca2..fa27c031 100755 --- a/script/build/release/roms +++ b/script/build/release/roms @@ -34,6 +34,7 @@ CONFIG_KBC1126_FIRMWARE=""  CONFIG_INCLUDE_SMSC_SCH5545_EC_FW=""  ifdtool="cbutils/${tree}/ifdtool"  cbfstool="cbutils/${tree}/cbfstool" +microcode_required="y"  main()  { @@ -42,6 +43,7 @@ main()  	init_check  	for romdir in bin/*; do +		[ -d "${romdir}" ] || continue  		make_archive "${romdir}"  	done @@ -74,11 +76,25 @@ init_check()  make_archive()  { -	romdir=${1} -	target="${romdir##*/}" +	builddir="${1}" +	romdir="$(mktemp -d -t coreboot_rom.XXXXXXXXXX)" || \ +	    err "make_archive: cannot create tmpdir" +	rm -Rf "${romdir}" || err "make_archive: can't remove tmpdir" +	target="${builddir##*/}" +	romdir="${romdir}/bin/${target}" +	mkdir -p "${romdir}" || \ +	    err "make_archive: can't mkdir tmpdir" +	cp "${builddir}"/* "${romdir}" || \ +	    err "make_archive: cannot copy ROM images directory -> ${romdir}"  	echo ${target} -	[ -d "${romdir}/" ] || continue + +	[ -f "resources/coreboot/${target}/target.cfg" ] || \ +		err "make_archive: ${target}: target.cfg is missing" + +	. "resources/coreboot/${target}/target.cfg" +	[ "${microcode_required}" = "y" ] || \ +	    [ "${microcode_required}" = "n" ] || microcode_required="y"  	CONFIG_HAVE_MRC="y"  	CONFIG_HAVE_ME_BIN="y" @@ -97,7 +113,8 @@ make_archive()  	# remove ME/MRC/EC firmware from ROM images  	if [ "${CONFIG_HAVE_ME_BIN}" = "y" ] || \ -	    [ "${target}" = "e6400nvidia_4mb" ]; then +	    [ "${target}" = "e6400nvidia_4mb" ] || \ +	    [ "${microcode_required}" = "n" ]; then  		strip_archive "${romdir}"  	fi @@ -110,15 +127,17 @@ make_archive()  	printf "%s\n" "${projectname}" > "${romdir}/projectname" || \  	    err "make_archive: can't create ${romdir}/projectname" -	f="release/${version}/roms/${projectname}-${version}_${target##*/}" -	tar -c "${romdir}/" | xz -9e > "${f}.tar.xz" || \ -	    err "make_archive: can't create ${f}.tar.xz" - -	if [ -d "${romdir}_tmp" ]; then -		rm -Rf "${romdir}" || err "make_archive: !rm -Rf ${romdir}" -		mv "${romdir}_tmp" "${romdir}" || \ -		    err "make_archive: !mv \"${romdir}_tmp\" \"${romdir}\"" -	fi +	archivename="${projectname}-${version}_${target##*/}" +	f="release/${version}/roms/${archivename}" +	( +	cd "${romdir%/bin/${target}}" || err "make_archive: can't cd to tmpdir" +	tar -c "bin/${target}/" | xz -9e > "${archivename}.tar.xz" || \ +	    err "make_archive:cant make ${projectname}-${version}_${target##*/}" +	) +	cp "${romdir%/bin/${target}}/${archivename}.tar.xz" "${f}.tar.xz" || \ +	    err "make_archive: can't copy tarball" +	rm -Rf "${romdir%/bin/${target}}" || \ +	    err "make_archive: can't delete tmpdir"  }  strip_archive() @@ -131,10 +150,17 @@ strip_archive()  	./build coreboot utils ${tree} || \  	    err "strip_archive: coreboot/${tree}: can't build utils" -	# dirty hack, to reduce disk io later -	# rather than using /tmp, which might not be tmpfs -	rm -Rf "${romdir}_tmp" || err "strip_archive: !rm -Rf ${romdir}_tmp" -	mkdir "${romdir}_tmp" || err "strip_archive: !mkdir ${romdir}_tmp" +	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 +			mv "${romfile}" "${romfile%.tmprom}.rom" || \ +			    err "can't make no-u rom: ${romfile%.tmprom}.rom" +		done +	fi  	# Hash the rom before removing blobs  	rm -f "${romdir}/blobhashes" || \ @@ -149,10 +175,30 @@ strip_archive()  	)  	for romfile in "${romdir}"/*.rom; do +		[ -f "${romfile}" ] || continue  		strip_rom_image "${romfile}"  	done  } +strip_ucode() +{ +	romfile=${1} + +	_newrom_b="${romfile%.rom}_nomicrocode.tmprom" +	cp "${romfile}" "${_newrom_b}" || \ +	    err "strip_rom_image: cp \"${romfile}\" \"${_newrom_b}\"" +	microcode_present="y" +	"${cbfstool}" "${_newrom_b}" remove -n \ +	    cpu_microcode_blob.bin 2>/dev/null || microcode_present="n" +	if [ "${microcode_present}" = "n" ]; then +		printf "REMARK: '%s' already lacks microcode\n" \ +		    "${romfile}" +		printf "Renaming default ROM file instead.\n" +		mv "${romfile}" "${_newrom_b}" || \ +		    err "strip_rom_image: can't rename no-u ${romfile}" +	fi +} +  strip_rom_image()  {  	romfile=${1} @@ -160,12 +206,8 @@ strip_rom_image()  	[ -f "${romfile}" ] || return 0  	if [ "${CONFIG_HAVE_ME_BIN}" = "y" ]; then -		"${ifdtool}" --nuke me "${romfile}" || \ +		"${ifdtool}" --nuke me "${romfile}" -O "${romfile}" || \  		    err "strip_rom_images: ${romfile}: cannot nuke Intel ME" -		mv "${romfile}" "${romdir}_tmp" || \ -		    err "strip_rom_images: !mv ${romfile} ${romdir}_tmp" -		mv "${romfile}.new" "${romfile}" || \ -		    err "strip_rom_images: !mv ${romfile}.new ${romfile}"  	fi  	if [ "${CONFIG_HAVE_MRC}" = "y" ]; then | 
