From 7a9b68c99b697501f498d1a7ce8c8df5ee6ddf87 Mon Sep 17 00:00:00 2001 From: Eh2406 Date: Thu, 1 Mar 2018 21:05:22 -0500 Subject: [PATCH 1/3] missed this important bug --- src/cargo/core/resolver/mod.rs | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/src/cargo/core/resolver/mod.rs b/src/cargo/core/resolver/mod.rs index 8db8159cad9..34225a7aad0 100644 --- a/src/cargo/core/resolver/mod.rs +++ b/src/cargo/core/resolver/mod.rs @@ -778,8 +778,6 @@ fn activate_deps_loop<'a>( &mut remaining_candidates, &mut conflicting_activations, ).ok_or_else(|| { - // if we hit an activation error and we are out of other combinations - // then just report that error activation_error( &cx, registry, @@ -827,8 +825,20 @@ fn activate_deps_loop<'a>( // Add an entry to the `backtrack_stack` so // we can try the next one if this one fails. - if has_another && successfully_activated { - backtrack_stack.push(backtrack); + if successfully_activated { + if has_another { + backtrack_stack.push(backtrack); + } + } else { + // `activate` changed `cx` and then failed so put things back. + cur = backtrack.cur; + cx = backtrack.context_backup; + remaining_deps = backtrack.deps_backup; + remaining_candidates = backtrack.remaining_candidates; + parent = backtrack.parent; + dep = backtrack.dep; + features = backtrack.features; + conflicting_activations = backtrack.conflicting_activations; } } } From 2fa4fdf7f32fefdef314767b2c14954cc16f838e Mon Sep 17 00:00:00 2001 From: Eh2406 Date: Thu, 1 Mar 2018 21:44:02 -0500 Subject: [PATCH 2/3] get ci green; don't clone more than we need --- src/cargo/core/resolver/mod.rs | 7 ------- 1 file changed, 7 deletions(-) diff --git a/src/cargo/core/resolver/mod.rs b/src/cargo/core/resolver/mod.rs index 34225a7aad0..54e8517f4e8 100644 --- a/src/cargo/core/resolver/mod.rs +++ b/src/cargo/core/resolver/mod.rs @@ -831,14 +831,7 @@ fn activate_deps_loop<'a>( } } else { // `activate` changed `cx` and then failed so put things back. - cur = backtrack.cur; cx = backtrack.context_backup; - remaining_deps = backtrack.deps_backup; - remaining_candidates = backtrack.remaining_candidates; - parent = backtrack.parent; - dep = backtrack.dep; - features = backtrack.features; - conflicting_activations = backtrack.conflicting_activations; } } } From d9c97debbbb3dc1afead9b699f07c90628ee3006 Mon Sep 17 00:00:00 2001 From: Eh2406 Date: Fri, 2 Mar 2018 08:49:42 -0500 Subject: [PATCH 3/3] This test should pass if we have tried to `update registry` evan if the command otherwise fails --- tests/testsuite/generate_lockfile.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/testsuite/generate_lockfile.rs b/tests/testsuite/generate_lockfile.rs index efd0c6124ec..8419df1698a 100644 --- a/tests/testsuite/generate_lockfile.rs +++ b/tests/testsuite/generate_lockfile.rs @@ -88,7 +88,7 @@ fn no_index_update() { .build(); assert_that(p.cargo("generate-lockfile"), - execs().with_status(0).with_stdout("") + execs().with_stdout("") .with_stderr_contains(" Updating registry `https://github.com/rust-lang/crates.io-index`")); assert_that(p.cargo("generate-lockfile").masquerade_as_nightly_cargo().arg("-Zno-index-update"),