mirror of
https://github.com/cloud-hypervisor/cloud-hypervisor.git
synced 2026-08-05 02:19:16 +00:00
TL;DR: cargo clippy|check|... now runs on whole workspace by default. ## Steps - add new workspace member `cloud-hypervisor` - move `./src` to new workspace member - move `./tests` to new workspace member - move relevant parts from Cargo.toml to new workspace member - kept necessary parts in main Cargo.toml, such as profile configurations ## About The main Cargo.toml historically mixes workspace and crate definitions for cloud-hypervisor and ch-remote. This makes it hard to read and requires `--workspace` to run cargo clippy or cargo test on all workspace members, which is counter-intuitive. This patch separates the workspace from the crate definition in the main Cargo.toml file. After this, cargo clippy, cargo test, etc., work on the whole workspace naturally, giving a smoother developer experience. The Cargo.toml without a package definition is also called a virtual workspace or virtual manifest by Cargo [0]. Backporting is not a concern: CHV no longer backports, but the affected files are rarely modified anyway. [0] https://doc.rust-lang.org/cargo/reference/workspaces.html#virtual-workspace Signed-off-by: Philipp Schuster <philipp.schuster@cyberus-technology.de> On-behalf-of: SAP philipp.schuster@sap.com
33 lines
1.0 KiB
Rust
33 lines
1.0 KiB
Rust
// Copyright © 2020 Intel Corporation
|
|
//
|
|
// SPDX-License-Identifier: Apache-2.0
|
|
//
|
|
|
|
use std::env;
|
|
use std::process::Command;
|
|
|
|
fn main() {
|
|
let mut version = "v".to_owned() + env!("CARGO_PKG_VERSION");
|
|
|
|
if let Ok(git_out) = Command::new("git").args(["describe", "--dirty"]).output()
|
|
&& git_out.status.success()
|
|
&& let Ok(git_out_str) = String::from_utf8(git_out.stdout)
|
|
{
|
|
version = git_out_str;
|
|
// Pop the trailing newline.
|
|
version.pop();
|
|
}
|
|
|
|
// Append CH_EXTRA_VERSION to version if it is set.
|
|
if let Ok(extra_version) = env::var("CH_EXTRA_VERSION") {
|
|
println!("cargo:rerun-if-env-changed=CH_EXTRA_VERSION");
|
|
version.push_str(&format!("-{extra_version}"));
|
|
}
|
|
|
|
// This println!() has a special behavior, as it will set the environment
|
|
// variable BUILD_VERSION, so that it can be reused from the binary.
|
|
// Particularly, this is used from src/main.rs to display the exact
|
|
// version.
|
|
println!("cargo:rustc-env=BUILD_VERSION={version}");
|
|
}
|