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]

Reply via email to