|
| 1 | +# jcpan compiler and tooling modules |
| 2 | + |
| 3 | +## Goal |
| 4 | + |
| 5 | +Fix reusable compiler and CPAN-tooling blockers exposed by Pegex::JSON, |
| 6 | +Music::Factory, Bio::Data::Plasmid::CloningVector, |
| 7 | +Catalyst::Engine::HTTP::POE::YieldCC, App::Chained, Queue, and their |
| 8 | +dependencies. Prefer shared runtime/tooling fixes and existing Java libraries |
| 9 | +over distribution preferences. |
| 10 | + |
| 11 | +## Progress Tracking |
| 12 | + |
| 13 | +### Current Status: PR #963 commits unified into PR #964; combined CI passing |
| 14 | + |
| 15 | +### Completed Phases |
| 16 | + |
| 17 | +- [x] Phase 1: baseline and system-Perl classification (2026-08-15) |
| 18 | + - Captured bounded `jcpan -t` logs for all six requested modules. |
| 19 | + - Identified malformed Bio-MCPrimers packaging and Catalyst's omitted |
| 20 | + Restarter::Watcher as upstream distribution failures. |
| 21 | +- [x] Phase 2: shared root-cause implementation (2026-08-15) |
| 22 | + - Restored YAML::PP's standard object `dump` API. |
| 23 | + - Serialized scalar references through their referents for boolean.pm parity. |
| 24 | + - Made gzip EOF status compatible with CPAN single-file extraction. |
| 25 | + - Extended generic missing-prerequisite discovery to TAP diagnostics. |
| 26 | + - Routed Object::Pad's core syntax to PerlOnJava's native class compiler. |
| 27 | +- [x] Phase 3: cross-runtime regression validation (2026-08-15) |
| 28 | + - Validated YAML, gzip, native-class, and CPAN-tooling regressions with |
| 29 | + system Perl where applicable. |
| 30 | + - Passed the focused regressions on JVM and interpreter backends. |
| 31 | +- [x] Phase 4: requested module verification (2026-08-15) |
| 32 | + - Pegex::JSON: 4 files, 21 assertions, PASS. |
| 33 | + - Music::Factory: 5 files, 20 assertions, PASS. |
| 34 | + - App::Chained: 2 files, 9 assertions, PASS after generic dependency retry. |
| 35 | + - Queue: single-file distribution built and tested successfully; upstream |
| 36 | + ships no test directory. |
| 37 | + - Bio::Data::Plasmid::CloningVector excluded because Bio-MCPrimers has no |
| 38 | + Makefile.PL and fails system-Perl configuration. |
| 39 | + - Catalyst::Engine::HTTP::POE::YieldCC excluded because its distribution |
| 40 | + requires but does not ship or declare Restarter::Watcher; system Perl |
| 41 | + reproduces the missing-module failure. |
| 42 | +- [x] Phase 5: full verification (2026-08-15) |
| 43 | + - Full `make` passed all unit shards. |
| 44 | +- [x] Phase 6: pull request and CI (2026-08-15) |
| 45 | + - Opened [PR #964](https://github.com/fglock/PerlOnJava/pull/964). |
| 46 | + - Ubuntu CI passed in 11m20s. |
| 47 | + - Windows CI passed in 18m10s. |
| 48 | +- [x] Phase 7: unified review branch (2026-08-15) |
| 49 | + - Merged all five commits from PR #963 into PR #964 for joint testing and |
| 50 | + approval. |
| 51 | + - The combined full `make` suite passed before push. |
| 52 | + - Unified PR #964 CI passed on Ubuntu in 14m35s and Windows in 17m27s. |
| 53 | + |
| 54 | +### Next Steps |
| 55 | + |
| 56 | +1. Mark PR #963 as superseded by PR #964. |
| 57 | +2. Await joint testing and review of PR #964. |
| 58 | + |
| 59 | +### Open Questions |
| 60 | + |
| 61 | +- Object::Pad-specific MOP and extension APIs remain outside the native class |
| 62 | + compatibility pragma; the requested Music::Factory surface uses core syntax. |
| 63 | + |
| 64 | +## References |
| 65 | + |
| 66 | +- Skills: `debug-perlonjava`, `port-cpan-module` |
0 commit comments