r54336 - in /trunk/dh-make-perl/lib/DhMakePerl/Command: Packaging.pm make.pm refresh.pm

dmn at users.alioth.debian.org dmn at users.alioth.debian.org
Sun Mar 14 17:35:23 UTC 2010


Author: dmn
Date: Sun Mar 14 17:35:18 2010
New Revision: 54336

URL: http://svn.debian.org/wsvn/pkg-perl/?sc=1&rev=54336
Log:
keep all control fields in the Debian::Control instance

there are a couple of convenience methods for accessing
source and binary package names

Modified:
    trunk/dh-make-perl/lib/DhMakePerl/Command/Packaging.pm
    trunk/dh-make-perl/lib/DhMakePerl/Command/make.pm
    trunk/dh-make-perl/lib/DhMakePerl/Command/refresh.pm

Modified: trunk/dh-make-perl/lib/DhMakePerl/Command/Packaging.pm
URL: http://svn.debian.org/wsvn/pkg-perl/trunk/dh-make-perl/lib/DhMakePerl/Command/Packaging.pm?rev=54336&op=diff
==============================================================================
--- trunk/dh-make-perl/lib/DhMakePerl/Command/Packaging.pm (original)
+++ trunk/dh-make-perl/lib/DhMakePerl/Command/Packaging.pm Sun Mar 14 17:35:18 2010
@@ -12,15 +12,17 @@
 use base 'DhMakePerl';
 
 __PACKAGE__->mk_accessors(
-    qw( arch bdepends bdependsi depends
-        priority section maintainer
-        start_dir main_dir debian_dir
+    qw( start_dir main_dir debian_dir
         meta perlname author
-        pkgname srcname version rules docs examples desc longdesc copyright )
+        version rules docs examples copyright
+        control
+    )
 );
 
 use Array::Unique;
+use Carp qw(confess);
 use Cwd qw( getcwd );
+use Debian::Control::FromCPAN;
 use Debian::Dependencies;
 use Debian::Rules;
 use DhMakePerl::PodParser ();
@@ -35,11 +37,6 @@
 use constant debstdversion => '3.8.4';
 
 our %DEFAULTS = (
-    arch      => 'all',
-    bdependsi => Debian::Dependencies->new("perl"),
-    depends   => Debian::Dependencies->new('${perl:Depends}'),
-    priority  => 'optional',
-    section   => 'perl',
     start_dir => getcwd(),
 );
 
@@ -55,9 +52,6 @@
 
     $self->cfg or die "cfg is mandatory";
 
-    $self->bdepends(
-        Debian::Dependencies->new( 'debhelper (>=' . $self->cfg->dh . ')' ) );
-
     my @docs;
     tie @docs, 'Array::Unique';
 
@@ -68,6 +62,9 @@
 
     $self->examples( \@examples );
 
+    $self->control( Debian::Control::FromCPAN->new )
+        unless $self->control;
+
     return $self;
 }
 
@@ -106,8 +103,10 @@
     return $self->main_file('Makefile.PL');
 }
 
