* Deal with rpms that relocate ie, /usr into /usr/local, and don't

try to move /usr into /usr/local in this case. Closes: #470905
This commit is contained in:
Joey Hess
2008-03-14 13:35:41 -04:00
parent 3c8631f8fd
commit a73ef93ff9
2 changed files with 34 additions and 12 deletions

View File

@@ -187,6 +187,8 @@ sub unpack {
# #
# Test to see if the package contains the prefix directory already. # Test to see if the package contains the prefix directory already.
if (defined $this->prefixes && ! -e "$workdir/".$this->prefixes) { if (defined $this->prefixes && ! -e "$workdir/".$this->prefixes) {
my $relocate=1;
# Get the files to move. # Get the files to move.
my @filelist=glob("$workdir/*"); my @filelist=glob("$workdir/*");
@@ -195,9 +197,21 @@ sub unpack {
foreach (split m:/:, $this->prefixes) { foreach (split m:/:, $this->prefixes) {
if ($_ ne '') { # this keeps us from using anything but relative paths. if ($_ ne '') { # this keeps us from using anything but relative paths.
$collect.="/$_"; $collect.="/$_";
if (-d $collect) {
# The package contains a parent
# directory of the relocation
# directory. Since it's impossible
# to move a parent directory into
# its child, bail out and do
# nothing.
$relocate=0;
last;
}
$this->do("mkdir", $collect) || die "unable to mkdir $collect: $!"; $this->do("mkdir", $collect) || die "unable to mkdir $collect: $!";
} }
} }
if ($relocate) {
# Now move all files in the package to the directory we made. # Now move all files in the package to the directory we made.
if (@filelist) { if (@filelist) {
$this->do("mv", @filelist, "$workdir/".$this->prefixes) $this->do("mv", @filelist, "$workdir/".$this->prefixes)
@@ -212,6 +226,7 @@ sub unpack {
} }
$this->conffiles([@cf]); $this->conffiles([@cf]);
} }
}
# rpm files have two sets of permissions; the set in the cpio # rpm files have two sets of permissions; the set in the cpio
# archive, and the set in the control data; which override them. # archive, and the set in the control data; which override them.

7
debian/changelog vendored
View File

@@ -1,3 +1,10 @@
alien (8.71) unstable; urgency=low
* Deal with rpms that relocate ie, /usr into /usr/local, and don't
try to move /usr into /usr/local in this case. Closes: #470905
-- Joey Hess <joeyh@debian.org> Fri, 14 Mar 2008 13:35:33 -0400
alien (8.70) unstable; urgency=low alien (8.70) unstable; urgency=low
* Extract prefixes field before extracting scripts so that * Extract prefixes field before extracting scripts so that