2016-09-26 00:38:26 +02:00
|
|
|
|
|
|
|
#
|
|
|
|
# Parameters
|
|
|
|
#
|
|
|
|
|
|
|
|
# Name of the docker executable
|
2024-03-26 02:42:18 +01:00
|
|
|
DOCKER := $(or $(OCI_EXE), docker)
|
2016-09-26 00:38:26 +02:00
|
|
|
|
2024-03-26 03:28:04 +01:00
|
|
|
# The build sub-command. Use:
|
|
|
|
#
|
|
|
|
# export "BUILD_CMD=buildx build --platform linux/amd64,linux/arm64"
|
|
|
|
#
|
|
|
|
# to generate multi-platform images.
|
|
|
|
BUILD_CMD := $(or $(BUILD_CMD), build)
|
|
|
|
|
2016-09-26 00:38:26 +02:00
|
|
|
# Docker organization to pull the images from
|
2016-07-16 05:46:08 +02:00
|
|
|
ORG = dockcross
|
2016-09-26 00:38:26 +02:00
|
|
|
|
2021-08-05 19:06:40 +02:00
|
|
|
# Directory where to generate the dockcross script for each images (e.g bin/dockcross-manylinux2014-x64)
|
2016-11-17 04:02:55 +01:00
|
|
|
BIN = ./bin
|
2016-09-25 23:44:08 +02:00
|
|
|
|
2016-09-26 00:38:26 +02:00
|
|
|
# These images are built using the "build implicit rule"
|
2023-07-08 01:58:13 +02:00
|
|
|
STANDARD_IMAGES := android-arm android-arm64 android-x86 android-x86_64 \
|
2022-10-18 19:55:56 +02:00
|
|
|
linux-i686 linux-x86 linux-x64 linux-x64-clang linux-arm64 linux-arm64-musl linux-arm64-full \
|
2022-02-01 16:03:56 +01:00
|
|
|
linux-armv5 linux-armv5-musl linux-armv5-uclibc linux-m68k-uclibc linux-s390x linux-x64-tinycc \
|
2022-04-22 15:18:28 +02:00
|
|
|
linux-armv6 linux-armv6-lts linux-armv6-musl linux-arm64-lts linux-mipsel-lts \
|
2022-05-16 16:45:38 +02:00
|
|
|
linux-armv7l-musl linux-armv7 linux-armv7a linux-armv7-lts linux-armv7a-lts linux-x86_64-full \
|
2023-09-21 23:56:23 +02:00
|
|
|
linux-mips linux-mips-uclibc linux-mips-lts linux-ppc64le linux-ppc64le-lts linux-riscv64 linux-riscv32 linux-xtensa-uclibc \
|
2021-10-08 23:07:09 +02:00
|
|
|
web-wasi \
|
2021-08-11 01:12:48 +02:00
|
|
|
windows-static-x86 windows-static-x64 windows-static-x64-posix windows-armv7 \
|
2022-03-31 09:58:31 +02:00
|
|
|
windows-shared-x86 windows-shared-x64 windows-shared-x64-posix windows-arm64 \
|
|
|
|
bare-armv7emhf-nano_newlib
|
2017-04-26 21:21:27 +02:00
|
|
|
|
|
|
|
# Generated Dockerfiles.
|
2023-07-08 01:58:13 +02:00
|
|
|
GEN_IMAGES := android-arm android-arm64 \
|
2022-10-18 19:55:56 +02:00
|
|
|
linux-i686 linux-x86 linux-x64 linux-x64-clang linux-arm64 linux-arm64-musl linux-arm64-full \
|
2022-07-05 17:45:51 +02:00
|
|
|
manylinux_2_28-x64 \
|
2021-08-06 13:55:21 +02:00
|
|
|
manylinux2014-x64 manylinux2014-x86 \
|
2021-09-20 12:55:18 +02:00
|
|
|
manylinux2014-aarch64 linux-arm64-lts \
|
2023-03-29 11:38:51 +02:00
|
|
|
web-wasm web-wasi linux-mips linux-mips-uclibc linux-mips-lts windows-arm64 windows-armv7 \
|
2021-08-04 14:17:15 +02:00
|
|
|
windows-static-x86 windows-static-x64 windows-static-x64-posix \
|
|
|
|
windows-shared-x86 windows-shared-x64 windows-shared-x64-posix \
|
2022-05-16 16:45:38 +02:00
|
|
|
linux-armv7 linux-armv7a linux-armv7l-musl linux-armv7-lts linux-armv7a-lts linux-x86_64-full \
|
2022-04-22 15:18:28 +02:00
|
|
|
linux-armv6 linux-armv6-lts linux-armv6-musl linux-mipsel-lts \
|
2023-09-21 23:56:23 +02:00
|
|
|
linux-armv5 linux-armv5-musl linux-armv5-uclibc linux-ppc64le linux-ppc64le-lts linux-s390x \
|
2022-03-31 09:58:31 +02:00
|
|
|
linux-riscv64 linux-riscv32 linux-m68k-uclibc linux-x64-tinycc linux-xtensa-uclibc \
|
|
|
|
bare-armv7emhf-nano_newlib
|
2021-06-29 08:04:41 +02:00
|
|
|
|
2017-04-26 21:21:27 +02:00
|
|
|
GEN_IMAGE_DOCKERFILES = $(addsuffix /Dockerfile,$(GEN_IMAGES))
|
2016-09-25 23:44:08 +02:00
|
|
|
|
2016-09-26 01:04:07 +02:00
|
|
|
# These images are expected to have explicit rules for *both* build and testing
|
2023-07-08 01:58:13 +02:00
|
|
|
NON_STANDARD_IMAGES := manylinux_2_28-x64 manylinux2014-x64 manylinux2014-x86 \
|
2021-08-20 14:44:22 +02:00
|
|
|
manylinux2014-aarch64 web-wasm
|
2016-09-26 01:04:07 +02:00
|
|
|
|
2021-06-29 19:10:34 +02:00
|
|
|
# Docker composite files
|
2022-07-05 17:45:51 +02:00
|
|
|
DOCKER_COMPOSITE_SOURCES = common.docker common.debian common.manylinux2014 common.manylinux_2_28 common.buildroot \
|
2022-01-02 03:40:22 +01:00
|
|
|
common.crosstool common.webassembly common.windows common-manylinux.crosstool common.dockcross \
|
|
|
|
common.label-and-env
|
2021-06-29 19:10:34 +02:00
|
|
|
DOCKER_COMPOSITE_FOLDER_PATH = common/
|
|
|
|
DOCKER_COMPOSITE_PATH = $(addprefix $(DOCKER_COMPOSITE_FOLDER_PATH),$(DOCKER_COMPOSITE_SOURCES))
|
2017-04-26 21:21:27 +02:00
|
|
|
|
2016-09-26 01:04:07 +02:00
|
|
|
# This list all available images
|
2023-07-08 01:58:13 +02:00
|
|
|
IMAGES := $(STANDARD_IMAGES) $(NON_STANDARD_IMAGES)
|
2014-10-17 13:42:56 +02:00
|
|
|
|
2016-09-26 00:38:26 +02:00
|
|
|
# Optional arguments for test runner (test/run.py) associated with "testing implicit rule"
|
2021-08-04 14:17:15 +02:00
|
|
|
linux-x64-tinycc.test_ARGS = --languages C
|
2019-02-28 10:41:52 +01:00
|
|
|
windows-static-x86.test_ARGS = --exe-suffix ".exe"
|
|
|
|
windows-static-x64.test_ARGS = --exe-suffix ".exe"
|
|
|
|
windows-static-x64-posix.test_ARGS = --exe-suffix ".exe"
|
|
|
|
windows-shared-x86.test_ARGS = --exe-suffix ".exe"
|
|
|
|
windows-shared-x64.test_ARGS = --exe-suffix ".exe"
|
|
|
|
windows-shared-x64-posix.test_ARGS = --exe-suffix ".exe"
|
2023-08-06 19:14:26 +02:00
|
|
|
windows-armv7.test_ARGS = --exe-suffix ".exe"
|
|
|
|
windows-arm64.test_ARGS = --exe-suffix ".exe"
|
2022-03-31 09:58:31 +02:00
|
|
|
bare-armv7emhf-nano_newlib.test_ARGS = --linker-flags="--specs=nosys.specs"
|
2016-09-26 00:03:28 +02:00
|
|
|
|
2016-11-29 02:01:39 +01:00
|
|
|
# On CircleCI, do not attempt to delete container
|
|
|
|
# See https://circleci.com/docs/docker-btrfs-error/
|
2016-11-29 05:39:38 +01:00
|
|
|
RM = --rm
|
2016-11-29 02:01:39 +01:00
|
|
|
ifeq ("$(CIRCLECI)", "true")
|
2016-11-29 05:39:38 +01:00
|
|
|
RM =
|
2016-11-29 02:01:39 +01:00
|
|
|
endif
|
|
|
|
|
2018-12-17 04:42:19 +01:00
|
|
|
# Tag images with date and Git short hash in addition to revision
|
2020-10-21 01:18:43 +02:00
|
|
|
TAG := $(shell date '+%Y%m%d')-$(shell git rev-parse --short HEAD)
|
2018-12-17 04:42:19 +01:00
|
|
|
|
2021-08-03 00:47:26 +02:00
|
|
|
# shellcheck executable
|
|
|
|
SHELLCHECK := shellcheck
|
|
|
|
|
|
|
|
# Defines the level of verification (error, warning, info...)
|
|
|
|
SHELLCHECK_SEVERITY_LEVEL := error
|
|
|
|
|
2016-09-26 00:38:26 +02:00
|
|
|
#
|
2016-09-26 05:28:23 +02:00
|
|
|
# images: This target builds all IMAGES (because it is the first one, it is built by default)
|
2016-09-26 00:38:26 +02:00
|
|
|
#
|
2016-09-26 05:28:23 +02:00
|
|
|
images: base $(IMAGES)
|
2016-07-16 07:27:13 +02:00
|
|
|
|
2016-09-26 00:38:26 +02:00
|
|
|
#
|
|
|
|
# test: This target ensures all IMAGES are built and run the associated tests
|
|
|
|
#
|
2016-09-26 05:28:23 +02:00
|
|
|
test: base.test $(addsuffix .test,$(IMAGES))
|
2016-07-16 07:17:36 +02:00
|
|
|
|
2017-04-26 21:21:27 +02:00
|
|
|
#
|
|
|
|
# Generic Targets (can specialize later).
|
|
|
|
#
|
|
|
|
|
2021-06-29 19:10:34 +02:00
|
|
|
$(GEN_IMAGE_DOCKERFILES) Dockerfile: %Dockerfile: %Dockerfile.in $(DOCKER_COMPOSITE_PATH)
|
2017-04-26 21:21:27 +02:00
|
|
|
sed \
|
2021-06-29 19:10:34 +02:00
|
|
|
-e '/common.docker/ r $(DOCKER_COMPOSITE_FOLDER_PATH)common.docker' \
|
|
|
|
-e '/common.debian/ r $(DOCKER_COMPOSITE_FOLDER_PATH)common.debian' \
|
2022-07-05 17:45:51 +02:00
|
|
|
-e '/common.manylinux_2_28/ r $(DOCKER_COMPOSITE_FOLDER_PATH)common.manylinux_2_28' \
|
2022-06-22 01:22:47 +02:00
|
|
|
-e '/common.manylinux2014/ r $(DOCKER_COMPOSITE_FOLDER_PATH)common.manylinux2014' \
|
2021-06-29 19:10:34 +02:00
|
|
|
-e '/common.crosstool/ r $(DOCKER_COMPOSITE_FOLDER_PATH)common.crosstool' \
|
2021-08-08 03:52:31 +02:00
|
|
|
-e '/common.buildroot/ r $(DOCKER_COMPOSITE_FOLDER_PATH)common.buildroot' \
|
2021-06-29 19:10:34 +02:00
|
|
|
-e '/common-manylinux.crosstool/ r $(DOCKER_COMPOSITE_FOLDER_PATH)common-manylinux.crosstool' \
|
2022-01-02 03:40:22 +01:00
|
|
|
-e '/common.webassembly/ r $(DOCKER_COMPOSITE_FOLDER_PATH)common.webassembly' \
|
2021-06-29 19:10:34 +02:00
|
|
|
-e '/common.windows/ r $(DOCKER_COMPOSITE_FOLDER_PATH)common.windows' \
|
|
|
|
-e '/common.dockcross/ r $(DOCKER_COMPOSITE_FOLDER_PATH)common.dockcross' \
|
|
|
|
-e '/common.label-and-env/ r $(DOCKER_COMPOSITE_FOLDER_PATH)common.label-and-env' \
|
2017-04-26 21:21:27 +02:00
|
|
|
$< > $@
|
|
|
|
|
2016-09-26 00:38:26 +02:00
|
|
|
#
|
2019-01-19 22:02:33 +01:00
|
|
|
# web-wasm
|
2016-09-26 00:38:26 +02:00
|
|
|
#
|
2019-01-19 22:02:33 +01:00
|
|
|
web-wasm: web-wasm/Dockerfile
|
2016-11-25 21:51:38 +01:00
|
|
|
mkdir -p $@/imagefiles && cp -r imagefiles $@/
|
2019-01-19 22:02:33 +01:00
|
|
|
cp -r test web-wasm/
|
2024-03-26 03:28:04 +01:00
|
|
|
$(DOCKER) $(BUILD_CMD) -t $(ORG)/web-wasm:$(TAG) \
|
2022-11-04 13:45:37 +01:00
|
|
|
-t $(ORG)/web-wasm:latest \
|
2019-01-19 22:02:33 +01:00
|
|
|
--build-arg IMAGE=$(ORG)/web-wasm \
|
2022-11-04 13:45:37 +01:00
|
|
|
--build-arg VERSION=$(TAG) \
|
2016-10-31 04:57:04 +01:00
|
|
|
--build-arg VCS_REF=`git rev-parse --short HEAD` \
|
|
|
|
--build-arg VCS_URL=`git config --get remote.origin.url` \
|
|
|
|
--build-arg BUILD_DATE=`date -u +"%Y-%m-%dT%H:%M:%SZ"` \
|
2019-01-19 22:02:33 +01:00
|
|
|
web-wasm
|
|
|
|
rm -rf web-wasm/test
|
2016-11-25 21:51:38 +01:00
|
|
|
rm -rf $@/imagefiles
|
2015-05-19 23:34:05 +02:00
|
|
|
|
2019-01-19 22:02:33 +01:00
|
|
|
web-wasm.test: web-wasm
|
|
|
|
cp -r test web-wasm/
|
2022-11-04 13:45:37 +01:00
|
|
|
$(DOCKER) run $(RM) $(ORG)/web-wasm:latest > $(BIN)/dockcross-web-wasm && chmod +x $(BIN)/dockcross-web-wasm
|
|
|
|
$(BIN)/dockcross-web-wasm -i $(ORG)/web-wasm:latest python test/run.py --exe-suffix ".js"
|
2019-01-19 22:02:33 +01:00
|
|
|
rm -rf web-wasm/test
|
2016-07-16 08:45:23 +02:00
|
|
|
|
2021-08-20 14:44:22 +02:00
|
|
|
#
|
|
|
|
# manylinux2014-aarch64
|
|
|
|
#
|
|
|
|
manylinux2014-aarch64: manylinux2014-aarch64/Dockerfile
|
|
|
|
@# Register qemu
|
|
|
|
docker run --rm --privileged hypriot/qemu-register
|
|
|
|
@# Get libstdc++ from quay.io/pypa/manylinux2014_aarch64 container
|
|
|
|
docker run -v `pwd`:/host --rm -e LIB_PATH=/host/$@/xc_script/ quay.io/pypa/manylinux2014_aarch64 bash -c "PASS=1 /host/$@/xc_script/docker_setup_scrpits/copy_libstd.sh"
|
|
|
|
mkdir -p $@/imagefiles && cp -r imagefiles $@/
|
2022-11-04 13:45:37 +01:00
|
|
|
$(DOCKER) build -t $(ORG)/manylinux2014-aarch64:$(TAG) \
|
|
|
|
-t $(ORG)/manylinux2014-aarch64:latest \
|
2021-08-20 14:44:22 +02:00
|
|
|
--build-arg IMAGE=$(ORG)/manylinux2014-aarch64 \
|
2022-11-04 13:45:37 +01:00
|
|
|
--build-arg VERSION=$(TAG) \
|
2021-08-20 14:44:22 +02:00
|
|
|
--build-arg VCS_REF=`git rev-parse --short HEAD` \
|
|
|
|
--build-arg VCS_URL=`git config --get remote.origin.url` \
|
|
|
|
--build-arg BUILD_DATE=`date -u +"%Y-%m-%dT%H:%M:%SZ"` \
|
|
|
|
-f manylinux2014-aarch64/Dockerfile .
|
|
|
|
rm -rf $@/imagefiles
|
|
|
|
@# libstdc++ is coppied into image, now remove it
|
|
|
|
docker run -v `pwd`:/host --rm quay.io/pypa/manylinux2014_aarch64 bash -c "rm -rf /host/$@/xc_script/usr"
|
|
|
|
|
|
|
|
manylinux2014-aarch64.test: manylinux2014-aarch64
|
2022-11-04 13:45:37 +01:00
|
|
|
$(DOCKER) run $(RM) $(ORG)/manylinux2014-aarch64:latest > $(BIN)/dockcross-manylinux2014-aarch64 \
|
2021-08-20 14:44:22 +02:00
|
|
|
&& chmod +x $(BIN)/dockcross-manylinux2014-aarch64
|
2022-11-04 13:45:37 +01:00
|
|
|
$(BIN)/dockcross-manylinux2014-aarch64 -i $(ORG)/manylinux2014-aarch64:latest /opt/python/cp38-cp38/bin/python test/run.py
|
2021-08-20 14:44:22 +02:00
|
|
|
|
2022-06-22 01:23:22 +02:00
|
|
|
#
|
2022-07-05 17:45:51 +02:00
|
|
|
# manylinux_2_28-x64
|
2022-06-22 01:23:22 +02:00
|
|
|
#
|
2022-07-05 17:45:51 +02:00
|
|
|
manylinux_2_28-x64: manylinux_2_28-x64/Dockerfile
|
2022-06-22 01:23:22 +02:00
|
|
|
mkdir -p $@/imagefiles && cp -r imagefiles $@/
|
2022-11-04 13:45:37 +01:00
|
|
|
$(DOCKER) build -t $(ORG)/manylinux_2_28-x64:$(TAG) \
|
|
|
|
-t $(ORG)/manylinux_2_28-x64:latest \
|
2022-07-05 17:45:51 +02:00
|
|
|
--build-arg IMAGE=$(ORG)/manylinux_2_28-x64 \
|
2022-11-04 13:45:37 +01:00
|
|
|
--build-arg VERSION=$(TAG) \
|
2022-06-22 01:23:22 +02:00
|
|
|
--build-arg VCS_REF=`git rev-parse --short HEAD` \
|
|
|
|
--build-arg VCS_URL=`git config --get remote.origin.url` \
|
|
|
|
--build-arg BUILD_DATE=`date -u +"%Y-%m-%dT%H:%M:%SZ"` \
|
2022-07-05 17:45:51 +02:00
|
|
|
-f manylinux_2_28-x64/Dockerfile .
|
2022-06-22 01:23:22 +02:00
|
|
|
rm -rf $@/imagefiles
|
|
|
|
|
2022-07-05 17:45:51 +02:00
|
|
|
manylinux_2_28-x64.test: manylinux_2_28-x64
|
2022-11-04 13:45:37 +01:00
|
|
|
$(DOCKER) run $(RM) $(ORG)/manylinux_2_28-x64:latest > $(BIN)/dockcross-manylinux_2_28-x64 \
|
2022-07-05 17:45:51 +02:00
|
|
|
&& chmod +x $(BIN)/dockcross-manylinux_2_28-x64
|
2022-11-04 13:45:37 +01:00
|
|
|
$(BIN)/dockcross-manylinux_2_28-x64 -i $(ORG)/manylinux_2_28-x64:latest /opt/python/cp310-cp310/bin/python test/run.py
|
2022-06-22 01:23:22 +02:00
|
|
|
|
2019-12-17 15:00:47 +01:00
|
|
|
#
|
|
|
|
# manylinux2014-x64
|
|
|
|
#
|
|
|
|
manylinux2014-x64: manylinux2014-x64/Dockerfile
|
|
|
|
mkdir -p $@/imagefiles && cp -r imagefiles $@/
|
2022-11-04 13:45:37 +01:00
|
|
|
$(DOCKER) build -t $(ORG)/manylinux2014-x64:$(TAG) \
|
|
|
|
-t $(ORG)/manylinux2014-x64:latest \
|
2019-12-17 15:00:47 +01:00
|
|
|
--build-arg IMAGE=$(ORG)/manylinux2014-x64 \
|
2022-11-04 13:45:37 +01:00
|
|
|
--build-arg VERSION=$(TAG) \
|
2019-12-17 15:00:47 +01:00
|
|
|
--build-arg VCS_REF=`git rev-parse --short HEAD` \
|
|
|
|
--build-arg VCS_URL=`git config --get remote.origin.url` \
|
|
|
|
--build-arg BUILD_DATE=`date -u +"%Y-%m-%dT%H:%M:%SZ"` \
|
|
|
|
-f manylinux2014-x64/Dockerfile .
|
|
|
|
rm -rf $@/imagefiles
|
|
|
|
|
|
|
|
manylinux2014-x64.test: manylinux2014-x64
|
2022-11-04 13:45:37 +01:00
|
|
|
$(DOCKER) run $(RM) $(ORG)/manylinux2014-x64:latest > $(BIN)/dockcross-manylinux2014-x64 \
|
2021-08-04 14:21:05 +02:00
|
|
|
&& chmod +x $(BIN)/dockcross-manylinux2014-x64
|
2022-11-04 13:45:37 +01:00
|
|
|
$(BIN)/dockcross-manylinux2014-x64 -i $(ORG)/manylinux2014-x64:latest /opt/python/cp38-cp38/bin/python test/run.py
|
2019-12-17 15:00:47 +01:00
|
|
|
|
2020-07-05 01:44:27 +02:00
|
|
|
#
|
|
|
|
# manylinux2014-x86
|
|
|
|
#
|
|
|
|
manylinux2014-x86: manylinux2014-x86/Dockerfile
|
|
|
|
mkdir -p $@/imagefiles && cp -r imagefiles $@/
|
2022-11-04 13:45:37 +01:00
|
|
|
$(DOCKER) build -t $(ORG)/manylinux2014-x86:$(TAG) \
|
|
|
|
-t $(ORG)/manylinux2014-x86:latest \
|
2020-07-05 01:44:27 +02:00
|
|
|
--build-arg IMAGE=$(ORG)/manylinux2014-x86 \
|
2022-11-04 13:45:37 +01:00
|
|
|
--build-arg VERSION=$(TAG) \
|
2020-07-05 01:44:27 +02:00
|
|
|
--build-arg VCS_REF=`git rev-parse --short HEAD` \
|
|
|
|
--build-arg VCS_URL=`git config --get remote.origin.url` \
|
|
|
|
--build-arg BUILD_DATE=`date -u +"%Y-%m-%dT%H:%M:%SZ"` \
|
|
|
|
-f manylinux2014-x86/Dockerfile .
|
|
|
|
rm -rf $@/imagefiles
|
|
|
|
|
|
|
|
manylinux2014-x86.test: manylinux2014-x86
|
2022-11-04 13:45:37 +01:00
|
|
|
$(DOCKER) run $(RM) $(ORG)/manylinux2014-x86:latest > $(BIN)/dockcross-manylinux2014-x86 \
|
2021-08-04 14:21:05 +02:00
|
|
|
&& chmod +x $(BIN)/dockcross-manylinux2014-x86
|
2022-11-04 13:45:37 +01:00
|
|
|
$(BIN)/dockcross-manylinux2014-x86 -i $(ORG)/manylinux2014-x86:latest /opt/python/cp38-cp38/bin/python test/run.py
|
2020-07-05 01:44:27 +02:00
|
|
|
|
2022-07-05 17:45:51 +02:00
|
|
|
#
|
|
|
|
# base
|
|
|
|
#
|
2016-11-17 04:02:55 +01:00
|
|
|
base: Dockerfile imagefiles/
|
2017-08-27 05:48:47 +02:00
|
|
|
$(DOCKER) build -t $(ORG)/base:latest \
|
2021-06-25 15:21:18 +02:00
|
|
|
-t $(ORG)/base:$(TAG) \
|
2016-10-31 04:57:04 +01:00
|
|
|
--build-arg IMAGE=$(ORG)/base \
|
2021-03-12 00:07:07 +01:00
|
|
|
--build-arg VCS_URL=`git config --get remote.origin.url` \
|
|
|
|
.
|
2015-02-01 04:18:38 +01:00
|
|
|
|
2016-09-25 21:44:22 +02:00
|
|
|
base.test: base
|
2022-11-04 13:45:37 +01:00
|
|
|
$(DOCKER) run $(RM) $(ORG)/base:latest > $(BIN)/dockcross-base && chmod +x $(BIN)/dockcross-base
|
2016-07-16 08:45:23 +02:00
|
|
|
|
2016-09-26 01:46:49 +02:00
|
|
|
# display
|
|
|
|
#
|
2016-09-26 05:28:23 +02:00
|
|
|
display_images:
|
|
|
|
for image in $(IMAGES); do echo $$image; done
|
2016-09-26 01:46:49 +02:00
|
|
|
|
2016-09-26 05:28:23 +02:00
|
|
|
$(VERBOSE).SILENT: display_images
|
2016-09-26 01:46:49 +02:00
|
|
|
|
2016-09-26 00:38:26 +02:00
|
|
|
#
|
|
|
|
# build implicit rule
|
|
|
|
#
|
2017-04-26 21:21:27 +02:00
|
|
|
|
|
|
|
$(STANDARD_IMAGES): %: %/Dockerfile base
|
2016-11-25 21:51:38 +01:00
|
|
|
mkdir -p $@/imagefiles && cp -r imagefiles $@/
|
2017-08-27 05:48:47 +02:00
|
|
|
$(DOCKER) build -t $(ORG)/$@:latest \
|
2021-06-25 15:21:18 +02:00
|
|
|
-t $(ORG)/$@:$(TAG) \
|
2022-12-16 16:07:56 +01:00
|
|
|
--build-arg ORG=$(ORG) \
|
2016-10-31 04:57:04 +01:00
|
|
|
--build-arg IMAGE=$(ORG)/$@ \
|
2022-11-04 13:45:37 +01:00
|
|
|
--build-arg VERSION=$(TAG) \
|
2016-10-31 04:57:04 +01:00
|
|
|
--build-arg VCS_REF=`git rev-parse --short HEAD` \
|
|
|
|
--build-arg VCS_URL=`git config --get remote.origin.url` \
|
|
|
|
--build-arg BUILD_DATE=`date -u +"%Y-%m-%dT%H:%M:%SZ"` \
|
|
|
|
$@
|
2016-11-25 21:51:38 +01:00
|
|
|
rm -rf $@/imagefiles
|
2016-09-26 00:38:26 +02:00
|
|
|
|
2021-05-19 23:12:15 +02:00
|
|
|
clean:
|
2021-08-04 14:40:29 +02:00
|
|
|
for d in $(IMAGES) ; do rm -rf $$d/imagefiles ; done
|
|
|
|
for d in $(IMAGES) ; do rm -rf $(BIN)/dockcross-$$d ; done
|
2021-06-29 19:10:34 +02:00
|
|
|
for d in $(GEN_IMAGE_DOCKERFILES) ; do rm -f $$d ; done
|
2021-05-19 23:12:15 +02:00
|
|
|
rm -f Dockerfile
|
|
|
|
|
2021-06-25 15:21:18 +02:00
|
|
|
purge: clean
|
|
|
|
# Remove all untagged images
|
2021-08-04 14:33:15 +02:00
|
|
|
$(DOCKER) container ls -aq | xargs -r $(DOCKER) container rm -f
|
2021-06-25 15:21:18 +02:00
|
|
|
# Remove all images with organization (ex dockcross/*)
|
|
|
|
$(DOCKER) images --filter=reference='$(ORG)/*' --format='{{.Repository}}:{{.Tag}}' | xargs -r $(DOCKER) rmi -f
|
|
|
|
|
2021-08-03 00:47:26 +02:00
|
|
|
# Check bash syntax
|
|
|
|
bash-check:
|
|
|
|
find . -type f \( -name "*.sh" -o -name "*.bash" \) -print0 | xargs -0 -P"$(shell nproc)" -I{} \
|
2021-08-08 20:45:36 +02:00
|
|
|
$(SHELLCHECK) --check-sourced --color=auto --format=gcc --severity=warning --shell=bash --enable=all "{}"
|
2021-08-03 00:47:26 +02:00
|
|
|
|
2016-09-26 00:38:26 +02:00
|
|
|
#
|
|
|
|
# testing implicit rule
|
|
|
|
#
|
|
|
|
.SECONDEXPANSION:
|
|
|
|
$(addsuffix .test,$(STANDARD_IMAGES)): $$(basename $$@)
|
2022-11-04 13:45:37 +01:00
|
|
|
$(DOCKER) run $(RM) $(ORG)/$(basename $@):latest > $(BIN)/dockcross-$(basename $@) \
|
2021-08-04 14:21:05 +02:00
|
|
|
&& chmod +x $(BIN)/dockcross-$(basename $@)
|
2022-11-04 13:45:37 +01:00
|
|
|
$(BIN)/dockcross-$(basename $@) -i $(ORG)/$(basename $@):latest python3 test/run.py $($@_ARGS)
|
2016-09-26 00:38:26 +02:00
|
|
|
|
2016-09-26 06:21:16 +02:00
|
|
|
#
|
|
|
|
# testing prerequisites implicit rule
|
|
|
|
#
|
|
|
|
test.prerequisites:
|
|
|
|
mkdir -p $(BIN)
|
|
|
|
|
2016-09-26 17:38:43 +02:00
|
|
|
$(addsuffix .test,base $(IMAGES)): test.prerequisites
|
2016-09-26 06:21:16 +02:00
|
|
|
|
2021-08-04 14:33:15 +02:00
|
|
|
.PHONY: base images $(IMAGES) test %.test clean purge bash-check display_images
|