Sync from SUSE:ALP:Source:Standard:1.0 7zip revision 8dd6a2c8041b4d403bd04af4cef13a1a

This commit is contained in:
Adrian Schröter 2023-08-21 13:20:01 +02:00
commit 1ac87b4959
7 changed files with 630 additions and 0 deletions

23
.gitattributes vendored Normal file
View File

@ -0,0 +1,23 @@
## Default LFS
*.7z filter=lfs diff=lfs merge=lfs -text
*.bsp filter=lfs diff=lfs merge=lfs -text
*.bz2 filter=lfs diff=lfs merge=lfs -text
*.gem filter=lfs diff=lfs merge=lfs -text
*.gz filter=lfs diff=lfs merge=lfs -text
*.jar filter=lfs diff=lfs merge=lfs -text
*.lz filter=lfs diff=lfs merge=lfs -text
*.lzma filter=lfs diff=lfs merge=lfs -text
*.obscpio filter=lfs diff=lfs merge=lfs -text
*.oxt filter=lfs diff=lfs merge=lfs -text
*.pdf filter=lfs diff=lfs merge=lfs -text
*.png filter=lfs diff=lfs merge=lfs -text
*.rpm filter=lfs diff=lfs merge=lfs -text
*.tbz filter=lfs diff=lfs merge=lfs -text
*.tbz2 filter=lfs diff=lfs merge=lfs -text
*.tgz filter=lfs diff=lfs merge=lfs -text
*.ttf filter=lfs diff=lfs merge=lfs -text
*.txz filter=lfs diff=lfs merge=lfs -text
*.whl filter=lfs diff=lfs merge=lfs -text
*.xz filter=lfs diff=lfs merge=lfs -text
*.zip filter=lfs diff=lfs merge=lfs -text
*.zst filter=lfs diff=lfs merge=lfs -text

BIN
7z2301-src.tar.xz (Stored with Git LFS) Normal file

Binary file not shown.

139
7zip.changes Normal file
View File

