# SPDX-License-Identifier: GPL-2.0-or-later # # Tests makefile # # Copyright Red Hat # Author: David Gibson BATS = bats -j $(shell nproc) EXETOOL = exeter/exetool/exetool WGET = wget -c DOWNLOAD_ASSETS = exeter mbuto podman TESTDATA_ASSETS = small.bin big.bin medium.bin \ rampstream LOCAL_ASSETS = mbuto.img mbuto.mem.img podman/bin/podman QEMU_EFI.fd \ $(DEBIAN_IMGS:%=prepared-%) $(FEDORA_IMGS:%=prepared-%) \ $(UBUNTU_NEW_IMGS:%=prepared-%) \ nstool guest-key guest-key.pub $(EXETOOL) \ $(TESTDATA_ASSETS) ASSETS = $(DOWNLOAD_ASSETS) $(LOCAL_ASSETS) EXETER_PYPATH = exeter/py3 EXETER_BATS = smoke/smoke.sh.bats \ build/build.py.bats build/static_checkers.sh.bats BATS_FILES = $(EXETER_BATS) \ podman/test/system/505-networking-pasta.bats CFLAGS = -Wall -Werror -Wextra -pedantic -std=c99 assets: $(ASSETS) .PHONY: pull-% pull-%: % git -C $* pull exeter: git clone https://gitlab.com/dgibson/exeter.git exeter/exetool/exetool: pull-exeter mbuto: git clone git://mbuto.sh/mbuto mbuto/mbuto: pull-mbuto podman: git clone https://github.com/containers/podman.git # To succesfully build podman, you will need gpgme and systemd # development packages podman/bin/podman: pull-podman $(MAKE) -C podman guest-key guest-key.pub: ssh-keygen -f guest-key -N '' mbuto.img: passt.mbuto mbuto/mbuto guest-key.pub rampstream-check.sh $(TESTDATA_ASSETS) ./mbuto/mbuto -p ./$< -c lz4 -f $@ mbuto.mem.img: passt.mem.mbuto mbuto ../passt.avx2 ./mbuto/mbuto -p ./$< -c lz4 -f $@ nstool: nstool.c $(CC) $(CFLAGS) -o $@ $^ QEMU_EFI.fd: ./find-arm64-firmware.sh $@ prepared-%.qcow2: %.qcow2 ./prepare-distro-img.sh qemu-img create -f qcow2 -F qcow2 -b $< $@ ./prepare-distro-img.sh $@ prepared-%.img: %.img ./prepare-distro-img.sh qemu-img create -f qcow2 -F qcow2 -b $< $@ ./prepare-distro-img.sh $(IMGTYPE) $@ small.bin: dd if=/dev/urandom bs=2k count=1 of=$@ medium.bin: dd if=/dev/urandom bs=1k count=5 of=$@ big.bin: dd if=/dev/urandom bs=1M count=10 of=$@ $(EXETER_BATS): %.bats: % $(EXETOOL) PYTHONPATH=$(EXETER_PYPATH) $(EXETOOL) bats -- $< > $@ bats: $(BATS_FILES) pull-podman PYTHONPATH=$(EXETER_PYPATH) CONTAINERS_HELPER_BINARY_DIR=.. $(BATS) $(BATS_FILES) check: assets ./run debug: assets DEBUG=1 ./run clean: rm -f perf.js *~ rm -f $(LOCAL_ASSETS) rm -f $(EXETER_BATS) rm -rf test_logs rm -f prepared-*.qcow2 prepared-*.img realclean: clean rm -rf $(DOWNLOAD_ASSETS)