Commit graph

508 commits

Author SHA1 Message Date
Arlo Siemsen 2b39792aef Credential provider implementation 2023-07-21 16:02:24 -05:00
Weihang Lo 31b500c7c0
refactor(crates-io): use thiserror
Optionally use `thiserror` to reduce boilerplates but this part can
be dropped if we don't want.
2023-07-18 22:22:47 +01:00
Weihang Lo b4499af4e9
refactor(crates-io): remove anyhow
This removes the dependency `anyhow` and uses our own custom Error
enum, so that crates-io consumer can access `Error::API::challenge`
field.
2023-07-18 22:22:47 +01:00
Weihang Lo 6805944715
feat(crates-io): expose headers for ResponseError::Api
In response to RFC 3231 [^1], our registry client need to return headers
to caller, so that the caller (cargo binary) can continue parsing
challenge headers.

[^1]: https://rust-lang.github.io/rfcs/3231-cargo-asymmetric-tokens.html#the-authentication-process
2023-07-18 22:22:46 +01:00
abhiram 04e5675717 Fix "cargo doc --open" crash on WSL2
"cargo doc --open" does not work on WSL2 due to a bug in the 'opener'
crate. Updated 'opener' to v0.6.1 to fix this issue.
2023-07-18 15:58:22 +05:30
Josh Stone 2bb6f9eb8a Upgrade to indexmap v2
No code changes are required for the current uses of indexmap.

