[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

A proposal: un-split perl packages for 5.6.0



The current situation with multiple versioned perl packages seems overly
complex and has the disadvantage that while binary (XS) modules may be
re-built transitionally, dependencies are both partially broken during
the transition period and completely so when an old perl version is set
as the /usr/bin/perl alternative.

Given that perl generally provides an option for backward compatibility
to a previous release, it would seem that a cleaner alternative is
available.  I have prepared a set of non-versioned `perl', `perl-base',
etc. packages for 5.6.0 to demonstrate the proposal:

    http://master.debian.org/~bod/perl/

For apt:

    deb     http://master.debian.org/~bod perl/
    deb-src http://master.debian.org/~bod perl/

    apt-get dist-upgrade

[Note: these are un-official test packages--install at your own risk.]

The directory layout for these debs has been substantially revised (see
the Contents file) with the monolithic /usr/lib/perl5 directory split
into /usr/lib/perl5 and /usr/share/perl5 with no arch or version
subdirs.

A `perlapi' package exists to define the minimum binary API supported
and is used in concert with a dependency on perl or perl-base to
`bracket' the validity of binary module packages.  This package will
have a version number which reflects perl's xs_apiversion, with the
source package version appended.

A dummy example module (libtest-perl) is included to illustrate the
suggested depends for XS modules:

    Depends: perl (>= 5.6.0-0test1), perlapi (<< 5.6.0)

The current test packages have a perlapi version of 5.005-5.6.0-0test2,
so the dependencies are met, as they are if a later version removes the
5.005 compatibility (the version changing to say 5.6.0-5.6.1-5).

Modifying dh_perl to add the appropriate perlapi dependency when
debian/<package>/usr/lib/perl5 exists is fairly trivial.

Under this proposal, binary modules should continue to work over a
revision change, allowing a reasonable period of time for binary modules
to be re-built before the next perl release.

For transitioning from the existing perl-5.005 packages, the perl binary
includes the 5.005 archlib and privlib dirs in @INC.  There are dummy
perl-5.005/perl-5.005-base packages for existing dependencies.

In future revisions, those packages will need to be retained to ease the
potato->woody transition, although once all modules have been re-built
the additional @INC entries may be dropped.

This particular set of debs appears to work fine with binary modules
compiled for 5.005, although there are problems with programs embedding
a perl interpreter.  For production, the relevant perl-5.005 dummy
packages would need to conflict with the current version of each such
program.

A libperl5.6 shared library package is provided for use with embedded
interpreters which should allow this to be handled via standard
dependencies in the future.  Note that the perl binary (for reasons of
speed on i386) does not use the shared library.

Regards,
-- 
Brendan O'Dea                                        bod@compusol.com.au
Compusol Pty. Limited                  (NSW, Australia)  +61 2 9809 0133



Reply to: