GHC fails to build on x86_64. ------------------------------------------------------------------------ ==fptools== make boot - --no-print-directory -r; in /var/tmp/portage/ghc-6.4.1-r2/work/ghc-6.4.1/ghc/lib/compat ------------------------------------------------------------------------ ../../../glafp-utils/mkdependC/mkdependC -f .depend -I. -Iinclude -I../../includes -- -O -Wa,--noexecstack -I. -Iinclude -- cbits/directory.c cbits/rawSystem.c /opt/ghc/bin/ghc -M -optdep-f -optdep.depend -osuf o -optdep--exclude-module=System.Directory.Internals -H16m -O -optc-nopie -optl-nopie -optc-fno-stack-protector -opta-Wa,--noexecstack -fno-warn-deprecations -I. -Iinclude -Rghc-timing -ignore-package Cabal -I../../../libraries -fglasgow-exts -no-recomp Compat/Directory.hs Compat/RawSystem.hs Distribution/Compat/ReadP.hs Distribution/Extension.hs Distribution/GetOpt.hs Distribution/InstalledPackageInfo.hs Distribution/License.hs Distribution/Package.hs Distribution/ParseUtils.hs Distribution/Setup.hs Distribution/Version.hs Could not find module `System.Directory': use -v to see a list of the files searched for (imported from Compat/Directory.hs) <<ghc: 29875608 bytes, 5 GCs, 136792/136792 avg/max bytes residency (1 samples), 16M in use, 0.00 INIT (0.00 elapsed), 0.05 MUT (0.59 elapsed), 0.01 GC (0.73 elapsed) :ghc>> make[3]: *** [depend] Error 1 make[2]: *** [boot] Error 1 make[1]: *** [boot] Error 1 make[1]: Leaving directory `/var/tmp/portage/ghc-6.4.1-r2/work/ghc-6.4.1/ghc' make: *** [build] Error 1 luke-jr@tsurukikun gentoo $ emerge --info Portage 2.0.54 (!/usr/local/portage/profiles/default-linux/amd64/2004.3, gcc-3.4.3, glibc-2.3.5-r2, 2.6.14-gentoo-r2-ljr x86_64) ================================================================= System uname: 2.6.14-gentoo-r2-ljr x86_64 AMD Athlon(tm) 64 Processor 3200+ Gentoo Base System version 1.6.12 distcc 2.18.3 x86_64-pc-linux-gnu (protocols 1 and 2) (default port 3632) [disabled] ccache version 2.3 [enabled] dev-lang/python: 2.3.5, 2.4.1-r1 sys-apps/sandbox: 1.2.11 sys-devel/autoconf: 2.13, 2.59-r6 sys-devel/automake: 1.4_p6, 1.5, 1.6.3, 1.7.9-r1, 1.8.5-r3, 1.9.5 sys-devel/binutils: 2.15.92.0.2-r10 sys-devel/libtool: 1.5.18-r1 virtual/os-headers: 2.6.11-r2 ACCEPT_KEYWORDS="amd64" AUTOCLEAN="yes" CBUILD="x86_64-pc-linux-gnu" CFLAGS="-O2 -march=k8 -pipe -fomit-frame-pointer -fweb -ftracer -fPIC" CHOST="x86_64-pc-linux-gnu" CONFIG_PROTECT="/etc /usr//lib/mozilla/defaults/pref /usr/kde/3.3/env /usr/kde/3.3/share/config /usr/kde/3.3/shutdown /usr/kde/3.4/env /usr/kde/3.4/share/config /usr/kde/3.4/shutdown /usr/lib/X11/xkb /usr/share/config /var/bind" CONFIG_PROTECT_MASK="/etc/gconf /etc/terminfo /etc/env.d" CXXFLAGS="-O2 -march=k8 -pipe -fomit-frame-pointer -fweb -ftracer -fPIC" DISTDIR="/usr/portage/distfiles" FEATURES="autoconfig buildpkg ccache distlocks fixpackages keeptemp keepwork sandbox" GENTOO_MIRRORS="http://distfiles.gentoo.org/" LDFLAGS="-Wl,-O1" PKGDIR="/usr/portage/packages" PORTAGE_TMPDIR="/var/tmp" PORTDIR="/usr/portage" PORTDIR_OVERLAY="/usr/local/portage" SYNC="rsync://rsync.gentoo.org/gentoo-portage" USE="amd64 X acl acpi aim alsa apache2 avi berkdb bitmap-fonts bootsplash bzip2 bzlib calendar caps cjk crypt cups curl curlwrappers dbx dvb dvd dvdr eds emboss encode ethereal faad fam fastcgi fbcon ffmpeg flac flatfile foomaticdb fortran ftp gcj gdbm gif gpm gstreamer gtk gtk2 gtkhtml iconv icq imap imlib inifile ipv6 jabber java jikes joystick jpeg kde ldap libsamplerate lzw lzw-tiff mad maildir matroska mcal memlimit mime mng mp3 mpeg msn mysql ncurses nls nocd nptl oggvorbis opengl oscar oss pam pda pdflib perl php pic png posix ppds python qt quicktime readline samba scanner sdk sdl session shared skey slp snmp socks5 speex spell ssl subversion svg tcpd theora tiff truetype truetype-fonts type1-fonts unicode usb userlocales vhosts vorbis wmf wxwindows xml2 xosd xpm xsl xv xvid yahoo zlib" Unset: ASFLAGS, CTARGET, INSTALL_MASK, LANG, LC_ALL, LINGUAS, MAKEOPTS
Which version?
!!! ERROR: dev-lang/ghc-6.4.1-r2 failed.
It works fine for me. I am running a testing profile with newer gcc/binutils/glibc versions, but I believe other members of the haskell herd have tested building ghc-6.4.1-r2 with stable gcc-3.4 and glibc-2.3.5 with no problems. Here is my emerge --info: Gentoo Base System version 1.12.0_pre16 Portage 2.1_pre7-r3 (default-linux/amd64/2006.0, gcc-4.0.3, glibc-2.4-r1, 2.6.16-gentoo x86_64) ================================================================= System uname: 2.6.16-gentoo x86_64 AMD Athlon(tm) 64 Processor 3000+ distcc 2.18.3 x86_64-pc-linux-gnu (protocols 1 and 2) (default port 3632) [disabled] dev-lang/python: 2.3.5-r2, 2.4.2-r1 sys-apps/sandbox: 1.2.17 sys-devel/autoconf: 2.13, 2.59-r7 sys-devel/automake: 1.4_p6, 1.5, 1.6.3, 1.7.9-r1, 1.8.5-r3, 1.9.6-r2 sys-devel/binutils: 2.16.1-r2 sys-devel/libtool: 1.5.22 virtual/os-headers: 2.6.11-r3 ACCEPT_KEYWORDS="amd64 ~amd64" AUTOCLEAN="yes" CBUILD="x86_64-pc-linux-gnu" CFLAGS="-O3 -pipe -ffast-math" CHOST="x86_64-pc-linux-gnu" CONFIG_PROTECT="/etc /usr/kde/2/share/config /usr/kde/3.4/env /usr/kde/3.4/share/config /usr/kde/3.4/shutdown /usr/kde/3.5/env /usr/kde/3.5/share/config /usr/kde/3.5/shutdown /usr/kde/3/share/config /usr/lib64/mozilla/defaults/pref /usr/share/X11/xkb /usr/share/config /var/qmail/control" CONFIG_PROTECT_MASK="/etc/gconf /etc/revdep-rebuild /etc/terminfo /etc/texmf/web2c /etc/env.d" CXXFLAGS="-O3 -pipe -ffast-math" DISTDIR="/usr/portage/distfiles" FEATURES="autoconfig distlocks metadata-transfer sandbox sfperms strict" GENTOO_MIRRORS="http://gentoo-distfiles.mirrors.tds.net" MAKEOPTS="-j2" PKGDIR="/usr/portage/packages" PORTAGE_TMPDIR="/var/tmp" PORTDIR="/usr/portage" PORTDIR_OVERLAY="/usr/local/portage" SYNC="rsync://rsync.gentoo.org/gentoo-portage" USE="amd64 X alsa apache2 avi berkdb bitmap-fonts cli crypt ctype cups dba dri eds emboss encode expat fastbuild foomaticdb force-cgi-redirect fortran ftp gd gif gnome gpm gstreamer gtk gtk2 imlib ipv6 isdnlog jpeg kde lzw lzw-tiff memlimit mp3 mpeg ncurses nls nptl opengl pam pcre pdflib perl png posix pppd python qt quicktime readline sdl session simplexml soap sockets spell spl ssl tcpd tiff tokenizer truetype truetype-fonts type1-fonts usb xml xpm xsl xv zlib elibc_glibc kernel_linux userland_GNU" Unset: ASFLAGS, CTARGET, EMERGE_DEFAULT_OPTS, LANG, LC_ALL, LDFLAGS, LINGUAS My initial guess is that having "ccache" in your FEATURES may be causing you some trouble. I don't think any of us have tested building ghc with distcc and cache, and this is probably not yet supported by the upstream ghc developers. To be completely safe, you might also want to take out "distcc", "keepwork", and "keeptemp" from your FEATURES, as well. You might try reemerging ghc-6.4.1-r2 with the following command, to see if you have better luck: FEATURES="-distcc -ccache -keepwork -keeptemp" emerge ghc We will continue to investigate.
What version of ghc-bin are you using Luke?
[ebuild R ] dev-lang/ghc-bin-6.4.1 0 kB
If 'darcs' can be trusted as a quick-and-reliable prediction for GHC's result (they both fail), then -distcc -ccache doesn't help the matter. checking how to run the C preprocessor... x86_64-pc-linux-gnu-gcc -E checking for a BSD-compatible install... /bin/install -c checking for ghc... ghc configure: error: Compile failed. !!! Please attach the config.log to your bug report: !!! /var/tmp/portage/darcs-1.0.6/work/darcs-1.0.6/config.log
Created attachment 84029 [details] darcs configure failure
(In reply to comment #7) > Created an attachment (id=84029) [edit] > darcs configure failure This would be the important bit: configure:2680: found /opt/ghc/bin/ghc configure:2690: result: ghc configure:2712: ghc -o conftest conftest.hs conftest.hs:1:0: Failed to load interface for `Prelude': Could not find module `Prelude': use -v to see a list of the files searched for configure:2715: $? = 1 configure: failed program was: -- #line 2707 "configure" main = putStr "Hello world!\n" end of failed program. configure:2724: error: Compile failed. This would indicate a messed-up installation of ghc-bin. Perhaps you could try compiling a hello world program using -v to see where it's looking and check that those .hi files really do exist. The output of "ghc-pkg list" might also shed some light on the situation.
tsurukikun portage # ghc-pkg list bash: ghc-pkg: command not found tsurukikun portage # /opt/ghc/bin/ghc-pkg list /opt/ghc/lib64/ghc-6.4.1/package.conf: rts-1.0, base-1.0, haskell98-1.0, template-haskell-1.0, unix-1.0, Cabal-1.0, parsec-1.0, haskell-src-1.0, network-1.0, QuickCheck-1.0, HUnit-1.1, mtl-1.0, fgl-5.2, stm-1.0, readline-1.0, (lang-1.0), (concurrent-1.0), (posix-1.0), (util-1.0), (data-1.0), (text-1.0), (net-1.0), (hssource-1.0)
(In reply to comment #9) > tsurukikun portage # ghc-pkg list > bash: ghc-pkg: command not found Was this run from a terminal that was opened before ghc-bin was installed? Just like if you switch gcc, after installing ghc-bin you need to run source /etc/profile in any existing terminals. Otherwise /opt/ghc/bin will not get added to your PATH for the existing sessions. This will not be the root of the problem however. Ok, so I suspect that the ghc-bin install is corrupted in some way. Can you run these tests: For this test you will need to have portage-utils installed. The output from thic command should be short enough that it can be included inline in this bug report. $ qcheck ghc-bin : verify digests The output from the following command will be quite long. It would be best to add it as an attachment to this bug report. $ equery files --md5sum --type ghc-bin
luke-jr@tsurukikun ~ $ qcheck ghc-bin : verify digests Checking dev-lang/ghc-bin-6.4.1 ... * 1155 out of 1155 files are good
Created attachment 84075 [details] equery files --md5sum --type ghc-bin luke-jr@tsurukikun ~ $ equery files --md5sum --type ghc-bin >/tmp/md5s
No, it was a new terminal, though not a new login session (which only happens during reboot, really)... However, sourcing /etc/profile prior to emerging does not help the problem.
Ok, so that all looks ok. The next things we thought of are: 1. attach your /opt/ghc/lib64/ghc-6.4.1/package.conf 2. what is your $PATH ? 3. what do you get when compiling the following module using -v: $ echo 'main = print "hello world"' > hello.hs $ ghc -v hello.hs again that output is quite big, you may prefer to attach it.
Created attachment 84105 [details] /opt/ghc/lib64/ghc-6.4.1/package.conf
PATH=~/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/opt/bin:/usr/x86_64-pc-linux-gnu/gcc-bin/3.4.3:/opt/ghc/bin:/opt/blackdown-jdk-1.4.2.02/bin:/opt/blackdown-jdk-1.4.2.02/jre/bin:/usr/bin:/usr/qt/3/bin:/usr/kde/3.4/sbin:/usr/kde/3.4/bin:/usr/kde/3.3/sbin:/usr/kde/3.3/bin tsurukikun tmp # echo 'main = print "hello world"' > hello.hs tsurukikun tmp # ghc -v hello.hs Glasgow Haskell Compiler, Version 6.4.1, for Haskell 98, compiled by GHC version 6.4.1 Using package config file: /opt/ghc/lib64/ghc-6.4.1/package.conf Hsc static flags: -static *** Checking old interface for Main: *** Parser: *** Renamer/typechecker: hello.hs:1:0: Failed to load interface for `Prelude': Could not find module `Prelude': locations searched: Prelude.hi Prelude.hi-boot /usr/lib64/ghc-6.4.1/imports/Prelude.hi *** Deleting temp files Deleting: /tmp/ghc2077.s Warning: deleting non-existent /tmp/ghc2077.s
Ah, I see your problem, although the root cause is not yet clear to me. Your package.conf contains references to directories in /usr/lib64/ghc-6.4.1, which are not valid for ghc-bin-6.4.1, where everything is stored in /opt/ghc. Here are a few bits in your package.conf which illustrate the problem: libraryDirs = ["/usr/lib64/ghc-6.4.1"], hsLibraries = ["HSrts"], extraLibraries = ["m","gmp","dl"], includeDirs = ["/usr/lib64/ghc-6.4.1/include"], includes = ["Stg.h"], depends = [] Instead, these paths should resemble the following: libraryDirs = ["/opt/ghc/lib64/ghc-6.4.1"], hsLibraries = ["HSrts"], extraLibraries = ["m","gmp","dl"], includeDirs = ["/opt/ghc/lib64/ghc-6.4.1/include"], includes = ["Stg.h"], depends = [] Duncan normally tests ghc-bin on a stable configuration, so I am puzzled as to how this ended up in your /opt/ghc/lib64/package.conf file. As a workaround, you can try using sed to fix your package.conf file, as follows: sed -i -e "s|/usr|/opt/ghc|g" /opt/ghc/lib64/package.conf There WAS a bug in ghc-bin-6.4, in which the wrong paths (such as yours) were not fixed in package.conf by the ebuild script prior to installation. This should have been fixed in ghc-bin-6.4.1, so I am not sure why the sed commands in src_install() have failed to fix the paths in your package.conf. (It did the right thing in all of the tests we tried...) You might try syncing up your portage tree and reemerging ghc-bin-6.4.1, just to see if the paths in package.conf get fixed this time around. If not, then I will try to replicate your environment in a chroot directory and see if I can reproduce the problem. This may take a while, as I will be out of town for much of next week.
Luke, any luck on this? any progress?
Executing the sed manually worked, thanks. My portage tree was up to sync prior to emerging and reporting this bug.
Is this bug still reproducable or can we close it? Does emerging ghc-bin-6.4.1 still give messed up paths in: /opt/ghc/lib64/ghc-6.4.1/package.conf
No activity on this bug for a month. We have not been able to reproduce it. If anyone can repoduce it then do please reopen this bug report.