Project:Perl/Ongoing tasks

High priority tasks

 * Fix repoman issues: dev-perl perl-core
 * Update virtuals (drop old versions, remove references to removed perl versions, add new perl versions under mask), details see below

Updating dev-lang/perl (new major version 5.x)
'''These notes are work in progess!!! Always add new ebuilds masked, both new dev-lang/perl and its corresponding new virtuals. '''


 * Version-bump perl-core/Module-CoreList and virtual/perl-Module-CoreList, so it has data about the new Perl version
 * Update your local Module-CoreList for convenience
 * Now or later, add new dev-lang/perl package.masked, with empty PERL_OLDVERSEN and updated version numbers in the dual_scripts table
 * In some cases, virtuals correspond to a "distribution", not a "module". For these virtuals, check and update the table on the distribution virtuals page
 * Add package.masked new virtuals for new core package versions included in the new Perl (only virtuals, no perl-core), or
 * Update existing virtuals with a revbump to include the new version if it provides the same core package
 * always list higher dev-lang/perl versions first in the virtual
 * always keep stable keywords during revision bump of the virtual
 * always immediately remove the old virtual revision

Updating dev-lang/perl (new minor version 5.x.y)
These notes are work in progess!!!
 * Copy ebuild to new version
 * Ensure DIST_AUTHOR etc is right
 * Update PERL_OLDVERSEN to include all versions that are ABI compatible, but are different versions, newest first, eg: For Perl 5.24.3 PERL_OLDVERSEN="5.24.2 5.24.1 5.24.0"

Dropping a dev-lang/perl version
These notes are work in progess!!!


 * package.mask the dev-lang/perl ebuild plus all virtuals that are provided only by this dev-lang/perl version
 * Wait until autorepoman catches up and make sure the mask is correct and complete.
 * Remove the masked dev-lang/perl ebuild
 * Remove the masked virtuals provided only by this dev-lang/perl version
 * Remove all perl-core/* ebuilds that have no virtual pointing to them.
 * Important: Rules restricting "removing last stable" or "removing last keyworded" do not apply in perl-core (since people are only allowed to DEPEND on virtuals). Just do it.
 * Important: Instead of removing the last ebuild in a directory, just drop all keywords in it. We will need the package again, so last-riting makes no sense.

Updating the virtuals
Important point: Virtuals can correspond to single modules or to CPAN distributions. See Project:Perl/Distribution_virtuals about the module versions inside distributions.

It's important that the versions inside dev-lang/perl are also present as virtuals. Why? Imagine dev-lang/perl-0.18 contains Module::Foo version Y, and virtual/perl-Module-Foo-X (with X smaller Y) is stable. Now we stabilize perl-0.18. If we don't have a virtual to stabilize, the old version will stay installed and shadow the newer one in perl-0.18!

Template for a virtual with corresponding dev-lang/perl version:
 * 1) Copyright 1999-2014 Gentoo Foundation
 * 2) Distributed under the terms of the GNU General Public License v2
 * 3) $Header: /var/cvsroot/gentoo-x86/virtual/perl-IO/perl-IO-1.310.0.ebuild,v 1.1 2014/07/07 19:40:40 dilfridge Exp $

EAPI=5

DESCRIPTION="Virtual for ${PN#perl-}" HOMEPAGE="" SRC_URI=""

LICENSE="" SLOT="0" KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~m68k ~mips ~ppc ~ppc64 ~s390 ~sh ~sparc ~x86 ~ppc-aix ~amd64-fbsd ~x86-fbsd ~x64-freebsd ~x86-freebsd ~x86-interix ~amd64-linux ~ia64-linux ~x86-linux ~ppc-macos ~x64-macos ~x86-macos ~m68k-mint ~sparc-solaris ~sparc64-solaris ~x64-solaris ~x86-solaris" IUSE=""

DEPEND="" RDEPEND="	|| ( =dev-lang/perl-5.20* =dev-lang/perl-5.18* ~perl-core/${PN#perl-}-${PV} )	!perl-core/${PN#perl-}-${PV}-r999 "

Template for a virtual without corresponding dev-lang/perl version:
 * 1) Copyright 1999-2014 Gentoo Foundation
 * 2) Distributed under the terms of the GNU General Public License v2
 * 3) $Header: /var/cvsroot/gentoo-x86/virtual/perl-IO/perl-IO-1.310.0.ebuild,v 1.1 2014/07/07 19:40:40 dilfridge Exp $

EAPI=5

DESCRIPTION="Virtual for ${PN#perl-}" HOMEPAGE="" SRC_URI=""

LICENSE="" SLOT="0" KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~m68k ~mips ~ppc ~ppc64 ~s390 ~sh ~sparc ~x86 ~ppc-aix ~amd64-fbsd ~x86-fbsd ~x64-freebsd ~x86-freebsd ~x86-interix ~amd64-linux ~ia64-linux ~x86-linux ~ppc-macos ~x64-macos ~x86-macos ~m68k-mint ~sparc-solaris ~sparc64-solaris ~x64-solaris ~x86-solaris" IUSE=""

DEPEND="" RDEPEND="~perl-core/${PN#perl-}-${PV}"

Virtuals that still need some attention
Things that have been skipped in this update pass and should be fixed: all done

Moving a package from perl-core to dev-perl
Sometimes a package X is removed from the core Perl distribution. Keep version-bumping perl-core/X and virtual/perl-X package until all virtual versions of X point to perl-core alone, NOT to any dev-lang/perl ebuild. Once that state is reached the package can be moved to dev-perl.

Procedure:
 * Copy the perl-core/X ebuilds to dev-perl/X, make sure everything builds and installs fine, commit
 * Update all virtual/perl-X ebuilds to point to dev-perl/X (with revbumps, keep stable keywords)
 * Add package move entry to move perl-core/X to dev-perl/X
 * Remove perl-core/X
 * Update tree-wide dependencies to point to dev-perl/X instead of virtual/perl-X
 * Last-rite virtual/perl-X

Package requests on bugzilla
There's a huge number of ebuild requests on bugzilla for perl packages, many quite old... So, we leave this message on the bugs: Is anyone still interested in this package? If yes, please indicate so here and now! If noone replies within 30 days, the bug is closed.