Skip to content

CI: revive workflows for Julia 1.12 (Ubuntu + Windows)#44

Open
JKRT wants to merge 11 commits into
masterfrom
ci-revival
Open

CI: revive workflows for Julia 1.12 (Ubuntu + Windows)#44
JKRT wants to merge 11 commits into
masterfrom
ci-revival

Conversation

@JKRT

@JKRT JKRT commented Jun 13, 2026

Copy link
Copy Markdown
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>
JKRT and others added 9 commits June 13, 2026 14:38
- 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>
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.

2 participants