Skip to content
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

defer build-tools-depends choices as well as setup choices #7532

Merged
merged 2 commits into from
Aug 11, 2021

Conversation

gbaz
Copy link
Collaborator

@gbaz gbaz commented Aug 11, 2021

This is effectively a one line change, modulo renaming, that seems to fully resolve #7472 giving a speedup of roughly 80% on the tricky case detailed there (cardano-node). Arguably this was the single key change to resolve the issue all along (although the other fixes resulted in improvements along the way anyway). All it does is extend the existing solver pass that defers solving setup depends until top-level goals are solved to also defer build-tool-depends goals until top level goals are solved. This means that all the constraints at the top level (on versions, flags, stanzas, etc) are applied first and only then are attempts made to build the less-constrained qualified goals, significantly streamlining the production of valid build plans.

This change is in line with how setup depends are already constrained, so its simply extending an already tested and correct strategy to another instance of the same problem. Also, since it just reorders goals, it doesn't change the solution space. As such, hopefully it can be reviewed and merged quickly.

@gbaz
Copy link
Collaborator Author

gbaz commented Aug 11, 2021

whoops, accidentally pushed directly to master. i'm confident enough that i'm not going to revert, but just link the patch for posterity. sorry about bypassing the process.

aae998e

@gbaz gbaz merged commit f8ff25e into master Aug 11, 2021
@Mikolaj
Copy link
Member

Mikolaj commented Aug 11, 2021

Wow, congratulations. This is 80% of the real world case, not 80% of the reproduction example for the issue?

@michaelpj
Copy link
Collaborator

Amazing!

@newhoggy
Copy link

Really excited for this. Thanks so much!

@emilypi
Copy link
Member

emilypi commented Aug 12, 2021

@Mergifyio backport 3.6

@mergify
Copy link
Contributor

mergify bot commented Aug 12, 2021

Command backport 3.6: success

Backports have been created

@emilypi emilypi deleted the gb/defer-exe-choices branch August 13, 2021 00:37
mergify bot added a commit that referenced this pull request Aug 13, 2021
…7532) (#7538)

* defer build-tools-depends choices as well as setup choices

(cherry picked from commit 3ac512e)

* Update Preference.hs

* Update Solver.hs

Co-authored-by: Gershom Bazerman <gershom@arista.com>
Co-authored-by: gbaz <gershomb@gmail.com>
Co-authored-by: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com>
@andreasabel andreasabel added cabal-install: solver re: build-tool Concerning `build-tools` and `build-tool-depends` labels Nov 8, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
cabal-install: solver re: build-tool Concerning `build-tools` and `build-tool-depends`
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Slow solving with build-tool-depends on local packages with tests
6 participants