diff options
Diffstat (limited to 'include/vendor.sh')
| -rw-r--r-- | include/vendor.sh | 70 | 
1 files changed, 17 insertions, 53 deletions
| diff --git a/include/vendor.sh b/include/vendor.sh index c5bd40df..38e25348 100644 --- a/include/vendor.sh +++ b/include/vendor.sh @@ -343,66 +343,38 @@ vendor_inject()  		    [ -z "$new_mac" ] && $err "Empty MAC address specified" ;;  	*) $err "Unrecognised inject mode: '$2'"  	esac -  	[ "$new_mac" = "keep" ] && new_mac="" -	check_release "$archive" || \ -	    $err "You must run this script on a release archive. - $dontflash" - -	[ "$new_mac" = "restore" ] && \ -	    printf "Restoring default GbE for '$archive', board '$board'\n" +	check_release "$archive" || $err "'$archive' is not a release archive"  	readcfg && need_files="y"  	if [ "$need_files" = "y" ] || [ -n "$new_mac" ]; then -		if [ "$nukemode" != "nuke" ] && [ "$need_files" = "y" ]; then -			x_ ./mk download "$board" -		fi +		[ "$nukemode" != "nuke" ] && [ "$need_files" = "y" ] && \ +		    x_ ./mk download "$board"  		patch_release_roms  	fi -	[ "$need_files" != "y" ] && printf \ -	    "\nTarball '%s' (board '%s) doesn't need vendorfiles.\n" \ -	    "$archive" "$board" 1>&2  	xtype="patched" && [ "$nukemode" = "nuke" ] && xtype="nuked"  	[ "$xchanged" != "y" ] && \ -		printf "\nRelease archive '%s' was *NOT* modified.\n" \ -		    "$archive" && [ "$has_hashes" = "y" ] && \ -		    printf "WARNING: '%s' contains '%s'. DO NOT FLASH!\n" \ -		    "$archive" "$hashfile" 1>&2 && \ -		    printf "(vendorfiles may be needed and aren't there)\n" \ -		    1>&2 +		printf "\nArchive '%s' was *NOT* modified.\n" "$archive"  	[ "$xchanged" = "y" ] && \ -		printf "\nRelease archive '%s' successfully %s.\n" \ -		    "$archive" "$xtype" && [ "$nukemode" != "nuke" ] && \ -		printf "You may now extract '%s' and flash images from it.\n" \ -		    "$archive" +		printf "\nArchive '%s' successfully %s.\n" "$archive" "$xtype"  	[ "$xchanged" = "y" ] && [ "$nukemode" = "nuke" ] && \ -		printf "WARNING! Vendorfiles *removed*. DO NOT FLASH.\n" 1>&2 \ -		    && printf "DO NOT flash images from '%s'\n" \ -		    "$archive" 1>&2 +		printf "WARNING! Vendorfiles *removed*. DO NOT FLASH.\n" 1>&2  	[ "$need_files" = "n" ] && printf \ -	    "Board '%s' doesn't use vendorfiles, so none were inserted.\n" \ -	    "$board" - -	if [ "$xchanged" != "y" ] && [ "$need_files" = "y" ] && \ -	    [ "$nukemode" = "nuke" ] && [ "$has_hashes" != "y" ]; then -		printf "FAILED NUKE: tarball '$archive', board '$board'\n" 1>&2 -		$err "Unhandled vendorfile deletion: DO NOT RELEASE TO RSYNC" -	fi +	    "Board '%s' doesn't use vendorfiles.\n" "$board"  	err="$_olderr"; :  }  check_release()  { -	[ -L "$archive" ] && \ -	    $err "'$archive' is a symlink, not a file - $dontflash" +	[ -L "$archive" ] && $err "'$archive' is a symlink. $dontflash"  	e "$archive" f missing && return 1  	archivename="`basename "$archive"`" -	[ -z "$archivename" ] && \ -	    $err "Cannot determine archive file name - $dontflash" +	[ -z "$archivename" ] && $err "Can't determine archive name. $dontflash"  	case "$archivename" in  	*_src.tar.xz) @@ -424,8 +396,7 @@ readcfg()  	boarddir="$cbcfgsdir/$board"  	eval "`setcfg "$boarddir/target.cfg"`" -	chkvars tree -	x_ ./mk -d coreboot "$tree" # even if vendorfiles not used, see: setmac +	chkvars tree && x_ ./mk -d coreboot "$tree"  	[ -z "$vcfg" ] && return 1 @@ -446,8 +417,8 @@ readcfg()  patch_release_roms()  {  	has_hashes="n" -  	tmpromdir="tmp/DO_NOT_FLASH/bin/$board" +  	remkdir "${tmpromdir%"/bin/$board"}"  	x_ tar -xf "$archive" -C "${tmpromdir%"/bin/$board"}" @@ -484,8 +455,7 @@ patch_release_roms()  	# NOTE: For compatibility with older rom releases, defer to sha1  	if [ "$has_hashes" = "y" ] && [ "$nukemode" != "nuke" ]; then  		sha512sum --status -c "$hashfile" || \ -		    sha1sum --status -c "$hashfile" || \ -		    $err "'$archive' -> Can't verify vendor hashes. $dontflash" +		    x_ sha1sum --status -c "$hashfile"  		x_ rm -f "$hashfile"  	fi  	) || $err "'$archive' -> Can't verify vendor hashes. $dontflash" @@ -508,21 +478,16 @@ process_release_rom()  {  	_xrom="$1"  	_xromname="${1##*/}" +	_xromnew="${_xrom%/*}/${_xromname#"$vfix"}" +	[ "$nukemode" = "nuke" ] && _xromnew="${_xrom%/*}/$vfix${_xrom##*/}"  	e "$_xrom" f missing && return 0 - -	[ -z "${_xromname#"$vfix"}" ] && \ -	    $err "'$_xromname'->'"${_xromname#"$vfix"}"' empty. $dontflash" +	[ -z "${_xromname#"$vfix"}" ] && $err "$_xromname / $vfix: name match"  	# Remove the prefix and 1-byte pad  	if [ "$nukemode" != "nuke" ] && \  	    [ "${_xromname#"$vfix"}" != "$_xromname" ]; then -		_xromnew="${_xrom%/*}/${_xromname#"$vfix"}" - -		stat -c '%s' "$_xrom" > "tmp/rom.size" || $err "!resize $_xrom" -		read -r xromsize < "tmp/rom.size" || $err "!readsize $_xrom" - -		xromsize="`expr $xromsize - 1`" || $err "!integer, $_xrom" +		xromsize="$(expr $(stat -c '%s' "$_xrom") - 1)" || $err "!int"  		[ $xromsize -lt 524288 ] && $err "too small, $xromsize: $_xrom"  		x_ dd if="$_xrom" of="$_xromnew" bs=$xromsize count=1 @@ -537,8 +502,7 @@ process_release_rom()  	[ "$nukemode" != "nuke" ] && return 0  	# Rename the file, prefixing a warning saying not to flash -	cat "$_xrom" tmp/zero.1b > "${_xrom%/*}/$vfix${_xrom##*/}" || \ -	    $err "'$archive' -> can't pad/rename '$_xrom'. $dontflash" +	cat "$_xrom" tmp/zero.1b > "$_xromnew" || $err "$archive: !pad $_xrom"  	x_ rm -f "$_xrom"  } | 
