Re: getMBlocks

2006-08-08 Thread Simon Marlow

Rich Fought wrote:

I'm still chasing down a memory leak in my server application written in 
Haskell using GHC 6.4.x under MinGW/MSYS.  In the scenario described 
below, I am repeating the same server request once per second continuously.


After utilizing some memory monitoring tools I've discovered that memory 
usage fluctuates within in a range of approximately 850 KB (I assume as 
garbage is collected),


What tool(s) did you use to obtain this figure?

but at regular intervals the range gets bumped up 
by ~ 1 MB.  So in effect I get a stair-stepping of memory usage that 
keeps repeating until memory runs out.  WinDbg has revealed that this 
stepping coincides with the GHC runtime function getMBlocks().


My question is: what conditions affect when the runtime determines that 
it needs more memory?  Is it a pure no more room trigger or is there 
some sort of algorithm behind it?


The block allocation layer grabs another Mb whenever it runs out, that's all. 
The vast majority of the blocks in use by the storage manager will be either 
free or assigned to the heap, so the most likely possibility is that you do have 
a space leak (although that disagrees with the 850Kb figure you gave above).


I assume that this behavior means I still have a space leak somewhere in 
my Haskell code, though none of leak check tools I utilize indicate such.


Did you try GHC's heap profiler?

Or simply running your program with +RTS -Sstderr will give you a clue about the 
shape of the heap usage - each line is a single GC, and it includes the amount 
of live data at that point.


If your program has a flat heap profile and yet is still grabbing more memory, 
then something else is going on.


Cheers,
Simon
___
Glasgow-haskell-users mailing list
Glasgow-haskell-users@haskell.org
http://www.haskell.org/mailman/listinfo/glasgow-haskell-users


Re: Graphics library very slow

2006-08-08 Thread Simon Marlow

Simon Peyton-Jones wrote:

By this code is currently broken, I'm sure you are right, but which
code you mean exactly?  The Win32 binding for GHC?  Or the Hugs Graphics
Library (HGL) implementation for GHC?  


It'd be good to have a Trac bug report, specifying as precisely as
possible what is broken.


There is already a ticket open for this:

  http://hackage.haskell.org/trac/ghc/ticket/742

Graphics.SOE runs very slowly under win32.

I propose that we do not ship the current HGL in 6.6.  Any objections?

Cheers,
Simon
___
Glasgow-haskell-users mailing list
Glasgow-haskell-users@haskell.org
http://www.haskell.org/mailman/listinfo/glasgow-haskell-users


Re: Evaluating expressions in Visual Haskell

2006-08-08 Thread Simon Marlow

Vyacheslav Akhmechet wrote:


I apologize if this question has been asked before, but I couldn't
find an FAQ or the answer online.

Does Visual Haskell have support for evaluating expressions? I tried a
few things (like highlighting an expression, rightclicking, and
looking for evaluate option) but couldn't find anything.


No, that feature isn't implemented.  It is something we'd like to do, though.


If this feature is missing, is it planned? Also, what is a good way to
do this together with Visual Haskell? I could, of course, open an
interpreter in a command window, load appropriate modules, and
evaluate expressions from there but is there a more integrated way?


That's the only way right now, I'm afraid.

Cheers,
Simon
___
Glasgow-haskell-users mailing list
Glasgow-haskell-users@haskell.org
http://www.haskell.org/mailman/listinfo/glasgow-haskell-users


Re: 6.6 plans and status

2006-08-08 Thread Chris Kuklewicz

Simon Marlow wrote:

Chris Kuklewicz wrote:
Would a new and expanded Regex package (Test.Regex.Lazy) be something 
that could be included in the 6.6.0 libraries?  What is the best 
practice for getting it included?


Since we're aiming to include fewer libraries under the GHC umbrella, 
not more, this wouldn't be the right approach.  Also, I'm sure you want 
the ability to release Text.Regex.Lazy independently of GHC, so tying it 
to the GHC release cycle would be unduly restrictive.


Possibly true.


I do want to extract the existing Text.Regex(.Posix) from the base package.


base seems the wrong place.

So we should think about what structure we want for regex packages.  
Here's one possible plan:


  regex-baseshared regex code
  regex-posixthe POSIX backend
  regex-pcrethe PCRE backend
  ...


