-
Notifications
You must be signed in to change notification settings - Fork 1
Bikeshed rustpkg
This is Tim's attempt to come up with a schedule for finishing rustpkg, with a proposed deadline for each milestone.
-
Check in concrete test cases and/or English descriptions of how to test for this, for each item below
Due: 2013-04-17Done(pending pull request #5920).1a. Clarify directory structure for package dirs (src/, lib/, build/, etc.) and make sure test cases reflect that. Also document this in English in a separate document.
Due: 2013-04-19Done(pending pull request #5948)1b. Incorporate comments at https://github.com/mozilla/rust/pull/5948
Due: 2013-04-22Done(pending pull request #6008) -
Fix package searching
Look for packages in
./src
and not in.
(as a stopgap before fully implementingRUST_PATH
). Basically, respect the directory structure as specified in the draft manual, even if we're only searching in.
and not the wholeRUST_PATH
. In my local copy ofsrc/librustpkg/testsuite/pass
,rustpkg build hello-world
should work.Due: 2013-04-22Done(pending pull request #6054) -
Implement
install
command- test cases:
- main.rs and lib.rs files end up in package source's install dirs (
lib
andbin
by default) - test/bench files end up in package source's build dir
- main.rs and lib.rs files end up in package source's install dirs (
Pull request #6054 adds test cases
Due: 2013-04-26Done(pending pull request #6124)Except for one hitch: need to infer the sysroot properly, at least for the tests to be able to runDone - test cases:
-
Full pkgids (#5679)
- test cases:
-
deeply-nested subdirectoryAlready working -
remote (github) URLDone pending pull request #6418
-
- Sub-tasks:
-
Allow installing from URLsPull request #6418 Ensure there's no longer any dependency on link name, URL, uuidWipe out any traces of reverse-DNS-style paths if there are anyMake sure, via unit tests, that "package IDs are relative-path-like" is enforcedMake sure, via unit tests, that "package IDs have a single stem" is enforced
-
Due: 2013-05-12Donepending #6418 - test cases:
-
Finding external crates (#5681)
- test cases:
- a file with
extern mod foo
where foo lives in a different directory
- a file with
Due: 2013-05-14Donepending #6807 - test cases:
-
Test runner (#5683)
Due: 2013-05-17Done -
Get version from VCS (#5684)
- test case:
- use a subdirectory containing a git version, make sure the created executable or library has the right version number in the name
~~Due: 2013-05-20~~~ Done
pending #6905 - test case:
-
Implement
RUST_PATH
(#5682)- test cases:
- searching in
./.rust
- install; make sure it installs to the first entry in
$RUST_PATH
- install from an entry in
RUST_PATH
that isn't the first one
- searching in
Due: 2013-05-22Donepending #7397 - test cases:
-
Teach pkg.rs how to execute the default build logic (#6401)
Due: 2013-05-24Donepending #7403 -
Commands should work without an explicit package name (#6405)
- build and install, to start with
Due: 2013-05-25Done pending #7419 -
Implement (or test) package database and ability to list, add, remove packages
- test case:
- install several packages, make sure they appear in list
- remove one package, make sure it doesn't appear in list and other packages do
Due: 2013-05-27 - test case:
-
extern mod
should name a package ID- fix #6407 (change what's allowed in an
extern mod
directive)
- fix #6407 (change what's allowed in an
-
Track dependencies between Rust packages
- test case:
- two packages, A and B; A depends on B with
extern mod
; building A automatically builds B
- two packages, A and B; A depends on B with
Due: 2013-05-29Done as part of previous work - test case:
-
Use workcache (#7075)
- test cases:
- run
rustpkg build foo
twice, check timestamps to make sure foo isn't built again the second time - build foo, which depends on bar, from scratch; check timestamps to make sure foo was built after bar
- build foo, which depends on bar, from scratch; change bar; rebuild foo; make sure foo was actually rebuilt (i.e. foo's timestamp is later than bar's timestamp)
- use content hashing and not just datestamps (have tests where one, but not the other, changes)
- run
- generally, make sure
rustpkg build
"works likemake
" - This depends on #4432
Due: 2013-06-04 (Blocked on graydon doing more work on workcache)
- test cases:
-
Extend pkg IDs to specify version explicitly
- test case:
- have two versions of package A, A 0.1 and A 0.2; installing A#0.1 doesn't install 0.2, does install 0.1
At the same time, teach rustpkg about branches and tags (#6411)
Due: 2013-06-07
- test case:
-
Finish implementing all other commands (#7242) * do, fetch, info, prefer, test, uninstall, unprefer
Due: 2013-06-14
-
Expose the ability to clone a git repository (#6409)
-
Build C libraries (#6403 and #6404)
-
(wishlist) Track non-Rust dependencies * test case: * allow packages to declare their non-Rust dependencies; add a rustpkg command to print them all out