CI: revive workflows for Julia 1.12 (Ubuntu + Windows)#44
Open
JKRT wants to merge 11 commits into
Open
Conversation
JKRT
commented
Jun 13, 2026
Owner
- checkout@v4 with recursive submodules; julia-actions v2 stack
- Julia 1.12 (matches [compat]/[sources]); drop macOS and stale 1.7
- non-blocking Codecov v4
- add opt-in julia-nightly.yml forward-guard
- checkout@v4 with recursive submodules; julia-actions v2 stack - Julia 1.12 (matches [compat]/[sources]); drop macOS and stale 1.7 - non-blocking Codecov v4 - add opt-in julia-nightly.yml forward-guard (manual + weekly, non-gating) Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
- docs/ scaffold: index, installation, examples, API reference - API page pulls existing docstrings for OM.simulate/translate/flatten, library loaders, and result export - docs.yml: build on PR, deploy to gh-pages on master/tags via GITHUB_TOKEN - warnonly=true for initial deploys; tighten once API pages are complete Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
instantiate auto-precompiles, but OMBackend's precompile workload loads OMParser whose native .so is produced by the build step. Disable auto-precompile during instantiate, run Pkg.build, then Pkg.precompile so the downloaded parser libraries exist first. Applied to CI, nightly, docs. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
OMBackend's deps/build.jl is a standalone-dev script (Pkg.add of registry deps + rebuild of OMParser/OMFrontend). In the OM umbrella it is redundant and its build sandbox resolves relative ../DAE.jl sources to a nonexistent sibling path. OMBackend has no native artifact, so build only OMParser, OMRuntimeExternalC, OMFrontend; OMBackend is still precompiled normally. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
OMFrontend's build.jl (like OMBackend's) is a standalone-dev script that Pkg.add's deps from git master, clobbering the umbrella's path sources - it re-resolved OMParser to git#master, dropping the just-built native lib and breaking precompile. Build only the two packages that download genuine native artifacts and whose builds don't clobber sources; OMFrontend/OMBackend are precompiled normally. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Submodule-recursive + committed-Manifest fought the project's design: OMParser's native lib (git-ignored, downloaded at build) wasn't found at precompile, and submodule pointers are unreliable. Adopt OMFrontend.jl's proven pattern: check out OM and every sub-package as siblings, Pkg.develop them via ../<name>.jl, build only the native-artifact packages (OMParser/OMRuntimeExternalC), resolve, precompile, then run tests. No submodules used, so submodule-pointer drift is irrelevant. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
runtests.jl/testUtils.jl 'using' these but OM declares only Test in [extras]; include(runtests.jl) on the main project does not merge [targets]. Promote them to direct deps in the CI env (already resolved transitively). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Same proven recipe as CI.yml (sibling checkouts, Pkg.develop, native-only build, no coverage). nightly: weekly/dispatch on Julia nightly. docs: builds the Documenter site against the dev'd OM. (nightly/docs not act-validated; CI.yml is the act-proven one.) Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
JKRT
pushed a commit
to OpenModelica/OMRuntimeExternalC.jl
that referenced
this pull request
Jun 13, 2026
The prebuilt .so files shipped in the libs-v0.1.0 release have RUNPATH baked to the original build host (/home/johti17/Projects/OpenModelica/ build_cmake/...), so ld.so cannot resolve inter-library DT_NEEDED entries on consumer machines. The previous __init__ only dlopen'd libModelicaCallbacks, libModelicaIO and libModelicaExternalC, leaving libOpenModelicaRuntimeC, libomcgc, libModelicaMatIO, libModelicaStandardTables and libSimulationRuntimeC unresolved. As a result loading libModelicaStandardTables.so fails with "libModelicaIO.so: cannot open shared object file" whenever an external Modelica function is invoked, even though libModelicaIO.so sits next to it on disk. The ENV["LD_LIBRARY_PATH"] mutation in the old __init__ is ineffective on Linux because glibc's ld.so caches LD_LIBRARY_PATH at process start. Dlopen every shipped library by absolute path with RTLD_GLOBAL in a fixed topological order. ld.so reuses the already-loaded library when it sees the same SONAME on a dependent load, so DT_NEEDED references are satisfied without relying on RUNPATH or LD_LIBRARY_PATH. The libModelicaCallbacks shim is still loaded first so its symbols win global resolution and override the default OMC setjmp/longjmp-based error handlers. Verified with the libs-v0.1.0 zip on Linux: dlopen of libModelicaStandardTables.so now succeeds where it previously failed with the same error observed in JKRT/OM.jl#44 CI. Refs JKRT/OM.jl#44 Co-Authored-By: JKRT_CLAUDE <247156613+SVAGEN26@users.noreply.github.com>
SVAGEN26
added a commit
to SVAGEN26/OM.jl
that referenced
this pull request
Jun 14, 2026
The OMRuntimeExternalC.jl libs-v0.1.0 Linux zip ships the OMC libraries but not their system dependencies. libSimulationRuntimeC.so has DT_NEEDED entries for liblapack.so.3, libblas.so.3 and libgfortran.so.5, which ubuntu-24.04 runners do not provide out of the box. The Julia __init__ pre-load (OpenModelica/OMRuntimeExternalC.jl#15) loads every shipped OMC library correctly, then fails on libSimulationRuntimeC with "liblapack.so.3: cannot open shared object file", taking down every MSL, Spice3 and external-builtin test that goes through structural_simplify or the OMC nonlinear solver. Install liblapack3, libblas3 and libgfortran5 before julia-actions/ setup-julia runs. The Windows x86_64-mingw32 zip is self-contained (libgfortran-5.dll, libgcc_s_seh-1.dll, libopenblas.dll, libstdc++-6.dll and friends are all bundled), so no install step is needed there. Refs JKRT#44, OpenModelica/OMRuntimeExternalC.jl#15 Co-Authored-By: JKRT_CLAUDE <247156613+SVAGEN26@users.noreply.github.com>
3 tasks
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.