1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
[]
= "stuffr-cli"
= true
= "The stuffr command line interface"
= true
= true
# Not the workspace's MIT alone: `compat` ports code from bzip2.c and
# bzip2recover.c, whose licence ships as LICENSE-bzip2, and from Apple's
# (FreeBSD's, NetBSD's) gzip.c and its decoders, whose notices ship as
# LICENSE-gzip-bsd: BSD-2-Clause for all but zuncompress.c (the Regents
# of the University of California's BSD-3-Clause), which the `.Z` reader
# ports. SPDX deprecated `BSD-2-Clause-NetBSD` and `-FreeBSD` for
# `BSD-2-Clause`, whose text they share.
# One caveat: the Lzd notice in unlz.c is BSD-style but not word for word the
# SPDX BSD-2-Clause text; the full notice ships in LICENSE-gzip-bsd.
# The xz family ports XZ Utils 5.8.4's `src/xz/` (0BSD), whose licence
# ships as LICENSE-xz. The zstd family ports zstd 1.5.7's `programs/` under
# zstd's BSD licence (BSD-3-Clause, already in the expression), which ships
# as LICENSE-zstd. The lz4 family ports nothing (a clean-room front end;
# lz4's GPL `programs/` was never read) and links liblz4 (BSD-2-Clause,
# already in the expression) on the `lz4-c` tier: LICENSE-lz4. The unzip
# family ports Info-ZIP UnZip 6.0's front end (Apple's zip-33 tree and
# Debian's patches, all under the Info-ZIP licence): LICENSE-infozip.
# The compress family ports Apple's compress.c and zopen.c (the Regents of
# the University of California's BSD-3-Clause, already in the expression),
# whose notices ship as LICENSE-compress-bsd, and its ncompress
# personality ports ncompress 5.0 (the Unlicense), whose text ships with
# that personality as LICENSE-ncompress.
= "MIT AND bzip2-1.0.6 AND BSD-2-Clause AND BSD-3-Clause AND 0BSD AND Info-ZIP AND Unlicense"
= true
= ["compression", "archive", "cli", "unzip", "extract"]
= ["command-line-utilities", "compression"]
= "README.md"
[[]]
= "stuffr"
= "src/main.rs"
# The binary's docs would land in `target/doc/stuffr/`, the facade library's
# directory: a filename collision that rustdoc warned about and, on CI
# 38291091507, raced into an I/O error. The library docs are the ones wanted.
= false
# Passthroughs to the facade, and they exist for one reason: `cargo install
# stuffr-cli --features <x>` is what the documentation tells a user to type,
# and Cargo resolves `<x>` against THIS package, not against its dependency.
# Until Phase 3b's fix wave there was no `[features]` section here at all, so
# every documented install command failed with "the package 'stuffr-cli' does
# not contain this feature" — `--features c-backed` had shipped that way since
# before `legacy` existed, printed as a copyable line in both READMEs. The only
# working spelling was `--features stuffr/legacy`, which appeared nowhere.
#
# One entry per name any document tells a user to install with: the two build
# tiers, the `legacy` bundle, `full`, and the three legacy formats the README
# names individually. `cargo install stuffr-cli` on its own still gets the
# facade's own `default = ["pure"]` — nothing here is a default, so adding a
# feature never silently changes what a plain install builds.
# `documented_install_commands_name_features_this_crate_declares` in
# `tests/cli/` fails the build if a README grows a `--features` spelling this
# table does not carry.
[]
= ["stuffr/pure"]
# `zlib-c` is a passthrough so this crate's own `cfg(feature = "zlib-c")` and
# its integration tests can see it; `c-backed` implies it, and `full` names
# `c-backed` itself — `stuffr/full` alone would turn on stuffr's `zlib-c` but
# not this crate's, and the byte suite would silently run the compatible tier.
= ["stuffr/c-backed", "zlib-c", "xz-c", "lzma-c", "zstd-c", "lz4-c", "brotli-c"]
= ["stuffr/zlib-c"]
# The Apple gzip personality's `unxz` runs over liblzma itself on the C
# tier (`stuffr::xz_stream`), as Apple's does; elsewhere over the
# registry's xz decoder.
= ["stuffr/xz-c"]
# The lzma codec's C tier (liblzma's alone-format encoder); a passthrough so
# `stuffr bench` labels lzma's backend from this crate's own feature, as it
# does xz's and zstd's.
= ["stuffr/lzma-c"]
# The zstd family's C tier (libzstd through `stuffr::zstd_opts`); a
# passthrough so this crate's `cfg(feature = "zstd-c")` and its byte suite
# see the tier, as `zlib-c` and `xz-c` above.
= ["stuffr/zstd-c"]
# The lz4 family's C tier (liblz4 through `stuffr::lz4_opts`); a passthrough
# so this crate's `cfg(feature = "lz4-c")` and its byte suite see the tier.
= ["stuffr/lz4-c"]
# The brotli family's C tier (libbrotli 1.2.1, vendored in stuffr-formats,
# through `stuffr::brotli_opts`); a passthrough so this crate's
# `cfg(feature = "brotli-c")` and its byte suite see the tier.
= ["stuffr/brotli-c"]
= ["stuffr/legacy"]
= ["stuffr/full", "c-backed"]
= ["stuffr/lha"]
= ["stuffr/arj"]
= ["stuffr/compress"]
= ["stuffr/arc"]
= ["stuffr/zoo"]
# Note the absence of `default-features = false` here: this edge always
# requests `stuffr`'s own `default` feature set (`pure` and, since the commit
# that added `legacy` to it, `legacy` too) regardless of any
# `--no-default-features`/`--features` passed to `stuffr-cli` itself —
# `stuffr-cli` declares no `[features] default` of its own for that flag to
# disable. Verified directly: `cargo build -p stuffr-cli
# --no-default-features` (no `--features` at all) still ships `lha`, `arj`
# and `compress` in `stuffr formats`. Consequence: there is no CLI-flag-only
# way to build the `stuffr` binary without `legacy` any more — see the dead
# projection this made in `crates/stuffr-cli/tests/cli/`.
[]
= { = "../stuffr", = "0.25.1", = ["serde"] }
= { = true }
= "1"
# `stuffr bench 'logs/*.log'`: expands a quoted pattern the shell left alone.
# Maintained by rust-lang, no dependencies of its own.
= "0.3"
# The gzip compatibility family's member layer: raw deflate/inflate and CRC32.
# Already in every build's graph through stuffr-formats; the backend is never
# changed here (no zlib/zlib-ng/zlib-rs feature anywhere).
= { = true }
# The bzip2 compatibility mode restores `SIGPIPE`'s default action, so a
# closed pipe ends it the way it ends bzip2. Already in the lock (a
# transitive dependency, and this crate's own unix dev-dependency).
[]
= "0.2"
[]
# The same facade with `testing` on, for `stuffr::testing::COMPAT_NAMES`: a
# unit test holds the fuzz target's name table to `compat::names()`.
= { = "../stuffr", = ["testing"] }
# Fixture builders for the `list`/`test` integration tests: real tar and
# real gzip, independent of `stuffr-formats`' own `Tar`/gzip implementations,
# so a read-side bug there cannot also hide in the fixture that exercises it.
= { = true }
# `compat_harness` opens a pseudo-terminal with `openpty` so a differential
# case can make stdin or stdout a tty. `libc` is already in the lock (a
# transitive dependency), so this adds a manifest edge, not a new crate.
[]
= "0.2"