diff --git a/.cargo/config.toml b/.cargo/config.toml index 8d50c76b..6588dca1 100644 --- a/.cargo/config.toml +++ b/.cargo/config.toml @@ -15,3 +15,6 @@ rustdocflags = [ # uuid unstable is needed for zerocopy deserialize "--cfg", "uuid_unstable", ] + +[registries.crates-io] +protocol = "sparse" diff --git a/.config/hakari.toml b/.config/hakari.toml new file mode 100644 index 00000000..8cd45cdf --- /dev/null +++ b/.config/hakari.toml @@ -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 diff --git a/Cargo.lock b/Cargo.lock index 286fd039..84afb0c9 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -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" diff --git a/Cargo.toml b/Cargo.toml index e83ef6d5..250f5a43 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -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 + \ No newline at end of file diff --git a/Dockerfile b/Dockerfile index 2fef400d..63c1b375 100644 --- a/Dockerfile +++ b/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" \ diff --git a/README.md b/README.md index e51c050e..963db2dd 100644 --- a/README.md +++ b/README.md @@ -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: diff --git a/deferred-rate-limiter/Cargo.toml b/deferred-rate-limiter/Cargo.toml index 904fddb3..e765510f 100644 --- a/deferred-rate-limiter/Cargo.toml +++ b/deferred-rate-limiter/Cargo.toml @@ -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" } diff --git a/entities/Cargo.toml b/entities/Cargo.toml index 0973391b..85251b9d 100644 --- a/entities/Cargo.toml +++ b/entities/Cargo.toml @@ -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" } diff --git a/latency/Cargo.toml b/latency/Cargo.toml index 3fb74b95..fb8522c4 100644 --- a/latency/Cargo.toml +++ b/latency/Cargo.toml @@ -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"] } diff --git a/migration/Cargo.toml b/migration/Cargo.toml index 9dbae336..6e573b8a 100644 --- a/migration/Cargo.toml +++ b/migration/Cargo.toml @@ -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" diff --git a/payment-contracts/Cargo.toml b/payment-contracts/Cargo.toml index 8a27e93c..a5dd8838 100644 --- a/payment-contracts/Cargo.toml +++ b/payment-contracts/Cargo.toml @@ -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" } diff --git a/quick_cache_ttl/Cargo.toml b/quick_cache_ttl/Cargo.toml index 6e0da4f4..fc007c3f 100644 --- a/quick_cache_ttl/Cargo.toml +++ b/quick_cache_ttl/Cargo.toml @@ -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"] } diff --git a/rate-counter/Cargo.toml b/rate-counter/Cargo.toml index 8751ffc4..20c3b692 100644 --- a/rate-counter/Cargo.toml +++ b/rate-counter/Cargo.toml @@ -6,3 +6,4 @@ edition = "2021" [dependencies] tokio = { version = "1.28.2", features = ["time"] } +workspace-hack = { version = "0.1", path = "../workspace-hack" } diff --git a/redis-rate-limiter/Cargo.toml b/redis-rate-limiter/Cargo.toml index 872383ee..ab549fe5 100644 --- a/redis-rate-limiter/Cargo.toml +++ b/redis-rate-limiter/Cargo.toml @@ -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" } diff --git a/web3_proxy/Cargo.toml b/web3_proxy/Cargo.toml index 5bbb19d4..af3e7939 100644 --- a/web3_proxy/Cargo.toml +++ b/web3_proxy/Cargo.toml @@ -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"] } diff --git a/workspace-hack/.gitattributes b/workspace-hack/.gitattributes new file mode 100644 index 00000000..3e9dba4b --- /dev/null +++ b/workspace-hack/.gitattributes @@ -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 diff --git a/workspace-hack/Cargo.toml b/workspace-hack/Cargo.toml new file mode 100644 index 00000000..4da26f4e --- /dev/null +++ b/workspace-hack/Cargo.toml @@ -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 diff --git a/workspace-hack/build.rs b/workspace-hack/build.rs new file mode 100644 index 00000000..92518ef0 --- /dev/null +++ b/workspace-hack/build.rs @@ -0,0 +1,2 @@ +// A build script is required for cargo to consider build dependencies. +fn main() {} diff --git a/workspace-hack/src/lib.rs b/workspace-hack/src/lib.rs new file mode 100644 index 00000000..22489f63 --- /dev/null +++ b/workspace-hack/src/lib.rs @@ -0,0 +1 @@ +// This is a stub lib.rs.