Symptom
Downstream recipes that depend on intltool (autotrace, glib-based packages, etc.) hit the following at runtime of intltoolize / intltool-extract / intltool-update:
Perl API version v5.40.0 of Clone.c does not match v5.42.0
Root cause
projects/freedesktop.org/intltool/package.yml bundles a CPAN tree containing XS extensions (notably Clone, indirectly via XML::Parser) that were compiled against perl 5.40. Pantry's perl.org recipe has since moved to 5.42. The bottled XS .so files carry the older PERL_API_VERSION_STRING in their XS_VERSION_BOOTCHECK symbol, and load-time refuses to bind.
Surfaced by
#13111 `new(autotrace)` debugging session. Worked around in that recipe by cpanm-installing XML::Parser into a fresh prefix at build time, but that workaround would need to be repeated in every consumer of intltool — clearly the wrong layer.
Suggested fix
Either:
- Rebuild `freedesktop.org/intltool` against the current `perl.org` and re-bottle. Add a `versions:` rev-roll to invalidate the old bottle hash.
- Stop bundling XS deps with intltool; declare a perl `XML::Parser` module as a runtime dep (would need a new pantry recipe for the perl XS module).
Option 1 is the smaller, more immediate fix.
Reproduction
pkgx +freedesktop.org/intltool -- intltoolize --version
# expected: prints version
# actual: Perl API version v5.40.0 of Clone.c does not match v5.42.0
Related
Symptom
Downstream recipes that depend on
intltool(autotrace, glib-based packages, etc.) hit the following at runtime ofintltoolize/intltool-extract/intltool-update:Root cause
projects/freedesktop.org/intltool/package.ymlbundles a CPAN tree containing XS extensions (notablyClone, indirectly viaXML::Parser) that were compiled against perl 5.40. Pantry'sperl.orgrecipe has since moved to 5.42. The bottled XS.sofiles carry the olderPERL_API_VERSION_STRINGin theirXS_VERSION_BOOTCHECKsymbol, and load-time refuses to bind.Surfaced by
#13111 `new(autotrace)` debugging session. Worked around in that recipe by cpanm-installing XML::Parser into a fresh prefix at build time, but that workaround would need to be repeated in every consumer of intltool — clearly the wrong layer.
Suggested fix
Either:
Option 1 is the smaller, more immediate fix.
Reproduction
Related