New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

cargo install multiple crates #4216

Merged
merged 11 commits into from Jul 28, 2017

Conversation

Projects
None yet
5 participants
@durka
Contributor

durka commented Jun 23, 2017

rust-lang-nursery/rustup.rs#986 for cargo install

Revives #2601 @pwoolcoc, replaces #3075 @esclear, closes #2585 @kindlychung @cyplo

Avoids the sticking point of the previous two PRs (multiple registry updates) by threading through a first-run boolean flag to decide whether select_pkg needs to call source.update().

There is still the issue that flags such as --git and --vers are "global" to the multiple packages you may be installing. The workaround is just to run cargo install separately. In the future we could add syntax like cargo install foo=1.0 bar=2.5 quux=git://github.com/durka/quux#dev-branch or something.

@durka

This comment has been minimized.

Show comment
Hide comment
@durka

durka Jun 24, 2017

Contributor

Fixed tests.

Contributor

durka commented Jun 24, 2017

Fixed tests.

@durka

This comment has been minimized.

Show comment
Hide comment
@durka

durka Jun 24, 2017

Contributor

Reverting the bail! changes because I thought bail! == panic!... oops.

Contributor

durka commented Jun 24, 2017

Reverting the bail! changes because I thought bail! == panic!... oops.

@cyplo

This comment has been minimized.

Show comment
Hide comment
@cyplo

cyplo Jun 24, 2017

Cool ! LGTM ! :)

cyplo commented Jun 24, 2017

Cool ! LGTM ! :)

@alexcrichton

Can you be sure to also add tests for installing multiple crates where one is an error for whatever reason?

Show outdated Hide outdated tests/install.rs
Show outdated Hide outdated src/cargo/ops/cargo_install.rs
Show outdated Hide outdated src/cargo/ops/cargo_install.rs
@durka

This comment has been minimized.

Show comment
Hide comment
@durka

durka Jul 12, 2017

Contributor

Addressed comments.

Contributor

durka commented Jul 12, 2017

Addressed comments.

@durka

This comment has been minimized.

Show comment
Hide comment
@durka

durka Jul 24, 2017

Contributor

I... have absolutely no idea why that test is failing. With my changes, cargo install seems to die after "Blocking waiting for lock on crate metadata", but it looks to me like it's trying the same actions in the same order.

Contributor

durka commented Jul 24, 2017

I... have absolutely no idea why that test is failing. With my changes, cargo install seems to die after "Blocking waiting for lock on crate metadata", but it looks to me like it's trying the same actions in the same order.

@durka

This comment has been minimized.

Show comment
Hide comment
@durka

durka Jul 24, 2017

Contributor

Should be fixed now.

Contributor

durka commented Jul 24, 2017

Should be fixed now.

summary.push(format!("Successfully installed {}!", succeeded.join(", ")));
}
if !failed.is_empty() {
summary.push(format!("Failed to install {} (see error(s) above).", failed.join(", ")));

This comment has been minimized.

@alexcrichton

alexcrichton Jul 25, 2017

Member

Should this schedule an error to be returned at the top level, to ensure that cargo returns a nonzero exit status?

@alexcrichton

alexcrichton Jul 25, 2017

Member

Should this schedule an error to be returned at the top level, to ensure that cargo returns a nonzero exit status?

This comment has been minimized.

@durka

durka Jul 25, 2017

Contributor

Now if there are failures it looks like this:

$ target/debug/cargo install asdfasdf fdasfdsa
    Updating registry `https://github.com/rust-lang/crates.io-index`
error: could not find `asdfasdf` in `registry https://github.com/rust-lang/crates.io-index`
error: could not find `fdasfdsa` in `registry https://github.com/rust-lang/crates.io-index`

Summary: Failed to install asdfasdf, fdasfdsa (see error(s) above).
error: some crates failed to install

and exits with 101.

@durka

durka Jul 25, 2017

Contributor

Now if there are failures it looks like this:

$ target/debug/cargo install asdfasdf fdasfdsa
    Updating registry `https://github.com/rust-lang/crates.io-index`
error: could not find `asdfasdf` in `registry https://github.com/rust-lang/crates.io-index`
error: could not find `fdasfdsa` in `registry https://github.com/rust-lang/crates.io-index`

Summary: Failed to install asdfasdf, fdasfdsa (see error(s) above).
error: some crates failed to install

and exits with 101.

This comment has been minimized.

@alexcrichton
@alexcrichton
@durka

This comment has been minimized.

Show comment
Hide comment
@durka

durka Jul 25, 2017

Contributor
Contributor

durka commented Jul 25, 2017

opts.config.shell().status("\nSummary:", summary.join(" "))?;
}
(!succeeded.is_empty(), !failed.is_empty())

