vectordotdev / vector

A high-performance observability data pipeline.
https://vector.dev
Mozilla Public License 2.0
17.56k stars 1.54k forks source link

`cargo vendor` fails due to `tracing-tower` from git #5733

Open kvtb opened 3 years ago

kvtb commented 3 years ago

Cargo.lock has duplicate packages since 0.11.0, namely tracing-* family https://github.com/timberio/vector/blob/aa4de87a15368fd0eb85ba68e03fbe1cc77ee88c/Cargo.lock#L6716-L6728 Could you regenerate it ?

kvtb commented 3 years ago

Although the file is optional, some Linux packages managers depend on it to build deterministically (https://github.com/NixOS/nixpkgs/pull/107557)

fanatid commented 3 years ago

I think this also existed in 0.10 too, maybe not for tracing but for other crates for sure. It's duplicated because different packages require different versions of crates:

$ cargo tree -p tracing:0.1.19 -i
tracing v0.1.19 (https://github.com/tokio-rs/tracing?rev=f470db1b0354b368f62f9ee4d763595d16373231#f470db1b)
├── tracing-futures v0.2.6 (https://github.com/tokio-rs/tracing?rev=f470db1b0354b368f62f9ee4d763595d16373231#f470db1b)
│   └── tracing-tower v0.1.0 (https://github.com/tokio-rs/tracing?rev=f470db1b0354b368f62f9ee4d763595d16373231#f470db1b)
│       └── vector v0.12.0 (/home/kirill/projects/vector)
└── tracing-tower v0.1.0 (https://github.com/tokio-rs/tracing?rev=f470db1b0354b368f62f9ee4d763595d16373231#f470db1b) (*)

and

$ cargo tree -p tracing:0.1.22 -i
tracing v0.1.22
├── async-graphql v2.2.0
│   ├── async-graphql-warp v2.2.0
│   │   └── vector v0.12.0 (/home/kirill/projects/vector)
│   └── vector v0.12.0 (/home/kirill/projects/vector)
├── codec v0.1.0 (/home/kirill/projects/vector/lib/codec)
│   └── vector v0.12.0 (/home/kirill/projects/vector)
├── file-source v0.1.0 (/home/kirill/projects/vector/lib/file-source)
│   └── vector v0.12.0 (/home/kirill/projects/vector)
├── h2 v0.2.7
│   └── hyper v0.13.9 (https://github.com/hyperium/hyper?rev=a00cc20afc597cb55cbc62c70b0b25b46c82a0a6#a00cc20a)
│       ├── bollard v0.9.0
│       │   └── vector v0.12.0 (/home/kirill/projects/vector)
│       ├── hyper-openssl v0.8.1
│       │   └── vector v0.12.0 (/home/kirill/projects/vector)
│       ├── hyper-rustls v0.21.0
│       │   ├── bollard v0.9.0 (*)
│       │   └── reqwest v0.10.10
│       │       ├── goauth v0.8.1
│       │       │   └── vector v0.12.0 (/home/kirill/projects/vector)
│       │       ├── mongodb v1.1.1
│       │       │   └── vector v0.12.0 (/home/kirill/projects/vector)
│       │       └── vector-api-client v0.1.1 (/home/kirill/projects/vector/lib/vector-api-client)
│       │           └── vector v0.12.0 (/home/kirill/projects/vector)
│       │       [dev-dependencies]
│       │       └── vector v0.12.0 (/home/kirill/projects/vector)
│       ├── hyper-tls v0.4.3
│       │   ├── reqwest v0.10.10 (*)
│       │   └── rusoto_core v0.45.0
│       │       ├── rusoto_cloudwatch v0.45.0
│       │       │   └── vector v0.12.0 (/home/kirill/projects/vector)
│       │       ├── rusoto_firehose v0.45.0
│       │       │   └── vector v0.12.0 (/home/kirill/projects/vector)
│       │       ├── rusoto_kinesis v0.45.0
│       │       │   └── vector v0.12.0 (/home/kirill/projects/vector)
│       │       ├── rusoto_logs v0.45.0
│       │       │   └── vector v0.12.0 (/home/kirill/projects/vector)
│       │       ├── rusoto_s3 v0.45.0
│       │       │   └── vector v0.12.0 (/home/kirill/projects/vector)
│       │       ├── rusoto_sqs v0.45.0
│       │       │   └── vector v0.12.0 (/home/kirill/projects/vector)
│       │       ├── rusoto_sts v0.45.0
│       │       │   └── vector v0.12.0 (/home/kirill/projects/vector)
│       │       └── vector v0.12.0 (/home/kirill/projects/vector)
│       ├── hyper-unix-connector v0.1.5
│       │   └── bollard v0.9.0 (*)
│       ├── reqwest v0.10.10 (*)
│       ├── rusoto_core v0.45.0 (*)
│       ├── rusoto_credential v0.45.0
│       │   ├── rusoto_core v0.45.0 (*)
│       │   ├── rusoto_signature v0.45.0
│       │   │   ├── rusoto_core v0.45.0 (*)
│       │   │   └── vector v0.12.0 (/home/kirill/projects/vector)
│       │   └── vector v0.12.0 (/home/kirill/projects/vector)
│       ├── rusoto_signature v0.45.0 (*)
│       ├── vector v0.12.0 (/home/kirill/projects/vector)
│       └── warp v0.2.5
│           ├── async-graphql-warp v2.2.0 (*)
│           └── vector v0.12.0 (/home/kirill/projects/vector)
├── hyper v0.13.9 (https://github.com/hyperium/hyper?rev=a00cc20afc597cb55cbc62c70b0b25b46c82a0a6#a00cc20a) (*)
├── metrics-tracing-context v0.1.0-alpha.5
│   └── vector v0.12.0 (/home/kirill/projects/vector)
├── remap-functions v0.1.0 (/home/kirill/projects/vector/lib/remap-functions)
│   └── vector v0.12.0 (/home/kirill/projects/vector)
├── shared v0.1.0 (/home/kirill/projects/vector/lib/shared)
│   ├── remap-functions v0.1.0 (/home/kirill/projects/vector/lib/remap-functions) (*)
│   └── vector v0.12.0 (/home/kirill/projects/vector)
├── tower v0.3.1 (https://github.com/tower-rs/tower?rev=43168944220ed32dab83cb4f11f7b97abc5818d5#43168944)
│   └── vector v0.12.0 (/home/kirill/projects/vector)
├── tracing-futures v0.2.4
│   ├── h2 v0.2.7 (*)
│   ├── vector v0.12.0 (/home/kirill/projects/vector)
│   └── warp v0.2.5 (*)
├── tracing-subscriber v0.2.15
│   ├── metrics-tracing-context v0.1.0-alpha.5 (*)
│   ├── tracing-limit v0.1.0 (/home/kirill/projects/vector/lib/tracing-limit)
│   │   └── vector v0.12.0 (/home/kirill/projects/vector)
│   └── vector v0.12.0 (/home/kirill/projects/vector)
├── vector v0.12.0 (/home/kirill/projects/vector)
└── warp v0.2.5 (*)
kvtb commented 3 years ago

Duplicates might be OK, but cargo vendor does fail processing lock-file with duplicates.

It looks like an inconsistency in cargo: they should either let cargo vendor download all versions or (if the minor is ignored) not to write both versions to Cargo.lock

kvtb commented 3 years ago

cargo build does download tracing 0.1.22 but not tracing 0.1.19. cargo vendor downloads both and discovers the conflict

fanatid commented 3 years ago

I just checked tracing related crates and think that cargo vendor will be ok when we switch tracing-tower from git to crates.io. Not sure when this happens, maybe on 0.1.0 release?

kvtb commented 3 years ago

yes

-tracing-tower = { git = "https://github.com/tokio-rs/tracing", rev = "f470db1b0354b368f62f9ee4d763595d16373231" }
+tracing-tower = "0.0.0"

makes cargo vendor happy but it removes version pinning

jamtur01 commented 3 years ago

Blocked on tracing-tower version update and crate release.

jszwedko commented 1 year ago

tracing-tower still appears to be unreleased, see https://github.com/tokio-rs/tracing/issues/238