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

Some packages fail to build on amd64 with newer binutils (affects ghc6 and ghc)



Hi,

I came across a problem when uploading some rebuilds for Natty and
discovered that it affects Debian too.

I haven't had time to narrow down the testcase or determine how many
packages are affected yet.

Some packages fail to build with the following error. I think it's
related to a newer binutils, as I found a similar OCaml bug[0] ([1]
might be one to watch too).

  /tmp/ghc3974_0/ghc3974_0.s:12674:0:
     Error: .size expression does not evaluate to a constant

I've attached a file from haskell-happstack-util, where I've seen this
failure. You can repro it with an up-to-date sid and ghc from
experimental, by

  $ ghc --make MD5.hs

There's also the complete (s)build log attached too.

I guess we should determine if it's a GHC bug exposed by binutils, or
a binutils bug.

Cheers,
Iain

[0] http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=617404
[1] http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=618106
--- Begin Message ---
sbuild (Debian sbuild) 0.60.9 (14 Feb 2011) on chicken

╔══════════════════════════════════════════════════════════════════════════════╗
║ haskell-happstack-util 0.5.0.2-2build2 (amd64)             20 Mar 2011 17:45 ║
╚══════════════════════════════════════════════════════════════════════════════╝

Package: haskell-happstack-util
Version: 0.5.0.2-2build2
Source Version: 0.5.0.2-2build2
Architecture: amd64
Ign http://localhost sid InRelease
Hit http://localhost sid Release.gpg
Hit http://localhost sid Release
Hit http://localhost sid/main Sources/DiffIndex
Hit http://localhost sid/non-free Sources/DiffIndex
Hit http://localhost sid/contrib Sources/DiffIndex
Hit http://localhost sid/main amd64 Packages/DiffIndex
Hit http://localhost sid/non-free amd64 Packages/DiffIndex
Hit http://localhost sid/contrib amd64 Packages/DiffIndex
Ign http://localhost sid/contrib TranslationIndex
Hit http://localhost sid/main TranslationIndex
Ign http://localhost sid/non-free TranslationIndex
Ign http://localhost sid/contrib Translation-en
Ign http://localhost sid/non-free Translation-en
Reading package lists...
Reading package lists...
Building dependency tree...
Reading state information...
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.

┌──────────────────────────────────────────────────────────────────────────────┐
│ Fetch source files                                                           │
└──────────────────────────────────────────────────────────────────────────────┘


Local sources
─────────────

haskell-happstack-util_0.5.0.2-2build2.dsc exists in .; copying to chroot

Check arch
──────────


┌──────────────────────────────────────────────────────────────────────────────┐
│ Install core build dependencies (internal resolver)                          │
└──────────────────────────────────────────────────────────────────────────────┘

Build-Depends: build-essential, fakeroot
Checking for already installed dependencies...
build-essential: already installed (11.5)
fakeroot: already installed (1.14.5-2)
Checking for dependency conflicts...
Installing positive dependencies: 
Reading package lists...
Building dependency tree...
Reading state information...
The following packages were automatically installed and are no longer required:
  libppl7 libppl-c2
Use 'apt-get autoremove' to remove them.
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
Removing negative dependencies: 
Reading package lists...
Building dependency tree...
Reading state information...
The following packages were automatically installed and are no longer required:
  libppl7 libppl-c2
Use 'apt-get autoremove' to remove them.
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
Checking correctness of dependencies...

┌──────────────────────────────────────────────────────────────────────────────┐
│ Install haskell-happstack-util build dependencies (internal resolver)        │
└──────────────────────────────────────────────────────────────────────────────┘

Build-Depends: base-files, base-passwd, bash, coreutils, dash, debianutils, diffutils, dpkg, e2fsprogs, findutils, grep, gzip, hostname, ncurses-base, ncurses-bin, perl-base, sed, login, sysvinit-utils, sysvinit, tar, bsdutils, mount, util-linux, libc6-dev | libc-dev, gcc (>= 4:4.4.3), g++ (>= 4:4.4.3), make, dpkg-dev (>= 1.13.5), debhelper (>= 7), haskell-devscripts (>= 0.7), cdbs, ghc6, ghc6-prof, libghc6-mtl-dev, libghc6-mtl-prof, libghc6-smtpclient-dev, libghc6-smtpclient-prof, libghc6-network-dev, libghc6-network-prof, libghc6-parsec3-dev, libghc6-parsec3-prof, libghc6-strict-concurrency-dev, libghc6-strict-concurrency-prof, libghc6-unix-compat-dev, libghc6-unix-compat-prof, libghc6-hslogger-dev, libghc6-hslogger-prof, ghc6-doc, libghc6-mtl-doc, libghc6-smtpclient-doc, libghc6-network-doc, libghc6-parsec3-doc, libghc6-strict-concurrency-doc, libghc6-unix-compat-doc, libghc6-hslogger-doc
Checking for already installed dependencies...
base-files: already installed (6.1)
base-passwd: already installed (3.5.22)
bash: already installed (4.1-3)
coreutils: already installed (8.5-1)
dash: already installed (0.5.5.1-7.4)
debianutils: already installed (3.4.4)
diffutils: already installed (1:3.0-1)
dpkg: already installed (1.15.8.10)
e2fsprogs: already installed (1.41.12-2)
findutils: already installed (4.4.2-1+b1)
grep: already installed (2.6.3-3)
gzip: already installed (1.3.12-9)
hostname: already installed (3.06)
ncurses-base: already installed (5.8+20110307-1)
ncurses-bin: already installed (5.8+20110307-1)
perl-base: already installed (5.10.1-18)
sed: already installed (4.2.1-9)
login: already installed (1:4.1.4.2+svn3283-3)
sysvinit-utils: already installed (2.88dsf-13.1)
sysvinit: already installed (2.88dsf-13.1)
tar: already installed (1.25-3)
bsdutils: already installed (1:2.17.2-9.1)
mount: already installed (2.17.2-9.1)
util-linux: already installed (2.17.2-9.1)
libc6-dev: already installed (2.11.2-13)
gcc: already installed (4:4.5.2-2 >= 4:4.4.3 is satisfied)
g++: already installed (4:4.5.2-2 >= 4:4.4.3 is satisfied)
make: already installed (3.81-8)
dpkg-dev: already installed (1.15.8.10 >= 1.13.5 is satisfied)
debhelper: missing
Using default version 8.1.2
haskell-devscripts: missing
Using default version 0.7.12
cdbs: missing
ghc6: missing
ghc6-prof: missing
libghc6-mtl-dev: missing
libghc6-mtl-prof: missing
libghc6-smtpclient-dev: missing
libghc6-smtpclient-prof: missing
libghc6-network-dev: missing
libghc6-network-prof: missing
libghc6-parsec3-dev: missing
libghc6-parsec3-prof: missing
libghc6-strict-concurrency-dev: missing
libghc6-strict-concurrency-prof: missing
libghc6-unix-compat-dev: missing
libghc6-unix-compat-prof: missing
libghc6-hslogger-dev: missing
libghc6-hslogger-prof: missing
ghc6-doc: missing
libghc6-mtl-doc: missing
libghc6-smtpclient-doc: missing
libghc6-network-doc: missing
libghc6-parsec3-doc: missing
libghc6-strict-concurrency-doc: missing
libghc6-unix-compat-doc: missing
libghc6-hslogger-doc: missing
Checking for dependency conflicts...
Installing positive dependencies: debhelper haskell-devscripts cdbs ghc6 ghc6-prof libghc6-mtl-dev libghc6-mtl-prof libghc6-smtpclient-dev libghc6-smtpclient-prof libghc6-network-dev libghc6-network-prof libghc6-parsec3-dev libghc6-parsec3-prof libghc6-strict-concurrency-dev libghc6-strict-concurrency-prof libghc6-unix-compat-dev libghc6-unix-compat-prof libghc6-hslogger-dev libghc6-hslogger-prof ghc6-doc libghc6-mtl-doc libghc6-smtpclient-doc libghc6-network-doc libghc6-parsec3-doc libghc6-strict-concurrency-doc libghc6-unix-compat-doc libghc6-hslogger-doc
Reading package lists...
Building dependency tree...
Reading state information...
The following packages were automatically installed and are no longer required:
  libppl7 libppl-c2
Use 'apt-get autoremove' to remove them.
The following extra packages will be installed:
  bsdmainutils dctrl-tools file gettext gettext-base groff-base hscolour
  html-xml-utils html2text intltool-debian libbsd-dev libbsd0 libcroco3
  libffi-dev libffi5 libghc6-deepseq-dev libghc6-deepseq-prof
  libghc6-hsemail-dev libghc6-hsemail-prof libghc6-parallel-dev
  libghc6-parallel-prof libghc6-parsec2-dev libghc6-parsec2-prof libglib2.0-0
  libgmp10-dev libmagic1 libpcre3 libpipeline1 libunistring0 libxml2 man-db
  po-debconf xutils-dev
Suggested packages:
  wamerican wordlist whois vacation doc-base debtags dh-make gettext-doc
  haskell-doc groff libghc6-deepseq-doc libghc6-hsemail-doc
  libghc6-parallel-doc libghc6-parsec2-doc libgmp10-doc libmpfr-dev less
  www-browser libmail-box-perl
Recommended packages:
  autotools-dev curl wget lynx-cur autopoint libglib2.0-data shared-mime-info
  xml-core libmail-sendmail-perl
The following NEW packages will be installed:
  bsdmainutils cdbs dctrl-tools debhelper file gettext gettext-base ghc6
  ghc6-doc ghc6-prof groff-base haskell-devscripts hscolour html-xml-utils
  html2text intltool-debian libbsd-dev libbsd0 libcroco3 libffi-dev libffi5
  libghc6-deepseq-dev libghc6-deepseq-prof libghc6-hsemail-dev
  libghc6-hsemail-prof libghc6-hslogger-dev libghc6-hslogger-doc
  libghc6-hslogger-prof libghc6-mtl-dev libghc6-mtl-doc libghc6-mtl-prof
  libghc6-network-dev libghc6-network-doc libghc6-network-prof
  libghc6-parallel-dev libghc6-parallel-prof libghc6-parsec2-dev
  libghc6-parsec2-prof libghc6-parsec3-dev libghc6-parsec3-doc
  libghc6-parsec3-prof libghc6-smtpclient-dev libghc6-smtpclient-doc
  libghc6-smtpclient-prof libghc6-strict-concurrency-dev
  libghc6-strict-concurrency-doc libghc6-strict-concurrency-prof
  libghc6-unix-compat-dev libghc6-unix-compat-doc libghc6-unix-compat-prof
  libglib2.0-0 libgmp10-dev libmagic1 libpcre3 libpipeline1 libunistring0
  libxml2 man-db po-debconf xutils-dev
