diff options
| -rwxr-xr-x | build | 25 | ||||
| -rw-r--r-- | config/submodule/coreboot/default/vboot/patches/0001-test-patch.patch | 26 | ||||
| -rwxr-xr-x | include/git.sh | 38 | ||||
| -rwxr-xr-x | include/option.sh | 8 | ||||
| -rwxr-xr-x | script/roms | 52 | ||||
| -rwxr-xr-x | script/trees | 3 | 
6 files changed, 85 insertions, 67 deletions
@@ -28,7 +28,7 @@ main()  	[ $# -lt 1 ] && $err "Check $projectname documentation for help."  	spath="script/$1" -	[ "$1" = "dependencies" ] && x_ install_packages $@ && xbmk_exit 0 +	[ "$1" = "dependencies" ] && x_ install_packages $@ && return 0  	which git 1>/dev/null 2>/dev/null || \  	    git_err "git not installed. please install git-scm." @@ -50,7 +50,6 @@ main()  		shift 1; "$spath" $@ || $err "excmd: ${spath} ${@}" ;;  	esac  	set -u -e # some commands disable them. turn them on! -	xbmk_exit 0  }  install_packages() @@ -66,13 +65,10 @@ install_packages()  	. "config/dependencies/${2}" -	x_ ${pkg_add} ${pkglist} -	[ -z "${aur_notice}" ] && return 0 -	printf "You must install AUR packages: %s\n" "$aur_notice" 1>&2 +	x_ $pkg_add $pkglist && [ -n "$aur_notice" ] && \ +	printf "Please install AUR packages: %s\n" "$aur_notice" 1>&2; return 0  } -# release archives contain .gitignore, but not .git. -# xbmk can be run from xbmk.git, or an archive.  git_init()  {  	[ -L ".git" ] && $err "Reference .git is a symlink" @@ -125,13 +121,11 @@ build_release()  	) || $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" +	    --abbrev-commit > "${srcdir}/CHANGELOG" || $err "!gitlog $srcdir"  	(  	cd "${srcdir%/*}" || $err "${_xm}: mktarball \"${srcdir}\"" -	mktarball "${srcdir##*/}" "${srcdir##*/}.tar.xz" || \ -	    $err "$_xm: mksrc" +	mktarball "${srcdir##*/}" "${srcdir##*/}.tar.xz" || $err "$_xm: mksrc"  	) || $err "can't create src tarball"  	[ "${mode}" = "src" ] && return 0 @@ -151,22 +145,14 @@ fetch_trees()  	for x in $(items config/git); do  		./update trees -f "$x" || $err "$_xm: fetch $x"  	done -  	for x in config/*/build.list; do  		[ -f "$x" ] && xp="${x#*/}" && xp="${xp%/*}"  		[ ! -f "$x" ] || [ -L "$xp" ] || x_ rm -Rf "src/$xp/$xp"  	done -  	rmgit .  	rm -Rf tmp .git src/u-boot/*/test/lib/strlcat.c || $err "$_xm !rm"  } -xbmk_exit() -{ -	tmp_cleanup || err_ "xbmk_exit: can't rm tmpdir upon exit $1: $tmpdir" -	exit $1 -} -  fail()  {  	tmp_cleanup || printf "WARNING: can't rm tmpdir: %s\n" "$tmpdir" 1>&2 @@ -180,3 +166,4 @@ tmp_cleanup()  }  main $@ +tmp_cleanup || err_ "can't rm tmpdir upon non-zero exit: $tmpdir" diff --git a/config/submodule/coreboot/default/vboot/patches/0001-test-patch.patch b/config/submodule/coreboot/default/vboot/patches/0001-test-patch.patch new file mode 100644 index 00000000..66428b56 --- /dev/null +++ b/config/submodule/coreboot/default/vboot/patches/0001-test-patch.patch @@ -0,0 +1,26 @@ +From 68f99140dda455a4f4e9d73df6d7b0a504494e95 Mon Sep 17 00:00:00 2001 +From: Leah Rowe <info@minifree.org> +Date: Sun, 19 May 2024 23:35:52 +0100 +Subject: [PATCH 1/1] test patch + +Signed-off-by: Leah Rowe <info@minifree.org> +--- + Makefile | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/Makefile b/Makefile +index 4cb265b2..ef29489f 100644 +--- a/Makefile ++++ b/Makefile +@@ -2,6 +2,8 @@ + # Use of this source code is governed by a BSD-style license that can be + # found in the LICENSE file. +  ++# test ++ + # This Makefile normally builds in a 'build' subdir, but use + # + #    make BUILD=<dir> +--  +2.39.2 + diff --git a/include/git.sh b/include/git.sh index bc818b19..934976eb 100755 --- a/include/git.sh +++ b/include/git.sh @@ -7,7 +7,8 @@ eval "$(setvars "" _target rev _xm loc url bkup_url depend tree_depend xtree)"  fetch_project_trees()  {  	_target="${target}" -	[ -d "src/${project}/${project}" ] || fetch_from_upstream +	[ ! -d "src/${project}/${project}" ] && x_ mkdir -p "src/${project}" \ +	    && fetch_project_repo "${project}"  	fetch_config  	if [ -d "src/${project}/${tree}" ]; then  		printf "download/%s %s (%s): exists\n" \ @@ -17,14 +18,6 @@ fetch_project_trees()  	prepare_new_tree  } -fetch_from_upstream() -{ -	[ -d "src/${project}/${project}" ] && return 0 - -	x_ mkdir -p "src/${project}" -	fetch_project_repo "${project}" -} -  fetch_config()  {  	rm -f "${cfgsdir}/"*/seen || $err "fetch_config ${cfgsdir}: !rm seen" @@ -100,6 +93,9 @@ git_prep()  	if [ "$project" != "coreboot" ] || [ $# -gt 2 ]; then  		[ ! -f "$tmpgit/.gitmodules" ] || git -C "$tmpgit" submodule \  		    update --init --checkout || $err "git_prep $_loc: !submod" + +		patch_submodules +  		if [ "$project" = "coreboot" ] && [ -n "$xtree" ] && \  		    [ "$xtree" != "$tree" ]; then  			( @@ -111,12 +107,32 @@ git_prep()  		fi  	fi -	[ "$xbmk_release" = "y" ] && rmgit "$tmpgit" +	[ "$xbmk_release" = "y" ] && [ "$_loc" != "src/$project/$project" ] \ +	    && rmgit "$tmpgit" +  	[ "$_loc" = "${_loc%/*}" ] || x_ mkdir -p "${_loc%/*}"  	mv "$tmpgit" "$_loc" || $err "git_prep: !mv $tmpgit $_loc"  	[ -n "$xtree" ] && [ ! -d "src/coreboot/$xtree" ] && \ -		x_ ./update project trees -f coreboot "$xtree"; return 0 +		x_ ./update trees -f coreboot "$xtree"; return 0 +} + +patch_submodules() +{ +	moddir="${PWD}/config/submodule/$project" +	[ -n "$tree" ] && moddir="$moddir/$tree" +	[ -d "$moddir" ] || return 0 + +	git -C "$tmpgit" submodule status | awk '{print $2}' > \ +	    "$tmpdir/modules" || $err "$moddir: cannot list submodules" + +	while read -r modsrcdir; do +		modname="${modsrcdir##*/}" +		modpatchdir="$moddir/$modname/patches" +		[ -d "$modpatchdir" ] || continue + +		git_am_patches "$tmpgit/$modsrcdir" "$modpatchdir" +	done < "$tmpdir/modules"  }  git_am_patches() diff --git a/include/option.sh b/include/option.sh index 45066166..bfeb9eb3 100755 --- a/include/option.sh +++ b/include/option.sh @@ -151,11 +151,11 @@ git_err()  	$err "Git name/email not configured"  } -mktar_release() +mkrom_tarball()  { -	printf "%s\n" "${version}" > "${1}/version" || return 1 -	printf "%s\n" "${versiondate}" > "${1}/versiondate" || return 1 -	printf "%s\n" "${projectname}" > "${1}/projectname" || return 1 +	printf "%s\n" "${version}" > "${1}/version" || $err "$1 !version" +	printf "%s\n" "${versiondate}" > "${1}/versiondate" || $err "$1 !vdate" +	printf "%s\n" "${projectname}" > "${1}/projectname" || $err "$1 !pname"  	mktarball "$1" "${1%/*}/${relname}_${1##*/}.tar.xz"  	x_ rm -Rf "$1" diff --git a/script/roms b/script/roms index 292193e9..b375d939 100755 --- a/script/roms +++ b/script/roms @@ -56,7 +56,9 @@ main()  		[ "${all}" != "y" ] || boards=$(items config/coreboot) || \  			$err "Cannot generate list of boards for building"  		for x in ${boards}; do -			handle_coreboot_target "$x" +			[ -d "config/coreboot/$x/config" ] && \ +				handle_coreboot_target "$x" && continue +			printf "No configs for %s; skipping\n" "$x"  		done  	fi @@ -99,7 +101,7 @@ handle_serprog()  			done  	fi -	[ "$xbmk_release" = "y" ] && mktar_release "bin/serprog_$1"; return 0 +	[ "$xbmk_release" = "y" ] && mkrom_tarball "bin/serprog_$1"; return 0  }  build_rp2040_rom() @@ -148,10 +150,8 @@ handle_coreboot_target()  	[ -d "bin/${board}" ] || return 0  	[ "$xbmk_release" = "y" ] || targets="* bin/${board}\n${targets}" -	[ "$xbmk_release" = "y" ] || return 0 - -	targets="* bin/${relname}_$board.tar.xz\n$targets" -	mktar_release "bin/$board" +	[ "$xbmk_release" = "y" ] && mkrom_tarball "bin/$board" && \ +	targets="* bin/${relname}_$board.tar.xz\n$targets"; return 0  }  configure_target() @@ -179,11 +179,10 @@ configure_target()  	[ "$payload_seabios_grubonly" = "y" ] && payload_seabios_withgrub="y"  	# The reverse logic must not be applied. If SeaBIOS-with-GRUB works, -	# that doesn't mean GRUB-withSeaBIOS will. For example, the board -	# might have a graphics card whose vga rom coreboot doesn't execute +	# that doesn't mean GRUB-with-SeaBIOS will, e.g. VGA ROM execution  	[ "$payload_grub" != "y" ] && [ "$payload_seabios" != "y" ] && \ -	    [ "${payload_uboot}" != "y" ] && ! check_defconfig "$targetdir" \ -		&& $err "target '$board' defines no payload" +	    [ "${payload_uboot}" != "y" ] && \ +		$err "target '$board' defines no payload"  	[ "$payload_uboot" != "n" ] && [ "$payload_uboot" != "y" ] && \  		payload_uboot="n" @@ -192,7 +191,6 @@ configure_target()  	# Override all payload directives with cmdline args  	[ -z "${_payload}" ] && return 0 -	printf "setting payload to: %s\n" "${_payload}"  	eval "$(setvars "n" payload_grub payload_memtest payload_seabios \  	    payload_seabios_withgrub payload_uboot payload_grub_withseabios \  	    payload_seabios_grubonly)" @@ -235,13 +233,9 @@ build_grub_payload()  	[ -f "$grubelf" ] && return 0  	[ -f "src/grub/grub-mkstandalone" ] || x_ ./update trees -b grub -	./src/grub/grub-mkstandalone \ -	    --grub-mkimage="src/grub/grub-mkimage" \ -	    -O i386-coreboot \ -	    -o "elf/grub/grub.elf" \ -	    -d "src/grub/grub-core/" \ -	    --fonts= --themes= --locales=  \ -	    --modules="${grub_modules}" \ +	./src/grub/grub-mkstandalone --grub-mkimage="src/grub/grub-mkimage" \ +	    -O i386-coreboot -o "elf/grub/grub.elf" -d "src/grub/grub-core/" \ +	    --fonts= --themes= --locales=  --modules="${grub_modules}" \  	    --install-modules="${grub_install_modules}" \  	    "/boot/grub/grub.cfg=${grubcfgsdir}/config/grub_memdisk.cfg" \  	    "/boot/grub/grub_default.cfg=${grubcfgsdir}/config/grub.cfg" || \ @@ -255,8 +249,7 @@ build_uboot_payload()  	ubootelf="${ubdir}/u-boot.elf"  	[ ! -f "${ubootelf}" ] && [ -f "${ubdir}/u-boot" ] && \  		ubootelf="${ubdir}/u-boot" -	[ -f "${ubootelf}" ] && return 0 -	$err "Can't find u-boot build for board, $board"; +	[ -f "${ubootelf}" ] || $err "$board: Can't find u-boot"; return 0  }  build_target_mainboard() @@ -281,7 +274,6 @@ build_target_mainboard()  	done  } -# Main ROM building function. This calls all other functions below  build_roms()  {  	cbcfg="${1}" @@ -323,7 +315,7 @@ build_seabios_roms()  		newrom="${romdir}/seabios_${board}_${initmode}_${displaymode}"  		[ "${initmode}" = "normal" ] && newrom="${romdir}/seabios" \  			&& newrom="${newrom}_${board}_${initmode}" -		x_ moverom "${t}" "${newrom}.rom" +		x_ copyrom "${t}" "${newrom}.rom"  	fi  	x_ rm -f "${t}"  } @@ -387,14 +379,14 @@ build_grub_roms()  		[ "${initmode}" = "normal" ] && \  			newrom="${romdir}/${payload1}_${board}_" && \  			newrom="${newrom}${initmode}_${keymap}.rom" -		x_ moverom "${tmpgrubrom}" "${newrom}" +		x_ copyrom "${tmpgrubrom}" "${newrom}"  		if [ "${payload_seabios_grubonly}" = "y" ]; then  			x_ "$cbfstool" "$tmpgrubrom" add \  			    -f "config/grub/bootorder" -n bootorder -t raw -			x_ moverom "$tmpgrubrom" "${newrom%.rom}_grubfirst.rom" +			x_ copyrom "$tmpgrubrom" "${newrom%.rom}_grubfirst.rom"  			x_ "$cbfstool" "$tmpgrubrom" add-int -i 0 \  			    -n etc/show-boot-menu -			x_ moverom "$tmpgrubrom" "${newrom%.rom}_grubonly.rom" +			x_ copyrom "$tmpgrubrom" "${newrom%.rom}_grubonly.rom"  		fi  		x_ rm -f "${tmpgrubrom}"  	done @@ -428,7 +420,7 @@ build_uboot_roms()  	tmprom=$(mkUbootRom "${cbrom}" "fallback/payload") || \  	    $err "build_uboot_roms $board: could not create tmprom"  	newrom="${romdir}/uboot_payload_${board}_${initmode}_${displaymode}.rom" -	x_ moverom "${tmprom}" "${newrom}" +	x_ copyrom "${tmprom}" "${newrom}"  	x_ rm -f "${tmprom}"  } @@ -451,16 +443,14 @@ mkUbootRom() {  	printf "%s\n" "${tmprom}"  } -moverom() +copyrom()  {  	printf "Creating target image: %s\n" "$2"  	x_ mkdir -p "${2%/*}"  	x_ cp "$1" "$2" -	[ "$xbmk_release" = "y" ] || return 0 - -	mksha512sum "${2}" "vendorhashes" -	x_ ./vendor inject -r "${2}" -b "$board" -n nuke +	[ "$xbmk_release" = "y" ] && mksha512sum "${2}" "vendorhashes" && \ +	x_ ./vendor inject -r "${2}" -b "$board" -n nuke; return 0  }  main $@ diff --git a/script/trees b/script/trees index 3b126e56..f2b988f1 100755 --- a/script/trees +++ b/script/trees @@ -230,8 +230,7 @@ check_cmake()  		    check_makefile "${1}" || \  		    $err "check_cmake ${1}: can't cmake ${cmakedir}"  	[ -z "${cmakedir}" ] || check_makefile "${1}" || \ -		$err "check_cmake ${1}: could not generate Makefile" -	return 0 +		$err "check_cmake ${1}: can't generate Makefile"; return 0  }  check_autoconf()  | 
