From da46e602c684548cfd0251b67a46ae7773ae99bc Mon Sep 17 00:00:00 2001 From: Pieter Date: Thu, 27 Oct 2022 09:49:03 +0200 Subject: [PATCH] refactor: combine runtimes into one (#438) * feat: add --legacy flag * refactor: merge next and legacy runtimes * refactor: merge proto crates * refactor: rename to runtime * refactor: promote runtime * refactor: update README.md * refactor: cargo sort --- Cargo.lock | 896 +++++++++++++++++- Cargo.toml | 3 +- deployer/Cargo.toml | 2 +- proto/Cargo.toml | 2 +- proto/build.rs | 5 +- {runtimes/proto => proto}/runtime.proto | 0 proto/src/lib.rs | 4 + provisioner/Cargo.toml | 2 +- {runtimes/legacy => runtime}/Cargo.toml | 17 +- runtime/Makefile | 13 + runtime/README.md | 34 + {runtimes/legacy => runtime}/src/args.rs | 4 + .../src => runtime/src/legacy}/error.rs | 0 .../src/lib.rs => runtime/src/legacy/mod.rs | 5 +- runtime/src/lib.rs | 7 + {runtimes/legacy => runtime}/src/main.rs | 21 +- .../src/lib.rs => runtime/src/next/mod.rs | 6 +- runtimes/Cargo.toml | 7 - runtimes/Makefile | 16 - runtimes/legacy/README.md | 16 - runtimes/next/Cargo.toml | 28 - runtimes/next/README.md | 20 - runtimes/next/src/args.rs | 9 - runtimes/next/src/main.rs | 33 - runtimes/proto/Cargo.toml | 12 - runtimes/proto/build.rs | 5 - runtimes/proto/src/lib.rs | 3 - {runtimes => tmp}/wasm/Cargo.toml | 0 {runtimes => tmp}/wasm/src/lib.rs | 0 29 files changed, 985 insertions(+), 185 deletions(-) rename {runtimes/proto => proto}/runtime.proto (100%) rename {runtimes/legacy => runtime}/Cargo.toml (64%) create mode 100644 runtime/Makefile create mode 100644 runtime/README.md rename {runtimes/legacy => runtime}/src/args.rs (72%) rename {runtimes/legacy/src => runtime/src/legacy}/error.rs (100%) rename runtimes/legacy/src/lib.rs => runtime/src/legacy/mod.rs (98%) create mode 100644 runtime/src/lib.rs rename {runtimes/legacy => runtime}/src/main.rs (58%) rename runtimes/next/src/lib.rs => runtime/src/next/mod.rs (96%) delete mode 100644 runtimes/Cargo.toml delete mode 100644 runtimes/Makefile delete mode 100644 runtimes/legacy/README.md delete mode 100644 runtimes/next/Cargo.toml delete mode 100644 runtimes/next/README.md delete mode 100644 runtimes/next/src/args.rs delete mode 100644 runtimes/next/src/main.rs delete mode 100644 runtimes/proto/Cargo.toml delete mode 100644 runtimes/proto/build.rs delete mode 100644 runtimes/proto/src/lib.rs rename {runtimes => tmp}/wasm/Cargo.toml (100%) rename {runtimes => tmp}/wasm/src/lib.rs (100%) diff --git a/Cargo.lock b/Cargo.lock index da0b4fa99..e556fcf2b 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -12,6 +12,15 @@ dependencies = [ "regex", ] +[[package]] +name = "addr2line" +version = "0.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9ecd88a8c8378ca913a680cd98f0f13ac67383d35993f86c90a70e3f137816b" +dependencies = [ + "gimli", +] + [[package]] name = "adler" version = "1.0.2" @@ -142,6 +151,12 @@ dependencies = [ "alloc-no-stdlib", ] +[[package]] +name = "ambient-authority" +version = "0.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec8ad6edb4840b78c5c3d88de606b22252d552b55f3a4699fbb10fc070ec3049" + [[package]] name = "android_system_properties" version = "0.1.5" @@ -178,6 +193,12 @@ version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "23b62fc65de8e4e7f52534fb52b0f3ed04746ae267519eef2a83941e8085068b" +[[package]] +name = "arrayvec" +version = "0.7.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8da52d66c7071e2e3fa2a1e5c6d088fec47b593032b254f5e980de8ea54454d6" + [[package]] name = "async-channel" version = "1.6.1" @@ -460,7 +481,7 @@ version = "0.2.14" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8" dependencies = [ - "hermit-abi", + "hermit-abi 0.1.19", "libc", "winapi", ] @@ -874,7 +895,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b64485778c4f16a6a5a9d335e80d449ac6c70cdd6a06d2af18a6f6f775a125b3" dependencies = [ "arrayref", - "arrayvec", + "arrayvec 0.5.2", "cc", "cfg-if 0.1.10", "constant_time_eq", @@ -1078,6 +1099,71 @@ dependencies = [ "serde", ] +[[package]] +name = "cap-fs-ext" +version = "0.26.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b0e103ce36d217d568903ad27b14ec2238ecb5d65bad2e756a8f3c0d651506e" +dependencies = [ + "cap-primitives", + "cap-std", + "io-lifetimes", + "windows-sys", +] + +[[package]] +name = "cap-primitives" +version = "0.26.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "af3f336aa91cce16033ed3c94ac91d98956c49b420e6d6cd0dd7d0e386a57085" +dependencies = [ + "ambient-authority", + "fs-set-times", + "io-extras", + "io-lifetimes", + "ipnet", + "maybe-owned", + "rustix", + "winapi-util", + "windows-sys", + "winx", +] + +[[package]] +name = "cap-rand" +version = "0.26.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d14b9606aa9550d34651bc481443203bc014237bdb992d201d2afa62d2ec6dea" +dependencies = [ + "ambient-authority", + "rand 0.8.5", +] + +[[package]] +name = "cap-std" +version = "0.26.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c9d6e70b626eceac9d6fc790fe2d72cc3f2f7bc3c35f467690c54a526b0f56db" +dependencies = [ + "cap-primitives", + "io-extras", + "io-lifetimes", + "ipnet", + "rustix", +] + +[[package]] +name = "cap-time-ext" +version = "0.26.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c3a0524f7c4cff2ea547ae2b652bf7a348fd3e48f76556dc928d8b45ab2f1d50" +dependencies = [ + "cap-primitives", + "once_cell", + "rustix", + "winx", +] + [[package]] name = "cargo" version = "0.64.0" @@ -1550,6 +1636,15 @@ version = "0.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5827cebf4670468b8772dd191856768aedcb1b0278a04f989f7766351917b9dc" +[[package]] +name = "cpp_demangle" +version = "0.3.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eeaa953eaad386a53111e47172c2fedba671e5684c8dd601a5f474f4f118710f" +dependencies = [ + "cfg-if 1.0.0", +] + [[package]] name = "cpufeatures" version = "0.2.2" @@ -1565,6 +1660,107 @@ version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dcb25d077389e53838a8158c8e99174c5a9d902dee4904320db714f3c653ffba" +[[package]] +name = "cranelift-bforest" +version = "0.89.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "be5e1ee4c22871d24a95196ea7047d58c1d978e46c88037d3d397b3b3e0af360" +dependencies = [ + "cranelift-entity", +] + +[[package]] +name = "cranelift-codegen" +version = "0.89.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "70f600a52d59eed56a85f33750873b3b42d61e35ca777cd792369893f9e1f9dd" +dependencies = [ + "arrayvec 0.7.2", + "bumpalo", + "cranelift-bforest", + "cranelift-codegen-meta", + "cranelift-codegen-shared", + "cranelift-entity", + "cranelift-isle", + "gimli", + "log", + "regalloc2", + "smallvec", + "target-lexicon", +] + +[[package]] +name = "cranelift-codegen-meta" +version = "0.89.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e8418218d0953d73e9b96e9d9ffec56145efa4f18988251530b5872ae4410563" +dependencies = [ + "cranelift-codegen-shared", +] + +[[package]] +name = "cranelift-codegen-shared" +version = "0.89.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f01be0cfd40aba59153236ab4b99062131b5bbe6f9f3d4bcb238bd2f96ff5262" + +[[package]] +name = "cranelift-entity" +version = "0.89.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ddae4fec5d6859233ffa175b61d269443c473b3971a2c3e69008c8d3e83d5825" +dependencies = [ + "serde", +] + +[[package]] +name = "cranelift-frontend" +version = "0.89.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f2cc3deb0df97748434cf9f7e404f1f5134f6a253fc9a6bca25c5cd6804c08d3" +dependencies = [ + "cranelift-codegen", + "log", + "smallvec", + "target-lexicon", +] + +[[package]] +name = "cranelift-isle" +version = "0.89.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fc3bb54287de9c36ba354eb849fefb77b5e73955058745fd08f12cfdfa181866" +dependencies = [ + "rayon", +] + +[[package]] +name = "cranelift-native" +version = "0.89.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d8c2a4f2efdce1de1f94e74f12b3b4144e3bcafa6011338b87388325d72d2120" +dependencies = [ + "cranelift-codegen", + "libc", + "target-lexicon", +] + +[[package]] +name = "cranelift-wasm" +version = "0.89.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f918c37eb01f5b5ccc632e0ef3b4bf9ee03b5d4c267d3d2d3b62720a6bce0180" +dependencies = [ + "cranelift-codegen", + "cranelift-entity", + "cranelift-frontend", + "itertools", + "log", + "smallvec", + "wasmparser", + "wasmtime-types", +] + [[package]] name = "crates-index" version = "0.18.8" @@ -1974,6 +2170,16 @@ dependencies = [ "subtle", ] +[[package]] +name = "directories-next" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "339ee130d97a610ea5a5872d2bbb130fdf68884ff09d3028b81bec8a1ac23bbc" +dependencies = [ + "cfg-if 1.0.0", + "dirs-sys-next", +] + [[package]] name = "dirs" version = "4.0.0" @@ -2127,12 +2333,39 @@ dependencies = [ "serde", ] +[[package]] +name = "errno" +version = "0.2.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f639046355ee4f37944e44f60642c6f3a7efa3cf6b78c78a0d989a8ce6c396a1" +dependencies = [ + "errno-dragonfly", + "libc", + "winapi", +] + +[[package]] +name = "errno-dragonfly" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aa68f1b12764fab894d2755d2518754e71b4fd80ecfb822714a1206c2aab39bf" +dependencies = [ + "cc", + "libc", +] + [[package]] name = "event-listener" version = "2.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "77f3309417938f28bf8228fcff79a4a37103981e3e186d2ccd19c74b38f4eb71" +[[package]] +name = "fallible-iterator" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4443176a9f2c162692bd3d352d745ef9413eec5782a80d8fd6f8a1ac692a07f7" + [[package]] name = "fastrand" version = "1.7.0" @@ -2172,6 +2405,16 @@ dependencies = [ "version_check", ] +[[package]] +name = "file-per-thread-logger" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "21e16290574b39ee41c71aeb90ae960c504ebaf1e2a1c87bd52aa56ed6e1a02f" +dependencies = [ + "env_logger", + "log", +] + [[package]] name = "filetime" version = "0.2.16" @@ -2250,6 +2493,17 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1281c1bcf107f1cc25ca345ce4688badf37c6c13c3f193cb4b9efdc057678ae2" +[[package]] +name = "fs-set-times" +version = "0.17.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a267b6a9304912e018610d53fe07115d8b530b160e85db4d2d3a59f3ddde1aec" +dependencies = [ + "io-lifetimes", + "rustix", + "windows-sys", +] + [[package]] name = "fuchsia-cprng" version = "0.1.1" @@ -2381,6 +2635,15 @@ dependencies = [ "termcolor", ] +[[package]] +name = "fxhash" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c31b6d751ae2c7f11320402d34e41349dd1016f8d5d45e48c4312bc8625af50c" +dependencies = [ + "byteorder", +] + [[package]] name = "generator" version = "0.7.0" @@ -2446,6 +2709,17 @@ dependencies = [ "polyval 0.5.3", ] +[[package]] +name = "gimli" +version = "0.26.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "22030e2c5a68ec659fde1e949a745124b48e6fa8b045b7ed5bd1fe4ccc5c4e5d" +dependencies = [ + "fallible-iterator", + "indexmap", + "stable_deref_trait", +] + [[package]] name = "git2" version = "0.14.2" @@ -2602,6 +2876,15 @@ dependencies = [ "libc", ] +[[package]] +name = "hermit-abi" +version = "0.2.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ee512640fe35acbfb4bb779db6f0d80704c2cacfa2e39b601ef3e3f47d1ae4c7" +dependencies = [ + "libc", +] + [[package]] name = "hex" version = "0.3.2" @@ -2990,6 +3273,26 @@ dependencies = [ "cfg-if 1.0.0", ] +[[package]] +name = "io-extras" +version = "0.15.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4a5d8c2ab5becd8720e30fd25f8fa5500d8dc3fceadd8378f05859bd7b46fc49" +dependencies = [ + "io-lifetimes", + "windows-sys", +] + +[[package]] +name = "io-lifetimes" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6e481ccbe3dea62107216d0d1138bb8ad8e5e5c43009a098bd1990272c497b0" +dependencies = [ + "libc", + "windows-sys", +] + [[package]] name = "iovec" version = "0.1.4" @@ -3017,6 +3320,18 @@ version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "879d54834c8c76457ef4293a689b2a8c59b076067ad77b15efafbb05f92a592b" +[[package]] +name = "is-terminal" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0d508111813f9af3afd2f92758f77e4ed2cc9371b642112c6a48d22eb73105c5" +dependencies = [ + "hermit-abi 0.2.6", + "io-lifetimes", + "rustix", + "windows-sys", +] + [[package]] name = "itertools" version = "0.10.3" @@ -3038,6 +3353,26 @@ version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "112c678d4050afce233f4f2852bb2eb519230b3cf12f33585275537d7e41578d" +[[package]] +name = "ittapi" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "663fe0550070071ff59e981864a9cd3ee1c869ed0a088140d9ac4dc05ea6b1a1" +dependencies = [ + "anyhow", + "ittapi-sys", + "log", +] + +[[package]] +name = "ittapi-sys" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e21911b7183f38c71d75ab478a527f314e28db51027037ece2e5511ed9410703" +dependencies = [ + "cc", +] + [[package]] name = "jni" version = "0.19.0" @@ -3106,11 +3441,17 @@ version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "830d08ce1d1d941e6b30645f1a0eb5643013d835ce3779a5fc208261dbe10f55" +[[package]] +name = "leb128" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "884e2677b40cc8c339eaefcb701c32ef1fd2493d71118dc0ca4b6a736c93bd67" + [[package]] name = "libc" -version = "0.2.126" +version = "0.2.137" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "349d5a591cd28b49e1d1037471617a32ddcda5731b99419008085f72d5a53836" +checksum = "fc7fcc620a3bff7cdd7a365be3376c97191aeaccc2a603e600951e452615bf89" [[package]] name = "libgit2-sys" @@ -3189,6 +3530,12 @@ version = "0.5.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0717cef1bc8b636c6e1c1bbdefc09e6322da8a9321966e8928ef80d20f7f770f" +[[package]] +name = "linux-raw-sys" +version = "0.0.46" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d4d2456c373231a208ad294c33dc5bff30051eafd954cd4caae83a712b12854d" + [[package]] name = "lock_api" version = "0.4.7" @@ -3234,6 +3581,15 @@ dependencies = [ "linked-hash-map", ] +[[package]] +name = "mach" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b823e83b2affd8f40a9ee8c29dbc56404c1e34cd2710921f2801e2cf29527afa" +dependencies = [ + "libc", +] + [[package]] name = "match_cfg" version = "0.1.0" @@ -3261,6 +3617,12 @@ version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "73cbba799671b762df5a175adf59ce145165747bb891505c43d09aefbbf38beb" +[[package]] +name = "maybe-owned" +version = "0.3.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4facc753ae494aeb6e3c22f839b158aebd4f9270f55cd3c79906c45476c47ab4" + [[package]] name = "md-5" version = "0.10.1" @@ -3276,6 +3638,15 @@ version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2dffe52ecf27772e601905b7522cb4ef790d2cc203488bbd0e2fe85fcb74566d" +[[package]] +name = "memfd" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "480b5a5de855d11ff13195950bdc8b98b5e942ef47afc447f6615cdcc4e15d80" +dependencies = [ + "rustix", +] + [[package]] name = "memoffset" version = "0.6.5" @@ -3560,7 +3931,7 @@ version = "1.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "19e64526ebdee182341572e50e9ad03965aa510cd94427a4549448f285e957a1" dependencies = [ - "hermit-abi", + "hermit-abi 0.1.19", "libc", ] @@ -3594,6 +3965,18 @@ dependencies = [ "libc", ] +[[package]] +name = "object" +version = "0.29.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "21158b2c33aa6d4561f1c0a6ea283ca92bc54802a93b263e910746d679a7eb53" +dependencies = [ + "crc32fast", + "hashbrown 0.12.1", + "indexmap", + "memchr", +] + [[package]] name = "once_cell" version = "1.14.0" @@ -4171,6 +4554,15 @@ dependencies = [ "prost", ] +[[package]] +name = "psm" +version = "0.1.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5787f7cda34e3033a72192c018bc5883100330f362ef279a8cbccfce8bb4e874" +dependencies = [ + "cc", +] + [[package]] name = "queues" version = "1.1.0" @@ -4473,6 +4865,18 @@ dependencies = [ "syn 1.0.99", ] +[[package]] +name = "regalloc2" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "69025b4a161879ba90719837c06621c3d73cffa147a000aeacf458f6a9572485" +dependencies = [ + "fxhash", + "log", + "slice-group-by", + "smallvec", +] + [[package]] name = "regex" version = "1.6.0" @@ -4732,8 +5136,14 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "56770675ebc04927ded3e60633437841581c285dc6236109ea25fbf3beb7b59e" [[package]] -name = "rustc-hash" -version = "1.1.0" +name = "rustc-demangle" +version = "0.1.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7ef03e0a2b150c7a90d01faf6254c9c48a41e95fb2a8c2ac1c6f0d2b9aefc342" + +[[package]] +name = "rustc-hash" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2" @@ -4783,6 +5193,22 @@ dependencies = [ "serde_json", ] +[[package]] +name = "rustix" +version = "0.35.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "985947f9b6423159c4726323f373be0a21bdb514c5af06a849cb3d2dce2d01e8" +dependencies = [ + "bitflags", + "errno", + "io-lifetimes", + "itoa 1.0.2", + "libc", + "linux-raw-sys", + "once_cell", + "windows-sys", +] + [[package]] name = "rustls" version = "0.19.1" @@ -5266,6 +5692,15 @@ version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "45bb67a18fa91266cc7807181f62f9178a6873bfad7dc788c42e6430db40184f" +[[package]] +name = "shellexpand" +version = "2.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7ccc8076840c4da029af4f87e4e8daeb0fca6b87bbb02e10cb60b791450e11e4" +dependencies = [ + "dirs", +] + [[package]] name = "shuttle-codegen" version = "0.7.0" @@ -5415,6 +5850,28 @@ dependencies = [ "tracing-subscriber", ] +[[package]] +name = "shuttle-runtime" +version = "0.1.0" +dependencies = [ + "anyhow", + "async-trait", + "cap-std", + "clap 4.0.18", + "serenity", + "shuttle-common", + "shuttle-proto", + "shuttle-service", + "thiserror", + "tokio", + "tonic", + "tracing", + "tracing-subscriber", + "wasi-common", + "wasmtime", + "wasmtime-wasi", +] + [[package]] name = "shuttle-secrets" version = "0.7.0" @@ -5517,6 +5974,12 @@ version = "0.4.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "eb703cfe953bccee95685111adeedb76fabe4e97549a58d16f03ea7b9367bb32" +[[package]] +name = "slice-group-by" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "03b634d87b960ab1a38c4fe143b508576f075e7c978bfad18217645ebfdfa2ec" + [[package]] name = "smallvec" version = "1.10.0" @@ -5786,6 +6249,12 @@ dependencies = [ "memchr", ] +[[package]] +name = "stable_deref_trait" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3" + [[package]] name = "standback" version = "0.2.17" @@ -5959,6 +6428,22 @@ version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "20518fe4a4c9acf048008599e464deb21beeae3d3578418951a189c235a7a9a8" +[[package]] +name = "system-interface" +version = "0.23.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "92adbaf536f5aff6986e1e62ba36cee72b1718c5153eee08b9e728ddde3f6029" +dependencies = [ + "atty", + "bitflags", + "cap-fs-ext", + "cap-std", + "io-lifetimes", + "rustix", + "windows-sys", + "winx", +] + [[package]] name = "take_mut" version = "0.2.2" @@ -5976,6 +6461,12 @@ dependencies = [ "xattr", ] +[[package]] +name = "target-lexicon" +version = "0.12.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c02424087780c9b71cc96799eaeddff35af2bc513278cda5c99fc1f5d026d3c1" + [[package]] name = "task-local-extensions" version = "0.1.1" @@ -6453,9 +6944,9 @@ dependencies = [ [[package]] name = "tonic" -version = "0.8.0" +version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "498f271adc46acce75d66f639e4d35b31b2394c295c82496727dafa16d465dd2" +checksum = "55b9af819e54b8f33d453655bef9b9acc171568fb49523078d0cc4e7484200ec" dependencies = [ "async-stream", "async-trait", @@ -7018,7 +7509,7 @@ version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6cbce692ab4ca2f1f3047fcf732430249c0e971bfdd2b234cf2c47ad93af5983" dependencies = [ - "arrayvec", + "arrayvec 0.5.2", "utf8parse", "vte_generate_state_changes", ] @@ -7108,6 +7599,48 @@ version = "0.11.0+wasi-snapshot-preview1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" +[[package]] +name = "wasi-cap-std-sync" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6fa9ddcfc9d85e89a10c27801376ea57d2e9421ad91336326160c56044049b49" +dependencies = [ + "anyhow", + "async-trait", + "cap-fs-ext", + "cap-rand", + "cap-std", + "cap-time-ext", + "fs-set-times", + "io-extras", + "io-lifetimes", + "is-terminal", + "once_cell", + "rustix", + "system-interface", + "tracing", + "wasi-common", + "windows-sys", +] + +[[package]] +name = "wasi-common" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fd86a0cd870709441a25d63737bd416db6cf8eb6229c0da08d29d7ab79108bbb" +dependencies = [ + "anyhow", + "bitflags", + "cap-rand", + "cap-std", + "io-extras", + "rustix", + "thiserror", + "tracing", + "wiggle", + "windows-sys", +] + [[package]] name = "wasm-bindgen" version = "0.2.81" @@ -7176,6 +7709,255 @@ version = "0.2.81" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6a89911bd99e5f3659ec4acf9c4d93b0a90fe4a2a11f15328472058edc5261be" +[[package]] +name = "wasm-encoder" +version = "0.19.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c5816e88e8ea7335016aa62eb0485747f786136d505a9b3890f8c400211d9b5f" +dependencies = [ + "leb128", +] + +[[package]] +name = "wasmparser" +version = "0.92.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7da34cec2a8c23db906cdf8b26e988d7a7f0d549eb5d51299129647af61a1b37" +dependencies = [ + "indexmap", +] + +[[package]] +name = "wasmtime" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f5fc5bb3329415030796cfa5530b2481ccef5c4f1e5150733ba94318ab004fe1" +dependencies = [ + "anyhow", + "async-trait", + "bincode", + "cfg-if 1.0.0", + "indexmap", + "libc", + "log", + "object", + "once_cell", + "paste", + "psm", + "rayon", + "serde", + "target-lexicon", + "wasmparser", + "wasmtime-cache", + "wasmtime-cranelift", + "wasmtime-environ", + "wasmtime-fiber", + "wasmtime-jit", + "wasmtime-runtime", + "wat", + "windows-sys", +] + +[[package]] +name = "wasmtime-asm-macros" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "db36545ff0940ad9bf4e9ab0ec2a4e1eaa5ebe2aa9227bcbc4af905375d9e482" +dependencies = [ + "cfg-if 1.0.0", +] + +[[package]] +name = "wasmtime-cache" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2c2101b211d9db7db8bcfb2ffa69e119fa99a20266d0e5f19bb989cb6c3280d7" +dependencies = [ + "anyhow", + "base64 0.13.0", + "bincode", + "directories-next", + "file-per-thread-logger", + "log", + "rustix", + "serde", + "sha2 0.9.9", + "toml", + "windows-sys", + "zstd", +] + +[[package]] +name = "wasmtime-cranelift" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0409e93b5eceaa4e5f498a4bce1cffc7ebe071d14582b5437c10af4aecc23f54" +dependencies = [ + "anyhow", + "cranelift-codegen", + "cranelift-entity", + "cranelift-frontend", + "cranelift-native", + "cranelift-wasm", + "gimli", + "log", + "object", + "target-lexicon", + "thiserror", + "wasmparser", + "wasmtime-environ", +] + +[[package]] +name = "wasmtime-environ" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "55240389c604f68d2e1d2573d7d3740246ab9ea2fa4fe79e10ccd51faf9b9500" +dependencies = [ + "anyhow", + "cranelift-entity", + "gimli", + "indexmap", + "log", + "object", + "serde", + "target-lexicon", + "thiserror", + "wasmparser", + "wasmtime-types", +] + +[[package]] +name = "wasmtime-fiber" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "abb9b7b94f7b40d98665feca2338808cf449fa671d01be7176861f8d9aa4a012" +dependencies = [ + "cc", + "cfg-if 1.0.0", + "rustix", + "wasmtime-asm-macros", + "windows-sys", +] + +[[package]] +name = "wasmtime-jit" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bc15e285b7073ee566e62ea4b6dd38b80465ade0ea8cd4cee13c7ac2e295cfca" +dependencies = [ + "addr2line", + "anyhow", + "bincode", + "cfg-if 1.0.0", + "cpp_demangle", + "gimli", + "ittapi", + "log", + "object", + "rustc-demangle", + "rustix", + "serde", + "target-lexicon", + "thiserror", + "wasmtime-environ", + "wasmtime-jit-debug", + "wasmtime-runtime", + "windows-sys", +] + +[[package]] +name = "wasmtime-jit-debug" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bee06d206bcf7a875eacd1e1e957c2a63f64a92934d2535dd8e15cde6d3a9ffe" +dependencies = [ + "object", + "once_cell", + "rustix", +] + +[[package]] +name = "wasmtime-runtime" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9969ff36cbf57f18c2d24679db57d0857ea7cc7d839534afc26ecc8003e9914b" +dependencies = [ + "anyhow", + "cc", + "cfg-if 1.0.0", + "indexmap", + "libc", + "log", + "mach", + "memfd", + "memoffset", + "paste", + "rand 0.8.5", + "rustix", + "thiserror", + "wasmtime-asm-macros", + "wasmtime-environ", + "wasmtime-fiber", + "wasmtime-jit-debug", + "windows-sys", +] + +[[package]] +name = "wasmtime-types" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df64c737fc9b3cdf7617bcc65e8b97cb713ceb9c9c58530b20788a8a3482b5d1" +dependencies = [ + "cranelift-entity", + "serde", + "thiserror", + "wasmparser", +] + +[[package]] +name = "wasmtime-wasi" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fb41d16dfd153d2078ea2347d311cee6c74f2a4ecc109cd9acaf860709137fdb" +dependencies = [ + "anyhow", + "wasi-cap-std-sync", + "wasi-common", + "wasmtime", + "wiggle", +] + +[[package]] +name = "wast" +version = "35.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2ef140f1b49946586078353a453a1d28ba90adfc54dde75710bc1931de204d68" +dependencies = [ + "leb128", +] + +[[package]] +name = "wast" +version = "48.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "84825b5ac7164df8260c9e2b2e814075334edbe7ac426f2469b93a5eeac23cce" +dependencies = [ + "leb128", + "memchr", + "unicode-width", + "wasm-encoder", +] + +[[package]] +name = "wat" +version = "1.0.50" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "129da4a03ec6d2a815f42c88f641824e789d5be0d86d2f90aa8a218c7068e0be" +dependencies = [ + "wast 48.0.0", +] + [[package]] name = "web-sys" version = "0.3.58" @@ -7274,6 +8056,48 @@ version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "17882f045410753661207383517a6f62ec3dbeb6a4ed2acce01f0728238d1983" +[[package]] +name = "wiggle" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2943156975c608cab1b44d28becba4196b07f18be92ea28f1e7f3372a12d81dd" +dependencies = [ + "anyhow", + "async-trait", + "bitflags", + "thiserror", + "tracing", + "wasmtime", + "wiggle-macro", +] + +[[package]] +name = "wiggle-generate" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0321263a6b1ba1e0a97174524891a14907cee68cfa183fd5389088dffbeab668" +dependencies = [ + "anyhow", + "heck", + "proc-macro2 1.0.43", + "quote 1.0.21", + "shellexpand", + "syn 1.0.99", + "witx", +] + +[[package]] +name = "wiggle-macro" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aa3d3794e5d68ef69f30e65f267c6bf18c920750d3ccd2a3ac04e77d95f66b96" +dependencies = [ + "proc-macro2 1.0.43", + "quote 1.0.21", + "syn 1.0.99", + "wiggle-generate", +] + [[package]] name = "winapi" version = "0.3.9" @@ -7366,6 +8190,29 @@ dependencies = [ "winapi", ] +[[package]] +name = "winx" +version = "0.33.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b7b01e010390eb263a4518c8cebf86cb67469d1511c00b749a47b64c39e8054d" +dependencies = [ + "bitflags", + "io-lifetimes", + "windows-sys", +] + +[[package]] +name = "witx" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e366f27a5cabcddb2706a78296a40b8fcc451e1a6aba2fc1d94b4a01bdaaef4b" +dependencies = [ + "anyhow", + "log", + "thiserror", + "wast 35.0.2", +] + [[package]] name = "xattr" version = "0.2.3" @@ -7392,3 +8239,32 @@ name = "zeroize" version = "1.5.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "94693807d016b2f2d2e14420eb3bfcca689311ff775dcf113d74ea624b7cdf07" + +[[package]] +name = "zstd" +version = "0.11.2+zstd.1.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "20cc960326ece64f010d2d2107537f26dc589a6573a316bd5b1dba685fa5fde4" +dependencies = [ + "zstd-safe", +] + +[[package]] +name = "zstd-safe" +version = "5.0.2+zstd.1.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d2a5585e04f9eea4b2a3d1eca508c4dee9592a89ef6f450c11719da0726f4db" +dependencies = [ + "libc", + "zstd-sys", +] + +[[package]] +name = "zstd-sys" +version = "2.0.1+zstd.1.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9fd07cbbc53846d9145dbffdf6dd09a7a0aa52be46741825f5c97bdd4f73f12b" +dependencies = [ + "cc", + "libc", +] diff --git a/Cargo.toml b/Cargo.toml index eae7bbd14..57fa71713 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -7,6 +7,7 @@ members = [ "gateway", "proto", "provisioner", + "runtime", "service" ] exclude = [ @@ -16,5 +17,5 @@ exclude = [ "resources/persist", "resources/secrets", "resources/shared-db", - "runtimes" + "tmp" ] diff --git a/deployer/Cargo.toml b/deployer/Cargo.toml index 2e6ea3cb8..fa6f90edb 100644 --- a/deployer/Cargo.toml +++ b/deployer/Cargo.toml @@ -33,7 +33,7 @@ tar = "0.4.38" thiserror = "1.0.24" tokio = { version = "1.19.2", features = ["fs"] } toml = "0.5.9" -tonic = "0.8.0" +tonic = "0.8.2" tower = { version = "0.4.12", features = ["make"] } tower-http = { version = "0.3.4", features = ["auth", "trace"] } tracing = "0.1.35" diff --git a/proto/Cargo.toml b/proto/Cargo.toml index 0ae1a34d9..3b64c23d9 100644 --- a/proto/Cargo.toml +++ b/proto/Cargo.toml @@ -7,7 +7,7 @@ publish = false [dependencies] prost = "0.11.0" -tonic = "0.8.0" +tonic = "0.8.2" [dependencies.shuttle-common] version = "0.7.0" diff --git a/proto/build.rs b/proto/build.rs index 1502854e9..0edbacf8c 100644 --- a/proto/build.rs +++ b/proto/build.rs @@ -1,5 +1,8 @@ fn main() -> Result<(), Box> { - tonic_build::compile_protos("../proto/provisioner.proto")?; + tonic_build::configure().compile( + &["../proto/provisioner.proto", "../proto/runtime.proto"], + &["../proto"], + )?; Ok(()) } diff --git a/runtimes/proto/runtime.proto b/proto/runtime.proto similarity index 100% rename from runtimes/proto/runtime.proto rename to proto/runtime.proto diff --git a/proto/src/lib.rs b/proto/src/lib.rs index 39e7c501a..6dff3b13e 100644 --- a/proto/src/lib.rs +++ b/proto/src/lib.rs @@ -63,3 +63,7 @@ pub mod provisioner { } } } + +pub mod runtime { + tonic::include_proto!("runtime"); +} diff --git a/provisioner/Cargo.toml b/provisioner/Cargo.toml index 69954ecc2..35fd0791a 100644 --- a/provisioner/Cargo.toml +++ b/provisioner/Cargo.toml @@ -18,7 +18,7 @@ rand = "0.8.5" sqlx = { version = "0.6.1", features = ["postgres", "runtime-tokio-native-tls"] } thiserror = "1.0.32" tokio = { version = "1.20.1", features = ["macros", "rt-multi-thread"] } -tonic = "0.8.0" +tonic = "0.8.2" tracing = "0.1.36" tracing-subscriber = "0.3.15" diff --git a/runtimes/legacy/Cargo.toml b/runtime/Cargo.toml similarity index 64% rename from runtimes/legacy/Cargo.toml rename to runtime/Cargo.toml index 7626dab6d..8dab41bc0 100644 --- a/runtimes/legacy/Cargo.toml +++ b/runtime/Cargo.toml @@ -1,5 +1,5 @@ [package] -name = "shuttle-legacy" +name = "shuttle-runtime" version = "0.1.0" edition = "2021" publish = false @@ -8,23 +8,28 @@ publish = false [dependencies] anyhow = "1.0.62" async-trait = "0.1.58" +cap-std = "0.26.0" clap ={ version = "4.0.18", features = ["derive"] } +serenity = { version = "0.11.5", default-features = false, features = ["client", "gateway", "rustls_backend", "model"] } thiserror = "1.0.37" tokio = { version = "=1.20.1", features = ["full"] } -tonic = "0.8.0" +tonic = "0.8.2" tracing = "0.1.37" tracing-subscriber = { version = "0.3.16", features = ["env-filter"] } +wasi-common = "2.0.0" +wasmtime = "2.0.0" +wasmtime-wasi = "2.0.0" [dependencies.shuttle-common] version = "0.7.0" -path = "../../common" +path = "../common" -[dependencies.shuttle-runtime-proto] -version = "0.1.0" +[dependencies.shuttle-proto] +version = "0.7.0" path = "../proto" [dependencies.shuttle-service] version = "0.7.0" default-features = false features = ["loader"] -path = "../../service" +path = "../service" diff --git a/runtime/Makefile b/runtime/Makefile new file mode 100644 index 000000000..18dac0caa --- /dev/null +++ b/runtime/Makefile @@ -0,0 +1,13 @@ +.PHONY: wasm next + +all: wasm next + +wasm: + cd ../tmp/wasm; cargo build --target wasm32-wasi + cp ../tmp/wasm/target/wasm32-wasi/debug/shuttle_serenity.wasm bot.wasm + +test: wasm + cargo test -- --nocapture + +runtime: + cargo build diff --git a/runtime/README.md b/runtime/README.md new file mode 100644 index 000000000..53755c860 --- /dev/null +++ b/runtime/README.md @@ -0,0 +1,34 @@ +## How to run + +```bash +$ make wasm +$ DISCORD_TOKEN=xxx cargo run +``` + +In another terminal: + +``` bash +grpcurl -plaintext -import-path ../proto -proto runtime.proto -d '{"service_name": "Tonic", "path": "runtime/bot.wasm"}' localhost:8000 runtime.Runtime/load +grpcurl -plaintext -import-path ../proto -proto runtime.proto -d '{"service_name": "Tonic"}' localhost:8000 runtime.Runtime/start +``` +## shuttle-legacy + +Load and run an .so library that implements `shuttle_service::Service`. + +To test, first start this binary using: + +```bash +cargo run -- --legacy +``` + +Then in another shell, load a `.so` file and start it up: + +``` bash +grpcurl -plaintext -import-path ../proto -proto runtime.proto -d '{"service_name": "Tonic", "path": "examples/rocket/hello-world/target/debug/libhello_world.so"}' localhost:8000 runtime.Runtime/load +grpcurl -plaintext -import-path ../proto -proto runtime.proto -d '{"service_name": "Tonic"}' localhost:8000 runtime.Runtime/start +``` + +## Running the tests +```bash +$ cd ..; make test +``` diff --git a/runtimes/legacy/src/args.rs b/runtime/src/args.rs similarity index 72% rename from runtimes/legacy/src/args.rs rename to runtime/src/args.rs index 2a2455e3a..084304364 100644 --- a/runtimes/legacy/src/args.rs +++ b/runtime/src/args.rs @@ -6,4 +6,8 @@ pub struct Args { /// Address to reach provisioner at #[clap(long, default_value = "localhost:5000")] pub provisioner_address: Endpoint, + + /// Is this runtime for a legacy service + #[clap(long)] + pub legacy: bool, } diff --git a/runtimes/legacy/src/error.rs b/runtime/src/legacy/error.rs similarity index 100% rename from runtimes/legacy/src/error.rs rename to runtime/src/legacy/error.rs diff --git a/runtimes/legacy/src/lib.rs b/runtime/src/legacy/mod.rs similarity index 98% rename from runtimes/legacy/src/lib.rs rename to runtime/src/legacy/mod.rs index 1cc4e3ad7..2e7c50149 100644 --- a/runtimes/legacy/src/lib.rs +++ b/runtime/src/legacy/mod.rs @@ -9,7 +9,7 @@ use std::{ use anyhow::anyhow; use async_trait::async_trait; use shuttle_common::{database, LogItem}; -use shuttle_runtime_proto::runtime::{ +use shuttle_proto::runtime::{ runtime_server::Runtime, LoadRequest, LoadResponse, StartRequest, StartResponse, }; use shuttle_service::{ @@ -20,8 +20,7 @@ use tokio::sync::mpsc::{self, UnboundedReceiver}; use tonic::{Request, Response, Status}; use tracing::{info, instrument, trace}; -pub mod args; -pub mod error; +mod error; pub struct Legacy { // Mutexes are for interior mutability diff --git a/runtime/src/lib.rs b/runtime/src/lib.rs new file mode 100644 index 000000000..6aa6ae608 --- /dev/null +++ b/runtime/src/lib.rs @@ -0,0 +1,7 @@ +mod args; +mod legacy; +mod next; + +pub use args::Args; +pub use legacy::Legacy; +pub use next::Next; diff --git a/runtimes/legacy/src/main.rs b/runtime/src/main.rs similarity index 58% rename from runtimes/legacy/src/main.rs rename to runtime/src/main.rs index 0a9e381e7..9ee7986a2 100644 --- a/runtimes/legacy/src/main.rs +++ b/runtime/src/main.rs @@ -1,8 +1,8 @@ use std::net::{Ipv4Addr, SocketAddr}; use clap::Parser; -use shuttle_legacy::{args::Args, Legacy}; -use shuttle_runtime_proto::runtime::runtime_server::RuntimeServer; +use shuttle_proto::runtime::runtime_server::RuntimeServer; +use shuttle_runtime::{Args, Legacy, Next}; use tonic::transport::Server; use tracing::trace; use tracing_subscriber::{fmt, prelude::*, EnvFilter}; @@ -24,10 +24,15 @@ async fn main() { trace!(args = ?args, "parsed args"); let addr = SocketAddr::new(Ipv4Addr::LOCALHOST.into(), 8000); - let legacy = Legacy::new(); - Server::builder() - .add_service(RuntimeServer::new(legacy)) - .serve(addr) - .await - .unwrap(); + let router = if args.legacy { + let legacy = Legacy::new(); + let svc = RuntimeServer::new(legacy); + Server::builder().add_service(svc) + } else { + let next = Next::new(); + let svc = RuntimeServer::new(next); + Server::builder().add_service(svc) + }; + + router.serve(addr).await.unwrap(); } diff --git a/runtimes/next/src/lib.rs b/runtime/src/next/mod.rs similarity index 96% rename from runtimes/next/src/lib.rs rename to runtime/src/next/mod.rs index 273a2eea0..b6f15c671 100644 --- a/runtimes/next/src/lib.rs +++ b/runtime/src/next/mod.rs @@ -1,5 +1,3 @@ -pub mod args; - use std::env; use std::fs::File; use std::io::{Read, Write}; @@ -10,8 +8,8 @@ use std::sync::Arc; use async_trait::async_trait; use cap_std::os::unix::net::UnixStream; use serenity::{model::prelude::*, prelude::*}; -use shuttle_runtime_proto::runtime::runtime_server::Runtime; -use shuttle_runtime_proto::runtime::{LoadRequest, LoadResponse, StartRequest, StartResponse}; +use shuttle_proto::runtime::runtime_server::Runtime; +use shuttle_proto::runtime::{LoadRequest, LoadResponse, StartRequest, StartResponse}; use tonic::{Request, Response, Status}; use tracing::trace; use wasi_common::file::FileCaps; diff --git a/runtimes/Cargo.toml b/runtimes/Cargo.toml deleted file mode 100644 index dd0d90a14..000000000 --- a/runtimes/Cargo.toml +++ /dev/null @@ -1,7 +0,0 @@ -[workspace] -members = [ - "legacy", - "next", - "proto", - "wasm" -] diff --git a/runtimes/Makefile b/runtimes/Makefile deleted file mode 100644 index 8bca54cab..000000000 --- a/runtimes/Makefile +++ /dev/null @@ -1,16 +0,0 @@ -.PHONY: wasm next - -all: wasm next - -wasm: - cd wasm; cargo build --target wasm32-wasi - cp target/wasm32-wasi/debug/shuttle_serenity.wasm next/bot.wasm - -test: wasm - cd next; cargo test -- --nocapture - -next: - cd next; cargo build - -legacy: - cd legacy; cargo build diff --git a/runtimes/legacy/README.md b/runtimes/legacy/README.md deleted file mode 100644 index 1f9d0b8be..000000000 --- a/runtimes/legacy/README.md +++ /dev/null @@ -1,16 +0,0 @@ -## shuttle-legacy - -Load and run an .so library that implements `shuttle_service::Service`. - -To test, first start this binary using: - -```bash -cargo run -- -``` - -Then in another shell, load a `.so` file and start it up: - -``` bash -grpcurl -plaintext -import-path ../proto -proto runtime.proto -d '{"service_name": "Tonic", "path": "../../examples/rocket/hello-world/target/debug/libhello_world.so"}' localhost:8000 runtime.Runtime/load -grpcurl -plaintext -import-path ../proto -proto runtime.proto -d '{"service_name": "Tonic"}' localhost:8000 runtime.Runtime/start -``` diff --git a/runtimes/next/Cargo.toml b/runtimes/next/Cargo.toml deleted file mode 100644 index 326402a04..000000000 --- a/runtimes/next/Cargo.toml +++ /dev/null @@ -1,28 +0,0 @@ -[package] -name = "shuttle-next" -version = "0.1.0" -edition = "2021" - -# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html - -[[bin]] -name = "shuttle-next" - -[dependencies] -async-trait = "0.1.58" -clap ={ version = "4.0.18", features = ["derive"] } -tokio = { version = "1.20.1", features = [ "full" ] } -tonic = "0.8.0" -tracing = "0.1.37" -tracing-subscriber = { version = "0.3.16", features = ["env-filter"] } - -cap-std = "*" -wasmtime = "*" -wasmtime-wasi = "*" -wasi-common = "*" - -serenity = { version = "0.11.5", default-features = false, features = ["client", "gateway", "rustls_backend", "model"] } - -[dependencies.shuttle-runtime-proto] -version = "0.1.0" -path = "../proto" diff --git a/runtimes/next/README.md b/runtimes/next/README.md deleted file mode 100644 index c247e00fc..000000000 --- a/runtimes/next/README.md +++ /dev/null @@ -1,20 +0,0 @@ -# `shuttle-next` - -## How to run - -```bash -$ cd ..; make wasm -$ DISCORD_TOKEN=xxx cargo run -``` - -In another terminal: - -``` bash -grpcurl -plaintext -import-path ../proto -proto runtime.proto -d '{"service_name": "Tonic", "path": "bot.wasm"}' localhost:8000 runtime.Runtime/load -grpcurl -plaintext -import-path ../proto -proto runtime.proto -d '{"service_name": "Tonic"}' localhost:8000 runtime.Runtime/start -``` - -## Running the tests -```bash -$ cd ..; make test -``` diff --git a/runtimes/next/src/args.rs b/runtimes/next/src/args.rs deleted file mode 100644 index 2a2455e3a..000000000 --- a/runtimes/next/src/args.rs +++ /dev/null @@ -1,9 +0,0 @@ -use clap::Parser; -use tonic::transport::Endpoint; - -#[derive(Parser, Debug)] -pub struct Args { - /// Address to reach provisioner at - #[clap(long, default_value = "localhost:5000")] - pub provisioner_address: Endpoint, -} diff --git a/runtimes/next/src/main.rs b/runtimes/next/src/main.rs deleted file mode 100644 index 6a2f11848..000000000 --- a/runtimes/next/src/main.rs +++ /dev/null @@ -1,33 +0,0 @@ -use std::net::{Ipv4Addr, SocketAddr}; - -use clap::Parser; -use shuttle_next::{args::Args, Next}; -use shuttle_runtime_proto::runtime::runtime_server::RuntimeServer; -use tonic::transport::Server; -use tracing::trace; -use tracing_subscriber::{fmt, prelude::*, EnvFilter}; - -#[tokio::main] -async fn main() { - let args = Args::parse(); - - let fmt_layer = fmt::layer(); - let filter_layer = EnvFilter::try_from_default_env() - .or_else(|_| EnvFilter::try_new("info")) - .unwrap(); - - tracing_subscriber::registry() - .with(filter_layer) - .with(fmt_layer) - .init(); - - trace!(args = ?args, "parsed args"); - - let addr = SocketAddr::new(Ipv4Addr::LOCALHOST.into(), 8000); - let next = Next::new(); - Server::builder() - .add_service(RuntimeServer::new(next)) - .serve(addr) - .await - .unwrap(); -} diff --git a/runtimes/proto/Cargo.toml b/runtimes/proto/Cargo.toml deleted file mode 100644 index 5e255f65d..000000000 --- a/runtimes/proto/Cargo.toml +++ /dev/null @@ -1,12 +0,0 @@ -[package] -name = "shuttle-runtime-proto" -version = "0.1.0" -edition = "2021" -publish = false - -[dependencies] -prost = "0.11.0" -tonic = "0.8.0" - -[build-dependencies] -tonic-build = "0.8.0" diff --git a/runtimes/proto/build.rs b/runtimes/proto/build.rs deleted file mode 100644 index a045f1d57..000000000 --- a/runtimes/proto/build.rs +++ /dev/null @@ -1,5 +0,0 @@ -fn main() -> Result<(), Box> { - tonic_build::compile_protos("../proto/runtime.proto")?; - - Ok(()) -} diff --git a/runtimes/proto/src/lib.rs b/runtimes/proto/src/lib.rs deleted file mode 100644 index 70ee4b5b7..000000000 --- a/runtimes/proto/src/lib.rs +++ /dev/null @@ -1,3 +0,0 @@ -pub mod runtime { - tonic::include_proto!("runtime"); -} diff --git a/runtimes/wasm/Cargo.toml b/tmp/wasm/Cargo.toml similarity index 100% rename from runtimes/wasm/Cargo.toml rename to tmp/wasm/Cargo.toml diff --git a/runtimes/wasm/src/lib.rs b/tmp/wasm/src/lib.rs similarity index 100% rename from runtimes/wasm/src/lib.rs rename to tmp/wasm/src/lib.rs