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 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295
|
[workspace]
# These are the "root" crates, which we build and test as top-level targets.
# Their transitive dependencies and dev-dependencies are included automatically
# and do not need to be listed here. Their external dependencies are vendored
# into `third_party/rust` by `mach vendor rust`.
members = [
"browser/app/nmhproxy/",
"js/src/rust",
"netwerk/base/idna_glue",
"netwerk/test/http3server",
"security/manager/ssl/abridged_certs",
"security/manager/ssl/ipcclientcerts",
"security/manager/ssl/osclientcerts",
"security/manager/ssl/tests/unit/pkcs11testmodule",
"security/manager/ssl/tests/unit/test_trust_anchors",
"security/manager/ssl/qwac_trust_anchors",
"security/manager/ssl/trust_anchors",
"security/mls/mls_gk",
"testing/geckodriver",
"toolkit/components/uniffi-bindgen-gecko-js",
"toolkit/crashreporter/client/app",
"toolkit/crashreporter/crash_helper_server",
"toolkit/crashreporter/crash_helper_client",
"toolkit/crashreporter/minidump-analyzer/android/export",
"toolkit/crashreporter/mozwer-rust",
"toolkit/library/gtest/rust",
"toolkit/library/rust/",
"services/application-services/components/viaduct-necko",
]
# Excluded crates may be built as dependencies, but won't be considered members
# of the workspace and their dev-dependencies won't be included.
exclude = [
# Exclude third-party code vendored into mozilla-central.
"servo",
"third_party/rust",
# Excluded because these crates have their own Cargo workspaces so they can't
# be included in the top-level one.
"gfx/wr",
# Excluded because they are used only as dependencies, not top-level targets,
# so we don't need to vendor their dev-dependencies.
"gfx/webrender_bindings",
"media/mp4parse-rust/mp4parse",
"media/mp4parse-rust/mp4parse_capi",
"xpcom/rust/gkrust_utils",
"toolkit/components/protobuf/scripts",
"toolkit/crashreporter/minidump-analyzer",
"tools/lint/test/files/clippy",
"tools/fuzzing/rust",
"dom/base/rust",
"dom/origin-trials/ffi",
"ipc/rust/ipdl_utils",
# Excluded because we don't want to vendor their dependencies.
"intl/l10n/rust/l10nregistry-tests",
]
# Use the new dependency resolver to reduce some of the platform-specific dependencies.
# This is required for 'third_party/rust/wgpu-hal'
resolver = "2"
[workspace.package]
rust-version = "1.82.0"
[workspace.dependencies]
# Shared across multiple UniFFI consumers.
uniffi = "0.29.3"
uniffi_bindgen = "0.29.3"
uniffi_pipeline = "0.29.3"
# Shared across multiple application-services consumers.
rusqlite = "0.37"
# Shared across multiple glean consumers.
glean = "=66.2.0"
# Explicitly specify what our profiles use. The opt-level setting here is
# a total fiction; see the setup of MOZ_RUST_DEFAULT_FLAGS for what the
# opt-level setting will be as a result of various other configure flags.
[profile.dev]
opt-level = 1
rpath = false
lto = false
debug-assertions = true
panic = "abort"
[profile.release]
opt-level = 2
rpath = false
debug-assertions = false
panic = "abort"
# Optimize build dependencies, because bindgen and proc macros / style
# compilation take more to run than to build otherwise.
[profile.dev.build-override]
opt-level = 1
[profile.release.build-override]
opt-level = 1
# optimizing glsl more makes a big difference in swgl build times
[profile.dev.package.glsl]
opt-level = 2
[profile.release.package.glsl]
opt-level = 2
[patch.crates-io]
# The build system doesn't want those to be used, but they are pulled anyways (because
# dependencies can't be disabled based on features), but remain unused. We ensure they
# stay unused by overriding them with crates that contain enough to build the current
# code and will fail the build in unwanted cases.
cmake = { path = "build/rust/cmake" }
vcpkg = { path = "build/rust/vcpkg" }
# Helper crate for integration in the gecko build system.
mozbuild = { path = "build/rust/mozbuild" }
# Workspace hack
mozilla-central-workspace-hack = { path = "build/workspace-hack" }
# windows-targets replacement. It avoids the large dependencies of the original
# crate, which we don't really need as we require MSVC anyways.
windows-targets = { path = "build/rust/windows-targets" }
# Patch windows to use a non-vendored local copy of the crate.
windows = { path = "build/rust/windows" }
# Dummy oslog replacement. It's only used by glean in code that is not actually used.
oslog = { path = "build/rust/oslog" }
# Override terminal_size with a dummy crate that returns a fixed 80x25 terminal size.
terminal_size = { path = "build/rust/terminal_size" }
# Patch bitflags 1.0 to 2.0
bitflags = { path = "build/rust/bitflags" }
# Patch r-efi to an empty crate
r-efi = { path = "build/rust/r-efi" }
# Patch redox_users to an empty crate
redox_users = { path = "build/rust/redox_users" }
# Patch redox_syscall to an empty crate
redox_syscall = { path = "build/rust/redox_syscall" }
# Patch hermit-abi to an empty crate
hermit-abi = { path = "build/rust/hermit-abi" }
# Patch base64 0.21 to 0.22
base64_21 = { package = "base64", path = "build/rust/base64" }
# Patch wasi 0.11 to 0.14
wasi_0_11 = { package = "wasi", path = "build/rust/wasi" }
# tokio 0.29.0 includes an experimental "tracing" feature which requires
# backtrace ^0.3.58 and the `tokio_unstable` flag. We don't use it, and nothing
# else we do use requires backtrace, so dummy it out for now.
backtrace = { path = "build/rust/backtrace" }
# Locally patch bindgen to a yet-unreleased version.
bindgen_0_72 = { package = "bindgen", git = "https://github.com/rust-lang/rust-bindgen", rev = "9366e0af8da529c958b4cd4fcbe492d951c86f5c" }
# Patch bindgen 0.69 to 0.72
bindgen = { path = "build/rust/bindgen" }
# Patch nix 0.29 to 0.30+
nix = { path = "build/rust/nix" }
# Patch siphasher 0.3 to 1.0
# TODO: Remove once https://github.com/mozilla/uniffi-rs/pull/2709 lands in m-c.
siphasher = { path = "build/rust/siphasher" }
# Patch autocfg to hide rustc output. Workaround for https://github.com/cuviper/autocfg/issues/30
autocfg = { path = "third_party/rust/autocfg" }
# Patch goblin 0.7.0 to 0.8
goblin = { path = "build/rust/goblin" }
# Implement getrandom 0.2 in terms of 0.3
getrandom = { path = "build/rust/getrandom" }
# Patch rustc-hash 1.1.0 to 2.1.1
rustc-hash = { path = "build/rust/rustc-hash" }
# Patch memoffset from 0.8.0 to 0.9.0 since it's compatible and it avoids duplication
memoffset = { path = "build/rust/memoffset" }
# Patch `hashbrown` 0.13.* to depend on 0.15.*
hashbrown_0_13 = { package = "hashbrown", path = "build/rust/hashbrown-0.13" }
# Patch `hashbrown` 0.14.* to depend on 0.15.*
hashbrown_0_14 = { package = "hashbrown", path = "build/rust/hashbrown-0.14" }
# Patch `hashbrown` 0.15.* to depend on 0.16.*
hashbrown_0_15 = { package = "hashbrown", path = "build/rust/hashbrown" }
# Patch `hashlink` 0.10.* to 0.11.*
# This technically breaks `hashbrown::DefaultHashBuilder: Copy`, but it's not something we use.
hashlink = { path = "build/rust/hashlink" }
# Patch `thiserror` 1 to 2.
thiserror = { path = "build/rust/thiserror" }
# Patch `toml` 0.5 to 0.9
toml = { path = "build/rust/toml" }
# Patch thin_vec with not-yet-published changes.
thin-vec = { path = "third_party/rust/thin-vec" }
# The following overrides point to dummy projects, as a temporary measure until this is resolved:
# https://github.com/rust-lang/cargo/issues/6179
js-sys = { path = "build/rust/dummy-web/js-sys" }
wasm-bindgen = { path = "build/rust/dummy-web/wasm-bindgen" }
web-sys = { path = "build/rust/dummy-web/web-sys" }
# Upgrade `core-foundation` 0.9.* to 0.10.
core-foundation = { path = "build/rust/core-foundation" }
# Patch `core-graphics-types` 0.1.* to 0.2.
core-graphics-types = { path = "build/rust/core-graphics-types" }
# Patch `half` 1.* to 2.
half = { path = "build/rust/half" }
# Upgrade `rusqlite` 0.31 to 0.33.
rusqlite = { path = "build/rust/rusqlite" }
# Overrides to allow easier use of common internal crates.
moz_asserts = { path = "mozglue/static/rust/moz_asserts" }
# Patch `rure` to disable building the cdylib and staticlib targets
# Cargo has no way to disable building targets your dependencies provide which
# you don't depend on, and linking the cdylib breaks during instrumentation
# builds.
# Workaround for https://github.com/rust-lang/cargo/issues/11232
rure = { path = "third_party/rust/rure" }
# Patch `unicode-width` 0.1.* to 0.2.
unicode-width = { path = "build/rust/unicode-width" }
# To-be-published changes.
unicode-bidi = { git = "https://github.com/servo/unicode-bidi", rev = "ca612daf1c08c53abe07327cb3e6ef6e0a760f0c" }
nss-gk-api = { git = "https://github.com/beurdouche/nss-gk-api", rev = "e48a946811ffd64abc78de3ee284957d8d1c0d63" }
# Other overrides
any_all_workaround = { git = "https://github.com/hsivonen/any_all_workaround", rev = "7fb1b7034c9f172aade21ee1c8554e8d8a48af80" }
chardetng = { git = "https://github.com/hsivonen/chardetng", rev = "a07d20273ce36146adaf76bd667dd57bd7b3508b" }
chardetng_c = { git = "https://github.com/hsivonen/chardetng_c", rev = "2f0aba284677d098de14f91ffe5a9e5b9a4922c2" }
cose = { git = "https://github.com/franziskuskiefer/cose-rust", rev = "43c22248d136c8b38fe42ea709d08da6355cf04b" }
firefox-on-glean = { path = "toolkit/components/glean/api" }
icu_capi = { path = "intl/icu_capi" }
icu_segmenter_data = { path = "intl/icu_segmenter_data" }
libudev-sys = { path = "dom/webauthn/libudev-sys" }
midir = { git = "https://github.com/mozilla/midir.git", rev = "54759f681f3b523e120d047adec2bb1a97152017" }
# Allow webrender to have a versioned dependency on the older crate on crates.io
# in order to build standalone.
malloc_size_of_derive = { path = "xpcom/rust/malloc_size_of_derive" }
# Use the in-tree code instead of pulling it in. It matches the crates.io version
wr_malloc_size_of = { path = "gfx/wr/wr_malloc_size_of" }
# objc 0.2.7 + fa7ca43b862861dd1cd000d7ad01e6e0266cda13
objc = { git = "https://github.com/glandium/rust-objc", rev = "4de89f5aa9851ceca4d40e7ac1e2759410c04324" }
# allocator-api2 + f95e3419ce41883904fcb2279b52aa35b5f04d76 + fdd92751afa7ce34408b677004b429d597e72c90
allocator-api2 = { git = "https://github.com/glandium/allocator-api2", rev = "ad5f3d56a5a4519eff52af4ff85293431466ef5c" }
# patch ohttp - app-services relies on a version yet to be released. However, even if a new version was released it
# will have bumped the `toml` crate to a version which would cause dupes here. We should remove this and revert back
# to a published version when we can upgrade both a-s and m-c to the same version.
ohttp = { git = "https://github.com/martinthomson/ohttp.git", rev = "bf6a983845cc0b540effb3a615e92d914dfcfd0b" }
bhttp = { git = "https://github.com/martinthomson/ohttp.git", rev = "bf6a983845cc0b540effb3a615e92d914dfcfd0b" }
# application-services overrides to make updating them all simpler.
context_id = { git = "https://github.com/mozilla/application-services", rev = "799ae231ba91f5b6634672a2737cc9efdf997b70" }
error-support = { git = "https://github.com/mozilla/application-services", rev = "799ae231ba91f5b6634672a2737cc9efdf997b70" }
filter_adult = { git = "https://github.com/mozilla/application-services", rev = "799ae231ba91f5b6634672a2737cc9efdf997b70" }
interrupt-support = { git = "https://github.com/mozilla/application-services", rev = "799ae231ba91f5b6634672a2737cc9efdf997b70" }
relevancy = { git = "https://github.com/mozilla/application-services", rev = "799ae231ba91f5b6634672a2737cc9efdf997b70" }
search = { git = "https://github.com/mozilla/application-services", rev = "799ae231ba91f5b6634672a2737cc9efdf997b70" }
sql-support = { git = "https://github.com/mozilla/application-services", rev = "799ae231ba91f5b6634672a2737cc9efdf997b70" }
suggest = { git = "https://github.com/mozilla/application-services", rev = "799ae231ba91f5b6634672a2737cc9efdf997b70" }
sync15 = { git = "https://github.com/mozilla/application-services", rev = "799ae231ba91f5b6634672a2737cc9efdf997b70" }
tabs = { git = "https://github.com/mozilla/application-services", rev = "799ae231ba91f5b6634672a2737cc9efdf997b70" }
tracing-support = { git = "https://github.com/mozilla/application-services", rev = "799ae231ba91f5b6634672a2737cc9efdf997b70" }
viaduct = { git = "https://github.com/mozilla/application-services", rev = "799ae231ba91f5b6634672a2737cc9efdf997b70" }
webext-storage = { git = "https://github.com/mozilla/application-services", rev = "799ae231ba91f5b6634672a2737cc9efdf997b70" }
logins = { git = "https://github.com/mozilla/application-services", rev = "799ae231ba91f5b6634672a2737cc9efdf997b70" }
init_rust_components = { git = "https://github.com/mozilla/application-services", rev = "799ae231ba91f5b6634672a2737cc9efdf997b70" }
# Patched version of zip 2.4.2 to allow for reading omnijars.
zip = { path = "third_party/rust/zip" }
# Patch libcrux-traits to avoid unnecessary unused dependencies and conflicts.
libcrux-traits = { path = "build/rust/libcrux-traits" }
|