-sub get_maintainer {
-    my ($self, $email ) = @_;
+sub fill_maintainer {
+    my $self = shift;
+
+    my $email = $self->cfg->email;
 
     my ( $user, $pwnam, $name, $mailh );
     $user = $ENV{LOGNAME} || $ENV{USER};
@@ -130,7 +129,17 @@
 
     $email =~ s/^(.*)\s+<(.*)>$/$2/;
 
-    return "$name <$email>";
+    if ( $self->cfg->pkg_perl ) {
+        my $old_maint = $self->control->source->Maintainer;
+        $self->control->source->Maintainer(
+            "Debian Perl Group <pkg-perl-maintainers\@lists.alioth.debian.org>"
+        );
+
+        $self->control->source->Uploaders->add($old_maint);
+    }
+    else {
+        $self->control->source->Maintainer( "$name <$email>" );
+    }
 }
 
 sub process_meta {
@@ -170,11 +179,9 @@
     $self->meta($yaml);
 }
 
-sub extract_basic {
-    my ($self) = @_;
-
-    $self->extract_name_ver();
-    find( sub { $self->check_for_xs }, $self->main_dir );
+sub set_package_name {
+    my $self = shift;
+
     my $pkgname = lc $self->perlname;
     $pkgname = 'lib' . $pkgname unless $pkgname =~ /^lib/;
     $pkgname .= '-perl';
@@ -182,11 +189,59 @@
     # ensure policy compliant names and versions (from Joeyh)...
     $pkgname =~ s/[^-.+a-zA-Z0-9]+/-/g;
 
-    $self->pkgname($pkgname);
-
-    printf( "Found: %s %s (%s arch=%s)\n",
-        $self->perlname, $self->version, $self->pkgname, $self->arch )
-        if $self->cfg->verbose;
+    $self->control->source->Source($pkgname)
+        unless $self->control->source->Source;
+
+    $self->control->binary->Push( $pkgname =>
+            Debian::Control::Stanza::Binary->new( { Package => $pkgname } ) )
+        unless $self->control->binary->FETCH($pkgname);
+}
+
+sub pkgname {
+    @_ == 1 or die 'Syntax: $obj->pkgname()';
+
+    my $self = shift;
+
+    my $pkg = $self->control->binary->Values(0)->Package;
+
+    defined($pkg) and $pkg ne ''
+        or confess "called before set_package_name()";
+
+    return $pkg;
+}
+
+sub srcname {
+    @_ == 1 or die 'Syntax: $obj->srcname()';
+
+    my $self = shift;
+
+    my $pkg = $self->control->source->Source;
+
+    defined($pkg) and $pkg ne ''
+        or confess "called before set_package_name()";
+
+    return $pkg;
+}
+
+sub extract_basic {
+    my ($self) = @_;
+
+    $self->extract_name_ver();
+
+    my $src = $self->control->source;
+    my $bin = $self->control->binary->Values(0);
+
+    $src->Section('perl') unless defined $src->Section;
+    $src->Priority('optional') unless defined $src->Priority;
+
+    $bin->Architecture('all');
+    find( sub { $self->check_for_xs }, $self->main_dir );
+
+    printf(
+        "Found: %s %s (%s arch=%s)\n",
+        $self->perlname, $self->version,
+        $self->pkgname,  $bin->Architecture
+    ) if $self->cfg->verbose;
     $self->debian_dir( $self->main_file('debian') );
 
     $self->extract_basic_copyright();
@@ -199,9 +254,6 @@
         },
         $self->main_dir
     );
-
-    $self->pkgname($pkgname);
-    $self->srcname($pkgname);
 }
 
 sub extract_name_ver {
@@ -231,6 +283,8 @@
 
     $self->perlname($name);
     $self->version($ver);
+
+    $self->set_package_name;
 }
 
 sub extract_name_ver_from_makefile {
@@ -386,18 +440,25 @@
     $self->perlname($name);
     $self->version($ver);
 
+    $self->set_package_name;
+
     $self->extract_desc("$dir/$vfrom") if defined $vfrom;
 }
 
 sub extract_desc {
     my ( $self, $file ) = @_;
+
+    my $bin = $self->control->binary->Values(0);
+    my $desc = $bin->short_description;
+
+    $desc and return;
 
     my ( $parser, $modulename );
     $parser = new DhMakePerl::PodParser;
     return unless -f $file;
     $parser->set_names(qw(NAME DESCRIPTION DETAILS COPYRIGHT AUTHOR AUTHORS));
     $parser->parse_from_file($file);
-    if ( $self->desc ) {
+    if ( $desc ) {
 
         # No-op - We already have it, probably from the command line
 
@@ -405,7 +466,7 @@
     elsif ( $self->meta->{abstract} ) {
 
         # Get it from META.yml
-        $self->desc( $self->meta->{abstract} );
+        $desc = $self->meta->{abstract};
 
     }
     elsif ( my $my_desc = $parser->get('NAME') ) {
@@ -416,37 +477,37 @@
         $my_desc =~ s/\s+$//s;
         $my_desc =~ s/^([^\s])/ $1/mg;
         $my_desc =~ s/\n.*$//s;
-        $self->desc($my_desc);
+        $desc = $my_desc;
     }
 
     # Replace linefeeds (not followed by a space) in short description with
     # spaces
-    my $tmp_desc = $self->desc;
-    $tmp_desc =~ s/\n(?=\S)/ /gs;
-    $self->desc($tmp_desc);
-
-    unless ($self->longdesc) {
-        my $long = $parser->get('DESCRIPTION')
-                || $parser->get('DETAILS')
-                || $self->desc;
+    $desc =~ s/\n(?=\S)/ /gs;
+    $desc =~ s/^\s+//;      # strip leading spaces
+    $bin->short_description($desc);
+
+    my $long_desc;
+    unless ( $bin->long_description ) {
+        $long_desc 
+            = $parser->get('DESCRIPTION')
+            || $parser->get('DETAILS')
+            || $self->desc;
         ( $modulename = $self->perlname ) =~ s/-/::/g;
-        $long =~ s/This module/$modulename/;
+        $long_desc =~ s/This module/$modulename/;
 
         local ($Text::Wrap::columns) = 78;
-        $long = fill( "", "", $long );
-        $self->longdesc($long);
-    }
-    my $ld = $self->longdesc;
-    if ( defined($ld) && $ld !~ /^$/ ) {
-        $ld =~ s/^\s+//s;
-        $ld =~ s/\s+$//s;
-        $ld =~ s/^\t/ /mg;
-        $ld =~ s/^\s*$/ ./mg;
-        $ld =~ s/^\s*/ /mg;
-        $ld =~ s/^([^\s])/ $1/mg;
-        $ld =~ s/\r//g;
-
-        $self->longdesc($ld);
+        $long_desc = fill( "", "", $long_desc );
+    }
+
+    if ( defined($long_desc) && $long_desc !~ /^$/ ) {
+        $long_desc =~ s/^[\s\n]+//s;
+        $long_desc =~ s/\s+$//s;
+        $long_desc =~ s/^\t/ /mg;
+        $long_desc =~ s/\r//g;
+
+        $bin->long_description(
+            "$long_desc\n\nThis description was automagically extracted from the module by dh-make-perl.\n"
+        );
     }
 
     $self->copyright( $parser->get('COPYRIGHT')
@@ -483,7 +544,7 @@
     ( !$self->cfg->exclude or $rel_path !~ $self->cfg->exclude )
         && /\.(xs|c|cpp|cxx)$/i
         && do {
-        $self->arch('any');
+        $self->control->binary->Values(0)->Architecture('any');
         };
 }
 
@@ -591,10 +652,12 @@
 sub update_file_list( $ % ) {
     my ( $self, %p ) = @_;
 
+    my $pkgname = $self->control->binary->Values(0)->Package;
+
     while ( my ( $file, $new_content ) = each %p ) {
         next unless @$new_content;
         # pkgname.foo file
-        my $pkg_file = $self->debian_file( $self->pkgname .".$file" );
+        my $pkg_file = $self->debian_file("$pkgname.$file");
         my %uniq_content;
         my @existing_content;
 
@@ -819,11 +882,13 @@
     push( @res, "", "Files: debian/*" );
     if($self->cfg->command eq 'refresh') {
     my @from_changelog
-        = $self->copyright_from_changelog( $self->maintainer, $year );
+        = $self->copyright_from_changelog( $self->control->source->Maintainer,
+        $year );
       $from_changelog[0] = "Copyright:" . $from_changelog[0];
       push @res, @from_changelog;
-    } else {
-      push @res, "Copyright: $year, " . $self->maintainer;
+    }
+    else {
+        push @res, "Copyright: $year, " . $self->control->source->Maintainer;
     }
     push @res, "License: " . join( ' or ', keys %licenses );
 
@@ -1005,6 +1070,13 @@
     # start with the minimum
     $deps->add( Debian::Dependency->new( 'debhelper', $self->cfg->dh ) );
 
+    if ( $control->binary->Values(0)->Architecture eq 'all' ) {
+        $control->source->Build_Depends_Indep->add('perl');
+    }
+    else {
+        $deps->add('perl');
+    }
+
     $self->explained_dependency( 'Module::AutoInstall', $deps,
         'debhelper (>= 7.2.13)' )
         if -e catfile( $self->main_dir, qw( inc Module AutoInstall.pm ) );
@@ -1057,8 +1129,9 @@
     }
 
     # some mandatory dependencies
-    my $bin_deps = $control->binary->[0]->Depends;
-    $bin_deps += '${shlibs:Depends}' if $self->arch eq 'any';
+    my $bin_deps = $control->binary->Values(0)->Depends;
+    $bin_deps += '${shlibs:Depends}'
+        if $self->control->binary->Values(0)->Architecture eq 'any';
     $bin_deps += '${misc:Depends}, ${perl:Depends}';
 }
 

Modified: trunk/dh-make-perl/lib/DhMakePerl/Command/make.pm
URL: http://svn.debian.org/wsvn/pkg-perl/trunk/dh-make-perl/lib/DhMakePerl/Command/make.pm?rev=54336&op=diff
==============================================================================
--- trunk/dh-make-perl/lib/DhMakePerl/Command/make.pm (original)
+++ trunk/dh-make-perl/lib/DhMakePerl/Command/make.pm Sun Mar 14 17:35:18 2010
@@ -8,13 +8,13 @@
 
 __PACKAGE__->mk_accessors(
     qw(
-        cfg apt_contents main_dir debian_dir meta bdepends bdependsi depends
-        priority section maintainer arch start_dir
-        perlname version pkgversion pkgname srcname
-        desc longdesc copyright author
+        cfg apt_contents main_dir debian_dir meta
+        start_dir
+        perlname version pkgversion
+        copyright author
         extrasfields  extrapfields
         mod_cpan_version
-        docs examples rules
+        docs examples
         )
 );
 
@@ -61,8 +61,6 @@
 # TODO:
 # * get more info from the package (maybe using CPAN methods)
 
-use constant debstdversion => '3.8.4';
-
 # this is the version in 'oldstable'. No much point on depending on something
 # older
 use constant oldest_perl_version => '5.8.8-7';
@@ -87,26 +85,24 @@
 
     $self->check_deprecated_overrides;
 
-    $self->arch( $self->cfg->arch ) if $self->cfg->arch;
-
-    $self->maintainer( $self->get_maintainer( $self->cfg->email ) );
-
-    $self->desc( $self->cfg->desc || '' );
-
     my $tarball = $self->setup_dir();
     $self->process_meta;
     $self->findbin_fix();
 
     $self->extract_basic();
-    if ( defined $self->cfg->packagename ) {
-        $self->pkgname( $self->cfg->packagename );
-    }
+
     unless ( defined $self->cfg->version ) {
         $self->pkgversion( $self->version . '-1' );
     }
     else {
         $self->pkgversion( $self->cfg->version );
     }
+
+    $self->fill_maintainer;
+
+    my $bin = $self->control->binary->Values(0);
+    $bin->short_description( $self->cfg->desc )
+        if $self->cfg->desc;
 
     move(
         $tarball,
@@ -128,50 +124,44 @@
     }
 
     my $apt_contents = $self->get_apt_contents;
-
-    $self->depends->add( Debian::Dependency->new('${shlibs:Depends}') )
-        if $self->arch eq 'any';
-    $self->depends->add( Debian::Dependency->new('${misc:Depends}') );
+    my $src = $self->control->source;
+
     my $extradeps = $self->extract_depends( $apt_contents, 0 );
-    $self->depends->add($extradeps);
-    $self->depends->add( Debian::Dependencies->new( $self->cfg->depends ) )
+    $bin->Depends->add($extradeps);
+    $bin->Depends->add( Debian::Dependencies->new( $self->cfg->depends ) )
         if $self->cfg->depends;
 
     $self->extract_docs;
     $self->extract_examples;
 
-    $self->bdepends->add(
-        Debian::Dependency->new('perl (>= 5.10) | libmodule-build-perl') )
-        if ( $self->module_build eq "Module-Build" );
-
     my ( $extrabdepends, $extrabdependsi );
-    if ( $self->arch eq 'any' ) {
-        $extrabdepends = $self->extract_depends( $apt_contents, 1 )
-            + $extradeps;
+    if ( $bin->Architecture eq 'any' ) {
+        $src->Build_Depends->add( $self->extract_depends( $apt_contents, 1 ),
+            $extradeps );
     }
     else {
-        $extrabdependsi = $self->extract_depends( $apt_contents, 1 )
-            + $extradeps,
-            ;
-    }
-
-    $self->bdepends->add( Debian::Dependencies->new( $self->cfg->bdepends ) )
+        $src->Build_Depends_Indep->add(
+            $self->extract_depends( $apt_contents, 1 ), $extradeps );
+    }
+
+    $src->Build_Depends->add( $self->cfg->bdepends )
         if $self->cfg->bdepends;
-    $self->bdepends->add($extrabdepends);
-
-    $self->bdependsi->add(
-        Debian::Dependencies->new( $self->cfg->bdependsi ) )
+
+    $src->Build_Depends_Indep->add( $self->cfg->bdependsi )
         if $self->cfg->bdependsi;
-    $self->bdependsi->add($extrabdependsi);
 
     die "Cannot find a description for the package: use the --desc switch\n"
-        unless $self->desc;
+        unless $bin->short_description;
+
     print "Package does not provide a long description - ",
         " Please fill it in manually.\n"
-        if ( !defined $self->longdesc or $self->longdesc =~ /^\s*\.?\s*$/ )
+        if ( !defined $bin->long_description
+        or $bin->long_description =~ /^\s*\.?\s*$/ )
         and $self->cfg->verbose;
+
     printf( "Using maintainer: %s\n", $self->maintainer )
         if $self->cfg->verbose;
+
     print "Found docs: @{ $self->docs }\n" if $self->cfg->verbose;
     print "Found examples: @{ $self->examples }\n"
         if @{ $self->examples } and $self->cfg->verbose;
@@ -179,12 +169,18 @@
     # start writing out the data
     mkdir( $self->debian_dir, 0755 )
         || die "Cannot create " . $self->debian_dir . " dir: $!\n";
-    $self->create_control( $self->debian_file('control') );
     $self->write_source_format(
         catfile( $self->debian_dir, 'source', 'format' ) );
     $self->create_changelog( $self->debian_file('changelog'),
         $self->cfg->closes // $self->get_wnpp( $self->pkgname ) );
     $self->create_rules( $self->debian_file('rules') );
+
+    # now that rules are there, see if we need some dependency for them
+    $self->discover_utility_deps( $self->control );
+    $src->Standards_Version( $self->debstdversion );
+    $src->Homepage( $self->upsurl );
+    $self->control->write( $self->debian_file('control') );
+
     $self->create_compat( $self->debian_file('compat') );
     $self->create_watch( $self->debian_file('watch') );
 
@@ -568,7 +564,9 @@
             }
         }
         else {
-            warn "If you understand the security implications, try --intrusive.\n";
+            warn
+                "If you understand the security implications, try --intrusive.\n"
+                if $self->cfg->verbose;
         }
         warn '=' x 70, "\n"
             if $self->cfg->verbose;
@@ -706,7 +704,8 @@
     $fh->printf( "%s (%s) %s; urgency=low\n",
         $self->srcname, $self->pkgversion, $changelog_dist );
     $fh->print("\n  * Initial Release.$closes\n\n");
-    $fh->printf( " -- %s  %s\n", $self->maintainer, email_date(time) );
+    $fh->printf( " -- %s  %s\n", $self->control->source->Maintainer,
+        email_date(time) );
 
     #$fh->print("Local variables:\nmode: debian-changelog\nEnd:\n");
     $fh->close;

Modified: trunk/dh-make-perl/lib/DhMakePerl/Command/refresh.pm
URL: http://svn.debian.org/wsvn/pkg-perl/trunk/dh-make-perl/lib/DhMakePerl/Command/refresh.pm?rev=54336&op=diff
==============================================================================
--- trunk/dh-make-perl/lib/DhMakePerl/Command/refresh.pm (original)
+++ trunk/dh-make-perl/lib/DhMakePerl/Command/refresh.pm Sun Mar 14 17:35:18 2010
@@ -35,7 +35,8 @@
         if $self->cfg->verbose;
 
     $self->rules( Debian::Rules->new( $self->debian_file('rules') ) );
-    $self->maintainer( $self->get_maintainer( $self->cfg->email ) );
+    $self->control->read( $self->debian_file('control') );
+    $self->fill_maintainer;
     $self->process_meta;
     $self->extract_basic();    # also detects arch-dep package
 
@@ -68,8 +69,7 @@
     }
 
     if ( 'control' ~~ $self->cfg->only ) {
-        my $control = Debian::Control::FromCPAN->new;
-        $control->read( $self->debian_file('control') );
+        my $control = $self->control;
         if ( -e catfile( $self->debian_file('patches'), 'series' )
             and $self->cfg->source_format ne '3.0 (quilt)' )
         {




More information about the Pkg-perl-cvs-commits mailing list