-
Notifications
You must be signed in to change notification settings - Fork 28
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
Broken release #231
Comments
probably you're using an old nimble - you need 0.16.2 |
actually this is caused by nim 1.6 |
Btw. even if you decide to drop Nim 1.6 for this package it will still stay broken for us. Even if we try to use the earlier version of this package by specifically pinning those commits, thanks to the fact that there are non-pinned dependencies that has the same changes you introduced here (eq. pinning Chronos dependency) we won't be able to install it. So I guess the only solution is to fork this repo in order to pin the deps into version before your patches. |
Actually, it's not a nim issue - it's indeed a nimble version issue. |
works with nim 1.6 and a recent enough nimble |
@arnetheduck, could we please re-open this issue? For those using the packaged nimble with
Instead, a simple fix to this is to use a more explicit versioning range, eg Without this fix in, we are basically screwed and will be forced to fork quite a few libraries just to update their nimble files, and then need to maintain those forks. How is this acceptable? |
This will become an issue with most, if not all packages quite soon - supporting nimble <0.16.2 and using versioning is simply not possible at scale because that nimble uses a broken (greedy) algorithm for selecting versions - it's not just about parsing the versions but also what happens after - the reason it has worked so far is because we haven't really been using versioning - neither json-rpc nor any packages it depended on had any version constraints to speak of and indeed no releases either - incidentally, this is what enabled codex to do its own thing and manage packages in a different way than the others, because it was at the tail end of the process. As the number of actually versioned packages grow, there will also be a growing number of packages that fail in a complex way, due to ordering of requires and similar issues that you won't be able to solve with a patch. nimbus-build-system already has the features to build a different nimble, and nimble can now also build nim (we've made sure it works with nim 1.6 so that codex can migrate to the new nimble while staying on nim 1.6) - the path forward lies here. If you supply and test a PR, it will be accepted of course as a bridge solution, but this is not sustainable over time and the process will repeat for the whole graph of packages pretty soon. |
an option here is that we tag some random commit earlier in the release history as "0.4.x" - this might allow you to use a constraint on the versions to use whatever it was that got downloaded by nimble before. |
Yes, agreed the lack of versioning has caused a lot of headaches, and it will continue to as versions are added. However, this particular issue doesn't seem to be an issue with adding versioning, it seems to be with using version selector operators that nimble ≤0.13.1 doesn't support. Specifically, it seems that nimble ≤0.13.1 does not support the
Codex is not necessarily the issue for us, as it uses NBS. The issue is with
PR here: #232. Eventually nimble ≤0.13.1 support will be dropped, but in the meantime, using supported selector operators is an easy win imo.
We tried using version 0.4.4 but this also did not work for us, failing with the same error. The assumption is that the |
it's a dying breed - 2 major releases since and no more security updates. but - with this, we're not dropping nim 1.6 support: only old nimble support - upgrading nimble can be done independently of nim (just like in python, people upgrade
incidentally, the next nimble contains fixes for combining packages that use
yeah, this is a good/important point - one has to be careful to apply it only for such packages. I think however that by and large we want to follow semver for our packages given the status quo of there not being a better idea. it's also a tricky balance because "most of the time" even a major version upgrade doesn't really break things more than a "feature addition" might, in nim (due to its module system) - adding an "upper version" constraint can do some harm as well. |
With the
0.5.0
I can not installnim-json-rpc
with Nimble getting:https://github.com/codex-storage/nim-ethers/actions/runs/11573879127/job/32216914275?pr=85
Nim 1.6.20
The text was updated successfully, but these errors were encountered: