Skip to content

Commit 62707fd

Browse files
authored
feat: use variant config when discovering and building outputs (#30)
1 parent cf0aa74 commit 62707fd

File tree

4 files changed

+37
-19
lines changed

4 files changed

+37
-19
lines changed

Cargo.lock

Lines changed: 14 additions & 14 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

crates/pixi-build/src/bin/pixi-build-rattler-build/rattler_build.rs

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -146,7 +146,8 @@ impl Protocol for RattlerBuildBackend {
146146
.channel_base_urls
147147
.unwrap_or_else(|| vec![Url::from_str("https://prefix.dev/conda-forge").unwrap()]);
148148

149-
let discovered_outputs = rattler_build_tool.discover_outputs()?;
149+
let discovered_outputs =
150+
rattler_build_tool.discover_outputs(&params.variant_configuration)?;
150151

151152
let host_vpkgs = params
152153
.host_platform
@@ -294,7 +295,8 @@ impl Protocol for RattlerBuildBackend {
294295
params.work_directory.clone(),
295296
);
296297

297-
let discovered_outputs = rattler_build_tool.discover_outputs()?;
298+
let discovered_outputs =
299+
rattler_build_tool.discover_outputs(&params.variant_configuration)?;
298300

299301
let outputs = rattler_build_tool.get_outputs(
300302
&discovered_outputs,
@@ -406,6 +408,7 @@ mod tests {
406408
},
407409
channel_base_urls: None,
408410
work_directory: current_dir,
411+
variant_configuration: None,
409412
})
410413
.await
411414
.unwrap();
@@ -442,6 +445,7 @@ mod tests {
442445
},
443446
outputs: None,
444447
work_directory: current_dir.into_path(),
448+
variant_configuration: None,
445449
})
446450
.await
447451
.unwrap();

crates/pixi-build/src/cli.rs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -135,6 +135,7 @@ async fn get_conda_metadata(
135135
base_url: channel_config.channel_alias,
136136
},
137137
work_directory: tempdir.path().to_path_buf(),
138+
variant_configuration: None,
138139
})
139140
.await
140141
}
@@ -170,6 +171,7 @@ async fn build(factory: impl ProtocolFactory, manifest_path: &Path) -> miette::R
170171
},
171172
outputs: None,
172173
work_directory: work_dir.path().to_path_buf(),
174+
variant_configuration: None,
173175
})
174176
.await?;
175177

crates/pixi-build/src/tools.rs

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,7 @@
1-
use std::{collections::BTreeMap, path::PathBuf};
1+
use std::{
2+
collections::{BTreeMap, HashMap},
3+
path::PathBuf,
4+
};
25

36
use chrono::Utc;
47
use indexmap::IndexSet;
@@ -83,7 +86,10 @@ impl RattlerBuild {
8386
}
8487

8588
/// Discover the outputs from the recipe.
86-
pub fn discover_outputs(&self) -> miette::Result<IndexSet<DiscoveredOutput>> {
89+
pub fn discover_outputs(
90+
&self,
91+
variant_config_input: &Option<HashMap<String, Vec<String>>>,
92+
) -> miette::Result<IndexSet<DiscoveredOutput>> {
8793
// First find all outputs from the recipe
8894
let outputs = find_outputs_from_src(&self.raw_recipe)?;
8995

@@ -102,9 +108,15 @@ impl RattlerBuild {
102108

103109
let variant_configs = variant_configs.unwrap_or_default();
104110

105-
let variant_config =
111+
let mut variant_config =
106112
VariantConfig::from_files(&variant_configs, &self.selector_config).into_diagnostic()?;
107113

114+
if let Some(variant_config_input) = variant_config_input {
115+
for (k, v) in variant_config_input.iter() {
116+
variant_config.variants.insert(k.into(), v.clone());
117+
}
118+
}
119+
108120
variant_config
109121
.find_variants(&outputs, &self.raw_recipe, &self.selector_config)
110122
.into_diagnostic()

0 commit comments

Comments
 (0)