mirror of
https://github.com/rust-lang/cargo.git
synced 2025-10-01 11:30:39 +00:00
Use the resolver to collect packages
This commit is contained in:
parent
5accea9f81
commit
9c2967924f
@ -1 +1 @@
|
||||
Subproject commit 54ef9a3064d85c9756a9c183087a9e4e28056651
|
||||
Subproject commit de700414aab1aaa4461618ce7a516cb24a8e6665
|
@ -1 +1 @@
|
||||
Subproject commit 0a256d6f033f8652d3fbd84a4d5ae85aff582f3b
|
||||
Subproject commit 5b36a2fc5a21236b2278391c12eb91981dbc8d06
|
@ -41,6 +41,8 @@ impl Manifest {
|
||||
|
||||
let deps = dependencies.clone().map(|deps| {
|
||||
deps.iter().map(|(k,v)| {
|
||||
// This can produce an invalid version, but it's temporary because this needs
|
||||
// to be replaced with Dependency, not NameVer
|
||||
Dependency::with_namever(&NameVer::new(k.clone(), v.clone()))
|
||||
}).collect()
|
||||
}).unwrap_or_else(|| vec!());
|
||||
|
@ -25,5 +25,5 @@ pub mod source;
|
||||
pub mod package;
|
||||
pub mod dependency;
|
||||
pub mod manifest;
|
||||
pub mod resolver;
|
||||
mod registry;
|
||||
mod resolver;
|
||||
|
@ -2,7 +2,8 @@ use std::vec::Vec;
|
||||
|
||||
use core::{
|
||||
// Dependency,
|
||||
Package};
|
||||
Package
|
||||
};
|
||||
|
||||
pub trait Registry {
|
||||
fn query<'a>(&'a self, name: &str) -> Vec<&'a Package>;
|
||||
|
@ -3,8 +3,8 @@ use core;
|
||||
use {CargoResult};
|
||||
|
||||
#[allow(dead_code)]
|
||||
pub fn resolve(deps: &Vec<core::Dependency>, registry: &core::Registry) -> CargoResult<Vec<core::Package>> {
|
||||
let mut remaining = deps.clone();
|
||||
pub fn resolve(deps: &[core::Dependency], registry: &core::Registry) -> CargoResult<Vec<core::Package>> {
|
||||
let mut remaining = Vec::from_slice(deps);
|
||||
let mut resolve = HashMap::<&str, &core::Package>::new();
|
||||
|
||||
loop {
|
||||
|
@ -34,5 +34,5 @@ pub trait Source {
|
||||
* and that the packages are already locally available on the file
|
||||
* system.
|
||||
*/
|
||||
fn get(&self, packages: Vec<NameVer>) -> CargoResult<Vec<Package>>;
|
||||
fn get(&self, packages: &[NameVer]) -> CargoResult<Vec<Package>>;
|
||||
}
|
||||
|
@ -25,8 +25,11 @@ use std::os;
|
||||
use util::config;
|
||||
use util::config::{all_configs,ConfigValue};
|
||||
use cargo_read_manifest = ops::cargo_read_manifest::read_manifest;
|
||||
use core::resolver::resolve;
|
||||
use core::package::PackageSet;
|
||||
use core::Package;
|
||||
use core::source::Source;
|
||||
use core::dependency::Dependency;
|
||||
use sources::path::PathSource;
|
||||
use {CargoError,ToCargoError,CargoResult};
|
||||
|
||||
@ -41,7 +44,7 @@ impl FlagConfig for Options {
|
||||
|
||||
pub fn compile() -> CargoResult<()> {
|
||||
let options = try!(flags::<Options>());
|
||||
let manifest_bytes = try!(read_manifest(options.manifest_path));
|
||||
let manifest = try!(cargo_read_manifest(options.manifest_path));
|
||||
|
||||
let configs = try!(all_configs(os::getcwd()));
|
||||
let config_paths = configs.find(&~"paths").map(|v| v.clone()).unwrap_or_else(|| ConfigValue::new());
|
||||
@ -54,7 +57,16 @@ pub fn compile() -> CargoResult<()> {
|
||||
let source = PathSource::new(paths);
|
||||
let names = try!(source.list());
|
||||
try!(source.download(names.as_slice()));
|
||||
let packages = try!(source.get(names));
|
||||
|
||||
let deps: Vec<Dependency> = names.iter().map(|namever| {
|
||||
Dependency::with_namever(namever)
|
||||
}).collect();
|
||||
|
||||
let packages = try!(source.get(names.as_slice()));
|
||||
let registry = PackageSet::new(packages.as_slice());
|
||||
|
||||
let resolved = resolve(deps.as_slice(), ®istry);
|
||||
println!("Resolved: {}", resolved);
|
||||
|
||||
Ok(())
|
||||
//call_rustc(~BufReader::new(manifest_bytes.as_slice()))
|
||||
|
@ -40,7 +40,7 @@ impl Source for PathSource {
|
||||
Ok(())
|
||||
}
|
||||
|
||||
fn get(&self, packages: Vec<NameVer>) -> CargoResult<Vec<Package>> {
|
||||
fn get(&self, packages: &[NameVer]) -> CargoResult<Vec<Package>> {
|
||||
Ok(self.paths.iter().filter_map(|path| {
|
||||
match read_manifest(path) {
|
||||
Ok(ref manifest) => Some(Package::from_manifest(manifest)),
|
||||
|
Loading…
x
Reference in New Issue
Block a user