Dpkg

 view release on metacpan or  search on metacpan

lib/Dpkg/Source/Package/V3/Native.pm  view on Meta::CPAN

    my $tar = Dpkg::Source::Archive->new(
        filename => File::Spec->catfile($self->{basedir}, $tarfile),
    );
    $tar->extract($newdirectory);
}

sub can_build {
    my ($self, $dir) = @_;

    my $v = Dpkg::Version->new($self->{fields}->{'Version'});
    if ($v->has_revision()) {
        if (run_vendor_hook('has-fuzzy-native-source')) {
            warning(g_('native package version may not have a revision'));
        } else {
            return (0, g_('native package version may not have a revision'));
        }
    }

    return 1;
}

sub do_build {
    my ($self, $dir) = @_;
    my @tar_ignore = map { "--exclude=$_" } @{$self->{options}{tar_ignore}};
    my @argv = @{$self->{options}{ARGV}};

    if (scalar(@argv)) {
        usageerr(g_("-b takes only one parameter with format '%s'"),
                 $self->{fields}{'Format'});
    }

    my $sourcepackage = $self->{fields}{'Source'};
    my $basenamerev = $self->get_basename(1);
    my $tarname = "$basenamerev.tar." . $self->{options}{comp_ext};

    info(g_('building %s in %s'), $sourcepackage, $tarname);

    my $newtar = File::Temp->new(
        TEMPLATE => "$tarname.new.XXXXXX",
        DIR => getcwd(),
        UNLINK => 0,
    );
    push_exit_handler(sub { unlink($newtar) });

    my ($dirname, $dirbase) = fileparse($dir);
    my $tar = Dpkg::Source::Archive->new(
        filename => $newtar,
        compression => compression_guess_from_filename($tarname),
        compression_level => $self->{options}{comp_level},
    );
    $tar->create(
        options => \@tar_ignore,
        chdir => $dirbase,
    );
    $tar->add_directory($dirname);
    $tar->finish();
    rename($newtar, $tarname)
        or syserr(g_("unable to rename '%s' (newly created) to '%s'"),
                  $newtar, $tarname);
    pop_exit_handler();
    chmod(0o666 &~ umask(), $tarname)
        or syserr(g_("unable to change permission of '%s'"), $tarname);

    $self->add_file($tarname);
}

=head1 CHANGES

=head2 Version 0.xx

This is a private module.

=cut

1;



( run in 1.761 second using v1.01-cache-2.11-cpan-39bf76dae61 )