From b518c01d9ae01eaa6ad913127e11428f202f7f62 Mon Sep 17 00:00:00 2001 From: Michael Mueller Date: Fri, 11 Dec 2020 17:41:24 +0100 Subject: [PATCH 1/5] Put build artifacts under `target/ink/` --- src/crate_metadata.rs | 3 ++- src/main.rs | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/src/crate_metadata.rs b/src/crate_metadata.rs index 60837b73..bdb79236 100644 --- a/src/crate_metadata.rs +++ b/src/crate_metadata.rs @@ -41,7 +41,8 @@ pub struct CrateMetadata { impl CrateMetadata { /// Parses the contract manifest and returns relevant metadata. pub fn collect(manifest_path: &ManifestPath) -> Result { - let (metadata, root_package) = get_cargo_metadata(manifest_path)?; + let (mut metadata, root_package) = get_cargo_metadata(manifest_path)?; + metadata.target_directory.push("ink"); // Normalize the package name. let package_name = root_package.name.replace("-", "_"); diff --git a/src/main.rs b/src/main.rs index 6fed88dd..6619d580 100644 --- a/src/main.rs +++ b/src/main.rs @@ -303,7 +303,7 @@ enum Command { Deploy { #[structopt(flatten)] extrinsic_opts: ExtrinsicOpts, - /// Path to wasm contract code, defaults to `./target/-pruned.wasm` + /// Path to wasm contract code, defaults to `./target/ink/-pruned.wasm` #[structopt(parse(from_os_str))] wasm_path: Option, }, -- GitLab From 4929569f93fc9c41ef61ea70ed02044fdf4b464a Mon Sep 17 00:00:00 2001 From: Michael Mueller Date: Mon, 14 Dec 2020 08:08:27 +0100 Subject: [PATCH 2/5] Add test --- src/cmd/build.rs | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/cmd/build.rs b/src/cmd/build.rs index 0435cfe2..971f5ecc 100644 --- a/src/cmd/build.rs +++ b/src/cmd/build.rs @@ -378,7 +378,7 @@ mod tests { cmd::new::execute("new_project", Some(path)).expect("new project creation failed"); let manifest_path = ManifestPath::new(&path.join("new_project").join("Cargo.toml")).unwrap(); - super::execute( + let res = super::execute( &manifest_path, None, true, @@ -386,6 +386,13 @@ mod tests { UnstableFlags::default(), ) .expect("build failed"); + + // we can't use `/target/ink` here, since this would match + // for `/target` being the root path. but since `ends_with` + // always matches whole path components we can be sure + // the path can never be e.g. `foo_target/ink` -- the assert + // would fail for that. + assert!(res.target_directory.ends_with("target/ink")); Ok(()) }) } -- GitLab From ddbbecb94e8ada75364cceeaa6eb76827974c98a Mon Sep 17 00:00:00 2001 From: Michael Mueller Date: Mon, 14 Dec 2020 13:31:07 +0100 Subject: [PATCH 3/5] Add new `target_directory` field on metadata struct --- src/cmd/build.rs | 4 ++-- src/cmd/metadata.rs | 8 ++++---- src/crate_metadata.rs | 9 +++++++-- 3 files changed, 13 insertions(+), 8 deletions(-) diff --git a/src/cmd/build.rs b/src/cmd/build.rs index 971f5ecc..39c628dd 100644 --- a/src/cmd/build.rs +++ b/src/cmd/build.rs @@ -138,7 +138,7 @@ fn build_cargo_project( ); let cargo_build = |manifest_path: &ManifestPath| { - let target_dir = &crate_metadata.cargo_meta.target_directory; + let target_dir = &crate_metadata.target_directory; util::invoke_cargo( "build", &[ @@ -313,7 +313,7 @@ fn execute( dest_wasm: maybe_dest_wasm, dest_metadata: None, dest_bundle: None, - target_directory: crate_metadata.cargo_meta.target_directory, + target_directory: crate_metadata.target_directory, optimization_result: maybe_optimization_result, build_artifact, }; diff --git a/src/cmd/metadata.rs b/src/cmd/metadata.rs index d93565ad..30bbcd4f 100644 --- a/src/cmd/metadata.rs +++ b/src/cmd/metadata.rs @@ -56,12 +56,12 @@ impl GenerateMetadataCommand { util::assert_channel()?; let cargo_meta = &self.crate_metadata.cargo_meta; - let out_path_metadata = cargo_meta.target_directory.join(METADATA_FILE); - let fname_bundle = format!("{}.contract", self.crate_metadata.package_name); - let out_path_bundle = cargo_meta.target_directory.join(fname_bundle); + let target_directory = self.crate_metadata.target_directory.clone(); + let out_path_metadata = target_directory.join(METADATA_FILE); - let target_directory = cargo_meta.target_directory.clone(); + let fname_bundle = format!("{}.contract", self.crate_metadata.package_name); + let out_path_bundle = target_directory.join(fname_bundle); // build the extended contract project metadata let ExtendedMetadataResult { diff --git a/src/crate_metadata.rs b/src/crate_metadata.rs index bdb79236..de8250bc 100644 --- a/src/crate_metadata.rs +++ b/src/crate_metadata.rs @@ -36,6 +36,7 @@ pub struct CrateMetadata { pub documentation: Option, pub homepage: Option, pub user: Option>, + pub target_directory: PathBuf, } impl CrateMetadata { @@ -44,18 +45,21 @@ impl CrateMetadata { let (mut metadata, root_package) = get_cargo_metadata(manifest_path)?; metadata.target_directory.push("ink"); + let mut target_directory = metadata.target_directory.clone(); + target_directory.push("ink"); + // Normalize the package name. let package_name = root_package.name.replace("-", "_"); // {target_dir}/wasm32-unknown-unknown/release/{package_name}.wasm - let mut original_wasm = metadata.target_directory.clone(); + let mut original_wasm = target_directory.clone(); original_wasm.push("wasm32-unknown-unknown"); original_wasm.push("release"); original_wasm.push(package_name.clone()); original_wasm.set_extension("wasm"); // {target_dir}/{package_name}.wasm - let mut dest_wasm = metadata.target_directory.clone(); + let mut dest_wasm = target_directory.clone(); dest_wasm.push(package_name.clone()); dest_wasm.set_extension("wasm"); @@ -87,6 +91,7 @@ impl CrateMetadata { documentation, homepage, user, + target_directory, }; Ok(crate_metadata) } -- GitLab From aaa61b14e78488fd84e0423d0b1ffb8b61acefbc Mon Sep 17 00:00:00 2001 From: Michael Mueller Date: Mon, 14 Dec 2020 14:00:28 +0100 Subject: [PATCH 4/5] Remove unnecessary `push` --- src/crate_metadata.rs | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/crate_metadata.rs b/src/crate_metadata.rs index de8250bc..1e57e950 100644 --- a/src/crate_metadata.rs +++ b/src/crate_metadata.rs @@ -42,8 +42,7 @@ pub struct CrateMetadata { impl CrateMetadata { /// Parses the contract manifest and returns relevant metadata. pub fn collect(manifest_path: &ManifestPath) -> Result { - let (mut metadata, root_package) = get_cargo_metadata(manifest_path)?; - metadata.target_directory.push("ink"); + let (metadata, root_package) = get_cargo_metadata(manifest_path)?; let mut target_directory = metadata.target_directory.clone(); target_directory.push("ink"); -- GitLab From 5142d9684c89e5df129de6df7eafffe2745fbcd2 Mon Sep 17 00:00:00 2001 From: Michael Mueller Date: Mon, 14 Dec 2020 14:21:51 +0100 Subject: [PATCH 5/5] Remove redundant binding --- src/cmd/metadata.rs | 23 ++++++++++++----------- 1 file changed, 12 insertions(+), 11 deletions(-) diff --git a/src/cmd/metadata.rs b/src/cmd/metadata.rs index 30bbcd4f..8ca48262 100644 --- a/src/cmd/metadata.rs +++ b/src/cmd/metadata.rs @@ -55,8 +55,6 @@ impl GenerateMetadataCommand { pub fn exec(&self) -> Result { util::assert_channel()?; - let cargo_meta = &self.crate_metadata.cargo_meta; - let target_directory = self.crate_metadata.target_directory.clone(); let out_path_metadata = target_directory.join(METADATA_FILE); @@ -120,15 +118,18 @@ impl GenerateMetadataCommand { if self.unstable_options.original_manifest { generate_metadata(&self.crate_metadata.manifest_path)?; } else { - Workspace::new(&cargo_meta, &self.crate_metadata.root_package.id)? - .with_root_package_manifest(|manifest| { - manifest - .with_added_crate_type("rlib")? - .with_profile_release_lto(false)?; - Ok(()) - })? - .with_metadata_gen_package()? - .using_temp(generate_metadata)?; + Workspace::new( + &self.crate_metadata.cargo_meta, + &self.crate_metadata.root_package.id, + )? + .with_root_package_manifest(|manifest| { + manifest + .with_added_crate_type("rlib")? + .with_profile_release_lto(false)?; + Ok(()) + })? + .with_metadata_gen_package()? + .using_temp(generate_metadata)?; } let dest_bundle = if self.build_artifact == BuildArtifacts::All { -- GitLab