Repository navigation
fix(#9): native builds stage the jars asked for on every build - #16
Merged
Merged
Conversation
build-native.sh reused whatever was in src/arcadedb_embedded/jars: with no jars directory it never pulled arcadedata/arcadedb:$ARCADEDB_TAG, and with one it ignored it. scripts/stage_jars.sh now clears and stages the jars on every build, from the jars directory build.sh passes (local-jars/lib) or freshly from the image (docker run --pull always). A pinned tag that names another engine than the given jars warns. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This was referenced Oct 23, 2026
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.
Closes #9
build-native.shreused whatever jars were insrc/arcadedb_embedded/jars. That caused two problems:arcadedata/arcadedb:${ARCADEDB_TAG}, so oncelatestmoved, local wheels kept the old engine, andARCADEDB_TAGhad no effect.build.sh's third argument): it ignored it. CI only worked because the directory it passes issrc/arcadedb_embedded/jarsitself.The new
scripts/stage_jars.sh, sourced bybuild-native.sh, stages the jars on every build. It first clears earlier jars, including a previous build's bridge jar. Then:build.shwas given a jars directory, it passes thelocal-jars/libcopy as a new 6th argument, and the jars come from there. A pinnedARCADEDB_TAGthat names a different engine than those jars produces a warning.docker run --rm --pull always arcadedata/arcadedb:$tag, so a locally cachedlatestdoesn't count. A failed pull fails the build.Test plan
tests/test_stage_jars.py, 8 tests, runsstage_jarsunder bash with a fakedockeron PATH. RED: 4 failed before the script existed.--pull always, and stale jars, including a previous bridge jar, are replaced.latestdoesn't.build.shpasses its jars directory on.stale-marker-1.0.jarinsrc/arcadedb_embedded/jars:latestwas pulled again (new layers came down), the marker was gone, 86 jars were staged, and the wheel26.11.1.dev0built.Coverage
Invariant: a native build bundles exactly the jars it was asked for (the given jars directory, or
arcadedata/arcadedb:<tag>as it is now), never a previous build's.build.sh <plat> <py>native, no jars directorybuild.sh <plat> <py> <jars-dir>native (CI)build-native.shby hand, no 6th argumentbuild.shDocker (Linux) buildDockerfile.build(artifact or image), notsrc/.../jarsKnown gaps: The Linux Docker build takes its base image by tag through
FROM arcadedata/arcadedb:<tag>and doesn't force a pull, so a stale locallatestimage could still be used there. CI always passes the artifact jars, so only local Linux builds without a jars directory are affected. I can file this as a follow-up if you want.Adversarial pass
build.shcopies the artifact tolocal-jars/liband passes that), and a new test covers it. The same-directory branch stays only as a guard against deleting the source when the script is run by hand.ARCADEDB_TAGis still ignored silently when a jars directory is given. Fixed: a pinned tag that differs from the engine in the given jars now warns. The issue asked for at least a warning; failing would break builds that deliberately pin jars.build.shpasses its directory only greps the source. True. It is a structural check; the behaviour behind it is covered by the stage tests and by CI, where every platform passes a jars directory.Review cycles
This repository has no Claude review workflow, so no bot review was waited for. Final state:
no-reviewer.🤖 Generated with Claude Code