2018-03-02 01:33:35 +03:00
|
|
|
[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 = [
|
2024-03-13 22:01:05 +03:00
|
|
|
"browser/app/nmhproxy/",
|
2020-02-28 17:17:33 +03:00
|
|
|
"js/src/frontend/smoosh",
|
2018-09-25 16:56:56 +03:00
|
|
|
"js/src/rust",
|
2024-07-09 14:26:43 +03:00
|
|
|
"netwerk/base/idna_glue",
|
2020-03-28 23:06:41 +03:00
|
|
|
"netwerk/test/http3server",
|
2022-10-31 20:09:43 +03:00
|
|
|
"security/manager/ssl/builtins",
|
2024-06-03 21:08:05 +03:00
|
|
|
"security/manager/ssl/tests/unit/test_builtins",
|
2021-12-18 04:30:24 +03:00
|
|
|
"security/manager/ssl/ipcclientcerts",
|
2019-09-18 20:27:50 +03:00
|
|
|
"security/manager/ssl/osclientcerts",
|
2018-03-02 01:33:35 +03:00
|
|
|
"testing/geckodriver",
|
2022-08-03 21:59:35 +03:00
|
|
|
"toolkit/components/uniffi-bindgen-gecko-js",
|
2024-03-20 17:59:46 +03:00
|
|
|
"toolkit/crashreporter/client/app",
|
2021-04-07 10:55:23 +03:00
|
|
|
"toolkit/crashreporter/mozwer-rust",
|
2022-10-31 20:09:43 +03:00
|
|
|
"toolkit/crashreporter/rust_minidump_writer_linux",
|
2018-03-02 01:33:35 +03:00
|
|
|
"toolkit/library/gtest/rust",
|
|
|
|
"toolkit/library/rust/",
|
|
|
|
]
|
|
|
|
|
|
|
|
# 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.
|
2018-11-23 00:47:48 +03:00
|
|
|
"gfx/wr",
|
2018-03-02 01:33:35 +03:00
|
|
|
|
|
|
|
# Excluded because they are used only as dependencies, not top-level targets,
|
|
|
|
# so we don't need to vendor their dev-dependencies.
|
2018-11-23 00:47:48 +03:00
|
|
|
"gfx/webrender_bindings",
|
2018-03-02 01:33:35 +03:00
|
|
|
"media/mp4parse-rust/mp4parse",
|
|
|
|
"media/mp4parse-rust/mp4parse_capi",
|
2019-02-11 21:03:12 +03:00
|
|
|
"xpcom/rust/gkrust_utils",
|
2020-02-19 11:50:35 +03:00
|
|
|
"tools/lint/test/files/clippy",
|
2019-09-21 00:27:35 +03:00
|
|
|
"tools/fuzzing/rust",
|
2022-06-08 02:09:52 +03:00
|
|
|
"dom/base/rust",
|
2022-02-18 16:57:30 +03:00
|
|
|
"dom/origin-trials/ffi",
|
2023-06-08 02:07:05 +03:00
|
|
|
|
|
|
|
# Excluded because we don't want to vendor their dependencies.
|
2023-07-21 15:05:38 +03:00
|
|
|
"intl/l10n/rust/l10nregistry-tests",
|
2018-03-02 01:33:35 +03:00
|
|
|
]
|
|
|
|
|
2021-09-02 00:11:33 +03:00
|
|
|
# Use the new dependency resolver to reduce some of the platform-specific dependencies.
|
2021-09-03 19:52:08 +03:00
|
|
|
# This is required for 'third_party/rust/wgpu-hal'
|
2021-09-02 00:11:33 +03:00
|
|
|
resolver = "2"
|
|
|
|
|
2023-01-31 14:12:05 +03:00
|
|
|
[workspace.dependencies]
|
|
|
|
# Shared across multiple UniFFI consumers.
|
2024-06-10 19:15:28 +03:00
|
|
|
uniffi = "0.27.3"
|
|
|
|
uniffi_bindgen = "0.27.3"
|
2023-12-13 17:28:12 +03:00
|
|
|
# Shared across multiple application-services consumers.
|
2024-05-29 23:34:18 +03:00
|
|
|
rusqlite = "0.31.0"
|
2024-06-26 15:52:44 +03:00
|
|
|
# Shared across multiple glean consumers.
|
2024-08-08 17:58:04 +03:00
|
|
|
glean = "=60.5.0"
|
2023-01-31 14:12:05 +03:00
|
|
|
|
2018-03-09 17:31:17 +03:00
|
|
|
# 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.
|
2018-03-02 01:33:35 +03:00
|
|
|
[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"
|
|
|
|
|
2020-12-04 04:35:51 +03:00
|
|
|
# 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
|
|
|
|
|
2021-03-16 17:28:07 +03:00
|
|
|
# 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
|
|
|
|
|
2018-03-02 01:33:35 +03:00
|
|
|
[patch.crates-io]
|
2021-12-17 04:16:06 +03:00
|
|
|
# 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" }
|
|
|
|
|
2022-01-26 00:29:50 +03:00
|
|
|
# Helper crate for integration in the gecko build system.
|
|
|
|
mozbuild = { path = "build/rust/mozbuild" }
|
|
|
|
|
Bug 1838354 - Change how the rust workspace hack is added. r=firefox-build-system-reviewers,webdriver-reviewers,ahochheiden,whimboo
First, instead of using a path, use a version, which is more convenient
(via a patch in the top-level Cargo.toml).
Second, we make the build system itself enforce its presence for any
crate that is hooked to the build system as a program or library.
Finally, for each crate depending on the workspace hack, we add a
feature named after it, and make the build system enforce that the
feature is set. For now, this remains unused, but the end goal is to
have each of those features enable the dependencies each of these
crates need, so that if crate A and B need dependency D, but crate C
doesn't, building crate C doesn't build D.
Differential Revision: https://phabricator.services.mozilla.com/D180910
2023-06-21 10:31:44 +03:00
|
|
|
# Workspace hack
|
|
|
|
mozilla-central-workspace-hack = { path = "build/workspace-hack" }
|
|
|
|
|
2023-07-19 23:16:02 +03:00
|
|
|
# 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" }
|
2024-01-24 01:54:10 +03:00
|
|
|
|
2024-02-06 17:57:53 +03:00
|
|
|
# Patch windows to use a non-vendored local copy of the crate.
|
|
|
|
windows = { path = "build/rust/windows" }
|
|
|
|
|
2023-06-03 00:42:02 +03:00
|
|
|
# Dummy oslog replacement. It's only used by glean in code that is not actually used.
|
|
|
|
oslog = { path = "build/rust/oslog" }
|
|
|
|
|
2023-06-07 23:11:12 +03:00
|
|
|
# Override terminal_size with a dummy crate that returns a fixed 80x25 terminal size.
|
|
|
|
terminal_size = { path = "build/rust/terminal_size" }
|
|
|
|
|
2024-01-17 00:16:00 +03:00
|
|
|
# Patch bitflags 1.0 to 2.0
|
2023-04-06 16:38:54 +03:00
|
|
|
bitflags = { path = "build/rust/bitflags" }
|
|
|
|
|
2022-05-31 00:37:33 +03:00
|
|
|
# Patch redox_users to an empty crate
|
|
|
|
redox_users = { path = "build/rust/redox_users" }
|
|
|
|
|
2023-07-19 23:16:02 +03:00
|
|
|
# Patch redox_syscall to an empty crate
|
|
|
|
redox_syscall = { path = "build/rust/redox_syscall" }
|
|
|
|
|
2024-07-31 05:53:15 +03:00
|
|
|
# Patch hermit-abi to an empty crate
|
|
|
|
hermit-abi = { path = "build/rust/hermit-abi" }
|
|
|
|
|
2023-04-18 00:12:47 +03:00
|
|
|
# Patch base64 0.13 to 0.21
|
|
|
|
base64 = { path = "build/rust/base64" }
|
|
|
|
|
2022-06-16 01:03:20 +03:00
|
|
|
# Patch wasi 0.10 to 0.11
|
|
|
|
wasi = { path = "build/rust/wasi" }
|
|
|
|
|
2023-10-17 01:26:00 +03:00
|
|
|
# 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" }
|
|
|
|
|
2024-02-05 18:03:52 +03:00
|
|
|
# Patch bindgen 0.63 to 0.69
|
2023-06-21 11:52:22 +03:00
|
|
|
bindgen_0_63 = { package = "bindgen", path = "build/rust/bindgen-0.63" }
|
2024-05-02 15:17:47 +03:00
|
|
|
# Locally patch bindgen for https://github.com/rust-lang/rust-bindgen/pull/2824
|
|
|
|
bindgen = { path = "third_party/rust/bindgen" }
|
2022-12-01 01:06:50 +03:00
|
|
|
|
2024-04-22 16:42:39 +03:00
|
|
|
# Patch nix 0.26 to 0.28
|
2022-12-13 03:24:03 +03:00
|
|
|
nix = { path = "build/rust/nix" }
|
|
|
|
|
2023-07-22 01:00:04 +03:00
|
|
|
# Patch indexmap 2.0 to 1.0
|
|
|
|
indexmap = { path = "build/rust/indexmap" }
|
|
|
|
|
2023-08-02 03:25:47 +03:00
|
|
|
# Patch derive_more 0.99 to 1.0.0-beta
|
|
|
|
derive_more = { path = "build/rust/derive_more" }
|
|
|
|
|
2021-12-16 00:40:22 +03:00
|
|
|
# Patch autocfg to hide rustc output. Workaround for https://github.com/cuviper/autocfg/issues/30
|
|
|
|
autocfg = { path = "third_party/rust/autocfg" }
|
|
|
|
|
2024-04-10 20:23:00 +03:00
|
|
|
# Patch goblin 0.7.0 to 0.8
|
2023-07-21 15:05:38 +03:00
|
|
|
goblin = { path = "build/rust/goblin" }
|
|
|
|
|
|
|
|
# Patch memoffset from 0.8.0 to 0.9.0 since it's compatible and it avoids duplication
|
|
|
|
memoffset = { path = "build/rust/memoffset" }
|
|
|
|
|
2024-05-02 21:17:34 +03:00
|
|
|
# Patch `hashbrown` 0.12.* to depend on 0.14.*
|
|
|
|
hashbrown = { path = "build/rust/hashbrown" }
|
|
|
|
|
2024-05-21 12:34:47 +03:00
|
|
|
# Patch `socket2` 0.4 to 0.5
|
|
|
|
socket2 = { path = "build/rust/socket2" }
|
|
|
|
|
2021-09-03 19:52:08 +03:00
|
|
|
# The following overrides point to dummy projects, as a temporary measure until this is resolved:
|
|
|
|
# https://github.com/rust-lang/cargo/issues/6179
|
2022-01-07 12:14:10 +03:00
|
|
|
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" }
|
2019-04-23 18:37:34 +03:00
|
|
|
|
2022-01-08 00:24:45 +03:00
|
|
|
# Overrides to allow easier use of common internal crates.
|
|
|
|
moz_asserts = { path = "mozglue/static/rust/moz_asserts" }
|
|
|
|
|
2022-10-14 00:46:07 +03:00
|
|
|
# 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" }
|
|
|
|
|
2024-05-02 21:17:35 +03:00
|
|
|
# Patch `plist` to work with `indexmap` 2.*
|
|
|
|
plist = { path = "third_party/rust/plist" }
|
|
|
|
|
2023-11-15 00:44:44 +03:00
|
|
|
# To-be-published changes.
|
2024-03-08 20:22:09 +03:00
|
|
|
unicode-bidi = { git = "https://github.com/servo/unicode-bidi", rev = "ca612daf1c08c53abe07327cb3e6ef6e0a760f0c" }
|
2023-11-15 00:44:44 +03:00
|
|
|
|
2021-12-16 00:40:22 +03:00
|
|
|
# Other overrides
|
2024-04-30 10:29:44 +03:00
|
|
|
any_all_workaround = { git = "https://github.com/hsivonen/any_all_workaround", rev = "7fb1b7034c9f172aade21ee1c8554e8d8a48af80" }
|
2023-07-21 15:05:38 +03:00
|
|
|
chardetng = { git = "https://github.com/hsivonen/chardetng", rev = "3484d3e3ebdc8931493aa5df4d7ee9360a90e76b" }
|
|
|
|
chardetng_c = { git = "https://github.com/hsivonen/chardetng_c", rev = "ed8a4c6f900a90d4dbc1d64b856e61490a1c3570" }
|
|
|
|
coremidi = { git = "https://github.com/chris-zen/coremidi.git", rev = "fc68464b5445caf111e41f643a2e69ccce0b4f83" }
|
2023-06-06 16:23:08 +03:00
|
|
|
cose = { git = "https://github.com/franziskuskiefer/cose-rust", rev = "43c22248d136c8b38fe42ea709d08da6355cf04b" }
|
2023-01-21 02:14:03 +03:00
|
|
|
firefox-on-glean = { path = "toolkit/components/glean/api" }
|
2023-12-04 12:02:35 +03:00
|
|
|
icu_capi = { path = "intl/icu_capi" }
|
|
|
|
icu_segmenter_data = { path = "intl/icu_segmenter_data" }
|
2021-12-16 00:40:22 +03:00
|
|
|
libudev-sys = { path = "dom/webauthn/libudev-sys" }
|
2024-01-17 00:16:00 +03:00
|
|
|
midir = { git = "https://github.com/mozilla/midir.git", rev = "85156e360a37d851734118104619f86bd18e94c6" }
|
2023-08-04 08:44:54 +03:00
|
|
|
# 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" }
|
2021-01-15 15:19:13 +03:00
|
|
|
|
2022-06-03 15:41:13 +03:00
|
|
|
# application-services overrides to make updating them all simpler.
|
2024-09-04 23:19:33 +03:00
|
|
|
interrupt-support = { git = "https://github.com/mozilla/application-services", rev = "dbeaef2eb28e9da7cc2f96e26296513cc4e07c07" }
|
|
|
|
relevancy = { git = "https://github.com/mozilla/application-services", rev = "dbeaef2eb28e9da7cc2f96e26296513cc4e07c07" }
|
|
|
|
sql-support = { git = "https://github.com/mozilla/application-services", rev = "dbeaef2eb28e9da7cc2f96e26296513cc4e07c07" }
|
|
|
|
suggest = { git = "https://github.com/mozilla/application-services", rev = "dbeaef2eb28e9da7cc2f96e26296513cc4e07c07" }
|
|
|
|
sync15 = { git = "https://github.com/mozilla/application-services", rev = "dbeaef2eb28e9da7cc2f96e26296513cc4e07c07" }
|
|
|
|
tabs = { git = "https://github.com/mozilla/application-services", rev = "dbeaef2eb28e9da7cc2f96e26296513cc4e07c07" }
|
|
|
|
viaduct = { git = "https://github.com/mozilla/application-services", rev = "dbeaef2eb28e9da7cc2f96e26296513cc4e07c07" }
|
|
|
|
webext-storage = { git = "https://github.com/mozilla/application-services", rev = "dbeaef2eb28e9da7cc2f96e26296513cc4e07c07" }
|
2022-06-03 15:41:13 +03:00
|
|
|
|
2024-05-02 21:17:36 +03:00
|
|
|
# Patch `gpu-descriptor` 0.3.0 to remove unnecessary `allocator-api2` dep.:
|
|
|
|
# Still waiting for the now-merged <https://github.com/zakarumych/gpu-descriptor/pull/40> to be released.
|
|
|
|
gpu-descriptor = { git = "https://github.com/zakarumych/gpu-descriptor", rev = "7b71a4e47c81903ad75e2c53deb5ab1310f6ff4d" }
|