Skip to content

Commit 0b89269

Browse files
committed
Fix sources & scripts export for empty source lists
Fixes #161 Fixes #166
1 parent 69c82e9 commit 0b89269

File tree

5 files changed

+24
-25
lines changed

5 files changed

+24
-25
lines changed

CHANGELOG.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@ All notable changes to this project will be documented in this file.
55
The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/) and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html).
66

77
## Unreleased
8+
### Fixed
9+
- Fix sources & scripts export for packages with empty source lists
810

911
## 0.28.1 - 2024-02-22
1012
### Added

src/cmd/fusesoc.rs

Lines changed: 9 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -82,18 +82,15 @@ pub fn run_single(sess: &Session, matches: &ArgMatches) -> Result<()> {
8282

8383
let name = &sess.manifest.package.name;
8484

85-
let srcs = match &sess.manifest.sources {
86-
Some(sources) => Ok(sess
87-
.load_sources(
88-
sources,
89-
Some(name.as_str()),
90-
sess.manifest.dependencies.keys().cloned().collect(),
91-
IndexMap::new(),
92-
version_string.clone(),
93-
)
94-
.flatten()),
95-
None => Err(Error::new("Error in loading sources")),
96-
}?;
85+
let srcs = sess
86+
.load_sources(
87+
&sess.manifest.sources,
88+
Some(name.as_str()),
89+
sess.manifest.dependencies.keys().cloned().collect(),
90+
IndexMap::new(),
91+
version_string.clone(),
92+
)
93+
.flatten();
9794

9895
let core_path = &sess.root.join(format!("{}.core", name));
9996

src/config.rs

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ pub struct Manifest {
3535
/// The dependencies.
3636
pub dependencies: IndexMap<String, Dependency>,
3737
/// The source files.
38-
pub sources: Option<Sources>,
38+
pub sources: Sources,
3939
/// The include directories exported to dependent packages.
4040
pub export_include_dirs: Vec<PathBuf>,
4141
/// The plugin binaries.
@@ -53,11 +53,7 @@ impl PrefixPaths for Manifest {
5353
Ok(Manifest {
5454
package: self.package,
5555
dependencies: self.dependencies.prefix_paths(prefix)?,
56-
sources: self
57-
.sources
58-
.map_or(Ok::<Option<Sources>, Error>(None), |src| {
59-
Ok(Some(src.prefix_paths(prefix)?))
60-
})?,
56+
sources: self.sources.prefix_paths(prefix)?,
6157
export_include_dirs: self
6258
.export_include_dirs
6359
.into_iter()
@@ -355,7 +351,12 @@ impl Validate for PartialManifest {
355351
Ok(Manifest {
356352
package: pkg,
357353
dependencies: deps,
358-
sources: srcs,
354+
sources: srcs.unwrap_or(Sources {
355+
target: TargetSpec::Wildcard,
356+
include_dirs: vec![],
357+
defines: IndexMap::new(),
358+
files: vec![],
359+
}),
359360
export_include_dirs: exp_inc_dirs
360361
.iter()
361362
.map(|path| env_path_from_string(path.to_string()))

src/sess.rs

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@ use crate::config::{self, Config, Manifest};
3434
use crate::error::*;
3535
// use crate::future_throttle::FutureThrottle;
3636
use crate::git::Git;
37+
use crate::src::SourceFile::Group;
3738
use crate::src::SourceGroup;
3839
use crate::target::TargetSpec;
3940
use crate::util::try_modification_time;
@@ -1218,8 +1219,7 @@ impl<'io, 'sess: 'io, 'ctx: 'sess> SessionIo<'sess, 'ctx> {
12181219
let files = manifests
12191220
.into_iter()
12201221
.flatten()
1221-
.filter_map(|m| {
1222-
m.sources.as_ref().map(|s| {
1222+
.map(|m| {
12231223
// Collect include dirs from export_include_dirs of package and direct dependencies
12241224
let mut export_include_dirs: IndexMap<String, IndexSet<&Path>> =
12251225
IndexMap::new();
@@ -1245,7 +1245,7 @@ impl<'io, 'sess: 'io, 'ctx: 'sess> SessionIo<'sess, 'ctx> {
12451245
}
12461246
self.sess
12471247
.load_sources(
1248-
s,
1248+
&m.sources,
12491249
Some(m.package.name.as_str()),
12501250
m.dependencies.keys().cloned().collect(),
12511251
export_include_dirs,
@@ -1254,9 +1254,8 @@ impl<'io, 'sess: 'io, 'ctx: 'sess> SessionIo<'sess, 'ctx> {
12541254
Err(_) => None,
12551255
},
12561256
)
1257-
.into()
1258-
})
12591257
})
1258+
.map(|sg| Group(Box::new(sg)))
12601259
.collect();
12611260

12621261
// Create a source group for this rank.

src/src.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ impl<'ctx> SourceGroup<'ctx> {
5353
let group = group.simplify();
5454

5555
// Discard empty groups.
56-
if group.files.is_empty() {
56+
if group.files.is_empty() && group.package.is_none() {
5757
return None;
5858
}
5959

0 commit comments

Comments
 (0)