unify script/update/trees and script/build/grub
the script can now also handle autoconf build systems, whereas this could previously only be done for grub. with this change, the overall sloccount is also lower Signed-off-by: Leah Rowe <leah@libreboot.org>9020vga
parent
34ded35fa6
commit
eb3a8e2b53
|
@ -1,7 +1,7 @@
|
||||||
# SPDX-License-Identifier: GPL-3.0-only
|
# SPDX-License-Identifier: GPL-3.0-only
|
||||||
# SPDX-FileCopyrightText: 2022 Caleb La Grange <thonkpeasant@protonmail.com>
|
# SPDX-FileCopyrightText: 2022 Caleb La Grange <thonkpeasant@protonmail.com>
|
||||||
# SPDX-FileCopyrightText: 2022 Ferass El Hafidi <vitali64pmemail@protonmail.com>
|
# SPDX-FileCopyrightText: 2022 Ferass El Hafidi <vitali64pmemail@protonmail.com>
|
||||||
# SPDX-FileCopyrightText: 2023 Leah Rowe <leah@libreboot.org>
|
# SPDX-FileCopyrightText: 2020-2023 Leah Rowe <leah@libreboot.org>
|
||||||
|
|
||||||
vendir="vendorfiles"
|
vendir="vendorfiles"
|
||||||
appdir="${vendir}/app"
|
appdir="${vendir}/app"
|
||||||
|
@ -9,6 +9,9 @@ cbdir="src/coreboot/default"
|
||||||
cbcfgsdir="config/coreboot"
|
cbcfgsdir="config/coreboot"
|
||||||
ifdtool="cbutils/default/ifdtool"
|
ifdtool="cbutils/default/ifdtool"
|
||||||
cbfstool="cbutils/default/cbfstool"
|
cbfstool="cbutils/default/cbfstool"
|
||||||
|
grubcfgsdir="config/grub"
|
||||||
|
layoutdir="/boot/grub/layouts"
|
||||||
|
. "${grubcfgsdir}/modules.list"
|
||||||
|
|
||||||
eval "$(setvars "" CONFIG_BOARD_DELL_E6400 CONFIG_HAVE_MRC CONFIG_HAVE_ME_BIN \
|
eval "$(setvars "" CONFIG_BOARD_DELL_E6400 CONFIG_HAVE_MRC CONFIG_HAVE_ME_BIN \
|
||||||
CONFIG_ME_BIN_PATH CONFIG_KBC1126_FIRMWARE CONFIG_KBC1126_FW1 \
|
CONFIG_ME_BIN_PATH CONFIG_KBC1126_FIRMWARE CONFIG_KBC1126_FW1 \
|
||||||
|
|
|
@ -1,81 +0,0 @@
|
||||||
#!/usr/bin/env sh
|
|
||||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
|
||||||
# SPDX-FileCopyrightText: 2014,2015,2020,2021,2023 Leah Rowe <leah@libreboot.org>
|
|
||||||
|
|
||||||
set -u -e
|
|
||||||
|
|
||||||
. "include/err.sh"
|
|
||||||
|
|
||||||
elfdir="elf/grub"
|
|
||||||
grubcfgsdir="config/grub"
|
|
||||||
layoutdir="/boot/grub/layouts"
|
|
||||||
|
|
||||||
. "${grubcfgsdir}/modules.list"
|
|
||||||
|
|
||||||
main()
|
|
||||||
{
|
|
||||||
handle_dependencies
|
|
||||||
build_keymap_configs
|
|
||||||
build_grub_payload
|
|
||||||
printf "GRUB files now available under directory: %s\n" "${elfdir}"
|
|
||||||
}
|
|
||||||
|
|
||||||
handle_dependencies()
|
|
||||||
{
|
|
||||||
[ -d "src/grub" ] || x_ ./update trees -f grub
|
|
||||||
[ -f "src/grub/grub-mkstandalone" ] || build_grub_utils
|
|
||||||
x_ mkdir -p "${elfdir}"
|
|
||||||
rm -f "${elfdir}/"* || err "!rm elf, handle_, ${elfdir}/"
|
|
||||||
}
|
|
||||||
|
|
||||||
build_grub_utils()
|
|
||||||
{
|
|
||||||
(
|
|
||||||
x_ cd "src/grub"
|
|
||||||
[ ! -d Makefile ] || x_ make distclean
|
|
||||||
x_ ./bootstrap --gnulib-srcdir=gnulib/ --no-git
|
|
||||||
x_ ./autogen.sh
|
|
||||||
x_ ./configure --with-platform=coreboot
|
|
||||||
make -j$(nproc) FS_PAYLOAD_MODULES="" || err "!mk grub utils"
|
|
||||||
) || err "grub build error"
|
|
||||||
}
|
|
||||||
|
|
||||||
build_keymap_configs()
|
|
||||||
{
|
|
||||||
for keylayoutfile in "${grubcfgsdir}/keymap/"*.gkb; do
|
|
||||||
[ -f "${keylayoutfile}" ] || continue
|
|
||||||
keymap="${keylayoutfile##"${grubcfgsdir}/keymap/"}"
|
|
||||||
keymap="${keymap%.gkb}"
|
|
||||||
printf "keymap %s\n" "${keymap}" > \
|
|
||||||
"${elfdir}/keymap_${keymap}.cfg" || err "!insert keymap"
|
|
||||||
done
|
|
||||||
}
|
|
||||||
|
|
||||||
build_grub_payload()
|
|
||||||
{
|
|
||||||
./src/grub/grub-mkstandalone \
|
|
||||||
--grub-mkimage="src/grub/grub-mkimage" \
|
|
||||||
-O i386-coreboot \
|
|
||||||
-o "${elfdir}/grub.elf" \
|
|
||||||
-d "src/grub/grub-core/" \
|
|
||||||
--fonts= --themes= --locales= \
|
|
||||||
--modules="${grub_modules}" \
|
|
||||||
--install-modules="${grub_install_modules}" \
|
|
||||||
"${layoutdir}/colemak.gkb=${grubcfgsdir}/keymap/colemak.gkb" \
|
|
||||||
"${layoutdir}/deqwertz.gkb=${grubcfgsdir}/keymap/deqwertz.gkb" \
|
|
||||||
"${layoutdir}/esqwerty.gkb=${grubcfgsdir}/keymap/esqwerty.gkb" \
|
|
||||||
"${layoutdir}/frazerty.gkb=${grubcfgsdir}/keymap/frazerty.gkb" \
|
|
||||||
"${layoutdir}/frdvbepo.gkb=${grubcfgsdir}/keymap/frdvbepo.gkb" \
|
|
||||||
"${layoutdir}/itqwerty.gkb=${grubcfgsdir}/keymap/itqwerty.gkb" \
|
|
||||||
"${layoutdir}/svenska.gkb=${grubcfgsdir}/keymap/svenska.gkb" \
|
|
||||||
"${layoutdir}/trqwerty.gkb=${grubcfgsdir}/keymap/trqwerty.gkb" \
|
|
||||||
"${layoutdir}/ukdvorak.gkb=${grubcfgsdir}/keymap/ukdvorak.gkb" \
|
|
||||||
"${layoutdir}/ukqwerty.gkb=${grubcfgsdir}/keymap/ukqwerty.gkb" \
|
|
||||||
"${layoutdir}/usdvorak.gkb=${grubcfgsdir}/keymap/usdvorak.gkb" \
|
|
||||||
"${layoutdir}/usqwerty.gkb=${grubcfgsdir}/keymap/usqwerty.gkb" \
|
|
||||||
"/boot/grub/grub.cfg=${grubcfgsdir}/config/grub_memdisk.cfg" \
|
|
||||||
"/boot/grub/grub_default.cfg=${grubcfgsdir}/config/grub.cfg" || \
|
|
||||||
err "build_grub_elf: cannot build grub payload (grub-mkstandalone)"
|
|
||||||
}
|
|
||||||
|
|
||||||
main $@
|
|
|
@ -165,7 +165,49 @@ build_dependency_grub()
|
||||||
rebuild_grub="y"
|
rebuild_grub="y"
|
||||||
done
|
done
|
||||||
[ -n "${_keyboard}" ] && keymaps="${kmapdir}/${_keyboard}.gkb"
|
[ -n "${_keyboard}" ] && keymaps="${kmapdir}/${_keyboard}.gkb"
|
||||||
[ "${rebuild_grub}" = "y" ] && x_ ./build grub; return 0
|
[ "$rebuild_grub" = "y" ] || return 0
|
||||||
|
x_ ./update trees -b grub
|
||||||
|
remkdir elf/grub
|
||||||
|
build_keymap_configs
|
||||||
|
build_grub_payload
|
||||||
|
}
|
||||||
|
|
||||||
|
build_keymap_configs()
|
||||||
|
{
|
||||||
|
for keylayoutfile in "${grubcfgsdir}/keymap/"*.gkb; do
|
||||||
|
[ -f "${keylayoutfile}" ] || continue
|
||||||
|
keymap="${keylayoutfile##"${grubcfgsdir}/keymap/"}"
|
||||||
|
keymap="${keymap%.gkb}"
|
||||||
|
printf "keymap %s\n" "${keymap}" > \
|
||||||
|
"elf/grub/keymap_${keymap}.cfg" || err "!insert keymap"
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
|
build_grub_payload()
|
||||||
|
{
|
||||||
|
./src/grub/grub-mkstandalone \
|
||||||
|
--grub-mkimage="src/grub/grub-mkimage" \
|
||||||
|
-O i386-coreboot \
|
||||||
|
-o "elf/grub/grub.elf" \
|
||||||
|
-d "src/grub/grub-core/" \
|
||||||
|
--fonts= --themes= --locales= \
|
||||||
|
--modules="${grub_modules}" \
|
||||||
|
--install-modules="${grub_install_modules}" \
|
||||||
|
"${layoutdir}/colemak.gkb=${grubcfgsdir}/keymap/colemak.gkb" \
|
||||||
|
"${layoutdir}/deqwertz.gkb=${grubcfgsdir}/keymap/deqwertz.gkb" \
|
||||||
|
"${layoutdir}/esqwerty.gkb=${grubcfgsdir}/keymap/esqwerty.gkb" \
|
||||||
|
"${layoutdir}/frazerty.gkb=${grubcfgsdir}/keymap/frazerty.gkb" \
|
||||||
|
"${layoutdir}/frdvbepo.gkb=${grubcfgsdir}/keymap/frdvbepo.gkb" \
|
||||||
|
"${layoutdir}/itqwerty.gkb=${grubcfgsdir}/keymap/itqwerty.gkb" \
|
||||||
|
"${layoutdir}/svenska.gkb=${grubcfgsdir}/keymap/svenska.gkb" \
|
||||||
|
"${layoutdir}/trqwerty.gkb=${grubcfgsdir}/keymap/trqwerty.gkb" \
|
||||||
|
"${layoutdir}/ukdvorak.gkb=${grubcfgsdir}/keymap/ukdvorak.gkb" \
|
||||||
|
"${layoutdir}/ukqwerty.gkb=${grubcfgsdir}/keymap/ukqwerty.gkb" \
|
||||||
|
"${layoutdir}/usdvorak.gkb=${grubcfgsdir}/keymap/usdvorak.gkb" \
|
||||||
|
"${layoutdir}/usqwerty.gkb=${grubcfgsdir}/keymap/usqwerty.gkb" \
|
||||||
|
"/boot/grub/grub.cfg=${grubcfgsdir}/config/grub_memdisk.cfg" \
|
||||||
|
"/boot/grub/grub_default.cfg=${grubcfgsdir}/config/grub.cfg" || \
|
||||||
|
err "build_grub_elf: cannot build grub payload (grub-mkstandalone)"
|
||||||
}
|
}
|
||||||
|
|
||||||
build_dependency_uboot()
|
build_dependency_uboot()
|
||||||
|
|
|
@ -33,6 +33,7 @@ main()
|
||||||
done
|
done
|
||||||
[ -z "$_f" ] && err "missing flag (-m/-u/-b/-c/-x/-f/-s/-l/-n)"
|
[ -z "$_f" ] && err "missing flag (-m/-u/-b/-c/-x/-f/-s/-l/-n)"
|
||||||
[ -z "$project" ] && err "project name not specified"
|
[ -z "$project" ] && err "project name not specified"
|
||||||
|
elfdir="elf/${project}"
|
||||||
|
|
||||||
check_project
|
check_project
|
||||||
|
|
||||||
|
@ -63,7 +64,6 @@ build_projects()
|
||||||
|
|
||||||
build_targets()
|
build_targets()
|
||||||
{
|
{
|
||||||
elfdir="elf/${project}"
|
|
||||||
[ "$elfdir" = "elf/coreboot" ] && \
|
[ "$elfdir" = "elf/coreboot" ] && \
|
||||||
elfdir="elf/coreboot_nopayload_DO_NOT_FLASH"
|
elfdir="elf/coreboot_nopayload_DO_NOT_FLASH"
|
||||||
|
|
||||||
|
@ -204,17 +204,39 @@ handle_makefile()
|
||||||
|
|
||||||
run_make_command()
|
run_make_command()
|
||||||
{
|
{
|
||||||
[ -f "${codedir}/Makefile" ] || [ -f "${codedir}/makefile" ] || \
|
[ -z "$mode" ] && check_autoconf "$codedir"
|
||||||
[ -f "${codedir}/GNUmakefile" ] || return 1
|
check_makefile "$codedir" || return 1
|
||||||
|
|
||||||
[ "$project" = "coreboot" ] && [ -z "$mode" ] && \
|
[ "$project" = "coreboot" ] && [ -z "$mode" ] && \
|
||||||
x_ printf "%s\n" "${version%%-*}" \
|
x_ printf "%s\n" "${version%%-*}" \
|
||||||
> "${codedir}/.coreboot-version"
|
> "${codedir}/.coreboot-version"
|
||||||
|
|
||||||
x_ make $mode -j$(nproc) -C "$codedir"
|
make $mode -j$(nproc) FS_PAYLOAD_MODULES="" -C "$codedir" || \
|
||||||
|
err "run_make $codedir: !make $mode"
|
||||||
|
|
||||||
[ "$mode" != "clean" ] && return 0
|
[ "$mode" != "clean" ] && return 0
|
||||||
make -C "$codedir" distclean 2>/dev/null || :
|
make -C "$codedir" distclean 2>/dev/null || :
|
||||||
}
|
}
|
||||||
|
|
||||||
|
check_autoconf()
|
||||||
|
{
|
||||||
|
(
|
||||||
|
_cfgopt=""
|
||||||
|
cd "${codedir}" || err "!cd $codedir"
|
||||||
|
[ "$project" = "grub" ] && _cfgopt="--gnulib-srcdir=gnulib/ --no-git"
|
||||||
|
[ -f "bootstrap" ] && x_ ./bootstrap $_cfgopt
|
||||||
|
[ -f "autogen.sh" ] && x_ ./autogen.sh
|
||||||
|
[ "$project" = "grub" ] && _cfgopt="--with-platform=coreboot"
|
||||||
|
[ -f "configure" ] && x_ ./configure $_cfgopt; return 0
|
||||||
|
) || err "can't bootstrap project: $codedir"
|
||||||
|
}
|
||||||
|
|
||||||
|
check_makefile()
|
||||||
|
{
|
||||||
|
[ -f "${1}/Makefile" ] || [ -f "${1}/makefile" ] || \
|
||||||
|
[ -f "${1}/GNUmakefile" ] || return 1; return 0
|
||||||
|
}
|
||||||
|
|
||||||
copy_elf()
|
copy_elf()
|
||||||
{
|
{
|
||||||
while read -r f; do
|
while read -r f; do
|
||||||
|
|
Loading…
Reference in New Issue