@ -0,0 +1,139 @@
-------------------------------------------------------------------
Tue Jul 18 02:01:41 UTC 2023 - Linnaea Lavia <linnaea@lavia.moe>
- Enable ARM64 ASM introduced in 23.01
-------------------------------------------------------------------
Wed Jun 21 10:15:05 UTC 2023 - Fabian Vogt <fvogt@suse.com>
- Update to version 23.01:
* 7-Zip now can use new ARM64 filter for compression to 7z and xz archives.
ARM64 filter can increase compression ratio for data containing executable files
compiled for ARM64 (AArch64) architecture.
* Default section size for BCJ2 filter was changed from 64 MiB to 240 MiB. It
can increase compression ratio for executable files larger than 64 MiB.
* UDF: support was improved.
* cpio: support for hard links.
* Some changes and optimizations in WIM creation code.
* When new 7-Zip creates multivolume archive, 7-Zip keeps in open state only
volumes that still can be changed. Previous versions kept all volumes in open
state until the end of the archive creation.
* 7-Zip now can reduce the number of simultaneously open files, when
7-Zip opens, extracts or creates multivolume archive. It allows to avoid the
failures for cases with big number of volumes, bacause there is a limitation for
number of open files allowed for a single program in Linux.
* The bugs were fixed:
* ZIP archives: if multithreaded zip compression was performed with
more than one file to stdout stream (-so switch), 7-zip didn't write "data
descriptor" for some files.
* ext4 archives: 7-Zip couldn't correctly extract symbolic link to directory from ext4 archives.
* HFS and APFS archives: 7-Zip incorrectly decoded uncompressed blocks (64 KiB) in compressed forks.
* Some another bugs were fixed.
- Refresh fix-compatib-with-p7zip.patch
-------------------------------------------------------------------
Mon Dec 12 21:18:30 UTC 2022 - Dirk Müller <dmueller@suse.com>
- build for x86_64 subarchs the same way like for baseline
-------------------------------------------------------------------
Wed Nov 30 10:47:14 UTC 2022 - Danilo Spinella <danilo.spinella@suse.com>
- Enable ASM to increase performance in compression and decompression
bsc#1202197
-------------------------------------------------------------------
Fri Jul 22 21:16:09 UTC 2022 - Dirk Müller <dmueller@suse.com>
- update to 22.01:
* UDF support was improved to UDF version 2.60.
* HFS and APFS support was improved.
-------------------------------------------------------------------
Sun Jul 3 21:01:22 UTC 2022 - Matthias Eliasson <elimat@opensuse.org>
- Update to version 22.00:
* 7-Zip now can extract APFS (Apple File System) images that can be used in DMG files.
* 7-Zip now can create TAR archives in POSIX (pax) tar format with the switches
-ttar -mm=pax or -ttar -mm=posix
* 7-Zip now can store additional file timestamps with high precision (1 ns in Linux)
in tar/pax archives with the following switches:
-ttar -mm=pax -mtp=3 -mtc -mta
* New switches for Linux version for TAR archives:
-snoi : store owner/group ids in archive or set owner/group ids from archive to extracted files.
-snon : store owner/group names in archive
* New -snz switch to propagate Zone.Identifier stream to extracted files (Windows).
* New option "Propagate Zone.Id stream" in Tools/Options/7-Zip menu.
* New "Options" window in "Add to archive" allows to select what metadata must be
included to archive. Also it allows to select new option
"Do not change source files last access time".
* Some bugs were fixed.
-------------------------------------------------------------------
Wed Jan 26 03:16:03 UTC 2022 - Dario Faggioli <dfaggioli@suse.com>
- Fix an incompatibility with p7zip which was breaking some downstreams
(e.g., GNOME's File-Roller). See bsc#1195041
* Add fix-compatib-with-p7zip.patch
-------------------------------------------------------------------
Wed Jan 12 16:45:41 UTC 2022 - Danilo Spinella <danilo.spinella@suse.com>
- Replace p7zip with 7zip
* Add p7zip and p7zip.1
-------------------------------------------------------------------
Mon Jan 3 11:31:10 UTC 2022 - Danilo Spinella <danilo.spinella@suse.com>
- Update to version 21.07:
* The sorting order of files in archives was slightly changed to be more
consistent for cases where the name of some directory is the same as the
prefix part of the name of another directory or file.
* TAR archives created by 7-Zip now are more consistent with archives
created by GNU TAR program.
- Remove unneeded pach remove-rar-handler.patch
- Use the tarball in place of the 7zip archive as Source
-------------------------------------------------------------------
Wed Dec 22 20:48:46 UTC 2021 - Arjen de Korte <suse+build@de-korte.org>
- Extract source archive with bsdtar instead of p7zip
- Fixup line breaks of documentation files
-------------------------------------------------------------------
Tue Dec 21 21:13:09 UTC 2021 - Arjen de Korte <suse+build@de-korte.org>
- update to version 21.06
* Bug in LZMA encoder in file LzmaEnc.c was fixed:
- LzmaEnc_MemEncode(), LzmaEncode() and LzmaCompress() could work
incorrectly, if size value for output buffer is smaller than size
required for all compressed data.
- LzmaEnc_Encode() could work incorrectly, if callback
ISeqOutStream::Write() doesn't write all compressed data.
- NCompress::NLzma::CEncoder::Code() could work incorrectly,
if callback ISequentialOutStream::Write() returns error code.
* Bug in versions 21.00-21.05 was fixed:
7-Zip didn't set attributes of directories during archive extracting.
- update to version 21.04
* 7-Zip now reduces the number of working CPU threads for compression,
if RAM size is not enough for compression with big LZMA2 dictionary.
* 7-Zip now can create and check "file.sha256" and "file.sha1" text
files that contain the list of file names and SHA-1 / SHA-256
checksums in format compatible with sha1sum/sha256sum programs.
- update to version 21.03
* The maximum dictionary size for LZMA/LZMA2 compressing was increased
to 4 GB (3840 MiB).
* Minor speed optimizations in LZMA/LZMA2 compressing.
-------------------------------------------------------------------
Tue Dec 21 00:07:36 UTC 2021 - Jan Engelhardt <jengelh@inai.de>
- Remove more -W flags for the Leap 15.x build to succeed
-------------------------------------------------------------------
Tue Jul 6 14:36:25 UTC 2021 danilo.spinella@suse.com
- Create initial version
- Add remove-rar-handler.patch

120
7zip.spec Normal file
View File

@ -0,0 +1,120 @@
#
# spec file for package 7zip
#
# Copyright (c) 2023 SUSE LLC
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
# upon. The license for this file, and modifications and additions to the
# file, is the same license as for the pristine package itself (unless the
# license for the pristine package is not an Open Source License, in which
# case the license is the MIT License). An "Open Source License" is a
# license that conforms to the Open Source Definition (Version 1.9)
# published by the Open Source Initiative.
# Please submit bugfixes or comments via https://bugs.opensuse.org/
#
%define stripped_version 2301
Name: 7zip
Version: 23.01
Release: 0
Summary: File Archivier
# CPP/7zip/Compress/LzfseDecoder.cpp is under the BSD-3-Clause
# C/Sha1.c and C/Sha256.c are in the public domain
License: BSD-3-Clause AND LGPL-2.1-or-later AND SUSE-Public-Domain
Group: Productivity/Archiving/Compression
URL: https://www.7-zip.org/
Source: https://www.7-zip.org/a/7z%{stripped_version}-src.tar.xz
Source1: p7zip
Source2: p7zip.1
Patch0: fix-compatib-with-p7zip.patch
BuildRequires: dos2unix
BuildRequires: gcc
BuildRequires: gcc-c++
%ifarch x86_64 %ix86 %x86_64
BuildRequires: uasm
%endif
Conflicts: p7zip
Conflicts: p7zip-full
Provides: p7zip = %{version}
Provides: p7zip-full = %{version}
Obsoletes: p7zip < %{version}
Obsoletes: p7zip-full < %{version}
%description
This package contains the 7z command line utility for archiving and
extracting various formats.
%prep
tar xaf %{SOURCE0}
%patch0 -p1
dos2unix DOC/*.txt
# Remove executable perms from docs
chmod -x DOC/*.txt
# Remove -Werror to make build succeed
sed -i 's/-Werror//' CPP/7zip/7zip_gcc.mak
%if 0%{?suse_version} < 1550
# (gcc 7.x) Remove -Waddress-of-packed-member to make build succeed
sed -i -e 's/-Waddress-of-packed-member//' -e 's/-Wcast-align=strict//' -e 's/-Wmissing-attributes//' C/warn_gcc.mak CPP/7zip/warn_gcc.mak
%endif
# Inject CFLAGS
sed -i 's/^ -fPIC/ -fPIC %{optflags}/' CPP/7zip/7zip_gcc.mak
sed -i 's/LFLAGS_ALL = -s/LFLAGS_ALL =/' CPP/7zip/7zip_gcc.mak
%ifarch x86_64 %ix86 %x86_64
sed -i 's/$(CXX) -o $(PROGPATH)/$(CXX) -Wl,-z,noexecstack -o $(PROGPATH)/' CPP/7zip/7zip_gcc.mak
%endif
%build
cd CPP/7zip/Bundles/Alone2
%ifarch x86_64 %x86_64
%make_build -f ../../cmpl_gcc_x64.mak MY_ASM=uasm
%else
%ifarch %ix86
%make_build -f ../../cmpl_gcc_x86.mak MY_ASM=uasm
%else
%ifarch aarch64
%make_build -f ../../cmpl_gcc_arm64.mak MY_ASM=gcc
%else
%make_build -f ../../cmpl_gcc.mak
%endif
%endif
%endif
%install
%ifarch x86_64 %x86_64
install -Dm 755 CPP/7zip/Bundles/Alone2/b/g_x64/7zz %{buildroot}%{_bindir}/7zz
%else
%ifarch %ix86
install -Dm 755 CPP/7zip/Bundles/Alone2/b/g_x86/7zz %{buildroot}%{_bindir}/7zz
%else
%ifarch aarch64
install -Dm 755 CPP/7zip/Bundles/Alone2/b/g_arm64/7zz %{buildroot}%{_bindir}/7zz
%else
install -Dm 755 CPP/7zip/Bundles/Alone2/b/g/7zz %{buildroot}%{_bindir}/7zz
%endif
%endif
%endif
# Create links the executables provided by p7zip
ln -s %{_bindir}/7zz %{buildroot}%{_bindir}/7z
ln -s %{_bindir}/7z %{buildroot}%{_bindir}/7za
ln -s %{_bindir}/7z %{buildroot}%{_bindir}/7zr
# Install p7zip wrapper and its manpage
install -m755 %{SOURCE1} %{buildroot}%{_bindir}/p7zip
install -m644 -Dt %{buildroot}%{_mandir}/man1 %{SOURCE2}
# Remove a mention of the p7zip-rar package that we don't have
sed -i 's/RAR (if the non-free p7zip-rar package is installed)//g' %{buildroot}%{_mandir}/man1/p7zip.1
%files
%license DOC/copying.txt DOC/License.txt
%doc DOC/readme.txt DOC/7zC.txt DOC/Methods.txt DOC/src-history.txt
%{_bindir}/7z
%{_bindir}/7za
%{_bindir}/7zr
%{_bindir}/7zz
%{_bindir}/p7zip
%{_mandir}/man1/p7zip.1%{?ext_man}
%changelog

View File

@ -0,0 +1,41 @@
From: Dario Faggioli <dfaggioli@suse.com>
Date: Wed Jan 26 04:01:09 AM CET 2022
Subject: [PATCH] Console: Avoid terminating on failed password check
File-roller (i.e., GNOME's Archive Manager), which was working fine
with p7zip and p7zip-full, does not work well with 7zip. More specifically,
it is not possible to open or extract a password protected archive, for
which also the list of the files in the archive itself has been hidden.
This seems to happen because now GetPassword_HRESULT() does some kind of
error checking, and depending on the results, cause its calling function
to return with an error, which in turns terminates the 7zz program in
a way that file-roller interpretes as a critical error, and everything
stops.
On the other hand, in p7zip-full, the GetPassword() function wasn't
doing this. There's still a failure, but one that triggers File-roller
to ask the password of the archive, and once that is provided everything
works.
From a CLI perspecvive, nothing changes, and things still work fine and
in the exact same way, no matter whether or not this patch is applied.
Signed-off-by: Dario Faggioli <dfaggioli@suse.com>
---
OpenCallbackConsole.cpp | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
Index: 7zip/CPP/7zip/UI/Console/OpenCallbackConsole.cpp
===================================================================
--- 7zip.orig/CPP/7zip/UI/Console/OpenCallbackConsole.cpp
+++ 7zip/CPP/7zip/UI/Console/OpenCallbackConsole.cpp
@@ -87,7 +87,7 @@ HRESULT COpenCallbackConsole::Open_Crypt
if (!PasswordIsDefined)
{
ClosePercents();
- RINOK(GetPassword_HRESULT(_so, Password))
+ GetPassword_HRESULT(_so, Password);
PasswordIsDefined = true;
}
return StringToBstr(Password, password);

225
p7zip Normal file
View File

@ -0,0 +1,225 @@
#!/bin/sh
# gzip-like CLI wrapper for p7zip
# version 3.0
#
# History
# 2.0 :
# - support for -filename, "file name"
# - p7zip file1 file2 ...
# 3.0 : (robert@debian.org, March 2016)
# - use 7za or 7zr, whichever one is available
# - refactor the script for better readability
# - remove `"$?" != 0 ' checks that do not work with `set -e'
# - use stderr for error reporting
# - add support for -c, -f, -k options
set -e
# detect 7z program to use
prg7z="`which 7za 2>/dev/null`" || \
prg7z="`which 7zr 2>/dev/null`" || \
{ echo "$0: cannot find neither 7za nor 7zr command" >&2; exit 1; }
# global options
f_compress=true
f_keep=false
f_force=false
f_tostdout=false
usage()
{
echo "Usage: $0 [options] [--] [ name ... ]"
echo ""
echo "Options:"
echo " -c --stdout --to-stdout output data to stdout"
echo " -d --decompress --uncompress decompress file"
echo " -f --force do not ask questions"
echo " -k --keep keep original file"
echo " -h --help print this help"
echo " -- treat subsequent arguments as file"
echo " names, even if they start with a dash"
echo ""
exit 0
}
has_7z_suffix()
{
case "$1" in
*.7z)
return 0
;;
*)
return 1
;;
esac;
}
make_tmp_file()
{
P7ZIPTMP="${TMP:-/tmp}"
mktemp "${P7ZIPTMP}/p7zip.XXXXXXXX"
}
check_not_a_tty()
{
if ! ${f_force} && ${f_compress} && tty <&1 >/dev/null ; then
echo "$0: compressed data not written to a terminal." >&2
echo "For help, type: $0 -h" >&2
exit 1
fi
}
compress_file()
{
file="$1"
if ! ${f_force} && has_7z_suffix "${file}"; then
echo "$0: $file already has the 7z suffix" >&2
exit 1
fi
# compress to stdout via temporary file
if ${f_tostdout}; then
check_not_a_tty
tmp="`make_tmp_file`"
trap "rm -f -- ${tmp}" 0
rm -f -- "${tmp}"
"${prg7z}" a -si -- "${tmp}" < "${file}" >/dev/null && cat "${tmp}" || \
{ echo "$0: failed to compress data to temporary file" >&2; exit 1; }
rm -f -- "${tmp}"
return 0
fi
# compress to a file
if ! ${f_force} && [ -e "${file}.7z" ]; then
echo "$0: destination file ${file}.7z already exists" >&2
exit 1
fi
rm -f -- "${file}.7z"
flags=""
${f_keep} || flags="$flags -sdel"
! ${f_force} || flags="$flags -y"
"${prg7z}" a $flags -- "${file}.7z" "${file}" || { rm -f -- "${file}.7z"; exit 1; }
}
decompress_file()
{
file="$1"
has_7z_suffix "${file}" || { echo "$0: ${file}: unknown suffix" >&2; exit 1; }
# decompress to stdout
if ${f_tostdout}; then
# The following `| cat' pipe shouldn't be needed, however it is here to
# trick 7z not to complain about writing data to terminal.
"${prg7z}" x -so -- "${file}" | cat || exit 1
return 0;
fi
flags=""
! ${f_force} || flags="$flags -y"
"${prg7z}" x $flags -- "${file}" || exit 1
# remove original file unless the archive contains more than one file
if ! ${f_keep} && "${prg7z}" l -- "${file}" 2>/dev/null | grep -q '^1 file,' 2>/dev/null; then
rm -f -- "${file}"
fi
}
process_file()
{
file="$1"
# check if file exists and is readable
[ -r "${file}" ] || { echo "$0: cannot read ${file}" >&2; exit 1; }
if ${f_compress}; then
compress_file "${file}"
else
decompress_file "${file}"
fi
}
process_stdin()
{
check_not_a_tty
tmp="`make_tmp_file`"
trap "rm -f -- ${tmp}" 0
if ${f_compress}; then
rm -f -- "${tmp}"
"${prg7z}" a -si -- "${tmp}" >/dev/null && cat -- "${tmp}" || exit 1
else # decompress
cat > "${tmp}"
# The following `| cat' pipe shouldn't be needed, however it is here to
# trick 7z not to complain about writing data to terminal.
"${prg7z}" x -so -- "${tmp}" | cat || exit 1
fi
rm -f -- "${tmp}"
}
## MAIN
# files and flags
while [ "$#" != "0" ] ; do
case "$1" in
-c|--stdout|--to-stdout)
f_tostdout=true
;;
-d|--decompress|--uncompress)
f_compress=false # decompressing
;;
-f|--force)
f_force=true
;;
-h|--help)
usage
;;
-k|--keep)
f_keep=true
;;
--)
shift
break
;;
-*)
echo "$0: ignoring unknown option $1" >&2
;;
*)
break
;;
esac
shift
done
# make sure they're present, before we screw up
for i in mktemp rm cat tty grep; do
if ! which $i >/dev/null ; then
echo "$0: $i: command not found" >&2
exit 1
fi
done
if [ "$#" = 0 ]; then
# compressing/decompressing using standard I/O
process_stdin
exit 0
fi
# only files now
while [ "$#" != "0" ] ; do
process_file "$1"
shift
done
exit 0

79
p7zip.1 Normal file
View File

@ -0,0 +1,79 @@
.TH p7zip 1 "March 6th, 2016" "7-Zip"
.SH NAME
p7zip \- Wrapper on 7-Zip file archiver with high compression ratio
.SH SYNOPSIS
.B p7zip
.RB [ \-c | \-\-stdout | \-\-to\-stdout ]
.RB [ \-d | \-\-decompress | \-\-uncompress ]
.RB [ \-f | \-\-force ]
.RB [ \-h | \-\-help ]
.RB [ \-k | \-\-keep ]
.RB [ \-\- ]
.RI [ "file ..." ]
.SH DESCRIPTION
7-Zip is a file archiver supporting 7z (that implements LZMA compression algorithm
featuring very high compression ratio), LZMA2, XZ, ZIP, Zip64, CAB,
RAR (if the non-free p7zip-rar package is installed), ARJ, GZIP, BZIP2, TAR, CPIO, RPM, ISO,
most filesystem images and DEB formats.
Compression ratio in the new 7z format is 30-50% better than ratio in ZIP format.
.PP
.B p7zip
is a gzip-like CLI wrapper script for 7-Zip, and handles only the 7z format (the native
format of 7-Zip), internally executing either
.BR 7za (1)
or
.BR 7zr (1)
command.
.PP
With no switches passed in the command line, each given
.I file
argument is compressed into
.IR file.7z ,
and then removed.
.PP
With the
.B \-d
switch each passed
.I file
needs to end with the
.I .7z
extension and is decompressed. After the
decompression the original
.I file
is removed unless it contained more than one archived file.
.PP
When used without any
.I file
argument,
.BR p7zip
reads data from the standard input and compresses (or decompresses in case of
.BR \-d )
it into the standard output.
.SH SWITCHES
.TP
.BR \-c ", " \-\-stdout ", " \-\-to\-stdout
Write output on standard output.
.TP
.BR \-d ", " \-\-decompress ", " \-\-uncompress
Decompress file.
.TP
.BR \-f ", " \-\-force
Skip some checks and force compression or decompression.
.TP
.BR \-h ", " \--help
Print usage.
.TP
.BR \-k ", " \-\-keep
Do not delete input file.
.TP
.B \-\-
Treat all subsequent arguments as file names, even if they start with a dash.
.SH "SEE ALSO"
.BR 7z (1),
.BR 7za (1),
.BR 7zr (1),
.BR bzip2 (1),
.BR gzip (1),
.BR zip (1)
.SH AUTHOR
Written for Debian by Mohammed Adnene Trojette. Updated by Robert Luberda.