Hackage and ghc shipped package contents mismatch

Ben Gamari ben at smart-cactus.org
Fri Jan 18 16:10:35 UTC 2019


Moritz Angermann <moritz.angermann at gmail.com> writes:

> Dear friends,
>
> the other day I've run into an issue where I could not build a package.  It turned out that
> the underlying reason was that the packages ghc ships with are not necessarily the same
> as they are on hackage. Ryan was kind enough to open Ticket 16199[1].
>
> My use case is that I reduce the set of packages I use from the package database that ghc
> ships, and build the others myself.  Thus if packages in the package database as shipped
> with ghc do not match the ones found on hackage for the SAME VERSION, I run into issues.
>
> I've since devised a script to compute the difference between packages in GHC and the ones
> on hackage with the same version[2]. 
>
> I've then sat out to compute the differences for ghc8.4 and ghc8.6 using the following
> approach:
>
> for release in ghc-8.4.1-release ghc-8.4.2-release ghc-8.4.3-release ghc-8.4.4-release \
>                ghc-8.6.4-release ghc-8.6.2-release ghc-8.6.3-release; do
>   git checkout $release
>   git reset --hard HEAD && git clean -xffd
>   git submodule update --init --recursive && git clean -xffd
>   ../verify-packages.sh
>   mkdir -p ../$release
>   find package-diffs -not -empty -type f -exec cp {} ../$release \;
> done
>
> I've compiled them[3] for inspection (and because I need to patch my hackage packages to
> match the ones that ghc ships).
>
> I'm sorry to report that I found discrepancies between the package we ship with GHC and
> the ones on haskell for each ghc release in 8.4 and 8.6.  Some changes are minor, such
> as version bumps, as can be represented with revisions on hackage as well.  Other are not
> so minor. The one over which I tripped was transformers-0.5.5.0.  The diff[4] is 20K.
>
This is very concerning.

> I therefore propose that we make sure to only ship packages with GHC that match their
> respective versions on hackage.
>
To be clear, this is already our policy. The problem is that we have
historically had no mechanical checking that this is in fact the case
and synchronizing with upstreams is inevitably a messy process.
Your script will help considerably.

Cheers,

- Ben
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 487 bytes
Desc: not available
URL: <http://mail.haskell.org/pipermail/ghc-devs/attachments/20190118/ac111f5d/attachment.sig>


More information about the ghc-devs mailing list