Skip to content

Commit f7dc0af

Browse files
author
Magnus Auvinen
committed
---
yaml --- r: 14143 b: refs/heads/try c: a422cd7 h: refs/heads/master i: 14141: 2b798f3 14139: 23541c0 14135: 9f96fa6 14127: 6103c15 14111: 1041880 14079: 959e38f v: v3
1 parent f39821f commit f7dc0af

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

102 files changed

+640
-1382
lines changed

[refs]

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,5 +2,5 @@
22
refs/heads/master: 61b1875c16de39c166b0f4d54bba19f9c6777d1a
33
refs/heads/snap-stage1: e33de59e47c5076a89eadeb38f4934f58a3618a6
44
refs/heads/snap-stage3: 4a81779abd786ff22d71434c6d9a5917ea4cdfff
5-
refs/heads/try: d846169b1598fc9953a2ecc3fb2f0a557ba5a014
5+
refs/heads/try: a422cd7ddba45cc943416851c4abc8ae915c4fe9
66
refs/tags/release-0.1: 1f5c5126e96c79d22cb7862f75304136e204f105

branches/try/src/cargo/cargo.rs

Lines changed: 40 additions & 109 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,7 @@ use std;
55

66
import rustc::syntax::{ast, codemap};
77
import rustc::syntax::parse::parser;
8-
import rustc::util::filesearch::{get_cargo_root, get_cargo_root_nearest,
9-
get_cargo_sysroot};
8+
import rustc::util::filesearch::get_cargo_root;
109
import rustc::driver::diagnostic;
1110

1211
import std::fs;
@@ -20,8 +19,6 @@ import std::run;
2019
import str;
2120
import std::tempfile;
2221
import vec;
23-
import std::getopts;
24-
import getopts::{optflag, optopt, opt_present};
2522

2623
enum _src {
2724
/* Break cycles in package <-> source */
@@ -56,7 +53,7 @@ type cargo = {
5653
workdir: str,
5754
sourcedir: str,
5855
sources: map::hashmap<str, source>,
59-
opts: options
56+
mutable test: bool
6057
};
6158

6259
type pkg = {
@@ -68,18 +65,6 @@ type pkg = {
6865
crate_type: option<str>
6966
};
7067

71-
type options = {
72-
test: bool,
73-
mode: mode,
74-
free: [str],
75-
};
76-
77-
enum mode { system_mode, user_mode, local_mode }
78-
79-
fn opts() -> [getopts::opt] {
80-
[optflag("g"), optflag("G"), optopt("mode"), optflag("test")]
81-
}
82-
8368
fn info(msg: str) {
8469
io::stdout().write_line("info: " + msg);
8570
}
@@ -337,49 +322,10 @@ fn load_source_packages(&c: cargo, &src: source) {
337322
};
338323
}
339324

340-
fn build_cargo_options(argv: [str]) -> options {
341-
let match = alt getopts::getopts(argv, opts()) {
342-
result::ok(m) { m }
343-
result::err(f) {
344-
fail #fmt["%s", getopts::fail_str(f)];
345-
}
346-
};
347-
348-
let test = opt_present(match, "test");
349-
let mode = if opt_present(match, "G") {
350-
if opt_present(match, "mode") { fail "--mode and -G both provided"; }
351-
if opt_present(match, "g") { fail "-G and -g both provided"; }
352-
system_mode
353-
} else if opt_present(match, "g") {
354-
if opt_present(match, "mode") { fail "--mode and -g both provided"; }
355-
if opt_present(match, "G") { fail "-G and -g both provided"; }
356-
user_mode
357-
} else if opt_present(match, "mode") {
358-
alt getopts::opt_str(match, "mode") {
359-
"system" { system_mode }
360-
"user" { user_mode }
361-
"local" { local_mode }
362-
_ { fail "argument to `mode` must be one of `system`" +
363-
", `user`, or `normal`";
364-
}
365-
}
366-
} else {
367-
local_mode
368-
};
369-
370-
{test: test, mode: mode, free: match.free}
371-
}
372-
373-
fn configure(opts: options) -> cargo {
374-
let get_cargo_dir = alt opts.mode {
375-
system_mode { get_cargo_sysroot }
376-
user_mode { get_cargo_root }
377-
local_mode { get_cargo_root_nearest }
378-
};
379-
380-
let p = alt get_cargo_dir() {
381-
result::ok(p) { p }
382-
result::err(e) { fail e }
325+
fn configure() -> cargo {
326+
let p = alt get_cargo_root() {
327+
result::ok(p) { p }
328+
result::err(e) { fail e }
383329
};
384330

385331
let sources = map::new_str_hash::<source>();
@@ -393,7 +339,7 @@ fn configure(opts: options) -> cargo {
393339
workdir: fs::connect(p, "work"),
394340
sourcedir: fs::connect(p, "sources"),
395341
sources: sources,
396-
opts: opts
342+
mutable test: false
397343
};
398344

399345
need_dir(c.root);
@@ -484,7 +430,7 @@ fn install_source(c: cargo, path: str) {
484430
alt p {
485431
none { cont; }
486432
some(_p) {
487-
if c.opts.test {
433+
if c.test {
488434
test_one_crate(c, path, cf, _p);
489435
}
490436
install_one_crate(c, path, cf, _p);
@@ -627,14 +573,19 @@ fn install_named_specific(c: cargo, wd: str, src: str, name: str) {
627573
error("Can't find package " + src + "/" + name);
628574
}
629575

630-
fn cmd_install(c: cargo) unsafe {
576+
fn cmd_install(c: cargo, argv: [str]) unsafe {
631577
// cargo install <pkg>
632-
if vec::len(c.opts.free) < 3u {
578+
if vec::len(argv) < 3u {
633579
cmd_usage();
634580
ret;
635581
}
636582

637-
let target = c.opts.free[2];
583+
let target = argv[2];
584+
// TODO: getopts
585+
if vec::len(argv) > 3u && argv[2] == "--test" {
586+
c.test = true;
587+
target = argv[3];
588+
}
638589

639590
let wd = alt tempfile::mkdtemp(c.workdir + fs::path_sep(), "") {
640591
some(_wd) { _wd }
@@ -720,9 +671,9 @@ fn sync_one(c: cargo, name: str, src: source) {
720671
run::run_program("cp", [pkgfile, destpkgfile]);
721672
}
722673

723-
fn cmd_sync(c: cargo) {
724-
if vec::len(c.opts.free) == 3u {
725-
sync_one(c, c.opts.free[2], c.sources.get(c.opts.free[2]));
674+
fn cmd_sync(c: cargo, argv: [str]) {
675+
if vec::len(argv) == 3u {
676+
sync_one(c, argv[2], c.sources.get(argv[2]));
726677
} else {
727678
cargo_suggestion(c, true, { || } );
728679
c.sources.items { |k, v|
@@ -758,8 +709,6 @@ fn cmd_init(c: cargo) {
758709
}
759710
info(#fmt["signature ok for sources.json"]);
760711
run::run_program("cp", [srcfile, destsrcfile]);
761-
762-
info(#fmt["Initialized .cargo in %s", c.root]);
763712
}
764713

765714
fn print_pkg(s: source, p: package) {
@@ -772,22 +721,22 @@ fn print_pkg(s: source, p: package) {
772721
print(" >> " + p.description + "\n")
773722
}
774723
}
775-
fn cmd_list(c: cargo) {
724+
fn cmd_list(c: cargo, argv: [str]) {
776725
for_each_package(c, { |s, p|
777-
if vec::len(c.opts.free) <= 2u || c.opts.free[2] == s.name {
726+
if vec::len(argv) <= 2u || argv[2] == s.name {
778727
print_pkg(s, p);
779728
}
780729
});
781730
}
782731

783-
fn cmd_search(c: cargo) {
784-
if vec::len(c.opts.free) < 3u {
732+
fn cmd_search(c: cargo, argv: [str]) {
733+
if vec::len(argv) < 3u {
785734
cmd_usage();
786735
ret;
787736
}
788737
let n = 0;
789-
let name = c.opts.free[2];
790-
let tags = vec::slice(c.opts.free, 3u, vec::len(c.opts.free));
738+
let name = argv[2];
739+
let tags = vec::slice(argv, 3u, vec::len(argv));
791740
for_each_package(c, { |s, p|
792741
if (str::contains(p.name, name) || name == "*") &&
793742
vec::all(tags, { |t| vec::member(t, p.tags) }) {
@@ -799,46 +748,28 @@ fn cmd_search(c: cargo) {
799748
}
800749

801750
fn cmd_usage() {
802-
print("Usage: cargo <verb> [options] [args...]" +
803-
"
804-
805-
init Set up .cargo
806-
install [--test] [source/]package-name Install by name
807-
install [--test] uuid:[source/]package-uuid Install by uuid
808-
list [source] List packages
809-
search <name | '*'> [tags...] Search packages
810-
sync Sync all sources
811-
usage This
812-
813-
Options:
814-
815-
--mode=[system,user,local] change mode as (system/user/local)
816-
-g equivalent to --mode=user
817-
-G equivalent to --mode=system
818-
819-
NOTE:
820-
This command creates/uses local-level .cargo by default.
821-
To create/use user-level .cargo, use option -g/--mode=user.
822-
To create/use system-level .cargo, use option -G/--mode=system.
823-
");
751+
print("Usage: cargo <verb> [args...]");
752+
print(" init Set up ~/.cargo");
753+
print(" install [--test] [source/]package-name Install by name");
754+
print(" install [--test] uuid:[source/]package-uuid Install by uuid");
755+
print(" list [source] List packages");
756+
print(" search <name | '*'> [tags...] Search packages");
757+
print(" sync Sync all sources");
758+
print(" usage This");
824759
}
825760

826761
fn main(argv: [str]) {
827-
let o = build_cargo_options(argv);
828-
829-
if vec::len(o.free) < 2u {
762+
if vec::len(argv) < 2u {
830763
cmd_usage();
831764
ret;
832765
}
833-
834-
let c = configure(o);
835-
836-
alt o.free[1] {
766+
let c = configure();
767+
alt argv[1] {
837768
"init" { cmd_init(c); }
838-
"install" { cmd_install(c); }
839-
"list" { cmd_list(c); }
840-
"search" { cmd_search(c); }
841-
"sync" { cmd_sync(c); }
769+
"install" { cmd_install(c, argv); }
770+
"list" { cmd_list(c, argv); }
771+
"search" { cmd_search(c, argv); }
772+
"sync" { cmd_sync(c, argv); }
842773
"usage" { cmd_usage(); }
843774
_ { cmd_usage(); }
844775
}

branches/try/src/comp/back/link.rs

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,18 @@
1-
import ctypes::{c_int, c_uint};
1+
import core::ctypes::{c_int, c_uint};
22
import driver::session;
33
import session::session;
44
import lib::llvm::llvm;
55
import front::attr;
66
import middle::ty;
77
import metadata::{encoder, cstore};
88
import middle::trans::common::crate_ctxt;
9+
import str;
910
import std::fs;
11+
import vec;
12+
import option;
1013
import std::run;
14+
import option::some;
15+
import option::none;
1116
import std::sha1::sha1;
1217
import syntax::ast;
1318
import syntax::print::pprust;

branches/try/src/comp/back/rpath.rs

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,10 @@
1-
import std::{os, fs, os_fs, map};
1+
import std::os;
2+
import std::fs;
3+
import std::os_fs;
4+
import vec;
5+
import std::map;
6+
import str;
7+
import uint;
28
import metadata::cstore;
39
import driver::session;
410
import util::filesearch;

branches/try/src/comp/driver/driver.rs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,9 +10,11 @@ import middle::{trans, resolve, freevars, kind, ty, typeck, fn_usage,
1010
import syntax::print::{pp, pprust};
1111
import util::{ppaux, filesearch};
1212
import back::link;
13+
import core::{option, str, int, result};
1314
import result::{ok, err};
1415
import std::{fs, io, getopts};
1516
import io::{reader_util, writer_util};
17+
import option::{some, none};
1618
import getopts::{optopt, optmulti, optflag, optflagopt, opt_present};
1719
import back::{x86, x86_64};
1820

branches/try/src/comp/driver/rustc.rs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,11 @@ use std;
22
use rustc;
33

44
// -*- rust -*-
5+
import core::{option, str, vec, result};
56
import result::{ok, err};
67
import std::{io, getopts};
78
import io::writer_util;
9+
import option::{some, none};
810
import getopts::{opt_present};
911
import rustc::driver::driver::*;
1012
import rustc::syntax::codemap;

branches/try/src/comp/driver/session.rs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@ import syntax::{ast, codemap};
33
import syntax::ast::node_id;
44
import codemap::span;
55
import syntax::ast::{int_ty, uint_ty, float_ty};
6+
import option;
7+
import option::{some, none};
68
import syntax::parse::parser::parse_sess;
79
import util::filesearch;
810
import back::target_strs;

branches/try/src/comp/front/attr.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
// Functions dealing with attributes and meta_items
22

3+
import core::{either, vec, option};
34
import std::map;
45
import syntax::{ast, ast_util};
56
import driver::session::session;

branches/try/src/comp/front/config.rs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
1+
import core::{vec, option};
12
import syntax::{ast, fold};
3+
import attr;
24

35
export strip_unconfigured_items;
46
export metas_in_cfg;

branches/try/src/comp/front/test.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
// Code that generates a test runner to run all the tests in a crate
22

3+
import core::{option, vec};
34
import syntax::{ast, ast_util};
45
import syntax::ast_util::*;
56
//import syntax::ast_util::dummy_sp;

branches/try/src/comp/lib/llvm.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import core::{vec, str, option};
12
import str::sbuf;
23

34
import ctypes::{c_int, c_uint, unsigned, longlong, ulonglong};

branches/try/src/comp/metadata/common.rs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
// EBML enum definitions and utils shared by the encoder and decoder
22

3+
import str;
4+
35
const tag_paths: uint = 0x01u;
46

57
const tag_items: uint = 0x02u;

branches/try/src/comp/metadata/creader.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ import syntax::codemap::span;
1010
import util::{filesearch};
1111
import std::{io, fs};
1212
import io::writer_util;
13+
import option::{none, some};
1314
import std::map::{hashmap, new_int_hash};
1415
import syntax::print::pprust;
1516
import common::*;

branches/try/src/comp/metadata/csearch.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import syntax::ast;
44
import syntax::ast_util;
55
import middle::ty;
6+
import option::{some, none};
67
import driver::session;
78

89
export get_symbol;

branches/try/src/comp/metadata/cstore.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
// The crate store - a central repo for information collected about external
22
// crates and libraries
33

4+
import core::{vec, str};
45
import std::map;
56
import syntax::ast;
67
import util::common::*;

branches/try/src/comp/metadata/decoder.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -286,7 +286,7 @@ fn get_impls_for_mod(cdata: cmd, m_id: ast::node_id,
286286
let did = translate_def_id(cdata, parse_def_id(ebml::doc_data(doc)));
287287
let item = lookup_item(did.node, data), nm = item_name(item);
288288
if alt name { some(n) { n == nm } none { true } } {
289-
let base_tps = item_ty_param_count(item);
289+
let base_tps = item_ty_param_count(doc);
290290
result += [@{did: did, ident: nm,
291291
methods: item_impl_methods(cdata, item, base_tps)}];
292292
}

0 commit comments

Comments
 (0)