2023-03-14 11:44:16 +00:00
|
|
|
[workspace]
|
|
|
|
resolver = "2"
|
|
|
|
members = [
|
2023-04-19 01:02:21 +00:00
|
|
|
"crates/*",
|
|
|
|
"credential/*",
|
2023-03-14 11:44:16 +00:00
|
|
|
"benches/benchsuite",
|
|
|
|
"benches/capture",
|
|
|
|
]
|
|
|
|
exclude = [
|
|
|
|
"target/", # exclude bench testing
|
|
|
|
]
|
|
|
|
|
2023-04-28 14:56:09 +00:00
|
|
|
[workspace.dependencies]
|
2023-02-15 15:22:08 +00:00
|
|
|
anyhow = "1.0.47"
|
2023-02-28 21:55:19 +00:00
|
|
|
base64 = "0.21.0"
|
Update the progress bar for parallel downloads
This is actually a super tricky problem. We don't really have the capacity for
more than one line of update-able information in Cargo right now, so we need to
squeeze a lot of information into one line of output for Cargo. The main
constraints this tries to satisfy are:
* At all times it should be clear what's happening. Cargo shouldn't just hang
with no output when downloading a crate for a long time, a counter ideally
needs to be decreasing while the download progresses.
* If a progress bar is shown, it shouldn't jump around. This ends up just being
a surprising user experience for most. Progress bars should only ever
increase, but they may increase at different speeds.
* Cargo has, currently, at most one line of output (as mentioned above) to pack
information into. We haven't delved into fancier terminal features that
involve multiple lines of update-able output.
* When downloading crates as part of `cargo build` (the norm) we don't actually
know ahead of time how many crates are being downloaded. We rely on the
calculation of unit dependencies to naturally feed into downloading more
crates.
* Furthermore, once we decide to download a crate, we don't actually know how
big it is! We have to wait for the server to tell us how big it is.
There doesn't really seem to be a great solution that satisfies all of these
constraints unfortunately. As a result this commit implements a relatively
conservative solution which should hopefully get us most of the way there. There
isn't actually a progress bar but rather Cargo prints that it's got N crates
left to download, and if it takes awhile it prints out that there are M bytes
remaining.
Unfortunately the progress is pretty choppy and jerky, not providing a smooth
UI. This appears to largely be because Cargo will synchronously extract
tarballs, which for large crates can cause a noticeable pause. Cargo's not
really prepared internally to perform this work on helper threads, but ideally
if it could do so it would improve the output quite a bit! (making it much
smoother and also able to account for the time tarball extraction takes).
2018-09-13 03:57:01 +00:00
|
|
|
bytesize = "1.0"
|
2023-04-28 14:56:09 +00:00
|
|
|
cargo = { path = "" }
|
|
|
|
cargo-credential = { version = "0.2.0", path = "credential/cargo-credential" }
|
2023-04-23 18:51:43 +00:00
|
|
|
cargo-platform = { path = "crates/cargo-platform", version = "0.1.3" }
|
2023-04-28 14:56:09 +00:00
|
|
|
cargo-test-macro = { path = "crates/cargo-test-macro" }
|
|
|
|
cargo-test-support = { path = "crates/cargo-test-support" }
|
|
|
|
cargo-util = { version = "0.2.4", path = "crates/cargo-util" }
|
|
|
|
cargo_metadata = "0.14.0"
|
|
|
|
clap = "4.2.0"
|
|
|
|
core-foundation = { version = "0.9.0", features = ["mac_os_10_7_support"] }
|
|
|
|
crates-io = { version = "0.36.1", path = "crates/crates-io" }
|
2023-07-09 22:59:30 +00:00
|
|
|
criterion = { version = "0.5.1", features = ["html_reports"] }
|
2023-04-28 14:56:09 +00:00
|
|
|
curl = "0.4.44"
|
2023-06-02 00:01:14 +00:00
|
|
|
curl-sys = "0.4.63"
|
2022-11-24 17:59:52 +00:00
|
|
|
env_logger = "0.10.0"
|
2020-04-03 21:20:05 +00:00
|
|
|
filetime = "0.2.9"
|
2020-03-20 18:28:17 +00:00
|
|
|
flate2 = { version = "1.0.3", default-features = false, features = ["zlib"] }
|
2023-04-28 14:56:09 +00:00
|
|
|
fwdansi = "1.1.0"
|
2023-05-06 19:59:38 +00:00
|
|
|
git2 = "0.17.1"
|
2023-04-02 22:32:48 +00:00
|
|
|
git2-curl = "0.18.0"
|
2023-06-06 15:55:07 +00:00
|
|
|
gix = { version = "0.45.1", default-features = false, features = ["blocking-http-transport-curl", "progress-tree"] }
|
|
|
|
gix-features-for-configuration-only = { version = "0.30.0", package = "gix-features", features = [ "parallel" ] }
|
2019-03-07 05:50:26 +00:00
|
|
|
glob = "0.3.0"
|
2023-04-28 14:56:09 +00:00
|
|
|
handlebars = { version = "3.2.1", features = ["dir_source"] }
|
|
|
|
hex = "0.4.2"
|
2022-12-28 23:52:10 +00:00
|
|
|
hmac = "0.12.1"
|
2023-04-25 18:38:52 +00:00
|
|
|
home = "0.5.5"
|
2022-10-31 16:44:01 +00:00
|
|
|
http-auth = { version = "0.1.6", default-features = false }
|
2020-01-20 05:27:58 +00:00
|
|
|
humantime = "2.0.0"
|
2019-05-14 01:05:10 +00:00
|
|
|
ignore = "0.4.7"
|
2023-02-15 15:22:08 +00:00
|
|
|
im-rc = "15.0.0"
|
|
|
|
indexmap = "1"
|
|
|
|
itertools = "0.10.0"
|
2023-02-25 10:32:28 +00:00
|
|
|
jobserver = "0.1.26"
|
2023-04-28 14:56:09 +00:00
|
|
|
lazy_static = "1.3.0"
|
2018-09-14 17:42:27 +00:00
|
|
|
lazycell = "1.2.0"
|
2023-05-07 06:02:59 +00:00
|
|
|
libc = "0.2.144"
|
2023-05-06 19:59:38 +00:00
|
|
|
libgit2-sys = "0.15.1"
|
2023-04-28 14:56:09 +00:00
|
|
|
log = "0.4.17"
|
2019-04-25 21:21:27 +00:00
|
|
|
memchr = "2.1.3"
|
2023-04-28 14:56:09 +00:00
|
|
|
miow = "0.5.0"
|
2021-06-14 08:05:04 +00:00
|
|
|
opener = "0.5"
|
2023-06-21 22:59:06 +00:00
|
|
|
openssl ="0.10.55"
|
2022-08-06 05:12:20 +00:00
|
|
|
os_info = "3.5.0"
|
2022-12-12 17:49:22 +00:00
|
|
|
pasetors = { version = "0.6.4", features = ["v3", "paserk", "std", "serde"] }
|
2022-03-10 17:20:50 +00:00
|
|
|
pathdiff = "0.2"
|
2023-04-28 14:56:09 +00:00
|
|
|
percent-encoding = "2.0"
|
|
|
|
pkg-config = "0.3.19"
|
|
|
|
pretty_assertions = "1.3.0"
|
|
|
|
pretty_env_logger = "0.4"
|
|
|
|
proptest = "1.1.0"
|
|
|
|
pulldown-cmark = { version = "0.9.2", default-features = false }
|
2023-03-23 12:33:20 +00:00
|
|
|
rand = "0.8.5"
|
2021-06-10 01:13:56 +00:00
|
|
|
rustfix = "0.6.0"
|
2023-04-28 14:56:09 +00:00
|
|
|
same-file = "1.0.6"
|
|
|
|
security-framework = "2.0.0"
|
2021-06-04 16:19:11 +00:00
|
|
|
semver = { version = "1.0.3", features = ["serde"] }
|
2023-04-28 14:56:09 +00:00
|
|
|
serde = "1.0.123"
|
2023-02-15 15:22:08 +00:00
|
|
|
serde-value = "0.7.0"
|
2019-08-19 06:26:20 +00:00
|
|
|
serde_ignored = "0.1.0"
|
2023-04-28 14:56:09 +00:00
|
|
|
serde_json = "1.0.59"
|
2022-12-28 23:52:10 +00:00
|
|
|
sha1 = "0.10.5"
|
2023-04-28 14:56:09 +00:00
|
|
|
sha2 = "0.10.6"
|
2021-03-25 19:56:24 +00:00
|
|
|
shell-escape = "0.1.4"
|
2023-04-28 14:56:09 +00:00
|
|
|
snapbox = { version = "0.4.0", features = ["diff", "path"] }
|
2019-05-12 00:35:25 +00:00
|
|
|
strip-ansi-escapes = "0.1.0"
|
2023-06-08 19:47:02 +00:00
|
|
|
syn = { version = "2.0.14", features = ["extra-traits", "full"] }
|
2022-06-01 10:17:15 +00:00
|
|
|
tar = { version = "0.4.38", default-features = false }
|
2023-04-28 14:56:09 +00:00
|
|
|
tempfile = "3.1.0"
|
|
|
|
termcolor = "1.1.2"
|
|
|
|
time = { version = "0.3", features = ["parsing", "formatting"] }
|
2023-01-19 21:26:28 +00:00
|
|
|
toml = "0.7.0"
|
2023-02-15 15:22:08 +00:00
|
|
|
toml_edit = "0.19.0"
|
|
|
|
unicode-width = "0.1.5"
|
2020-03-02 22:26:21 +00:00
|
|
|
unicode-xid = "0.2.0"
|
2021-05-10 20:20:11 +00:00
|
|
|
url = "2.2.2"
|
2023-04-28 14:56:09 +00:00
|
|
|
varisat = "0.2.1"
|
|
|
|
walkdir = "2.3.1"
|
|
|
|
windows-sys = "0.48"
|
|
|
|
|
|
|
|
[package]
|
|
|
|
name = "cargo"
|
2023-06-01 21:33:17 +00:00
|
|
|
version = "0.73.0"
|
2023-04-28 14:56:09 +00:00
|
|
|
edition = "2021"
|
|
|
|
license = "MIT OR Apache-2.0"
|
|
|
|
homepage = "https://crates.io"
|
|
|
|
repository = "https://github.com/rust-lang/cargo"
|
|
|
|
documentation = "https://docs.rs/cargo"
|
|
|
|
readme = "README.md"
|
|
|
|
description = """
|
|
|
|
Cargo, a package manager for Rust.
|
|
|
|
"""
|
|
|
|
|
|
|
|
[lib]
|
|
|
|
name = "cargo"
|
|
|
|
path = "src/cargo/lib.rs"
|
|
|
|
|
|
|
|
[dependencies]
|
|
|
|
anyhow.workspace = true
|
|
|
|
base64.workspace = true
|
|
|
|
bytesize.workspace = true
|
|
|
|
cargo-platform.workspace = true
|
|
|
|
cargo-util.workspace = true
|
|
|
|
clap = { workspace = true, features = ["wrap_help"] }
|
|
|
|
crates-io.workspace = true
|
|
|
|
curl = { workspace = true, features = ["http2"] }
|
|
|
|
curl-sys.workspace = true
|
|
|
|
env_logger.workspace = true
|
|
|
|
filetime.workspace = true
|
|
|
|
flate2.workspace = true
|
|
|
|
git2.workspace = true
|
|
|
|
git2-curl.workspace = true
|
|
|
|
gix.workspace = true
|
|
|
|
gix-features-for-configuration-only.workspace = true
|
|
|
|
glob.workspace = true
|
|
|
|
hex.workspace = true
|
|
|
|
hmac.workspace = true
|
|
|
|
home.workspace = true
|
|
|
|
http-auth.workspace = true
|
|
|
|
humantime.workspace = true
|
|
|
|
ignore.workspace = true
|
|
|
|
im-rc.workspace = true
|
|
|
|
indexmap.workspace = true
|
|
|
|
itertools.workspace = true
|
|
|
|
jobserver.workspace = true
|
|
|
|
lazycell.workspace = true
|
|
|
|
libc.workspace = true
|
|
|
|
libgit2-sys.workspace = true
|
|
|
|
log.workspace = true
|
|
|
|
memchr.workspace = true
|
|
|
|
opener.workspace = true
|
|
|
|
os_info.workspace = true
|
|
|
|
pasetors.workspace = true
|
|
|
|
pathdiff.workspace = true
|
|
|
|
pretty_env_logger = { workspace = true, optional = true }
|
2023-06-08 19:47:02 +00:00
|
|
|
pulldown-cmark.workspace = true
|
2023-04-28 14:56:09 +00:00
|
|
|
rand.workspace = true
|
|
|
|
rustfix.workspace = true
|
|
|
|
semver.workspace = true
|
|
|
|
serde = { workspace = true, features = ["derive"] }
|
|
|
|
serde-value.workspace = true
|
|
|
|
serde_ignored.workspace = true
|
|
|
|
serde_json = { workspace = true, features = ["raw_value"] }
|
|
|
|
sha1.workspace = true
|
|
|
|
shell-escape.workspace = true
|
|
|
|
strip-ansi-escapes.workspace = true
|
2023-06-08 19:47:02 +00:00
|
|
|
syn.workspace = true
|
2023-04-28 14:56:09 +00:00
|
|
|
tar.workspace = true
|
|
|
|
tempfile.workspace = true
|
|
|
|
termcolor.workspace = true
|
|
|
|
time.workspace = true
|
|
|
|
toml.workspace = true
|
|
|
|
toml_edit.workspace = true
|
|
|
|
unicode-width.workspace = true
|
|
|
|
unicode-xid.workspace = true
|
|
|
|
url.workspace = true
|
|
|
|
walkdir.workspace = true
|
2015-01-20 16:01:52 +00:00
|
|
|
|
2023-04-17 18:26:48 +00:00
|
|
|
[target.'cfg(not(windows))'.dependencies]
|
2023-04-28 14:56:09 +00:00
|
|
|
openssl = { workspace = true, optional = true }
|
2023-04-16 06:56:54 +00:00
|
|
|
|
2017-01-05 21:09:36 +00:00
|
|
|
[target.'cfg(windows)'.dependencies]
|
2023-04-28 14:56:09 +00:00
|
|
|
fwdansi.workspace = true
|
2018-07-21 16:35:35 +00:00
|
|
|
|
2023-01-31 10:02:57 +00:00
|
|
|
[target.'cfg(windows)'.dependencies.windows-sys]
|
2023-04-28 14:56:09 +00:00
|
|
|
workspace = true
|
2018-01-03 19:25:28 +00:00
|
|
|
features = [
|
2023-01-31 10:02:57 +00:00
|
|
|
"Win32_Foundation",
|
|
|
|
"Win32_Storage_FileSystem",
|
2023-04-22 11:24:59 +00:00
|
|
|
"Win32_System_Console",
|
2023-01-31 10:02:57 +00:00
|
|
|
"Win32_System_Threading",
|
|
|
|
"Win32_System_JobObjects",
|
2018-01-03 19:25:28 +00:00
|
|
|
]
|
2017-01-05 21:09:36 +00:00
|
|
|
|
2015-03-09 19:07:35 +00:00
|
|
|
[dev-dependencies]
|
2023-04-28 14:56:09 +00:00
|
|
|
cargo-test-macro.workspace = true
|
|
|
|
cargo-test-support.workspace = true
|
|
|
|
same-file.workspace = true
|
|
|
|
snapbox.workspace = true
|
2014-09-27 04:14:46 +00:00
|
|
|
|
2020-07-06 01:15:07 +00:00
|
|
|
[build-dependencies]
|
2023-04-28 14:56:09 +00:00
|
|
|
flate2.workspace = true
|
|
|
|
tar.workspace = true
|
2020-07-06 01:15:07 +00:00
|
|
|
|
2014-07-16 00:51:49 +00:00
|
|
|
[[bin]]
|
|
|
|
name = "cargo"
|
|
|
|
test = false
|
2014-08-14 21:54:56 +00:00
|
|
|
doc = false
|
2018-08-05 06:02:57 +00:00
|
|
|
|
|
|
|
[features]
|
2019-10-01 07:39:57 +00:00
|
|
|
vendored-openssl = ["openssl/vendored"]
|
2022-09-29 16:17:25 +00:00
|
|
|
vendored-libgit2 = ["libgit2-sys/vendored"]
|
2019-10-01 07:39:57 +00:00
|
|
|
pretty-env-logger = ["pretty_env_logger"]
|
2023-04-17 18:26:48 +00:00
|
|
|
# This is primarily used by rust-lang/rust distributing cargo the executable.
|
|
|
|
all-static = ['vendored-openssl', 'curl/static-curl', 'curl/force-system-lib-on-osx']
|