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