db99e24726
Reduces binary size of the updater staticlib when linked into the Flutter engine. On host macOS arm64 the dylib shrinks from 3.07 MB to 2.56 MB; the biggest iOS savings come from dropping the DWARF unwind tables (__eh_frame, __gcc_except_tab, __unwind_info) that panic=unwind generates. - panic = "abort" in [profile.release]: kills unwind-table generation and eliminates dead panic-unwinding code paths. We don't use catch_unwind anywhere in the library. log-panics still runs its panic hook before abort, so panic messages continue to surface to logcat/oslog during development. - Drop `backtrace` feature from anyhow and `with-backtrace` from log-panics: removes gimli + addr2line + rustc_demangle (~65 KB of symbolication machinery) that customers can't read anyway. A future in-engine crash reporter will symbolize native stacks, making these features redundant.
76 lines
2.6 KiB
TOML
76 lines
2.6 KiB
TOML
[package]
|
|
name = "updater"
|
|
version = "0.1.0"
|
|
edition = "2021"
|
|
|
|
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
|
|
|
|
[lib]
|
|
# "lib" is used by the "cli" target for testing from Rust
|
|
# "cdylib" is used by the "dart_cli" target for testing from Dart
|
|
# "staticlib" is used by the engine build for linking into libflutter.so
|
|
crate-type = ["lib", "cdylib", "staticlib"]
|
|
|
|
[dependencies]
|
|
# Used for error handling for now.
|
|
anyhow = "1.0.69"
|
|
base64 = "0.22.0"
|
|
# For inflating compressed patch files.
|
|
bipatch = "1.0.0"
|
|
# Used for exposing C API
|
|
# comde is a wrapper around several compression libraries.
|
|
# We only use zstd and could depend on it directly instead.
|
|
comde = { version = "0.3.1", default-features = false, features = [
|
|
"zstandard",
|
|
] }
|
|
dyn-clone = "1.0.16"
|
|
# For decoding the hex-encoded hashes in Patch network responses.
|
|
hex = "0.4.3"
|
|
libc = "0.2.98"
|
|
# For error!(), info!(), etc macros. `print` will not show up on Android.
|
|
log = "0.4.14"
|
|
# For implementing thread-local-storage of ResolvedConfig object.
|
|
once_cell = "1.17.1"
|
|
# Json serialization/de-serialization.
|
|
# Pipe is a simple in-memory pipe implementation, there might be a std way too?
|
|
pipe = "0.4.0"
|
|
# Used for networking. ureq is a synchronous-only HTTP client that avoids
|
|
# pulling in tokio/hyper/async machinery, significantly reducing binary size.
|
|
ureq = { version = "3", features = ["json", "rustls"] }
|
|
ring = "0.17.8"
|
|
serde = { version = "1.0", features = ["derive"] }
|
|
serde_json = "1.0.93"
|
|
# For computing hashes of patch files for validation.
|
|
sha2 = "0.11.0"
|
|
uuid = { version = "1.18.1", features = ["v4"] }
|
|
# For decompressing .apk files.
|
|
zip = { version = "8.5.1", default-features = false, features = ["deflate"] }
|
|
|
|
[target.'cfg(target_os = "android")'.dependencies]
|
|
# For logging to Android logcat.
|
|
android_logger = "0.15.0"
|
|
# Send panics to log (instead of stderr), thus logcat on Android.
|
|
log-panics = "2"
|
|
|
|
[target.'cfg(any(target_os = "ios", target_os = "macos"))'.dependencies]
|
|
# Send panics to syslog (instead of stderr).
|
|
log-panics = "2"
|
|
# Support for logging on iOS (https://developer.apple.com/documentation/oslog)
|
|
oslog = "0.2.0"
|
|
|
|
[target.'cfg(any(target_os = "linux", target_os = "windows"))'.dependencies]
|
|
simple_logger = "5.0.0"
|
|
|
|
[dev-dependencies]
|
|
mockall = "0.14.0"
|
|
mockito = "1.2.0"
|
|
mock_instant = "0.6.0"
|
|
# Gives #[serial] attribute for locking all of our shorebird_init
|
|
# tests to a single thread so they don't conflict with each other.
|
|
serial_test = "3.2.0"
|
|
tempfile = "3"
|
|
|
|
# <https://github.com/eqrion/cbindgen/blob/master/docs.md#buildrs>
|
|
[build-dependencies]
|
|
cbindgen = "0.29.2"
|