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
|
# uuid unstable is needed for zerocopy deserialize
|
||||||
"--cfg", "uuid_unstable",
|
"--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",
|
"redis-rate-limiter",
|
||||||
"tokio",
|
"tokio",
|
||||||
"tracing",
|
"tracing",
|
||||||
|
"workspace-hack",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
@ -1660,6 +1661,7 @@ dependencies = [
|
|||||||
"serde",
|
"serde",
|
||||||
"ulid",
|
"ulid",
|
||||||
"uuid 1.4.0",
|
"uuid 1.4.0",
|
||||||
|
"workspace-hack",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
@ -3104,6 +3106,7 @@ dependencies = [
|
|||||||
"tokio",
|
"tokio",
|
||||||
"tracing",
|
"tracing",
|
||||||
"watermill",
|
"watermill",
|
||||||
|
"workspace-hack",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
@ -3276,6 +3279,7 @@ version = "0.32.0"
|
|||||||
dependencies = [
|
dependencies = [
|
||||||
"sea-orm-migration",
|
"sea-orm-migration",
|
||||||
"tokio",
|
"tokio",
|
||||||
|
"workspace-hack",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
@ -3667,6 +3671,15 @@ version = "0.1.5"
|
|||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf"
|
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]]
|
[[package]]
|
||||||
name = "openssl-sys"
|
name = "openssl-sys"
|
||||||
version = "0.9.88"
|
version = "0.9.88"
|
||||||
@ -3675,6 +3688,7 @@ checksum = "c2ce0f250f34a308dcfdbb351f511359857d4ed2134ba715a4eadd46e1ffd617"
|
|||||||
dependencies = [
|
dependencies = [
|
||||||
"cc",
|
"cc",
|
||||||
"libc",
|
"libc",
|
||||||
|
"openssl-src",
|
||||||
"pkg-config",
|
"pkg-config",
|
||||||
"vcpkg",
|
"vcpkg",
|
||||||
]
|
]
|
||||||
@ -3866,6 +3880,7 @@ version = "0.1.0"
|
|||||||
dependencies = [
|
dependencies = [
|
||||||
"ethers",
|
"ethers",
|
||||||
"glob",
|
"glob",
|
||||||
|
"workspace-hack",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
@ -4374,6 +4389,7 @@ name = "rate-counter"
|
|||||||
version = "0.1.0"
|
version = "0.1.0"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"tokio",
|
"tokio",
|
||||||
|
"workspace-hack",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
@ -4481,6 +4497,7 @@ dependencies = [
|
|||||||
"chrono",
|
"chrono",
|
||||||
"deadpool-redis",
|
"deadpool-redis",
|
||||||
"tokio",
|
"tokio",
|
||||||
|
"workspace-hack",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
@ -6979,6 +6996,7 @@ dependencies = [
|
|||||||
"ulid",
|
"ulid",
|
||||||
"url",
|
"url",
|
||||||
"uuid 1.4.0",
|
"uuid 1.4.0",
|
||||||
|
"workspace-hack",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
@ -7206,6 +7224,105 @@ dependencies = [
|
|||||||
"windows-sys 0.48.0",
|
"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]]
|
[[package]]
|
||||||
name = "ws_stream_wasm"
|
name = "ws_stream_wasm"
|
||||||
version = "0.7.4"
|
version = "0.7.4"
|
||||||
|
@ -8,6 +8,7 @@ members = [
|
|||||||
"rate-counter",
|
"rate-counter",
|
||||||
"redis-rate-limiter",
|
"redis-rate-limiter",
|
||||||
"web3_proxy",
|
"web3_proxy",
|
||||||
|
"workspace-hack",
|
||||||
]
|
]
|
||||||
resolver = "2"
|
resolver = "2"
|
||||||
|
|
||||||
@ -20,3 +21,4 @@ inherits = "release"
|
|||||||
|
|
||||||
# spend longer compiling for a slightly faster binary
|
# spend longer compiling for a slightly faster binary
|
||||||
codegen-units = 1
|
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
|
WORKDIR /app
|
||||||
|
ENV CARGO_INCREMENTAL 0
|
||||||
ENV CARGO_TERM_COLOR always
|
ENV CARGO_TERM_COLOR always
|
||||||
ENV PATH "/root/.foundry/bin:/root/.cargo/bin:${PATH}"
|
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 \
|
liblz4-dev \
|
||||||
libpthread-stubs0-dev \
|
libpthread-stubs0-dev \
|
||||||
libsasl2-dev \
|
libsasl2-dev \
|
||||||
libssl-dev \
|
|
||||||
libzstd-dev \
|
libzstd-dev \
|
||||||
make \
|
make \
|
||||||
pkg-config
|
pkg-config
|
||||||
|
|
||||||
|
|
||||||
# install rustup
|
# install rustup
|
||||||
RUN --mount=type=cache,target=/usr/local/cargo/git \
|
RUN --mount=type=cache,target=/usr/local/cargo/git \
|
||||||
--mount=type=cache,target=/usr/local/cargo/registry \
|
--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 ]
|
cargo check || [ "$?" -eq 101 ]
|
||||||
|
|
||||||
# a next-generation test runner for Rust projects.
|
# chef splits up the rust build to hopefully cache better
|
||||||
# We only pay the installation cost once,
|
# hakari manages a 'workspace-hack' to hopefully build faster
|
||||||
# it will be cached from the second build onwards
|
# nextest runs tests in parallel
|
||||||
# TODO: more mount type cache?
|
# 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 \
|
RUN --mount=type=cache,target=/usr/local/cargo/git \
|
||||||
--mount=type=cache,target=/usr/local/cargo/registry \
|
--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
|
# foundry/anvil are needed to run tests
|
||||||
# TODO: do this in a seperate FROM and COPY it in
|
|
||||||
RUN --mount=type=cache,target=/usr/local/cargo/git \
|
RUN --mount=type=cache,target=/usr/local/cargo/git \
|
||||||
--mount=type=cache,target=/usr/local/cargo/registry \
|
--mount=type=cache,target=/usr/local/cargo/registry \
|
||||||
\
|
\
|
||||||
curl -L https://foundry.paradigm.xyz | bash && foundryup
|
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"
|
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
|
# test the application with cargo-nextest
|
||||||
RUN --mount=type=bind,target=.,rw \
|
RUN --mount=type=bind,target=.,rw \
|
||||||
--mount=type=cache,target=/usr/local/cargo/git \
|
--mount=type=cache,target=/usr/local/cargo/git \
|
||||||
--mount=type=cache,target=/usr/local/cargo/registry \
|
--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
|
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
|
# build the application
|
||||||
# using a "release" profile (which install does by default) is **very** important
|
# 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 \
|
RUN --mount=type=bind,target=.,rw \
|
||||||
--mount=type=cache,target=/usr/local/cargo/git \
|
--mount=type=cache,target=/usr/local/cargo/git \
|
||||||
--mount=type=cache,target=/usr/local/cargo/registry \
|
--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 \
|
cargo install \
|
||||||
--features "$WEB3_PROXY_FEATURES" \
|
--features "$WEB3_PROXY_FEATURES" \
|
||||||
|
@ -47,6 +47,15 @@ Quickly run tests:
|
|||||||
RUST_LOG=web3_proxy=trace,info cargo nextest run
|
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
|
## Common commands
|
||||||
|
|
||||||
Create a user:
|
Create a user:
|
||||||
|
@ -13,3 +13,4 @@ log = "0.4.19"
|
|||||||
moka = { version = "0.11.2", features = ["future"] }
|
moka = { version = "0.11.2", features = ["future"] }
|
||||||
tokio = "1.28.2"
|
tokio = "1.28.2"
|
||||||
tracing = "0.1.37"
|
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"
|
serde = "1.0.164"
|
||||||
ulid = "1.0.0"
|
ulid = "1.0.0"
|
||||||
uuid = "1.4.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"] }
|
tokio = { version = "1.28.2", features = ["full"] }
|
||||||
tracing = "0.1.37"
|
tracing = "0.1.37"
|
||||||
watermill = "0.1.1"
|
watermill = "0.1.1"
|
||||||
|
workspace-hack = { version = "0.1", path = "../workspace-hack" }
|
||||||
|
|
||||||
[dev-dependencies]
|
[dev-dependencies]
|
||||||
tokio = { version = "1.28.2", features = ["full", "test-util"] }
|
tokio = { version = "1.28.2", features = ["full", "test-util"] }
|
||||||
|
@ -10,6 +10,7 @@ path = "src/lib.rs"
|
|||||||
|
|
||||||
[dependencies]
|
[dependencies]
|
||||||
tokio = { version = "1.28.2", features = ["full", "tracing"] }
|
tokio = { version = "1.28.2", features = ["full", "tracing"] }
|
||||||
|
workspace-hack = { version = "0.1", path = "../workspace-hack" }
|
||||||
|
|
||||||
[dependencies.sea-orm-migration]
|
[dependencies.sea-orm-migration]
|
||||||
version = "0.11.3"
|
version = "0.11.3"
|
||||||
|
@ -11,3 +11,4 @@ glob = "0.3.1"
|
|||||||
|
|
||||||
[dependencies]
|
[dependencies]
|
||||||
ethers = { version = "2.0.7", default-features = false }
|
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"
|
quick_cache = "0.3.0"
|
||||||
serde = "1"
|
serde = "1"
|
||||||
tokio = { version = "1.28.2", features = ["full"] }
|
tokio = { version = "1.28.2", features = ["full"] }
|
||||||
|
workspace-hack = { version = "0.1", path = "../workspace-hack" }
|
||||||
|
|
||||||
[dev-dependencies]
|
[dev-dependencies]
|
||||||
tokio = { version = "1.28.2", features = ["full", "test-util"] }
|
tokio = { version = "1.28.2", features = ["full", "test-util"] }
|
||||||
|
@ -6,3 +6,4 @@ edition = "2021"
|
|||||||
|
|
||||||
[dependencies]
|
[dependencies]
|
||||||
tokio = { version = "1.28.2", features = ["time"] }
|
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"
|
chrono = "0.4.26"
|
||||||
deadpool-redis = { version = "0.12.0", features = ["rt_tokio_1", "serde"] }
|
deadpool-redis = { version = "0.12.0", features = ["rt_tokio_1", "serde"] }
|
||||||
tokio = "1.28.2"
|
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"]
|
deadlock_detection = ["parking_lot/deadlock_detection"]
|
||||||
mimalloc = ["dep:mimalloc"]
|
mimalloc = ["dep:mimalloc"]
|
||||||
tokio-console = ["dep:tokio-console", "dep:console-subscriber"]
|
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 = []
|
connectinfo = []
|
||||||
|
|
||||||
[dependencies]
|
[dependencies]
|
||||||
@ -103,6 +103,7 @@ ulid = { version = "1.0.0", features = ["rand", "uuid", "serde"] }
|
|||||||
url = { version = "2.4.0" }
|
url = { version = "2.4.0" }
|
||||||
uuid = { version = "1.4.0", default-features = false, features = ["fast-rng", "v4", "zerocopy"] }
|
uuid = { version = "1.4.0", default-features = false, features = ["fast-rng", "v4", "zerocopy"] }
|
||||||
derivative = "2.2.0"
|
derivative = "2.2.0"
|
||||||
|
workspace-hack = { version = "0.1", path = "../workspace-hack" }
|
||||||
|
|
||||||
[dev-dependencies]
|
[dev-dependencies]
|
||||||
test-log = { version = "0.2.12", default-features = false, features = ["trace"] }
|
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