board/common: Move QEMU script generation to separate make target

This commit is contained in:
Tobias Waldekranz
2025-12-03 16:46:07 +01:00
parent 065c131285
commit 516313b489
7 changed files with 70 additions and 47 deletions
+8
View File
@@ -8,6 +8,14 @@ source "$BR2_EXTERNAL_INFIX_PATH/board/common/image/image-itb-rauc/Config.in"
endmenu endmenu
config QEMU_SCRIPTS
bool "QEMU scripts"
default y
help
Install QEMU scripts and related files in the images
directory, which can be used to launch virtual Infix
instances.
menuconfig TRUSTED_KEYS menuconfig TRUSTED_KEYS
bool "Trusted keys for image" bool "Trusted keys for image"
help help
+1
View File
@@ -1,4 +1,5 @@
include $(BR2_EXTERNAL_INFIX_PATH)/board/common/image/image.mk include $(BR2_EXTERNAL_INFIX_PATH)/board/common/image/image.mk
include $(BR2_EXTERNAL_INFIX_PATH)/board/common/qemu/qemu.mk
ifeq ($(TRUSTED_KEYS),y) ifeq ($(TRUSTED_KEYS),y)
include $(BR2_EXTERNAL_INFIX_PATH)/board/common/uboot/uboot.mk include $(BR2_EXTERNAL_INFIX_PATH)/board/common/uboot/uboot.mk
-11
View File
@@ -43,17 +43,6 @@ if [ "$BR2_TARGET_ROOTFS_SQUASHFS" = "y" ]; then
cp "$BR2_EXTERNAL_INFIX_PATH/board/common/rootfs/usr/bin/onieprom" "$BINARIES_DIR/" cp "$BR2_EXTERNAL_INFIX_PATH/board/common/rootfs/usr/bin/onieprom" "$BINARIES_DIR/"
# Menuconfig support for modifying Qemu args in release tarballs
cp "$BR2_EXTERNAL_INFIX_PATH/board/common/qemu/qemu.sh" "$BINARIES_DIR/"
sed -e "s/@ARCH@/QEMU_$BR2_ARCH/" \
-e "s/@DISK_IMG@/$diskimg/" \
< "$BR2_EXTERNAL_INFIX_PATH/board/common/qemu/Config.in.in" \
> "$BINARIES_DIR/Config.in"
rm -f "$BINARIES_DIR/qemu.cfg"
CONFIG_="CONFIG_" BR2_CONFIG="$BINARIES_DIR/qemu.cfg" \
"$O/build/buildroot-config/conf" --olddefconfig "$BINARIES_DIR/Config.in"
rm -f "$BINARIES_DIR/qemu.cfg.old" "$BINARIES_DIR/.config.old"
# Quick intro for beginners, with links to more information # Quick intro for beginners, with links to more information
cp "$BR2_EXTERNAL_INFIX_PATH/board/common/README.txt" "$BINARIES_DIR/" cp "$BR2_EXTERNAL_INFIX_PATH/board/common/README.txt" "$BINARIES_DIR/"
fi fi
+6 -6
View File
@@ -99,20 +99,20 @@ config QEMU_MACHINE_RAM
config QEMU_KERNEL config QEMU_KERNEL
string string
depends on QEMU_LOADER_KERNEL depends on QEMU_LOADER_KERNEL
default "zImage" if QEMU_arm default "../zImage" if QEMU_arm
default "Image" if QEMU_aarch64 default "../Image" if QEMU_aarch64
default "bzImage" if QEMU_x86_64 default "../bzImage" if QEMU_x86_64
config QEMU_BIOS config QEMU_BIOS
string string
depends on !QEMU_LOADER_KERNEL depends on !QEMU_LOADER_KERNEL
default "u-boot.bin" if QEMU_LOADER_UBOOT default "../u-boot.bin" if QEMU_LOADER_UBOOT
default "OVMF.fd" if QEMU_LOADER_OVMF default "../OVMF.fd" if QEMU_LOADER_OVMF
config QEMU_ROOTFS config QEMU_ROOTFS
string string
default "@DISK_IMG@" if !QEMU_ROOTFS_INITRD default "@DISK_IMG@" if !QEMU_ROOTFS_INITRD
default "rootfs.squashfs" if QEMU_ROOTFS_INITRD default "../rootfs.squashfs" if QEMU_ROOTFS_INITRD
config QEMU_DTB_EXTEND config QEMU_DTB_EXTEND
bool bool
+45
View File
@@ -0,0 +1,45 @@
################################################################################
#
# qemu-scripts
#
################################################################################
QEMU_SCRIPTS_DIR := $(pkgdir)
qemu-kconfig = \
CONFIG_="CONFIG_" \
BR2_CONFIG="$(BINARIES_DIR)/qemu/.config" \
$(BUILD_DIR)/buildroot-config/$(1) $(2) "$(BINARIES_DIR)/qemu/Config.in"
ifeq ($(QEMU_SCRIPTS),y)
.PHONY: run
run:
@$(BINARIES_DIR)/qemu/run.sh
.PHONY: run-menuconfig
run-menuconfig: $(BUILD_DIR)/buildroot-config/mconf
@$(call qemu-kconfig,mconf)
qemu-scripts: \
$(BINARIES_DIR)/qemu/run.sh \
$(BINARIES_DIR)/qemu/Config.in \
$(BINARIES_DIR)/qemu/.config
$(BINARIES_DIR)/qemu/run.sh: $(QEMU_SCRIPTS_DIR)/run.sh
@$(call IXMSG,"Installing QEMU scripts")
@mkdir -p $(dir $@)
@cp $< $@
$(BINARIES_DIR)/qemu/Config.in: $(QEMU_SCRIPTS_DIR)/Config.in.in
@mkdir -p $(dir $@)
@sed \
-e "s:@ARCH@:QEMU_$(BR2_ARCH):" \
-e "s:@DISK_IMG@:../$(INFIX_ARTIFACT).qcow2:" \
< $< >$@
$(BINARIES_DIR)/qemu/.config: $(BINARIES_DIR)/qemu/Config.in
@$(call qemu-kconfig,conf,--olddefconfig)
@rm -f $@.old
TARGETS_ROOTFS += qemu-scripts
endif
@@ -19,8 +19,8 @@
# #
# shellcheck disable=SC3037 # shellcheck disable=SC3037
# Local variables qdir=$(dirname "$(readlink -f "$0")")
imgdir=$(readlink -f "$(dirname "$0")") imgdir=$(readlink -f "${qdir}/..")
prognm=$(basename "$0") prognm=$(basename "$0")
usage() usage()
@@ -56,12 +56,8 @@ die()
load_qemucfg() load_qemucfg()
{ {
tmp=$(mktemp -p /tmp)
grep ^CONFIG_QEMU_ "$1" >"$tmp"
# shellcheck disable=SC1090 # shellcheck disable=SC1090
. "$tmp" . "./.config"
rm "$tmp"
[ "$CONFIG_QEMU_MACHINE" ] || die "Missing QEMU_MACHINE" [ "$CONFIG_QEMU_MACHINE" ] || die "Missing QEMU_MACHINE"
[ "$CONFIG_QEMU_ROOTFS" ] || die "Missing QEMU_ROOTFS" [ "$CONFIG_QEMU_ROOTFS" ] || die "Missing QEMU_ROOTFS"
@@ -247,7 +243,7 @@ rocker_port_args()
net_args() net_args()
{ {
# Infix will pick up this file via fwcfg and install it to /etc # Infix will pick up this file via fwcfg and install it to /etc
mactab=${imgdir}/mactab mactab=${qdir}/mactab
:> "$mactab" :> "$mactab"
echo -n "-fw_cfg name=opt/mactab,file=$mactab " echo -n "-fw_cfg name=opt/mactab,file=$mactab "
@@ -286,7 +282,7 @@ vpd_args()
{ {
[ "$CONFIG_QEMU_VPD" = "y" ] || return [ "$CONFIG_QEMU_VPD" = "y" ] || return
vpd_file="${imgdir}/vpd" vpd_file="${qdir}/vpd"
if ! [ -f "$vpd_file" ]; then if ! [ -f "$vpd_file" ]; then
onieprom="${imgdir}/onieprom" onieprom="${imgdir}/onieprom"
@@ -430,7 +426,7 @@ dtb_args()
# Extend it with the environment and signing information in # Extend it with the environment and signing information in
# u-boot.dtb. # u-boot.dtb.
echo "qemu.dtb u-boot.dtb" | \ echo "qemu.dtb ../u-boot.dtb" | \
xargs -n 1 dtc -I dtb -O dts | \ xargs -n 1 dtc -I dtb -O dts | \
{ echo "/dts-v1/;"; sed -e 's:/dts-v[0-9]\+/;::'; } | \ { echo "/dts-v1/;"; sed -e 's:/dts-v[0-9]\+/;::'; } | \
dtc >qemu-extended.dtb 2>/dev/null dtc >qemu-extended.dtb 2>/dev/null
@@ -439,7 +435,7 @@ dtb_args()
echo -n "-dtb qemu-extended.dtb " echo -n "-dtb qemu-extended.dtb "
else else
# Otherwise we just use the unmodified one # Otherwise we just use the unmodified one
echo -n "-dtb u-boot.dtb " echo -n "-dtb ../u-boot.dtb "
fi fi
} }
@@ -485,13 +481,12 @@ EOF
menuconfig() menuconfig()
{ {
grep -q QEMU_MACHINE Config.in || die "$prognm: must be run from the output/images directory" grep -q QEMU_MACHINE Config.in || die "$prognm: must be run from the $$O/images/qemu directory"
command -v kconfig-mconf >/dev/null || die "$prognm: cannot find kconfig-mconf for menuconfig" command -v kconfig-mconf >/dev/null || die "$prognm: cannot find kconfig-mconf for menuconfig"
exec kconfig-mconf Config.in exec kconfig-mconf Config.in
} }
scriptdir=$(dirname "$(readlink -f "$0")") cd "$qdir" || (echo "Failed cd to $qdir"; exit 1)
cd "$scriptdir" || (echo "Failed cd to $scriptdir"; exit 1)
while [ "$1" != "" ]; do while [ "$1" != "" ]; do
case $1 in case $1 in
@@ -510,13 +505,7 @@ while [ "$1" != "" ]; do
shift shift
done done
if [ -f .config ]; then load_qemucfg
# Customized settings from 'qemu.sh -c'
load_qemucfg .config
else
# Shipped defaults from release tarball
load_qemucfg qemu.cfg
fi
if [ -z "$QEMU_EXTRA_APPEND" ]; then if [ -z "$QEMU_EXTRA_APPEND" ]; then
QEMU_EXTRA_APPEND="$*" QEMU_EXTRA_APPEND="$*"
-9
View File
@@ -8,15 +8,6 @@ local.mk:
@$(call IXMSG,"Installing local override for certain packages") @$(call IXMSG,"Installing local override for certain packages")
@(cd $O && ln -s $(BR2_EXTERNAL_INFIX_PATH)/local.mk .) @(cd $O && ln -s $(BR2_EXTERNAL_INFIX_PATH)/local.mk .)
.PHONY: run
run:
@$(BINARIES_DIR)/qemu.sh
.PHONY: run-menuconfig
run-menuconfig: $(BUILD_DIR)/buildroot-config/mconf
CONFIG_="CONFIG_" BR2_CONFIG="$(BINARIES_DIR)/.config" \
$(BUILD_DIR)/buildroot-config/mconf $(BINARIES_DIR)/Config.in
# #
# Buildroot package extensions # Buildroot package extensions
# #