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 {
my $this=shift;
my $exitcode=$?;
return if (! defined $this->unpacked_tree || $this->unpacked_tree eq '');
# This should never happen, but it pays to check.
if ($this->unpacked_tree eq '/') {
@@ -345,6 +347,8 @@ sub DESTROY {
$this->do('rm', '-rf', $this->unpacked_tree)
or die "unable to delete temporary directory '".$this->unpacked_tree."': $!";
$this->unpacked_tree('');
$?=$exitcode;
}
=item AUTOLOAD

View File

@@ -491,10 +491,14 @@ sub build {
chdir $this->unpacked_tree;
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;
}
chdir "..";
return $this->name."_".$this->version."-".$this->release."_".$this->arch.".deb";
}

View File

@@ -159,7 +159,13 @@ sub unpack {
$this->SUPER::unpack(@_);
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";
# 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
# reasonable.
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";
while (<RPMLIST>) {
chomp;
@@ -265,15 +271,20 @@ sub unpack {
}
$gid=0;
}
if (defined($owninfo{$file}) && ($mode & 07000 > 0)) {
if (defined($owninfo{$file}) && (($mode & 07000) > 0)) {
$modeinfo{$file} = sprintf "%lo", $mode;
}
if ($> == 0) {
$this->do("chown", "$uid:$gid", "$workdir/$file")
|| die "failed chowning $file to $uid\:$gid\: $!";
# 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) {
$this->do("chown", "$uid:$gid", "$workdir/$file")
|| die "failed chowning $file to $uid\:$gid\: $!";
}
$this->do("chmod", sprintf("%lo", $mode), "$workdir/$file")
|| die "failed changing mode of $file to $mode\: $!";
}
$this->do("chmod", sprintf("%lo", $mode), "$workdir/$file")
|| die "failed changing mode of $file to $mode\: $!";
}
$this->owninfo(\%owninfo);
$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
* Support querying rpm LICENSE field. (Alexey Khoroshilov)

4
debian/control vendored
View File

@@ -3,7 +3,7 @@ Section: admin
Priority: optional
Build-Depends: debhelper (>= 7.0.50)
Maintainer: Joey Hess <joeyh@debian.org>
Standards-Version: 3.8.3
Standards-Version: 3.8.4
Vcs-Git: git://git.kitenet.net/alien
Homepage: http://kitenet.net/~joey/code/alien/
@@ -11,7 +11,7 @@ Package: alien
Architecture: all
Section: admin
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
Alien allows you to convert LSB, Red Hat, Stampede and Slackware Packages
into Debian packages, which can be installed with dpkg.