Skip to content

Commit 1e97817

Browse files
committed
Fix sources & scripts export for empty source lists
Fixes #166
1 parent 46ade8e commit 1e97817

5 files changed

Lines changed: 23 additions & 25 deletions

File tree

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/) a
1313
- Make panic an error when lockfile is not up to date with dependencies.
1414
- Fix Readme dependency version indication for exact match.
1515
- Fix vendor file copying for symbolic links.
16+
- Fix sources & scripts export for packages with empty source lists
1617

1718
### Added
1819
- Add `completion` command to generate shell autocomplete integration.

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;
@@ -1250,8 +1251,7 @@ impl<'io, 'sess: 'io, 'ctx: 'sess> SessionIo<'sess, 'ctx> {
12501251
let files = manifests
12511252
.into_iter()
12521253
.flatten()
1253-
.filter_map(|m| {
1254-
m.sources.as_ref().map(|s| {
1254+
.map(|m| {
12551255
// Collect include dirs from export_include_dirs of package and direct dependencies
12561256
let mut export_include_dirs: IndexMap<String, IndexSet<&Path>> =
12571257
IndexMap::new();
@@ -1277,7 +1277,7 @@ impl<'io, 'sess: 'io, 'ctx: 'sess> SessionIo<'sess, 'ctx> {
12771277
}
12781278
self.sess
12791279
.load_sources(
1280-
s,
1280+
&m.sources,
12811281
Some(m.package.name.as_str()),
12821282
m.dependencies.keys().cloned().collect(),
12831283
export_include_dirs,
@@ -1286,9 +1286,8 @@ impl<'io, 'sess: 'io, 'ctx: 'sess> SessionIo<'sess, 'ctx> {
12861286
Err(_) => None,
12871287
},
12881288
)
1289-
.into()
1290-
})
12911289
})
1290+
.map(|sg| Group(Box::new(sg)))
12921291
.collect();
12931292

12941293
// 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)