0 upgraded, 60 newly installed, 0 to remove and 0 not upgraded.
Need to get 133 MB of archives.
After this operation, 818 MB of additional disk space will be used.
Get:1 http://localhost/debian/ sid/main bsdmainutils amd64 8.2.2 [208 kB]
Get:2 http://localhost/debian/ sid/main groff-base amd64 1.21-4 [1129 kB]
Get:3 http://localhost/debian/ sid/main libpipeline1 amd64 1.2.0-1 [38.3 kB]
Get:4 http://localhost/debian/ sid/main man-db amd64 2.5.9-4 [1042 kB]
Get:5 http://localhost/debian/ sid/main libmagic1 amd64 5.04-5 [234 kB]
Get:6 http://localhost/debian/ sid/main file amd64 5.04-5 [49.7 kB]
Get:7 http://localhost/debian/ sid/main gettext-base amd64 0.18.1.1-3 [153 kB]
Get:8 http://localhost/debian/ sid/main libpcre3 amd64 8.12-3 [258 kB]
Get:9 http://localhost/debian/ sid/main libxml2 amd64 2.7.8.dfsg-2 [873 kB]
Get:10 http://localhost/debian/ sid/main html2text amd64 1.3.2a-15 [103 kB]
Get:11 http://localhost/debian/ sid/main libglib2.0-0 amd64 2.28.2-1 [1611 kB]
Get:12 http://localhost/debian/ sid/main libcroco3 amd64 0.6.2-1 [125 kB]
Get:13 http://localhost/debian/ sid/main libunistring0 amd64 0.9.3-3 [437 kB]
Get:14 http://localhost/debian/ sid/main gettext amd64 0.18.1.1-3 [2076 kB]
Get:15 http://localhost/debian/ sid/main intltool-debian amd64 0.35.0+20060710.1 [30.8 kB]
Get:16 http://localhost/debian/ sid/main po-debconf amd64 1.0.16+nmu1 [223 kB]
Get:17 http://localhost/debian/ sid/main debhelper amd64 8.1.2 [553 kB]
Get:18 http://localhost/debian/ sid/main cdbs amd64 0.4.92 [1268 kB]
Get:19 http://localhost/debian/ sid/main dctrl-tools amd64 2.18 [130 kB]
Get:20 http://localhost/debian/ sid/main libgmp10-dev amd64 2:5.0.1+dfsg-6 [815 kB]
Get:21 http://localhost/debian/ sid/main libffi5 amd64 3.0.9-3 [20.1 kB]
Get:22 http://localhost/debian/ sid/main libffi-dev amd64 3.0.9-3 [102 kB]
Get:23 http://localhost/debian/ sid/main libbsd0 amd64 0.2.0-1 [41.9 kB]
Get:24 http://localhost/debian/ sid/main libbsd-dev amd64 0.2.0-1 [95.1 kB]
Get:25 http://localhost/debian/ sid/main ghc6 amd64 6.12.1-13 [68.9 MB]
Get:26 http://localhost/debian/ sid/main ghc6-doc amd64 6.12.1-13 [8351 kB]
Get:27 http://localhost/debian/ sid/main ghc6-prof amd64 6.12.1-13 [37.8 MB]
Get:28 http://localhost/debian/ sid/main xutils-dev amd64 1:7.6+2 [341 kB]
Get:29 http://localhost/debian/ sid/main html-xml-utils amd64 5.9-1 [534 kB]
Get:30 http://localhost/debian/ sid/main hscolour amd64 1.16-1 [279 kB]
Get:31 http://localhost/debian/ sid/main haskell-devscripts amd64 0.7.12 [26.9 kB]
Get:32 http://localhost/debian/ sid/main libghc6-deepseq-dev amd64 1.1.0.0-2 [24.7 kB]
Get:33 http://localhost/debian/ sid/main libghc6-deepseq-prof amd64 1.1.0.0-2 [23.7 kB]
Get:34 http://localhost/debian/ sid/main libghc6-mtl-dev amd64 1.1.0.2-10+b1 [209 kB]
Get:35 http://localhost/debian/ sid/main libghc6-parsec2-dev amd64 2.1.0.1-2+b1 [217 kB]
Get:36 http://localhost/debian/ sid/main libghc6-hsemail-dev amd64 1.6-1 [492 kB]
Get:37 http://localhost/debian/ sid/main libghc6-mtl-prof amd64 1.1.0.2-10+b1 [242 kB]
Get:38 http://localhost/debian/ sid/main libghc6-parsec2-prof amd64 2.1.0.1-2+b1 [232 kB]
Get:39 http://localhost/debian/ sid/main libghc6-hsemail-prof amd64 1.6-1 [468 kB]
Get:40 http://localhost/debian/ sid/main libghc6-network-dev amd64 2.2.1.7-1+b1 [513 kB]
Get:41 http://localhost/debian/ sid/main libghc6-hslogger-dev amd64 1.0.9-4 [145 kB]
Get:42 http://localhost/debian/ sid/main libghc6-hslogger-doc amd64 1.0.9-4 [56.8 kB]
Get:43 http://localhost/debian/ sid/main libghc6-network-prof amd64 2.2.1.7-1+b1 [474 kB]
Get:44 http://localhost/debian/ sid/main libghc6-hslogger-prof amd64 1.0.9-4 [131 kB]
Get:45 http://localhost/debian/ sid/main libghc6-mtl-doc amd64 1.1.0.2-10 [78.0 kB]
Get:46 http://localhost/debian/ sid/main libghc6-network-doc amd64 2.2.1.7-1 [121 kB]
Get:47 http://localhost/debian/ sid/main libghc6-parallel-dev amd64 2.2.0.1-1 [31.9 kB]
Get:48 http://localhost/debian/ sid/main libghc6-parallel-prof amd64 2.2.0.1-1 [27.0 kB]
Get:49 http://localhost/debian/ sid/main libghc6-parsec3-dev amd64 3.1.0-1 [339 kB]
Get:50 http://localhost/debian/ sid/main libghc6-parsec3-doc amd64 3.1.0-1 [118 kB]
Get:51 http://localhost/debian/ sid/main libghc6-parsec3-prof amd64 3.1.0-1 [422 kB]
Get:52 http://localhost/debian/ sid/main libghc6-smtpclient-dev amd64 1.0.2-1 [69.1 kB]
Get:53 http://localhost/debian/ sid/main libghc6-smtpclient-doc amd64 1.0.2-1 [27.8 kB]
Get:54 http://localhost/debian/ sid/main libghc6-smtpclient-prof amd64 1.0.2-1 [69.9 kB]
Get:55 http://localhost/debian/ sid/main libghc6-strict-concurrency-dev amd64 0.2.3-1 [29.1 kB]
Get:56 http://localhost/debian/ sid/main libghc6-strict-concurrency-doc amd64 0.2.3-1 [18.0 kB]
Get:57 http://localhost/debian/ sid/main libghc6-strict-concurrency-prof amd64 0.2.3-1 [27.3 kB]
Get:58 http://localhost/debian/ sid/main libghc6-unix-compat-dev amd64 0.1.2.1-1 [10.6 kB]
Get:59 http://localhost/debian/ sid/main libghc6-unix-compat-doc amd64 0.1.2.1-1 [23.1 kB]
Get:60 http://localhost/debian/ sid/main libghc6-unix-compat-prof amd64 0.1.2.1-1 [8082 B]

