# +-----------------------------------------------------------+ # * Docker tests for the autobuild script # +-----------------------------------------------------------+ # List of available OS. DOCKER_OS = $(patsubst %.Dockerfile.in, %, \ $(notdir $(wildcard docker/templates/*.Dockerfile.in))) # Arguments to pass to docker build . DOCKER_BUILD_ARGS = -q -t # Advice make not to delete these "intermediate" files. .PRECIOUS: docker/%.Dockerfile docker/.%.build docker/.%.container # Avoid conflicts with real files SUBDIRS = docker .PHONY: subdirs $(SUBDIRS) all: docker/test test: docker/test check: docker/test # Create the Podman VM, if it hasn't already been created create-vm: podman machine init --cpus 8 --memory 8192 --disk-size 50 || exit 0 # Start Podman, if it isn't running start-vm: create-vm podman machine start || exit 0 touch .$@ # Stop Podman stop-vm: podman machine stop # Create the Dockerfile docker/%.Dockerfile: docker/templates/%.Dockerfile.in \ docker/templates/Dockerfile.common.in @echo Creating Dockerfile for target $* cat $^ > $@ # Build the Docker Image. Since we are building a new image, remove the existing container. docker/.%.build: docker/%.Dockerfile ../autobuild docker/lib @echo Building target image $* podman image build $(DOCKER_BUILD_ARGS) epdfinfo/$* -f $< ../../ touch $@ # Build the Docker Container docker/.%.container: docker/.%.build @echo Building target container $* podman container create $(DOCKER_BUILD_ARGS) --name epdfinfo-$* epdfinfo/$* touch $@ # Run the Containers generated by the dockerfile docker/%: docker/.%.container @echo Running tests on target $* podman container start -a epdfinfo-$* # Run all Dockerfiles docker/test: docker/build $(patsubst %, docker/%, $(DOCKER_OS)) # Build all Dockerfiles docker/build: $(patsubst %, docker/.%.build, $(DOCKER_OS)) docker/.%.clean: @echo Cleaning target $* podman container rm epdfinfo-$* || exit 0 docker/clean: $(patsubst %, docker/.%.clean, $(DOCKER_OS)) test: docker/test clean: docker/clean rm -f -- docker/.[^.]*.build rm -f -- docker/.[^.]*.container rm -f -- docker/*.Dockerfile print: @echo List of Operating systems where server compilation is tested [via Docker]: @for os in $(DOCKER_OS); do echo - $$os; done | sort print-failing: FAILING_OS := $(patsubst %.Dockerfile.in.FAILING, %, \ $(notdir $(wildcard docker/templates/*.Dockerfile.in.FAILING))) print-failing: @echo List of Operating systems where server compilation is not tested: @for os in $(FAILING_OS); do echo - $$os; done | sort @echo PLEASE help support your favorite OS! More details at: https://pdftools.wiki/A401543C