All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
- Neovim text editor.
- Added empty
libiconv.astub in Dockerfile to satisfy-liconvat link time. On glibc systems (Ubuntu), iconv is built into libc and there is no separatelibiconvpackage, but GNATCOLL iconv links-liconvexplicitly.
- "Embedded Board Support" section in README with board table and two readiness tables (Alire image vs System image) showing Ada compiler and C cross-compiler availability per target.
alr/gprbuildconfiguration examples in USER_GUIDE §0.4 for all four target/image combinations (desktop Alire, desktop System, Cortex-M7 bare-metal, Cortex-A7 Linux).
- README badges placed on a single line for correct inline rendering.
- Embedded development toolchain for both images:
- ARM Cortex-M bare-metal cross-compiler (
gcc-arm-none-eabi,libnewlib-arm-none-eabi) for STM32F769I and similar boards. - ARM Cortex-A Linux cross-compiler (
gcc-arm-linux-gnueabihf,libc6-dev-armhf-cross) for STM32MP135F and similar boards. - Hardware tools:
openocd,stlink-tools,gdb-multiarch.
- ARM Cortex-M bare-metal cross-compiler (
- Embedded board support table in README and USER_GUIDE §0.4.
- Updated Dockerfile headers to document embedded development support.
- Makefile
pullandpull-systemtargets that pull from GHCR and tag for local use, somake run/make run-systemwork without building locally. - Makefile convenience aliases:
docker-pull,docker-pull-system,podman-pull,podman-pull-system.
- Multi-architecture support (
linux/amd64+linux/arm64) for the system toolchain image (Dockerfile.system). Docker pulls the native arm64 variant automatically on Apple Silicon. - QEMU setup in CI workflows for cross-platform builds of the system image.
- Per-architecture Alire checksums (
ALIRE_SHA256_AMD64,ALIRE_SHA256_ARM64) inDockerfile.systemwith dynamic binary selection viauname -m. - Architecture compatibility table and verified test matrix in README.
- USER_GUIDE §0.2 "Supported architectures" section documenting why the Alire-managed image is amd64-only.
- Makefile system image parity:
run-root-system,run-shell-system,save-system,show-tags-system,tag-system,tag-latest-system. - Makefile convenience aliases:
docker-build-system,docker-run-system,podman-build-system,podman-run-system.
docker-build.ymlnow usesdocker buildx buildwith per-matrix platform support: amd64-only for the Alire image, amd64+arm64 for the system image.docker-publish.ymladdsplatforms: linux/amd64,linux/arm64to the system image job, producing a multi-arch manifest on GHCR.- Makefile help text reorganized into clear groups (Alire image, system image, Docker aliases, Podman aliases, general) with architecture info visible.
- USER_GUIDE §15.2 updated to document per-Dockerfile Alire upgrade steps.
- The Alire-managed image (
Dockerfile) remainslinux/amd64only. Alire 2.1.0's aarch64 binary requires glibc 2.38 (Ubuntu 22.04 ships 2.35), and Alire does not distribute pre-builtgnat_nativetoolchains for aarch64-linux.
- Moved
# syntax=docker/dockerfile:1.7to line 1 in both Dockerfiles so BuildKit actually uses the specified frontend. - Added
entrypoint.shto "Files expected in the build context" header comment in both Dockerfiles. - Removed orphan
examples/hello_ada/hello_ada.adb; added copyright header to the actual source atsrc/hello_ada.adband fixed GNAT comment style. - Reject
HOST_USER=rootandHOST_UID=0inentrypoint.shto prevent accidental modification of the container's root account. - Added logging to
fixup_symlinks()so relinked toolchain paths are visible. - Fixed
alire.tomlauthor, maintainer, login, website, and "tdb" typo. - Fixed USER_GUIDE version from 2.1 to 2.0.0.
- Makefile targets
test-system,test-docker-system,test-podman-systemwithTEST_SCRIPT_SYSTEMfor system-image testing. make -fusage note in README explainingCURDIRbind-mount behavior.
- Unified CI build steps into a single matrix-driven step with
build_args,compile_cmd,gnat_cmd, andgprbuild_cmdparameters. - CI smoke test now matches Makefile test scripts (environment info, direct gprbuild for system variant, toolchain versions).
Dockerfile.systemfor Ubuntu 24.04 with system-packaged GNAT and GPRBuild.- Makefile targets:
build-system,build-system-no-cache,run-system. - CI matrix build for both Dockerfile variants in
docker-build.yml. - Two-job publish workflow (
publish-alire+publish-system) indocker-publish.yml. - USER_GUIDE §0 "Choosing a Dockerfile" with rationale and guidance.
- Alire configured with
gnat_externalin system image soalr builduses the system compiler without downloading toolchains.
- BREAKING: Default
Dockerfilebase image from Ubuntu 24.04 to Ubuntu 22.04, matching the platform Alire's GNAT toolchains are built on. - GitHub Actions pinned by SHA digest for supply-chain security.
- Documentation updated throughout for dual-Dockerfile structure.
- Promoted from 1.0.0-rc1 to stable release.
- Added
exports/to.dockerignoreto exclude temporary files from build context. - Added
exports/andexamples/to repository layout in README and USER_GUIDE. - Added
test,test-docker,test-podmantargets to CHANGELOG. - Added Alire crate version vs binary version note in USER_GUIDE §15.3.
- Updated pre-release testing status in USER_GUIDE §16 to reflect verified GitHub Actions workflows and Docker rootful testing.
- Ubuntu 24.04 base image pinned by digest for reproducibility.
- Alire 2.1.0 package manager with SHA256 checksum verification.
- GNAT 15.2.1 Ada compiler via Alire toolchain.
- GPRBuild 25.0.1 build system via Alire toolchain.
- Python 3 with venv support.
- Zsh interactive shell with autosuggestions and syntax highlighting.
- Runtime-adaptive user identity via
entrypoint.sh— no rebuild needed per developer. - Rootless detection via
/proc/self/uid_mapinspection. - Rootful privilege drop via
gosu. DISPLAY_USERenvironment variable for correct prompt identity in rootless mode.- Container detection markers (
IN_CONTAINER,CONTAINER_RUNTIME) exported by entrypoint for reliable.zshrcdetection. - Toolchain symlinks in
/usr/local/binfor non-interactive contexts. - Symlink fixup in entrypoint after home directory migration.
- Input validation for
HOST_UID,HOST_GID, andHOST_USERin entrypoint with deterministic fallback on failure. - Container-aware Zsh prompt with git branch and runtime indicator.
container_infoshell function for quick environment diagnostics.- Makefile with targets:
build,build-no-cache,run,run-root,run-shell,test,test-docker,test-podman,inspect,save,show-tags,tag-gnat,tag-latest,clean,compress. - Docker convenience aliases:
docker-build,docker-run. - Podman convenience aliases:
podman-build,podman-runwith--userns=keep-id. - Configurable container CLI via
CONTAINER_CLIvariable (default: nerdctl). - GitHub Actions build workflow with smoke test.
- GitHub Actions publish workflow with gated
latesttag. - LICENSE, README, and USER_GUIDE copied into image at
/usr/share/doc/dev-container-ada/. - Comprehensive USER_GUIDE.md covering architecture, security model, version upgrade procedures, and design decisions.
- Base image pinned by SHA256 digest.
- Alire download verified with SHA256 checksum.
latesttag only published on semver tags or explicit opt-in.run-rootbypasses entrypoint to guarantee a true root shell.- Passwordless sudo kept for development convenience; documented as an explicit design decision.