This comment has been minimized.

@durka

durka Jul 25, 2017

Contributor

Starting to accumulate a slightly worrying number of boolean flags here. :/

@durka

durka Jul 25, 2017

Contributor

Starting to accumulate a slightly worrying number of boolean flags here. :/

@alexcrichton

This comment has been minimized.

Show comment
Hide comment
@alexcrichton

alexcrichton Jul 28, 2017

Member

@bors: r+

Looks good to me, thanks!

Member

alexcrichton commented Jul 28, 2017

@bors: r+

Looks good to me, thanks!

@bors

This comment has been minimized.

Show comment
Hide comment
@bors

bors Jul 28, 2017

Contributor

📌 Commit ce2d69d has been approved by alexcrichton

Contributor

bors commented Jul 28, 2017

📌 Commit ce2d69d has been approved by alexcrichton

@bors

This comment has been minimized.

Show comment
Hide comment
@bors

bors Jul 28, 2017

Contributor

⌛️ Testing commit ce2d69d with merge 0430997...

Contributor

bors commented Jul 28, 2017

⌛️ Testing commit ce2d69d with merge 0430997...

bors added a commit that referenced this pull request Jul 28, 2017

Auto merge of #4216 - durka:install-multi, r=alexcrichton
cargo install multiple crates

rust-lang-nursery/rustup.rs#986 for `cargo install`

Revives #2601 @pwoolcoc, replaces #3075 @esclear, closes #2585 @kindlychung @cyplo

Avoids the sticking point of the previous two PRs (multiple registry updates) by using an `AtomicBool` to decide whether `select_pkg` needs to call `source.update()`.

There is still the issue that flags such as `--git` and `--vers` are "global" to the multiple packages you may be installing. The workaround is just to run `cargo install` separately. In the future we could add syntax like `cargo install foo=1.0 bar=2.5 quux=git://github.com/durka/quux#dev-branch` or something.
@bors

This comment has been minimized.

Show comment
Hide comment
@bors

bors Jul 28, 2017

Contributor

☀️ Test successful - status-appveyor, status-travis
Approved by: alexcrichton
Pushing 0430997 to master...

Contributor

bors commented Jul 28, 2017

☀️ Test successful - status-appveyor, status-travis
Approved by: alexcrichton
Pushing 0430997 to master...

@bors

This comment has been minimized.

Show comment
Hide comment
@bors

bors Jul 28, 2017

Contributor

👀 Test was successful, but fast-forwarding failed: 422 Required status check "continuous-integration/appveyor/pr" is expected.

Contributor

bors commented Jul 28, 2017

👀 Test was successful, but fast-forwarding failed: 422 Required status check "continuous-integration/appveyor/pr" is expected.

@alexcrichton

This comment has been minimized.

Show comment
Hide comment
@alexcrichton
Member

alexcrichton commented Jul 28, 2017

@bors: retry

bors added a commit that referenced this pull request Jul 28, 2017

Auto merge of #4216 - durka:install-multi, r=alexcrichton
cargo install multiple crates

rust-lang-nursery/rustup.rs#986 for `cargo install`

Revives #2601 @pwoolcoc, replaces #3075 @esclear, closes #2585 @kindlychung @cyplo

Avoids the sticking point of the previous two PRs (multiple registry updates) by threading through a first-run boolean flag to decide whether `select_pkg` needs to call `source.update()`.

There is still the issue that flags such as `--git` and `--vers` are "global" to the multiple packages you may be installing. The workaround is just to run `cargo install` separately. In the future we could add syntax like `cargo install foo=1.0 bar=2.5 quux=git://github.com/durka/quux#dev-branch` or something.
@bors

This comment has been minimized.

Show comment
Hide comment
@bors

bors Jul 28, 2017

Contributor

⌛️ Testing commit ce2d69d with merge 3751e68...

Contributor

bors commented Jul 28, 2017

⌛️ Testing commit ce2d69d with merge 3751e68...

@bors

This comment has been minimized.

Show comment
Hide comment
@bors

bors Jul 28, 2017

Contributor

☀️ Test successful - status-appveyor, status-travis
Approved by: alexcrichton
Pushing 3751e68 to master...

Contributor

bors commented Jul 28, 2017

