From 42cbef025db545f8fc362235fcb72ae2e8263d03 Mon Sep 17 00:00:00 2001 From: Philipp Oppermann Date: Wed, 25 May 2022 12:33:57 +0200 Subject: [PATCH] Build runtime in coordinator's build script --- coordinator/build.rs | 24 ++++++++++++++++++++++++ coordinator/src/main.rs | 15 ++++++++------- 2 files changed, 32 insertions(+), 7 deletions(-) create mode 100644 coordinator/build.rs diff --git a/coordinator/build.rs b/coordinator/build.rs new file mode 100644 index 00000000..20370cc9 --- /dev/null +++ b/coordinator/build.rs @@ -0,0 +1,24 @@ +use std::{path::PathBuf, process::Command}; + +fn main() { + let out_dir = PathBuf::from(std::env::var("OUT_DIR").unwrap()); + + build_runtime(&out_dir); +} + +fn build_runtime(out_dir: &PathBuf) { + let mut cmd = Command::new(std::env::var("CARGO").unwrap()); + cmd.arg("build"); + cmd.arg("-p").arg("dora-runtime"); + cmd.arg("--release"); + let target_dir = out_dir.join("runtime"); + cmd.arg("--target-dir").arg(&target_dir); + let status = cmd.status().unwrap(); + if !status.success() { + panic!("runtime build failed"); + } + println!( + "cargo:rustc-env=DORA_RUNTIME_PATH={}", + target_dir.join("release").join("dora-runtime").display() + ); +} diff --git a/coordinator/src/main.rs b/coordinator/src/main.rs index 2415beb3..fadd3cce 100644 --- a/coordinator/src/main.rs +++ b/coordinator/src/main.rs @@ -10,11 +10,12 @@ enum Command { #[clap(about = "Print Graph")] Visualize { dataflow: PathBuf }, #[clap(about = "Run dataflow pipeline")] - Run { - dataflow: PathBuf, - #[clap(long)] - runtime: PathBuf, - }, + Run { dataflow: PathBuf }, +} + +fn runtime_path() -> &'static Path { + const RUNTIME_PATH: &str = env!("DORA_RUNTIME_PATH"); + Path::new(RUNTIME_PATH) } #[tokio::main] @@ -32,7 +33,7 @@ async fn main() -> eyre::Result<()> { ```mermaid code block on GitHub to display it." ); } - Command::Run { dataflow, runtime } => run_dataflow(dataflow.clone(), runtime) + Command::Run { dataflow } => run_dataflow(dataflow.clone(), runtime_path()) .await .wrap_err_with(|| format!("failed to run dataflow at {}", dataflow.display()))?, } @@ -40,7 +41,7 @@ async fn main() -> eyre::Result<()> { Ok(()) } -async fn run_dataflow(dataflow_path: PathBuf, runtime: PathBuf) -> eyre::Result<()> { +async fn run_dataflow(dataflow_path: PathBuf, runtime: &Path) -> eyre::Result<()> { let Descriptor { mut communication, nodes,