[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Reproducible builds and GHC interface and profiling files

Dear Jérémy,

Am Samstag, den 08.02.2014, 11:22 +0100 schrieb Jérémy Bobbio:
> Reproducible builds for Debian are very much a work-in-progress [1].
> With David Suárez, we've recently the build+rebuild of a large number of
> package to see how varying time and build path would affect their
> reproducibility.

thanks on your work here. Investigating difference in build output is
very useful.

> Good news is that in the set of 6887 source packages, there were many
> Haskell packages which produced matching binary packages [2]:
> haskell-aeson-pretty, haskell-appar, haskell-asn1-parse,
> haskell-asn1-types, haskell-base64-conduit, haskell-blaze-svg,
> haskell-bmp, haskell-boundedchan, haskell-byteable, haskell-chell-hunit,
> haskell-classy-prelude, haskell-connection, haskell-control-monad-loop,
> haskell-crypto-pubkey, haskell-data-pprint, haskell-devscripts,
> haskell-dual-tree, haskell-errors, haskell-gitlib, haskell-groups,
> haskell-happstack-heist, haskell-hedis, haskell-heist, haskell-hslua,
> haskell-hsx-jmacro, haskell-http-attoparsec, haskell-idna,
> haskell-intern, haskell-intervals, haskell-iproute, haskell-ircbot,
> haskell-jmacro, haskell-mmorph, haskell-monadprompt,
> haskell-monoid-extras, haskell-mueval, haskell-objectname, haskell-ofx,
> haskell-osm, haskell-pipes-parse, haskell-pipes-safe,
> haskell-pipes-zlib, haskell-punycode, haskell-quickcheck-io,
> haskell-readargs, haskell-reform-blaze, haskell-reform-hamlet,
> haskell-reform-happstack, haskell-reform-hsp, haskell-reform,
> haskell-sandi, haskell-simple-reflect, haskell-stringbuilder,
> haskell-stringprep, haskell-tabular, haskell-tasty-hspec,
> haskell-tasty-hunit, haskell-tasty-quickcheck, haskell-tasty-rerun,
> haskell-tensor, haskell-time-compat, haskell-web-plugins,
> haskell-x509-store, haskell-x509, haskell-xmlhtml, haskell-yesod-bin,
> haskell-yesod-default, haskell-yesod-markdown.

That’s not many comparted to the 600 we have... 

> More puzzling are varations in GHC interface (.hi) and profiling (.p_hi)
> files. See for example the `diffp` output of haskell-cipher-des which
> shows both issues:
> http://reproducible.alioth.debian.org/logs-20140126/haskell-cipher-des_0.0.6-1_unstable_build.diffp.gz
> or haskell-setenv which only exhibits the problem with profiling files:
> http://reproducible.alioth.debian.org/logs-20140126/haskell-setenv_0.1.0-2_unstable_build.diffp.gz
> Would you have any idea of what could make these files differ from one
> build to another?

The interface files contain for example the code for functions to be
inlined, and that code can contain unique variable names generated by
the compiler; there might be some randomness involved. The profiling
data files contain even more data, so a higher risk of such data.

Do you have the files somewhere? It would be most useful to compare the
outputs of
$ ghc --show-iface .....hi
and see where exactly the difference comes from. If there is low hanging
fruit, I can probably fix the compiler in that direction.


Joachim "nomeata" Breitner
Debian Developer
  nomeata@debian.org | ICQ# 74513189 | GPG-Keyid: 4743206C
  JID: nomeata@joachim-breitner.de | http://people.debian.org/~nomeata

Attachment: signature.asc
Description: This is a digitally signed message part

Reply to: