#acl PaulHowarth:read,write,admin,revert,delete All:read === 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:70285|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 [[http://search.cpan.org/dist/Devel-PPPort/|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 [[http://search.cpan.org/dist/Tk/|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 [[http://search.cpan.org/dist/Devel-RegExp/|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:70762|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 ----