Extracting templates from packages: 50%
Extracting templates from packages: 100%
Preconfiguring packages ...
Fetched 133 MB in 13s (9685 kB/s)
Selecting previously deselected package bsdmainutils.
(Reading database ... 11325 files and directories currently installed.)
Unpacking bsdmainutils (from .../bsdmainutils_8.2.2_amd64.deb) ...
Selecting previously deselected package groff-base.
Unpacking groff-base (from .../groff-base_1.21-4_amd64.deb) ...
Selecting previously deselected package libpipeline1.
Unpacking libpipeline1 (from .../libpipeline1_1.2.0-1_amd64.deb) ...
Selecting previously deselected package man-db.
Unpacking man-db (from .../man-db_2.5.9-4_amd64.deb) ...
Selecting previously deselected package libmagic1.
Unpacking libmagic1 (from .../libmagic1_5.04-5_amd64.deb) ...
Selecting previously deselected package file.
Unpacking file (from .../archives/file_5.04-5_amd64.deb) ...
Selecting previously deselected package gettext-base.
Unpacking gettext-base (from .../gettext-base_0.18.1.1-3_amd64.deb) ...
Selecting previously deselected package libpcre3.
Unpacking libpcre3 (from .../libpcre3_8.12-3_amd64.deb) ...
Selecting previously deselected package libxml2.
Unpacking libxml2 (from .../libxml2_2.7.8.dfsg-2_amd64.deb) ...
Selecting previously deselected package html2text.
Unpacking html2text (from .../html2text_1.3.2a-15_amd64.deb) ...
Selecting previously deselected package libglib2.0-0.
Unpacking libglib2.0-0 (from .../libglib2.0-0_2.28.2-1_amd64.deb) ...
Selecting previously deselected package libcroco3.
Unpacking libcroco3 (from .../libcroco3_0.6.2-1_amd64.deb) ...
Selecting previously deselected package libunistring0.
Unpacking libunistring0 (from .../libunistring0_0.9.3-3_amd64.deb) ...
Selecting previously deselected package gettext.
Unpacking gettext (from .../gettext_0.18.1.1-3_amd64.deb) ...
Selecting previously deselected package intltool-debian.
Unpacking intltool-debian (from .../intltool-debian_0.35.0+20060710.1_amd64.deb) ...
Selecting previously deselected package po-debconf.
Unpacking po-debconf (from .../po-debconf_1.0.16+nmu1_amd64.deb) ...
Selecting previously deselected package debhelper.
Unpacking debhelper (from .../debhelper_8.1.2_amd64.deb) ...
Selecting previously deselected package cdbs.
Unpacking cdbs (from .../archives/cdbs_0.4.92_amd64.deb) ...
Selecting previously deselected package dctrl-tools.
Unpacking dctrl-tools (from .../dctrl-tools_2.18_amd64.deb) ...
Selecting previously deselected package libgmp10-dev.
Unpacking libgmp10-dev (from .../libgmp10-dev_2%3a5.0.1+dfsg-6_amd64.deb) ...
Selecting previously deselected package libffi5.
Unpacking libffi5 (from .../libffi5_3.0.9-3_amd64.deb) ...
Selecting previously deselected package libffi-dev.
Unpacking libffi-dev (from .../libffi-dev_3.0.9-3_amd64.deb) ...
Selecting previously deselected package libbsd0.
Unpacking libbsd0 (from .../libbsd0_0.2.0-1_amd64.deb) ...
Selecting previously deselected package libbsd-dev.
Unpacking libbsd-dev (from .../libbsd-dev_0.2.0-1_amd64.deb) ...
Selecting previously deselected package ghc6.
Unpacking ghc6 (from .../ghc6_6.12.1-13_amd64.deb) ...
Selecting previously deselected package ghc6-doc.
Unpacking ghc6-doc (from .../ghc6-doc_6.12.1-13_amd64.deb) ...
Selecting previously deselected package ghc6-prof.
Unpacking ghc6-prof (from .../ghc6-prof_6.12.1-13_amd64.deb) ...
Selecting previously deselected package xutils-dev.
Unpacking xutils-dev (from .../xutils-dev_1%3a7.6+2_amd64.deb) ...
Selecting previously deselected package html-xml-utils.
Unpacking html-xml-utils (from .../html-xml-utils_5.9-1_amd64.deb) ...
Selecting previously deselected package hscolour.
Unpacking hscolour (from .../hscolour_1.16-1_amd64.deb) ...
Selecting previously deselected package haskell-devscripts.
Unpacking haskell-devscripts (from .../haskell-devscripts_0.7.12_amd64.deb) ...
Selecting previously deselected package libghc6-deepseq-dev.
Unpacking libghc6-deepseq-dev (from .../libghc6-deepseq-dev_1.1.0.0-2_amd64.deb) ...
Selecting previously deselected package libghc6-deepseq-prof.
Unpacking libghc6-deepseq-prof (from .../libghc6-deepseq-prof_1.1.0.0-2_amd64.deb) ...
Selecting previously deselected package libghc6-mtl-dev.
Unpacking libghc6-mtl-dev (from .../libghc6-mtl-dev_1.1.0.2-10+b1_amd64.deb) ...
Selecting previously deselected package libghc6-parsec2-dev.
Unpacking libghc6-parsec2-dev (from .../libghc6-parsec2-dev_2.1.0.1-2+b1_amd64.deb) ...
Selecting previously deselected package libghc6-hsemail-dev.
Unpacking libghc6-hsemail-dev (from .../libghc6-hsemail-dev_1.6-1_amd64.deb) ...
Selecting previously deselected package libghc6-mtl-prof.
Unpacking libghc6-mtl-prof (from .../libghc6-mtl-prof_1.1.0.2-10+b1_amd64.deb) ...
Selecting previously deselected package libghc6-parsec2-prof.
Unpacking libghc6-parsec2-prof (from .../libghc6-parsec2-prof_2.1.0.1-2+b1_amd64.deb) ...
Selecting previously deselected package libghc6-hsemail-prof.
Unpacking libghc6-hsemail-prof (from .../libghc6-hsemail-prof_1.6-1_amd64.deb) ...
Selecting previously deselected package libghc6-network-dev.
Unpacking libghc6-network-dev (from .../libghc6-network-dev_2.2.1.7-1+b1_amd64.deb) ...
Selecting previously deselected package libghc6-hslogger-dev.
Unpacking libghc6-hslogger-dev (from .../libghc6-hslogger-dev_1.0.9-4_amd64.deb) ...
Selecting previously deselected package libghc6-hslogger-doc.
Unpacking libghc6-hslogger-doc (from .../libghc6-hslogger-doc_1.0.9-4_amd64.deb) ...
Selecting previously deselected package libghc6-network-prof.
Unpacking libghc6-network-prof (from .../libghc6-network-prof_2.2.1.7-1+b1_amd64.deb) ...
Selecting previously deselected package libghc6-hslogger-prof.
Unpacking libghc6-hslogger-prof (from .../libghc6-hslogger-prof_1.0.9-4_amd64.deb) ...
Selecting previously deselected package libghc6-mtl-doc.
Unpacking libghc6-mtl-doc (from .../libghc6-mtl-doc_1.1.0.2-10_amd64.deb) ...
Selecting previously deselected package libghc6-network-doc.
Unpacking libghc6-network-doc (from .../libghc6-network-doc_2.2.1.7-1_amd64.deb) ...
Selecting previously deselected package libghc6-parallel-dev.
Unpacking libghc6-parallel-dev (from .../libghc6-parallel-dev_2.2.0.1-1_amd64.deb) ...
Selecting previously deselected package libghc6-parallel-prof.
Unpacking libghc6-parallel-prof (from .../libghc6-parallel-prof_2.2.0.1-1_amd64.deb) ...
Selecting previously deselected package libghc6-parsec3-dev.
Unpacking libghc6-parsec3-dev (from .../libghc6-parsec3-dev_3.1.0-1_amd64.deb) ...
Selecting previously deselected package libghc6-parsec3-doc.
Unpacking libghc6-parsec3-doc (from .../libghc6-parsec3-doc_3.1.0-1_amd64.deb) ...
Selecting previously deselected package libghc6-parsec3-prof.
Unpacking libghc6-parsec3-prof (from .../libghc6-parsec3-prof_3.1.0-1_amd64.deb) ...
Selecting previously deselected package libghc6-smtpclient-dev.
Unpacking libghc6-smtpclient-dev (from .../libghc6-smtpclient-dev_1.0.2-1_amd64.deb) ...
Selecting previously deselected package libghc6-smtpclient-doc.
Unpacking libghc6-smtpclient-doc (from .../libghc6-smtpclient-doc_1.0.2-1_amd64.deb) ...
Selecting previously deselected package libghc6-smtpclient-prof.
Unpacking libghc6-smtpclient-prof (from .../libghc6-smtpclient-prof_1.0.2-1_amd64.deb) ...
Selecting previously deselected package libghc6-strict-concurrency-dev.
Unpacking libghc6-strict-concurrency-dev (from .../libghc6-strict-concurrency-dev_0.2.3-1_amd64.deb) ...
Selecting previously deselected package libghc6-strict-concurrency-doc.
Unpacking libghc6-strict-concurrency-doc (from .../libghc6-strict-concurrency-doc_0.2.3-1_amd64.deb) ...
Selecting previously deselected package libghc6-strict-concurrency-prof.
Unpacking libghc6-strict-concurrency-prof (from .../libghc6-strict-concurrency-prof_0.2.3-1_amd64.deb) ...
Selecting previously deselected package libghc6-unix-compat-dev.
Unpacking libghc6-unix-compat-dev (from .../libghc6-unix-compat-dev_0.1.2.1-1_amd64.deb) ...
Selecting previously deselected package libghc6-unix-compat-doc.
Unpacking libghc6-unix-compat-doc (from .../libghc6-unix-compat-doc_0.1.2.1-1_amd64.deb) ...
Selecting previously deselected package libghc6-unix-compat-prof.
Unpacking libghc6-unix-compat-prof (from .../libghc6-unix-compat-prof_0.1.2.1-1_amd64.deb) ...
Setting up bsdmainutils (8.2.2) ...
update-alternatives: using /usr/bin/bsd-write to provide /usr/bin/write (write) in auto mode.
update-alternatives: using /usr/bin/bsd-from to provide /usr/bin/from (from) in auto mode.
Setting up groff-base (1.21-4) ...
Setting up libpipeline1 (1.2.0-1) ...
Setting up man-db (2.5.9-4) ...
Building database of manual pages ...
Setting up libmagic1 (5.04-5) ...
Setting up file (5.04-5) ...
Setting up gettext-base (0.18.1.1-3) ...
Setting up libpcre3 (8.12-3) ...
Setting up libxml2 (2.7.8.dfsg-2) ...
Setting up html2text (1.3.2a-15) ...
Setting up libglib2.0-0 (2.28.2-1) ...
No schema files found: doing nothing.
Setting up libcroco3 (0.6.2-1) ...
Setting up libunistring0 (0.9.3-3) ...
Setting up gettext (0.18.1.1-3) ...
Setting up intltool-debian (0.35.0+20060710.1) ...
Setting up po-debconf (1.0.16+nmu1) ...
Setting up debhelper (8.1.2) ...
Setting up cdbs (0.4.92) ...
Setting up dctrl-tools (2.18) ...
Setting up libgmp10-dev (2:5.0.1+dfsg-6) ...
Setting up libffi5 (3.0.9-3) ...
Setting up libffi-dev (3.0.9-3) ...
Setting up libbsd0 (0.2.0-1) ...
Setting up libbsd-dev (0.2.0-1) ...
Setting up ghc6 (6.12.1-13) ...
update-alternatives: using /usr/bin/runghc6 to provide /usr/bin/runhaskell (runhaskell) in auto mode.
update-alternatives: using /usr/bin/ghc6 to provide /usr/bin/haskell-compiler (haskell-compiler) in auto mode.
update-alternatives: using /usr/lib/ghc-6.12.1/bin/ghc to provide /usr/bin/ghc (ghc) in auto mode.
update-alternatives: warning: skip creation of /usr/bin/hasktags because associated file /usr/lib/ghc-6.12.1/bin/hasktags (of link group ghc) doesn't exist.
Setting up ghc6-doc (6.12.1-13) ...
Setting up ghc6-prof (6.12.1-13) ...
Setting up xutils-dev (1:7.6+2) ...
Setting up html-xml-utils (5.9-1) ...
Setting up hscolour (1.16-1) ...
Setting up haskell-devscripts (0.7.12) ...
Setting up libghc6-deepseq-dev (1.1.0.0-2) ...
Setting up libghc6-deepseq-prof (1.1.0.0-2) ...
Setting up libghc6-mtl-dev (1.1.0.2-10+b1) ...
Setting up libghc6-parsec2-dev (2.1.0.1-2+b1) ...
Setting up libghc6-hsemail-dev (1.6-1) ...
Setting up libghc6-mtl-prof (1.1.0.2-10+b1) ...
Setting up libghc6-parsec2-prof (2.1.0.1-2+b1) ...
Setting up libghc6-hsemail-prof (1.6-1) ...
Setting up libghc6-network-dev (2.2.1.7-1+b1) ...
Setting up libghc6-hslogger-dev (1.0.9-4) ...
Setting up libghc6-hslogger-doc (1.0.9-4) ...
Setting up libghc6-network-prof (2.2.1.7-1+b1) ...
Setting up libghc6-hslogger-prof (1.0.9-4) ...
Setting up libghc6-mtl-doc (1.1.0.2-10) ...
Setting up libghc6-network-doc (2.2.1.7-1) ...
Setting up libghc6-parallel-dev (2.2.0.1-1) ...
Setting up libghc6-parallel-prof (2.2.0.1-1) ...
Setting up libghc6-parsec3-dev (3.1.0-1) ...
Setting up libghc6-parsec3-doc (3.1.0-1) ...
Setting up libghc6-parsec3-prof (3.1.0-1) ...
Setting up libghc6-smtpclient-dev (1.0.2-1) ...
Setting up libghc6-smtpclient-doc (1.0.2-1) ...
Setting up libghc6-smtpclient-prof (1.0.2-1) ...
Setting up libghc6-strict-concurrency-dev (0.2.3-1) ...
Setting up libghc6-strict-concurrency-doc (0.2.3-1) ...
Setting up libghc6-strict-concurrency-prof (0.2.3-1) ...
Setting up libghc6-unix-compat-dev (0.1.2.1-1) ...
Setting up libghc6-unix-compat-doc (0.1.2.1-1) ...
Setting up libghc6-unix-compat-prof (0.1.2.1-1) ...
Removing negative dependencies: 
Reading package lists...
Building dependency tree...
Reading state information...
The following packages were automatically installed and are no longer required:
  libppl7 libppl-c2
Use 'apt-get autoremove' to remove them.
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
Checking correctness of dependencies...
Kernel: Linux 2.6.37-12-server amd64 (x86_64)
Toolchain package versions: binutils_2.21.0.20110302-2 dpkg-dev_1.15.8.10 g++-4.4_4.4.5-14 g++-4.5_4.5.2-6 gcc-4.4_4.4.5-14 gcc-4.5_4.5.2-6 libc6-dev_2.11.2-13 libstdc++6_4.5.2-6 libstdc++6-4.4-dev_4.4.5-14 libstdc++6-4.5-dev_4.5.2-6 linux-libc-dev_2.6.38-1
Package versions: apt_0.8.13 apt-utils_0.8.13 base-files_6.1 base-passwd_3.5.22 bash_4.1-3 binutils_2.21.0.20110302-2 bsdmainutils_8.2.2 bsdutils_1:2.17.2-9.1 build-essential_11.5 bzip2_1.0.5-6 cdbs_0.4.92 coreutils_8.5-1 cpp_4:4.5.2-2 cpp-4.4_4.4.5-14 cpp-4.5_4.5.2-6 dash_0.5.5.1-7.4 dctrl-tools_2.18 debconf_1.5.38 debconf-i18n_1.5.38 debhelper_8.1.2 debian-archive-keyring_2010.08.28 debian-keyring_2011.03.03 debianutils_3.4.4 devscripts_2.10.71 diffutils_1:3.0-1 dpkg_1.15.8.10 dpkg-dev_1.15.8.10 e2fslibs_1.41.12-2 e2fsprogs_1.41.12-2 fakeroot_1.14.5-2 file_5.04-5 findutils_4.4.2-1+b1 g++_4:4.5.2-2 g++-4.4_4.4.5-14 g++-4.5_4.5.2-6 gcc_4:4.5.2-2 gcc-4.4_4.4.5-14 gcc-4.4-base_4.4.5-14 gcc-4.5_4.5.2-6 gcc-4.5-base_4.5.2-6 gettext_0.18.1.1-3 gettext-base_0.18.1.1-3 ghc6_6.12.1-13 ghc6-doc_6.12.1-13 ghc6-prof_6.12.1-13 gnupg_1.4.11-3 gpgv_1.4.11-3 grep_2.6.3-3 groff-base_1.21-4 gzip_1.3.12-9 haskell-devscripts_0.7.12 hostname_3.06 hscolour_1.16-1 html-xml-utils_5.9-1 html2text_1.3.2a-15 initscripts_2.88dsf-13.1 insserv_1.14.0-2.1 intltool-debian_0.35.0+20060710.1 libacl1_2.2.49-4 libattr1_1:2.4.44-2 libblkid1_2.17.2-9.1 libbsd-dev_0.2.0-1 libbsd0_0.2.0-1 libbz2-1.0_1.0.5-6 libc-bin_2.11.2-13 libc-dev-bin_2.11.2-13 libc6_2.11.2-13 libc6-dev_2.11.2-13 libcloog-ppl0_0.15.9-3 libcomerr2_1.41.12-2 libcroco3_0.6.2-1 libdb4.7_4.7.25-12 libdb4.8_4.8.30-5 libdb5.1_5.1.25-1 libdpkg-perl_1.15.8.10 libelfg0_0.8.13-1 libffi-dev_3.0.9-3 libffi5_3.0.9-3 libgcc1_1:4.5.2-6 libgdbm3_1.8.3-9 libghc6-deepseq-dev_1.1.0.0-2 libghc6-deepseq-prof_1.1.0.0-2 libghc6-hsemail-dev_1.6-1 libghc6-hsemail-prof_1.6-1 libghc6-hslogger-dev_1.0.9-4 libghc6-hslogger-doc_1.0.9-4 libghc6-hslogger-prof_1.0.9-4 libghc6-mtl-dev_1.1.0.2-10+b1 libghc6-mtl-doc_1.1.0.2-10 libghc6-mtl-prof_1.1.0.2-10+b1 libghc6-network-dev_2.2.1.7-1+b1 libghc6-network-doc_2.2.1.7-1 libghc6-network-prof_2.2.1.7-1+b1 libghc6-parallel-dev_2.2.0.1-1 libghc6-parallel-prof_2.2.0.1-1 libghc6-parsec2-dev_2.1.0.1-2+b1 libghc6-parsec2-prof_2.1.0.1-2+b1 libghc6-parsec3-dev_3.1.0-1 libghc6-p�arsec3-doc_3.1.0-1 libghc6-parsec3-prof_3.1.0-1 libghc6-smtpclient-dev_1.0.2-1 libghc6-smtpclient-doc_1.0.2-1 libghc6-smtpclient-prof_1.0.2-1 libghc6-strict-concurrency-dev_0.2.3-1 libghc6-strict-concurrency-doc_0.2.3-1 libghc6-strict-concurrency-prof_0.2.3-1 libghc6-unix-compat-dev_0.1.2.1-1 libghc6-unix-compat-doc_0.1.2.1-1 libghc6-unix-compat-prof_0.1.2.1-1 libglib2.0-0_2.28.2-1 libgmp10_2:5.0.1+dfsg-6 libgmp10-dev_2:5.0.1+dfsg-6 libgmp3c2_2:4.3.2+dfsg-1 libgmpxx4ldbl_2:5.0.1+dfsg-6 libgomp1_4.5.2-6 liblocale-gettext-perl_1.05-6 liblzma2_5.0.0-2 libmagic1_5.04-5 libmpc2_0.9-2 libmpfr4_3.0.0-9 libncurses5_5.8+20110307-1 libpam-modules_1.1.2-2 libpam-runtime_1.1.2-2 libpam0g_1.1.2-2 libpcre3_8.12-3 libpipeline1_1.2.0-1 libppl-c2_0.10.2-9 libppl-c4_0.11.2-3 libppl7_0.10.2-9 libppl9_0.11.2-3 libpwl5_0.11.2-3 libreadline6_6.1-3 libselinux1_2.0.96-1 libsepol1_2.0.42-1 libslang2_2.2.2-4 libss2_1.41.12-2 libstdc++6_4.5.2-6 libstdc++6-4.4-dev_4.4.5-14 libstdc++6-4.5-dev_4.5.2-6 libtext-charwidth-perl_0.04-6 libtext-iconv-perl_1.7-2 libtext-wrapi18n-perl_0.06-7 libtimedate-perl_1.2000-1 libunistring0_0.9.3-3 libusb-0.1-4_2:0.1.12-17 libuuid1_2.17.2-9.1 libxml2_2.7.8.dfsg-2 linux-libc-dev_2.6.38-1 login_1:4.1.4.2+svn3283-3 lsb-base_3.2-27 make_3.81-8 man-db_2.5.9-4 mawk_1.3.3-15 mount_2.17.2-9.1 ncurses-base_5.8+20110307-1 ncurses-bin_5.8+20110307-1 passwd_1:4.1.4.2+svn3283-3 patch_2.6.1-1 perl_5.10.1-18 perl-base_5.10.1-18 perl-modules_5.10.1-18 po-debconf_1.0.16+nmu1 readline-common_6.1-3 sed_4.2.1-9 sensible-utils_0.0.6 sysv-rc_2.88dsf-13.1 sysvinit_2.88dsf-13.1 sysvinit-utils_2.88dsf-13.1 tar_1.25-3 tzdata_2011d-1 util-linux_2.17.2-9.1 xutils-dev_1:7.6+2 xz-utils_5.0.0-2 zlib1g_1:1.2.3.4.dfsg-3

