-
Notifications
You must be signed in to change notification settings - Fork 842
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
Stack docker does not work with GHC HEAD (ghc-pkg dump
format change)
#1509
Comments
@luigy points out in #haskell-stack that those hashes which have disappeared are used for caching, which may be sad if they turn out to have gone. |
I've written a failing test case for this behaviour. A bit more stuck on how to fix it. |
Now an actual PR: #1510 |
hmm, so it looks like this is handled by stack here but I wonder if this was intentional? cc @23Skidoo @dan-t |
I think this was due to one of @ezyang's changes. |
It could be that it always has put spaces between the ids, up to a maximum line length, except with the hashes on the end it always exceeded the maximum line line length... |
@CRogers Yes, that would be my guess. Stack should assume whitespace separated. The hash removal was intentional (hashes in general haven't gone away from IPIDs, but I removed them from GHC's boot libraries, on the basis that they are the "one and only" libraries of this type for any GHC install), but maybe I can add it back. |
@ezyang I'd be interested in what the Stack devs say, but I think I would prefer consistency across IPIDs (either they all have hashes or non of them do). |
In 9ee38c8 I've made stack accept space separated build dependencies, and it now passes the test added in @CRogers PR. Leaving this ticket open for the discussion of the other change to the I lean towards preferring consistency as well. However, if we can be reasonably sure that anything that expects an IPID will also accept these boot library versions, then I suppose it's not necessary. For example, here's how
|
GHC 8.0 definitely will accept I looked at the code in GHC, though, and it seems like the reason we don't make some sort of random hash is partially because GHC's build system may still have some (latent) bugs in it. I'll try to take a closer look. |
Fixed |
I've made a docker image of the optimised release build of GHC HEAD (which I intend to trigger/push nightly builds of) but it sadly doesn't work with stack. It seems that
ghc-pkg
lists dependencies in a different format than stack is expecting.Steps to reproduce:
git clone https://gist.github.com/85ad65c454753daade55.git
)stack --skip-ghc-check -v build
Expected:
Actual:
The version of stack I'm running:
I'm on OS X running with docker-machine and docker 1.9.1. The command fails with this output:
From what I can tell, the command
ghc-pkg --global --no-user-package-db dump --expand-pkgroot
is returning dependency information in an unexpected format. The format for dependencies from has changed in GHC HEAD. In 7.10 they looked like this:In HEAD they now look like this:
Here are the full outputs for 7.10 and HEAD.
It seems weird to me that this change has happened, especially since the hashes have also disappeared from the package ids. Is this a GHC bug or expected behaviour? Either way it would be good to fix this so people can play with nightlies (really to try the new kind equality stuff) - this is the last part preventing me making an automated build for GHC HEAD nightlies that's easy to use. It will also present itself as a problem when GHC 8.0 is released in the coming month or so.
The text was updated successfully, but these errors were encountered: