From 37996f63a131de99846413c9e0af1e2b34656eb2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kuba=20P=C5=82askonka?= Date: Mon, 17 Jun 2024 11:35:56 +0200 Subject: [PATCH] Fix for building contracts in workspace (#87) * When in workspace, build will pass package name to cargo. * Updated Odra branch constant. --- justfile | 2 +- src/actions/build.rs | 5 ++++- src/command.rs | 31 +++++++++++++++++++------------ 3 files changed, 24 insertions(+), 14 deletions(-) diff --git a/justfile b/justfile index 9048741..b84aacb 100644 --- a/justfile +++ b/justfile @@ -1,4 +1,4 @@ -DEVELOPMENT_ODRA_BRANCH := "release/1.0.0" +DEVELOPMENT_ODRA_BRANCH := "release/1.1.0" BINARYEN_VERSION := "version_116" BINARYEN_CHECKSUM := "c55b74f3109cdae97490faf089b0286d3bba926bb6ea5ed00c8c784fc53718fd" diff --git a/src/actions/build.rs b/src/actions/build.rs index 59505da..5c3b122 100644 --- a/src/actions/build.rs +++ b/src/actions/build.rs @@ -48,7 +48,10 @@ impl BuildAction<'_> { self.project.project_root(), &contract.struct_name(), &module_name, + self.project.is_workspace(), + contract.module_crate_name(self.project), ); + let source = paths::wasm_path_in_target(&build_contract, self.project.project_root()); let target = paths::wasm_path_in_wasm_dir(&contract.struct_name(), &self.project.project_root()); @@ -62,7 +65,7 @@ impl BuildAction<'_> { .join(contract.module_crate_name(self.project)) .join("wasm"); command::mkdir(module_wasm_dir.clone()); - let mut module_wasm_path = module_wasm_dir.clone().join(&contract.struct_name()); + let mut module_wasm_path = module_wasm_dir.clone().join(contract.struct_name()); module_wasm_path.set_extension("wasm"); log::info(format!("Copying to {}", module_wasm_path.display())); command::cp(source, module_wasm_path); diff --git a/src/command.rs b/src/command.rs index 2185dd8..0e58e01 100644 --- a/src/command.rs +++ b/src/command.rs @@ -119,20 +119,27 @@ fn cargo(current_dir: PathBuf, command: &str, tail_args: Vec<&str>) { } /// Build wasm files. -pub fn cargo_build_wasm_files(current_dir: PathBuf, contract_name: &str, module_name: &str) { +pub fn cargo_build_wasm_files( + current_dir: PathBuf, + contract_name: &str, + module_name: &str, + is_workspace: bool, + crate_name: String, +) { env::set_var(ODRA_MODULE_ENV_KEY, contract_name); let build_contract = format!("{}_build_contract", module_name); - cargo( - current_dir, - "build", - vec![ - "--target", - "wasm32-unknown-unknown", - "--bin", - &build_contract, - "--release", - ], - ); + let mut params = vec![ + "--target", + "wasm32-unknown-unknown", + "--bin", + &build_contract, + "--release", + ]; + if is_workspace { + params.push("--package"); + params.push(crate_name.as_str()); + } + cargo(current_dir, "build", params); } /// Build schema files.