☀️ Test successful - status-appveyor, status-travis
Approved by: alexcrichton
Pushing 3751e68 to master...

@bors bors merged commit ce2d69d into rust-lang:master Jul 28, 2017

3 checks passed

continuous-integration/appveyor/pr AppVeyor build succeeded
Details
continuous-integration/travis-ci/pr The Travis CI build passed
Details
homu Test successful
Details

netbsd-srcmastr pushed a commit to NetBSD/pkgsrc that referenced this pull request Nov 3, 2017

Update to 1.21.0
Changelog:
Version 1.21.0 (2017-10-12)
==========================

Language
--------
- [You can now use static references for literals.][43838]
  Example:
  ```rust
  fn main() {
      let x: &'static u32 = &0;
  }
  ```
- [Relaxed path syntax. Optional `::` before `<` is now allowed in all contexts.][43540]
  Example:
  ```rust
  my_macro!(Vec<i32>::new); // Always worked
  my_macro!(Vec::<i32>::new); // Now works
  ```

Compiler
--------
- [Upgraded jemalloc to 4.5.0][43911]
- [Enabled unwinding panics on Redox][43917]
- [Now runs LLVM in parallel during translation phase.][43506]
  This should reduce peak memory usage.

Libraries
---------
- [Generate builtin impls for `Clone` for all arrays and tuples that
  are `T: Clone`][43690]
- [`Stdin`, `Stdout`, and `Stderr` now implement `AsRawFd`.][43459]
- [`Rc` and `Arc` now implement `From<&[T]> where T: Clone`, `From<str>`,
  `From<String>`, `From<Box<T>> where T: ?Sized`, and `From<Vec<T>>`.][42565]

Stabilized APIs
---------------

[`std::mem::discriminant`]

Cargo
-----
- [You can now call `cargo install` with multiple package names][cargo/4216]
- [Cargo commands inside a virtual workspace will now implicitly
  pass `--all`][cargo/4335]
- [Added a `[patch]` section to `Cargo.toml` to handle
  prepublication dependencies][cargo/4123] [RFC 1969]
- [`include` & `exclude` fields in `Cargo.toml` now accept gitignore
  like patterns][cargo/4270]
- [Added the `--all-targets` option][cargo/4400]
- [Using required dependencies as a feature is now deprecated and emits
  a warning][cargo/4364]


Misc
----
- [Cargo docs are moving][43916]
  to [doc.rust-lang.org/cargo](https://doc.rust-lang.org/cargo)
- [The rustdoc book is now available][43863]
  at [doc.rust-lang.org/rustdoc](https://doc.rust-lang.org/rustdoc)
- [Added a preview of RLS has been made available through rustup][44204]
  Install with `rustup component add rls-preview`
- [`std::os` documentation for Unix, Linux, and Windows now appears on doc.rust-lang.org][43348]
  Previously only showed `std::os::unix`.

Compatibility Notes
-------------------
- [Changes in method matching against higher-ranked types][43880] This may cause
  breakage in subtyping corner cases. [A more in-depth explanation is available.][info/43880]
- [rustc's JSON error output's byte position start at top of file.][42973]
  Was previously relative to the rustc's internal `CodeMap` struct which
  required the unstable library `libsyntax` to correctly use.
- [`unused_results` lint no longer ignores booleans][43728]

[42565]: rust-lang/rust#42565
[42973]: rust-lang/rust#42973
[43348]: rust-lang/rust#43348
[43459]: rust-lang/rust#43459
[43506]: rust-lang/rust#43506
[43540]: rust-lang/rust#43540
[43690]: rust-lang/rust#43690
[43728]: rust-lang/rust#43728
[43838]: rust-lang/rust#43838
[43863]: rust-lang/rust#43863
[43880]: rust-lang/rust#43880
[43911]: rust-lang/rust#43911
[43916]: rust-lang/rust#43916
[43917]: rust-lang/rust#43917
[44204]: rust-lang/rust#44204
[cargo/4123]: rust-lang/cargo#4123
[cargo/4216]: rust-lang/cargo#4216
[cargo/4270]: rust-lang/cargo#4270
[cargo/4335]: rust-lang/cargo#4335
[cargo/4364]: rust-lang/cargo#4364
[cargo/4400]: rust-lang/cargo#4400
[RFC 1969]: rust-lang/rfcs#1969
[info/43880]: rust-lang/rust#44224 (comment)
[`std::mem::discriminant`]: https://doc.rust-lang.org/std/mem/fn.discriminant.html
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment