update/repos: concatenate multiple revision files

With this change, it's still possible to have a single
file at config/git/revisions, but this has been scrapped.

Instead, multiple files now exist under config/git/ with
the same modules declared, but the files are separated
logically. List of files under config/git:

* bios_extract
* biosutilities
* coreboot
* flashrom
* grub (gnulib also defined here)
* me_cleaner
* memtest86plus
* seabios
* serprog (multiple projects defined)
* u-boot
* uefitool

The rationale behind this change is simple: in the future,
we will stop relying on build systems within imported
projects for the import of git submodules. Instead, we
will handle them directly in lbmk.

Additionally, a Linux payload is planned for Libreboot, made
easier by the recent audit (script handle/make/config makes
it easy to integrate Linux, and handle cross-compilers for
userland utilities); a "linux" file under config/git/ could
also define rules for each project besides linux, such as
musl libc, busybox and other utilities.

Signed-off-by: Leah Rowe <leah@libreboot.org>
This commit is contained in:
Leah Rowe
2023-09-25 00:40:56 +01:00
parent 7966f9111d
commit a7b767a47b
13 changed files with 106 additions and 115 deletions

View File

@@ -36,6 +36,12 @@ main()
read_config()
{
revfile="$(mktemp -t gitrevisions.XXXXXXXXXX)" || \
fail "read_config: Cannot initialise tmpfile"
cat config/git/* > "${revfile}" || \
fail "read_config: Cannot concatenate revision files"
awkstr=" /\{.*${name}.*}{/ {flag=1;next} /\}/{flag=0} flag { print }"
while read -r line ; do
set ${line} || fail "read_config: set line"
@@ -52,8 +58,11 @@ read_config()
depend="${depend} ${2} " ;;
esac
done << EOF
$(eval "awk '${awkstr}' config/git/revisions")
$(eval "awk \"${awkstr}\" \"${revfile}\"")
EOF
rm -f "${revfile}" || \
fail "read_config: can't remove tmp revfile"
}
verify_config()
@@ -115,7 +124,7 @@ usage()
Usage: ./update project repo [name]
Options:
name: Module name as specified in config/git/revisions
name: Module name as specified in files under config/git/
EOF
}