-
Notifications
You must be signed in to change notification settings - Fork 696
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
Cabal-3.8.1.0
depends on too recent process-1.6.14
, rendering it unusable with package ghc-9.2.4
and older
#8554
Comments
Cabal-3.8.1.0
depends on the way to new process-1.6.14
, rendering it unusable with package ghc-9.2.4
and olderCabal-3.8.1.0
depends on too recent process-1.6.14
, rendering it unusable with package ghc-9.2.4
and older
Reproducer:
This gives:
I attach the toy project as zip file. |
Reason: haskell/cabal#8554 Cabal-3.8.1.0 does not work with ghc < 9.4 needed by doctest-parallel
@andreasabel: I can't see this bound on https://hackage.haskell.org/package/Cabal nor on master nor 3.8 branch in the repo. And your log says "cabal-3.6.2.0: Could not resolve dependencies". Could you investigate some more? |
Cabal has backwards compatibility obligation w.r.t. GHC the program, which it adheres.I don't know of any promises w.r.t. |
Sorry, wrong button and premature send. So, as it stands, a dependency (if it exists) or constraint that rules out older |
Actually, I can see the bound for process on Hackage when I look inside the .cabal file --- Hackage doesn't display the bound on the main page, because of the condition. I'm still puzzled where this bound has been removed on 3.8 branch. Blame shows nothing. |
OK, I've found it: #8342 So, it seems this is fixed already, just not released. Apologies for any inconvenience. |
Apparently, |
@ulysses4ever wrote:
Does @Mikolaj wrote:
I also stumbled over this; blame goes to how hackage-server displays conditional dependencies, simply taking the union. The union is bogus, of course, as would be the intersection, the only correct display would be it is complicated.
Regrettably, yes. It only shows you how each line that survived evolution came to be... The links that died out are missing. |
Would a release of the following PR, say as |
Alternatively, I could try removing the bound via a revision on Hackage, but the bound was there for a reason (and it got bumped even higher before it got moved to cabal-install). So I'd need to also add it to cabal-install instead. That's a quick and dirty solution. |
@andreasabel for just making things work for hackage server, we can toss allow-older into the cabal.project file :-) |
Revisions are subject to some limits, e.g. one cannot add or remove conditionals. Of course, changing the conditional dependency to |
@gbaz wrote:
Thanks for the hint, this workaround works in any case locally. Not sure if such settings are taken into account by |
The answer to this is negative, unfortunately, |
Yes, I remember having to edit haskell-ci yaml by hand when adding GHC HEAD to some package's CI. |
hmm maybe haskell-ci should be improved to allow custom cabal.project config? |
haskell-ci doesn't depend on ghc. And the decision to not take into account project files was deliberate afaiu (e.g. it's supposed to test the workflow where you download the package from Hackage). |
This commit makes `hackage-server` compile with Cabal-3.8, but does not add any Cabal-3.8 specific features. Adds `allow-older: Cabal:process` to solve a conflict arising from these two dependency chains: - Cabal-3.8.1.0 -> process >= 1.6.14 - Cabal-3.8.1.0 -> doctest-parallel -> ghc -> process For `ghc < 9.4`, this means `process < 1.6.14`, and the `ghc` package is not upgradeable, so the only solution is to override `Cabal-3.8.1.0`s request for this very recent version of `process`. The conflict is discussed in haskell/cabal#8554. Likely, the next release of `Cabal-3.8` will drop the request for a specific `process` library and we can drop the `allow-older` workaround, and also reenable the tests on Haskell-CI for GHC < 9.4 (see `cabal.haskell-ci`).
yeah and maybe it is a good default but it makes haskell-ci not usable in projects like cabal or hls |
Yes, this is a stricter CI scenario than building from the repo. I come to appreciate it. It also prevent situations where a maintainer may think that adding dependency relaxations to |
Suggested course of action (#8342 (comment)):
|
Just to note that today's discussion suggests "relax the constraint in Cabal, tighten the constraint in cabal-install, just revisions, no releases necessary" |
Indeed, see my summary at #8653 (comment). |
This is now fixed (hopefully). I made the respective Hackage revisions, further info at: |
Wow, so it was possible after all? Is it confirmed in the field by now? E.g., do the compilations that failed previously in the wild succeed now in the wild? |
Well, at least for my use case I was successful: Originally, I didn't think one could revise |
Splendid! The dev chats turn out useful in many way. |
Lifted from #8489 (comment):
Cabal-3.8.1.0
comes with a constraintprocess >= 1.6.14
(released 2022) forghc >= 8.2
(released 2017!). This looks non-sensical to me. It makescabal
trying to reinstall theghc
package, which is bound to fail. In the wild:Blame for the
process >= 1.6.14
constraint goes to 95cf762. (Ping @robx.)This extra constraint seems to have been removed from
master
in the meantime.However, it seems like a release of
Cabal-3.8
is warranted to renderCabal-3.8
usable with the preinstalledghc
package below9.4
.The text was updated successfully, but these errors were encountered: