Ian Lynagh [Mon, 16 Apr 2007 13:24:21 +0000 (13:24 +0000)]
stm doesn't need to be a core-package
Ian Lynagh [Mon, 16 Apr 2007 13:23:32 +0000 (13:23 +0000)]
Split objects when building libraries (if SplitObjs is YES)
Simon Marlow [Mon, 16 Apr 2007 11:04:33 +0000 (11:04 +0000)]
tab, verttab, formfeed, and CR are not allowed in strings
See #1277
Simon Marlow [Mon, 16 Apr 2007 13:04:57 +0000 (13:04 +0000)]
Add missing special case for GHC.Prim
The special cases for GHC.Prim are a bit fragile. We were relying on
(a) the base package to be already registered and (b) the base package
not to be hidden. These used to be true with the old library build
system, but aren't true now. I'm still not sure why we aren't seeing
failures at the moment, but this patch at least fixes the build with
'setup makefile'.
Ian Lynagh [Sun, 15 Apr 2007 16:27:17 +0000 (16:27 +0000)]
Don't try to install docs stuff if NO_HADDOCK_DOCS=YES
Ian Lynagh [Sun, 15 Apr 2007 16:23:15 +0000 (16:23 +0000)]
Implement ifBuildable
ifBuildable only runs a command it is given if the library in . either
must be built (core-package - readline) or is buildable.
wolfgang.thaller@gmx.net [Sat, 14 Apr 2007 21:40:27 +0000 (21:40 +0000)]
make opt_HiVersion an Integer instead of Int to prevent overflow
When a snapshot version number is included, opt_HiVersion tends to exceed the range of a 32bit Int.
MERGE TO STABLE
Ian Lynagh [Fri, 13 Apr 2007 23:05:55 +0000 (23:05 +0000)]
Allow ProjectTags to be specified in mk/build.mk
ProjectTags is expected to be of the form -tag1-tag2 (i.e. the same as
Cabal tags). These are appended to the GHC version number.
wolfgang.thaller@gmx.net [Thu, 12 Apr 2007 21:47:01 +0000 (21:47 +0000)]
Fix a typo related to i386 PIC code generation
A recent patch accidentally had x86_TARGET_ARCH instead of i386_TARGET_ARCH.
wolfgang.thaller@gmx.net [Thu, 12 Apr 2007 21:45:15 +0000 (21:45 +0000)]
Darwin/x86_64 linker support
Initial support for loading x86_64 Mach-O files
Ian Lynagh [Thu, 12 Apr 2007 22:36:36 +0000 (22:36 +0000)]
autoreconf -> sh boot
wolfgang.thaller@gmx.net [Thu, 12 Apr 2007 21:53:13 +0000 (21:53 +0000)]
Darwin/i386 NCG: fix assembly syntax in symbol stubs
In i386 position-independent symbol stubs, the NCG used to print
jmp %edx
instead of
jmp *%edx
Apple's assembler used to silently accept this, but has recently started to print warnings about it.
MERGE TO STABLE.
wolfgang.thaller@gmx.net [Thu, 12 Apr 2007 21:17:12 +0000 (21:17 +0000)]
Darwin Linker: Do not add local symbols to lochash
... so that GHCi doesn't complain about duplicate symbols when two C modules define the same static variable.
MERGE TO STABLE.
wolfgang.thaller@gmx.net [Thu, 12 Apr 2007 21:01:55 +0000 (21:01 +0000)]
Handle Weak Definitions in the Darwin Linker
The __i686.get_pc_thunk symbols generated by gcc's PIC code generator are weak definitions that appear in every object file, so we need to deal with them.
MERGE TO STABLE.
Ian Lynagh [Thu, 12 Apr 2007 22:30:14 +0000 (22:30 +0000)]
Check boot seems to have been run before we let make proceed
Simon Marlow [Thu, 12 Apr 2007 13:21:15 +0000 (13:21 +0000)]
wibble to prep-bin-dist-mingw target
Simon Marlow [Thu, 12 Apr 2007 13:17:02 +0000 (13:17 +0000)]
tidy up the binary-dist targets a bit more
Simon Marlow [Wed, 11 Apr 2007 14:57:36 +0000 (14:57 +0000)]
further tweak the comments
Simon Marlow [Wed, 11 Apr 2007 14:51:55 +0000 (14:51 +0000)]
fix comment
Simon Marlow [Wed, 11 Apr 2007 14:48:25 +0000 (14:48 +0000)]
do the right thing by default with a current mingw
and hopefully be a bit cleverer about finding things automatically.
Simon Marlow [Thu, 12 Apr 2007 13:13:27 +0000 (13:13 +0000)]
MERGE: add prep-bin-dist-mingw to binary-dist target, and add a separate target for
publish-binary-dist
Simon Marlow [Thu, 12 Apr 2007 13:10:12 +0000 (13:10 +0000)]
MERGE: fixes to prep-bin-dist-mingw, and add separate rule to tar the bindist
Simon Marlow [Wed, 11 Apr 2007 14:52:35 +0000 (14:52 +0000)]
call prep-bin-dist-mingw as part of binary-dist, before we make the tarball
Ian Lynagh [Wed, 11 Apr 2007 21:38:33 +0000 (21:38 +0000)]
Remove redundant import
Simon Marlow [Wed, 11 Apr 2007 10:18:02 +0000 (10:18 +0000)]
Rationalise GhcMode, HscTarget and GhcLink
This patch cleans up the GHC API, and adds some functionality: we can
now compile to object code inside GHCi.
Previously we had:
data GhcMode
= BatchCompile
| Interactive
| OneShot
| JustTypecheck
| MkDepend
data HscTarget
= HscC
| HscAsm
| HscJava
| HscInterpreted
| HscNothing
There was redundancy here; if GhcMode is Interactive, then only
HscInterpreted makes sense, and JustTypecheck required HscNothing.
Now we have:
data GhcMode
= CompManager -- ^ --make, GHCi, etc.
| OneShot -- ^ ghc -c Foo.hs
| MkDepend -- ^ ghc -M, see Finder for why we need this
and HscTarget remains as before.
Previously GhcLink looked like this:
data GhcLink = NoLink | StaticLink
Now we have:
data GhcLink = NoLink | LinkBinary | LinkInMemory
The idea being that you can have an HscTarget of HscAsm (for example)
and still link in memory.
There are two new flags:
-fobject-code selects object code as the target (selects
either -fasm or -fvia-C, whichever is the default)
This can be usd with ':set' in GHCi, or on the command line.
-fbyte-code sets byte-code as the target. Only works in GHCi.
One day maybe this could save the byte code in a file
when used outside GHCi.
(names chosen for consistency with -fno-code).
Changes to the GHC API: newSession no longer takes the GhcMode
argument. The GhcMode defaults to CompManager, which is usually what
you want. To do JustTypecheck now, just set hscTarget to HscNothing.
Ian Lynagh [Wed, 11 Apr 2007 01:22:58 +0000 (01:22 +0000)]
Use "$@" rather than $* when calling things in darcs-all
Ian Lynagh [Wed, 11 Apr 2007 00:25:16 +0000 (00:25 +0000)]
Build library Setup.hs's with -Wall
Ian Lynagh [Tue, 10 Apr 2007 22:03:06 +0000 (22:03 +0000)]
parsec, regex-base, regex-compat, regex-posix are no longer core-packages
Ian Lynagh [Tue, 10 Apr 2007 22:00:15 +0000 (22:00 +0000)]
Replace genprimopcode's parsec parser with an alex+happy parser
This use was the only thing keeping parsec in core-packages, and
we already have a dependency on alex+happy anyway.
Ian Lynagh [Tue, 10 Apr 2007 21:56:47 +0000 (21:56 +0000)]
Don't use regexps in the GHC sources
3 small regexps were responsible for pulling 3 packages into core-packages.
The new code should also do a better job of hiding
"call-clobbered register used" warnings.
Ian Lynagh [Tue, 10 Apr 2007 21:52:52 +0000 (21:52 +0000)]
Use a boot script instead of having autoreconf recurse
It used to be the case that
autoreconf
in the root would also autoreconf in any libraries that need it, and
./configure
in the root would also configure all the libraries.
However, cabal now configures the libraries, so they were getting
configured twice.
Thus now a small shellscript, boot, autoreconfs the root and all libraries
that need it, and ./configure in the root doesn't configure the libraries.
Ian Lynagh [Mon, 9 Apr 2007 13:57:34 +0000 (13:57 +0000)]
Tweak AC_MSG_RESULTs
Ian Lynagh [Mon, 9 Apr 2007 13:46:40 +0000 (13:46 +0000)]
Allow the version date to be overridden with VERSION_DATE
Ian Lynagh [Fri, 6 Apr 2007 19:04:59 +0000 (19:04 +0000)]
Use cp -R rather than cp -a for portability reasons
Ian Lynagh [Fri, 6 Apr 2007 15:18:22 +0000 (15:18 +0000)]
Fixes for building the libraries with cabal on Windows
* configure can be told where ld is
* make an hsc2hs-inplace.bat
* tell Setup configure about foo.bar rather than foo on Windows
* tell Setup configure to pass a --with-cc=$(CC) argument to ./configure
Aaron Tomb [Mon, 13 Nov 2006 23:01:32 +0000 (23:01 +0000)]
Fix external core syntax (though not full compilation)
This patch updates the External Core creator, pretty-printer, and parser to
agree on a concrete syntax for External Core, including the constructs
required by the change to System FC. Code to create valid ASTs from External
Core files will come later, as will bits for renaming, typechecking, and
desugaring.
Ian Lynagh [Fri, 6 Apr 2007 00:11:37 +0000 (00:11 +0000)]
Remove code that is dead, as we require __GLASGOW_HASKELL__ >= 504
Ian Lynagh [Fri, 16 Mar 2007 17:00:03 +0000 (17:00 +0000)]
Don't break when asked to install-docs
(we don't actually do anything useful either, because Cabal doesn't have
an install-docs option).
Ian Lynagh [Fri, 16 Mar 2007 16:59:57 +0000 (16:59 +0000)]
Add a comment
Ian Lynagh [Sat, 10 Mar 2007 01:25:58 +0000 (01:25 +0000)]
Make building binary dists work with cabalised libraries
Ian Lynagh [Thu, 8 Mar 2007 16:32:47 +0000 (16:32 +0000)]
Build the libraries with cabal
red5_2@hotmail.com [Sun, 1 Apr 2007 16:31:32 +0000 (16:31 +0000)]
fix adjustor generation on ia64 (test case ffi009)
Some fixes to adjustor functions. The 8-byte address returned by the
allocator is adjusted to be aligned to 16-byte boundaries. Fixed a typo
in inserting an immediate address into an instruction.
This fixes the calls to 5-argument and 6-argument functions in ffi009.
Some functions still break. I suspect it's related to passing arguments on
the stack.
red5_2@hotmail.com [Tue, 27 Mar 2007 04:18:11 +0000 (04:18 +0000)]
save two more FP registers on ia64
Save/restore two more registers in StgCRun(). The extra
registers are used by ffi009.hs, when compiling with gcc 4.1.2.
Simon Marlow [Wed, 4 Apr 2007 15:50:01 +0000 (15:50 +0000)]
add a safety net to avoid generating bogus code
Simon Marlow [Wed, 4 Apr 2007 14:10:13 +0000 (14:10 +0000)]
add comments about ticky RTS ways
Simon Marlow [Wed, 4 Apr 2007 14:08:05 +0000 (14:08 +0000)]
slight doc wibble for the -r flag
Simon Marlow [Wed, 4 Apr 2007 10:30:27 +0000 (10:30 +0000)]
MERGE: Fix bug exposed by conc052.
A thread that was blocked on a blackhole but can now be woken up could
possibly be treated as unreachable by the GC, and sent the
NonTermination exception.
This can give rise to spurious <<loop>>s in concurrent programs, so
it's a good one to fix.
Simon Marlow [Wed, 4 Apr 2007 08:40:18 +0000 (08:40 +0000)]
HANDLE --> (void *), we can't rely on having included windows.h here
HANDLE is defined to be (void *) anyway, so this shouldn't hurt
Ian Lynagh [Wed, 4 Apr 2007 00:34:25 +0000 (00:34 +0000)]
Fix C/Haskell type mismatches
Ian Lynagh [Wed, 4 Apr 2007 00:03:47 +0000 (00:03 +0000)]
Fix typo
Ian Lynagh [Tue, 3 Apr 2007 19:53:24 +0000 (19:53 +0000)]
Fix C/Haskell type mismatches
simonpj@microsoft.com [Mon, 2 Apr 2007 07:38:35 +0000 (07:38 +0000)]
Make type-tidying work for coercion variables
When tidying a TyVar binder, we must tidy its kind if it's a coercion
variable! I had forgotten to do this, which is a serious bug. As a
result some more complicated programs were getting a Lint error when
reading in interface files. Score one for Core Lint!
Ian Lynagh [Sun, 1 Apr 2007 18:57:41 +0000 (18:57 +0000)]
Make error message output order consistent
Alec Berryman [Tue, 6 Mar 2007 17:30:11 +0000 (17:30 +0000)]
Fix darcs-all to be usable with shells other than bash
Manuel M T Chakravarty [Mon, 2 Apr 2007 08:24:24 +0000 (08:24 +0000)]
Fixed desugaring of parallel array comprehensions
** MERGE into 6.6.1 **
simonpj@microsoft.com [Fri, 30 Mar 2007 14:43:44 +0000 (14:43 +0000)]
The ru_local field of a CoreRule is False for implicit Ids
MERGE to 6.6.1
For class-ops, record selectors, data constructors, we want the ru_local
field of the Rule to be False. We do not attach the rule to the binding
for the Id, because there simply isn't a binding until the code gen stage.
(NB: the ru_local field is different to the orphan-hood of the rule.)
This fixes a bug that meant that RULES on class ops were never exported.
simonpj@microsoft.com [Fri, 30 Mar 2007 14:00:33 +0000 (14:00 +0000)]
Match the type of an Id during rule matching
Please MERGE to 6.6.1
Consider this RULE
forall (c::Char->Int) (x::Char).
f (c x) = "RULE FIRED"
Well, this should only match on arguments of the specified type
But we simply weren't checking this condition before. Now we are.
Test is simplrun008
Ian Lynagh [Wed, 28 Mar 2007 23:51:54 +0000 (23:51 +0000)]
Add filepath library
Ian Lynagh [Thu, 29 Mar 2007 16:42:38 +0000 (16:42 +0000)]
Fix the type of wgencat
Ian Lynagh [Thu, 29 Mar 2007 14:16:31 +0000 (14:16 +0000)]
Document that ghci now adds () to the start of the type defaulting list
Lemmih [Wed, 28 Mar 2007 22:47:42 +0000 (22:47 +0000)]
Refactoring in HscMain.lhs
I realized that compiling many files is just like compiling a single file
several times. This does sound a bit stupid and I wonder why I didn't
catch it before.
Lemmih [Wed, 28 Mar 2007 22:01:09 +0000 (22:01 +0000)]
Typo in comment.
Simon Marlow [Wed, 28 Mar 2007 10:29:38 +0000 (10:29 +0000)]
remove old library doc link (#1098), and point to HackageDB
wolfgang.thaller@gmx.net [Tue, 27 Mar 2007 21:01:22 +0000 (21:01 +0000)]
Make GHC main program depend on the libHSghc_dyn when GhcBuildDylibs==YES
When building a dynamic GHC, we obviously want to build the dynamic library
libHSghc_dyn.[so|dylib] before building the compiler executable.
MERGE TO STABLE
wolfgang.thaller@gmx.net [Tue, 27 Mar 2007 20:17:00 +0000 (20:17 +0000)]
Use a sensible set of compiler options for building dynamic libraries on Mac OS X
The official options to use for building a dylib on Mac OS X are now
-undefined dynamic_lookup -single_module -Wl,-macosx_version_min -Wl,10.3
... which should work on all arches (10.3 or later).
MERGE TO STABLE
Simon Marlow [Tue, 27 Mar 2007 15:45:54 +0000 (15:45 +0000)]
make GHCi use base:Prelude, not just Prelude
The module that GHCi uses for its default scope should be exactly
base:Prelude, not whatever Prelude is found on the search path.
Simon Marlow [Tue, 27 Mar 2007 15:37:23 +0000 (15:37 +0000)]
more improvements for #1119
When GHCi compiles its code framgents for setting buffering, it wants
to refer to base:System.IO rather than whatever System.IO is on the
search path, unfortunately there's no way to do this in source code,
so to hack around it we set the search path to empty before compiling
these expressions (not forgetting to flush the finder cache
afterward).
Simon Marlow [Tue, 27 Mar 2007 15:22:15 +0000 (15:22 +0000)]
partial fix for #1119
Unless we're in one-shot mode, emit an error if we attempt to
demand-load interfaces for home modules. This can only happen in one
way (that I'm aware of): typing a qualified name at the GHCi prompt
that refers to a module that isn't loaded. Previously you got a
cryptic message about not finding an interface file, now you get:
Prelude> Foo.a
<interactive>:1:0:
attempting to use module `Foo' (Foo.hs) which is not loaded
Of course you can still refer to package modules like this without
loading them explicitly, only home modules are affected, and the
behaviour is exactly the same as if you try to ':browse Foo' and
Foo isn't loaded.
Simon Marlow [Mon, 26 Mar 2007 14:27:28 +0000 (14:27 +0000)]
remove docs for unimplemented options
-optdep--include-module and --optdep--exclude-directory were features
of the old mkdependHS script but weren't implemented when mkdependHS
was merged into GHC.
simonpj@microsoft.com [Tue, 27 Mar 2007 11:36:12 +0000 (11:36 +0000)]
Add comments about the -include-prelude flag for ghc -M
simonpj@microsoft.com [Fri, 23 Mar 2007 12:23:54 +0000 (12:23 +0000)]
Remove dead code from rnExpr (Var v); seems to be a leftover from some breakpoint stuff
Simon Marlow [Mon, 26 Mar 2007 15:59:49 +0000 (15:59 +0000)]
move "boot :: all" after the include of target.mk to fix #1095
Simon Marlow [Mon, 26 Mar 2007 15:52:33 +0000 (15:52 +0000)]
add missing progress message
simonpj@microsoft.com [Fri, 23 Mar 2007 11:19:12 +0000 (11:19 +0000)]
Emit a decent error message when there is a decl-splice inside a decl-bracket
This fixes Trac #1065. The fix is just to emit a decent error message
rather than crash. The situation is this:
f x = ... [d| $(..stuff..);
f x = v :: T |] ...
TH wants to rename and typecheck the bracket; but it can't run the
nested splice yet. That seems hard, because we know nothing about v, T,
which are, presumably bound by the splice.
The original TH paper says this isn't allowed, and now it's checked for
properly (in the parser, in fact) rather than causing a crash. In the
fullness of time we might want to do something more flexible, but not now.
simonpj@microsoft.com [Fri, 23 Mar 2007 11:18:50 +0000 (11:18 +0000)]
Wibble fixing overlapped pattern
simonpj@microsoft.com [Fri, 23 Mar 2007 11:18:21 +0000 (11:18 +0000)]
Tidy up refactoring only
Ian Lynagh [Thu, 22 Mar 2007 18:46:07 +0000 (18:46 +0000)]
Documentation for --install-signal-handlers=<yes|no>
Ian Lynagh [Thu, 22 Mar 2007 18:29:00 +0000 (18:29 +0000)]
Add an --install-signal-handlers=<yes|no> RTS flag; fixes trac #804
Ian Lynagh [Thu, 22 Mar 2007 17:01:14 +0000 (17:01 +0000)]
Make a Functor (IOEnv m) instance so it satisfies the new Quasi requirements
sven.panne@aedion.de [Thu, 22 Mar 2007 16:10:40 +0000 (16:10 +0000)]
Warning police: Removed catch-all case which was overlapped
simonpj@microsoft.com [Thu, 22 Mar 2007 12:28:59 +0000 (12:28 +0000)]
Add -ddump-mod-cycles to -M behaviour
This patch adds a flag -ddump-mod-cycles to the "ghc -M" dependency analyser.
The effect of
ghc -M -ddump-mod-cycles
is to dump a list of cycles foud in the module graph. The display is
trimmed so that only dependencies within the cycle are shown; and the
list of modules in a cycle is itself sorted into dependency order, so that
it is easy to track the chain of dependencies.
Open question: should the flag be "-ddump-mod-cycles" or "-optdep-dump-mod-cycles"? For this reason I have not yet added to the documentation.
simonpj@microsoft.com [Thu, 22 Mar 2007 11:07:18 +0000 (11:07 +0000)]
Improve documentation of instances
simonpj@microsoft.com [Wed, 21 Mar 2007 14:04:24 +0000 (14:04 +0000)]
Fix checkHiBootIface for instances declared in hs-boot files
Hs-boot files can contain instance declarations, but Duncan used this feature
for the first time today, and it didn't quite work. I'm not sure whether
it worked before; anyway it does now.
The point is that the hs-boot file advertises an instance for, say, Num Int,
with the arbitrary name $fx1. The main module declares Num Int, and gives
it the name, say, $f3. So we need to generate a declaration
$fx1 = $f3
to make it all line up. And (this is the bit that was wrong) we need
to make that new binding visible to imported unfoldings that mention
$fx1.
red5_2@hotmail.com [Sun, 18 Mar 2007 03:31:32 +0000 (03:31 +0000)]
mangler and runtime updates for gcc 4 on ia64
Gcc 4 is doing more clever optimizations than earlier gccs.
These changes let ghc compile and run on ia64 with gcc 4.0.3.
Register stack frames are enlarged so that all functions use the
same size stack frame.
The code to mangle tail calls has been cleaned up and made more
general.
Additional floating-point and special-purpose registers used by
GCC are saved upon entering the STG runtime.
More general handling of NOP instructions.
Handling of functions with multiple epilogues or no epilogue.
red5_2@hotmail.com [Sat, 17 Mar 2007 02:55:29 +0000 (02:55 +0000)]
ia64 tailcall fix
Tail-calls now branch to the end of the function after the call. This
stops gcc from trying to move instructions into the space immediately
after the call, which confuses the mangler.
simonpj@microsoft.com [Wed, 21 Mar 2007 11:20:57 +0000 (11:20 +0000)]
Remove bogus export from TcSplice.lhs-boot
simonpj@microsoft.com [Wed, 21 Mar 2007 11:16:39 +0000 (11:16 +0000)]
Wibble to GHCi part of TcRnDriver
simonpj@microsoft.com [Wed, 21 Mar 2007 09:37:33 +0000 (09:37 +0000)]
Yet another wibble to checkHiBootIface; it's trickier than it looks!
simonpj@microsoft.com [Wed, 21 Mar 2007 09:36:11 +0000 (09:36 +0000)]
Improve pretty-printing for IfaceConDecl
simonpj@microsoft.com [Wed, 21 Mar 2007 09:35:25 +0000 (09:35 +0000)]
Remove redundant exports from a hs-boot file
simonpj@microsoft.com [Tue, 20 Mar 2007 15:41:26 +0000 (15:41 +0000)]
Further wibbles to checkBootIface (fixed HEAD build)
simonpj@microsoft.com [Mon, 19 Mar 2007 15:19:26 +0000 (15:19 +0000)]
Use explict layout (fixes breakage when compiling TcSimplify)
Ian Lynagh [Sat, 17 Mar 2007 00:40:03 +0000 (00:40 +0000)]
Fix typo "lazy y x" -> "lazy y"
simonpj@microsoft.com [Fri, 16 Mar 2007 15:17:12 +0000 (15:17 +0000)]
Desugar applications of 'seq' specially; fix Trac #1031
Merge to 6.6 branch. Test case is dsrun014.
Note [Desugaring seq] cf Trac #1031
~~~~~~~~~~~~~~~~~~~~~
f x y = x `seq` (y `seq` (# x,y #))
The [CoreSyn let/app invariant] means that, other things being equal, because
the argument to the outer 'seq' has an unlifted type, we'll use call-by-value thus:
f x y = case (y `seq` (# x,y #)) of v -> x `seq` v
But that is bad for two reasons:
(a) we now evaluate y before x, and
(b) we can't bind v to an unboxed pair
Seq is very, very special! So we recognise it right here, and desugar to
case x of _ -> case y of _ -> (# x,y #)
The special case would be valid for all calls to 'seq', but it's only *necessary*
for ones whose second argument has an unlifted type. So we only catch the latter
case here, to avoid unnecessary tests.
simonpj@microsoft.com [Fri, 16 Mar 2007 14:28:24 +0000 (14:28 +0000)]
Improve error messages for 'deriving' clauses
This patch improves the misleading error message reported in Trac #1133.
Please merge the patch to the 6.6.1 branch.
simonpj@microsoft.com [Fri, 16 Mar 2007 13:38:50 +0000 (13:38 +0000)]
Refactor TcRnDriver, and check exports on hi-boot files
This patch refactors TcRnDriver to make the top-level structure
easier to understand.
The change was driven by Trac #924, and this patch fixes that bug.
When comparing a module against its hs-boot file, we must ensure that
the module exports everything that the hs-boot file exports.
simonpj@microsoft.com [Fri, 16 Mar 2007 13:38:22 +0000 (13:38 +0000)]
Comment out debug traces
sven.panne@aedion.de [Thu, 15 Mar 2007 15:28:23 +0000 (15:28 +0000)]
Use update-alternatives for handling generic tool names
ATTENTION: Packagers should read the following stuff carefully!
GHC, Hugs and nhc come with various tools like runhaskell or hsc2hs. On the
one hand this is quite handy, avoiding lots of tiny native packages, but OTOH
this leads to a few problems:
* The tools are not always identical in functionality.
* The tools fight for a global generic name like "/usr/bin/runhaskell".
These problems are not new and not unique to Haskell implementations, so for
*nix-based system there is a tool called update-alternatives which handles
those cases. The idea is as follows:
* Each program/man page/etc. installs itself with a very specific name
like /usr/bin/hsc2hs-ghc or /usr/share/man/man1/lua5.1.1.gz, so nothing
clashes.
* The (un-)installation scripts call update-alternatives to notify the
system about new alternatives for a generic tool/manpage/etc.
* Alternatives can be grouped together ("link groups"), so e.g. switching
from Sun's Java to Kaffe switches compiler, JRE, manpages etc. together.
Alas, this doesn't work well with the Haskell implementations yet,
because they come with different sets of tools (in addition to runFOO):
GHC: hsc2hs
Hugs: hsc2hs, cpphs
nhc: cpphs
Either these tools should be disentangled fromt the Haskell
implementations or all implementations should offer the same set.
Opinions and recommendations on this topic are highly welcome.
* This mechanism can be used to easily switch between several versions of
the same implementation, too, but we are not yet fully prepared for that.
As a first step, GHC now installs hsc2hs as 'hsc2hs-ghc' and does *not*
install runhaskell directly anymore, only runghc. hsc2hs and runhaskell are
created via update-alternatives now. What is currently missing is a mechanism
for platforms like Windows and probably Mac OS X.
simonpj@microsoft.com [Thu, 15 Mar 2007 14:28:12 +0000 (14:28 +0000)]
Make the type-defaulting in GHCi use () as the first default type
See Trac #1200
This is a somewhat experimental fix. I'm not sure we want it in 6.6.1
The idea is explained in Note [Default unitTy] in TcSimplify. In
interative mode (or with -fextended-default-rules) we add () as the
first type we try when defaulting. This has very little real impact,
except in the following case. Consider:
Text.Printf.printf "hello"
This has type (forall a. IO a); it prints "hello", and returns
'undefined'. We don't want the GHCi repl loop to try to print that
'undefined'. The neatest thing is to default the 'a' to (), rather
than to Integer (which is what would otherwise happen; and then GHCi
doesn't attempt to print the (). So in interactive mode, we add () to
the list of defaulting types.
sven.panne@aedion.de [Thu, 15 Mar 2007 12:24:57 +0000 (12:24 +0000)]
Added support for parallel builds
With this patch, one can define the degree of build parallelism via a 'jobs'
rpm variable. A comfortable way to use this is having a ~/.rpmmacros file with
a line like:
%jobs 2
Alternatively, one could use a '--define "jobs 2"' command line flag for
rpmbuild. On a Core 2 Duo using 2 jobs brings down the time for a full build
including extralibs from 36m to 27m. If 'jobs' is not defined, a normal
sequential build is done, following the usual conventions on e.g. openSUSE.