libpkgx icon indicating copy to clipboard operation
libpkgx copied to clipboard

versionable dependencies

Open jhheider opened this issue 1 year ago • 2 comments

we've discussed this numerous times, and it makes the dependency solver deeply non-trivial; that said, it does come up in multiple packages:

  • deno.land requires variable rust versions to build depending on the deno version: https://github.com/pkgxdev/pantry/blob/6f7d86673e8c061f119294ca9307c275e9aef860/projects/deno.land/package.yml#L28-L40 [^1]
  • gnupg <2.5 depends on libassuan^2, while 2.5.0 depends on libassuan^3: https://github.com/pkgxdev/pantry/issues/6640 [^2]
  • facebook libraries generally all require being kept in version lockstep[^3]

designing a syntax is the easy part; allowing the solver to work with it is much harder. this is a placeholder until we get there.

[^1]: e.g.: dependencies: rust-lang.org: { '>=1.38<1.40': ^1.56, '<1.38': ~1.38, '>=1.40': ^1.80 } [^2]: dependencies: gnupg.org/libassuan: { '>=2<2.50': ^2, '^2.5': ^3 } [^3]: dependencies: facebook.com/fizz: version # match version exactly

jhheider avatar Aug 09 '24 18:08 jhheider

I kinda feel like the facebook libraries should all be a single package since they don’t work independently.

mxcl avatar Sep 06 '24 11:09 mxcl

it's very possible, except that they don't need to be used together. and some, like watchman, release every week even if their own CI doesn't build a release cleanly (as it hasn't since spring). it's not a great system and their complete unwillingness to maintain the API between weeks is what causes issues.

jhheider avatar Sep 06 '24 14:09 jhheider