That could work well.  It would not involved too much pulling apart.

Once small quirk is there is the old Text.Regex API and a new JRegex-style API.

We should have one default implementation that provides regexes over 
Strings and ByteStrings.  I don't really mind which backend that is, as 
long as it is fast and BSD-licensed.


A default backend has to be dependably present. That means either keeping the 
current Posix backend, adding a dependency on PCRE, or using the Haskell/Parsec 
backend.  The problem is that String is very inefficient with Posix or PCRE and 
ByteString is slightly inefficient with Haskell/Parsec.


We could then include a subset of these packages (optionally) in GHC 
binary distributions, so that users would have access to basic regex 
functionality out of the box.  How does that sound?


That seems like the best plan.

Ah, I just realised that GHC itself uses regexes in a couple of places, 
so I do need to include basic (String) regex functionality in the 
libraries. 


I assume that is the Posix Text.Regex syntax.  So you need support for this 
syntax in GHC.



So we could either:

  - work on regex-base/regex-posix for inclusion in GHC, or


I could prepare this for you.



  - I could just extract Text.Regex(.Posix) from the base package into
a separate package.




obviously the first option is better, but time is short.  Let me know 
what you think.


Cheers,
Simon


I'll assemble a version organized like that this week.  Important question:
Should I be planning to install alongside the current Text.Regex(.Posix) or 
planning on replacing them? (With an identical API)?


--
Chris
___
Glasgow-haskell-users mailing list
Glasgow-haskell-users@haskell.org
http://www.haskell.org/mailman/listinfo/glasgow-haskell-users


Re: 6.6 plans and status

2006-08-08 Thread Simon Marlow

Chris Kuklewicz wrote:


That could work well.  It would not involved too much pulling apart.

Once small quirk is there is the old Text.Regex API and a new 
JRegex-style API.


Is it possible to provide both?  Perhaps deprecating the current API?

A default backend has to be dependably present. That means either 
keeping the current Posix backend, adding a dependency on PCRE, or using 
the Haskell/Parsec backend.


I'm not keen on adding a PCRE dependency.  We already include an implementation 
of POSIX regexes in GHC itself (libraries/base/cbits/regex) which tends to get 
used on Windows where there isn't an implementation of POSIX regexes


The problem is that String is very 
inefficient with Posix or PCRE and ByteString is slightly inefficient 
with Haskell/Parsec.


Do you have any measurements (rough measurements would be fine)?  When you say 
very inefficient, by what factor is the Parsec implementation faster than 
using the Posix one for Strings?


If we were to use the Parsec implementation, that pulls in another dependency. 
Not out of the question, but to be avoided if possible.



So we could either:

  - work on regex-base/regex-posix for inclusion in GHC, or


I could prepare this for you.


Great, thanks!


I'll assemble a version organized like that this week.  Important question:
Should I be planning to install alongside the current Text.Regex(.Posix) 
or planning on replacing them? (With an identical API)?


We want to replace Text.Regex.  So ideally you want to do this in a GHC tree, so 
you can remove the old Text.Regex and replace with yours.  If this is too 
difficult, then you could develop it separately (as Text.Regex.New, or 
something), and I'll make the relevant changes when I import it.


Cheers,
Simon

___
Glasgow-haskell-users mailing list
Glasgow-haskell-users@haskell.org
http://www.haskell.org/mailman/listinfo/glasgow-haskell-users


Re: 6.6 plans and status

2006-08-08 Thread Chris Kuklewicz

Simon Marlow wrote:

Chris Kuklewicz wrote:


That could work well.  It would not involved too much pulling apart.

Once small quirk is there is the old Text.Regex API and a new 
JRegex-style API.


Is it possible to provide both?  Perhaps deprecating the current API?


It is possible to provide the old and new.  The old was only defined for the 
String type and this probably will not be changed (at least at first).


A default backend has to be dependably present. That means either 
keeping the current Posix backend, adding a dependency on PCRE, or 
using the Haskell/Parsec backend.


I'm not keen on adding a PCRE dependency.  We already include an 
implementation of POSIX regexes in GHC itself 
(libraries/base/cbits/regex) which tends to get used on Windows where 
there isn't an implementation of POSIX regexes


