gecko-dev/Cargo.toml
Nick Alexander 89e6512181 Bug 1636539 - Part 2: Add defaultagent-static Rust crate fetching remote disabled flag. r=bytesized
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
2020-07-21 22:17:26 +00:00

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"