Commit graph

4 commits

Author SHA1 Message Date
af648c0330 fix: save full EXLA build cache (object files + libexla.so) in CI image
Some checks failed
Build and Push / Build CI test image (push) Successful in 35s
Build and Push / Build and Push Docker Image (push) Failing after 5m33s
EXLA's cached_make copies libexla.so but Make still compiles .o files
when they're missing from deps/exla/cache/ (they don't survive
mix deps.get). Save the pre-built cache/ directory at /opt/exla-cache/
in the CI image and restore it after mix deps.get in the test step.
With both .o files and libexla.so present, Make skips all C++ compilation.
2026-08-05 10:05:41 -05:00
88c46b9c1d fix: compile all deps in CI image to resolve transitive compile deps
Some checks failed
Build and Push / Build CI test image (push) Successful in 5m11s
Build and Push / Build and Push Docker Image (push) Failing after 15m14s
EXLA's cached_make needs Mix.Tasks.Compile.ElixirMake (from elixir_make),
which must be compiled first. mix deps.compile exla alone doesn't handle
transitive compile-time deps. Use mix deps.compile without args to
compile in dependency order.
2026-08-05 09:26:16 -05:00
32b428f49b fix: compile xla before exla in CI image; make it a build pre-req
Some checks failed
Build and Push / Build CI test image (push) Failing after 26s
Build and Push / Build and Push Docker Image (push) Has been skipped
- Dockerfile.ci: compile xla dep before exla — exla's extract_xla
  calls XLA.archive_path!/0 which requires xla to be compiled first
- Fold build-ci-image into build.yaml as prerequisite job so tests
  always have the precompiled EXLA image available
- Remove standalone build-ci-image.yaml (redundant)
2026-08-05 09:18:37 -05:00
08175fc6ae feat: precompile EXLA in CI base image to prevent OOM kills
Some checks failed
Build CI test image / Build and push CI image (push) Failing after 3m9s
Build and Push / Build and Push Docker Image (push) Has been cancelled
Add Dockerfile.ci that extends the hexpm/elixir image with precompiled
EXLA NIF cached at ~/.cache/xla/. When mix test runs, EXLA's cached_make
finds the precompiled libexla.so and skips the OOM-prone g++ C++
compilation entirely.

- Dockerfile.ci: two-stage build — builder compiles EXLA into cache;
  final stage copies the cache and installs test deps (cdo)
- .forgejo/workflows/build-ci-image.yaml: builds and pushes prop-ci
  image on mix.exs/mix.lock/vendor changes + weekly cron
- .forgejo/workflows/build.yaml: test step uses prop-ci:latest instead
  of raw hexpm/elixir image, removing apt-get + hex/rebar install steps
2026-08-05 09:13:50 -05:00