feat(tvix/derivation): derive Default for Derivation
Some of the fields in a Derivation struct stay empty, and manually creating BTreeMap or vec for it is annoying. Derive Default instead, so we can use the defaults instead of writing more by hand. Change-Id: I5d41b4b55c8187cb101eb4266451a470008e0067 Reviewed-on: https://cl.tvl.fyi/c/depot/+/7788 Reviewed-by: tazjin <tazjin@tvl.su> Autosubmit: flokli <flokli@flokli.de> Tested-by: BuildkiteCI
This commit is contained in:
parent
f04829a1bb
commit
1e2c859840
2 changed files with 21 additions and 32 deletions
|
@ -7,7 +7,7 @@ use std::{collections::BTreeMap, fmt, fmt::Write};
|
||||||
use tvix_store::nixbase32::NIXBASE32;
|
use tvix_store::nixbase32::NIXBASE32;
|
||||||
use tvix_store::store_path::{ParseStorePathError, StorePath, STORE_DIR};
|
use tvix_store::store_path::{ParseStorePathError, StorePath, STORE_DIR};
|
||||||
|
|
||||||
#[derive(Clone, Debug, Eq, PartialEq, Serialize, Deserialize)]
|
#[derive(Clone, Debug, Default, Eq, PartialEq, Serialize, Deserialize)]
|
||||||
pub struct Derivation {
|
pub struct Derivation {
|
||||||
#[serde(rename = "args")]
|
#[serde(rename = "args")]
|
||||||
pub arguments: Vec<String>,
|
pub arguments: Vec<String>,
|
||||||
|
|
|
@ -1,6 +1,5 @@
|
||||||
use crate::derivation::Derivation;
|
use crate::derivation::Derivation;
|
||||||
use crate::output::{Hash, Output};
|
use crate::output::{Hash, Output};
|
||||||
use std::collections::BTreeMap;
|
|
||||||
use std::fs::File;
|
use std::fs::File;
|
||||||
use std::io::Read;
|
use std::io::Read;
|
||||||
use std::path::Path;
|
use std::path::Path;
|
||||||
|
@ -191,8 +190,14 @@ fn output_paths(name: &str, drv_path: &str) {
|
||||||
#[test]
|
#[test]
|
||||||
fn output_path_construction() {
|
fn output_path_construction() {
|
||||||
// create the bar derivation
|
// create the bar derivation
|
||||||
|
let mut bar_drv = Derivation {
|
||||||
|
builder: ":".to_string(),
|
||||||
|
system: ":".to_string(),
|
||||||
|
..Default::default()
|
||||||
|
};
|
||||||
|
|
||||||
// assemble bar env
|
// assemble bar env
|
||||||
let mut bar_env: BTreeMap<String, String> = BTreeMap::new();
|
let bar_env = &mut bar_drv.environment;
|
||||||
bar_env.insert("builder".to_string(), ":".to_string());
|
bar_env.insert("builder".to_string(), ":".to_string());
|
||||||
bar_env.insert("name".to_string(), "bar".to_string());
|
bar_env.insert("name".to_string(), "bar".to_string());
|
||||||
bar_env.insert("out".to_string(), "".to_string()); // will be calculated
|
bar_env.insert("out".to_string(), "".to_string()); // will be calculated
|
||||||
|
@ -205,8 +210,7 @@ fn output_path_construction() {
|
||||||
bar_env.insert("system".to_string(), ":".to_string());
|
bar_env.insert("system".to_string(), ":".to_string());
|
||||||
|
|
||||||
// assemble bar outputs
|
// assemble bar outputs
|
||||||
let mut bar_outputs: BTreeMap<String, Output> = BTreeMap::new();
|
bar_drv.outputs.insert(
|
||||||
bar_outputs.insert(
|
|
||||||
"out".to_string(),
|
"out".to_string(),
|
||||||
Output {
|
Output {
|
||||||
path: "".to_string(), // will be calculated
|
path: "".to_string(), // will be calculated
|
||||||
|
@ -218,17 +222,6 @@ fn output_path_construction() {
|
||||||
},
|
},
|
||||||
);
|
);
|
||||||
|
|
||||||
// assemble bar itself
|
|
||||||
let mut bar_drv = Derivation {
|
|
||||||
arguments: vec![],
|
|
||||||
builder: ":".to_string(),
|
|
||||||
environment: bar_env,
|
|
||||||
input_derivations: BTreeMap::new(),
|
|
||||||
input_sources: vec![],
|
|
||||||
outputs: bar_outputs,
|
|
||||||
system: ":".to_string(),
|
|
||||||
};
|
|
||||||
|
|
||||||
// calculate bar output paths
|
// calculate bar output paths
|
||||||
let bar_calc_result = bar_drv.calculate_output_paths(
|
let bar_calc_result = bar_drv.calculate_output_paths(
|
||||||
"bar",
|
"bar",
|
||||||
|
@ -254,8 +247,15 @@ fn output_path_construction() {
|
||||||
.calculate_derivation_path("bar")
|
.calculate_derivation_path("bar")
|
||||||
.expect("must succeed");
|
.expect("must succeed");
|
||||||
|
|
||||||
|
// create foo derivation
|
||||||
|
let mut foo_drv = Derivation {
|
||||||
|
builder: ":".to_string(),
|
||||||
|
system: ":".to_string(),
|
||||||
|
..Default::default()
|
||||||
|
};
|
||||||
|
|
||||||
// assemble foo env
|
// assemble foo env
|
||||||
let mut foo_env: BTreeMap<String, String> = BTreeMap::new();
|
let foo_env = &mut foo_drv.environment;
|
||||||
foo_env.insert("bar".to_string(), bar_output_path.to_string());
|
foo_env.insert("bar".to_string(), bar_output_path.to_string());
|
||||||
foo_env.insert("builder".to_string(), ":".to_string());
|
foo_env.insert("builder".to_string(), ":".to_string());
|
||||||
foo_env.insert("name".to_string(), "foo".to_string());
|
foo_env.insert("name".to_string(), "foo".to_string());
|
||||||
|
@ -263,8 +263,7 @@ fn output_path_construction() {
|
||||||
foo_env.insert("system".to_string(), ":".to_string());
|
foo_env.insert("system".to_string(), ":".to_string());
|
||||||
|
|
||||||
// asssemble foo outputs
|
// asssemble foo outputs
|
||||||
let mut foo_outputs: BTreeMap<String, Output> = BTreeMap::new();
|
foo_drv.outputs.insert(
|
||||||
foo_outputs.insert(
|
|
||||||
"out".to_string(),
|
"out".to_string(),
|
||||||
Output {
|
Output {
|
||||||
path: "".to_string(), // will be calculated
|
path: "".to_string(), // will be calculated
|
||||||
|
@ -273,19 +272,9 @@ fn output_path_construction() {
|
||||||
);
|
);
|
||||||
|
|
||||||
// assemble foo input_derivations
|
// assemble foo input_derivations
|
||||||
let mut foo_input_derivations: BTreeMap<String, Vec<String>> = BTreeMap::new();
|
foo_drv
|
||||||
foo_input_derivations.insert(bar_drv_path.to_absolute_path(), vec!["out".to_string()]);
|
.input_derivations
|
||||||
|
.insert(bar_drv_path.to_absolute_path(), vec!["out".to_string()]);
|
||||||
// assemble foo itself
|
|
||||||
let mut foo_drv = Derivation {
|
|
||||||
arguments: vec![],
|
|
||||||
builder: ":".to_string(),
|
|
||||||
environment: foo_env,
|
|
||||||
input_derivations: foo_input_derivations,
|
|
||||||
input_sources: vec![],
|
|
||||||
outputs: foo_outputs,
|
|
||||||
system: ":".to_string(),
|
|
||||||
};
|
|
||||||
|
|
||||||
// calculate foo output paths
|
// calculate foo output paths
|
||||||
let foo_calc_result = foo_drv.calculate_output_paths(
|
let foo_calc_result = foo_drv.calculate_output_paths(
|
||||||
|
|
Loading…
Reference in a new issue