mirror of
https://codeberg.org/libreboot/lbmk.git
synced 2026-09-19 21:20:31 +02:00
Compare commits
9 Commits
15204cda63
...
6a2e9a7919
| Author | SHA1 | Date | |
|---|---|---|---|
| 6a2e9a7919 | |||
| d0a1b40910 | |||
| 0fd3d72998 | |||
| 425855899f | |||
| f648167b9f | |||
| 36fef51e8f | |||
| b6b5f70934 | |||
| 58094bd017 | |||
| cdd399017e |
@@ -1,130 +0,0 @@
|
|||||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
|
||||||
|
|
||||||
# Copyright (c) 2025 Leah Rowe <leah@libreboot.org>
|
|
||||||
|
|
||||||
# Import MrChromebox project into xbmk
|
|
||||||
|
|
||||||
# NOTE: variable naming scheme:
|
|
||||||
# mr_ for variables/functions dealing with MrChromebox
|
|
||||||
# mx_ for variables/functions pertaining to Libreboot setup
|
|
||||||
# because i am a non-binary blob
|
|
||||||
|
|
||||||
spdx="# SPDX-License-Identifier: GPL-3.0-or-later"
|
|
||||||
|
|
||||||
# temporary work variables
|
|
||||||
mr_tmpdir="" # dir to clone tmp repos in
|
|
||||||
|
|
||||||
# NOTE: upstream for our purposes: https://review.coreboot.org/coreboot
|
|
||||||
mr_cbrepo="https://github.com/mrchromebox/coreboot"
|
|
||||||
mr_cbbranch="MrChromebox-2503" # branch in mrchromebox
|
|
||||||
mr_cbrev="ecd9fa6a177e00132ec214252a2b9cebbb01e25f" # relative to base
|
|
||||||
mr_cbrevbase="38f5f7c48024d9fca4b6bbd88914423c34da709c" # 25.03 upstream base
|
|
||||||
mr_cbtree="chromebook" # tree name in xbmk
|
|
||||||
|
|
||||||
# NOTE: upstream for our purposes: https://github.com/tianocore/edk2.git
|
|
||||||
mr_edk2repo="https://github.com/mrchromebox/edk2"
|
|
||||||
mr_edk2branch="uefipayload_2502" # branch in mrchromebox
|
|
||||||
mr_edk2rev="feaf6b976b7cc72a18ed364f273751c943a9e7d0" # relative to base
|
|
||||||
mr_edk2revbase="fbe0805b2091393406952e84724188f8c1941837" # 2025.02 upstream
|
|
||||||
mr_edk2tree="chromebook" # tree name in xbmk
|
|
||||||
|
|
||||||
# mxlibreboot was here
|
|
||||||
prep_mr_import()
|
|
||||||
{
|
|
||||||
if [ -f "$xbmkpwd/CHANGELOG" ]; then
|
|
||||||
err "Project import disabled on releases" "prep_mr_import" "$@"
|
|
||||||
fi
|
|
||||||
|
|
||||||
mr_tmpdir="`mktemp -d || err "can't make mrtmpdir"`" || \
|
|
||||||
err "can't make mrtmpdir" "prep_mr_coreboot" "$@"
|
|
||||||
x_ remkdir "$mr_tmpdir"
|
|
||||||
|
|
||||||
x_ prep_mx_edk2conf
|
|
||||||
|
|
||||||
x_ prep_mr_projects
|
|
||||||
|
|
||||||
x_ rm -Rf "$mr_tmpdir"
|
|
||||||
}
|
|
||||||
|
|
||||||
# create config/git/edk2/pkg.cfg
|
|
||||||
prep_mx_edk2conf()
|
|
||||||
{
|
|
||||||
x_ remkdir "config/git/edk2"
|
|
||||||
|
|
||||||
x_ prep_mr_file "config/git/edk2/pkg.cfg" \
|
|
||||||
"$spdx" \
|
|
||||||
"" \
|
|
||||||
"rev=\"HEAD\"" \
|
|
||||||
"url=\"https://codeberg.org/libreboot/edk2\"" \
|
|
||||||
"bkup_url=\"https://git.disroot.org/libreboot/edk2\""
|
|
||||||
}
|
|
||||||
|
|
||||||
# prep config/PROJECT/TREE/ for various projects
|
|
||||||
prep_mr_projects()
|
|
||||||
{
|
|
||||||
x_ prep_mr "coreboot" "$mr_cbrepo" "$mr_cbbranch" "$mr_cbrev" \
|
|
||||||
"$mr_cbrevbase" "$mr_cbtree"
|
|
||||||
x_ prep_mr "edk2" "$mr_edk2repo" "$mr_edk2branch" "$mr_edk2rev" \
|
|
||||||
"$mr_edk2revbase" "$mr_edk2tree"
|
|
||||||
}
|
|
||||||
|
|
||||||
# create config/PROJECT/TREE/target.cfg
|
|
||||||
# and config/PROJECT/TREE/patches/
|
|
||||||
prep_mr()
|
|
||||||
{
|
|
||||||
mr_projectname="$1"
|
|
||||||
mr_repo="$2"
|
|
||||||
mr_branch="$3"
|
|
||||||
mr_rev="$4"
|
|
||||||
mr_revbase="$5"
|
|
||||||
mr_tree="$6"
|
|
||||||
|
|
||||||
x_ prep_mr_clone "$@"
|
|
||||||
x_ prep_mr_patch "$@"
|
|
||||||
x_ prep_mr_file "config/$1/$6/target.cfg" \
|
|
||||||
"$spdx" \
|
|
||||||
"" \
|
|
||||||
"tree=\"$6\"" \
|
|
||||||
"rev=\"$5\""
|
|
||||||
}
|
|
||||||
|
|
||||||
prep_mr_clone()
|
|
||||||
{
|
|
||||||
mr_tmpclone="$mr_tmpdir/$1"
|
|
||||||
|
|
||||||
x_ git clone "$2" "$mr_tmpclone"
|
|
||||||
|
|
||||||
x_ git -C "$mr_tmpclone" checkout "$3"
|
|
||||||
# we don't reset, because we format-patch between revbase..rev
|
|
||||||
}
|
|
||||||
|
|
||||||
prep_mr_patch()
|
|
||||||
{
|
|
||||||
mr_tmpclone="$mr_tmpdir/$1"
|
|
||||||
mx_patchdir="config/$1/$6/patches"
|
|
||||||
|
|
||||||
x_ remkdir "$mx_patchdir"
|
|
||||||
if [ "$4" != "$5" ]; then
|
|
||||||
x_ git -C "$mr_tmpclone" format-patch $5..$4
|
|
||||||
x_ mv "$mr_tmpclone"/*.patch "$mx_patchdir"
|
|
||||||
fi
|
|
||||||
# if no patches were created, rmdir will succeed
|
|
||||||
rmdir "$mx_patchdir" 1>/dev/null 2>/dev/null || :
|
|
||||||
}
|
|
||||||
|
|
||||||
prep_mr_file()
|
|
||||||
{
|
|
||||||
mr_filename="$1"
|
|
||||||
shift 1
|
|
||||||
|
|
||||||
x_ rm -f "$mr_filename"
|
|
||||||
|
|
||||||
while [ $# -gt 0 ]
|
|
||||||
do
|
|
||||||
printf "%s\n" "$1" >> "$mr_filename" || \
|
|
||||||
err "Can't write '$1' to '$mr_filename'" prep_mr_file "$@"
|
|
||||||
shift 1
|
|
||||||
done
|
|
||||||
|
|
||||||
printf "Created '%s'\n" "$mr_filename"
|
|
||||||
}
|
|
||||||
@@ -8,12 +8,10 @@
|
|||||||
. "include/rom.sh"
|
. "include/rom.sh"
|
||||||
. "include/release.sh"
|
. "include/release.sh"
|
||||||
. "include/get.sh"
|
. "include/get.sh"
|
||||||
. "include/chromebook.sh"
|
|
||||||
|
|
||||||
xbcommands=" \
|
xbcommands=" \
|
||||||
version \
|
version \
|
||||||
release \
|
release \
|
||||||
download \
|
download \
|
||||||
inject \
|
inject \
|
||||||
prep_mr_import \
|
|
||||||
"
|
"
|
||||||
|
|||||||
+8
-28
@@ -26,10 +26,6 @@ export LC_ALL="$utf_8"
|
|||||||
projectname="libreboot"
|
projectname="libreboot"
|
||||||
projectsite="https://libreboot.org/"
|
projectsite="https://libreboot.org/"
|
||||||
|
|
||||||
# TODO: consider just erroring here instead of hardcoding a default
|
|
||||||
[ -z "${PATH+x}" ] && \
|
|
||||||
export PATH="/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games"
|
|
||||||
|
|
||||||
sha512sum="util/sbase/sha512sum"
|
sha512sum="util/sbase/sha512sum"
|
||||||
|
|
||||||
eval "`newvar aur_notice basetmp board checkvarschk checkvarsxbmk configdir \
|
eval "`newvar aur_notice basetmp board checkvarschk checkvarsxbmk configdir \
|
||||||
@@ -146,23 +142,12 @@ xbmk_set_env()
|
|||||||
[ -n "${TMPDIR+x}" ] && \
|
[ -n "${TMPDIR+x}" ] && \
|
||||||
is_child="y"
|
is_child="y"
|
||||||
|
|
||||||
if [ "$is_child" = "y" ]
|
if [ "$is_child" = "y" ]; then
|
||||||
then
|
|
||||||
# child instance of xbmk, so we stop init after this point
|
|
||||||
# and execute the given user command upon return:
|
|
||||||
|
|
||||||
xbmk_child_set_env
|
xbmk_child_set_env
|
||||||
|
return 1 # child instance. discontinue initialisation.
|
||||||
return 1
|
|
||||||
else
|
else
|
||||||
# parent instance of xbmk, so we continue initialising.
|
|
||||||
# a parent instance of xbmk never processes its own
|
|
||||||
# command directly; instead, it calls a child instance
|
|
||||||
# of xbmk, and exits with the corresponding return status.
|
|
||||||
|
|
||||||
xbmk_parent_set_env
|
xbmk_parent_set_env
|
||||||
|
return 0 # parent instance. continue initialisation.
|
||||||
return 0
|
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -192,7 +177,6 @@ xbmk_child_set_tmp()
|
|||||||
|
|
||||||
if [ "$locktmp" != "$xbtmpchk" ]; then
|
if [ "$locktmp" != "$xbtmpchk" ]; then
|
||||||
badtmp="TMPDIR '$xbtmpchk' changed; was '$locktmp'"
|
badtmp="TMPDIR '$xbtmpchk' changed; was '$locktmp'"
|
||||||
|
|
||||||
printf "bad TMPDIR init, '%s': %s\n" "$TMPDIR" "$badtmp" 1>&2
|
printf "bad TMPDIR init, '%s': %s\n" "$TMPDIR" "$badtmp" 1>&2
|
||||||
err "'$xbmklock' present with bad tmpdir. is a build running?"
|
err "'$xbmklock' present with bad tmpdir. is a build running?"
|
||||||
fi
|
fi
|
||||||
@@ -428,23 +412,19 @@ xbmk_git_init()
|
|||||||
[ -e ".git" ] && \
|
[ -e ".git" ] && \
|
||||||
return 0
|
return 0
|
||||||
|
|
||||||
# GNU-specific extensions of date are used.
|
(
|
||||||
# TODO: that is a bug. fix it!
|
export GIT_COMMITTER_DATE="@$versiondate +0000"
|
||||||
|
export GIT_AUTHOR_DATE="@$versiondate +0000"
|
||||||
x_ date --version | grep "GNU coreutils" 1>/dev/null 2>/dev/null || \
|
|
||||||
err "Non-GNU date implementation" "xbmk_git_init" "$@"
|
|
||||||
|
|
||||||
cdate="`x_ date -Rud @$versiondate || err "can't get date"`" || \
|
|
||||||
err "can't get date" "xbmk_git_init" "$@"
|
|
||||||
|
|
||||||
x_ git init 1>/dev/null 2>/dev/null
|
x_ git init 1>/dev/null 2>/dev/null
|
||||||
x_ git add -A . 1>/dev/null 2>/dev/null
|
x_ git add -A . 1>/dev/null 2>/dev/null
|
||||||
x_ git -c user.name="xbmk" -c user.email="xbmk@example.com" \
|
x_ git -c user.name="xbmk" -c user.email="xbmk@example.com" \
|
||||||
commit -m "$projectname $version" --date "$cdate" \
|
commit -m "$projectname $version" \
|
||||||
--author="xbmk <xbmk@example.com>" 1>/dev/null 2>/dev/null
|
--author="xbmk <xbmk@example.com>" 1>/dev/null 2>/dev/null
|
||||||
x_ git -c user.name="xbmk" -c user.email="xbmk@example.com" \
|
x_ git -c user.name="xbmk" -c user.email="xbmk@example.com" \
|
||||||
tag -a "$version" -m "$projectname $version" \
|
tag -a "$version" -m "$projectname $version" \
|
||||||
1>/dev/null 2>/dev/null; :
|
1>/dev/null 2>/dev/null; :
|
||||||
|
) || err "Can't initialise workdir" xbmk_git_init "$@"; :
|
||||||
}
|
}
|
||||||
|
|
||||||
xbmk_child_exec()
|
xbmk_child_exec()
|
||||||
|
|||||||
+1
-2
@@ -104,9 +104,8 @@ check_target()
|
|||||||
. "$boarddir/target.cfg" || \
|
. "$boarddir/target.cfg" || \
|
||||||
err "Can't read '$boarddir/target.cfg'" "check_target" "$@"
|
err "Can't read '$boarddir/target.cfg'" "check_target" "$@"
|
||||||
|
|
||||||
if [ -z "$tree" ]; then
|
[ -z "$tree" ] && \
|
||||||
err "tree unset in '$boarddir/target.cfg'" "check_target" "$@"
|
err "tree unset in '$boarddir/target.cfg'" "check_target" "$@"
|
||||||
fi
|
|
||||||
|
|
||||||
x_ ./mk -d coreboot "$tree"
|
x_ ./mk -d coreboot "$tree"
|
||||||
|
|
||||||
|
|||||||
+8
-19
@@ -104,10 +104,7 @@ check_coreboot_util()
|
|||||||
x_ make -C "$utilsrcdir" $utilmode -j$XBMK_THREADS $makeargs
|
x_ make -C "$utilsrcdir" $utilmode -j$XBMK_THREADS $makeargs
|
||||||
|
|
||||||
if [ -n "$mode" ]; then
|
if [ -n "$mode" ]; then
|
||||||
# TODO: is this rm command needed?
|
|
||||||
|
|
||||||
x_ rm -Rf "$utilelfdir"
|
x_ rm -Rf "$utilelfdir"
|
||||||
|
|
||||||
return 0
|
return 0
|
||||||
elif [ -n "$mode" ] || [ -f "$utilelfdir/$1" ]; then
|
elif [ -n "$mode" ] || [ -f "$utilelfdir/$1" ]; then
|
||||||
return 0
|
return 0
|
||||||
@@ -237,8 +234,6 @@ mkcorebootbin_real()
|
|||||||
|
|
||||||
add_cbfs_option()
|
add_cbfs_option()
|
||||||
{
|
{
|
||||||
# TODO: input sanitization (currently mitigated by careful config)
|
|
||||||
|
|
||||||
op_name="`printf "%s\n" "$1" | awk '{print $1}'`"
|
op_name="`printf "%s\n" "$1" | awk '{print $1}'`"
|
||||||
op_arg="`printf "%s\n" "$1" | awk '{print $2}'`"
|
op_arg="`printf "%s\n" "$1" | awk '{print $2}'`"
|
||||||
|
|
||||||
@@ -373,8 +368,7 @@ add_uboot()
|
|||||||
ubtree="x86_64"
|
ubtree="x86_64"
|
||||||
ubtarget="amd64coreboot"
|
ubtarget="amd64coreboot"
|
||||||
|
|
||||||
if [ "$payload_uboot" = "i386" ]
|
if [ "$payload_uboot" = "i386" ]; then
|
||||||
then
|
|
||||||
ubpath="u-boot" # 32-bit
|
ubpath="u-boot" # 32-bit
|
||||||
ubtree="x86"
|
ubtree="x86"
|
||||||
ubtarget="i386coreboot"; :
|
ubtarget="i386coreboot"; :
|
||||||
@@ -383,18 +377,13 @@ add_uboot()
|
|||||||
|
|
||||||
ubdir="elf/u-boot/$ubtree/$ubtarget/$uboot_config"
|
ubdir="elf/u-boot/$ubtree/$ubtarget/$uboot_config"
|
||||||
|
|
||||||
# aarch64 targets:
|
ubootelf="$ubdir/u-boot.elf" # aarch64
|
||||||
ubootelf="$ubdir/u-boot.elf"
|
[ ! -f "$ubootelf" ] && \
|
||||||
if [ ! -f "$ubootelf" ]; then
|
ubootelf="$ubdir/u-boot" # aarch64 (fallback)
|
||||||
ubootelf="$ubdir/u-boot"
|
[ "$payload_uboot" = "i386" ] && \
|
||||||
fi
|
ubootelf="$ubdir/u-boot-dtb.bin" # x86 override
|
||||||
|
[ "$payload_uboot" = "amd64" ] && \
|
||||||
# override for x86/x86_64 targets:
|
ubootelf="$ubdir/u-boot-x86-with-spl.bin" # x86_64 override
|
||||||
if [ "$payload_uboot" = "i386" ]; then
|
|
||||||
ubootelf="$ubdir/u-boot-dtb.bin"
|
|
||||||
elif [ "$payload_uboot" = "amd64" ]; then
|
|
||||||
ubootelf="$ubdir/u-boot-x86-with-spl.bin" # EFI-compatible
|
|
||||||
fi
|
|
||||||
|
|
||||||
cbfs "$tmprom" "$ubootelf" "$ubpath" $ubcbfsargs
|
cbfs "$tmprom" "$ubootelf" "$ubpath" $ubcbfsargs
|
||||||
[ "$payload_seabios" != "y" ] && \
|
[ "$payload_seabios" != "y" ] && \
|
||||||
|
|||||||
+2
-8
@@ -55,11 +55,8 @@ trees()
|
|||||||
if_dry_build=""
|
if_dry_build=""
|
||||||
if_not_do_make=""
|
if_not_do_make=""
|
||||||
if_not_dry_build=":"
|
if_not_dry_build=":"
|
||||||
if [ "$flag" = "-F" ]; then
|
[ "$flag" = "-F" ] && \
|
||||||
# don't skip git fetch/pull on cached src
|
forcepull="y"; : # never skip git fetch/pull
|
||||||
|
|
||||||
forcepull="y"
|
|
||||||
fi
|
|
||||||
;;
|
;;
|
||||||
-s) mode="savedefconfig" ;;
|
-s) mode="savedefconfig" ;;
|
||||||
-l) mode="olddefconfig" ;;
|
-l) mode="olddefconfig" ;;
|
||||||
@@ -231,9 +228,6 @@ configure_project()
|
|||||||
# override target/tree specific variables from per-target config:
|
# override target/tree specific variables from per-target config:
|
||||||
while e "$_tcfg" f || [ "$cmd" != "build_project" ]
|
while e "$_tcfg" f || [ "$cmd" != "build_project" ]
|
||||||
do
|
do
|
||||||
# TODO: detect infinine loops and throw err.
|
|
||||||
# (currently mitigated by virtue of configuration)
|
|
||||||
|
|
||||||
printf "Loading %s config: %s\n" "$project" "$_tcfg"
|
printf "Loading %s config: %s\n" "$project" "$_tcfg"
|
||||||
eval "`newvar rev tree`"
|
eval "`newvar rev tree`"
|
||||||
|
|
||||||
|
|||||||
+2
-4
@@ -123,8 +123,7 @@ fetch()
|
|||||||
remkdir "${_pre_dest%/*}" "$appdir"
|
remkdir "${_pre_dest%/*}" "$appdir"
|
||||||
|
|
||||||
# HACK: if grabbing fsp from coreboot, fix the path for lbmk
|
# HACK: if grabbing fsp from coreboot, fix the path for lbmk
|
||||||
if [ "$dl_type" = "fsp" ]
|
if [ "$dl_type" = "fsp" ]; then
|
||||||
then
|
|
||||||
dl="${dl##*../}"
|
dl="${dl##*../}"
|
||||||
_cdp="$dl"
|
_cdp="$dl"
|
||||||
|
|
||||||
@@ -474,9 +473,8 @@ bootstrap()
|
|||||||
rmodtool="elf/coreboot/$tree/rmodtool"
|
rmodtool="elf/coreboot/$tree/rmodtool"
|
||||||
|
|
||||||
mecleaner="$xbmkpwd/$cbdir/util/me_cleaner/me_cleaner.py"
|
mecleaner="$xbmkpwd/$cbdir/util/me_cleaner/me_cleaner.py"
|
||||||
if [ "$XBMKmecleaner" = "y" ]; then
|
[ "$XBMKmecleaner" = "y" ] && \
|
||||||
mecleaner="$xbmkpwd/src/me_cleaner/me_cleaner.py"
|
mecleaner="$xbmkpwd/src/me_cleaner/me_cleaner.py"
|
||||||
fi
|
|
||||||
|
|
||||||
x_ ./mk -f coreboot "${cbdir##*/}"
|
x_ ./mk -f coreboot "${cbdir##*/}"
|
||||||
x_ ./mk -f me_cleaner
|
x_ ./mk -f me_cleaner
|
||||||
|
|||||||
Reference in New Issue
Block a user