-
Notifications
You must be signed in to change notification settings - Fork 47
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
directory-1.3.8.0
violates the Haskell PVP
#147
Comments
@bgamari @hasufell
Any thoughts on which approach to take? |
I feel the specification is not very clear on that matter I personally think that "compiles without code change" is not really what non-breaking or "other" changes from PVP spec demand. Then again, if you consider "Safe" as part of the API, then you could argue different. The spec only implicitly defines "API". |
I agree that the PVP does not mention anything on safe vs. non-safe. While nothing violates the letter of the PVP, certainly going from safe to unsafe violates the spirit of the PVP. |
This would mean filepath itself also needs a major version bump. This is what I initially planned to do, but GHC team said that will create more work for them. |
There is a never ending trail of destruction caused by Safe Haskell. Friends do not let friends use |
This message should go to the haskell-language-server folks, summoning @jneira. The GHC crowd seems rather undecided what to do with Reported upstream to PVP: |
I suggest both Bumping major versions of |
Serokell hackage search for
Will do, seems the most pragmatic course of action. |
Actually, I overlooked
I might have been unjust in my assessment here because I misremembered. HLS only adds |
My understanding is that The issue here seems to be that Thanks everyone for the discussion about this. |
For package |
Are there any outstanding issues that remain here? If not I will close this. Thank you all for the discussions. |
**Description** `copilot-theorem` is failing to compile with GHC 9.6.3. This is because the module `Control.Monad.State` no longer re-exports `Control.Monad`, so the functions `ap`, `forM`, `when`, `liftM` and `liftM2` are not in scope. Another issue is that `System.Directory` can no longer be imported safely. These errors are causing the build to fail on hackage, which uses GHC 9.6.3. **Type** - Bug: Failure to compile with version of dependency. **Additional context** - haskell/directory#147 **Requester** - Ivan Perez **Method to check presence of bug** The following Dockerfile checks whether Copilot can be installed with GHC 9.6, in which case it prints the message Success: ```Dockerfile FROM ubuntu:focal RUN apt-get update RUN apt-get install --yes libz-dev RUN apt-get install --yes git RUN apt-get install --yes wget RUN mkdir -p $HOME/.ghcup/bin RUN wget https://downloads.haskell.org/~ghcup/0.1.17.7/x86_64-linux-ghcup-0.1.17.7 -O $HOME/.ghcup/bin/ghcup RUN chmod a+x $HOME/.ghcup/bin/ghcup ENV PATH=$PATH:/root/.ghcup/bin/ ENV PATH=$PATH:/root/.cabal/bin/ RUN apt-get install --yes curl RUN apt-get install --yes gcc g++ make libgmp3-dev RUN ghcup install ghc 9.6.3 RUN ghcup install cabal 3.4 RUN ghcup set ghc 9.6.3 RUN cabal update SHELL ["/bin/bash", "-c"] CMD git clone $REPO \ && cd $NAME \ && git checkout $COMMIT \ && cabal install --lib copilot**/ \ && echo Success ``` Command (substitute variables based on new path after merge): ``` $ docker run -e "REPO=https://github.com/Copilot-Language/copilot" -e "NAME=copilot" -e "COMMIT=<HASH>" -it copilot-verify-491 ``` **Expected result** Compiling with GHC 9.6 succeeds. Running the above image prints the message Success, indicating that Copilot can be compile with GHC 9.6.3. **Solution implemented** Modify `copilot-theorem` to import `Control.Monad` explicitly, instead of via re-exports from other modules. Modify the module that imports `System.Directory` so that it is marked as trustworthy instead of Safe. **Further notes** None.
From the
directory-1.3.8.0
CHANGELOG:This means that all packages that use
directory < 1.4
andimport safe System.Directory
are broken.In the wild, this looks like this:
Standard action path:
directory-1.3.8.0
on hackagedirectory-1.4
ATTN: @Rufflewind
The text was updated successfully, but these errors were encountered: