Skip to content

Commit c21fa44

Browse files
authored
build: do not use workspace dependencies (#695)
As written in the workspace Cargo.toml: > Note that for better cross-tooling interactions, do not use workspace dependencies for anything that is not "workspace internal" (e.g.: mostly dev-dependencies). E.g.: release-plz can’t detect that a dependency has been updated in a way warranting a version bump in the dependant if no commit is touching a file associated to the crate. It is technically okay to use that for "private" (i.e.: not used in the public API) dependencies too, but we still want to make follow-up releases to stay up to date with the community, even for private dependencies. Expectation is that release-plz will be able to auto-detect when bumping dependents is necessary. Closes #689
1 parent 5c890d4 commit c21fa44

File tree

34 files changed

+195
-244
lines changed

34 files changed

+195
-244
lines changed

Cargo.lock

+1-1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

+9-42
Original file line numberDiff line numberDiff line change
@@ -23,55 +23,22 @@ keywords = ["rdp", "remote-desktop", "network", "client", "protocol"]
2323
categories = ["network-programming"]
2424

2525
[workspace.dependencies]
26-
ironrdp-acceptor = { version = "0.3", path = "crates/ironrdp-acceptor" }
27-
ironrdp-ainput = { version = "0.1", path = "crates/ironrdp-ainput" }
28-
ironrdp-async = { version = "0.3", path = "crates/ironrdp-async" }
29-
ironrdp-bench = { version = "0.1", path = "crates/ironrdp-bench" }
30-
ironrdp-blocking = { version = "0.3", path = "crates/ironrdp-blocking" }
31-
ironrdp-cliprdr = { version = "0.1", path = "crates/ironrdp-cliprdr" }
32-
ironrdp-cliprdr-native = { version = "0.1", path = "crates/ironrdp-cliprdr-native" }
33-
ironrdp-cliprdr-format = { version = "0.1", path = "crates/ironrdp-cliprdr-format" }
34-
ironrdp-core = { version = "0.1", path = "crates/ironrdp-core" }
35-
ironrdp-connector = { version = "0.3", path = "crates/ironrdp-connector" }
36-
ironrdp-dvc = { version = "0.1", path = "crates/ironrdp-dvc" }
37-
ironrdp-displaycontrol = { version = "0.1", path = "crates/ironrdp-displaycontrol" }
38-
ironrdp-error = { version = "0.1", path = "crates/ironrdp-error" }
39-
ironrdp-futures = { version = "0.1", path = "crates/ironrdp-futures" }
40-
ironrdp-fuzzing = { path = "crates/ironrdp-fuzzing" }
41-
ironrdp-graphics = { version = "0.2", path = "crates/ironrdp-graphics" }
42-
ironrdp-input = { version = "0.1", path = "crates/ironrdp-input" }
43-
ironrdp-pdu-generators = { path = "crates/ironrdp-pdu-generators" }
44-
ironrdp-pdu = { version = "0.3", path = "crates/ironrdp-pdu" }
45-
ironrdp-rdcleanpath = { version = "0.1", path = "crates/ironrdp-rdcleanpath" }
46-
ironrdp-rdpdr = { version = "0.1", path = "crates/ironrdp-rdpdr" }
47-
ironrdp-rdpdr-native = { version = "0.1", path = "crates/ironrdp-rdpdr-native" }
48-
ironrdp-rdpsnd = { version = "0.3", path = "crates/ironrdp-rdpsnd" }
49-
ironrdp-rdpsnd-native = { version = "0.1", path = "crates/ironrdp-rdpsnd-native" }
50-
ironrdp-server = { version = "0.4", path = "crates/ironrdp-server" }
51-
ironrdp-session-generators = { path = "crates/ironrdp-session-generators" }
52-
ironrdp-session = { version = "0.2", path = "crates/ironrdp-session" }
53-
ironrdp-svc = { version = "0.1", path = "crates/ironrdp-svc" }
54-
ironrdp-testsuite-core = { path = "crates/ironrdp-testsuite-core" }
55-
ironrdp-testsuite-extra = { path = "crates/ironrdp-testsuite-extra" }
56-
ironrdp-tls = { version = "0.1", path = "crates/ironrdp-tls" }
57-
ironrdp-tokio = { version = "0.2", path = "crates/ironrdp-tokio" }
58-
ironrdp = { version = "0.7", path = "crates/ironrdp" }
59-
60-
bitflags = "2.4"
26+
# Note that for better cross-tooling interactions, do not use workspace
27+
# dependencies for anything that is not "workspace internal" (e.g.: mostly
28+
# dev-dependencies). E.g.: release-plz can’t detect that a dependency has been
29+
# updated in a way warranting a version bump in the dependant if no commit is
30+
# touching a file associated to the crate. It is technically okay to use that
31+
# for "private" (i.e.: not used in the public API) dependencies too, but we
32+
# still want to make follow-up releases to stay up to date with the community,
33+
# even for private dependencies.
6134
expect-test = "1"
62-
png = "0.17"
6335
proptest = "1.4"
6436
rstest = "0.18"
65-
sspi = "0.15"
66-
tracing = { version = "0.1", features = ["log"] }
67-
thiserror = "1.0"
68-
windows = "0.58"
6937

7038
# Note: we are trying to move away from using these crates.
7139
# They are being kept around for now for legacy compatibility,
7240
# but new usage should be avoided.
73-
byteorder = "1.5"
74-
lazy_static = "1.4" # prefer https://doc.rust-lang.org/std/sync/struct.OnceLock.html
41+
lazy_static = "1.4" # Legacy crate; prefer std::sync::LazyLock or LazyCell
7542
num-derive = "0.4"
7643
num-traits = "0.2"
7744

crates/ironrdp-acceptor/Cargo.toml

+6-6
Original file line numberDiff line numberDiff line change
@@ -16,12 +16,12 @@ doctest = false
1616
test = false
1717

1818
[dependencies]
19-
ironrdp-pdu.workspace = true
20-
ironrdp-svc.workspace = true
21-
ironrdp-connector.workspace = true
22-
ironrdp-async.workspace = true
23-
tracing.workspace = true
24-
ironrdp-core = { workspace = true, features = ["alloc"] }
19+
ironrdp-core = { path = "../ironrdp-core", version = "0.1", features = ["alloc"] }
20+
ironrdp-pdu = { path = "../ironrdp-pdu", version = "0.3" }
21+
ironrdp-svc = { path = "../ironrdp-svc", version = "0.1" }
22+
ironrdp-connector = { path = "../ironrdp-connector", version = "0.3" }
23+
ironrdp-async = { path = "../ironrdp-async", version = "0.3" }
24+
tracing = { version = "0.1", features = ["log"] }
2525

2626
[lints]
2727
workspace = true

crates/ironrdp-ainput/Cargo.toml

+3-3
Original file line numberDiff line numberDiff line change
@@ -16,9 +16,9 @@ doctest = false
1616
test = false
1717

1818
[dependencies]
19-
bitflags.workspace = true
20-
ironrdp-core.workspace = true
21-
ironrdp-dvc.workspace = true
19+
bitflags = "2.4"
20+
ironrdp-core = { path = "../ironrdp-core", version = "0.1" }
21+
ironrdp-dvc = { path = "../ironrdp-dvc", version = "0.1" }
2222
num-derive.workspace = true # TODO: remove
2323
num-traits.workspace = true # TODO: remove
2424

crates/ironrdp-async/Cargo.toml

+5-6
Original file line numberDiff line numberDiff line change
@@ -16,13 +16,12 @@ doctest = false
1616
test = false
1717

1818
[dependencies]
19+
ironrdp-connector = { path = "../ironrdp-connector", version = "0.3" }
20+
ironrdp-core = { path = "../ironrdp-core", version = "0.1", features = ["alloc"] }
21+
ironrdp-pdu = { path = "../ironrdp-pdu", version = "0.3" }
22+
# ironrdp-session = { workspace = "../ironrdp-session", version = "0.2" }
23+
tracing = { version = "0.1", features = ["log"] }
1924
bytes = "1"
20-
ironrdp-connector.workspace = true
21-
ironrdp-core = { workspace = true, features = ["alloc"] }
22-
ironrdp-pdu.workspace = true
23-
# ironrdp-session.workspace = true
24-
tracing.workspace = true
2525

2626
[lints]
2727
workspace = true
28-

crates/ironrdp-bench/Cargo.toml

+3-3
Original file line numberDiff line numberDiff line change
@@ -13,9 +13,9 @@ publish = false
1313

1414
[dev-dependencies]
1515
criterion = "0.5"
16-
ironrdp-graphics.workspace = true
17-
ironrdp-pdu.workspace = true
18-
ironrdp-server = { workspace = true, features = ["__bench"] }
16+
ironrdp-graphics.path = "../ironrdp-graphics"
17+
ironrdp-pdu.path = "../ironrdp-pdu"
18+
ironrdp-server = { path = "../ironrdp-server", features = ["__bench"] }
1919

2020
[[bench]]
2121
name = "bench"

crates/ironrdp-blocking/Cargo.toml

+5-5
Original file line numberDiff line numberDiff line change
@@ -17,11 +17,11 @@ test = false
1717

1818
[dependencies]
1919
bytes = "1"
20-
ironrdp-connector.workspace = true
21-
ironrdp-core = { workspace = true, features = ["alloc"] }
22-
ironrdp-pdu.workspace = true
23-
# ironrdp-session.workspace = true
24-
tracing.workspace = true
20+
ironrdp-connector = { path = "../ironrdp-connector", version = "0.3" }
21+
ironrdp-core = { path = "../ironrdp-core", version = "0.1", features = ["alloc"] }
22+
ironrdp-pdu = { path = "../ironrdp-pdu", version = "0.3" }
23+
# ironrdp-session = { path = "../ironrdp-session", version = "0.2" }
24+
tracing = { version = "0.1", features = ["log"] }
2525

2626
[lints]
2727
workspace = true

crates/ironrdp-client/Cargo.toml

+11-15
Original file line numberDiff line numberDiff line change
@@ -29,9 +29,8 @@ rustls = ["ironrdp-tls/rustls"]
2929
native-tls = ["ironrdp-tls/native-tls"]
3030

3131
[dependencies]
32-
3332
# Protocols
34-
ironrdp = { workspace = true, features = [
33+
ironrdp = { path = "../ironrdp", version = "0.7", features = [
3534
"session",
3635
"input",
3736
"graphics",
@@ -43,14 +42,12 @@ ironrdp = { workspace = true, features = [
4342
"displaycontrol",
4443
"connector"
4544
] }
46-
ironrdp-cliprdr-native.workspace = true
47-
ironrdp-rdpsnd-native.workspace = true
48-
ironrdp-tls.workspace = true
49-
ironrdp-tokio.workspace = true
50-
sspi = { workspace = true, features = [
51-
"network_client",
52-
"dns_resolver",
53-
] } # enable additional features
45+
ironrdp-core = { path = "../ironrdp-core", version = "0.1", features = ["alloc"] }
46+
ironrdp-cliprdr-native = { path = "../ironrdp-cliprdr-native", version = "0.1" }
47+
ironrdp-rdpsnd-native = { path = "../ironrdp-rdpsnd-native", version = "0.1" }
48+
ironrdp-tls = { path = "../ironrdp-tls", version = "0.1" }
49+
ironrdp-tokio = { path = "../ironrdp-tokio", version = "0.2" }
50+
sspi = { version = "0.15", features = ["network_client", "dns_resolver"] } # TODO: enable additional features
5451

5552
# Windowing and rendering
5653
winit = { version = "0.30", features = ["rwh_06"] }
@@ -62,7 +59,7 @@ proc-exit = "2"
6259
inquire = "0.7"
6360

6461
# Logging
65-
tracing.workspace = true
62+
tracing = { version = "0.1", features = ["log"] }
6663
tracing-subscriber = { version = "0.3", features = ["env-filter"] }
6764

6865
# Async, futures
@@ -76,12 +73,11 @@ tap = "1"
7673
semver = "1"
7774
reqwest = "0.12"
7875
url = "2.5"
79-
raw-window-handle = "0.6.2"
80-
ironrdp-core = { workspace = true, features = ["alloc"] }
81-
uuid = { version = "1.12.1"}
76+
raw-window-handle = "0.6"
77+
uuid = { version = "1.12" }
8278

8379
[target.'cfg(windows)'.dependencies]
84-
windows = { workspace = true, features = ["Win32_Foundation"] }
80+
windows = { version = "0.58", features = ["Win32_Foundation"] }
8581

8682
[lints]
8783
workspace = true

crates/ironrdp-cliprdr-format/Cargo.toml

+2-3
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@ readme = "README.md"
55
description = "CLIPRDR format conversion library"
66
edition.workspace = true
77
license.workspace = true
8-
98
homepage.workspace = true
109
repository.workspace = true
1110
authors.workspace = true
@@ -17,8 +16,8 @@ doctest = false
1716
test = false
1817

1918
[dependencies]
20-
ironrdp-core.workspace = true
21-
thiserror.workspace = true # FIXME: handwrite the Error trait implementations.
19+
ironrdp-core = { path = "../ironrdp-core", version = "0.1" }
20+
thiserror = "1" # FIXME: handwrite the Error trait implementations.
2221
png = "0.17"
2322

2423
[lints]

crates/ironrdp-cliprdr-native/Cargo.toml

+5-6
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@ readme = "README.md"
55
description = "Native CLIPRDR static channel backend implementations for IronRDP"
66
edition.workspace = true
77
license.workspace = true
8-
98
homepage.workspace = true
109
repository.workspace = true
1110
authors.workspace = true
@@ -17,13 +16,13 @@ doctest = false
1716
test = false
1817

1918
[dependencies]
20-
ironrdp-cliprdr.workspace = true
21-
ironrdp-core.workspace = true
22-
tracing.workspace = true
19+
ironrdp-cliprdr = { path = "../ironrdp-cliprdr", version = "0.1" }
20+
ironrdp-core = { path = "../ironrdp-core", version = "0.1" }
21+
tracing = { version = "0.1", features = ["log"] }
2322

2423
[target.'cfg(windows)'.dependencies]
25-
thiserror.workspace = true
26-
windows = { workspace = true, features = [
24+
thiserror = "1"
25+
windows = { version = "0.58", features = [
2726
"Win32_Foundation",
2827
"Win32_Graphics_Gdi",
2928
"Win32_System_DataExchange",

crates/ironrdp-cliprdr/Cargo.toml

+6-7
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@ readme = "README.md"
55
description = "CLIPRDR static channel for clipboard implemented as described in MS-RDPECLIP"
66
edition.workspace = true
77
license.workspace = true
8-
98
homepage.workspace = true
109
repository.workspace = true
1110
authors.workspace = true
@@ -17,12 +16,12 @@ doctest = false
1716
test = false
1817

1918
[dependencies]
20-
ironrdp-core.workspace = true
21-
ironrdp-pdu.workspace = true
22-
ironrdp-svc.workspace = true
23-
thiserror.workspace = true
24-
tracing.workspace = true
25-
bitflags.workspace = true
19+
ironrdp-core = { path = "../ironrdp-core", version = "0.1" }
20+
ironrdp-pdu = { path = "../ironrdp-pdu", version = "0.3" }
21+
ironrdp-svc = { path = "../ironrdp-svc", version = "0.1" }
22+
thiserror = "1.0"
23+
tracing = { version = "0.1", features = ["log"] }
24+
bitflags = "2.4"
2625

2726
[lints]
2827
workspace = true

crates/ironrdp-connector/Cargo.toml

+7-9
Original file line numberDiff line numberDiff line change
@@ -19,16 +19,14 @@ test = false
1919
arbitrary = ["dep:arbitrary"]
2020

2121
[dependencies]
22+
ironrdp-svc = { path = "../ironrdp-svc", version = "0.1" }
23+
ironrdp-core = { path = "../ironrdp-core", version = "0.1" }
24+
ironrdp-error = { path = "../ironrdp-error", version = "0.1" }
25+
ironrdp-pdu = { path = "../ironrdp-pdu", version = "0.3", features = ["std"] }
2226
arbitrary = { version = "1", features = ["derive"], optional = true }
23-
ironrdp-svc.workspace = true
24-
ironrdp-core.workspace = true
25-
ironrdp-error.workspace = true
26-
ironrdp-pdu = { workspace = true, features = ["std"] }
27-
rand_core = { version = "0.6", features = [
28-
"std",
29-
] } # TODO: dependency injection?
30-
sspi.workspace = true
31-
tracing.workspace = true
27+
rand_core = { version = "0.6", features = ["std"] } # TODO: dependency injection?
28+
sspi = "0.15"
29+
tracing = { version = "0.1", features = ["log"] }
3230
url = "2.5"
3331
picky-asn1-der = "0.5"
3432
picky-asn1-x509 = "0.14"

crates/ironrdp-core/Cargo.toml

+1-1
Original file line numberDiff line numberDiff line change
@@ -21,4 +21,4 @@ std = ["alloc", "ironrdp-error/std"]
2121
alloc = ["ironrdp-error/alloc"]
2222

2323
[dependencies]
24-
ironrdp-error.workspace = true
24+
ironrdp-error = { path = "../ironrdp-error", version = "0.1" }

crates/ironrdp-displaycontrol/Cargo.toml

+5-5
Original file line numberDiff line numberDiff line change
@@ -16,11 +16,11 @@ doctest = false
1616
test = false
1717

1818
[dependencies]
19-
ironrdp-core.workspace = true
20-
ironrdp-dvc.workspace = true
21-
ironrdp-pdu.workspace = true
22-
ironrdp-svc.workspace = true
23-
tracing.workspace = true
19+
ironrdp-core = { path = "../ironrdp-core", version = "0.1" }
20+
ironrdp-dvc = { path = "../ironrdp-dvc", version = "0.1" }
21+
ironrdp-pdu = { path = "../ironrdp-pdu", version = "0.3" }
22+
ironrdp-svc = { path = "../ironrdp-svc", version = "0.1" }
23+
tracing = { version = "0.1", features = ["log"] }
2424

2525
[lints]
2626
workspace = true

crates/ironrdp-dvc/Cargo.toml

+4-4
Original file line numberDiff line numberDiff line change
@@ -20,10 +20,10 @@ default = []
2020
std = []
2121

2222
[dependencies]
23-
ironrdp-core = { workspace = true, features = ["alloc"] }
24-
ironrdp-svc.workspace = true
25-
ironrdp-pdu = { workspace = true, features = ["alloc"] }
26-
tracing.workspace = true
23+
ironrdp-core = { path = "../ironrdp-core", version = "0.1", features = ["alloc"] }
24+
ironrdp-svc = { path = "../ironrdp-svc", version = "0.1" }
25+
ironrdp-pdu = { path = "../ironrdp-pdu", version = "0.3", features = ["alloc"] }
26+
tracing = { version = "0.1", features = ["log"] }
2727
slab = "0.4"
2828

2929
[lints]

crates/ironrdp-futures/Cargo.toml

+1-1
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ test = false
1818
[dependencies]
1919
bytes = "1"
2020
futures-util = { version = "0.3", features = ["io"] }
21-
ironrdp-async.workspace = true
21+
ironrdp-async = { path = "../ironrdp-async", version = "0.3" }
2222

2323
[lints]
2424
workspace = true

crates/ironrdp-fuzzing/Cargo.toml

+9-9
Original file line numberDiff line numberDiff line change
@@ -11,15 +11,15 @@ test = false
1111

1212
[dependencies]
1313
arbitrary = { version = "1", features = ["derive"] }
14-
ironrdp-core.workspace = true
15-
ironrdp-graphics.workspace = true
16-
ironrdp-pdu.workspace = true
17-
ironrdp-cliprdr.workspace = true
18-
ironrdp-rdpdr.workspace = true
19-
ironrdp-rdpsnd.workspace = true
20-
ironrdp-cliprdr-format.workspace = true
21-
ironrdp-displaycontrol.workspace = true
22-
ironrdp-svc.workspace = true
14+
ironrdp-core.path = "../ironrdp-core"
15+
ironrdp-graphics.path = "../ironrdp-graphics"
16+
ironrdp-pdu.path = "../ironrdp-pdu"
17+
ironrdp-cliprdr.path = "../ironrdp-cliprdr"
18+
ironrdp-rdpdr.path = "../ironrdp-rdpdr"
19+
ironrdp-rdpsnd.path = "../ironrdp-rdpsnd"
20+
ironrdp-cliprdr-format.path = "../ironrdp-cliprdr-format"
21+
ironrdp-displaycontrol.path = "../ironrdp-displaycontrol"
22+
ironrdp-svc.path = "../ironrdp-svc"
2323

2424
[lints]
2525
workspace = true

0 commit comments

Comments
 (0)