mirror of
https://github.com/kernelkit/infix.git
synced 2026-07-22 01:13:00 +02:00
board/common: Move QEMU script generation to separate make target
This commit is contained in:
@@ -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,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
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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="$*"
|
||||||
@@ -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
|
||||||
#
|
#
|
||||||
|
|||||||
Reference in New Issue
Block a user