-
-
Notifications
You must be signed in to change notification settings - Fork 99
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
Use Molinillo to resolve dependencies #322
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Can we remove all the remaining commented out debug code?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
That's incredible. Integration is smooth, and you got all tests passing without tweaking any of them!
I don't have much to say. Maybe just do some cleanup. For example drop the SAT solver which is now dead code. It's not a particularly elegant or efficient one, and we can still find it in the Git history. Also, a specialized solver will always beat a generic SAT solver.
Maybe tag a release for molinillo, too.
Since nobody mentioned it yet it's probably not a concern, but... is it okay that shards now has a dependency? I'm thinking of how we distribute Crystal, distributions now must install an old shards binary as part of the process. |
An alternative to requiring an old shards binary is to provide release tarballs for shards that vendor in the dependencies. Basically tar up the result, minus any |
@Sija @RX14 i just did the requested changes |
Regarding the shard dependency, last resort would be checking out molinillo code into |
@ysbaddaden I was thinking we could tag molinillo once we did enough testing |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I am happy with the current state. Manual checkout can work we can have a nightlies of 0.34 to use this already and encourage early testing. Before releasing 0.34 we can tag molinillo and shards 0.10 if everything goes fine.
I was also happy to use git-submodules but as long as it is a single dependency there is no problem to do the checkout.
Maybe we can have a make lib/molinillo
target to do the checkout, specially for package maintainers.
I thought there was class that you wanted to move from shards to molinillo @waj. I don't distinguish or recall what happen with that.
The other story I remember we discussed was how theck if the lock was valid for the current spec in the case of a ref in lock and branch in spec. I am missing if there was a rule to check for reachability of the lock from the branch to decide whether is valid or not. If so, maybe some comment around is missing :-)
Or add this Ruby-based bootstrap that will read |
I'd rather just vendor or move the molinillo resolver into shards. It shouldn't depend on itself. You loose the benefits of having it be a shard, but, it's probably not worth the extra complexity. |
Also @ysbaddaden, that bootstrap is brittle since github refuses to allow you to download any sha1 which is not referred to by a git ref. For a bootstrap you probably have to A shards bootstrap doesn't have to not depend on crystal, it can require the whole of shards except the resolver. |
I just merged this before it starts diverging from master too much. We can continue the discussion about how to integrate better with the molinillo shard. |
I think that distributing a tarball with |
Another option is to use git subtree / submodule to include |
I am trying to build the latest
Could you please clarify what is the correct set of the build instructions? |
@anatol It seems you haven't run |
You need to install molinillo into |
We should add a bootstrap target to to the makefile so you don't need shards to compile shards. |
@anatol for the PKGBUILD, downloading |
I've added a bootstrap to #344 |
This PR integrates a port of the Molinillo dependency solver.
I tried to keep the PR minimal, maintaining the semantics of the current commands. Only the error reporting is different.
Fixes #303