Summary
Three places in the local run path tell the user to run mxcli setup mxbuild:
javadeps.go: Run 'mxcli setup mxbuild --version <ver>' if this misbehaves.
mxserve.go verifyMxBuildCache: mxbuild cache incomplete: missing runtime directory ... re-run 'mxcli setup mxbuild -p <app.mpr>'
mxserve.go StartServe: mxbuild not found; run 'mxcli setup mxbuild -p <app.mpr>' or pass ServeOptions.MxBuildPath
On macOS the command detects the version, finds the Studio Pro bundle, prints its path, and exits.
It creates no ~/.mxcli/mxbuild/<ver>/modeler link and does not replace a Linux CDN download that
is already there. Because StartServe reads only the cache (see b2a), the next run --local
fails in the same way as before the "remedy".
Environment
- mxcli v0.21.0 (binary built 2026-09-06T15:33:18Z);
cmd/mxcli/setup.go read at v0.21.0.
- macOS (Darwin 25.6.0, Apple Silicon), Studio Pro 11.12.0 Beta and 11.12.2 Beta installed.
- Mendix 11.12.2 project and a Mendix 11.12.0 blank app.
Steps to reproduce
Case A, entry absent:
$ ls -la ~/.mxcli/mxbuild/11.12.2/
runtime -> /Users/<me>/.mxcli/runtime/11.12.2/runtime
$ mxcli setup mxbuild -p <project>.mpr --version 11.12.2
Using Studio Pro mxbuild for 11.12.2: /Applications/Mendix Studio Pro 11.12.2 Beta.app/Contents/modeler/mxbuild
(No download needed. Re-run with --force to download the Linux CDN binary instead.)
$ mxcli setup mxbuild -p <project>.mpr
Detected Mendix version: 11.12.2
Using Studio Pro mxbuild for 11.12.2: /Applications/Mendix Studio Pro 11.12.2 Beta.app/Contents/modeler/mxbuild
(No download needed. Re-run with --force to download the Linux CDN binary instead.)
$ ls -la ~/.mxcli/mxbuild/11.12.2/
runtime -> /Users/<me>/.mxcli/runtime/11.12.2/runtime
Case B, wrong entry present:
$ file -b ~/.mxcli/mxbuild/11.12.0/modeler/mxbuild
ELF 64-bit LSB pie executable, ARM aarch64 ...
$ mxcli setup mxbuild -p <blankapp>.mpr
Detected Mendix version: 11.12.0
Using Studio Pro mxbuild for 11.12.0: /Applications/Mendix Studio Pro 11.12.0 Beta.app/Contents/modeler/mxbuild
(No download needed. Re-run with --force to download the Linux CDN binary instead.)
$ file -b ~/.mxcli/mxbuild/11.12.0/modeler/mxbuild
ELF 64-bit LSB pie executable, ARM aarch64 ...
In both cases the following mxcli run --local fails exactly as it did before (b2a shapes 1 and
2). The only thing that helps is a hand made symlink:
ln -s "/Applications/Mendix Studio Pro 11.12.2 Beta.app/Contents/modeler" ~/.mxcli/mxbuild/11.12.2/modeler.
Expected
Either setup mxbuild records its finding where the run path looks (a modeler symlink to the
Studio Pro bundle plus the runtime sibling, the layout verifyMxBuildCache already expects), or
the three messages stop recommending it on macOS and instead print the symlink, or say "install
Studio Pro ".
Actual
The command is a no op on the cache; the messages send the user in a circle.
Root cause
cmd/mxcli/setup.go (v0.21.0), macOS branch of setup mxbuild: after NativeMxBuildForSetup
returns a Studio Pro path it prints "Using Studio Pro mxbuild for %s: %s" and returns. The only
symlink writers in the tree are build.go:710, download.go:456, runlocal.go:395
(ensureMxBuildRuntimeSibling, runtime side only) and marketplace/refcache.go:341; none is on
this path.
Severity
Medium on mxcli v0.21.0 macOS: on its own it is a misleading remedy. Combined with b2a it is the
reason a macOS user must hand edit ~/.mxcli/mxbuild/ to run any project whose version was not
already cached, which is a blocker until b2a lands. Not applicable on Linux (the CDN download
populates the cache).
Trigger boundary
| Cache state before |
setup mxbuild output |
Cache state after |
Next run --local |
<ver>/ has runtime only |
Using Studio Pro mxbuild for 11.12.2 |
unchanged |
version mismatch (b2a shape 1) |
<ver>/modeler is the Linux download |
Using Studio Pro mxbuild for 11.12.0 |
unchanged |
linux binary error (b2a shape 2) |
<ver>/modeler symlink made by hand |
Using Studio Pro mxbuild for 11.12.2 |
unchanged |
build proceeds |
Follow-up to #1122
This is the setup-side remedy for the resolver defect in #1122, split out per one-issue-one-file.
If #1122 is fixed by passing the resolved path through to StartServe, this one shrinks to "three
messages recommend a command that changes nothing on macOS".
Summary
Three places in the local run path tell the user to run
mxcli setup mxbuild:javadeps.go:Run 'mxcli setup mxbuild --version <ver>' if this misbehaves.mxserve.goverifyMxBuildCache:mxbuild cache incomplete: missing runtime directory ... re-run 'mxcli setup mxbuild -p <app.mpr>'mxserve.goStartServe:mxbuild not found; run 'mxcli setup mxbuild -p <app.mpr>' or pass ServeOptions.MxBuildPathOn macOS the command detects the version, finds the Studio Pro bundle, prints its path, and exits.
It creates no
~/.mxcli/mxbuild/<ver>/modelerlink and does not replace a Linux CDN download thatis already there. Because
StartServereads only the cache (see b2a), the nextrun --localfails in the same way as before the "remedy".
Environment
cmd/mxcli/setup.goread at v0.21.0.Steps to reproduce
Case A, entry absent:
Case B, wrong entry present:
In both cases the following
mxcli run --localfails exactly as it did before (b2a shapes 1 and2). The only thing that helps is a hand made symlink:
ln -s "/Applications/Mendix Studio Pro 11.12.2 Beta.app/Contents/modeler" ~/.mxcli/mxbuild/11.12.2/modeler.Expected
Either
setup mxbuildrecords its finding where the run path looks (amodelersymlink to theStudio Pro bundle plus the
runtimesibling, the layoutverifyMxBuildCachealready expects), orthe three messages stop recommending it on macOS and instead print the symlink, or say "install
Studio Pro ".
Actual
The command is a no op on the cache; the messages send the user in a circle.
Root cause
cmd/mxcli/setup.go(v0.21.0), macOS branch ofsetup mxbuild: afterNativeMxBuildForSetupreturns a Studio Pro path it prints "Using Studio Pro mxbuild for %s: %s" and returns. The only
symlink writers in the tree are
build.go:710,download.go:456,runlocal.go:395(
ensureMxBuildRuntimeSibling, runtime side only) andmarketplace/refcache.go:341; none is onthis path.
Severity
Medium on mxcli v0.21.0 macOS: on its own it is a misleading remedy. Combined with b2a it is the
reason a macOS user must hand edit
~/.mxcli/mxbuild/to run any project whose version was notalready cached, which is a blocker until b2a lands. Not applicable on Linux (the CDN download
populates the cache).
Trigger boundary
setup mxbuildoutputrun --local<ver>/hasruntimeonly<ver>/modeleris the Linux download<ver>/modelersymlink made by handFollow-up to #1122
This is the setup-side remedy for the resolver defect in #1122, split out per one-issue-one-file.
If #1122 is fixed by passing the resolved path through to
StartServe, this one shrinks to "threemessages recommend a command that changes nothing on macOS".