-
-
Notifications
You must be signed in to change notification settings - Fork 78
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
Look into using mancoosi research for versioning and dependency solving #290
Comments
The problem is non-haxelib package like git #238 which we can't reason about since we don't have their haxelib.json. That aside we'd need a cache of all the lib/version to do that in the client, otherwise that'd use a lot of bandwidth. |
OPAM deals with these via separate
Yeah, that how it's done in many package managers like APT, OPAM, Homebrew. Another option would be to use to use could-based dependency solving (there are solver farms even: http://cudf-solvers.irill.org/index.html) |
The pinning mechanism doesn't play well with our planned git dependencies however, in fact it's similar to what we have now with devmode vcs checkouts :) |
That's taking into account the dev versions, or any lib that's installed locally,
I think we have, luckily, a simpler problem since we can install multiple versions of the same library, so we may not need a state of the art sat solver or something. |
Hmm, you're right about that |
I did a small code using the constraint programming solver or-tools Here the example is wanting to install ufront 2.0.0, the file is constructed by recursively listing a library version and its dependencies, or all versions if no version is specified. Output:
All are fixed but tink_core, which was set to 1.0.0-rc.11 by the solver. Current haxelib would also install 1.0.0-rc.12 as well because tink_macro as We shouldn't use as is but that'd be a cool feature to have, Also the solver can easily use range (>=1.2.0 && <1.3.0) instead of a specific version as dependency, or any set (1.1.0 || (>=1.2.0 && <1.3.0) || 1.5.3 || >=1.6.0) actually. |
As noted by @ousado, OCaml's OPAM uses pretty smart dependency solver based on Mancoosi scientific research project and we can look into using it for managing haxelib repositories.
The text was updated successfully, but these errors were encountered: