Summary: | building ghc 6.12.3/7.0.3 fails (parallel building issue?) | ||
---|---|---|---|
Product: | Gentoo Linux | Reporter: | Andrew John Hughes <gnu_andrew> |
Component: | [OLD] Development | Assignee: | Gentoo's Haskell Language team <haskell> |
Status: | RESOLVED FIXED | ||
Severity: | normal | CC: | idkravitz, rose |
Priority: | High | ||
Version: | unspecified | ||
Hardware: | All | ||
OS: | Linux | ||
URL: | http://hackage.haskell.org/trac/ghc/ticket/3763 | ||
Whiteboard: | |||
Package list: | Runtime testing required: | --- |
Description
Andrew John Hughes
2010-06-30 18:10:55 UTC
Same result with USE="ghcbootstrap". "cp libraries/dph/dph-common/LICENSE libraries/dph/dph-par.tmp/LICENSE /bin/sh: inplace/bin/mkdirhier: Permission denied" The build systems seems really broken Not sure why this problem occurs, but anyway: (In reply to comment #0) > Don't see why it needs to use a binary of 6.12.3 for an update. GHC is itself written in Haskell. As such, it needs a Haskell compiler installed to build itself. We provide a pre-built (by us, not upstream) binary version of GHC to assist users in this (as even if you have an older version of GHC installed already, using the latest version to compile itself results in better performance, etc.). The ghcboostrap USE flag is used by us to build these binaries, and shouldn't actually be used by end users. Here's a few things you can try: 1) Uninstall 6.10.4-r1 first and then see if 6.12.3 installs; if so, then it may be some interference between your current system install and the binary (the build system has changed twice since 6.10.4; once from 6.10.4 to 6.12.1 with a major change, and a minor change from 6.12.1 to 6.12.2 which necessitated some hacking around by us). 2) Disable ccache; we've had at least one problem with someone using ccache (which is why we tried to hack around the build system update in 6.12.2), though this doesn't look applicable here. 3) Try installing 6.12.3 with USE=binary, which will install our pre-built binary and see if that version of GHC works. I tried updating with USE=-binary -> fail then removed 6.10.4, retried with USE=-binary -> identical fail then I installed with USE=binary and it worked Portage 2.2_rc67 (default/linux/amd64/10.0/no-multilib, gcc-4.4.4, glibc-2.11.2-r0, 2.6.34-gentoo-r1 x86_64) ================================================================= System uname: Linux-2.6.34-gentoo-r1-x86_64-Intel-R-_Core-TM-_i7_CPU_920_@_2.67GHz-with-gentoo-2.0.1 Timestamp of tree: Fri, 02 Jul 2010 18:15:03 +0000 app-shells/bash: 4.1_p7 dev-java/java-config: 2.1.11 dev-lang/python: 2.6.5-r2 sys-apps/baselayout: 2.0.1 sys-apps/openrc: 0.6.1-r1 sys-apps/sandbox: 2.2 sys-devel/autoconf: 2.65-r1 sys-devel/automake: 1.10.3, 1.11.1 sys-devel/binutils: 2.20.1-r1 sys-devel/gcc: 4.4.4-r1 sys-devel/gcc-config: 1.4.1 sys-devel/libtool: 2.2.10 virtual/os-headers: 2.6.34 ACCEPT_KEYWORDS="amd64 ~amd64" ACCEPT_LICENSE="* -@EULA GPL-1 GPL-2 LGPL-2 LGPL-2.1 LLGPL-2.1 FDL-1.1 MPL-1.0 MPL-1.1 Apache-2.0 Artistic BSD MIT X11 dlj-1.1" CBUILD="x86_64-pc-linux-gnu" CFLAGS="-march=core2 -msse4 -mcx16 -msahf -O2 -pipe -ggdb -D_FORTIFY_SOURCE=2" CHOST="x86_64-pc-linux-gnu" CONFIG_PROTECT="/etc" CONFIG_PROTECT_MASK="/etc/ca-certificates.conf /etc/env.d /etc/env.d/java/ /etc/gconf /etc/gentoo-release /etc/revdep-rebuild /etc/sandbox.d /etc/terminfo /etc/udev /lib/modules" CXXFLAGS="-march=core2 -msse4 -mcx16 -msahf -O2 -pipe -ggdb -D_FORTIFY_SOURCE=2" DISTDIR="/usr/portage/distfiles" FEATURES="assume-digests candy collision-protect distlocks fakeroot fixpackages news parallel-fetch preserve-libs protect-owned sandbox severe sfperms sign splitdebug strict unmerge-logs unmerge-orphans userfetch userpriv usersandbox" GENTOO_MIRRORS="http://gentoo.mneisen.org/ http://de-mirror.org/distro/gentoo/ http://gentoo.supp.name/" LC_ALL="en_US.UTF-8" LDFLAGS="-Wl,-O1,--hash-style=gnu,--sort-common,--reduce-memory-overheads,--as-needed,--enable-new-dtags" LINGUAS="en de" MAKEOPTS="-j9" PKGDIR="/usr/portage/packages" PORTAGE_CONFIGROOT="/" PORTAGE_RSYNC_OPTS="--recursive --links --safe-links --perms --times --compress --force --whole-file --delete --stats --timeout=180 --exclude=/distfiles --exclude=/local --exclude=/packages" PORTAGE_TMPDIR="/var/tmp" PORTDIR="/usr/portage" PORTDIR_OVERLAY="/var/lib/layman/lisp" SYNC="rsync://rsync4.fr.gentoo.org/gentoo-portage" USE="acl amd64 bash-completion berkdb bzip2 caps cli crypt curl cxx dri emacs fam fortran gmp iconv icu ipv6 libsigsegv lzma lzo mmx modules mudflap ncurses nls nptl nptlonly openmp pam pcre pppd pth readline reflection session spl sqlite sqlite3 sse sse2 sse3 sse4 sse4a ssl sysfs tcpd threads unicode xattr xorg zlib" ALSA_CARDS="ali5451 als4000 atiixp atiixp-modem bt87x ca0106 cmipci emu10k1x ens1370 ens1371 es1938 es1968 fm801 hda-intel intel8x0 intel8x0m maestro3 trident usb-audio via82xx via82xx-modem ymfpci" ALSA_PCM_PLUGINS="adpcm alaw asym copy dmix dshare dsnoop empty extplug file hooks iec958 ioplug ladspa lfloat linear meter mmap_emul mulaw multi null plug rate route share shm softvol" APACHE2_MODULES="asis proxy proxy_balancer proxy_connect proxy_http" APACHE2_MPMS="prefork" ELIBC="glibc" INPUT_DEVICES="keyboard mouse evdev" KERNEL="linux" LCD_DEVICES="bayrad cfontz cfontz633 glk hd44780 lb216 lcdm001 mtxorb ncurses text" LINGUAS="en de" RUBY_TARGETS="ruby18" USERLAND="GNU" VIDEO_CARDS="fbdev glint intel mach64 mga neomagic nv r128 radeon savage sis tdfx trident vesa via vmware voodoo" XTABLES_ADDONS="quota2 psd pknock lscan length2 ipv4options ipset ipp2p iface geoip fuzzy condition tee tarpit sysrq steal rawnat logmark ipmark dhcpmac delude chaos account" Unset: CPPFLAGS, CTARGET, EMERGE_DEFAULT_OPTS, FFLAGS, INSTALL_MASK, LANG, PORTAGE_COMPRESS, PORTAGE_COMPRESS_FLAGS, PORTAGE_RSYNC_EXTRA_OPTS > make -j9 all
Might be the problem in ghc.
What changed? I just tried emerging it again and it's compiling now... The only change is in the URL to the binaries so maybe the binary it was using before was broken. I think the problem is in undesynchronized paralel build and you are lucky enough not to catch the problem second time (or you've changed MAKEOPTS=-j9). I thought so too, but it would be pretty lucky to get through such a big build without hitting such a problem, given it hit immediately on the first occurrence. I haven't dropped the -j9. Broken build systems that can't handle parallelism should be built with a forced emake -j1. We do this for IcedTea. We are trying that too (as always did)
> emake -j1
but something seems to be broken (or was broken).
> "cp libraries/dph/dph-common/LICENSE libraries/dph/dph-par.tmp/LICENSE > /bin/sh: inplace/bin/mkdirhier: Permission denied" > > The build systems seems really broken Yeah, > cat utils/mkdirhier/mkdirhier.sh >> inplace/bin/mkdirhier > "inplace/bin/mkdirhier" rts/dist/build/sm/ > /bin/sh: inplace/bin/mkdirhier: Permission denied > chmod +x inplace/bin/mkdirhier ### too late Andrew, what filesystem do you use? I'm afraid GHC's build system relies on directory timestamps. root is currently on a reiserfs filesystem, though I plan to move it to a mirrored ext4 filesystem when I can. (In reply to comment #13) > root is currently on a reiserfs filesystem, though I plan to move it to a > mirrored ext4 filesystem when I can. Aha! Any special mount options? /dev/root on / type reiserfs (rw,noatime) Seems to be fixed in -HEAD (will arrive in ghc-6.14.1): http://hackage.haskell.org/trac/ghc/ticket/3763 *** Bug 346733 has been marked as a duplicate of this bug. *** *** Bug 363153 has been marked as a duplicate of this bug. *** People keep reporting parallel issues for ghc. THe current workaround is to use MAKEOPTS=-j7 or less. In-tree ghc-7.0.4 has parallel building disabled, as there was more reports of breakage. ghc-7.2 sometimes misbehaves as well, so I thing we won't try parallel building earlier, than in ghc-7.4. Thanks to all involved! |