jamesfredley commented on PR #15558: URL: https://github.com/apache/grails-core/pull/15558#issuecomment-4580280015
## Canary update: downstream fixes after the Verifier workaround - CI now fully green Following the [blocker-#6 comment](https://github.com/apache/grails-core/pull/15558#issuecomment-4577971891) (which covered `8b349bcdb8` and the base re-baseline), clearing the `DefaultGrailsJsonViewHelper` compile blocker let CI run the full matrix for the first time. That surfaced a short series of **real Groovy 6 issues** - all now fixed. **No tests are skipped or rewritten**, and the full CI matrix is **green** on `78b62c57e4`. ### Fixes (in order) 1. **SBOM JLine 4.1.0 license mapping** (`04b50fbf2f`) - Groovy 6's `groovy-groovysh` pulls the JLine **4.1.0** family transitively, but `SbomPlugin.LICENSE_MAPPING` only mapped 4.0.12, so `:grails-shell-cli:cyclonedxDirectBom` failed with `BSD-4-Clause` (cyclonedx-core-java#205 mis-reports JLine's actual BSD-3-Clause). Because `build` depends on `cyclonedxDirectBom`, this broke every build-dependent job (Core/Forge Projects, Functional, Hibernate5, Mongodb). Added the nine 4.1.0 coordinates; verified `cyclonedxDirectBom` green on shell-cli, console, and test-core. 2. **`compileGsonViews` Spock-fork flag** (`7daec90baa`) - the forked `JsonViewCompiler` (`AbstractGroovyTemplateCompileTask`) carries Spock's global AST transform on its classpath, which aborts under Groovy 6. It now propagates `spock.iKnowWhatImDoing.disableGroovyVersionCheck` to the fork (a no-op when the property is unset, so it is safe for released builds). Fixes `:grails-test-examples-*:compileGsonViews`. 3. **`XmlUtils` secure-slurper feature URIs** (`a092b13f2f`) - the SAX/Xerces feature identifiers were declared with `https://` (silently unrecognised, so every feature was dropped); under JDK 21/25 secure-processing then disallowed DOCTYPE entirely. Corrected the scheme to `http://` and added the `accessExternalDTD`/`accessExternalSchema` JAXP properties so an inline DOCTYPE with internal entities parses while external entities throw. Fixes `XmlUtilsSpec` / `TestHttpResponseSpec` (103 tests green). 4. **`WriteFilteringMap` `@Delegate` mutation tracking** (`78b62c57e4`) - the significant one. `@Delegate` on the `overlap` field also generated non-tracking `put(Object,Object)`/`putAll`/`remove` that competed with the class's tracking overrides. On Groovy 6 a mutation can dispatch to the generated delegate instead of the override, so the write lands in `overlap` but is never recorded in `nestedDestinationMap`. This silently dropped values from **real `.groovy` external-config loading** (`ExternalConfigRunListener` → `getConfigProperty(...)` returning null) - not just a test artifact. A plain-Groovy reproduction of the class works, which is why it only surfaced through the full config-merge path and Spock-compiled specs. Excluding the three overridden mutators from `@Delegate` leaves only the tracking overrides; fixes `WriteFilteringMapSpec`, `ExternalConfigSpec`, and `MergedConfigSpec`. ### Spock: is a Groovy-6 build needed right now? No. Investigated thoroughly. **No Groovy-6-compatible Spock artifact exists anywhere** (verified 2026-05-29): Maven Central tops out at `2.4-groovy-5.0`, and the Sonatype Central snapshot repo (`https://central.sonatype.com/repository/maven-snapshots`) tops out at `2.5-groovy-5.0-SNAPSHOT`. I tried switching to `2.5-groovy-5.0-SNAPSHOT` - it resolved (today's build, via `spock-bom`) but produced the **identical** failures, because it is still a `groovy-5.0` variant compiled against Groovy 5; reverted. The key realization: the "weird runtime errors" the `disableGroovyVersionCheck` bridge warns about were, in every case here, **genuine Groovy 6 production bugs** (above) rather than Spock failing to compile specs. With those fixed, the bridge is sufficient and **all specs run and pass**. A real `spock-*-groovy-6.0` artifact is still wanted eventually so the bridge can be dropped; the snapshot repo is already wired in `settings.gradle` (`includeGroup('org.spockframework')`), so the switch is a one-line `spock.version` bump when one ships. ### CI Full matrix green on `78b62c57e4` (Build Grails-Core / Functional / Hibernate5 / Mongodb / Forge across Java 21/25, ubuntu/macos/windows, indy on/off): **26 checks success, 0 failures.** One macOS Build Grails-Core run failed first as an infrastructure flake - GitHub uploaded no logs for it and the identical step passed on ubuntu 21, ubuntu 25, and windows - and it passed on re-run. The PR description has been trimmed to track only the remaining workarounds. Assisted-by: claude-code:claude-4.8-opus -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: [email protected] For queries about this service, please contact Infrastructure at: [email protected]
