PaulHowarth/Blog/2011-07-26

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.


Recent