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| {
|
let deps = dependencies.clone().map(|deps| {
|
||||||
deps.iter().map(|(k,v)| {
|
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()))
|
Dependency::with_namever(&NameVer::new(k.clone(), v.clone()))
|
||||||
}).collect()
|
}).collect()
|
||||||
}).unwrap_or_else(|| vec!());
|
}).unwrap_or_else(|| vec!());
|
||||||
|
@ -25,5 +25,5 @@ pub mod source;
|
|||||||
pub mod package;
|
pub mod package;
|
||||||
pub mod dependency;
|
pub mod dependency;
|
||||||
pub mod manifest;
|
pub mod manifest;
|
||||||
|
pub mod resolver;
|
||||||
mod registry;
|
mod registry;
|
||||||
mod resolver;
|
|
||||||
|
@ -2,7 +2,8 @@ use std::vec::Vec;
|
|||||||
|
|
||||||
use core::{
|
use core::{
|
||||||
// Dependency,
|
// Dependency,
|
||||||
Package};
|
Package
|
||||||
|
};
|
||||||
|
|
||||||
pub trait Registry {
|
pub trait Registry {
|
||||||
fn query<'a>(&'a self, name: &str) -> Vec<&'a Package>;
|
fn query<'a>(&'a self, name: &str) -> Vec<&'a Package>;
|
||||||
|
@ -3,8 +3,8 @@ use core;
|
|||||||
use {CargoResult};
|
use {CargoResult};
|
||||||
|
|
||||||
#[allow(dead_code)]
|
#[allow(dead_code)]
|
||||||
pub fn resolve(deps: &Vec<core::Dependency>, registry: &core::Registry) -> CargoResult<Vec<core::Package>> {
|
pub fn resolve(deps: &[core::Dependency], registry: &core::Registry) -> CargoResult<Vec<core::Package>> {
|
||||||
let mut remaining = deps.clone();
|
let mut remaining = Vec::from_slice(deps);
|
||||||
let mut resolve = HashMap::<&str, &core::Package>::new();
|
let mut resolve = HashMap::<&str, &core::Package>::new();
|
||||||
|
|
||||||
loop {
|
loop {
|
||||||
|
@ -34,5 +34,5 @@ pub trait Source {
|
|||||||
* and that the packages are already locally available on the file
|
* and that the packages are already locally available on the file
|
||||||
* system.
|
* 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;
|
||||||
use util::config::{all_configs,ConfigValue};
|
use util::config::{all_configs,ConfigValue};
|
||||||
use cargo_read_manifest = ops::cargo_read_manifest::read_manifest;
|
use cargo_read_manifest = ops::cargo_read_manifest::read_manifest;
|
||||||
|
use core::resolver::resolve;
|
||||||
|
use core::package::PackageSet;
|
||||||
use core::Package;
|
use core::Package;
|
||||||
use core::source::Source;
|
use core::source::Source;
|
||||||
|
use core::dependency::Dependency;
|
||||||
use sources::path::PathSource;
|
use sources::path::PathSource;
|
||||||
use {CargoError,ToCargoError,CargoResult};
|
use {CargoError,ToCargoError,CargoResult};
|
||||||
|
|
||||||
@ -41,7 +44,7 @@ impl FlagConfig for Options {
|
|||||||
|
|
||||||
pub fn compile() -> CargoResult<()> {
|
pub fn compile() -> CargoResult<()> {
|
||||||
let options = try!(flags::<Options>());
|
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 configs = try!(all_configs(os::getcwd()));
|
||||||
let config_paths = configs.find(&~"paths").map(|v| v.clone()).unwrap_or_else(|| ConfigValue::new());
|
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 source = PathSource::new(paths);
|
||||||
let names = try!(source.list());
|
let names = try!(source.list());
|
||||||
try!(source.download(names.as_slice()));
|
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(())
|
Ok(())
|
||||||
//call_rustc(~BufReader::new(manifest_bytes.as_slice()))
|
//call_rustc(~BufReader::new(manifest_bytes.as_slice()))
|
||||||
|
@ -40,7 +40,7 @@ impl Source for PathSource {
|
|||||||
Ok(())
|
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| {
|
Ok(self.paths.iter().filter_map(|path| {
|
||||||
match read_manifest(path) {
|
match read_manifest(path) {
|
||||||
Ok(ref manifest) => Some(Package::from_manifest(manifest)),
|
Ok(ref manifest) => Some(Package::from_manifest(manifest)),
|
||||||
|
Loading…
x
Reference in New Issue
Block a user