return Build::Rpm::query($handle, %opts) if $do_rpm && $binname =~ /\.d?rpm$/;
return Build::Deb::query($handle, %opts) if $do_deb && $binname =~ /\.deb$/;
return Build::Kiwi::queryiso($handle, %opts) if $do_kiwi && $binname =~ /\.iso$/;
- return Build::Arch::query($handle, %opts) if $do_arch && $binname =~ /\.pkg\.tar(?:\.gz|\.xz)?$/;
+ return Build::Arch::query($handle, %opts) if $do_arch && $binname =~ /\.pkg\.tar(?:\.gz|\.xz|\.zst)?$/;
return Build::Arch::query($handle, %opts) if $do_arch && $binname =~ /\.arch$/;
return undef;
}
return Build::Kiwi::queryhdrmd5(@_) if $do_kiwi && $binname =~ /\.iso$/;
return Build::Kiwi::queryhdrmd5(@_) if $do_kiwi && $binname =~ /\.raw$/;
return Build::Kiwi::queryhdrmd5(@_) if $do_kiwi && $binname =~ /\.raw.install$/;
- return Build::Arch::queryhdrmd5(@_) if $do_arch && $binname =~ /\.pkg\.tar(?:\.gz|\.xz)?$/;
+ return Build::Arch::queryhdrmd5(@_) if $do_arch && $binname =~ /\.pkg\.tar(?:\.gz|\.xz|\.zst)?$/;
return Build::Arch::queryhdrmd5(@_) if $do_arch && $binname =~ /\.arch$/;
return undef;
}
return $h eq "\3757zXZ";
}
+sub iszstd {
+ my ($fn) = @_;
+ local *F;
+ return 0 unless open(F, '<', $fn);
+ my $h;
+ return 0 unless read(F, $h, 4) == 4;
+ close F;
+ return $h eq "(\265\057\375";
+}
+
sub lzmadec {
my ($fn) = @_;
my $nh;
return $nh;
}
+sub zstddec {
+ my ($fn) = @_;
+ my $nh;
+ my $pid = open($nh, '-|');
+ return undef unless defined $pid;
+ if (!$pid) {
+ $SIG{'PIPE'} = 'DEFAULT';
+ #zstd -dc is not accepting symlinks, but zstdcat does.
+ exec('zstdcat', $fn);
+ die("zstdcat $!\n");
+ }
+ return $nh;
+}
+
sub queryvars {
my ($handle) = @_;
if (ref($handle)) {
die("arch pkg query not implemented for file handles\n");
}
- if ($handle =~ /\.xz$/ || islzma($handle)) {
+ if ($handle =~ /\.zst$/ || iszstd($handle)) {
+ $handle = zstddec($handle);
+ } elsif ($handle =~ /\.xz$/ || islzma($handle)) {
$handle = lzmadec($handle);
}
my $tar = Archive::Tar->new;
if (ref($handle)) {
die("arch pkg query not implemented for file handles\n");
}
- if ($handle =~ /\.xz$/ || islzma($handle)) {
+ if ($handle =~ /\.zst$/ || iszstd($handle)) {
+ $handle = zstddec($handle);
+ } elsif ($handle =~ /\.xz$/ || islzma($handle)) {
$handle = lzmadec($handle);
}
my @files;
if (ref($handle)) {
die("arch pkg query not implemented for file handles\n");
}
- if ($handle =~ /\.xz$/ || islzma($handle)) {
+ if ($handle =~ /\.zst$/ || iszstd($handle)) {
+ $handle = zstddec($handle);
+ } elsif ($handle =~ /\.xz$/ || islzma($handle)) {
$handle = lzmadec($handle);
}
my $tar = Archive::Tar->new;
libcrypt-ssleay-perl (>= 0.64-tizen20130308),
binfmt-support,
tizen-qemu-arm-static-2020.06.17
-Recommends: rpm2cpio
+Recommends: rpm2cpio, zstd
Description: A script to build SUSE Linux RPMs
This package provides a script for building RPMs for SUSE Linux
in a chroot environment.
if test "${url:0:7}" == "zypp://" -o "${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.zst/.arch}
name=${name/%.pkg.tar.?z/.arch}
SRC="$cachedir/$name"
else
;;
esac
fi
- SRCSUF=${SRC/%.pkg.tar.?z/.arch}
+ SRCSUF=${SRC/%.pkg.tar.zst/.arch}
+ SRCSUF=${SRCSUF/%.pkg.tar.?z/.arch}
ln -s "$SRC" "$BUILD_ROOT/.init_b_cache/rpms/$PKG.${SRCSUF##*.}"
done < $RPMLIST
rm -f "$BUILD_ROOT"/.init_b_cache/rpmlist.download2
while read PKG SRC ; do
cachepkg="${SRC##*/}"
+ cachepkg="${cachepkg/%.pkg.tar.zst/.arch}"
cachepkg="${cachepkg/%.pkg.tar.?z/.arch}"
if test "$SRC" != "${SRC#zypp://}" ; then
# for zypp packages also look in the zypp cache
cachedir="/var/cache/zypp/packages/${SRC#zypp://}"
cachedir="${cachedir%/*}"
if can_reuse_cached_package "$cachedir/$cachepkg" ; then
- SRCSUF=${SRC/%.pkg.tar.?z/.arch}
+ SRCSUF=${SRC/%.pkg.tar.zst/.arch}
+ SRCSUF=${SRCSUF/%.pkg.tar.?z/.arch}
ln -s "$cachedir/$cachepkg" "$BUILD_ROOT/.init_b_cache/rpms/$PKG.${SRCSUF##*.}"
continue
fi
fi
cachedir="$(getcachedir "$SRC")"
if can_reuse_cached_package "$cachedir/$cachepkg" ; then
- SRCSUF=${SRC/%.pkg.tar.?z/.arch}
+ SRCSUF=${SRC/%.pkg.tar.zst/.arch}
+ SRCSUF=${SRCSUF/%.pkg.tar.?z/.arch}
ln -s "$cachedir/$cachepkg" "$BUILD_ROOT/.init_b_cache/rpms/$PKG.${SRCSUF##*.}"
continue
fi
progress_step PACKAGES_TO_DOWNLOAD
downloadpkg "$SRC"
# downloadpkg modified $SRC, so it has a right name for use
- SRCSUF=${SRC/%.pkg.tar.?z/.arch}
+ SRCSUF=${SRC/%.pkg.tar.zst/.arch}
+ SRCSUF=${SRCSUF/%.pkg.tar.?z/.arch}
ln -s "$SRC" "$BUILD_ROOT/.init_b_cache/rpms/$PKG.${SRCSUF##*.}"
done < "$BUILD_ROOT"/.init_b_cache/rpmlist.download
rm -f "$BUILD_ROOT"/.init_b_cache/rpmlist.download
Recommends: perl(Time::Zone)
Recommends: perl(URI)
Recommends: bsdtar
+Recommends: zstd
%endif
%if 0%{?suse_version} > 1120 || ! 0%{?suse_version}