Paul's Blog Entries for July 2011
Friday 1st July 2011
Local Packages
Updated perl-XML-LibXML to 1.76:
Cleaned up t/28new_callbacks_multiple.t - convert to a Counter and Stacker class
After that, the regression test for it was added (CPAN RT#51086)
Add the file HACKING.txt with style guidelines
Fix CPAN RT#53270 (suppress_errors option not honoured by load_html() method if set in parser object), with a test in t/49_load_html.t
Uncovered some more bugs, documented in TODO
Created t/lib/TestHelpers.pm with slurp(), utf8_slurp() and, in the future, some other routines
Skipping for LIBXML_RUNTIME_VERSION() less than 2.7 instead of more than in t/09xpath.t (CPAN RT#69205)
Saturday 2nd July 2011
Local Packages
Updated perl-Guard to 1.022:
Document how () after the function name overrides the prototype
- Improve documentation, fix the examples
Updated perl-XML-LibXML to 1.77:
Change the signature of XML::LibXML::Reader::byteConsumed to be "long" instead of "int", so it can return values above 231 in 64-bit platforms (should fix CPAN RT#57085)
Change "a XML::LibXML::*" to "an XML::LibXML::*" in the documentation
Document XML::LibXML::NamedNodeMap (CPAN RT#57652)
Add an external entity resolver for XSLT/etc. (CPAN RT#69166)
Add the missing string comparison overload in lib/XML/LibXML/NodeList.pm (CPAN RT#57737)
Fix CPAN RT#58024: In XML::LibXML, warnings are not suppressed when specifying the recover() or recover_silently() flags
Now XML-LibXML requires perl-5.8.x (to print to a buffer)
Fix CPAN RT#56671: Limit the length of the chain of the previous errors (adds new files t/60error_prev_chain.t and example/JBR-ALLENtrees.htm)
Fix CPAN RT#58848: "Malformed UTF-8 character (fatal) at" exception thrown on invalid UTF-8
Sunday 3rd July 2011
Local Packages
Updated perl-Coro to 6.01:
Workarounds are good, but the test for whether pthreads are used was not good; this one should be better
Check differently whether gcc generates cfi instructions itself
My cfi patch for 6.0 was no longer needed, so I dropped it
Monday 4th July 2011
Fedora Project
Updated gtkwave to 3.3.23 in Rawhide:
Fixed ItemFactory callbacks as their argument lists did not reflect the correct callback argument type/order for callback_type=1; this is a long-standing hidden bug that would prevent pattern search from working on 64-bit big-endian architectures
Fixed broken "replace" signal option
Local Packages
Updated gtkwave to 3.3.23 as per the Fedora version
Updated perl-DateTime to update DateTime-TimeZone to 1.65:
- Based on version 2011h of the Olson database
- Includes changes for Russia
Include UTC in the list of all time zone names (CPAN RT#67070)
I also tweaked the require/provides filters to work better with rpm ≥ 4.9, and added perl(DateTime::Format::Strptime) as a build requirement as long as the %perl_bootstrap macro was not defined (since DateTime::Format::Strptime requires DateTime itself)
Updated perl-Devel-GlobalDestruction to 0.04:
To detect a perl with ${^GLOBAL_PHASE}, check for the feature itself instead of a specific perl version
Update the documentation to reflect the use of ${^GLOBAL_PHASE} if available
Stop depending on Scope::Guard for the tests
Upgrade ppport.h from version 3.13 to 3.19
I dropped the no-longer-necessary buildreq perl(Scope::Guard) and made the package noarch from perl 5.13.7 (Fedora 16)
Updated perl-IPC-Run to 0.90:
CPAN RT#14078: run() miscalculates length of UTF-8 strings
CPAN RT#38193: fix error detection on non-English operating systems
CPAN RT#43072: skip dragonfly platform on t/pty.t (hangs)
CPAN RT#49693: security patch for lib/IPC/Run/Win32IO.pm s/INADDR_ANY//
CPAN RT#57190: handle PATH environment variable not being defined
CPAN RT#57277: add breaking test; no solution at present
CPAN RT#68623: disable parallel tests on Windows
Add a blank doc entry for IPC::Run::Win32IO::poll to quiet Windows pod parser errors
Tuesday 5th July 2011
Local Packages
Created a hotfix release of createrepo to fix the broken --checksum option in version 0.9.9 (Fedora 15) that generated sha256 checksums in primary.xml regardless of the specified value for --checksum (Bug #500364, Bug #718218), leading for instance to "package does not match expected download" errors on RHEL-5 clients that don't understand sha256 checksums
Updated getlive to 2.4:
Corrected bug 3345510 (another hotmail update)
Updated perl-Module-CoreList to 2.52:
Extraneous modules listed (CPAN RT#69108)
Thursday 7th July 2011
Fedora Project
Updated libpng10 to 1.0.55 in Rawhide only, as there appears to be a regression in the Makefile regarding creation of libpng.sym that breaks the build; I patched that part of the Makefile back to the same as it was in 1.0.54 for this build
Fixed uninitialized memory read in png_format_buffer() (CVE-2011-2501, related to CVE-2004-0421)
Pass "" instead of '\0' to png_default_error() in png_err()
Check for up->location !PNG_AFTER_IDAT when writing unknown chunks before IDAT
Ported bug-fix in pngrtran.c from 1.5.3: when expanding a paletted image, always expand to RGBA if transparency is present
Check for integer overflow in png_set_rgb_to_gray()
Check for sCAL chunk too short
Local Packages
Updated libpng10 to 1.0.55 as per the Fedora version
Updated perl-File-HomeDir to 0.98:
Updating to Module::Install 1.01
If Win32::GetFolderPath returns a \\UNC type path, do not do the normal -d sanity check, as strange and unusual bugs may occur
Updated perl-Pod-Coverage-TrustPod to 0.100001:
Anchor the regex at both ends when matching symbols: /\A...\z/
Updated perl-XML-LibXML to 1.78:
Change t/02parse.t to test for the localized error message (CPAN RT#69248)
Fix the skip() and 'plan skip_all' syntax in t/06elements.t and t/49global_extent.t
Convert more test scripts from Test.pm to Test::More
Friday 8th July 2011
Fedora Project
Updated libpng10 in F-15, F-14 and EPEL-6 to 1.0.55 as per yesterday's fix in Rawhide
Updated perl-Unicode-Map, perl-Unicode-Map8 and perl-Unicode-MapUTF8 in Rawhide to add perl(:MODULE_COMPAT_*) dependencies
Local Packages
Updated perl-XML-LibXML to 1.79:
In t/46err_column.t, add a skip for a test for CentOS/RHEL 4 with an old version of libxml2 (CPAN RT#69070)
In t/49global_extent.t, fix the double plan present on libxml2 below 2.6.27 (CPAN RT#69330)
Fix double plan in t/61error.t in accordance with the previous change
Saturday 9th July 2011
Fedora Project
Updated libpng10 to 1.0.56 in Rawhide:
Fix regression in Makefile.am/Makefile.in
Fix "make distcheck"
As I had already fixed the Makefile.am/Makefile.in regressions in my 1.0.55 builds, I didn't update the other releases with this version
Local Packages
Updated libpng10 to 1.0.56 as per the Fedora version
Sunday 10th July 2011
Local Packages
Updated perl-Pod-Simple to 3.17:
- Documented tertiary methods
Added "backlink" option to Pod::Simple::XHTML
Typos fixed in Pod::Simple::HTMLBatch
Fixed quoting of value returned by a "strip_verbatim_indent()" code reference so that regex meta characters are properly escaped
Added "anchor_items" option to Pod::Simple::XHMTL; this allows text items (which are output as <dt> elements) to have IDs that can be referenced in the "#" part of a URL
Added "recurse" option to Pod::Simple::Search, enabled by default; disable it to turn off recursion into subdirectories
Added documentation to clarify the behaviour of the "content_seen" method
I am now building EL-6 packages against CentOS 6 rather than RHEL 6 as I'll be getting the benefits of the updates and straightforward access to the devel packages, many of which are only available in the RHEL 6 Optional channel
Monday 11th July 2011
Local Packages
Updated perl-File-Remove to 1.50:
Adding a second skip for the known-bad cygwin file permissions problem
Tuesday 12th July 2011
Fedora Project
Became owner of the orphaned spambayes - because I need it for trac-spamfilter-plugin; it really would be better if someone who knew python and cared about it more (e.g. a kmail user as that seems to use it intensively?) took it over
Fedora 15 Upgrade
Upgraded my Internet server/firewall box to Fedora 15 (did my main desktop/build machine a couple of weeks ago). The upgrade itself went very smoothly but there are some lingering issues:
Regressions in createrepo such as ignoring the --checksum option (Bug #500364, Bug #718218) and hanging when trying to create metadata for (e.g.) CentOS 6 (Bug #707300)
segfaults in sendmail when trying to do SMTP AUTH (Bug #712943)
The use of pam_systemd means that dæmons such as proftpd need to retain CAP_DAC_OVERRIDE and have additional SELinux permissions (Bug #720505) to avoid Failed to lock runtime directory: Permission denied messages being logged
Various systemd-related packaging problems in milter-greylist (Bug #698961)
Local Packages
Updated smf-sav for systemd support (tmpfiles.d snippet to set up /run/smfs directory, unit file instead of SysV initscript)
Wednesday 13th July 2011
Local Packages
Updated curl builds that use c-ares to have libcurl require at least the version of c-ares that it was built against to ensure that all required symbols are available (similar issue to that with libssh2 as reported in Bug #525002 and Bug #642796)
Updated perl-Coro to 6.02:
Improve portability to Gentoo - Gentoo manages to put perl variables in memory areas that are farther than 2 Gb apart, which the jit couldn't handle and barfed; now it's just a bit slower on Gentoo and similar systems
Cleaned up perl-NetSSLeay:
Use a patch rather than a scripted iconv to fix the character encoding of files
BuildRequire: perl(Test::Kwalitee) unless we're bootstrapping
Drop redundant BuildRequires: perl(Array::Compare), perl(Sub::Uplevel), perl(Tree::DAG_Node)
Modernize provides filter to use native rpm 4.9 filtering
Updated perl-XML-LibXML to 1.80:
Fix compilation on Strawberry Perl (CPAN RT#69082)
DOM Normalisation patches and fix for findvalue regression (CPAN RT#69096)
t/19die_on_invalid_utf8_rt_58848.t assumed errors would be objects, causing failures with old libxml2 versions (CPAN RT#69433)
Add a skip for t/60error_prev_chain.t in case $@ is true but not a ref (CPAN RT#69435)
Updated smf-spf to support systemd in Fedora 15 onwards
Thursday 14th July 2011
Fedora Project
Updated perl-Net-SSLeay in dist-f16-perl to (mostly) match my local package:
BuildRequire: perl(Test::Kwalitee) if we're not bootstrapping
Explicitly BuidRequire: pkgconfig
Use a patch rather than a scripted iconv to fix the character encoding of files
Modernize provides filter to use rpm 4.9 native filtering
- Stop running the tests in verbose mode
Local Packages
Updated perl-Module-CoreList to 2.53:
Added release date option '-r' to corelist
Updated sendmail to use native systemd init for Fedora 15 onwards, as per today's Rawhide build
Saturday 16th July 2011
Fedora Project
Updated milter-regex in Rawhide to migrate from a SysV init script to a native systemd unit file (Bug #722348)
Local Packages
Updated perl-XML-LibXML to 1.81:
Add scripts/fast-eumm.pl to remove the explicit objects dependency on the "Makefile" file so after running scripts/fast-eumm.pl one won't have to rebuild the C-files
Add no warnings 'recursion' to lib/XML/LibXML/Error.pm to get rid of a "Deep recursion" warning
Fix "IDs of elements is lost when importing nodes" (CPAN RT#69520) and add t/48importing_nodes_IDs_rt_69520.t
Convert all remaining Test.pm-based test scripts except t/14sax.t to Test::More
Sunday 17th July 2011
Fedora Project
Updated trac-spamfilter-plugin to svn revision 10756 in Rawhide, F-15 and EPEL-6:
- Various Blogspam timeout fixes
Add links to kill spammy users (Upstream #10093)
Add proper check for Defensio and python < 2.6 (Upstream #10195)
- Add clean-up code to remove obsolete captcha database entries
Fix issues with different SQL engines (Upstream #10227)
Fix wrong argument count in log message (Upstream #10264)
Fix possibly uninitialized value (Upstream #10261)
I'd come across Upstream #10264 myself whilst upgrading to Fedora 15, hence the update
Local Packages
Updated libgpg-error to 1.10:
New symbols: GPG_ERR_NOT_INITIALIZED, GPG_ERR_MISSING_ISSUER_CERT, GPG_ERR_FULLY_CANCELED
- Using a static library on W32 now works
Updated perl-Pod-Simple to 3.18:
Pod::Simple now properly parses Pod files using Mac OS Classic line-endings (\r)
Fixed test failure in t/search50.t when the test finds a .pod but the module is in a .pm
Monday 18th July 2011
Fedora Project
Updated spamass-milter in Rawhide to drop the wrapper (that restarted the milter if it crashed), which hasn't been needed since 0.3.1 was released
Local Packages
Updated getmail to 4.20.4:
- Include more info from the server response in the error message when IMAP command errors out
Switch to using Parser instead of HeaderParser to correct illegal formatting bogosities in the body parts of incoming messages
Updated perl-IO-AIO to 4.0:
Incompatible Change: fork is no longer supported (indeed, it never was); see FORK BEHAVIOUR in the manpage for details
- Passes test suite on Win32 now and may actually work
(libeio) fix a deadlock where a wakeup signal could be missed when a timeout occurred at the same time
(libeio) added realpath
(libeio) added fallocate
(libeio) disabling sendfile on Darwin unfortunately broke the emulation
(libeio) do not acquire any locks when forking
(libeio) use fewer time() syscalls when waiting for new requests
Updated spamass-milter as per the Fedora version
Tuesday 19th July 2011
Local Packages
Updated perl-Moose to 2.0200:
- Deprecations:
- Using a hand-optimized type constraint is now deprecated
Several things that have been deprecated for a while have been removed; see the 2.0000 section in Moose::Manual::Delta for details
- New Features:
- Type constraints can now provide inlined versions, which should make inlined code that uses type constraints (such as accessors) faster; this replaces the existing hand-optimized constraint feature
New Moose::Util::TypeConstraints::union function for creating union type constraints without having to rely on the string type constraint parsing; this also allows for creating unions of anonymous type constraints
- Enhancements:
- Remove a lot of cases where generated methods closed over meta objects; most simple cases should now only close over simple data types and coderefs, which should make de-parsing simpler
The native Array trait now has a 'first_index' method, which works just like the version in List::MoreUtils
- Clean up some internal code to help out extensions
Moose::Util::does_role now respects overridden ->does methods
- Other:
- Various packaging issues
- Deprecations:
Updated sendmail for various systemd unit file changes:
- Removed dots from description
Changed service type to forking
- Explicitly specified PID files
Fixed creation of sm-client.pid
Added Wants to sm-client.service and sendmail.service to get them to start together
Moved PID file from /var/run to /run in submit.mc
Wednesday 20th July 2011
Fedora Project
Built grepmail for dist-f16-perl once perl-YAML-Syck became available there
Updated perl-Math-GMP in dist-f16-perl to fix the broken signature test by moving MYMETA.yml out of the way prior to running the test if necessary, and to fix the broken spellcheck test by setting the locale to en_US using the LANG environment variable rather than the LC_ALL environment variable
Made similar changes for perl-Net-SSH-Perl and built that too
Local Packages
Updated perl-Locale-Maketext-Lexicon to 0.87:
Locale::Maketext::Extract - now warns on loading bad plugins if warnings enabled
Locale::Maketext::Extract::Plugin::Base - corrected the synopsis
Locale::Maketext::Extract::Plugin::Mason - added support for Mason 2
Thursday 21st July 2011
Fedora Project
Cleaned up perl-NetAddr-IP for dist-f16-perl, including use of native rpm provides-filtering
Updated perl-Package-Stash to 0.30 in Rawhide, dist-f16-perl and EPEL-6
Fix compiler detection in Makefile.PL
Updated perl-Package-Stash-XS to 0.22 in EPEL-6 (needed by Package::Stash 0.30)
Cleaned up perl-PPI for modern rpm and built it for dist-f16-perl
RPM Fusion Project
Branched and built perl-Crypt-IDEA for EL-6
Branched and built xv for EL-6
Local Packages
Updated libgcrypt to 1.5.0:
New function gcry_kdf_derive implementing OpenPGP S2K algorithms and PBKDF2
- Support for Windows CE
Support for ECDH
Support for OAEP and PSS methods as described by RFC-3447
Fixed PKCS v1.5 code to always return the leading zero
New format specifiers "%M" and "%u" for gcry_sexp_build
Support opaque MPIs with "%m" and "%M" in gcry_sexp_build
New functions gcry_pk_get_curve and gcry_pk_get_param to map ECC parameters to a curve name and to retrieve parameter values
gcry_mpi_cmp applied to opaque values has a defined semantic now
- Uses the Intel AES-NI instructions if available
The use of the deprecated Alternative Public Key Interface (gcry_ac_*) will now print compile time warnings
- The module register subsystem has been deprecated
CTR mode may now be used with data chunks of arbitrary length
I had to disable use of the AES-NI instructions in the Fedora 4 32-bit build (only), where it generated build errors like Error: no such instruction: pshufb be_mask.5590@GOTOFF(%ebx),%xmm2
Updated perl-Module-CoreList to 2.54:
- Updated for v5.15.1
Updated perl-Package-Stash to 0.30 as per the Fedora version
Updated perl-XML-LibXML to 1.82:
Moved some if blocks after the dSP; (which contains declarations) to be compliant with C89/C90, which don't allow declarations in the middle of a C function (CPAN RT#69622)
CPAN RT#69553: install_sax_driver doesn't like custom INSTALLARCHLIB
Friday 22nd July 2011
Fedora Project
Updated bluefish in F-14, F-15, Rawhide and EPEL-6 with an upstream patch fixing a crash in _gtk_text_btree_get_chars_changed_stamp (Gnome Bug #654838, Fedora Bug #720990)
Updated the perl-Module-Build subpackage of perl to include a dependency on perl(CPAN::Meta) ≥ 2.110420, needed for creation of MYMETA files by Build.PL; the dual-life version of the package already had this dependency
Reinstated running the author tests in perl-Perl-Critic, removed earlier in the day because the kwalitee test was failing:
./Build authortest Generating Perl::Critic::PolicySummary. Done. Building Perl-Critic Skipping generating tests because it doesn't look like we're in an author environment. File 'MANIFEST.SKIP' does not exist: Creating a temporary 'MANIFEST.SKIP' Added to MANIFEST: bin/perlcritic Added to MANIFEST: Build.PL ... Added to MANIFEST: xt/author/98_pod_syntax.t Added to MANIFEST: xt/author/99_pod_coverage.t Added to MANIFEST: xt/author/generate_without_optional_dependencies_wrappers.PL Creating README using Pod::Text t/00_modules.t ................................ ok t/01_config.t ................................. ok t/01_config_bad_perlcriticrc.t ................ ok ... xt/author/93_version.t ........................ ok xt/author/94_includes.t ....................... ok # Failed test 'has_meta_yml' # at /usr/share/perl5/vendor_perl/Test/Kwalitee.pm line 101. # Add a META.yml to the distribution. Your buildtool should be able to autogenerate it.The file 'META.yml' is missing from this distribution. META.yml is needed by people maintaining module collections (like CPAN), for people writing installation tools, or just people who want to know some stuff about a distribution before downloading it. # Looks like you failed 1 test of 12. xt/author/95_kwalitee.t ....................... Dubious, test returned 1 (wstat 256, 0x100) Failed 1/12 subtests xt/author/98_pod_syntax.t ..................... ok xt/author/99_pod_coverage.t ................... ok
This was actually caused by the absence of the CPAN::Meta module from the buildroot, which I fixed by adding the dependency to perl-Module-Build. The author tests then passed:
./Build authortest Generating Perl::Critic::PolicySummary. Done. Building Perl-Critic Skipping generating tests because it doesn't look like we're in an author environment. File 'MANIFEST.SKIP' does not exist: Creating a temporary 'MANIFEST.SKIP' Added to MANIFEST: bin/perlcritic Added to MANIFEST: Build.PL ... Added to MANIFEST: xt/author/98_pod_syntax.t Added to MANIFEST: xt/author/99_pod_coverage.t Added to MANIFEST: xt/author/generate_without_optional_dependencies_wrappers.PL Creating README using Pod::Text Created META.yml and META.json t/00_modules.t ................................ ok t/01_config.t ................................. ok t/01_config_bad_perlcriticrc.t ................ ok ... xt/author/93_version.t ........................ ok xt/author/94_includes.t ....................... ok xt/author/95_kwalitee.t ....................... ok xt/author/98_pod_syntax.t ..................... ok xt/author/99_pod_coverage.t ................... ok All tests successful.
Local Packages
Updated bluefish as per the Fedora version
Made further tweaks to the initscripts for sendmail, based on changes in the Rawhide package:
Dropped reload action from SysV initscript (Bug #719931)
Fixed systemctl disable command in %preun section
Replaced reload by restart, dropped ExecReload from sendmail.service (Bug #719931)
Switched to systemctl in NetworkManager dispatcher script
Added ExecStartPre=-/etc/mail/make to sm-client.service
Hard-coded daemon option (-bd) in sendmail.service and dropped the DAEMON variable
QUEUE variable in /etc/sysconfig/sendmail replaced by SENDMAIL_OPTS variable
Saturday 23rd July 2011
Local Packages
Updated perl-Moose to 2.0201:
Moose::Util::does_role shouldn't call ->does on things that don't inherit from Moose::Object
Make ->does initialize the metaclass, so that calling it as a class method on a class that sets up inheritance via some method other than extends works properly (this fixes an issue with MooseX::Types)
Make Dist::CheckConflicts a runtime requirement, so moose-outdated always works
Updated perl-PPIx-Regexp to 0.021:
- Modified tokenizer to correctly handle a backslash used as a delimiter
PPIx::Regexp::Dumper now dumps the results of ppi() if that method is present and -verbose is asserted
Updated perl-XML-LibXML to 1.84:
Fixed missing declarations after statements (CPAN RT#69622)
Fix docbook source validity (CPAN RT#69702)
Documentation spelling fixes (CPAN RT#69703)
Convert t/14sax.t to Counter and Stacker so the tests will be more reliable
Fix for perl 5.8.x before 5.8.8 (CPAN RT#69722)
The last of those fixes (CPAN RT#69722) was for an issue I raised about backwards compatibility of t/14sax.t for perl < 5.8.8 in version 1.83, fixed upstream within a couple of hours!
Updated sendmail to fix SMTP AUTH over TLS in case of two AUTH lines (Bug #716628) and added default SENDMAIL_OPTS in sendmail.service/sm-client.service so that upgrades work properly (Bug #719931)
Sunday 24th July 2011
Local Packages
Updated perl-Event to 1.19:
Really skip the bad fd test on platforms that don't support it
Monday 25th July 2011
Fedora Project
Updated milter-regex in Rawhide to add Requires(post): systemd-sysv for the sysv-to-systemd migration, which I'd missed in the conversion process
Identified the cause of Bug #712943 (after upgrade from Fedora 14 to 15, sendmail segfaults in libdb-5.1.so doing SMTP AUTH): the AUTH functionality is provided by cyrus-sasl, which was linked against libdb-4.8.so but sendmail itself was linked against libdb-5.1.so; since the two libdb libraries provide mostly the same symbols, the linker has problems and the resulting process is a mess. I made a scratch build of cyrus-sasl linked against libdb-5.1.so, updated my mail server with it, restarted sendmail and all was then well.
Raised Bug #725369 about gnupg2 (and rpm-sign) being broken after upgrading to libgcrypt 1.5.0:
gpg: pkglue.c:41: mpi_from_sexp: Assertion `data' failed. error: gpg exec failed (0)
This is an API/ABI change from libgcrypt 1.4 without an soname bump, so it's not clear what's going to happen at the moment.
As I've already shipped libgcrypt 1.5.0 packages for all releases, I may end up shipping updated gnupg2 packages as well. I don't know if gpg is also affected yet.
Tuesday 26th July 2011
Local Packages
Reverted libgcrypt to 1.4.6 everywhere except Rawhide, as libgcrypt 1.5.0 brought in API/ABI changes that broke gnupg2 and gnutls (Bug #725369); this also affected rpm-sign, which uses gnupg2 internally
If you picked up the libgcrypt 1.5.0 build, it's best to do yum downgrade libgcrypt to avoid potential problems
Updated perl-Moose to 2.0202:
- Be more consistent about how type constraint messages are handled
Updated perl-Params-Check to 0.30:
WARNINGS_FATAL should apply to all check() failures now (CPAN RT#69626)
Rebuilt sendmail to resync release with Rawhide
Perl Mass Rebuild
On 21st June I started a mass rebuild of all of my perl-based packages ready for when perl 5.14.1 hit Rawhide. As with the mass rebuild for Rawhide packages, I did the builds "on the side" so that they could all be merged into the development repository at the same time without creating broken dependencies. Today the perl 5.14 packages were merged into Rawhide so I did the same with my rebuilt packages, and I'll be committing the changes into svn now as well. The mass rebuild also gave me the opportunity to do a lot of package clean-up work that I'd been doing on an ad-hoc basis as and when packages changed for other reasons. These changes include:
The Fedora Packaging Guidelines were recently changed to outlaw use of macros like %{__rm} for system commands and as nobody else seemed to like them anyway, I've now dropped using them locally too, and I've also stopped using full pathnames like /bin/rm in the main part of package specs (though I retain them for scriptlets that get run on end users' systems) and just use plain rm etc. instead.
Using the %{_fixperms} macro instead of a manual chmod incantation. I've done this only for arch-independent packages that don't contain scripts in /usr/bin or /usr/sbin, or that aren't build for releases prior to Fedora Core 2. The reason for this is that in Fedora Core 2 the %{_fixperms} macro changed to be /bin/chmod -Rf a+rX,u+w,g-w,o-w (and has been that ever since), but previously it was /bin/chmod -Rf a+rX,g-w,o-w, and the old version would result in scripts and arch-specific binaries being installed with permissions that rpmlint thought were "strange".
Fixing my boilerplate dist-tag macros to support building on CentOS 6 and Scientific Linux and getting rhel dist tags. The /etc/redhat-release file in CentOS 6 refers to the OS as "CentOS Linux" whereas in previous releases it had just been "CentOS", which required a change in my macro set. I also dropped support for tagging builds on Whitebox Enterprise Linux as rhel, as that seems to be dead now. Scientific Linux has become particularly popular in recent times, especially after the delays in getting CentOS 6 out, so I added rhel tag support for that in its place. Unfortunately I had actually done most of the builds (using Red Hat Enterprise Linux 6) by the time CentOS 6 came out and I became aware of the need for a change, so I've just fixed the boilerplate in svn in most cases rather than actually rebuilding the packages on CentOS 6 (though I'm using CentOS 6 for all new builds).
Fixes for Requires and Provides filtering for rpm 4.9 onwards (as found in Fedora 15 onwards), which has native support for filtering automatically-generated Requires and Provides without turning off the internal dependency generator, which was a common approach in the past. The other common approach, for handling perl-specific metadata, was to tweak the values of the %{__perl_requires} and %{__perl_provides} macros, but that doesn't work in most cases now as, for reasons I can't quite fathom, rpm 4.9 split perl dependency generation into two classes, one for perl itself and another for perl modules, using the %{__perl_requires} and %{__perl_provides} macros for perl itself and introducing new macros %{__perllib_requires} and %{__perllib_provides} for the far more common case of perl modules, an incompatible change that required a lot of careful tweaking of filters both here and in Fedora. This has complicated my packages in particular since I try to keep a single spec file for each package that is compatible with all of the distributions I build for.
Part-way through the Fedora mass rebuild an attempt was started to resolve all of circular dependencies in the Fedora perl ecosystem so as to make bootstrapping new versions of perl easier; this entailed using a new macro %{perl_bootstrap}, which would be set during the bootstrapping process and would be used to exclude modules (usually for testing) that would have resulted in the package being built being required as part of its own build process, either as a dependency or a build requirement of a module that was a dependency. I made a start at implementing this for my own packages but I'd already done half of the rebuild without taking this into account, so there's plenty more to do yet. I'll be writing a script to generate a build-order list and find circular build dependencies in the net few days/weeks and will add the %{perl_bootstrap} support as necessary to break cycles.
With the latest module versions that come with perl 5.14.x, many modules with signature tests fail that test due to the generation of MYMETA.yml files within the build process, which I had to add workarounds for.
Some of the packages had new releases during the period of the mass rebuild, so they got some of these changes early and just needed a simple bump-and-rebuild (bump meaning increase the value of the Release tag) for perl 5.14. As for the mass rebuild itself though, here's what needed doing to each package for the rebuild:
Simple Bump and Rebuild
perl-Coro, perl-Event, perl-File-Remove, perl-IO-AIO, perl-Locale-Maketext-Lexicon, perl-Module-CoreList, perl-Moose, perl-MooseX-NonMoose, perl-Net-SSLeay, perl-Package-Stash, perl-Params-Check, perl-Pod-Simple, perl-PPIx-Regexp, perl-version, perl-XML-LibXML, perl-YAML-LibYAML, smbldap-tools
Bump, Fix Dist Tags and Rebuild
perl-AnyEvent, perl-Array-Compare, perl-B-Hooks-EndOfScope, perl-BerkeleyDB, perl-Compress-Raw-Bzip2, perl-Compress-Raw-Lzma, perl-Compress-Raw-Zlib, perl-Config-Tiny, perl-Convert-UUlib, perl-CPAN-Changes, perl-CPAN-Meta, perl-Data-OptList, perl-Data-Section, perl-DateTime, perl-DateTime-Format-Strptime, perl-DBD-SQLite, perl-Devel-EnforceEncapsulation, perl-Devel-GlobalDestruction, perl-Devel-PartialDump, perl-Devel-StackTrace, perl-Digest-BubbleBabble, perl-Digest-SHA, perl-Eval-Closure, perl-Exception-Base, perl-File-Slurp, perl-Guard, perl-Hash-Util-FieldHash-Compat, perl-HTML-SimpleLinkExtor, perl-HTTP-Size, perl-IO-Compress, perl-IO-Compress-Lzma, perl-IO-Multiplex, perl-IO-Socket-SSL, perl-IPC-Cmd, perl-IPC-Run, perl-IPC-System-Simple, perl-JSON, perl-JSON-PP, perl-List-MoreUtils, perl-MailTools, perl-Math-Round, perl-Module-Refresh, perl-Module-Signature, perl-MooseX-GlobRef, perl-MooseX-InsideOut, perl-Package-DeprecationManager, perl-Params-Util, perl-Params-Validate, perl-Path-Class, perl-Pod-Coverage-TrustPod, perl-Regexp-Common, perl-Regexp-Parser, perl-Sendmail-PMilter, perl-Software-License, perl-Test-CheckChanges, perl-Test-CPAN-Meta, perl-Test-Deep, perl-Test-Differences, perl-Test-Fatal, perl-Test-Kwalitee, perl-Test-LeakTrace, perl-Test-NoTabs, perl-Test-Output, perl-Test-Requires, perl-Test-Signature, perl-Test-Spelling, perl-Test-use-ok, perl-Text-CSV_XS, perl-Text-Diff, perl-Text-Hunspell, perl-Tie-RefHash-Weak, perl-UNIVERSAL-require, perl-Variable-Magic
Bump, Fix Macro Usage and Rebuild
These are packages I'd committed before deciding to fix the dist tags in svn.
perl-AnyEvent-AIO, perl-B-Keywords, perl-ExtUtils-CBuilder, perl-Parse-CPAN-Meta, perl-Perl-Critic-More, perl-Test-Exception, perl-Text-Glob, perl-TimeDate, perl-Unicode-Map
Bump, Fix Dist Tags, Fix Macro Usage and Rebuild
perl-Algorithm-Diff, perl-Algorithm-Diff-XS, perl-aliased, perl-AnyEvent-BDB, perl-Archive-Any, perl-Archive-Tar, perl-Array-Diff, perl-BSD-Resource, perl-Carp-Clan, perl-Class-Accessor, perl-Class-Factory-Util, perl-Class-Inspector, perl-Class-Load, perl-Class-Singleton, perl-Clone, perl-common-sense, perl-ConfigReader-Simple, perl-Convert-TNEF, perl-CPAN-DistnameInfo, perl-Crypt-SmbHash, perl-Data-Dumper-Names, perl-DateTime-Calendar-Mayan, perl-DateTime-Format-Builder, perl-DateTime-Format-MySQL, perl-DBM-Deep, perl-Declare-Constraints-Simple, perl-Devel-Cycle, perl-Devel-Leak, perl-Digest-MD4, perl-Dist-CheckConflicts, perl-Expect, perl-ExtUtils-ParseXS, perl-File-Find-Rule-Perl, perl-File-MMagic, perl-File-Which, perl-FileHandle-Fmode, perl-FreezeThaw, perl-Hook-LexWrap, perl-HTML-Lint, perl-HTML-Tidy, perl-IO-Capture, perl-IO-Socket-INET6, perl-IO-String, perl-IO-Tty, perl-IO-stringy, perl-IO-Zlib, perl-IPC-Run3, perl-LMAP-CID2SPF, perl-Locale-US, perl-Mail-IMAPClient, perl-Mail-Sendmail, perl-Mail-SPF, perl-Mail-SPF-Test, perl-Mail-SRS, perl-MIME-tools, perl-MIME-Types, perl-Mixin-Linewise, perl-MLDBM, perl-Module-Build, perl-Module-CPANTS-Analyse, perl-Module-ExtractUse, perl-Module-Find, perl-Module-Info, perl-Module-Load, perl-Module-Load-Conditional, perl-Module-Metadata, perl-MRO-Compat, perl-Net-CIDR, perl-Net-CIDR-Lite, perl-Net-DNS-Resolver-Programmable, perl-Net-FTPSSL, perl-Net-IP, perl-Net-LibIDN, perl-Net-Server, perl-Net-SMTP-SSL, perl-Net-Telnet, perl-Number-Compare, perl-Package-Constants, perl-Package-Generator,perl-Package-Stash-XS, perl-PadWalker, perl-Params-Coerce, perl-parent, perl-Parse-RecDescent, perl-Perl-Tidy, perl-Pod-Coverage, perl-Pod-Escapes, perl-Pod-Spell, perl-Pod-Strip, perl-PPIx-Utilities, perl-Probe-Perl, perl-Readonly-XS, perl-Scope-Guard, perl-Sendmail-AccessDB, perl-Socket6, perl-String-Escape, perl-Sub-Exporter, perl-Sub-Identify, perl-Sub-Name, perl-Sys-Hostname-Long, perl-Taint-Runtime, perl-Term-ReadKey, perl-Test-ClassAPI, perl-Test-CPAN-Meta-YAML, perl-Test-Distribution, perl-Test-EOL, perl-Test-File, perl-Test-HTML-Tidy, perl-Test-LongString, perl-Test-Manifest, perl-Test-Memory-Cycle, perl-Test-Object, perl-Test-Perl-Critic, perl-Test-Pod, perl-Test-Pod-Coverage, perl-Test-Portability-Files, perl-Test-Prereq, perl-Test-Synopsis, perl-Test-Taint, perl-Test-Tester, perl-Test-Warn, perl-Test-Without-Module, perl-Test-YAML-Meta, perl-Test-YAML-Valid, perl-Text-Template, perl-Tie-IxHash, perl-Tree-DAG_Node, perl-Try-Tiny, perl-Unicode-String, perl-Version-Requirements, perl-WeakRef, perl-XML-LibXSLT, perl-XML-NamespaceSupport, perl-XML-SAX, perl-YAML-Syck
Bump, Fix Dist Tags, Fix Macro Usage, Use %{_fixperms} and Rebuild
perl-Algorithm-C3, perl-BDB, perl-Class-Data-Inheritable, perl-CPAN-Meta-YAML, perl-DBD-CSV, perl-Email-Address, perl-Error, perl-File-Find-Rule, perl-HTTP-SimpleLinkChecker, perl-Module-Pluggable, perl-PAR-Dist, perl-Readonly, perl-String-Format, perl-Unix-Syslog, perl-XML-Simple
Bump, Fix Dist Tags, Fix Signature Test and Rebuild
perl-constant-boolean, perl-Symbol-Util, perl-Test-Assert
Bump, Fix Dist Tags, Fix Macro Usage, Fix Signature Test and Rebuild
perl-Locale-Maketext-Simple
Bump, Fix Dist Tags, Tweak Filters and Rebuild
perl-NetAddr-IP
Bump, Fix Dist Tags, Fix Macro Usage, Tweak Filters and Rebuild
perl-Archive-Zip, perl-Convert-BinHex, perl-DBI, perl-FileHandle-Unget, perl-JSON-XS, perl-Mail-Mbox-MessageParser, perl-Mail-Sender, perl-Sub-Uplevel, perl-Term-ReadLine-Gnu, perl-Test-MinimumVersion
Other
perl-Class-C3 required bumping, dist tag fix, macro usage fixes, tweaks to requires/provides filters and dropping of a provides hack for Bug #205801 that's no longer needed.
perl-Class-C3-XS required bumping, dist tag fix, macro usage fixes, tweaks to requires/provides filters and a hack to remove RPATHs on ancient distributions.
perl-Devel-Symdump required bumping, dist tag fix, macro usage fixes, addition of explicit build requirements perl(ExtUtils::MakeMaker) and perl(Test::More) and the addition of %{perl_bootstrap} to inhibit perl(Test::Pod) and perl(Test::Pod::Coverage) as build requirements, as Test::Pod::Coverage requires Pod::Coverage, which itself requires Devel::Symdump; perl(Test::Pod) may actually be OK here and I'll revisit it in the future.
perl-EV required bumping, dist tag fix, macro usage fixes and changing to install in the vendor directories rather than the perl directories, a hangover from a brief period in which, without much discussion it has to be said, some Rawhide perl module packages were switched to using the core perl directories for installation instead of the customary vendor directories and I foolishly followed suit.
perl-Exception-Class required bumping, dist tag fix, macro usage fixes, use of %{_fixperms} and I made perl(Test::Kwalitee) an unconditional build requirement (I'd not originally been able to build it for ancient releases like RHEL-3).
perl-File-HomeDir required bumping, dist tag fix and the addition of %{perl_bootstrap} to inhibit perl(Test::MinimumVersion) as a build requirement, as Test::MinimumVersion requires Perl::MinimumVersion, which requires Perl::Critic::Utils, which in turn requires File::HomeDir.
perl-Jcode required bumping, dist tag fix, macro usage fixes and the addition of a patch to fix the encoding of Nihongo.pod rather than running it through iconv every time.
perl-Mail-SPF-Query required bumping, dist tag fix, macro usage fixes and filtering of a bogus provide of perl(DirectiveSet).
perl-namespace-clean required bumping, dist tag fix and skipping of the t/author-07-debugger.t test as it fails with perl 5.14.1 (CPAN RT#69862).
perl-Net-DNS required bumping, dist tag fix and the addition of a provides filter to get the versioning right.
perl-Perl-Critic required bumping, dist tag fix and the addition of %{perl_bootstrap} to inhibit the author tests (and adding their dependencies as build requirements) since one of those, Test::Perl::Critic, requires Perl::Critic itself.
perl-Perl-MinimumVersion required bumping, dist tag fix, macro usage fixes and the addition of %{perl_bootstrap} to inhibit perl(Test::MinimumVersion) as a build requirement, as Test::MinimumVersion requires Perl::MinimumVersion itself.
perl-Perl-OSType required bumping, dist tag fix, macro usage fixes and changing to install in the vendor directories like for perl-EV.
perl-Pod-Eventual required bumping, dist tag fix, macro usage fixes and the addition of %{perl_bootstrap} to inhibit perl(Pod::Coverage::TrustPod) as a build requirement, as Pod::Coverage::TrustPod requires Pod::Eventual itself.
perl-Pod-Readme required bumping, dist tag fix, macro usage fixes and a fix to use Unix-style line endings in its pod2readme script.
perl-PPI required bumping, dist tag fix, macro usage fixes, the addition of explicit build requirements perl(Class::Inspector) and perl(Test::More) and the addition of %{perl_bootstrap} to inhibit running the release tests (and adding their dependencies as build requirements) since one of those, Perl::MinimumVersion, requires PPI itself.
perl-SQL-Statement required bumping, dist tag fix, macro usage fixes and the addition of %{perl_bootstrap} to inhibit perl(DBD::CSV) as a build requirement, as DBD::CSV has SQL::Statement as a build requirement.
perl-Sub-Install required bumping, dist tag fix, macro usage fixes and the addition of %{perl_bootstrap} to inhibit perl(Test::Output) as a build requirement, as Test::Output requires Sub::Exporter, which itself requires Sub::Install; in fact, Test::Output isn't actually needed at all on recent distributions and is only there for backwards compatibility.
perl-SUPER required bumping, dist tag fix, macro usage fixes, use of %{_fixperms} and tweaking of its provides filter.
perl-Task-Weaken required bumping, dist tag fix, macro usage fixes and the addition of %{perl_bootstrap} to inhibit running the release tests (and adding their dependencies as build requirements) since one of those, Test::MinimumVersion, requires Perl::Critic, which requires PPIx::Regexp, which itself requires Task::Weaken.
perl-Test-NoWarnings required bumping, dist tag fix, macro usage fixes, the dropping of now-redundant build requirements perl(Perl::MinimumVersion), perl(Pod::Simple), perl(Test::CPAN::Meta) and perl(Test::Pod), an explicit build requirement of perl(Test::More) and an explicit runtime dependency of perl(Devel::StackTrace) for enhanced functionality.
perl-Test-Script required bumping, dist tag fix, macro usage fixes, use of %{_fixperms} and the addition of %{perl_bootstrap} to inhibit perl(Test::MinimumVersion) as a build requirement, as it requires Perl::MinimumVersion, which itself has Test::Script as a build requirement.
perl-Test-SubCalls required bumping, dist tag fix, macro usage fixes and the addition of %{perl_bootstrap} to inhibit running the release tests (and adding their dependencies as build requirements) since one of those, Test::MinimumVersion, requires Perl::MinimumVersion, which requires PPI, which needs Test::SubCalls to build.
perl-Test-Unit-Lite required bumping, dist tag fix and filtering of dependencies on perl(Test::Unit::TestRunner) and perl(Test::Unit::TestSuite) as this package includes its own implementation of these and we'd otherwise pull in the full Test::Unit.
perl-Unicode-Map8 required bumping, dist tag fix, macro usage fixes and the addition of the perl(:MODULE_COMPAT_*) dependency that had somehow been missing for all these years.
perl-Unicode-MapUTF8 required bumping, dist tag fix, macro usage fixes and the addition of the perl(:MODULE_COMPAT_*) dependency as perl perl-Unicode-Map8.
perl-YAML required bumping, dist tag fix and the addition of %{perl_bootstrap} to inhibit perl(Test::MinimumVersion) as a build requirement, as Test::MinimumVersion has YAML::Tiny as a build requirement, which in turn has YAML as a build requirement.
perl-YAML-Tiny required bumping, dist tag fix, the removal of the redundant %{?perl_default_filter} and the addition of %{perl_bootstrap} to inhibit perl(Test::MinimumVersion) as a build requirement, as Test::MinimumVersion has YAML::Tiny as a build requirement.
Wednesday 27th July 2011
Local Packages
Updated perl-Event to 1.20:
- Repair test again
Updated perl-JSON-XS to 2.31:
Don't accumulate initial whitespace in the incremental buffer (this can be useful to allow whitespace-keepalive on a TCP connection without triggering the max_size limit)
Properly croak on some invalid inputs that are not strings (e.g. undef) when trying to decode a JSON text
Updated perl-version to 0.92:
Forbid negative versions; make replacement UNIVERSAL::VERSION return the original $VERSION scalar if called without a requested version (Perl RT#95544)
Rewrite code so that we just override all subs for Perl ≥ 5.9.0 (when version.pm was added to the core)
Updated my mock wrapper script to retry a build after a namespace unshare failure (Bug #718714)
- Updated my repository-building script not to include packages from older distributions in a repo where there's a package for the "right" distribution already
Thursday 28th July 2011
Fedora Project
Updated perl-FileHandle-Unget for F-16 and Rawhide to tweak the provides filter for rpm 4.9 compatibility so that it generates a properly-versioned provide of perl(FileHandle::Unget) = 0.1623 rather than perl(FileHandle::Unget) = 02
Local Packages
Updated perl-version to 0.93:
Fix problem with UNIVERSAL::VERSION noted by Father Chrysostomos
I also filtered out the perl(version::vxs) provide in distributions with rpm 4.9 onwards (Bug #633775)
Friday 29th July 2011
Local Packages
Updated city-fan.org-release to update the GPL license text to use the new FSF address, and to fix the dist tag for CentOS 6 and Scientific Linux
Updated perl-BDB to 1.89:
Make it compile and test successfully with libdb 5.1, but do not add any new symbols or functionality
This update enabled me to build perl-BDB using the default libdb 5.0 on Fedora 14 and libdb 5.1 on Fedora 15 but not libdb 5.2 on Fedora 16, though a small patch fixed that problem (CPAN RT#69881)
Updated ppp to fix the dist tag for CentOS 6 and Scientific Linux
Updated tidy to fix mangling of non-ASCII output file names (Bug #720221)
Updated tidyp fix mangling of non-ASCII output file names (Bug #725651)
I also sent this patch (same as for tidy) upstream, though since upstream is on GitHub, this involved registering on GitHub, forking the upstream repo, applying the patch, pushing the commit back to GitHub and sending a pull request upstream, which was rather more effort than sending a simple patch by email
Saturday 30th July 2011
Local Packages
Updated perl-Locale-Maketext-Lexicon to 0.88:
Fixed the t/5-extract.t test count
I also added a new repository for Fedora 16, with development builds now being targeted at Fedora 17; this branch occurred on Tuesday in Fedora but the signed packages have only started creeping out to the mirrors over the weekend.
Sunday 31st July 2011
Fedora Project
Updated perl-Sysadm-Install to 0.38 in F-16 and Rawhide:
Fixed Win32 test in 012tap.t
Previous Month: June 2011
Next Month: August 2011