Files
xen/automation/build/Makefile
T
Bertrand Marquis 4755d10e9c automation: Add a clean rule for containers
Add make clean support to remove the containers from the local docker
registry.
make clean-<image_name> must be called to remove an image:
make clean-yocto/kirkstone-qemuarm: remove yocto kirkstone for qemuarm
image

Signed-off-by: Bertrand Marquis <bertrand.marquis@arm.com>
Acked-by: Stefano Stabellini <sstabellini@kernel.org>
2022-12-09 14:55:33 -08:00

41 lines
1.2 KiB
Makefile

# the base of where these containers will appear
REGISTRY := registry.gitlab.com/xen-project/xen
CONTAINERS := $(filter-out yocto/%,$(subst .dockerfile,,$(wildcard */*.dockerfile)))
CONTAINERS_EXTRA =
DOCKER_CMD ?= docker
help:
@echo "Builds containers for building Xen based on different distros"
@echo "To build one run 'make DISTRO/VERSION'. Available containers:"
@$(foreach file,$(sort $(CONTAINERS)),echo $(file);)
@echo "Extra containers (not built using make all):"
@$(foreach file,$(sort $(CONTAINERS_EXTRA)),echo $(file);)
@echo "To push container builds, set the env var PUSH"
include yocto/yocto.inc
%: %.dockerfile ## Builds containers
$(DOCKER_CMD) build -t $(REGISTRY)/$(@D):$(@F) -f $< $(<D)
@if [ ! -z $${PUSH+x} ]; then \
$(DOCKER_CMD) push $(REGISTRY)/$(@D):$(@F); \
fi
.PHONY: all clean
all: $(CONTAINERS)
# Remove generated dockerfiles for yocto
clean:
rm -f yocto/*.dockerfile
define CLEAN_RULE
.PHONY: clean-$(1)
clean-$(1):
if [ -n "$$$$(docker image ls -q $(REGISTRY)/$(subst /,:,$(1)))" ]; then \
docker image rm $(REGISTRY)/$(subst /,:,$(1)); \
fi
endef
$(eval $(foreach img,$(CONTAINERS) $(CONTAINERS_EXTRA),$(call CLEAN_RULE,$(img))))