-=| Peter Pentchev, Sat, Apr 25, 2009 at 02:25:16AM +0300 |=-
>
> Here are two patches that fix little issues that I've come across
> in the past couple of days while running dh-make-perl on a couple
> of CPAN modules.
Thanks for this, I was feeling lonely hacking on dh-make-perl :)
> The first change: do not put "libfoo-perl (>= 0.000-1)" for
> modules that actually *do* have a dependency on version 0.000 in
> their META.yml / Makefile.PL / whatever file! :) For an example of
> this behavior, try
>
> dh-make-perl --cpan Software::License --pkg-perl
>
> ...and look at Build-Depends-Indep.
>
> diff -urN -urN -x tags -x .svn ./lib/Debian/Dependency.pm
> /fs/linux/home/roam/deb/pkg-perl/pkg-perl/trunk/dh-make-perl/lib/Debian/Dependency.pm
> --- ./lib/Debian/Dependency.pm 2009-04-25 01:47:28.000000000 +0300
> +++ /fs/linux/home/roam/deb/pkg-perl/pkg-perl/trunk/dh-make-perl/lib/Debian/Dependency.pm 2009-04-24 18:44:52.000000000 +0300
> @@ -84,7 +84,7 @@
> my $self = shift;
>
> return (
> - $self->ver
> + $self->ver && $self->ver !~ /^0+(\.0+)?$/
> ? $self->pkg . ' (' . $self->rel . ' ' . $self->ver . ')'
> : $self->pkg
> );
This better be fixed in the part that extracts the version so that
$self->ver is not set if the version is dummy. The patch above works
around the bad parsing. The end result is the same, but a dummy
version in META.yml better be represented internally as a plain,
version-less dependency.
> The second change: when pruning the dependencies aggregated from
> distinct sources, fix the replacement of an older version with
> a newer one. This shows up in the somewhat rare case when there
> are two different ways a package depends on another one, and
> the two dependencies specify different versions - a rare case, but
> exactly the one that prune() was meant to handle :) For an example
> of this behavior, look at the Test::Kwalitee CPAN module which has
> a "require 5.6.2" directive; Debian::Dependencies->prune() then has
> to update a 5.6.0-12 dependency to 5.6.2 and comes up with a bare
> "Build-Depends-Indep: 5.6.2" in the control file. Try it:
>
> dh-make-perl --cpan Test::Kwalitee --pkg-perl
>
> ...and look at Build-Depends-Indep.
>
> Both patches are below. If nobody objects, I will commit them in
> a day or three.
>
> Thanks for reading this far ;)
>
> G'luck,
> Peter
>
> diff -urN -urN -x tags -x .svn ./lib/Debian/Dependencies.pm
> /fs/linux/home/roam/deb/pkg-perl/pkg-perl/trunk/dh-make-perl/lib/Debian/Dependencies.pm
> --- ./lib/Debian/Dependencies.pm 2009-04-25 01:47:28.000000000 +0300
> +++ /fs/linux/home/roam/deb/pkg-perl/pkg-perl/trunk/dh-make-perl/lib/Debian/Dependencies.pm 2009-04-24 19:09:33.000000000 +0300
> @@ -124,7 +124,7 @@
> if ( exists $deps{$p} ) {
> my $cur_ver = $deps{$p}->ver;
>
> - $deps{$p} = $v
> + $deps{$p} = Debian::Dependency->new($p, $v)
> if defined($v) and not defined($cur_ver)
> or $AptPkg::Config::_config->system->versioning->compare(
> $cur_ver, $v ) < 0;
>
This patch is perfectly OK. Please commit.
Bonus points if you add a test to t/Dependencies.t that verifies the
fix :)
--
dam
Attachment:
signature.asc
Description: Digital signature