mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-20 00:35:44 +00:00
89e6512181
This lays out a Rust crate and statically links it into `windows-default-agent.exe`. It declares a single-method API (which will be invoked in the next commit). Strings cross the C/C++ <-> Rust FFI boundary as null-terminated UTF-8. (This will matter more if and when we use ETag and If-None-Match to get 304 results.) Errors are reported as Windows result codes, with the "customer" bit set to encode certain classes of failure. The bulk of the work is in implementing a [Viaduct](https://github.com/mozilla/application-services/tree/master/components/viaduct) backend built on top of `wininet.dll`. The motivation is that if and when this Remote Settings Rust client grows features (say, Content-Signature: verification), then by using Viaduct there is a smooth path to consume the client inside Firefox itself, because Viaduct already has a backend on top of Necko. That makes this abstraction relatively low friction: it exists, is in-tree already, and has a path to use in Gecko proper. It is expected that the layer above this will handle "gracefully failing", either open or closed; and will mirror Remote Settings configuration to the registry so that testers can use prod/stage/dev easily. For follow-up: - Configure logging to use the Windows event logger. See [Bug 1648617](https://bugzilla.mozilla.org/show_bug.cgi?id=1648617). - Consider propagating errors into the Telemetry we send. Differential Revision: https://phabricator.services.mozilla.com/D78579
83 lines
3.0 KiB
TOML
83 lines
3.0 KiB
TOML
[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 = [
|
|
"js/rust",
|
|
"js/src",
|
|
"js/src/frontend/smoosh",
|
|
"js/src/rust",
|
|
"js/src/wasm/cranelift",
|
|
"netwerk/test/http3server",
|
|
"security/manager/ssl/osclientcerts",
|
|
"testing/geckodriver",
|
|
"toolkit/components/updateagent",
|
|
"toolkit/crashreporter/rust",
|
|
"toolkit/library/gtest/rust",
|
|
"toolkit/library/rust/",
|
|
"toolkit/mozapps/defaultagent/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 = [
|
|
# Excluded because it's for a toolchain task
|
|
"build/liblowercase",
|
|
|
|
# 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/wgpu",
|
|
"gfx/wr",
|
|
"media/audioipc",
|
|
"media/cubeb-rs",
|
|
|
|
# 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",
|
|
"tools/lint/test/files/clippy",
|
|
"tools/fuzzing/rust",
|
|
]
|
|
|
|
# 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"
|
|
|
|
[patch.crates-io]
|
|
libudev-sys = { path = "dom/webauthn/libudev-sys" }
|
|
packed_simd = { git = "https://github.com/hsivonen/packed_simd", rev="3541e3818fdc7c2a24f87e3459151a4ce955a67a" }
|
|
rlbox_lucet_sandbox = { git = "https://github.com/PLSysSec/rlbox_lucet_sandbox/", rev="d510da5999a744c563b0acd18056069d1698273f" }
|
|
nix = { git = "https://github.com/shravanrn/nix/", branch = "r0.13.1", rev="4af6c367603869a30fddb5ffb0aba2b9477ba92e" }
|
|
spirv_cross = { git = "https://github.com/kvark/spirv_cross", branch = "wgpu3", rev = "20191ad2f370afd6d247edcb9ff9da32d3bedb9c" }
|
|
# failure's backtrace feature might break our builds, see bug 1608157.
|
|
failure = { git = "https://github.com/badboy/failure", rev = "64af847bc5fdcb6d2438bec8a6030812a80519a5" }
|
|
failure_derive = { git = "https://github.com/badboy/failure", rev = "64af847bc5fdcb6d2438bec8a6030812a80519a5" }
|
|
|
|
[patch.crates-io.cranelift-codegen]
|
|
git = "https://github.com/bytecodealliance/wasmtime"
|
|
rev = "1b3b2dbfd00492161032760992a8699d19b640ca"
|
|
|
|
[patch.crates-io.cranelift-wasm]
|
|
git = "https://github.com/bytecodealliance/wasmtime"
|
|
rev = "1b3b2dbfd00492161032760992a8699d19b640ca"
|