Bug#649101: libclass-isa-perl: circular dependency hell

Niko Tyni ntyni at debian.org
Sun Nov 20 08:53:52 UTC 2011

On Thu, Nov 17, 2011 at 08:02:30PM +0000, Dominic Hargreaves wrote:
> On Thu, Nov 17, 2011 at 04:13:08PM +0100, Bill Allombert wrote:
> > There is a circular dependency between libclass-isa-perl, libswitch-perl, perl and perl-modules:
> > 
> > libclass-isa-perl 	:Depends: perl
> > libswitch-perl 	        :Depends: perl, perl-modules
> > perl 	                :Depends: perl-modules (>= 5.14.2-3)
> > perl-modules 	        :Depends: perl (>= 5.14.2-1), libswitch-perl, libclass-isa-perl
> > 
> > Complex circular dependencies are known to cause problems during upgrade, so we
> > should try to get rid of them.
> Thanks for the heads up. The Depends were added in order to produce
> a smooth upgrade path since squeeze released with a number of packages
> which used those modules (see #629472 for more information).
> I will think about if we can do anything to improve this. If nothing
> else these will be removed after wheezy.

It looks like libclass-isa-perl could be made to depend just on perl-base.
The line
 use if $] >= 5.011, 'deprecate';
would need to be patched out as if.pm is in perl-modules, but the
functionality is not needed for 5.14 anyway.

However, this is unfortunately not a general solution and doesn't work
for libswitch-perl, which needs Filter::Util::Call from the perl package.

I expect this is not the last time this will crop up. AFAICS, whenever
we skip past one Perl major release between Debian stable releases (which
is going to happen again due to differences in our release schedules),
we're going to hit this.

[ When we don't skip a major Perl release, upstream's deprecation schedule
  works for us and the perl package can just Recommend the newly split
  modules instead of depending on them, avoiding the circular dependency. ]

I see three options for the general case:

- stick with the circular dependency for one release. This is still
  allowed by the policy after all; is there any evidence of real problems?

- extend the deprecation period to match Debian release schedule: in
  this case, bundle Class::ISA and Switch in the perl 5.14 packages even
  though upstream doesn't. This would mean multiple tarballs in the
  original source. I'm not thrilled about this but it's doable.

- try to get upstream to extend their deprecation period to accommodate
  "slower" distributions. Listed mostly for completeness; the discussion
  that led to the current policy was hot enough that I don't really want
  to reopen that can of worms.

More ideas welcome.
Niko Tyni   ntyni at debian.org

More information about the pkg-perl-maintainers mailing list