@@ -67,6 +67,8 @@ REGISTRY_PASS ?=
6767ARCH ?= $(if $(findstring x86_64,$(shell uname -m) ) ,amd64,$(shell uname -m) )
6868# LTS is a boolean value to enable/disable LTS container build
6969LTS ?= false
70+ # VOLUME_MOUNT_OPTIONS is used when bind-mounting files from the "downloads" directory into the container. By default, SELinux labels are automatically re-written, but this doesn't work on some filesystems with extended attributes (xattrs). You can turn off the label re-writing by setting this variable to be blank.
71+ VOLUME_MOUNT_OPTIONS ?= :Z
7072
7173# ##############################################################################
7274# Other variables
@@ -80,7 +82,7 @@ MQ_ARCHIVE_DEV_TYPE=Linux
8082BUILD_SERVER_CONTAINER =build-server
8183# NUM_CPU is the number of CPUs available to Docker. Used to control how many
8284# test run in parallel
83- NUM_CPU ?= $(or $(shell docker info --format "{{ .NCPU }}") ,2)
85+ NUM_CPU ?= $(or $(shell $( COMMAND ) info --format "{{ .NCPU }}") ,2)
8486# BASE_IMAGE_TAG is a normalized version of BASE_IMAGE, suitable for use in a Docker tag
8587BASE_IMAGE_TAG =$(lastword $(subst /, ,$(subst :,-,$(BASE_IMAGE ) ) ) )
8688# BASE_IMAGE_TAG=$(subst /,-,$(subst :,-,$(BASE_IMAGE)))
@@ -258,12 +260,12 @@ test/docker/vendor:
258260# Shortcut to just run the unit tests
259261.PHONY : test-unit
260262test-unit :
261- docker build --target builder --file Dockerfile-server .
263+ $( COMMAND ) build --target builder --file Dockerfile-server .
262264
263265.PHONY : test-advancedserver
264266test-advancedserver : test/docker/vendor
265- $(info $(SPACER )$(shell printf $(TITLE ) "Test $(MQ_IMAGE_ADVANCEDSERVER ) :$(MQ_TAG ) on $(shell docker --version) "$(END ) ) )
266- docker inspect $(MQ_IMAGE_ADVANCEDSERVER ) :$(MQ_TAG )
267+ $(info $(SPACER )$(shell printf $(TITLE ) "Test $(MQ_IMAGE_ADVANCEDSERVER ) :$(MQ_TAG ) on $(shell $( COMMAND ) --version) "$(END ) ) )
268+ $( COMMAND ) inspect $(MQ_IMAGE_ADVANCEDSERVER ) :$(MQ_TAG )
267269 cd test/docker && TEST_IMAGE=$(MQ_IMAGE_ADVANCEDSERVER ) :$(MQ_TAG ) EXPECTED_LICENSE=Production go test -parallel $(NUM_CPU ) -timeout $(TEST_TIMEOUT_DOCKER ) $(TEST_OPTS_DOCKER )
268270
269271.PHONY : build-devjmstest
@@ -273,8 +275,8 @@ build-devjmstest: registry-login
273275
274276.PHONY : test-devserver
275277test-devserver : test/docker/vendor
276- $(info $(SPACER )$(shell printf $(TITLE ) "Test $(MQ_IMAGE_DEVSERVER ) :$(MQ_TAG ) on $(shell docker --version) "$(END ) ) )
277- docker inspect $(MQ_IMAGE_DEVSERVER ) :$(MQ_TAG )
278+ $(info $(SPACER )$(shell printf $(TITLE ) "Test $(MQ_IMAGE_DEVSERVER ) :$(MQ_TAG ) on $(shell $( COMMAND ) --version) "$(END ) ) )
279+ $( COMMAND ) inspect $(MQ_IMAGE_DEVSERVER ) :$(MQ_TAG )
278280 cd test/docker && TEST_IMAGE=$(MQ_IMAGE_DEVSERVER ) :$(MQ_TAG ) EXPECTED_LICENSE=Developer DEV_JMS_IMAGE=$(DEV_JMS_IMAGE ) IBMJRE=true go test -parallel $(NUM_CPU ) -timeout $(TEST_TIMEOUT_DOCKER ) -tags mqdev $(TEST_OPTS_DOCKER )
279281
280282.PHONY : coverage
@@ -283,7 +285,7 @@ coverage:
283285
284286.PHONY : test-advancedserver-cover
285287test-advancedserver-cover : test/docker/vendor coverage
286- $(info $(SPACER )$(shell printf $(TITLE ) "Test $(MQ_IMAGE_ADVANCEDSERVER ) :$(MQ_TAG ) with code coverage on $(shell docker --version) "$(END ) ) )
288+ $(info $(SPACER )$(shell printf $(TITLE ) "Test $(MQ_IMAGE_ADVANCEDSERVER ) :$(MQ_TAG ) with code coverage on $(shell $( COMMAND ) --version) "$(END ) ) )
287289 rm -f ./coverage/unit* .cov
288290 # Run unit tests with coverage, for each package under 'internal'
289291 go list -f ' {{.Name}}' ./internal/... | xargs -I {} go test -cover -covermode count -coverprofile ./coverage/unit-{}.cov ./internal/{}
@@ -307,8 +309,8 @@ test-advancedserver-cover: test/docker/vendor coverage
307309# Build an MQ image. The commands used are slightly different between Docker and Podman
308310define build-mq
309311 $(if $(findstring docker,$(COMMAND ) ) , @docker network create build,)
310- $(if $(findstring docker,$(COMMAND ) ) , @docker run --rm --name $(BUILD_SERVER_CONTAINER ) --network build --network-alias build --volume $(DOWNLOADS_DIR ) :/opt/app-root/src:ro --detach registry.redhat.io/ubi8/nginx-118 nginx -g "daemon off;",)
311- $(eval EXTRA_ARGS=$(if $(findstring docker,$(COMMAND ) ) , --network build --build-arg MQ_URL=http://build:8080/$4, --volume $(DOWNLOADS_DIR ) :/var/downloads --build-arg MQ_URL=file:///var/downloads/$4) )
312+ $(if $(findstring docker,$(COMMAND ) ) , @docker run --rm --name $(BUILD_SERVER_CONTAINER ) --network build --network-alias build --volume $(DOWNLOADS_DIR ) :/opt/app-root/src$( VOLUME_MOUNT_OPTIONS ) --detach registry.redhat.io/ubi8/nginx-118 nginx -g "daemon off;",)
313+ $(eval EXTRA_ARGS=$(if $(findstring docker,$(COMMAND ) ) , --network build --build-arg MQ_URL=http://build:8080/$4, --volume $(DOWNLOADS_DIR ) :/var/downloads$( VOLUME_MOUNT_OPTIONS ) --build-arg MQ_URL=file:///var/downloads/$4) )
312314 # Build the new image
313315 $(COMMAND ) build \
314316 --tag $1:$2 \
@@ -321,26 +323,26 @@ define build-mq
321323 --label name=$1 \
322324 --label build-date=$(shell date +% Y-% m-% dT% H:% M:% S% z) \
323325 --label architecture="$(ARCH ) " \
324- --label run="docker run -d -e LICENSE=accept $1:$2" \
326+ --label run="podman run -d -e LICENSE=accept $1:$2" \
325327 --label vcs-ref=$(IMAGE_REVISION ) \
326328 --label vcs-type=git \
327329 --label vcs-url=$(IMAGE_SOURCE ) \
328330 $(EXTRA_LABELS ) \
329331 --target $5 \
330- .
332+ .
331333 $(if $(findstring docker,$(COMMAND ) ) , @docker kill $(BUILD_SERVER_CONTAINER ) )
332334 $(if $(findstring docker,$(COMMAND ) ) , @docker network rm build)
333335endef
334336
335- DOCKER_SERVER_VERSION =$(shell docker version --format "{{ .Server.Version }}")
336- DOCKER_CLIENT_VERSION =$(shell docker version --format "{{ .Client.Version }}")
337+ COMMAND_SERVER_VERSION =$(shell $( COMMAND ) version --format "{{ .Server.Version }}")
338+ COMMAND_CLIENT_VERSION =$(shell $( COMMAND ) version --format "{{ .Client.Version }}")
337339PODMAN_VERSION =$(shell podman version --format "{{ .Version }}")
338340.PHONY : command-version
339341command-version :
340342# If we're using Docker, then check it's recent enough to support multi-stage builds
341343ifneq (,$(findstring docker,$(COMMAND ) ) )
342- @test "$(word 1,$(subst ., ,$(DOCKER_CLIENT_VERSION )))" -ge "17" || ("$(word 1,$(subst ., ,$(DOCKER_CLIENT_VERSION )))" -eq "17" && "$(word 2,$(subst ., ,$(DOCKER_CLIENT_VERSION )))" -ge "05") || (echo "Error: Docker client 17.05 or greater is required" && exit 1)
343- @test "$(word 1,$(subst ., ,$(DOCKER_SERVER_VERSION )))" -ge "17" || ("$(word 1,$(subst ., ,$(DOCKER_SERVER_VERSION )))" -eq "17" && "$(word 2,$(subst ., ,$(DOCKER_CLIENT_VERSION )))" -ge "05") || (echo "Error: Docker server 17.05 or greater is required" && exit 1)
344+ @test "$(word 1,$(subst ., ,$(COMMAND_CLIENT_VERSION )))" -ge "17" || ("$(word 1,$(subst ., ,$(COMMAND_CLIENT_VERSION )))" -eq "17" && "$(word 2,$(subst ., ,$(COMMAND_CLIENT_VERSION )))" -ge "05") || (echo "Error: Docker client 17.05 or greater is required" && exit 1)
345+ @test "$(word 1,$(subst ., ,$(COMMAND_SERVER_VERSION )))" -ge "17" || ("$(word 1,$(subst ., ,$(COMMAND_SERVER_VERSION )))" -eq "17" && "$(word 2,$(subst ., ,$(COMMAND_CLIENT_VERSION )))" -ge "05") || (echo "Error: Docker server 17.05 or greater is required" && exit 1)
344346endif
345347ifneq (,$(findstring podman,$(COMMAND ) ) )
346348 @test "$(word 1,$(subst ., ,$(PODMAN_VERSION)))" -ge "1" || (echo "Error: Podman version 1.0 or greater is required" && exit 1)
@@ -463,7 +465,7 @@ endif
463465
464466.PHONY : build-skopeo-container
465467build-skopeo-container :
466- $(COMMAND ) images | grep -q " skopeo" ; if [ $$ ? != 0 ]; then docker build -t skopeo:latest ./docker-builds/skopeo/; fi
468+ $(COMMAND ) images | grep -q " skopeo" ; if [ $$ ? != 0 ]; then $( COMMAND ) build -t skopeo:latest ./docker-builds/skopeo/; fi
467469
468470.PHONY : clean
469471clean :
0 commit comments