diff --git a/linera-service/src/cli_wrappers/wallet.rs b/linera-service/src/cli_wrappers/wallet.rs index 1c52ccdeaab5..137728d73ef7 100644 --- a/linera-service/src/cli_wrappers/wallet.rs +++ b/linera-service/src/cli_wrappers/wallet.rs @@ -614,6 +614,16 @@ impl ClientWrapper { let contract = release_dir.join(format!("{}_contract.wasm", name.replace('-', "_"))); let service = release_dir.join(format!("{}_service.wasm", name.replace('-', "_"))); + let contract_size = tokio::fs::metadata(&contract) + .await + .with_context(|| format!("Cannot find bytecode file {contract:?}"))? + .len(); + let service_size = tokio::fs::metadata(&service) + .await + .with_context(|| format!("Cannot find bytecode file {service:?}"))? + .len(); + info!("Done building application {name}: contract_size={contract_size}, service_size={service_size}"); + Ok((contract, service)) } } diff --git a/linera-service/src/linera.rs b/linera-service/src/linera.rs index 8e21a42c8ffb..32309b8a661b 100644 --- a/linera-service/src/linera.rs +++ b/linera-service/src/linera.rs @@ -1312,7 +1312,8 @@ enum ProjectCommand { /// This is used to locate the generated bytecode. The generated bytecode should /// be of the form `_{contract,service}.wasm`. /// - /// Defaults to the package name in Cargo.toml. + /// Defaults to the package name in Cargo.toml, with dashes replaced by + /// underscores. name: Option, /// An optional chain ID to publish the bytecode. The default chain of the wallet diff --git a/linera-service/src/project.rs b/linera-service/src/project.rs index a76de13409cc..ead0e15d9b94 100644 --- a/linera-service/src/project.rs +++ b/linera-service/src/project.rs @@ -155,9 +155,14 @@ impl Project { ) -> Result<()> { let toml_path = project_root.join("Cargo.toml"); let (linera_sdk_dep, linera_sdk_dev_dep) = Self::linera_sdk_dependencies(linera_root); + let binary_root_name = project_name.replace('-', "_"); + let contract_binary_name = format!("{binary_root_name}_contract"); + let service_binary_name = format!("{binary_root_name}_service"); let toml_contents = format!( include_str!("../template/Cargo.toml.template"), project_name = project_name, + contract_binary_name = contract_binary_name, + service_binary_name = service_binary_name, linera_sdk_dep = linera_sdk_dep, linera_sdk_dev_dep = linera_sdk_dev_dep, ); @@ -253,7 +258,10 @@ impl Project { } pub fn build(&self, name: Option) -> Result<(PathBuf, PathBuf), anyhow::Error> { - let name = name.unwrap_or(self.project_package_name()?); + let name = match name { + Some(name) => name, + None => self.project_package_name()?.replace('-', "_"), + }; let contract_name = format!("{}_contract", name); let service_name = format!("{}_service", name); let cargo_build = Command::new("cargo") diff --git a/linera-service/template/Cargo.toml.template b/linera-service/template/Cargo.toml.template index 8b2f0ea7b253..b1d7559c3c39 100644 --- a/linera-service/template/Cargo.toml.template +++ b/linera-service/template/Cargo.toml.template @@ -18,11 +18,11 @@ thiserror = "1.0.38" webassembly-test = "0.1.0" [[bin]] -name = "{project_name}_contract" +name = "{contract_binary_name}" path = "src/contract.rs" [[bin]] -name = "{project_name}_service" +name = "{service_binary_name}" path = "src/service.rs" [profile.release]