From a0c436ad4bae62bf6d237bd093b2bd2dcfdb8efb Mon Sep 17 00:00:00 2001 From: Leah Rowe Date: Sat, 10 May 2025 20:48:38 +0100 Subject: inject.sh: Remove confusing path on tar creation The path is wrong. The correct path is printed afterward. Signed-off-by: Leah Rowe --- include/inject.sh | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'include') diff --git a/include/inject.sh b/include/inject.sh index 6e8fa320..ae6fcc58 100644 --- a/include/inject.sh +++ b/include/inject.sh @@ -145,7 +145,8 @@ remktar() { ( x_ cd "${tmpromdir%"/bin/$board"}" - mkrom_tarball "bin/$board" + printf "Re-building tar archive (please wait)\n" + mkrom_tarball "bin/$board" 1>/dev/null ) || err "Cannot re-generate '$archive'" mv "${tmpromdir%"/bin/$board"}/bin/${relname}_${board}.tar.xz" \ -- cgit v1.2.1 From 7d90d43425251f94adced76512310a59f2fac4dd Mon Sep 17 00:00:00 2001 From: Leah Rowe Date: Sat, 10 May 2025 20:51:38 +0100 Subject: remove another confusing message the current message says the file name, and implies that the given file has already been updated. Signed-off-by: Leah Rowe --- include/inject.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'include') diff --git a/include/inject.sh b/include/inject.sh index ae6fcc58..6d910b7c 100644 --- a/include/inject.sh +++ b/include/inject.sh @@ -131,7 +131,7 @@ modify_mac() fx_ newmac x_ find "$tmpromdir" -maxdepth 1 -type f -name "*.rom" - printf "\nGbE NVM written to '%s':\n" "$archive" + printf "\nThe following GbE NVM data will be written:\n" x_ "$nvm" "$xbmklocal/gbe" dump | grep -v "bytes read from file" || : } -- cgit v1.2.1 From 0cc816167bb7f95c1722a640066933bfdf38dd60 Mon Sep 17 00:00:00 2001 From: Leah Rowe Date: Sun, 11 May 2025 00:34:53 +0100 Subject: vendor.sh: split up setvfile() split the actual bootstrapping to getvfile() setvfile only sets the config, but then it will call getvfile() to act on that config. Signed-off-by: Leah Rowe --- include/inject.sh | 2 +- include/vendor.sh | 30 ++++++++++++++++-------------- 2 files changed, 17 insertions(+), 15 deletions(-) (limited to 'include') diff --git a/include/inject.sh b/include/inject.sh index 6d910b7c..d3ea78f7 100644 --- a/include/inject.sh +++ b/include/inject.sh @@ -113,7 +113,7 @@ readkconfig() x_ rm -f "$xbmktmp/cbcfg" fx_ scankconfig x_ find "$boarddir/config" -type f eval "`setcfg "$xbmktmp/cbcfg" 1`" - setvfile "$@" && return 1; : + setvfile "$@" || return 1; : } scankconfig() diff --git a/include/vendor.sh b/include/vendor.sh index 1c553300..e914f08d 100644 --- a/include/vendor.sh +++ b/include/vendor.sh @@ -219,20 +219,8 @@ setvfile() [ -n "$vcfg" ] && check_vcfg && for c in $cvchk; do eval "[ \"\${$c}\" = \"/dev/null\" ] && continue" eval "[ -z \"\${$c}\" ] && continue" - - # valid vcfg. proceed to download files - eval "`setcfg "$vfile"`" - - bootstrap - - [ $# -gt 0 ] && getfiles - [ $# -gt 0 ] && return 1 # download - - fx_ prep x_ find "$tmpromdir" -maxdepth 1 -type f -name "*.rom" - ( check_vendor_hashes ) || err "$archive: Can't verify hashes" - - return 1 - done && return 0; return 1 + getvfile "$@" && return 0 + done && return 1; : } check_vcfg() @@ -242,6 +230,20 @@ check_vcfg() [ -f "$vfile" ] || err "'$archive', '$board': $vfile missing"; : } +getvfile() +{ + # valid vcfg. proceed to download files + eval "`setcfg "$vfile"`" + + bootstrap + + [ $# -gt 0 ] && getfiles + [ $# -gt 0 ] && return 0 # download + + fx_ prep x_ find "$tmpromdir" -maxdepth 1 -type f -name "*.rom" + ( check_vendor_hashes ) || err "$archive: Can't verify hashes"; : +} + bootstrap() { cbdir="src/coreboot/$tree" -- cgit v1.2.1 From 9c27b7437cf2f902389cbc5965c8dada0b867cba Mon Sep 17 00:00:00 2001 From: Leah Rowe Date: Sun, 11 May 2025 00:43:34 +0100 Subject: vendor.sh: tidy up variables Signed-off-by: Leah Rowe --- include/vendor.sh | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) (limited to 'include') diff --git a/include/vendor.sh b/include/vendor.sh index e914f08d..89e352a7 100644 --- a/include/vendor.sh +++ b/include/vendor.sh @@ -30,18 +30,17 @@ cvxbmk="CONFIG_ME_BIN_PATH CONFIG_SMSC_SCH5545_EC_FW_FILE CONFIG_KBC1126_FW1 \ CONFIG_KBC1126_FW2 CONFIG_KBC1126_FW1_OFFSET CONFIG_KBC1126_FW2_OFFSET \ 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_IFD_BIN_PATH CONFIG_MRC_FILE CONFIG_FSP_M_CBFS \ + CONFIG_FSP_USE_REPO CONFIG_FSP_FULL_FD" # lbmk-specific extensions; mostly used for downloading vendor files eval "`setvars "" has_hashes EC_hash DL_hash DL_url_bkup MRC_refcode_gbe vcfg \ E6400_VGA_DL_hash E6400_VGA_DL_url E6400_VGA_DL_url_bkup E6400_VGA_offset \ - E6400_VGA_romname SCH5545EC_DL_url_bkup SCH5545EC_DL_hash _dest \ - mecleaner kbc1126_ec_dump MRC_refcode_cbtree _dl SCH5545EC_DL_url \ - EC_url rom DL_url nukemode cbfstoolref FSPFD_hash \ - _7ztest ME11bootguard ME11delta ME11version ME11sku ME11pch \ - _me _metmp mfs TBFW_url_bkup TBFW_url TBFW_hash \ - TBFW_size hashfile xromsize xchanged EC_url_bkup vfile \ - CONFIG_FSP_USE_REPO CONFIG_FSP_FULL_FD cbdir`" + E6400_VGA_romname SCH5545EC_DL_url_bkup SCH5545EC_DL_hash _dest mecleaner \ + kbc1126_ec_dump MRC_refcode_cbtree _dl SCH5545EC_DL_url EC_url rom DL_url \ + nukemode cbfstoolref FSPFD_hash _7ztest ME11bootguard ME11delta xromsize \ + ME11version ME11sku ME11pch _me _metmp mfs TBFW_url_bkup TBFW_url vfile \ + TBFW_hash TBFW_size hashfile xchanged EC_url_bkup cbdir`" download() { -- cgit v1.2.1 From 2bbf2ae80b79ec6c6376d4606b48b0e4100d772b Mon Sep 17 00:00:00 2001 From: Leah Rowe Date: Sun, 11 May 2025 00:52:47 +0100 Subject: inject.sh: simplified serprog check Signed-off-by: Leah Rowe --- include/inject.sh | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) (limited to 'include') diff --git a/include/inject.sh b/include/inject.sh index d3ea78f7..9963150f 100644 --- a/include/inject.sh +++ b/include/inject.sh @@ -75,10 +75,7 @@ check_release() check_target() { - if [ "$board" = "serprog_rp2040" ] || [ "$board" = "serprog_stm32" ] \ - || [ "$board" = "serprog_pico" ]; then - return 1 - fi + [ "$board" = "${board#serprog_}" ] || return 1 boarddir="$cbcfgsdir/$board" eval "`setcfg "$boarddir/target.cfg"`" -- cgit v1.2.1 From a449afb287f34e23e98a74011dd655357dc4a085 Mon Sep 17 00:00:00 2001 From: Leah Rowe Date: Sun, 11 May 2025 00:56:28 +0100 Subject: inject.sh: only compile nvmutil if needed Signed-off-by: Leah Rowe --- include/inject.sh | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) (limited to 'include') diff --git a/include/inject.sh b/include/inject.sh index 9963150f..890ac275 100644 --- a/include/inject.sh +++ b/include/inject.sh @@ -39,9 +39,6 @@ inject() esac [ "$new_mac" = "keep" ] && new_mac="" - [ -n "$new_mac" ] && [ "$new_mac" != "restore" ] && \ - x_ make -C util/nvmutil clean && x_ make -C util/nvmutil - check_release check_target && patch_release @@ -124,6 +121,7 @@ modify_mac() { x_ cp "${CONFIG_GBE_BIN_PATH##*../}" "$xbmklocal/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" fx_ newmac x_ find "$tmpromdir" -maxdepth 1 -type f -name "*.rom" -- cgit v1.2.1 From 0911a5a5aed9232f8f9d1685e0a12378f21e41fe Mon Sep 17 00:00:00 2001 From: Leah Rowe Date: Mon, 12 May 2025 13:13:13 +0100 Subject: lib.sh: split up xbmkget() it was too complicated. most of the logic has been moved to a new function, try_file() the for loop is handled by xbmkget(), whereas each try is now handled in try_file() Signed-off-by: Leah Rowe --- include/lib.sh | 52 ++++++++++++++++++++++++++-------------------------- 1 file changed, 26 insertions(+), 26 deletions(-) (limited to 'include') diff --git a/include/lib.sh b/include/lib.sh index 2f87e8b1..c69825e8 100644 --- a/include/lib.sh +++ b/include/lib.sh @@ -50,34 +50,34 @@ xbmkget() _ua="Mozilla/5.0 (Windows NT 10.0; rv:91.0) Gecko/20100101 Firefox/91.0" _dlop="curl" && [ $# -gt 4 ] && _dlop="$5" - cached="$XBMK_CACHE/file/$4" - dl_fail="n" # 1 url, 2 url backup, 3 destination, 4 checksum - bad_checksum "$4" "$cached" 2>/dev/null && dl_fail="y" - [ "$dl_fail" = "n" ] && e "$3" f && return 0 x_ mkdir -p "${3%/*}" "$XBMK_CACHE/file" for url in "$1" "$2"; do - [ "$dl_fail" = "n" ] && break - [ -z "$url" ] && continue - x_ rm -f "$cached" - if [ "$_dlop" = "curl" ]; then - curl --location --retry 3 -A "$_ua" "$url" \ - -o "$cached" || wget --tries 3 -U "$_ua" "$url" \ - -O "$cached" || continue - elif [ "$_dlop" = "copy" ]; then - [ -L "$url" ] && \ - printf "dl %s %s %s %s: '%s' is a symlink\n" \ - "$1" "$2" "$3" "$4" "$url" 1>&2 && continue - [ ! -f "$url" ] && \ - printf "dl %s %s %s %s: '%s' not a file\n" \ - "$1" "$2" "$3" "$4" "$url" 1>&2 && continue - cp "$url" "$cached" || continue - else - err "$1 $2 $3 $4: Unsupported dlop type: '$_dlop'" - fi - bad_checksum "$4" "$cached" || dl_fail="n" - done - [ "$dl_fail" = "y" ] && err "$1 $2 $3 $4: not downloaded" - [ "$cached" = "$3" ] || x_ cp "$cached" "$3"; : + [ -n "$url" ] && try_file "$url" "$_dlop" "$@" && return 0 + done && err "$1 $2 $3 $4: not downloaded"; : +} + +try_file() +{ + cached="$XBMK_CACHE/file/$6" + dl_fail="n" # 1 url, 2 url backup, 3 destination, 4 checksum + bad_checksum "$6" "$cached" 2>/dev/null && dl_fail="y" + [ "$dl_fail" = "n" ] && e "$5" f && return 0 + + x_ rm -f "$cached" + if [ "$2" = "curl" ]; then + curl --location --retry 3 -A "$_ua" "$1" -o "$cached" || \ + wget --tries 3 -U "$_ua" "$1" -O "$cached" || return 1 + elif [ "$2" = "copy" ]; then + [ -L "$1" ] && printf "dl %s %s %s %s: '%s' is a symlink\n" \ + "$3" "$4" "$5" "$6" "$1" 1>&2 && return 1 + [ ! -f "$1" ] && printf "dl %s %s %s %s: '%s' not a file\n" \ + "$3" "$4" "$5" "$6" "$1" 1>&2 && return 1 + cp "$1" "$cached" || return 1 + else + err "$3 $4 $5 $6: Unsupported dlop type: '$2'" + fi + bad_checksum "$6" "$cached" && return 1 + [ "$cached" = "$5" ] || x_ cp "$cached" "$5"; : } bad_checksum() -- cgit v1.2.1 From 3879f6c4d8ff89b390ff64afbcec66ea17f41123 Mon Sep 17 00:00:00 2001 From: Leah Rowe Date: Mon, 12 May 2025 13:21:59 +0100 Subject: lib.sh: use fx_ in rmgit() with fx_, i have more much granular control over how errors are handled. Signed-off-by: Leah Rowe --- include/lib.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'include') diff --git a/include/lib.sh b/include/lib.sh index c69825e8..c0adc7a6 100644 --- a/include/lib.sh +++ b/include/lib.sh @@ -39,8 +39,8 @@ mksha512sum() rmgit() { - x_ find "$1" -name ".git" -exec rm -Rf {} + - x_ find "$1" -name ".gitmodules" -exec rm -Rf {} + + fx_ "x_ rm -Rf" x_ find "$1" -name ".git" + fx_ "x_ rm -Rf" x_ find "$1" -name ".gitmodules" } # can grab from the internet, or copy locally. -- cgit v1.2.1 From 57f896ac016f50db3f3af1ba4be48b4c256deacd Mon Sep 17 00:00:00 2001 From: Leah Rowe Date: Mon, 12 May 2025 14:23:32 +0100 Subject: vendor.sh: simplify setvfile() Signed-off-by: Leah Rowe --- include/vendor.sh | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) (limited to 'include') diff --git a/include/vendor.sh b/include/vendor.sh index 89e352a7..bca51496 100644 --- a/include/vendor.sh +++ b/include/vendor.sh @@ -216,9 +216,8 @@ extract_fsp() setvfile() { [ -n "$vcfg" ] && check_vcfg && for c in $cvchk; do - eval "[ \"\${$c}\" = \"/dev/null\" ] && continue" - eval "[ -z \"\${$c}\" ] && continue" - getvfile "$@" && return 0 + vcmd="[ \"\${$c}\" != \"/dev/null\" ] && [ -n \"\${$c}\" ]" + eval "$vcmd && getvfile \"\$@\" && return 0" done && return 1; : } -- cgit v1.2.1 From 97d4d020d97eb8f9fde598c768d1bc19a847bc34 Mon Sep 17 00:00:00 2001 From: Leah Rowe Date: Mon, 12 May 2025 14:30:27 +0100 Subject: vendor.sh: simplify getvfile() Signed-off-by: Leah Rowe --- include/vendor.sh | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) (limited to 'include') diff --git a/include/vendor.sh b/include/vendor.sh index bca51496..cd3a10d5 100644 --- a/include/vendor.sh +++ b/include/vendor.sh @@ -230,14 +230,8 @@ check_vcfg() getvfile() { - # valid vcfg. proceed to download files eval "`setcfg "$vfile"`" - - bootstrap - - [ $# -gt 0 ] && getfiles - [ $# -gt 0 ] && return 0 # download - + bootstrap && [ $# -gt 0 ] && getfiles && return 0 # download fx_ prep x_ find "$tmpromdir" -maxdepth 1 -type f -name "*.rom" ( check_vendor_hashes ) || err "$archive: Can't verify hashes"; : } -- cgit v1.2.1 From 76f81697e6e9a6f8ec7cb121cb6bc58f41bdf443 Mon Sep 17 00:00:00 2001 From: Leah Rowe Date: Mon, 12 May 2025 14:47:43 +0100 Subject: vendor.sh: remove check_vcfg() We don't need it. The vfile variable is only used in one place, and only once, for use with setcfg. Signed-off-by: Leah Rowe --- include/vendor.sh | 15 ++++----------- 1 file changed, 4 insertions(+), 11 deletions(-) (limited to 'include') diff --git a/include/vendor.sh b/include/vendor.sh index cd3a10d5..259a25ba 100644 --- a/include/vendor.sh +++ b/include/vendor.sh @@ -39,8 +39,8 @@ eval "`setvars "" has_hashes EC_hash DL_hash DL_url_bkup MRC_refcode_gbe vcfg \ E6400_VGA_romname SCH5545EC_DL_url_bkup SCH5545EC_DL_hash _dest mecleaner \ kbc1126_ec_dump MRC_refcode_cbtree _dl SCH5545EC_DL_url EC_url rom DL_url \ nukemode cbfstoolref FSPFD_hash _7ztest ME11bootguard ME11delta xromsize \ - ME11version ME11sku ME11pch _me _metmp mfs TBFW_url_bkup TBFW_url vfile \ - TBFW_hash TBFW_size hashfile xchanged EC_url_bkup cbdir`" + ME11version ME11sku ME11pch _me _metmp mfs TBFW_url_bkup TBFW_url cbdir \ + TBFW_hash TBFW_size hashfile xchanged EC_url_bkup`" download() { @@ -215,22 +215,15 @@ extract_fsp() setvfile() { - [ -n "$vcfg" ] && check_vcfg && for c in $cvchk; do + [ -n "$vcfg" ] && for c in $cvchk; do vcmd="[ \"\${$c}\" != \"/dev/null\" ] && [ -n \"\${$c}\" ]" eval "$vcmd && getvfile \"\$@\" && return 0" done && return 1; : } -check_vcfg() -{ - vfile="config/vendor/$vcfg/pkg.cfg" - [ -L "$vfile" ] && err "'$archive', '$board': $vfile is a symlink"; : - [ -f "$vfile" ] || err "'$archive', '$board': $vfile missing"; : -} - getvfile() { - eval "`setcfg "$vfile"`" + eval "`setcfg "config/vendor/$vcfg/pkg.cfg" 1`" bootstrap && [ $# -gt 0 ] && getfiles && return 0 # download fx_ prep x_ find "$tmpromdir" -maxdepth 1 -type f -name "*.rom" ( check_vendor_hashes ) || err "$archive: Can't verify hashes"; : -- cgit v1.2.1 From 311ae2f8df28e69ffbf26ff63f7bf70070c225b5 Mon Sep 17 00:00:00 2001 From: Leah Rowe Date: Mon, 12 May 2025 14:49:14 +0100 Subject: inject.sh: define xchanged here instead this is used here, and also needed in cbmk. Signed-off-by: Leah Rowe --- include/inject.sh | 2 +- include/vendor.sh | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) (limited to 'include') diff --git a/include/inject.sh b/include/inject.sh index 890ac275..a17ed19c 100644 --- a/include/inject.sh +++ b/include/inject.sh @@ -14,7 +14,7 @@ cv="CONFIG_GBE_BIN_PATH" [ -n "$cvchk" ] && cv="$cv $cvchk" eval "`setvars "" archive boarddir IFD_platform ifdprefix tree new_mac \ - tmpromdir board $cv`" + tmpromdir board xchanged $cv`" inject() { diff --git a/include/vendor.sh b/include/vendor.sh index 259a25ba..4374277a 100644 --- a/include/vendor.sh +++ b/include/vendor.sh @@ -40,7 +40,7 @@ eval "`setvars "" has_hashes EC_hash DL_hash DL_url_bkup MRC_refcode_gbe vcfg \ kbc1126_ec_dump MRC_refcode_cbtree _dl SCH5545EC_DL_url EC_url rom DL_url \ nukemode cbfstoolref FSPFD_hash _7ztest ME11bootguard ME11delta xromsize \ ME11version ME11sku ME11pch _me _metmp mfs TBFW_url_bkup TBFW_url cbdir \ - TBFW_hash TBFW_size hashfile xchanged EC_url_bkup`" + TBFW_hash TBFW_size hashfile EC_url_bkup`" download() { -- cgit v1.2.1 From ef800b652c8fe1e69e8faa338489638c08d30de5 Mon Sep 17 00:00:00 2001 From: Leah Rowe Date: Mon, 12 May 2025 14:52:27 +0100 Subject: inject.sh: remove the hashfiles variable we only use it once, and it's a trivial string Signed-off-by: Leah Rowe --- include/inject.sh | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) (limited to 'include') diff --git a/include/inject.sh b/include/inject.sh index a17ed19c..d4d20568 100644 --- a/include/inject.sh +++ b/include/inject.sh @@ -4,7 +4,6 @@ # Copyright (c) 2023-2025 Leah Rowe cbcfgsdir="config/coreboot" -hashfiles="vendorhashes blobhashes" # blobhashes for backwards compatibility tmpromdel="$XBMK_CACHE/DO_NOT_FLASH" nvm="util/nvmutil/nvm" ifdtool="elf/ifdtool/default/ifdtool" @@ -92,7 +91,7 @@ patch_release() remkdir "${tmpromdir%"/bin/$board"}" x_ tar -xf "$archive" -C "${tmpromdir%"/bin/$board"}" - for _hashes in $hashfiles; do + for _hashes in "vendorhashes" "blobhashes"; do e "$tmpromdir/$_hashes" f && \ has_hashes="y" && hashfile="$_hashes" && break; : done -- cgit v1.2.1 From 40163dcfa4e29d9ce15f5537d03a2ae3b657cdf8 Mon Sep 17 00:00:00 2001 From: Leah Rowe Date: Mon, 12 May 2025 15:05:21 +0100 Subject: mrc.sh: update copyright year to include 2025 I've made several modifications to the file, this year. Signed-off-by: Leah Rowe --- include/mrc.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'include') diff --git a/include/mrc.sh b/include/mrc.sh index 3b3089fc..55cc6a76 100644 --- a/include/mrc.sh +++ b/include/mrc.sh @@ -1,7 +1,7 @@ # SPDX-License-Identifier: GPL-2.0-only # Logic based on util/chromeos/crosfirmware.sh in coreboot cfc26ce278. -# Modifications in this version are Copyright 2021, 2023 and 2024 Leah Rowe. +# Modifications in this version are Copyright 2021,2023-2025 Leah Rowe. # Original copyright detailed in repo: https://review.coreboot.org/coreboot/ eval "`setvars "" MRC_url MRC_url_bkup MRC_hash MRC_board SHELLBALL`" -- cgit v1.2.1 From 308a9ab1e17e3c3fd5acbbe95d7f2c598344870b Mon Sep 17 00:00:00 2001 From: Leah Rowe Date: Mon, 12 May 2025 15:06:25 +0100 Subject: mrc.sh: minor cleanup group the cbfs command to the extract command, since they are related. this makes it clearer that the following command to extract refcode is unrelated. Signed-off-by: Leah Rowe --- include/mrc.sh | 1 - 1 file changed, 1 deletion(-) (limited to 'include') diff --git a/include/mrc.sh b/include/mrc.sh index 55cc6a76..70c3bd3c 100644 --- a/include/mrc.sh +++ b/include/mrc.sh @@ -9,7 +9,6 @@ eval "`setvars "" MRC_url MRC_url_bkup MRC_hash MRC_board SHELLBALL`" extract_mrc() { extract_shellball - x_ "$cbfstool" "$appdir/"bios.bin extract -n mrc.bin \ -f "$_dest" -r RO_SECTION -- cgit v1.2.1 From 89cd828e87c8a98e37f689adafa32d0f2d404c39 Mon Sep 17 00:00:00 2001 From: Leah Rowe Date: Mon, 12 May 2025 15:32:50 +0100 Subject: lib.sh: move _ua to try_file() it's only used there Signed-off-by: Leah Rowe --- include/lib.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'include') diff --git a/include/lib.sh b/include/lib.sh index c0adc7a6..32f81cd0 100644 --- a/include/lib.sh +++ b/include/lib.sh @@ -47,8 +47,6 @@ rmgit() # if copying locally, it can only copy a file. xbmkget() { - _ua="Mozilla/5.0 (Windows NT 10.0; rv:91.0) Gecko/20100101 Firefox/91.0" - _dlop="curl" && [ $# -gt 4 ] && _dlop="$5" x_ mkdir -p "${3%/*}" "$XBMK_CACHE/file" for url in "$1" "$2"; do @@ -58,6 +56,8 @@ xbmkget() try_file() { + _ua="Mozilla/5.0 (Windows NT 10.0; rv:91.0) Gecko/20100101 Firefox/91.0" + cached="$XBMK_CACHE/file/$6" dl_fail="n" # 1 url, 2 url backup, 3 destination, 4 checksum bad_checksum "$6" "$cached" 2>/dev/null && dl_fail="y" -- cgit v1.2.1 From 80f0562e8d1d0de4715bdcbdab52440302fd1c44 Mon Sep 17 00:00:00 2001 From: Leah Rowe Date: Mon, 12 May 2025 15:44:31 +0100 Subject: lib.sh: split up try_file() Signed-off-by: Leah Rowe --- include/lib.sh | 35 +++++++++++++++++++++-------------- 1 file changed, 21 insertions(+), 14 deletions(-) (limited to 'include') diff --git a/include/lib.sh b/include/lib.sh index 32f81cd0..fc26c733 100644 --- a/include/lib.sh +++ b/include/lib.sh @@ -56,30 +56,37 @@ xbmkget() try_file() { - _ua="Mozilla/5.0 (Windows NT 10.0; rv:91.0) Gecko/20100101 Firefox/91.0" - cached="$XBMK_CACHE/file/$6" dl_fail="n" # 1 url, 2 url backup, 3 destination, 4 checksum bad_checksum "$6" "$cached" 2>/dev/null && dl_fail="y" [ "$dl_fail" = "n" ] && e "$5" f && return 0 x_ rm -f "$cached" - if [ "$2" = "curl" ]; then - curl --location --retry 3 -A "$_ua" "$1" -o "$cached" || \ - wget --tries 3 -U "$_ua" "$1" -O "$cached" || return 1 - elif [ "$2" = "copy" ]; then - [ -L "$1" ] && printf "dl %s %s %s %s: '%s' is a symlink\n" \ - "$3" "$4" "$5" "$6" "$1" 1>&2 && return 1 - [ ! -f "$1" ] && printf "dl %s %s %s %s: '%s' not a file\n" \ - "$3" "$4" "$5" "$6" "$1" 1>&2 && return 1 - cp "$1" "$cached" || return 1 - else - err "$3 $4 $5 $6: Unsupported dlop type: '$2'" - fi + [ "$2" = "curl" ] || [ "$2" = "copy" ] || \ + err "$3 $4 $5 $6: Unsupported dlop type: '$2'" + + try_$2 "$cached" "$@" || return 1 + bad_checksum "$6" "$cached" && return 1 [ "$cached" = "$5" ] || x_ cp "$cached" "$5"; : } +try_curl() +{ + _ua="Mozilla/5.0 (Windows NT 10.0; rv:91.0) Gecko/20100101 Firefox/91.0" + curl --location --retry 3 -A "$_ua" "$2" -o "$1" || \ + wget --tries 3 -U "$_ua" "$2" -O "$1" || return 1; : +} + +try_copy() +{ + [ -L "$2" ] && printf "dl %s %s %s %s: '%s' is a symlink\n" \ + "$4" "$5" "$6" "$7" "$2" 1>&2 && return 1 + [ ! -f "$2" ] && printf "dl %s %s %s %s: '%s' not a file\n" \ + "$4" "$5" "$6" "$7" "$2" 1>&2 && return 1 + cp "$2" "$1" || return 1; : +} + bad_checksum() { [ "$(sha512sum "$2" | awk '{print $1}')" != "$1" ] || return 1 -- cgit v1.2.1 From 23913bb8d2aa80452c381086b7513587badcd1e4 Mon Sep 17 00:00:00 2001 From: Leah Rowe Date: Mon, 12 May 2025 16:20:34 +0100 Subject: lib.sh: move mksha512sum() to vendor.sh this is unused in cbmk. it's only used from vendor.sh. therefore, lbmk shall have it in vendor.sh. Signed-off-by: Leah Rowe --- include/lib.sh | 8 -------- include/vendor.sh | 8 ++++++++ 2 files changed, 8 insertions(+), 8 deletions(-) (limited to 'include') diff --git a/include/lib.sh b/include/lib.sh index fc26c733..d5607c61 100644 --- a/include/lib.sh +++ b/include/lib.sh @@ -29,14 +29,6 @@ mktarball() x_ tar -c "$1" | xz -T$XBMK_THREADS -9e > "$2" || err "mktarball2, $1" } -mksha512sum() -{ - ( - [ "${1%/*}" != "$1" ] && x_ cd "${1%/*}" - sha512sum ./"${1##*/}" >> "$2" || err "!sha512sum \"$1\" > \"$2\"" - ) || err "failed to create tarball checksum" -} - rmgit() { fx_ "x_ rm -Rf" x_ find "$1" -name ".git" diff --git a/include/vendor.sh b/include/vendor.sh index 4374277a..73f2592c 100644 --- a/include/vendor.sh +++ b/include/vendor.sh @@ -277,6 +277,14 @@ prep() x_ rm -f "$_xrom" } +mksha512sum() +{ + ( + [ "${1%/*}" != "$1" ] && x_ cd "${1%/*}" + sha512sum ./"${1##*/}" >> "$2" || err "!sha512sum \"$1\" > \"$2\"" + ) || err "failed to create tarball checksum" +} + add_vfiles() { rom="$1" -- cgit v1.2.1 From c9696e233389f1f896dc70076cfc03f14f8a940a Mon Sep 17 00:00:00 2001 From: Leah Rowe Date: Mon, 12 May 2025 16:30:05 +0100 Subject: lib.sh: move xbmkget() to git.sh in cbmk, it's only used from there. in lbmk, it's also used from vendor.sh. however, i plan to further expand git.sh at some point, tidying it up so that git cloning is also done from xbmkget, with dlop=git and git.sh would then be renamed to get.sh Signed-off-by: Leah Rowe --- include/git.sh | 50 ++++++++++++++++++++++++++++++++++++++++++++++++++ include/lib.sh | 50 -------------------------------------------------- 2 files changed, 50 insertions(+), 50 deletions(-) (limited to 'include') diff --git a/include/git.sh b/include/git.sh index bbc5140e..b65bd196 100644 --- a/include/git.sh +++ b/include/git.sh @@ -87,6 +87,56 @@ fetch_submodule() "$mdir/${1##*/}/patches" } +# can grab from the internet, or copy locally. +# if copying locally, it can only copy a file. +xbmkget() +{ + _dlop="curl" && [ $# -gt 4 ] && _dlop="$5" + x_ mkdir -p "${3%/*}" "$XBMK_CACHE/file" + for url in "$1" "$2"; do + [ -n "$url" ] && try_file "$url" "$_dlop" "$@" && return 0 + done && err "$1 $2 $3 $4: not downloaded"; : +} + +try_file() +{ + cached="$XBMK_CACHE/file/$6" + dl_fail="n" # 1 url, 2 url backup, 3 destination, 4 checksum + bad_checksum "$6" "$cached" 2>/dev/null && dl_fail="y" + [ "$dl_fail" = "n" ] && e "$5" f && return 0 + + x_ rm -f "$cached" + [ "$2" = "curl" ] || [ "$2" = "copy" ] || \ + err "$3 $4 $5 $6: Unsupported dlop type: '$2'" + + try_$2 "$cached" "$@" || return 1 + + bad_checksum "$6" "$cached" && return 1 + [ "$cached" = "$5" ] || x_ cp "$cached" "$5"; : +} + +try_curl() +{ + _ua="Mozilla/5.0 (Windows NT 10.0; rv:91.0) Gecko/20100101 Firefox/91.0" + curl --location --retry 3 -A "$_ua" "$2" -o "$1" || \ + wget --tries 3 -U "$_ua" "$2" -O "$1" || return 1; : +} + +try_copy() +{ + [ -L "$2" ] && printf "dl %s %s %s %s: '%s' is a symlink\n" \ + "$4" "$5" "$6" "$7" "$2" 1>&2 && return 1 + [ ! -f "$2" ] && printf "dl %s %s %s %s: '%s' not a file\n" \ + "$4" "$5" "$6" "$7" "$2" 1>&2 && return 1 + cp "$2" "$1" || return 1; : +} + +bad_checksum() +{ + [ "$(sha512sum "$2" | awk '{print $1}')" != "$1" ] || return 1 + printf "Bad checksum for file: %s\n" "$2" 1>&2; rm -f "$2" || :; : +} + tmpclone() { [ -d "$3" ] && return 0 diff --git a/include/lib.sh b/include/lib.sh index d5607c61..ba7d5d8c 100644 --- a/include/lib.sh +++ b/include/lib.sh @@ -35,56 +35,6 @@ rmgit() fx_ "x_ rm -Rf" x_ find "$1" -name ".gitmodules" } -# can grab from the internet, or copy locally. -# if copying locally, it can only copy a file. -xbmkget() -{ - _dlop="curl" && [ $# -gt 4 ] && _dlop="$5" - x_ mkdir -p "${3%/*}" "$XBMK_CACHE/file" - for url in "$1" "$2"; do - [ -n "$url" ] && try_file "$url" "$_dlop" "$@" && return 0 - done && err "$1 $2 $3 $4: not downloaded"; : -} - -try_file() -{ - cached="$XBMK_CACHE/file/$6" - dl_fail="n" # 1 url, 2 url backup, 3 destination, 4 checksum - bad_checksum "$6" "$cached" 2>/dev/null && dl_fail="y" - [ "$dl_fail" = "n" ] && e "$5" f && return 0 - - x_ rm -f "$cached" - [ "$2" = "curl" ] || [ "$2" = "copy" ] || \ - err "$3 $4 $5 $6: Unsupported dlop type: '$2'" - - try_$2 "$cached" "$@" || return 1 - - bad_checksum "$6" "$cached" && return 1 - [ "$cached" = "$5" ] || x_ cp "$cached" "$5"; : -} - -try_curl() -{ - _ua="Mozilla/5.0 (Windows NT 10.0; rv:91.0) Gecko/20100101 Firefox/91.0" - curl --location --retry 3 -A "$_ua" "$2" -o "$1" || \ - wget --tries 3 -U "$_ua" "$2" -O "$1" || return 1; : -} - -try_copy() -{ - [ -L "$2" ] && printf "dl %s %s %s %s: '%s' is a symlink\n" \ - "$4" "$5" "$6" "$7" "$2" 1>&2 && return 1 - [ ! -f "$2" ] && printf "dl %s %s %s %s: '%s' not a file\n" \ - "$4" "$5" "$6" "$7" "$2" 1>&2 && return 1 - cp "$2" "$1" || return 1; : -} - -bad_checksum() -{ - [ "$(sha512sum "$2" | awk '{print $1}')" != "$1" ] || return 1 - printf "Bad checksum for file: %s\n" "$2" 1>&2; rm -f "$2" || :; : -} - e() { es_t="e" && [ $# -gt 1 ] && es_t="$2" -- cgit v1.2.1 From 05b5914b35492ddb4076873e0b6519396dfe92de Mon Sep 17 00:00:00 2001 From: Leah Rowe Date: Mon, 12 May 2025 18:01:53 +0100 Subject: lib.sh: remove mk() i don't need it. i can use fx_ instead, on functions that previously called mk(). Signed-off-by: Leah Rowe --- include/lib.sh | 8 -------- include/release.sh | 3 ++- include/tree.sh | 6 ++---- include/vendor.sh | 2 +- 4 files changed, 5 insertions(+), 14 deletions(-) (limited to 'include') diff --git a/include/lib.sh b/include/lib.sh index ba7d5d8c..cb3ba6cc 100644 --- a/include/lib.sh +++ b/include/lib.sh @@ -46,14 +46,6 @@ e() printf "%s %s\n" "$1" "$es2" 1>&2 } -mk() -{ - mk_flag="$1" || err "No argument given" - shift 1 && for mk_arg in "$@"; do - x_ ./mk $mk_flag $mk_arg - done; : -} - setvars() { _setvars="" diff --git a/include/release.sh b/include/release.sh index 4741b44a..0afb777f 100644 --- a/include/release.sh +++ b/include/release.sh @@ -55,7 +55,8 @@ build_release() ( x_ cd "$relsrcdir" x_ ./mk -d coreboot - mk -b coreboot pico-serprog stm32-vserprog pcsx-redux + fx_ "x_ ./mk -b" printf \ + "coreboot\npico-serprog\nstm32-vserprog\npcsx-redux\n" fx_ mkrom_tarball x_ find bin -maxdepth 1 -type d -name "serprog_*" x_ mv bin ../roms diff --git a/include/tree.sh b/include/tree.sh index d4585b92..f44b39cc 100644 --- a/include/tree.sh +++ b/include/tree.sh @@ -39,13 +39,11 @@ trees() fi project="${OPTARG#src/}" + project="${project#config/git/}" shift 2 done [ -z "$_f" ] && err "missing flag ($flags)" - if [ -z "$project" ]; then - mk $_f $(ls -1 config/git) - return 1 - fi + [ -z "$project" ] && fx_ "x_ ./mk $_f" x_ ls -1 config/git && return 1 [ -f "config/git/$project/pkg.cfg" ] || \ err "config/git/$project/pkg.cfg missing" diff --git a/include/vendor.sh b/include/vendor.sh index 73f2592c..fb49cca5 100644 --- a/include/vendor.sh +++ b/include/vendor.sh @@ -238,7 +238,7 @@ bootstrap() rmodtool="elf/cbfstool/$tree/rmodtool" x_ ./mk -f coreboot "${cbdir##*/}" - mk -b uefitool biosutilities bios_extract + 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" && \ -- cgit v1.2.1 From 92954eeb38f69ebc0cfef7b9629e96a1599667be Mon Sep 17 00:00:00 2001 From: Leah Rowe Date: Mon, 12 May 2025 19:20:50 +0100 Subject: lib.sh: remove rmgit() We don't need to call it from git.sh, because it's only being done when building a release anyway, and we already run rmgit when doing a release. The function itself is only two simple fx_ calls, so we can just do that from build_release(). Signed-off-by: Leah Rowe --- include/git.sh | 3 --- include/lib.sh | 6 ------ include/release.sh | 3 ++- 3 files changed, 2 insertions(+), 10 deletions(-) (limited to 'include') diff --git a/include/git.sh b/include/git.sh index b65bd196..0091c832 100644 --- a/include/git.sh +++ b/include/git.sh @@ -57,9 +57,6 @@ git_prep() dx_ fetch_submodule "$mdir/module.list" fi - [ "$_loc" != "$XBMK_CACHE/repo/$project" ] && \ - [ "$XBMK_RELEASE" = "y" ] && rmgit "$tmpgit" - [ "$_loc" = "${_loc%/*}" ] || x_ mkdir -p "${_loc%/*}" x_ mv "$tmpgit" "$_loc" } diff --git a/include/lib.sh b/include/lib.sh index cb3ba6cc..cf4305a1 100644 --- a/include/lib.sh +++ b/include/lib.sh @@ -29,12 +29,6 @@ mktarball() x_ tar -c "$1" | xz -T$XBMK_THREADS -9e > "$2" || err "mktarball2, $1" } -rmgit() -{ - fx_ "x_ rm -Rf" x_ find "$1" -name ".git" - fx_ "x_ rm -Rf" x_ find "$1" -name ".gitmodules" -} - e() { es_t="e" && [ $# -gt 1 ] && es_t="$2" diff --git a/include/release.sh b/include/release.sh index 0afb777f..be221d19 100644 --- a/include/release.sh +++ b/include/release.sh @@ -37,7 +37,8 @@ build_release() x_ cd "$relsrcdir" x_ ./mk -f - rmgit . + fx_ "x_ rm -Rf" x_ find . -name ".git" + fx_ "x_ rm -Rf" x_ find . -name ".gitmodules" x_ mv src/docs docs ) || err "can't create release files" -- cgit v1.2.1 From c85aff5c54e8a2b0b649882b555e704bded268a9 Mon Sep 17 00:00:00 2001 From: Leah Rowe Date: Mon, 12 May 2025 19:29:58 +0100 Subject: release.sh: delete tmp/cache from the tarball Signed-off-by: Leah Rowe --- include/release.sh | 1 + 1 file changed, 1 insertion(+) (limited to 'include') diff --git a/include/release.sh b/include/release.sh index be221d19..ecff57b3 100644 --- a/include/release.sh +++ b/include/release.sh @@ -45,6 +45,7 @@ build_release() git log --graph --pretty=format:'%Cred%h%Creset %s %Creset' \ --abbrev-commit > "$relsrcdir/CHANGELOG" || err "!log $relsrcdir" x_ rm -f "$relsrcdir/lock" + x_ rm -Rf "$relsrcdir/cache" "$relsrcdir/tmp" ( x_ cd "${relsrcdir%/*}" -- cgit v1.2.1 From f4871da9bca612fc2bcafaedc6b023863c411829 Mon Sep 17 00:00:00 2001 From: Leah Rowe Date: Mon, 12 May 2025 19:49:50 +0100 Subject: release.sh: split up build_release() Signed-off-by: Leah Rowe --- include/release.sh | 31 ++++++++++++++++++------------- 1 file changed, 18 insertions(+), 13 deletions(-) (limited to 'include') diff --git a/include/release.sh b/include/release.sh index ecff57b3..05e872d5 100644 --- a/include/release.sh +++ b/include/release.sh @@ -24,45 +24,50 @@ release() [ -e "$vdir" ] && err "already exists: \"$vdir\"" x_ mkdir -p "$vdir" x_ git clone . "$relsrcdir" - x_ touch "$relsrcdir/lock" - build_release + prep_release src + prep_release_tarball + [ "$relmode" = "src" ] || prep_release bin + x_ rm -Rf "$relsrcdir" printf "\n\nDONE! Check release files under %s\n" "$vdir" } -build_release() +prep_release() { + x_ touch "$relsrcdir/lock" ( x_ cd "$relsrcdir" + prep_release_$1 + ) || err "can't prep release $1" +} +prep_release_src() +{ x_ ./mk -f fx_ "x_ rm -Rf" x_ find . -name ".git" fx_ "x_ rm -Rf" x_ find . -name ".gitmodules" x_ mv src/docs docs - ) || err "can't create release files" +} +prep_release_tarball() +{ git log --graph --pretty=format:'%Cred%h%Creset %s %Creset' \ --abbrev-commit > "$relsrcdir/CHANGELOG" || err "!log $relsrcdir" x_ rm -f "$relsrcdir/lock" x_ rm -Rf "$relsrcdir/cache" "$relsrcdir/tmp" - ( x_ cd "${relsrcdir%/*}" x_ mktarball "${relsrcdir##*/}" "${relsrcdir##*/}.tar.xz" - ) || err "can't create src tarball" - [ "$relmode" = "src" ] && return 0 + ) || err "can't create src tarball"; : +} - x_ touch "$relsrcdir/lock" - ( - x_ cd "$relsrcdir" +prep_release_bin() +{ x_ ./mk -d coreboot fx_ "x_ ./mk -b" printf \ "coreboot\npico-serprog\nstm32-vserprog\npcsx-redux\n" fx_ mkrom_tarball x_ find bin -maxdepth 1 -type d -name "serprog_*" x_ mv bin ../roms - ) || err "can't build rom images" - - x_ rm -Rf "$relsrcdir" } -- cgit v1.2.1 From a0105e1ab44f9021d8a89f9932ea3a53e4a02eeb Mon Sep 17 00:00:00 2001 From: Leah Rowe Date: Mon, 12 May 2025 20:07:50 +0100 Subject: release.sh: remove unnecessary mkdir command the following git clone command creates that directory Signed-off-by: Leah Rowe --- include/release.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'include') diff --git a/include/release.sh b/include/release.sh index 05e872d5..640391f8 100644 --- a/include/release.sh +++ b/include/release.sh @@ -22,7 +22,7 @@ release() relsrcdir="$vdir/$src_dirname" [ -e "$vdir" ] && err "already exists: \"$vdir\"" - x_ mkdir -p "$vdir" + x_ git clone . "$relsrcdir" prep_release src -- cgit v1.2.1 From 6d3a6347c3ee93f674f129ffe1b9120741b34b00 Mon Sep 17 00:00:00 2001 From: Leah Rowe Date: Mon, 12 May 2025 20:23:41 +0100 Subject: release.sh: build in tmp directory first don't move to the real directory until the work is done. that way, a re-try can be done, while analysing the old files. it is created based on the tmpdir, under XBMK_CACHE/ Signed-off-by: Leah Rowe --- include/release.sh | 21 ++++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) (limited to 'include') diff --git a/include/release.sh b/include/release.sh index 640391f8..eb0d58d8 100644 --- a/include/release.sh +++ b/include/release.sh @@ -1,28 +1,32 @@ # SPDX-License-Identifier: GPL-3.0-or-later # Copyright (c) 2023-2025 Leah Rowe -eval "`setvars "" vdir src_dirname relsrcdir relmode`" +eval "`setvars "" reldir reldest vdir src_dirname relsrcdir relmode`" release() { export XBMK_RELEASE="y" - vdir="release" + reldir="release" + while getopts d:m: option; do [ -z "$OPTARG" ] && err "empty argument not allowed" case "$option" in - d) vdir="$OPTARG" ;; + d) reldir="$OPTARG" ;; m) relmode="$OPTARG" ;; *) err "invalid option '-$option'" ;; esac done - vdir="$vdir/$version" + reldest="$reldir/$version" + [ -e "$reldest" ] && \ + err "already exists: \"$reldest\"" + + vdir="$XBMK_CACHE/relpwd/${xbmktmp##*/}/$version" src_dirname="${relname}_src" relsrcdir="$vdir/$src_dirname" - [ -e "$vdir" ] && err "already exists: \"$vdir\"" - + remkdir "$vdir" x_ git clone . "$relsrcdir" prep_release src @@ -30,7 +34,10 @@ release() [ "$relmode" = "src" ] || prep_release bin x_ rm -Rf "$relsrcdir" - printf "\n\nDONE! Check release files under %s\n" "$vdir" + x_ mkdir -p "$reldir" + x_ mv "$vdir" "$reldir" + + printf "\n\nDONE! Check release files under %s\n" "$reldest" } prep_release() -- cgit v1.2.1 From d4c0479093ab33a3909d4408ad17ca740e0436a5 Mon Sep 17 00:00:00 2001 From: Leah Rowe Date: Mon, 12 May 2025 20:25:03 +0100 Subject: release.sh: remove src_dirname variable Signed-off-by: Leah Rowe --- include/release.sh | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) (limited to 'include') diff --git a/include/release.sh b/include/release.sh index eb0d58d8..f34eb6df 100644 --- a/include/release.sh +++ b/include/release.sh @@ -1,7 +1,7 @@ # SPDX-License-Identifier: GPL-3.0-or-later # Copyright (c) 2023-2025 Leah Rowe -eval "`setvars "" reldir reldest vdir src_dirname relsrcdir relmode`" +eval "`setvars "" reldir reldest vdir relsrcdir relmode`" release() { @@ -23,8 +23,7 @@ release() err "already exists: \"$reldest\"" vdir="$XBMK_CACHE/relpwd/${xbmktmp##*/}/$version" - src_dirname="${relname}_src" - relsrcdir="$vdir/$src_dirname" + relsrcdir="$vdir/${relname}_src" remkdir "$vdir" x_ git clone . "$relsrcdir" -- cgit v1.2.1 From 66f7ecdb2d7ef03c56bf50171911a66c92b8238a Mon Sep 17 00:00:00 2001 From: Leah Rowe Date: Mon, 12 May 2025 21:04:48 +0100 Subject: release.sh: clean up the vdir after release do this after moving the version directory within it. Signed-off-by: Leah Rowe --- include/release.sh | 1 + 1 file changed, 1 insertion(+) (limited to 'include') diff --git a/include/release.sh b/include/release.sh index f34eb6df..9046acbf 100644 --- a/include/release.sh +++ b/include/release.sh @@ -35,6 +35,7 @@ release() x_ mkdir -p "$reldir" x_ mv "$vdir" "$reldir" + x_ rm -Rf "${vdir%"/$version"}" printf "\n\nDONE! Check release files under %s\n" "$reldest" } -- cgit v1.2.1 From 6bf24221e60cfcc21bef445274973570ace436c5 Mon Sep 17 00:00:00 2001 From: Leah Rowe Date: Mon, 12 May 2025 21:11:34 +0100 Subject: release.sh: simplify release() Signed-off-by: Leah Rowe --- include/release.sh | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) (limited to 'include') diff --git a/include/release.sh b/include/release.sh index 9046acbf..fbcc5621 100644 --- a/include/release.sh +++ b/include/release.sh @@ -28,9 +28,7 @@ release() remkdir "$vdir" x_ git clone . "$relsrcdir" - prep_release src - prep_release_tarball - [ "$relmode" = "src" ] || prep_release bin + fx_ prep_release printf "src\ntarball\nbin\n" x_ rm -Rf "$relsrcdir" x_ mkdir -p "$reldir" @@ -44,7 +42,7 @@ prep_release() { x_ touch "$relsrcdir/lock" ( - x_ cd "$relsrcdir" + [ "$1" = "tarball" ] || x_ cd "$relsrcdir" prep_release_$1 ) || err "can't prep release $1" } @@ -71,6 +69,7 @@ prep_release_tarball() prep_release_bin() { + [ "$relmode" = "src" ] && return 0 x_ ./mk -d coreboot fx_ "x_ ./mk -b" printf \ "coreboot\npico-serprog\nstm32-vserprog\npcsx-redux\n" -- cgit v1.2.1 From e38805a9448af8445370d4f5fbdbbb185dcbe6e8 Mon Sep 17 00:00:00 2001 From: Leah Rowe Date: Mon, 12 May 2025 21:29:38 +0100 Subject: rom.sh: reduce indendation in check_coreboot_utils call it via fx_, instead of using a for loop Signed-off-by: Leah Rowe --- include/rom.sh | 38 ++++++++++++++++++-------------------- 1 file changed, 18 insertions(+), 20 deletions(-) (limited to 'include') diff --git a/include/rom.sh b/include/rom.sh index fdd0787f..65900a01 100644 --- a/include/rom.sh +++ b/include/rom.sh @@ -44,7 +44,7 @@ mkpayload_grub() mkvendorfiles() { [ -z "$mode" ] && $dry cook_coreboot_config - check_coreboot_utils "$tree" + fx_ check_coreboot_util printf "cbfstool\nifdtool\n" printf "%s\n" "${version%%-*}" > "$srcdir/.coreboot-version" || \ err "!mk $srcdir .coreboot-version" [ -z "$mode" ] && [ "$target" != "$tree" ] && \ @@ -59,26 +59,24 @@ cook_coreboot_config() make -C "$srcdir" oldconfig || err "Could not cook $srcdir/.config"; : } -check_coreboot_utils() +check_coreboot_util() { - for util in cbfstool ifdtool; do - [ "$badhash" = "y" ] && x_ rm -f "elf/$util/$1/$util" - e "elf/$util/$1/$util" f && continue - - utilelfdir="elf/$util/$1" - utilsrcdir="src/coreboot/$1/util/$util" - - utilmode="" && [ -n "$mode" ] && utilmode="clean" - x_ make -C "$utilsrcdir" $utilmode -j$XBMK_THREADS $makeargs - if [ -z "$mode" ] && [ ! -f "$utilelfdir/$util" ]; then - x_ mkdir -p "$utilelfdir" - x_ cp "$utilsrcdir/$util" "$utilelfdir" - [ "$util" = "cbfstool" ] || continue - x_ cp "$utilsrcdir/rmodtool" "$utilelfdir" - elif [ -n "$mode" ]; then - x_ rm -Rf "$utilelfdir" - fi; : - done; : + [ "$badhash" = "y" ] && x_ rm -f "elf/$1/$tree/$1" + e "elf/$1/$tree/$1" f && return 0 + + utilelfdir="elf/$1/$tree" + utilsrcdir="src/coreboot/$tree/util/$1" + + utilmode="" && [ -n "$mode" ] && utilmode="clean" + x_ make -C "$utilsrcdir" $utilmode -j$XBMK_THREADS $makeargs + [ -n "$mode" ] && x_ rm -Rf "$utilelfdir" && return 0 + [ -z "$mode" ] || return 0 + [ -f "$utilelfdir/$1" ] && return 0 + + x_ mkdir -p "$utilelfdir" + x_ cp "$utilsrcdir/$1" "$utilelfdir" + [ "$1" = "cbfstool" ] || return 0 + x_ cp "$utilsrcdir/rmodtool" "$utilelfdir" } mkcorebootbin() -- cgit v1.2.1 From 1ca26c5d238d2acb85e491f949ff7cc369959bd9 Mon Sep 17 00:00:00 2001 From: Leah Rowe Date: Tue, 13 May 2025 18:41:48 +0100 Subject: git.sh: Re-implement redundant git downloads And this time it works. I'm now calling xbmkget() which in turn calls tmpclone(), instead of me calling tmpclone() directly. The git-pull is done on both remotes, regardless of whether the first succeeds. This way, if I forgot to update a mirror, downloads would probably still work. This also fixes an issue people were having, for example where the gnulib repository of GRUB was always being downloaded every time. I'm using a new directory, XBMK_CACHE/clone, instead of XBMK_CACHE/repo (which I used before), in case people still have the old caches from before. Signed-off-by: Leah Rowe --- include/git.sh | 56 +++++++++++++++++++++++++++++++++++++------------------- 1 file changed, 37 insertions(+), 19 deletions(-) (limited to 'include') diff --git a/include/git.sh b/include/git.sh index 0091c832..af0e8f2a 100644 --- a/include/git.sh +++ b/include/git.sh @@ -12,7 +12,7 @@ fetch_targets() e "src/$project/$tree" d && return 0 printf "Creating %s tree %s\n" "$project" "$tree" - git_prep "$loc" "$loc" "$xbmkpwd/$configdir/$tree/patches" \ + git_prep "$url" "$bkup_url" "$xbmkpwd/$configdir/$tree/patches" \ "src/$project/$tree" with_submodules nuke "$project/$tree" "$project/$tree" } @@ -42,6 +42,7 @@ clone_project() loc="src/$project" printf "Downloading project '%s' to '%s'\n" "$project" "$loc" + singletree "$project" || x_ rm -Rf "$loc" e "$loc" d missing && remkdir "${tmpgit%/*}" && git_prep \ "$url" "$bkup_url" "$xbmkpwd/config/$project/patches" "$loc"; : } @@ -52,7 +53,7 @@ git_prep() _loc="$4" # $1 and $2 are gitrepo and gitrepo_backup chkvars rev - tmpclone "$1" "$2" "$tmpgit" "$rev" "$_patchdir" + xbmkget "$1" "$2" "$tmpgit" "$rev" git "$_patchdir" if singletree "$project" || [ $# -gt 4 ]; then dx_ fetch_submodule "$mdir/module.list" fi @@ -80,7 +81,7 @@ fetch_submodule() [ "$st" = "file" ] && xbmkget "$subfile" "$subfile_bkup" \ "$tmpgit/$1" "$subhash" && return 0 x_ rm -Rf "$tmpgit/$1" - tmpclone "$subrepo" "$subrepo_bkup" "$tmpgit/$1" "$subhash" \ + xbmkget "$subrepo" "$subrepo_bkup" "$tmpgit/$1" "$subhash" git \ "$mdir/${1##*/}/patches" } @@ -89,7 +90,9 @@ fetch_submodule() xbmkget() { _dlop="curl" && [ $# -gt 4 ] && _dlop="$5" - x_ mkdir -p "${3%/*}" "$XBMK_CACHE/file" + [ "$_dlop" = "curl" ] || [ "$_dlop" = "copy" ] || \ + [ "$_dlop" = "git" ] || err "$1 $2 $3 $4: Bad dlop type: '$_dlop'" + for url in "$1" "$2"; do [ -n "$url" ] && try_file "$url" "$_dlop" "$@" && return 0 done && err "$1 $2 $3 $4: not downloaded"; : @@ -97,19 +100,25 @@ xbmkget() try_file() { - cached="$XBMK_CACHE/file/$6" - dl_fail="n" # 1 url, 2 url backup, 3 destination, 4 checksum - bad_checksum "$6" "$cached" 2>/dev/null && dl_fail="y" - [ "$dl_fail" = "n" ] && e "$5" f && return 0 + cached="file/$6" && [ "$2" = "git" ] && cached="clone/${3##*/}" && \ + cached="${cached%.git}" + cached="$XBMK_CACHE/$cached" + x_ mkdir -p "${5%/*}" "${cached%/*}" + + echk="d" && dl_fail="n" && [ "$2" != "git" ] && echk="f" && \ + bad_checksum "$6" "$cached" 2>/dev/null && dl_fail="y" + [ "$dl_fail" = "n" ] && e "$5" $echk && return 0 - x_ rm -f "$cached" - [ "$2" = "curl" ] || [ "$2" = "copy" ] || \ - err "$3 $4 $5 $6: Unsupported dlop type: '$2'" + [ "$2" != "git" ] && x_ rm -f "$cached" try_$2 "$cached" "$@" || return 1 - bad_checksum "$6" "$cached" && return 1 - [ "$cached" = "$5" ] || x_ cp "$cached" "$5"; : + if [ "$2" = "git" ]; then + tmpclone "$cached" "$5" "$6" "$8" || return 1 + else + bad_checksum "$6" "$cached" && return 1 + [ "$cached" != "$5" ] && x_ cp "$cached" "$5" + fi } try_curl() @@ -128,6 +137,16 @@ try_copy() cp "$2" "$1" || return 1; : } +try_git() +{ + [ -d "$1" ] || git clone "$2" "$1" || return 1 + git -C "$1" remote add main "$4" 2>/dev/null || : + git -C "$1" remote add backup "$5" 2>/dev/null || : + git -C "$1" fetch --all || : + git -C "$1" pull --all || : + git -C "$1" pull --all || : +} + bad_checksum() { [ "$(sha512sum "$2" | awk '{print $1}')" != "$1" ] || return 1 @@ -136,12 +155,11 @@ bad_checksum() tmpclone() { - [ -d "$3" ] && return 0 - printf "Creating git clone '%s' from '%s', '%s'\n" "$3" "$1" "$2" - git clone "$1" "$3" || x_ rm -Rf "$3" - [ -d "$3" ] || x_ git clone "$2" "$3" - x_ git -C "$3" reset --hard "$4" - fx_ "eval x_ git -C \"$3\" am" find "$5" -type f + [ -d "$2" ] && return 0 + printf "Creating git clone '%s' from '%s'\n" "$2" "$1" + ( x_ git clone "$1" "$2" ) || return 1 + ( x_ git -C "$2" reset --hard "$3" ) || return 1 + ( fx_ "eval x_ git -C \"$2\" am" find "$4" -type f ) || return 1; : } nuke() -- cgit v1.2.1 From ed8a33d6fb1c380e70fec881e6a0308cea99333e Mon Sep 17 00:00:00 2001 From: Leah Rowe Date: Tue, 13 May 2025 20:47:41 +0100 Subject: git.sh: cleanup Signed-off-by: Leah Rowe --- include/git.sh | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) (limited to 'include') diff --git a/include/git.sh b/include/git.sh index af0e8f2a..cc9c2f2a 100644 --- a/include/git.sh +++ b/include/git.sh @@ -38,11 +38,10 @@ fetch_project() clone_project() { - loc="$XBMK_CACHE/repo/$project" && singletree "$project" && \ + loc="$XBMK_CACHE/clone/$project" && singletree "$project" && \ loc="src/$project" printf "Downloading project '%s' to '%s'\n" "$project" "$loc" - singletree "$project" || x_ rm -Rf "$loc" e "$loc" d missing && remkdir "${tmpgit%/*}" && git_prep \ "$url" "$bkup_url" "$xbmkpwd/config/$project/patches" "$loc"; : } @@ -144,7 +143,6 @@ try_git() git -C "$1" remote add backup "$5" 2>/dev/null || : git -C "$1" fetch --all || : git -C "$1" pull --all || : - git -C "$1" pull --all || : } bad_checksum() -- cgit v1.2.1 From 3c23ff4fa1873e9170326141e31eb588d71a7d3a Mon Sep 17 00:00:00 2001 From: Leah Rowe Date: Tue, 13 May 2025 21:57:34 +0100 Subject: git.sh: Only create destination repo on success Don't leave a broken cache laying around, which would otherwise break lbmk for the user. Signed-off-by: Leah Rowe --- include/git.sh | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) (limited to 'include') diff --git a/include/git.sh b/include/git.sh index cc9c2f2a..9405828e 100644 --- a/include/git.sh +++ b/include/git.sh @@ -6,6 +6,7 @@ eval "`setvars "" loc url bkup_url subfile subhash subrepo subrepo_bkup \ depend subfile_bkup repofail`" tmpgit="$xbmklocal/gitclone" +tmpgitcache="$XBMK_CACHE/tmpgit" fetch_targets() { @@ -138,11 +139,17 @@ try_copy() try_git() { - [ -d "$1" ] || git clone "$2" "$1" || return 1 - git -C "$1" remote add main "$4" 2>/dev/null || : - git -C "$1" remote add backup "$5" 2>/dev/null || : - git -C "$1" fetch --all || : - git -C "$1" pull --all || : + gitdest="`findpath "$1"`" || err "Can't get readpath for '$1'" + x_ rm -Rf "$tmpgitcache" + + [ -d "$gitdest" ] || git clone "$2" "$tmpgitcache" || return 1 + [ -d "$gitdest" ] || x_ mkdir -p "${gitdest##*/}" + [ -d "$gitdest" ] || x_ mv "$tmpgitcache" "$gitdest" + + git -C "$gitdest" remote add main "$4" 2>/dev/null || : + git -C "$gitdest" remote add backup "$5" 2>/dev/null || : + git -C "$gitdest" fetch --all || : + git -C "$gitdest" pull --all || : } bad_checksum() -- cgit v1.2.1 From b04c86e5740f92cbea708f52a444df3aa1a2061f Mon Sep 17 00:00:00 2001 From: Leah Rowe Date: Tue, 13 May 2025 22:00:28 +0100 Subject: git.sh: rename to get.sh it now handles more than just git, and i forsee it handling even more in the future, e.g. rsync, ftp, bittorrent. Signed-off-by: Leah Rowe --- include/get.sh | 176 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ include/git.sh | 176 --------------------------------------------------------- 2 files changed, 176 insertions(+), 176 deletions(-) create mode 100644 include/get.sh delete mode 100644 include/git.sh (limited to 'include') diff --git a/include/get.sh b/include/get.sh new file mode 100644 index 00000000..9405828e --- /dev/null +++ b/include/get.sh @@ -0,0 +1,176 @@ +# SPDX-License-Identifier: GPL-3.0-or-later +# Copyright (c) 2020-2021,2023-2025 Leah Rowe +# Copyright (c) 2022 Caleb La Grange + +eval "`setvars "" loc url bkup_url subfile subhash subrepo subrepo_bkup \ + depend subfile_bkup repofail`" + +tmpgit="$xbmklocal/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 + nuke "$project/$tree" "$project/$tree" +} + +fetch_project() +{ + eval "`setvars "" xtree`" + eval "`setcfg "config/git/$project/pkg.cfg"`" + + chkvars 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 + + for x in config/git/*; do + [ -d "$x" ] && nuke "${x##*/}" "src/${x##*/}" 2>/dev/null; : + done; : +} + +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"; : +} + +git_prep() +{ + _patchdir="$3" + _loc="$4" # $1 and $2 are gitrepo and gitrepo_backup + + chkvars rev + xbmkget "$1" "$2" "$tmpgit" "$rev" git "$_patchdir" + if singletree "$project" || [ $# -gt 4 ]; then + dx_ fetch_submodule "$mdir/module.list" + fi + + [ "$_loc" = "${_loc%/*}" ] || x_ mkdir -p "${_loc%/*}" + x_ mv "$tmpgit" "$_loc" +} + +fetch_submodule() +{ + mcfgdir="$mdir/${1##*/}"; eval \ + "`setvars "" subhash subrepo subrepo_bkup subfile subfile_bkup st`" + [ ! -f "$mcfgdir/module.cfg" ] || . "$mcfgdir/module.cfg" || \ + err "! . $mcfgdir/module.cfg" + + for xt in repo file; do + _seval="if [ -n \"\$sub$xt\" ] || [ -n \"\$sub${xt}_bkup\" ]" + eval "$_seval; then st=\"\$st \$xt\"; fi" + done + st="${st# }" && [ "$st" = "repo file" ] && err "$mdir: repo+file" + + [ -z "$st" ] && return 0 # subrepo/subfile not defined + chkvars "sub${st}" "sub${st}_bkup" "subhash" + + [ "$st" = "file" ] && xbmkget "$subfile" "$subfile_bkup" \ + "$tmpgit/$1" "$subhash" && return 0 + x_ rm -Rf "$tmpgit/$1" + xbmkget "$subrepo" "$subrepo_bkup" "$tmpgit/$1" "$subhash" git \ + "$mdir/${1##*/}/patches" +} + +# can grab from the internet, or copy locally. +# if copying locally, it can only copy a file. +xbmkget() +{ + _dlop="curl" && [ $# -gt 4 ] && _dlop="$5" + [ "$_dlop" = "curl" ] || [ "$_dlop" = "copy" ] || \ + [ "$_dlop" = "git" ] || err "$1 $2 $3 $4: Bad dlop type: '$_dlop'" + + for url in "$1" "$2"; do + [ -n "$url" ] && try_file "$url" "$_dlop" "$@" && return 0 + done && err "$1 $2 $3 $4: not downloaded"; : +} + +try_file() +{ + cached="file/$6" && [ "$2" = "git" ] && cached="clone/${3##*/}" && \ + cached="${cached%.git}" + cached="$XBMK_CACHE/$cached" + x_ mkdir -p "${5%/*}" "${cached%/*}" + + echk="d" && dl_fail="n" && [ "$2" != "git" ] && echk="f" && \ + bad_checksum "$6" "$cached" 2>/dev/null && dl_fail="y" + [ "$dl_fail" = "n" ] && e "$5" $echk && return 0 + + [ "$2" != "git" ] && x_ rm -f "$cached" + + try_$2 "$cached" "$@" || return 1 + + if [ "$2" = "git" ]; then + tmpclone "$cached" "$5" "$6" "$8" || return 1 + else + bad_checksum "$6" "$cached" && return 1 + [ "$cached" != "$5" ] && x_ cp "$cached" "$5" + fi +} + +try_curl() +{ + _ua="Mozilla/5.0 (Windows NT 10.0; rv:91.0) Gecko/20100101 Firefox/91.0" + curl --location --retry 3 -A "$_ua" "$2" -o "$1" || \ + wget --tries 3 -U "$_ua" "$2" -O "$1" || return 1; : +} + +try_copy() +{ + [ -L "$2" ] && printf "dl %s %s %s %s: '%s' is a symlink\n" \ + "$4" "$5" "$6" "$7" "$2" 1>&2 && return 1 + [ ! -f "$2" ] && printf "dl %s %s %s %s: '%s' not a file\n" \ + "$4" "$5" "$6" "$7" "$2" 1>&2 && return 1 + cp "$2" "$1" || return 1; : +} + +try_git() +{ + gitdest="`findpath "$1"`" || err "Can't get readpath for '$1'" + x_ rm -Rf "$tmpgitcache" + + [ -d "$gitdest" ] || git clone "$2" "$tmpgitcache" || return 1 + [ -d "$gitdest" ] || x_ mkdir -p "${gitdest##*/}" + [ -d "$gitdest" ] || x_ mv "$tmpgitcache" "$gitdest" + + git -C "$gitdest" remote add main "$4" 2>/dev/null || : + git -C "$gitdest" remote add backup "$5" 2>/dev/null || : + git -C "$gitdest" fetch --all || : + git -C "$gitdest" pull --all || : +} + +bad_checksum() +{ + [ "$(sha512sum "$2" | awk '{print $1}')" != "$1" ] || return 1 + printf "Bad checksum for file: %s\n" "$2" 1>&2; rm -f "$2" || :; : +} + +tmpclone() +{ + [ -d "$2" ] && return 0 + printf "Creating git clone '%s' from '%s'\n" "$2" "$1" + ( x_ git clone "$1" "$2" ) || return 1 + ( x_ git -C "$2" reset --hard "$3" ) || return 1 + ( fx_ "eval x_ git -C \"$2\" am" find "$4" -type f ) || return 1; : +} + +nuke() +{ + e "config/${1%/}/nuke.list" f missing || while read -r nukefile; do + rmf="src/${2%/}/$nukefile" && [ -L "$rmf" ] && continue + e "$rmf" e missing || x_ rm -Rf "$rmf" + done < "config/${1%/}/nuke.list"; : +} diff --git a/include/git.sh b/include/git.sh deleted file mode 100644 index 9405828e..00000000 --- a/include/git.sh +++ /dev/null @@ -1,176 +0,0 @@ -# SPDX-License-Identifier: GPL-3.0-or-later -# Copyright (c) 2020-2021,2023-2025 Leah Rowe -# Copyright (c) 2022 Caleb La Grange - -eval "`setvars "" loc url bkup_url subfile subhash subrepo subrepo_bkup \ - depend subfile_bkup repofail`" - -tmpgit="$xbmklocal/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 - nuke "$project/$tree" "$project/$tree" -} - -fetch_project() -{ - eval "`setvars "" xtree`" - eval "`setcfg "config/git/$project/pkg.cfg"`" - - chkvars 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 - - for x in config/git/*; do - [ -d "$x" ] && nuke "${x##*/}" "src/${x##*/}" 2>/dev/null; : - done; : -} - -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"; : -} - -git_prep() -{ - _patchdir="$3" - _loc="$4" # $1 and $2 are gitrepo and gitrepo_backup - - chkvars rev - xbmkget "$1" "$2" "$tmpgit" "$rev" git "$_patchdir" - if singletree "$project" || [ $# -gt 4 ]; then - dx_ fetch_submodule "$mdir/module.list" - fi - - [ "$_loc" = "${_loc%/*}" ] || x_ mkdir -p "${_loc%/*}" - x_ mv "$tmpgit" "$_loc" -} - -fetch_submodule() -{ - mcfgdir="$mdir/${1##*/}"; eval \ - "`setvars "" subhash subrepo subrepo_bkup subfile subfile_bkup st`" - [ ! -f "$mcfgdir/module.cfg" ] || . "$mcfgdir/module.cfg" || \ - err "! . $mcfgdir/module.cfg" - - for xt in repo file; do - _seval="if [ -n \"\$sub$xt\" ] || [ -n \"\$sub${xt}_bkup\" ]" - eval "$_seval; then st=\"\$st \$xt\"; fi" - done - st="${st# }" && [ "$st" = "repo file" ] && err "$mdir: repo+file" - - [ -z "$st" ] && return 0 # subrepo/subfile not defined - chkvars "sub${st}" "sub${st}_bkup" "subhash" - - [ "$st" = "file" ] && xbmkget "$subfile" "$subfile_bkup" \ - "$tmpgit/$1" "$subhash" && return 0 - x_ rm -Rf "$tmpgit/$1" - xbmkget "$subrepo" "$subrepo_bkup" "$tmpgit/$1" "$subhash" git \ - "$mdir/${1##*/}/patches" -} - -# can grab from the internet, or copy locally. -# if copying locally, it can only copy a file. -xbmkget() -{ - _dlop="curl" && [ $# -gt 4 ] && _dlop="$5" - [ "$_dlop" = "curl" ] || [ "$_dlop" = "copy" ] || \ - [ "$_dlop" = "git" ] || err "$1 $2 $3 $4: Bad dlop type: '$_dlop'" - - for url in "$1" "$2"; do - [ -n "$url" ] && try_file "$url" "$_dlop" "$@" && return 0 - done && err "$1 $2 $3 $4: not downloaded"; : -} - -try_file() -{ - cached="file/$6" && [ "$2" = "git" ] && cached="clone/${3##*/}" && \ - cached="${cached%.git}" - cached="$XBMK_CACHE/$cached" - x_ mkdir -p "${5%/*}" "${cached%/*}" - - echk="d" && dl_fail="n" && [ "$2" != "git" ] && echk="f" && \ - bad_checksum "$6" "$cached" 2>/dev/null && dl_fail="y" - [ "$dl_fail" = "n" ] && e "$5" $echk && return 0 - - [ "$2" != "git" ] && x_ rm -f "$cached" - - try_$2 "$cached" "$@" || return 1 - - if [ "$2" = "git" ]; then - tmpclone "$cached" "$5" "$6" "$8" || return 1 - else - bad_checksum "$6" "$cached" && return 1 - [ "$cached" != "$5" ] && x_ cp "$cached" "$5" - fi -} - -try_curl() -{ - _ua="Mozilla/5.0 (Windows NT 10.0; rv:91.0) Gecko/20100101 Firefox/91.0" - curl --location --retry 3 -A "$_ua" "$2" -o "$1" || \ - wget --tries 3 -U "$_ua" "$2" -O "$1" || return 1; : -} - -try_copy() -{ - [ -L "$2" ] && printf "dl %s %s %s %s: '%s' is a symlink\n" \ - "$4" "$5" "$6" "$7" "$2" 1>&2 && return 1 - [ ! -f "$2" ] && printf "dl %s %s %s %s: '%s' not a file\n" \ - "$4" "$5" "$6" "$7" "$2" 1>&2 && return 1 - cp "$2" "$1" || return 1; : -} - -try_git() -{ - gitdest="`findpath "$1"`" || err "Can't get readpath for '$1'" - x_ rm -Rf "$tmpgitcache" - - [ -d "$gitdest" ] || git clone "$2" "$tmpgitcache" || return 1 - [ -d "$gitdest" ] || x_ mkdir -p "${gitdest##*/}" - [ -d "$gitdest" ] || x_ mv "$tmpgitcache" "$gitdest" - - git -C "$gitdest" remote add main "$4" 2>/dev/null || : - git -C "$gitdest" remote add backup "$5" 2>/dev/null || : - git -C "$gitdest" fetch --all || : - git -C "$gitdest" pull --all || : -} - -bad_checksum() -{ - [ "$(sha512sum "$2" | awk '{print $1}')" != "$1" ] || return 1 - printf "Bad checksum for file: %s\n" "$2" 1>&2; rm -f "$2" || :; : -} - -tmpclone() -{ - [ -d "$2" ] && return 0 - printf "Creating git clone '%s' from '%s'\n" "$2" "$1" - ( x_ git clone "$1" "$2" ) || return 1 - ( x_ git -C "$2" reset --hard "$3" ) || return 1 - ( fx_ "eval x_ git -C \"$2\" am" find "$4" -type f ) || return 1; : -} - -nuke() -{ - e "config/${1%/}/nuke.list" f missing || while read -r nukefile; do - rmf="src/${2%/}/$nukefile" && [ -L "$rmf" ] && continue - e "$rmf" e missing || x_ rm -Rf "$rmf" - done < "config/${1%/}/nuke.list"; : -} -- cgit v1.2.1 From 6089716f07caf6b4690df1e1c2f2089a27a0b514 Mon Sep 17 00:00:00 2001 From: Leah Rowe Date: Tue, 13 May 2025 22:17:37 +0100 Subject: release.sh: Don't run prep_release with fx_ The result of the printf statement is sorted, making it do binaries first, which results in a lot of junk files then being present inside the source archive. Signed-off-by: Leah Rowe --- include/release.sh | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'include') diff --git a/include/release.sh b/include/release.sh index fbcc5621..f0799f17 100644 --- a/include/release.sh +++ b/include/release.sh @@ -28,7 +28,9 @@ release() remkdir "$vdir" x_ git clone . "$relsrcdir" - fx_ prep_release printf "src\ntarball\nbin\n" + prep_release src + prep_release tarball + prep_release bin x_ rm -Rf "$relsrcdir" x_ mkdir -p "$reldir" -- cgit v1.2.1 From e9fe5a74a2e66906721fe2ca1beb1f14784cf675 Mon Sep 17 00:00:00 2001 From: Leah Rowe Date: Wed, 14 May 2025 16:28:29 +0100 Subject: get.sh: fix caching of crossgcc tarballs they were always re-downloading every time. i've basically re-written most of xbmkget. there was some erroneous conditions under which it wrongly deleted the cached file, resulting in it being downloaded again. Signed-off-by: Leah Rowe --- include/get.sh | 44 +++++++++++++++++++++++--------------------- include/vendor.sh | 2 +- 2 files changed, 24 insertions(+), 22 deletions(-) (limited to 'include') diff --git a/include/get.sh b/include/get.sh index 9405828e..fbb41cd3 100644 --- a/include/get.sh +++ b/include/get.sh @@ -53,7 +53,7 @@ git_prep() _loc="$4" # $1 and $2 are gitrepo and gitrepo_backup chkvars rev - xbmkget "$1" "$2" "$tmpgit" "$rev" git "$_patchdir" + xbmkget git "$1" "$2" "$tmpgit" "$rev" "$_patchdir" if singletree "$project" || [ $# -gt 4 ]; then dx_ fetch_submodule "$mdir/module.list" fi @@ -78,46 +78,46 @@ fetch_submodule() [ -z "$st" ] && return 0 # subrepo/subfile not defined chkvars "sub${st}" "sub${st}_bkup" "subhash" - [ "$st" = "file" ] && xbmkget "$subfile" "$subfile_bkup" \ + [ "$st" = "file" ] && xbmkget curl "$subfile" "$subfile_bkup" \ "$tmpgit/$1" "$subhash" && return 0 x_ rm -Rf "$tmpgit/$1" - xbmkget "$subrepo" "$subrepo_bkup" "$tmpgit/$1" "$subhash" git \ + xbmkget git "$subrepo" "$subrepo_bkup" "$tmpgit/$1" "$subhash" \ "$mdir/${1##*/}/patches" } -# can grab from the internet, or copy locally. -# if copying locally, it can only copy a file. xbmkget() { - _dlop="curl" && [ $# -gt 4 ] && _dlop="$5" - [ "$_dlop" = "curl" ] || [ "$_dlop" = "copy" ] || \ - [ "$_dlop" = "git" ] || err "$1 $2 $3 $4: Bad dlop type: '$_dlop'" + [ "$1" = "curl" ] || [ "$1" = "copy" ] || [ "$1" = "git" ] || \ + err "Bad dlop (arg 1): xbmkget $*" - for url in "$1" "$2"; do - [ -n "$url" ] && try_file "$url" "$_dlop" "$@" && return 0 + for url in "$2" "$3"; do + [ -n "$url" ] && try_file "$url" "$@" && return 0 done && err "$1 $2 $3 $4: not downloaded"; : } try_file() { cached="file/$6" && [ "$2" = "git" ] && cached="clone/${3##*/}" && \ - cached="${cached%.git}" + cached="${cached%.git}" # always the main repo as basis for naming, + # in case the backup has another name cached="$XBMK_CACHE/$cached" x_ mkdir -p "${5%/*}" "${cached%/*}" - echk="d" && dl_fail="n" && [ "$2" != "git" ] && echk="f" && \ - bad_checksum "$6" "$cached" 2>/dev/null && dl_fail="y" - [ "$dl_fail" = "n" ] && e "$5" $echk && return 0 + echk="d" && [ "$2" != "git" ] && echk="f" && \ + bad_checksum "$6" "$cached" 2>/dev/null && x_ rm -f "$cached" - [ "$2" != "git" ] && x_ rm -f "$cached" - - try_$2 "$cached" "$@" || return 1 + e "$cached" $echk || try_$2 "$cached" "$@" || return 1 + if e "$5" $echk && [ "$2" != "git" ]; then + bad_checksum "$6" "$5" 2>/dev/null && x_ cp "$cached" "$5" + fi + e "$cached" $echk missing && return 1 if [ "$2" = "git" ]; then - tmpclone "$cached" "$5" "$6" "$8" || return 1 + tmpclone "$cached" "$5" "$6" "$7" || return 1 else - bad_checksum "$6" "$cached" && return 1 + bad_checksum "$6" "$cached" && x_ rm -f "$cached" && return 1 [ "$cached" != "$5" ] && x_ cp "$cached" "$5" + bad_checksum "$6" "$5" && x_ rm -rf "$5" && return 1; : fi } @@ -154,8 +154,10 @@ try_git() bad_checksum() { - [ "$(sha512sum "$2" | awk '{print $1}')" != "$1" ] || return 1 - printf "Bad checksum for file: %s\n" "$2" 1>&2; rm -f "$2" || :; : + [ ! -f "$2" ] || [ "$(sha512sum "$2" | awk '{print $1}')" != "$1" ] \ + || return 1 + printf "Bad checksum for file: %s\n" "$2" 1>&2 + x_ rm -f "$2" } tmpclone() diff --git a/include/vendor.sh b/include/vendor.sh index fb49cca5..823ba74f 100644 --- a/include/vendor.sh +++ b/include/vendor.sh @@ -90,7 +90,7 @@ fetch() done; : dlop="curl" && [ $# -gt 5 ] && dlop="$6" - xbmkget "$dl" "$dl_bkup" "$_dl" "$dlsum" "$dlop" + xbmkget "$dlop" "$dl" "$dl_bkup" "$_dl" "$dlsum" x_ rm -Rf "${_dl}_extracted" e "$_dest" f && return 0 -- cgit v1.2.1 From 21867b7d80562ce822525fca63688908f1ca59b8 Mon Sep 17 00:00:00 2001 From: Leah Rowe Date: Wed, 14 May 2025 16:38:10 +0100 Subject: get.sh: simplify fetch_submodules() We are calling xbmkget in the same way, whether it's a subfile or subrepo. Rename these variables to subcurl and subgit, so that we can call xbmkget unconditionally. Signed-off-by: Leah Rowe --- include/get.sh | 20 +++++++++----------- 1 file changed, 9 insertions(+), 11 deletions(-) (limited to 'include') diff --git a/include/get.sh b/include/get.sh index fbb41cd3..e582fdd8 100644 --- a/include/get.sh +++ b/include/get.sh @@ -2,8 +2,8 @@ # Copyright (c) 2020-2021,2023-2025 Leah Rowe # Copyright (c) 2022 Caleb La Grange -eval "`setvars "" loc url bkup_url subfile subhash subrepo subrepo_bkup \ - depend subfile_bkup repofail`" +eval "`setvars "" loc url bkup_url subcurl subhash subgit subgit_bkup \ + depend subcurl_bkup repofail`" tmpgit="$xbmklocal/gitclone" tmpgitcache="$XBMK_CACHE/tmpgit" @@ -65,24 +65,22 @@ git_prep() fetch_submodule() { mcfgdir="$mdir/${1##*/}"; eval \ - "`setvars "" subhash subrepo subrepo_bkup subfile subfile_bkup st`" + "`setvars "" subhash subgit subgit_bkup subcurl subcurl_bkup st`" [ ! -f "$mcfgdir/module.cfg" ] || . "$mcfgdir/module.cfg" || \ err "! . $mcfgdir/module.cfg" - for xt in repo file; do + for xt in git curl; do _seval="if [ -n \"\$sub$xt\" ] || [ -n \"\$sub${xt}_bkup\" ]" eval "$_seval; then st=\"\$st \$xt\"; fi" done - st="${st# }" && [ "$st" = "repo file" ] && err "$mdir: repo+file" - [ -z "$st" ] && return 0 # subrepo/subfile not defined + st="${st# }" && [ "$st" = "git curl" ] && err "$mdir: git+curl defined" + [ -z "$st" ] && return 0 # subgit/subcurl not defined chkvars "sub${st}" "sub${st}_bkup" "subhash" - [ "$st" = "file" ] && xbmkget curl "$subfile" "$subfile_bkup" \ - "$tmpgit/$1" "$subhash" && return 0 - x_ rm -Rf "$tmpgit/$1" - xbmkget git "$subrepo" "$subrepo_bkup" "$tmpgit/$1" "$subhash" \ - "$mdir/${1##*/}/patches" + [ "$st" = "git" ] && x_ rm -Rf "$tmpgit/$1" + eval xbmkget "$st" "\$sub$st" "\$sub${st}_bkup" "$tmpgit/$1" \ + "$subhash" "$mdir/${1##*/}/patches" } xbmkget() -- cgit v1.2.1 From 8d5475ed5b55b01290d09ff06a29ae3c6da119fa Mon Sep 17 00:00:00 2001 From: Leah Rowe Date: Wed, 14 May 2025 16:48:25 +0100 Subject: get.sh: simplify fetch_submodules() config check We already do what the old code does in setcfg, by virtue of the fact that the st variable is later checked, after loading this config conditionally, where the st variable is otherwise blank. We can avoid the unnecessary work after loading the config, by returning if the config is absent. Signed-off-by: Leah Rowe --- include/get.sh | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) (limited to 'include') diff --git a/include/get.sh b/include/get.sh index e582fdd8..120d4264 100644 --- a/include/get.sh +++ b/include/get.sh @@ -66,8 +66,7 @@ fetch_submodule() { mcfgdir="$mdir/${1##*/}"; eval \ "`setvars "" subhash subgit subgit_bkup subcurl subcurl_bkup st`" - [ ! -f "$mcfgdir/module.cfg" ] || . "$mcfgdir/module.cfg" || \ - err "! . $mcfgdir/module.cfg" + eval "`setcfg "$mcfgdir/module.cfg" 0`" for xt in git curl; do _seval="if [ -n \"\$sub$xt\" ] || [ -n \"\$sub${xt}_bkup\" ]" -- cgit v1.2.1 From d9ed03f9ea595f8e376021f5560625908b4069d9 Mon Sep 17 00:00:00 2001 From: Leah Rowe Date: Wed, 14 May 2025 16:52:33 +0100 Subject: get.sh submodules: Don't delete files recursively I overlooked this in a previous patch. It doesn't really matter, since we're operating on a file anyway, but it's not correct. Files should have rm -f on them, not rm -Rf, for deletion. Signed-off-by: Leah Rowe --- include/get.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'include') diff --git a/include/get.sh b/include/get.sh index 120d4264..b3d17d7e 100644 --- a/include/get.sh +++ b/include/get.sh @@ -114,7 +114,7 @@ try_file() else bad_checksum "$6" "$cached" && x_ rm -f "$cached" && return 1 [ "$cached" != "$5" ] && x_ cp "$cached" "$5" - bad_checksum "$6" "$5" && x_ rm -rf "$5" && return 1; : + bad_checksum "$6" "$5" && x_ rm -f "$5" && return 1; : fi } -- cgit v1.2.1 From e62886dedae26f49822350daeb7cfe83bb9a3931 Mon Sep 17 00:00:00 2001 From: Leah Rowe Date: Wed, 14 May 2025 16:59:59 +0100 Subject: get.sh: simplify try_copy() Signed-off-by: Leah Rowe --- include/get.sh | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) (limited to 'include') diff --git a/include/get.sh b/include/get.sh index b3d17d7e..69cc1a4a 100644 --- a/include/get.sh +++ b/include/get.sh @@ -127,10 +127,8 @@ try_curl() try_copy() { - [ -L "$2" ] && printf "dl %s %s %s %s: '%s' is a symlink\n" \ - "$4" "$5" "$6" "$7" "$2" 1>&2 && return 1 - [ ! -f "$2" ] && printf "dl %s %s %s %s: '%s' not a file\n" \ - "$4" "$5" "$6" "$7" "$2" 1>&2 && return 1 + [ -L "$2" ] && printf "symlink %s (try_cp %s)\n" "$2" "$*" && return 1 + [ ! -f "$2" ] && "no such file %s (try_cp %s)\n" "$2" "$*" && return 1 cp "$2" "$1" || return 1; : } -- cgit v1.2.1 From f29aa9c8d5983f39166d00997364a47f126ae401 Mon Sep 17 00:00:00 2001 From: Leah Rowe Date: Wed, 14 May 2025 17:03:32 +0100 Subject: get.sh: use subshells on try_ functions This way, we can use x_ which will then print the command that failed, if we need to debug future errors. Signed-off-by: Leah Rowe --- include/get.sh | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) (limited to 'include') diff --git a/include/get.sh b/include/get.sh index 69cc1a4a..e2aaf70b 100644 --- a/include/get.sh +++ b/include/get.sh @@ -121,15 +121,15 @@ try_file() try_curl() { _ua="Mozilla/5.0 (Windows NT 10.0; rv:91.0) Gecko/20100101 Firefox/91.0" - curl --location --retry 3 -A "$_ua" "$2" -o "$1" || \ - wget --tries 3 -U "$_ua" "$2" -O "$1" || return 1; : + ( x_ curl --location --retry 3 -A "$_ua" "$2" -o "$1" ) || \ + ( x_ wget --tries 3 -U "$_ua" "$2" -O "$1" ) || return 1; : } try_copy() { [ -L "$2" ] && printf "symlink %s (try_cp %s)\n" "$2" "$*" && return 1 [ ! -f "$2" ] && "no such file %s (try_cp %s)\n" "$2" "$*" && return 1 - cp "$2" "$1" || return 1; : + ( x_ cp "$2" "$1" ) || return 1; : } try_git() @@ -137,14 +137,14 @@ try_git() gitdest="`findpath "$1"`" || err "Can't get readpath for '$1'" x_ rm -Rf "$tmpgitcache" - [ -d "$gitdest" ] || git clone "$2" "$tmpgitcache" || return 1 + [ -d "$gitdest" ] || ( x_ git clone "$2" "$tmpgitcache" ) || return 1 [ -d "$gitdest" ] || x_ mkdir -p "${gitdest##*/}" [ -d "$gitdest" ] || x_ mv "$tmpgitcache" "$gitdest" - git -C "$gitdest" remote add main "$4" 2>/dev/null || : - git -C "$gitdest" remote add backup "$5" 2>/dev/null || : - git -C "$gitdest" fetch --all || : - git -C "$gitdest" pull --all || : + ( x_ git -C "$gitdest" remote add main "$4" 2>/dev/null ) || : + ( x_ git -C "$gitdest" remote add backup "$5" 2>/dev/null ) || : + ( x_ git -C "$gitdest" fetch --all ) || : + ( x_ git -C "$gitdest" pull --all ) || :; : } bad_checksum() -- cgit v1.2.1 From 46f42291d3c1e9a3e5b34b6bd727f94cd512bc64 Mon Sep 17 00:00:00 2001 From: Leah Rowe Date: Wed, 14 May 2025 18:06:29 +0100 Subject: get.sh: fix broken printf statement Signed-off-by: Leah Rowe --- include/get.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'include') diff --git a/include/get.sh b/include/get.sh index e2aaf70b..7d728796 100644 --- a/include/get.sh +++ b/include/get.sh @@ -127,8 +127,8 @@ try_curl() try_copy() { - [ -L "$2" ] && printf "symlink %s (try_cp %s)\n" "$2" "$*" && return 1 - [ ! -f "$2" ] && "no such file %s (try_cp %s)\n" "$2" "$*" && return 1 + [ -L "$2" ] && printf "symlink %s (trycp %s)\n" "$2" "$*" && return 1 + [ ! -f "$2" ] && printf "%s missing (trycp %s)\n" "$2" "$*" && return 1 ( x_ cp "$2" "$1" ) || return 1; : } -- cgit v1.2.1