Compare commits

..

No commits in common. "rawhide" and "f41" have entirely different histories.

9 changed files with 164 additions and 218 deletions

4
.gitignore vendored
View file

@ -36,7 +36,3 @@
/zip2-2.6.1-filtered.tar.gz
/zip-3.0.0.crate
/zip2-3.0.0-filtered.tar.gz
/zip-6.0.0.crate
/zip2-6.0.0-filtered.tar.gz
/zip-7.0.0.crate
/zip2-7.0.0-filtered.tar.gz

View file

@ -21,12 +21,6 @@ FORGEURL='https://github.com/zip-rs/zip2'
# - lin-ub_iwd-v11.zip:
# LICENSE.lin-ub_iwd-v11.zip.txt clearly shows that this is at *best* not
# under a license acceptable in Fedora.
# - omni.ja:
# This is a Firefox application resource bundle,
# https://udn.realityripple.com/docs/Mozilla/About_omni.ja_(formerly_omni.jar).
# It is very likely that everything in it is properly licensed for Fedora,
# but it is complex to audit, and we would rather not do all that work to
# confirm its OK when the alternative is just disabling a single test.
# - pandoc_soft_links.zip:
# Contains a copy of pandoc 3.2 compiled for aarch64: pandoc itself is
# open-source, but who can say what was linked into it? The complete list of
@ -34,67 +28,27 @@ FORGEURL='https://github.com/zip-rs/zip2'
OK_FILES="$(grep -vE '^(#|$)' <<EOF
# Contents are trivial: symlinks, zero-bytes files, sample text files
# containing only a few words, etc.
#
# From the source for the applicable tests, the password is "helloworld":
aes_archive.zip
comment_garbage.zip
data_descriptor.zip
extended_timestamp.zip
extended_timestamp_bad.zip
files_and_dirs.zip
linux-7z.zip
mimetype.zip
misaligned_comment.zip
non_utf8.zip
ntfs.zip
ppmd.zip
symlink.zip
windows-7zip.zip
xz.zip
zip64_demo.zip
zip64_magic_in_filename_1.zip
zip64_magic_in_filename_2.zip
zip64_magic_in_filename_4.zip
zip64_magic_in_filename_5.zip
# These are derived from the Project Gutenberg text of Shakespeares Hamlet,
# https://www.gutenberg.org/cache/epub/1524/pg1524.txt. Both the play and the
# print edition upon which the text is based are old enough to be unprotected
# by copyright in the US, and probably worldwide. Fedora Legal has determined
# that the “Project Gutenberg License” is “not a license” and content that is
# actually in the public domain can be treated as such,
# https://gitlab.com/fedora/legal/fedora-license-data/-/issues/676.
legacy/implode_hamlet_2048.out
legacy/implode_hamlet_256.bin
legacy/implode_hamlet_256.out
legacy/implode.zip
legacy/reduce_hamlet_2048.bin
legacy/reduce_zero_reduced.bin
legacy/reduce.zip
legacy/shrink.zip
# The interesting part here is the file binary.wmv, which is a bit over a
# minute of spoken-word audio from some kind of talk or lecture. Upstream
# claims (via folder/LICENSE.binary.wmv.txt) that the license is MIT. The text
# file first.txt is taken from Project Gutenberg text of Shakespeares Hamlet,
# discussed above.
deflate64.zip
folder/LICENSE.binary.wmv.txt
folder/binary.wmv
folder/first.txt
lzma.zip
# These dont unzip with the "unzip" tool or the "7z" tool, so they are
# difficult to audit, but their sizes are only from a few dozen to a few
# hundred bytes, so we assume their contents are very likely to be
# unproblematic.
#
# These dont unzip with the "unzip" tool, so they are difficult to audit, but
# their sizes are only from a few dozen to a few hundred bytes, so we assume
# their contents are very likely to be unproblematic.
deflate64_issue_25.zip
ignore_encryption_flag.zip
invalid_cde_number_of_files_allocation_greater_offset.zip
invalid_cde_number_of_files_allocation_smaller_offset.zip
invalid_offset.zip
invalid_offset2.zip
invalid_offset.zip
raw_deflate64_index_out_of_bounds.zip
zip64_magic_in_filename_3.zip
EOF
@ -149,7 +103,6 @@ cp -lrp "${TARDIR}/tests/data" data_unfiltered
find "${TARDIR}/tests/data" -type f -delete
echo "${OK_FILES}" | while read -r fn
do
mkdir -p "${TARDIR}/tests/data/$(dirname "${fn}")"
mv "data_unfiltered/${fn}" "${TARDIR}/tests/data/${fn}"
done
# https://www.gnu.org/software/tar/manual/html_section/Reproducibility.html

