From 89302e25986c6cbf76f4d80dec5e395c732572ef Mon Sep 17 00:00:00 2001 From: Adam Bratschi-Kaye Date: Mon, 5 Feb 2024 09:21:32 +0000 Subject: [PATCH] chore(RUN-897): Combine sandbox binary and backend_lib crates --- Cargo.lock | 11 +--- Cargo.toml | 1 - rs/canister_sandbox/BUILD.bazel | 56 ++++++++++++++++- rs/canister_sandbox/Cargo.toml | 34 ++++++++++- rs/canister_sandbox/README.md | 9 +-- rs/canister_sandbox/backend_lib/BUILD.bazel | 60 ------------------- rs/canister_sandbox/backend_lib/Cargo.toml | 41 ------------- .../replica_controller/BUILD.bazel | 2 +- .../replica_controller/Cargo.toml | 2 +- .../{backend_lib => }/src/dts.rs | 0 .../{backend_lib => }/src/dts/tests.rs | 0 .../{backend_lib => }/src/lib.rs | 0 .../{backend_lib => }/src/logging.rs | 0 .../{backend_lib => }/src/sandbox_manager.rs | 0 .../{backend_lib => }/src/sandbox_server.rs | 0 rs/drun/BUILD.bazel | 2 +- rs/drun/Cargo.toml | 2 +- rs/recovery/BUILD.bazel | 2 +- rs/recovery/Cargo.toml | 2 +- rs/recovery/subnet_splitting/BUILD.bazel | 2 +- rs/replay/BUILD.bazel | 2 +- rs/replay/Cargo.toml | 2 +- 22 files changed, 96 insertions(+), 134 deletions(-) delete mode 100644 rs/canister_sandbox/backend_lib/BUILD.bazel delete mode 100644 rs/canister_sandbox/backend_lib/Cargo.toml rename rs/canister_sandbox/{backend_lib => }/src/dts.rs (100%) rename rs/canister_sandbox/{backend_lib => }/src/dts/tests.rs (100%) rename rs/canister_sandbox/{backend_lib => }/src/lib.rs (100%) rename rs/canister_sandbox/{backend_lib => }/src/logging.rs (100%) rename rs/canister_sandbox/{backend_lib => }/src/sandbox_manager.rs (100%) rename rs/canister_sandbox/{backend_lib => }/src/sandbox_server.rs (100%) diff --git a/Cargo.lock b/Cargo.lock index 2bdbed54ad9..def86a1a9c3 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1735,16 +1735,6 @@ dependencies = [ "wat", ] -[[package]] -name = "canister_sandbox" -version = "0.9.0" -dependencies = [ - "cc", - "ic-canister-sandbox-backend-lib", - "ic-test-utilities", - "libc", -] - [[package]] name = "cargo-platform" version = "0.1.2" @@ -5475,6 +5465,7 @@ dependencies = [ name = "ic-canister-sandbox-backend-lib" version = "0.9.0" dependencies = [ + "cc", "ic-base-types", "ic-canister-sandbox-common", "ic-config", diff --git a/Cargo.toml b/Cargo.toml index 7b6729fc399..42cf875da93 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -45,7 +45,6 @@ members = [ "rs/https_outcalls/consensus", "rs/https_outcalls/service", "rs/canister_sandbox", - "rs/canister_sandbox/backend_lib", "rs/canister_sandbox/common", "rs/canister_sandbox/replica_controller", "rs/canister_sandbox/sandbox_launcher", diff --git a/rs/canister_sandbox/BUILD.bazel b/rs/canister_sandbox/BUILD.bazel index 96cd15d9996..7675b333146 100644 --- a/rs/canister_sandbox/BUILD.bazel +++ b/rs/canister_sandbox/BUILD.bazel @@ -1,17 +1,63 @@ load("@rules_rust//cargo:cargo_build_script.bzl", "cargo_build_script") -load("@rules_rust//rust:defs.bzl", "rust_binary") +load("@rules_rust//rust:defs.bzl", "rust_binary", "rust_library", "rust_test") package(default_visibility = ["//visibility:public"]) DEPENDENCIES = [ - "//rs/canister_sandbox/backend_lib", + "//rs/canister_sandbox/common", + "//rs/config", + "//rs/constants", + "//rs/cycles_account_manager", + "//rs/embedders", + "//rs/interfaces", + "//rs/memory_tracker", + "//rs/monitoring/logger", + "//rs/replicated_state", + "//rs/sys", + "//rs/system_api", + "//rs/types/base_types", + "//rs/types/types", + "//rs/types/wasm_types", + "//rs/utils", "@crate_index//:libc", + "@crate_index//:libflate", + "@crate_index//:nix", + "@crate_index//:rayon", + "@crate_index//:serde_json", + "@crate_index//:slog", + "@crate_index//:threadpool", +] + +DEV_DEPENDENCIES = [ + "//rs/registry/routing_table", + "//rs/registry/subnet_type", + "//rs/test_utilities", + "@crate_index//:mockall", + "@crate_index//:wat", ] MACRO_DEPENDENCIES = [] ALIASES = {} +rust_library( + name = "backend_lib", + srcs = glob(["src/**/*.rs"]), + aliases = ALIASES, + crate_name = "ic_canister_sandbox_backend_lib", + proc_macro_deps = MACRO_DEPENDENCIES, + version = "0.9.0", + deps = DEPENDENCIES, +) + +rust_test( + name = "backend_lib_test", + aliases = ALIASES, + crate = ":backend_lib", + proc_macro_deps = MACRO_DEPENDENCIES, + deps = DEPENDENCIES + DEV_DEPENDENCIES, +) + cargo_build_script( name = "build_script", srcs = ["build.rs"], @@ -26,5 +72,9 @@ rust_binary( crate_name = "canister_sandbox", proc_macro_deps = MACRO_DEPENDENCIES, version = "0.9.0", - deps = DEPENDENCIES + [":build_script"], + deps = [ + ":backend_lib", + ":build_script", + "@crate_index//:libc", + ], ) diff --git a/rs/canister_sandbox/Cargo.toml b/rs/canister_sandbox/Cargo.toml index 18d595609c2..1e08ed898d6 100644 --- a/rs/canister_sandbox/Cargo.toml +++ b/rs/canister_sandbox/Cargo.toml @@ -1,5 +1,5 @@ [package] -name = "canister_sandbox" +name = "ic-canister-sandbox-backend-lib" version.workspace = true authors.workspace = true edition.workspace = true @@ -10,15 +10,43 @@ documentation.workspace = true cc = "1.0" [dependencies] -ic-canister-sandbox-backend-lib = { path = "backend_lib" } +ic-base-types = { path = "../types/base_types" } +ic-canister-sandbox-common = { path = "common" } +ic-cycles-account-manager = { path = "../cycles_account_manager" } +ic-config = { path = "../config" } +ic-constants = { path = "../constants" } +ic-embedders = { path = "../embedders" } +ic-logger = { path = "../monitoring/logger" } +ic-types = { path = "../types/types" } +ic-replicated-state = { path = "../replicated_state" } +ic-interfaces = { path = "../interfaces" } +ic-wasm-types = { path = "../types/wasm_types" } +ic-utils = { path = "../utils" } +ic-sys = { path = "../sys" } +ic-system-api = { path = "../system_api" } libc = "0.2.119" +libflate = "1.1.2" +memory_tracker = { path = "../memory_tracker" } +nix = { workspace = true } +serde_json = { workspace = true } +slog = { workspace = true } +threadpool = "1.8.1" +rayon = "1.5.1" [dev-dependencies] +ic-registry-routing-table = { path = "../registry/routing_table" } +ic-registry-subnet-type = { path = "../registry/subnet_type" } # This makes the dependencies of the binary more consistent # with the dependencies of execution environment tests and # allows the binary to reuse most of the build artifacts # produced by `cargo test`. ic-test-utilities = { path = "../test_utilities" } +mockall = { workspace = true } +wat = "1.0.52" [features] -sigsegv_handler_checksum = [ "ic-canister-sandbox-backend-lib/sigsegv_handler_checksum" ] +sigsegv_handler_checksum = ["memory_tracker/sigsegv_handler_checksum"] + +[[bin]] +name = "canister_sandbox" +path = "src/main.rs" diff --git a/rs/canister_sandbox/README.md b/rs/canister_sandbox/README.md index 0a58ac605a3..37f7de8aea2 100644 --- a/rs/canister_sandbox/README.md +++ b/rs/canister_sandbox/README.md @@ -6,18 +6,13 @@ per canister. ## Code organization -- The top-level `canister_sandbox` crate is the binary that will be run as - the sandbox process. It is just a simple wrapper that launches all logic - implemented in other crates from its `main` function +- The top-level `canister_sandbox` crate contains the `backend_lib` library for +running the sandbox process as well as the sandbox process binary. - `common` implements the IPC mechanisms and protocols used between replica and sandbox process. The actual protocol definitions are found in the `common/src/protocol` module -- `backend_lib` implements the logic to be run in the sandbox process. It is - organized as a library crate, with the main crate just calling its - entry point. - - `replica_controller` implements the replica side control of the sandbox mechanism. It provides on the one hand the API "glue" towards the execution layer, and on the other hand all logic to manage and talk to the backend diff --git a/rs/canister_sandbox/backend_lib/BUILD.bazel b/rs/canister_sandbox/backend_lib/BUILD.bazel deleted file mode 100644 index b729de6ca72..00000000000 --- a/rs/canister_sandbox/backend_lib/BUILD.bazel +++ /dev/null @@ -1,60 +0,0 @@ -load("@rules_rust//rust:defs.bzl", "rust_library", "rust_test") - -package(default_visibility = ["//visibility:public"]) - -DEPENDENCIES = [ - "//rs/canister_sandbox/common", - "//rs/config", - "//rs/constants", - "//rs/cycles_account_manager", - "//rs/embedders", - "//rs/interfaces", - "//rs/memory_tracker", - "//rs/monitoring/logger", - "//rs/replicated_state", - "//rs/sys", - "//rs/system_api", - "//rs/types/base_types", - "//rs/types/types", - "//rs/types/wasm_types", - "//rs/utils", - "@crate_index//:libc", - "@crate_index//:libflate", - "@crate_index//:nix", - "@crate_index//:rayon", - "@crate_index//:serde_json", - "@crate_index//:slog", - "@crate_index//:threadpool", -] - -MACRO_DEPENDENCIES = [] - -DEV_DEPENDENCIES = [ - "//rs/registry/routing_table", - "//rs/registry/subnet_type", - "//rs/test_utilities", - "@crate_index//:mockall", - "@crate_index//:wat", -] - -MACRO_DEV_DEPENDENCIES = [] - -ALIASES = {} - -rust_library( - name = "backend_lib", - srcs = glob(["src/**"]), - aliases = ALIASES, - crate_name = "ic_canister_sandbox_backend_lib", - proc_macro_deps = MACRO_DEPENDENCIES, - version = "0.9.0", - deps = DEPENDENCIES, -) - -rust_test( - name = "backend_lib_test", - aliases = ALIASES, - crate = ":backend_lib", - proc_macro_deps = MACRO_DEPENDENCIES + MACRO_DEV_DEPENDENCIES, - deps = DEPENDENCIES + DEV_DEPENDENCIES, -) diff --git a/rs/canister_sandbox/backend_lib/Cargo.toml b/rs/canister_sandbox/backend_lib/Cargo.toml deleted file mode 100644 index 12b3b4aef00..00000000000 --- a/rs/canister_sandbox/backend_lib/Cargo.toml +++ /dev/null @@ -1,41 +0,0 @@ -[package] -name = "ic-canister-sandbox-backend-lib" -version.workspace = true -authors.workspace = true -edition.workspace = true -description.workspace = true -documentation.workspace = true - -[dependencies] -ic-base-types = { path = "../../types/base_types" } -ic-canister-sandbox-common = { path = "../common" } -ic-cycles-account-manager = { path = "../../cycles_account_manager" } -ic-config = { path = "../../config" } -ic-constants = { path = "../../constants" } -ic-embedders = { path = "../../embedders" } -ic-logger = { path = "../../monitoring/logger" } -ic-types = { path = "../../types/types" } -ic-replicated-state = { path = "../../replicated_state"} -ic-interfaces = { path = "../../interfaces" } -ic-wasm-types = { path = "../../types/wasm_types" } -ic-utils = { path = "../../utils"} -ic-sys = { path = "../../sys"} -ic-system-api = { path = "../../system_api" } -libc = "0.2.119" -libflate = "1.1.2" -memory_tracker = { path = "../../memory_tracker" } -nix = { workspace = true } -serde_json = { workspace = true } -slog = { workspace = true } -threadpool = "1.8.1" -rayon = "1.5.1" - -[dev-dependencies] -ic-registry-routing-table = { path = "../../registry/routing_table" } -ic-registry-subnet-type = { path = "../../registry/subnet_type" } -ic-test-utilities = { path = "../../test_utilities" } -mockall = { workspace = true } -wat = "1.0.52" - -[features] -sigsegv_handler_checksum = [ "memory_tracker/sigsegv_handler_checksum" ] diff --git a/rs/canister_sandbox/replica_controller/BUILD.bazel b/rs/canister_sandbox/replica_controller/BUILD.bazel index 9c1b479e138..70bf0da2886 100644 --- a/rs/canister_sandbox/replica_controller/BUILD.bazel +++ b/rs/canister_sandbox/replica_controller/BUILD.bazel @@ -4,7 +4,7 @@ load("//bazel:defs.bzl", "rust_ic_test") package(default_visibility = ["//visibility:public"]) DEPENDENCIES = [ - "//rs/canister_sandbox/backend_lib", + "//rs/canister_sandbox:backend_lib", "//rs/canister_sandbox/common", "//rs/config", "//rs/embedders", diff --git a/rs/canister_sandbox/replica_controller/Cargo.toml b/rs/canister_sandbox/replica_controller/Cargo.toml index 30f16538073..a8ae8d260a7 100644 --- a/rs/canister_sandbox/replica_controller/Cargo.toml +++ b/rs/canister_sandbox/replica_controller/Cargo.toml @@ -8,7 +8,7 @@ documentation.workspace = true [dependencies] ic-canister-sandbox-common = { path = "../common" } -ic-canister-sandbox-backend-lib = { path = "../backend_lib" } +ic-canister-sandbox-backend-lib = { path = ".." } ic-embedders = { path = "../../embedders" } ic-interfaces = { path = "../../interfaces" } ic-logger = { path = "../../monitoring/logger" } diff --git a/rs/canister_sandbox/backend_lib/src/dts.rs b/rs/canister_sandbox/src/dts.rs similarity index 100% rename from rs/canister_sandbox/backend_lib/src/dts.rs rename to rs/canister_sandbox/src/dts.rs diff --git a/rs/canister_sandbox/backend_lib/src/dts/tests.rs b/rs/canister_sandbox/src/dts/tests.rs similarity index 100% rename from rs/canister_sandbox/backend_lib/src/dts/tests.rs rename to rs/canister_sandbox/src/dts/tests.rs diff --git a/rs/canister_sandbox/backend_lib/src/lib.rs b/rs/canister_sandbox/src/lib.rs similarity index 100% rename from rs/canister_sandbox/backend_lib/src/lib.rs rename to rs/canister_sandbox/src/lib.rs diff --git a/rs/canister_sandbox/backend_lib/src/logging.rs b/rs/canister_sandbox/src/logging.rs similarity index 100% rename from rs/canister_sandbox/backend_lib/src/logging.rs rename to rs/canister_sandbox/src/logging.rs diff --git a/rs/canister_sandbox/backend_lib/src/sandbox_manager.rs b/rs/canister_sandbox/src/sandbox_manager.rs similarity index 100% rename from rs/canister_sandbox/backend_lib/src/sandbox_manager.rs rename to rs/canister_sandbox/src/sandbox_manager.rs diff --git a/rs/canister_sandbox/backend_lib/src/sandbox_server.rs b/rs/canister_sandbox/src/sandbox_server.rs similarity index 100% rename from rs/canister_sandbox/backend_lib/src/sandbox_server.rs rename to rs/canister_sandbox/src/sandbox_server.rs diff --git a/rs/drun/BUILD.bazel b/rs/drun/BUILD.bazel index 232822d4fe8..31db80cd34f 100644 --- a/rs/drun/BUILD.bazel +++ b/rs/drun/BUILD.bazel @@ -3,7 +3,7 @@ load("@rules_rust//rust:defs.bzl", "rust_binary", "rust_library", "rust_test") package(default_visibility = ["//visibility:public"]) DEPENDENCIES = [ - "//rs/canister_sandbox/backend_lib", + "//rs/canister_sandbox:backend_lib", "//rs/canister_sandbox/sandbox_launcher:sandbox_launcher_lib", "//rs/config", "//rs/cycles_account_manager", diff --git a/rs/drun/Cargo.toml b/rs/drun/Cargo.toml index 2064ddaf72e..cbe3bb06ab0 100644 --- a/rs/drun/Cargo.toml +++ b/rs/drun/Cargo.toml @@ -7,7 +7,7 @@ description.workspace = true documentation.workspace = true [dependencies] -ic-canister-sandbox-backend-lib = { path = "../canister_sandbox/backend_lib" } +ic-canister-sandbox-backend-lib = { path = "../canister_sandbox" } ic-canister-sandbox-launcher = { path = "../canister_sandbox/sandbox_launcher" } ic-config = { path = "../config" } ic-cycles-account-manager = { path = "../cycles_account_manager" } diff --git a/rs/recovery/BUILD.bazel b/rs/recovery/BUILD.bazel index cd5e6f0c8bc..4dd7a34b7b3 100644 --- a/rs/recovery/BUILD.bazel +++ b/rs/recovery/BUILD.bazel @@ -72,7 +72,7 @@ rust_binary( proc_macro_deps = MACRO_DEPENDENCIES, deps = DEPENDENCIES + [ ":recovery", - "//rs/canister_sandbox/backend_lib", + "//rs/canister_sandbox:backend_lib", "//rs/canister_sandbox/sandbox_launcher:sandbox_launcher_lib", ], ) diff --git a/rs/recovery/Cargo.toml b/rs/recovery/Cargo.toml index 15b1add6aff..d7c6e7152b8 100644 --- a/rs/recovery/Cargo.toml +++ b/rs/recovery/Cargo.toml @@ -10,7 +10,7 @@ futures = { workspace = true } hex = "0.4.2" ic-artifact-pool = { path = "../artifact_pool" } ic-base-types = { path = "../types/base_types/" } -ic-canister-sandbox-backend-lib = { path = "../canister_sandbox/backend_lib" } +ic-canister-sandbox-backend-lib = { path = "../canister_sandbox" } ic-canister-sandbox-launcher = { path = "../canister_sandbox/sandbox_launcher" } ic-config = { path = "../config" } ic-crypto-utils-threshold-sig-der = { path = "../crypto/utils/threshold_sig_der" } diff --git a/rs/recovery/subnet_splitting/BUILD.bazel b/rs/recovery/subnet_splitting/BUILD.bazel index f4f1f078c05..7f9761612ad 100644 --- a/rs/recovery/subnet_splitting/BUILD.bazel +++ b/rs/recovery/subnet_splitting/BUILD.bazel @@ -55,7 +55,7 @@ rust_binary( visibility = ["//visibility:public"], deps = DEPENDENCIES + [ ":subnet_splitting", - "//rs/canister_sandbox/backend_lib", + "//rs/canister_sandbox:backend_lib", "//rs/canister_sandbox/sandbox_launcher:sandbox_launcher_lib", ], ) diff --git a/rs/replay/BUILD.bazel b/rs/replay/BUILD.bazel index 27d3116e7d7..93441fb7474 100644 --- a/rs/replay/BUILD.bazel +++ b/rs/replay/BUILD.bazel @@ -5,7 +5,7 @@ package(default_visibility = ["//visibility:public"]) DEPENDENCIES = [ "//rs/artifact_pool", "//rs/canister_client", - "//rs/canister_sandbox/backend_lib", + "//rs/canister_sandbox:backend_lib", "//rs/canister_sandbox/sandbox_launcher:sandbox_launcher_lib", "//rs/config", "//rs/consensus", diff --git a/rs/replay/Cargo.toml b/rs/replay/Cargo.toml index 98e2b6705ea..dd22209ef8d 100644 --- a/rs/replay/Cargo.toml +++ b/rs/replay/Cargo.toml @@ -12,7 +12,7 @@ clap = { workspace = true } hex = "0.4.2" ic-artifact-pool = { path = "../artifact_pool" } ic-canister-client = { path = "../canister_client" } -ic-canister-sandbox-backend-lib = { path = "../canister_sandbox/backend_lib" } +ic-canister-sandbox-backend-lib = { path = "../canister_sandbox" } ic-canister-sandbox-launcher = { path = "../canister_sandbox/sandbox_launcher" } ic-config = { path = "../config" } ic-consensus = { path = "../consensus" }