I also updated `toml_edit` to get its update to `indexmap 2`, and
`gix-hashtable` to align them all on `hashbrown 0.14`.
2023-07-17 14:15:29 -07:00
Ed Page 83a5859221 chore(platform): Version bump 2023-07-17 13:21:41 -05:00
Ed Page 4bd5f9ca50 chore(util): Version bump 2023-07-17 13:21:41 -05:00
Weihang Lo ff644b8cac
Bump to 0.74.0 2023-07-15 00:20:53 +01:00
Arlo Siemsen d45ba88290 Bump version of crates-io due to unintentional semver-breaking change 2023-07-13 14:35:09 -05:00
Eric Huss 119fede29f Update criterion 2023-07-09 15:59:30 -07:00
dependabot[bot] ff26beca25
build(deps): bump openssl from 0.10.54 to 0.10.55
Bumps [openssl](https://github.com/sfackler/rust-openssl) from 0.10.54 to 0.10.55.
- [Release notes](https://github.com/sfackler/rust-openssl/releases)
- [Commits](https://github.com/sfackler/rust-openssl/compare/openssl-v0.10.54...openssl-v0.10.55)

---
updated-dependencies:
- dependency-name: openssl
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-06-21 22:59:06 +00:00
bors 0d5370a9ae Auto merge of #12268 - epage:direct, r=weihanglo
fix(embedded): Don't create an intermediate manifest

### What does this PR try to resolve?

More immediately, this is to unblock rust-lang/rust#112601

More generally, this gets us away from hackily writing out an out-of-line manifest from an embedded manifest.  To parse the manifest, we have to write it out so our regular manifest
loading code could handle it.  This updates the manifest parsing code to
handle it.

This doesn't mean this will work everywhere in all cases though.  For
example, ephemeral workspaces parses a manifest from the SourceId and
these won't have valid SourceIds.

As a consequence, `Cargo.lock` and `CARGO_TARGET_DIR` are changing from being next to
the temp manifest to being next to the script.  This still isn't the
desired behavior but stepping stones.

### How should we test and review this PR?

A Commit at a time

### Additional information

In production code, this does not conflict with #12255 (due to #12262) but in test code, it does.
2023-06-17 08:08:50 +00:00
Ed Page 575b9ac934 fix(embedded): Don't create an intermediate manifest
To parse the manifest, we have to write it out so our regular manifest
loading code could handle it.  This updates the manifest parsing code to
handle it.

This doesn't mean this will work everywhere in all cases though.  For
example, ephemeral workspaces parses a manifest from the SourceId and
these won't have valid SourceIds.

As a consequence, `Cargo.lock` and `CARGO_TARGET_DIR` are changing from being next to
the temp manifest to being next to the script.  This still isn't the
desired behavior but stepping stones.

This also exposes the fact that we didn't disable `autobins` like the
documentation says we should.
2023-06-16 21:08:47 -05:00
Ed Page 4e0ac38b52 refactor(embedded): Switch to syn for parsing doc comments
The hope is this will result in more resilient comment handling, being
more consistent with rustdoc.

I also hoped for less code but `syn` is doing less than I had expected,
requiring us to copy code over from other parts of rust.  It seems every
proc macro has to do this but there is no guide to it, so they all do it
differently, only covering the cases they thought to test for.

Note that this still won't support `include_str!()`.
2023-06-14 14:43:35 -05:00
Weihang Lo bf06fc856f
Update dependencies
Hand-picked some dependencies to update. Looks pretty safe?

- anyhow
- base64
- clap@4.2.1
- flate2
- git2
- libgit2-sys
- log
- openssl
- pkg-config
- proptest
- pulldown-cmark
- serde
- serde_json
- snapbox
- tempfile
- time
- toml
- toml_edit
- url
2023-06-13 14:39:55 +01:00
Ed Page 33c9d8e2fd feat(cli): Pull in cargo-script-mvs core logic
This is no where near the implementation we want but I think we should
develop incrementally on top of what we already have.

See https://github.com/epage/cargo-script-mvs/tree/main
2023-06-09 22:03:18 -05:00
Sebastian Thiel b0e99edd0d
Upgrade to gix v0.45 for multi-round pack negotiations.
Previously, fetches and clones would routinely fail with a panic
that indicated that pack-negotiation can't take longer than 1 round
with our previous `Naive` approach.

With this version of `gitoxide` there is now faithful support for both
the `consecutive` and the `skipping` algorithm and multiple rounds of
negotiations, which should make all clones and fetches possible.
2023-06-06 20:08:52 +02:00
bors bdd367f366 Auto merge of #12218 - ehuss:update-curl, r=weihanglo
Update curl-sys

This is a routine update for libcurl. Changelog:
* https://curl.se/changes.html#8_1_0
* https://curl.se/changes.html#8_1_1
* https://curl.se/changes.html#8_1_2
2023-06-02 10:36:53 +00:00
Weihang Lo 1fc4852e32
Bump to 0.73.0 2023-06-02 01:21:23 +01:00
Eric Huss 14000767e9 Update curl-sys 2023-06-01 17:01:14 -07:00
Weihang Lo fa7cc198aa
refactor: replace some usages of lazy_static with OnceLock
* Some usages still wait for `LazyCell`.
* `TEST_ROOTS` is no longer used. Removed.
2023-06-01 22:11:20 +01:00
Weihang Lo 8cb220f5eb
refactor: use IsTerminal from std instead of is-terminal crate 2023-06-01 21:50:43 +01:00
WANG Rui 526f5aefda Update libc to 0.2.144 2023-05-09 21:15:55 +08:00
Eric Huss 1ff784888f Update git2 2023-05-06 12:59:38 -07:00
Eric Huss 5c99dc43cb Update lock to normalize home dep 2023-05-04 07:24:48 -07:00
bors 2f06c80bd0 Auto merge of #11840 - Byron:shallow-support, r=weihanglo
support for shallow clones and fetches with `gitoxide`

This PR makes it possible to enable shallow clones and fetches for git dependencies and crate indices independently with the `-Zgitoxide=fetch,shallow_deps` and `-Zgitoxide=fetch,shallow_index` respectively.

### Tasks

* [x] setup the shallow option when fetching, differentiated by 'registry' and 'git-dependency'
* [x] validate registries are cloned shallowly *and* fetched shallowly
* [x] validate git-dependencies are cloned shallowly *and* fetched shallowly
* [x] a test to show what happens if a shallow index is opened with `git2` (*it can open it and fetch like normal, no issues*)
* [x] assure that `git2` can safely operate on a shallow clone - we unshallow it beforehand, both for registries and git dependencies
* [x] assure git-deps with revisions are handled correctly (they should just not be shallow, and they should unshallow themselves if they are)
* [x] make sure shallow index clones aren't seen by older cargo's
* [x] make sure shallow git dependency clones aren't seen by older cargo's
* [x] shallow.lock test and more test-suite runs with shallow clones enabled for everything
* [x] release new version of `gix` with full shallow support and use it here
* [x] check why `shallow` files remain after unshallowing. Should they not rather be deleted if empty? - Yes, `git` does so as well, implemented [with this commit](2cd5054b0a)
* ~~see if it can be avoided to ever unshallow an existing `-shallow` clone by using the right location from the start. If not, test that we can go `shallow->unshallow->shallow` without a hitch.~~ Cannot happen anymore as it can predict the final location perfectly.
* [x] `Cargo.lock` files don't prevent shallow clones
* [x] assure all other tests work with shallow cloning enabled (or fix the ones that don't with regression protection)
* [x] can the 'split-brain' issue be solved for good?

### Review Notes

* there is a chance of 'split brain' in git-dependencies  as the logic for determining whether the clone/fetch is shallow is repeated in two places. This isn't the case for registries though.

### Notes

* I am highlighting that this is the `gitoxide` version of shallow clones as the `git2` version [might soon be available](https://github.com/libgit2/libgit2/pull/6396) as well. Having that would be good as it would ensure interoperability remains intact.
* Maybe for when `git2` has been phased out, i.e. everything else is working, I think (unscientifically) there might be benefits  in using worktrees for checkouts. Admittedly I don't know the history of why they weren't used in the first place. Also: `gitoxide` doesn't yet support local clones and might not have to if worktrees were used instead.
2023-05-03 07:12:20 +00:00
Sebastian Thiel 99316c8e43
set openssl-src to specific version
This recreates the previously lost change from https://github.com/rust-lang/cargo/pull/12005.
2023-04-29 14:20:10 +02:00
Weihang Lo c01bad9b20
mdman: make build-man part of xtask
Turn `src/doc/build-man.sh` into a Cargo binary target.
So is `crates/mdman/build-man.sh`.
2023-04-28 15:46:37 +01:00
Weihang Lo 981282891f
xtask-stale-label: check stale paths in autolabel defintions 2023-04-28 12:02:51 +01:00
Utkarsh Gupta fd1f1043e0
home: bump version & update changelog 2023-04-27 22:00:19 +05:30
Sebastian Thiel ed55f77c25
upgrade gix to v0.44 to remove empty shallow files. 2023-04-27 14:19:23 +02:00
Sebastian Thiel 4b93f095c8
Various improvements to address the PR review.
https://github.com/rust-lang/cargo/pull/11840#pullrequestreview-1383844802
2023-04-27 14:19:01 +02:00
Sebastian Thiel c7ff94fce8
Enable shallow clones and fetches for registry and git dependencies.
The implementation hinges on passing information about the kind of clone
and fetch to the `fetch()` method, which then configures the fetch accordingly.

Note that it doesn't differentiate between initial clones and fetches as
the shallow-ness of the repository is maintained nonetheless.
2023-04-27 14:18:22 +02:00
Ed Page 077b1bc311 chore: Mark unpublished crates as such
This is a follow up to #12039.
This makes it easier for tools to report less irrelevant information.

I did both `publish = false` and `version = "0.0.0"` to help draw
attention to the fact that these crates are internal (inspired by a
matklad post).

I left `cargo-test-macro` and `cargo-test-support` in for my own
personal bias of one day wanting to see those crates published...

The only one removed that had previously been published was `mdman` but
seeing as that was a `0.0.0`, I'm assuming that was a mistake or just
reserving the name.

Before:
```console
$ cargo unpublished
name published current
==== ========= =======
cargo-platform 0.1.2 0.1.3
cargo-test-macro - 0.1.0
cargo-test-support - 0.1.0
cargo-util 0.2.3 0.2.4
crates-io 0.36.0 0.36.1
mdman 0.0.0 0.1.0
resolver-tests - 0.1.0
cargo 0.70.1 0.72.0
semver-check - 0.1.0
cargo-credential 0.1.0 0.2.0
cargo-credential-1password 0.1.0 0.2.0
cargo-credential-gnome-secret 0.1.0 0.2.0
cargo-credential-macos-keychain 0.1.0 0.2.0
cargo-credential-wincred 0.1.0 0.2.0
benchsuite - 0.1.0
```

After:
```console
name published current
==== ========= =======
cargo-platform 0.1.2 0.1.3
cargo-test-macro - 0.1.0
cargo-test-support - 0.1.0
cargo-util 0.2.3 0.2.4
crates-io 0.36.0 0.36.1
cargo 0.70.1 0.72.0
cargo-credential 0.1.0 0.2.0
cargo-credential-1password 0.1.0 0.2.0
cargo-credential-gnome-secret 0.1.0 0.2.0
cargo-credential-macos-keychain 0.1.0 0.2.0
cargo-credential-wincred 0.1.0 0.2.0
```
2023-04-26 17:51:16 -05:00
bors 8bcf8fe770 Auto merge of #12039 - epage:xtask, r=weihanglo
chore(xtask): Add `cargo xtask unpublished`

### What does this PR try to resolve?

This tries to make it easy to see what existing versions have not been published.  A future version of this could post to a PR what the current delta in version numbers for touched crates so reviewer have more context when deciding if they should ask for a crate version to be bumped
```console
$ cargo unpublished
    Finished dev [unoptimized + debuginfo] target(s) in 0.12s
     Running `/home/epage/src/personal/cargo/target/debug/xtask unpublished`
    Updating crates.io index
name published current
==== ========= =======
cargo-test-macro - 0.1.0
cargo-test-support - 0.1.0
cargo-util 0.2.3 0.2.4
mdman 0.0.0 0.1.0
resolver-tests - 0.1.0
cargo 0.70.0 0.71.0
cargo-credential 0.1.0 0.2.0
cargo-credential-1password 0.1.0 0.2.0
cargo-credential-gnome-secret 0.1.0 0.2.0
cargo-credential-macos-keychain 0.1.0 0.2.0
cargo-credential-wincred 0.1.0 0.2.0
benchsuite - 0.1.0
```

Room for improvement
- Aligning the start of each column
- Filtering the list by a commit range
- Adding this to an action to post to a review
- Maybe sorting the output
- Marking some our crates as `package.publish = false`, like benchsuite and resolver-tests

### How should we test and review this PR?

This is broken down commit by commit for easier seeing of the building blocks for our first xtask
2023-04-26 23:09:59 +00:00
Ed Page 5b13963044 perf(xtask): Split xtask binaries
This will allow running an xtask without requiring building the world.
In most cases, a user will already have been building cargo but not in
CI.

The packages keep an `xtask-` prefix to help raise awareness of them but
exposed as `cargo <suffix>` to avoid having a direction proxy to wrap
`cargo run -p xtask-<suffix>` as `cargo xtask <suffix>`.
2023-04-26 11:18:51 -05:00
Eric Huss a4f01c0352 Update home dependency 2023-04-25 11:38:52 -07:00
Ed Page c6f8ee9e51 feat(xtask): First pass at 'cargo xtask unpublished' 2023-04-25 03:06:46 -05:00
Ed Page 0b20bd99e3 chore(xtask): Add core cargo flags 2023-04-25 02:33:47 -05:00
Ed Page a675e047e7 chore(xtask): Add xtask skeleton 2023-04-25 02:13:56 -05:00
bors a4a8bd1742 Auto merge of #12021 - ehuss:update-windows-sys, r=weihanglo
Update windows-sys

This updates the windows-sys dependency from 0.45 to 0.48. This shouldn't add or remove any duplicate dependencies (since there are other dependencies still using 0.45 and 0.42). The intent is to move it along the direction towards unifying in the future (though it seems like a moving target that will be difficult to ever hit).

This also bumps the home crate version. I think it should be OK to make the migration from winapi to windows-sys a patch version, though there seems to be some issues with the way windows-sys works that could introduce some build-time problems in some situations (such as those encountered in https://github.com/rust-lang/rust/pull/108665 and https://github.com/rust-lang/rust/pull/106610). However, I don't expect too much of an issue.
2023-04-24 11:50:26 +00:00
bors c5bee5d902 Auto merge of #12014 - ecnelises:bump_libc_142, r=weihanglo
Bump libc to 0.2.142

libc 0.2.141 cannot build successfully on AIX. (CI on AIX is not available yet)

Upgrade libc to 0.2.142 to make cargo build on AIX.
2023-04-24 11:01:59 +00:00
bors 65a135fc91 Auto merge of #12005 - loongarch-rs:update-openssl-src, r=weihanglo
Update openssl-src to 111.25.3+1.1.1t

### What does this PR try to resolve?

Support for LoongArch has been added to the `openssl-src` start from `v111.25.3`. Therefore, we have updated the version to include this support.

Thanks
2023-04-24 10:09:12 +00:00
Eric Huss eea69e549f Bump versions of local crates 2023-04-23 13:01:29 -07:00
Eric Huss ac25009500 Update windows-sys 2023-04-23 12:40:00 -07:00
bors de80432f04 Auto merge of #12012 - weihanglo:version-bump, r=epage
Bump to 0.72.0; update changelog

[rendered](https://github.com/weihanglo/cargo/blob/version-bump/CHANGELOG.md)
2023-04-21 13:18:32 +00:00
Qiu Chaofan b1290767ac Bump libc to 0.2.142 2023-04-21 18:01:52 +08:00
Weihang Lo ff216ebc96
chore: make server-check a workspace member 2023-04-21 10:58:45 +01:00
WANG Rui 860b64a846 Update openssl-src to 111.25.3+1.1.1t
Adds support for LoongArch.
2023-04-21 12:59:57 +08:00
QiangHeisenberg 9ba0d4439b output use line wrap 2023-04-21 11:25:09 +08:00
Weihang Lo caf0c82b4c
Bump to 0.72.0 2023-04-21 01:12:56 +01:00
WANG Rui d54cc301eb Update linux-raw-sys to 0.3.2
Adds support for LoongArch.
2023-04-19 10:31:23 +08:00
Weihang Lo aaca5a0a56
chore: remove dependency rustc-workspace-hack
Co-authored-by: Scott Schafer <schaferjscott@gmail.com>
Co-authored-by: Eric Huss <eric@huss.org>
2023-04-12 11:32:58 +01:00
Weihang Lo 0289f2b8d5
chore: track Cargo.lock
Co-authored-by: Scott Schafer <schaferjscott@gmail.com>
Co-authored-by: Eric Huss <eric@huss.org>
2023-04-12 11:32:24 +01:00
Alex Crichton 5c9665f41c Delete Cargo.lock from this repo
There's now a lock file upstream in rust-lang/rust so the one here isn't
actually used, and otherwise this crate is used as a dependency so the lock file
isn't respected anyway!
2017-10-18 07:43:15 -07:00
Alex Crichton 9b8efd18e9 Bump to 0.24.0
It's that time of the year again!
2017-10-15 08:30:11 -07:00
Dirkjan Ochtman 7097174a91 Update dependencies (unbreak macOS 10.13 with libgit2-sys-0.6.16) 2017-10-04 21:37:55 +02:00
Simon Sapin f38c53f5c3 Make manifest serialization deterministic
Fixes #4326

`cargo package` (and so `cargo publish`) parses a crate’s `Cargo.toml`,
makes some modifications, and re-serializes it.
Because the `TomlManifest` struct uses `HashMap`
with its default `RandomState` hasher,
the maps’ iteration order changed on every run.

As a result, when using `cargo vendor`,
updating a dependency would generate a diff larger than necessary,
with non-significant order-changes obscuring significant changes.

This replaces some uses of `HashMap` with `BTreeMap`,
whose iteration order is deterministic (based on `Ord`).
2017-10-02 12:09:54 +02:00
Dirkjan Ochtman ab724fc513 Update dependencies
It would be nice to use openssl-0.9.19 in particular, since it supports
newer LibreSSL.
2017-09-23 09:57:34 +02:00
Alex Crichton 4c077033dd Update dependencies
Just a usual `cargo update` plus moving over some major versions
2017-09-05 15:29:07 -07:00
Alex Crichton 1e54d9efa3 Bump Cargo to 0.23.0 2017-08-28 07:45:43 -07:00
Tatsuyuki Ishi 72de74c9eb cargotest: purge deps 2017-08-24 13:00:04 +09:00
bors 8720d63bc1 Auto merge of #4390 - alexcrichton:read-hard-links, r=matklad
Use `same-file` to avoid unnecessary hard links

This is targeted at removing the need for a workaround in rust-lang/rust#39518,
allowing the main rust build system to move back to hard links which should be
much more efficient.
2017-08-10 09:04:21 +00:00
Kornel 8e0a7caddf Exclude target directory from Time Machine
Temporary/derived files outside dedicated system directories should be explicitly excluded from backups to prevent undesirable bloat and churn.
2017-08-10 01:42:32 +01:00
Alex Crichton 599db09980 Use same-file to avoid unnecessary hard links
This is targeted at removing the need for a workaround in rust-lang/rust#39518,
allowing the main rust build system to move back to hard links which should be
much more efficient.
2017-08-09 17:22:34 -07:00
Guillaume Gomez 638ac11171 Update error-chain dep for crates-io as well 2017-07-28 23:37:54 +02:00
Guillaume Gomez 6f23ce5cc2 Update to rc error chain 2017-07-28 21:12:05 +02:00
Alex Crichton e8a7132805 Bump to 0.22.0 and update deps 2017-07-20 08:35:07 -07:00
Brian Anderson fdb9f1bd1d Replace homedir definition with home crate 2017-07-18 17:25:31 -07:00
Behnam Esfahbod c072ba4242 [sources/path] Add gitignore-like pattern matching and warn on mismatches
Add gitignore-like pattern matching logic to `list_files()` and throw
warnings for paths getting different inclusion/exclusion results from
the old and the new methods.

Migration Tracking: <https://github.com/rust-lang/cargo/issues/4268>
2017-07-18 00:14:14 -06:00
Alex Crichton f429be4f4c Don't set MAKEFLAGS for build scripts
Closes #4156
Closes rust-lang/rust#42635
2017-07-12 14:15:56 -07:00
Alex Crichton f490635e0f Update dependencies with semver-compat version
Just a standard update
2017-07-07 14:01:40 -07:00
Alex Crichton 9cd803bfe0 Update wincolor
Helps mitigate #4189
2017-06-19 10:42:58 -07:00
Alex Crichton 9629f99dd0 Use the atty crate for TTY detection
This is more robust in the face of msys terminals and otherwise helps share more
dependencies!

Closes #4166
2017-06-15 08:08:35 -07:00
Alex Crichton f8fb0a0228 Migrate from the term crate to termcolor
The API of `termcolor` fits what the system gives us much more nicely and should
be well battle-tested from ripgrep. Additionally we don't really need huge
terminfo parsers, that wasn't every really the intention of the color support
here.
2017-06-13 14:28:37 -07:00
bors 45148e0efd Auto merge of #4149 - ordian:master, r=alexcrichton
Drop rustc-serialize dependency

Fixes #3944.
2017-06-13 19:53:41 +00:00
Alex Crichton 63ea2d319b Update dependencies
Brings in a few fixes for Windows-related dependencies
2017-06-13 10:39:01 -07:00
Andronik Ordian 10373f4039 Drop rustc-serialize dependency 2017-06-09 00:56:48 +03:00
Alex Crichton 90299a66f2 Bump to 0.21.0
We're working on the next version now!
2017-06-08 09:08:01 -07:00
Marc-Antoine Perennou f407bc838f update git2
Fixes build with libressl

Signed-off-by: Marc-Antoine Perennou <Marc-Antoine@Perennou.com>
2017-06-07 21:35:27 +02:00
Marco A L Barbosa 728694abf0 Bump jobserver to 0.1.4 2017-06-05 14:15:40 -03:00
Alex Crichton 74777c1274 Remove more allocatoins in index querying
Removing some allocations arounds the stored hashes by having nested hash maps
instead of tuple keys. Also remove an intermediate array when parsing
dependencies through a custom implementation of `Deserialize`. While this
doesn't make this code path blazingly fast it definitely knocks it down in the
profiles below other higher-value targets.
2017-06-05 07:36:44 -07:00
Alex Crichton 48446574a6 Optimize resolution by removing allocations
This commit is a relatively serious optimization pass of the resolution phase in
Cargo, targeted at removing as many allocations as possible from this phase.
Executed as an iterative loop this phase of Cargo can often be costly for large
graphs but it's run on every single build!

The main optimization here is to avoid cloning the context and/or pushing a
backtracking frame if there are no candidates left in the current list of
candidates. That optimizes a fast-path for crates with lock files (almost all of
them) and gets us to the point where cloning the context basically disappears
from all profiling.
2017-06-05 07:36:44 -07:00
bors 8fb6e7c157 Auto merge of #4110 - alexcrichton:jobserver, r=matklad
Add a GNU make jobserver implementation to Cargo

This commit adds a GNU make jobserver implementation to Cargo, both as a client
of existing jobservers and also a creator of new jobservers. The jobserver is
actually just an IPC semaphore which manifests itself as a pipe with N bytes
of tokens on Unix and a literal IPC semaphore on Windows. The rough protocol
is then if you want to run a job you read acquire the semaphore (read a byte on
Unix or wait on the semaphore on Windows) and then you release it when you're
done.

All the hairy details of the jobserver implementation are housed in the
`jobserver` crate on crates.io instead of Cargo. This should hopefully make it
much easier for the compiler to also share a jobserver implementation
eventually.

The main tricky bit here is that on Unix and Windows acquiring a jobserver token
will block the calling thread. We need to either way for a running job to exit
or to acquire a new token when we want to spawn a new job. To handle this the
current implementation spawns a helper thread that does the blocking and sends a
message back to Cargo when it receives a token. It's a little trickier with
shutting down this thread gracefully as well but more details can be found in
the `jobserver` crate.

Unfortunately crates are unlikely to see an immediate benefit of this once
implemented. Most crates are run with a manual `make -jN` and this overrides the
jobserver in the environment, creating a new jobserver in the sub-make. If the
`-jN` argument is removed, however, then `make` will share Cargo's jobserver and
properly limit parallelism.

Closes #1744
2017-06-02 22:53:36 +00:00
Alex Crichton cbf25a9b0a Add a GNU make jobserver implementation to Cargo
This commit adds a GNU make jobserver implementation to Cargo, both as a client
of existing jobservers and also a creator of new jobservers. The jobserver is
actually just an IPC semaphore which manifests itself as a pipe with N bytes
of tokens on Unix and a literal IPC semaphore on Windows. The rough protocol
is then if you want to run a job you read acquire the semaphore (read a byte on
Unix or wait on the semaphore on Windows) and then you release it when you're
done.

All the hairy details of the jobserver implementation are housed in the
`jobserver` crate on crates.io instead of Cargo. This should hopefully make it
much easier for the compiler to also share a jobserver implementation
eventually.

The main tricky bit here is that on Unix and Windows acquiring a jobserver token
will block the calling thread. We need to either way for a running job to exit
or to acquire a new token when we want to spawn a new job. To handle this the
current implementation spawns a helper thread that does the blocking and sends a
message back to Cargo when it receives a token. It's a little trickier with
shutting down this thread gracefully as well but more details can be found in
the `jobserver` crate.

Unfortunately crates are unlikely to see an immediate benefit of this once
implemented. Most crates are run with a manual `make -jN` and this overrides the
jobserver in the environment, creating a new jobserver in the sub-make. If the
`-jN` argument is removed, however, then `make` will share Cargo's jobserver and
properly limit parallelism.

Closes #1744
2017-06-02 08:06:30 -07:00
Brian Anderson a7cbd5eba1 Update gcc crate for MSVC 2017 2017-06-01 21:01:17 +00:00
jluner 7f6dbc14da Resolve upstream updates to referenced crates 2017-05-27 23:50:55 -05:00
Alex Crichton 0ceab8e3c1 Update a slew of dependencies and such
Standard bug fixes and otherwise keeping up to date
2017-05-27 17:21:42 -07:00
jluner d121e05966 Update gcc dependency to match updated gcc elsewhere in cargo 2017-05-27 02:37:10 -05:00
jluner 6e9161b38e Merge remote-tracking branch 'upstream/master' 2017-05-27 02:29:15 -05:00
Brian Anderson 2377bfd69e Update lockfile for gcc and cmake crates to pick up MSVC 2017 fixes 2017-05-26 10:14:12 -07:00
jluner e95044e313 Add error-chain errors
Convert CargoResult, CargoError into an implementation provided by error-chain. The previous is_human machinery is mostly removed; now errors are displayed unless of the Internal kind, verbose mode will print all errors.
2017-05-24 21:14:04 -05:00
Alex Crichton 852968e679 Remove chrono as a dependency
Turns out we don't use it!
2017-05-18 09:02:40 -07:00
Alex Crichton 77b761260b Update libssh2-sys
It now has an updated initialization routine to hopefully get ssh working on
Windows, with a fix for alexcrichton/git2-rs#202
2017-05-08 09:15:41 -07:00
Marc-Antoine Perennou f8d2883618 update libgit2-sys for libressl compat
Signed-off-by: Marc-Antoine Perennou <Marc-Antoine@Perennou.com>
2017-04-30 08:08:23 +02:00
Alex Crichton 2dd168c14e Bump to 0.20.0 2017-04-27 20:11:52 -07:00
Alex Crichton 0b59f17d63 Update dependencies Cargo uses
Namely update to serde 1.0.0!
2017-04-27 12:06:34 -07:00
Marco A L Barbosa f125e4d7c5 Bump time (0.1.37) and libc (0.2.22) 2017-04-27 11:46:45 -03:00
Jessica Hamilton f463e3c747 Update num_cpus to 1.4.0 (adds support for Haiku) 2017-04-26 15:29:44 +12:00
Alex Crichton f881e863b1 Update dependencies in Cargo.lock 2017-04-24 07:32:53 -07:00
Marco A L Barbosa d5da19129b Update openssl-probe to 0.1.1 2017-04-12 16:50:30 -03:00
Alex Crichton 21dea9cacc Update toml to fix a regression in backcompat
Related to rust-lang/rust#40956
2017-03-31 18:45:55 -07:00
Ewan Higgs b998130435 Cleanup of template patch reversion. 2017-03-29 22:23:46 +02:00
Ewan Higgs 7e66058af4 Revert "Cargo templating for new and init"
This reverts commit 875a8aba79.
2017-03-29 21:57:33 +02:00
Ewan Higgs d869179c48 Revert "Upgrade handlebars to 0.25."
This reverts commit 0aad658f09.
2017-03-29 21:54:39 +02:00
Ewan Higgs 82830c77bd Revert "Use time crate directly to get the year"
This reverts commit 47221e9818.
2017-03-29 21:51:50 +02:00
Ewan Higgs 2c8f94288d Revert "Add year to project template variables"
This reverts commit 69ffd99f42.
2017-03-29 21:50:53 +02:00
Alex Crichton d6f088a028 Bump to 0.19.0 2017-03-16 14:03:30 -07:00
bors 3bc886585d Auto merge of #3795 - jryans:template-year, r=alexcrichton
Add year to project template variables

This adds the current year as a `year` variable for project templates. Some license files / headers include the year, so this should make it easier to include those in a template.
2017-03-06 20:42:29 +00:00
J. Ryan Stinnett 47221e9818 Use time crate directly to get the year 2017-03-06 11:41:19 -06:00
J. Ryan Stinnett 69ffd99f42 Add year to project template variables 2017-03-03 12:49:44 -06:00
Ning Sun 72d0a72d64
Use serde type system for handlebars
This will help cargo to drop rustc_serialize as dependency
2017-03-03 17:25:06 +08:00
Alex Crichton 923f21c32e Add an option to ignore SSL revocation checking
This is apparently required in some Windows setups to get past SSL context
creation in schannel.
2017-02-22 12:31:47 -08:00
Alex Crichton a5a298f1fd Migrate from rustc-serialize to Serde
This commit migrates Cargo as much as possible from rustc-serialize to
Serde. This not only provides an excellent testing ground for the toml
0.3 release but it also is a big boost to the speed of parsing the JSON
bits of the registry.

This doesn't completely excise the dependency just yet as docopt still
requires it along with handlebars. I'm sure though that in time those
crates will migrate to serde!
2017-02-22 10:29:40 -08:00
bors 453b888309 Auto merge of #3719 - alexcrichton:curl-sys, r=alexcrichton
Update libz-sys

Try to fix AppVeyor CI
2017-02-16 17:36:26 +00:00
Alex Crichton 1dba9224d3 Update libz-sys to fix AppVeyor CI
Needs a fix for msys instead of Windows paths
2017-02-16 09:35:35 -08:00
Alex Crichton db892466b9 Update libgit2
Pull in a fix for #3610
2017-02-15 14:46:46 -08:00
Alex Crichton a2c82595e9 Update dependencies
Another major version of Cargo, another suite of updated dependencies!
2017-02-07 09:43:15 -08:00
Marc-Antoine Perennou 3de59d6586 ensure libressl compatibility
Update libgit2-sys, openssl-sys and openssl
as the versions currently in Cargo.lock are
not compatible with libressl.
Also update tests accordingly

Signed-off-by: Marc-Antoine Perennou <Marc-Antoine@Perennou.com>
2017-02-03 16:41:01 +01:00
bors c0650fb9fe Auto merge of #3635 - alexcrichton:bump, r=alexcrichton
Bump to 0.18.0
2017-02-03 05:58:33 +00:00
Alex Crichton d53ab1d8e3 Bump to 0.18.0 2017-02-02 11:30:37 -08:00
Steve Klabnik 090d48b39d bump semver version 2017-02-02 13:52:09 -05:00
Ewan Higgs 0aad658f09 Upgrade handlebars to 0.25. 2017-01-31 10:23:44 +01:00
Ewan Higgs 875a8aba79 Cargo templating for new and init
PR #3004 This is a resubmission of the PR #1747 (from scratch) which adds
support for templating in Cargo. The templates are implemented using the
handlebars crate (where the original PR used mustache).

Examples:
cargo new --template https://url/to/template somedir foo
cargo new --template https://url/to/templates --template-subdir somedir foo
cargo new --template ../path/to/template somedir foo
2017-01-31 10:23:42 +01:00
Steven Fackler fee22860aa Update shell-escape 2017-01-04 22:06:11 -08:00
Steven Fackler d105e75271 Use externally sourced shell-escape
Closes #3374
2016-12-30 10:21:10 -08:00
bors c96d76036d Auto merge of #3435 - alexcrichton:bump-libssh2, r=brson
Update libssh2 to fix a segfault on Windows

There's some more discussion on #3401, but this essentially is just an inclusion
of libssh2/libssh2#163

Closes #3401
2016-12-29 08:49:03 +00:00
Alex Crichton 5f4b9f27d0 Bump crates-io to 0.6.0 2016-12-25 08:02:35 -08:00
Alex Crichton b287b51a7b Update libssh2 to fix a segfault on Windows
There's some more discussion on #3401, but this essentially is just an inclusion
of libssh2/libssh2#163

Closes #3401
2016-12-20 14:40:11 -08:00
Alex Crichton 9c0be483f6 Bump to 0.17.0 2016-12-19 16:28:47 -08:00
Alex Crichton 34b44cec74 Bump libz-sys to 1.0.9
This just switches libz to always link statically instead of relying on the
system zlib. For MinGW it seems that linkage may default pull in a DLL, which is
almost never what we want.

Also update curl-sys to fix a build issue on MinGW.

Closes #3384
2016-12-14 17:27:55 -08:00
Alex Crichton db60e6ccdb Compile statically against the MSVC CRT
This updates our AppVeyor builds to compile with `-Ctarget-feature=+crt-static`
to help Cargo be a bit more portable and not rely on the MSVC redistributable
artifacts. Over time this may even let us converge on only releasing one build
of Cargo and just pairing that with all Windows toolchains...
2016-12-13 13:45:04 -08:00
Alex Crichton 52fa74113a Bump git2 dep to fix SSL paths
This commit includes alexcrichton/git2-rs@a8f4a7faa which switches the order of
initialization of libgit2. That commit ensures that the relevant env vars which
a statically linked OpenSSL needs to function are set before libgit2 is
initialized to ensure that libgit2 uses them.

This was regressed accidentally in alexcrichton/git2-rs@071902aa when
initialization was tweaked.

Closes #3340
2016-11-28 15:48:10 -08:00
Alex Crichton 61b19feb4a Update git2 fixing initialization races
This updates libgit2/libssh2 bindings to fix initialization races in
OpenSSL. This should fix some of the spurious segfaults we've been
seeing on Travis OSX.
2016-11-26 09:11:08 -08:00
Tobias Bucher b08de74b4d Bump git2 dependency to fix #3312 2016-11-25 00:13:57 +01:00
Alex Crichton 8dc8c08624 Bump to 0.16.0 2016-11-16 16:05:31 -08:00
Alex Crichton 15acaa9c31 More updates for OpenSSL 1.1.0 2016-11-14 13:55:11 -08:00
Josh Stone 0af16532b2 Update dependencies for OpenSSL 1.1.0 compatibility
The primary targets here are openssl and openssl-sys crates 0.9,
bringing support for OpenSSL 1.1.0.  This requires updating the curl
and git2 related dependencies as well.

A small change is required in cargo itself for the new Hasher API.
Results from the hasher are simply unwrapped for now, matching the
Windows behavior that already panics on error.
2016-11-11 11:06:07 -08:00
Alex Crichton 61860021c3 Bump to 0.15.0 2016-11-10 12:17:45 -08:00
Alex Crichton dd69aeebd5 Update curl and curl-sys
Pick up a few security related fixes in libcurl
2016-10-31 11:27:31 -07:00
Alex Crichton 13038032d6 Download more cross builds 2016-10-24 22:31:27 -07:00
Steve Klabnik b20de58b2d bump semver to 0.5.1
Fixes #3202
2016-10-17 14:42:20 -04:00
Alex Crichton eb0b9dbddd Prepare for more cross-compiled Cargos
Update deps, add support, ensure everything compiles right.
2016-10-15 00:47:47 -07:00
Sébastien Marie d482b770ec bump hamcrest to 0.1.1 2016-10-10 12:08:48 +02:00
Steve Klabnik 464e6a96fb Bump to semver@0.5.0 2016-10-07 16:03:08 -04:00
Steve Klabnik c0f854cfc6 upgrade semver 2016-10-07 10:57:31 -07:00
bors 505b9b0478 Auto merge of #3162 - alexcrichton:ugh-mspdbsrv, r=brson
Leak mspdbsrv.exe processes on Windows

Instead of having our job object tear them down, instead leak them intentionally
if everything succeeded.

Closes #3161
2016-10-05 22:47:07 -07:00
Alex Crichton 5ede71e539 Leak mspdbsrv.exe processes on Windows
Instead of having our job object tear them down, instead leak them intentionally
if everything succeeded.

Closes #3161
2016-10-04 16:15:28 -07:00
Alex Crichton 035236020c Update curl to track more error info 2016-09-29 17:30:18 -07:00
Alex Crichton 4c2bfad067 Bump to 0.14.0 2016-09-29 11:31:17 -07:00
Jake Goldsborough ac8488199e adding policies page to the docs 2016-08-29 11:39:39 -07:00
Alex Crichton d971f115ff Update libz-sys to 1.0.6
Fixes a build error on OSX

Closes #3037
2016-08-26 14:42:40 -07:00
Steve Klabnik c49c1a9ba3 Revert to previous semver version.
As it turns out, people were taking advantage of bugginess in semver, so
we can't do this upgrade yet.

Fixes #3001
2016-08-17 10:10:10 -04:00
Alex Crichton 7a8ad36997 Update dependencies in Cargo.lock
A few bug fixes here and there we'll pick up (e.g. the gcc crate on newer MSVC
versions), but otherwise just staying on top of things.
2016-08-08 10:46:55 -07:00
Alex Crichton 5c6a7dd7bb Update OpenSSL-using dependencies
They've all been updated to canonicalize as `openssl_sys::init` as the "one true
method" for initializing OpenSSL,

Closes #2961
2016-08-06 17:50:16 -07:00
John Ericson 2a66dfba1f Use openssl on Unix rather than C functions directly for SHA256 2016-08-01 13:28:25 -07:00
Steve Klabnik 3e1c9264fc regenerate the lockfile 2016-07-30 20:58:58 -04:00
Alex Crichton fb2faf29b2 Bump to 0.13.0 2016-07-07 09:44:05 -07:00
Alex Crichton 26690d33e4 Stream build script output to the console
This commit alters Cargo's behavior when the `-vv` option is passed (two verbose
flags) to stream output of all build scripts to the console. Cargo makes not
attempt to prevent interleaving or indicate *which* build script is producing
output, rather it simply forwards all output to one to the console.

Cargo still acts as a middle-man, capturing the output, to parse build script
output and interpret the results. The parsing is still deferred to completion
but the stream output happens while the build script is running.

On Unix this is implemented via `select` and on Windows this is implemented via
IOCP.

Closes #1106
2016-06-14 07:35:51 -07:00
bors f8e75eca75 Auto merge of #2680 - alexcrichton:update-toml, r=brson
Update TOML parser to pick up a bugfix

Cargo has previously accepted invalid TOML as valid, but this bugfix should fix
the problem. In order to prevent breaking all crates immediately toml-rs has a
compatibility mode which emulates the bug that was fixed. Cargo will issue a
warning if this compatibility is required to parse a crate.
2016-06-12 05:21:23 -07:00
Alex Crichton 2a1e16c08a Update TOML parser to pick up a bugfix
Cargo has previously accepted invalid TOML as valid, but this bugfix should fix
the problem. In order to prevent breaking all crates immediately toml-rs has a
compatibility mode which emulates the bug that was fixed. Cargo will issue a
warning if this compatibility is required to parse a crate.
2016-06-12 04:14:35 -07:00
bors 4fbd47c1a5 Auto merge of #2770 - alexcrichton:new-curl, r=brson
Update to curl 0.3
2016-06-07 15:52:14 -07:00
Alex Crichton f7d213e744 Update to curl 0.3 2016-06-04 23:48:05 -07:00
Alex Crichton bb82035f9c Bump version numbers
Working on 0.12.0 now
2016-05-26 09:36:37 -07:00
Alex Crichton 763ba535eb Shared the test suite into multiple binaries
Compiling everything in one binary was getting annoying as it just took forever
to build, instead shard it all up so we can build just particular test suites at
a time.
2016-05-25 21:25:13 -07:00
Demur Rumed 6083780ad8 Remove dependency on time in favor of std::time 2016-05-14 14:10:07 +00:00
Stephen Becker IV 7b03532b4f Network retry issue 1602
Dearest Reviewer,

This branch resolves #1602 which relates to retrying network
issues automatically. There is a new utility helper for retrying
any network call.

There is a new config called net.retry value in the .cargo.config
file. The default value is 2. The documentation has also been
updated to reflect the new value.

Thanks
Becker
2016-05-12 11:26:58 -07:00
Simon Sapin 32562e9288 Update to rust-url 1.x 2016-05-03 19:41:06 +02:00
bors 59238e852c Auto merge of #2575 - alexcrichton:bump, r=alexcrichton
Bump to 0.11.0
2016-04-14 10:36:06 -07:00
Alex Crichton 1f889f7447 Bump to 0.11.0 2016-04-14 10:10:02 -07:00
Alex Crichton 5d87c4fef2 Bump the crates-io crate to 0.2 2016-04-14 10:04:34 -07:00
Alex Crichton 11a0a316af Update dependency on tar
Includes a fix for alexcrichton/tar-rs#61
2016-04-11 12:55:38 -07:00
Alex Crichton ea8de0a0d0 Update curl-sys
Picks up a fix to hopefully and correctly configure OpenSSL to be enabled in
cross-compiled situations where OpenSSL comes from a different location
(currently specified by the `OPENSSL_ROOT_DIR` environment variable that libssh2
also reads).
2016-03-25 09:24:35 -07:00
Alex Crichton 83b4f39c44 Prepare for ARM/FreeBSD/NetBSD nightlies
This commit beefs up Cargo's makefiles to support nightly builds of Cargo for
multiple platforms. This primarily involves vendoring the logic of how to build
OpenSSL for statically linking against Cargo into the Makefiles directly. We'll
have to update the version of OpenSSL as releases are made, but we essentially
already do that with the normal docker container.

The Linux nightlies will still run in the normal dist docker container (a really
old CentOS build) and builds for new platforms will happen in the standard
linux-cross container we use for other cross builds. The nightly versions of
these will produce Cargo tarballs for a whole bunch of platforms to get
uploaded.

This has been tested in the `alexcrichton/rust-slave-linux-cross:2016-03-17b`
docker container for the 3 ARM targets and FreeBSD target. NetBSD will come once
rust-lang/rust#32407 lands.
2016-03-22 16:19:35 -07:00
Ryan Quattlebaum 1750307c11 Bring in changes from master 2016-03-18 12:20:36 -04:00
Ryan Quattlebaum fe53e05dbf Move suggestion logic into generate_targets() 2016-03-18 12:00:22 -04:00
Alex Crichton 8eac1d62d8 Fix running Cargo concurrently
Cargo has historically had no protections against running it concurrently. This
is pretty unfortunate, however, as it essentially just means that you can only
run one instance of Cargo at a time **globally on a system**.

An "easy solution" to this would be the use of file locks, except they need to
be applied judiciously. It'd be a pretty bad experience to just lock the entire
system globally for Cargo (although it would work), but otherwise Cargo must be
principled how it accesses the filesystem to ensure that locks are properly
held. This commit intends to solve all of these problems.

A new utility module is added to cargo, `util::flock`, which contains two types:

* `FileLock` - a locked version of a `File`. This RAII guard will unlock the
  lock on `Drop` and I/O can be performed through this object. The actual
  underlying `Path` can be read from this object as well.
* `Filesystem` - an unlocked representation of a `Path`. There is no "safe"
  method to access the underlying path without locking a file on the filesystem
  first.

Built on the [fs2] library, these locks use the `flock` system call on Unix and
`LockFileEx` on Windows. Although file locking on Unix is [documented as not so
great][unix-bad], but largely only because of NFS, these are just advisory, and
there's no byte-range locking. These issues don't necessarily plague Cargo,
however, so we should try to leverage them. On both Windows and Unix the file
locks are released when the underlying OS handle is closed, which means that
if the process dies the locks are released.

Cargo has a number of global resources which it now needs to lock, and the
strategy is done in a fairly straightforward way:

* Each registry's index contains one lock (a dotfile in the index). Updating the
  index requires a read/write lock while reading the index requires a shared
  lock. This should allow each process to ensure a registry update happens while
  not blocking out others for an unnecessarily long time. Additionally any
  number of processes can read the index.
* When downloading crates, each downloaded crate is individually locked. A lock
  for the downloaded crate implies a lock on the output directory as well.
  Because downloaded crates are immutable, once the downloaded directory exists
  the lock is no longer needed as it won't be modified, so it can be released.
  This granularity of locking allows multiple Cargo instances to download
  dependencies in parallel.
* Git repositories have separate locks for the database and for the project
  checkout. The datbase and checkout are locked for read/write access when an
  update is performed, and the lock of the checkout is held for the entire
  lifetime of the git source. This is done to ensure that any other Cargo
  processes must wait while we use the git repository. Unfortunately there's
  just not that much parallelism here.
* Binaries managed by `cargo install` are locked by the local metadata file that
  Cargo manages. This is relatively straightforward.
* The actual artifact output directory is just globally locked for the entire
  build. It's hypothesized that running Cargo concurrently in *one directory* is
  less of a feature needed rather than running multiple instances of Cargo
  globally (for now at least). It would be possible to have finer grained
  locking here, but that can likely be deferred to a future PR.

So with all of this infrastructure in place, Cargo is now ready to grab some
locks and ensure that you can call it concurrently anywhere at any time and
everything always works out as one might expect.

One interesting question, however, is what does Cargo do on contention? On one
hand Cargo could immediately abort, but this would lead to a pretty poor UI as
any Cargo process on the system could kick out any other. Instead this PR takes
a more nuanced approach.

* First, all locks are attempted to be acquired (a "try lock"). If this
  succeeds, we're done.
* Next, Cargo prints a message to the console that it's going to block waiting
  for a lock. This is done because it's indeterminate how long Cargo will wait
  for the lock to become available, and most long-lasting operations in Cargo
  have a message printed for them.
* Finally, a blocking acquisition of the lock is issued and we wait for it to
  become available.

So all in all this should help Cargo fix any future concurrency bugs with file
locking in a principled fashion while also allowing concurrent Cargo processes
to proceed reasonably across the system.

[fs2]: https://github.com/danburkert/fs2-rs
[unix-bad]: http://0pointer.de/blog/projects/locking.html

Closes #354
2016-03-16 22:14:26 -07:00
Brian Anderson 2f01868a94 Add rustflags support to config files
`build.rustflags` is treated exactly like `RUSTFLAGS`.

It is a list, so argument lists with spaces work.

`RUSTFLAGS` takes precedent, then `build.rustflags`.
2016-03-16 17:32:00 +00:00
Brian Anderson e17933ec7f Apply RUSTFLAGS env var to rustc builds
This passes RUSTFLAGS to rustc builds for the target architecture.

We don't want to pass the RUSTFLAGS args to multiple architectures because
they may contain architecture-specific flags. Ideally, the scheme
we would use would treat plugins and build scripts - which may not
be for the target architecture - consistently. Unfortunately it's
quite difficult in the current Cargo architecture to seperately
identify build scripts, plugins and their dependencies from
code used by the target.

So the scheme here is very simple:

1) If --target is not specified, RUSTFLAGS applies to all builds.
2) If --target is specified, RUSTFLAGS only applies to builds
   with the Kind::Target target kind, which indicates build units
   derived from the requested --target.

Closes #2112
2016-03-16 16:49:21 +00:00
Alex Crichton d8adf5c19c Update curl dependency
Fixes a segfault on nightly
2016-03-12 09:59:16 -08:00
Jesús Espino 134edb20c1 Adding --limit usage suggestion on search results (#2402) 2016-03-08 09:31:26 +01:00
Alex Crichton ac20c99020 Bump to 0.10.0 2016-03-03 11:12:10 -08:00
Alex Crichton 333ba43fe2 Update dependency on git2
This crate was recently updated to the next release of libgit2, and I've noticed
historically that a noop `cargo build` was slow in the git2-rs repository.
Curious to see if the new libgit2 version helped speed things up at all, I
tested it out.

Before this commit, a noop `cargo build` produced 599108 syscalls. After this
commit, a noop build produced 86925 syscalls, an 85% reduction in the number of
syscalls! Needless to say it's much faster.
2016-02-26 13:47:56 -08:00
Alex Crichton e5b818bf8a Update tar-rs dependency
Fixes compile on nightly
2016-02-17 10:50:05 -08:00
Alex Crichton 5b68527169 Update some dependencies, plus the rust version
The new bundled rust version supports unwinding on 32-bit MSVC!
2016-02-13 23:21:22 -08:00
bors 7330169feb Auto merge of #2348 - steveklabnik:gh2337, r=alexcrichton
Fixes #2337
2016-02-01 22:04:19 +00:00
Steven Allen cfcfa08a0a Detect whether or not the terminal supports color.
Before v0.4, term used to return `Ok(true)` if something succeeded,
`Ok(false)` if the operation was unsupported, and `Err(io::Error)` if
there was an IO error. Now, it returns `Ok(())` if the operation
succeeds and `Err(term::Error)` if the operation fails. If the operation
is unsupported, it returns `Err(term::Error::NotSupported)`. This means
that, if `op` is unsupported, `try!(term.op())` will now return an error
instead of silently failing (well, return false but that's effectively
silent).

Fixes #2338
2016-02-01 16:06:01 -05:00
Steve Klabnik a2fa2d27e2 Bump semver version
Fixes #2337
2016-02-01 15:12:17 -05:00
Steven Allen fd463d65f9 Revert "Downgrade term crate back down to 0.2 (from 0.4)."
This reverts commit 75e0371ba0.
2016-01-30 15:30:53 -05:00
Felix S. Klock II 75e0371ba0 Downgrade term crate back down to 0.2 (from 0.4).
This is undoing part of commit dd34296

Fix #2338

(Unfortunately I do not have a suggestion for how to make a unit test
for this problem; doing so would require putting in a bit more effort
than I have time for at the moment.)
2016-01-30 14:57:15 +01:00
Alex Crichton ff4b89636d Update libgit2-sys
Fixes a linkage error on linux if libhttp_parser is already installed.
2016-01-28 08:50:31 -08:00
bors 44c0d7b785 Auto merge of #2297 - alexcrichton:update, r=alexcrichton
Just a routine for niche bug fixes, linkage errors, perf improvements, etc.

Closes #2295
2016-01-25 17:34:19 +00:00
Alex Crichton dd34296008 Update dependencies and Rust version
Just a routine for niche bug fixes, linkage errors, perf improvements, etc.
2016-01-25 09:33:51 -08:00
Alex Crichton 43cc710b6c Bump to 0.9.0 2016-01-21 13:47:11 -08:00
Felix Crux fdfe8fc5dc Bump rand to 0.3.13 2016-01-11 19:26:48 -05:00
Steven Fackler a40f7d90fb Bump libc to 0.2
Also update everything else which removes all remaining libc 0.1
dependencies
2015-12-20 15:58:55 -07:00
Alex Crichton 4baeb83fb6 Update toml dependency to catch more unused keys
This includes alexcrichton/toml-rs@39d77b6d which ensures that more unused
fields stick around when decoding TOML, allowing this to:

Closes #2230
2015-12-18 16:33:17 -08:00
Alex Crichton 75ce18d676 Bump to 0.8.0 2015-12-10 07:26:17 -08:00
Steve Klabnik 94cc5e1eab Update semver to 0.2.0 2015-12-04 11:14:39 -05:00