diff --git a/.gitignore b/.gitignore index ace15fb..66c40c1 100644 --- a/.gitignore +++ b/.gitignore @@ -36,3 +36,7 @@ /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 diff --git a/get_test_data.sh b/get_test_data.sh index c853d63..ab00a90 100755 --- a/get_test_data.sh +++ b/get_test_data.sh @@ -21,6 +21,12 @@ 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 it’s 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 @@ -28,27 +34,67 @@ FORGEURL='https://github.com/zip-rs/zip2' OK_FILES="$(grep -vE '^(#|$)' <= 24 @@ -99,18 +111,6 @@ 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,6 +123,18 @@ 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 @@ -147,18 +159,6 @@ 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,6 +195,18 @@ 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 @@ -231,30 +243,6 @@ 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 @@ -267,6 +255,18 @@ 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,42 +279,6 @@ 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 @@ -351,30 +315,6 @@ 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 @@ -404,7 +344,6 @@ 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 diff --git a/rust2rpm.toml b/rust2rpm.toml index ae2e4ab..c25ed64 100644 --- a/rust2rpm.toml +++ b/rust2rpm.toml @@ -1,14 +1,34 @@ [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 dependency for the getrandom \ - feature, and from the getrandom dev-dependency. Our rust-getrandom does not \ - provide this feature; see also “Unconditional use of getrandom’s wasm_js \ - feature is counter to upstream guidance,” \ - https://github.com/zip-rs/zip2/issues/336.\ + Remove the wasm_js feature from the getrandom dev-dependency. Our \ + rust-getrandom does not provide this feature; see also “Unconditional use of \ + getrandom’s 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.\ """, - "patch out the nt-time features; rust-nt-time not yet packaged", ] doc-files.exclude = ["pull_request_template.md"] exclude-crate-files = [ @@ -37,7 +57,7 @@ comments = [ [[package.extra-patches]] number = 10 -file = "zip-3.0.0-omitted-test-files.patch" +file = "zip-6.0.0-omitted-test-files.patch" comments = [ """\ Downstream-only: patch out tests that would need omitted test files to \ @@ -52,6 +72,5 @@ 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/", ] diff --git a/sources b/sources index 8fa925c..ce5d3d4 100644 --- a/sources +++ b/sources @@ -1,2 +1,2 @@ -SHA512 (zip-3.0.0.crate) = 64e0952ab5232a4c36e0f7c019fefd382f0373d2e7bbcdbe026bad522e14d9e483aa75793e9f592371497e068ba416a6939ef242223ed387c4d077a3ca044bc5 -SHA512 (zip2-3.0.0-filtered.tar.gz) = 8eb13dae727299566790ba067ebd85686fe62f4474cdfa8ac4d18c39d56c5fd258aba0d2f3babae1c6378f17d2e620c35dbb9e4afdc636fd45bf1b2924c6058d +SHA512 (zip-7.0.0.crate) = ef79949f6acb5e6d46f0458fb08fc465baab032e03b66af517c7db0812a33671cf12124e8a279521e072b83ae9d6ad74ca69a12541079e8b7d6db242e612f260 +SHA512 (zip2-7.0.0-filtered.tar.gz) = 68e02788edb45009430c808e79f89e0141082c883f13d653676152402ef54056af602721b388e4c0c186dcbc0c8d7699f476ecb7339b932cd9c48e6a669e65ad diff --git a/zip-3.0.0-omitted-test-files.patch b/zip-3.0.0-omitted-test-files.patch deleted file mode 100644 index 876a903..0000000 --- a/zip-3.0.0-omitted-test-files.patch +++ /dev/null @@ -1,12 +0,0 @@ -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")); diff --git a/zip-6.0.0-omitted-test-files.patch b/zip-6.0.0-omitted-test-files.patch new file mode 100644 index 0000000..9bc23c1 --- /dev/null +++ b/zip-6.0.0-omitted-test-files.patch @@ -0,0 +1,21 @@ +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")?; diff --git a/zip-fix-metadata-auto.diff b/zip-fix-metadata-auto.diff index fa93a29..d1d32f2 100644 --- a/zip-fix-metadata-auto.diff +++ b/zip-fix-metadata-auto.diff @@ -1,6 +1,6 @@ ---- 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 @@ +--- 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 @@ [dev-dependencies.walkdir] version = "2.5" diff --git a/zip-fix-metadata.diff b/zip-fix-metadata.diff index 95bfdb7..d869273 100644 --- a/zip-fix-metadata.diff +++ b/zip-fix-metadata.diff @@ -1,22 +1,52 @@ ---- 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 @@ +--- 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", ] +-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"] - lzma = ["lzma-rs/stream"] + legacy-zip = ["bitstream-io"] + lzma = ["dep:lzma-rust2"] -nt-time = ["dep:nt-time"] +-ppmd = ["dep:ppmd-rust"] unreserved = [] - xz = ["dep:xz2"] + xz = ["dep:lzma-rust2"] -@@ -151,7 +150,6 @@ - [dependencies.getrandom] - version = "0.3.1" - features = [ -- "wasm_js", - "std", - ] +@@ -149,7 +142,7 @@ optional = true -@@ -176,11 +174,6 @@ + + [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 + + [dependencies.getrandom] +@@ -199,17 +192,8 @@ [dependencies.memchr] version = "2.7" @@ -27,8 +57,14 @@ - [dependencies.pbkdf2] version = "0.12" +-optional = true +- +-[dependencies.ppmd-rust] +-version = "1.2" optional = true -@@ -213,20 +206,9 @@ + + [dependencies.sha1] +@@ -236,20 +220,9 @@ optional = true default-features = false @@ -49,7 +85,7 @@ "std", ] -@@ -241,6 +223,3 @@ +@@ -264,6 +237,3 @@ ] default-features = false