Differences between revisions 94 and 95
Revision 94 as of 2016-05-23 11:25:44
Size: 6531
Comment: update for perl 5.24 transition
Revision 95 as of 2016-06-07 11:15:29
Size: 7025
Comment: avoiding breakage in stable
Deletions are marked like this. Additions are marked like this.
Line 110: Line 110:
 * If a point release, make sure that the previous version number released to unstable is added to debian/released-versions  * If a point release of perl, make sure that the previous version number released to unstable is added to debian/released-versions

= For a stable update =

In May 2016 an update was prepared for stable including a mass-import of relevant patches from an upstream point release. This worked well, but did result in one regression (DebianBug:826563). In future we should consider the changes and the likelihood of breaking things, and run regression tests (for example, use the perl.debian.net infrastructure to rebuild (in jessie/jessie-proposed-updates) all packages depending on perl. This takes about a week).

Some notes/TODO relating to perl interpreter maintenance.

Rebuilding packages for a major version transition

This is outdated as we now have a debomatic setup, yet to document

The main complication is that we need unofficial binNMUs of the perlapi-* and libperl reverse dependencies so that they can be used as build dependencies for rebuilding the rest.

The scripts at http://anonscm.debian.org/gitweb/?p=pkg-perl/scripts.git;a=blob;f=perl-transitions/perlapi.out can be used to determine the necessary binNMUs; the order also matters because the dependencies form a chain.

Example: libdevel-caller-perl is needed by libdevel-lexalias-perl, libpadwalker-perl is needed by libdevel-caller-perl etc.

  • set up an sbuild chroot with Perl 5.12 (note that debconf-english may need to be installed manually in place of debconf-i18n so that build-essential stays installable)
  • convert an up to date perlapi.out into sbuild commands like
    • sbuild -c exp -d unstable --make-binNMU="Rebuild for Perl 5.12" --binNMU=1 libgoo-canvas-perl_0.06-1
  • upload the results into an unofficial repository (reprepro is a good tool; maybe the Alioth web space should be used to push these out to public?)
  • file bugs for any failures
  • once all the necessary binNMUs are uploaded, proceed to test rebuild all the arch:all packages (lib*-perl is a first approximation)
  • note that testing on i386 instead of amd64 would be better, as the use64bitint changes in 5.12 only affect 32-bit architectures -> better test coverage

  • a 32-bit chroot and the schroot Personality option should be good enough on an amd64 host

Other issues

  • BTS:
    • categorizing and triaging bugs
      • I think usertags could help here, we just need a sensible list
    • closing invalid bugs
      • Eugene has done a lot of this already, but I think there are still plenty left
    • forwarding triaged bugs upstream if they're present on unmodified bleadperl
      • we could definitely do better here; I'm personally erring much too often on the side of "I'll write a patch first" and then forgetting about it
      • OTOH upstream has explicitly stated that documentation bugs should come with patches
    • fixing the `real' Debian-specific bugs
      • this is often hard because perl is such a core package in Debian and needs to change conservatively
      • examples: (495394)

  • Debian-specific patches (debian/patches/debian/*)
    • document what they do, why they are needed etc.
      • + possibly create one `divergence bug' per patch in the BTS to track this?
    • ideally, find a way to drop them or integrate them upstream
      • upstream has quite high standards so quick hacks usually don't make it in
      • specific notes:
        • debian/cpan_config_path may be obsolete with 5.14? It looks like upstream CPAN no longer tries to write a CPAN::Config file if it doesn't exist already, but falls back to CPAN::?MyConfig under $HOME.

  • Alioth infrastructure:
    • sending git commits to the PTS
    • mailing list setup, spam filtering, moderation
      • anything still needed?
    • project web pages and other documentation
      • other than maybe a basic jumping off point pointing to the wiki, PTS etc, what sort of things would go here?
  • general peer review
    • getting git commits via mail should help here

git-dpm use

Reverting a patch

git dpm checkout-patched
git log
<search for commit hash of patch to revert> - also note short log message
git rebase -i <commit hash>^
The commit in question should be listed first. Delete it.
git dpm dch

Other

Upstream support policy

http://www.xray.mpe.mpg.de/mailing-lists/perl5-porters/2011-04/msg00352.html

5.10 (in squeeze) will be desupported by upstream at the release of 5.14. According to my reading of that announcement this will effectively end security support for 5.10 at the same time (since 5.10.0 was released more than three years ago).

Package maintenance policies

  • We only apply patches which have already been applied in bleadperl if at all possible, or at least have been forwarded upstream
    • should this include dual-lived modules?

Bug tagging notes

We should probably define some useful usertags. Some initial thoughts:

  • Things fixed upstream: tag which (major?) version. Suggested name: fixed-upstream-$maj_ver
  • or only on CPAN: fixed-upstream-cpan
  • Divergence bugs (see above) for all Debian-specific patches:
    • probably different sub-categories?

New upstream release checklist

These are some things to consider when uploading (even a point release) new upstream version to unstable)

  • Bump major version trigger? (probably only for incompatible APIs)
  • The following packages will need a binNMU (only for point release updates in ALL archs as they will be rebuilt during the main ABI transition anyway). The command needs the extra-depends parameter to ensure that the new perl is installed in the buildd chroots (cf. 632467).

    • libpar-packer-perl (551356)

    • libdevel-cover-perl (562214)

    • libclass-xsaccessor-perl (Add dependency on same upstream version of perl to make sure #define PERL_CORE never breaks things.)
    • libcommon-sense-perl needs a BinNMU despite being arch:any internally, but how the resulting pure-perl .pm looks and works depends a lot on the Perl version it's built with (722332)

  • The following packages will need sourceful uploads:
    • libmodule-corelist-perl will need updating to track the data added for the new release.
    • libperl-apireference-perl will need to be updated as it has explicit references to each version of perl (eg: 647122)

  • Check other dual-lived modules which have changed in case updates are needed (but that is less likely)
  • Make sure the new version number is added to debian/released-versions (only) when uploading to unstable
  • If a point release of perl, make sure that the previous version number released to unstable is added to debian/released-versions

For a stable update

In May 2016 an update was prepared for stable including a mass-import of relevant patches from an upstream point release. This worked well, but did result in one regression (826563). In future we should consider the changes and the likelihood of breaking things, and run regression tests (for example, use the perl.debian.net infrastructure to rebuild (in jessie/jessie-proposed-updates) all packages depending on perl. This takes about a week).

Related pages