Find a file
Alex Crichton c0127391bf Don't recompile git deps so frequently
The previous logic for recompiling any dependency was almost entirely based on
the mtimes of the relevant input files. This isn't quite what's desired for git
and registry dependencies because the mtime could be fluctuating while the files
aren't changing. For example:

1. Project A checks out git repo C at revision C1
2. Project A builds, records mtimes of C
3. Project B checks out git repo C at revision C2
4. Project B builds, records new mtimes of C
5. Project A is rebuilt, rebuilding C b/c mtimes are different

In step 5 here C should not be rebuilt because the revision didn't actually
change.

This commit alters git/registry dependencies to completely bypass the --dep-info
emitted and only rely on the git/registry source to inform what the fingerprint
is. This is the revision/version, respectively, and should be all that's
necessary to track changes to the repo and trigger a rebuild.
2014-09-10 07:26:42 -07:00
DESIGN WIP 2014-04-11 17:39:18 -07:00
src Don't recompile git deps so frequently 2014-09-10 07:26:42 -07:00
tests Don't recompile git deps so frequently 2014-09-10 07:26:42 -07:00
.gitignore Add all docs in-tree 2014-08-21 10:12:35 -07:00
.travis.install.deps.sh Fix the 32-bit linux travis bots 2014-09-02 14:02:18 -07:00
.travis.yml Fix the 32-bit linux travis bots 2014-09-02 14:02:18 -07:00
.vimrc Add vimrc settings 2014-04-29 11:43:18 -07:00
Cargo.lock Switch the location of the docopt repo 2014-09-09 22:01:39 -07:00
Cargo.toml Switch the location of the docopt repo 2014-09-09 22:01:39 -07:00
configure Revert "Revert "Use libgit2 for driving git instead of the CLI"" 2014-08-26 20:12:44 -07:00
LICENSE-APACHE Add the standard Rust Apache/MIT license 2014-06-24 12:26:13 -07:00
LICENSE-MIT Add the standard Rust Apache/MIT license 2014-06-24 12:26:13 -07:00
Makefile.in Don't run cargo as root during make install 2014-09-07 11:26:07 -07:00
MANIFEST.md Use [[bin]] instead of [[executable]] in manifest examples 2014-07-18 12:58:48 +01:00
README.md Add a note about required build tools and packages 2014-09-07 11:25:26 -07:00

Cargo downloads your Rust projects dependencies and compiles your project.

Learn more at http://crates.io/.

Installing cargo from nightlies

Cargo has nightlies available for use. The cargo source is not always guaranteed to compile on rust master as it may lag behind by a day or two. Nightlies, however, will run regardless of this fact!

triple=x86_64-unknown-linux-gnu
curl -O http://static.rust-lang.org/cargo-dist/cargo-nightly-$triple.tar.gz
tar xf cargo-nightly-$triple.tar.gz
./cargo-nightly-$triple/install.sh

Nightlies are available for the following triples:

Note that if you're using the windows snapshot you will need Mingw-w64 installed as well as MSYS. The installation script needs to be run inside the MSYS shell.

Compiling cargo

Cargo requires the following tools and packages to build:

  • rustc
  • python
  • curl or wget
  • cmake
  • pkg-config
  • OpenSSL headers (libssl-dev package on ubuntu)

Cargo can then be compiled like many other standard unix-like projects:

git clone https://github.com/rust-lang/cargo
cd cargo
./configure
make
make install

More options can be discovered through ./configure, such as compiling cargo for more than one target. For example, if you'd like to compile both 32 and 64 bit versions of cargo on unix you would use:

$ ./configure --target=i686-unknown-linux-gnu,x86_64-unknown-linux-gnu

Contributing to the Docs

To contribute to the docs, please submit pull requests to wycats/cargo-website. All you need to do is change the markdown files in the source directory.

Reporting Issues

Found a bug? We'd love to know about it!

Please report all issues on the github issue tracker.

License

Cargo is primarily distributed under the terms of both the MIT license and the Apache License (Version 2.0).

See LICENSE-APACHE and LICENSE-MIT for details.