┌──────────────────────────────────────────────────────────────────────────────┐
│ Build                                                                        │
└──────────────────────────────────────────────────────────────────────────────┘


Unpack source
─────────────

gpgv: Signature made Sun Mar 20 15:58:09 2011 GMT using RSA key ID 1C5041D4
gpgv: Can't check signature: public key not found
dpkg-source: warning: failed to verify signature on ./haskell-happstack-util_0.5.0.2-2build2.dsc
dpkg-source: info: extracting haskell-happstack-util in haskell-happstack-util-0.5.0.2
dpkg-source: info: unpacking haskell-happstack-util_0.5.0.2.orig.tar.gz
dpkg-source: info: unpacking haskell-happstack-util_0.5.0.2-2build2.debian.tar.gz

Check disc space
────────────────


dpkg-buildpackage
─────────────────

dpkg-buildpackage: export CFLAGS from dpkg-buildflags (origin: vendor): -g -O2
dpkg-buildpackage: export CPPFLAGS from dpkg-buildflags (origin: vendor): 
dpkg-buildpackage: export CXXFLAGS from dpkg-buildflags (origin: vendor): -g -O2
dpkg-buildpackage: export FFLAGS from dpkg-buildflags (origin: vendor): -g -O2
dpkg-buildpackage: export LDFLAGS from dpkg-buildflags (origin: vendor): 
dpkg-buildpackage: source package haskell-happstack-util
dpkg-buildpackage: source version 0.5.0.2-2build2
 dpkg-source --before-build haskell-happstack-util-0.5.0.2
dpkg-buildpackage: host architecture amd64
 fakeroot debian/rules clean
test -x debian/rules
dh_testroot
dh_clean 
[ ! -x "debian/hlibrary.setup" ] || debian/hlibrary.setup clean
rm -rf dist dist-ghc6 dist-hugs debian/hlibrary.setup Setup.hi Setup.ho Setup.o .*config*
rm -f build-ghc6-stamp build-hugs-stamp build-haddock-stamp
rm -rf debian/tmp-inst-ghc6
rm -f debian/hlibrary.Makefile
rm -rf debian/dh_haskell_shlibdeps
 debian/rules build
test -x debian/rules
mkdir -p "."
/usr/share/cdbs/1/rules/buildcore.mk:109: WARNING:  DEB_COMPRESS_EXCLUDE is a deprecated variable
if test ! -e Setup.lhs -a ! -e Setup.hs; then echo "No setup script found!"; exit 1; fi
for setup in Setup.lhs Setup.hs; do if test -e $setup; then ghc6 --make $setup -o debian/hlibrary.setup; exit 0; fi; done
[1 of 1] Compiling Main             ( Setup.hs, Setup.o )
Linking debian/hlibrary.setup ...
debian/hlibrary.setup configure --ghc -v2 \
		--prefix=/usr --libdir=/usr/lib/haskell-packages/ghc6/lib \
		--builddir=dist-ghc6 \
		--haddockdir=/usr/lib/ghc-6.12.1/haddock/happstack-util-0.5.0.2/ \
		--htmldir=/usr/share/doc/libghc6-happstack-util-doc/html/ --enable-library-profiling \
		 
Configuring happstack-util-0.5.0.2...
Flags chosen: tests=False, base4=True
Dependency SMTPClient >=1.0.2 && <1.1: using SMTPClient-1.0.2
Dependency array -any: using array-0.3.0.0
Dependency base ==4.*: using base-4.2.0.0
Dependency bytestring -any: using bytestring-0.9.1.5
Dependency directory -any: using directory-1.0.1.0
Dependency extensible-exceptions -any: using extensible-exceptions-0.1.1.1
Dependency filepath -any: using filepath-1.1.0.3
Dependency hslogger >=1.0.2: using hslogger-1.0.9
Dependency mtl -any: using mtl-1.1.0.2
Dependency network >=2.2 && <3: using network-2.2.1.7
Dependency old-locale -any: using old-locale-1.0.0.2
Dependency old-time -any: using old-time-1.0.0.3
Dependency parsec <4: using parsec-3.1.0
Dependency process -any: using process-1.0.1.2
Dependency random -any: using random-1.0.0.2
Dependency strict-concurrency -any: using strict-concurrency-0.2.3
Dependency template-haskell -any: using template-haskell-2.4.0.0
Dependency time -any: using time-1.1.4
Dependency unix -any: using unix-2.4.0.0
Dependency unix-compat -any: using unix-compat-0.1.2.1
Warning: This package indirectly depends on multiple versions of the same
package. This is highly likely to cause a compile failure.
package network-2.2.1.7 requires parsec-2.1.0.1
package hsemail-1.6 requires parsec-2.1.0.1
package happstack-util-0.5.0.2 requires parsec-3.1.0
Using Cabal-1.8.0.2 compiled by ghc-6.12
Using compiler: ghc-6.12.1
Using install prefix: /usr
Binaries installed in: /usr/bin
Libraries installed in:
/usr/lib/haskell-packages/ghc6/lib/happstack-util-0.5.0.2/ghc-6.12.1
Private binaries installed in: /usr/libexec
Data files installed in: /usr/share/happstack-util-0.5.0.2
Documentation installed in: /usr/share/doc/happstack-util-0.5.0.2
No alex found
Using ar found on system at: /usr/bin/ar
No c2hs found
No cpphs found
No ffihugs found
Using gcc version 4.5.2 found on system at: /usr/bin/gcc
Using ghc version 6.12.1 found on system at: /usr/bin/ghc
Using ghc-pkg version 6.12.1 found on system at: /usr/bin/ghc-pkg
No greencard found
Using haddock version 2.6.0 found on system at: /usr/bin/haddock
No happy found
No hmake found
Using hsc2hs version 0.67 found on system at: /usr/bin/hsc2hs
Using hscolour version 1.16 found on system at: /usr/bin/HsColour
No hugs found
No jhc found
Using ld found on system at: /usr/bin/ld
No lhc found
No lhc-pkg found
No nhc98 found
No pkg-config found
Using ranlib found on system at: /usr/bin/ranlib
Using strip found on system at: /usr/bin/strip
Using tar found on system at: /bin/tar
debian/hlibrary.setup build --builddir=dist-ghc6
Preprocessing library happstack-util-0.5.0.2...
Preprocessing executables for happstack-util-0.5.0.2...
Building happstack-util-0.5.0.2...
[ 1 of 19] Compiling Happstack.Util.FileManip ( src/Happstack/Util/FileManip.hs, dist-ghc6/build/Happstack/Util/FileManip.o )