View file

@ -1,11 +1,11 @@
# Generated by rust2rpm 28
# Generated by rust2rpm 27
%bcond check 1
%global debug_package %{nil}
%global crate zip
Name: rust-zip
Version: 7.0.0
Version: 3.0.0
Release: %autorelease
Summary: Library to support the reading and writing of zip files
@ -23,29 +23,17 @@ Source11: get_test_data.sh
# Automatically generated patch to strip dependencies and normalize metadata
Patch: zip-fix-metadata-auto.diff
# Manually created patch for downstream crate metadata changes
# * Drop unused benchmark-only / example-only dev-dependencies
# * Remove the wasm_js feature from the getrandom dev-dependency. Our
# rust-getrandom does not provide this feature; see also “Unconditional use of
# getrandoms wasm_js feature is counter to upstream guidance,”
# https://github.com/zip-rs/zip2/issues/336. Upstream fixed the issue for the
# dependency since 4.3.0, but not yet for the dev-dependency.
# * Patch out the nt-time features; rust-nt-time not yet packaged
# * Patch out ppmd support, even though it is in the default features. While the
# README.md for the ppmd-rust crate says “The code in this crate is in the
# public domain as the original code by their authors,” Cargo.toml lists the
# license as CC0-1.0, which is not precisely equivalent to the public-domain
# declaration in the README and is not-allowed for code in Fedora.
# * Patch out the deflate-flate2-zlib-ng-compat feature, which requires
# flate2/zlib-ng-compat, not packaged.
# * Unpin generic-array; see https://github.com/zip-rs/zip2/pull/458 for the
# upstream rationale, but we cannot use an old version and are not so
# concerned about deprecation warnings anyway.
# * Update constant_time_eq from 0.3.1 to 0.4.2. Downstream-only for MSRV
# reasons.
# * drop unused benchmark-only / example-only dev-dependencies
# * Remove the wasm_js feature from the getrandom dependency for the getrandom
# feature, and from the getrandom dev-dependency. Our rust-getrandom does not
# provide this feature; see also “Unconditional use of getrandoms wasm_js
# feature is counter to upstream guidance,”
# https://github.com/zip-rs/zip2/issues/336.
# * patch out the nt-time features; rust-nt-time not yet packaged
Patch: zip-fix-metadata.diff
# * Downstream-only: patch out tests that would need omitted test files to
# compile
Patch10: zip-6.0.0-omitted-test-files.patch
Patch10: zip-3.0.0-omitted-test-files.patch
BuildRequires: cargo-rpm-macros >= 24
@ -111,6 +99,18 @@ use the "_deflate-any" feature of the "%{crate}" crate.
%files -n %{name}+_deflate-any-devel
%ghost %{crate_instdir}/Cargo.toml
%package -n %{name}+aes-devel
Summary: %{summary}
BuildArch: noarch
%description -n %{name}+aes-devel %{_description}
This package contains library source intended for building other packages which
use the "aes" feature of the "%{crate}" crate.
%files -n %{name}+aes-devel
%ghost %{crate_instdir}/Cargo.toml
%package -n %{name}+aes-crypto-devel
Summary: %{summary}
BuildArch: noarch
@ -123,18 +123,6 @@ use the "aes-crypto" feature of the "%{crate}" crate.
%files -n %{name}+aes-crypto-devel
%ghost %{crate_instdir}/Cargo.toml
%package -n %{name}+bitstream-io-devel
Summary: %{summary}
BuildArch: noarch
%description -n %{name}+bitstream-io-devel %{_description}
This package contains library source intended for building other packages which
use the "bitstream-io" feature of the "%{crate}" crate.
%files -n %{name}+bitstream-io-devel
%ghost %{crate_instdir}/Cargo.toml
%package -n %{name}+bzip2-devel
Summary: %{summary}
BuildArch: noarch
@ -159,6 +147,18 @@ use the "chrono" feature of the "%{crate}" crate.
%files -n %{name}+chrono-devel
%ghost %{crate_instdir}/Cargo.toml
%package -n %{name}+constant_time_eq-devel
Summary: %{summary}
BuildArch: noarch
%description -n %{name}+constant_time_eq-devel %{_description}
This package contains library source intended for building other packages which
use the "constant_time_eq" feature of the "%{crate}" crate.
%files -n %{name}+constant_time_eq-devel
%ghost %{crate_instdir}/Cargo.toml
%package -n %{name}+deflate-devel
Summary: %{summary}
BuildArch: noarch
@ -195,18 +195,6 @@ use the "deflate-flate2-zlib" feature of the "%{crate}" crate.
%files -n %{name}+deflate-flate2-zlib-devel
%ghost %{crate_instdir}/Cargo.toml
%package -n %{name}+deflate-flate2-zlib-ng-devel
Summary: %{summary}
BuildArch: noarch
%description -n %{name}+deflate-flate2-zlib-ng-devel %{_description}
This package contains library source intended for building other packages which
use the "deflate-flate2-zlib-ng" feature of the "%{crate}" crate.
%files -n %{name}+deflate-flate2-zlib-ng-devel
%ghost %{crate_instdir}/Cargo.toml
%package -n %{name}+deflate-flate2-zlib-rs-devel
Summary: %{summary}
BuildArch: noarch
@ -243,6 +231,30 @@ use the "deflate64" feature of the "%{crate}" crate.
%files -n %{name}+deflate64-devel
%ghost %{crate_instdir}/Cargo.toml
%package -n %{name}+getrandom-devel
Summary: %{summary}
BuildArch: noarch
%description -n %{name}+getrandom-devel %{_description}
This package contains library source intended for building other packages which
use the "getrandom" feature of the "%{crate}" crate.
%files -n %{name}+getrandom-devel
%ghost %{crate_instdir}/Cargo.toml
%package -n %{name}+hmac-devel
Summary: %{summary}
BuildArch: noarch
%description -n %{name}+hmac-devel %{_description}
This package contains library source intended for building other packages which
use the "hmac" feature of the "%{crate}" crate.
%files -n %{name}+hmac-devel
%ghost %{crate_instdir}/Cargo.toml
%package -n %{name}+jiff-02-devel
Summary: %{summary}
BuildArch: noarch
@ -255,18 +267,6 @@ use the "jiff-02" feature of the "%{crate}" crate.
%files -n %{name}+jiff-02-devel
%ghost %{crate_instdir}/Cargo.toml
%package -n %{name}+legacy-zip-devel
Summary: %{summary}
BuildArch: noarch
%description -n %{name}+legacy-zip-devel %{_description}
This package contains library source intended for building other packages which
use the "legacy-zip" feature of the "%{crate}" crate.
%files -n %{name}+legacy-zip-devel
%ghost %{crate_instdir}/Cargo.toml
%package -n %{name}+lzma-devel
Summary: %{summary}
BuildArch: noarch
@ -279,6 +279,42 @@ use the "lzma" feature of the "%{crate}" crate.
%files -n %{name}+lzma-devel
%ghost %{crate_instdir}/Cargo.toml
%package -n %{name}+lzma-rs-devel
Summary: %{summary}
BuildArch: noarch
%description -n %{name}+lzma-rs-devel %{_description}
This package contains library source intended for building other packages which
use the "lzma-rs" feature of the "%{crate}" crate.
%files -n %{name}+lzma-rs-devel
%ghost %{crate_instdir}/Cargo.toml
%package -n %{name}+pbkdf2-devel
Summary: %{summary}
BuildArch: noarch
%description -n %{name}+pbkdf2-devel %{_description}
This package contains library source intended for building other packages which
use the "pbkdf2" feature of the "%{crate}" crate.
%files -n %{name}+pbkdf2-devel
%ghost %{crate_instdir}/Cargo.toml
%package -n %{name}+sha1-devel
Summary: %{summary}
BuildArch: noarch
%description -n %{name}+sha1-devel %{_description}
This package contains library source intended for building other packages which
use the "sha1" feature of the "%{crate}" crate.
%files -n %{name}+sha1-devel
%ghost %{crate_instdir}/Cargo.toml
%package -n %{name}+time-devel
Summary: %{summary}
BuildArch: noarch
@ -315,6 +351,30 @@ use the "xz" feature of the "%{crate}" crate.
%files -n %{name}+xz-devel
%ghost %{crate_instdir}/Cargo.toml
%package -n %{name}+zeroize-devel
Summary: %{summary}
BuildArch: noarch
%description -n %{name}+zeroize-devel %{_description}
This package contains library source intended for building other packages which
use the "zeroize" feature of the "%{crate}" crate.
%files -n %{name}+zeroize-devel
%ghost %{crate_instdir}/Cargo.toml
%package -n %{name}+zopfli-devel
Summary: %{summary}
BuildArch: noarch
%description -n %{name}+zopfli-devel %{_description}
This package contains library source intended for building other packages which
use the "zopfli" feature of the "%{crate}" crate.
%files -n %{name}+zopfli-devel
%ghost %{crate_instdir}/Cargo.toml
%package -n %{name}+zstd-devel
Summary: %{summary}
BuildArch: noarch
@ -344,6 +404,7 @@ use the "zstd" feature of the "%{crate}" crate.
%check
# Extract test data (only) from the GitHub archive
tar -xzvf '%{SOURCE10}' --strip-components=1 'zip2-%{version}/tests/data/'
cp -vp '%{SOURCE11}' tests/data/
%cargo_test -a
%endif

