Skip to content

feat(crates): mxbuild build crates (7–11) + Mendix 8 runtime/build crates#9

Merged
hjonck merged 1 commit into
mainfrom
feat/build-crates-mx8
Jun 23, 2026
Merged

feat(crates): mxbuild build crates (7–11) + Mendix 8 runtime/build crates#9
hjonck merged 1 commit into
mainfrom
feat/build-crates-mx8

Conversation

@hjonck

@hjonck hjonck commented Jun 23, 2026

Copy link
Copy Markdown
Contributor

What

Two additions to the recipe library, both following the established recipe-pull, no-committed-binary model (D-DOCKER-LIB-001/002; guard.sh):

  1. Build cratescrates/mendix-<N>/build/ for every major (7/9/10/11). A version-pinned mxbuild + mx toolchain image that compiles an .mpr.mda and runs mx check, with nothing on the host but Docker (no Studio Pro). The toolchain is curl'd from cdn.mendix.com/runtime/mxbuild-<ver>.tar.gz at build. The runtime crates run an app; the build crates produce the .mda they run.
  2. Mendix 8 — runtime + build crate, completing 7–11 coverage.

Mendix 8: CDN, not portal-only

The original scope assumed MX8 needed a portal login (the prior probe only checked 8.18.21.4259, which 404s). Re-probing with the final LTS patch shows 8.18.35.97 runtime and mxbuild are CDN-hosted (HTTP 200) — so MX8 ships as a normal recipe-pull crate. crates/mendix-8/PORTAL-DOWNLOAD.md documents the portal fallback and explicit agent download-instructions for older MX8 patches the CDN no longer serves.

Design notes

  • mxbuild invocation mirrors the production AIDE aide-mxtools entrypoint (--java-home / --java-exe-path / --gradle-home / --loose-version-check), retargeted at the baked /opt/mxtools/modeler.
  • JDK per major: 7→8, 8→11, 9→11, 10→21, 11→21 (full JDK — mxbuild compiles javasource).
  • Build container runs as root by design (writes the .mda into the bind-mounted /workspace); --user $(id -u) documented for Linux.
  • The MX11 .NET/libgdiplus/$HOME/.local/share/Mendix whitelist FailFast is pre-solved (carried from aide-mxtools).

Verification (honest)

Crate Status
mendix-11/build image-verified — builds clean (amd64, ~650 MB); CDN toolchain pull succeeds; mxbuild/mx/gradle resolve at /opt/mxtools/modeler; entrypoint runs (version, unknown-command)
7/8/9/10 build + mendix-8 runtime authored to the same proven pattern; CDN source URLs verified HTTP 200; image build / full .mpr→.mda smoke pending (recorded as smoke_verified: pending in each provenance.yaml — no false verification committed)

Found + fixed a latent bug carried from aide-mxtools: the version subcommand ran mx --version, which mx rejects (it has no toolchain version flag) — now reports the baked MENDIX_VERSION.

Guard / CI

guard.sh passes (91 tracked files, no Mendix binaries, none over 256 KB). No binary is committed; the toolchain is fetched at build on the licensed user's machine.

Branched from mainindependent of #8 (container-engine bootstrap).

🤖 Generated with Claude Code

…ates

Adds a build crate under crates/mendix-<N>/build/ for every Mendix major
(7/9/10/11): a version-pinned mxbuild + mx toolchain image that compiles an
.mpr to an .mda and runs `mx check`, recipe-pulling mxbuild-<ver>.tar.gz from
cdn.mendix.com at build (no committed binary; guard.sh-compliant). The mxbuild
invocation mirrors the production AIDE aide-mxtools entrypoint (--java-home /
--java-exe-path / --gradle-home / --loose-version-check), retargeted at the
baked /opt/mxtools/modeler.

Adds Mendix 8 coverage (runtime + build). The earlier scope assumed MX8 was
portal-only, but the final 8.18 LTS patch (8.18.35.97) is CDN-hosted (verified
HTTP 200), so MX8 ships as a first-class recipe-pull crate. PORTAL-DOWNLOAD.md
documents the portal fallback + agent download-instructions for the older MX8
patches the public CDN no longer serves.

Verification (2026-06-23): mendix-11/build is image-verified — it builds clean
(amd64, ~650 MB), the CDN toolchain pull succeeds, mxbuild/mx/gradle resolve at
/opt/mxtools/modeler, and the entrypoint runs (version/unknown-command). The
other crates are authored to the same proven pattern with their CDN source URLs
verified reachable; the full .mpr -> .mda compile smoke is recorded honestly as
pending in each provenance.yaml (no committed false verification).

- docs/building-mendix-apps-in-docker.md: consolidated build guide
- README: split runtime/build version tables, MX8 row, updated repo layout

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@hjonck hjonck merged commit 138129a into main Jun 23, 2026
1 check passed
@hjonck hjonck deleted the feat/build-crates-mx8 branch June 23, 2026 00:37
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant