fix(tvix/glue/tvix_store_io): also populate input sources
These also need to be present in the input nodes of the BuildRequest. Change-Id: Ie9b957805e42f766002581adc6182a6543c5333b Reviewed-on: https://cl.tvl.fyi/c/depot/+/11802 Reviewed-by: Brian Olsen <me@griff.name> Tested-by: BuildkiteCI Autosubmit: flokli <flokli@flokli.de>
This commit is contained in:
parent
c30fded880
commit
b992ca49a6
1 changed files with 23 additions and 2 deletions
|
@ -188,7 +188,7 @@ impl TvixStoreIO {
|
||||||
// Provide them, which means, here is where we recursively build
|
// Provide them, which means, here is where we recursively build
|
||||||
// all dependencies.
|
// all dependencies.
|
||||||
#[allow(clippy::mutable_key_type)]
|
#[allow(clippy::mutable_key_type)]
|
||||||
let input_nodes: BTreeSet<Node> =
|
let mut input_nodes: BTreeSet<Node> =
|
||||||
futures::stream::iter(drv.input_derivations.iter())
|
futures::stream::iter(drv.input_derivations.iter())
|
||||||
.map(|(input_drv_path, output_names)| {
|
.map(|(input_drv_path, output_names)| {
|
||||||
// look up the derivation object
|
// look up the derivation object
|
||||||
|
@ -244,6 +244,27 @@ impl TvixStoreIO {
|
||||||
.try_collect()
|
.try_collect()
|
||||||
.await?;
|
.await?;
|
||||||
|
|
||||||
|
// add input sources
|
||||||
|
// FUTUREWORK: merge these who things together
|
||||||
|
#[allow(clippy::mutable_key_type)]
|
||||||
|
let input_nodes_input_sources: BTreeSet<Node> =
|
||||||
|
futures::stream::iter(drv.input_sources.iter())
|
||||||
|
.then(|input_source| {
|
||||||
|
Box::pin(async {
|
||||||
|
let node = self
|
||||||
|
.store_path_to_node(input_source, Path::new(""))
|
||||||
|
.await?;
|
||||||
|
if let Some(node) = node {
|
||||||
|
Ok(node)
|
||||||
|
} else {
|
||||||
|
Err(io::Error::other("no node produced"))
|
||||||
|
}
|
||||||
|
})
|
||||||
|
})
|
||||||
|
.try_collect()
|
||||||
|
.await?;
|
||||||
|
input_nodes.extend(input_nodes_input_sources);
|
||||||
|
|
||||||
span.pb_set_message(&format!("🔨Building {}", &store_path));
|
span.pb_set_message(&format!("🔨Building {}", &store_path));
|
||||||
|
|
||||||
// TODO: check if input sources are sufficiently dealth with,
|
// TODO: check if input sources are sufficiently dealth with,
|
||||||
|
@ -261,7 +282,7 @@ impl TvixStoreIO {
|
||||||
.await
|
.await
|
||||||
.map_err(|e| std::io::Error::new(io::ErrorKind::Other, e))?;
|
.map_err(|e| std::io::Error::new(io::ErrorKind::Other, e))?;
|
||||||
|
|
||||||
// TODO: refscan?
|
// TODO: refscan
|
||||||
|
|
||||||
// For each output, insert a PathInfo.
|
// For each output, insert a PathInfo.
|
||||||
for output in &build_result.outputs {
|
for output in &build_result.outputs {
|
||||||
|
|
Loading…
Reference in a new issue