diff options
Diffstat (limited to 'include')
| -rw-r--r-- | include/env/get.sh | 91 | ||||
| -rw-r--r-- | include/fw/inject.sh | 2 | ||||
| -rw-r--r-- | include/fw/mrc.sh | 2 | ||||
| -rw-r--r-- | include/fw/rom.sh | 26 | ||||
| -rw-r--r-- | include/fw/vendor.sh | 14 | ||||
| -rw-r--r-- | include/lib.sh | 8 | ||||
| -rw-r--r-- | include/mk/release.sh | 4 |
7 files changed, 86 insertions, 61 deletions
diff --git a/include/env/get.sh b/include/env/get.sh index 09126297..0ed9d6cc 100644 --- a/include/env/get.sh +++ b/include/env/get.sh @@ -3,52 +3,83 @@ # Copyright (c) 2020-2021,2023-2026 Leah Rowe <leah@libreboot.org> # Copyright (c) 2022 Caleb La Grange <thonkpeasant@protonmail.com> -eval "`newvar url bkup_url depend loc subcurl subcurl_bkup subgit subgit_bkup \ - subhash`" +eval "`newvar url bkup_url fetch_depend loc subcurl subcurl_bkup subgit \ + subgit_bkup subhash badhash badtghash`" tmpgit="$xbtmp/gitclone" tmpgitcache="$xbtmp/tmpgit" -multi_tree_fetch() +# delete a source tree and corresponding builds if metadata changed +# inside config/ - this is done by hashing a concatenation of hashes +# from all metadata, checked against a previously calculated hash + +delete_old_project_files() { - [ -d "src/$project/$tree" ] && return 0 + # delete an entire source tree along with its builds: + same_pjhash mhash "$tree" badhash "$datadir" \ + "$configdir/$tree" "$mdir" || \ + x_ rm -Rf "src/$project/$tree" "elf/$project/$tree" - git_prep "$url" "$bkup_url" "$xbmkpwd/$configdir/$tree/patches" \ - "src/$project/$tree" "submod" + x_ cp "$xbtmp/new.hash" "$XBMK_CACHE/mhash/$project$tree" + + if [ -n "$target" ] && [ "$target" != "$tree" ]; then + # delete only target builds, if only the target changed + same_pjhash mtghash "$target" badtghash "$configdir/$target" \ + || x_ rm -Rf "elf/$project/$tree/$target" + + x_ cp "$xbtmp/new.hash" "$XBMK_CACHE/mtghash/$project$target" + fi } -single_tree_fetch() +same_pjhash() { - xgcctree="" + eval "`newvar hash old_hash`" + + hashdir="$1" + hashname="$2" + badhashvar="$3" - . "config/git/$project/pkg.cfg" || \ - err "Can't read config 'config/git/$project/pkg.cfg'" \ - "single_tree_fetch" "@" + shift 3 - if [ -z "$url" ] || [ -z "$bkup_url" ]; then - err "url/bkup_url not both set 'config/git/$project/pkg.cfg'" \ - "single_tree_fetch" "$@" + x_ mkdir -p "$XBMK_CACHE/$hashdir" + + if [ -f "$XBMK_CACHE/$hashdir/$project$hashname" ]; then + read -r old_hash < "$XBMK_CACHE/$hashdir/$project$hashname" \ + || err \ + "$hashdir: err '$XBMK_CACHE/$hashdir/$project$hashname'" \ + same_pjhash "$hashdir" "$hashname" "$badhashvar" "$@" fi - [ -n "$xgcctree" ] && \ - x_ "$mk" -f coreboot "$xgcctree" + eval "$build_sbase" + fx_ "x_ util/sbase/sha512sum" find "$@" -type f -not -path \ + "*/.git*/*" | awk '{print $1}' > "$xbtmp/tmp.hash" || \ + err "!h $project $hashdir" \ + "same_pjhash" "$hashdir" "$hashname" "$badhashvar" "$@" + + hash="$(x_ "$sha512sum" "$xbtmp/tmp.hash" | awk '{print $1}' || \ + err)" || err "$hashname: Can't read sha512 of '$xbtmp/tmp.hash'" \ + "same_pjhash" "$hashdir" "$hashname" "$badhashvar" "$@" + + if [ "$hash" != "$old_hash" ] || \ + [ ! -f "$XBMK_CACHE/$hashdir/$project$hashname" ]; then + eval "$badhashvar=\"y\"" + fi - [ -n "$depend" ] && \ - for d in $depend ; do - x_ "$mk" -f $d - done + printf "%s\n" "$hash" > "$xbtmp/new.hash" || \ + err "!mkhash $xbtmp/new.hash ($hashdir $hashname $badhashvar)" \ + "same_pjhash" "$hashdir" "$hashname" "$badhashvar" "$@" - $if_single_tree \ - clone_project; : + eval "[ \"\$$badhashvar\" = \"y\" ] && return 1"; : } -clone_project() +fetch_trees() { - loc="src/$project" - [ -d "$loc" ] && return 0 + [ -d "src/$project/$tree" ] && return 0 - remkdir "${tmpgit%/*}" - git_prep "$url" "$bkup_url" "$xbmkpwd/config/$project/patches" "$loc" + mk_dependencies -f $fetch_depend + + git_prep "$url" "$bkup_url" "$xbmkpwd/$configdir/$tree/patches" \ + "src/$project/$tree" } git_prep() @@ -59,12 +90,10 @@ git_prep() _loc="$4" # $1 and $2 are gitrepo and gitrepo_backup [ -z "$rev" ] && \ - err "$project/$tree: rev not set" "git_prep" "$@" + err "$project/$tree: rev unset" "git_prep" "$@" xbget git "$1" "$2" "$tmpgit" "$rev" "$_patchdir" - if singletree "$project" || [ $# -gt 4 ]; then - dx_ fetch_submodule "$mdir/module.list" - fi + dx_ fetch_submodule "$mdir/module.list" [ "$_loc" != "${_loc%/*}" ] && \ x_ mkdir -p "${_loc%/*}" diff --git a/include/fw/inject.sh b/include/fw/inject.sh index 98502d3c..2d4c99e6 100644 --- a/include/fw/inject.sh +++ b/include/fw/inject.sh @@ -4,7 +4,7 @@ # Copyright (c) 2022 Ferass El Hafidi <vitali64pmemail@protonmail.com> # Copyright (c) 2023-2026 Leah Rowe <leah@libreboot.org> -cbcfgsdir="config/coreboot" +cbcfgsdir="config/module/coreboot" tmpromdel="$XBMK_CACHE/DO_NOT_FLASH" nvmutil="util/nvmutil/nvmutil" ifdtool="elf/coreboot/default/ifdtool" diff --git a/include/fw/mrc.sh b/include/fw/mrc.sh index 10d7e437..19003af7 100644 --- a/include/fw/mrc.sh +++ b/include/fw/mrc.sh @@ -24,7 +24,7 @@ extract_refcode() # enable the Intel GbE device, if told by offset MRC_refcode_gbe [ -n "$MRC_refcode_gbe" ] && \ - x_ dd if="config/ifd/hp820g2/1.bin" of="$appdir/ref" bs=1 \ + x_ dd if="config/snippet/1" of="$appdir/ref" bs=1 \ seek=$MRC_refcode_gbe count=1 conv=notrunc; : x_ mv "$appdir/ref" "$_pre_dest" diff --git a/include/fw/rom.sh b/include/fw/rom.sh index 4189ac6b..20ac2604 100644 --- a/include/fw/rom.sh +++ b/include/fw/rom.sh @@ -26,7 +26,8 @@ buildser() copyps1bios() { remkdir "bin/playstation" - x_ cp src/pcsx-redux/src/mips/openbios/openbios.bin bin/playstation + x_ cp src/pcsx-redux/default/src/mips/openbios/openbios.bin \ + bin/playstation printf "MIT License\n\nCopyright (c) 2019-2025 PCSX-Redux authors\n\n" \ > bin/playstation/COPYING.txt || \ @@ -59,7 +60,7 @@ corebootpremake() [ "$XBMK_RELEASE" = "y" ] && [ "$release" = "n" ] && \ return 0 - fx_ check_coreboot_util printf "cbfstool\nifdtool\n" + forx 'check_coreboot_util %s' cbfstool ifdtool printf "%s\n" "${version%%-*}" > "$srcdir/.coreboot-version" || \ err "!mk $srcdir .coreboot-version" "corebootpremake" "$@" @@ -70,8 +71,6 @@ corebootpremake() check_coreboot_util() { - [ "$badhash" = "y" ] && \ - x_ rm -f "elf/coreboot/$tree/$1" e "elf/coreboot/$tree/$1" f && \ return 0 @@ -111,10 +110,8 @@ mkcorebootbin() [ "$XBMK_RELEASE" = "y" ] && [ "$release" = "n" ] && \ return 0 - forx 'check_coreboot_util %s' cbfstool ifdtool - - for y in "$target_dir/config"/*; do - defconfig="$y" + for y in "$defscan"/*; do + buildcfg="$y" mkcorebootbin_real done @@ -127,7 +124,7 @@ mkcorebootbin_real() tmprom="$xbtmp/coreboot.rom" - initmode="${defconfig##*/}" + initmode="${buildcfg##*/}" displaymode="${initmode##*_}" if [ "$displaymode" = "$initmode" ]; then # blank it for "normal" or "fspgop" configs: @@ -138,7 +135,7 @@ mkcorebootbin_real() cbfstool="elf/coreboot/$tree/cbfstool" # cbfstool option backends, if they exist - cbfscfg="config/coreboot/$target/cbfs.cfg" + cbfscfg="config/module/coreboot/$target/cbfs.cfg" elfrom="elf/coreboot/$tree/$target/$initmode" [ -n "$displaymode" ] && \ @@ -183,7 +180,7 @@ mkcorebootbin_real() [ -f "$cbfscfg" ] && \ dx_ add_cbfs_option "$cbfscfg" - if grep "CONFIG_PAYLOAD_NONE=y" "$defconfig"; then + if grep "CONFIG_PAYLOAD_NONE=y" "$buildcfg"; then if [ "$payload_seabios" = "y" ]; then pname="seabios" add_seabios @@ -252,7 +249,9 @@ add_seabios() fi [ "$payload_memtest" = "y" ] && \ - cbfs "$tmprom" "elf/memtest86plus/memtest.bin" img/memtest + cbfs "$tmprom" \ + "elf/memtest86plus/default/default/noconfig/memtest.bin" \ + img/memtest [ "$payload_grub" = "y" ] && \ add_grub @@ -377,6 +376,9 @@ cbfs() lzma="-c lzma -l 0x1110000 -e 0x1110000" fi + if [ $# -lt 2 ]; then + echo TEST + fi x_ "$cbfstool" "$1" $ccmd -f "$2" -n "$3" $lzma } diff --git a/include/fw/vendor.sh b/include/fw/vendor.sh index 95cebb66..74946ac0 100644 --- a/include/fw/vendor.sh +++ b/include/fw/vendor.sh @@ -13,12 +13,12 @@ # with inject.sh concatenated onto vendor.sh; they are inexorably intertwined. # The main "mk" script sources vendor.sh first, and then inject.sh, in lbmk. -e6400_unpack="$xbmkpwd/src/bios_extract/dell_inspiron_1100_unpacker.py" +e6400_unpack="$xbmkpwd/src/bios_extract/default/dell_inspiron_1100_unpacker.py" me7updateparser="$xbmkpwd/util/me7_update_parser/me7_update_parser.py" -pfs_extract="$xbmkpwd/src/biosutilities/Dell_PFS_Extract.py" -uefiextract="$xbmkpwd/elf/uefitool/uefiextract" -bsdtar="$xbmkpwd/elf/libarchive/bsdtar" -bsdunzip="$xbmkpwd/elf/libarchive/bsdunzip" +pfs_extract="$xbmkpwd/src/biosutilities/default/Dell_PFS_Extract.py" +uefiextract="$xbmkpwd/elf/uefitool/default/default/noconfig/uefiextract" +bsdtar="$xbmkpwd/elf/libarchive/default/default/noconfig/bsdtar" +bsdunzip="$xbmkpwd/elf/libarchive/default/default/noconfig/bsdunzip" vendir="vendorfiles" appdir="$vendir/app" vfix="DO_NOT_FLASH_YET._FIRST,_INJECT_FILES_VIA_INSTRUCTIONS_ON_LIBREBOOT.ORG_" @@ -260,7 +260,7 @@ find_me() apply_deguard_hack() { - x_ cd src/deguard + x_ cd src/deguard/default x_ ./finalimage.py --delta "data/delta/$ME11delta" \ --version "$ME11version" --pch "$ME11pch" --sku "$ME11sku" \ @@ -414,7 +414,7 @@ bootstrap() mecleaner="$xbmkpwd/$cbdir/util/me_cleaner/me_cleaner.py" [ "$XBMKmecleaner" = "y" ] && \ - mecleaner="$xbmkpwd/src/me_cleaner/me_cleaner.py" + mecleaner="$xbmkpwd/src/me_cleaner/default/me_cleaner.py" x_ "$mk" -f coreboot "${cbdir##*/}" x_ "$mk" -f me_cleaner diff --git a/include/lib.sh b/include/lib.sh index b410a173..dde99065 100644 --- a/include/lib.sh +++ b/include/lib.sh @@ -82,18 +82,12 @@ e() printf "%s %s\n" "$1" "$es2" 1>&2 } -singletree() -{ - ( fx_ "eval exit 1 && err" find "config/$1/"*/ -type f \ - -name "target.cfg" ) || return 1; : -} - pad_one_byte() { paddedfile="`mktemp || err "mktemp pad_one_byte"`" || \ err "can't make tmp file" "pad_one_byte" "$@" - x_ cat "$1" config/data/coreboot/0 > "$paddedfile" || \ + x_ cat "$1" "config/snippet/0" > "$paddedfile" || \ err "could not pad file '$paddedfile'" "pad_one_byte" "$1"; : x_ mv "$paddedfile" "$1" diff --git a/include/mk/release.sh b/include/mk/release.sh index 9063a4d4..f9f185c3 100644 --- a/include/mk/release.sh +++ b/include/mk/release.sh @@ -55,13 +55,13 @@ prep_release_src() forx 'fx_ \"x_ rm -Rf\" x_ find . -name \".%s\"' git gitmodules - ( fx_ nuke x_ find config -type f -name "nuke.list" ) || \ + ( fx_ nuke x_ find config/module -type f -name "nuke.list" ) || \ err "can't prune project files" "prep_release_src" "$@"; : } nuke() { - r="$rsrc/src/${1#config/}" + r="$rsrc/src/${1#config/module/}" if [ -d "${r%/*}" ]; then x_ cd "${r%/*}" |