on the commandline:
    Warning: -XRecursiveDo is deprecated: use -XDoRec or pragma {-# LANGUAGE DoRec #-} instead

src/Happstack/Util/FileManip.hs:18:6:
    Warning: Defined but not used: `infoPath'

src/Happstack/Util/FileManip.hs:19:6:
    Warning: Defined but not used: `infoDepth'

src/Happstack/Util/FileManip.hs:20:6:
    Warning: Defined but not used: `infoStatus'

src/Happstack/Util/FileManip.hs:22:9:
    Warning: orphan instance: instance Eq F.FileStatus

src/Happstack/Util/FileManip.hs:35:23:
    Warning: Defined but not used: data constructor `FC'

src/Happstack/Util/FileManip.hs:83:35:
    Warning: This binding for `filter' shadows the existing binding
               imported from Prelude

src/Happstack/Util/TimeOut.hs:1:53:
    Warning: -XRecursiveDo is deprecated: use -XDoRec or pragma {-# LANGUAGE DoRec #-} instead
[ 2 of 19] Compiling Happstack.Util.TH ( src/Happstack/Util/TH.hs, dist-ghc6/build/Happstack/Util/TH.o )
[ 3 of 19] Compiling Happstack.Util.OpenExclusively ( src/Happstack/Util/OpenExclusively.hs, dist-ghc6/build/Happstack/Util/OpenExclusively.o )
[ 4 of 19] Compiling Happstack.Util.Mail ( src/Happstack/Util/Mail.hs, dist-ghc6/build/Happstack/Util/Mail.o )
[ 5 of 19] Compiling Happstack.Util.LogFormat ( src/Happstack/Util/LogFormat.hs, dist-ghc6/build/Happstack/Util/LogFormat.o )
[ 6 of 19] Compiling Happstack.Util.HostAddress ( src/Happstack/Util/HostAddress.hs, dist-ghc6/build/Happstack/Util/HostAddress.o )
[ 7 of 19] Compiling Happstack.Util.Cron ( src/Happstack/Util/Cron.hs, dist-ghc6/build/Happstack/Util/Cron.o )
[ 8 of 19] Compiling Happstack.Util.Concurrent ( src/Happstack/Util/Concurrent.hs, dist-ghc6/build/Happstack/Util/Concurrent.o )
[ 9 of 19] Compiling Happstack.Util.TimeOut ( src/Happstack/Util/TimeOut.hs, dist-ghc6/build/Happstack/Util/TimeOut.o )
dsMDo []

src/Happstack/Util/TimeOut.hs:136:10:
    Warning: A do-notation statement discarded a result of type Bool.
             Suppress this warning by saying "_ <- case t of {
                                                     Left e -> tryPutMVar mv (Data.Either.Left e)
                                                     Right r
                                                       -> tryPutMVar
                                                            mv
                                                            (Data.Either.Right
                                                               (Data.Maybe.Just r)) }",
             or by using the flag -fno-warn-unused-do-bind
[10 of 19] Compiling Happstack.Util.Common ( src/Happstack/Util/Common.hs, dist-ghc6/build/Happstack/Util/Common.o )

src/Happstack/Util/Common.hs:129:28:
    Warning: A do-notation statement discarded a result of type ThreadId.
             Suppress this warning by saying "_ <- forkIO
                                                     ((>>=) hGetContents h put)",
             or by using the flag -fno-warn-unused-do-bind
[11 of 19] Compiling Happstack.Util.ByteStringCompat ( src/Happstack/Util/ByteStringCompat.hs, dist-ghc6/build/Happstack/Util/ByteStringCompat.o )
[12 of 19] Compiling Happstack.Util.AutoBuild ( src/Happstack/Util/AutoBuild.hs, dist-ghc6/build/Happstack/Util/AutoBuild.o )

src/Happstack/Util/AutoBuild.hs:38:12:
    Warning: A do-notation statement discarded a result of type GHC.Conc.ThreadId.
             Suppress this warning by saying "_ <- forkIO
                                                     (builder mph buildCmd binPath newMod)",
             or by using the flag -fno-warn-unused-do-bind

src/Happstack/Util/AutoBuild.hs:67:4:
    Warning: A do-notation statement discarded a result of type ExitCode.
             Suppress this warning by saying "_ <- bracket
                                                     (runBin binPath binArgs)
                                                     (terminateProcess)
                                                     (\ ph
                                                          -> (>>)
                                                               putMVar mph ph waitForProcess ph)",
             or by using the flag -fno-warn-unused-do-bind

src/Happstack/Util/AutoBuild.hs:90:4:
    Warning: A do-notation statement discarded a result of type ExitCode.
             Suppress this warning by saying "_ <- waitForProcess ph",
             or by using the flag -fno-warn-unused-do-bind
[13 of 19] Compiling Happstack.Crypto.MD5 ( src/Happstack/Crypto/MD5.hs, dist-ghc6/build/Happstack/Crypto/MD5.o )
/tmp/ghc30560_0/ghc30560_0.s: Assembler messages:

/tmp/ghc30560_0/ghc30560_0.s:12448:0:
     Error: .size expression does not evaluate to a constant

/tmp/ghc30560_0/ghc30560_0.s:12448:0:
     Error: .size expression does not evaluate to a constant

/tmp/ghc30560_0/ghc30560_0.s:12448:0:
     Error: .size expression does not evaluate to a constant

/tmp/ghc30560_0/ghc30560_0.s:12448:0:
     Error: .size expression does not evaluate to a constant

/tmp/ghc30560_0/ghc30560_0.s:12448:0:
     Error: .size expression does not evaluate to a constant

/tmp/ghc30560_0/ghc30560_0.s:12448:0:
     Error: .size expression does not evaluate to a constant

/tmp/ghc30560_0/ghc30560_0.s:12448:0:
     Error: .size expression does not evaluate to a constant

/tmp/ghc30560_0/ghc30560_0.s:12448:0:
     Error: .size expression does not evaluate to a constant

/tmp/ghc30560_0/ghc30560_0.s:12448:0:
     Error: .size expression does not evaluate to a constant

/tmp/ghc30560_0/ghc30560_0.s:12448:0:
     Error: .size expression does not evaluate to a constant

/tmp/ghc30560_0/ghc30560_0.s:12448:0:
     Error: .size expression does not evaluate to a constant

/tmp/ghc30560_0/ghc30560_0.s:12448:0:
     Error: .size expression does not evaluate to a constant

/tmp/ghc30560_0/ghc30560_0.s:12448:0:
     Error: .size expression does not evaluate to a constant

/tmp/ghc30560_0/ghc30560_0.s:12448:0:
     Error: .size expression does not evaluate to a constant

/tmp/ghc30560_0/ghc30560_0.s:12448:0:
     Error: .size expression does not evaluate to a constant

/tmp/ghc30560_0/ghc30560_0.s:12448:0:
     Error: .size expression does not evaluate to a constant

/tmp/ghc30560_0/ghc30560_0.s:12448:0:
     Error: .size expression does not evaluate to a constant

/tmp/ghc30560_0/ghc30560_0.s:12448:0:
     Error: .size expression does not evaluate to a constant

/tmp/ghc30560_0/ghc30560_0.s:12448:0:
     Error: .size expression does not evaluate to a constant

/tmp/ghc30560_0/ghc30560_0.s:12448:0:
     Error: .size expression does not evaluate to a constant

/tmp/ghc30560_0/ghc30560_0.s:12448:0:
     Error: .size expression does not evaluate to a constant

/tmp/ghc30560_0/ghc30560_0.s:12448:0:
     Error: .size expression does not evaluate to a constant

/tmp/ghc30560_0/ghc30560_0.s:12448:0:
     Error: .size expression does not evaluate to a constant

/tmp/ghc30560_0/ghc30560_0.s:12448:0:
     Error: .size expression does not evaluate to a constant

/tmp/ghc30560_0/ghc30560_0.s:12448:0:
     Error: .size expression does not evaluate to a constant

/tmp/ghc30560_0/ghc30560_0.s:12448:0:
     Error: .size expression does not evaluate to a constant

/tmp/ghc30560_0/ghc30560_0.s:12448:0:
     Error: .size expression does not evaluate to a constant

/tmp/ghc30560_0/ghc30560_0.s:12448:0:
     Error: .size expression does not evaluate to a constant

/tmp/ghc30560_0/ghc30560_0.s:12448:0:
     Error: .size expression does not evaluate to a constant

/tmp/ghc30560_0/ghc30560_0.s:12448:0:
     Error: .size expression does not evaluate to a constant

/tmp/ghc30560_0/ghc30560_0.s:12448:0:
     Error: .size expression does not evaluate to a constant

/tmp/ghc30560_0/ghc30560_0.s:12448:0:
     Error: .size expression does not evaluate to a constant

/tmp/ghc30560_0/ghc30560_0.s:12448:0:
     Error: .size expression does not evaluate to a constant

/tmp/ghc30560_0/ghc30560_0.s:12448:0:
     Error: .size expression does not evaluate to a constant

/tmp/ghc30560_0/ghc30560_0.s:12448:0:
     Error: .size expression does not evaluate to a constant

/tmp/ghc30560_0/ghc30560_0.s:12448:0:
     Error: .size expression does not evaluate to a constant

/tmp/ghc30560_0/ghc30560_0.s:12448:0:
     Error: .size expression does not evaluate to a constant

/tmp/ghc30560_0/ghc30560_0.s:12448:0:
     Error: .size expression does not evaluate to a constant

/tmp/ghc30560_0/ghc30560_0.s:12448:0:
     Error: .size expression does not evaluate to a constant

/tmp/ghc30560_0/ghc30560_0.s:12448:0:
     Error: .size expression does not evaluate to a constant

/tmp/ghc30560_0/ghc30560_0.s:12448:0:
     Error: .size expression does not evaluate to a constant

/tmp/ghc30560_0/ghc30560_0.s:12448:0:
     Error: .size expression does not evaluate to a constant

/tmp/ghc30560_0/ghc30560_0.s:12448:0:
     Error: .size expression does not evaluate to a constant

/tmp/ghc30560_0/ghc30560_0.s:12448:0:
     Error: .size expression does not evaluate to a constant

/tmp/ghc30560_0/ghc30560_0.s:12448:0:
     Error: .size expression does not evaluate to a constant

/tmp/ghc30560_0/ghc30560_0.s:12448:0:
     Error: .size expression does not evaluate to a constant

/tmp/ghc30560_0/ghc30560_0.s:12448:0:
     Error: .size expression does not evaluate to a constant

/tmp/ghc30560_0/ghc30560_0.s:12448:0:
     Error: .size expression does not evaluate to a constant

/tmp/ghc30560_0/ghc30560_0.s:12448:0:
     Error: .size expression does not evaluate to a constant

/tmp/ghc30560_0/ghc30560_0.s:12448:0:
     Error: .size expression does not evaluate to a constant

/tmp/ghc30560_0/ghc30560_0.s:12448:0:
     Error: .size expression does not evaluate to a constant

/tmp/ghc30560_0/ghc30560_0.s:12448:0:
     Error: .size expression does not evaluate to a constant

/tmp/ghc30560_0/ghc30560_0.s:12448:0:
     Error: .size expression does not evaluate to a constant

/tmp/ghc30560_0/ghc30560_0.s:12448:0:
     Error: .size expression does not evaluate to a constant

/tmp/ghc30560_0/ghc30560_0.s:12448:0:
     Error: .size expression does not evaluate to a constant

/tmp/ghc30560_0/ghc30560_0.s:12448:0:
     Error: .size expression does not evaluate to a constant

/tmp/ghc30560_0/ghc30560_0.s:12448:0:
     Error: .size expression does not evaluate to a constant

/tmp/ghc30560_0/ghc30560_0.s:12448:0:
     Error: .size expression does not evaluate to a constant

/tmp/ghc30560_0/ghc30560_0.s:12448:0:
     Error: .size expression does not evaluate to a constant

/tmp/ghc30560_0/ghc30560_0.s:12448:0:
     Error: .size expression does not evaluate to a constant

/tmp/ghc30560_0/ghc30560_0.s:12448:0:
     Error: .size expression does not evaluate to a constant

/tmp/ghc30560_0/ghc30560_0.s:12448:0:
     Error: .size expression does not evaluate to a constant

/tmp/ghc30560_0/ghc30560_0.s:12448:0:
     Error: .size expression does not evaluate to a constant

/tmp/ghc30560_0/ghc30560_0.s:12448:0:
     Error: .size expression does not evaluate to a constant

/tmp/ghc30560_0/ghc30560_0.s:12448:0:
     Error: .size expression does not evaluate to a constant

/tmp/ghc30560_0/ghc30560_0.s:12448:0:
     Error: .size expression does not evaluate to a constant

/tmp/ghc30560_0/ghc30560_0.s:12448:0:
     Error: .size expression does not evaluate to a constant

/tmp/ghc30560_0/ghc30560_0.s:12448:0:
     Error: .size expression does not evaluate to a constant

/tmp/ghc30560_0/ghc30560_0.s:12448:0:
     Error: .size expression does not evaluate to a constant

/tmp/ghc30560_0/ghc30560_0.s:12448:0:
     Error: .size expression does not evaluate to a constant

/tmp/ghc30560_0/ghc30560_0.s:12448:0:
     Error: .size expression does not evaluate to a constant

/tmp/ghc30560_0/ghc30560_0.s:12448:0:
     Error: .size expression does not evaluate to a constant

/tmp/ghc30560_0/ghc30560_0.s:12448:0:
     Error: .size expression does not evaluate to a constant

/tmp/ghc30560_0/ghc30560_0.s:12448:0:
     Error: .size expression does not evaluate to a constant

/tmp/ghc30560_0/ghc30560_0.s:12448:0:
     Error: .size expression does not evaluate to a constant

/tmp/ghc30560_0/ghc30560_0.s:12448:0:
     Error: .size expression does not evaluate to a constant

/tmp/ghc30560_0/ghc30560_0.s:12448:0:
     Error: .size expression does not evaluate to a constant

/tmp/ghc30560_0/ghc30560_0.s:12448:0:
     Error: .size expression does not evaluate to a constant

/tmp/ghc30560_0/ghc30560_0.s:12448:0:
     Error: .size expression does not evaluate to a constant

/tmp/ghc30560_0/ghc30560_0.s:12448:0:
     Error: .size expression does not evaluate to a constant

/tmp/ghc30560_0/ghc30560_0.s:12448:0:
     Error: .size expression does not evaluate to a constant

/tmp/ghc30560_0/ghc30560_0.s:12448:0:
     Error: .size expression does not evaluate to a constant

/tmp/ghc30560_0/ghc30560_0.s:12448:0:
     Error: .size expression does not evaluate to a constant

/tmp/ghc30560_0/ghc30560_0.s:12448:0:
     Error: .size expression does not evaluate to a constant

/tmp/ghc30560_0/ghc30560_0.s:12448:0:
     Error: .size expression does not evaluate to a constant

/tmp/ghc30560_0/ghc30560_0.s:12448:0:
     Error: .size expression does not evaluate to a constant

/tmp/ghc30560_0/ghc30560_0.s:12448:0:
     Error: .size expression does not evaluate to a constant

/tmp/ghc30560_0/ghc30560_0.s:12448:0:
     Error: .size expression does not evaluate to a constant

/tmp/ghc30560_0/ghc30560_0.s:12448:0:
     Error: .size expression does not evaluate to a constant

/tmp/ghc30560_0/ghc30560_0.s:12448:0:
     Error: .size expression does not evaluate to a constant

/tmp/ghc30560_0/ghc30560_0.s:12448:0:
     Error: .size expression does not evaluate to a constant

/tmp/ghc30560_0/ghc30560_0.s:12448:0:
     Error: .size expression does not evaluate to a constant

/tmp/ghc30560_0/ghc30560_0.s:12448:0:
     Error: .size expression does not evaluate to a constant

/tmp/ghc30560_0/ghc30560_0.s:12448:0:
     Error: .size expression does not evaluate to a constant

/tmp/ghc30560_0/ghc30560_0.s:12448:0:
     Error: .size expression does not evaluate to a constant

/tmp/ghc30560_0/ghc30560_0.s:12448:0:
     Error: .size expression does not evaluate to a constant

/tmp/ghc30560_0/ghc30560_0.s:12448:0:
     Error: .size expression does not evaluate to a constant

/tmp/ghc30560_0/ghc30560_0.s:12448:0:
     Error: .size expression does not evaluate to a constant

/tmp/ghc30560_0/ghc30560_0.s:12448:0:
     Error: .size expression does not evaluate to a constant

/tmp/ghc30560_0/ghc30560_0.s:12448:0:
     Error: .size expression does not evaluate to a constant

/tmp/ghc30560_0/ghc30560_0.s:12448:0:
     Error: .size expression does not evaluate to a constant

/tmp/ghc30560_0/ghc30560_0.s:12448:0:
     Error: .size expression does not evaluate to a constant

/tmp/ghc30560_0/ghc30560_0.s:12448:0:
     Error: .size expression does not evaluate to a constant

/tmp/ghc30560_0/ghc30560_0.s:12448:0:
     Error: .size expression does not evaluate to a constant

/tmp/ghc30560_0/ghc30560_0.s:12448:0:
     Error: .size expression does not evaluate to a constant

/tmp/ghc30560_0/ghc30560_0.s:12448:0:
     Error: .size expression does not evaluate to a constant

/tmp/ghc30560_0/ghc30560_0.s:12448:0:
     Error: .size expression does not evaluate to a constant

/tmp/ghc30560_0/ghc30560_0.s:12448:0:
     Error: .size expression does not evaluate to a constant

/tmp/ghc30560_0/ghc30560_0.s:12448:0:
     Error: .size expression does not evaluate to a constant

/tmp/ghc30560_0/ghc30560_0.s:12448:0:
     Error: .size expression does not evaluate to a constant

/tmp/ghc30560_0/ghc30560_0.s:12448:0:
     Error: .size expression does not evaluate to a constant

/tmp/ghc30560_0/ghc30560_0.s:12448:0:
     Error: .size expression does not evaluate to a constant

/tmp/ghc30560_0/ghc30560_0.s:12448:0:
     Error: .size expression does not evaluate to a constant

/tmp/ghc30560_0/ghc30560_0.s:12448:0:
     Error: .size expression does not evaluate to a constant

/tmp/ghc30560_0/ghc30560_0.s:12448:0:
     Error: .size expression does not evaluate to a constant

/tmp/ghc30560_0/ghc30560_0.s:12448:0:
     Error: .size expression does not evaluate to a constant

/tmp/ghc30560_0/ghc30560_0.s:12448:0:
     Error: .size expression does not evaluate to a constant

/tmp/ghc30560_0/ghc30560_0.s:12448:0:
     Error: .size expression does not evaluate to a constant

/tmp/ghc30560_0/ghc30560_0.s:12448:0:
     Error: .size expression does not evaluate to a constant

/tmp/ghc30560_0/ghc30560_0.s:12448:0:
     Error: .size expression does not evaluate to a constant

/tmp/ghc30560_0/ghc30560_0.s:12448:0:
     Error: .size expression does not evaluate to a constant

/tmp/ghc30560_0/ghc30560_0.s:12448:0:
     Error: .size expression does not evaluate to a constant

/tmp/ghc30560_0/ghc30560_0.s:12448:0:
     Error: .size expression does not evaluate to a constant

/tmp/ghc30560_0/ghc30560_0.s:12448:0:
     Error: .size expression does not evaluate to a constant

/tmp/ghc30560_0/ghc30560_0.s:12448:0:
     Error: .size expression does not evaluate to a constant

/tmp/ghc30560_0/ghc30560_0.s:12448:0:
     Error: .size expression does not evaluate to a constant

/tmp/ghc30560_0/ghc30560_0.s:12448:0:
     Error: .size expression does not evaluate to a constant

/tmp/ghc30560_0/ghc30560_0.s:12448:0:
     Error: .size expression does not evaluate to a constant

/tmp/ghc30560_0/ghc30560_0.s:12448:0:
     Error: .size expression does not evaluate to a constant

/tmp/ghc30560_0/ghc30560_0.s:12448:0:
     Error: .size expression does not evaluate to a constant

/tmp/ghc30560_0/ghc30560_0.s:12448:0:
     Error: .size expression does not evaluate to a constant

/tmp/ghc30560_0/ghc30560_0.s:12448:0:
     Error: .size expression does not evaluate to a constant

/tmp/ghc30560_0/ghc30560_0.s:12448:0:
     Error: .size expression does not evaluate to a constant

/tmp/ghc30560_0/ghc30560_0.s:12448:0:
     Error: .size expression does not evaluate to a constant

/tmp/ghc30560_0/ghc30560_0.s:12448:0:
     Error: .size expression does not evaluate to a constant

/tmp/ghc30560_0/ghc30560_0.s:12448:0:
     Error: .size expression does not evaluate to a constant

/tmp/ghc30560_0/ghc30560_0.s:12448:0:
     Error: .size expression does not evaluate to a constant

/tmp/ghc30560_0/ghc30560_0.s:12448:0:
     Error: .size expression does not evaluate to a constant

/tmp/ghc30560_0/ghc30560_0.s:12448:0:
     Error: .size expression does not evaluate to a constant

/tmp/ghc30560_0/ghc30560_0.s:12448:0:
     Error: .size expression does not evaluate to a constant

/tmp/ghc30560_0/ghc30560_0.s:12448:0:
     Error: .size expression does not evaluate to a constant

/tmp/ghc30560_0/ghc30560_0.s:12448:0:
     Error: .size expression does not evaluate to a constant

/tmp/ghc30560_0/ghc30560_0.s:12448:0:
     Error: .size expression does not evaluate to a constant

/tmp/ghc30560_0/ghc30560_0.s:12448:0:
     Error: .size expression does not evaluate to a constant

/tmp/ghc30560_0/ghc30560_0.s:12448:0:
     Error: .size expression does not evaluate to a constant

/tmp/ghc30560_0/ghc30560_0.s:12448:0:
     Error: .size expression does not evaluate to a constant

/tmp/ghc30560_0/ghc30560_0.s:12448:0:
     Error: .size expression does not evaluate to a constant

/tmp/ghc30560_0/ghc30560_0.s:12448:0:
     Error: .size expression does not evaluate to a constant

/tmp/ghc30560_0/ghc30560_0.s:12448:0:
     Error: .size expression does not evaluate to a constant

/tmp/ghc30560_0/ghc30560_0.s:12448:0:
     Error: .size expression does not evaluate to a constant

/tmp/ghc30560_0/ghc30560_0.s:12448:0:
     Error: .size expression does not evaluate to a constant

/tmp/ghc30560_0/ghc30560_0.s:12448:0:
     Error: .size expression does not evaluate to a constant

/tmp/ghc30560_0/ghc30560_0.s:12448:0:
     Error: .size expression does not evaluate to a constant

/tmp/ghc30560_0/ghc30560_0.s:12448:0:
     Error: .size expression does not evaluate to a constant

/tmp/ghc30560_0/ghc30560_0.s:12448:0:
     Error: .size expression does not evaluate to a constant

/tmp/ghc30560_0/ghc30560_0.s:12448:0:
     Error: .size expression does not evaluate to a constant

/tmp/ghc30560_0/ghc30560_0.s:12448:0:
     Error: .size expression does not evaluate to a constant

/tmp/ghc30560_0/ghc30560_0.s:12448:0:
     Error: .size expression does not evaluate to a constant

/tmp/ghc30560_0/ghc30560_0.s:12448:0:
     Error: .size expression does not evaluate to a constant

/tmp/ghc30560_0/ghc30560_0.s:12448:0:
     Error: .size expression does not evaluate to a constant

/tmp/ghc30560_0/ghc30560_0.s:12448:0:
     Error: .size expression does not evaluate to a constant

/tmp/ghc30560_0/ghc30560_0.s:12448:0:
     Error: .size expression does not evaluate to a constant

/tmp/ghc30560_0/ghc30560_0.s:12448:0:
     Error: .size expression does not evaluate to a constant

/tmp/ghc30560_0/ghc30560_0.s:12448:0:
     Error: .size expression does not evaluate to a constant

/tmp/ghc30560_0/ghc30560_0.s:12448:0:
     Error: .size expression does not evaluate to a constant

/tmp/ghc30560_0/ghc30560_0.s:12448:0:
     Error: .size expression does not evaluate to a constant

/tmp/ghc30560_0/ghc30560_0.s:12448:0:
     Error: .size expression does not evaluate to a constant

/tmp/ghc30560_0/ghc30560_0.s:12448:0:
     Error: .size expression does not evaluate to a constant

/tmp/ghc30560_0/ghc30560_0.s:12448:0:
     Error: .size expression does not evaluate to a constant

/tmp/ghc30560_0/ghc30560_0.s:12448:0:
     Error: .size expression does not evaluate to a constant

/tmp/ghc30560_0/ghc30560_0.s:12448:0:
     Error: .size expression does not evaluate to a constant

/tmp/ghc30560_0/ghc30560_0.s:12448:0:
     Error: .size expression does not evaluate to a constant

/tmp/ghc30560_0/ghc30560_0.s:12448:0:
     Error: .size expression does not evaluate to a constant

/tmp/ghc30560_0/ghc30560_0.s:12448:0:
     Error: .size expression does not evaluate to a constant

/tmp/ghc30560_0/ghc30560_0.s:12448:0:
     Error: .size expression does not evaluate to a constant

/tmp/ghc30560_0/ghc30560_0.s:12448:0:
     Error: .size expression does not evaluate to a constant

/tmp/ghc30560_0/ghc30560_0.s:12448:0:
     Error: .size expression does not evaluate to a constant

/tmp/ghc30560_0/ghc30560_0.s:12448:0:
     Error: .size expression does not evaluate to a constant

/tmp/ghc30560_0/ghc30560_0.s:12448:0:
     Error: .size expression does not evaluate to a constant

/tmp/ghc30560_0/ghc30560_0.s:12448:0:
     Error: .size expression does not evaluate to a constant

/tmp/ghc30560_0/ghc30560_0.s:12448:0:
     Error: .size expression does not evaluate to a constant

/tmp/ghc30560_0/ghc30560_0.s:12448:0:
     Error: .size expression does not evaluate to a constant

/tmp/ghc30560_0/ghc30560_0.s:12448:0:
     Error: .size expression does not evaluate to a constant

/tmp/ghc30560_0/ghc30560_0.s:12448:0:
     Error: .size expression does not evaluate to a constant

/tmp/ghc30560_0/ghc30560_0.s:12448:0:
     Error: .size expression does not evaluate to a constant

/tmp/ghc30560_0/ghc30560_0.s:12448:0:
     Error: .size expression does not evaluate to a constant

/tmp/ghc30560_0/ghc30560_0.s:12448:0:
     Error: .size expression does not evaluate to a constant

/tmp/ghc30560_0/ghc30560_0.s:12448:0:
     Error: .size expression does not evaluate to a constant

/tmp/ghc30560_0/ghc30560_0.s:12448:0:
     Error: .size expression does not evaluate to a constant

/tmp/ghc30560_0/ghc30560_0.s:12448:0:
     Error: .size expression does not evaluate to a constant

/tmp/ghc30560_0/ghc30560_0.s:12448:0:
     Error: .size expression does not evaluate to a constant

/tmp/ghc30560_0/ghc30560_0.s:12448:0:
     Error: .size expression does not evaluate to a constant

/tmp/ghc30560_0/ghc30560_0.s:12448:0:
     Error: .size expression does not evaluate to a constant

/tmp/ghc30560_0/ghc30560_0.s:12448:0:
     Error: .size expression does not evaluate to a constant

/tmp/ghc30560_0/ghc30560_0.s:12448:0:
     Error: .size expression does not evaluate to a constant

/tmp/ghc30560_0/ghc30560_0.s:12448:0:
     Error: .size expression does not evaluate to a constant

/tmp/ghc30560_0/ghc30560_0.s:12448:0:
     Error: .size expression does not evaluate to a constant

/tmp/ghc30560_0/ghc30560_0.s:12448:0:
     Error: .size expression does not evaluate to a constant

/tmp/ghc30560_0/ghc30560_0.s:12448:0:
     Error: .size expression does not evaluate to a constant

/tmp/ghc30560_0/ghc30560_0.s:12448:0:
     Error: .size expression does not evaluate to a constant

/tmp/ghc30560_0/ghc30560_0.s:12448:0:
     Error: .size expression does not evaluate to a constant

/tmp/ghc30560_0/ghc30560_0.s:12448:0:
     Error: .size expression does not evaluate to a constant

/tmp/ghc30560_0/ghc30560_0.s:12448:0:
     Error: .size expression does not evaluate to a constant

/tmp/ghc30560_0/ghc30560_0.s:12448:0:
     Error: .size expression does not evaluate to a constant

/tmp/ghc30560_0/ghc30560_0.s:12448:0:
     Error: .size expression does not evaluate to a constant

/tmp/ghc30560_0/ghc30560_0.s:12448:0:
     Error: .size expression does not evaluate to a constant

/tmp/ghc30560_0/ghc30560_0.s:12448:0:
     Error: .size expression does not evaluate to a constant

/tmp/ghc30560_0/ghc30560_0.s:12448:0:
     Error: .size expression does not evaluate to a constant

/tmp/ghc30560_0/ghc30560_0.s:12448:0:
     Error: .size expression does not evaluate to a constant

/tmp/ghc30560_0/ghc30560_0.s:12448:0:
     Error: .size expression does not evaluate to a constant

/tmp/ghc30560_0/ghc30560_0.s:12448:0:
     Error: .size expression does not evaluate to a constant

/tmp/ghc30560_0/ghc30560_0.s:12448:0:
     Error: .size expression does not evaluate to a constant

/tmp/ghc30560_0/ghc30560_0.s:12448:0:
     Error: .size expression does not evaluate to a constant

/tmp/ghc30560_0/ghc30560_0.s:12448:0:
     Error: .size expression does not evaluate to a constant

/tmp/ghc30560_0/ghc30560_0.s:12448:0:
     Error: .size expression does not evaluate to a constant

/tmp/ghc30560_0/ghc30560_0.s:12448:0:
     Error: .size expression does not evaluate to a constant

/tmp/ghc30560_0/ghc30560_0.s:12448:0:
     Error: .size expression does not evaluate to a constant

/tmp/ghc30560_0/ghc30560_0.s:12448:0:
     Error: .size expression does not evaluate to a constant

/tmp/ghc30560_0/ghc30560_0.s:12448:0:
     Error: .size expression does not evaluate to a constant

/tmp/ghc30560_0/ghc30560_0.s:12448:0:
     Error: .size expression does not evaluate to a constant

/tmp/ghc30560_0/ghc30560_0.s:12448:0:
     Error: .size expression does not evaluate to a constant

/tmp/ghc30560_0/ghc30560_0.s:12448:0:
     Error: .size expression does not evaluate to a constant

/tmp/ghc30560_0/ghc30560_0.s:12448:0:
     Error: .size expression does not evaluate to a constant

/tmp/ghc30560_0/ghc30560_0.s:12448:0:
     Error: .size expression does not evaluate to a constant

/tmp/ghc30560_0/ghc30560_0.s:12448:0:
     Error: .size expression does not evaluate to a constant

/tmp/ghc30560_0/ghc30560_0.s:12448:0:
     Error: .size expression does not evaluate to a constant

/tmp/ghc30560_0/ghc30560_0.s:12448:0:
     Error: .size expression does not evaluate to a constant

/tmp/ghc30560_0/ghc30560_0.s:12448:0:
     Error: .size expression does not evaluate to a constant

/tmp/ghc30560_0/ghc30560_0.s:12448:0:
     Error: .size expression does not evaluate to a constant

/tmp/ghc30560_0/ghc30560_0.s:12448:0:
     Error: .size expression does not evaluate to a constant

/tmp/ghc30560_0/ghc30560_0.s:12448:0:
     Error: .size expression does not evaluate to a constant

/tmp/ghc30560_0/ghc30560_0.s:12448:0:
     Error: .size expression does not evaluate to a constant

/tmp/ghc30560_0/ghc30560_0.s:12448:0:
     Error: .size expression does not evaluate to a constant

/tmp/ghc30560_0/ghc30560_0.s:12448:0:
     Error: .size expression does not evaluate to a constant

/tmp/ghc30560_0/ghc30560_0.s:12448:0:
     Error: .size expression does not evaluate to a constant

/tmp/ghc30560_0/ghc30560_0.s:12448:0:
     Error: .size expression does not evaluate to a constant

/tmp/ghc30560_0/ghc30560_0.s:12448:0:
     Error: .size expression does not evaluate to a constant

/tmp/ghc30560_0/ghc30560_0.s:12448:0:
     Error: .size expression does not evaluate to a constant

/tmp/ghc30560_0/ghc30560_0.s:12448:0:
     Error: .size expression does not evaluate to a constant

/tmp/ghc30560_0/ghc30560_0.s:12448:0:
     Error: .size expression does not evaluate to a constant

/tmp/ghc30560_0/ghc30560_0.s:12448:0:
     Error: .size expression does not evaluate to a constant

/tmp/ghc30560_0/ghc30560_0.s:12448:0:
     Error: .size expression does not evaluate to a constant

/tmp/ghc30560_0/ghc30560_0.s:12448:0:
     Error: .size expression does not evaluate to a constant

/tmp/ghc30560_0/ghc30560_0.s:12448:0:
     Error: .size expression does not evaluate to a constant

/tmp/ghc30560_0/ghc30560_0.s:12448:0:
     Error: .size expression does not evaluate to a constant

/tmp/ghc30560_0/ghc30560_0.s:12448:0:
     Error: .size expression does not evaluate to a constant

/tmp/ghc30560_0/ghc30560_0.s:12448:0:
     Error: .size expression does not evaluate to a constant

/tmp/ghc30560_0/ghc30560_0.s:12448:0:
     Error: .size expression does not evaluate to a constant

/tmp/ghc30560_0/ghc30560_0.s:12448:0:
     Error: .size expression does not evaluate to a constant

/tmp/ghc30560_0/ghc30560_0.s:12448:0:
     Error: .size expression does not evaluate to a constant

/tmp/ghc30560_0/ghc30560_0.s:12448:0:
     Error: .size expression does not evaluate to a constant

/tmp/ghc30560_0/ghc30560_0.s:12448:0:
     Error: .size expression does not evaluate to a constant

/tmp/ghc30560_0/ghc30560_0.s:12448:0:
     Error: .size expression does not evaluate to a constant

/tmp/ghc30560_0/ghc30560_0.s:12448:0:
     Error: .size expression does not evaluate to a constant

/tmp/ghc30560_0/ghc30560_0.s:12448:0:
     Error: .size expression does not evaluate to a constant

/tmp/ghc30560_0/ghc30560_0.s:12448:0:
     Error: .size expression does not evaluate to a constant

/tmp/ghc30560_0/ghc30560_0.s:12448:0:
     Error: .size expression does not evaluate to a constant

/tmp/ghc30560_0/ghc30560_0.s:12448:0:
     Error: .size expression does not evaluate to a constant

/tmp/ghc30560_0/ghc30560_0.s:12448:0:
     Error: .size expression does not evaluate to a constant

/tmp/ghc30560_0/ghc30560_0.s:12448:0:
     Error: .size expression does not evaluate to a constant

/tmp/ghc30560_0/ghc30560_0.s:12448:0:
     Error: .size expression does not evaluate to a constant

/tmp/ghc30560_0/ghc30560_0.s:12448:0:
     Error: .size expression does not evaluate to a constant

/tmp/ghc30560_0/ghc30560_0.s:12448:0:
     Error: .size expression does not evaluate to a constant

/tmp/ghc30560_0/ghc30560_0.s:12448:0:
     Error: .size expression does not evaluate to a constant

/tmp/ghc30560_0/ghc30560_0.s:12448:0:
     Error: .size expression does not evaluate to a constant

/tmp/ghc30560_0/ghc30560_0.s:12448:0:
     Error: .size expression does not evaluate to a constant

/tmp/ghc30560_0/ghc30560_0.s:12448:0:
     Error: .size expression does not evaluate to a constant

/tmp/ghc30560_0/ghc30560_0.s:12448:0:
     Error: .size expression does not evaluate to a constant

/tmp/ghc30560_0/ghc30560_0.s:12448:0:
     Error: .size expression does not evaluate to a constant

/tmp/ghc30560_0/ghc30560_0.s:12448:0:
     Error: .size expression does not evaluate to a constant

/tmp/ghc30560_0/ghc30560_0.s:12448:0:
     Error: .size expression does not evaluate to a constant

/tmp/ghc30560_0/ghc30560_0.s:12448:0:
     Error: .size expression does not evaluate to a constant

/tmp/ghc30560_0/ghc30560_0.s:12448:0:
     Error: .size expression does not evaluate to a constant

/tmp/ghc30560_0/ghc30560_0.s:12448:0:
     Error: .size expression does not evaluate to a constant

/tmp/ghc30560_0/ghc30560_0.s:12448:0:
     Error: .size expression does not evaluate to a constant

/tmp/ghc30560_0/ghc30560_0.s:12448:0:
     Error: .size expression does not evaluate to a constant

/tmp/ghc30560_0/ghc30560_0.s:12448:0:
     Error: .size expression does not evaluate to a constant

/tmp/ghc30560_0/ghc30560_0.s:12448:0:
     Error: .size expression does not evaluate to a constant

/tmp/ghc30560_0/ghc30560_0.s:12448:0:
     Error: .size expression does not evaluate to a constant

/tmp/ghc30560_0/ghc30560_0.s:12448:0:
     Error: .size expression does not evaluate to a constant

/tmp/ghc30560_0/ghc30560_0.s:12448:0:
     Error: .size expression does not evaluate to a constant

/tmp/ghc30560_0/ghc30560_0.s:12448:0:
     Error: .size expression does not evaluate to a constant

/tmp/ghc30560_0/ghc30560_0.s:12448:0:
     Error: .size expression does not evaluate to a constant

/tmp/ghc30560_0/ghc30560_0.s:12448:0:
     Error: .size expression does not evaluate to a constant

/tmp/ghc30560_0/ghc30560_0.s:12448:0:
     Error: .size expression does not evaluate to a constant

/tmp/ghc30560_0/ghc30560_0.s:12448:0:
     Error: .size expression does not evaluate to a constant

/tmp/ghc30560_0/ghc30560_0.s:12448:0:
     Error: .size expression does not evaluate to a constant

/tmp/ghc30560_0/ghc30560_0.s:12448:0:
     Error: .size expression does not evaluate to a constant

/tmp/ghc30560_0/ghc30560_0.s:12448:0:
     Error: .size expression does not evaluate to a constant

/tmp/ghc30560_0/ghc30560_0.s:12448:0:
     Error: .size expression does not evaluate to a constant

/tmp/ghc30560_0/ghc30560_0.s:12448:0:
     Error: .size expression does not evaluate to a constant

/tmp/ghc30560_0/ghc30560_0.s:12448:0:
     Error: .size expression does not evaluate to a constant

/tmp/ghc30560_0/ghc30560_0.s:12448:0:
     Error: .size expression does not evaluate to a constant

/tmp/ghc30560_0/ghc30560_0.s:12448:0:
     Error: .size expression does not evaluate to a constant

/tmp/ghc30560_0/ghc30560_0.s:12448:0:
     Error: .size expression does not evaluate to a constant

/tmp/ghc30560_0/ghc30560_0.s:12448:0:
     Error: .size expression does not evaluate to a constant

/tmp/ghc30560_0/ghc30560_0.s:12448:0:
     Error: .size expression does not evaluate to a constant
make: *** [build-ghc6-stamp] Error 1
dpkg-buildpackage: error: debian/rules build gave error exit status 2
────────────────────────────────────────────────────────────────────────────────
Build finished at 20110320-1747
FAILED [dpkg-buildpackage died]
────────────────────────────────────────────────────────────────────────────────
Purging /var/lib/schroot/mount/sid-amd64-63315f30-fc77-4683-96af-fa9cd8780940/build/laney-haskell-happstack-util_0.5.0.2-2build2-amd64-qPDR7R
Not cleaning session: cloned chroot in use

┌──────────────────────────────────────────────────────────────────────────────┐
│ Summary                                                                      │
└──────────────────────────────────────────────────────────────────────────────┘

Architecture: amd64
Build-Space: 7184
Build-Time: 17
Distribution: sid
Fail-Stage: build
Install-Time: 87
Job: haskell-happstack-util_0.5.0.2-2build2.dsc
Package: haskell-happstack-util
Package-Time: 113
Source-Version: 0.5.0.2-2build2
Space: 7184
Status: attempted
Version: 0.5.0.2-2build2
────────────────────────────────────────────────────────────────────────────────
Finished at 20110320-1747
Build needed 00:01:53, 7184k disc space


--- End Message ---
{-# LANGUAGE BangPatterns #-}
{-# OPTIONS_GHC -funbox-strict-fields -fvia-c -optc-funroll-all-loops -optc-O3 #-}
--
-- Module      : Happstack.Crypto.MD5
-- License     : BSD3
-- Maintainer  : lemmih@vo.com
-- Author      : Thomas.DuBuisson@mail.google.com
-- Stability   : experimental
-- Portability : portable, requires bang patterns and ByteString
-- Tested with : GHC-6.8.1
--

module Happstack.Crypto.MD5
	(md5
        ,md5InitialContext
	,md5Update
	,md5Finalize
	,MD5Context
	,md5File
        ,stringMD5
	,applyMD5Rounds
        ,test
	) where

import Prelude hiding ((!!))
import qualified Data.ByteString as B
import qualified Data.ByteString.Lazy as L
import Data.ByteString.Internal
import Data.Bits
import Data.List hiding ((!!))
import Data.Int(Int64)
import Data.Word
import Foreign.Storable
import Foreign.Ptr
import Foreign.ForeignPtr
import Numeric
import System.Environment()
import System.IO

blockSize :: Int
blockSize = 512		-- Block size in bits

blockSizeBytes :: Int
blockSizeBytes = blockSize `div` 8

blockSizeBytesW64 :: Int64
blockSizeBytesW64 = fromIntegral blockSizeBytes

blockSizeBits :: Word64
blockSizeBits = fromIntegral blockSize

data MD5Partial = MD5Par !Word32 !Word32 !Word32 !Word32
data MD5Context = MD5Ctx { mdPartial  :: MD5Partial,
			   mdLeftOver :: ByteString,
			   mdTotalLen :: Word64
			}

md5InitialContext :: MD5Context
md5InitialContext = MD5Ctx (MD5Par h0 h1 h2 h3) B.empty 0
h0, h1, h2, h3 :: Word32
h0 = 0x67452301
h1 = 0xEFCDAB89
h2 = 0x98BADCFE
h3 = 0x10325476

-- | Will read the lazy ByteString and return the md5 digest.
--   Some application might want to wrap this function for type safty.
md5 :: L.ByteString -> L.ByteString
md5 bs = md5Finalize $ md5Update md5InitialContext bs

md5Finalize :: MD5Context -> L.ByteString
md5Finalize !ctx@(MD5Ctx (MD5Par _ _ _ _) r !totLen) =
	let totLen' = (totLen + 8*fromIntegral l) :: Word64
	    padBS = B.pack $ 0x80 : replicate lenZeroPad 0 ++ size_split 8 totLen'

	    (MD5Ctx (MD5Par a' b' c' d') _ _) = md5Update ctx (L.fromChunks [r,padBS])
	in L.pack $ concatMap (size_split 4) [a',b',c',d']
	where
	l = B.length r
	lenZeroPad = if (l+1) <= blockSizeBytes - 8
			then (blockSizeBytes - 8) - (l+1)
			else (2*blockSizeBytes - 8) - (l+1)

size_split :: (Integral t, Num a) => Int -> t -> [a]
size_split 0 _ = []
size_split p n = (fromIntegral d):size_split (p-1) n'
    where (n', d) = divMod n 256

md5Update :: MD5Context -> L.ByteString -> MD5Context
md5Update ctx bsLazy =
	let _ = L.toChunks bsLazy
	    blks = block bsLazy
	in foldl' performMD5Update ctx blks

block :: L.ByteString -> [ByteString]
block bs = case L.toChunks bs of
             []		-> []
             _ 	        -> (B.concat . L.toChunks) top : block rest
    where
      (top,rest) = L.splitAt blockSizeBytesW64 bs
{-# INLINE block #-}

-- Assumes ByteString length == blockSizeBytes, will fold the 
-- context across calls to applyMD5Rounds.
performMD5Update :: MD5Context -> ByteString -> MD5Context
performMD5Update !ctx@(MD5Ctx !par@(MD5Par !a !b !c !d) _ !len) bs =
	let MD5Par a' b' c' d' = applyMD5Rounds par bs
	in if B.length bs == blockSizeBytes
		then MD5Ctx {
			mdPartial = MD5Par (a' + a) (b' + b) (c' + c) (d' + d),
			mdLeftOver = B.empty,
			mdTotalLen = len + blockSizeBits
			}
		else ctx { mdLeftOver = bs } 

applyMD5Rounds :: MD5Partial -> ByteString -> MD5Partial
applyMD5Rounds (MD5Par a b c d) w =
	let -- Round 1
	    !r0 = ff   a  b  c  d   (w!!0)  7  3614090360
	    !r1 = ff   d r0  b  c   (w!!1)  12 3905402710
	    !r2 = ff   c r1 r0  b   (w!!2)  17 606105819
	    !r3 = ff   b r2 r1 r0   (w!!3)  22 3250441966
	    !r4 = ff  r0 r3 r2 r1   (w!!4)  7  4118548399
	    !r5 = ff  r1 r4 r3 r2   (w!!5)  12 1200080426
	    !r6 = ff  r2 r5 r4 r3   (w!!6)  17 2821735955
	    !r7 = ff  r3 r6 r5 r4   (w!!7)  22 4249261313
	    !r8 = ff  r4 r7 r6 r5   (w!!8)  7  1770035416
	    !r9 = ff  r5 r8 r7 r6   (w!!9)  12 2336552879
	    !r10 = ff r6 r9 r8 r7  (w!!10) 17 4294925233
	    !r11 = ff r7 r10 r9 r8 (w!!11) 22 2304563134
	    !r12 = ff r8 r11 r10 r9 (w!!12) 7  1804603682
	    !r13 = ff r9 r12 r11 r10 (w!!13) 12 4254626195
	    !r14 = ff r10 r13 r12 r11 (w!!14) 17 2792965006
	    !r15 = ff r11 r14 r13 r12 (w!!15) 22 1236535329
	    -- Round 2
	    !r16 = gg r12 r15 r14 r13 (w!!1)  5  4129170786
	    !r17 = gg r13 r16 r15 r14 (w!!6)  9  3225465664
	    !r18 = gg r14 r17 r16 r15 (w!!11) 14 643717713
	    !r19 = gg r15 r18 r17 r16 (w!!0)  20 3921069994
	    !r20 = gg r16 r19 r18 r17 (w!!5)  5  3593408605
	    !r21 = gg r17 r20 r19 r18 (w!!10) 9  38016083
	    !r22 = gg r18 r21 r20 r19 (w!!15) 14 3634488961
	    !r23 = gg r19 r22 r21 r20 (w!!4)  20 3889429448
	    !r24 = gg r20 r23 r22 r21 (w!!9)  5  568446438
	    !r25 = gg r21 r24 r23 r22 (w!!14) 9  3275163606
	    !r26 = gg r22 r25 r24 r23 (w!!3)  14 4107603335
	    !r27 = gg r23 r26 r25 r24 (w!!8)  20 1163531501
	    !r28 = gg r24 r27 r26 r25 (w!!13) 5  2850285829
	    !r29 = gg r25 r28 r27 r26 (w!!2)  9  4243563512
	    !r30 = gg r26 r29 r28 r27 (w!!7)  14 1735328473
	    !r31 = gg r27 r30 r29 r28 (w!!12) 20 2368359562
	    -- Round 3
	    !r32 = hh r28 r31 r30 r29 (w!!5)  4  4294588738
	    !r33 = hh r29 r32 r31 r30 (w!!8)  11 2272392833
	    !r34 = hh r30 r33 r32 r31 (w!!11) 16 1839030562
	    !r35 = hh r31 r34 r33 r32 (w!!14) 23 4259657740
	    !r36 = hh r32 r35 r34 r33 (w!!1)  4  2763975236
	    !r37 = hh r33 r36 r35 r34 (w!!4)  11 1272893353
	    !r38 = hh r34 r37 r36 r35 (w!!7)  16 4139469664
	    !r39 = hh r35 r38 r37 r36 (w!!10) 23 3200236656
	    !r40 = hh r36 r39 r38 r37 (w!!13) 4  681279174
	    !r41 = hh r37 r40 r39 r38 (w!!0)  11 3936430074
	    !r42 = hh r38 r41 r40 r39 (w!!3)  16 3572445317
	    !r43 = hh r39 r42 r41 r40 (w!!6)  23 76029189
	    !r44 = hh r40 r43 r42 r41 (w!!9)  4  3654602809
	    !r45 = hh r41 r44 r43 r42 (w!!12) 11 3873151461
	    !r46 = hh r42 r45 r44 r43 (w!!15) 16 530742520
	    !r47 = hh r43 r46 r45 r44 (w!!2)  23 3299628645
	    -- Round 4
	    !r48 = ii r44 r47 r46 r45 (w!!0)  6  4096336452
	    !r49 = ii r45 r48 r47 r46 (w!!7)  10 1126891415
	    !r50 = ii r46 r49 r48 r47 (w!!14) 15 2878612391
	    !r51 = ii r47 r50 r49 r48 (w!!5)  21 4237533241
	    !r52 = ii r48 r51 r50 r49 (w!!12) 6  1700485571
	    !r53 = ii r49 r52 r51 r50 (w!!3)  10 2399980690
	    !r54 = ii r50 r53 r52 r51 (w!!10) 15 4293915773
	    !r55 = ii r51 r54 r53 r52 (w!!1)  21 2240044497
	    !r56 = ii r52 r55 r54 r53 (w!!8)  6  1873313359
	    !r57 = ii r53 r56 r55 r54 (w!!15) 10 4264355552
	    !r58 = ii r54 r57 r56 r55 (w!!6)  15 2734768916
	    !r59 = ii r55 r58 r57 r56 (w!!13) 21 1309151649
	    !r60 = ii r56 r59 r58 r57 (w!!4)  6  4149444226
	    !r61 = ii r57 r60 r59 r58 (w!!11) 10 3174756917
	    !r62 = ii r58 r61 r60 r59 (w!!2)  15 718787259
	    !r63 = ii r59 r62 r61 r60 (w!!9)  21 3951481745
	in MD5Par r60 r63 r62 r61
	where
	f !x !y !z = (x .&. y) .|. ((complement x) .&. z)
	{-# INLINE f #-}
	g !x !y !z = (x .&. z) .|. (y .&. (complement z))
	{-# INLINE g #-}
	h !x !y !z = (x `xor` y `xor` z)
	{-# INLINE h #-}
	i !x !y !z = y `xor` (x .|. (complement z))
	{-# INLINE i #-}
	ff a_ b_ c_ d_ x s ac = {-# SCC "ff" #-}
		let !a' = f b_ c_ d_ + x + ac + a_
		    !a'' = rotateL a' s
		in a'' + b_
	{-# INLINE ff #-}
	gg a_ b_ c_ d_ x s ac = {-# SCC "gg" #-}
		let !a' = g b_ c_ d_ + x + ac + a_
		    !a'' = rotateL a' s
		in a'' + b_
	{-# INLINE gg #-}
	hh a_ b_ c_ d_ x s ac = {-# SCC "hh" #-}
		let !a' = h b_ c_ d_ + x + ac + a_
		    !a'' = rotateL a' s
		    in a'' + b_
	{-# INLINE hh #-}
	ii a_ b_ c_ d_  x s ac = {-# SCC "ii" #-}
		let !a' = i b_ c_ d_ + x + ac + a_
		    !a'' = rotateL a' s
		in a'' + b_
	{-# INLINE ii #-}
	(!!) word32s pos = getNthWord pos word32s
	{-# INLINE (!!) #-}

	getNthWord n (PS ptr off _) =
		inlinePerformIO $ withForeignPtr ptr $ \ptr' -> do
		let p = castPtr $ plusPtr ptr' off
		peekElemOff p n
	{-# INLINE getNthWord #-}
{-# INLINE applyMD5Rounds #-}

stringMD5 :: L.ByteString -> String
stringMD5 lazy = 
	let x = L.toChunks lazy
	    w = B.unpack (B.concat x)
	    s = map (\v -> showHex v "") w
	    s' = map (\v -> if length v == 1 then '0':v else v) s
	in concat s'

test :: IO ()
test = do
	let h = md5 $ L.pack []
	putStrLn $ "Hash is:   " ++ (stringMD5 h)
	putStrLn $ "Should Be: d41d8cd98f00b204e9800998ecf8427e" 

md5File :: String -> IO ()
md5File f = do
	h <- openFile f ReadMode
	s <- L.hGetContents h
	let hash = md5 s
	putStrLn (stringMD5 hash)
	return ()

Attachment: signature.asc
Description: Digital signature


Reply to: