Skip to content

Commit 7fe2ea7

Browse files
committed
fix(package): emit resolved foreign identities
1 parent 4f13502 commit 7fe2ea7

2 files changed

Lines changed: 17 additions & 5 deletions

File tree

‎src/foreign.rs‎

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1016,12 +1016,11 @@ fn parse_spack_package(text: &str) -> Result<ForeignRecipe, ForeignError> {
10161016
.ok()
10171017
.map(|r| r.find_iter(text).count())
10181018
.unwrap_or(0);
1019-
let mut patches = Vec::new();
1019+
let patches = Vec::new();
10201020
if patch_n > 0 {
10211021
notes.push(format!(
10221022
"{patch_n} patch() directive(s) — recorded as residual patch count"
10231023
));
1024-
patches.push(format!("spack:{patch_n}_patch_directives"));
10251024
}
10261025

10271026
Ok(ForeignRecipe {

‎src/package_emit.rs‎

Lines changed: 16 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -138,13 +138,13 @@ fn render_easyconfig(plan: &PackagePlan, lock: &ProfileLock, versionsuffix: &str
138138
.dependencies
139139
.iter()
140140
.filter(|dependency| dependency.build)
141-
.map(render_dependency)
141+
.map(|dependency| render_dependency(dependency, &lock.toolchain))
142142
.collect::<Vec<_>>();
143143
let runtime_dependencies = lock
144144
.dependencies
145145
.iter()
146146
.filter(|dependency| !dependency.build)
147-
.map(render_dependency)
147+
.map(|dependency| render_dependency(dependency, &lock.toolchain))
148148
.collect::<Vec<_>>();
149149
let moduleclass = plan.build.moduleclass.as_deref().unwrap_or("lib");
150150

@@ -207,7 +207,20 @@ fn render_sources(plan: &PackagePlan) -> (String, String) {
207207
)
208208
}
209209

210-
fn render_dependency(dependency: &crate::package::LockedDependency) -> String {
210+
fn render_dependency(
211+
dependency: &crate::package::LockedDependency,
212+
package_toolchain: &crate::domain::Toolchain,
213+
) -> String {
214+
if dependency.toolchain != *package_toolchain {
215+
return format!(
216+
"('{}', '{}', '{}', ('{}', '{}'))",
217+
escape_single(&dependency.name),
218+
escape_single(&dependency.version),
219+
escape_single(dependency.versionsuffix.as_deref().unwrap_or("")),
220+
escape_single(&dependency.toolchain.name),
221+
escape_single(&dependency.toolchain.version),
222+
);
223+
}
211224
match dependency.versionsuffix.as_deref() {
212225
Some(versionsuffix) if !versionsuffix.is_empty() => format!(
213226
"('{}', '{}', '{}')",

0 commit comments

Comments
 (0)