Tuesday 6th September 2011
Fedora Project
Updated perl-Class-Load to 0.08 in Rawhide; I'd forgotten to do this when I updated my local package back in mid-August:
The previous version was missing a prereq declaration for Data::OptList (CPAN RT#70285)
- This was mainly a packaging update, with lots of changes:
This release by DROLSKY -> update source URL
Package new documentation: LICENSE and README
- Add build requirements for new release tests and run them:
perl(Pod::Coverage::Moose)
perl(Test::CPAN::Changes)
perl(Test::EOL)
perl(Test::NoTabs)
perl(Test::Pod)
perl(Test::Pod::Coverage)
perl(Test::Requires)
perl(Test::Spelling) and aspell-en
Add patch for building with ExtUtils::MakeMaker < 6.30 if necessary
Add patch for building with Test::More < 0.88 if necessary
Add patch for building without Test::Requires if necessary
- Add patch for fixing the spell checker word list
Don't try to run the POD Coverage test if we don't have Pod::Coverage::Moose (e.g. in EPEL)
Updated perl-Package-Stash-XS to 0.25 in F-16, Rawhide and EPEL-6:
Invalid package names (for instance, Foo:Bar) are not allowed
Invalid stash entry names (anything containing ::) are not allowed
Updated perl-Package-Stash to 0.32 in F-16, Rawhide and EPEL-6:
Bring the behaviour of has_symbol for non-existent scalars into line with the XS version
Invalid package names (for instance, Foo:Bar) are not allowed
Invalid stash entry names (anything containing ::) are not allowed
I bumped the perl(Package::Stash::XS) version requirement to 0.24 for consistency
Local Packages
Updated perl-Class-Load to 0.09, adding new dependencies perl(Package::Stash) ≥ 0.32 and perl(Try::Tiny):
Fix is_class_loaded to ignore $ISA (but still look for @ISA) when trying to determine whether a class is loaded
- Lots of internals clean-up
Unfortunately the internals clean-up resulted in breakage with perl < 5.14, so later in the day came...
Updated perl-Class-Load to 0.10:
Make sure the $@ localization doesn't hide errors - invalid module name errors were being suppressed on perls before 5.14
The new requirement of perl(Package::Stash) meant that I could no longer build Class::Load for perl 5.8.0 so I branched the perl-Class-Load 0.08 package to use with those really ancient distros that I must get round to end-of-lifeing soon
Updated perl-DateTime-TimeZone to 1.36:
- This release is based on version 2011i of the Olson database
New zone for South Sudan (Africa/Juba)
- Changes for Samoa, Kaliningrad (Russia), Alaska, Hawaii, Newfoundland/Labrador (Canada) and Resolute Bay
Updated perl-Package-Stash to 0.32 as per the Fedora version
Updated perl-Package-Stash-XS to 0.25 as per the Fedora version; there had been a 0.24 release earlier in the day but it failed to build on older releases:
XS.xs:810:44: error: macro "pregcomp" requires 3 arguments, but only 2 given XS.xs: In function 'boot_Package__Stash__XS': XS.xs:810: error: 'pregcomp' undeclared (first use in this function) XS.xs:810: error: (Each undeclared identifier is reported only once XS.xs:810: error: for each function it appears in.) make: *** [XS.o] Error 1
The first port of call for such compatibility issues is usually Devel::PPPort, which can generate a ppport.h file to work around API changes between releases. However, it can only do so much, and it can't do anything to help with the offending pregcomp prior to perl 5.9.5, when the previous 3-argument pregcomp was replaced with a new 2-argument form. I looked around for examples of other modules handling this issue and the one that stood out was Tk, though the code there was rather more complex than what was needed here, a simple regexp compilation in XS with no special flags. In the end I found what I was looking for in Devel-RegExp and came up with this patch, which seemed to fix the problem (at least the test suite passed):
API for pregcomp changed from 3-args to 2-args in 5.9.5, and ppport.h can't automagically fix that for us. --- Package-Stash-XS-0.24/XS.xs +++ Package-Stash-XS-0.24/XS.xs @@ -804,10 +804,18 @@ BOOT: { + const char *vmre = "\\A[0-9A-Z_a-z]+(?:::[0-9A-Z_a-z]+)*\\z"; +#if (PERL_VERSION < 9) || ((PERL_VERSION == 9) && (PERL_SUBVERSION < 5)) + PMOP fakepmop; + + fakepmop.op_pmflags = 0; + valid_module_regex = pregcomp(vmre, vmre + strlen(vmre), &fakepmop); +#else SV *re; - re = newSVpv("\\A[0-9A-Z_a-z]+(?:::[0-9A-Z_a-z]+)*\\z", 0); + re = newSVpv(vmre, 0); valid_module_regex = pregcomp(re, 0); +#endif name_key = newSVpvs("name"); PERL_HASH(name_hash, "name", 4);
I sent the patch upstream (CPAN RT#70762) and version 0.25 was released with the patch included shortly thereafter.
Updated perl-XML-LibXML to 1.87:
Fix t/49callbacks_returning_undef.t to not read /etc/passwd, which may not be valid XML; instead, we're reading a local file while using URI::file (assuming it exists - else we skip_all)
I added perl(URI::file) as a build requirement for this test, and found that it failed on older distributions:
t/48_rt55000........................ok t/48importing_nodes_IDs_rt_69520....ok t/49_load_html......................ok t/49callbacks_returning_undef.......file:///etc/xml/catalog:1: parser error : Document is empty ^ file:///etc/xml/catalog:1: parser error : Start tag expected, '<' not found ^ dubious Test returned status 255 (wstat 65280, 0xff00) # Looks like your test died before it could output anything. Scalar found where operator expected at (eval 152) line 1, near "'int' $__val" (Missing operator before $__val?) DIED. FAILED test 1 Failed 1/1 tests, 0.00% okay t/49global_extent...................ok t/60error_prev_chain................ok t/60struct_error....................ok t/61error...........................ok t/80registryleak....................ok t/90threads.........................skipped all skipped: optional (set THREAD_TEST=1 to run these tests) t/pod...............................ok Failed 1/51 test scripts, 98.04% okay. 1/2328 subtests failed, 99.96% okay. Failed Test Stat Wstat Total Fail Failed List of Failed ------------------------------------------------------------------------------- t/49callbacks_returning_undef.t 255 65280 1 2 200.00% 1 2 tests skipped. make: *** [test_dynamic] Error 255
I managed to track this down to changes in the URI module between 1.30 (which failed) and 1.35 (which did not), though I didn't bother working out exactly which change fixed the problem; I added perl(URI::file) ≥ 1.35 as a build requirement just for those distributions that could provide it, though I could at some point roll a local package to make it usable everywhere