From ab409af1ed0a05a0debe34695276a4b264ee8cf6 Mon Sep 17 00:00:00 2001 From: Aleksei Sviridkin Date: Sat, 26 Sep 2026 07:25:39 +0300 Subject: [PATCH] docs(development): describe the multi-arch default of make image cozystack now builds package images for linux/amd64 and linux/arm64 unless PLATFORM is set, which needs a builder that supports both. LOAD=1 builds for the host only, and talos and testing always build amd64. The development page showed a two-platform builder without saying why it is needed or how to build a single architecture. Assisted-by: LLM Signed-off-by: Aleksei Sviridkin --- content/en/docs/next/development.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/content/en/docs/next/development.md b/content/en/docs/next/development.md index c239623f..ae655903 100644 --- a/content/en/docs/next/development.md +++ b/content/en/docs/next/development.md @@ -301,6 +301,10 @@ docker buildx create \ Alternatively, omit the --driver* options to set up the build environment in an local Docker environment. +`make image` builds for `linux/amd64` and `linux/arm64` by default, so the builder must support both platforms, as the one above does. Pass `BUILDER=` to pick it. Go builders compile natively on the build platform, so only package installs in the image run under emulation; a local Docker builder needs QEMU (or Rosetta on Apple Silicon) registered for the other architecture. Set `PLATFORM` to build something else, for example `PLATFORM=linux/amd64` for a single architecture. + +`LOAD=1 PUSH=0` loads the image into the local Docker image store instead of pushing it, and builds for the host architecture only, because the classic image store cannot load a multi-platform image. The `talos` and `testing` packages always build `linux/amd64`, since what they produce only runs there. + ### Packages management Each application includes a Makefile to simplify the development process. We follow this logic for every package: