summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--include/git.sh53
-rw-r--r--include/lib.sh65
-rw-r--r--include/release.sh62
-rw-r--r--include/tree.sh6
-rw-r--r--include/vendor.sh10
-rwxr-xr-xmk2
6 files changed, 100 insertions, 98 deletions
diff --git a/include/git.sh b/include/git.sh
index bbc5140e..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"
}
@@ -87,6 +84,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 32f81cd0..cf4305a1 100644
--- a/include/lib.sh
+++ b/include/lib.sh
@@ -29,63 +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"
- 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()
-{
- _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
- bad_checksum "$6" "$cached" && return 1
- [ "$cached" = "$5" ] || x_ cp "$cached" "$5"; :
-}
-
-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"
@@ -97,14 +40,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..f34eb6df 100644
--- a/include/release.sh
+++ b/include/release.sh
@@ -1,65 +1,79 @@
# SPDX-License-Identifier: GPL-3.0-or-later
# Copyright (c) 2023-2025 Leah Rowe <leah@libreboot.org>
-eval "`setvars "" vdir src_dirname relsrcdir relmode`"
+eval "`setvars "" reldir reldest vdir 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"
- src_dirname="${relname}_src"
- relsrcdir="$vdir/$src_dirname"
+ reldest="$reldir/$version"
+ [ -e "$reldest" ] && \
+ err "already exists: \"$reldest\""
+
+ vdir="$XBMK_CACHE/relpwd/${xbmktmp##*/}/$version"
+ relsrcdir="$vdir/${relname}_src"
- [ -e "$vdir" ] && err "already exists: \"$vdir\""
- x_ mkdir -p "$vdir"
+ remkdir "$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"
+
+ x_ mkdir -p "$reldir"
+ x_ mv "$vdir" "$reldir"
- printf "\n\nDONE! Check release files under %s\n" "$vdir"
+ printf "\n\nDONE! Check release files under %s\n" "$reldest"
}
-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
- 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"
+}
+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
- 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
- ) || err "can't build rom images"
-
- x_ rm -Rf "$relsrcdir"
}
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 4374277a..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" && \
@@ -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"
diff --git a/mk b/mk
index b56b7444..f22d3b09 100755
--- a/mk
+++ b/mk
@@ -17,6 +17,7 @@ fi
. "include/mrc.sh"
. "include/rom.sh"
. "include/release.sh"
+. "include/git.sh"
main()
{
@@ -34,7 +35,6 @@ main()
main "$@" || exit 0
-. "include/git.sh"
. "include/tree.sh"
trees "$@" || exit 0