View file

@ -1,34 +1,14 @@
[package]
cargo-toml-patch-comments = [
"Drop unused benchmark-only / example-only dev-dependencies",
"drop unused benchmark-only / example-only dev-dependencies",
"""\
Remove the wasm_js feature from the getrandom dev-dependency. Our \
rust-getrandom does not provide this feature; see also Unconditional use of \
getrandoms wasm_js feature is counter to upstream guidance, \
https://github.com/zip-rs/zip2/issues/336. Upstream fixed the issue for the \
dependency since 4.3.0, but not yet for the dev-dependency.\
""",
"Patch out the nt-time features; rust-nt-time not yet packaged",
"""\
Patch out ppmd support, even though it is in the default features. While \
the README.md for the ppmd-rust crate says The code in this crate is in the \
public domain as the original code by their authors, Cargo.toml lists the \
license as CC0-1.0, which is not precisely equivalent to the public-domain \
declaration in the README and is not-allowed for code in Fedora.\
""",
"""\
Patch out the deflate-flate2-zlib-ng-compat feature, which requires \
flate2/zlib-ng-compat, not packaged.\
""",
"""\
Unpin generic-array; see https://github.com/zip-rs/zip2/pull/458 for the \
upstream rationale, but we cannot use an old version and are not so \
concerned about deprecation warnings anyway.\
""",
"""\
Update constant_time_eq from 0.3.1 to 0.4.2. Downstream-only for MSRV \
reasons.\
Remove the wasm_js feature from the getrandom dependency for the getrandom \
feature, and from the getrandom dev-dependency. Our rust-getrandom does not \
provide this feature; see also Unconditional use of getrandoms wasm_js \
feature is counter to upstream guidance, \
https://github.com/zip-rs/zip2/issues/336.\
""",
"patch out the nt-time features; rust-nt-time not yet packaged",
]
doc-files.exclude = ["pull_request_template.md"]
exclude-crate-files = [
@ -57,7 +37,7 @@ comments = [
[[package.extra-patches]]
number = 10
file = "zip-6.0.0-omitted-test-files.patch"
file = "zip-3.0.0-omitted-test-files.patch"
comments = [
"""\
Downstream-only: patch out tests that would need omitted test files to \
@ -72,5 +52,6 @@ enable-all = true
check.pre = [
"# Extract test data (only) from the GitHub archive",
"tar -xzvf '%{SOURCE10}' --strip-components=1 'zip2-%{version}/tests/data/'",
"cp -vp '%{SOURCE11}' tests/data/",
]

View file

@ -1,2 +1,2 @@
SHA512 (zip-7.0.0.crate) = ef79949f6acb5e6d46f0458fb08fc465baab032e03b66af517c7db0812a33671cf12124e8a279521e072b83ae9d6ad74ca69a12541079e8b7d6db242e612f260
SHA512 (zip2-7.0.0-filtered.tar.gz) = 68e02788edb45009430c808e79f89e0141082c883f13d653676152402ef54056af602721b388e4c0c186dcbc0c8d7699f476ecb7339b932cd9c48e6a669e65ad
SHA512 (zip-3.0.0.crate) = 64e0952ab5232a4c36e0f7c019fefd382f0373d2e7bbcdbe026bad522e14d9e483aa75793e9f592371497e068ba416a6939ef242223ed387c4d077a3ca044bc5
SHA512 (zip2-3.0.0-filtered.tar.gz) = 8eb13dae727299566790ba067ebd85686fe62f4474cdfa8ac4d18c39d56c5fd258aba0d2f3babae1c6378f17d2e620c35dbb9e4afdc636fd45bf1b2924c6058d

View file

@ -0,0 +1,12 @@
diff -Naur zip-3.0.0-original/src/read.rs zip-3.0.0/src/read.rs
--- zip-3.0.0-original/src/read.rs 2006-07-23 21:21:28.000000000 -0400
+++ zip-3.0.0/src/read.rs 2025-05-16 07:16:07.587241056 -0400
@@ -2170,6 +2170,8 @@
#[test]
#[cfg(feature = "deflate-flate2")]
+ // Downstream patch: we do not include the test file needed for this test.
+ #[cfg(any())]
fn test_utf8_extra_field() {
let mut v = Vec::new();
v.extend_from_slice(include_bytes!("../tests/data/chinese.zip"));

View file

@ -1,21 +0,0 @@
diff -Naur zip-6.0.0-original/src/read.rs zip-6.0.0/src/read.rs
--- zip-6.0.0-original/src/read.rs 2006-07-24 02:21:28.000000000 +0100
+++ zip-6.0.0/src/read.rs 2025-12-17 11:48:28.449459541 +0000
@@ -2316,6 +2316,8 @@
#[test]
#[cfg(feature = "deflate-flate2")]
+ // Downstream patch: we do not include the test file needed for this test.
+ #[cfg(any())]
fn test_utf8_extra_field() {
let mut reader =
ZipArchive::new(Cursor::new(include_bytes!("../tests/data/chinese.zip"))).unwrap();
@@ -2399,6 +2401,8 @@
}
#[test]
+ // Downstream patch: we do not include the test file needed for this test.
+ #[cfg(any())]
fn test_central_directory_not_at_end() -> ZipResult<()> {
let mut reader = ZipArchive::new(Cursor::new(include_bytes!("../tests/data/omni.ja")))?;
let mut file = reader.by_name("chrome.manifest")?;

View file

@ -1,6 +1,6 @@
--- zip-7.0.0/Cargo.toml 1970-01-01T00:00:01+00:00
+++ zip-7.0.0/Cargo.toml 2026-01-09T22:11:25.991905+00:00
@@ -267,6 +267,3 @@
--- zip-3.0.0/Cargo.toml 1970-01-01T00:00:01+00:00
+++ zip-3.0.0/Cargo.toml 2025-05-16T11:17:25.429348+00:00
@@ -244,6 +244,3 @@
[dev-dependencies.walkdir]
version = "2.5"

View file

@ -1,52 +1,22 @@
--- zip-7.0.0/Cargo.toml 1970-01-01T00:00:01+00:00
+++ zip-7.0.0/Cargo.toml 2026-01-09T22:11:31.620816+00:00
@@ -72,7 +72,6 @@
"deflate64",
"deflate",
"lzma",
- "ppmd",
"time",
"zstd",
"xz",
@@ -93,10 +92,6 @@
"deflate-flate2",
"flate2/zlib-ng",
--- zip-3.0.0/Cargo.toml 1970-01-01T00:00:01+00:00
+++ zip-3.0.0/Cargo.toml 2025-05-16T11:17:25.430552+00:00
@@ -97,7 +97,6 @@
]
-deflate-flate2-zlib-ng-compat = [
- "deflate-flate2",
- "flate2/zlib-ng-compat",
-]
deflate-flate2-zlib-rs = [
"deflate-flate2",
"flate2/zlib-rs",
@@ -108,8 +103,6 @@
jiff-02 = ["dep:jiff"]
legacy-zip = ["bitstream-io"]
lzma = ["dep:lzma-rust2"]
lzma = ["lzma-rs/stream"]
-nt-time = ["dep:nt-time"]
-ppmd = ["dep:ppmd-rust"]
unreserved = []
xz = ["dep:lzma-rust2"]
@@ -149,7 +142,7 @@
optional = true
[dependencies.constant_time_eq]
-version = "0.3.1"
+version = "0.4.2"
optional = true
[dependencies.crc32fast]
@@ -165,7 +158,7 @@
default-features = false
[dependencies.generic-array]
-version = "=0.14.7"
+version = "0.14.7"
optional = true
xz = ["dep:xz2"]
@@ -151,7 +150,6 @@
[dependencies.getrandom]
@@ -199,17 +192,8 @@
version = "0.3.1"
features = [
- "wasm_js",
"std",
]
optional = true
@@ -176,11 +174,6 @@
[dependencies.memchr]
version = "2.7"
@ -57,14 +27,8 @@
-
[dependencies.pbkdf2]
version = "0.12"
-optional = true
-
-[dependencies.ppmd-rust]
-version = "1.2"
optional = true
[dependencies.sha1]
@@ -236,20 +220,9 @@
@@ -213,20 +206,9 @@
optional = true
default-features = false
@ -85,7 +49,7 @@
"std",
]
@@ -264,6 +237,3 @@
@@ -241,6 +223,3 @@
]
default-features = false