Change:
This looks like , but I'm running . The error message was With this stacktrace: I'm on an i686 Ubuntu 14.04.1 LTS Vagrant VM (the ) on OS X 10.9.5
Actually, I just took another look at the command line, and it had . That's probably where the value came from, but I don't know if it's the expected error message.
Yep, this should definitely have a better error message.
Do you happen to have a code example that triggers this?
I don't have code, but specifying a value for seemed to fix the problem, so I think that's it.
fixing it now.

Discussion:
<del> // Copyright 2012 The Rust Project Developers. See the COPYRIGHT </del> <ins> // Copyright 2012-2014 The Rust Project Developers. See the COPYRIGHT </ins> // file at the top-level directory of this distribution and at // http://rust-lang.org/COPYRIGHT. //

// rlibs/dylibs. let sess = self.sess; let dylibname = self.dylibname(); <del> let mut locs = locs.iter().map(|l| Path::new(l.as_slice())).filter(|loc| { if !loc.exists() { sess.err(format!("extern location does not exist: {}", loc.display()).as_slice()); return false; } let file = loc.filename_str().unwrap(); if file.starts_with("lib") && file.ends_with(".rlib") { return true } else { match dylibname { Some((prefix, suffix)) => { if file.starts_with(prefix) && file.ends_with(suffix) { return true </del> <ins> let mut rlibs = HashSet::new(); let mut dylibs = HashSet::new(); { let mut locs = locs.iter().map(|l| Path::new(l.as_slice())).filter(|loc| { if !loc.exists() { sess.err(format!("extern location for {} does not exist: {}", self.crate_name, loc.display()).as_slice()); return false; } let file = match loc.filename_str() { Some(file) => file, None => { sess.err(format!("extern location for {} is not a file: {}", self.crate_name, loc.display()).as_slice()); return false; } }; if file.starts_with("lib") && file.ends_with(".rlib") { return true } else { match dylibname { Some((prefix, suffix)) => { if file.starts_with(prefix) && file.ends_with(suffix) { return true } </ins> } <ins> None => {} </ins> } <del> None => {} </del> } <del> } sess.err(format!("extern location is of an unknown type: {}", loc.display()).as_slice()); false }); </del> <ins> sess.err(format!("extern location for {} is of an unknown type: {}", self.crate_name, loc.display()).as_slice()); false }); </ins> <del> // Now that we have an iterator of good candidates, make sure there's at // most one rlib and at most one dylib. let mut rlibs = HashSet::new(); let mut dylibs = HashSet::new(); for loc in locs { if loc.filename_str().unwrap().ends_with(".rlib") { rlibs.insert(fs::realpath(&loc).unwrap()); } else { dylibs.insert(fs::realpath(&loc).unwrap()); </del> <ins> // Now that we have an iterator of good candidates, make sure there's at // most one rlib and at most one dylib. for loc in locs { if loc.filename_str().unwrap().ends_with(".rlib") { rlibs.insert(fs::realpath(&loc).unwrap()); } else { dylibs.insert(fs::realpath(&loc).unwrap()); } </ins> } <del> } </del> <ins> }; </ins> // Extract the rlib/dylib pair. let mut metadata = None;

<ins> // Copyright 2014 The Rust Project Developers. See the COPYRIGHT // file at the top-level directory of this distribution and at // http://rust-lang.org/COPYRIGHT. // // Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or // http://www.apache.org/licenses/LICENSE-2.0> or the MIT license // <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your // option. This file may not be copied, modified, or distributed // except according to those terms. // compile-flags: --extern std= // error-pattern: is not a file fn main() {} </ins>