Skip to content
This repository has been archived by the owner on Nov 15, 2023. It is now read-only.

Don't re-compile on every cargo run #4019

Merged
merged 1 commit into from
Nov 5, 2019
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

7 changes: 7 additions & 0 deletions core/utils/build-script-utils/Cargo.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
[package]
name = "substrate-build-script-utils"
version = "2.0.0"
authors = ["Parity Technologies <[email protected]>"]
edition = "2018"

[dependencies]
44 changes: 44 additions & 0 deletions core/utils/build-script-utils/src/lib.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
// Copyright 2019 Parity Technologies (UK) Ltd.
// This file is part of Substrate.

// Substrate is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.

// Substrate is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.

// You should have received a copy of the GNU General Public License
// along with Substrate. If not, see <http://www.gnu.org/licenses/>.

//! Crate with utility functions for `build.rs` scripts.

use std::{env, path::PathBuf};

/// Make sure the calling `build.rs` script is rerun when `.git/HEAD` changed.
///
/// The file is searched from the `CARGO_MANIFEST_DIR` upwards. If the file can not be found,
/// a warning is generated.
pub fn rerun_if_git_head_changed() {
let mut manifest_dir = PathBuf::from(
env::var("CARGO_MANIFEST_DIR").expect("`CARGO_MANIFEST_DIR` is always set by cargo.")
);
let manifest_dir_copy = manifest_dir.clone();

while manifest_dir.parent().is_some() {
if manifest_dir.join(".git/HEAD").exists() {
println!("cargo:rerun-if-changed={}", manifest_dir.join(".git/HEAD").display());
return
}

manifest_dir.pop();
}

println!(
"cargo:warning=Could not find `.git/HEAD` searching from `{}` upwards!",
manifest_dir_copy.display(),
);
}
1 change: 1 addition & 0 deletions node-template/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -38,3 +38,4 @@ sr-primitives = { path = "../core/sr-primitives" }

[build-dependencies]
vergen = "3.0.4"
build-script-utils = { package = "substrate-build-script-utils", path = "../core/utils/build-script-utils" }
15 changes: 1 addition & 14 deletions node-template/build.rs
Original file line number Diff line number Diff line change
Expand Up @@ -7,18 +7,5 @@ const ERROR_MSG: &str = "Failed to generate metadata files";
fn main() {
generate_cargo_keys(ConstantsFlags::SHA_SHORT).expect(ERROR_MSG);

let mut manifest_dir = PathBuf::from(
env::var("CARGO_MANIFEST_DIR").expect("`CARGO_MANIFEST_DIR` is always set by cargo.")
);

while manifest_dir.parent().is_some() {
if manifest_dir.join(".git/HEAD").exists() {
println!("cargo:rerun-if-changed={}", manifest_dir.join(".git/HEAD").display());
return
}

manifest_dir.pop();
}

println!("cargo:warning=Could not find `.git/HEAD` from manifest dir!");
build_script_utils::rerun_if_git_head_changed();
}
7 changes: 4 additions & 3 deletions node/cli/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -91,6 +91,7 @@ tempfile = "3.1.0"

[build-dependencies]
substrate-cli = { package = "substrate-cli", path = "../../core/cli" }
build-script-utils = { package = "substrate-build-script-utils", path = "../../core/utils/build-script-utils" }
structopt = "0.3.3"
vergen = "3.0.4"

Expand Down Expand Up @@ -118,7 +119,7 @@ cli = [
]
wasmtime = [
"cli",
"node-executor/wasmtime",
"substrate-cli/wasmtime",
"substrate-service/wasmtime",
"node-executor/wasmtime",
"substrate-cli/wasmtime",
"substrate-service/wasmtime",
]
6 changes: 3 additions & 3 deletions node/cli/build.rs
Original file line number Diff line number Diff line change
Expand Up @@ -21,9 +21,9 @@ use vergen::{ConstantsFlags, generate_cargo_keys};

fn main() {
build_shell_completion();
generate_cargo_keys(ConstantsFlags::all())
.expect("Failed to generate metadata files");
println!("cargo:rerun-if-changed=.git/HEAD");
generate_cargo_keys(ConstantsFlags::all()).expect("Failed to generate metadata files");

build_script_utils::rerun_if_git_head_changed();
}

/// Build shell completion scripts for all known shells
Expand Down