mirror of
https://github.com/pezkuwichain/pezkuwi-subxt.git
synced 2026-06-15 10:21:05 +00:00
Fixes bug in wasm-builder with cargo publish (#7299)
* Fixes bug in wasm-builder with cargo publish There was a bug in wasm-builder which resulted in generating a `Cargo.lock` in the project directory because of running `cargo metadata`. This resulted in commands like `cargo publish` to fail (if there was no `Cargo.lock` before building), because it checks that the project directory isn't modified. * Update utils/wasm-builder/src/wasm_project.rs Co-authored-by: André Silva <123550+andresilva@users.noreply.github.com> Co-authored-by: André Silva <123550+andresilva@users.noreply.github.com>
This commit is contained in:
Generated
+1
-1
@@ -8906,7 +8906,7 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "substrate-wasm-builder"
|
name = "substrate-wasm-builder"
|
||||||
version = "2.0.0"
|
version = "2.0.1"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"ansi_term 0.12.1",
|
"ansi_term 0.12.1",
|
||||||
"atty",
|
"atty",
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ use wasm_builder_runner::WasmBuilder;
|
|||||||
fn main() {
|
fn main() {
|
||||||
WasmBuilder::new()
|
WasmBuilder::new()
|
||||||
.with_current_project()
|
.with_current_project()
|
||||||
.with_wasm_builder_from_crates("2.0.0")
|
.with_wasm_builder_from_crates("2.0.1")
|
||||||
.export_heap_base()
|
.export_heap_base()
|
||||||
.import_memory()
|
.import_memory()
|
||||||
.build()
|
.build()
|
||||||
|
|||||||
@@ -20,7 +20,7 @@ use wasm_builder_runner::WasmBuilder;
|
|||||||
fn main() {
|
fn main() {
|
||||||
WasmBuilder::new()
|
WasmBuilder::new()
|
||||||
.with_current_project()
|
.with_current_project()
|
||||||
.with_wasm_builder_from_crates_or_path("2.0.0", "../../../utils/wasm-builder")
|
.with_wasm_builder_from_crates_or_path("2.0.1", "../../../utils/wasm-builder")
|
||||||
.export_heap_base()
|
.export_heap_base()
|
||||||
.import_memory()
|
.import_memory()
|
||||||
.build()
|
.build()
|
||||||
|
|||||||
@@ -20,7 +20,7 @@ fn main() {
|
|||||||
// regular build
|
// regular build
|
||||||
WasmBuilder::new()
|
WasmBuilder::new()
|
||||||
.with_current_project()
|
.with_current_project()
|
||||||
.with_wasm_builder_from_crates_or_path("2.0.0", "../../../utils/wasm-builder")
|
.with_wasm_builder_from_crates_or_path("2.0.1", "../../../utils/wasm-builder")
|
||||||
.export_heap_base()
|
.export_heap_base()
|
||||||
.import_memory()
|
.import_memory()
|
||||||
.build();
|
.build();
|
||||||
@@ -28,7 +28,7 @@ fn main() {
|
|||||||
// and building with tracing activated
|
// and building with tracing activated
|
||||||
WasmBuilder::new()
|
WasmBuilder::new()
|
||||||
.with_current_project()
|
.with_current_project()
|
||||||
.with_wasm_builder_from_crates_or_path("2.0.0", "../../../utils/wasm-builder")
|
.with_wasm_builder_from_crates_or_path("2.0.1", "../../../utils/wasm-builder")
|
||||||
.export_heap_base()
|
.export_heap_base()
|
||||||
.import_memory()
|
.import_memory()
|
||||||
.set_file_name("wasm_binary_with_tracing.rs")
|
.set_file_name("wasm_binary_with_tracing.rs")
|
||||||
|
|||||||
@@ -20,7 +20,7 @@ use wasm_builder_runner::WasmBuilder;
|
|||||||
fn main() {
|
fn main() {
|
||||||
WasmBuilder::new()
|
WasmBuilder::new()
|
||||||
.with_current_project()
|
.with_current_project()
|
||||||
.with_wasm_builder_from_crates_or_path("2.0.0", "../../../utils/wasm-builder")
|
.with_wasm_builder_from_crates_or_path("2.0.1", "../../../utils/wasm-builder")
|
||||||
.export_heap_base()
|
.export_heap_base()
|
||||||
.import_memory()
|
.import_memory()
|
||||||
.build()
|
.build()
|
||||||
|
|||||||
@@ -20,7 +20,7 @@ use wasm_builder_runner::WasmBuilder;
|
|||||||
fn main() {
|
fn main() {
|
||||||
WasmBuilder::new()
|
WasmBuilder::new()
|
||||||
.with_current_project()
|
.with_current_project()
|
||||||
.with_wasm_builder_from_crates_or_path("2.0.0", "../../../utils/wasm-builder")
|
.with_wasm_builder_from_crates_or_path("2.0.1", "../../../utils/wasm-builder")
|
||||||
.export_heap_base()
|
.export_heap_base()
|
||||||
.import_memory()
|
.import_memory()
|
||||||
.build()
|
.build()
|
||||||
|
|||||||
@@ -20,7 +20,7 @@ use wasm_builder_runner::WasmBuilder;
|
|||||||
fn main() {
|
fn main() {
|
||||||
WasmBuilder::new()
|
WasmBuilder::new()
|
||||||
.with_current_project()
|
.with_current_project()
|
||||||
.with_wasm_builder_from_crates_or_path("2.0.0", "../../utils/wasm-builder")
|
.with_wasm_builder_from_crates_or_path("2.0.1", "../../utils/wasm-builder")
|
||||||
.export_heap_base()
|
.export_heap_base()
|
||||||
// Note that we set the stack-size to 1MB explicitly even though it is set
|
// Note that we set the stack-size to 1MB explicitly even though it is set
|
||||||
// to this value by default. This is because some of our tests (`restoration_of_globals`)
|
// to this value by default. This is because some of our tests (`restoration_of_globals`)
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
[package]
|
[package]
|
||||||
name = "substrate-wasm-builder"
|
name = "substrate-wasm-builder"
|
||||||
version = "2.0.0"
|
version = "2.0.1"
|
||||||
authors = ["Parity Technologies <admin@parity.io>"]
|
authors = ["Parity Technologies <admin@parity.io>"]
|
||||||
description = "Utility for building WASM binaries"
|
description = "Utility for building WASM binaries"
|
||||||
edition = "2018"
|
edition = "2018"
|
||||||
|
|||||||
@@ -181,16 +181,16 @@ pub fn build_project_with_default_rustflags(
|
|||||||
};
|
};
|
||||||
|
|
||||||
write_file_if_changed(
|
write_file_if_changed(
|
||||||
file_name.into(),
|
file_name.into(),
|
||||||
format!(
|
format!(
|
||||||
r#"
|
r#"
|
||||||
pub const WASM_BINARY: Option<&[u8]> = Some(include_bytes!("{wasm_binary}"));
|
pub const WASM_BINARY: Option<&[u8]> = Some(include_bytes!("{wasm_binary}"));
|
||||||
pub const WASM_BINARY_BLOATY: Option<&[u8]> = Some(include_bytes!("{wasm_binary_bloaty}"));
|
pub const WASM_BINARY_BLOATY: Option<&[u8]> = Some(include_bytes!("{wasm_binary_bloaty}"));
|
||||||
"#,
|
"#,
|
||||||
wasm_binary = wasm_binary,
|
wasm_binary = wasm_binary,
|
||||||
wasm_binary_bloaty = wasm_binary_bloaty,
|
wasm_binary_bloaty = wasm_binary_bloaty,
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Checks if the build of the WASM binary should be skipped.
|
/// Checks if the build of the WASM binary should be skipped.
|
||||||
|
|||||||
@@ -84,6 +84,28 @@ impl Drop for WorkspaceLock {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fn crate_metadata(cargo_manifest: &Path) -> Metadata {
|
||||||
|
let mut cargo_lock = cargo_manifest.to_path_buf();
|
||||||
|
cargo_lock.set_file_name("Cargo.lock");
|
||||||
|
|
||||||
|
let cargo_lock_existed = cargo_lock.exists();
|
||||||
|
|
||||||
|
let crate_metadata = MetadataCommand::new()
|
||||||
|
.manifest_path(cargo_manifest)
|
||||||
|
.exec()
|
||||||
|
.expect("`cargo metadata` can not fail on project `Cargo.toml`; qed");
|
||||||
|
|
||||||
|
// If the `Cargo.lock` didn't exist, we need to remove it after
|
||||||
|
// calling `cargo metadata`. This is required to ensure that we don't change
|
||||||
|
// the build directory outside of the `target` folder. Commands like
|
||||||
|
// `cargo publish` require this.
|
||||||
|
if !cargo_lock_existed {
|
||||||
|
let _ = fs::remove_file(&cargo_lock);
|
||||||
|
}
|
||||||
|
|
||||||
|
crate_metadata
|
||||||
|
}
|
||||||
|
|
||||||
/// Creates the WASM project, compiles the WASM binary and compacts the WASM binary.
|
/// Creates the WASM project, compiles the WASM binary and compacts the WASM binary.
|
||||||
///
|
///
|
||||||
/// # Returns
|
/// # Returns
|
||||||
@@ -98,10 +120,7 @@ pub fn create_and_compile(
|
|||||||
// Lock the workspace exclusively for us
|
// Lock the workspace exclusively for us
|
||||||
let _lock = WorkspaceLock::new(&wasm_workspace_root);
|
let _lock = WorkspaceLock::new(&wasm_workspace_root);
|
||||||
|
|
||||||
let crate_metadata = MetadataCommand::new()
|
let crate_metadata = crate_metadata(cargo_manifest);
|
||||||
.manifest_path(cargo_manifest)
|
|
||||||
.exec()
|
|
||||||
.expect("`cargo metadata` can not fail on project `Cargo.toml`; qed");
|
|
||||||
|
|
||||||
let project = create_project(cargo_manifest, &wasm_workspace, &crate_metadata);
|
let project = create_project(cargo_manifest, &wasm_workspace, &crate_metadata);
|
||||||
create_wasm_workspace_project(&wasm_workspace, &crate_metadata.workspace_root);
|
create_wasm_workspace_project(&wasm_workspace, &crate_metadata.workspace_root);
|
||||||
|
|||||||
Reference in New Issue
Block a user