File: Cargo.toml

package info (click to toggle)
firefox 147.0.2-1
  • links: PTS, VCS
  • area: main
  • in suites: sid
  • size: 4,683,484 kB
  • sloc: cpp: 7,607,246; javascript: 6,533,185; ansic: 3,775,227; python: 1,415,393; xml: 634,561; asm: 438,951; java: 186,241; sh: 62,752; makefile: 18,079; objc: 13,092; perl: 12,808; yacc: 4,583; cs: 3,846; pascal: 3,448; lex: 1,720; ruby: 1,003; php: 436; lisp: 258; awk: 247; sql: 66; sed: 54; csh: 10; exp: 6
file content (295 lines) | stat: -rw-r--r-- 12,920 bytes parent folder | download | duplicates (2)
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" }