return $h eq "\3757zXZ";
}
+sub lzmadec {
+ my ($fn) = @_;
+ my $nh;
+ my $pid = open($nh, '-|');
+ return undef unless defined $pid;
+ if (!$pid) {
+ $SIG{'PIPE'} = 'DEFAULT';
+ exec('xzdec', '-dc', $fn);
+ die("xzdec: $!\n");
+ }
+ return $nh;
+}
+
sub query {
my ($handle, %opts) = @_;
if (ref($handle)) {
die("arch pkg query not implemented for file handles\n");
}
if ($handle =~ /\.xz$/ || islzma($handle)) {
- my $nh;
- open($nh, '-|', 'xzdec', '-dc', $handle) || die("$handle: $!\n");
- $handle = $nh;
+ $handle = lzmadec($handle);
}
my $tar = Archive::Tar->new;
my @read = $tar->read($handle, 1, {'filter' => '^\.PKGINFO$', 'limit' => 1});
die("arch pkg query not implemented for file handles\n");
}
if ($handle =~ /\.xz$/ || islzma($handle)) {
- my $nh;
- open($nh, '-|', 'xzdec', '-dc', $handle) || die("$handle: $!\n");
- $handle = $nh;
+ $handle = lzmadec($handle);
}
my $tar = Archive::Tar->new;
my @read = $tar->read($handle, 1, {'filter' => '^\.PKGINFO$', 'limit' => 1});
elif [ "${url:0:7}" == "http://" -o "${url:0:8}" == "https://" -o "${url:0:6}" == "ftp://" -o "${url:0:7}" == "ftps://" ] ; then
cachedir="$(getcachedir "$url")"
local name="$(basename "$url")"
- name=${name/%pkg.tar.?z/arch}
+ name=${name/%.pkg.tar.?z/.arch}
SRC="$cachedir/$name"
else
echo "Invalid url: $url"
cleanup_and_exit 1
;;
esac
+ # downloadpkg modified $SRC, so it has a right name for use
fi
- # downloadpkg modified $SRC, so it has a right name for use
- ln -s "$SRC" "$BUILD_ROOT/.init_b_cache/rpms/$PKG.${SRC##*.}"
+ SRCSUF=${SRC/%.pkg.tar.?z/.arch}
+ ln -s "$SRC" "$BUILD_ROOT/.init_b_cache/rpms/$PKG.${SRCSUF##*.}"
PACKAGES_TO_INSTALL="$PACKAGES_TO_INSTALL $PKG"
done < $RPMLIST