Ah.  That is how you are doing it.

The problem is that String is very inefficient with Posix or PCRE and 
ByteString is slightly inefficient with Haskell/Parsec.


Do you have any measurements (rough measurements would be fine)?  When 
you say very inefficient, by what factor is the Parsec implementation 
faster than using the Posix one for Strings?


This whole Text.Regex.Lazy project was born from the computer language shootout. 
, http://haskell.org/hawiki/RegexDna .  The Text.Regex(.Posix) that came with 
GHC timed out (hours!).  The pure haskell/parsec version took about 2 minutes. 
That is the meaning very inefficient for repeated use of Text.Regex(.Posix) on 
String: more than two orders of magnitude, since it is not caching the CString 
that it marshals.




If we were to use the Parsec implementation, that pulls in another 
dependency. Not out of the question, but to be avoided if possible.


The only nonparsec/nonlibrary version is a simple DFA which is too simple for 
many uses.  To get what people expect from regular expressions you need posix 
library, pcre library, my parsec parser, or find someone else's regex 
implementation in haskell.  Or the parsec version could eventually be rewritten 
to not depend on parsec by implementing its own parser monad.


To keep a Posix default backend the libraries/base/cbits/regex may need to 
become part of regex-posix.  That would be a learning curve for me as I have no 
ghc on windows experience, though I have a computer for it next to me.  So I 
might need help later for that.



So we could either:


  - work on regex-base/regex-posix for inclusion in GHC, or


I could prepare this for you.


Great, thanks!


The re-organization is in progress (hooray for darcs mv).
After re-organization will come the doc/Haddock clean up to match.
After that comes the unit testing clean up (I have some HUnit and QuickCheck 
now).
Then, time permitting, benchmarks.

I'll assemble a version organized like that this week.  Important 
question:
Should I be planning to install alongside the current 
Text.Regex(.Posix) or planning on replacing them? (With an identical 
API)?


We want to replace Text.Regex.  So ideally you want to do this in a GHC 
tree, so you can remove the old Text.Regex and replace with yours.  If 
this is too difficult, then you could develop it separately (as 
Text.Regex.New, or something), and I'll make the relevant changes when I 
import it.


I will make such a Text.Regex.New that fakes the old API.  I'll make it use the 
posix backend, but that can be changed via an import statement.


I suggest removing the old Text.Regex.Posix module.  People will be able to make 
better use of the new API for doing this.


--
Chris

___
Glasgow-haskell-users mailing list
Glasgow-haskell-users@haskell.org
http://www.haskell.org/mailman/listinfo/glasgow-haskell-users


wislist item: more control over branch prediction

2006-08-08 Thread Duncan Coutts

So now that GHC is so good at producing really fast low level code (see
ByteString benchmarks) we start to encounter low level gubbins where to
get the fastest possible code we need slightly more influence over
branch prediction.

In the code for ByteString's 'writeStrUp/Dn' functions we're doing a
tight loop writing bytes to memory.

The first version looks much like this:

loop fp n off s = case next s of
Done   - return $! PS fp 0 off
Skips' - loop fp n off s'
Yield x s' - do
 withForeignPtr fp $ \p - pokeByteOff p off x
 loop fp n (off+1) s'

When we get to the end of a memory block we need to double the size of
the memory block and carry on. So this adds an additional conditional
test into this loop.

loop fp n off s = case next s of
Done   - trimUp fp n off
Skips' - loop fp n off s'
Yield x s'
| n == off - realloc fp n off s' x
| otherwise - do
 withForeignPtr fp $ \p - pokeByteOff p off x
 loop fp n (off+1) s'

There are dramatic differences between equivalent forms of code. Just by
reversing the order of the (n==off) test one form I can process 50Mb of
data in 0.20 seconds and in the other it takes 0.34 seconds.

That is:

| n == off - realloc fp n off s' x
| otherwise - do ...

vs

| n /= off - do ...
| otherwise - realloc fp n off s' x

I think that this is all down to branch prediction and the arrangement
of basic blocks. On a modern CPU correctly predicted branches are nearly
free while mis-predicted branches are very costly due to stalled
pipelines etc.

