1
2# the base of where these containers will appear
3REGISTRY := registry.gitlab.com/xen-project/xen
4CONTAINERS := $(filter-out yocto/%,$(subst .dockerfile,,$(wildcard */*.dockerfile)))
5CONTAINERS_EXTRA =
6DOCKER_CMD ?= docker
7
8help:
9	@echo "Builds containers for building Xen based on different distros"
10	@echo "To build one run 'make DISTRO/VERSION'. Available containers:"
11	@$(foreach file,$(sort $(CONTAINERS)),echo $(file);)
12	@echo "Extra containers (not built using make all):"
13	@$(foreach file,$(sort $(CONTAINERS_EXTRA)),echo $(file);)
14	@echo "To push container builds, set the env var PUSH"
15
16include yocto/yocto.inc
17
18%: %.dockerfile ## Builds containers
19	$(DOCKER_CMD) build --pull -t $(REGISTRY)/$(@D):$(@F) -f $< $(<D)
20	@if [ ! -z $${PUSH+x} ]; then \
21		$(DOCKER_CMD) push $(REGISTRY)/$(@D):$(@F); \
22	fi
23
24.PHONY: all clean
25all: $(CONTAINERS)
26
27# Remove generated dockerfiles for yocto
28clean:
29	rm -f yocto/*.dockerfile
30
31define CLEAN_RULE
32.PHONY: clean-$(1)
33clean-$(1):
34	if [ -n "$$$$($(DOCKER_CMD) image ls -q $(REGISTRY)/$(subst /,:,$(1)))" ]; then \
35		$(DOCKER_CMD) image rm $(REGISTRY)/$(subst /,:,$(1)); \
36	fi
37
38endef
39
40$(eval $(foreach img,$(CONTAINERS) $(CONTAINERS_EXTRA),$(call CLEAN_RULE,$(img))))
41