Skip to content

Commit

Permalink
Make addl_lib_search_paths a HashSet (Closes #7718).
Browse files Browse the repository at this point in the history
  • Loading branch information
pythonesque committed Oct 26, 2013
1 parent 950add4 commit a239c0e
Show file tree
Hide file tree
Showing 9 changed files with 42 additions and 23 deletions.
4 changes: 3 additions & 1 deletion src/librustc/driver/driver.rs
Expand Up @@ -757,7 +757,9 @@ pub fn build_session_options(binary: @str,

let statik = debugging_opts & session::statik != 0;

let addl_lib_search_paths = matches.opt_strs("L").map(|s| Path::new(s.as_slice()));
let addl_lib_search_paths = matches.opt_strs("L").map(|s| {
Path::new(s.as_slice())
}).move_iter().collect();
let linker = matches.opt_str("linker");
let linker_args = matches.opt_strs("link-args").flat_map( |a| {
a.split_iter(' ').map(|arg| arg.to_owned()).collect()
Expand Down
10 changes: 5 additions & 5 deletions src/librustc/driver/session.rs
Expand Up @@ -29,7 +29,7 @@ use syntax::parse::token;
use syntax;

use std::int;
use std::hashmap::HashMap;
use std::hashmap::{HashMap,HashSet};

#[deriving(Eq)]
pub enum Os { OsWin32, OsMacos, OsLinux, OsAndroid, OsFreebsd, }
Expand Down Expand Up @@ -158,9 +158,9 @@ pub struct options {
save_temps: bool,
jit: bool,
output_type: back::link::output_type,
addl_lib_search_paths: @mut ~[Path], // This is mutable for rustpkg, which
// updates search paths based on the
// parsed code
addl_lib_search_paths: @mut HashSet<Path>, // This is mutable for rustpkg, which
// updates search paths based on the
// parsed code
linker: Option<~str>,
linker_args: ~[~str],
maybe_sysroot: Option<@Path>,
Expand Down Expand Up @@ -366,7 +366,7 @@ pub fn basic_options() -> @options {
save_temps: false,
jit: false,
output_type: link::output_type_exe,
addl_lib_search_paths: @mut ~[],
addl_lib_search_paths: @mut HashSet::new(),
linker: None,
linker_args: ~[],
maybe_sysroot: None,
Expand Down
4 changes: 2 additions & 2 deletions src/librustc/metadata/filesearch.rs
Expand Up @@ -40,11 +40,11 @@ pub trait FileSearch {

pub fn mk_filesearch(maybe_sysroot: &Option<@Path>,
target_triple: &str,
addl_lib_search_paths: @mut ~[Path])
addl_lib_search_paths: @mut HashSet<Path>)
-> @FileSearch {
struct FileSearchImpl {
sysroot: @Path,
addl_lib_search_paths: @mut ~[Path],
addl_lib_search_paths: @mut HashSet<Path>,
target_triple: ~str
}
impl FileSearch for FileSearchImpl {
Expand Down
6 changes: 3 additions & 3 deletions src/librustdoc/core.rs
Expand Up @@ -20,7 +20,7 @@ use syntax;

use std::os;
use std::local_data;
use std::hashmap::HashMap;
use std::hashmap::{HashMap,HashSet};

use visit_ast::RustdocVisitor;
use clean;
Expand All @@ -39,7 +39,7 @@ pub struct CrateAnalysis {

/// Parses, resolves, and typechecks the given crate
fn get_ast_and_resolve(cpath: &Path,
libs: ~[Path]) -> (DocContext, CrateAnalysis) {
libs: HashSet<Path>) -> (DocContext, CrateAnalysis) {
use syntax::codemap::dummy_spanned;
use rustc::driver::driver::{file_input, build_configuration,
phase_1_parse_input,
Expand Down Expand Up @@ -89,7 +89,7 @@ fn get_ast_and_resolve(cpath: &Path,
CrateAnalysis { reexports: reexports, exported_items: exported_items });
}

pub fn run_core (libs: ~[Path], path: &Path) -> (clean::Crate, CrateAnalysis) {
pub fn run_core (libs: HashSet<Path>, path: &Path) -> (clean::Crate, CrateAnalysis) {
let (ctxt, analysis) = get_ast_and_resolve(path, libs);
let ctxt = @ctxt;
debug!("defmap:");
Expand Down
2 changes: 1 addition & 1 deletion src/librustdoc/rustdoc.rs
Expand Up @@ -198,7 +198,7 @@ fn rust_input(cratefile: &str, matches: &getopts::Matches) -> Output {
info!("starting to run rustc");
let (crate, analysis) = do std::task::try {
let cr = cr.take();
core::run_core(libs.take(), &cr)
core::run_core(libs.take().move_iter().collect(), &cr)
}.unwrap();
info!("finished with rustc");
local_data::set(analysiskey, analysis);
Expand Down
12 changes: 7 additions & 5 deletions src/librustpkg/context.rs
Expand Up @@ -10,10 +10,12 @@

// Context data structure used by rustpkg

use std::os;
use extra::workcache;
use rustc::driver::session::{OptLevel, No};

use std::hashmap::HashSet;
use std::os;

#[deriving(Clone)]
pub struct Context {
// Config strings that the user passed in with --cfg
Expand Down Expand Up @@ -60,7 +62,7 @@ impl BuildContext {
self.context.add_library_path(p);
}

pub fn additional_library_paths(&self) -> ~[Path] {
pub fn additional_library_paths(&self) -> HashSet<Path> {
self.context.rustc_flags.additional_library_paths.clone()
}
}
Expand Down Expand Up @@ -96,7 +98,7 @@ pub struct RustcFlags {
target_cpu: Option<~str>,
// Additional library directories, which get passed with the -L flag
// This can't be set with a rustpkg flag, only from package scripts
additional_library_paths: ~[Path],
additional_library_paths: HashSet<Path>,
// Any -Z features
experimental_features: Option<~[~str]>
}
Expand Down Expand Up @@ -163,7 +165,7 @@ impl Context {
}

pub fn add_library_path(&mut self, p: Path) {
self.rustc_flags.additional_library_paths.push(p);
self.rustc_flags.additional_library_paths.insert(p);
}
}

Expand Down Expand Up @@ -227,7 +229,7 @@ impl RustcFlags {
save_temps: false,
target: None,
target_cpu: None,
additional_library_paths: ~[],
additional_library_paths: HashSet::new(),
experimental_features: None
}
}
Expand Down
4 changes: 3 additions & 1 deletion src/librustpkg/rustpkg.rs
Expand Up @@ -25,6 +25,7 @@ extern mod rustc;
extern mod syntax;

use std::{os, result, run, str, task};
use std::hashmap::HashSet;
pub use std::path::Path;

use extra::workcache;
Expand Down Expand Up @@ -840,7 +841,8 @@ pub fn main_args(args: &[~str]) -> int {
save_temps: save_temps,
target: target,
target_cpu: target_cpu,
additional_library_paths: ~[], // No way to set this from the rustpkg command line
additional_library_paths:
HashSet::new(), // No way to set this from the rustpkg command line
experimental_features: experimental_features
};

Expand Down
6 changes: 1 addition & 5 deletions src/librustpkg/util.rs
Expand Up @@ -285,11 +285,7 @@ pub fn compile_input(context: &BuildContext,
debug!("a dependency: {}", p.display());
// Pass the directory containing a dependency
// as an additional lib search path
if !addl_lib_search_paths.contains(&p) {
// Might be inefficient, but this set probably
// won't get too large -- tjc
addl_lib_search_paths.push(p);
}
addl_lib_search_paths.insert(p);
});

// Inject the link attributes so we get the right package name and version
Expand Down
17 changes: 17 additions & 0 deletions src/test/run-pass/duplicated-external-mods.rs
@@ -0,0 +1,17 @@
// Copyright 2013 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.

// xfail-fast
// aux-build:anon-extern-mod-cross-crate-1.rs
// aux-build:anon-extern-mod-cross-crate-1.rs
extern mod anonexternmod;

pub fn main() { }

18 comments on commit a239c0e

@bors
Copy link
Contributor

@bors bors commented on a239c0e Oct 26, 2013

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

saw approval from catamorphism
at pythonesque@a239c0e

@bors
Copy link
Contributor

@bors bors commented on a239c0e Oct 26, 2013

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

merging pythonesque/rust/issue-7718 = a239c0e into auto

@bors
Copy link
Contributor

@bors bors commented on a239c0e Oct 26, 2013

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

pythonesque/rust/issue-7718 = a239c0e merged ok, testing candidate = f802e2ba

@bors
Copy link
Contributor

@bors bors commented on a239c0e Oct 26, 2013

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@catamorphism
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@bors: retry

@bors
Copy link
Contributor

@bors bors commented on a239c0e Oct 26, 2013

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

saw approval from catamorphism
at pythonesque@a239c0e

@bors
Copy link
Contributor

@bors bors commented on a239c0e Oct 26, 2013

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

merging pythonesque/rust/issue-7718 = a239c0e into auto

@bors
Copy link
Contributor

@bors bors commented on a239c0e Oct 26, 2013

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

pythonesque/rust/issue-7718 = a239c0e merged ok, testing candidate = 936e1f9f

@bors
Copy link
Contributor

@bors bors commented on a239c0e Oct 26, 2013

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@bors
Copy link
Contributor

@bors bors commented on a239c0e Oct 28, 2013

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

saw approval from catamorphism
at pythonesque@a239c0e

@bors
Copy link
Contributor

@bors bors commented on a239c0e Oct 28, 2013

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

merging pythonesque/rust/issue-7718 = a239c0e into auto

@bors
Copy link
Contributor

@bors bors commented on a239c0e Oct 28, 2013

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

pythonesque/rust/issue-7718 = a239c0e merged ok, testing candidate = ef354e73

@bors
Copy link
Contributor

@bors bors commented on a239c0e Oct 28, 2013

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@bors
Copy link
Contributor

@bors bors commented on a239c0e Oct 28, 2013

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

saw approval from catamorphism
at pythonesque@a239c0e

@bors
Copy link
Contributor

@bors bors commented on a239c0e Oct 28, 2013

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

merging pythonesque/rust/issue-7718 = a239c0e into auto

@bors
Copy link
Contributor

@bors bors commented on a239c0e Oct 28, 2013

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

pythonesque/rust/issue-7718 = a239c0e merged ok, testing candidate = 0a9a706

@bors
Copy link
Contributor

@bors bors commented on a239c0e Oct 28, 2013

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@bors
Copy link
Contributor

@bors bors commented on a239c0e Oct 28, 2013

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

fast-forwarding master to auto = 0a9a706

Please sign in to comment.