In gcc they have a branch prediction framework. It annotates
conditionals with prediction information. It then uses that during code
generation to do things like arranging basic blocks so that unlikely
blocks are moved out of line. It gets the prediction information from a
few sources. One is a simple static branch predictor, for example
branches back to to the beginning of a loop are likely to be taken and
branches to error functions are not. gcc even has a profile feedback
system to find the real probabilities of branches from a sample run of
the program. It also has a user annotation __builtin_expect() which many
C projects use in the form of a macro:

if (unlikely(x==0)) { ...

The Linux kernel uses this fairly heavily to move error handling code
out of the main 'fast path' code.


Anyway, so what I wish is that I could write something like:

loop fp n off s = case next s of
Done   - {-# UNLIKELY #-}
  trimUp fp n off
Skips' - loop fp n off s'
Yield x s'
| n == off - {-# UNLIKELY #-}
  realloc fp n off s' x
| otherwise - do
 withForeignPtr fp $ \p - pokeByteOff p off x
 loop fp n (off+1) s'

The best approximating effect that I can use at the moment is to make
the unlikely realloc branch a local function in a where clause but mark
it with {-# NOINLINE #-} so that the code for the realloc case doesn't
pollute the tight loop for the normal fast case. Then the other
approximation is fiddling with the logic of the binary test and looking
at the benchmarks. The combination of these two techniques makes a
dramatic difference to the speed.

However I do need more control to do it reliably, while I was able to
make it work for writeStrUp, I could not find a combination to work for
writeStrDn - we loose about 50% performance when we add the realloc
branch. So a slightly more reliable method to hint at the likelihood of
conditionals would make this kind of low level code faster and easier to
write.

Some time ago as a quick hack I did add a branch prediction annotation
to the CMM conditional constructor. I only used it in the C backend to
turn it into uses of gcc's __builtin_expect(). I also didn't connect it
to the front end so I didn't have any high level static branch
prediction (which could be done by looking for branches with recursive
calls or calls to error etc). The only place I did actually use it was
in the heap check and stack check. I assumed that it would be
advantageous to predict heap and stack overflow branches as not taken.
It was only a quick hack - I didn't do any benchmarks to see if it had
any effect.


Anyway, just a thought, and of course not something we should be
thinking about 'til post 6.6.

Duncan

___
Glasgow-haskell-users mailing list
Glasgow-haskell-users@haskell.org
http://www.haskell.org/mailman/listinfo/glasgow-haskell-users


Re: Lookup module and package defining x?

2006-08-08 Thread Marc Weber
 $ghc-pkg --where-from ParseError
 package parsec: defining modules: Text.ParserCombinators.Parsec.Error, 
 Text.ParserCombinators.Parsec
 
 ?

This is what I've done by now... It took me some days to notice that the
./ghc-pkg symlinks to ghc-pkg-6.5 which calls the ghc-pkg from /usr/lib/...
but not my modified version ;) ./ghc-pkg.bin   was what I was looking for..
By now you can only search for modules...
I want to add support for functions..
I could use  ghc -show-iface.. Problem: ghc takes about 0.2 s to launch on my
system. Dumping all installed ifaces (ghc -show-iface list of all hi files)
doesn't take much additional time..
That's why I want to include the MkIface module from ghc.. (beeing in another 
directory)
I'm not sure where to add the -i option in the makefile so that ghc can find 
the module..
One way would be adding the option to EXTRA_SRCS but I hope there is a better 
possibility 

Marc

 {-# OPTIONS -fglasgow-exts #-}
---
 whereFrom OPTIONS -fglasgow-exts #-}
18,20d17
 #ifdef WHERE_FROM
 import MkIface
 #endif
185,189d181
 #ifdef WHERE_FROM
 $p where-from {id}\n ++
   Which package/module contains this module/ declaration?\n ++
   \n ++
 #endif
237,240d228
 #ifdef WHERE_FROM
 [where-from, id] - do
   whereFrom cli id
 #endif
469,500d456
 #ifdef WHERE_FROM
 -- 
-
 -- Where from find the modul or package containing the id
 
 whereFrom :: [Flag] - String - IO ()
 whereFrom flags id = 
   let simple_output = FlagSimpleOutput `elem` flags
   in do db_stack - getPkgDatabases False flags
   let all_pkgs = concat (map snd db_stack) :: [InstalledPackageInfo]
   -- looking for modules with name id
   let exposedModulesMatches = (exposed matching modules, 
 concatMap (getPkgNameAndModule exposedModules) all_pkgs ) :: 
(String, [String])
   let hiddenModulesMatches = (hidden matching modules, 
 concatMap (getPkgNameAndModule hiddenModules) all_pkgs )
   -- looking for data
   -- looking for type
   -- looking for newtype
   -- looking for functions
   let matchingResult = filter ((/= []).snd) [exposedModulesMatches, 
hiddenModulesMatches]
   case matchingResult of
 [] - putStrLn no matches found
 results - do putStrLn maches :
   mapM_ (\(category, matches) - putStrLn (category ++ 
:)  mapM_ putStrLn matches) results
 
   where getPkgNameAndModule modules pkginfo = [ formatFoundModule 
((showPackageId.package) pkginfo) m | m - modules pkginfo, (m == id) ]
   formatFoundModule pkg module_ = pkg ++ :  ++ module_
   scanPackage pkg scanModule = lifM2 (++) (concatMap (scanModule ) 
(exposedModules pkg))  
   (concatMap (scanModule 
hidden) (hiddenModules pkg))
 where scanModule hidden_text module_ =
   
 #endif

___
Glasgow-haskell-users mailing list
Glasgow-haskell-users@haskell.org
http://www.haskell.org/mailman/listinfo/glasgow-haskell-users


Re: getMBlocks

2006-08-08 Thread Rich Fought

Simon Marlow wrote:


What tool(s) did you use to obtain this figure?



This particular figure was gathered using perfmon logs collecting once 
per second from my application, while running in WinDbg to break on 
getMBlocks().  The particular memory variables tracked are Private 
Bytes and Working Set.




Did you try GHC's heap profiler?
Or simply running your program with +RTS -Sstderr will give you a clue 
about the shape of the heap usage - each line is a single GC, and it 
includes the amount of live data at that point.


If your program has a flat heap profile and yet is still grabbing more 
memory, then something else is going on.




Yes I did try the profiler, but I couldn't really garner any useful 
information from it.  Most likely because I don't understand how to use 
it correctly.  :)  I should revisit this however, as I have since 
discovered and fixed some leaks.  It should at least look different.


Thanks,
Rich
___
Glasgow-haskell-users mailing list
Glasgow-haskell-users@haskell.org
http://www.haskell.org/mailman/listinfo/glasgow-haskell-users


Re: GHC 6.4.3 on FreeBSD

2006-08-08 Thread Simon Marlow

Simon Marlow wrote:

An update on the GHC/FreeBSD front: I didn't manage to reproduce the
reported threading bugs on a UP, will be trying on a MP shortly.  


Using -lthr instead of -pthread, I completed a test run on the dual proc box:

OVERALL SUMMARY for test run started at Tue Aug  8 09:21:49 EDT 2006
1365 total tests, which gave rise to
6055 test cases, of which
   0 caused framework failures
1034 were skipped

4944 expected passes
  61 expected failures
   4 unexpected passes
  12 unexpected failures

Unexpected passes:
   cholewo-eval(optasm,profasm)
   ffi009(optasm,profasm)

Unexpected failures:
   barton-mangler-bug(normal,opt,prof,ghci,threaded)
   queryfdoption01(normal,opt,optasm,prof,profasm,threaded)
   rn.prog006(normal)

Nothing to worry about here.

I also discovered that we already have a fix in the HEAD's version of timeout 
that makes it work on FreeBSD (d'oh).  The problem is that our timeout program 
forks and then calls system(), which forks again, and this is allegedly not 
allowed.  I've merged that fix into STABLE now.


I'm running the testsuite again with everything linked with -pthread and using 
the fixed timeout program.  So far I haven't seen the other reported symptom, 
namely that the stage2 compiler sometimes hangs.


Cheers,
Simon
___
Glasgow-haskell-users mailing list
Glasgow-haskell-users@haskell.org
http://www.haskell.org/mailman/listinfo/glasgow-haskell-users


ANN: TextRegexLazy-0.66 devel release

2006-08-08 Thread Chris Kuklewicz

(when (compilesOk) (announce newVersion))

This is a development release announcement of TextRegexLazy

The TextRegexLazy package is dead.

Long Live [regex-base -- interfaces
  ,regex-compat   -- replace Text.Regex
  ,regex-posix-- PosixRE backend
  ,regex-pcre -- PCRE backend
  ,regex-parsec   -- My lazy Haskell backend
  ,regex-dfa  -- DFA based on modified CTKLight (LGPL)
  ]

Note: Everything is BSD licensed except the regex-dfa engine which is LGPL.

The darcs repository at http://evenmere.org/~chrisk/trl/head/ has the new 
version.

The regex-compat package is a single Text.Regex.New module that uses regex-posix 
to replace Text.Regex (I cut and pasted from the Text.Regex module and 
re-implemented some of the functions).  The old Text.Regex.Posix module is 
bypassed (so it could be removed in the future).  Changing the dependency to a 
different backend is as simply as changing the import statement.  Changing from 
String to ByteString would be a simple search-and-replace (and import 
Data.ByteString).


The regex-posix package does not have a personal copy of the posix regex library 
like the copy GHC brings to Windows: 
http://darcs.haskell.org/packages/base/cbits/regex/


If someone can get regex-posix working on Windows, then 
[regex-base,regex-posix,regex-compat] will be functionally ready to be included 
along with GHC.


TODO:
 * Much Haddock fixing for the new module hierarchy
 * Point the test cases at the new packages
 * Benchmark

--
Chris Kuklewicz
___
Glasgow-haskell-users mailing list
Glasgow-haskell-users@haskell.org
http://www.haskell.org/mailman/listinfo/glasgow-haskell-users


fork and ghc

2006-08-08 Thread John Meacham
I want to modify jhc to take advantage of mutiple CPUs to help mitigate
its prodigious computational requirements and was curious how well ghc
compiled programs deal with forking?

my initial plan is that once jhc determines which modules need to be
recompiled, it will fork(2) off processes down each pass that can be
done in parallel. however, I have no idea what the effect of just
calling fork on the ghc runtime will be. both parent and child will
continue on compiling code, so it won't be immediatly followed by an
exec.

John
-- 
John Meacham - ⑆repetae.net⑆john⑈
___
Glasgow-haskell-users mailing list
Glasgow-haskell-users@haskell.org
http://www.haskell.org/mailman/listinfo/glasgow-haskell-users


dependingOn in 6.6

2006-08-08 Thread John Meacham
I was wondering if we could be sure to get

dependingOn :: a - b - a
dependingOn = 

in ghc 6.6? this has been discussed before, it is implemented in jhc and
I have found all sorts of use for it as it can be used to control let
floating and inlining in a nice general way and is trivial to implement.
(one for ghc was posted before based on primitives it already
implements)

we just need to decide on a module to export it. 

the meaning is that 

x = ... `dependingOn` y

returns x with an artificial dependency on y. so things using x cannot
be floated out above where y is defined.


John


-- 
John Meacham - ⑆repetae.net⑆john⑈
___
Glasgow-haskell-users mailing list
Glasgow-haskell-users@haskell.org
http://www.haskell.org/mailman/listinfo/glasgow-haskell-users


Building GHC on OS X

2006-08-08 Thread David Kirkman

Hi,

I've been using ghc on Mac OS X for a while now, so when I noticed
Simon Marlow's call (made last month, but I just noticed it) for people
to help with OS X, I thought, why not?

Well, it turns out that I can't even build ghc, so I'm not likely to
end up being much help.  But it would be nice to at least be able to
build the thing, so if anybody can help me...

I'm trying to build GHC (6.5.?? ... version from darcs.haskell.org as
of yesterday) on Mac OS X (10.4.7 ppc) bootstrapping from ghc 6.4.2
and gcc 4.0.1.

./configure; make does not work.  On my initial try, I ran into the
UNDO_DELETE, etc problems associated with Darwin's partial readline
support described in ticket #766.  The fix suggested in that ticket
seems to work fine, but not until I installed the GNU readline library.
(If the change to detect the broken Darwin readline is in the  
repository,

it did not work for me).

After fixing the readline problem, it looks like I can build at least
part of the stage1 compiler -- but the build fails just after starting
to build stage2.  The final error is:

 ../compiler/ghc-inplace -H32m -O0 -W -fno-warn-unused-matches - 
fwarn-unused-imports  -istage2/utils  -istage2/basicTypes  -istage2/ 
types  -istage2/hsSyn  -istage2/prelude  -istage2/rename  -istage2/ 
typecheck  -istage2/deSugar  -istage2/coreSyn  -istage2/specialise  - 
istage2/simplCore  -istage2/stranal  -istage2/stgSyn  -istage2/ 
simplStg  -istage2/codeGen  -istage2/main  -istage2/profiling  - 
istage2/parser  -istage2/cprAnalysis  -istage2/ndpFlatten  -istage2/ 
iface  -istage2/cmm  -istage2/nativeGen  -istage2/ghci -Istage2 - 
DGHCI -DBREAKPOINT -package template-haskell -threaded -cpp -fglasgow- 
exts -fno-generics -Rghc-timing -I. -IcodeGen -InativeGen -Iparser - 
package unix -package Cabal -ignore-package lang -recomp -Rghc-timing  
-DDEBUG  -H16M '-#include hschooks.h' -package-name  ghc-6.5   - 
fgenerics  -O  -c utils/FastString.lhs -o stage2/utils/FastString.o  - 
ohi stage2/utils/FastString.hi


 utils/FastString.lhs:73:0:
 Failed to load interface for `GHC.Exts':
Could not find module `GHC.Exts':
  use -v to see a list of the files searched for
 ghc: 52487092 bytes, 5 GCs, 19236/19236 avg/max bytes residency  
(1 samples), 16M in use, 0.00 INIT (0.00 elapsed), 0.29 MUT (0.38  
elapsed), 0.03 GC (0.04 elapsed) :ghc

 make[2]: *** [stage2/utils/FastString.o] Error 1
 make[1]: *** [stage2] Error 2
 make: *** [bootstrap2] Error 2


The first error that I can find comes when building ghc/libraries/ 
base (in stage1)


 ../../compiler/ghc-inplace -H32m -O0 -W -fno-warn-unused-matches - 
fwarn-unused-imports -fglasgow-exts -cpp -Iinclude -#include  
HsBase.h -funbox-strict-fields -package-name  base-1.0 -O -dcore-lint  
-W -fno-warn-unused-matches -fwarn-unused-imports -keep-hc-files   - 
fgenerics-c Data/Generics/Schemes.hs -o Data/Generics/Schemes.o  - 
ohi Data/Generics/Schemes.hi


 Data/Generics/Schemes.hs:108:15:
 Couldn't match expected type `r' (a rigid variable)
   against inferred type `[a]'
  `r' is bound by the type signature for `listify'
at Data/Generics/Schemes.hs:106:20
   Expected type: r - r - r
   Inferred type: [a] - [a] - [a]
 In the first argument of `everything', namely `(++)'
 In the call (everything (++)
([] `mkQ` (\ x - if p x then [x] else [])))
 make[2]: *** [Data/Generics/Schemes.o] Error 1

After that, there are a handful of errors complaining about things that
can't be found (e.g.)

 CPUTime.hs:5:0:
Failed to load interface for `System.CPUTime':
Could not find module `System.CPUTime':
  use -v to see a list of the files searched for
 make[2]: *** [CPUTime.o] Error 1

and

 Language/Haskell/TH/Syntax.hs:46:0:
Failed to load interface for `Data.PackedString':
Could not find module `Data.PackedString':
  use -v to see a list of the files searched for
 make[2]: *** [Language/Haskell/TH/Syntax.o] Error 1

There are six or seven more messages like those, but nothing severe  
enough to

stop make until the problem where it can not find 'GHC.Exts'.

I tried to brute force it with 'make -k', which went a lot further,
but in the end build nothing useful.

Anybody have any ideas?  Or build instructions for OS X?

Thanks,

-david k.

___
Glasgow-haskell-users mailing list
Glasgow-haskell-users@haskell.org
http://www.haskell.org/mailman/listinfo/glasgow-haskell-users