forked from Deuxfleurs/garage
Inject GIT_VERSION even later
This commit is contained in:
parent
06df301de5
commit
f310fce34b
3 changed files with 28 additions and 18 deletions
|
@ -124,7 +124,15 @@ let
|
||||||
*/
|
*/
|
||||||
(pkgs.rustBuilder.rustLib.makeOverride {
|
(pkgs.rustBuilder.rustLib.makeOverride {
|
||||||
name = "garage";
|
name = "garage";
|
||||||
overrideAttrs = drv: {
|
overrideAttrs = drv:
|
||||||
|
(if git_version != null then {
|
||||||
|
/* [3] */ preConfigure = ''
|
||||||
|
${drv.preConfigure or ""}
|
||||||
|
export GIT_VERSION="${git_version}"
|
||||||
|
'';
|
||||||
|
} else {})
|
||||||
|
//
|
||||||
|
{
|
||||||
/* [1] */ setBuildEnv = (buildEnv drv);
|
/* [1] */ setBuildEnv = (buildEnv drv);
|
||||||
/* [2] */ hardeningDisable = [ "pie" ];
|
/* [2] */ hardeningDisable = [ "pie" ];
|
||||||
};
|
};
|
||||||
|
@ -161,15 +169,7 @@ let
|
||||||
|
|
||||||
(pkgs.rustBuilder.rustLib.makeOverride {
|
(pkgs.rustBuilder.rustLib.makeOverride {
|
||||||
name = "garage_model";
|
name = "garage_model";
|
||||||
overrideAttrs = drv:
|
overrideAttrs = drv: { /* [1] */ setBuildEnv = (buildEnv drv); };
|
||||||
(if git_version != null then {
|
|
||||||
/* [3] */ preConfigure = ''
|
|
||||||
${drv.preConfigure or ""}
|
|
||||||
export GIT_VERSION="${git_version}"
|
|
||||||
'';
|
|
||||||
} else {})
|
|
||||||
//
|
|
||||||
{ /* [1] */ setBuildEnv = (buildEnv drv); };
|
|
||||||
})
|
})
|
||||||
|
|
||||||
(pkgs.rustBuilder.rustLib.makeOverride {
|
(pkgs.rustBuilder.rustLib.makeOverride {
|
||||||
|
|
|
@ -77,7 +77,7 @@ async fn main() {
|
||||||
std::process::abort();
|
std::process::abort();
|
||||||
}));
|
}));
|
||||||
|
|
||||||
// Parse opt
|
// Initialize version and features info
|
||||||
let features = &[
|
let features = &[
|
||||||
#[cfg(feature = "k2v")]
|
#[cfg(feature = "k2v")]
|
||||||
"k2v",
|
"k2v",
|
||||||
|
@ -98,12 +98,17 @@ async fn main() {
|
||||||
#[cfg(feature = "system-libs")]
|
#[cfg(feature = "system-libs")]
|
||||||
"system-libs",
|
"system-libs",
|
||||||
][..];
|
][..];
|
||||||
|
if let Some(git_version) = option_env!("GIT_VERSION") {
|
||||||
|
garage_model::version::init_version(git_version);
|
||||||
|
}
|
||||||
|
garage_model::version::init_features(features);
|
||||||
|
|
||||||
|
// Parse arguments
|
||||||
let version = format!(
|
let version = format!(
|
||||||
"{} [features: {}]",
|
"{} [features: {}]",
|
||||||
garage_model::version::garage_version(),
|
garage_model::version::garage_version(),
|
||||||
features.join(", ")
|
features.join(", ")
|
||||||
);
|
);
|
||||||
garage_model::version::init_features(features);
|
|
||||||
let opt = Opt::from_clap(&Opt::clap().version(version.as_str()).get_matches());
|
let opt = Opt::from_clap(&Opt::clap().version(version.as_str()).get_matches());
|
||||||
|
|
||||||
let res = match opt.cmd {
|
let res = match opt.cmd {
|
||||||
|
|
|
@ -1,23 +1,28 @@
|
||||||
use std::sync::Arc;
|
use std::sync::Arc;
|
||||||
|
|
||||||
use arc_swap::ArcSwapOption;
|
use arc_swap::{ArcSwap, ArcSwapOption};
|
||||||
|
|
||||||
lazy_static::lazy_static! {
|
lazy_static::lazy_static! {
|
||||||
|
static ref VERSION: ArcSwap<&'static str> = ArcSwap::new(Arc::new(git_version::git_version!(
|
||||||
|
prefix = "git:",
|
||||||
|
cargo_prefix = "cargo:",
|
||||||
|
fallback = "unknown"
|
||||||
|
)));
|
||||||
static ref FEATURES: ArcSwapOption<&'static [&'static str]> = ArcSwapOption::new(None);
|
static ref FEATURES: ArcSwapOption<&'static [&'static str]> = ArcSwapOption::new(None);
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn garage_version() -> &'static str {
|
pub fn garage_version() -> &'static str {
|
||||||
option_env!("GIT_VERSION").unwrap_or(git_version::git_version!(
|
&VERSION.load()
|
||||||
prefix = "git:",
|
|
||||||
cargo_prefix = "cargo:",
|
|
||||||
fallback = "unknown"
|
|
||||||
))
|
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn garage_features() -> Option<&'static [&'static str]> {
|
pub fn garage_features() -> Option<&'static [&'static str]> {
|
||||||
FEATURES.load().as_ref().map(|f| &f[..])
|
FEATURES.load().as_ref().map(|f| &f[..])
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub fn init_version(version: &'static str) {
|
||||||
|
VERSION.store(Arc::new(version));
|
||||||
|
}
|
||||||
|
|
||||||
pub fn init_features(features: &'static [&'static str]) {
|
pub fn init_features(features: &'static [&'static str]) {
|
||||||
FEATURES.store(Some(Arc::new(features)));
|
FEATURES.store(Some(Arc::new(features)));
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue