diff options
| -rw-r--r-- | include/init.sh | 127 | ||||
| -rw-r--r-- | include/lib.sh | 132 | ||||
| -rwxr-xr-x | mk | 1 | 
3 files changed, 133 insertions, 127 deletions
| diff --git a/include/init.sh b/include/init.sh index 55708b0f..b8c3cb35 100644 --- a/include/init.sh +++ b/include/init.sh @@ -222,131 +222,4 @@ x_()  	[ $# -lt 1 ] || "$@" || $err "Unhandled error for: $(echo "$@")"; :  } -remkdir() -{ -	rm -Rf "$1" || $err "remkdir: !rm -Rf \"$1\"" -	mkdir -p "$1" || $err "remkdir: !mkdir -p \"$1\"" -} - -mkrom_tarball() -{ -	printf "%s\n" "$version" > "$1/.version" || $err "$1 !version" -	printf "%s\n" "$versiondate" > "$1/.versiondate" || $err "$1 !vdate" - -	mktarball "$1" "${1%/*}/${relname}_${1##*/}.tar.xz" -	x_ rm -Rf "$1" -} - -mktarball() -{ -	[ "${2%/*}" = "$2" ] || x_ mkdir -p "${2%/*}" -	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() -{ -	( -	cd "$1" || $err "!cd gitrepo $1" -	find . -name ".git" -exec rm -Rf {} + || $err "!rm .git $1" -	find . -name ".gitmodules" -exec rm -Rf {} + || $err "!rm .gitmod $1" -	) || $err "Cannot remove .git/.gitmodules in $1" -} - -# return 0 if project is single-tree, otherwise 1 -# e.g. coreboot is multi-tree, so 1 -singletree() -{ -	for targetfile in "config/${1}/"*/target.cfg; do -		[ -e "$targetfile" ] && [ -f "$targetfile" ] && return 1; : -	done; : -} - -# can grab from the internet, or copy locally. -# if copying locally, it can only copy a file. -xbmkget() -{ -	_dlop="curl" && [ $# -gt 4 ] && _dlop="$5" -	cached="$XBMK_CACHE/file/$4" -	dl_fail="n" # 1 url, 2 url backup, 3 destination, 4 checksum -	vendor_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 -		rm -f "$cached" || $err "!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 -		vendor_checksum "$4" "$cached" || dl_fail="n" -	done -	[ "$dl_fail" = "y" ] && $err "$1 $2 $3 $4: not downloaded" -	[ "$cached" = "$3" ] || x_ cp "$cached" "$3"; : -} - -vendor_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" -	es2="already exists" -	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 -} - -mk() -{ -	mk_flag="$1" || $err "No argument given" -	shift 1 && for mk_arg in "$@"; do -		x_ ./mk $mk_flag $mk_arg -	done; : -} - -check_defconfig() -{ -	[ -d "$1" ] || $err "Target '$1' not defined." -	for x in "$1"/config/*; do -		[ -f "$x" ] && printf "%s\n" "$x" && return 1 -	done; : -} - -cbfs() -{ -	ccmd="add-payload" && [ $# -gt 3 ] && [ $# -lt 5 ] && ccmd="add" -	lzma="-c lzma" && [ $# -gt 3 ] && [ $# -lt 5 ] && lzma="-t $4" - -	[ $# -gt 4 ] && [ "$5" = "0x1110000" ] && \ -	    ccmd="add-flat-binary" && \ -	    lzma="-c lzma -l 0x1110000 -e 0x1110000" - -	x_ "$cbfstool" "$1" $ccmd -f "$2" -n "$3" $lzma -} -  xbmk_init "$@" diff --git a/include/lib.sh b/include/lib.sh new file mode 100644 index 00000000..34d8b8b9 --- /dev/null +++ b/include/lib.sh @@ -0,0 +1,132 @@ +# SPDX-License-Identifier: GPL-3.0-only +# Copyright (c) 2022 Caleb La Grange <thonkpeasant@protonmail.com> +# Copyright (c) 2022 Ferass El Hafidi <vitali64pmemail@protonmail.com> +# Copyright (c) 2020-2025 Leah Rowe <leah@libreboot.org> +# Copyright (c) 2025 Alper Nebi Yasak <alpernebiyasak@gmail.com> + +remkdir() +{ +	rm -Rf "$1" || $err "remkdir: !rm -Rf \"$1\"" +	mkdir -p "$1" || $err "remkdir: !mkdir -p \"$1\"" +} + +mkrom_tarball() +{ +	printf "%s\n" "$version" > "$1/.version" || $err "$1 !version" +	printf "%s\n" "$versiondate" > "$1/.versiondate" || $err "$1 !vdate" + +	mktarball "$1" "${1%/*}/${relname}_${1##*/}.tar.xz" +	x_ rm -Rf "$1" +} + +mktarball() +{ +	[ "${2%/*}" = "$2" ] || x_ mkdir -p "${2%/*}" +	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() +{ +	( +	cd "$1" || $err "!cd gitrepo $1" +	find . -name ".git" -exec rm -Rf {} + || $err "!rm .git $1" +	find . -name ".gitmodules" -exec rm -Rf {} + || $err "!rm .gitmod $1" +	) || $err "Cannot remove .git/.gitmodules in $1" +} + +# return 0 if project is single-tree, otherwise 1 +# e.g. coreboot is multi-tree, so 1 +singletree() +{ +	for targetfile in "config/${1}/"*/target.cfg; do +		[ -e "$targetfile" ] && [ -f "$targetfile" ] && return 1; : +	done; : +} + +# can grab from the internet, or copy locally. +# if copying locally, it can only copy a file. +xbmkget() +{ +	_dlop="curl" && [ $# -gt 4 ] && _dlop="$5" +	cached="$XBMK_CACHE/file/$4" +	dl_fail="n" # 1 url, 2 url backup, 3 destination, 4 checksum +	vendor_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 +		rm -f "$cached" || $err "!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 +		vendor_checksum "$4" "$cached" || dl_fail="n" +	done +	[ "$dl_fail" = "y" ] && $err "$1 $2 $3 $4: not downloaded" +	[ "$cached" = "$3" ] || x_ cp "$cached" "$3"; : +} + +vendor_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" +	es2="already exists" +	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 +} + +mk() +{ +	mk_flag="$1" || $err "No argument given" +	shift 1 && for mk_arg in "$@"; do +		x_ ./mk $mk_flag $mk_arg +	done; : +} + +check_defconfig() +{ +	[ -d "$1" ] || $err "Target '$1' not defined." +	for x in "$1"/config/*; do +		[ -f "$x" ] && printf "%s\n" "$x" && return 1 +	done; : +} + +cbfs() +{ +	ccmd="add-payload" && [ $# -gt 3 ] && [ $# -lt 5 ] && ccmd="add" +	lzma="-c lzma" && [ $# -gt 3 ] && [ $# -lt 5 ] && lzma="-t $4" + +	[ $# -gt 4 ] && [ "$5" = "0x1110000" ] && \ +	    ccmd="add-flat-binary" && \ +	    lzma="-c lzma -l 0x1110000 -e 0x1110000" + +	x_ "$cbfstool" "$1" $ccmd -f "$2" -n "$3" $lzma +} @@ -13,6 +13,7 @@ if [ "./${0##*/}" != "${0}" ] || [ ! -f "mk" ] || [ -L "mk" ]; then  fi  . "include/init.sh" +. "include/lib.sh"  . "include/vendor.sh"  . "include/mrc.sh" | 
