Test decentralized

This commit is contained in:
2026-07-14 17:21:06 +02:00
parent 79e54f909a
commit a553432acd
99 changed files with 2003 additions and 1974 deletions
+9 -9
View File
@@ -1,7 +1,7 @@
name: 'Close stale issues and PRs' name: 'Close stale issues and PRs'
on: on:
schedule: schedule:
- cron: '0 */8 * * *' - cron: '0 */12 * * *'
jobs: jobs:
stale: stale:
runs-on: ubuntu-latest runs-on: ubuntu-latest
@@ -12,11 +12,11 @@ jobs:
exempt-issue-milestones: 'future,alpha,beta,release,bugfix,improvement,enhancement,help wanted' exempt-issue-milestones: 'future,alpha,beta,release,bugfix,improvement,enhancement,help wanted'
exempt-pr-milestones: 'bugfix,improvement,enhancement,help wanted' exempt-pr-milestones: 'bugfix,improvement,enhancement,help wanted'
exempt-all-pr-assignees: true exempt-all-pr-assignees: true
stale-issue-message: 'This issue is stale because it has been open 120 days with no activity. Remove stale label or comment or this will be closed in 30 days.' stale-issue-message: 'This issue is stale because it has been open 240 days with no activity. Remove stale label or comment or this will be closed in 90 days.'
stale-pr-message: 'This PR is stale because it has been open 120 days with no activity. Remove stale label or comment or this will be closed in 30 days.' stale-pr-message: 'This PR is stale because it has been open 240 days with no activity. Remove stale label or comment or this will be closed in 90 days.'
close-issue-message: 'This issue was closed because it has been stalled for 30 days with no activity.' close-issue-message: 'This issue was closed because it has been stale for 90 days with no activity.'
close-pr-message: 'This PR was closed because it has been stalled for 30 days with no activity.' close-pr-message: 'This PR was closed because it has been stale for 90 days with no activity.'
days-before-issue-stale: 120 days-before-issue-stale: 240
days-before-pr-stale: 120 days-before-pr-stale: 240
days-before-issue-close: 30 days-before-issue-close: 90
days-before-pr-close: 30 days-before-pr-close: 90
+105 -1444
View File
File diff suppressed because it is too large Load Diff
+1
View File
@@ -1,4 +1,5 @@
bin bin
.dockcross-test-cache
dockcross dockcross
dockcross-* dockcross-*
build build
+3
View File
@@ -0,0 +1,3 @@
{
"python-envs.defaultEnvManager": "ms-python.python:system"
}
+72 -46
View File
@@ -198,39 +198,51 @@ Once this part is finished, there must be 3 files in the `linux-arm64` folder:
### Makefile ### Makefile
For this last part, we will see how to add the image to the [Makefile](Makefile) and to a github action. The [Makefile](Makefile) is generic: it knows how to generate/build/test/push
an image out of a "preset" directory, but it has no built-in knowledge of the
actual list of dockcross images. Every image folder is a preset that is
auto-discovered because it contains a `preset.mk` file - there is no central
list to edit anymore.
You need to add the image/folder name (**linux-arm64**) to the **STANDARD_IMAGES** variable in the [Makefile](Makefile): To add the image to the build system, create **`linux-arm64/preset.mk`**:
```make ```make
# These images are built using the "build implicit rule" BASE_IMAGE_REGISTRY ?= docker.io
STANDARD_IMAGES = android-arm android-arm64 android-x86 android-x86_64 \ BASE_IMAGE_PATH ?= dockcross
linux-x86 linux-x64 linux-x64-clang linux-arm64 linux-arm64-musl linux-arm64-full \ BASE_IMAGE_NAME = base
linux-armv5 linux-armv5-musl linux-armv5-uclibc linux-m68k-uclibc linux-s390x linux-x64-tinycc \ BASE_IMAGE_TAG = latest
linux-armv6 linux-armv6-lts linux-armv6-musl linux-arm64-lts \
linux-armv7l-musl linux-armv7 linux-armv7a linux-armv7-lts linux-x86_64-full \ OUTPUT_IMAGE_REGISTRY ?= docker.io
linux-mips linux-ppc64le linux-riscv64 linux-riscv32 linux-xtensa-uclibc \ OUTPUT_IMAGE_PATH ?= dockcross
web-wasi \ OUTPUT_IMAGE_NAME = linux-arm64
windows-static-x86 windows-static-x64 windows-static-x64-posix windows-armv7 \
windows-shared-x86 windows-shared-x64 windows-shared-x64-posix windows-arm64
``` ```
You need to add the image/folder name (`linux-arm64`) to the `GEN_IMAGES` variable in the [Makefile](Makefile): `BASE_IMAGE_NAME = base` / `BASE_IMAGE_TAG = latest` matches the common case
where `Dockerfile.in` starts with `ARG ORG=dockcross` / `FROM ${ORG}/base:latest`
(the image is built on top of the local `base` preset). `OUTPUT_IMAGE_NAME`
should match the folder name so the built image is tagged
`<registry>/<path>/linux-arm64`.
```make A `preset.mk` can override or add anything the generic Makefile doesn't
# Generated Dockerfiles. already do the right thing for, for example:
GEN_IMAGES = android-arm android-arm64 \
linux-x86 linux-x64 linux-x64-clang linux-arm64 linux-arm64-musl linux-arm64-full \ - `TEST_IMAGE_CMD` / `TEST_IMAGE_ARGS`: override the command run by `make
manylinux2014-x64 manylinux2014-x86 \ <image>.test` (defaults to `python3 test/run.py`). E.g. an image that only
manylinux2014-aarch64 linux-arm64-lts \ supports C needs `TEST_IMAGE_ARGS = --languages C`.
web-wasm web-wasi linux-mips windows-arm64 windows-armv7 \ - `BUILD_CONTEXT_DIR`: override the docker build context directory. Defaults
windows-static-x86 windows-static-x64 windows-static-x64-posix \ to the preset's own folder; a few images (the manylinux\*-aarch64/x64/x86
windows-shared-x86 windows-shared-x64 windows-shared-x64-posix \ family) `COPY` files from sibling folders and need
linux-armv7 linux-armv7a linux-armv7l-musl linux-armv7-lts linux-x86_64-full \ `BUILD_CONTEXT_DIR = $(PRESET_DIR)` (the repository root) instead.
linux-armv6 linux-armv6-lts linux-armv6-musl \ - `DEPENDS_ON`: list of `<preset>.build` targets that must be built first,
linux-armv5 linux-armv5-musl linux-armv5-uclibc linux-ppc64le linux-s390x \ for images whose `Dockerfile.in` is `FROM ${ORG}/<other-image>:latest`
linux-riscv64 linux-riscv32 linux-m68k-uclibc linux-x64-tinycc linux-xtensa-uclibc (e.g. `manylinux2014-aarch64` depends on `manylinux2014-x64`).
``` - `EXTRA_BUILD_ARGS`: extra `--build-arg KEY=VALUE` flags.
- `STATIC_DOCKERFILE = yes`: for the rare image that ships a committed
`Dockerfile` instead of a generated `Dockerfile.in`.
See [linux-arm64/preset.mk](linux-arm64/preset.mk) and, for the more
involved cases, [manylinux2014-aarch64/preset.mk](manylinux2014-aarch64/preset.mk)
or [web-wasm/preset.mk](web-wasm/preset.mk).
### Image building and testing ### Image building and testing
@@ -268,27 +280,41 @@ With CMake + Ninja:
### CI (github action) ### CI (github action)
To finish, you have to add to `.github/workflows/main.yml` the image/folder name: To finish, you have to add the image/folder name to the `images` job's matrix
in `.github/workflows/main.yml`:
```yml ```yml
# Linux arm64/armv8 images # Linux arm64/armv8 images
- { - { image: "linux-arm64", multiarch: "yes" }
image: "linux-arm64",
stockfish: "yes",
stockfish_arg: "ARCH=armv8",
ninja: "yes",
ninja_arg: "",
openssl: "yes",
openssl_arg: "linux-aarch64",
C: "yes",
C_arg: "",
C-Plus-Plus: "yes",
C-Plus-Plus_arg: "",
fmt: "yes",
fmt_arg: "",
cpython: "yes",
cpython_arg: "--host=aarch64-unknown-linux-gnu --target=aarch64-unknown-linux-gnu",
}
``` ```
You can disable and enable the build of certain tests which can cause problems with certain CPU architectures (eg. OpenSSL with Risc-V...). `multiarch: "yes"` is only for the handful of images that are natively built
and published for both amd64 and arm64 (see `deploy-multi-arch-images` in the
same file); everything else should leave it empty.
That's the only thing the CI workflow needs to know. It builds the image with
`make <image>`, runs the fast in-container smoke test with `make
<image>.test`, and then `make <image>.test-extra` - which builds a handful of
real upstream projects (Stockfish, CMake, OpenSSL, CPython, ...) with the
image's toolchain. Which of those extra tests apply to this image and their
architecture-specific flags are **not** set in the workflow: they belong in
the image's own `preset.mk`, e.g.:
```make
EXTRA_TESTS = stockfish ninja openssl SQLite fmt cpython
STOCKFISH_ARGS = ARCH=armv8
OPENSSL_ARGS = linux-aarch64
CPYTHON_ARGS = --host=aarch64-unknown-linux-gnu --target=aarch64-unknown-linux-gnu
```
What each extra test actually clones and builds is defined once in the
[Makefile](Makefile) ("Extra tests" section) so it stays identical across
every image. You can run any of them locally, the same way CI does:
```bash
make linux-arm64.test-extra # everything EXTRA_TESTS lists
make linux-arm64.test-stockfish # one test directly, regardless of EXTRA_TESTS
```
Leave `EXTRA_TESTS` unset for images where a given upstream project doesn't
build (e.g. OpenSSL on some RISC-V targets).
+2 -2
View File
@@ -1,5 +1,5 @@
ARG DOCKER_IMAGE=debian:bookworm-slim ARG BASE_IMAGE=debian:bookworm-slim
FROM $DOCKER_IMAGE FROM $BASE_IMAGE
LABEL maintainer="Matt McCormick matt@mmmccormick.com" LABEL maintainer="Matt McCormick matt@mmmccormick.com"
+377 -397
View File
@@ -1,440 +1,420 @@
# ==============================================================================
# Preset detection
# ==============================================================================
PRESET_DIR ?= .
# HOST_ARCH := $(or $(HOST_ARCH), $(shell uname -m | sed -e 's/x86_64/amd64/' -e 's/aarch64/arm64/'))
# Parameters
#
# Name of the docker-equivalent executable for building images. preset-path = $(if $(filter base,$(1)),$(PRESET_DIR),$(PRESET_DIR)/$(1))
# OCI: open container interface.
# Common values: docker, podman, buildah
DOCKER := $(or $(OCI_EXE), docker)
BUILD_DOCKER := $(or $(BUILD_DOCKER), $(DOCKER))
MANIFEST_TOOL := $(or $(MANIFEST_TOOL_EXE), manifest-tool)
RM = --rm
# Name of the docker-equivalent executable for running test containers. build-context-dir = $(if $(BUILD_CONTEXT_DIR),$(BUILD_CONTEXT_DIR),$(call preset-path,$(1)))
# Supports the use case:
#
# DOCKER=buildah
# TEST_DOCKER=podman
#
# because buildah does not run containers.
TEST_DOCKER := $(or $(TEST_DOCKER), $(DOCKER))
# The build sub-command. Use: PRESET_FILES := $(shell find $(PRESET_DIR) -name .git -prune -o -mindepth 2 -name "preset.mk" -print)
# ALL_PRESETS := base $(patsubst $(PRESET_DIR)/%/preset.mk,%,$(PRESET_FILES))
# export "BUILD_CMD=buildx build --platform linux/amd64,linux/arm64"
#
# to generate multi-platform images.
BUILD_CMD := $(or $(BUILD_CMD), build)
TAG_FLAG := $(or $(TAG_FLAG), --tag)
# Docker organization to pull the images from CURRENT_TARGET_NAME := $(firstword $(MAKECMDGOALS))
ORG = dockcross
# Host architecture POSSIBLE_PRESET := $(basename $(CURRENT_TARGET_NAME))
HOST_ARCH := $(or $(HOST_ARCH), $(shell uname -m | sed -e 's/x86_64/amd64/' -e 's/aarch64/arm64/'))
# Directory where to generate the dockcross script for each images (e.g bin/dockcross-manylinux2014-x64) ifeq ($(POSSIBLE_PRESET),base)
BIN = ./bin -include $(PRESET_DIR)/preset.mk
else ifneq ($(wildcard $(PRESET_DIR)/$(POSSIBLE_PRESET)/preset.mk),)
# These images are built using the "build implicit rule" include $(PRESET_DIR)/$(POSSIBLE_PRESET)/preset.mk
STANDARD_IMAGES := android-arm android-arm64 android-x86 android-x86_64 \
linux-i686 linux-x86 linux-x64 linux-x64-clang linux-arm64-musl linux-arm64-full \
linux-armv5 linux-armv5-musl linux-armv5-uclibc linux-m68k-uclibc linux-s390x linux-x64-tinycc \
linux-armv6 linux-armv6-lts linux-armv6-musl linux-arm64-lts linux-mipsel-lts \
linux-armv7l-musl linux-armv7 linux-armv7a linux-armv7-lts linux-armv7a-lts linux-x86_64-full \
linux-loongarch64 linux-mips linux-mips-uclibc linux-mips-lts \
linux-ppc linux-ppc64le linux-ppc64le-lts linux-riscv64 linux-riscv32 linux-xtensa-uclibc \
windows-static-x86 windows-static-x64 windows-static-x64-posix windows-armv7 \
windows-shared-x86 windows-shared-x64 windows-shared-x64-posix windows-arm64 \
bare-armv7emhf-nano_newlib
# Generated Dockerfiles.
GEN_IMAGES := android-arm android-arm64 \
linux-i686 linux-x86 linux-x64 linux-x64-clang linux-arm64 linux-arm64-musl linux-arm64-full \
manylinux_2_28-x64 manylinux_2_34-x64 \
manylinux2014-x64 manylinux2014-x86 \
manylinux2014-aarch64 manylinux_2_28-aarch64 manylinux_2_34-aarch64 linux-arm64-lts \
web-wasm web-wasi web-wasi-emulated-threads web-wasi-threads \
linux-loongarch64 linux-mips linux-mips-uclibc linux-mips-lts windows-arm64 windows-armv7 \
windows-static-x86 windows-static-x64 windows-static-x64-posix \
windows-shared-x86 windows-shared-x64 windows-shared-x64-posix \
linux-armv7 linux-armv7a linux-armv7l-musl linux-armv7-lts linux-armv7a-lts linux-x86_64-full \
linux-armv6 linux-armv6-lts linux-armv6-musl linux-mipsel-lts \
linux-armv5 linux-armv5-musl linux-armv5-uclibc linux-ppc linux-ppc64le linux-ppc64le-lts linux-s390x \
linux-riscv64 linux-riscv32 linux-m68k-uclibc linux-x64-tinycc linux-xtensa-uclibc \
bare-armv7emhf-nano_newlib
# Generate both amd64 and arm64 images
MULTIARCH_IMAGES := linux-arm64 \
web-wasi web-wasi-emulated-threads
GEN_IMAGE_DOCKERFILES = $(addsuffix /Dockerfile,$(GEN_IMAGES))
# These images are expected to have explicit rules for *both* build and testing
NON_STANDARD_IMAGES := manylinux_2_28-x64 manylinux_2_34-x64 manylinux2014-x64 manylinux2014-x86 \
manylinux2014-aarch64 manylinux_2_28-aarch64 manylinux_2_34-aarch64 web-wasm web-wasi-emulated-threads web-wasi-threads
# Docker composite files
DOCKER_COMPOSITE_SOURCES = common.docker common.debian common.manylinux2014 common.manylinux_2_28 common.manylinux_2_34 common.buildroot \
common.crosstool common.webassembly common.windows common-manylinux.crosstool common-manylinux_2_28.crosstool common-manylinux_2_34.crosstool common.dockcross \
common.label-and-env
DOCKER_COMPOSITE_FOLDER_PATH = common/
DOCKER_COMPOSITE_PATH = $(addprefix $(DOCKER_COMPOSITE_FOLDER_PATH),$(DOCKER_COMPOSITE_SOURCES))
# This list all available images
IMAGES := $(STANDARD_IMAGES) $(NON_STANDARD_IMAGES) $(MULTIARCH_IMAGES)
# Optional arguments for test runner (test/run.py) associated with "testing implicit rule"
linux-x64-tinycc.test_ARGS = --languages C
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"
windows-armv7.test_ARGS = --exe-suffix ".exe"
windows-arm64.test_ARGS = --exe-suffix ".exe"
bare-armv7emhf-nano_newlib.test_ARGS = --linker-flags="--specs=nosys.specs"
# Tag images with date and Git short hash in addition to revision
TAG := $(shell date '+%Y%m%d')-$(shell git rev-parse --short HEAD)
# shellcheck executable
SHELLCHECK := shellcheck
# Defines the level of verification (error, warning, info...)
SHELLCHECK_SEVERITY_LEVEL := error
#
# images: This target builds all IMAGES (because it is the first one, it is built by default)
#
images: base $(IMAGES)
#
# test: This target ensures all IMAGES are built and run the associated tests
#
test: base.test $(addsuffix .test,$(IMAGES))
#
# Generic Targets (can specialize later).
#
$(GEN_IMAGE_DOCKERFILES) Dockerfile: %Dockerfile: %Dockerfile.in $(DOCKER_COMPOSITE_PATH)
sed $(foreach f,$(DOCKER_COMPOSITE_SOURCES),-e '/$(f)/ r $(DOCKER_COMPOSITE_FOLDER_PATH)$(f)') $< > $@
#
# web-wasm
#
ifeq ($(HOST_ARCH),amd64)
EMSCRIPTEN_HOST_ARCH_TAG = ""
endif endif
ifeq ($(HOST_ARCH),arm64)
EMSCRIPTEN_HOST_ARCH_TAG = "-arm64" # ==============================================================================
# Main config Makefile for Docker SDK Images
# ==============================================================================
AUTHOR ?= dockcross
WEB_SITE ?= dockcross.org
# Registries
BASE_IMAGE_REGISTRY ?= docker.io
BASE_IMAGE_PATH ?=
OUTPUT_IMAGE_REGISTRY ?= docker.io
OUTPUT_IMAGE_PATH ?= dockcross
# Docker Config
DOCKER_EXEC ?= docker
PROGRESS_OUTPUT ?= plain
PUSH_ON_BUILD ?= false
ifeq ($(PUSH_ON_BUILD),true)
DOCKER_DRIVER := --push
BUILD_IMAGE_ARGS += --sbom=true --provenance=true
BUILD_IMAGE_ARGS += --cache-from=type=registry,ref=$(OUTPUT_IMAGE_FINAL):cache
BUILD_IMAGE_ARGS += --cache-to=type=registry,ref=$(OUTPUT_IMAGE_FINAL):cache,mode=max
else
DOCKER_DRIVER := --load
endif endif
web-wasm: web-wasm/Dockerfile
mkdir -p $@/imagefiles && cp -r imagefiles $@/
cp -r test web-wasm/
$(BUILD_DOCKER) $(BUILD_CMD) $(TAG_FLAG) $(ORG)/web-wasm:$(TAG)-$(HOST_ARCH) \
$(TAG_FLAG) $(ORG)/web-wasm:latest-$(HOST_ARCH) \
--build-arg IMAGE=$(ORG)/web-wasm \
--build-arg VERSION=$(TAG) \
--build-arg HOST_ARCH_TAG=$(EMSCRIPTEN_HOST_ARCH_TAG) \
--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"` \
web-wasm
rm -rf web-wasm/test
rm -rf $@/imagefiles
web-wasm.test: web-wasm ARCH_LIST ?= linux/$(HOST_ARCH)
cp -r test web-wasm/ PLATFORMS ?= $(subst $(space),$(comma),$(strip $(ARCH_LIST)))
$(TEST_DOCKER) run $(RM) $(ORG)/web-wasm:latest-$(HOST_ARCH) > $(BIN)/dockcross-web-wasm && chmod +x $(BIN)/dockcross-web-wasm TMPFS_SIZE ?= 4g
$(BIN)/dockcross-web-wasm -i $(ORG)/web-wasm:latest-$(HOST_ARCH) python test/run.py --exe-suffix ".js"
rm -rf web-wasm/test
# DOCKER_BUILD_NETWORK ?= host
# web-wasi-threads
# # Folders
web-wasi-threads: web-wasi web-wasi-threads/Dockerfile COMMON_DIR ?= common
mkdir -p $@/imagefiles && cp -r imagefiles $@/ BIN_DIR ?= ./bin
cp -r test web-wasi-threads/ TEST_SCRATCH_DIR ?= ./.dockcross-test-cache
$(BUILD_DOCKER) $(BUILD_CMD) $(TAG_FLAG) $(ORG)/web-wasi-threads:$(TAG)-$(HOST_ARCH) \
-t $(ORG)/web-wasi-threads:latest-$(HOST_ARCH) \ EXTRA_TESTS ?=
--build-arg IMAGE=$(ORG)/web-wasi-threads \
--build-arg VERSION=$(TAG) \ ORG ?= $(OUTPUT_IMAGE_REGISTRY)/$(OUTPUT_IMAGE_PATH)
DOCKER_COMPOSITE_SOURCES = common.docker common.debian \
common.manylinux2014 common.manylinux_2_28 common.manylinux_2_34 \
common.buildroot common.crosstool common.webassembly common.windows \
common-manylinux.crosstool common-manylinux_2_28.crosstool common-manylinux_2_34.crosstool \
common.dockcross common.label-and-env
# RUN/TEST
TEST_IMAGE_CMD ?= python3 test/run.py
TEST_IMAGE_ARGS ?=
RUN_IMAGE_CMD ?= /bin/bash
RUN_IMAGE_ARGS ?=
BUILD_CONTEXT_DIR ?=
STATIC_DOCKERFILE ?= no
DEPENDS_ON ?= base.build
EXTRA_BUILD_ARGS ?=
BIND_HOST_DIR := $(shell pwd)
BIND_CONTAINER_DIR ?= /work
WORKDIR ?= /work
# Automatic variables
CURRENT_USER := $(shell whoami)
UID := $(shell id -u ${CURRENT_USER})
GID := $(shell id -g ${CURRENT_USER})
CURRENT_GROUP := $(shell id -gn ${CURRENT_USER})
BUILDER_ENV := -e BUILDER_UID=$(UID) -e BUILDER_GID=$(GID) -e BUILDER_USER=$(CURRENT_USER) -e BUILDER_GROUP=$(CURRENT_GROUP)
DATE := $(shell date -u +"%Y%m%d")
GIT_SHA := $(shell git rev-parse --short HEAD 2>/dev/null || echo nogit)
GIT_ORIGIN := $(shell git config --get remote.origin.url 2>/dev/null || echo unknown)
UUID := $(shell uuidgen)
TRIVY_IMAGE ?= aquasec/trivy:0.68.2
HADOLINT_IMAGE ?= hadolint/hadolint:v2.14.0
SHELLCHECK_IMAGE ?= koalaman/shellcheck:stable
# Tag images with date and Git short hash, mirroring the historical dockcross tagging scheme
TAG := $(DATE)-$(GIT_SHA)
comma := ,
space := $(subst ,, )
# ==============================================================================
# Presets logic
# ==============================================================================
PRESET_TARGETS := all help build test push pull generate scan lint update clean run inspect sbom script \
rebuild sign history cache check prepare-imagefiles test-extra
.PHONY: $(ALL_PRESETS)
.DEFAULT_GOAL := list
define BIND_PRESET_DEPENDENCIES
$(1).test: $(1).build
$(1).run: $(1).build
$(1).push: $(1).test
$(1).scan: $(1).build
$(1).lint: $(1).generate
$(1).sbom: $(1).build
$(1).inspect: $(1).build
$(1).history: $(1).build
$(1).script: $(1).build
endef
$(foreach p,$(ALL_PRESETS),$(eval $(call BIND_PRESET_DEPENDENCIES,$(p))))
# Generate final image names
ifeq ($(strip $(BASE_IMAGE_PATH)),)
BASE_IMAGE_FINAL := $(BASE_IMAGE_REGISTRY)/$(BASE_IMAGE_NAME)
else
BASE_IMAGE_FINAL := $(BASE_IMAGE_REGISTRY)/$(BASE_IMAGE_PATH)/$(BASE_IMAGE_NAME)
endif
OUTPUT_IMAGE_FINAL := $(ORG)/$(OUTPUT_IMAGE_NAME)
# ==============================================================================
# Mandatory variables check
# ==============================================================================
MANDATORY_VARS = BASE_IMAGE_NAME BASE_IMAGE_TAG OUTPUT_IMAGE_NAME OUTPUT_IMAGE_REGISTRY \
OUTPUT_IMAGE_PATH BASE_IMAGE_REGISTRY
# ==============================================================================
# Useful functions
# ==============================================================================
define docker-tags
$(OUTPUT_IMAGE_FINAL):latest \
$(OUTPUT_IMAGE_FINAL):latest-$(HOST_ARCH) \
$(OUTPUT_IMAGE_FINAL):$(TAG)
endef
define docker-push-tags
$(OUTPUT_IMAGE_FINAL):latest \
$(OUTPUT_IMAGE_FINAL):$(TAG)
endef
define docker-run-cmd
$(DOCKER_EXEC) run --rm $(1) $(BUILDER_ENV) \
--security-opt no-new-privileges \
--mount type=bind,source=$(BIND_HOST_DIR),target=$(BIND_CONTAINER_DIR) \
--workdir $(WORKDIR) \
--mount type=tmpfs,target=/tmp,tmpfs-mode=1777,tmpfs-size=$(TMPFS_SIZE) \
--platform $(firstword $(ARCH_LIST)) \
--name $(OUTPUT_IMAGE_NAME)-$(UUID) \
$(OUTPUT_IMAGE_FINAL):latest $(2) $(3)
endef
define extra-test-run
$(DOCKER_EXEC) run --rm $(BUILDER_ENV) \
--mount type=bind,source=$(abspath $(TEST_SCRATCH_DIR)/$(1)),target=/work \
--workdir /work \
--platform $(firstword $(ARCH_LIST)) \
$(OUTPUT_IMAGE_FINAL):latest bash -c "$(2)"
endef
# ==============================================================================
# Preset targets
# ==============================================================================
.PHONY: %.all %.generate %.build %.test %.run %.push %.pull %.scan %.clean %.prune %.update %.lint %.inspect %.sbom %.script %.prepare-imagefiles \
%.rebuild %.sign %.history %.cache %.check %.test-extra \
%.test-stockfish %.test-ninja %.test-openssl %.test-C %.test-SQLite %.test-llama_cpp \
%.test-fmt %.test-cpython %.test-raylib %.test-mbedtls %.test-libopencm3
$(ALL_PRESETS): %: %.build
%.all: %.update %.generate %.build %.test %.check %.push ;
.PHONY: %.guard
%.guard:
$(foreach v,$(MANDATORY_VARS), \
$(if $(strip $($(v))),, \
$(error Missing mandatory var: $(v) (preset=$*))))
%.generate: %.guard %.clean
ifeq ($(STATIC_DOCKERFILE),yes)
@test -f $(call preset-path,$*)/Dockerfile || \
(echo "Missing committed Dockerfile for $* (STATIC_DOCKERFILE=yes)" && exit 1)
else
@echo ">>> Generating Dockerfile for $*"
@sed $(foreach f,$(DOCKER_COMPOSITE_SOURCES),\
-e '/$(f)/ r $(COMMON_DIR)/$(f)') \
$(call preset-path,$*)/Dockerfile.in > $(call preset-path,$*)/Dockerfile
endif
%.prepare-imagefiles:
@ctx="$(call build-context-dir,$*)"; \
if [ "$$ctx" != "$(PRESET_DIR)" ]; then \
mkdir -p "$$ctx/imagefiles" && cp -r $(PRESET_DIR)/imagefiles/. "$$ctx/imagefiles/"; \
fi
%.build: %.generate %.prepare-imagefiles
@$(DOCKER_EXEC) image inspect $(BASE_IMAGE_FINAL):$(BASE_IMAGE_TAG) >/dev/null 2>&1 || \
{ $(foreach d,$(DEPENDS_ON),$(MAKE) $(d);) true; }
$(DOCKER_EXEC) buildx build $(call build-context-dir,$*) \
--file $(call preset-path,$*)/Dockerfile \
--network $(DOCKER_BUILD_NETWORK) \
--platform $(PLATFORMS) --progress $(PROGRESS_OUTPUT) \
$(foreach tag,$(call docker-tags),--tag $(tag)) \
--build-arg BUILD_DATE=$(DATE) \
--build-arg ORG=$(ORG) \
--build-arg HOST_ARCH=$(HOST_ARCH) \ --build-arg HOST_ARCH=$(HOST_ARCH) \
--build-arg VCS_REF=`git rev-parse --short HEAD` \ --build-arg IMAGE=$(ORG)/$(OUTPUT_IMAGE_NAME) \
--build-arg VCS_URL=`git config --get remote.origin.url` \
--build-arg BUILD_DATE=`date -u +"%Y-%m-%dT%H:%M:%SZ"` \
web-wasi-threads
#
# manylinux2014-aarch64
#
manylinux2014-aarch64: manylinux2014-aarch64/Dockerfile manylinux2014-x64
mkdir -p $@/imagefiles && cp -r imagefiles $@/
$(BUILD_DOCKER) $(BUILD_CMD) $(TAG_FLAG) $(ORG)/manylinux2014-aarch64:$(TAG) \
$(TAG_FLAG) $(ORG)/manylinux2014-aarch64:latest \
--build-arg IMAGE=$(ORG)/manylinux2014-aarch64 \
--build-arg VERSION=$(TAG) \ --build-arg VERSION=$(TAG) \
--build-arg VCS_REF=`git rev-parse --short HEAD` \ --build-arg VCS_REF=$(GIT_SHA) \
--build-arg VCS_URL=`git config --get remote.origin.url` \ --build-arg VCS_URL=$(GIT_ORIGIN) \
--build-arg BUILD_DATE=`date -u +"%Y-%m-%dT%H:%M:%SZ"` \ --build-arg AUTHOR=$(AUTHOR) \
-f manylinux2014-aarch64/Dockerfile . --build-arg URL=$(WEB_SITE) \
rm -rf $@/imagefiles --build-arg BASE_IMAGE=$(BASE_IMAGE_FINAL):$(BASE_IMAGE_TAG) \
--build-arg BASE_IMAGE_NAME=$(BASE_IMAGE_NAME) \
--build-arg BASE_IMAGE_TAG=$(BASE_IMAGE_TAG) \
$(EXTRA_BUILD_ARGS) \
$(BUILD_IMAGE_ARGS) $(DOCKER_DRIVER)
manylinux2014-aarch64.test: manylinux2014-aarch64 %.script: %.build
$(TEST_DOCKER) run $(RM) $(ORG)/manylinux2014-aarch64:latest > $(BIN)/dockcross-manylinux2014-aarch64 \ @mkdir -p $(BIN_DIR)
&& chmod +x $(BIN)/dockcross-manylinux2014-aarch64 $(DOCKER_EXEC) run --rm $(OUTPUT_IMAGE_FINAL):latest > $(BIN_DIR)/dockcross-$* && chmod +x $(BIN_DIR)/dockcross-$*
$(BIN)/dockcross-manylinux2014-aarch64 -i $(ORG)/manylinux2014-aarch64:latest /opt/python/cp311-cp311/bin/python test/run.py
# %.test: %.build %.script
# manylinux_2_28-aarch64 $(call docker-run-cmd,,$(TEST_IMAGE_CMD),$(TEST_IMAGE_ARGS))
#
manylinux_2_28-aarch64: manylinux_2_28-aarch64/Dockerfile manylinux_2_28-x64
mkdir -p $@/imagefiles && cp -r imagefiles $@/
$(BUILD_DOCKER) $(BUILD_CMD) $(TAG_FLAG) $(ORG)/manylinux_2_28-aarch64:$(TAG) \
$(TAG_FLAG) $(ORG)/manylinux_2_28-aarch64:latest \
--build-arg IMAGE=$(ORG)/manylinux_2_28-aarch64 \
--build-arg VERSION=$(TAG) \
--build-arg VCS_REF=`git rev-parse --short HEAD` \
--build-arg VCS_URL=`git config --get remote.origin.url` \
-f manylinux_2_28-aarch64/Dockerfile .
rm -rf $@/imagefiles
manylinux_2_28-aarch64.test: manylinux_2_28-aarch64 %.run: %.build
$(TEST_DOCKER) run $(RM) $(ORG)/manylinux_2_28-aarch64:latest > $(BIN)/dockcross-manylinux_2_28-aarch64 \ $(call docker-run-cmd,-it,$(RUN_IMAGE_CMD),$(RUN_IMAGE_ARGS))
&& chmod +x $(BIN)/dockcross-manylinux_2_28-aarch64
$(BIN)/dockcross-manylinux_2_28-aarch64 -i $(ORG)/manylinux_2_28-aarch64:latest /opt/python/cp311-cp311/bin/python test/run.py
# # ==============================================================================
# manylinux_2_34-aarch64 # Extra tests
# # ==============================================================================
manylinux_2_34-aarch64: manylinux_2_34-aarch64/Dockerfile manylinux_2_34-x64
mkdir -p $@/imagefiles && cp -r imagefiles $@/
$(BUILD_DOCKER) $(BUILD_CMD) $(TAG_FLAG) $(ORG)/manylinux_2_34-aarch64:$(TAG) \
$(TAG_FLAG) $(ORG)/manylinux_2_34-aarch64:latest \
--build-arg IMAGE=$(ORG)/manylinux_2_34-aarch64 \
--build-arg VERSION=$(TAG) \
--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 manylinux_2_34-aarch64/Dockerfile .
rm -rf $@/imagefiles
manylinux_2_34-aarch64.test: manylinux_2_34-aarch64 %.test-extra: %.build
$(TEST_DOCKER) run $(RM) $(ORG)/manylinux_2_34-aarch64:latest > $(BIN)/dockcross-manylinux_2_34-aarch64 \ @$(foreach t,$(EXTRA_TESTS),$(MAKE) $*.test-$(t);)
&& chmod +x $(BIN)/dockcross-manylinux_2_34-aarch64
$(BIN)/dockcross-manylinux_2_34-aarch64 -i $(ORG)/manylinux_2_34-aarch64:latest /opt/python/cp311-cp311/bin/python test/run.py
# %.test-stockfish: %.build
# manylinux_2_28-x64 rm -rf $(TEST_SCRATCH_DIR)/stockfish
# git clone --depth 1 --branch sf_17.1 https://github.com/official-stockfish/Stockfish.git $(TEST_SCRATCH_DIR)/stockfish
manylinux_2_28-x64: manylinux_2_28-x64/Dockerfile $(call extra-test-run,stockfish,make -C src net && make -C src build $(STOCKFISH_ARGS) -j$$(nproc))
mkdir -p $@/imagefiles && cp -r imagefiles $@/ rm -rf $(TEST_SCRATCH_DIR)/stockfish
$(BUILD_DOCKER) $(BUILD_CMD) $(TAG_FLAG) $(ORG)/manylinux_2_28-x64:$(TAG) \
$(TAG_FLAG) $(ORG)/manylinux_2_28-x64:latest \
--build-arg IMAGE=$(ORG)/manylinux_2_28-x64 \
--build-arg VERSION=$(TAG) \
--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 manylinux_2_28-x64/Dockerfile .
rm -rf $@/imagefiles
manylinux_2_28-x64.test: manylinux_2_28-x64 %.test-ninja: %.build
$(TEST_DOCKER) run $(RM) $(ORG)/manylinux_2_28-x64:latest > $(BIN)/dockcross-manylinux_2_28-x64 \ rm -rf $(TEST_SCRATCH_DIR)/ninja
&& chmod +x $(BIN)/dockcross-manylinux_2_28-x64 git clone --depth 1 --branch v1.11.1 https://github.com/ninja-build/ninja.git $(TEST_SCRATCH_DIR)/ninja
$(BIN)/dockcross-manylinux_2_28-x64 -i $(ORG)/manylinux_2_28-x64:latest /opt/python/cp310-cp310/bin/python test/run.py $(call extra-test-run,ninja,cmake -Bbuild -S. -GNinja $(NINJA_ARGS) && cmake --build build)
rm -rf $(TEST_SCRATCH_DIR)/ninja
# %.test-openssl: %.build
# manylinux_2_34-x64 rm -rf $(TEST_SCRATCH_DIR)/openssl
# git clone --depth 1 --branch OpenSSL_1_1_1w https://github.com/openssl/openssl.git $(TEST_SCRATCH_DIR)/openssl
manylinux_2_34-x64: manylinux_2_34-x64/Dockerfile cd $(TEST_SCRATCH_DIR)/openssl && \
mkdir -p $@/imagefiles && cp -r imagefiles $@/ wget -q https://raw.githubusercontent.com/mavlink/MAVSDK/17ad598f0e004d225f5e939aa2947a95791f2f9b/cpp/third_party/openssl/dockcross-android.patch && \
$(DOCKER) build -t $(ORG)/manylinux_2_34-x64:$(TAG) \ patch -p0 < dockcross-android.patch
-t $(ORG)/manylinux_2_34-x64:latest \ $(call extra-test-run,openssl,./Configure $(OPENSSL_ARGS) && make -j$$(nproc))
--build-arg IMAGE=$(ORG)/manylinux_2_34-x64 \ rm -rf $(TEST_SCRATCH_DIR)/openssl
--build-arg VERSION=$(TAG) \
--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 manylinux_2_34-x64/Dockerfile .
rm -rf $@/imagefiles
manylinux_2_34-x64.test: manylinux_2_34-x64 %.test-C: %.build
$(DOCKER) run $(RM) $(ORG)/manylinux_2_34-x64:latest > $(BIN)/dockcross-manylinux_2_34-x64 \ rm -rf $(TEST_SCRATCH_DIR)/C
&& chmod +x $(BIN)/dockcross-manylinux_2_34-x64 git clone https://github.com/TheAlgorithms/C.git $(TEST_SCRATCH_DIR)/C
$(BIN)/dockcross-manylinux_2_34-x64 -i $(ORG)/manylinux_2_34-x64:latest /opt/python/cp310-cp310/bin/python test/run.py cd $(TEST_SCRATCH_DIR)/C && git checkout b0a41bb38c67ddebb31d3fe06d11e171410c3379
$(call extra-test-run,C,cmake -Bbuild -S. -GNinja $(C_ARGS) && cmake --build build)
rm -rf $(TEST_SCRATCH_DIR)/C
# %.test-SQLite: %.build
# manylinux2014-x64 rm -rf $(TEST_SCRATCH_DIR)/sqlite
# git clone https://github.com/sqlite/sqlite.git $(TEST_SCRATCH_DIR)/sqlite
manylinux2014-x64: manylinux2014-x64/Dockerfile cd $(TEST_SCRATCH_DIR)/sqlite && git checkout 1cf61ce636915a5e92d4aa883755cee258aa98d6
mkdir -p $@/imagefiles && cp -r imagefiles $@/ $(call extra-test-run,sqlite,./configure $(SQLITE_ARGS) && make -j$$(nproc) sqlite3 sqlite3.c sqldiff)
$(BUILD_DOCKER) $(BUILD_CMD) $(TAG_FLAG) $(ORG)/manylinux2014-x64:$(TAG) \ rm -rf $(TEST_SCRATCH_DIR)/sqlite
$(TAG_FLAG) $(ORG)/manylinux2014-x64:latest \
--build-arg IMAGE=$(ORG)/manylinux2014-x64 \
--build-arg VERSION=$(TAG) \
--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 %.test-llama_cpp: %.build
$(TEST_DOCKER) run $(RM) $(ORG)/manylinux2014-x64:latest > $(BIN)/dockcross-manylinux2014-x64 \ rm -rf $(TEST_SCRATCH_DIR)/llama.cpp
&& chmod +x $(BIN)/dockcross-manylinux2014-x64 git clone https://github.com/ggerganov/llama.cpp.git $(TEST_SCRATCH_DIR)/llama.cpp
$(BIN)/dockcross-manylinux2014-x64 -i $(ORG)/manylinux2014-x64:latest /opt/python/cp311-cp311/bin/python test/run.py cd $(TEST_SCRATCH_DIR)/llama.cpp && git checkout 76614f352e94d25659306d9e97321f204e5de0d3
$(call extra-test-run,llama.cpp,cmake -Bbuild -S. -GNinja $(LLAMA_CPP_ARGS) && cmake --build build)
rm -rf $(TEST_SCRATCH_DIR)/llama.cpp
# %.test-fmt: %.build
# manylinux2014-x86 rm -rf $(TEST_SCRATCH_DIR)/fmt
# git clone --depth 1 --branch 9.1.0 https://github.com/fmtlib/fmt.git $(TEST_SCRATCH_DIR)/fmt
manylinux2014-x86: manylinux2014-x86/Dockerfile $(call extra-test-run,fmt,cmake -Bbuild -S. -GNinja $(FMT_ARGS) -DFMT_DOC=OFF && cmake --build build)
mkdir -p $@/imagefiles && cp -r imagefiles $@/ rm -rf $(TEST_SCRATCH_DIR)/fmt
$(BUILD_DOCKER) $(BUILD_CMD) $(TAG_FLAG) $(ORG)/manylinux2014-x86:$(TAG) \
-t $(ORG)/manylinux2014-x86:latest \
--build-arg IMAGE=$(ORG)/manylinux2014-x86 \
--build-arg VERSION=$(TAG) \
--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 %.test-cpython: %.build
$(TEST_DOCKER) run $(RM) $(ORG)/manylinux2014-x86:latest > $(BIN)/dockcross-manylinux2014-x86 \ rm -rf $(TEST_SCRATCH_DIR)/cpython
&& chmod +x $(BIN)/dockcross-manylinux2014-x86 git clone --depth 1 --branch v3.11.2 https://github.com/python/cpython.git $(TEST_SCRATCH_DIR)/cpython
$(BIN)/dockcross-manylinux2014-x86 -i $(ORG)/manylinux2014-x86:latest /opt/python/cp311-cp311/bin/python test/run.py $(call extra-test-run,cpython,./configure ac_cv_file__dev_ptmx=no ac_cv_file__dev_ptc=no --disable-ipv6 $(CPYTHON_ARGS) --build=x86_64-linux-gnu --with-build-python --enable-shared && make -j$$(nproc))
rm -rf $(TEST_SCRATCH_DIR)/cpython
# %.test-raylib: %.build
# base-$(HOST_ARCH) rm -rf $(TEST_SCRATCH_DIR)/raylib
# git clone https://github.com/raysan5/raylib.git $(TEST_SCRATCH_DIR)/raylib
base-$(HOST_ARCH): Dockerfile imagefiles/ cd $(TEST_SCRATCH_DIR)/raylib && git checkout a12ddacb7bfbc6e552e6145456f2fe6dfdfbe1c7
$(BUILD_DOCKER) $(BUILD_CMD) $(TAG_FLAG) $(ORG)/base:latest-$(HOST_ARCH) \ $(call extra-test-run,raylib,cmake -Bbuild -S. -GNinja $(RAYLIB_ARGS) && cmake --build build)
$(TAG_FLAG) $(ORG)/base:$(TAG)-$(HOST_ARCH) \ rm -rf $(TEST_SCRATCH_DIR)/raylib
--build-arg IMAGE=$(ORG)/base \
--build-arg VCS_URL=`git config --get remote.origin.url` \
.
base-$(HOST_ARCH).test: base-$(HOST_ARCH) %.test-mbedtls: %.build
$(TEST_DOCKER) run $(RM) $(ORG)/base:latest-$(HOST_ARCH) > $(BIN)/dockcross-base && chmod +x $(BIN)/dockcross-base rm -rf $(TEST_SCRATCH_DIR)/mbedtls
git clone --depth 1 --branch archive/baremetal https://github.com/Mbed-TLS/mbedtls.git $(TEST_SCRATCH_DIR)/mbedtls
$(call extra-test-run,mbedtls,scripts/config.pl baremetal && cmake -Bbuild -S. -GNinja $(MBEDTLS_ARGS) && cmake --build build)
rm -rf $(TEST_SCRATCH_DIR)/mbedtls
base: Dockerfile imagefiles/ %.test-libopencm3: %.build
$(BUILD_DOCKER) $(BUILD_CMD) $(TAG_FLAG) $(ORG)/base:latest \ rm -rf $(TEST_SCRATCH_DIR)/libopencm3
$(TAG_FLAG) $(ORG)/base:$(TAG) \ git clone https://github.com/libopencm3/libopencm3.git $(TEST_SCRATCH_DIR)/libopencm3
--build-arg IMAGE=$(ORG)/base \ cd $(TEST_SCRATCH_DIR)/libopencm3 && git checkout 467522778329d6f41781a6c951b77d6ff6744de6
--build-arg VCS_URL=`git config --get remote.origin.url` \ $(call extra-test-run,libopencm3,make $(LIBOPENCM3_ARGS) -j$$(nproc))
. rm -rf $(TEST_SCRATCH_DIR)/libopencm3
base.test: base %.push: %.test
$(TEST_DOCKER) run $(RM) $(ORG)/base:latest > $(BIN)/dockcross-base && chmod +x $(BIN)/dockcross-base $(foreach tag,$(call docker-push-tags),$(DOCKER_EXEC) push $(tag) &&) true
%.pull:
$(foreach tag,$(call docker-push-tags),$(DOCKER_EXEC) pull $(tag) &&) true
%.update:
@echo ">>> Updating base image for $*"
$(DOCKER_EXEC) pull $(BASE_IMAGE_FINAL):$(BASE_IMAGE_TAG)
%.clean:
@echo "Cleaning generated Dockerfile for $*"
ifneq ($(STATIC_DOCKERFILE),yes)
@rm -f $(call preset-path,$*)/Dockerfile
endif
@ctx="$(call build-context-dir,$*)"; \
if [ "$$ctx" != "$(PRESET_DIR)" ]; then rm -rf "$$ctx/imagefiles"; fi
%.prune: %.clean
$(DOCKER_EXEC) builder prune -f --filter name=$(OUTPUT_IMAGE_FINAL)
%.inspect:
$(DOCKER_EXEC) image inspect \
$(OUTPUT_IMAGE_FINAL):latest
%.rebuild:
$(MAKE) $*.clean
$(MAKE) $*.build BUILD_IMAGE_ARGS="--no-cache"
%.history:
$(DOCKER_EXEC) history \
$(OUTPUT_IMAGE_FINAL):latest
%.sbom:
syft $(OUTPUT_IMAGE_FINAL):latest -o spdx-json > $*.sbom.json
%.sign:
cosign sign $(OUTPUT_IMAGE_FINAL):latest
%.scan:
$(DOCKER_EXEC) run --rm \
-v /var/run/docker.sock:/var/run/docker.sock \
$(TRIVY_IMAGE) \
image --severity HIGH,CRITICAL \
$(OUTPUT_IMAGE_FINAL):latest
%.lint: %.generate
$(DOCKER_EXEC) run --rm -i $(HADOLINT_IMAGE) < $(call preset-path,$*)/Dockerfile
%.check: %.lint %.scan %.sbom
%.cache:
$(DOCKER_EXEC) buildx imagetools inspect $(OUTPUT_IMAGE_FINAL):cache
# ==============================================================================
# Global targets
# ==============================================================================
.PHONY: $(PRESET_TARGETS) clean purge list display_images bash-check
%-all:
@$(foreach p,$(ALL_PRESETS),$(MAKE) $(p).$* &&) true
list:
@echo "Available presets:"
@$(foreach p,$(ALL_PRESETS),echo " - $(p)";)
# display
#
display_images: display_images:
for image in $(IMAGES); do echo $$image; done @$(foreach p,$(filter-out base,$(ALL_PRESETS)),echo $(p);)
$(VERBOSE).SILENT: display_images $(VERBOSE).SILENT: display_images
#
# build implicit rule
#
$(STANDARD_IMAGES): %: %/Dockerfile base
mkdir -p $@/imagefiles && cp -r imagefiles $@/
$(BUILD_DOCKER) $(BUILD_CMD) $(TAG_FLAG) $(ORG)/$@:latest \
$(TAG_FLAG) $(ORG)/$@:$(TAG) \
--build-arg ORG=$(ORG) \
--build-arg IMAGE=$(ORG)/$@ \
--build-arg VERSION=$(TAG) \
--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"` \
$@
rm -rf $@/imagefiles
$(MULTIARCH_IMAGES): %: %/Dockerfile base-$(HOST_ARCH)
mkdir -p $@/imagefiles && cp -r imagefiles $@/
$(BUILD_DOCKER) $(BUILD_CMD) $(TAG_FLAG) $(ORG)/$@:latest-$(HOST_ARCH) \
$(TAG_FLAG) $(ORG)/$@:$(TAG)-$(HOST_ARCH) \
--build-arg ORG=$(ORG) \
--build-arg IMAGE=$(ORG)/$@ \
--build-arg HOST_ARCH=$(HOST_ARCH) \
--build-arg VERSION=$(TAG) \
--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"` \
$@
rm -rf $@/imagefiles
clean: clean:
for d in $(IMAGES) ; do rm -rf $$d/imagefiles ; done @$(foreach p,$(ALL_PRESETS),$(MAKE) $(p).clean &&) true
for d in $(IMAGES) ; do rm -rf $(BIN)/dockcross-$$d ; done @rm -rf $(BIN_DIR)
for d in $(GEN_IMAGE_DOCKERFILES) ; do rm -f $$d ; done
rm -f Dockerfile
purge: clean purge: clean
# Remove all untagged images $(DOCKER_EXEC) images --filter='reference=$(ORG)/*' --format='{{.Repository}}:{{.Tag}}' | xargs -r $(DOCKER_EXEC) rmi -f
$(TEST_DOCKER) container ls -aq | xargs -r $(DOCKER) container rm -f $(DOCKER_EXEC) builder prune -f
# Remove all images with organization (ex dockcross/*)
$(BUILD_DOCKER) images --filter=reference='$(ORG)/*' --format='{{.Repository}}:{{.Tag}}' | xargs -r $(DOCKER) rmi -f
# Check bash syntax
bash-check: bash-check:
find . -type f \( -name "*.sh" -o -name "*.bash" \) -print0 | xargs -0 -P"$(shell nproc)" -I{} \ find . -type f \( -name "*.sh" -o -name "*.bash" \) -print0 | xargs -0 -P"$(shell nproc)" -I{} \
$(SHELLCHECK) --check-sourced --color=auto --format=gcc --severity=warning --shell=bash --enable=all "{}" $(DOCKER_EXEC) run --rm -v "$(PWD)":/mnt -w /mnt $(SHELLCHECK_IMAGE) --check-sourced --color=auto --format=gcc --severity=warning --shell=bash --enable=all "{}"
# docker-container-builder:
# testing implicit rule $(DOCKER_EXEC) buildx create --name mybuilder --use
# $(DOCKER_EXEC) buildx inspect --bootstrap
.SECONDEXPANSION: $(DOCKER_EXEC) buildx inspect mybuilder
$(addsuffix .test,$(STANDARD_IMAGES)): $$(basename $$@)
$(TEST_DOCKER) run $(RM) $(ORG)/$(basename $@):latest > $(BIN)/dockcross-$(basename $@) \
&& chmod +x $(BIN)/dockcross-$(basename $@)
$(BIN)/dockcross-$(basename $@) -i $(ORG)/$(basename $@):latest python3 test/run.py $($@_ARGS)
.SECONDEXPANSION: docker-default-builder:
$(addsuffix .test,$(MULTIARCH_IMAGES) web-wasi-threads): $$(basename $$@) $(DOCKER_EXEC) buildx use default
$(TEST_DOCKER) run $(RM) $(ORG)/$(basename $@):latest-$(HOST_ARCH) > $(BIN)/dockcross-$(basename $@) \
&& chmod +x $(BIN)/dockcross-$(basename $@)
$(BIN)/dockcross-$(basename $@) -i $(ORG)/$(basename $@):latest-$(HOST_ARCH) python3 test/run.py $($@_ARGS)
.SECONDEXPANSION:
$(addsuffix .tag-$(HOST_ARCH),$(MULTIARCH_IMAGES) web-wasi-threads web-wasm): $$(basename $$@)
$(BUILD_DOCKER) tag $(ORG)/$(basename $@):latest-$(HOST_ARCH) \
$(ORG)/$(basename $@):$(TAG)-$(HOST_ARCH)
.SECONDEXPANSION:
$(addsuffix .push-$(HOST_ARCH),$(MULTIARCH_IMAGES) web-wasi-threads web-wasm): $$(basename $$@)
$(BUILD_DOCKER) push $(ORG)/$(basename $@):latest-$(HOST_ARCH) \
&& $(BUILD_DOCKER) push $(ORG)/$(basename $@):$(TAG)-$(HOST_ARCH)
.SECONDEXPANSION:
$(addsuffix .push,$(STANDARD_IMAGES) $(NON_STANDARD_IMAGES)): $$(basename $$@)
$(BUILD_DOCKER) push $(ORG)/$(basename $@):latest \
&& $(BUILD_DOCKER) push $(ORG)/$(basename $@):$(TAG)
.SECONDEXPANSION:
$(addsuffix .manifest,$(MULTIARCH_IMAGES) web-wasi-threads web-wasm): $$(basename $$@)
$(MANIFEST_TOOL) push from-args \
--platforms linux/amd64,linux/arm64 \
--template $(ORG)/$(basename $@):latest-ARCH \
--target $(ORG)/$(basename $@):latest
.SECONDEXPANSION:
$(addsuffix .push,$(MULTIARCH_IMAGES) web-wasi-threads web-wasm): $$(basename $$@).manifest
$(MANIFEST_TOOL) push from-args \
--platforms linux/amd64,linux/arm64 \
--template $(ORG)/$(basename $@):$(TAG)-ARCH \
--target $(ORG)/$(basename $@):$(TAG)
#
# testing prerequisites implicit rule
#
test.prerequisites:
mkdir -p $(BIN)
$(addsuffix .test,base $(IMAGES)): test.prerequisites
.PHONY: base images $(IMAGES) test %.test clean purge bash-check display_images
+440
View File
@@ -0,0 +1,440 @@
#
# Parameters
#
# Name of the docker-equivalent executable for building images.
# OCI: open container interface.
# Common values: docker, podman, buildah
DOCKER := $(or $(OCI_EXE), docker)
BUILD_DOCKER := $(or $(BUILD_DOCKER), $(DOCKER))
MANIFEST_TOOL := $(or $(MANIFEST_TOOL_EXE), manifest-tool)
RM = --rm
# Name of the docker-equivalent executable for running test containers.
# Supports the use case:
#
# DOCKER=buildah
# TEST_DOCKER=podman
#
# because buildah does not run containers.
TEST_DOCKER := $(or $(TEST_DOCKER), $(DOCKER))
# 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)
TAG_FLAG := $(or $(TAG_FLAG), --tag)
# Docker organization to pull the images from
ORG = dockcross
# Host architecture
HOST_ARCH := $(or $(HOST_ARCH), $(shell uname -m | sed -e 's/x86_64/amd64/' -e 's/aarch64/arm64/'))
# Directory where to generate the dockcross script for each images (e.g bin/dockcross-manylinux2014-x64)
BIN = ./bin
# These images are built using the "build implicit rule"
STANDARD_IMAGES := android-arm android-arm64 android-x86 android-x86_64 \
linux-i686 linux-x86 linux-x64 linux-x64-clang linux-arm64-musl linux-arm64-full \
linux-armv5 linux-armv5-musl linux-armv5-uclibc linux-m68k-uclibc linux-s390x linux-x64-tinycc \
linux-armv6 linux-armv6-lts linux-armv6-musl linux-arm64-lts linux-mipsel-lts \
linux-armv7l-musl linux-armv7 linux-armv7a linux-armv7-lts linux-armv7a-lts linux-x86_64-full \
linux-loongarch64 linux-mips linux-mips-uclibc linux-mips-lts \
linux-ppc linux-ppc64le linux-ppc64le-lts linux-riscv64 linux-riscv32 linux-xtensa-uclibc \
windows-static-x86 windows-static-x64 windows-static-x64-posix windows-armv7 \
windows-shared-x86 windows-shared-x64 windows-shared-x64-posix windows-arm64 \
bare-armv7emhf-nano_newlib
# Generated Dockerfiles.
GEN_IMAGES := android-arm android-arm64 \
linux-i686 linux-x86 linux-x64 linux-x64-clang linux-arm64 linux-arm64-musl linux-arm64-full \
manylinux_2_28-x64 manylinux_2_34-x64 \
manylinux2014-x64 manylinux2014-x86 \
manylinux2014-aarch64 manylinux_2_28-aarch64 manylinux_2_34-aarch64 linux-arm64-lts \
web-wasm web-wasi web-wasi-emulated-threads web-wasi-threads \
linux-loongarch64 linux-mips linux-mips-uclibc linux-mips-lts windows-arm64 windows-armv7 \
windows-static-x86 windows-static-x64 windows-static-x64-posix \
windows-shared-x86 windows-shared-x64 windows-shared-x64-posix \
linux-armv7 linux-armv7a linux-armv7l-musl linux-armv7-lts linux-armv7a-lts linux-x86_64-full \
linux-armv6 linux-armv6-lts linux-armv6-musl linux-mipsel-lts \
linux-armv5 linux-armv5-musl linux-armv5-uclibc linux-ppc linux-ppc64le linux-ppc64le-lts linux-s390x \
linux-riscv64 linux-riscv32 linux-m68k-uclibc linux-x64-tinycc linux-xtensa-uclibc \
bare-armv7emhf-nano_newlib
# Generate both amd64 and arm64 images
MULTIARCH_IMAGES := linux-arm64 \
web-wasi web-wasi-emulated-threads
GEN_IMAGE_DOCKERFILES = $(addsuffix /Dockerfile,$(GEN_IMAGES))
# These images are expected to have explicit rules for *both* build and testing
NON_STANDARD_IMAGES := manylinux_2_28-x64 manylinux_2_34-x64 manylinux2014-x64 manylinux2014-x86 \
manylinux2014-aarch64 manylinux_2_28-aarch64 manylinux_2_34-aarch64 web-wasm web-wasi-emulated-threads web-wasi-threads
# Docker composite files
DOCKER_COMPOSITE_SOURCES = common.docker common.debian common.manylinux2014 common.manylinux_2_28 common.manylinux_2_34 common.buildroot \
common.crosstool common.webassembly common.windows common-manylinux.crosstool common-manylinux_2_28.crosstool common-manylinux_2_34.crosstool common.dockcross \
common.label-and-env
DOCKER_COMPOSITE_FOLDER_PATH = common/
DOCKER_COMPOSITE_PATH = $(addprefix $(DOCKER_COMPOSITE_FOLDER_PATH),$(DOCKER_COMPOSITE_SOURCES))
# This list all available images
IMAGES := $(STANDARD_IMAGES) $(NON_STANDARD_IMAGES) $(MULTIARCH_IMAGES)
# Optional arguments for test runner (test/run.py) associated with "testing implicit rule"
linux-x64-tinycc.test_ARGS = --languages C
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"
windows-armv7.test_ARGS = --exe-suffix ".exe"
windows-arm64.test_ARGS = --exe-suffix ".exe"
bare-armv7emhf-nano_newlib.test_ARGS = --linker-flags="--specs=nosys.specs"
# Tag images with date and Git short hash in addition to revision
TAG := $(shell date '+%Y%m%d')-$(shell git rev-parse --short HEAD)
# shellcheck executable
SHELLCHECK := shellcheck
# Defines the level of verification (error, warning, info...)
SHELLCHECK_SEVERITY_LEVEL := error
#
# images: This target builds all IMAGES (because it is the first one, it is built by default)
#
images: base $(IMAGES)
#
# test: This target ensures all IMAGES are built and run the associated tests
#
test: base.test $(addsuffix .test,$(IMAGES))
#
# Generic Targets (can specialize later).
#
$(GEN_IMAGE_DOCKERFILES) Dockerfile: %Dockerfile: %Dockerfile.in $(DOCKER_COMPOSITE_PATH)
sed $(foreach f,$(DOCKER_COMPOSITE_SOURCES),-e '/$(f)/ r $(DOCKER_COMPOSITE_FOLDER_PATH)$(f)') $< > $@
#
# web-wasm
#
ifeq ($(HOST_ARCH),amd64)
EMSCRIPTEN_HOST_ARCH_TAG = ""
endif
ifeq ($(HOST_ARCH),arm64)
EMSCRIPTEN_HOST_ARCH_TAG = "-arm64"
endif
web-wasm: web-wasm/Dockerfile
mkdir -p $@/imagefiles && cp -r imagefiles $@/
cp -r test web-wasm/
$(BUILD_DOCKER) $(BUILD_CMD) $(TAG_FLAG) $(ORG)/web-wasm:$(TAG)-$(HOST_ARCH) \
$(TAG_FLAG) $(ORG)/web-wasm:latest-$(HOST_ARCH) \
--build-arg IMAGE=$(ORG)/web-wasm \
--build-arg VERSION=$(TAG) \
--build-arg HOST_ARCH_TAG=$(EMSCRIPTEN_HOST_ARCH_TAG) \
--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"` \
web-wasm
rm -rf web-wasm/test
rm -rf $@/imagefiles
web-wasm.test: web-wasm
cp -r test web-wasm/
$(TEST_DOCKER) run $(RM) $(ORG)/web-wasm:latest-$(HOST_ARCH) > $(BIN)/dockcross-web-wasm && chmod +x $(BIN)/dockcross-web-wasm
$(BIN)/dockcross-web-wasm -i $(ORG)/web-wasm:latest-$(HOST_ARCH) python test/run.py --exe-suffix ".js"
rm -rf web-wasm/test
#
# web-wasi-threads
#
web-wasi-threads: web-wasi web-wasi-threads/Dockerfile
mkdir -p $@/imagefiles && cp -r imagefiles $@/
cp -r test web-wasi-threads/
$(BUILD_DOCKER) $(BUILD_CMD) $(TAG_FLAG) $(ORG)/web-wasi-threads:$(TAG)-$(HOST_ARCH) \
-t $(ORG)/web-wasi-threads:latest-$(HOST_ARCH) \
--build-arg IMAGE=$(ORG)/web-wasi-threads \
--build-arg VERSION=$(TAG) \
--build-arg HOST_ARCH=$(HOST_ARCH) \
--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"` \
web-wasi-threads
#
# manylinux2014-aarch64
#
manylinux2014-aarch64: manylinux2014-aarch64/Dockerfile manylinux2014-x64
mkdir -p $@/imagefiles && cp -r imagefiles $@/
$(BUILD_DOCKER) $(BUILD_CMD) $(TAG_FLAG) $(ORG)/manylinux2014-aarch64:$(TAG) \
$(TAG_FLAG) $(ORG)/manylinux2014-aarch64:latest \
--build-arg IMAGE=$(ORG)/manylinux2014-aarch64 \
--build-arg VERSION=$(TAG) \
--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
manylinux2014-aarch64.test: manylinux2014-aarch64
$(TEST_DOCKER) run $(RM) $(ORG)/manylinux2014-aarch64:latest > $(BIN)/dockcross-manylinux2014-aarch64 \
&& chmod +x $(BIN)/dockcross-manylinux2014-aarch64
$(BIN)/dockcross-manylinux2014-aarch64 -i $(ORG)/manylinux2014-aarch64:latest /opt/python/cp311-cp311/bin/python test/run.py
#
# manylinux_2_28-aarch64
#
manylinux_2_28-aarch64: manylinux_2_28-aarch64/Dockerfile manylinux_2_28-x64
mkdir -p $@/imagefiles && cp -r imagefiles $@/
$(BUILD_DOCKER) $(BUILD_CMD) $(TAG_FLAG) $(ORG)/manylinux_2_28-aarch64:$(TAG) \
$(TAG_FLAG) $(ORG)/manylinux_2_28-aarch64:latest \
--build-arg IMAGE=$(ORG)/manylinux_2_28-aarch64 \
--build-arg VERSION=$(TAG) \
--build-arg VCS_REF=`git rev-parse --short HEAD` \
--build-arg VCS_URL=`git config --get remote.origin.url` \
-f manylinux_2_28-aarch64/Dockerfile .
rm -rf $@/imagefiles
manylinux_2_28-aarch64.test: manylinux_2_28-aarch64
$(TEST_DOCKER) run $(RM) $(ORG)/manylinux_2_28-aarch64:latest > $(BIN)/dockcross-manylinux_2_28-aarch64 \
&& chmod +x $(BIN)/dockcross-manylinux_2_28-aarch64
$(BIN)/dockcross-manylinux_2_28-aarch64 -i $(ORG)/manylinux_2_28-aarch64:latest /opt/python/cp311-cp311/bin/python test/run.py
#
# manylinux_2_34-aarch64
#
manylinux_2_34-aarch64: manylinux_2_34-aarch64/Dockerfile manylinux_2_34-x64
mkdir -p $@/imagefiles && cp -r imagefiles $@/
$(BUILD_DOCKER) $(BUILD_CMD) $(TAG_FLAG) $(ORG)/manylinux_2_34-aarch64:$(TAG) \
$(TAG_FLAG) $(ORG)/manylinux_2_34-aarch64:latest \
--build-arg IMAGE=$(ORG)/manylinux_2_34-aarch64 \
--build-arg VERSION=$(TAG) \
--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 manylinux_2_34-aarch64/Dockerfile .
rm -rf $@/imagefiles
manylinux_2_34-aarch64.test: manylinux_2_34-aarch64
$(TEST_DOCKER) run $(RM) $(ORG)/manylinux_2_34-aarch64:latest > $(BIN)/dockcross-manylinux_2_34-aarch64 \
&& chmod +x $(BIN)/dockcross-manylinux_2_34-aarch64
$(BIN)/dockcross-manylinux_2_34-aarch64 -i $(ORG)/manylinux_2_34-aarch64:latest /opt/python/cp311-cp311/bin/python test/run.py
#
# manylinux_2_28-x64
#
manylinux_2_28-x64: manylinux_2_28-x64/Dockerfile
mkdir -p $@/imagefiles && cp -r imagefiles $@/
$(BUILD_DOCKER) $(BUILD_CMD) $(TAG_FLAG) $(ORG)/manylinux_2_28-x64:$(TAG) \
$(TAG_FLAG) $(ORG)/manylinux_2_28-x64:latest \
--build-arg IMAGE=$(ORG)/manylinux_2_28-x64 \
--build-arg VERSION=$(TAG) \
--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 manylinux_2_28-x64/Dockerfile .
rm -rf $@/imagefiles
manylinux_2_28-x64.test: manylinux_2_28-x64
$(TEST_DOCKER) run $(RM) $(ORG)/manylinux_2_28-x64:latest > $(BIN)/dockcross-manylinux_2_28-x64 \
&& chmod +x $(BIN)/dockcross-manylinux_2_28-x64
$(BIN)/dockcross-manylinux_2_28-x64 -i $(ORG)/manylinux_2_28-x64:latest /opt/python/cp310-cp310/bin/python test/run.py
#
# manylinux_2_34-x64
#
manylinux_2_34-x64: manylinux_2_34-x64/Dockerfile
mkdir -p $@/imagefiles && cp -r imagefiles $@/
$(DOCKER) build -t $(ORG)/manylinux_2_34-x64:$(TAG) \
-t $(ORG)/manylinux_2_34-x64:latest \
--build-arg IMAGE=$(ORG)/manylinux_2_34-x64 \
--build-arg VERSION=$(TAG) \
--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 manylinux_2_34-x64/Dockerfile .
rm -rf $@/imagefiles
manylinux_2_34-x64.test: manylinux_2_34-x64
$(DOCKER) run $(RM) $(ORG)/manylinux_2_34-x64:latest > $(BIN)/dockcross-manylinux_2_34-x64 \
&& chmod +x $(BIN)/dockcross-manylinux_2_34-x64
$(BIN)/dockcross-manylinux_2_34-x64 -i $(ORG)/manylinux_2_34-x64:latest /opt/python/cp310-cp310/bin/python test/run.py
#
# manylinux2014-x64
#
manylinux2014-x64: manylinux2014-x64/Dockerfile
mkdir -p $@/imagefiles && cp -r imagefiles $@/
$(BUILD_DOCKER) $(BUILD_CMD) $(TAG_FLAG) $(ORG)/manylinux2014-x64:$(TAG) \
$(TAG_FLAG) $(ORG)/manylinux2014-x64:latest \
--build-arg IMAGE=$(ORG)/manylinux2014-x64 \
--build-arg VERSION=$(TAG) \
--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
$(TEST_DOCKER) run $(RM) $(ORG)/manylinux2014-x64:latest > $(BIN)/dockcross-manylinux2014-x64 \
&& chmod +x $(BIN)/dockcross-manylinux2014-x64
$(BIN)/dockcross-manylinux2014-x64 -i $(ORG)/manylinux2014-x64:latest /opt/python/cp311-cp311/bin/python test/run.py
#
# manylinux2014-x86
#
manylinux2014-x86: manylinux2014-x86/Dockerfile
mkdir -p $@/imagefiles && cp -r imagefiles $@/
$(BUILD_DOCKER) $(BUILD_CMD) $(TAG_FLAG) $(ORG)/manylinux2014-x86:$(TAG) \
-t $(ORG)/manylinux2014-x86:latest \
--build-arg IMAGE=$(ORG)/manylinux2014-x86 \
--build-arg VERSION=$(TAG) \
--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
$(TEST_DOCKER) run $(RM) $(ORG)/manylinux2014-x86:latest > $(BIN)/dockcross-manylinux2014-x86 \
&& chmod +x $(BIN)/dockcross-manylinux2014-x86
$(BIN)/dockcross-manylinux2014-x86 -i $(ORG)/manylinux2014-x86:latest /opt/python/cp311-cp311/bin/python test/run.py
#
# base-$(HOST_ARCH)
#
base-$(HOST_ARCH): Dockerfile imagefiles/
$(BUILD_DOCKER) $(BUILD_CMD) $(TAG_FLAG) $(ORG)/base:latest-$(HOST_ARCH) \
$(TAG_FLAG) $(ORG)/base:$(TAG)-$(HOST_ARCH) \
--build-arg IMAGE=$(ORG)/base \
--build-arg VCS_URL=`git config --get remote.origin.url` \
.
base-$(HOST_ARCH).test: base-$(HOST_ARCH)
$(TEST_DOCKER) run $(RM) $(ORG)/base:latest-$(HOST_ARCH) > $(BIN)/dockcross-base && chmod +x $(BIN)/dockcross-base
base: Dockerfile imagefiles/
$(BUILD_DOCKER) $(BUILD_CMD) $(TAG_FLAG) $(ORG)/base:latest \
$(TAG_FLAG) $(ORG)/base:$(TAG) \
--build-arg IMAGE=$(ORG)/base \
--build-arg VCS_URL=`git config --get remote.origin.url` \
.
base.test: base
$(TEST_DOCKER) run $(RM) $(ORG)/base:latest > $(BIN)/dockcross-base && chmod +x $(BIN)/dockcross-base
# display
#
display_images:
for image in $(IMAGES); do echo $$image; done
$(VERBOSE).SILENT: display_images
#
# build implicit rule
#
$(STANDARD_IMAGES): %: %/Dockerfile base
mkdir -p $@/imagefiles && cp -r imagefiles $@/
$(BUILD_DOCKER) $(BUILD_CMD) $(TAG_FLAG) $(ORG)/$@:latest \
$(TAG_FLAG) $(ORG)/$@:$(TAG) \
--build-arg ORG=$(ORG) \
--build-arg IMAGE=$(ORG)/$@ \
--build-arg VERSION=$(TAG) \
--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"` \
$@
rm -rf $@/imagefiles
$(MULTIARCH_IMAGES): %: %/Dockerfile base-$(HOST_ARCH)
mkdir -p $@/imagefiles && cp -r imagefiles $@/
$(BUILD_DOCKER) $(BUILD_CMD) $(TAG_FLAG) $(ORG)/$@:latest-$(HOST_ARCH) \
$(TAG_FLAG) $(ORG)/$@:$(TAG)-$(HOST_ARCH) \
--build-arg ORG=$(ORG) \
--build-arg IMAGE=$(ORG)/$@ \
--build-arg HOST_ARCH=$(HOST_ARCH) \
--build-arg VERSION=$(TAG) \
--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"` \
$@
rm -rf $@/imagefiles
clean:
for d in $(IMAGES) ; do rm -rf $$d/imagefiles ; done
for d in $(IMAGES) ; do rm -rf $(BIN)/dockcross-$$d ; done
for d in $(GEN_IMAGE_DOCKERFILES) ; do rm -f $$d ; done
rm -f Dockerfile
purge: clean
# Remove all untagged images
$(TEST_DOCKER) container ls -aq | xargs -r $(DOCKER) container rm -f
# Remove all images with organization (ex dockcross/*)
$(BUILD_DOCKER) images --filter=reference='$(ORG)/*' --format='{{.Repository}}:{{.Tag}}' | xargs -r $(DOCKER) rmi -f
# Check bash syntax
bash-check:
find . -type f \( -name "*.sh" -o -name "*.bash" \) -print0 | xargs -0 -P"$(shell nproc)" -I{} \
$(SHELLCHECK) --check-sourced --color=auto --format=gcc --severity=warning --shell=bash --enable=all "{}"
#
# testing implicit rule
#
.SECONDEXPANSION:
$(addsuffix .test,$(STANDARD_IMAGES)): $$(basename $$@)
$(TEST_DOCKER) run $(RM) $(ORG)/$(basename $@):latest > $(BIN)/dockcross-$(basename $@) \
&& chmod +x $(BIN)/dockcross-$(basename $@)
$(BIN)/dockcross-$(basename $@) -i $(ORG)/$(basename $@):latest python3 test/run.py $($@_ARGS)
.SECONDEXPANSION:
$(addsuffix .test,$(MULTIARCH_IMAGES) web-wasi-threads): $$(basename $$@)
$(TEST_DOCKER) run $(RM) $(ORG)/$(basename $@):latest-$(HOST_ARCH) > $(BIN)/dockcross-$(basename $@) \
&& chmod +x $(BIN)/dockcross-$(basename $@)
$(BIN)/dockcross-$(basename $@) -i $(ORG)/$(basename $@):latest-$(HOST_ARCH) python3 test/run.py $($@_ARGS)
.SECONDEXPANSION:
$(addsuffix .tag-$(HOST_ARCH),$(MULTIARCH_IMAGES) web-wasi-threads web-wasm): $$(basename $$@)
$(BUILD_DOCKER) tag $(ORG)/$(basename $@):latest-$(HOST_ARCH) \
$(ORG)/$(basename $@):$(TAG)-$(HOST_ARCH)
.SECONDEXPANSION:
$(addsuffix .push-$(HOST_ARCH),$(MULTIARCH_IMAGES) web-wasi-threads web-wasm): $$(basename $$@)
$(BUILD_DOCKER) push $(ORG)/$(basename $@):latest-$(HOST_ARCH) \
&& $(BUILD_DOCKER) push $(ORG)/$(basename $@):$(TAG)-$(HOST_ARCH)
.SECONDEXPANSION:
$(addsuffix .push,$(STANDARD_IMAGES) $(NON_STANDARD_IMAGES)): $$(basename $$@)
$(BUILD_DOCKER) push $(ORG)/$(basename $@):latest \
&& $(BUILD_DOCKER) push $(ORG)/$(basename $@):$(TAG)
.SECONDEXPANSION:
$(addsuffix .manifest,$(MULTIARCH_IMAGES) web-wasi-threads web-wasm): $$(basename $$@)
$(MANIFEST_TOOL) push from-args \
--platforms linux/amd64,linux/arm64 \
--template $(ORG)/$(basename $@):latest-ARCH \
--target $(ORG)/$(basename $@):latest
.SECONDEXPANSION:
$(addsuffix .push,$(MULTIARCH_IMAGES) web-wasi-threads web-wasm): $$(basename $$@).manifest
$(MANIFEST_TOOL) push from-args \
--platforms linux/amd64,linux/arm64 \
--template $(ORG)/$(basename $@):$(TAG)-ARCH \
--target $(ORG)/$(basename $@):$(TAG)
#
# testing prerequisites implicit rule
#
test.prerequisites:
mkdir -p $(BIN)
$(addsuffix .test,base $(IMAGES)): test.prerequisites
.PHONY: base images $(IMAGES) test %.test clean purge bash-check display_images
+13
View File
@@ -0,0 +1,13 @@
BASE_IMAGE_REGISTRY ?= docker.io
BASE_IMAGE_PATH ?= dockcross
BASE_IMAGE_NAME = base
BASE_IMAGE_TAG = latest
OUTPUT_IMAGE_REGISTRY ?= docker.io
OUTPUT_IMAGE_PATH ?= dockcross
OUTPUT_IMAGE_NAME = android-arm
# Extra tests (see CONTRIBUTING.md / Makefile "Extra tests" section)
EXTRA_TESTS = stockfish openssl SQLite
STOCKFISH_ARGS = ARCH=armv7 COMP=ndk
OPENSSL_ARGS = android-arm no-shared
+13
View File
@@ -0,0 +1,13 @@
BASE_IMAGE_REGISTRY ?= docker.io
BASE_IMAGE_PATH ?= dockcross
BASE_IMAGE_NAME = base
BASE_IMAGE_TAG = latest
OUTPUT_IMAGE_REGISTRY ?= docker.io
OUTPUT_IMAGE_PATH ?= dockcross
OUTPUT_IMAGE_NAME = android-arm64
# Extra tests (see CONTRIBUTING.md / Makefile "Extra tests" section)
EXTRA_TESTS = stockfish openssl SQLite
STOCKFISH_ARGS = ARCH=armv8 COMP=ndk
OPENSSL_ARGS = android-arm64 no-shared
+2 -1
View File
@@ -1,4 +1,5 @@
FROM dockcross/base:latest ARG ORG=dockcross
FROM ${ORG}/base:latest
RUN apt-get update && apt-get install -y unzip RUN apt-get update && apt-get install -y unzip
+15
View File
@@ -0,0 +1,15 @@
BASE_IMAGE_REGISTRY ?= docker.io
BASE_IMAGE_PATH ?= dockcross
BASE_IMAGE_NAME = base
BASE_IMAGE_TAG = latest
OUTPUT_IMAGE_REGISTRY ?= docker.io
OUTPUT_IMAGE_PATH ?= dockcross
OUTPUT_IMAGE_NAME = android-x86
STATIC_DOCKERFILE = yes
# Extra tests (see CONTRIBUTING.md / Makefile "Extra tests" section)
EXTRA_TESTS = stockfish openssl SQLite
STOCKFISH_ARGS = ARCH=x86-32 COMP=ndk
OPENSSL_ARGS = android-x86 no-shared
+2 -1
View File
@@ -1,4 +1,5 @@
FROM dockcross/base:latest ARG ORG=dockcross
FROM ${ORG}/base:latest
RUN apt-get update && apt-get install -y unzip RUN apt-get update && apt-get install -y unzip
+15
View File
@@ -0,0 +1,15 @@
BASE_IMAGE_REGISTRY ?= docker.io
BASE_IMAGE_PATH ?= dockcross
BASE_IMAGE_NAME = base
BASE_IMAGE_TAG = latest
OUTPUT_IMAGE_REGISTRY ?= docker.io
OUTPUT_IMAGE_PATH ?= dockcross
OUTPUT_IMAGE_NAME = android-x86_64
STATIC_DOCKERFILE = yes
# Extra tests (see CONTRIBUTING.md / Makefile "Extra tests" section)
EXTRA_TESTS = stockfish openssl SQLite
STOCKFISH_ARGS = ARCH=x86-64 COMP=ndk
OPENSSL_ARGS = android-x86_64 no-shared
@@ -822,9 +822,9 @@ CT_ZLIB_PATCH_GLOBAL=y
# CT_ZLIB_PATCH_LOCAL_BUNDLED is not set # CT_ZLIB_PATCH_LOCAL_BUNDLED is not set
# CT_ZLIB_PATCH_NONE is not set # CT_ZLIB_PATCH_NONE is not set
CT_ZLIB_PATCH_ORDER="global" CT_ZLIB_PATCH_ORDER="global"
CT_ZLIB_V_1_2_12=y CT_ZLIB_V_1_2_13=y
CT_ZLIB_VERSION="1.2.12" CT_ZLIB_VERSION="1.2.13"
CT_ZLIB_MIRRORS="http://downloads.sourceforge.net/project/libpng/zlib/${CT_ZLIB_VERSION} https://www.zlib.net/ https://www.zlib.net/fossils" CT_ZLIB_MIRRORS="https://github.com/madler/zlib/releases/download/v${CT_ZLIB_VERSION} https://www.zlib.net/"
CT_ZLIB_ARCHIVE_FILENAME="@{pkg_name}-@{version}" CT_ZLIB_ARCHIVE_FILENAME="@{pkg_name}-@{version}"
CT_ZLIB_ARCHIVE_DIRNAME="@{pkg_name}-@{version}" CT_ZLIB_ARCHIVE_DIRNAME="@{pkg_name}-@{version}"
CT_ZLIB_ARCHIVE_FORMATS=".tar.xz .tar.gz" CT_ZLIB_ARCHIVE_FORMATS=".tar.xz .tar.gz"
+14
View File
@@ -0,0 +1,14 @@
BASE_IMAGE_REGISTRY ?= docker.io
BASE_IMAGE_PATH ?= dockcross
BASE_IMAGE_NAME = base
BASE_IMAGE_TAG = latest
OUTPUT_IMAGE_REGISTRY ?= docker.io
OUTPUT_IMAGE_PATH ?= dockcross
OUTPUT_IMAGE_NAME = bare-armv7emhf-nano_newlib
TEST_IMAGE_ARGS = --linker-flags="--specs=nosys.specs"
# Extra tests (see CONTRIBUTING.md / Makefile "Extra tests" section)
EXTRA_TESTS = mbedtls libopencm3
LIBOPENCM3_ARGS = PREFIX=/usr/xcc/arm-none-eabi/bin/arm-none-eabi- TARGETS='stm32/f1 stm32/f2 stm32/f3 stm32/f4 stm32/f7 stm32/l1 stm32/l4 stm32/g4 stm32/h7 gd32/f1x0 lpc13xx lpc17xx lpc43xx/m4 lm3s lm4f msp432/e4 efm32/tg efm32/g efm32/lg efm32/gg efm32/wg efm32/ezr32wg nrf/51 nrf/52 sam/3a sam/3n sam/3s sam/3u sam/3x sam/4l vf6xx pac55xx'
+5 -1
View File
@@ -46,7 +46,11 @@ RUN git clone --recurse-submodules https://github.com/WebAssembly/wabt.git && \
RUN mkdir -p /wasi-runtimes RUN mkdir -p /wasi-runtimes
ENV WASMTIME_HOME=/wasi-runtimes/wasmtime ENV WASMTIME_HOME=/wasi-runtimes/wasmtime
RUN mkdir -p ${WASMTIME_HOME} && curl https://wasmtime.dev/install.sh -sSf | bash # Pinned below v47.0.0: that release removes wasi-threads/wasi-common support
# entirely (see https://github.com/bytecodealliance/rfcs/pull/47), which
# wasmtime-pwd-threads.sh and the wasi-threads images below depend on.
ENV WASMTIME_VERSION=v46.0.1
RUN mkdir -p ${WASMTIME_HOME} && curl https://wasmtime.dev/install.sh -sSf | bash -s -- --version ${WASMTIME_VERSION}
COPY imagefiles/wasmtime-pwd.sh ${WASMTIME_HOME}/bin/ COPY imagefiles/wasmtime-pwd.sh ${WASMTIME_HOME}/bin/
COPY imagefiles/wasmtime-pwd-threads.sh ${WASMTIME_HOME}/bin/ COPY imagefiles/wasmtime-pwd-threads.sh ${WASMTIME_HOME}/bin/
ENV PATH="$WASMTIME_HOME/bin:$PATH" ENV PATH="$WASMTIME_HOME/bin:$PATH"
+16 -4
View File
@@ -56,10 +56,22 @@ url_key="https://github.com/tianon/gosu/releases/download/${GOSU_VERSION}/gosu-$
# download and verify the signature # download and verify the signature
export GNUPGHOME="$(mktemp -d)" export GNUPGHOME="$(mktemp -d)"
gpg --keyserver hkps://keys.openpgp.org --recv-keys B42F6819007F00F88E364FD4036A9C25BF357DD4 || \ GOSU_GPG_KEY=B42F6819007F00F88E364FD4036A9C25BF357DD4
gpg --keyserver hkp://pool.sks-keyservers.net:80 --recv-keys B42F6819007F00F88E364FD4036A9C25BF357DD4 || \
gpg --keyserver hkp://pgp.key-server.io:80 --recv-keys B42F6819007F00F88E364FD4036A9C25BF357DD4 || \ gpg --keyserver hkps://keys.openpgp.org --recv-keys "$GOSU_GPG_KEY" || \
gpg --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys B42F6819007F00F88E364FD4036A9C25BF357DD4 gpg --keyserver hkp://pool.sks-keyservers.net:80 --recv-keys "$GOSU_GPG_KEY" || \
gpg --keyserver hkp://pgp.key-server.io:80 --recv-keys "$GOSU_GPG_KEY" || \
gpg --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys "$GOSU_GPG_KEY" || \
{
echo "gpg keyserver lookups failed, falling back to fetching the key over HTTPS" >&2
curl --connect-timeout 30 \
--max-time 30 \
--retry 5 \
--retry-delay 10 \
--retry-max-time 60 \
-fSL "https://keys.openpgp.org/pks/lookup?op=get&options=mr&search=0x${GOSU_GPG_KEY}" \
| gpg --import
}
echo "Downloading $url" echo "Downloading $url"
curl --connect-timeout 30 \ curl --connect-timeout 30 \
+1 -1
View File
@@ -1,4 +1,4 @@
#!/usr/bin/env bash #!/usr/bin/env bash
# Mount the PWD and the /work mount dir to enable access in try_run commands # Mount the PWD and the /work mount dir to enable access in try_run commands
exec ${WASMTIME_HOME}/bin/wasmtime run -W threads=y -S threads=y,cli=y --dir=. --dir=$PWD --dir=/work/ "$@" exec ${WASMTIME_HOME}/bin/wasmtime run -W threads=y,shared-memory=y -S threads=y,cli=y --dir=. --dir=$PWD --dir=/work/ "$@"
+14
View File
@@ -0,0 +1,14 @@
BASE_IMAGE_REGISTRY ?= docker.io
BASE_IMAGE_PATH ?= dockcross
BASE_IMAGE_NAME = base
BASE_IMAGE_TAG = latest
OUTPUT_IMAGE_REGISTRY ?= docker.io
OUTPUT_IMAGE_PATH ?= dockcross
OUTPUT_IMAGE_NAME = linux-arm64-full
# Extra tests (see CONTRIBUTING.md / Makefile "Extra tests" section)
EXTRA_TESTS = stockfish ninja openssl C SQLite fmt cpython
STOCKFISH_ARGS = ARCH=armv8
OPENSSL_ARGS = linux-aarch64
CPYTHON_ARGS = --host=aarch64-buildroot-linux-gnu --target=aarch64-buildroot-linux-gnu
+3 -3
View File
@@ -836,9 +836,9 @@ CT_ZLIB_PKG_NAME="zlib"
CT_ZLIB_SRC_RELEASE=y CT_ZLIB_SRC_RELEASE=y
# CT_ZLIB_SRC_DEVEL is not set # CT_ZLIB_SRC_DEVEL is not set
CT_ZLIB_PATCH_ORDER="global" CT_ZLIB_PATCH_ORDER="global"
CT_ZLIB_V_1_2_12=y CT_ZLIB_V_1_2_13=y
CT_ZLIB_VERSION="1.2.12" CT_ZLIB_VERSION="1.2.13"
CT_ZLIB_MIRRORS="http://downloads.sourceforge.net/project/libpng/zlib/${CT_ZLIB_VERSION} https://www.zlib.net/ https://www.zlib.net/fossils" CT_ZLIB_MIRRORS="https://github.com/madler/zlib/releases/download/v${CT_ZLIB_VERSION} https://www.zlib.net/"
CT_ZLIB_ARCHIVE_FILENAME="@{pkg_name}-@{version}" CT_ZLIB_ARCHIVE_FILENAME="@{pkg_name}-@{version}"
CT_ZLIB_ARCHIVE_DIRNAME="@{pkg_name}-@{version}" CT_ZLIB_ARCHIVE_DIRNAME="@{pkg_name}-@{version}"
CT_ZLIB_ARCHIVE_FORMATS=".tar.xz .tar.gz" CT_ZLIB_ARCHIVE_FORMATS=".tar.xz .tar.gz"
+14
View File
@@ -0,0 +1,14 @@
BASE_IMAGE_REGISTRY ?= docker.io
BASE_IMAGE_PATH ?= dockcross
BASE_IMAGE_NAME = base
BASE_IMAGE_TAG = latest
OUTPUT_IMAGE_REGISTRY ?= docker.io
OUTPUT_IMAGE_PATH ?= dockcross
OUTPUT_IMAGE_NAME = linux-arm64-lts
# Extra tests (see CONTRIBUTING.md / Makefile "Extra tests" section)
EXTRA_TESTS = stockfish ninja openssl C SQLite fmt cpython
STOCKFISH_ARGS = ARCH=armv8
OPENSSL_ARGS = linux-aarch64
CPYTHON_ARGS = --host=aarch64-unknown-linux-gnu --target=aarch64-unknown-linux-gnu
+14
View File
@@ -0,0 +1,14 @@
BASE_IMAGE_REGISTRY ?= docker.io
BASE_IMAGE_PATH ?= dockcross
BASE_IMAGE_NAME = base
BASE_IMAGE_TAG = latest
OUTPUT_IMAGE_REGISTRY ?= docker.io
OUTPUT_IMAGE_PATH ?= dockcross
OUTPUT_IMAGE_NAME = linux-arm64-musl
# Extra tests (see CONTRIBUTING.md / Makefile "Extra tests" section)
EXTRA_TESTS = stockfish ninja openssl C SQLite fmt cpython
STOCKFISH_ARGS = ARCH=armv8
OPENSSL_ARGS = linux-aarch64
CPYTHON_ARGS = --host=aarch64-linux-musl --target=aarch64-linux-musl
+18
View File
@@ -0,0 +1,18 @@
BASE_IMAGE_REGISTRY ?= docker.io
BASE_IMAGE_PATH ?= dockcross
BASE_IMAGE_NAME = base
BASE_IMAGE_TAG = latest
OUTPUT_IMAGE_REGISTRY ?= docker.io
OUTPUT_IMAGE_PATH ?= dockcross
OUTPUT_IMAGE_NAME = linux-arm64
TEST_IMAGE_CMD =
TEST_IMAGE_ARGS =
RUN_IMAGE_CMD =
RUN_IMAGE_ARGS =
# Extra tests (see CONTRIBUTING.md / Makefile "Extra tests" section)
EXTRA_TESTS = stockfish ninja C SQLite llama_cpp fmt cpython
STOCKFISH_ARGS = ARCH=armv8
CPYTHON_ARGS = --host=aarch64-unknown-linux-gnu --target=aarch64-unknown-linux-gnu
+3 -3
View File
@@ -858,9 +858,9 @@ CT_ZLIB_PATCH_GLOBAL=y
# CT_ZLIB_PATCH_LOCAL_BUNDLED is not set # CT_ZLIB_PATCH_LOCAL_BUNDLED is not set
# CT_ZLIB_PATCH_NONE is not set # CT_ZLIB_PATCH_NONE is not set
CT_ZLIB_PATCH_ORDER="global" CT_ZLIB_PATCH_ORDER="global"
CT_ZLIB_V_1_2_12=y CT_ZLIB_V_1_2_13=y
CT_ZLIB_VERSION="1.2.12" CT_ZLIB_VERSION="1.2.13"
CT_ZLIB_MIRRORS="http://downloads.sourceforge.net/project/libpng/zlib/${CT_ZLIB_VERSION} https://www.zlib.net/ https://www.zlib.net/fossils" CT_ZLIB_MIRRORS="https://github.com/madler/zlib/releases/download/v${CT_ZLIB_VERSION} https://www.zlib.net/"
CT_ZLIB_ARCHIVE_FILENAME="@{pkg_name}-@{version}" CT_ZLIB_ARCHIVE_FILENAME="@{pkg_name}-@{version}"
CT_ZLIB_ARCHIVE_DIRNAME="@{pkg_name}-@{version}" CT_ZLIB_ARCHIVE_DIRNAME="@{pkg_name}-@{version}"
CT_ZLIB_ARCHIVE_FORMATS=".tar.xz .tar.gz" CT_ZLIB_ARCHIVE_FORMATS=".tar.xz .tar.gz"
+13
View File
@@ -0,0 +1,13 @@
BASE_IMAGE_REGISTRY ?= docker.io
BASE_IMAGE_PATH ?= dockcross
BASE_IMAGE_NAME = base
BASE_IMAGE_TAG = latest
OUTPUT_IMAGE_REGISTRY ?= docker.io
OUTPUT_IMAGE_PATH ?= dockcross
OUTPUT_IMAGE_NAME = linux-armv5-musl
# Extra tests (see CONTRIBUTING.md / Makefile "Extra tests" section)
EXTRA_TESTS = ninja openssl SQLite fmt cpython
OPENSSL_ARGS = linux-armv4
CPYTHON_ARGS = --host=armv5-unknown-linux-musleabi --target=armv5-unknown-linux-musleabi
+3 -3
View File
@@ -800,9 +800,9 @@ CT_ZLIB_PKG_NAME="zlib"
CT_ZLIB_SRC_RELEASE=y CT_ZLIB_SRC_RELEASE=y
# CT_ZLIB_SRC_DEVEL is not set # CT_ZLIB_SRC_DEVEL is not set
CT_ZLIB_PATCH_ORDER="global" CT_ZLIB_PATCH_ORDER="global"
CT_ZLIB_V_1_2_12=y CT_ZLIB_V_1_2_13=y
CT_ZLIB_VERSION="1.2.12" CT_ZLIB_VERSION="1.2.13"
CT_ZLIB_MIRRORS="http://downloads.sourceforge.net/project/libpng/zlib/${CT_ZLIB_VERSION} https://www.zlib.net/ https://www.zlib.net/fossils" CT_ZLIB_MIRRORS="https://github.com/madler/zlib/releases/download/v${CT_ZLIB_VERSION} https://www.zlib.net/"
CT_ZLIB_ARCHIVE_FILENAME="@{pkg_name}-@{version}" CT_ZLIB_ARCHIVE_FILENAME="@{pkg_name}-@{version}"
CT_ZLIB_ARCHIVE_DIRNAME="@{pkg_name}-@{version}" CT_ZLIB_ARCHIVE_DIRNAME="@{pkg_name}-@{version}"
CT_ZLIB_ARCHIVE_FORMATS=".tar.xz .tar.gz" CT_ZLIB_ARCHIVE_FORMATS=".tar.xz .tar.gz"
+13
View File
@@ -0,0 +1,13 @@
BASE_IMAGE_REGISTRY ?= docker.io
BASE_IMAGE_PATH ?= dockcross
BASE_IMAGE_NAME = base
BASE_IMAGE_TAG = latest
OUTPUT_IMAGE_REGISTRY ?= docker.io
OUTPUT_IMAGE_PATH ?= dockcross
OUTPUT_IMAGE_NAME = linux-armv5-uclibc
# Extra tests (see CONTRIBUTING.md / Makefile "Extra tests" section)
EXTRA_TESTS = ninja openssl SQLite fmt cpython
OPENSSL_ARGS = linux-armv4
CPYTHON_ARGS = --host=arm-unknown-linux-uclibcgnueabi --target=arm-unknown-linux-uclibcgnueabi
+3 -3
View File
@@ -850,9 +850,9 @@ CT_ZLIB_PKG_NAME="zlib"
CT_ZLIB_SRC_RELEASE=y CT_ZLIB_SRC_RELEASE=y
# CT_ZLIB_SRC_DEVEL is not set # CT_ZLIB_SRC_DEVEL is not set
CT_ZLIB_PATCH_ORDER="global" CT_ZLIB_PATCH_ORDER="global"
CT_ZLIB_V_1_2_12=y CT_ZLIB_V_1_2_13=y
CT_ZLIB_VERSION="1.2.12" CT_ZLIB_VERSION="1.2.13"
CT_ZLIB_MIRRORS="http://downloads.sourceforge.net/project/libpng/zlib/${CT_ZLIB_VERSION} https://www.zlib.net/ https://www.zlib.net/fossils" CT_ZLIB_MIRRORS="https://github.com/madler/zlib/releases/download/v${CT_ZLIB_VERSION} https://www.zlib.net/"
CT_ZLIB_ARCHIVE_FILENAME="@{pkg_name}-@{version}" CT_ZLIB_ARCHIVE_FILENAME="@{pkg_name}-@{version}"
CT_ZLIB_ARCHIVE_DIRNAME="@{pkg_name}-@{version}" CT_ZLIB_ARCHIVE_DIRNAME="@{pkg_name}-@{version}"
CT_ZLIB_ARCHIVE_FORMATS=".tar.xz .tar.gz" CT_ZLIB_ARCHIVE_FORMATS=".tar.xz .tar.gz"
+13
View File
@@ -0,0 +1,13 @@
BASE_IMAGE_REGISTRY ?= docker.io
BASE_IMAGE_PATH ?= dockcross
BASE_IMAGE_NAME = base
BASE_IMAGE_TAG = latest
OUTPUT_IMAGE_REGISTRY ?= docker.io
OUTPUT_IMAGE_PATH ?= dockcross
OUTPUT_IMAGE_NAME = linux-armv5
# Extra tests (see CONTRIBUTING.md / Makefile "Extra tests" section)
EXTRA_TESTS = ninja openssl SQLite fmt cpython
OPENSSL_ARGS = linux-armv4
CPYTHON_ARGS = --host=armv5-unknown-linux-gnueabi --target=armv5-unknown-linux-gnueabi
+3 -3
View File
@@ -850,9 +850,9 @@ CT_ZLIB_PKG_NAME="zlib"
CT_ZLIB_SRC_RELEASE=y CT_ZLIB_SRC_RELEASE=y
# CT_ZLIB_SRC_DEVEL is not set # CT_ZLIB_SRC_DEVEL is not set
CT_ZLIB_PATCH_ORDER="global" CT_ZLIB_PATCH_ORDER="global"
CT_ZLIB_V_1_2_12=y CT_ZLIB_V_1_2_13=y
CT_ZLIB_VERSION="1.2.12" CT_ZLIB_VERSION="1.2.13"
CT_ZLIB_MIRRORS="http://downloads.sourceforge.net/project/libpng/zlib/${CT_ZLIB_VERSION} https://www.zlib.net/ https://www.zlib.net/fossils" CT_ZLIB_MIRRORS="https://github.com/madler/zlib/releases/download/v${CT_ZLIB_VERSION} https://www.zlib.net/"
CT_ZLIB_ARCHIVE_FILENAME="@{pkg_name}-@{version}" CT_ZLIB_ARCHIVE_FILENAME="@{pkg_name}-@{version}"
CT_ZLIB_ARCHIVE_DIRNAME="@{pkg_name}-@{version}" CT_ZLIB_ARCHIVE_DIRNAME="@{pkg_name}-@{version}"
CT_ZLIB_ARCHIVE_FORMATS=".tar.xz .tar.gz" CT_ZLIB_ARCHIVE_FORMATS=".tar.xz .tar.gz"
+13
View File
@@ -0,0 +1,13 @@
BASE_IMAGE_REGISTRY ?= docker.io
BASE_IMAGE_PATH ?= dockcross
BASE_IMAGE_NAME = base
BASE_IMAGE_TAG = latest
OUTPUT_IMAGE_REGISTRY ?= docker.io
OUTPUT_IMAGE_PATH ?= dockcross
OUTPUT_IMAGE_NAME = linux-armv6-lts
# Extra tests (see CONTRIBUTING.md / Makefile "Extra tests" section)
EXTRA_TESTS = ninja openssl SQLite fmt cpython
OPENSSL_ARGS = linux-armv4
CPYTHON_ARGS = --host=armv6-unknown-linux-gnueabihf --target=armv6-unknown-linux-gnueabihf
+13
View File
@@ -0,0 +1,13 @@
BASE_IMAGE_REGISTRY ?= docker.io
BASE_IMAGE_PATH ?= dockcross
BASE_IMAGE_NAME = base
BASE_IMAGE_TAG = latest
OUTPUT_IMAGE_REGISTRY ?= docker.io
OUTPUT_IMAGE_PATH ?= dockcross
OUTPUT_IMAGE_NAME = linux-armv6-musl
# Extra tests (see CONTRIBUTING.md / Makefile "Extra tests" section)
EXTRA_TESTS = ninja openssl SQLite fmt cpython
OPENSSL_ARGS = linux-armv4
CPYTHON_ARGS = --host=armv6-linux-musleabihf --target=armv6-linux-musleabihf
+3 -3
View File
@@ -852,9 +852,9 @@ CT_ZLIB_PKG_NAME="zlib"
CT_ZLIB_SRC_RELEASE=y CT_ZLIB_SRC_RELEASE=y
# CT_ZLIB_SRC_DEVEL is not set # CT_ZLIB_SRC_DEVEL is not set
CT_ZLIB_PATCH_ORDER="global" CT_ZLIB_PATCH_ORDER="global"
CT_ZLIB_V_1_2_12=y CT_ZLIB_V_1_2_13=y
CT_ZLIB_VERSION="1.2.12" CT_ZLIB_VERSION="1.2.13"
CT_ZLIB_MIRRORS="http://downloads.sourceforge.net/project/libpng/zlib/${CT_ZLIB_VERSION} https://www.zlib.net/ https://www.zlib.net/fossils" CT_ZLIB_MIRRORS="https://github.com/madler/zlib/releases/download/v${CT_ZLIB_VERSION} https://www.zlib.net/"
CT_ZLIB_ARCHIVE_FILENAME="@{pkg_name}-@{version}" CT_ZLIB_ARCHIVE_FILENAME="@{pkg_name}-@{version}"
CT_ZLIB_ARCHIVE_DIRNAME="@{pkg_name}-@{version}" CT_ZLIB_ARCHIVE_DIRNAME="@{pkg_name}-@{version}"
CT_ZLIB_ARCHIVE_FORMATS=".tar.xz .tar.gz" CT_ZLIB_ARCHIVE_FORMATS=".tar.xz .tar.gz"
+13
View File
@@ -0,0 +1,13 @@
BASE_IMAGE_REGISTRY ?= docker.io
BASE_IMAGE_PATH ?= dockcross
BASE_IMAGE_NAME = base
BASE_IMAGE_TAG = latest
OUTPUT_IMAGE_REGISTRY ?= docker.io
OUTPUT_IMAGE_PATH ?= dockcross
OUTPUT_IMAGE_NAME = linux-armv6
# Extra tests (see CONTRIBUTING.md / Makefile "Extra tests" section)
EXTRA_TESTS = ninja openssl SQLite fmt cpython
OPENSSL_ARGS = linux-armv4
CPYTHON_ARGS = --host=armv6-unknown-linux-gnueabihf --target=armv6-unknown-linux-gnueabihf
+3 -3
View File
@@ -837,9 +837,9 @@ CT_ZLIB_PKG_NAME="zlib"
CT_ZLIB_SRC_RELEASE=y CT_ZLIB_SRC_RELEASE=y
# CT_ZLIB_SRC_DEVEL is not set # CT_ZLIB_SRC_DEVEL is not set
CT_ZLIB_PATCH_ORDER="global" CT_ZLIB_PATCH_ORDER="global"
CT_ZLIB_V_1_2_12=y CT_ZLIB_V_1_2_13=y
CT_ZLIB_VERSION="1.2.12" CT_ZLIB_VERSION="1.2.13"
CT_ZLIB_MIRRORS="http://downloads.sourceforge.net/project/libpng/zlib/${CT_ZLIB_VERSION} https://www.zlib.net/ https://www.zlib.net/fossils" CT_ZLIB_MIRRORS="https://github.com/madler/zlib/releases/download/v${CT_ZLIB_VERSION} https://www.zlib.net/"
CT_ZLIB_ARCHIVE_FILENAME="@{pkg_name}-@{version}" CT_ZLIB_ARCHIVE_FILENAME="@{pkg_name}-@{version}"
CT_ZLIB_ARCHIVE_DIRNAME="@{pkg_name}-@{version}" CT_ZLIB_ARCHIVE_DIRNAME="@{pkg_name}-@{version}"
CT_ZLIB_ARCHIVE_FORMATS=".tar.xz .tar.gz" CT_ZLIB_ARCHIVE_FORMATS=".tar.xz .tar.gz"
+14
View File
@@ -0,0 +1,14 @@
BASE_IMAGE_REGISTRY ?= docker.io
BASE_IMAGE_PATH ?= dockcross
BASE_IMAGE_NAME = base
BASE_IMAGE_TAG = latest
OUTPUT_IMAGE_REGISTRY ?= docker.io
OUTPUT_IMAGE_PATH ?= dockcross
OUTPUT_IMAGE_NAME = linux-armv7-lts
# Extra tests (see CONTRIBUTING.md / Makefile "Extra tests" section)
EXTRA_TESTS = stockfish ninja openssl SQLite fmt cpython
STOCKFISH_ARGS = ARCH=armv7
OPENSSL_ARGS = linux-armv4
CPYTHON_ARGS = --host=armv7-unknown-linux-gnueabi --target=armv7-unknown-linux-gnueabi
+3 -3
View File
@@ -852,9 +852,9 @@ CT_ZLIB_PKG_NAME="zlib"
CT_ZLIB_SRC_RELEASE=y CT_ZLIB_SRC_RELEASE=y
# CT_ZLIB_SRC_DEVEL is not set # CT_ZLIB_SRC_DEVEL is not set
CT_ZLIB_PATCH_ORDER="global" CT_ZLIB_PATCH_ORDER="global"
CT_ZLIB_V_1_2_12=y CT_ZLIB_V_1_2_13=y
CT_ZLIB_VERSION="1.2.12" CT_ZLIB_VERSION="1.2.13"
CT_ZLIB_MIRRORS="http://downloads.sourceforge.net/project/libpng/zlib/${CT_ZLIB_VERSION} https://www.zlib.net/ https://www.zlib.net/fossils" CT_ZLIB_MIRRORS="https://github.com/madler/zlib/releases/download/v${CT_ZLIB_VERSION} https://www.zlib.net/"
CT_ZLIB_ARCHIVE_FILENAME="@{pkg_name}-@{version}" CT_ZLIB_ARCHIVE_FILENAME="@{pkg_name}-@{version}"
CT_ZLIB_ARCHIVE_DIRNAME="@{pkg_name}-@{version}" CT_ZLIB_ARCHIVE_DIRNAME="@{pkg_name}-@{version}"
CT_ZLIB_ARCHIVE_FORMATS=".tar.xz .tar.gz" CT_ZLIB_ARCHIVE_FORMATS=".tar.xz .tar.gz"
+14
View File
@@ -0,0 +1,14 @@
BASE_IMAGE_REGISTRY ?= docker.io
BASE_IMAGE_PATH ?= dockcross
BASE_IMAGE_NAME = base
BASE_IMAGE_TAG = latest
OUTPUT_IMAGE_REGISTRY ?= docker.io
OUTPUT_IMAGE_PATH ?= dockcross
OUTPUT_IMAGE_NAME = linux-armv7
# Extra tests (see CONTRIBUTING.md / Makefile "Extra tests" section)
EXTRA_TESTS = stockfish ninja openssl SQLite fmt cpython
STOCKFISH_ARGS = ARCH=armv7
OPENSSL_ARGS = linux-armv4
CPYTHON_ARGS = --host=armv7-unknown-linux-gnueabi --target=armv7-unknown-linux-gnueabi
+3 -3
View File
@@ -849,9 +849,9 @@ CT_ZLIB_PKG_NAME="zlib"
CT_ZLIB_SRC_RELEASE=y CT_ZLIB_SRC_RELEASE=y
# CT_ZLIB_SRC_DEVEL is not set # CT_ZLIB_SRC_DEVEL is not set
CT_ZLIB_PATCH_ORDER="global" CT_ZLIB_PATCH_ORDER="global"
CT_ZLIB_V_1_2_12=y CT_ZLIB_V_1_2_13=y
CT_ZLIB_VERSION="1.2.12" CT_ZLIB_VERSION="1.2.13"
CT_ZLIB_MIRRORS="http://downloads.sourceforge.net/project/libpng/zlib/${CT_ZLIB_VERSION} https://www.zlib.net/ https://www.zlib.net/fossils" CT_ZLIB_MIRRORS="https://github.com/madler/zlib/releases/download/v${CT_ZLIB_VERSION} https://www.zlib.net/"
CT_ZLIB_ARCHIVE_FILENAME="@{pkg_name}-@{version}" CT_ZLIB_ARCHIVE_FILENAME="@{pkg_name}-@{version}"
CT_ZLIB_ARCHIVE_DIRNAME="@{pkg_name}-@{version}" CT_ZLIB_ARCHIVE_DIRNAME="@{pkg_name}-@{version}"
CT_ZLIB_ARCHIVE_FORMATS=".tar.xz .tar.gz" CT_ZLIB_ARCHIVE_FORMATS=".tar.xz .tar.gz"
+14
View File
@@ -0,0 +1,14 @@
BASE_IMAGE_REGISTRY ?= docker.io
BASE_IMAGE_PATH ?= dockcross
BASE_IMAGE_NAME = base
BASE_IMAGE_TAG = latest
OUTPUT_IMAGE_REGISTRY ?= docker.io
OUTPUT_IMAGE_PATH ?= dockcross
OUTPUT_IMAGE_NAME = linux-armv7a-lts
# Extra tests (see CONTRIBUTING.md / Makefile "Extra tests" section)
EXTRA_TESTS = stockfish ninja openssl SQLite fmt cpython
STOCKFISH_ARGS = ARCH=armv7-neon
OPENSSL_ARGS = linux-armv4
CPYTHON_ARGS = --host=arm-cortexa8_neon-linux-gnueabihf --target=arm-cortexa8_neon-linux-gnueabihf
+14
View File
@@ -0,0 +1,14 @@
BASE_IMAGE_REGISTRY ?= docker.io
BASE_IMAGE_PATH ?= dockcross
BASE_IMAGE_NAME = base
BASE_IMAGE_TAG = latest
OUTPUT_IMAGE_REGISTRY ?= docker.io
OUTPUT_IMAGE_PATH ?= dockcross
OUTPUT_IMAGE_NAME = linux-armv7a
# Extra tests (see CONTRIBUTING.md / Makefile "Extra tests" section)
EXTRA_TESTS = stockfish ninja openssl SQLite fmt cpython
STOCKFISH_ARGS = ARCH=armv7-neon
OPENSSL_ARGS = linux-armv4
CPYTHON_ARGS = --host=arm-cortexa8_neon-linux-gnueabihf --target=arm-cortexa8_neon-linux-gnueabihf
+14
View File
@@ -0,0 +1,14 @@
BASE_IMAGE_REGISTRY ?= docker.io
BASE_IMAGE_PATH ?= dockcross
BASE_IMAGE_NAME = base
BASE_IMAGE_TAG = latest
OUTPUT_IMAGE_REGISTRY ?= docker.io
OUTPUT_IMAGE_PATH ?= dockcross
OUTPUT_IMAGE_NAME = linux-armv7l-musl
# Extra tests (see CONTRIBUTING.md / Makefile "Extra tests" section)
EXTRA_TESTS = stockfish ninja openssl SQLite fmt cpython
STOCKFISH_ARGS = ARCH=armv7
OPENSSL_ARGS = linux-armv4
CPYTHON_ARGS = --host=armv7l-linux-musleabihf --target=armv7l-linux-musleabihf
+3 -3
View File
@@ -766,9 +766,9 @@ CT_ZLIB_PKG_NAME="zlib"
CT_ZLIB_SRC_RELEASE=y CT_ZLIB_SRC_RELEASE=y
# CT_ZLIB_SRC_DEVEL is not set # CT_ZLIB_SRC_DEVEL is not set
CT_ZLIB_PATCH_ORDER="global" CT_ZLIB_PATCH_ORDER="global"
CT_ZLIB_V_1_2_12=y CT_ZLIB_V_1_2_13=y
CT_ZLIB_VERSION="1.2.12" CT_ZLIB_VERSION="1.2.13"
CT_ZLIB_MIRRORS="http://downloads.sourceforge.net/project/libpng/zlib/${CT_ZLIB_VERSION} https://www.zlib.net https://www.zlib.net/fossils" CT_ZLIB_MIRRORS="https://github.com/madler/zlib/releases/download/v${CT_ZLIB_VERSION} https://www.zlib.net/"
CT_ZLIB_ARCHIVE_FILENAME="@{pkg_name}-@{version}" CT_ZLIB_ARCHIVE_FILENAME="@{pkg_name}-@{version}"
CT_ZLIB_ARCHIVE_DIRNAME="@{pkg_name}-@{version}" CT_ZLIB_ARCHIVE_DIRNAME="@{pkg_name}-@{version}"
CT_ZLIB_ARCHIVE_FORMATS=".tar.xz .tar.gz" CT_ZLIB_ARCHIVE_FORMATS=".tar.xz .tar.gz"
+13
View File
@@ -0,0 +1,13 @@
BASE_IMAGE_REGISTRY ?= docker.io
BASE_IMAGE_PATH ?= dockcross
BASE_IMAGE_NAME = base
BASE_IMAGE_TAG = latest
OUTPUT_IMAGE_REGISTRY ?= docker.io
OUTPUT_IMAGE_PATH ?= dockcross
OUTPUT_IMAGE_NAME = linux-i686
# Extra tests (see CONTRIBUTING.md / Makefile "Extra tests" section)
EXTRA_TESTS = ninja openssl C SQLite fmt cpython
OPENSSL_ARGS = linux-generic32
CPYTHON_ARGS = --host=i686-linux-gnu --target=i686-linux-gnu
+15
View File
@@ -0,0 +1,15 @@
BASE_IMAGE_REGISTRY ?= docker.io
BASE_IMAGE_PATH ?= dockcross
BASE_IMAGE_NAME = base
BASE_IMAGE_TAG = latest
OUTPUT_IMAGE_REGISTRY ?= docker.io
OUTPUT_IMAGE_PATH ?= dockcross
OUTPUT_IMAGE_NAME = linux-loongarch64
# Extra tests (see CONTRIBUTING.md / Makefile "Extra tests" section)
EXTRA_TESTS = stockfish ninja openssl C fmt cpython
STOCKFISH_ARGS = ARCH=loongarch64
OPENSSL_ARGS = linux64-loongarch64
C_ARGS = -DCMAKE_C_FLAGS=-Wno-incompatible-pointer-types
CPYTHON_ARGS = --host=loongarch64-unknown-linux-gnu --target=loongarch64-unknown-linux-gnu
+3 -3
View File
@@ -768,9 +768,9 @@ CT_ZLIB_PKG_NAME="zlib"
CT_ZLIB_SRC_RELEASE=y CT_ZLIB_SRC_RELEASE=y
# CT_ZLIB_SRC_DEVEL is not set # CT_ZLIB_SRC_DEVEL is not set
CT_ZLIB_PATCH_ORDER="global" CT_ZLIB_PATCH_ORDER="global"
CT_ZLIB_V_1_2_12=y CT_ZLIB_V_1_2_13=y
CT_ZLIB_VERSION="1.2.12" CT_ZLIB_VERSION="1.2.13"
CT_ZLIB_MIRRORS="http://downloads.sourceforge.net/project/libpng/zlib/${CT_ZLIB_VERSION} https://www.zlib.net/ https://www.zlib.net/fossils" CT_ZLIB_MIRRORS="https://github.com/madler/zlib/releases/download/v${CT_ZLIB_VERSION} https://www.zlib.net/"
CT_ZLIB_ARCHIVE_FILENAME="@{pkg_name}-@{version}" CT_ZLIB_ARCHIVE_FILENAME="@{pkg_name}-@{version}"
CT_ZLIB_ARCHIVE_DIRNAME="@{pkg_name}-@{version}" CT_ZLIB_ARCHIVE_DIRNAME="@{pkg_name}-@{version}"
CT_ZLIB_ARCHIVE_FORMATS=".tar.xz .tar.gz" CT_ZLIB_ARCHIVE_FORMATS=".tar.xz .tar.gz"
+11
View File
@@ -0,0 +1,11 @@
BASE_IMAGE_REGISTRY ?= docker.io
BASE_IMAGE_PATH ?= dockcross
BASE_IMAGE_NAME = base
BASE_IMAGE_TAG = latest
OUTPUT_IMAGE_REGISTRY ?= docker.io
OUTPUT_IMAGE_PATH ?= dockcross
OUTPUT_IMAGE_NAME = linux-m68k-uclibc
# Extra tests (see CONTRIBUTING.md / Makefile "Extra tests" section)
EXTRA_TESTS = SQLite
+3 -3
View File
@@ -851,9 +851,9 @@ CT_ZLIB_PKG_NAME="zlib"
CT_ZLIB_SRC_RELEASE=y CT_ZLIB_SRC_RELEASE=y
# CT_ZLIB_SRC_DEVEL is not set # CT_ZLIB_SRC_DEVEL is not set
CT_ZLIB_PATCH_ORDER="global" CT_ZLIB_PATCH_ORDER="global"
CT_ZLIB_V_1_2_12=y CT_ZLIB_V_1_2_13=y
CT_ZLIB_VERSION="1.2.12" CT_ZLIB_VERSION="1.2.13"
CT_ZLIB_MIRRORS="http://downloads.sourceforge.net/project/libpng/zlib/${CT_ZLIB_VERSION} https://www.zlib.net/ https://www.zlib.net/fossils" CT_ZLIB_MIRRORS="https://github.com/madler/zlib/releases/download/v${CT_ZLIB_VERSION} https://www.zlib.net/"
CT_ZLIB_ARCHIVE_FILENAME="@{pkg_name}-@{version}" CT_ZLIB_ARCHIVE_FILENAME="@{pkg_name}-@{version}"
CT_ZLIB_ARCHIVE_DIRNAME="@{pkg_name}-@{version}" CT_ZLIB_ARCHIVE_DIRNAME="@{pkg_name}-@{version}"
CT_ZLIB_ARCHIVE_FORMATS=".tar.xz .tar.gz" CT_ZLIB_ARCHIVE_FORMATS=".tar.xz .tar.gz"
+13
View File
@@ -0,0 +1,13 @@
BASE_IMAGE_REGISTRY ?= docker.io
BASE_IMAGE_PATH ?= dockcross
BASE_IMAGE_NAME = base
BASE_IMAGE_TAG = latest
OUTPUT_IMAGE_REGISTRY ?= docker.io
OUTPUT_IMAGE_PATH ?= dockcross
OUTPUT_IMAGE_NAME = linux-mips-lts
# Extra tests (see CONTRIBUTING.md / Makefile "Extra tests" section)
EXTRA_TESTS = ninja openssl C SQLite fmt cpython
OPENSSL_ARGS = linux-generic32
CPYTHON_ARGS = --host=mips-unknown-linux-gnu --target=mips-unknown-linux-gnu
+2 -1
View File
@@ -1,4 +1,5 @@
FROM dockcross/base:latest ARG ORG=dockcross
FROM ${ORG}/base:latest
LABEL maintainer="Rene Helmke rene.helmke@fkie.fraunhofer.de" LABEL maintainer="Rene Helmke rene.helmke@fkie.fraunhofer.de"
+3 -3
View File
@@ -793,9 +793,9 @@ CT_ZLIB_PKG_NAME="zlib"
CT_ZLIB_SRC_RELEASE=y CT_ZLIB_SRC_RELEASE=y
# CT_ZLIB_SRC_DEVEL is not set # CT_ZLIB_SRC_DEVEL is not set
CT_ZLIB_PATCH_ORDER="global" CT_ZLIB_PATCH_ORDER="global"
CT_ZLIB_V_1_2_12=y CT_ZLIB_V_1_2_13=y
CT_ZLIB_VERSION="1.2.12" CT_ZLIB_VERSION="1.2.13"
CT_ZLIB_MIRRORS="http://downloads.sourceforge.net/project/libpng/zlib/${CT_ZLIB_VERSION} https://www.zlib.net/ https://www.zlib.net/fossils" CT_ZLIB_MIRRORS="https://github.com/madler/zlib/releases/download/v${CT_ZLIB_VERSION} https://www.zlib.net/"
CT_ZLIB_ARCHIVE_FILENAME="@{pkg_name}-@{version}" CT_ZLIB_ARCHIVE_FILENAME="@{pkg_name}-@{version}"
CT_ZLIB_ARCHIVE_DIRNAME="@{pkg_name}-@{version}" CT_ZLIB_ARCHIVE_DIRNAME="@{pkg_name}-@{version}"
CT_ZLIB_ARCHIVE_FORMATS=".tar.xz .tar.gz" CT_ZLIB_ARCHIVE_FORMATS=".tar.xz .tar.gz"
+13
View File
@@ -0,0 +1,13 @@
BASE_IMAGE_REGISTRY ?= docker.io
BASE_IMAGE_PATH ?= dockcross
BASE_IMAGE_NAME = base
BASE_IMAGE_TAG = latest
OUTPUT_IMAGE_REGISTRY ?= docker.io
OUTPUT_IMAGE_PATH ?= dockcross
OUTPUT_IMAGE_NAME = linux-mips-uclibc
# Extra tests (see CONTRIBUTING.md / Makefile "Extra tests" section)
EXTRA_TESTS = ninja openssl SQLite fmt cpython
OPENSSL_ARGS = linux-generic32
CPYTHON_ARGS = --host=mips-unknown-linux-uclibc --target=mips-unknown-linux-uclibc
+3 -3
View File
@@ -838,9 +838,9 @@ CT_ZLIB_PKG_NAME="zlib"
CT_ZLIB_SRC_RELEASE=y CT_ZLIB_SRC_RELEASE=y
# CT_ZLIB_SRC_DEVEL is not set # CT_ZLIB_SRC_DEVEL is not set
CT_ZLIB_PATCH_ORDER="global" CT_ZLIB_PATCH_ORDER="global"
CT_ZLIB_V_1_2_12=y CT_ZLIB_V_1_2_13=y
CT_ZLIB_VERSION="1.2.12" CT_ZLIB_VERSION="1.2.13"
CT_ZLIB_MIRRORS="http://downloads.sourceforge.net/project/libpng/zlib/${CT_ZLIB_VERSION} https://www.zlib.net/ https://www.zlib.net/fossils" CT_ZLIB_MIRRORS="https://github.com/madler/zlib/releases/download/v${CT_ZLIB_VERSION} https://www.zlib.net/"
CT_ZLIB_ARCHIVE_FILENAME="@{pkg_name}-@{version}" CT_ZLIB_ARCHIVE_FILENAME="@{pkg_name}-@{version}"
CT_ZLIB_ARCHIVE_DIRNAME="@{pkg_name}-@{version}" CT_ZLIB_ARCHIVE_DIRNAME="@{pkg_name}-@{version}"
CT_ZLIB_ARCHIVE_FORMATS=".tar.xz .tar.gz" CT_ZLIB_ARCHIVE_FORMATS=".tar.xz .tar.gz"
+13
View File
@@ -0,0 +1,13 @@
BASE_IMAGE_REGISTRY ?= docker.io
BASE_IMAGE_PATH ?= dockcross
BASE_IMAGE_NAME = base
BASE_IMAGE_TAG = latest
OUTPUT_IMAGE_REGISTRY ?= docker.io
OUTPUT_IMAGE_PATH ?= dockcross
OUTPUT_IMAGE_NAME = linux-mips
# Extra tests (see CONTRIBUTING.md / Makefile "Extra tests" section)
EXTRA_TESTS = ninja openssl C SQLite fmt cpython
OPENSSL_ARGS = linux-generic32
CPYTHON_ARGS = --host=mips-unknown-linux-gnu --target=mips-unknown-linux-gnu
+3 -3
View File
@@ -818,9 +818,9 @@ CT_ZLIB_PKG_NAME="zlib"
CT_ZLIB_SRC_RELEASE=y CT_ZLIB_SRC_RELEASE=y
# CT_ZLIB_SRC_DEVEL is not set # CT_ZLIB_SRC_DEVEL is not set
CT_ZLIB_PATCH_ORDER="global" CT_ZLIB_PATCH_ORDER="global"
CT_ZLIB_V_1_2_12=y CT_ZLIB_V_1_2_13=y
CT_ZLIB_VERSION="1.2.12" CT_ZLIB_VERSION="1.2.13"
CT_ZLIB_MIRRORS="http://downloads.sourceforge.net/project/libpng/zlib/${CT_ZLIB_VERSION} https://www.zlib.net/ https://www.zlib.net/fossils" CT_ZLIB_MIRRORS="https://github.com/madler/zlib/releases/download/v${CT_ZLIB_VERSION} https://www.zlib.net/"
CT_ZLIB_ARCHIVE_FILENAME="@{pkg_name}-@{version}" CT_ZLIB_ARCHIVE_FILENAME="@{pkg_name}-@{version}"
CT_ZLIB_ARCHIVE_DIRNAME="@{pkg_name}-@{version}" CT_ZLIB_ARCHIVE_DIRNAME="@{pkg_name}-@{version}"
CT_ZLIB_ARCHIVE_FORMATS=".tar.xz .tar.gz" CT_ZLIB_ARCHIVE_FORMATS=".tar.xz .tar.gz"
+11
View File
@@ -0,0 +1,11 @@
BASE_IMAGE_REGISTRY ?= docker.io
BASE_IMAGE_PATH ?= dockcross
BASE_IMAGE_NAME = base
BASE_IMAGE_TAG = latest
OUTPUT_IMAGE_REGISTRY ?= docker.io
OUTPUT_IMAGE_PATH ?= dockcross
OUTPUT_IMAGE_NAME = linux-mipsel-lts
# Extra tests (see CONTRIBUTING.md / Makefile "Extra tests" section)
EXTRA_TESTS = SQLite fmt
+13
View File
@@ -0,0 +1,13 @@
BASE_IMAGE_REGISTRY ?= docker.io
BASE_IMAGE_PATH ?= dockcross
BASE_IMAGE_NAME = base
BASE_IMAGE_TAG = latest
OUTPUT_IMAGE_REGISTRY ?= docker.io
OUTPUT_IMAGE_PATH ?= dockcross
OUTPUT_IMAGE_NAME = linux-ppc
# Extra tests (see CONTRIBUTING.md / Makefile "Extra tests" section)
EXTRA_TESTS = ninja openssl C SQLite llama_cpp fmt cpython
OPENSSL_ARGS = linux-ppc
CPYTHON_ARGS = --host=powerpc-unknown-linux-gnu --target=powerpc-unknown-linux-gnu
+3 -3
View File
@@ -841,9 +841,9 @@ CT_ZLIB_DEVEL_REVISION=""
CT_ZLIB_DEVEL_SUBDIR="" CT_ZLIB_DEVEL_SUBDIR=""
CT_ZLIB_DEVEL_BOOTSTRAP="" CT_ZLIB_DEVEL_BOOTSTRAP=""
CT_ZLIB_PATCH_ORDER="global" CT_ZLIB_PATCH_ORDER="global"
CT_ZLIB_V_1_2_12=y CT_ZLIB_V_1_2_13=y
CT_ZLIB_VERSION="1.2.12" CT_ZLIB_VERSION="1.2.13"
CT_ZLIB_MIRRORS="http://downloads.sourceforge.net/project/libpng/zlib/${CT_ZLIB_VERSION} https://www.zlib.net/" CT_ZLIB_MIRRORS="https://github.com/madler/zlib/releases/download/v${CT_ZLIB_VERSION} https://www.zlib.net/"
CT_ZLIB_ARCHIVE_FILENAME="@{pkg_name}-@{version}" CT_ZLIB_ARCHIVE_FILENAME="@{pkg_name}-@{version}"
CT_ZLIB_ARCHIVE_DIRNAME="@{pkg_name}-@{version}" CT_ZLIB_ARCHIVE_DIRNAME="@{pkg_name}-@{version}"
CT_ZLIB_ARCHIVE_FORMATS=".tar.xz .tar.gz" CT_ZLIB_ARCHIVE_FORMATS=".tar.xz .tar.gz"
+14
View File
@@ -0,0 +1,14 @@
BASE_IMAGE_REGISTRY ?= docker.io
BASE_IMAGE_PATH ?= dockcross
BASE_IMAGE_NAME = base
BASE_IMAGE_TAG = latest
OUTPUT_IMAGE_REGISTRY ?= docker.io
OUTPUT_IMAGE_PATH ?= dockcross
OUTPUT_IMAGE_NAME = linux-ppc64le-lts
# Extra tests (see CONTRIBUTING.md / Makefile "Extra tests" section)
EXTRA_TESTS = stockfish ninja openssl C SQLite fmt cpython
STOCKFISH_ARGS = ARCH=ppc-64
OPENSSL_ARGS = linux-ppc64le
CPYTHON_ARGS = --host=powerpc64le-unknown-linux-gnu --target=powerpc64le-unknown-linux-gnu
+14
View File
@@ -0,0 +1,14 @@
BASE_IMAGE_REGISTRY ?= docker.io
BASE_IMAGE_PATH ?= dockcross
BASE_IMAGE_NAME = base
BASE_IMAGE_TAG = latest
OUTPUT_IMAGE_REGISTRY ?= docker.io
OUTPUT_IMAGE_PATH ?= dockcross
OUTPUT_IMAGE_NAME = linux-ppc64le
# Extra tests (see CONTRIBUTING.md / Makefile "Extra tests" section)
EXTRA_TESTS = stockfish ninja openssl C SQLite llama_cpp fmt cpython
STOCKFISH_ARGS = ARCH=ppc-64
OPENSSL_ARGS = linux-ppc64le
CPYTHON_ARGS = --host=powerpc64le-unknown-linux-gnu --target=powerpc64le-unknown-linux-gnu
+3 -3
View File
@@ -919,9 +919,9 @@ CT_ZLIB_PATCH_GLOBAL=y
# CT_ZLIB_PATCH_LOCAL_BUNDLED is not set # CT_ZLIB_PATCH_LOCAL_BUNDLED is not set
# CT_ZLIB_PATCH_NONE is not set # CT_ZLIB_PATCH_NONE is not set
CT_ZLIB_PATCH_ORDER="global" CT_ZLIB_PATCH_ORDER="global"
CT_ZLIB_V_1_2_12=y CT_ZLIB_V_1_2_13=y
CT_ZLIB_VERSION="1.2.12" CT_ZLIB_VERSION="1.2.13"
CT_ZLIB_MIRRORS="http://downloads.sourceforge.net/project/libpng/zlib/${CT_ZLIB_VERSION} https://www.zlib.net/ https://www.zlib.net/fossils" CT_ZLIB_MIRRORS="https://github.com/madler/zlib/releases/download/v${CT_ZLIB_VERSION} https://www.zlib.net/"
CT_ZLIB_ARCHIVE_FILENAME="@{pkg_name}-@{version}" CT_ZLIB_ARCHIVE_FILENAME="@{pkg_name}-@{version}"
CT_ZLIB_ARCHIVE_DIRNAME="@{pkg_name}-@{version}" CT_ZLIB_ARCHIVE_DIRNAME="@{pkg_name}-@{version}"
CT_ZLIB_ARCHIVE_FORMATS=".tar.xz .tar.gz" CT_ZLIB_ARCHIVE_FORMATS=".tar.xz .tar.gz"
+13
View File
@@ -0,0 +1,13 @@
BASE_IMAGE_REGISTRY ?= docker.io
BASE_IMAGE_PATH ?= dockcross
BASE_IMAGE_NAME = base
BASE_IMAGE_TAG = latest
OUTPUT_IMAGE_REGISTRY ?= docker.io
OUTPUT_IMAGE_PATH ?= dockcross
OUTPUT_IMAGE_NAME = linux-riscv32
# Extra tests (see CONTRIBUTING.md / Makefile "Extra tests" section)
EXTRA_TESTS = ninja openssl SQLite fmt cpython
OPENSSL_ARGS = linux-generic32
CPYTHON_ARGS = --host=riscv32-unknown-linux-gnu --target=riscv32-unknown-linux-gnu
+3 -3
View File
@@ -919,9 +919,9 @@ CT_ZLIB_PATCH_GLOBAL=y
# CT_ZLIB_PATCH_LOCAL_BUNDLED is not set # CT_ZLIB_PATCH_LOCAL_BUNDLED is not set
# CT_ZLIB_PATCH_NONE is not set # CT_ZLIB_PATCH_NONE is not set
CT_ZLIB_PATCH_ORDER="global" CT_ZLIB_PATCH_ORDER="global"
CT_ZLIB_V_1_2_12=y CT_ZLIB_V_1_2_13=y
CT_ZLIB_VERSION="1.2.12" CT_ZLIB_VERSION="1.2.13"
CT_ZLIB_MIRRORS="http://downloads.sourceforge.net/project/libpng/zlib/${CT_ZLIB_VERSION} https://www.zlib.net/ https://www.zlib.net/fossils" CT_ZLIB_MIRRORS="https://github.com/madler/zlib/releases/download/v${CT_ZLIB_VERSION} https://www.zlib.net/"
CT_ZLIB_ARCHIVE_FILENAME="@{pkg_name}-@{version}" CT_ZLIB_ARCHIVE_FILENAME="@{pkg_name}-@{version}"
CT_ZLIB_ARCHIVE_DIRNAME="@{pkg_name}-@{version}" CT_ZLIB_ARCHIVE_DIRNAME="@{pkg_name}-@{version}"
CT_ZLIB_ARCHIVE_FORMATS=".tar.xz .tar.gz" CT_ZLIB_ARCHIVE_FORMATS=".tar.xz .tar.gz"
+13
View File
@@ -0,0 +1,13 @@
BASE_IMAGE_REGISTRY ?= docker.io
BASE_IMAGE_PATH ?= dockcross
BASE_IMAGE_NAME = base
BASE_IMAGE_TAG = latest
OUTPUT_IMAGE_REGISTRY ?= docker.io
OUTPUT_IMAGE_PATH ?= dockcross
OUTPUT_IMAGE_NAME = linux-riscv64
# Extra tests (see CONTRIBUTING.md / Makefile "Extra tests" section)
EXTRA_TESTS = ninja openssl SQLite fmt cpython
OPENSSL_ARGS = linux-generic64
CPYTHON_ARGS = --host=riscv64-unknown-linux-gnu --target=riscv64-unknown-linux-gnu
+3 -3
View File
@@ -804,9 +804,9 @@ CT_ZLIB_PKG_NAME="zlib"
CT_ZLIB_SRC_RELEASE=y CT_ZLIB_SRC_RELEASE=y
# CT_ZLIB_SRC_DEVEL is not set # CT_ZLIB_SRC_DEVEL is not set
CT_ZLIB_PATCH_ORDER="global" CT_ZLIB_PATCH_ORDER="global"
CT_ZLIB_V_1_2_12=y CT_ZLIB_V_1_2_13=y
CT_ZLIB_VERSION="1.2.12" CT_ZLIB_VERSION="1.2.13"
CT_ZLIB_MIRRORS="http://downloads.sourceforge.net/project/libpng/zlib/${CT_ZLIB_VERSION} https://www.zlib.net/ https://www.zlib.net/fossils" CT_ZLIB_MIRRORS="https://github.com/madler/zlib/releases/download/v${CT_ZLIB_VERSION} https://www.zlib.net/"
CT_ZLIB_ARCHIVE_FILENAME="@{pkg_name}-@{version}" CT_ZLIB_ARCHIVE_FILENAME="@{pkg_name}-@{version}"
CT_ZLIB_ARCHIVE_DIRNAME="@{pkg_name}-@{version}" CT_ZLIB_ARCHIVE_DIRNAME="@{pkg_name}-@{version}"
CT_ZLIB_ARCHIVE_FORMATS=".tar.xz .tar.gz" CT_ZLIB_ARCHIVE_FORMATS=".tar.xz .tar.gz"
+13
View File
@@ -0,0 +1,13 @@
BASE_IMAGE_REGISTRY ?= docker.io
BASE_IMAGE_PATH ?= dockcross
BASE_IMAGE_NAME = base
BASE_IMAGE_TAG = latest
OUTPUT_IMAGE_REGISTRY ?= docker.io
OUTPUT_IMAGE_PATH ?= dockcross
OUTPUT_IMAGE_NAME = linux-s390x
# Extra tests (see CONTRIBUTING.md / Makefile "Extra tests" section)
EXTRA_TESTS = ninja openssl C SQLite fmt cpython
OPENSSL_ARGS = linux64-s390x
CPYTHON_ARGS = --host=s390x-ibm-linux-gnu --target=s390x-ibm-linux-gnu
+13
View File
@@ -0,0 +1,13 @@
BASE_IMAGE_REGISTRY ?= docker.io
BASE_IMAGE_PATH ?= dockcross
BASE_IMAGE_NAME = base
BASE_IMAGE_TAG = latest
OUTPUT_IMAGE_REGISTRY ?= docker.io
OUTPUT_IMAGE_PATH ?= dockcross
OUTPUT_IMAGE_NAME = linux-x64-clang
# Extra tests (see CONTRIBUTING.md / Makefile "Extra tests" section)
EXTRA_TESTS = stockfish ninja openssl C SQLite fmt cpython
STOCKFISH_ARGS = ARCH=x86-64-modern COMP=clang
OPENSSL_ARGS = linux-x86_64-clang
+15
View File
@@ -0,0 +1,15 @@
BASE_IMAGE_REGISTRY ?= docker.io
BASE_IMAGE_PATH ?= dockcross
BASE_IMAGE_NAME = base
BASE_IMAGE_TAG = latest
OUTPUT_IMAGE_REGISTRY ?= docker.io
OUTPUT_IMAGE_PATH ?= dockcross
OUTPUT_IMAGE_NAME = linux-x64-tinycc
TEST_IMAGE_ARGS = --languages C
# Extra tests (see CONTRIBUTING.md / Makefile "Extra tests" section)
EXTRA_TESTS = stockfish ninja openssl fmt
STOCKFISH_ARGS = ARCH=x86-64-modern
OPENSSL_ARGS = linux-generic64 no-tests no-asm no-hw no-dtls no-shared no-dso
+13
View File
@@ -0,0 +1,13 @@
BASE_IMAGE_REGISTRY ?= docker.io
BASE_IMAGE_PATH ?= dockcross
BASE_IMAGE_NAME = base
BASE_IMAGE_TAG = latest
OUTPUT_IMAGE_REGISTRY ?= docker.io
OUTPUT_IMAGE_PATH ?= dockcross
OUTPUT_IMAGE_NAME = linux-x64
# Extra tests (see CONTRIBUTING.md / Makefile "Extra tests" section)
EXTRA_TESTS = stockfish ninja openssl C SQLite fmt cpython
STOCKFISH_ARGS = ARCH=x86-64-modern
OPENSSL_ARGS = linux-x86_64
+13
View File
@@ -0,0 +1,13 @@
BASE_IMAGE_REGISTRY ?= docker.io
BASE_IMAGE_PATH ?= dockcross
BASE_IMAGE_NAME = base
BASE_IMAGE_TAG = latest
OUTPUT_IMAGE_REGISTRY ?= docker.io
OUTPUT_IMAGE_PATH ?= dockcross
OUTPUT_IMAGE_NAME = linux-x86
# Extra tests (see CONTRIBUTING.md / Makefile "Extra tests" section)
EXTRA_TESTS = stockfish ninja openssl C SQLite fmt cpython
STOCKFISH_ARGS = ARCH=x86-32-sse41-popcnt
OPENSSL_ARGS = linux-x86
+14
View File
@@ -0,0 +1,14 @@
BASE_IMAGE_REGISTRY ?= docker.io
BASE_IMAGE_PATH ?= dockcross
BASE_IMAGE_NAME = base
BASE_IMAGE_TAG = latest
OUTPUT_IMAGE_REGISTRY ?= docker.io
OUTPUT_IMAGE_PATH ?= dockcross
OUTPUT_IMAGE_NAME = linux-x86_64-full
# Extra tests (see CONTRIBUTING.md / Makefile "Extra tests" section)
EXTRA_TESTS = stockfish ninja openssl C SQLite fmt cpython
STOCKFISH_ARGS = ARCH=x86-64-modern
OPENSSL_ARGS = linux-x86_64
CPYTHON_ARGS = --host=x86_64-buildroot-linux-gnu --target=x86_64-buildroot-linux-gnu
+3 -3
View File
@@ -733,9 +733,9 @@ CT_ZLIB_PKG_NAME="zlib"
CT_ZLIB_SRC_RELEASE=y CT_ZLIB_SRC_RELEASE=y
# CT_ZLIB_SRC_DEVEL is not set # CT_ZLIB_SRC_DEVEL is not set
CT_ZLIB_PATCH_ORDER="global" CT_ZLIB_PATCH_ORDER="global"
CT_ZLIB_V_1_2_12=y CT_ZLIB_V_1_2_13=y
CT_ZLIB_VERSION="1.2.12" CT_ZLIB_VERSION="1.2.13"
CT_ZLIB_MIRRORS="http://downloads.sourceforge.net/project/libpng/zlib/${CT_ZLIB_VERSION} https://www.zlib.net/ https://www.zlib.net/fossils" CT_ZLIB_MIRRORS="https://github.com/madler/zlib/releases/download/v${CT_ZLIB_VERSION} https://www.zlib.net/"
CT_ZLIB_ARCHIVE_FILENAME="@{pkg_name}-@{version}" CT_ZLIB_ARCHIVE_FILENAME="@{pkg_name}-@{version}"
CT_ZLIB_ARCHIVE_DIRNAME="@{pkg_name}-@{version}" CT_ZLIB_ARCHIVE_DIRNAME="@{pkg_name}-@{version}"
CT_ZLIB_ARCHIVE_FORMATS=".tar.xz .tar.gz" CT_ZLIB_ARCHIVE_FORMATS=".tar.xz .tar.gz"
+13
View File
@@ -0,0 +1,13 @@
BASE_IMAGE_REGISTRY ?= docker.io
BASE_IMAGE_PATH ?= dockcross
BASE_IMAGE_NAME = base
BASE_IMAGE_TAG = latest
OUTPUT_IMAGE_REGISTRY ?= docker.io
OUTPUT_IMAGE_PATH ?= dockcross
OUTPUT_IMAGE_NAME = linux-xtensa-uclibc
# Extra tests (see CONTRIBUTING.md / Makefile "Extra tests" section)
EXTRA_TESTS = ninja openssl cpython
OPENSSL_ARGS = linux-generic64 no-asm no-threads no-engine no-hw no-weak-ssl-ciphers no-dtls no-shared no-dso
CPYTHON_ARGS = --host=xtensa-fsf-linux-uclibc --target=xtensa-fsf-linux-uclibc
+1 -1
View File
@@ -806,7 +806,7 @@ CT_ZLIB_PKG_NAME="zlib"
CT_ZLIB_SRC_RELEASE=y CT_ZLIB_SRC_RELEASE=y
# CT_ZLIB_SRC_DEVEL is not set # CT_ZLIB_SRC_DEVEL is not set
CT_ZLIB_PATCH_ORDER="global" CT_ZLIB_PATCH_ORDER="global"
CT_ZLIB_V_1_2_12=y CT_ZLIB_V_1_2_13=y
CT_ZLIB_VERSION="1.2.13" CT_ZLIB_VERSION="1.2.13"
CT_ZLIB_MIRRORS="https://github.com/madler/zlib/releases/download/v${CT_ZLIB_VERSION} https://www.zlib.net/ https://www.zlib.net/fossils" CT_ZLIB_MIRRORS="https://github.com/madler/zlib/releases/download/v${CT_ZLIB_VERSION} https://www.zlib.net/ https://www.zlib.net/fossils"
+25
View File
@@ -0,0 +1,25 @@
# manylinux2014-aarch64 is FROM ${ORG}/manylinux2014-x64:latest (cross toolchain
# layered on top of the x64 manylinux image, so it can run on an x86_64 host).
BASE_IMAGE_REGISTRY ?= docker.io
BASE_IMAGE_PATH ?=
BASE_IMAGE_NAME = manylinux2014-x64
BASE_IMAGE_TAG = latest
OUTPUT_IMAGE_REGISTRY ?= docker.io
OUTPUT_IMAGE_PATH ?= dockcross
OUTPUT_IMAGE_NAME = manylinux2014-aarch64
# Dockerfile.in ADDs manylinux2014-aarch64/xc_script and COPYs
# manylinux2014-aarch64/Toolchain.cmake, so the build context has to be the
# repository root, not this preset's own directory.
BUILD_CONTEXT_DIR = $(PRESET_DIR)
DEPENDS_ON = manylinux2014-x64.build
TEST_IMAGE_CMD = /opt/python/cp311-cp311/bin/python test/run.py
TEST_IMAGE_ARGS =
# Extra tests (see CONTRIBUTING.md / Makefile "Extra tests" section)
EXTRA_TESTS = openssl SQLite cpython
OPENSSL_ARGS = linux-aarch64
CPYTHON_ARGS = --host=aarch64-unknown-linux-gnu --target=aarch64-unknown-linux-gnu
+27
View File
@@ -0,0 +1,27 @@
# manylinux2014-x64 is FROM quay.io/pypa/manylinux2014_x86_64 directly (hardcoded in
# Dockerfile.in, not parameterized via ORG/BASE_IMAGE). BASE_IMAGE_* below is only
# informational to satisfy the mandatory-var guard.
BASE_IMAGE_REGISTRY ?= quay.io
BASE_IMAGE_PATH ?= pypa
BASE_IMAGE_NAME = manylinux2014_x86_64
BASE_IMAGE_TAG = 2024-07-20-e0def9a
OUTPUT_IMAGE_REGISTRY ?= docker.io
OUTPUT_IMAGE_PATH ?= dockcross
OUTPUT_IMAGE_NAME = manylinux2014-x64
# Dockerfile.in COPYs linux-x64/... and manylinux2014-x64/Toolchain.cmake, so the
# build context has to be the repository root, not this preset's own directory.
BUILD_CONTEXT_DIR = $(PRESET_DIR)
TEST_IMAGE_CMD = /opt/python/cp311-cp311/bin/python test/run.py
TEST_IMAGE_ARGS =
# Extra tests (see CONTRIBUTING.md / Makefile "Extra tests" section)
EXTRA_TESTS = stockfish ninja openssl SQLite fmt cpython
STOCKFISH_ARGS = ARCH=x86-64-modern
OPENSSL_ARGS = linux-x86_64
# FROM an external upstream image, not our own base - opt out of the
# Makefile's "DEPENDS_ON = base.build" default.
DEPENDS_ON =
+26
View File
@@ -0,0 +1,26 @@
# manylinux2014-x86 is FROM quay.io/pypa/manylinux2014_i686 directly (hardcoded in
# Dockerfile.in). BASE_IMAGE_* below is only informational to satisfy the guard.
BASE_IMAGE_REGISTRY ?= quay.io
BASE_IMAGE_PATH ?= pypa
BASE_IMAGE_NAME = manylinux2014_i686
BASE_IMAGE_TAG = 2025-02-23-361da4c
OUTPUT_IMAGE_REGISTRY ?= docker.io
OUTPUT_IMAGE_PATH ?= dockcross
OUTPUT_IMAGE_NAME = manylinux2014-x86
# Dockerfile.in COPYs linux-x86/... and manylinux2014-x86/Toolchain.cmake, so the
# build context has to be the repository root, not this preset's own directory.
BUILD_CONTEXT_DIR = $(PRESET_DIR)
TEST_IMAGE_CMD = /opt/python/cp311-cp311/bin/python test/run.py
TEST_IMAGE_ARGS =
# Extra tests (see CONTRIBUTING.md / Makefile "Extra tests" section)
EXTRA_TESTS = stockfish ninja openssl SQLite fmt cpython
STOCKFISH_ARGS = ARCH=x86-32-sse41-popcnt
OPENSSL_ARGS = linux-x86
# FROM an external upstream image, not our own base - opt out of the
# Makefile's "DEPENDS_ON = base.build" default.
DEPENDS_ON =
+1 -1
View File
@@ -812,7 +812,7 @@ CT_ZLIB_PKG_NAME="zlib"
CT_ZLIB_SRC_RELEASE=y CT_ZLIB_SRC_RELEASE=y
# CT_ZLIB_SRC_DEVEL is not set # CT_ZLIB_SRC_DEVEL is not set
CT_ZLIB_PATCH_ORDER="global" CT_ZLIB_PATCH_ORDER="global"
CT_ZLIB_V_1_2_12=y CT_ZLIB_V_1_2_13=y
CT_ZLIB_VERSION="1.2.13" CT_ZLIB_VERSION="1.2.13"
CT_ZLIB_MIRRORS="https://github.com/madler/zlib/releases/download/v${CT_ZLIB_VERSION} https://www.zlib.net/ https://www.zlib.net/fossils" CT_ZLIB_MIRRORS="https://github.com/madler/zlib/releases/download/v${CT_ZLIB_VERSION} https://www.zlib.net/ https://www.zlib.net/fossils"
+25
View File
@@ -0,0 +1,25 @@
# manylinux_2_28-aarch64 is FROM ${ORG}/manylinux_2_28-x64:latest (cross toolchain
# layered on top of the x64 manylinux image, so it can run on an x86_64 host).
BASE_IMAGE_REGISTRY ?= docker.io
BASE_IMAGE_PATH ?=
BASE_IMAGE_NAME = manylinux_2_28-x64
BASE_IMAGE_TAG = latest
OUTPUT_IMAGE_REGISTRY ?= docker.io
OUTPUT_IMAGE_PATH ?= dockcross
OUTPUT_IMAGE_NAME = manylinux_2_28-aarch64
# Dockerfile.in ADDs manylinux_2_28-aarch64/xc_script and COPYs
# manylinux_2_28-aarch64/Toolchain.cmake, so the build context has to be the
# repository root, not this preset's own directory.
BUILD_CONTEXT_DIR = $(PRESET_DIR)
DEPENDS_ON = manylinux_2_28-x64.build
TEST_IMAGE_CMD = /opt/python/cp310-cp310/bin/python test/run.py
TEST_IMAGE_ARGS =
# Extra tests (see CONTRIBUTING.md / Makefile "Extra tests" section)
EXTRA_TESTS = openssl SQLite cpython
OPENSSL_ARGS = linux-aarch64
CPYTHON_ARGS = --host=aarch64-unknown-linux-gnu --target=aarch64-unknown-linux-gnu
+26
View File
@@ -0,0 +1,26 @@
# manylinux_2_28-x64 is FROM quay.io/pypa/manylinux_2_28_x86_64 directly (hardcoded
# in Dockerfile.in). BASE_IMAGE_* below is only informational to satisfy the guard.
BASE_IMAGE_REGISTRY ?= quay.io
BASE_IMAGE_PATH ?= pypa
BASE_IMAGE_NAME = manylinux_2_28_x86_64
BASE_IMAGE_TAG = 2025.08.12-1
OUTPUT_IMAGE_REGISTRY ?= docker.io
OUTPUT_IMAGE_PATH ?= dockcross
OUTPUT_IMAGE_NAME = manylinux_2_28-x64
# Dockerfile.in COPYs linux-x64/... and manylinux_2_28-x64/Toolchain.cmake, so the
# build context has to be the repository root, not this preset's own directory.
BUILD_CONTEXT_DIR = $(PRESET_DIR)
TEST_IMAGE_CMD = /opt/python/cp310-cp310/bin/python test/run.py
TEST_IMAGE_ARGS =
# Extra tests (see CONTRIBUTING.md / Makefile "Extra tests" section)
EXTRA_TESTS = stockfish ninja openssl SQLite fmt cpython
STOCKFISH_ARGS = ARCH=x86-64-modern
OPENSSL_ARGS = linux-x86_64
# FROM an external upstream image, not our own base - opt out of the
# Makefile's "DEPENDS_ON = base.build" default.
DEPENDS_ON =
+1 -1
View File
@@ -827,7 +827,7 @@ CT_ZLIB_PKG_NAME="zlib"
CT_ZLIB_SRC_RELEASE=y CT_ZLIB_SRC_RELEASE=y
# CT_ZLIB_SRC_DEVEL is not set # CT_ZLIB_SRC_DEVEL is not set
CT_ZLIB_PATCH_ORDER="global" CT_ZLIB_PATCH_ORDER="global"
CT_ZLIB_V_1_2_12=y CT_ZLIB_V_1_2_13=y
CT_ZLIB_VERSION="1.2.13" CT_ZLIB_VERSION="1.2.13"
CT_ZLIB_MIRRORS="https://github.com/madler/zlib/releases/download/v${CT_ZLIB_VERSION} https://www.zlib.net/ https://www.zlib.net/fossils" CT_ZLIB_MIRRORS="https://github.com/madler/zlib/releases/download/v${CT_ZLIB_VERSION} https://www.zlib.net/ https://www.zlib.net/fossils"
+25
View File
@@ -0,0 +1,25 @@
# manylinux_2_34-aarch64 is FROM ${ORG}/manylinux_2_34-x64:latest (cross toolchain
# layered on top of the x64 manylinux image, so it can run on an x86_64 host).
BASE_IMAGE_REGISTRY ?= docker.io
BASE_IMAGE_PATH ?=
BASE_IMAGE_NAME = manylinux_2_34-x64
BASE_IMAGE_TAG = latest
OUTPUT_IMAGE_REGISTRY ?= docker.io
OUTPUT_IMAGE_PATH ?= dockcross
OUTPUT_IMAGE_NAME = manylinux_2_34-aarch64
# Dockerfile.in ADDs manylinux_2_34-aarch64/xc_script and COPYs
# manylinux_2_34-aarch64/Toolchain.cmake, so the build context has to be the
# repository root, not this preset's own directory.
BUILD_CONTEXT_DIR = $(PRESET_DIR)
DEPENDS_ON = manylinux_2_34-x64.build
TEST_IMAGE_CMD = /opt/python/cp310-cp310/bin/python test/run.py
TEST_IMAGE_ARGS =
# Extra tests (see CONTRIBUTING.md / Makefile "Extra tests" section)
EXTRA_TESTS = openssl SQLite cpython
OPENSSL_ARGS = linux-aarch64
CPYTHON_ARGS = --host=aarch64-unknown-linux-gnu --target=aarch64-unknown-linux-gnu
+21
View File
@@ -0,0 +1,21 @@
# manylinux_2_34-x64 is FROM quay.io/pypa/manylinux_2_34_x86_64 directly (hardcoded
# in Dockerfile.in). BASE_IMAGE_* below is only informational to satisfy the guard.
BASE_IMAGE_REGISTRY ?= quay.io
BASE_IMAGE_PATH ?= pypa
BASE_IMAGE_NAME = manylinux_2_34_x86_64
BASE_IMAGE_TAG = 2025-02-02-9ae4a5a
OUTPUT_IMAGE_REGISTRY ?= docker.io
OUTPUT_IMAGE_PATH ?= dockcross
OUTPUT_IMAGE_NAME = manylinux_2_34-x64
# Dockerfile.in COPYs linux-x64/... and manylinux_2_34-x64/Toolchain.cmake, so the
# build context has to be the repository root, not this preset's own directory.
BUILD_CONTEXT_DIR = $(PRESET_DIR)
TEST_IMAGE_CMD = /opt/python/cp310-cp310/bin/python test/run.py
TEST_IMAGE_ARGS =
# FROM an external upstream image, not our own base - opt out of the
# Makefile's "DEPENDS_ON = base.build" default.
DEPENDS_ON =
+19
View File
@@ -0,0 +1,19 @@
# Preset for the "base" image, built from the repository root Dockerfile.in.
# Every other preset is built FROM ${ORG}/base:latest.
BASE_IMAGE_REGISTRY ?= docker.io
BASE_IMAGE_PATH ?=
BASE_IMAGE_NAME = debian
BASE_IMAGE_TAG = bookworm-slim
OUTPUT_IMAGE_REGISTRY ?= docker.io
OUTPUT_IMAGE_PATH ?= dockcross
OUTPUT_IMAGE_NAME = base
TEST_IMAGE_CMD = true
TEST_IMAGE_ARGS =
RUN_IMAGE_CMD = /bin/bash
RUN_IMAGE_ARGS =
# Not FROM itself - opt out of the Makefile's "DEPENDS_ON = base.build" default.
DEPENDS_ON =
+5 -1
View File
@@ -9,7 +9,11 @@ ENV WASI_VERSION=27
ENV WASI_VERSION_FULL=${WASI_VERSION}.0 ENV WASI_VERSION_FULL=${WASI_VERSION}.0
ENV WASMTIME_HOME=/wasi-runtimes/wasmtime ENV WASMTIME_HOME=/wasi-runtimes/wasmtime
RUN mkdir -p ${WASMTIME_HOME} && curl https://wasmtime.dev/install.sh -sSf | bash # Pinned below v47.0.0: that release removes wasi-threads/wasi-common support
# entirely (see https://github.com/bytecodealliance/rfcs/pull/47), which the
# wasi-sdk sysroot test suite below relies on for its threaded targets.
ENV WASMTIME_VERSION=v46.0.1
RUN mkdir -p ${WASMTIME_HOME} && curl https://wasmtime.dev/install.sh -sSf | bash -s -- --version ${WASMTIME_VERSION}
ENV PATH="$WASMTIME_HOME/bin:$PATH" ENV PATH="$WASMTIME_HOME/bin:$PATH"
COPY download-build-install-wasi-sdk.sh /usr/local/bin/ COPY download-build-install-wasi-sdk.sh /usr/local/bin/
@@ -17,6 +17,22 @@ git fetch origin --tags
git remote add upstream https://github.com/WebAssembly/wasi-sdk git remote add upstream https://github.com/WebAssembly/wasi-sdk
git fetch upstream wasi-sdk-${WASI_VERSION} git fetch upstream wasi-sdk-${WASI_VERSION}
# Recent wasmtime releases require the threads and shared-memory wasm
# features to be enabled explicitly. WASI_SDK_RUNWASI is a single cache
# variable shared by every test target (wasi, wasip1, wasip2, and their
# -threads variants), so overriding it globally breaks the non-threads
# targets. Instead, route only the `*-threads` targets through the
# wrapper by patching the per-test runner selection in tests/CMakeLists.txt.
cat > /usr/local/bin/wasmtime-run-threads.sh <<'EOS'
#!/usr/bin/env bash
exec wasmtime run -W threads=y,shared-memory=y -S threads=y,cli=y "$@"
EOS
chmod +x /usr/local/bin/wasmtime-run-threads.sh
sed -i '/if(target MATCHES threads)/a\
if(runwasi)\
set(runwasi "/usr/local/bin/wasmtime-run-threads.sh")\
endif()' tests/CMakeLists.txt
./ci/build.sh ./ci/build.sh
cd build/dist cd build/dist
tar xzf wasi-toolchain-*.tar.gz --strip-components=1 -C /opt/wasi-sdk tar xzf wasi-toolchain-*.tar.gz --strip-components=1 -C /opt/wasi-sdk
+8
View File
@@ -0,0 +1,8 @@
BASE_IMAGE_REGISTRY ?= docker.io
BASE_IMAGE_PATH ?= dockcross
BASE_IMAGE_NAME = base
BASE_IMAGE_TAG = latest
OUTPUT_IMAGE_REGISTRY ?= docker.io
OUTPUT_IMAGE_PATH ?= dockcross
OUTPUT_IMAGE_NAME = web-wasi-emulated-threads
+12
View File
@@ -0,0 +1,12 @@
# web-wasi-threads is FROM ${ORG}/web-wasi:latest (wasm threading proposal layered
# on top of web-wasi), so web-wasi has to be built first.
BASE_IMAGE_REGISTRY ?= docker.io
BASE_IMAGE_PATH ?=
BASE_IMAGE_NAME = web-wasi
BASE_IMAGE_TAG = latest
OUTPUT_IMAGE_REGISTRY ?= docker.io
OUTPUT_IMAGE_PATH ?= dockcross
OUTPUT_IMAGE_NAME = web-wasi-threads
DEPENDS_ON = web-wasi.build
+8
View File
@@ -0,0 +1,8 @@
BASE_IMAGE_REGISTRY ?= docker.io
BASE_IMAGE_PATH ?= dockcross
BASE_IMAGE_NAME = base
BASE_IMAGE_TAG = latest
OUTPUT_IMAGE_REGISTRY ?= docker.io
OUTPUT_IMAGE_PATH ?= dockcross
OUTPUT_IMAGE_NAME = web-wasi
+25
View File
@@ -0,0 +1,25 @@
# web-wasm is FROM emscripten/emsdk:<version><arch-tag> directly (upstream image,
# not our own base). The arch-tag ("" for amd64, "-arm64" for arm64) is required
# because emscripten/emsdk does not publish a single multi-arch manifest.
BASE_IMAGE_REGISTRY ?= docker.io
BASE_IMAGE_PATH ?= emscripten
BASE_IMAGE_NAME = emsdk
BASE_IMAGE_TAG = 5.0.1
OUTPUT_IMAGE_REGISTRY ?= docker.io
OUTPUT_IMAGE_PATH ?= dockcross
OUTPUT_IMAGE_NAME = web-wasm
EMSCRIPTEN_HOST_ARCH_TAG = $(if $(filter arm64,$(HOST_ARCH)),-arm64,)
EXTRA_BUILD_ARGS = --build-arg HOST_ARCH_TAG=$(EMSCRIPTEN_HOST_ARCH_TAG)
TEST_IMAGE_CMD = python test/run.py
TEST_IMAGE_ARGS = --exe-suffix ".js"
# Extra tests (see CONTRIBUTING.md / Makefile "Extra tests" section)
EXTRA_TESTS = SQLite
RAYLIB_ARGS = -DPLATFORM=Web
# FROM an external upstream image, not our own base - opt out of the
# Makefile's "DEPENDS_ON = base.build" default.
DEPENDS_ON =
+13
View File
@@ -0,0 +1,13 @@
BASE_IMAGE_REGISTRY ?= docker.io
BASE_IMAGE_PATH ?= dockcross
BASE_IMAGE_NAME = base
BASE_IMAGE_TAG = latest
OUTPUT_IMAGE_REGISTRY ?= docker.io
OUTPUT_IMAGE_PATH ?= dockcross
OUTPUT_IMAGE_NAME = windows-arm64
TEST_IMAGE_ARGS = --exe-suffix ".exe"
# Extra tests (see CONTRIBUTING.md / Makefile "Extra tests" section)
EXTRA_TESTS = ninja fmt raylib
+13
View File
@@ -0,0 +1,13 @@
BASE_IMAGE_REGISTRY ?= docker.io
BASE_IMAGE_PATH ?= dockcross
BASE_IMAGE_NAME = base
BASE_IMAGE_TAG = latest
OUTPUT_IMAGE_REGISTRY ?= docker.io
OUTPUT_IMAGE_PATH ?= dockcross
OUTPUT_IMAGE_NAME = windows-armv7
TEST_IMAGE_ARGS = --exe-suffix ".exe"
# Extra tests (see CONTRIBUTING.md / Makefile "Extra tests" section)
EXTRA_TESTS = ninja fmt raylib
+13
View File
@@ -0,0 +1,13 @@
BASE_IMAGE_REGISTRY ?= docker.io
BASE_IMAGE_PATH ?= dockcross
BASE_IMAGE_NAME = base
BASE_IMAGE_TAG = latest
OUTPUT_IMAGE_REGISTRY ?= docker.io
OUTPUT_IMAGE_PATH ?= dockcross
OUTPUT_IMAGE_NAME = windows-shared-x64-posix
TEST_IMAGE_ARGS = --exe-suffix ".exe"
# Extra tests (see CONTRIBUTING.md / Makefile "Extra tests" section)
EXTRA_TESTS = fmt
+13
View File
@@ -0,0 +1,13 @@
BASE_IMAGE_REGISTRY ?= docker.io
BASE_IMAGE_PATH ?= dockcross
BASE_IMAGE_NAME = base
BASE_IMAGE_TAG = latest
OUTPUT_IMAGE_REGISTRY ?= docker.io
OUTPUT_IMAGE_PATH ?= dockcross
OUTPUT_IMAGE_NAME = windows-shared-x64
TEST_IMAGE_ARGS = --exe-suffix ".exe"
# Extra tests (see CONTRIBUTING.md / Makefile "Extra tests" section)
EXTRA_TESTS = fmt
+10
View File
@@ -0,0 +1,10 @@
BASE_IMAGE_REGISTRY ?= docker.io
BASE_IMAGE_PATH ?= dockcross
BASE_IMAGE_NAME = base
BASE_IMAGE_TAG = latest
OUTPUT_IMAGE_REGISTRY ?= docker.io
OUTPUT_IMAGE_PATH ?= dockcross
OUTPUT_IMAGE_NAME = windows-shared-x86
TEST_IMAGE_ARGS = --exe-suffix ".exe"
+14
View File
@@ -0,0 +1,14 @@
BASE_IMAGE_REGISTRY ?= docker.io
BASE_IMAGE_PATH ?= dockcross
BASE_IMAGE_NAME = base
BASE_IMAGE_TAG = latest
OUTPUT_IMAGE_REGISTRY ?= docker.io
OUTPUT_IMAGE_PATH ?= dockcross
OUTPUT_IMAGE_NAME = windows-static-x64-posix
TEST_IMAGE_ARGS = --exe-suffix ".exe"
# Extra tests (see CONTRIBUTING.md / Makefile "Extra tests" section)
EXTRA_TESTS = stockfish fmt
STOCKFISH_ARGS = ARCH=x86-64-modern COMP=mingw
+14
View File
@@ -0,0 +1,14 @@
BASE_IMAGE_REGISTRY ?= docker.io
BASE_IMAGE_PATH ?= dockcross
BASE_IMAGE_NAME = base
BASE_IMAGE_TAG = latest
OUTPUT_IMAGE_REGISTRY ?= docker.io
OUTPUT_IMAGE_PATH ?= dockcross
OUTPUT_IMAGE_NAME = windows-static-x64
TEST_IMAGE_ARGS = --exe-suffix ".exe"
# Extra tests (see CONTRIBUTING.md / Makefile "Extra tests" section)
EXTRA_TESTS = stockfish fmt
STOCKFISH_ARGS = ARCH=x86-64-modern COMP=mingw
+14
View File
@@ -0,0 +1,14 @@
BASE_IMAGE_REGISTRY ?= docker.io
BASE_IMAGE_PATH ?= dockcross
BASE_IMAGE_NAME = base
BASE_IMAGE_TAG = latest
OUTPUT_IMAGE_REGISTRY ?= docker.io
OUTPUT_IMAGE_PATH ?= dockcross
OUTPUT_IMAGE_NAME = windows-static-x86
TEST_IMAGE_ARGS = --exe-suffix ".exe"
# Extra tests (see CONTRIBUTING.md / Makefile "Extra tests" section)
EXTRA_TESTS = stockfish fmt
STOCKFISH_ARGS = ARCH=x86-32-sse41-popcnt COMP=mingw