Skip to content

Replace the Ant build with Gradle, output verified byte-identical#326

Draft
pacmano1 wants to merge 3 commits into
OpenIntegrationEngine:mainfrom
pacmano1:gradle-migration
Draft

Replace the Ant build with Gradle, output verified byte-identical#326
pacmano1 wants to merge 3 commits into
OpenIntegrationEngine:mainfrom
pacmano1:gradle-migration

Conversation

@pacmano1

Copy link
Copy Markdown
Contributor

Refs #52.

This replaces the Ant build with a standard Gradle build in one verified step. The full write-up, what changed, what is and is not byte-identical, how it was built, known limitations, and how to re-run every check, is BUILD-MIGRATION.md at the repo root. Start there.

The short version:

Verification is self-serve: tools/build-parity/ contains the comparator, the provenance audit, and a recipe for every route. The Ant baseline hash file (oie-release-verifier format, uncompressed SHA-256 e54cb2ef8c30ea887fb6752fc83a4dbf9fd818de3267177d29d6d2a1eaf3f6e4) is published here. A second maintainer re-running the dual-build recipe before merge is invited.

Draft while review runs its course.

@github-actions

github-actions Bot commented Jun 11, 2026

Copy link
Copy Markdown

Test Results

107 files   -   4  107 suites   - 107   3m 29s ⏱️ - 2m 18s
654 tests ±  0  654 ✅ ±  0  0 💤 ±0  0 ❌ ±0 
654 runs   - 654  654 ✅  - 654  0 💤 ±0  0 ❌ ±0 

Results for commit 3944b31. ± Comparison against base commit 8c1111b.

♻️ This comment has been updated with latest results.

pacmano1 added 2 commits June 11, 2026 13:52
Pure file moves, no content changes: every rename is 100% similarity.
Verify with: git show --stat -M100% (1,806 renames, 0 insertions,
0 deletions). Java sources to src/main/java, resources to
src/main/resources, tests to src/test/java and src/test/resources,
in every module (donkey already used this layout).

Refs OpenIntegrationEngine#52

Signed-off-by: Finnegan's Owner <44065187+pacmano1@users.noreply.github.com>
Native Gradle 8.14.1 build (wrapper committed, distribution checksum
pinned): same artifacts, same locations. server/setup is the assembled
distribution, server/dist the extension zips. The Ant build files are
replaced by tombstones pointing at ./gradlew; Eclipse project files are
retired in favor of native IDE Gradle import. CI builds with
gradle/actions/setup-gradle (wrapper validation, SHA-pinned action) and
the Dockerfile builds with the wrapper. Cross-project staging uses
per-project artifact inventories (Gradle-9-safe; no cross-project
configuration resolution, no exec(Closure); --warning-mode all carries
no Gradle-9-fatal classes). Output parity with the Ant build was
verified archive-by-archive; evidence and tooling arrive with the
dependency commit.

Note: this commit references the version catalog introduced by the next
commit and does not build standalone; the branch head does.

The .gitattributes line-ending rules follow PR OpenIntegrationEngine#214 by NicoPiel.

Refs OpenIntegrationEngine#52, OpenIntegrationEngine#214

Signed-off-by: Finnegan's Owner <44065187+pacmano1@users.noreply.github.com>
@pacmano1 pacmano1 force-pushed the gradle-migration branch 2 times, most recently from 3e2b399 to fb98f2d Compare June 11, 2026 19:59
@mgaffigan

Copy link
Copy Markdown
Contributor

Looking good! Tests pass, CI passes, released binaries are byte-identical with the main ant build.

374 of 419 vendored jars are replaced by version-catalog coordinates
(gradle/libs.versions.toml). Every adopted coordinate was SHA-1-matched
byte-identical to the vendored jar it replaces; resolution is
non-transitive so the runtime artifact set stays exactly the audited
set, and gradle/verification-metadata.xml enforces sha256 on every
resolution. gradle/vendored-layout.json maps each artifact to its
historical place in the distribution; per-project placement checks
(aggregated by verifyVendoredParity, required by every build and by
setup assembly) fail if a resolved artifact lacks a placement. The 45
jars without a byte-identical published artifact stay vendored, each
with an evidence-based reason in
tools/build-parity/jar-provenance.json.

Distribution output is verified entry-content identical to an Ant
build of this branch's parent commit: 490 of 490 archives, zero
differences beyond tool metadata. Tooling and methodology in
tools/build-parity/.

Refs OpenIntegrationEngine#52, OpenIntegrationEngine#146

Signed-off-by: Finnegan's Owner <44065187+pacmano1@users.noreply.github.com>

@jonbartels jonbartels left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can the file moves be refactored to a separate PR. It is good to move the project to the standard gradle layout. However it would make the first commit smaller. https://docs.gradle.org/current/dsl/org.gradle.api.tasks.SourceSet.html and main.java.srcDirs

So that would be one PR with a non-standard layout. then a second PR would move to the standard layout. It could also be one PR with multiple commits showing the addition of gradle, removal of JARs, then move of project files.

I think this PR has the same too-large problem one of the earlier Nico PRs had

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Should this JAR be committed? What is typical for Gradle? Surely a depdendency manager can download its own jars?

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.

3 participants