Compare commits

..

2 Commits

Author SHA1 Message Date
Bensuperpc d01cbaa098 Enable SDL2 and Qt6 2025-06-23 20:44:55 +02:00
Bensuperpc 76dedb50da Update linux-arm64-full
Update buildroot to 2025.05 (from 2021.09.20)
Improve build speed (remove unused apps and libs)
Update scripts
Update tests

Signed-off-by: Bensuperpc <bensuperpc@gmail.com>
2025-06-22 21:09:57 +02:00
144 changed files with 3321 additions and 6375 deletions
+8 -8
View File
@@ -1,22 +1,22 @@
name: 'Close stale issues and PRs' name: 'Close stale issues and PRs'
on: on:
schedule: schedule:
- cron: '0 */12 * * *' - cron: '0 0 */2 * *'
jobs: jobs:
stale: stale:
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- uses: actions/stale@v10 - uses: actions/stale@v9
with: with:
repo-token: ${{ secrets.GITHUB_TOKEN }} repo-token: ${{ secrets.GITHUB_TOKEN }}
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 240 days with no activity. Remove stale label or comment or this will be closed in 90 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 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.' 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 30 days.'
close-issue-message: 'This issue was closed because it has been stale for 90 days with no activity.' close-issue-message: 'This issue 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.' close-pr-message: 'This PR was closed because it has been stalled for 30 days with no activity.'
days-before-issue-stale: 240 days-before-issue-stale: 240
days-before-pr-stale: 240 days-before-pr-stale: 240
days-before-issue-close: 90 days-before-issue-close: 60
days-before-pr-close: 90 days-before-pr-close: 60
+1427 -161
View File
File diff suppressed because it is too large Load Diff
+1 -1
View File
@@ -18,7 +18,7 @@ jobs:
name: Shellcheck name: Shellcheck
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- uses: actions/checkout@v6 - uses: actions/checkout@v4
- name: Run ShellCheck - name: Run ShellCheck
uses: ludeeus/action-shellcheck@master uses: ludeeus/action-shellcheck@master
with: with:
-1
View File
@@ -1,5 +1,4 @@
bin bin
.dockcross-test-cache
dockcross dockcross
dockcross-* dockcross-*
build build
-3
View File
@@ -1,3 +0,0 @@
{
"python-envs.defaultEnvManager": "ms-python.python:system"
}
+46 -72
View File
@@ -198,51 +198,39 @@ Once this part is finished, there must be 3 files in the `linux-arm64` folder:
### Makefile ### Makefile
The [Makefile](Makefile) is generic: it knows how to generate/build/test/push For this last part, we will see how to add the image to the [Makefile](Makefile) and to a github action.
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.
To add the image to the build system, create **`linux-arm64/preset.mk`**: You need to add the image/folder name (**linux-arm64**) to the **STANDARD_IMAGES** variable in the [Makefile](Makefile):
```make ```make
BASE_IMAGE_REGISTRY ?= docker.io # These images are built using the "build implicit rule"
BASE_IMAGE_PATH ?= dockcross STANDARD_IMAGES = android-arm android-arm64 android-x86 android-x86_64 \
BASE_IMAGE_NAME = base linux-x86 linux-x64 linux-x64-clang linux-arm64 linux-arm64-musl linux-arm64-full \
BASE_IMAGE_TAG = latest 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 \
OUTPUT_IMAGE_REGISTRY ?= docker.io linux-armv7l-musl linux-armv7 linux-armv7a linux-armv7-lts linux-x86_64-full \
OUTPUT_IMAGE_PATH ?= dockcross linux-mips linux-ppc64le linux-riscv64 linux-riscv32 linux-xtensa-uclibc \
OUTPUT_IMAGE_NAME = linux-arm64 web-wasi \
windows-static-x86 windows-static-x64 windows-static-x64-posix windows-armv7 \
windows-shared-x86 windows-shared-x64 windows-shared-x64-posix windows-arm64
``` ```
`BASE_IMAGE_NAME = base` / `BASE_IMAGE_TAG = latest` matches the common case You need to add the image/folder name (`linux-arm64`) to the `GEN_IMAGES` variable in the [Makefile](Makefile):
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`.
A `preset.mk` can override or add anything the generic Makefile doesn't ```make
already do the right thing for, for example: # Generated Dockerfiles.
GEN_IMAGES = android-arm android-arm64 \
- `TEST_IMAGE_CMD` / `TEST_IMAGE_ARGS`: override the command run by `make linux-x86 linux-x64 linux-x64-clang linux-arm64 linux-arm64-musl linux-arm64-full \
<image>.test` (defaults to `python3 test/run.py`). E.g. an image that only manylinux2014-x64 manylinux2014-x86 \
supports C needs `TEST_IMAGE_ARGS = --languages C`. manylinux2014-aarch64 linux-arm64-lts \
- `BUILD_CONTEXT_DIR`: override the docker build context directory. Defaults web-wasm web-wasi linux-mips windows-arm64 windows-armv7 \
to the preset's own folder; a few images (the manylinux\*-aarch64/x64/x86 windows-static-x86 windows-static-x64 windows-static-x64-posix \
family) `COPY` files from sibling folders and need windows-shared-x86 windows-shared-x64 windows-shared-x64-posix \
`BUILD_CONTEXT_DIR = $(PRESET_DIR)` (the repository root) instead. linux-armv7 linux-armv7a linux-armv7l-musl linux-armv7-lts linux-x86_64-full \
- `DEPENDS_ON`: list of `<preset>.build` targets that must be built first, linux-armv6 linux-armv6-lts linux-armv6-musl \
for images whose `Dockerfile.in` is `FROM ${ORG}/<other-image>:latest` linux-armv5 linux-armv5-musl linux-armv5-uclibc linux-ppc64le linux-s390x \
(e.g. `manylinux2014-aarch64` depends on `manylinux2014-x64`). linux-riscv64 linux-riscv32 linux-m68k-uclibc linux-x64-tinycc linux-xtensa-uclibc
- `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
@@ -280,41 +268,27 @@ With CMake + Ninja:
### CI (github action) ### CI (github action)
To finish, you have to add the image/folder name to the `images` job's matrix To finish, you have to add to `.github/workflows/main.yml` the image/folder name:
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",
}
``` ```
`multiarch: "yes"` is only for the handful of images that are natively built You can disable and enable the build of certain tests which can cause problems with certain CPU architectures (eg. OpenSSL with Risc-V...).
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 BASE_IMAGE=debian:bookworm-slim ARG DOCKER_IMAGE=debian:bookworm-slim
FROM $BASE_IMAGE FROM $DOCKER_IMAGE
LABEL maintainer="Matt McCormick matt@mmmccormick.com" LABEL maintainer="Matt McCormick matt@mmmccormick.com"
+366 -381
View File
@@ -1,420 +1,405 @@
# ==============================================================================
# Preset detection
# ==============================================================================
PRESET_DIR ?= .
HOST_ARCH := $(or $(HOST_ARCH), $(shell uname -m | sed -e 's/x86_64/amd64/' -e 's/aarch64/arm64/')) #
# Parameters
#
preset-path = $(if $(filter base,$(1)),$(PRESET_DIR),$(PRESET_DIR)/$(1)) # 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))
BUILDAH := $(or $(BUILDAH_EXE), buildah)
# 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))
build-context-dir = $(if $(BUILD_CONTEXT_DIR),$(BUILD_CONTEXT_DIR),$(call preset-path,$(1))) # 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)
PRESET_FILES := $(shell find $(PRESET_DIR) -name .git -prune -o -mindepth 2 -name "preset.mk" -print) # Docker organization to pull the images from
ALL_PRESETS := base $(patsubst $(PRESET_DIR)/%/preset.mk,%,$(PRESET_FILES)) ORG = dockcross
CURRENT_TARGET_NAME := $(firstword $(MAKECMDGOALS)) # Host architecture
HOST_ARCH := $(or $(HOST_ARCH), $(shell uname -m | sed -e 's/x86_64/amd64/' -e 's/aarch64/arm64/'))
POSSIBLE_PRESET := $(basename $(CURRENT_TARGET_NAME)) # Directory where to generate the dockcross script for each images (e.g bin/dockcross-manylinux2014-x64)
BIN = ./bin
ifeq ($(POSSIBLE_PRESET),base) RM = --rm
-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-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 linux-arm64-lts \
web-wasm web-wasi web-wasi-emulated-threads web-wasi-threads 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 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.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
ARCH_LIST ?= linux/$(HOST_ARCH) mkdir -p $@/imagefiles && cp -r imagefiles $@/
PLATFORMS ?= $(subst $(space),$(comma),$(strip $(ARCH_LIST))) cp -r test web-wasm/
TMPFS_SIZE ?= 4g $(BUILD_DOCKER) $(BUILD_CMD) $(TAG_FLAG) $(ORG)/web-wasm:$(TAG)-$(HOST_ARCH) \
$(TAG_FLAG) $(ORG)/web-wasm:latest-$(HOST_ARCH) \
DOCKER_BUILD_NETWORK ?= host --build-arg IMAGE=$(ORG)/web-wasm \
# Folders
COMMON_DIR ?= common
BIN_DIR ?= ./bin
TEST_SCRATCH_DIR ?= ./.dockcross-test-cache
EXTRA_TESTS ?=
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 IMAGE=$(ORG)/$(OUTPUT_IMAGE_NAME) \
--build-arg VERSION=$(TAG) \ --build-arg VERSION=$(TAG) \
--build-arg VCS_REF=$(GIT_SHA) \ --build-arg HOST_ARCH_TAG=$(EMSCRIPTEN_HOST_ARCH_TAG) \
--build-arg VCS_URL=$(GIT_ORIGIN) \ --build-arg VCS_REF=`git rev-parse --short HEAD` \
--build-arg AUTHOR=$(AUTHOR) \ --build-arg VCS_URL=`git config --get remote.origin.url` \
--build-arg URL=$(WEB_SITE) \ --build-arg BUILD_DATE=`date -u +"%Y-%m-%dT%H:%M:%SZ"` \
--build-arg BASE_IMAGE=$(BASE_IMAGE_FINAL):$(BASE_IMAGE_TAG) \ web-wasm
--build-arg BASE_IMAGE_NAME=$(BASE_IMAGE_NAME) \ rm -rf web-wasm/test
--build-arg BASE_IMAGE_TAG=$(BASE_IMAGE_TAG) \ rm -rf $@/imagefiles
$(EXTRA_BUILD_ARGS) \
$(BUILD_IMAGE_ARGS) $(DOCKER_DRIVER)
%.script: %.build web-wasm.test: web-wasm
@mkdir -p $(BIN_DIR) cp -r test web-wasm/
$(DOCKER_EXEC) run --rm $(OUTPUT_IMAGE_FINAL):latest > $(BIN_DIR)/dockcross-$* && chmod +x $(BIN_DIR)/dockcross-$* $(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
%.test: %.build %.script #
$(call docker-run-cmd,,$(TEST_IMAGE_CMD),$(TEST_IMAGE_ARGS)) # 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
%.run: %.build #
$(call docker-run-cmd,-it,$(RUN_IMAGE_CMD),$(RUN_IMAGE_ARGS)) # manylinux2014-aarch64
#
manylinux2014-aarch64: manylinux2014-aarch64/Dockerfile manylinux2014-x64
@# Register qemu
docker run --rm --privileged hypriot/qemu-register
@# Get libstdc++ from quay.io/pypa/manylinux2014_aarch64 container
docker run -v `pwd`:/host --rm -e LIB_PATH=/host/$@/xc_script/ quay.io/pypa/manylinux2014_aarch64 bash -c "PASS=1 /host/$@/xc_script/docker_setup_scrpits/copy_libstd.sh"
mkdir -p $@/imagefiles && cp -r imagefiles $@/
$(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
@# libstdc++ is coppied into image, now remove it
docker run -v `pwd`:/host --rm quay.io/pypa/manylinux2014_aarch64 bash -c "rm -rf /host/$@/xc_script/usr"
# ============================================================================== manylinux2014-aarch64.test: manylinux2014-aarch64
# Extra tests $(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
%.test-extra: %.build #
@$(foreach t,$(EXTRA_TESTS),$(MAKE) $*.test-$(t);) # 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
%.test-stockfish: %.build manylinux_2_28-x64.test: manylinux_2_28-x64
rm -rf $(TEST_SCRATCH_DIR)/stockfish $(TEST_DOCKER) run $(RM) $(ORG)/manylinux_2_28-x64:latest > $(BIN)/dockcross-manylinux_2_28-x64 \
git clone --depth 1 --branch sf_17.1 https://github.com/official-stockfish/Stockfish.git $(TEST_SCRATCH_DIR)/stockfish && chmod +x $(BIN)/dockcross-manylinux_2_28-x64
$(call extra-test-run,stockfish,make -C src net && make -C src build $(STOCKFISH_ARGS) -j$$(nproc)) $(BIN)/dockcross-manylinux_2_28-x64 -i $(ORG)/manylinux_2_28-x64:latest /opt/python/cp310-cp310/bin/python test/run.py
rm -rf $(TEST_SCRATCH_DIR)/stockfish
%.test-ninja: %.build #
rm -rf $(TEST_SCRATCH_DIR)/ninja # manylinux_2_34-x64
git clone --depth 1 --branch v1.11.1 https://github.com/ninja-build/ninja.git $(TEST_SCRATCH_DIR)/ninja #
$(call extra-test-run,ninja,cmake -Bbuild -S. -GNinja $(NINJA_ARGS) && cmake --build build) manylinux_2_34-x64: manylinux_2_34-x64/Dockerfile
rm -rf $(TEST_SCRATCH_DIR)/ninja 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
%.test-openssl: %.build manylinux_2_34-x64.test: manylinux_2_34-x64
rm -rf $(TEST_SCRATCH_DIR)/openssl $(DOCKER) run $(RM) $(ORG)/manylinux_2_34-x64:latest > $(BIN)/dockcross-manylinux_2_34-x64 \
git clone --depth 1 --branch OpenSSL_1_1_1w https://github.com/openssl/openssl.git $(TEST_SCRATCH_DIR)/openssl && chmod +x $(BIN)/dockcross-manylinux_2_34-x64
cd $(TEST_SCRATCH_DIR)/openssl && \ $(BIN)/dockcross-manylinux_2_34-x64 -i $(ORG)/manylinux_2_34-x64:latest /opt/python/cp310-cp310/bin/python test/run.py
wget -q https://raw.githubusercontent.com/mavlink/MAVSDK/17ad598f0e004d225f5e939aa2947a95791f2f9b/cpp/third_party/openssl/dockcross-android.patch && \
patch -p0 < dockcross-android.patch
$(call extra-test-run,openssl,./Configure $(OPENSSL_ARGS) && make -j$$(nproc))
rm -rf $(TEST_SCRATCH_DIR)/openssl
%.test-C: %.build #
rm -rf $(TEST_SCRATCH_DIR)/C # manylinux2014-x64
git clone https://github.com/TheAlgorithms/C.git $(TEST_SCRATCH_DIR)/C #
cd $(TEST_SCRATCH_DIR)/C && git checkout b0a41bb38c67ddebb31d3fe06d11e171410c3379 manylinux2014-x64: manylinux2014-x64/Dockerfile
$(call extra-test-run,C,cmake -Bbuild -S. -GNinja $(C_ARGS) && cmake --build build) mkdir -p $@/imagefiles && cp -r imagefiles $@/
rm -rf $(TEST_SCRATCH_DIR)/C $(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
%.test-SQLite: %.build manylinux2014-x64.test: manylinux2014-x64
rm -rf $(TEST_SCRATCH_DIR)/sqlite $(TEST_DOCKER) run $(RM) $(ORG)/manylinux2014-x64:latest > $(BIN)/dockcross-manylinux2014-x64 \
git clone https://github.com/sqlite/sqlite.git $(TEST_SCRATCH_DIR)/sqlite && chmod +x $(BIN)/dockcross-manylinux2014-x64
cd $(TEST_SCRATCH_DIR)/sqlite && git checkout 1cf61ce636915a5e92d4aa883755cee258aa98d6 $(BIN)/dockcross-manylinux2014-x64 -i $(ORG)/manylinux2014-x64:latest /opt/python/cp311-cp311/bin/python test/run.py
$(call extra-test-run,sqlite,./configure $(SQLITE_ARGS) && make -j$$(nproc) sqlite3 sqlite3.c sqldiff)
rm -rf $(TEST_SCRATCH_DIR)/sqlite
%.test-llama_cpp: %.build #
rm -rf $(TEST_SCRATCH_DIR)/llama.cpp # manylinux2014-x86
git clone https://github.com/ggerganov/llama.cpp.git $(TEST_SCRATCH_DIR)/llama.cpp #
cd $(TEST_SCRATCH_DIR)/llama.cpp && git checkout 76614f352e94d25659306d9e97321f204e5de0d3 manylinux2014-x86: manylinux2014-x86/Dockerfile
$(call extra-test-run,llama.cpp,cmake -Bbuild -S. -GNinja $(LLAMA_CPP_ARGS) && cmake --build build) mkdir -p $@/imagefiles && cp -r imagefiles $@/
rm -rf $(TEST_SCRATCH_DIR)/llama.cpp $(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
%.test-fmt: %.build manylinux2014-x86.test: manylinux2014-x86
rm -rf $(TEST_SCRATCH_DIR)/fmt $(TEST_DOCKER) run $(RM) $(ORG)/manylinux2014-x86:latest > $(BIN)/dockcross-manylinux2014-x86 \
git clone --depth 1 --branch 9.1.0 https://github.com/fmtlib/fmt.git $(TEST_SCRATCH_DIR)/fmt && chmod +x $(BIN)/dockcross-manylinux2014-x86
$(call extra-test-run,fmt,cmake -Bbuild -S. -GNinja $(FMT_ARGS) -DFMT_DOC=OFF && cmake --build build) $(BIN)/dockcross-manylinux2014-x86 -i $(ORG)/manylinux2014-x86:latest /opt/python/cp311-cp311/bin/python test/run.py
rm -rf $(TEST_SCRATCH_DIR)/fmt
%.test-cpython: %.build #
rm -rf $(TEST_SCRATCH_DIR)/cpython # base-$(HOST_ARCH)
git clone --depth 1 --branch v3.11.2 https://github.com/python/cpython.git $(TEST_SCRATCH_DIR)/cpython #
$(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)) base-$(HOST_ARCH): Dockerfile imagefiles/
rm -rf $(TEST_SCRATCH_DIR)/cpython $(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` \
.
%.test-raylib: %.build base-$(HOST_ARCH).test: base-$(HOST_ARCH)
rm -rf $(TEST_SCRATCH_DIR)/raylib $(TEST_DOCKER) run $(RM) $(ORG)/base:latest-$(HOST_ARCH) > $(BIN)/dockcross-base && chmod +x $(BIN)/dockcross-base
git clone https://github.com/raysan5/raylib.git $(TEST_SCRATCH_DIR)/raylib
cd $(TEST_SCRATCH_DIR)/raylib && git checkout a12ddacb7bfbc6e552e6145456f2fe6dfdfbe1c7
$(call extra-test-run,raylib,cmake -Bbuild -S. -GNinja $(RAYLIB_ARGS) && cmake --build build)
rm -rf $(TEST_SCRATCH_DIR)/raylib
%.test-mbedtls: %.build base: Dockerfile imagefiles/
rm -rf $(TEST_SCRATCH_DIR)/mbedtls $(BUILD_DOCKER) $(BUILD_CMD) $(TAG_FLAG) $(ORG)/base:latest \
git clone --depth 1 --branch archive/baremetal https://github.com/Mbed-TLS/mbedtls.git $(TEST_SCRATCH_DIR)/mbedtls $(TAG_FLAG) $(ORG)/base:$(TAG) \
$(call extra-test-run,mbedtls,scripts/config.pl baremetal && cmake -Bbuild -S. -GNinja $(MBEDTLS_ARGS) && cmake --build build) --build-arg IMAGE=$(ORG)/base \
rm -rf $(TEST_SCRATCH_DIR)/mbedtls --build-arg VCS_URL=`git config --get remote.origin.url` \
.
%.test-libopencm3: %.build base.test: base
rm -rf $(TEST_SCRATCH_DIR)/libopencm3 $(TEST_DOCKER) run $(RM) $(ORG)/base:latest > $(BIN)/dockcross-base && chmod +x $(BIN)/dockcross-base
git clone https://github.com/libopencm3/libopencm3.git $(TEST_SCRATCH_DIR)/libopencm3
cd $(TEST_SCRATCH_DIR)/libopencm3 && git checkout 467522778329d6f41781a6c951b77d6ff6744de6
$(call extra-test-run,libopencm3,make $(LIBOPENCM3_ARGS) -j$$(nproc))
rm -rf $(TEST_SCRATCH_DIR)/libopencm3
%.push: %.test
$(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:
@$(foreach p,$(filter-out base,$(ALL_PRESETS)),echo $(p);) for image in $(IMAGES); do echo $$image; done
$(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:
@$(foreach p,$(ALL_PRESETS),$(MAKE) $(p).clean &&) true for d in $(IMAGES) ; do rm -rf $$d/imagefiles ; done
@rm -rf $(BIN_DIR) 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 purge: clean
$(DOCKER_EXEC) images --filter='reference=$(ORG)/*' --format='{{.Repository}}:{{.Tag}}' | xargs -r $(DOCKER_EXEC) rmi -f # Remove all untagged images
$(DOCKER_EXEC) builder prune -f $(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: 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{} \
$(DOCKER_EXEC) run --rm -v "$(PWD)":/mnt -w /mnt $(SHELLCHECK_IMAGE) --check-sourced --color=auto --format=gcc --severity=warning --shell=bash --enable=all "{}" $(SHELLCHECK) --check-sourced --color=auto --format=gcc --severity=warning --shell=bash --enable=all "{}"
docker-container-builder: #
$(DOCKER_EXEC) buildx create --name mybuilder --use # testing implicit rule
$(DOCKER_EXEC) buildx inspect --bootstrap #
$(DOCKER_EXEC) buildx inspect mybuilder .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)
docker-default-builder: .SECONDEXPANSION:
$(DOCKER_EXEC) buildx use default $(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 $$@)
if $(BUILDAH) manifest exists $(ORG)/$(basename $@); then \
$(BUILDAH) manifest rm $(ORG)/$(basename $@); fi
$(BUILDAH) manifest create $(ORG)/$(basename $@)
$(BUILDAH) manifest add $(ORG)/$(basename $@) docker://$(ORG)/$(basename $@):latest-amd64
$(BUILDAH) manifest add $(ORG)/$(basename $@) docker://$(ORG)/$(basename $@):latest-arm64
.SECONDEXPANSION:
$(addsuffix .push,$(MULTIARCH_IMAGES) web-wasi-threads web-wasm): $$(basename $$@).manifest
$(BUILDAH) manifest push --all --format v2s2 $(ORG)/$(basename $@) docker://$(ORG)/$(basename $@):latest
$(BUILDAH) manifest push --all --format v2s2 $(ORG)/$(basename $@) docker://$(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
@@ -1,440 +0,0 @@
#
# 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
-29
View File
@@ -103,7 +103,6 @@ The dockcross script will execute the given command-line inside the container, a
| dockcross/linux-armv7-lts | ARMv7 | GCC 8.5.0 + Glibc 2.28 | Linux | | dockcross/linux-armv7-lts | ARMv7 | GCC 8.5.0 + Glibc 2.28 | Linux |
| dockcross/linux-armv7a | ARMv7a | GCC | Linux | | dockcross/linux-armv7a | ARMv7a | GCC | Linux |
| dockcross/linux-armv7l-musl | ARMv7l | GCC + musl | Linux | | dockcross/linux-armv7l-musl | ARMv7l | GCC + musl | Linux |
| dockcross/linux-loongarch64 | LoongArch64 | GCC | Linux |
| dockcross/linux-mips | mips | GCC | Linux | | dockcross/linux-mips | mips | GCC | Linux |
| dockcross/linux-mips-uclibc | mips | GCC + uclibc | Linux | | dockcross/linux-mips-uclibc | mips | GCC + uclibc | Linux |
| dockcross/linux-mips-lts | mips | GCC 8.5.0 + Glibc 2.28 | Linux | | dockcross/linux-mips-lts | mips | GCC 8.5.0 + Glibc 2.28 | Linux |
@@ -117,9 +116,7 @@ The dockcross script will execute the given command-line inside the container, a
| dockcross/linux-m68k-uclibc | m68k | GCC + uclibc | Linux | | dockcross/linux-m68k-uclibc | m68k | GCC + uclibc | Linux |
| dockcross/linux-xtensa-uclibc | xtensa | GCC + uclibc | Linux | | dockcross/linux-xtensa-uclibc | xtensa | GCC + uclibc | Linux |
| dockcross/manylinux_2_28-x64 | x86_64 | GCC | Linux | | dockcross/manylinux_2_28-x64 | x86_64 | GCC | Linux |
| dockcross/manylinux_2_28-aarch64 | aarch64 | GCC | Linux |
| dockcross/manylinux_2_34-x64 | x86_64 | GCC | Linux | | dockcross/manylinux_2_34-x64 | x86_64 | GCC | Linux |
| dockcross/manylinux_2_34-aarch64 | ARMv8 | GCC | Linux |
| dockcross/manylinux2014-x86 | x86 | GCC | Linux | | dockcross/manylinux2014-x86 | x86 | GCC | Linux |
| dockcross/manylinux2014-x64 | x86_64 | GCC | Linux | | dockcross/manylinux2014-x64 | x86_64 | GCC | Linux |
| dockcross/linux-i686 | x86 | GCC | Linux | | dockcross/linux-i686 | x86 | GCC | Linux |
@@ -284,12 +281,6 @@ board PC with TI SoC AM3358 on board, Cortex-A8.
Toolchain configured for ARMv7-L, using Toolchain configured for ARMv7-L, using
[musl](https://www.musl-libc.org/) as base \"libc\". [musl](https://www.musl-libc.org/) as base \"libc\".
### dockcross/linux-loongarch64
![Docker Image Size (tag)](https://img.shields.io/docker/image-size/dockcross/linux-loongarch64/latest) ![Docker Pulls](https://img.shields.io/docker/pulls/dockcross/linux-loongarch64)
Generic Linux LoongArch64 cross compiler toolchain.
### dockcross/linux-mips ### dockcross/linux-mips
![Docker Image Size (tag)](https://img.shields.io/docker/image-size/dockcross/linux-mips/latest) ![Docker Pulls](https://img.shields.io/docker/pulls/dockcross/linux-mips) ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/dockcross/linux-mips/latest) ![Docker Pulls](https://img.shields.io/docker/pulls/dockcross/linux-mips)
@@ -394,24 +385,12 @@ Standalone Linux i686 cross compiler.
Docker [manylinux_2_28](https://github.com/pypa/manylinux) image for building Linux x86_64 / amd64 [Python wheel packages](http://pythonwheels.com/). It includes Python 3.6, 3.7, 3.8, 3.9, 3.10 and 3.11. Also has support for the dockcross script, and it has installations of CMake, Ninja, and [scikit-build](http://scikit-build.org). For CMake, it sets **MANYLINUX_2_28** to \"TRUE\" in the toolchain. Docker [manylinux_2_28](https://github.com/pypa/manylinux) image for building Linux x86_64 / amd64 [Python wheel packages](http://pythonwheels.com/). It includes Python 3.6, 3.7, 3.8, 3.9, 3.10 and 3.11. Also has support for the dockcross script, and it has installations of CMake, Ninja, and [scikit-build](http://scikit-build.org). For CMake, it sets **MANYLINUX_2_28** to \"TRUE\" in the toolchain.
### dockcross/manylinux_2_28-aarch64
![Docker Image Size (tag)](https://img.shields.io/docker/image-size/dockcross/manylinux_2_28-aarch64/latest) ![Docker Pulls](https://img.shields.io/docker/pulls/dockcross/manylinux_2_28-aarch64)
Docker [manylinux_2_28](https://github.com/pypa/manylinux) image for building Linux aarch64 / arm64 [Python wheel packages](http://pythonwheels.com/). It includes Python 3.6, 3.8, 3.9, 3.10, 3.11, 3.12, 3.13, and 3.14. Also has support for the dockcross script, and it has installations of CMake, Ninja, and [scikit-build](http://scikit-build.org). For CMake, it sets **MANYLINUX_2_28** to \"TRUE\" in the toolchain.
### dockcross/manylinux_2_34-x64 ### dockcross/manylinux_2_34-x64
![Docker Image Size (tag)](https://img.shields.io/docker/image-size/dockcross/manylinux_2_34-x64/latest) ![Docker Pulls](https://img.shields.io/docker/pulls/dockcross/manylinux_2_34-x64) ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/dockcross/manylinux_2_34-x64/latest) ![Docker Pulls](https://img.shields.io/docker/pulls/dockcross/manylinux_2_34-x64)
Docker [manylinux_2_34](https://github.com/pypa/manylinux) image for building Linux x86_64 / amd64 [Python wheel packages](http://pythonwheels.com/). It includes Python 3.8.10+, 3.9.5+, 3.10.0+. Also has support for the dockcross script, and it has installations of CMake, Ninja, and [scikit-build](http://scikit-build.org). For CMake, it sets **MANYLINUX_2_34** to \"TRUE\" in the toolchain. Docker [manylinux_2_34](https://github.com/pypa/manylinux) image for building Linux x86_64 / amd64 [Python wheel packages](http://pythonwheels.com/). It includes Python 3.8.10+, 3.9.5+, 3.10.0+. Also has support for the dockcross script, and it has installations of CMake, Ninja, and [scikit-build](http://scikit-build.org). For CMake, it sets **MANYLINUX_2_34** to \"TRUE\" in the toolchain.
### dockcross/manylinux_2_34-aarch64
![Docker Image Size (tag)](https://img.shields.io/docker/image-size/dockcross/manylinux_2_34-aarch64/latest) ![Docker Pulls](https://img.shields.io/docker/pulls/dockcross/manylinux_2_34-aarch64)
Docker [manylinux_2_34](https://github.com/pypa/manylinux) image for building Linux aarch64 / arm64 [Python wheel packages](http://pythonwheels.com/). It includes CPython 3.6, 3.7, 3.8, 3.9, 3.10, 3.11, 3.12, 3.13, 3.13t (free-threaded) and PyPy 3.10. Also has support for the dockcross script, and it has installations of CMake, Ninja, and [scikit-build](http://scikit-build.org). For CMake, it sets **MANYLINUX_2_34** to "TRUE" in the toolchain. This image is designed to run on x86_64 hosts and cross-compile for aarch64 targets using QEMU emulation.
### dockcross/manylinux2014-x64 ### dockcross/manylinux2014-x64
![Docker Image Size (tag)](https://img.shields.io/docker/image-size/dockcross/manylinux2014-x64/latest) ![Docker Pulls](https://img.shields.io/docker/pulls/dockcross/manylinux2014-x64) ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/dockcross/manylinux2014-x64/latest) ![Docker Pulls](https://img.shields.io/docker/pulls/dockcross/manylinux2014-x64)
@@ -641,14 +620,6 @@ Note that the architecture is now `aarch64` instead of `amd64`, so it runs nativ
\-\-- \-\--
## Multi-architecture Image Creation
For creating multi-architecture container images, this project uses [manifest-tool](https://github.com/estesp/manifest-tool) to create and manage manifest lists that combine platform-specific images into a single multi-platform reference. This allows container runtimes to automatically select the appropriate image based on the target architecture.
The multi-architecture images are built on different architectures (amd64 and arm64) and then combined using manifest-tool's `push from-args` command, which creates manifest lists pointing to the individual platform-specific images.
---
Credits: Credits:
- [sdt/docker-raspberry-pi-cross-compiler](https://github.com/sdt/docker-raspberry-pi-cross-compiler), who invented the base of the **dockcross** script. - [sdt/docker-raspberry-pi-cross-compiler](https://github.com/sdt/docker-raspberry-pi-cross-compiler), who invented the base of the **dockcross** script.
+2 -2
View File
@@ -17,8 +17,8 @@ ENV AS=${CROSS_ROOT}/bin/llvm-as \
CXX=${CROSS_ROOT}/bin/clang++ \ CXX=${CROSS_ROOT}/bin/clang++ \
LD=${CROSS_ROOT}/bin/ld LD=${CROSS_ROOT}/bin/ld
ENV ANDROID_NDK_REVISION=28b ENV ANDROID_NDK_REVISION=25b
ENV ANDROID_API=24 ENV ANDROID_API=23
RUN mkdir -p /build && \ RUN mkdir -p /build && \
cd /build && \ cd /build && \
-13
View File
@@ -1,13 +0,0 @@
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
+2 -2
View File
@@ -21,8 +21,8 @@ ENV AS=${CROSS_ROOT}/bin/llvm-as \
CXX=${CROSS_ROOT}/bin/clang++ \ CXX=${CROSS_ROOT}/bin/clang++ \
LD=${CROSS_ROOT}/bin/ld LD=${CROSS_ROOT}/bin/ld
ENV ANDROID_NDK_REVISION=28b ENV ANDROID_NDK_REVISION=25b
ENV ANDROID_API=24 ENV ANDROID_API=23
RUN mkdir -p /build && \ RUN mkdir -p /build && \
cd /build && \ cd /build && \
-13
View File
@@ -1,13 +0,0 @@
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
+3 -4
View File
@@ -1,5 +1,4 @@
ARG ORG=dockcross FROM dockcross/base:latest
FROM ${ORG}/base:latest
RUN apt-get update && apt-get install -y unzip RUN apt-get update && apt-get install -y unzip
@@ -12,8 +11,8 @@ ENV AS=${CROSS_ROOT}/bin/llvm-as \
CXX=${CROSS_ROOT}/bin/clang++ \ CXX=${CROSS_ROOT}/bin/clang++ \
LD=${CROSS_ROOT}/bin/ld LD=${CROSS_ROOT}/bin/ld
ENV ANDROID_NDK_REVISION=28b ENV ANDROID_NDK_REVISION=25b
ENV ANDROID_API=24 ENV ANDROID_API=23
RUN mkdir -p /build && \ RUN mkdir -p /build && \
cd /build && \ cd /build && \
-15
View File
@@ -1,15 +0,0 @@
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
+3 -4
View File
@@ -1,5 +1,4 @@
ARG ORG=dockcross FROM dockcross/base:latest
FROM ${ORG}/base:latest
RUN apt-get update && apt-get install -y unzip RUN apt-get update && apt-get install -y unzip
@@ -12,8 +11,8 @@ ENV AS=${CROSS_ROOT}/bin/llvm-as \
CXX=${CROSS_ROOT}/bin/clang++ \ CXX=${CROSS_ROOT}/bin/clang++ \
LD=${CROSS_ROOT}/bin/ld LD=${CROSS_ROOT}/bin/ld
ENV ANDROID_NDK_REVISION=28b ENV ANDROID_NDK_REVISION=25b
ENV ANDROID_API=24 ENV ANDROID_API=23
RUN mkdir -p /build && \ RUN mkdir -p /build && \
cd /build && \ cd /build && \
-15
View File
@@ -1,15 +0,0 @@
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_13=y CT_ZLIB_V_1_2_12=y
CT_ZLIB_VERSION="1.2.13" CT_ZLIB_VERSION="1.2.12"
CT_ZLIB_MIRRORS="https://github.com/madler/zlib/releases/download/v${CT_ZLIB_VERSION} https://www.zlib.net/" CT_ZLIB_MIRRORS="http://downloads.sourceforge.net/project/libpng/zlib/${CT_ZLIB_VERSION} https://www.zlib.net/ https://www.zlib.net/fossils"
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
@@ -1,14 +0,0 @@
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'
-76
View File
@@ -1,76 +0,0 @@
# crosstool.common-manylinux_2_28
#
# Common Docker instructions to install "crosstool-ng" and build a full
# cross-compiler suite from a crosstool-ng configuration, CROSSTOOL_CONFIG.
#
# This import complements the "dockcross/base" image, adding:
# - "ct-ng", a cross-compiler building utilty.
# - A cross-compiler suite configured in "crosstool-ng.config".
#
# The generated cross-compiler will have a CROSS_ROOT of:
# ${XCC_PREFIX}/${CROSS_TRIPLE}
#
# A given platform will need to supply the appropriate "crosstool-ng.config" to
# generate its cross-compiler. This can be built using "ct-ng menuconfig" to
# generate a configuration.
ENV MANYLINUX_DEPS="glibc-devel glibc-devel.i686 libstdc++-devel glib2-devel libX11-devel libXext-devel libXrender-devel mesa-libGL-devel libICE-devel libSM-devel"
ENV PYTHON_COMPILE_DEPS="python3-devel zlib-devel bzip2-devel expat-devel ncurses-devel readline-devel tk-devel gdbm-devel libdb-devel libpcap-devel xz-devel openssl-devel keyutils-libs-devel krb5-devel libcom_err-devel libidn-devel curl-devel perl-devel"
ENV TOOLCHAIN_DEPS="gcc-toolset-14-binutils gcc-toolset-14-gcc gcc-toolset-14-gcc-c++ gcc-toolset-14-gcc-gfortran"
# Install dependent packages required for `ct-ng`.
RUN \
yum -y update && \
yum -y install \
gawk \
gperf \
help2man \
texinfo \
flex \
ncurses-devel \
glibc-static \
rsync \
systemtap-devel \
systemtap-sdt-devel \
${TOOLCHAIN_DEPS} \
${PYTHON_COMPILE_DEPS} \
${MANYLINUX_DEPS} && \
yum clean all
ENV XCC_PREFIX=/usr/xcc
# Add the crosstool-ng script and image-specific toolchain configuration into
# /dockcross/.
#
# Afterwards, we will leave the "ct-ng" config in the image as a reference
# for users.
COPY \
imagefiles/install-crosstool-ng-toolchain.sh \
imagefiles/patch/crosstool-ng/crosstool-ng-zlib-target.patch \
manylinux_2_28-aarch64/crosstool-ng.config \
/dockcross/
# Copy sys/sdt.h to a clean include directory to avoid pulling in all of
# /usr/include (which causes __float128 conflicts on AlmaLinux 8 when
# cross-compiling for aarch64).
RUN mkdir -p /opt/ct-ng-includes/sys && \
cp /usr/include/sys/sdt.h /opt/ct-ng-includes/sys/ && \
cp /usr/include/sys/sdt-config.h /opt/ct-ng-includes/sys/
# Build and install the toolchain, cleaning up artifacts afterwards.
RUN \
mkdir /dockcross/crosstool && \
cd /dockcross/crosstool && \
/dockcross/install-crosstool-ng-toolchain.sh \
-p "${XCC_PREFIX}" \
-c /dockcross/crosstool-ng.config \
-v "${CT_VERSION}" && \
rm -rf /dockcross/crosstool /dockcross/install-crosstool-ng-toolchain.sh && \
# Remove sudo provided by gcc-toolset since it doesn't work with
# our sudo wrapper calling gosu.
rm -f /opt/rh/gcc-toolset-14/root/usr/bin/sudo
# Restore our default workdir (from "dockcross/base").
WORKDIR /work
-76
View File
@@ -1,76 +0,0 @@
# crosstool.common-manylinux_2_34
#
# Common Docker instructions to install "crosstool-ng" and build a full
# cross-compiler suite from a crosstool-ng configuration, CROSSTOOL_CONFIG.
#
# This import complements the "dockcross/base" image, adding:
# - "ct-ng", a cross-compiler building utilty.
# - A cross-compiler suite configured in "crosstool-ng.config".
#
# The generated cross-compiler will have a CROSS_ROOT of:
# ${XCC_PREFIX}/${CROSS_TRIPLE}
#
# A given platform will need to supply the appropriate "crosstool-ng.config" to
# generate its cross-compiler. This can be built using "ct-ng menuconfig" to
# generate a configuration.
ENV MANYLINUX_DEPS="glibc-devel glibc-devel.i686 libstdc++-devel glib2-devel libX11-devel libXext-devel libXrender-devel mesa-libGL-devel libICE-devel libSM-devel"
ENV PYTHON_COMPILE_DEPS="python-devel zlib-devel bzip2-devel expat-devel ncurses-devel readline-devel tk-devel gdbm-devel libdb-devel libpcap-devel xz-devel openssl-devel keyutils-libs-devel krb5-devel libcom_err-devel libidn-devel curl-devel perl-devel"
ENV TOOLCHAIN_DEPS="gcc-toolset-14-binutils gcc-toolset-14-gcc gcc-toolset-14-gcc-c++ gcc-toolset-14-gcc-gfortran"
# Install dependent packages required for `ct-ng`.
RUN \
dnf -y update && \
dnf -y install \
gawk \
gperf \
help2man \
texinfo \
flex \
ncurses-devel \
glibc-static \
rsync \
systemtap-devel \
systemtap-sdt-devel \
${TOOLCHAIN_DEPS} \
${PYTHON_COMPILE_DEPS} \
${MANYLINUX_DEPS} && \
dnf clean all
ENV XCC_PREFIX=/usr/xcc
# Add the crosstool-ng script and image-specific toolchain configuration into
# /dockcross/.
#
# Afterwards, we will leave the "ct-ng" config in the image as a reference
# for users.
COPY \
imagefiles/install-crosstool-ng-toolchain.sh \
imagefiles/patch/crosstool-ng/crosstool-ng-zlib-target.patch \
manylinux_2_34-aarch64/crosstool-ng.config \
/dockcross/
# Copy sys/sdt.h to a clean include directory to avoid pulling in all of
# /usr/include (which causes __float128 conflicts on AlmaLinux 9 when
# cross-compiling for aarch64).
RUN mkdir -p /opt/ct-ng-includes/sys && \
cp /usr/include/sys/sdt.h /opt/ct-ng-includes/sys/ && \
cp /usr/include/sys/sdt-config.h /opt/ct-ng-includes/sys/
# Build and install the toolchain, cleaning up artifacts afterwards.
RUN \
mkdir /dockcross/crosstool && \
cd /dockcross/crosstool && \
/dockcross/install-crosstool-ng-toolchain.sh \
-p "${XCC_PREFIX}" \
-c /dockcross/crosstool-ng.config \
-v "${CT_VERSION}" && \
rm -rf /dockcross/crosstool /dockcross/install-crosstool-ng-toolchain.sh && \
# Remove sudo provided by gcc-toolset since it doesn't work with
# our sudo wrapper calling gosu.
rm -f /opt/rh/gcc-toolset-14/root/usr/bin/sudo
# Restore our default workdir (from "dockcross/base").
WORKDIR /work
+3 -8
View File
@@ -10,8 +10,7 @@ RUN apt-get update --yes && apt-get install --no-install-recommends --yes \
libtool \ libtool \
libtool-bin \ libtool-bin \
&& apt-get clean autoclean --yes \ && apt-get clean autoclean --yes \
&& apt-get autoremove --yes \ && apt-get autoremove --yes
&& rm -rf /var/lib/{apt,dpkg,cache,log}/
COPY \ COPY \
imagefiles/install-buildroot-toolchain.sh \ imagefiles/install-buildroot-toolchain.sh \
@@ -19,12 +18,8 @@ COPY \
/dockcross/ /dockcross/
# Build and install the toolchain, cleaning up artifacts afterwards. # Build and install the toolchain, cleaning up artifacts afterwards.
RUN mkdir /dockcross/buildroot \ RUN mkdir /dockcross/buildroot && cd /dockcross/buildroot && \
&& cd /dockcross/buildroot \ /dockcross/install-buildroot-toolchain.sh -c "/dockcross/buildroot.config" -v "${BR_VERSION}"
&& /dockcross/install-buildroot-toolchain.sh \
-c "/dockcross/buildroot.config" \
-v "${BR_VERSION}" \
&& rm -rf /dockcross/buildroot /dockcross/install-buildroot-toolchain.sh
# Restore our default workdir (from "dockcross/base"). # Restore our default workdir (from "dockcross/base").
WORKDIR /work WORKDIR /work
+1 -2
View File
@@ -26,8 +26,7 @@ RUN apt-get update --yes && apt-get install --no-install-recommends --yes \
libtool \ libtool \
libtool-bin \ libtool-bin \
&& apt-get clean autoclean --yes \ && apt-get clean autoclean --yes \
&& apt-get autoremove --yes \ && apt-get autoremove --yes
&& rm -rf /var/lib/{apt,dpkg,cache,log}/
ENV XCC_PREFIX=/usr/xcc ENV XCC_PREFIX=/usr/xcc
-1
View File
@@ -42,5 +42,4 @@ RUN \
python-is-python3 \ python-is-python3 \
&& apt-get clean autoclean --yes \ && apt-get clean autoclean --yes \
&& apt-get autoremove --yes \ && apt-get autoremove --yes \
&& rm -rf /var/lib/{apt,dpkg,cache,log}/ \
&& rm /etc/ssh/*key* && rm /etc/ssh/*key*
-5
View File
@@ -18,9 +18,6 @@ ARG CURL_HASH=3b4378156ba09e224008e81dcce854b7ce4d182b1f9cfb97fe5ed9e9c18c6bd3
ARG PERL_VERSION=perl-5.40.1 ARG PERL_VERSION=perl-5.40.1
ARG PERL_HASH=02f8c45bb379ed0c3de7514fad48c714fd46be8f0b536bfd5320050165a1ee26 ARG PERL_HASH=02f8c45bb379ed0c3de7514fad48c714fd46be8f0b536bfd5320050165a1ee26
ENV RUSTUP_HOME=/opt/rustup
ENV CARGO_HOME=/opt/rustup/cargo
# Image build scripts # Image build scripts
COPY \ COPY \
imagefiles/build-and-install-cmake.sh \ imagefiles/build-and-install-cmake.sh \
@@ -52,8 +49,6 @@ RUN \
/buildscripts/build-and-install-flatcc.sh && \ /buildscripts/build-and-install-flatcc.sh && \
rm -rf /buildscripts rm -rf /buildscripts
ENV PATH=/opt/rustup/cargo/bin:$PATH
RUN echo "root:root" | chpasswd RUN echo "root:root" | chpasswd
WORKDIR /work WORKDIR /work
ENTRYPOINT ["/dockcross/entrypoint.sh"] ENTRYPOINT ["/dockcross/entrypoint.sh"]
+1 -3
View File
@@ -10,8 +10,6 @@ RUN \
wget \ wget \
nasm \ nasm \
zip \ zip \
perl-IPC-Cmd \
perl-Time-Piece \
&& \ && \
yum clean all yum clean all
@@ -24,7 +22,7 @@ RUN \
set -x && \ set -x && \
# Remove sudo provided by devtoolset since it doesn't work with # Remove sudo provided by devtoolset since it doesn't work with
# our sudo wrapper calling gosu. # our sudo wrapper calling gosu.
rm -f /opt/rh/gcc-toolset-14/root/usr/bin/sudo && \ rm -f /opt/rh/gcc-toolset-12/root/usr/bin/sudo && \
/buildscripts/install-python-packages.sh && \ /buildscripts/install-python-packages.sh && \
rm -rf /buildscripts rm -rf /buildscripts
-5
View File
@@ -10,11 +10,6 @@ RUN \
wget \ wget \
nasm \ nasm \
zip \ zip \
perl-FindBin \
perl-File-Compare \
perl-File-Copy \
perl-IPC-Cmd \
perl-Time-Piece \
&& \ && \
yum clean all yum clean all
+1 -5
View File
@@ -46,11 +46,7 @@ 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
# Pinned below v47.0.0: that release removes wasi-threads/wasi-common support RUN mkdir -p ${WASMTIME_HOME} && curl https://wasmtime.dev/install.sh -sSf | bash
# 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"
+23 -15
View File
@@ -2,11 +2,8 @@
set -ex set -ex
# Get script directory MY_DIR=$(dirname "${BASH_SOURCE[0]}")
SCRIPT_DIR=$(dirname "${BASH_SOURCE[0]}") source $MY_DIR/utils.sh
# Get build utilities
source $SCRIPT_DIR/utils.sh
# #
# Function 'do_curl_build' and 'build_curl' # Function 'do_curl_build' and 'build_curl'
@@ -23,7 +20,6 @@ if [[ -z "${CURL_HASH}" ]]; then
exit 1 exit 1
fi fi
CURL_ROOT="${CURL_VERSION}"
CURL_DOWNLOAD_URL=https://curl.haxx.se/download CURL_DOWNLOAD_URL=https://curl.haxx.se/download
function do_curl_build { function do_curl_build {
@@ -34,16 +30,28 @@ function do_curl_build {
make install > /dev/null make install > /dev/null
} }
function build_curl {
local curl_fname=$1
check_var ${curl_fname}
local curl_sha256=$2
check_var ${curl_sha256}
check_var ${CURL_DOWNLOAD_URL}
curl --connect-timeout 30 \
--max-time 10 \
--retry 5 \
--retry-delay 10 \
--retry-max-time 30 \
-fsSLO ${CURL_DOWNLOAD_URL}/${curl_fname}.tar.gz
check_sha256sum ${curl_fname}.tar.gz ${curl_sha256}
tar -zxf ${curl_fname}.tar.gz
(cd curl-*/ && do_curl_build)
rm -rf curl-*
}
cd /usr/src cd /usr/src
build_curl "${CURL_VERSION}" "${CURL_HASH}"
fetch_source "${CURL_ROOT}.tar.gz" "${CURL_DOWNLOAD_URL}"
check_sha256sum "${CURL_ROOT}.tar.gz" "${CURL_HASH}"
tar -zxf "${CURL_ROOT}.tar.gz"
pushd "${CURL_ROOT}"
do_curl_build
popd
rm -rf "${CURL_ROOT}" "${CURL_ROOT}.tar.gz"
(cat /etc/ld.so.conf.d/usr-local.conf 2> /dev/null | grep -q "^/usr/local/lib$") || (cat /etc/ld.so.conf.d/usr-local.conf 2> /dev/null | grep -q "^/usr/local/lib$") ||
echo '/usr/local/lib' >> /etc/ld.so.conf.d/usr-local.conf echo '/usr/local/lib' >> /etc/ld.so.conf.d/usr-local.conf
+19 -14
View File
@@ -2,12 +2,10 @@
set -ex set -ex
# Get script directory if ! command -v curl &> /dev/null; then
SCRIPT_DIR=$(dirname "${BASH_SOURCE[0]}") echo >&2 'error: "curl" not found!'
exit 1
# Get build utilities fi
source $SCRIPT_DIR/utils.sh
if ! command -v tar &> /dev/null; then if ! command -v tar &> /dev/null; then
echo >&2 'error: "tar" not found!' echo >&2 'error: "tar" not found!'
@@ -25,20 +23,27 @@ ldconfig
cd /usr/src cd /usr/src
GIT_ROOT="git-${GIT_VERSION}" url="https://mirrors.edge.kernel.org/pub/software/scm/git/git-${GIT_VERSION}.tar.gz"
GIT_DOWNLOAD_URL="https://mirrors.edge.kernel.org/pub/software/scm/git" echo "Downloading $url"
curl --connect-timeout 20 \
--max-time 10 \
--retry 5 \
--retry-delay 10 \
--retry-max-time 40 \
-# -LO $url
fetch_source "${GIT_ROOT}.tar.gz" "${GIT_DOWNLOAD_URL}" tar xvzf "git-${GIT_VERSION}.tar.gz" --no-same-owner
tar xvzf "${GIT_ROOT}.tar.gz" --no-same-owner rm -f "git-${GIT_VERSION}.tar.gz"
pushd "${GIT_ROOT}" pushd "git-${GIT_VERSION}"
./configure --prefix=/usr/local --with-curl ./configure --prefix=/usr/local --with-curl
make -j"$(nproc)" NO_GETTEXT=YesPlease make -j"$(nproc)"
make NO_GETTEXT=YesPlease install make install
popd popd
rm -rf "${GIT_ROOT}" "${GIT_ROOT}.tar.gz"
ldconfig ldconfig
rm -rf "git-${GIT_VERSION}"
# turn the detached message off # turn the detached message off
git config --global advice.detachedHead false git config --global advice.detachedHead false
+11 -14
View File
@@ -10,12 +10,6 @@
set -e set -e
set -o pipefail set -o pipefail
# Get script directory
SCRIPT_DIR=$(dirname "${BASH_SOURCE[0]}")
# Get build utilities
source $SCRIPT_DIR/utils.sh
PYTHON=python PYTHON=python
while [ $# -gt 0 ]; do while [ $# -gt 0 ]; do
case "$1" in case "$1" in
@@ -37,22 +31,25 @@ if [[ -z "${NINJA_VERSION}" ]]; then
fi fi
# Download # Download
NINJA_DOWNLOAD_URL="https://github.com/ninja-build/ninja/archive/" url="https://github.com/ninja-build/ninja/archive/v${NINJA_VERSION}.tar.gz"
NINJA_ROOT="v${NINJA_VERSION}"
fetch_source "${NINJA_ROOT}.tar.gz" "${NINJA_DOWNLOAD_URL}" curl --connect-timeout 30 \
--max-time 10 \
--retry 5 \
--retry-delay 10 \
--retry-max-time 30 \
-# -o ninja.tar.gz -LO "$url"
# Since the archive name doesn't match the top-level directory, explicitly specify it. mkdir ninja
mkdir -p "${NINJA_ROOT}" tar -xzvf ./ninja.tar.gz --strip-components=1 -C ./ninja
tar xvzf "${NINJA_ROOT}.tar.gz" --strip-components=1 -C "${NINJA_ROOT}"
# Configure, build and install # Configure, build and install
pushd "${NINJA_ROOT}" pushd ./ninja
echo "Configuring ninja using [$PYTHON]" echo "Configuring ninja using [$PYTHON]"
$PYTHON ./configure.py --bootstrap && ./ninja $PYTHON ./configure.py --bootstrap && ./ninja
cp ./ninja /usr/bin/ cp ./ninja /usr/bin/
popd popd
# Clean # Clean
rm -rf "${NINJA_ROOT}" "${NINJA_ROOT}.tar.gz" rm -rf ./ninja*
+3 -1
View File
@@ -22,7 +22,9 @@ autoreconf
./configure --with-ssl-dir=/usr/local/ssl --prefix=/usr/local --with-libs=-lpthread ./configure --with-ssl-dir=/usr/local/ssl --prefix=/usr/local --with-libs=-lpthread
make -j1 install
make -j"$(nproc)"
make install
cd /usr/src cd /usr/src
rm -rf ${OPENSSH_SRC_DIR} rm -rf ${OPENSSH_SRC_DIR}
+14 -7
View File
@@ -39,11 +39,8 @@ while [ $# -gt 0 ]; do
shift shift
done done
# Get script directory MY_DIR=$(dirname "${BASH_SOURCE[0]}")
SCRIPT_DIR=$(dirname "${BASH_SOURCE[0]}") source $MY_DIR/utils.sh
# Get build utilities
source $SCRIPT_DIR/utils.sh
# #
# Function 'do_openssl_build' and 'build_openssl' # Function 'do_openssl_build' and 'build_openssl'
@@ -87,8 +84,13 @@ function build_perl {
local perl_sha256=$2 local perl_sha256=$2
check_var ${perl_sha256} check_var ${perl_sha256}
check_var ${PERL_DOWNLOAD_URL} check_var ${PERL_DOWNLOAD_URL}
curl --connect-timeout 30 \
--max-time 10 \
--retry 5 \
--retry-delay 10 \
--retry-max-time 30 \
-fsSLO ${PERL_DOWNLOAD_URL}/${perl_fname}.tar.gz
fetch_source "${perl_fname}.tar.gz" "${PERL_DOWNLOAD_URL}"
check_sha256sum ${perl_fname}.tar.gz ${perl_sha256} check_sha256sum ${perl_fname}.tar.gz ${perl_sha256}
tar -xzf ${perl_fname}.tar.gz --no-same-owner tar -xzf ${perl_fname}.tar.gz --no-same-owner
(cd ${perl_fname} && do_perl_build) (cd ${perl_fname} && do_perl_build)
@@ -107,8 +109,13 @@ function build_openssl {
local openssl_sha256=$2 local openssl_sha256=$2
check_var ${openssl_sha256} check_var ${openssl_sha256}
check_var ${OPENSSL_DOWNLOAD_URL} check_var ${OPENSSL_DOWNLOAD_URL}
curl --connect-timeout 30 \
--max-time 10 \
--retry 5 \
--retry-delay 10 \
--retry-max-time 30 \
-fsSLO ${OPENSSL_DOWNLOAD_URL}/${openssl_fname}.tar.gz
fetch_source "${openssl_fname}.tar.gz" "${OPENSSL_DOWNLOAD_URL}"
check_sha256sum ${openssl_fname}.tar.gz ${openssl_sha256} check_sha256sum ${openssl_fname}.tar.gz ${openssl_sha256}
tar -xzf ${openssl_fname}.tar.gz tar -xzf ${openssl_fname}.tar.gz
(cd ${openssl_fname} && PATH=/opt/perl/bin:${PATH} do_openssl_build) (cd ${openssl_fname} && PATH=/opt/perl/bin:${PATH} do_openssl_build)
+3 -3
View File
@@ -24,9 +24,9 @@ has() {
# If OCI_EXE is not already set, search for a container executor (OCI stands for "Open Container Initiative") # If OCI_EXE is not already set, search for a container executor (OCI stands for "Open Container Initiative")
if [ -z "$OCI_EXE" ]; then if [ -z "$OCI_EXE" ]; then
if type -p podman >/dev/null 2>/dev/null; then if which podman >/dev/null 2>/dev/null; then
OCI_EXE=podman OCI_EXE=podman
elif type -p docker >/dev/null 2>/dev/null; then elif which docker >/dev/null 2>/dev/null; then
OCI_EXE=docker OCI_EXE=docker
else else
die "Cannot find a container executor. Search for docker and podman." die "Cannot find a container executor. Search for docker and podman."
@@ -218,7 +218,7 @@ elif [ -n "$CYGWIN" ]; then
HOST_PWD="$( cygpath -w "$( readlink -f "$( pwd ;)" ; )" ; )" ; HOST_PWD="$( cygpath -w "$( readlink -f "$( pwd ;)" ; )" ; )" ;
else else
HOST_PWD=$PWD HOST_PWD=$PWD
[ -L "$HOST_PWD" ] && HOST_PWD=$(readlink $HOST_PWD) [ -L $HOST_PWD ] && HOST_PWD=$(readlink $HOST_PWD)
fi fi
# Mount Additional Volumes # Mount Additional Volumes
+5 -5
View File
@@ -28,10 +28,12 @@ if [[ -n $BUILDER_UID ]] && [[ -n $BUILDER_GID ]]; then
useradd -o -m -g "$BUILDER_GID" -u "$BUILDER_UID" "$BUILDER_USER" 2> /dev/null useradd -o -m -g "$BUILDER_GID" -u "$BUILDER_UID" "$BUILDER_USER" 2> /dev/null
# Change ownership of /dev/pts/0 to new user # Change ownership of /dev/pts/0 to new user
chown "$BUILDER_UID" /dev/pts/0 2> /dev/null chown "$BUILDER_UID" /dev/pts/0
export HOME=/home/${BUILDER_USER} export HOME=/home/${BUILDER_USER}
shopt -s dotglob shopt -s dotglob
# Move rustup/cargo directories as they are large, and not needed as root
mv -t $HOME/ /root/.rustup /root/.cargo
# Copy the rest # Copy the rest
cp -r /root/* $HOME/ cp -r /root/* $HOME/
chown -R $BUILDER_UID:$BUILDER_GID $HOME chown -R $BUILDER_UID:$BUILDER_GID $HOME
@@ -50,10 +52,8 @@ if [[ -n $BUILDER_UID ]] && [[ -n $BUILDER_GID ]]; then
gosu $BUILDER_UID:$BUILDER_GID /work/.dockcross gosu $BUILDER_UID:$BUILDER_GID /work/.dockcross
fi fi
# Run the command as the specified user. The group will be BUILDER_GID, # Run the command as the specified user/group.
# as pulled from /etc/passwd, but will have additional groups from exec gosu $BUILDER_UID:$BUILDER_GID "$@"
# /etc/group. This is necessary for manylinux to install python packages.
exec gosu $BUILDER_UID "$@"
else else
# Just run the command as root. # Just run the command as root.
exec "$@" exec "$@"
+7 -7
View File
@@ -10,7 +10,7 @@ usage() { echo "Usage: $0 -c <config-path> -v <version>" 1>&2; exit 1; }
REPO_URL="https://github.com/buildroot/buildroot.git" REPO_URL="https://github.com/buildroot/buildroot.git"
CONFIG_PATH="" CONFIG_PATH=""
REV="2021.08-rc1" REV="2025.05"
while getopts "c:v:" o; do while getopts "c:v:" o; do
case "${o}" in case "${o}" in
c) c)
@@ -35,9 +35,9 @@ if [ -z ${REV} ]; then
echo "WARNING: No version selected, use default version: $REV (-v)." echo "WARNING: No version selected, use default version: $REV (-v)."
fi fi
git clone "$REPO_URL" --recurse-submodules --shallow-submodules --depth 1 --branch "$REV" buildroot
git clone "$REPO_URL" --recurse-submodules --remote-submodules #--branch="$REV" # Only to generate the project files, config will be overwritten later
cd buildroot make -C buildroot O=/aarch64_efi aarch64_efi_defconfig
git checkout "$REV" cp "$CONFIG_PATH" /aarch64_efi/.config
cp "$CONFIG_PATH" .config FORCE_UNSAFE_CONFIGURE=1 make -C /aarch64_efi sdk
make rm -rf buildroot /aarch64_efi/build /aarch64_efi/images /aarch64_efi/staging /aarch64_efi/target/
+14 -11
View File
@@ -3,12 +3,6 @@
set -ex set -ex
set -o pipefail set -o pipefail
# Get script directory
SCRIPT_DIR=$(dirname "${BASH_SOURCE[0]}")
# Get build utilities
source $SCRIPT_DIR/utils.sh
ARCH="x86_64" ARCH="x86_64"
while [ $# -gt 0 ]; do while [ $# -gt 0 ]; do
@@ -24,6 +18,11 @@ while [ $# -gt 0 ]; do
shift shift
done done
if ! command -v curl &> /dev/null; then
echo >&2 'error: "curl" not found!'
exit 1
fi
if ! command -v tar &> /dev/null; then if ! command -v tar &> /dev/null; then
echo >&2 'error: "tar" not found!' echo >&2 'error: "tar" not found!'
exit 1 exit 1
@@ -36,12 +35,16 @@ fi
cd /usr/src cd /usr/src
CMAKE_ROOT=cmake-${CMAKE_VERSION}-linux-${ARCH} CMAKE_ROOT=cmake-${CMAKE_VERSION}-Centos5-${ARCH}
CMAKE_DOWNLOAD_URL=https://github.com/Kitware/CMake/releases/download/v${CMAKE_VERSION} url=https://github.com/dockbuild/CMake/releases/download/v${CMAKE_VERSION}/${CMAKE_ROOT}.tar.gz
echo "Downloading $url"
curl --connect-timeout 30 \
--max-time 10 \
--retry 5 \
--retry-delay 10 \
--retry-max-time 30 \
-# -LO $url
echo "Downloading ${CMAKE_DOWNLOAD_URL}/${CMAKE_ROOT}.tar.gz"
fetch_source "${CMAKE_ROOT}.tar.gz" "${CMAKE_DOWNLOAD_URL}"
tar -xzvf "${CMAKE_ROOT}.tar.gz" tar -xzvf "${CMAKE_ROOT}.tar.gz"
rm -f "${CMAKE_ROOT}.tar.gz" rm -f "${CMAKE_ROOT}.tar.gz"
+3 -16
View File
@@ -56,22 +56,9 @@ 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)"
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 \
-17
View File
@@ -22,20 +22,3 @@ function check_sha256sum {
rm -f ${fname}.sha256 rm -f ${fname}.sha256
} }
function fetch_source {
if ! command -v curl &> /dev/null; then
echo >&2 'error: "curl" not found!'
exit 1
fi
local file=$1
check_var "${file}"
local url=$2
check_var "${url}"
curl --fail \
--location \
--silent \
--show-error \
--connect-timeout 30 --max-time 10 \
--retry 5 --retry-delay 10 --retry-max-time 30 \
-o "${file}" ${url}/${file}
}
+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,shared-memory=y -S threads=y,cli=y --dir=. --dir=$PWD --dir=/work/ "$@" exec ${WASMTIME_HOME}/bin/wasmtime run -W threads=y -S threads=y,cli=y --dir=. --dir=$PWD --dir=/work/ "$@"
+3 -3
View File
@@ -6,8 +6,8 @@ LABEL maintainer="Matt McCormick matt@mmmccormick.com"
# This is for 64-bit ARM Linux machine # This is for 64-bit ARM Linux machine
# Buildroot version # Buildroot version
# buildroot master 2021-09-20 # buildroot master 2025-06-22
ENV BR_VERSION=d4877e6f88d5eea54dc74b855556ffc0dd3f399f ENV BR_VERSION=2025.05
#include "common.buildroot" #include "common.buildroot"
@@ -20,7 +20,7 @@ RUN apt-get update \
# The CROSS_TRIPLE is a configured alias of the "aarch64-buildroot-linux-gnu" target. # The CROSS_TRIPLE is a configured alias of the "aarch64-buildroot-linux-gnu" target.
ENV CROSS_TRIPLE=aarch64-buildroot-linux-gnu ENV CROSS_TRIPLE=aarch64-buildroot-linux-gnu
ENV CROSS_ROOT=/buildroot ENV CROSS_ROOT=/aarch64_efi/host
ENV AS=${CROSS_ROOT}/bin/${CROSS_TRIPLE}-as \ ENV AS=${CROSS_ROOT}/bin/${CROSS_TRIPLE}-as \
AR=${CROSS_ROOT}/bin/${CROSS_TRIPLE}-ar \ AR=${CROSS_ROOT}/bin/${CROSS_TRIPLE}-ar \
CC=${CROSS_ROOT}/bin/${CROSS_TRIPLE}-gcc \ CC=${CROSS_ROOT}/bin/${CROSS_TRIPLE}-gcc \
File diff suppressed because it is too large Load Diff
-14
View File
@@ -1,14 +0,0 @@
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_13=y CT_ZLIB_V_1_2_12=y
CT_ZLIB_VERSION="1.2.13" CT_ZLIB_VERSION="1.2.12"
CT_ZLIB_MIRRORS="https://github.com/madler/zlib/releases/download/v${CT_ZLIB_VERSION} https://www.zlib.net/" CT_ZLIB_MIRRORS="http://downloads.sourceforge.net/project/libpng/zlib/${CT_ZLIB_VERSION} https://www.zlib.net/ https://www.zlib.net/fossils"
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
@@ -1,14 +0,0 @@
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
@@ -1,14 +0,0 @@
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
@@ -1,18 +0,0 @@
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_13=y CT_ZLIB_V_1_2_12=y
CT_ZLIB_VERSION="1.2.13" CT_ZLIB_VERSION="1.2.12"
CT_ZLIB_MIRRORS="https://github.com/madler/zlib/releases/download/v${CT_ZLIB_VERSION} https://www.zlib.net/" CT_ZLIB_MIRRORS="http://downloads.sourceforge.net/project/libpng/zlib/${CT_ZLIB_VERSION} https://www.zlib.net/ https://www.zlib.net/fossils"
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
@@ -1,13 +0,0 @@
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_13=y CT_ZLIB_V_1_2_12=y
CT_ZLIB_VERSION="1.2.13" CT_ZLIB_VERSION="1.2.12"
CT_ZLIB_MIRRORS="https://github.com/madler/zlib/releases/download/v${CT_ZLIB_VERSION} https://www.zlib.net/" CT_ZLIB_MIRRORS="http://downloads.sourceforge.net/project/libpng/zlib/${CT_ZLIB_VERSION} https://www.zlib.net/ https://www.zlib.net/fossils"
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
@@ -1,13 +0,0 @@
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_13=y CT_ZLIB_V_1_2_12=y
CT_ZLIB_VERSION="1.2.13" CT_ZLIB_VERSION="1.2.12"
CT_ZLIB_MIRRORS="https://github.com/madler/zlib/releases/download/v${CT_ZLIB_VERSION} https://www.zlib.net/" CT_ZLIB_MIRRORS="http://downloads.sourceforge.net/project/libpng/zlib/${CT_ZLIB_VERSION} https://www.zlib.net/ https://www.zlib.net/fossils"
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
@@ -1,13 +0,0 @@
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_13=y CT_ZLIB_V_1_2_12=y
CT_ZLIB_VERSION="1.2.13" CT_ZLIB_VERSION="1.2.12"
CT_ZLIB_MIRRORS="https://github.com/madler/zlib/releases/download/v${CT_ZLIB_VERSION} https://www.zlib.net/" CT_ZLIB_MIRRORS="http://downloads.sourceforge.net/project/libpng/zlib/${CT_ZLIB_VERSION} https://www.zlib.net/ https://www.zlib.net/fossils"
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
@@ -1,13 +0,0 @@
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
@@ -1,13 +0,0 @@
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_13=y CT_ZLIB_V_1_2_12=y
CT_ZLIB_VERSION="1.2.13" CT_ZLIB_VERSION="1.2.12"
CT_ZLIB_MIRRORS="https://github.com/madler/zlib/releases/download/v${CT_ZLIB_VERSION} https://www.zlib.net/" CT_ZLIB_MIRRORS="http://downloads.sourceforge.net/project/libpng/zlib/${CT_ZLIB_VERSION} https://www.zlib.net/ https://www.zlib.net/fossils"
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
@@ -1,13 +0,0 @@
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_13=y CT_ZLIB_V_1_2_12=y
CT_ZLIB_VERSION="1.2.13" CT_ZLIB_VERSION="1.2.12"
CT_ZLIB_MIRRORS="https://github.com/madler/zlib/releases/download/v${CT_ZLIB_VERSION} https://www.zlib.net/" CT_ZLIB_MIRRORS="http://downloads.sourceforge.net/project/libpng/zlib/${CT_ZLIB_VERSION} https://www.zlib.net/ https://www.zlib.net/fossils"
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
@@ -1,14 +0,0 @@
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_13=y CT_ZLIB_V_1_2_12=y
CT_ZLIB_VERSION="1.2.13" CT_ZLIB_VERSION="1.2.12"
CT_ZLIB_MIRRORS="https://github.com/madler/zlib/releases/download/v${CT_ZLIB_VERSION} https://www.zlib.net/" CT_ZLIB_MIRRORS="http://downloads.sourceforge.net/project/libpng/zlib/${CT_ZLIB_VERSION} https://www.zlib.net/ https://www.zlib.net/fossils"
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
@@ -1,14 +0,0 @@
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_13=y CT_ZLIB_V_1_2_12=y
CT_ZLIB_VERSION="1.2.13" CT_ZLIB_VERSION="1.2.12"
CT_ZLIB_MIRRORS="https://github.com/madler/zlib/releases/download/v${CT_ZLIB_VERSION} https://www.zlib.net/" CT_ZLIB_MIRRORS="http://downloads.sourceforge.net/project/libpng/zlib/${CT_ZLIB_VERSION} https://www.zlib.net/ https://www.zlib.net/fossils"
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
@@ -1,14 +0,0 @@
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
@@ -1,14 +0,0 @@
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
@@ -1,14 +0,0 @@
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_13=y CT_ZLIB_V_1_2_12=y
CT_ZLIB_VERSION="1.2.13" CT_ZLIB_VERSION="1.2.12"
CT_ZLIB_MIRRORS="https://github.com/madler/zlib/releases/download/v${CT_ZLIB_VERSION} https://www.zlib.net/" CT_ZLIB_MIRRORS="http://downloads.sourceforge.net/project/libpng/zlib/${CT_ZLIB_VERSION} https://www.zlib.net https://www.zlib.net/fossils"
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
@@ -1,13 +0,0 @@
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
-43
View File
@@ -1,43 +0,0 @@
ARG ORG=dockcross
FROM ${ORG}/base:latest
LABEL maintainer="Gleb Popov arrowd@FreeBSD.org"
# Crosstool-ng version 2025-09-07
ENV CT_VERSION=crosstool-ng-1.28.0
#include "common.crosstool"
# The cross-compiling emulator
RUN apt-get update \
&& apt-get install -y \
qemu-user \
qemu-user-static \
&& apt-get clean --yes
# The CROSS_TRIPLE is a configured alias of the "loongarch64-unknown-linux-gnu" target.
ENV CROSS_TRIPLE=loongarch64-unknown-linux-gnu
ENV CROSS_ROOT=${XCC_PREFIX}/${CROSS_TRIPLE}
ENV AS=${CROSS_ROOT}/bin/${CROSS_TRIPLE}-as \
AR=${CROSS_ROOT}/bin/${CROSS_TRIPLE}-ar \
CC=${CROSS_ROOT}/bin/${CROSS_TRIPLE}-gcc \
CPP=${CROSS_ROOT}/bin/${CROSS_TRIPLE}-cpp \
CXX=${CROSS_ROOT}/bin/${CROSS_TRIPLE}-g++ \
LD=${CROSS_ROOT}/bin/${CROSS_TRIPLE}-ld \
FC=${CROSS_ROOT}/bin/${CROSS_TRIPLE}-gfortran
ENV QEMU_LD_PREFIX="${CROSS_ROOT}/${CROSS_TRIPLE}/sysroot"
ENV QEMU_SET_ENV="LD_LIBRARY_PATH=${CROSS_ROOT}/lib:${QEMU_LD_PREFIX}"
COPY Toolchain.cmake /usr/lib/${CROSS_TRIPLE}/
ENV CMAKE_TOOLCHAIN_FILE=/usr/lib/${CROSS_TRIPLE}/Toolchain.cmake
ENV PKG_CONFIG_PATH=/usr/lib/loongarch64-unknown-linux-gnu/pkgconfig
# Linux kernel cross compilation variables
ENV PATH=${PATH}:${CROSS_ROOT}/bin
ENV CROSS_COMPILE=${CROSS_TRIPLE}-
ENV ARCH=loongarch64
#include "common.label-and-env"
-20
View File
@@ -1,20 +0,0 @@
set(CMAKE_SYSTEM_NAME Linux)
set(CMAKE_SYSTEM_VERSION 1)
set(CMAKE_SYSTEM_PROCESSOR loongarch64)
set(cross_triple $ENV{CROSS_TRIPLE})
set(cross_root $ENV{CROSS_ROOT})
set(CMAKE_C_COMPILER $ENV{CC})
set(CMAKE_CXX_COMPILER $ENV{CXX})
set(CMAKE_Fortran_COMPILER $ENV{FC})
set(CMAKE_CXX_FLAGS "-I ${cross_root}/include/")
list(APPEND CMAKE_FIND_ROOT_PATH ${CMAKE_PREFIX_PATH} ${cross_root} ${cross_root}/${cross_triple})
set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
set(CMAKE_SYSROOT ${cross_root}/${cross_triple}/sysroot)
set(CMAKE_CROSSCOMPILING_EMULATOR /usr/bin/qemu-loongarch64)
File diff suppressed because it is too large Load Diff
-15
View File
@@ -1,15 +0,0 @@
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_13=y CT_ZLIB_V_1_2_12=y
CT_ZLIB_VERSION="1.2.13" CT_ZLIB_VERSION="1.2.12"
CT_ZLIB_MIRRORS="https://github.com/madler/zlib/releases/download/v${CT_ZLIB_VERSION} https://www.zlib.net/" CT_ZLIB_MIRRORS="http://downloads.sourceforge.net/project/libpng/zlib/${CT_ZLIB_VERSION} https://www.zlib.net/ https://www.zlib.net/fossils"
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
@@ -1,11 +0,0 @@
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_13=y CT_ZLIB_V_1_2_12=y
CT_ZLIB_VERSION="1.2.13" CT_ZLIB_VERSION="1.2.12"
CT_ZLIB_MIRRORS="https://github.com/madler/zlib/releases/download/v${CT_ZLIB_VERSION} https://www.zlib.net/" CT_ZLIB_MIRRORS="http://downloads.sourceforge.net/project/libpng/zlib/${CT_ZLIB_VERSION} https://www.zlib.net/ https://www.zlib.net/fossils"
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
@@ -1,13 +0,0 @@
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
+1 -2
View File
@@ -1,5 +1,4 @@
ARG ORG=dockcross FROM dockcross/base:latest
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_13=y CT_ZLIB_V_1_2_12=y
CT_ZLIB_VERSION="1.2.13" CT_ZLIB_VERSION="1.2.12"
CT_ZLIB_MIRRORS="https://github.com/madler/zlib/releases/download/v${CT_ZLIB_VERSION} https://www.zlib.net/" CT_ZLIB_MIRRORS="http://downloads.sourceforge.net/project/libpng/zlib/${CT_ZLIB_VERSION} https://www.zlib.net/ https://www.zlib.net/fossils"
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
@@ -1,13 +0,0 @@
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_13=y CT_ZLIB_V_1_2_12=y
CT_ZLIB_VERSION="1.2.13" CT_ZLIB_VERSION="1.2.12"
CT_ZLIB_MIRRORS="https://github.com/madler/zlib/releases/download/v${CT_ZLIB_VERSION} https://www.zlib.net/" CT_ZLIB_MIRRORS="http://downloads.sourceforge.net/project/libpng/zlib/${CT_ZLIB_VERSION} https://www.zlib.net/ https://www.zlib.net/fossils"
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
@@ -1,13 +0,0 @@
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_13=y CT_ZLIB_V_1_2_12=y
CT_ZLIB_VERSION="1.2.13" CT_ZLIB_VERSION="1.2.12"
CT_ZLIB_MIRRORS="https://github.com/madler/zlib/releases/download/v${CT_ZLIB_VERSION} https://www.zlib.net/" CT_ZLIB_MIRRORS="http://downloads.sourceforge.net/project/libpng/zlib/${CT_ZLIB_VERSION} https://www.zlib.net/ https://www.zlib.net/fossils"
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
@@ -1,11 +0,0 @@
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
@@ -1,13 +0,0 @@
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_13=y CT_ZLIB_V_1_2_12=y
CT_ZLIB_VERSION="1.2.13" CT_ZLIB_VERSION="1.2.12"
CT_ZLIB_MIRRORS="https://github.com/madler/zlib/releases/download/v${CT_ZLIB_VERSION} https://www.zlib.net/" CT_ZLIB_MIRRORS="http://downloads.sourceforge.net/project/libpng/zlib/${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
@@ -1,14 +0,0 @@
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
@@ -1,14 +0,0 @@
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_13=y CT_ZLIB_V_1_2_12=y
CT_ZLIB_VERSION="1.2.13" CT_ZLIB_VERSION="1.2.12"
CT_ZLIB_MIRRORS="https://github.com/madler/zlib/releases/download/v${CT_ZLIB_VERSION} https://www.zlib.net/" CT_ZLIB_MIRRORS="http://downloads.sourceforge.net/project/libpng/zlib/${CT_ZLIB_VERSION} https://www.zlib.net/ https://www.zlib.net/fossils"
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
@@ -1,13 +0,0 @@
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_13=y CT_ZLIB_V_1_2_12=y
CT_ZLIB_VERSION="1.2.13" CT_ZLIB_VERSION="1.2.12"
CT_ZLIB_MIRRORS="https://github.com/madler/zlib/releases/download/v${CT_ZLIB_VERSION} https://www.zlib.net/" CT_ZLIB_MIRRORS="http://downloads.sourceforge.net/project/libpng/zlib/${CT_ZLIB_VERSION} https://www.zlib.net/ https://www.zlib.net/fossils"
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
@@ -1,13 +0,0 @@
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_13=y CT_ZLIB_V_1_2_12=y
CT_ZLIB_VERSION="1.2.13" CT_ZLIB_VERSION="1.2.12"
CT_ZLIB_MIRRORS="https://github.com/madler/zlib/releases/download/v${CT_ZLIB_VERSION} https://www.zlib.net/" CT_ZLIB_MIRRORS="http://downloads.sourceforge.net/project/libpng/zlib/${CT_ZLIB_VERSION} https://www.zlib.net/ https://www.zlib.net/fossils"
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
@@ -1,13 +0,0 @@
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
@@ -1,13 +0,0 @@
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
@@ -1,15 +0,0 @@
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
@@ -1,13 +0,0 @@
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
@@ -1,13 +0,0 @@
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
@@ -1,14 +0,0 @@
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_13=y CT_ZLIB_V_1_2_12=y
CT_ZLIB_VERSION="1.2.13" CT_ZLIB_VERSION="1.2.12"
CT_ZLIB_MIRRORS="https://github.com/madler/zlib/releases/download/v${CT_ZLIB_VERSION} https://www.zlib.net/" CT_ZLIB_MIRRORS="http://downloads.sourceforge.net/project/libpng/zlib/${CT_ZLIB_VERSION} https://www.zlib.net/ https://www.zlib.net/fossils"
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"

Some files were not shown because too many files have changed in this diff Show More