add cargo hakari and chef to build process
This commit is contained in:
parent
be22521d88
commit
272f7ce800
@ -15,3 +15,6 @@ rustdocflags = [
|
||||
# uuid unstable is needed for zerocopy deserialize
|
||||
"--cfg", "uuid_unstable",
|
||||
]
|
||||
|
||||
[registries.crates-io]
|
||||
protocol = "sparse"
|
||||
|
23
.config/hakari.toml
Normal file
23
.config/hakari.toml
Normal file
@ -0,0 +1,23 @@
|
||||
# This file contains settings for `cargo hakari`.
|
||||
# See https://docs.rs/cargo-hakari/latest/cargo_hakari/config for a full list of options.
|
||||
|
||||
hakari-package = "workspace-hack"
|
||||
|
||||
# Format version for hakari's output. Version 4 requires cargo-hakari 0.9.22 or above.
|
||||
dep-format-version = "4"
|
||||
|
||||
# Setting workspace.resolver = "2" in the root Cargo.toml is HIGHLY recommended.
|
||||
# Hakari works much better with the new feature resolver.
|
||||
# For more about the new feature resolver, see:
|
||||
# https://blog.rust-lang.org/2021/03/25/Rust-1.51.0.html#cargos-new-feature-resolver
|
||||
resolver = "2"
|
||||
|
||||
# Add triples corresponding to platforms commonly used by developers here.
|
||||
# https://doc.rust-lang.org/rustc/platform-support.html
|
||||
platforms = [
|
||||
"aarch64-unknown-linux-gnu",
|
||||
"x86_64-unknown-linux-gnu",
|
||||
]
|
||||
|
||||
# Write out exact versions rather than a semver range. (Defaults to false.)
|
||||
# exact-versions = true
|
117
Cargo.lock
generated
117
Cargo.lock
generated
@ -1431,6 +1431,7 @@ dependencies = [
|
||||
"redis-rate-limiter",
|
||||
"tokio",
|
||||
"tracing",
|
||||
"workspace-hack",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
@ -1660,6 +1661,7 @@ dependencies = [
|
||||
"serde",
|
||||
"ulid",
|
||||
"uuid 1.4.0",
|
||||
"workspace-hack",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
@ -3104,6 +3106,7 @@ dependencies = [
|
||||
"tokio",
|
||||
"tracing",
|
||||
"watermill",
|
||||
"workspace-hack",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
@ -3276,6 +3279,7 @@ version = "0.32.0"
|
||||
dependencies = [
|
||||
"sea-orm-migration",
|
||||
"tokio",
|
||||
"workspace-hack",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
@ -3667,6 +3671,15 @@ version = "0.1.5"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf"
|
||||
|
||||
[[package]]
|
||||
name = "openssl-src"
|
||||
version = "111.25.3+1.1.1t"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "924757a6a226bf60da5f7dd0311a34d2b52283dd82ddeb103208ddc66362f80c"
|
||||
dependencies = [
|
||||
"cc",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "openssl-sys"
|
||||
version = "0.9.88"
|
||||
@ -3675,6 +3688,7 @@ checksum = "c2ce0f250f34a308dcfdbb351f511359857d4ed2134ba715a4eadd46e1ffd617"
|
||||
dependencies = [
|
||||
"cc",
|
||||
"libc",
|
||||
"openssl-src",
|
||||
"pkg-config",
|
||||
"vcpkg",
|
||||
]
|
||||
@ -3866,6 +3880,7 @@ version = "0.1.0"
|
||||
dependencies = [
|
||||
"ethers",
|
||||
"glob",
|
||||
"workspace-hack",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
@ -4374,6 +4389,7 @@ name = "rate-counter"
|
||||
version = "0.1.0"
|
||||
dependencies = [
|
||||
"tokio",
|
||||
"workspace-hack",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
@ -4481,6 +4497,7 @@ dependencies = [
|
||||
"chrono",
|
||||
"deadpool-redis",
|
||||
"tokio",
|
||||
"workspace-hack",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
@ -6979,6 +6996,7 @@ dependencies = [
|
||||
"ulid",
|
||||
"url",
|
||||
"uuid 1.4.0",
|
||||
"workspace-hack",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
@ -7206,6 +7224,105 @@ dependencies = [
|
||||
"windows-sys 0.48.0",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "workspace-hack"
|
||||
version = "0.1.0"
|
||||
dependencies = [
|
||||
"Inflector",
|
||||
"allocator-api2",
|
||||
"anyhow",
|
||||
"arrayvec",
|
||||
"backtrace",
|
||||
"bitflags 1.3.2",
|
||||
"byteorder",
|
||||
"bytes",
|
||||
"cc",
|
||||
"chrono",
|
||||
"clap",
|
||||
"crossbeam-utils",
|
||||
"derive_more",
|
||||
"digest 0.10.7",
|
||||
"ecdsa",
|
||||
"either",
|
||||
"elliptic-curve",
|
||||
"ethbloom",
|
||||
"ethers",
|
||||
"ethers-contract",
|
||||
"ethers-contract-abigen",
|
||||
"ethers-etherscan",
|
||||
"ethers-middleware",
|
||||
"ethers-providers",
|
||||
"futures",
|
||||
"futures-channel",
|
||||
"futures-core",
|
||||
"futures-io",
|
||||
"futures-sink",
|
||||
"futures-task",
|
||||
"futures-util",
|
||||
"generic-array",
|
||||
"getrandom",
|
||||
"hashbrown 0.14.0",
|
||||
"heck 0.4.1",
|
||||
"hyper",
|
||||
"indexmap 1.9.3",
|
||||
"io-lifetimes",
|
||||
"ipnet",
|
||||
"k256",
|
||||
"lazy_static",
|
||||
"libc",
|
||||
"lock_api",
|
||||
"log",
|
||||
"memchr",
|
||||
"num-bigint",
|
||||
"num-integer",
|
||||
"num-iter",
|
||||
"num-traits",
|
||||
"once_cell",
|
||||
"openssl-sys",
|
||||
"parking_lot 0.12.1",
|
||||
"parking_lot_core 0.9.8",
|
||||
"rand",
|
||||
"rand_core",
|
||||
"rdkafka",
|
||||
"rdkafka-sys",
|
||||
"regex",
|
||||
"regex-syntax 0.7.2",
|
||||
"reqwest",
|
||||
"rust_decimal",
|
||||
"rustix",
|
||||
"sea-orm",
|
||||
"sea-query",
|
||||
"sea-query-binder",
|
||||
"serde",
|
||||
"serde_json",
|
||||
"sha1",
|
||||
"sha2 0.10.6",
|
||||
"sha3",
|
||||
"signal-hook",
|
||||
"spki 0.7.2",
|
||||
"sqlx",
|
||||
"sqlx-core",
|
||||
"sqlx-macros",
|
||||
"subtle",
|
||||
"syn 1.0.109",
|
||||
"syn 2.0.22",
|
||||
"time 0.3.22",
|
||||
"time-macros",
|
||||
"tokio",
|
||||
"tokio-stream",
|
||||
"tokio-util",
|
||||
"tower",
|
||||
"tracing",
|
||||
"tracing-core",
|
||||
"tracing-subscriber",
|
||||
"ulid",
|
||||
"unicode-bidi",
|
||||
"unicode-normalization",
|
||||
"url",
|
||||
"uuid 1.4.0",
|
||||
"zeroize",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "ws_stream_wasm"
|
||||
version = "0.7.4"
|
||||
|
@ -8,6 +8,7 @@ members = [
|
||||
"rate-counter",
|
||||
"redis-rate-limiter",
|
||||
"web3_proxy",
|
||||
"workspace-hack",
|
||||
]
|
||||
resolver = "2"
|
||||
|
||||
@ -20,3 +21,4 @@ inherits = "release"
|
||||
|
||||
# spend longer compiling for a slightly faster binary
|
||||
codegen-units = 1
|
||||
|
53
Dockerfile
53
Dockerfile
@ -1,6 +1,7 @@
|
||||
FROM debian:bullseye-slim as builder
|
||||
FROM debian:bullseye-slim as rust
|
||||
|
||||
WORKDIR /app
|
||||
ENV CARGO_INCREMENTAL 0
|
||||
ENV CARGO_TERM_COLOR always
|
||||
ENV PATH "/root/.foundry/bin:/root/.cargo/bin:${PATH}"
|
||||
|
||||
@ -19,12 +20,10 @@ RUN --mount=type=cache,target=/var/cache/apt,sharing=locked \
|
||||
liblz4-dev \
|
||||
libpthread-stubs0-dev \
|
||||
libsasl2-dev \
|
||||
libssl-dev \
|
||||
libzstd-dev \
|
||||
make \
|
||||
pkg-config
|
||||
|
||||
|
||||
# install rustup
|
||||
RUN --mount=type=cache,target=/usr/local/cargo/git \
|
||||
--mount=type=cache,target=/usr/local/cargo/registry \
|
||||
@ -38,36 +37,60 @@ RUN --mount=type=cache,target=/usr/local/cargo/git \
|
||||
\
|
||||
cargo check || [ "$?" -eq 101 ]
|
||||
|
||||
# a next-generation test runner for Rust projects.
|
||||
# We only pay the installation cost once,
|
||||
# it will be cached from the second build onwards
|
||||
# TODO: more mount type cache?
|
||||
# chef splits up the rust build to hopefully cache better
|
||||
# hakari manages a 'workspace-hack' to hopefully build faster
|
||||
# nextest runs tests in parallel
|
||||
# We only pay the installation cost once, it will be cached from the second build onwards
|
||||
RUN --mount=type=cache,target=/usr/local/cargo/git \
|
||||
--mount=type=cache,target=/usr/local/cargo/registry \
|
||||
\
|
||||
cargo install --locked cargo-nextest
|
||||
cargo install --locked cargo-chef cargo-hakari cargo-nextest
|
||||
|
||||
# foundry is needed to run tests
|
||||
# TODO: do this in a seperate FROM and COPY it in
|
||||
# foundry/anvil are needed to run tests
|
||||
RUN --mount=type=cache,target=/usr/local/cargo/git \
|
||||
--mount=type=cache,target=/usr/local/cargo/registry \
|
||||
\
|
||||
curl -L https://foundry.paradigm.xyz | bash && foundryup
|
||||
|
||||
# changing our features doesn't change any of the steps above
|
||||
ENV WEB3_PROXY_FEATURES "rdkafka-src,connectinfo"
|
||||
|
||||
FROM builder as build_tests
|
||||
# chef plan
|
||||
RUN --mount=type=bind,target=.,rw \
|
||||
--mount=type=cache,target=/usr/local/cargo/git \
|
||||
--mount=type=cache,target=/usr/local/cargo/registry \
|
||||
--mount=type=cache,target=/app/target \
|
||||
\
|
||||
cargo chef prepare --recipe-path /recipe.json
|
||||
|
||||
FROM rust as build_tests
|
||||
|
||||
# chef cook the test app
|
||||
RUN --mount=type=cache,target=/usr/local/cargo/git \
|
||||
--mount=type=cache,target=/usr/local/cargo/registry \
|
||||
--mount=type=cache,target=/app/target,id=build_tests_target \
|
||||
\
|
||||
cargo chef cook --recipe-path /recipe.json
|
||||
|
||||
# test the application with cargo-nextest
|
||||
RUN --mount=type=bind,target=.,rw \
|
||||
--mount=type=cache,target=/usr/local/cargo/git \
|
||||
--mount=type=cache,target=/usr/local/cargo/registry \
|
||||
--mount=type=cache,target=/app/target,sharing=private \
|
||||
--mount=type=cache,target=/app/target,id=build_tests_target \
|
||||
\
|
||||
RUST_LOG=web3_proxy=trace,info cargo --locked nextest run --features "$WEB3_PROXY_FEATURES" --no-default-features && \
|
||||
cargo hakari generate --diff && \
|
||||
cargo hakari manage-deps --dry-run && \
|
||||
RUST_LOG=web3_proxy=trace,info cargo --locked nextest run --profile ci --features "$WEB3_PROXY_FEATURES" --no-default-features && \
|
||||
touch /test_success
|
||||
|
||||
FROM builder as build_app
|
||||
FROM rust as build_app
|
||||
|
||||
# chef cook the app
|
||||
RUN --mount=type=cache,target=/usr/local/cargo/git \
|
||||
--mount=type=cache,target=/usr/local/cargo/registry \
|
||||
--mount=type=cache,target=/app/target,id=build_app_target \
|
||||
\
|
||||
cargo chef cook --release --recipe-path /recipe.json
|
||||
|
||||
# build the application
|
||||
# using a "release" profile (which install does by default) is **very** important
|
||||
@ -75,7 +98,7 @@ FROM builder as build_app
|
||||
RUN --mount=type=bind,target=.,rw \
|
||||
--mount=type=cache,target=/usr/local/cargo/git \
|
||||
--mount=type=cache,target=/usr/local/cargo/registry \
|
||||
--mount=type=cache,target=/app/target,sharing=private \
|
||||
--mount=type=cache,target=/app/target,id=build_app_target \
|
||||
\
|
||||
cargo install \
|
||||
--features "$WEB3_PROXY_FEATURES" \
|
||||
|
@ -47,6 +47,15 @@ Quickly run tests:
|
||||
RUST_LOG=web3_proxy=trace,info cargo nextest run
|
||||
```
|
||||
|
||||
Keep workspace-hack package up-to-date:
|
||||
|
||||
```
|
||||
cargo install cargo-hakari --locked
|
||||
|
||||
cargo hakari generate
|
||||
cargo hakari verify
|
||||
```
|
||||
|
||||
## Common commands
|
||||
|
||||
Create a user:
|
||||
|
@ -13,3 +13,4 @@ log = "0.4.19"
|
||||
moka = { version = "0.11.2", features = ["future"] }
|
||||
tokio = "1.28.2"
|
||||
tracing = "0.1.37"
|
||||
workspace-hack = { version = "0.1", path = "../workspace-hack" }
|
||||
|
@ -15,3 +15,4 @@ sea-orm = "0.11.3"
|
||||
serde = "1.0.164"
|
||||
ulid = "1.0.0"
|
||||
uuid = "1.4.0"
|
||||
workspace-hack = { version = "0.1", path = "../workspace-hack" }
|
||||
|
@ -13,6 +13,7 @@ serde = { version = "1.0.164", features = [] }
|
||||
tokio = { version = "1.28.2", features = ["full"] }
|
||||
tracing = "0.1.37"
|
||||
watermill = "0.1.1"
|
||||
workspace-hack = { version = "0.1", path = "../workspace-hack" }
|
||||
|
||||
[dev-dependencies]
|
||||
tokio = { version = "1.28.2", features = ["full", "test-util"] }
|
||||
|
@ -10,6 +10,7 @@ path = "src/lib.rs"
|
||||
|
||||
[dependencies]
|
||||
tokio = { version = "1.28.2", features = ["full", "tracing"] }
|
||||
workspace-hack = { version = "0.1", path = "../workspace-hack" }
|
||||
|
||||
[dependencies.sea-orm-migration]
|
||||
version = "0.11.3"
|
||||
|
@ -11,3 +11,4 @@ glob = "0.3.1"
|
||||
|
||||
[dependencies]
|
||||
ethers = { version = "2.0.7", default-features = false }
|
||||
workspace-hack = { version = "0.1", path = "../workspace-hack" }
|
||||
|
@ -11,6 +11,7 @@ log = "0.4.18"
|
||||
quick_cache = "0.3.0"
|
||||
serde = "1"
|
||||
tokio = { version = "1.28.2", features = ["full"] }
|
||||
workspace-hack = { version = "0.1", path = "../workspace-hack" }
|
||||
|
||||
[dev-dependencies]
|
||||
tokio = { version = "1.28.2", features = ["full", "test-util"] }
|
||||
|
@ -6,3 +6,4 @@ edition = "2021"
|
||||
|
||||
[dependencies]
|
||||
tokio = { version = "1.28.2", features = ["time"] }
|
||||
workspace-hack = { version = "0.1", path = "../workspace-hack" }
|
||||
|
@ -9,3 +9,4 @@ anyhow = "1.0.71"
|
||||
chrono = "0.4.26"
|
||||
deadpool-redis = { version = "0.12.0", features = ["rt_tokio_1", "serde"] }
|
||||
tokio = "1.28.2"
|
||||
workspace-hack = { version = "0.1", path = "../workspace-hack" }
|
||||
|
@ -11,7 +11,7 @@ default = ["connectinfo", "deadlock_detection"]
|
||||
deadlock_detection = ["parking_lot/deadlock_detection"]
|
||||
mimalloc = ["dep:mimalloc"]
|
||||
tokio-console = ["dep:tokio-console", "dep:console-subscriber"]
|
||||
rdkafka-src = ["rdkafka/cmake-build", "rdkafka/libz", "rdkafka/ssl", "rdkafka/zstd-pkg-config"]
|
||||
rdkafka-src = ["rdkafka/cmake-build", "rdkafka/libz", "rdkafka/ssl-vendored", "rdkafka/zstd-pkg-config"]
|
||||
connectinfo = []
|
||||
|
||||
[dependencies]
|
||||
@ -103,6 +103,7 @@ ulid = { version = "1.0.0", features = ["rand", "uuid", "serde"] }
|
||||
url = { version = "2.4.0" }
|
||||
uuid = { version = "1.4.0", default-features = false, features = ["fast-rng", "v4", "zerocopy"] }
|
||||
derivative = "2.2.0"
|
||||
workspace-hack = { version = "0.1", path = "../workspace-hack" }
|
||||
|
||||
[dev-dependencies]
|
||||
test-log = { version = "0.2.12", default-features = false, features = ["trace"] }
|
||||
|
4
workspace-hack/.gitattributes
vendored
Normal file
4
workspace-hack/.gitattributes
vendored
Normal file
@ -0,0 +1,4 @@
|
||||
# Avoid putting conflict markers in the generated Cargo.toml file, since their presence breaks
|
||||
# Cargo.
|
||||
# Also do not check out the file as CRLF on Windows, as that's what hakari needs.
|
||||
Cargo.toml merge=binary -crlf
|
210
workspace-hack/Cargo.toml
Normal file
210
workspace-hack/Cargo.toml
Normal file
@ -0,0 +1,210 @@
|
||||
# This file is generated by `cargo hakari`.
|
||||
# To regenerate, run:
|
||||
# cargo hakari generate
|
||||
|
||||
[package]
|
||||
name = "workspace-hack"
|
||||
version = "0.1.0"
|
||||
description = "workspace-hack package, managed by hakari"
|
||||
# You can choose to publish this crate: see https://docs.rs/cargo-hakari/latest/cargo_hakari/publishing.
|
||||
publish = false
|
||||
|
||||
# The parts of the file between the BEGIN HAKARI SECTION and END HAKARI SECTION comments
|
||||
# are managed by hakari.
|
||||
|
||||
### BEGIN HAKARI SECTION
|
||||
[dependencies]
|
||||
Inflector = { version = "0.11" }
|
||||
allocator-api2 = { version = "0.2", default-features = false, features = ["alloc", "nightly"] }
|
||||
anyhow = { version = "1", features = ["backtrace"] }
|
||||
arrayvec = { version = "0.7", default-features = false, features = ["std"] }
|
||||
backtrace = { version = "0.3", features = ["gimli-symbolize"] }
|
||||
bitflags = { version = "1" }
|
||||
byteorder = { version = "1" }
|
||||
bytes = { version = "1", features = ["serde"] }
|
||||
chrono = { version = "0.4", features = ["serde"] }
|
||||
clap = { version = "3", features = ["cargo", "derive", "env"] }
|
||||
crossbeam-utils = { version = "0.8" }
|
||||
digest = { version = "0.10", features = ["mac", "oid", "std"] }
|
||||
ecdsa = { version = "0.16", default-features = false, features = ["pkcs8", "signing", "std", "verifying"] }
|
||||
either = { version = "1" }
|
||||
elliptic-curve = { version = "0.13", default-features = false, features = ["arithmetic", "digest", "hazmat", "pkcs8", "std"] }
|
||||
ethbloom = { version = "0.13", features = ["codec"] }
|
||||
ethers = { version = "2", features = ["ws"] }
|
||||
ethers-contract = { version = "2", default-features = false, features = ["abigen", "rustls"] }
|
||||
ethers-contract-abigen = { version = "2", default-features = false, features = ["rustls"] }
|
||||
ethers-etherscan = { version = "2", default-features = false, features = ["rustls"] }
|
||||
ethers-middleware = { version = "2", default-features = false, features = ["rustls"] }
|
||||
ethers-providers = { version = "2", default-features = false, features = ["rustls", "ws"] }
|
||||
futures = { version = "0.3" }
|
||||
futures-channel = { version = "0.3", features = ["sink"] }
|
||||
futures-core = { version = "0.3" }
|
||||
futures-io = { version = "0.3" }
|
||||
futures-sink = { version = "0.3" }
|
||||
futures-task = { version = "0.3" }
|
||||
futures-util = { version = "0.3", features = ["channel", "io", "sink"] }
|
||||
generic-array = { version = "0.14", default-features = false, features = ["more_lengths", "zeroize"] }
|
||||
getrandom = { version = "0.2", default-features = false, features = ["js", "rdrand", "std"] }
|
||||
hashbrown = { version = "0.14", features = ["nightly", "raw", "serde"] }
|
||||
indexmap = { version = "1", default-features = false, features = ["std"] }
|
||||
io-lifetimes = { version = "1" }
|
||||
k256 = { version = "0.13" }
|
||||
lazy_static = { version = "1", default-features = false, features = ["spin_no_std"] }
|
||||
lock_api = { version = "0.4", features = ["arc_lock", "nightly"] }
|
||||
log = { version = "0.4", default-features = false, features = ["kv_unstable", "std"] }
|
||||
memchr = { version = "2" }
|
||||
num-bigint = { version = "0.4" }
|
||||
num-integer = { version = "0.1", features = ["i128"] }
|
||||
num-iter = { version = "0.1", default-features = false, features = ["i128", "std"] }
|
||||
num-traits = { version = "0.2", features = ["i128", "libm"] }
|
||||
parking_lot = { version = "0.12", features = ["arc_lock", "deadlock_detection", "nightly"] }
|
||||
parking_lot_core = { version = "0.9", default-features = false, features = ["deadlock_detection", "nightly"] }
|
||||
rand = { version = "0.8", features = ["serde1", "small_rng"] }
|
||||
rand_core = { version = "0.6", default-features = false, features = ["serde1", "std"] }
|
||||
rdkafka = { version = "0.32", features = ["cmake-build", "ssl-vendored", "tracing", "zstd-pkg-config"] }
|
||||
rdkafka-sys = { version = "4", default-features = false, features = ["cmake-build", "libz", "ssl-vendored", "zstd-pkg-config"] }
|
||||
regex = { version = "1" }
|
||||
regex-syntax = { version = "0.7" }
|
||||
reqwest = { version = "0.11", features = ["blocking", "deflate", "gzip", "json", "native-tls", "rustls-tls", "socks", "stream"] }
|
||||
rust_decimal = { version = "1", features = ["maths"] }
|
||||
sea-orm = { version = "0.11", features = ["runtime-tokio-rustls", "sqlx-mysql"] }
|
||||
sea-query = { version = "0.28", features = ["thread-safe", "with-bigdecimal", "with-chrono", "with-json", "with-rust_decimal", "with-time", "with-uuid"] }
|
||||
sea-query-binder = { version = "0.3", default-features = false, features = ["runtime-tokio-rustls", "sqlx-mysql", "with-bigdecimal", "with-chrono", "with-json", "with-rust_decimal", "with-time", "with-uuid"] }
|
||||
serde = { version = "1", features = ["alloc", "derive", "rc"] }
|
||||
serde_json = { version = "1", features = ["arbitrary_precision", "raw_value", "unbounded_depth"] }
|
||||
sha1 = { version = "0.10" }
|
||||
sha2 = { version = "0.10" }
|
||||
sha3 = { version = "0.10" }
|
||||
spki = { version = "0.7", default-features = false, features = ["std"] }
|
||||
sqlx = { version = "0.6", default-features = false, features = ["bigdecimal", "chrono", "decimal", "json", "mysql", "runtime-tokio-rustls", "time", "uuid"] }
|
||||
sqlx-core = { version = "0.6", default-features = false, features = ["any", "bigdecimal", "chrono", "decimal", "json", "mysql", "runtime-tokio-rustls", "time", "uuid"] }
|
||||
subtle = { version = "2", default-features = false, features = ["i128"] }
|
||||
syn-f595c2ba2a3f28df = { package = "syn", version = "2", features = ["extra-traits", "full", "visit", "visit-mut"] }
|
||||
time = { version = "0.3", features = ["formatting", "macros", "parsing", "serde"] }
|
||||
tokio = { version = "1", features = ["full", "test-util", "tracing"] }
|
||||
tokio-stream = { version = "0.1", features = ["fs", "net", "sync"] }
|
||||
tokio-util = { version = "0.7", features = ["codec", "io"] }
|
||||
tower = { version = "0.4", features = ["balance", "buffer", "limit", "timeout", "util"] }
|
||||
tracing = { version = "0.1", features = ["log"] }
|
||||
tracing-core = { version = "0.1" }
|
||||
tracing-subscriber = { version = "0.3", features = ["env-filter", "parking_lot"] }
|
||||
ulid = { version = "1", features = ["serde", "uuid"] }
|
||||
unicode-bidi = { version = "0.3" }
|
||||
unicode-normalization = { version = "0.1" }
|
||||
url = { version = "2", features = ["serde"] }
|
||||
uuid = { version = "1", features = ["fast-rng", "serde", "v4", "zerocopy"] }
|
||||
zeroize = { version = "1" }
|
||||
|
||||
[build-dependencies]
|
||||
Inflector = { version = "0.11" }
|
||||
allocator-api2 = { version = "0.2", default-features = false, features = ["alloc", "nightly"] }
|
||||
anyhow = { version = "1", features = ["backtrace"] }
|
||||
arrayvec = { version = "0.7", default-features = false, features = ["std"] }
|
||||
backtrace = { version = "0.3", features = ["gimli-symbolize"] }
|
||||
bitflags = { version = "1" }
|
||||
byteorder = { version = "1" }
|
||||
bytes = { version = "1", features = ["serde"] }
|
||||
cc = { version = "1", default-features = false, features = ["parallel"] }
|
||||
chrono = { version = "0.4", features = ["serde"] }
|
||||
crossbeam-utils = { version = "0.8" }
|
||||
derive_more = { version = "0.99", features = ["nightly"] }
|
||||
digest = { version = "0.10", features = ["mac", "oid", "std"] }
|
||||
ecdsa = { version = "0.16", default-features = false, features = ["pkcs8", "signing", "std", "verifying"] }
|
||||
either = { version = "1" }
|
||||
elliptic-curve = { version = "0.13", default-features = false, features = ["arithmetic", "digest", "hazmat", "pkcs8", "std"] }
|
||||
ethbloom = { version = "0.13", features = ["codec"] }
|
||||
ethers = { version = "2", features = ["ws"] }
|
||||
ethers-contract = { version = "2", default-features = false, features = ["abigen", "rustls"] }
|
||||
ethers-contract-abigen = { version = "2", default-features = false, features = ["rustls"] }
|
||||
ethers-etherscan = { version = "2", default-features = false, features = ["rustls"] }
|
||||
ethers-middleware = { version = "2", default-features = false, features = ["rustls"] }
|
||||
ethers-providers = { version = "2", default-features = false, features = ["rustls", "ws"] }
|
||||
futures-channel = { version = "0.3", features = ["sink"] }
|
||||
futures-core = { version = "0.3" }
|
||||
futures-io = { version = "0.3" }
|
||||
futures-sink = { version = "0.3" }
|
||||
futures-task = { version = "0.3" }
|
||||
futures-util = { version = "0.3", features = ["channel", "io", "sink"] }
|
||||
generic-array = { version = "0.14", default-features = false, features = ["more_lengths", "zeroize"] }
|
||||
getrandom = { version = "0.2", default-features = false, features = ["js", "rdrand", "std"] }
|
||||
hashbrown = { version = "0.14", features = ["nightly", "raw", "serde"] }
|
||||
heck = { version = "0.4", features = ["unicode"] }
|
||||
indexmap = { version = "1", default-features = false, features = ["std"] }
|
||||
k256 = { version = "0.13" }
|
||||
lazy_static = { version = "1", default-features = false, features = ["spin_no_std"] }
|
||||
lock_api = { version = "0.4", features = ["arc_lock", "nightly"] }
|
||||
log = { version = "0.4", default-features = false, features = ["kv_unstable", "std"] }
|
||||
memchr = { version = "2" }
|
||||
num-bigint = { version = "0.4" }
|
||||
num-integer = { version = "0.1", features = ["i128"] }
|
||||
num-iter = { version = "0.1", default-features = false, features = ["i128", "std"] }
|
||||
num-traits = { version = "0.2", features = ["i128", "libm"] }
|
||||
parking_lot = { version = "0.12", features = ["arc_lock", "deadlock_detection", "nightly"] }
|
||||
parking_lot_core = { version = "0.9", default-features = false, features = ["deadlock_detection", "nightly"] }
|
||||
rand = { version = "0.8", features = ["serde1", "small_rng"] }
|
||||
rand_core = { version = "0.6", default-features = false, features = ["serde1", "std"] }
|
||||
regex = { version = "1" }
|
||||
regex-syntax = { version = "0.7" }
|
||||
reqwest = { version = "0.11", features = ["blocking", "deflate", "gzip", "json", "native-tls", "rustls-tls", "socks", "stream"] }
|
||||
rust_decimal = { version = "1", features = ["maths"] }
|
||||
serde = { version = "1", features = ["alloc", "derive", "rc"] }
|
||||
serde_json = { version = "1", features = ["arbitrary_precision", "raw_value", "unbounded_depth"] }
|
||||
sha1 = { version = "0.10" }
|
||||
sha2 = { version = "0.10" }
|
||||
sha3 = { version = "0.10" }
|
||||
spki = { version = "0.7", default-features = false, features = ["std"] }
|
||||
sqlx-core = { version = "0.6", default-features = false, features = ["any", "bigdecimal", "chrono", "decimal", "json", "mysql", "runtime-tokio-rustls", "time", "uuid"] }
|
||||
sqlx-macros = { version = "0.6", default-features = false, features = ["bigdecimal", "chrono", "decimal", "json", "mysql", "runtime-tokio-rustls", "time", "uuid"] }
|
||||
subtle = { version = "2", default-features = false, features = ["i128"] }
|
||||
syn-dff4ba8e3ae991db = { package = "syn", version = "1", features = ["extra-traits", "fold", "full", "visit", "visit-mut"] }
|
||||
syn-f595c2ba2a3f28df = { package = "syn", version = "2", features = ["extra-traits", "full", "visit", "visit-mut"] }
|
||||
time = { version = "0.3", features = ["formatting", "macros", "parsing", "serde"] }
|
||||
time-macros = { version = "0.2", default-features = false, features = ["formatting", "parsing", "serde"] }
|
||||
tokio = { version = "1", features = ["full", "test-util", "tracing"] }
|
||||
tokio-stream = { version = "0.1", features = ["fs", "net", "sync"] }
|
||||
tokio-util = { version = "0.7", features = ["codec", "io"] }
|
||||
tracing = { version = "0.1", features = ["log"] }
|
||||
tracing-core = { version = "0.1" }
|
||||
unicode-bidi = { version = "0.3" }
|
||||
unicode-normalization = { version = "0.1" }
|
||||
url = { version = "2", features = ["serde"] }
|
||||
uuid = { version = "1", features = ["fast-rng", "serde", "v4", "zerocopy"] }
|
||||
zeroize = { version = "1" }
|
||||
|
||||
[target.aarch64-unknown-linux-gnu.dependencies]
|
||||
hyper = { version = "0.14", features = ["full", "nightly"] }
|
||||
ipnet = { version = "2", features = ["json"] }
|
||||
libc = { version = "0.2", features = ["extra_traits"] }
|
||||
once_cell = { version = "1", features = ["unstable"] }
|
||||
openssl-sys = { version = "0.9", default-features = false, features = ["vendored"] }
|
||||
rustix = { version = "0.37", features = ["fs", "termios"] }
|
||||
signal-hook = { version = "0.3" }
|
||||
|
||||
[target.aarch64-unknown-linux-gnu.build-dependencies]
|
||||
hyper = { version = "0.14", features = ["full", "nightly"] }
|
||||
io-lifetimes = { version = "1" }
|
||||
ipnet = { version = "2", features = ["json"] }
|
||||
libc = { version = "0.2", features = ["extra_traits"] }
|
||||
once_cell = { version = "1", features = ["unstable"] }
|
||||
openssl-sys = { version = "0.9", default-features = false, features = ["vendored"] }
|
||||
rustix = { version = "0.37", features = ["fs", "termios"] }
|
||||
|
||||
[target.x86_64-unknown-linux-gnu.dependencies]
|
||||
hyper = { version = "0.14", features = ["full", "nightly"] }
|
||||
ipnet = { version = "2", features = ["json"] }
|
||||
libc = { version = "0.2", features = ["extra_traits"] }
|
||||
once_cell = { version = "1", features = ["unstable"] }
|
||||
openssl-sys = { version = "0.9", default-features = false, features = ["vendored"] }
|
||||
rustix = { version = "0.37", features = ["fs", "termios"] }
|
||||
signal-hook = { version = "0.3" }
|
||||
|
||||
[target.x86_64-unknown-linux-gnu.build-dependencies]
|
||||
hyper = { version = "0.14", features = ["full", "nightly"] }
|
||||
io-lifetimes = { version = "1" }
|
||||
ipnet = { version = "2", features = ["json"] }
|
||||
libc = { version = "0.2", features = ["extra_traits"] }
|
||||
once_cell = { version = "1", features = ["unstable"] }
|
||||
openssl-sys = { version = "0.9", default-features = false, features = ["vendored"] }
|
||||
rustix = { version = "0.37", features = ["fs", "termios"] }
|
||||
|
||||
### END HAKARI SECTION
|
2
workspace-hack/build.rs
Normal file
2
workspace-hack/build.rs
Normal file
@ -0,0 +1,2 @@
|
||||
// A build script is required for cargo to consider build dependencies.
|
||||
fn main() {}
|
1
workspace-hack/src/lib.rs
Normal file
1
workspace-hack/src/lib.rs
Normal file
@ -0,0 +1 @@
|
||||
// This is a stub lib.rs.
|
Loading…
Reference in New Issue
Block a user