From 53fa8c1f4645fa549d2435d9f0da78100975f77e Mon Sep 17 00:00:00 2001 From: Hardy Jonck Date: Sun, 5 Jul 2026 00:26:05 +0200 Subject: [PATCH] fix(mendix-7,8): wire Mono for the Windows-only mxbuild toolchain MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The MX7/MX8 CDN mxbuild tarball ships Windows .NET Framework .exe binaries (no native Linux modeler/mxbuild), so the MX9+-derived Dockerfiles died at the toolchain assert. Add mono-complete + an adaptive step: use modeler/mxbuild if native, else wrap modeler/mxbuild.exe (and mx.exe) via mono, else fail with an inventory. MX9/10/11 native path byte-for-byte unchanged. Verified: docker build :7 (7.23.8) + :8 (8.18.35) succeed; mxbuild --help loads under Mono; a real .mpr build (MoneyWorksPortal MX7/MX8) reaches consistency-check. 🤖 Generated with [Claude Code](https://claude.com/claude-code) --- crates/mendix-7/build/Dockerfile | 16 +++++++++++----- crates/mendix-8/build/Dockerfile | 16 +++++++++++----- 2 files changed, 22 insertions(+), 10 deletions(-) diff --git a/crates/mendix-7/build/Dockerfile b/crates/mendix-7/build/Dockerfile index aa99a96..4e1f337 100644 --- a/crates/mendix-7/build/Dockerfile +++ b/crates/mendix-7/build/Dockerfile @@ -57,6 +57,7 @@ RUN apt-get update && apt-get install -y --no-install-recommends \ libicu70 \ libssl3 \ sqlite3 \ + mono-complete \ && rm -rf /var/lib/apt/lists/* # Layer 2 — Mendix build toolchain tarball (mxbuild + mx). ~300-500 MB download. @@ -75,13 +76,18 @@ RUN set -eux; \ echo "Extracting..."; \ tar -xzf /tmp/mxbuild.tar.gz -C /opt/mxtools; \ rm /tmp/mxbuild.tar.gz; \ - test -f /opt/mxtools/modeler/mxbuild || { \ - echo "FATAL: modeler/mxbuild not found at expected path /opt/mxtools/modeler/mxbuild."; \ - echo "Tarball top-level may have changed. Inspecting:"; \ + if [ -f /opt/mxtools/modeler/mxbuild ]; then \ + chmod +x /opt/mxtools/modeler/mxbuild /opt/mxtools/modeler/mx 2>/dev/null || true; \ + elif [ -f /opt/mxtools/modeler/mxbuild.exe ]; then \ + echo "Windows-only mxbuild (.NET Framework, MX7/8) — wiring Mono wrappers"; \ + printf '#!/bin/sh\nexec mono /opt/mxtools/modeler/mxbuild.exe "$@"\n' > /opt/mxtools/modeler/mxbuild; \ + [ -f /opt/mxtools/modeler/mx.exe ] && printf '#!/bin/sh\nexec mono /opt/mxtools/modeler/mx.exe "$@"\n' > /opt/mxtools/modeler/mx || true; \ + chmod +x /opt/mxtools/modeler/mxbuild /opt/mxtools/modeler/mx 2>/dev/null || true; \ + else \ + echo "FATAL: neither modeler/mxbuild nor modeler/mxbuild.exe present."; \ find /opt/mxtools -maxdepth 3 -type f -name 'mx*'; \ exit 1; \ - }; \ - chmod +x /opt/mxtools/modeler/mxbuild /opt/mxtools/modeler/mx 2>/dev/null || true; \ + fi; \ echo "Mendix ${MENDIX_VERSION} build toolchain ready at /opt/mxtools/modeler/" # Mendix mxbuild — MX 11's .NET toolchain in particular — creates settings under diff --git a/crates/mendix-8/build/Dockerfile b/crates/mendix-8/build/Dockerfile index 6c499ca..5236ada 100644 --- a/crates/mendix-8/build/Dockerfile +++ b/crates/mendix-8/build/Dockerfile @@ -57,6 +57,7 @@ RUN apt-get update && apt-get install -y --no-install-recommends \ libicu70 \ libssl3 \ sqlite3 \ + mono-complete \ && rm -rf /var/lib/apt/lists/* # Layer 2 — Mendix build toolchain tarball (mxbuild + mx). ~300-500 MB download. @@ -75,13 +76,18 @@ RUN set -eux; \ echo "Extracting..."; \ tar -xzf /tmp/mxbuild.tar.gz -C /opt/mxtools; \ rm /tmp/mxbuild.tar.gz; \ - test -f /opt/mxtools/modeler/mxbuild || { \ - echo "FATAL: modeler/mxbuild not found at expected path /opt/mxtools/modeler/mxbuild."; \ - echo "Tarball top-level may have changed. Inspecting:"; \ + if [ -f /opt/mxtools/modeler/mxbuild ]; then \ + chmod +x /opt/mxtools/modeler/mxbuild /opt/mxtools/modeler/mx 2>/dev/null || true; \ + elif [ -f /opt/mxtools/modeler/mxbuild.exe ]; then \ + echo "Windows-only mxbuild (.NET Framework, MX7/8) — wiring Mono wrappers"; \ + printf '#!/bin/sh\nexec mono /opt/mxtools/modeler/mxbuild.exe "$@"\n' > /opt/mxtools/modeler/mxbuild; \ + [ -f /opt/mxtools/modeler/mx.exe ] && printf '#!/bin/sh\nexec mono /opt/mxtools/modeler/mx.exe "$@"\n' > /opt/mxtools/modeler/mx || true; \ + chmod +x /opt/mxtools/modeler/mxbuild /opt/mxtools/modeler/mx 2>/dev/null || true; \ + else \ + echo "FATAL: neither modeler/mxbuild nor modeler/mxbuild.exe present."; \ find /opt/mxtools -maxdepth 3 -type f -name 'mx*'; \ exit 1; \ - }; \ - chmod +x /opt/mxtools/modeler/mxbuild /opt/mxtools/modeler/mx 2>/dev/null || true; \ + fi; \ echo "Mendix ${MENDIX_VERSION} build toolchain ready at /opt/mxtools/modeler/" # Mendix mxbuild — MX 11's .NET toolchain in particular — creates settings under