martin/Cargo.toml
Yuri Astrakhan ccd550a2cf
Add binary diff for mbtiles (#1358)
* `mbtiles diff` now has an additional `--patch-type` param with
`whole`, `bin-diff-raw` and `bin-diff-gz` values:
* `whole` stores different tiles as before - as whole tiles in the
`tiles` table
* `bin-diff-raw` computes binary difference between tiles, and stores
them as brotli-encoded value in a `bsdiffraw` table, together with a
`xxh3_64` hash of the tile as it will be stored after patching
* `bin-diff-gz` same as `bin-diff-raw`, but assumes the tiles are
gzip-compressed, so it uncompresses them before comparing. The `xxh3_64`
stores the hash of the uncompressed tile. The data will be stored in the
`bsdiffrawgz` table (identical structure with above)

* `mbtiles copy --apply-patch` will automatically detect if
`bsdiffrawgz` or `bsdiffraw` tables exist, and will use binary patching.
* `mbtiles apply-patch` does not support binary patching yet
* `mbtiles copy --diff-with-file ... --patch-type ...` is an alias to
`mbtiles diff --patch-type ...`
2024-06-25 19:34:14 +00:00

106 lines
3.5 KiB
TOML

[workspace]
resolver = "2"
members = ["martin", "martin-tile-utils", "mbtiles"]
[workspace.package]
edition = "2021"
license = "MIT OR Apache-2.0"
repository = "https://github.com/maplibre/martin"
rust-version = "1.76"
readme = "README.md"
homepage = "https://martin.maplibre.org/"
[workspace.lints.rust]
unused_qualifications = "warn"
# Lints inheritance from workspace is not yet supported
# Crate mbtiles uses unsafe code, so we can't forbid it here
# unsafe_code = "forbid"
[workspace.lints.clippy]
pedantic = { level = "warn", priority = -1 }
derive_partial_eq_without_eq = "allow"
implicit_hasher = "allow"
missing_errors_doc = "allow"
missing_panics_doc = "allow"
module_name_repetitions = "allow"
[workspace.dependencies]
actix-cors = "0.6"
actix-http = "3"
actix-rt = "2"
actix-web = "4"
anyhow = "1.0"
approx = "0.5.1"
async-trait = "0.1"
bit-set = "0.5.3"
brotli = ">=5, <7"
cargo-husky = { version = "1", features = ["user-hooks"], default-features = false }
clap = { version = "4", features = ["derive"] }
criterion = { version = "0.5", features = ["async_futures", "async_tokio", "html_reports"] }
ctor = "0.2"
deadpool-postgres = "0.12"
enum-display = "0.1"
env_logger = "0.11"
flate2 = "1"
flume = "0.11"
futures = "0.3"
indoc = "2"
insta = "1"
itertools = "0.13"
json-patch = "2.0"
lambda-web = { version = "0.2.1", features = ["actix4"] }
libsqlite3-sys = { version = ">=0.27", features = ["bundled"] }
log = "0.4"
martin-tile-utils = { path = "./martin-tile-utils", version = "0.5.0" }
mbtiles = { path = "./mbtiles", version = "0.10.0" }
md5 = "0.7.0"
moka = { version = "0.12", features = ["future"] }
num_cpus = "1"
pbf_font_tools = { version = "2.5.1", features = ["freetype"] }
pmtiles = { version = "0.10", features = ["http-async", "mmap-async-tokio", "tilejson", "reqwest-rustls-tls-native-roots"] }
postgis = "0.9"
postgres = { version = "0.19", features = ["with-time-0_3", "with-uuid-1", "with-serde_json-1"] }
postgres-protocol = "0.6"
pprof = { version = "0.13", features = ["flamegraph", "criterion"] }
pretty_assertions = "1"
regex = "1"
rstest = "0.21"
rustls = "0.23.10"
# ring feature does not require NASM windows executable, but works slower
#rustls = { version = "0.23", default-features = false, features = ["logging", "std", "tls12", "ring"] }
rustls-native-certs = "0.7"
rustls-pemfile = "2"
semver = "1"
serde = { version = "1", features = ["derive"] }
serde_json = "1"
serde_with = "3"
serde_yaml = "0.9"
size_format = "1.0.2"
spreet = { version = "0.11", default-features = false }
sqlite-compressions = { version = "0.2.12", default-features = false, features = ["bsdiffraw", "gzip"] }
sqlite-hashes = { version = "0.7.3", default-features = false, features = ["md5", "aggregate", "hex"] }
sqlx = { version = "0.7", features = ["sqlite", "runtime-tokio"] }
subst = { version = "0.3", features = ["yaml"] }
thiserror = "1"
tile-grid = "0.6"
tilejson = "0.4"
tokio = { version = "1", features = ["macros"] }
tokio-postgres-rustls = "0.12"
url = "2.5"
xxhash-rust = { version = "0.8", features = ["xxh3"] }
[profile.dev.package]
# See https://github.com/launchbadge/sqlx#compile-time-verification
sqlx-macros.opt-level = 3
# See https://docs.rs/insta/latest/insta/#optional-faster-runs
insta.opt-level = 3
similar.opt-level = 3
#[patch.crates-io]
#enum-display = { path = "../enum-display" }
#pmtiles = { path = "../pmtiles-rs" }
#sqlite-hashes = { path = "../sqlite-hashes" }
#tilejson = { path = "../tilejson" }
#pmtiles = { git = "https://github.com/nyurik/pmtiles-rs", branch = "override" }
#tilejson = { git = "https://github.com/nyurik/tilejson", branch = "btreemap" }