summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
Diffstat (limited to 'include')
-rw-r--r--include/get.sh40
-rw-r--r--include/init.sh15
-rw-r--r--include/inject.sh20
-rw-r--r--include/lib.sh36
-rw-r--r--include/release.sh5
-rw-r--r--include/rom.sh61
-rw-r--r--include/tree.sh66
-rw-r--r--include/vendor.sh51
8 files changed, 177 insertions, 117 deletions
diff --git a/include/get.sh b/include/get.sh
index 6f1b5f1d..a3328454 100644
--- a/include/get.sh
+++ b/include/get.sh
@@ -5,16 +5,13 @@
eval "`setvars "" loc url bkup_url subcurl subhash subgit subgit_bkup \
depend subcurl_bkup repofail`"
-tmpgit="$xbmklocal/gitclone"
+tmpgit="$xbloc/gitclone"
tmpgitcache="$XBMK_CACHE/tmpgit"
fetch_targets()
{
- e "src/$project/$tree" d && return 0
-
- printf "Creating %s tree %s\n" "$project" "$tree"
- git_prep "$url" "$bkup_url" "$xbmkpwd/$configdir/$tree/patches" \
- "src/$project/$tree" with_submodules
+ [ -d "src/$project/$tree" ] || git_prep "$url" "$bkup_url" \
+ "$xbmkpwd/$configdir/$tree/patches" "src/$project/$tree" submod; :
}
fetch_project()
@@ -22,11 +19,8 @@ fetch_project()
eval "`setvars "" xtree`"
eval "`setcfg "config/git/$project/pkg.cfg"`"
- chkvars url bkup_url
-
- [ -n "$xtree" ] && x_ ./mk -f coreboot "$xtree"
+ chkvars url bkup_url && [ -n "$xtree" ] && x_ ./mk -f coreboot "$xtree"
[ -z "$depend" ] || for d in $depend ; do
- printf "'%s' needs '%s'; grabbing '%s'\n" "$project" "$d" "$d"
x_ ./mk -f $d
done
clone_project
@@ -36,7 +30,6 @@ clone_project()
{
loc="$XBMK_CACHE/clone/$project" && singletree "$project" && \
loc="src/$project"
- printf "Downloading project '%s' to '%s'\n" "$project" "$loc"
e "$loc" d missing && remkdir "${tmpgit%/*}" && git_prep \
"$url" "$bkup_url" "$xbmkpwd/config/$project/patches" "$loc"; :
@@ -44,11 +37,13 @@ clone_project()
git_prep()
{
+ printf "Creating code directory, src/%s/%s\n" "$project" "$tree"
+
_patchdir="$3"
_loc="$4" # $1 and $2 are gitrepo and gitrepo_backup
chkvars rev
- xbmkget git "$1" "$2" "$tmpgit" "$rev" "$_patchdir"
+ xbget git "$1" "$2" "$tmpgit" "$rev" "$_patchdir"
if singletree "$project" || [ $# -gt 4 ]; then
dx_ fetch_submodule "$mdir/module.list"
fi
@@ -73,19 +68,19 @@ fetch_submodule()
chkvars "sub${st}" "sub${st}_bkup" "subhash"
[ "$st" = "git" ] && x_ rm -Rf "$tmpgit/$1"
- eval xbmkget "$st" "\$sub$st" "\$sub${st}_bkup" "$tmpgit/$1" \
+ eval xbget "$st" "\$sub$st" "\$sub${st}_bkup" "$tmpgit/$1" \
"$subhash" "$mdir/${1##*/}/patches"
}
-xbmkget()
+xbget()
{
[ "$1" = "curl" ] || [ "$1" = "copy" ] || [ "$1" = "git" ] || \
- err "Bad dlop (arg 1): xbmkget $*"
+ err "Bad dlop (arg 1): xbget $*"
echk="f" && [ "$1" = "git" ] && echk="d"
for url in "$2" "$3"; do
- [ -n "$url" ] || err "empty URL given in: xbmkget $*"
+ [ -n "$url" ] || err "empty URL given in: xbget $*"
try_file "$url" "$@" || continue
eval "[ -$echk \"$4\" ] || continue"
return 0 # successful download/copy
@@ -111,7 +106,8 @@ try_file()
eval "[ -$echk \"$cached\" ] || return 1"
if [ "$2" = "git" ]; then
- [ -d "$5" ] || tmpclone "$cached" "$5" "$6" "$7" || return 1
+ [ -d "$5" ] || tmpclone "$cached" "$5" "$6" "$7" || \
+ err "Can't clone final repo in command: try_file $*"; :
else
bad_checksum "$6" "$cached" && x_ rm -f "$cached" && return 1
[ "$cached" != "$5" ] && x_ cp "$cached" "$5"
@@ -130,8 +126,7 @@ try_curl()
try_copy()
{
- [ -L "$2" ] && printf "symlink %s (trycp %s)\n" "$2" "$*" && return 1
- [ ! -f "$2" ] && printf "%s missing (trycp %s)\n" "$2" "$*" && return 1
+ e "$2" f missing && return 1; :
( x_ cp "$2" "$1" ) || return 1; :
}
@@ -148,16 +143,15 @@ try_git()
( x_ git -C "$gitdest" remote remove backup ) || :
x_ git -C "$gitdest" remote add main "$4"
x_ git -C "$gitdest" remote add backup "$5"
- ( x_ git -C "$gitdest" fetch --all ) || :
( x_ git -C "$gitdest" pull --all ) || :; :
}
bad_checksum()
{
- [ ! -f "$2" ] && printf "'%s' missing, %s\n" "$2" "$1" 1>&2 && return 0
+ e "$2" f missing && return 0
csum="$(x_ sha512sum "$2" | awk '{print $1}')" || err "!sha512 '$2' $1"
- [ "$csum" != "$1" ] && printf "BAD SHA512, '%s'; need '%s', got %s\n" \
- "$2" "$1" "$csum" 1>&2 && x_ rm -f "$2" && return 0; return 1
+ [ "$csum" = "$1" ] && return 1; x_ rm -f "$2"
+ printf "BAD SHA512 %s, '%s'; need '%s'\n" "$csum" "$2" "$1" 1>&2
}
tmpclone()
diff --git a/include/init.sh b/include/init.sh
index 38eb1c81..bc5a62b6 100644
--- a/include/init.sh
+++ b/include/init.sh
@@ -14,13 +14,13 @@ projectsite="https://libreboot.org/"
export PATH="/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games"
eval "`setvars "" _nogit board reinstall versiondate aur_notice configdir \
- datadir version xbmkpwd relname xbmkpwd xbmktmp python pyver xbmklocal \
+ datadir version xbmkpwd relname xbmkpwd xbtmp python pyver xbloc \
xbmklock cvxbmk cvchk xbmkpath`"
xbmk_init()
{
xbmkpwd="`pwd`" || err "Cannot generate PWD"
- xbmklocal="$xbmkpwd/tmp"
+ xbloc="$xbmkpwd/tmp"
xbmklock="$xbmkpwd/lock"
export PWD="$xbmkpwd"
@@ -71,7 +71,7 @@ xbmk_set_env()
# unify all temporary files/directories in a single TMPDIR
[ -z "${TMPDIR+x}" ] || [ "${TMPDIR%_*}" = "/tmp/xbmk" ] || \
unset TMPDIR
- [ -n "${TMPDIR+x}" ] && export TMPDIR="$TMPDIR" && xbmktmp="$TMPDIR"
+ [ -n "${TMPDIR+x}" ] && export TMPDIR="$TMPDIR" && xbtmp="$TMPDIR"
[ -z "${TMPDIR+x}" ] || is_child="y" # child instance, so return
if [ "$is_child" = "y" ]; then
@@ -87,7 +87,7 @@ xbmk_set_env()
# parent instance of xbmk, so don't return. set up TMPDIR
export TMPDIR="/tmp"
export TMPDIR="$(mktemp -d -t xbmk_XXXXXXXX)"
- xbmktmp="$TMPDIR"
+ xbtmp="$TMPDIR"
export XBMK_CACHE="$xbmkpwd/cache"
[ -L "$XBMK_CACHE" ] && [ "$XBMK_CACHE" = "$xbmkpwd/cache" ] && \
@@ -107,8 +107,7 @@ xbmk_set_env()
xbmk_set_version
export LOCALVERSION="-$projectname-${version%%-*}"
- remkdir "$xbmktmp" "$xbmklocal"
- remkdir "$XBMK_CACHE/gnupath" "$XBMK_CACHE/xbmkpath"
+ remkdir "$xbtmp" "$xbloc" "$XBMK_CACHE/gnupath" "$XBMK_CACHE/xbmkpath"
xbmk_set_pyver
}
@@ -195,7 +194,7 @@ xbmk_git_init()
|| err "Run this first: $gitcmd \"your ${gitcmd##*.}\""
done
- [ -L ".git" ] && return 1
+ [ -L ".git" ] && err "'$xbmkpwd/.git' is a symlink"
[ -e ".git" ] && return 0
eval "`setvars "$(date -Rud @$versiondate)" cdate _nogit`"
@@ -211,7 +210,7 @@ xbmk_child_exec()
{
xbmk_rval=0
( x_ ./mk "$@" ) || xbmk_rval=1
- ( x_ rm -Rf "$xbmklocal" "$xbmktmp" ) || xbmk_rval=1
+ ( x_ rm -Rf "$xbloc" "$xbtmp" ) || xbmk_rval=1
( x_ rm -f "$xbmklock" ) || xbmk_rval=1
exit $xbmk_rval
}
diff --git a/include/inject.sh b/include/inject.sh
index 74f688a1..795b2c70 100644
--- a/include/inject.sh
+++ b/include/inject.sh
@@ -6,7 +6,7 @@
cbcfgsdir="config/coreboot"
tmpromdel="$XBMK_CACHE/DO_NOT_FLASH"
nvm="util/nvmutil/nvm"
-ifdtool="elf/ifdtool/default/ifdtool"
+ifdtool="elf/coreboot/default/ifdtool"
cv="CONFIG_GBE_BIN_PATH"
[ -n "$cvxbmk" ] && cv="$cv $cvxbmk"
@@ -65,7 +65,7 @@ check_release()
*.tar.xz) _stripped_prefix="${archivename#*_}"
board="${_stripped_prefix%.tar.xz}" ;;
*)
- err "'$archive': could not detect board type"
+ err "'$archive': could not detect board type" ;;
esac; :
}
@@ -77,7 +77,7 @@ check_target()
eval "`setcfg "$boarddir/target.cfg"`"
chkvars tree && x_ ./mk -d coreboot "$tree"
- ifdtool="elf/ifdtool/$tree/ifdtool"
+ ifdtool="elf/coreboot/$tree/ifdtool"
[ -n "$IFD_platform" ] && ifdprefix="-p $IFD_platform"; :
}
@@ -103,36 +103,36 @@ patch_release()
readkconfig()
{
- x_ rm -f "$xbmktmp/cbcfg"
+ x_ rm -f "$xbtmp/cbcfg"
fx_ scankconfig x_ find "$boarddir/config" -type f
- eval "`setcfg "$xbmktmp/cbcfg" 1`"
+ eval "`setcfg "$xbtmp/cbcfg" 1`"
setvfile "$@" || return 1; :
}
scankconfig()
{
for cbc in $cv; do
- grep "$cbc" "$1" 1>>"$xbmktmp/cbcfg" 2>/dev/null || :
+ grep "$cbc" "$1" 1>>"$xbtmp/cbcfg" 2>/dev/null || :
done
}
modify_mac()
{
- x_ cp "${CONFIG_GBE_BIN_PATH##*../}" "$xbmklocal/gbe"
+ x_ cp "${CONFIG_GBE_BIN_PATH##*../}" "$xbloc/gbe"
[ -n "$new_mac" ] && [ "$new_mac" != "restore" ] && \
x_ make -C util/nvmutil clean && x_ make -C util/nvmutil && \
- x_ "$nvm" "$xbmklocal/gbe" setmac "$new_mac"
+ x_ "$nvm" "$xbloc/gbe" setmac "$new_mac"
fx_ newmac x_ find "$tmpromdir" -maxdepth 1 -type f -name "*.rom"
printf "\nThe following GbE NVM data will be written:\n"
- x_ "$nvm" "$xbmklocal/gbe" dump | grep -v "bytes read from file" || :
+ x_ "$nvm" "$xbloc/gbe" dump | grep -v "bytes read from file" || :
}
newmac()
{
e "$1" f && xchanged="y" && x_ \
- "$ifdtool" $ifdprefix -i GbE:"$xbmklocal/gbe" "$1" -O "$1"; :
+ "$ifdtool" $ifdprefix -i GbE:"$xbloc/gbe" "$1" -O "$1"; :
}
remktar()
diff --git a/include/lib.sh b/include/lib.sh
index 7c4d71ea..6fc3bd1e 100644
--- a/include/lib.sh
+++ b/include/lib.sh
@@ -4,8 +4,8 @@
# Copyright (c) 2020-2025 Leah Rowe <leah@libreboot.org>
# Copyright (c) 2025 Alper Nebi Yasak <alpernebiyasak@gmail.com>
-cbfstool="elf/cbfstool/default/cbfstool"
-rmodtool="elf/cbfstool/default/rmodtool"
+cbfstool="elf/coreboot/default/cbfstool"
+rmodtool="elf/coreboot/default/rmodtool"
remkdir()
{
@@ -53,12 +53,10 @@ setvars()
fi
val="$1"
shift 1
- while true; do
- [ $# -lt 1 ] && break
- _setvars="$1=\"$val\"; $_setvars"
+ while [ $# -gt 0 ]; do
+ printf "%s=\"%s\"\n" "$1" "$val"
shift 1
done
- printf "%s\n" "${_setvars% }"
}
setcfg()
@@ -71,11 +69,9 @@ setcfg()
chkvars()
{
- while true; do
- [ $# -lt 1 ] && break
+ while [ $# -gt 0 ]; do
eval "[ -n \"\${$1+x}\" ] || err \"$1 unset\""
- eval "[ -n \"\$$1\" ] || err \"$1 unset\""
- shift 1
+ eval "[ -n \"\$$1\" ] || err \"$1 unset\"; shift 1; :"
done; :
}
@@ -99,12 +95,30 @@ findpath()
done
}
+pad_one_byte()
+{
+ paddedfile="`mktemp`" || err "mktemp pad_one_byte"
+ x_ cp "$1" "$paddedfile"
+ cat "$paddedfile" config/data/coreboot/0 > "$1" || err "!pad $1"; :
+ x_ rm "$paddedfile"
+}
+
+unpad_one_byte()
+{
+ xromsize="$(expr $(stat -c '%s' "$1") - 1)" || err "!int"
+ [ $xromsize -lt 524288 ] && err "too small, $xromsize: $1"
+
+ unpaddedfile="`mktemp`" || err "mktemp unpad_one_byte"
+ x_ dd if="$1" of="$unpaddedfile" bs=$xromsize count=1
+ x_ mv "$unpaddedfile" "$1"
+}
+
fx_()
{
fd="`mktemp`" && x_ rm -f "$fd" && x_ touch "$fd"
xx="$1" && shift 1
"$@" 2>/dev/null | sort 1>"$fd" 2>/dev/null || err "FATAL: !sort fx_"
- dx_ "$xx" "$fd" || break
+ dx_ "$xx" "$fd" || :
x_ rm -f "$fd"
}
diff --git a/include/release.sh b/include/release.sh
index f23ed541..912687dc 100644
--- a/include/release.sh
+++ b/include/release.sh
@@ -22,13 +22,12 @@ release()
[ -e "$reldest" ] && \
err "already exists: \"$reldest\""
- vdir="$XBMK_CACHE/relpwd/${xbmktmp##*/}/$version"
+ vdir="$XBMK_CACHE/relpwd/${xbtmp##*/}/$version"
rsrc="$vdir/${relname}_src"
remkdir "$vdir"
x_ git clone . "$rsrc"
- x_ cp ".version" "$rsrc/.version"
- x_ cp ".versiondate" "$rsrc/.versiondate"
+ update_xbmkver "$rsrc"
prep_release src
prep_release tarball
diff --git a/include/rom.sh b/include/rom.sh
index 4a3503f4..57948ec4 100644
--- a/include/rom.sh
+++ b/include/rom.sh
@@ -25,7 +25,7 @@ copyps1bios()
remkdir "bin/playstation"
x_ cp src/pcsx-redux/src/mips/openbios/openbios.bin bin/playstation
- printf "MIT License\n\nCopyright (c) 2019-2024 PCSX-Redux authors\n\n" \
+ printf "MIT License\n\nCopyright (c) 2019-2025 PCSX-Redux authors\n\n" \
> bin/playstation/COPYING.txt || err "!pcsx-redux copyright"
cat config/snippet/mit >>bin/playstation/COPYING.txt || err "!pcsx MIT"
}
@@ -43,7 +43,7 @@ mkpayload_grub()
"/boot/grub/grub.cfg=$grubdata/memdisk.cfg"; :
}
-mkvendorfiles()
+corebootpremake()
{
[ -n "$mode" ] || [ ! -f "$srcdir/.config" ] || $dry printf \
"CONFIG_CCACHE=y\n" >> "$srcdir/.config" || err "$srcdir: !cook"; :
@@ -56,10 +56,10 @@ mkvendorfiles()
check_coreboot_util()
{
- [ "$badhash" = "y" ] && x_ rm -f "elf/$1/$tree/$1"
- e "elf/$1/$tree/$1" f && return 0
+ [ "$badhash" = "y" ] && x_ rm -f "elf/coreboot/$tree/$1"
+ e "elf/coreboot/$tree/$1" f && return 0
- utilelfdir="elf/$1/$tree"
+ utilelfdir="elf/coreboot/$tree"
utilsrcdir="src/coreboot/$tree/util/$1"
utilmode="" && [ -n "$mode" ] && utilmode="clean"
@@ -74,18 +74,41 @@ check_coreboot_util()
x_ cp "$utilsrcdir/rmodtool" "$utilelfdir"
}
+coreboot_pad_one_byte()
+{
+ $dry pad_one_byte "$srcdir/build/coreboot.rom"
+}
+
mkcorebootbin()
{
+ $dry fx_ check_coreboot_util printf "cbfstool\nifdtool\n"
+
+ for y in "$target_dir/config"/*; do
+ defconfig="$y"
+ mkcorebootbin_real
+ done
+
+ mkcoreboottar
+}
+
+mkcorebootbin_real()
+{
[ "$target" = "$tree" ] && return 0
- tmprom="$xbmktmp/coreboot.rom"
- $dry x_ cp "$srcdir/build/coreboot.rom" "$tmprom"
+ tmprom="$xbtmp/coreboot.rom"
initmode="${defconfig##*/}"
displaymode="${initmode##*_}"
[ "$displaymode" = "$initmode" ] && displaymode="" # "normal" config
initmode="${initmode%%_*}"
- cbfstool="elf/cbfstool/$tree/cbfstool"
+ cbfstool="elf/coreboot/$tree/cbfstool"
+
+ elfrom="elf/coreboot/$tree/$target/$initmode"
+ [ -n "$displaymode" ] && elfrom="${elfrom}_$displaymode"
+ elfrom="$elfrom/coreboot.rom"
+
+ $dry x_ cp "$elfrom" "$tmprom"
+ $dry unpad_one_byte "$tmprom"
[ -z "$payload_uboot" ] || [ "$payload_uboot" = "amd64" ] || \
[ "$payload_uboot" = "i386" ] || [ "$payload_uboot" = "arm64" ] \
@@ -102,7 +125,7 @@ mkcorebootbin()
[ -z "$grub_scan_disk" ] && grub_scan_disk="nvme ahci ata"
[ -n "$grubtree" ] || grubtree="default"
- grubelf="elf/grub/$grubtree/payload/grub.elf"
+ grubelf="elf/grub/$grubtree/$grubtree/payload/grub.elf"
[ "$payload_memtest" = "y" ] || payload_memtest="n"
[ "$(uname -m)" = "x86_64" ] || payload_memtest="n"
@@ -127,7 +150,7 @@ add_seabios()
[ -z "$payload_uboot" ] || [ "$payload_uboot" = "arm64" ] || \
$dry add_uboot
- _seabioself="elf/seabios/default/$initmode/bios.bin.elf"
+ _seabioself="elf/seabios/default/default/$initmode/bios.bin.elf"
_seaname="fallback/payload" && [ "$payload_grubsea" = "y" ] && \
_seaname="seabios.elf"
@@ -158,8 +181,8 @@ add_grub()
_grubname="fallback/payload"
cbfs "$tmprom" "$grubelf" "$_grubname"
printf "set grub_scan_disk=\"%s\"\n" "$grub_scan_disk" \
- > "$xbmktmp/tmpcfg" || err "$target: !insert scandisk"
- cbfs "$tmprom" "$xbmktmp/tmpcfg" scan.cfg raw
+ > "$xbtmp/tmpcfg" || err "$target: !insert scandisk"
+ cbfs "$tmprom" "$xbtmp/tmpcfg" scan.cfg raw
[ "$initmode" != "normal" ] && [ "$displaymode" != "txtmode" ] && \
cbfs "$tmprom" "$grubdata/background/background1280x800.png" \
"background.png" raw; :
@@ -191,18 +214,21 @@ add_uboot()
# aarch64 targets:
ubcbfsargs=""
ubpath="fallback/payload"
+ ubtree="default"
ubtarget="$target"
# override for x86/x86_64 targets:
if [ -n "$payload_uboot" ] && [ "$payload_uboot" != "arm64" ]; then
ubcbfsargs="-l 0x1110000 -e 0x1110000" # 64-bit and 32-bit
# on 64-bit, 0x1120000 is the SPL, and stub before that
ubpath="img/u-boot" # 64-bit
+ ubtree="x86_64"
ubtarget="amd64coreboot"
[ "$payload_uboot" = "i386" ] && ubpath="u-boot" # 32-bit
+ [ "$payload_uboot" = "i386" ] && ubtree="x86"
[ "$payload_uboot" = "i386" ] && ubtarget="i386coreboot"; :
fi
- ubdir="elf/u-boot/$ubtarget/$uboot_config"
+ ubdir="elf/u-boot/$ubtree/$ubtarget/$uboot_config"
# aarch64 targets:
ubootelf="$ubdir/u-boot.elf" && [ ! -f "$ubootelf" ] && \
@@ -253,10 +279,7 @@ cbfs()
mkcoreboottar()
{
- [ "$target" = "$tree" ] && return 0
- [ "$XBMK_RELEASE" = "y" ] || return 0
- [ "$release" != "n" ] || return 0
-
- $dry mkrom_tarball "bin/$target"
- $dry x_ ./mk inject "bin/${relname}_${target}.tar.xz" nuke; :
+ [ "$target" != "$tree" ] && [ "$XBMK_RELEASE" = "y" ] && \
+ [ "$release" != "n" ] && $dry mkrom_tarball "bin/$target" && \
+ $dry x_ ./mk inject "bin/${relname}_${target}.tar.xz" nuke; :
}
diff --git a/include/tree.sh b/include/tree.sh
index 83887864..1f635e23 100644
--- a/include/tree.sh
+++ b/include/tree.sh
@@ -7,7 +7,7 @@ eval "`setvars "" xarch srcdir premake gnatdir xlang mode makeargs elfdir cmd \
project target target_dir targets xtree _f release bootstrapargs mkhelper \
autoconfargs listfile autogenargs btype rev build_depend gccdir cmakedir \
defconfig postmake mkhelpercfg dry dest_dir mdir cleanargs gccver gccfull \
- gnatver gnatfull do_make badhash tree`"
+ gnatver gnatfull do_make badhash badtghash tree`"
trees()
{
@@ -58,7 +58,7 @@ trees()
mkhelpercfg="$datadir/mkhelper.cfg"
if e "$mkhelpercfg" f missing; then
- mkhelpercfg="$xbmktmp/mkhelper.cfg"
+ mkhelpercfg="$xbtmp/mkhelper.cfg"
x_ touch "$mkhelpercfg"
fi
@@ -129,7 +129,7 @@ configure_project()
{
eval "`setvars "" cleanargs build_depend autoconfargs xtree postmake \
makeargs btype mkhelper bootstrapargs premake release xlang xarch \
- badhash`"
+ badhash badtghash`"
_tcfg="$1/target.cfg"
[ -f "$_tcfg" ] || btype="auto"
e "$datadir/mkhelper.cfg" f && eval "`setcfg "$datadir/mkhelper.cfg"`"
@@ -173,17 +173,25 @@ build_dependencies()
done; :
}
+# delete src/project/TREE and elf/project/TREE if configs
+# change on the given tree, but don't check configs e.g.
+# don't check x200_8mb/ files if building for x200_8mb
check_project_hashes()
{
- old_pjhash="" && x_ mkdir -p "$XBMK_CACHE/hash"
+ eval "`setvars "" old_pjhash pjhash`"
+ x_ mkdir -p "$XBMK_CACHE/hash"
+
[ ! -f "$XBMK_CACHE/hash/$project$tree" ] || \
- read -r old_pjhash < "$XBMK_CACHE/hash/$project$tree"
+ read -r old_pjhash < "$XBMK_CACHE/hash/$project$tree" || \
+ err "old_pjhash: Can't read '$XBMK_CACHE/hash/$project$tree'"
fx_ "x_ sha512sum" find "$datadir" "$configdir/$tree" "$mdir" \
-type f -not -path "*/.git*/*" | awk '{print $1}' > \
- "$xbmktmp/project.hash" || err "!h $project $tree"
+ "$xbtmp/project.hash" || err "!h $project $tree"
+
+ pjhash="$(x_ sha512sum "$xbtmp/project.hash" | awk '{print $1}' || \
+ err)" || err "pjhash: Can't read sha512 of '$xbtmp/project.hash'"
- pjhash="$(sha512sum "$xbmktmp/project.hash" | awk '{print $1}')" || :
[ "$pjhash" != "$old_pjhash" ] && badhash="y"
[ -f "$XBMK_CACHE/hash/$project$tree" ] || badhash="y"
@@ -191,7 +199,41 @@ check_project_hashes()
err "!mk $XBMK_CACHE/hash/$project$tree"
[ "$badhash" != "y" ] || x_ rm -Rf "src/$project/$tree" \
- "elf/$project/$tree" "elf/$project/$target"; :
+ "elf/$project/$tree"; :
+
+ singletree "$project" || check_target_hash; :
+}
+
+# delete elf/project/TREE/TARGET on a given target, within a
+# multi-tree project; this happens even if the given tree isn't
+# deleted. for example, if coreboot/default doesn't change but
+# the x200_8mb/ files change, delete the x200_8mb files
+check_target_hash()
+{
+ [ -n "$target" ] || return 0
+
+ eval "`setvars "" old_tghash tghash`"
+ x_ mkdir -p "$XBMK_CACHE/tghash"
+
+ [ ! -f "$XBMK_CACHE/tghash/$project$target" ] || \
+ read -r old_tghash < "$XBMK_CACHE/tghash/$project$target" || \
+ err "t: Can't read '$XBMK_CACHE/tghash/$project$target'"
+
+ fx_ "x_ sha512sum" find "$configdir/$target" \
+ -type f -not -path "*/.git*/*" | awk '{print $1}' > \
+ "$xbtmp/target.hash" || err "!ht $project $target"
+
+ tghash="$(x_ sha512sum "$xbtmp/target.hash" | awk '{print $1}' \
+ || err)" || err "tghash: !read sha512 '$xbtmp/target.hash'"
+
+ [ "$tghash" != "$old_tghash" ] && badtghash="y"; :
+ [ -f "$XBMK_CACHE/tghash/$project$target" ] || badtghash="y"; :
+
+ printf "%s\n" "$tghash" > "$XBMK_CACHE/tghash/$project$target" || \
+ err "!mk $XBMK_CACHE/tghash/$project$target"
+
+ [ "$badtghash" != "y" ] || \
+ x_ rm -Rf "elf/$project/$tree/$target"; :
}
check_cross_compiler()
@@ -262,7 +304,7 @@ gnu_setver()
check_defconfig()
{
[ -f "$defconfig" ] || $dry err "$project/$target: missing defconfig"
- dest_dir="$elfdir/$target/${defconfig#"$target_dir/config/"}"
+ dest_dir="$elfdir/$tree/$target/${defconfig#"$target_dir/config/"}"
$dry elfcheck || return 1; : # skip build if a previous one exists
}
@@ -279,8 +321,6 @@ handle_makefile()
$dry x_ make -C "$srcdir" $cleanargs clean
[ -f "$defconfig" ] && x_ cp "$defconfig" "$srcdir/.config"
- [ -n "$mode" ] || [ -n "$btype" ] || $dry make -C \
- "$srcdir" silentoldconfig || make -C "$srcdir" oldconfig || :
run_make_command || err "handle_makefile $srcdir: no makefile!"
@@ -304,8 +344,10 @@ run_make_command()
$dry x_ make -C "$srcdir" $mode -j$XBMK_THREADS $makeargs
[ -n "$mode" ] || x_ $mkhelper
+ check_makefile "$srcdir" || return 0
[ "$mode" != "clean" ] || \
- $dry make -C "$srcdir" $cleanargs distclean || :; :
+ $dry make -C "$srcdir" $cleanargs distclean || \
+ $dry x_ make -C "$srcdir" $cleanargs clean; :
}
check_cmake()
diff --git a/include/vendor.sh b/include/vendor.sh
index 99fc7467..55373913 100644
--- a/include/vendor.sh
+++ b/include/vendor.sh
@@ -26,12 +26,11 @@ cvchk="CONFIG_INCLUDE_SMSC_SCH5545_EC_FW CONFIG_HAVE_MRC CONFIG_HAVE_ME_BIN \
CONFIG_FSP_S_FILE CONFIG_KBC1126_FW1 CONFIG_KBC1126_FW2"
# lbmk-specific extensions to the "cv" variable (not suitable for cbmk)
-cvxbmk="CONFIG_ME_BIN_PATH CONFIG_SMSC_SCH5545_EC_FW_FILE \
- CONFIG_KBC1126_FW1_OFFSET CONFIG_KBC1126_FW2_OFFSET \
+cvxbmk="CONFIG_ME_BIN_PATH CONFIG_SMSC_SCH5545_EC_FW_FILE CONFIG_FSP_FULL_FD \
+ CONFIG_KBC1126_FW1_OFFSET CONFIG_KBC1126_FW2_OFFSET CONFIG_FSP_USE_REPO \
CONFIG_VGA_BIOS_ID CONFIG_BOARD_DELL_E6400 CONFIG_FSP_S_CBFS \
CONFIG_HAVE_REFCODE_BLOB CONFIG_REFCODE_BLOB_FILE CONFIG_FSP_FD_PATH \
- CONFIG_IFD_BIN_PATH CONFIG_MRC_FILE CONFIG_FSP_M_CBFS \
- CONFIG_FSP_USE_REPO CONFIG_FSP_FULL_FD"
+ CONFIG_IFD_BIN_PATH CONFIG_MRC_FILE CONFIG_FSP_M_CBFS"
# lbmk-specific extensions; mostly used for downloading vendor files
eval "`setvars "" has_hashes EC_hash DL_hash DL_url_bkup MRC_refcode_gbe vcfg \
@@ -54,17 +53,14 @@ download()
getfiles()
{
[ -z "$CONFIG_HAVE_ME_BIN" ] || fetch intel_me "$DL_url" \
- "$DL_url_bkup" "$DL_hash" "$CONFIG_ME_BIN_PATH" "curl" \
- "$ME_bin_hash"
+ "$DL_url_bkup" "$DL_hash" "$CONFIG_ME_BIN_PATH" curl "$ME_bin_hash"
[ -z "$CONFIG_INCLUDE_SMSC_SCH5545_EC_FW" ] || fetch sch5545ec \
"$SCH5545EC_DL_url" "$SCH5545EC_DL_url_bkup" "$SCH5545EC_DL_hash" \
"$CONFIG_SMSC_SCH5545_EC_FW_FILE" "curl" "$SCH5545EC_bin_hash"
[ -z "$CONFIG_KBC1126_FW1" ] || fetch kbc1126ec "$EC_url" \
- "$EC_url_bkup" "$EC_hash" "$CONFIG_KBC1126_FW1" "curl" \
- "$EC_FW1_hash"
+ "$EC_url_bkup" "$EC_hash" "$CONFIG_KBC1126_FW1" curl "$EC_FW1_hash"
[ -z "$CONFIG_KBC1126_FW2" ] || fetch kbc1126ec "$EC_url" \
- "$EC_url_bkup" "$EC_hash" "$CONFIG_KBC1126_FW2" "curl" \
- "$EC_FW2_hash"
+ "$EC_url_bkup" "$EC_hash" "$CONFIG_KBC1126_FW2" curl "$EC_FW2_hash"
[ -z "$CONFIG_VGA_BIOS_FILE" ] || fetch e6400vga "$E6400_VGA_DL_url" \
"$E6400_VGA_DL_url_bkup" "$E6400_VGA_DL_hash" \
"$CONFIG_VGA_BIOS_FILE" "curl" "$E6400_VGA_bin_hash"
@@ -111,12 +107,11 @@ fetch()
done; :
# download the file (from the internet) to extract from
- xbmkget "$dlop" "$dl" "$dl_bkup" "$_dl" "$dlsum"
+ xbget "$dlop" "$dl" "$dl_bkup" "$_dl" "$dlsum"
x_ rm -Rf "${_dl}_extracted"
# skip extraction if a cached extracted file exists
- ( xbmkget copy "$_dl_bin" "$_dl_bin" "$_dest" "$binsum" 2>/dev/null ) \
- || :
+ ( xbget copy "$_dl_bin" "$_dl_bin" "$_dest" "$binsum" 2>/dev/null ) || :
[ -f "$_dest" ] && return 0
x_ mkdir -p "${_dest%/*}"
@@ -132,14 +127,8 @@ fetch()
( fx_ "eval mkdst \"$binsum\"" x_ find "${_pre_dest%/*}" -type f ) || :
bad_checksum "$binsum" "$_dest" || [ ! -f "$_dest" ] || return 0
- [ -z "$binsum" ] && \
- printf "'%s', '%s': checksum undefined. Check files in '%s'\n" \
- "$board" "$_dest" "${_pre_dest%/*}" 1>&2
- e "$_dest" f not && err "missing file '$_dest', !extract_$dl_type"; :
- e "$_dest" f && printf "WARNING: '%s' made with bad hash (will rm)\n" \
- "$_dest" 1>&2
- [ -L "$_dest" ] && printf "WARNING: '%s' is a link. Please delete!\n" \
- "$_dest" 1>&2
+ [ -z "$binsum" ] && printf "'%s': checksum undefined\n" "$_dest" 1>&2
+ [ -L "$_dest" ] && printf "WARNING: '%s' is a link!\n" "$_dest" 1>&2
[ -L "$_dest" ] || x_ rm -f "$_dest"
err "Could not safely extract '$_dest', for board '$board'"
}
@@ -156,9 +145,9 @@ extract_intel_me()
{
e "$mecleaner" f not && err "$cbdir: me_cleaner missing"
- _7ztest="$xbmklocal/metmp/a"
- _metmp="$xbmklocal/me.bin"
- x_ rm -f "$_metmp" "$xbmklocal/a"
+ _7ztest="$xbloc/metmp/a"
+ _metmp="$xbloc/me.bin"
+ x_ rm -f "$_metmp" "$xbloc/a"
mfs="" && [ "$ME11bootguard" = "y" ] && mfs="--whitelist MFS" && \
chkvars ME11delta ME11version ME11sku ME11pch
@@ -184,7 +173,7 @@ find_me()
_7ztest="${_7ztest}a" && _r="-r" && [ -n "$mfs" ] && _r=""
- "$mecleaner" $mfs $_r -t -O "$xbmklocal/a" -M "$_metmp" "$1" || \
+ "$mecleaner" $mfs $_r -t -O "$xbloc/a" -M "$_metmp" "$1" || \
"$mecleaner" $mfs $_r -t -O "$_metmp" "$1" || "$me7updateparser" \
-O "$_metmp" "$1" || extract_archive "$1" "$_7ztest" || return 0
@@ -281,14 +270,14 @@ bootstrap()
cbdir="src/coreboot/$tree"
mecleaner="$xbmkpwd/$cbdir/util/me_cleaner/me_cleaner.py"
kbc1126_ec_dump="$xbmkpwd/$cbdir/util/kbc1126/kbc1126_ec_dump"
- cbfstool="elf/cbfstool/$tree/cbfstool"
- rmodtool="elf/cbfstool/$tree/rmodtool"
+ cbfstool="elf/coreboot/$tree/cbfstool"
+ rmodtool="elf/coreboot/$tree/rmodtool"
x_ ./mk -f coreboot "${cbdir##*/}"
fx_ "x_ ./mk -b" printf "uefitool\nbiosutilities\nbios_extract\n"
[ -d "${kbc1126_ec_dump%/*}" ] && x_ make -C "$cbdir/util/kbc1126"
[ -n "$MRC_refcode_cbtree" ] && \
- cbfstoolref="elf/cbfstool/$MRC_refcode_cbtree/cbfstool" && \
+ cbfstoolref="elf/coreboot/$MRC_refcode_cbtree/cbfstool" && \
x_ ./mk -d coreboot "$MRC_refcode_cbtree"; :
}
@@ -393,9 +382,9 @@ vfile()
elif [ "$nuke" = "nuke" ]; then
x_ "$cbfstool" "$rom" remove -n "$cbfsname"
elif [ "$_t" = "stage" ]; then # the only stage we handle is refcode
- x_ rm -f "$xbmklocal/refcode"
- x_ "$rmodtool" -i "$_dest" -o "$xbmklocal/refcode"
- x_ "$cbfstool" "$rom" add-stage -f "$xbmklocal/refcode" \
+ x_ rm -f "$xbloc/refcode"
+ x_ "$rmodtool" -i "$_dest" -o "$xbloc/refcode"
+ x_ "$cbfstool" "$rom" add-stage -f "$xbloc/refcode" \
-n "$cbfsname" -t stage
else
x_ "$cbfstool" "$rom" add -f "$_dest" -n "$cbfsname" \