-
Notifications
You must be signed in to change notification settings - Fork 538
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
[NetCDF] Reorganise to support multiple Julia versions #2402
Conversation
The PR fails with:
7.73 is the version number that I see in |
If you want to support both Julia 1.5- and 1.6+, you have to do something more maintainable, similar to, for example, Regarding the trouble with installing the dependencies, if you don't specify a number you should automatically get the right versions for Julia v1.6. Hopefully we'll have soon something more user-friendly |
To be clear, this needs to:
|
From my perspective, it is OK if a new version of I am hesitant to disconnect the version number of I am wondering if But if having a version 400.700.400 is the only option, then that's fine for me. By the way, Debian version numbers uses an epoch number: |
If we continue with the current version scheme, merging this PR as it is would create the version The matter of fact is that Pkg and the registry cannot handle build versions nicely, we can only meaningfully use the three numbers
I also love using the upstream version number, but at some point we must face reality and admit that we don't have enough version numbers to keep going the upstream version and our multiple rebuilds. Also, end users shouldn't care too much about JLL packages most of the time. I don't like having a lookup table to find the upstream version, but the "100x trick" kind of give you that information. If you have other ideas I'd be very happy to listen to them, but the version number must change |
Just got sniped by @giordano, but posting anyway :)
This is fine by me as well, although a bit unfortunate. For GDAL & Co I decided not to do this, because it would cause a bunch of packages to require 1.6 if they'd want the latest features, and it isn't even out yet. And for 1.7 it may be the same story.
Indeed it would prevent installation, but it is incompatible with keeping the same version number unfortunately. It would need at least a minor version bump if I understand correctly, so they would disconnect anyway. I was also hestitant about multiplying the version numbers by 100, as I just mentioned here. Though it is a system that at least makes it easy to recognize the upstream version, and provides a way around the issues we are dealing with. |
To be clear, I'm not married to the 100x versioning scheme, but it does have a few advantages. I'm eager to listen to alternative versioning schemes, but in any case the version number must change, unfortunately |
Thank you very much for your explanations. To me it seems that we are getting hit by the inadequacy of semantic versioning for binary package. |
If possible I'd like to have a setup such that we can keep bringing out new builds for julia 1.3+ without too much effort. Because looking at #2421 it seems we'd face the same issue at the next point release. Though I don't want to hold this up either. @Alexander-Barth, is there a reason that it still says [WIP] in the title?
@giordano based on this example I don't quite see how it works. We don't need to take a build dependency on libjulia_jll like libpolymake, right? And looking at the polymake_jll release, I only see a single release that requires julia = 1.0 in the compat. If we have 3 build_tarballs.jl, do they all get built and tagged at the same time? Say if for NetCDF_jll we would want to simultaneously maintain builds for different minor julia releases upstream_version = v"4.7.4"
version = v"400.700.400"
julia_compat="1.0" # really, 1.3, but 1.0 to make them installable
Dependency("LibCURL_jll", v"7.71.1")
Dependency("LibSSH2_jll", v"1.9.0")
Dependency("MbedTLS_jll", v"2.16.8")
Dependency("nghttp2_jll", v"1.40.0")
upstream_version = v"4.7.4"
version = v"400.701.400" # higher minor version, for higher minor julia compat
julia_compat="1.6"
Dependency("LibCURL_jll")
Dependency("LibSSH2_jll")
Dependency("MbedTLS_jll")
Dependency("nghttp2_jll") Is this about what you had in mind? Since the minor version of the JLL is higher for the 1.6 release, it will pick that one. In downstream packages, we'd put the compat on v"400.700", and if we'd wrap a future NetCDF C API of 4.8, we'd bump it to v"400.800". It seems for many packages in Yggdrasil, like XZ, there is simply one build_tarballs.jl with julia_compat="1.6", and the latest releases are being built only for the latest julia. That is the same approach used here now, and one that currently seems simpler. But if I build a new minor release, and want to directly wrap the new functions in this version in the downstream julia package, I have to require julia 1.6 there, and for relatively foundational packages like NCDatasets/NetCDF/Proj4/GDAL, I'd like to avoid that if possible. |
Does this sound good? We have |
Awesome, that looks pretty good, and answers my questions, thanks. It looks like the old julia versions are having a party together |
This is great! Thank you very much. |
Ok, I'm going to merge this, but will pause registration in the general registry to allow you doing some tests, ok? |
Actually, I think I'll remove the recipe for Julia v1.6 from this PR and will add in a separate PR (also to avoid conflicts in the PR to General, which are a mess to handle manually) |
@Alexander-Barth @visr remember that now in your packages you need to allow the new versions 400.701.400 and 400.702.400 of NetCDF_jll |
This PR aims to address #2401. However,
curl
(a standard library in julia 1.6) cannot be found by the build process.Any ideas are most welcome :-)