VERSION       = 3.12.3
SHORT_VERSION = 3.12
ARCH          = x86_64
EDITION       = standard
DISK_SIZE     = 16G
MEMORY_SIZE   = 2048
OS            = alpine
FULLNAME      = $(OS)-$(EDITION)-$(VERSION)-$(ARCH)
ISO_URL       = https://dl-cdn.alpinelinux.org/alpine/v$(SHORT_VERSION)/releases/$(ARCH)/$(FULLNAME).iso

QCOWPREFIX = $(CACHE)/qcow2/$(FULLNAME)

all: $(QCOWPREFIX).qcow2

$(CACHE)/isos/$(FULLNAME).iso:
	if ! grep -qF $(FULLNAME) $(PWD)/tested-combinations.txt; then \
		echo 'Untested OS overrides combination: $(FULLNAME)'; \
	fi
	mkdir -p `dirname $@`
	wget -c -O $@-t $(ISO_URL)
	mv $@-t $@

$(QCOWPREFIX).base.qcow2: $(CACHE)/isos/$(FULLNAME).iso
	rm -f $@-t
	mkdir -p `dirname $@`
	qemu-img create -f qcow2 $@-t $(DISK_SIZE)
	expect -f $(PWD)/install.exp qemu-system-$(ARCH) $? $@-t $(MEMORY_SIZE)
	mv $@-t $@

$(QCOWPREFIX).ssh.qcow2: $(QCOWPREFIX).base.qcow2
	cp $? $@-t
	expect -f $(PWD)/ssh.exp qemu-system-$(ARCH) $@-t $(MEMORY_SIZE)
	mv $@-t $@

$(QCOWPREFIX).minimal.qcow2: $(QCOWPREFIX).ssh.qcow2
	cp $? $@-t
	mv $@-t $@

$(QCOWPREFIX).posix.qcow2: $(QCOWPREFIX).ssh.qcow2
	cp $? $@-t
	qemu-system-$(ARCH) -m $(MEMORY_SIZE) -nic user,model=virtio-net-pci,hostfwd=tcp::10022-:22 -curses -drive file=$@-t,media=disk,if=virtio,snapshot=off
	mv $@-t $@

$(QCOWPREFIX).qcow2: $(QCOWPREFIX).$(BASE_SYSTEM).qcow2
	cp $? $@-t
	mv $@-t $@

.PHONY: defaults
defaults:
	@echo 'VERSION:       $(VERSION)'
	@echo 'SHORT_VERSION: $(SHORT_VERSION)'
	@echo 'ARCH:          $(ARCH)'
	@echo 'EDITION:       $(EDITION)'
	@echo 'DISK_SIZE:     $(DISK_SIZE)'
	@echo 'MEMORY_SIZE:   $(MEMORY_SIZE)'
	@echo 'OS:            $(OS)'
	@echo 'BASE_SYSTEM:   $(BASE_SYSTEM)'
	@echo 'FULLNAME:      $(FULLNAME)'
	@echo 'ISO_URL:       $(ISO_URL)'
