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