92fecad3d3
If we have an alternative to genisoimage we really need to tell the script about it as well so it can use it. It will still default to genisoimage in case it is run outside our build machinery. Signed-off-by: Alex Bennée <alex.bennee@linaro.org> Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com> Signed-off-by: Robert Foley <robert.foley@linaro.org> Message-Id: <20200519132259.405-3-robert.foley@linaro.org>
98 lines
3.2 KiB
Makefile
98 lines
3.2 KiB
Makefile
# Makefile for VM tests
|
|
|
|
.PHONY: vm-build-all vm-clean-all
|
|
|
|
IMAGES := freebsd netbsd openbsd centos fedora
|
|
ifneq ($(GENISOIMAGE),)
|
|
IMAGES += ubuntu.i386 centos
|
|
endif
|
|
|
|
IMAGES_DIR := $(HOME)/.cache/qemu-vm/images
|
|
IMAGE_FILES := $(patsubst %, $(IMAGES_DIR)/%.img, $(IMAGES))
|
|
|
|
.PRECIOUS: $(IMAGE_FILES)
|
|
|
|
# 'vm-help' target was historically named 'vm-test'
|
|
vm-help vm-test:
|
|
@echo "vm-help: Test QEMU in preconfigured virtual machines"
|
|
@echo
|
|
@echo " vm-build-freebsd - Build QEMU in FreeBSD VM"
|
|
@echo " vm-build-netbsd - Build QEMU in NetBSD VM"
|
|
@echo " vm-build-openbsd - Build QEMU in OpenBSD VM"
|
|
@echo " vm-build-fedora - Build QEMU in Fedora VM"
|
|
ifneq ($(GENISOIMAGE),)
|
|
@echo " vm-build-centos - Build QEMU in CentOS VM, with Docker"
|
|
@echo " vm-build-ubuntu.i386 - Build QEMU in ubuntu i386 VM"
|
|
else
|
|
@echo " (install genisoimage to build centos/ubuntu images)"
|
|
endif
|
|
@echo ""
|
|
@echo " vm-build-all - Build QEMU in all VMs"
|
|
@echo " vm-clean-all - Clean up VM images"
|
|
@echo
|
|
@echo "For trouble-shooting:"
|
|
@echo " vm-boot-serial-<guest> - Boot guest, serial console on stdio"
|
|
@echo " vm-boot-ssh-<guest> - Boot guest and login via ssh"
|
|
@echo
|
|
@echo "Special variables:"
|
|
@echo " BUILD_TARGET=foo - Override the build target"
|
|
@echo " TARGET_LIST=a,b,c - Override target list in builds"
|
|
@echo ' EXTRA_CONFIGURE_OPTS="..."'
|
|
@echo " J=[0..9]* - Override the -jN parameter for make commands"
|
|
@echo " DEBUG=1 - Enable verbose output on host and interactive debugging"
|
|
@echo " V=1 - Enable verbose ouput on host and guest commands"
|
|
@echo " QEMU=/path/to/qemu - Change path to QEMU binary"
|
|
@echo " QEMU_IMG=/path/to/qemu-img - Change path to qemu-img tool"
|
|
|
|
vm-build-all: $(addprefix vm-build-, $(IMAGES))
|
|
|
|
vm-clean-all:
|
|
rm -f $(IMAGE_FILES)
|
|
|
|
$(IMAGES_DIR)/%.img: $(SRC_PATH)/tests/vm/% \
|
|
$(SRC_PATH)/tests/vm/basevm.py \
|
|
$(SRC_PATH)/tests/vm/Makefile.include
|
|
@mkdir -p $(IMAGES_DIR)
|
|
$(call quiet-command, \
|
|
$(PYTHON) $< \
|
|
$(if $(V)$(DEBUG), --debug) \
|
|
$(if $(GENISOIMAGE),--genisoimage $(GENISOIMAGE)) \
|
|
--image "$@" \
|
|
--force \
|
|
--build-image $@, \
|
|
" VM-IMAGE $*")
|
|
|
|
|
|
# Build in VM $(IMAGE)
|
|
vm-build-%: $(IMAGES_DIR)/%.img
|
|
$(call quiet-command, \
|
|
$(PYTHON) $(SRC_PATH)/tests/vm/$* \
|
|
$(if $(V)$(DEBUG), --debug) \
|
|
$(if $(DEBUG), --interactive) \
|
|
$(if $(J),--jobs $(J)) \
|
|
$(if $(V),--verbose) \
|
|
--image "$<" \
|
|
$(if $(BUILD_TARGET),--build-target $(BUILD_TARGET)) \
|
|
--snapshot \
|
|
--build-qemu $(SRC_PATH) -- \
|
|
$(if $(TARGET_LIST),--target-list=$(TARGET_LIST)) \
|
|
$(if $(EXTRA_CONFIGURE_OPTS),$(EXTRA_CONFIGURE_OPTS)), \
|
|
" VM-BUILD $*")
|
|
|
|
vm-boot-serial-%: $(IMAGES_DIR)/%.img
|
|
qemu-system-x86_64 -enable-kvm -m 4G -smp 2 -nographic \
|
|
-drive if=none,id=vblk,cache=writeback,file="$<" \
|
|
-netdev user,id=vnet \
|
|
-device virtio-blk-pci,drive=vblk \
|
|
-device virtio-net-pci,netdev=vnet \
|
|
|| true
|
|
|
|
vm-boot-ssh-%: $(IMAGES_DIR)/%.img
|
|
$(call quiet-command, \
|
|
$(PYTHON) $(SRC_PATH)/tests/vm/$* \
|
|
$(if $(J),--jobs $(J)) \
|
|
--image "$<" \
|
|
--interactive \
|
|
false, \
|
|
" VM-BOOT-SSH $*") || true
|