mirror of
https://github.com/Project-OSS-Revival/alien.git
synced 2026-04-24 14:00:17 +00:00
Support bzipped and uncompressed tar files, using tar's auto-compression detection. (Requires gnu tar 1.14.91)
This commit is contained in:
@@ -9,10 +9,14 @@ Alien::Package::Tgz - an object that represents a tgz package
|
|||||||
package Alien::Package::Tgz;
|
package Alien::Package::Tgz;
|
||||||
use strict;
|
use strict;
|
||||||
use base qw(Alien::Package);
|
use base qw(Alien::Package);
|
||||||
|
use Cwd qw(abs_path);
|
||||||
|
|
||||||
|
my $tarext=qr/\.(?:tgz|tar(?:\.(?:gz|Z|z|bz|bz2))?|taz)$/;
|
||||||
|
|
||||||
=head1 DESCRIPTION
|
=head1 DESCRIPTION
|
||||||
|
|
||||||
This is an object class that represents a tgz package, as used in Slackware.
|
This is an object class that represents a tgz package, as used in Slackware.
|
||||||
|
It also allows conversion of raw tar files.
|
||||||
It is derived from Alien::Package.
|
It is derived from Alien::Package.
|
||||||
|
|
||||||
=head1 CLASS DATA
|
=head1 CLASS DATA
|
||||||
@@ -49,7 +53,7 @@ sub checkfile {
|
|||||||
my $this=shift;
|
my $this=shift;
|
||||||
my $file=shift;
|
my $file=shift;
|
||||||
|
|
||||||
return $file =~ m/.*\.(?:tgz|tar\.(?:gz|Z|z)|taz)$/;
|
return $file =~ m/$tarext$/;
|
||||||
}
|
}
|
||||||
|
|
||||||
=item install
|
=item install
|
||||||
@@ -93,7 +97,7 @@ sub scan {
|
|||||||
my ($basename)=('/'.$file)=~m#^/?.*/(.*?)$#;
|
my ($basename)=('/'.$file)=~m#^/?.*/(.*?)$#;
|
||||||
|
|
||||||
# Strip out any tar extentions.
|
# Strip out any tar extentions.
|
||||||
$basename=~s/\.(tgz|tar\.(gz|Z))$//;
|
$basename=~s/$tarext//;
|
||||||
|
|
||||||
if ($basename=~m/([\w-]+)-([0-9\.?]+).*/) {
|
if ($basename=~m/([\w-]+)-([0-9\.?]+).*/) {
|
||||||
$this->name($1);
|
$this->name($1);
|
||||||
@@ -119,7 +123,7 @@ sub scan {
|
|||||||
# Now figure out the conffiles. Assume anything in etc/ is a
|
# Now figure out the conffiles. Assume anything in etc/ is a
|
||||||
# conffile.
|
# conffile.
|
||||||
my @conffiles;
|
my @conffiles;
|
||||||
open (FILELIST,"tar zvtf $file | grep etc/ |") ||
|
open (FILELIST,"tar vtf $file | grep etc/ |") ||
|
||||||
die "getting filelist: $!";
|
die "getting filelist: $!";
|
||||||
while (<FILELIST>) {
|
while (<FILELIST>) {
|
||||||
# Make sure it's a normal file. This is looking at the
|
# Make sure it's a normal file. This is looking at the
|
||||||
@@ -136,7 +140,7 @@ sub scan {
|
|||||||
# Now get the whole filelist. We have to add leading /'s to the
|
# Now get the whole filelist. We have to add leading /'s to the
|
||||||
# filenames. We have to ignore all files under /install/
|
# filenames. We have to ignore all files under /install/
|
||||||
my @filelist;
|
my @filelist;
|
||||||
open (FILELIST, "tar ztf $file |") ||
|
open (FILELIST, "tar tf $file |") ||
|
||||||
die "getting filelist: $!";
|
die "getting filelist: $!";
|
||||||
while (<FILELIST>) {
|
while (<FILELIST>) {
|
||||||
chomp;
|
chomp;
|
||||||
@@ -148,7 +152,7 @@ sub scan {
|
|||||||
|
|
||||||
# Now get the scripts.
|
# Now get the scripts.
|
||||||
foreach my $script (keys %{scripttrans()}) {
|
foreach my $script (keys %{scripttrans()}) {
|
||||||
$this->$script(scalar $this->runpipe(1, "tar Oxzf $file install/${scripttrans()}{$script} 2>/dev/null"));
|
$this->$script(scalar $this->runpipe(1, "tar Oxf $file install/${scripttrans()}{$script} 2>/dev/null"));
|
||||||
}
|
}
|
||||||
|
|
||||||
return 1;
|
return 1;
|
||||||
@@ -163,9 +167,9 @@ Unpack tgz.
|
|||||||
sub unpack {
|
sub unpack {
|
||||||
my $this=shift;
|
my $this=shift;
|
||||||
$this->SUPER::unpack(@_);
|
$this->SUPER::unpack(@_);
|
||||||
my $file=$this->filename;
|
my $file=abs_path($this->filename);
|
||||||
|
|
||||||
$this->do("cat $file | (cd ".$this->unpacked_tree."; tar zxpf -)")
|
$this->do("cd ".$this->unpacked_tree."; tar xpf $file")
|
||||||
or die "Unpacking of '$file' failed: $!";
|
or die "Unpacking of '$file' failed: $!";
|
||||||
# Delete the install directory that has slackware info in it.
|
# Delete the install directory that has slackware info in it.
|
||||||
$this->do("cd ".$this->unpacked_tree."; rm -rf ./install");
|
$this->do("cd ".$this->unpacked_tree."; rm -rf ./install");
|
||||||
|
|||||||
7
debian/changelog
vendored
7
debian/changelog
vendored
@@ -1,3 +1,10 @@
|
|||||||
|
alien (8.74) UNRELEASED; urgency=low
|
||||||
|
|
||||||
|
* Support bzipped and uncompressed tar files, using tar's auto-compression
|
||||||
|
detection. (Requires gnu tar 1.14.91)
|
||||||
|
|
||||||
|
-- Joey Hess <joeyh@debian.org> Wed, 14 Jan 2009 13:27:12 -0500
|
||||||
|
|
||||||
alien (8.73) unstable; urgency=low
|
alien (8.73) unstable; urgency=low
|
||||||
|
|
||||||
* Fix pkg generation to not include /prototype in all packages.
|
* Fix pkg generation to not include /prototype in all packages.
|
||||||
|
|||||||
Reference in New Issue
Block a user