6 Commits
8.80 ... 8.81

Author SHA1 Message Date
Joey Hess
574490fb79 releasing version 8.81 2010-05-17 21:02:47 -04:00
Joey Hess
e7e9f10486 Support RPMs containing ghost files.
(Patch by Ben Webb, who would get his patches applied quicker if he actually communicated them to the program's author.)
2010-05-17 20:54:30 -04:00
Joey Hess
a320ae144c Fix precedence problem that prevented alien from preserving permissions of suid/sgid binaries that are not owned by root.
(Patch by Duane Waddle, on a bug tracking system I don't frequent, that was
about the "expire" it 4 days from now. We got lucky Duane, but please use
the Debian BTS next time!)
2010-05-17 20:48:54 -04:00
Joey Hess
f6529d9be0 Suggest lzma. If not installed, alien will still fail to decompress RPMs using it, but will support most rpms, which are not. 2010-05-17 20:27:12 -04:00
Joey Hess
38bf42863d Support extracting lzma compressed RPMs. (Patch by unnamed person on some bug tracking system I don't frequent.) 2010-05-17 20:24:19 -04:00
Joey Hess
b4bdd3818d Avoid uninitialized value warning when debian/rules fails to run due to alien being run in a noexec directory. Closes: #579216
* Avoid uninitialized value warning when debian/rules fails to run
  due to alien being run in a noexec directory. Closes: #579216
* Prevent DESTROY stomping on alien's exit code sometimes.
2010-04-28 11:30:44 -04:00
5 changed files with 52 additions and 13 deletions

View File

@@ -331,6 +331,8 @@ package was unpacked, it is time now to wipe out the temporary directory.
sub DESTROY { sub DESTROY {
my $this=shift; my $this=shift;
my $exitcode=$?;
return if (! defined $this->unpacked_tree || $this->unpacked_tree eq ''); return if (! defined $this->unpacked_tree || $this->unpacked_tree eq '');
# This should never happen, but it pays to check. # This should never happen, but it pays to check.
if ($this->unpacked_tree eq '/') { if ($this->unpacked_tree eq '/') {
@@ -345,6 +347,8 @@ sub DESTROY {
$this->do('rm', '-rf', $this->unpacked_tree) $this->do('rm', '-rf', $this->unpacked_tree)
or die "unable to delete temporary directory '".$this->unpacked_tree."': $!"; or die "unable to delete temporary directory '".$this->unpacked_tree."': $!";
$this->unpacked_tree(''); $this->unpacked_tree('');
$?=$exitcode;
} }
=item AUTOLOAD =item AUTOLOAD

View File

@@ -491,10 +491,14 @@ sub build {
chdir $this->unpacked_tree; chdir $this->unpacked_tree;
my $log=$this->runpipe(1, "debian/rules binary 2>&1"); my $log=$this->runpipe(1, "debian/rules binary 2>&1");
if ($?) { chdir "..";
my $err=$?;
if ($err) {
if (! defined $log) {
die "Package build failed; could not run generated debian/rules file.\n";
}
die "Package build failed. Here's the log:\n", $log; die "Package build failed. Here's the log:\n", $log;
} }
chdir "..";
return $this->name."_".$this->version."-".$this->release."_".$this->arch.".deb"; return $this->name."_".$this->version."-".$this->release."_".$this->arch.".deb";
} }

View File

@@ -159,7 +159,13 @@ sub unpack {
$this->SUPER::unpack(@_); $this->SUPER::unpack(@_);
my $workdir=$this->unpacked_tree; my $workdir=$this->unpacked_tree;
$this->do("rpm2cpio ".$this->filename." | (cd $workdir; cpio --extract --make-directories --no-absolute-filenames --preserve-modification-time) 2>&1") # Check if we need to use lzma to uncompress the cpio archive
my $decomp='';
if ($this->do("rpm2cpio ".$this->filename." | lzma -t -q > /dev/null 2>&1")) {
$decomp = 'lzma -d -q |';
}
$this->do("rpm2cpio ".$this->filename." | (cd $workdir; $decomp cpio --extract --make-directories --no-absolute-filenames --preserve-modification-time) 2>&1")
or die "Unpacking of '".$this->filename."' failed"; or die "Unpacking of '".$this->filename."' failed";
# cpio does not necessarily store all parent directories in an # cpio does not necessarily store all parent directories in an
@@ -168,7 +174,7 @@ sub unpack {
# Find those directories and make them mode 755, which is more # Find those directories and make them mode 755, which is more
# reasonable. # reasonable.
my %seenfiles; my %seenfiles;
open (RPMLIST, "rpm2cpio ".$this->filename." | cpio -it --quiet |") open (RPMLIST, "rpm2cpio ".$this->filename." | $decomp cpio -it --quiet |")
or die "File list of '".$this->filename."' failed"; or die "File list of '".$this->filename."' failed";
while (<RPMLIST>) { while (<RPMLIST>) {
chomp; chomp;
@@ -265,9 +271,13 @@ sub unpack {
} }
$gid=0; $gid=0;
} }
if (defined($owninfo{$file}) && ($mode & 07000 > 0)) { if (defined($owninfo{$file}) && (($mode & 07000) > 0)) {
$modeinfo{$file} = sprintf "%lo", $mode; $modeinfo{$file} = sprintf "%lo", $mode;
} }
# Note that ghost files exist in the metadata but not
# in the cpio archive, so check that the file exists
# before trying to access it
if (-e "$workdir/$file") {
if ($> == 0) { if ($> == 0) {
$this->do("chown", "$uid:$gid", "$workdir/$file") $this->do("chown", "$uid:$gid", "$workdir/$file")
|| die "failed chowning $file to $uid\:$gid\: $!"; || die "failed chowning $file to $uid\:$gid\: $!";
@@ -275,6 +285,7 @@ sub unpack {
$this->do("chmod", sprintf("%lo", $mode), "$workdir/$file") $this->do("chmod", sprintf("%lo", $mode), "$workdir/$file")
|| die "failed changing mode of $file to $mode\: $!"; || die "failed changing mode of $file to $mode\: $!";
} }
}
$this->owninfo(\%owninfo); $this->owninfo(\%owninfo);
$this->modeinfo(\%modeinfo); $this->modeinfo(\%modeinfo);

20
debian/changelog vendored
View File

@@ -1,3 +1,23 @@
alien (8.81) unstable; urgency=low
* Avoid uninitialized value warning when debian/rules fails to run
due to alien being run in a noexec directory. Closes: #579216
* Prevent DESTROY stomping on alien's exit code sometimes.
* Support extracting lzma compressed RPMs.
(Patch by unnamed person on some bug tracking system I don't frequent.)
* Suggest lzma. If not installed, alien will still fail to decompress
RPMs using it, but will support most rpms, which are not.
* Fix precedence problem that prevented alien from preserving permissions
of suid/sgid binaries that are not owned by root.
(Patch by Duane Waddle, on a bug tracking system I don't frequent, that
was about the "expire" it 4 days from now. We got lucky Duane, but please
use the Debian BTS next time!)
* Support RPMs containing ghost files.
(Patch by Ben Webb, who would get his patches applied quicker if he
actually communicated them to the program's author.)
-- Joey Hess <joeyh@debian.org> Mon, 17 May 2010 20:56:59 -0400
alien (8.80) unstable; urgency=low alien (8.80) unstable; urgency=low
* Support querying rpm LICENSE field. (Alexey Khoroshilov) * Support querying rpm LICENSE field. (Alexey Khoroshilov)

4
debian/control vendored
View File

@@ -3,7 +3,7 @@ Section: admin
Priority: optional Priority: optional
Build-Depends: debhelper (>= 7.0.50) Build-Depends: debhelper (>= 7.0.50)
Maintainer: Joey Hess <joeyh@debian.org> Maintainer: Joey Hess <joeyh@debian.org>
Standards-Version: 3.8.3 Standards-Version: 3.8.4
Vcs-Git: git://git.kitenet.net/alien Vcs-Git: git://git.kitenet.net/alien
Homepage: http://kitenet.net/~joey/code/alien/ Homepage: http://kitenet.net/~joey/code/alien/
@@ -11,7 +11,7 @@ Package: alien
Architecture: all Architecture: all
Section: admin Section: admin
Depends: debhelper (>= 3), ${misc:Depends}, ${perl:Depends}, rpm (>= 2.4.4-2), dpkg-dev, make, cpio, rpm2cpio Depends: debhelper (>= 3), ${misc:Depends}, ${perl:Depends}, rpm (>= 2.4.4-2), dpkg-dev, make, cpio, rpm2cpio
Suggests: patch, bzip2, lsb-rpm, lintian Suggests: patch, bzip2, lsb-rpm, lintian, lzma
Description: convert and install rpm and other packages Description: convert and install rpm and other packages
Alien allows you to convert LSB, Red Hat, Stampede and Slackware Packages Alien allows you to convert LSB, Red Hat, Stampede and Slackware Packages
into Debian packages, which can be installed with dpkg. into Debian packages, which can be installed with dpkg.