diff options
-rwxr-xr-x | build | 12 | ||||
-rw-r--r-- | include/git.sh | 20 | ||||
-rw-r--r-- | include/lib.sh | 27 | ||||
-rw-r--r-- | include/mrc.sh | 4 | ||||
-rw-r--r-- | include/rom.sh | 16 | ||||
-rw-r--r-- | include/vendor.sh | 47 | ||||
-rwxr-xr-x | script/trees | 48 |
7 files changed, 110 insertions, 64 deletions
@@ -35,9 +35,15 @@ main() case "${spath#script/}" in version) printf "%s\nWebsite: %s\n" "$relname" "$projectsite" ;; - release) shift 1; mkrelease "$@" ;; - inject) shift 1; vendor_inject "$@" ;; - download) shift 1; vendor_download "$@" ;; + release) + shift 1 + mkrelease "$@" ;; + inject) + shift 1 + vendor_inject "$@" ;; + download) + shift 1 + vendor_download "$@" ;; roms) if [ $# -gt 1 ] && [ "$2" = "serprog" ]; then mk -b stm32-vserprog pico-serprog diff --git a/include/git.sh b/include/git.sh index e5aa4861..1933a4ec 100644 --- a/include/git.sh +++ b/include/git.sh @@ -13,7 +13,8 @@ fetch_targets() printf "Creating %s tree %s\n" "$project" "$tree" git_prep "$loc" "$loc" "$PWD/$configdir/$tree/patches" \ - "src/$project/$tree" u; nuke "$project/$tree" "$project/$tree" + "src/$project/$tree" u + nuke "$project/$tree" "$project/$tree" } fetch_project() @@ -47,9 +48,11 @@ clone_project() git_prep() { - _patchdir="$3"; _loc="$4" # $1 and $2 are gitrepo and gitrepo_backup + _patchdir="$3" + _loc="$4" # $1 and $2 are gitrepo and gitrepo_backup - chkvars rev; tmpclone "$1" "$2" "$tmpgit" "$rev" "$_patchdir" + chkvars rev + tmpclone "$1" "$2" "$tmpgit" "$rev" "$_patchdir" if singletree "$project" || [ $# -gt 4 ]; then prep_submodules "$_loc" fi @@ -67,7 +70,7 @@ prep_submodules() { [ -f "$mdir/module.list" ] && while read -r msrcdir; do fetch_submodule "$msrcdir" - done < "$mdir/module.list"; return 0 + done < "$mdir/module.list"; : } fetch_submodule() @@ -125,10 +128,11 @@ tmpclone() git_am_patches() { for p in "$2/"*; do - [ -L "$p" ] && continue; [ -e "$p" ] || continue + [ -L "$p" ] && continue + [ -e "$p" ] || continue [ -d "$p" ] && git_am_patches "$1" "$p" && continue [ ! -f "$p" ] || git -C "$1" am "$p" || $err "$1 $2: !am $p" - done; return 0 + done; : } link_crossgcc() @@ -136,7 +140,7 @@ link_crossgcc() ( x_ cd "$tmpgit/util" && x_ rm -Rf crossgcc ln -s "../../$xtree/util/crossgcc" crossgcc || $err "$1: !xgcc link" - ) || $err "$1: !xgcc link" + ) || $err "$1: !xgcc link"; : } move_repo() @@ -152,5 +156,5 @@ nuke() e "config/${1%/}/nuke.list" f missing || while read -r nukefile; do rmf="src/${2%/}/$nukefile" && [ -L "$rmf" ] && continue e "$rmf" e missing || rm -Rf "$rmf" || $err "!rm $rmf, ${2%/}" - done < "config/${1%/}/nuke.list"; return 0 + done < "config/${1%/}/nuke.list"; : } diff --git a/include/lib.sh b/include/lib.sh index b43d83f3..31c9fd02 100644 --- a/include/lib.sh +++ b/include/lib.sh @@ -17,7 +17,8 @@ err="err_" err_() { - printf "ERROR %s: %s\n" "$0" "$1" 1>&2; exit 1 + printf "ERROR %s: %s\n" "$0" "$1" 1>&2 + exit 1 } setvars() @@ -25,14 +26,15 @@ setvars() _setvars="" && [ $# -lt 2 ] && $err "setvars: too few arguments" val="$1" && shift 1 && for var in "$@"; do _setvars="$var=\"$val\"; $_setvars" - done; printf "%s\n" "${_setvars% }" + done + printf "%s\n" "${_setvars% }" } chkvars() { for var in "$@"; do eval "[ -n \"\${$var+x}\" ] || \$err \"$var unset\"" eval "[ -n \"\$$var\" ] || \$err \"$var unset\"" - done; return 0 + done; : } eval "`setvars "" _nogit board reinstall versiondate projectsite projectname \ @@ -40,7 +42,8 @@ eval "`setvars "" _nogit board reinstall versiondate projectsite projectname \ for fv in projectname projectsite version versiondate; do eval "[ ! -f \"$fv\" ] || read -r $fv < \"$fv\" || :" -done; chkvars projectname projectsite +done +chkvars projectname projectsite setcfg() { @@ -57,7 +60,8 @@ e() estr="[ -$es_t \"\$1\" ] || return 1" [ $# -gt 2 ] && estr="[ -$es_t \"\$1\" ] && return 1" && es2="missing" - eval "$estr"; printf "%s %s\n" "$1" "$es2" 1>&2 + eval "$estr" + printf "%s %s\n" "$1" "$es2" 1>&2 } install_packages() @@ -140,7 +144,7 @@ expr "X$XBMK_THREADS" : "X-\{0,1\}[0123456789][0123456789]*$" \ x_() { [ $# -lt 1 ] || "$@" || \ - $err "Unhandled non-zero exit: $(echo "$@")"; return 0 + $err "Unhandled non-zero exit: $(echo "$@")"; : } [ -e ".git" ] || [ -f "version" ] || printf "unknown\n" > version || \ @@ -155,7 +159,8 @@ versiondate_="$versiondate" [ ! -e ".git" ] || versiondate="$(git show --no-patch --no-notes \ --pretty='%ct' HEAD)" || versiondate="$versiondate_" for p in projectname version versiondate projectsite; do - chkvars "$p"; eval "x_ printf \"%s\\n\" \"\$$p\" > $p" + chkvars "$p" + eval "x_ printf \"%s\\n\" \"\$$p\" > $p" done relname="$projectname-$version" export LOCALVERSION="-$projectname-${version%%-*}" @@ -165,7 +170,7 @@ check_defconfig() [ -d "$1" ] || $err "Target '$1' not defined." for x in "$1"/config/*; do [ -f "$x" ] && printf "%s\n" "$x" && return 1 - done; return 0 + done; : } remkdir() @@ -180,7 +185,8 @@ mkrom_tarball() printf "%s\n" "$versiondate" > "$1/versiondate" || $err "$1 !vdate" printf "%s\n" "$projectname" > "$1/projectname" || $err "$1 !pname" - mktarball "$1" "${1%/*}/${relname}_${1##*/}.tar.xz"; x_ rm -Rf "$1"; : + mktarball "$1" "${1%/*}/${relname}_${1##*/}.tar.xz" + x_ rm -Rf "$1" } mktarball() @@ -248,7 +254,8 @@ download() $err "$1 $2 $3 $4: Unsupported dlop type: '$_dlop'" fi vendor_checksum "$4" "$cached" || dl_fail="n" - done; [ "$dl_fail" = "y" ] && $err "$1 $2 $3 $4: not downloaded" + done + [ "$dl_fail" = "y" ] && $err "$1 $2 $3 $4: not downloaded" [ "$cached" = "$3" ] || cp "$cached" "$3" || $err "!d cp $cached $3"; : } diff --git a/include/mrc.sh b/include/mrc.sh index f5db2ff0..e08a0f0e 100644 --- a/include/mrc.sh +++ b/include/mrc.sh @@ -20,7 +20,7 @@ extract_mrc() "$cbfstool" "$appdir/"bios.bin extract -n mrc.bin \ -f "$_dest" -r RO_SECTION || $err "extract_mrc: !$cbfstool $_dest" - [ -n "$CONFIG_REFCODE_BLOB_FILE" ] && extract_refcode; return 0 + [ -n "$CONFIG_REFCODE_BLOB_FILE" ] && extract_refcode; : } extract_partition() @@ -57,5 +57,5 @@ extract_refcode() # enable the Intel GbE device, if told by offset MRC_refcode_gbe [ -z "$MRC_refcode_gbe" ] || dd if="config/ifd/hp820g2/1.bin" \ of="$_refdest" bs=1 seek=$MRC_refcode_gbe count=1 conv=notrunc || \ - $err "extract_refcode $_refdest: byte $MRC_refcode_gbe"; return 0 + $err "extract_refcode $_refdest: byte $MRC_refcode_gbe"; : } diff --git a/include/rom.sh b/include/rom.sh index dde17b69..7102953f 100644 --- a/include/rom.sh +++ b/include/rom.sh @@ -28,11 +28,12 @@ mkserprog() && x_ cmake --build "$sersrc/build" [ "$1" = "stm32" ] && x_ make -C "$sersrc" \ libopencm3-just-make BOARD=$sertarget && x_ make -C \ - "$sersrc" BOARD=$sertarget; x_ mkdir -p "bin/serprog_$1" + "$sersrc" BOARD=$sertarget + x_ mkdir -p "bin/serprog_$1" x_ mv "$serx" "bin/serprog_$1/serprog_$sertarget.${serx##*.}" done < "$TMPDIR/ser" - [ "$XBMK_RELEASE" = "y" ] && mkrom_tarball "bin/serprog_$1"; return 0 + [ "$XBMK_RELEASE" = "y" ] && mkrom_tarball "bin/serprog_$1"; : } mkpicotool() @@ -69,7 +70,7 @@ mkpayload_grub() --install-modules="$grub_install_modules" \ "/boot/grub/grub_default.cfg=${srcdir}/.config" \ "/boot/grub/grub.cfg=$grubdata/memdisk.cfg" || \ - $err "$tree: cannot build grub.elf"; return 0 + $err "$tree: cannot build grub.elf"; : } mkvendorfiles() @@ -79,7 +80,7 @@ mkvendorfiles() printf "%s\n" "${version%%-*}" > "$srcdir/.coreboot-version" || \ $err "!mk $srcdir .coreboot-version" [ -z "$mode" ] && [ "$target" != "$tree" ] && \ - x_ ./mk download "$target"; return 0 + x_ ./mk download "$target"; : } cook_coreboot_config() @@ -108,8 +109,8 @@ check_coreboot_utils() x_ cp "$utilsrcdir/rmodtool" "$utilelfdir" elif [ -n "$mode" ]; then x_ rm -Rf "$utilelfdir" - fi; continue - done; return 0 + fi; : + done; : } mkcorebootbin() @@ -177,7 +178,8 @@ add_seabios() cbfs "$tmprom" "$_seabioself" "$_seaname" x_ "$cbfstool" "$tmprom" add-int -i 3000 -n etc/ps2-keyboard-spinup - _z="2"; [ "$initmode" = "vgarom" ] && _z="0" + _z="2" + [ "$initmode" = "vgarom" ] && _z="0" x_ "$cbfstool" "$tmprom" add-int -i $_z -n etc/pci-optionrom-exec x_ "$cbfstool" "$tmprom" add-int -i 0 -n etc/optionroms-checksum [ "$initmode" = "libgfxinit" ] && \ diff --git a/include/vendor.sh b/include/vendor.sh index 018e734b..53fe5a27 100644 --- a/include/vendor.sh +++ b/include/vendor.sh @@ -38,8 +38,10 @@ eval "`setvars "" has_hashes EC_hash DL_hash DL_url_bkup MRC_refcode_gbe vcfg \ vendor_download() { - [ $# -gt 0 ] || $err "No argument given"; export PATH="$PATH:/sbin" - board="$1"; readcfg && readkconfig && bootstrap && getfiles; : + [ $# -gt 0 ] || $err "No argument given" + export PATH="$PATH:/sbin" + board="$1" + readcfg && readkconfig && bootstrap && getfiles; : } readkconfig() @@ -66,9 +68,11 @@ readkconfig() CONFIG_LENOVO_TBFW_BIN CONFIG_FSP_M_FILE CONFIG_FSP_S_FILE; do eval "[ \"\${$c}\" = \"/dev/null\" ] && continue" eval "[ -z \"\${$c}\" ] && continue" - eval "`setcfg "$vfile"`"; return 0 + eval "`setcfg "$vfile"`" + return 0 done - printf "Vendor files not needed for: %s\n" "$board" 1>&2; return 1 + printf "Vendor files not needed for: %s\n" "$board" 1>&2 + return 1 } bootstrap() @@ -78,7 +82,7 @@ bootstrap() [ -d "${kbc1126_ec_dump%/*}" ] && x_ make -C "$cbdir/util/kbc1126" [ -n "$MRC_refcode_cbtree" ] && \ cbfstoolref="elf/cbfstool/$MRC_refcode_cbtree/cbfstool" && \ - x_ ./mk -d coreboot "$MRC_refcode_cbtree"; return 0 + x_ ./mk -d coreboot "$MRC_refcode_cbtree"; : } getfiles() @@ -109,9 +113,14 @@ getfiles() fetch() { - dl_type="$1"; dl="$2"; dl_bkup="$3"; dlsum="$4"; _dest="${5##*../}" - - [ "$5" = "/dev/null" ] && return 0; _dl="$XBMK_CACHE/file/$dlsum" + dl_type="$1" + dl="$2" + dl_bkup="$3" + dlsum="$4" + _dest="${5##*../}" + + [ "$5" = "/dev/null" ] && return 0 + _dl="$XBMK_CACHE/file/$dlsum" if [ "$dl_type" = "fspm" ] || [ "$dl_type" = "fsps" ]; then # HACK: if grabbing fsp from coreboot, fix the path for lbmk for _cdl in dl dl_bkup; do @@ -129,11 +138,13 @@ fetch() mkdir -p "${_dest%/*}" || \ $err "mkdirs: !mkdir -p ${_dest%/*} - $dontflash" - remkdir "$appdir"; extract_archive "$_dl" "$appdir" "$dl_type" || \ + remkdir "$appdir" + extract_archive "$_dl" "$appdir" "$dl_type" || \ [ "$dl_type" = "e6400vga" ] || \ $err "mkd $_dest $dl_type: !extract. $dontflash" - eval "extract_$dl_type"; set -u -e + eval "extract_$dl_type" + set -u -e e "$_dest" f missing && $err "!extract_$dl_type. $dontflash"; : } @@ -240,7 +251,8 @@ extract_kbc1126ec() e "$kbc1126_ec_dump" f missing && \ $err "$cbdir: kbc1126 util missing - $dontflash" ( - x_ cd "$appdir/"; mv Rompaq/68*.BIN ec.bin || : + x_ cd "$appdir/" + mv Rompaq/68*.BIN ec.bin || : if [ ! -f "ec.bin" ]; then unar -D ROM.CAB Rom.bin || unar -D Rom.CAB Rom.bin || \ unar -D 68*.CAB Rom.bin || \ @@ -347,7 +359,8 @@ vendor_inject() err="fail_inject" remkdir "$tmpromdel" - set +u +e; [ $# -lt 1 ] && $err "No options specified. - $dontflash" + set +u +e + [ $# -lt 1 ] && $err "No options specified. - $dontflash" eval "`setvars "" nukemode new_mac xchanged`" # randomise the MAC address by default @@ -499,7 +512,8 @@ patch_release_roms() hashfile="$_hashes" && break; : done - x_ mkdir -p "tmp"; [ -L "tmp/rom.list" ] && \ + x_ mkdir -p "tmp" + [ -L "tmp/rom.list" ] && \ $err "'$archive' -> tmp/rom.list is a symlink - $dontflash" x_ rm -f "tmp/rom.list" "tmp/zero.1b" x_ dd if=/dev/zero of=tmp/zero.1b bs=1 count=1 @@ -679,7 +693,9 @@ inject() [ "$2" = "/dev/null" ] && return 0 eval "`setvars "" cbfsname _dest _t _offset`" - cbfsname="$1"; _dest="${2##*../}"; _t="$3" + cbfsname="$1" + _dest="${2##*../}" + _t="$3" if [ "$_t" = "fsp" ]; then [ $# -gt 3 ] && _offset="$4" @@ -705,7 +721,8 @@ inject() return 0 fi if [ "$_t" = "stage" ]; then # the only stage we handle is refcode - x_ mkdir -p tmp; x_ rm -f "tmp/refcode" + x_ mkdir -p tmp + x_ rm -f "tmp/refcode" "$rmodtool" -i "$_dest" -o "tmp/refcode" || "!reloc refcode" "$cbfstool" "$rom" add-stage -f "tmp/refcode" -n "$cbfsname" \ -t stage || $err "$rom: !add ref" diff --git a/script/trees b/script/trees index d53dd4f7..3eb9d054 100755 --- a/script/trees +++ b/script/trees @@ -15,13 +15,17 @@ 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 tree rev tree_depend build_depend \ defconfig postmake mkhelpercfg dry dest_dir mdir cleanargs gccver gccfull \ - gnatver gnatfull gccdir cmakedir`"; badhash="n" + gnatver gnatfull gccdir cmakedir`" # ./mk -f will set this to "n", thus # disabling the use of make commands do_make="y" mode="all" # make all +# badhash changes to "y" when project +# files change, e.g. config files, patches +badhash="n" + flags="-m/-u/-b/-c/-x/-f/-s/-l/-n/-d" main() @@ -82,7 +86,8 @@ main() x_ touch "$mkhelpercfg" fi - targets="$*"; cmd="build_targets $targets" + targets="$*" + cmd="build_targets $targets" singletree "$project" && cmd="build_project" remkdir "${tmpgit%/*}" @@ -96,7 +101,7 @@ build_project() [ "$mode" = "distclean" ] && mode="clean" run_make_command || return 0 - [ -n "$mode" ] || $dry copy_elf; return 0 + [ -n "$mode" ] || $dry copy_elf; : } build_targets() @@ -113,7 +118,7 @@ build_targets() printf "'make %s', '%s', '%s'\n" "$mode" "$project" "$target" x_ handle_defconfig [ -n "$mode" ] || [ -z "$postmake" ] || $postmake || \ - $err "$project/$target: !postmake: $postmake"; continue + $err "$project/$target: !postmake: $postmake"; : done; return 0 } @@ -125,7 +130,8 @@ handle_defconfig() configure_project "$target_dir" || return 0 x_ mkdir -p "$elfdir/$target" - chkvars tree; srcdir="src/$project/$tree" + chkvars tree + srcdir="src/$project/$tree" if [ "$mode" = "distclean" ] || [ "$mode" = "crossgcc-clean" ]; then [ -d "$srcdir" ] || return 0 @@ -139,7 +145,7 @@ handle_defconfig() [ -n "$mode" ] || check_defconfig || continue handle_makefile [ -n "$mode" ] || $dry copy_elf - done; return 0 + done; : } configure_project() @@ -190,8 +196,8 @@ build_dependencies() [ -z "$bd_p" ] && $dry $err "$project/$tree: !bd '$bd'" [ "${bd##*/}" = "$bd" ] && bd_t="" [ -z "$bd_p" ] || $dry ./mk -b $bd_p $bd_t \ - || $err "!mk $project/$tree $bd_p/$bd_t"; continue - done; return 0 + || $err "!mk $project/$tree $bd_p/$bd_t"; : + done; : } check_project_hashes() @@ -202,7 +208,8 @@ check_project_hashes() read -r old_pjhash < "$XBMK_CACHE/hash/$project$tree" x_ rm -f "$TMPDIR/project.list" "$TMPDIR/project.hash" \ - "$TMPDIR/project.tmp"; x_ touch "$TMPDIR/project.tmp" + "$TMPDIR/project.tmp" + x_ touch "$TMPDIR/project.tmp" x_ touch "$TMPDIR/project.hash" for rmchk in "$datadir" "$configdir/$tree" "$mdir"; do @@ -258,7 +265,7 @@ check_cross_compiler() # we only want to mess with hostcc to build xgcc rm -f "$XBMK_CACHE/gnupath/"* || \ $err "Cannot clear gnupath/"; : - done; return 0 + done; : } # fix mismatching gcc/gnat versions on debian trixie/sid. as of december 2024, @@ -297,7 +304,8 @@ check_gnu_path() rm -f "$XBMK_CACHE/gnupath/"* || $err "Cannot clear gnupath/" cd "$XBMK_CACHE/gnupath" || $err "Can't cd to gnupath/" for _gnubin in "$_gnudir/$2"*"-$_gnuver"; do - [ -e "$_gnubin" ] || continue; _gnuutil="${_gnubin##*/}" + [ -e "$_gnubin" ] || continue + _gnuutil="${_gnubin##*/}" x_ ln -s "$_gnubin" "${_gnuutil%"-$_gnuver"}" done ) || $err "Cannot create $2-$_gnuver link in $_gnudir"; : @@ -326,7 +334,7 @@ elfcheck() # TODO: very hacky check. do it properly (based on build.list) for elftest in "$dest_dir"/*; do [ -e "$elftest" ] && e "$elftest" f && return 1 - done; return 0 + done; : } handle_makefile() @@ -350,8 +358,9 @@ handle_makefile() run_make_command() { [ -z "$premake" ] || [ -n "$mode" ] || $premake || $err "!$premake" - $dry check_cmake "$srcdir" && [ -z "$mode" ] && $dry check_autoconf \ - "$srcdir"; $dry check_makefile "$srcdir" || return 1 + $dry check_cmake "$srcdir" && [ -z "$mode" ] && \ + $dry check_autoconf "$srcdir" + $dry check_makefile "$srcdir" || return 1 $dry make -C "$srcdir" $mode -j$XBMK_THREADS $makeargs || $err "!$mode" [ -z "$mkhelper" ] || [ -n "$mode" ] || $mkhelper || $err "!$mkhelper" @@ -366,7 +375,7 @@ check_cmake() "$1/$cmakedir" || $dry check_makefile "$1" || $err \ "$1: !cmk $cmakedir" [ -z "$cmakedir" ] || $dry check_makefile "$1" || \ - $err "check_cmake $1: can't generate Makefile"; return 0 + $err "check_cmake $1: can't generate Makefile"; : } check_autoconf() @@ -375,21 +384,22 @@ check_autoconf() cd "$1" || $err "!cd $1" [ -f "bootstrap" ] && x_ ./bootstrap $bootstrapargs [ -f "autogen.sh" ] && x_ ./autogen.sh $autogenargs - [ -f "configure" ] && x_ ./configure $autoconfargs; return 0 - ) || $err "can't bootstrap project: $1" + [ -f "configure" ] && x_ ./configure $autoconfargs; : + ) || $err "can't bootstrap project: $1"; : } check_makefile() { [ -f "$1/Makefile" ] || [ -f "$1/makefile" ] || \ - [ -f "$1/GNUmakefile" ] || return 1; return 0 + [ -f "$1/GNUmakefile" ] || return 1; : } copy_elf() { [ -f "$listfile" ] && x_ mkdir -p "$dest_dir" && while read -r f; do [ -f "$srcdir/$f" ] && x_ cp "$srcdir/$f" "$dest_dir" - done < "$listfile"; x_ make clean -C "$srcdir" $cleanargs + done < "$listfile" + x_ make clean -C "$srcdir" $cleanargs } main "$@" || exit 0 |