summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLeah Rowe <leah@libreboot.org>2023-08-27 14:14:49 +0100
committerLeah Rowe <leah@libreboot.org>2023-08-27 14:24:20 +0100
commit9457d6be52e5f409566dabc10dd5435102b2e760 (patch)
tree175385fc7d0922e0ea0a318a90d5e7f0a4731f56
parent93d2dcad2d8b03eab613404e8c7c4209f250c70d (diff)
unified list command for all scripts
e.g. ./build boot roms list ./update blobs inject listboards ./build boot list ./build clean list also this is now possible: ./build list or maybe ./update list ^ would list directories in resources/scripts/build and resources/scripts/update respectively this script is added: resources/scripts/build/command/options call it like so, e.g. ./build command options resources/coreboot this script is now used, for list functions in other scripts. Signed-off-by: Leah Rowe <leah@libreboot.org>
-rwxr-xr-xfetch_trees12
-rwxr-xr-xlbmk35
-rwxr-xr-xresources/scripts/build/boot/roms23
-rwxr-xr-xresources/scripts/build/command/options31
-rwxr-xr-xresources/scripts/handle/make/config10
-rwxr-xr-xresources/scripts/update/blobs/inject13
6 files changed, 52 insertions, 72 deletions
diff --git a/fetch_trees b/fetch_trees
index d61eb102..3c33beb0 100755
--- a/fetch_trees
+++ b/fetch_trees
@@ -51,17 +51,11 @@ main()
[ -d "${cfgsdir}" ] || err "unsupported project name"
shift 1
- targets=""
- if [ $# -gt 0 ]; then
- targets=$@
- else
- for x in "${cfgsdir}/"*; do
- [ -d "${x}" ] || continue
- targets="${targets} ${x##*/}"
- done
- fi
+ targets=$(./build command options "${cfgsdir}")
+ [ $# -gt 0 ] && targets=$@
[ -z "${targets}" ] && \
err "No targets available for project: ${project}"
+
for x in ${targets}; do
rm -f "${cfgsdir}"/*/seen || err_rm_seen "main 2"
download_for_target "${x}" || \
diff --git a/lbmk b/lbmk
index 7cd69ed5..22099e37 100755
--- a/lbmk
+++ b/lbmk
@@ -48,6 +48,8 @@ main()
./.gitcheck || err "/.gitcheck call from main, in /lbmk"
[ "${mode}" = "help" ] && usage ${0} && exit 0
+ [ "${mode}" = "list" ] && ./build command options "${buildpath}" && \
+ exit 0
[ $# -lt 2 ] && usage ${0} && exit 1
if [ "${mode}" = "dependencies" ]; then
@@ -63,10 +65,10 @@ main()
case "${option}" in
list)
- printf "Options for mode '%s':\n\n" ${mode}
- listoptions "${mode}" ;;
+ ./build command options "${buildpath}/${mode}" ;;
all)
- for option in $(listoptions "${mode}"); do
+ for option in $(./build command options "${buildpath}/${mode}")
+ do
"${buildpath}/${mode}/${option}" $@ || \
err "script fail: ${buildpath}/${mode}/${option} $@"
done
@@ -99,19 +101,6 @@ install_dependencies()
printf "You must install AUR packages: %s\n" "${aur_notice}" 1>&2
}
-# Takes exactly one mode as parameter
-listoptions()
-{
- options="n"
- for option in "${buildpath}/${1}/"*; do
- [ -f "${option}" ] || continue
- printf '%s\n' ${option##*/}
- options="y"
- done
- [ "${options}" = "y" ] || \
- err "listoptions: No scripts present in directory ${buildpath}/${1}"
-}
-
usage()
{
progname=${0}
@@ -119,7 +108,7 @@ usage()
USAGE: ${progname} <MODE> <OPTION>
possible values for 'mode':
- $(listmodes)
+ $(./build command options "${buildpath}/${mode}")
Example: ${progname} module all
Example: ${progname} module flashrom [static]
@@ -130,16 +119,4 @@ usage()
EOF
}
-listmodes()
-{
- modes="n"
- for mode in "${buildpath}"/*; do
- [ -d "${mode}" ] || continue
- printf '%s\n' ${mode##*/}
- modes="y"
- done
- [ "${modes}" = "y" ] || \
- err "listmodes: No directories present in directory ${buildpath}"
-}
-
main $@
diff --git a/resources/scripts/build/boot/roms b/resources/scripts/build/boot/roms
index 0aedfdb1..a19d9445 100755
--- a/resources/scripts/build/boot/roms
+++ b/resources/scripts/build/boot/roms
@@ -42,7 +42,8 @@ main()
firstoption="${1}"
[ "${firstoption}" = "help" ] && usage && exit 0
- [ "${firstoption}" = "list" ] && listboards && exit 0
+ [ "${firstoption}" = "list" ] && \
+ ./build command options resources/coreboot && exit 0
while [ $# -gt 0 ]; do
case ${1} in
@@ -65,8 +66,8 @@ main()
printf "Building %s ROM images\n" "${projectname}"
if [ "${firstoption}" = "all" ]; then
- for boardname in $(listboards); do
- buildrom "${boardname}" || err "build/roms (1): error"
+ for target in $(./build command options resources/coreboot); do
+ buildrom "${target}" || err "build/roms (1): error"
done
else
for board in ${boards}; do
@@ -80,7 +81,7 @@ main()
usage()
{
cat <<- EOF
- USAGE: ./build boot roms boardname
+ USAGE: ./build boot roms target
To build *all* boards, do this: ./build boot roms all
To list *all* boards, do this: ./build boot roms list
@@ -94,23 +95,13 @@ usage()
./build boot roms x200_8mb x60
./build boot roms x60 -p grub -d corebootfb -k usqwerty
- possible values for 'boardname':
- $(listboards)
+ possible values for 'target':
+ $(./build command options "resources/coreboot")
Refer to the ${projectname} documentation for more information.
EOF
}
-listboards()
-{
- for boarddir in resources/coreboot/*; do
- [ -d "${boarddir}" ] || continue
- board="${boarddir##resources/coreboot/}"
- board="${board%/}"
- printf '%s\n' "${board##*/}"
- done
-}
-
# Build ROM images for supported boards
buildrom() {
[ -d "resources/coreboot/${1}/" ] || \
diff --git a/resources/scripts/build/command/options b/resources/scripts/build/command/options
new file mode 100755
index 00000000..84a9a3fb
--- /dev/null
+++ b/resources/scripts/build/command/options
@@ -0,0 +1,31 @@
+#!/usr/bin/env sh
+
+# Copyright (c) 2023 Leah Rowe <info@minifree.org>
+# SPDX-License-Identifier: MIT
+
+. "include/err.sh"
+
+items=1
+
+main()
+{
+ [ $# -gt 0 ] || \
+ err "No argument given"
+ listitems "${1}" || err "No items present under: ${1}"
+}
+
+listitems()
+{
+ [ -d "${1}" ] || \
+ err "Directory not does exist: ${1}"
+ for x in "${1}/"*; do
+ # -e used because this is for files *or* directories
+ [ -e "${x}" ] || continue
+ [ "${x##*/}" = "build.list" ] && continue
+ printf "%s\n" "${x##*/}"
+ items=0
+ done
+ return ${items}
+}
+
+main $@
diff --git a/resources/scripts/handle/make/config b/resources/scripts/handle/make/config
index 1ab0864b..0c60285f 100755
--- a/resources/scripts/handle/make/config
+++ b/resources/scripts/handle/make/config
@@ -76,17 +76,13 @@ main()
[ -f "${listfile}" ] || fail "list file, ${listfile}, does not exist"
# Build for all targets if no argument is given
- if [ "$#" -eq 0 ]; then
- for target_dir in "${cfgsdir}"/*; do
- [ -d "${target_dir}/config/" ] || continue
- set -- "$@" "${target_dir#${cfgsdir}/}"
- done
- fi
+ targets=$(./build command options "${cfgsdir}")
+ [ $# -gt 0 ] && targets=$@
[ -d "${elfdir}" ] || [ "${mode}" != "all" ] || \
mkdir -p "${elfdir}/" || fail "can't create directory ${elfdir}"
- for x in "$@"; do
+ for x in ${targets}; do
target="${x}"
printf "Running 'make %s' for project '%s, target '%s''\n" \
"${mode}" "${project}" "${target}"
diff --git a/resources/scripts/update/blobs/inject b/resources/scripts/update/blobs/inject
index 3cdf38c6..bc6b55c9 100755
--- a/resources/scripts/update/blobs/inject
+++ b/resources/scripts/update/blobs/inject
@@ -44,7 +44,8 @@ main()
sname="${0}"
[ $# -lt 1 ] && err "No options specified."
- [ "${1}" = "listboards" ] && listboards && exit 0
+ [ "${1}" = "listboards" ] && \
+ ./build command options resources/coreboot && exit 0
archive="${1}"
@@ -345,16 +346,6 @@ modify_gbe()
rm -f "${_gbe_tmp}"
}
-listboards()
-{
- for boarddir in "${cbcfgsdir}"/*; do
- [ -d "${boarddir}" ] || continue
- board="${boarddir##${cbcfgsdir}/}"
- board="${board%/}"
- printf "%s\n" "${board##*/}"
- done
-}
-
usage()
{
cat <<- EOF