darcs patch: Refuse to run any commands if the .cabal has been modified

Simon Marlow simonmarhaskell at gmail.com
Tue Oct 23 05:34:40 EDT 2007

I think we want to get this patch into the Cabal shipped with GHC 6.8.1. 
It closes one possible way that spurious build failures can occur when 
tracking development with multiple packages.  The xmonad team report that 
this is a common problem for users.

patch description:

Tue Oct 23 10:31:11 BST 2007  Simon Marlow <simonmar at microsoft.com>
   * Refuse to run any commands if the .cabal has been modified
   See GHC bug #1372
   This is a consistency check, intended to prevent this class of build

      * Package P is updated, its version number is bumped, the
        new version is compiled and installed.

      * Package Q depends on P.  Q is modified to use the new P, and Q's
        .cabal file is updated with changes to the build-depends field to
        depend on the new version of P.

      * The user has an old build of Q.  They pull the changes to Q and
        'setup build' without cleaning or re-configuring.  Build errors
        ensue, because the code of Q depends on changes to P's API, and
        we're still building against the old P.

   Note that you can't get segfaults this way, only build errors.

   This also relies on some new consistency checking in GHC 6.8 to work
   properly.  If the user re-configures their Q build and then issues
   'setup build' without cleaning, GHC must now realise that the package
   flags have changed, and re-compile all the affected Q modules.  GHC
   6.6 would not do this, but 6.8 does.
-------------- next part --------------

New patches:

[Refuse to run any commands if the .cabal has been modified
Simon Marlow <simonmar at microsoft.com>**20071023093111
 See GHC bug #1372
 This is a consistency check, intended to prevent this class of build
    * Package P is updated, its version number is bumped, the
      new version is compiled and installed.
    * Package Q depends on P.  Q is modified to use the new P, and Q's
      .cabal file is updated with changes to the build-depends field to
      depend on the new version of P.
    * The user has an old build of Q.  They pull the changes to Q and
      'setup build' without cleaning or re-configuring.  Build errors
      ensue, because the code of Q depends on changes to P's API, and
      we're still building against the old P.
 Note that you can't get segfaults this way, only build errors.
 This also relies on some new consistency checking in GHC 6.8 to work
 properly.  If the user re-configures their Q build and then issues
 'setup build' without cleaning, GHC must now realise that the package
 flags have changed, and re-compile all the affected Q modules.  GHC
 6.6 would not do this, but 6.8 does.
] {
hunk ./Distribution/Simple/Configure.hs 47
+                                      checkPersistBuildConfig,
hunk ./Distribution/Simple/Configure.hs 123
-    ( doesFileExist )
+    ( doesFileExist, getModificationTime )
hunk ./Distribution/Simple/Configure.hs 158
--- |Read the 'localBuildInfoFile'.  Error if it doesn't exist.
+-- |Read the 'localBuildInfoFile'.  Error if it doesn't exist.  Also
+-- fail if the file containing LocalBuildInfo is older than the .cabal
+-- file, indicating that a re-configure is required.
hunk ./Distribution/Simple/Configure.hs 179
+-- |Check that localBuildInfoFile is up-to-date with respect to the
+-- .cabal file.
+checkPersistBuildConfig :: FilePath -> IO ()
+checkPersistBuildConfig pkg_descr_file = do
+  t0 <- getModificationTime pkg_descr_file
+  t1 <- getModificationTime localBuildInfoFile
+  when (t0 > t1) $
+    die (pkg_descr_file ++ " has been changed, please re-configure.")
hunk ./Distribution/Simple/Configure.hs 192
hunk ./Distribution/Simple/Configure.hs 303
+                    pkgDescrFile        = Nothing,
hunk ./Distribution/Simple/LocalBuildInfo.hs 90
+        pkgDescrFile  :: Maybe FilePath,
+                -- ^ the filename containing the .cabal file, if available
hunk ./Distribution/Simple.hs 87
-import Distribution.Simple.Configure(getPersistBuildConfig, maybeGetPersistBuildConfig,
+import Distribution.Simple.Configure(getPersistBuildConfig, 
+                                     maybeGetPersistBuildConfig,
+                                     checkPersistBuildConfig,
hunk ./Distribution/Simple.hs 310
-                pkg_descr0 <- maybe (confPkgDescr flags') (return . Right) mdescr
+                (mb_pd_file, pkg_descr0) <- confPkgDescr flags'
hunk ./Distribution/Simple.hs 319
-		localbuildinfo <- confHook hooks epkg_descr flags'
+		localbuildinfo0 <- confHook hooks epkg_descr flags'
hunk ./Distribution/Simple.hs 321
+                -- remember the .cabal filename if we know it
+                let localbuildinfo = localbuildinfo0{ pkgDescrFile = mb_pd_file }
hunk ./Distribution/Simple.hs 328
-                confPkgDescr :: ConfigFlags -> IO (Either GenericPackageDescription
-                                                          PackageDescription)
-                confPkgDescr cfgflags = do
-                  mdescr' <- readDesc hooks
-                  case mdescr' of
-                    Just descr -> return $ Right descr
-                    Nothing -> do
-                      pdfile <- defaultPackageDesc (configVerbose cfgflags)
-                      ppd <- readPackageDescription (configVerbose cfgflags) pdfile
-                      return (Left ppd)
+                confPkgDescr :: ConfigFlags
+                             -> IO (Maybe FilePath,
+                                    Either GenericPackageDescription
+                                           PackageDescription)
+                confPkgDescr cfgflags =
+                   case mdescr of
+                     Just ppd -> return (Nothing, Right ppd)
+                     Nothing  -> do
+                       mdescr' <- readDesc hooks
+                       case mdescr' of
+                         Just descr -> return (Nothing, Right descr)
+                         Nothing -> do
+                           pdfile <- defaultPackageDesc (configVerbose cfgflags)
+                           ppd <- readPackageDescription (configVerbose cfgflags) pdfile
+                           return (Just pdfile, Left ppd)
hunk ./Distribution/Simple.hs 345
-                lbi <- getPersistBuildConfig
+                lbi <- getBuildConfigIfUpToDate
hunk ./Distribution/Simple.hs 356
-                        getPersistBuildConfig
+                        getBuildConfigIfUpToDate
hunk ./Distribution/Simple.hs 361
-                        getPersistBuildConfig
+                        getBuildConfigIfUpToDate
hunk ./Distribution/Simple.hs 366
-                        getPersistBuildConfig
+                        getBuildConfigIfUpToDate
hunk ./Distribution/Simple.hs 371
-                        getPersistBuildConfig
+                        getBuildConfigIfUpToDate
hunk ./Distribution/Simple.hs 390
-                        getPersistBuildConfig
+                        getBuildConfigIfUpToDate
hunk ./Distribution/Simple.hs 395
-                        getPersistBuildConfig
+                        getBuildConfigIfUpToDate
hunk ./Distribution/Simple.hs 413
-                localbuildinfo <- getPersistBuildConfig
+                localbuildinfo <- getBuildConfigIfUpToDate
hunk ./Distribution/Simple.hs 420
-                        getPersistBuildConfig
+                        getBuildConfigIfUpToDate
hunk ./Distribution/Simple.hs 425
-                        getPersistBuildConfig
+                        getBuildConfigIfUpToDate
hunk ./Distribution/Simple.hs 450
+getBuildConfigIfUpToDate :: IO LocalBuildInfo
+getBuildConfigIfUpToDate = do
+   lbi <- getPersistBuildConfig
+   case pkgDescrFile lbi of
+     Nothing -> return ()
+     Just pkg_descr_file -> checkPersistBuildConfig pkg_descr_file
+   return lbi


[Correct the spelling of mingw32 in os alias list
Duncan Coutts <duncan at haskell.org>**20071018195641
[refinement of fix for #1785: don't use xargs' -s option at all
Simon Marlow <simonmar at microsoft.com>**20071019124522] 
[don't fail if xxx_hsc_make.c is gone
Ross Paterson <ross at soi.city.ac.uk>**20071018164245
 The non-GHC hsc2hs deletes it even if the compilation fails.
[Use cpp-options rather than abusing ghc-options
Duncan Coutts <duncan at haskell.org>**20071017164914] 
[Add a "cpp-options:" field and use it for pre-processing .hs .hsc .chs files
Duncan Coutts <duncan at haskell.org>**20071017164747
 This is for pre-processing Haskell modules, not for C code. We already have
 cc-options for that purpose. Up 'til now people have been abusing ghc-options
 for this purpose. Even Cabal itself was guilty of doing that.
[Figure out if hsc2hs is using gcc or ghc as it's C compiler
Duncan Coutts <duncan at haskell.org>**20071017143108
 and pass the appropriate flags on the basis of knowing that.
 This is a hack.
 What we should do longer term is make hsc2hs always use gcc as it's C compiler
 and have Cabal figure out the right flags to pass it, rather than using ghc
 to pass on the appropriate flags to gcc.
[Change the handling of cpp & ghc flags for hsc2hs
Duncan Coutts <duncan at haskell.org>**20071016231652
 The hsc2hs that comes with ghc uses ghc as the C compiler. This means we must
 escape the real cc flags. It also means we can ask ghc to add extra include
 dirs that we might need to find includes of dependent packages. This is a bit
 of a hack. In the longer term it'd be better for Cabal to collect the include
 dirs and cc options of dependent packages and to pass them explicitly itself.
[Move ghcVerbosity function into GHC module to share code
Duncan Coutts <duncan at haskell.org>**20071014165730] 
[Note current development version number in release notes
Duncan Coutts <duncan at haskell.org>**20071012121835] 
[Update the TODO list, mostly removing things.
Duncan Coutts <duncan at haskell.org>**20071012121702
 Most of these are duplicated by Trac bugs.
 We should try and get rid of this TODO file completely and just use Trac.
[Add logging functions notice, info, debug functions and use them consistently
Duncan Coutts <duncan at haskell.org>**20071012113237
 We previously had this kind of code all over the place:
 > when (verbosity >= verbose)
 >      (putStrLn "some message")
 We now replace that with:
 > info verbosity "some message"
 Much nicer.
[When parsing ghc-pkg output, only look at the first package.conf file for GlobalPackageDB and SpecificPackageDB, and all package.conf files for UserPackageDB.
bjorn at bringert.net**20071016095254
 Before, we would consider user packages when fulfilling dependencies
 for global installs. ghc-pkg will refuse to install packages globally if they
 use user packages. Thus, without this patch, global installs can fail when you have user packages installed.
[Pass -c (silent create) to ar when verbosity < normal.
bjorn at bringert.net**20071013220906] 
[Change --verbosity= option of SetupWrapper (cabal-setup) to --verbose=, since that is what the rest of Cabal uses.
bjorn at bringert.net**20071013215617] 
[Pass -w -v0 to ghc when compiling Setup.{lhs,hs} in SetupWrapper when verbosity == silent.
bjorn at bringert.net**20071013214820] 
[Update documentation on configurations
Duncan Coutts <duncan at haskell.org>**20071012015338
 Describe the new syntax and make variuous changes to the
 description of the meaning.
[Use -O2 for compiling .c files when we configure --enable-optimization
Duncan Coutts <duncan at haskell.org>**20071011223607
 Seems a reasonable default behaviour.
[Remove commented-out code. 
bjorn at bringert.net**20071006083615
 Push to 1.2.
[Rename parseDescription to parsePackageDescription.
bjorn at bringert.net**20071006083354
 This should be pushed to cabal-1.2 to make cabal-install work with 1.2.
[Bump version number to 1.3
bjorn at bringert.net**20071005105412] 
[Fix GenericPrackageDescription pretty printing to make it parsable. It still does not include all information.
bjorn at bringert.net**20071005102555] 
[Haddock comment for the available dependencies argument to finalizePackageDescription.
bjorn at bringert.net**20071004134544] 
[FIX GHC bug #1785: use 2048 as the maximum command-line size
Simon Marlow <simonmar at microsoft.com>**20071018140500
 Apparently Solaris sets a limit of 2048 here
[Expose parseDescription.
bjorn at bringert.net**20071005104554] 
[parameterise InstalledPackageInfo over the type of module names
Simon Marlow <simonmar at microsoft.com>**20071003114947
 This is useful in GHC, we can instantiate InstalledPackageInfo to
 ModuleName and avoid lots of String<->FastString conversions.
[Add extra-libs to shared library linking
Clemens Fruhwirth <clemens at endorphin.org>**20070927123923] 
[Actually -stubdir only works well in ghc-6.8 due to -I search dir mess
Duncan Coutts <duncan at haskell.org>**20070926131843
 In ghc-6.6 the Foo/Bar.hc files only #include "Bar_stub.h" rather than
 #include "Foo/Bar_stub.h". This means when we set the stubdir so that the
 _stub.h files don't sit next to the .hs file then the include search path
 is not right to find the _stub.h file. In ghc-6.8 this is fixed so that
 it adds the -stubdir path to the include search path when calling gcc.
[The -stubdir flag is supported in ghc-6.6 not just 6.6.1
Duncan Coutts <duncan at haskell.org>**20070926114223] 
[Improve error messages for failed sanity checks.
Thomas Schilling <nominolo at gmail.com>**20070925144955] 
[Translate flat files into sectionized files, by duplicating global
Thomas Schilling <nominolo at gmail.com>**20070925144921
 dependecies into each non-empty section.  The previous solution dumped
 them into the library section, even if it would have been empty
[Add -package-name to GHC invocation when linking DSOs
Clemens Fruhwirth <clemens at endorphin.org>**20070926090025] 
[Be more fuzzy with os, arch and impl matching in conditions. Fixes bug #158.
Duncan Coutts <duncan at haskell.org>**20070925132608
 Do all the comparisons case insensitively and add some OS aliases so that
 if os(windows)  works if the System.Info.os is actually "mingw32".
[Don't generate links when dependent docs not installed. Fixes bug #157.
Duncan Coutts <duncan at haskell.org>**20070924142520
 Generates a warning rather than failing as before.
[Fix warnings
Ian Lynagh <igloo at earth.li>**20070923122921] 
[Fix pre-processing for executables
Duncan Coutts <duncan at haskell.org>**20070922105414
 The pre-processed files should go into the exe's build dir, not the
 lib's build dir. Also pre-process main modules, fixing bug #14.
[Remove some now-unecessary cleaning that causes problems for haskell-src
Ian Lynagh <igloo at earth.li>**20070920203257
 The code that removes .hs files in the source tree generated from .y files
 had a comment:
     XXX: This is actually no longer necessary, but we keep it, so that
     clean works correctly on packages built with an older version of Cabal
 This was causing problems for source distributions that include such
 generated files (including haskell-src in extralibs).
[Move expensive conviguration actions inside branch where they're used
Duncan Coutts <duncan at haskell.org>**20070917085834
 We only need to configure the compiler and resolve any "Cabal-Version:"
 dependency when we're actually going to compile the Setup.hs program.
 We can otherwise save time by not calling ghc and ghc-pkg unnecessarily.
 (I only noticed this because I've got >150 registered packages which
 causes ghc and ghc-pkg to be very slow to start.)
[Note in .cabal file that we're using a custom build-type
Duncan Coutts <duncan at haskell.org>**20070917033959] 
[Pass on all the cabal-setup options to cabal, not just unrecognised ones
Duncan Coutts <duncan at haskell.org>**20070917025121
 So for example -v and -w get passed on rather than swallowed by cabal-setup
[Put setup program and setup .o/.hi files into dist/setup
Duncan Coutts <duncan at haskell.org>**20070917024907
 That way they get cleaned automatically and do not clutter the top dir.
[Correct the verbosity range in the "--help" text
Duncan Coutts <duncan at haskell.org>**20070917024416
 The correct range in 0--3, not 0--2 or 0--5
[look in odir for source and .hs files, not buildDir lbi
Duncan Coutts <duncan at haskell.org>**20070917145030
 odir = buildDir lbi for the lib case, which is why it worked most of the time
 in testing but in the exe case it's a different dir.
[Put _stub.{c|h} files under dist/ so they'll get cleaned. Fixes bug #154.
Duncan Coutts <duncan at haskell.org>**20070917123042
 Only used with ghc-6.6 and later which supports the -stubdir flag.
 With earlier ghc versions the files still end up in the src dirs and so do not
 get cleaned.
[Don't create empty data dirs. Fixes bug #153.
Duncan Coutts <duncan at haskell.org>**20070912113803
 Patch contributed by Sven Panne.
[Use confgurations to help build Cabal for ghc-6.2.x
Duncan Coutts <duncan at haskell.org>**20070912112934
 Replacing a long-standing comment telling people how to do it manually.
[Add a boring file
Ian Lynagh <igloo at earth.li>**20070913203550] 
[Fix haddockDir
Ian Lynagh <igloo at earth.li>**20070912133051] 
[Add htmlDirTemplate to inplaceDirs
Ian Lynagh <igloo at earth.li>**20070912125749] 
[Add a --htmldir flag
Ian Lynagh <igloo at earth.li>**20070912122145] 
[Don't forcibly append "pkgName (package pkg_descr)" to htmldir
Ian Lynagh <igloo at earth.li>**20070911192814] 
[TAG 2007-09-06
Ian Lynagh <igloo at earth.li>**20070906212150] 
[use OPTIONS instead of OPTIONS_GHC for now, the latter doesn't work with GHC 6.2.x
Simon Marlow <simonmar at microsoft.com>**20070912105243] 
[warning police
Simon Marlow <simonmar at microsoft.com>**20070907140731] 
[Update D.S.GHC/Makefile.hs
Clemens Fruhwirth <clemens at endorphin.org>**20070906213507] 
[Add shared library building to GHC module (also via Makefile)
Clemens Fruhwirth <clemens at endorphin.org>**20070906213132] 
[fix type clash: Data.Version -> Distribution.Version
Malcolm.Wallace at cs.york.ac.uk**20070906163051] 
[fix broken #ifdefs for nhc98
Malcolm.Wallace at cs.york.ac.uk**20070906161553] 
[spell nhc98-options correctly
Malcolm.Wallace at cs.york.ac.uk**20070906150411] 
[TAG 1.2.0
Duncan Coutts <duncan at haskell.org>**20070906121830] 
[Remove now-empty dependencies dir
Duncan Coutts <duncan at haskell.org>**20070906012144
 Not needed since cabal-install moved to another repo.
[note need to use -i when bootstrapping ghc, and update coders list
Duncan Coutts <duncan at haskell.org>**20070906012055] 
[Bump version number to 1.2.0
Duncan Coutts <duncan at haskell.org>**20070906010337] 
[Fix haddock markup
Duncan Coutts <duncan at haskell.org>**20070906010221] 
[Use layout rather than braces {} for sections in our own .cabal file
Duncan Coutts <duncan at haskell.org>**20070906002844
 Since we can and we want to set a good example.
[Update changelog
Duncan Coutts <duncan at haskell.org>**20070906002539] 
[Update authors list in LICENSE and remove duplicate copyright file
Duncan Coutts <duncan at haskell.org>**20070906002235
 We currently have 39 different authors, all those with a significant number
 of patches are listed as copyright holders in the LICENSE file.
[Rewrite the parser for the configuration structure to allow laout or braces
Duncan Coutts <duncan at haskell.org>**20070905223609
 Joint work with Thomas Schilling.
 The sections and indeed fields (and if/else) can now use either explicit
 brace {} style layout or indentation eg:
 > library
 >   exposed-modules: Blah
 > library {
 >   exposed-modules:
 > }
 layout style can be nested within explict braces style and vica versa.
 Also add some more checks and relax the tab checks.
 Unrecognised sections, like unrecognised fields, are not fatal errors,
 so we could add sections in future without breaking old cabal.
[Remove unused helper function
Duncan Coutts <duncan at haskell.org>**20070903122408
 Ok to remove, it never appeared in any release.
[Oops, fix Distribution.Make
Duncan Coutts <duncan at haskell.org>**20070903122355] 
[Fix haddock markup
Duncan Coutts <duncan at haskell.org>**20070903113145
 Thanks to int-e for reporting
[Generalise build --ghc-option flag to --prog-option for any prog
Duncan Coutts <duncan at haskell.org>**20070903110658
 and remove makefile --ghc-option flag as it's not used (as far as I can see).
 It works generically by updating the ProgramConfiguration rather than the
 previous ad-hoc implementation. This feature is generally only useful for
 hackers who want to pass extra args to a progam during the build step
 (probably as a one-off) without having to reconfigure.
[Make userSpecifyArgs update the args even if the prog is configured already
Duncan Coutts <duncan at haskell.org>**20070903104852] 
[Remove register --with-hc-pkg flag
Duncan Coutts <duncan at haskell.org>**20070903091038
 It was just a hack for the benefit of ghc and we don't need it now.
[Rename --prog-args to --prog-options
Duncan Coutts <duncan at haskell.org>**20070902170637
 amd --prog-arg to --prog-arg and update the user guide.
[Change --configure-option= to --configure-arg=
Duncan Coutts <duncan at haskell.org>*-20070902003334
 For consitency with other flags.
[Change --configure-option= to --configure-arg=
Duncan Coutts <duncan at haskell.org>**20070902003334
 For consitency with other flags.
[Pass --configure-option=  options to configure in the right order
Duncan Coutts <duncan at haskell.org>**20070901173147
 in the same order as they were passed to cabal configure on the command line
[Add --prog-arg= and make --prog-args parse quotes
Duncan Coutts <duncan at haskell.org>**20070901171742
 So this provides two ways of passing options that contain embeded spaces:
 --foo-args='--bar --baz="path with spaces in"'
 --foo-arg=--bar --foo-arg=--baz="path with spaces in"
 all args passed this way are collected in order.
[Don't use normalise when parsing configure arguments
Duncan Coutts <duncan at haskell.org>**20070901162043] 
[Maintainer is now cabal-devel at haskell.org
Ross Paterson <ross at soi.city.ac.uk>**20070901140921] 
[Document the new "pkgconfig-depends:" field
Duncan Coutts <duncan at haskell.org>**20070831182113] 
[Update the user guide on where the build-tools: field lives
Duncan Coutts <duncan at haskell.org>**20070831181816
 It's now part of the build information rather than package description,
 which is as it should be.
[Use pkg-config to check for the packages specified in "pkgconfig-depends:"
Duncan Coutts <duncan at haskell.org>**20070831171014
 And fill out the includeDirs, extraLibs, extraLibDirs, ccOptions and ldOptions
 with the results from pkg-config --cflags --libs
[Add a pkgconfig-depends: field to the .cabal file
Duncan Coutts <duncan at haskell.org>**20070831170922] 
[Move build-tools into the lib/exe stanzas and update configure
Duncan Coutts <duncan at haskell.org>**20070831144001
 configure now has to gather the required build tools from the BuildInfo
 of the lib and exes.
[Add util function allBuildInfo :: PackageDescription -> [BuildInfo]
Duncan Coutts <duncan at haskell.org>**20070831143906
 The 'BuildInfo' for the library (if there is one and it's buildable)
 and all the buildable executables. Useful for gathering dependencies.
[Refactor the internal handling of the "--user" flag into a PackageDB type
Duncan Coutts <duncan at haskell.org>**20070831135042
 PackageDB can be user/global or a specific package db. The latter option is
 not exposed in the user interface anywhere.
 Also move the getInstalledPackages into the per-compiler modules with a
 non-compiler-specific wrapper left in Distribution.Simple.Configure
[Fix various mispellings of nhc98.
Malcolm.Wallace at cs.york.ac.uk**20070906143959] 
[nhc-options should be spelled nhc98-options
Malcolm.Wallace at cs.york.ac.uk**20070906143536] 
[make this buildable with GHC 6.2.x
Simon Marlow <simonmar at microsoft.com>**20070903140232] 
[Warning supression for Windows
Ian Lynagh <igloo at earth.li>**20070902225111] 
[Suppress some warnings
Ian Lynagh <igloo at earth.li>**20070902193955] 
[Don't pass docdir to ./configure, as older autoreconfs don't support it
Ian Lynagh <igloo at earth.li>**20070831173226] 
[Display the appropriate install messages for lib vs exes
Duncan Coutts <duncan at haskell.org>**20070831115746
 Don't confuse users by suggesting that we're installing libs when we're
 actually only installing exes, or vica-versa.
[Update user guide on Windows installation paths, and add default for docdir
Duncan Coutts <duncan at haskell.org>**20070831113054] 
[fix 'Make checking program versions not produce error spew' for non-GHC
Ross Paterson <ross at soi.city.ac.uk>**20070831082438] 
[track renaming of GHCMakefile.in
Ross Paterson <ross at soi.city.ac.uk>**20070831082151] 
[for c2hs, look for .chi files in dist/build rather than hs-src-dirs
Duncan Coutts <duncan at haskell.org>**20070830233715
 Since when we run c2hs we put .chi files into dist/build so that's also
 where we should be looking for them.
[Install license file into docdir rather than datadir
Duncan Coutts <duncan at haskell.org>**20070830233651] 
[Change installation layout on Windows slightly
Duncan Coutts <duncan at haskell.org>**20070824163141
 Make Haskell part of the default $prefix and make docs relative
 to $prefix rather than $datadir which is fixed for libs.
 Make the default fixed lib $datadir be Program Files\Haskell rather
 than Common Files.
[Make checking program versions not produce error spew
Duncan Coutts <duncan at haskell.org>**20070830144312
 Redirect stderr to /dev/null (or NUL on windows) and throw an exception
 like rawSystemExit does rather than calling die which prints an unhelpful
 message before throwing an exception. It's not an overall failure to not
 be able to establish the version of a program, since we check later if we
 actually have any requirement for any particular version anyway.
 So for example this makes running configure with an old version of c2hs
 that doesn't grok --numeric-version not produce unhelpful output that
 make people think that configure failed.
[Reorder configure message about what compiler we're using
Duncan Coutts <duncan at haskell.org>**20070829014420] 
[Remove compilerProg & compilerPkgTool from Compiler
Duncan Coutts <duncan at haskell.org>**20070829013814
 This info is redundant since the compiler-specific code knows what
 programs to run and it can get that from the ProgramConfiguration.
[Make getInstalledPackages use ProgramConfiguration rather than Compiler
Duncan Coutts <duncan at haskell.org>**20070829013518
 These should be moved into the GHC and JHC modules, possibly with some
 unifying version if that make sense.
[Add rawSystemProgramStdout, the Program variant of rawSystemStdout
Duncan Coutts <duncan at haskell.org>**20070829012200] 
[Don't use the compilerProg and compilerPkgTool, use the ProgramConfiguration
Duncan Coutts <duncan at haskell.org>**20070829002113
 Except for reporting, we use the ProgramConfiguration directly.
 Less duplication of information this way.
[More register cleanups to do with ghc-pkg args
Duncan Coutts <duncan at haskell.org>**20070829002008] 
[Rename searchPath to findProgramOnPath
Duncan Coutts <duncan at haskell.org>**20070828162906] 
[Move defaultCompilerFlavor into Distribution.Compiler
Duncan Coutts <duncan at haskell.org>**20070828161546] 
[Move GHC Makefile's .depend into dist/build
Clemens Fruhwirth <clemens at endorphin.org>**20070824115920] 
[Add dynlibdir to InstallDirs
Clemens Fruhwirth <clemens at endorphin.org>**20070828092655] 
[Move several modules under .Simple
Duncan Coutts <duncan at haskell.org>**20070826201510
 Compiler, Program, PreProcess and Setup are really part of the Simple
 build system.
 Also move a couple GHC modules under Simple.GHC.*
[Use dllExtension rather than reimplementing it locally
Duncan Coutts <duncan at haskell.org>**20070825114706] 
[correct copy'n'pasted comment
Duncan Coutts <duncan at haskell.org>**20070825114203] 
[remove unused imports
Duncan Coutts <duncan at haskell.org>**20070825114141] 
[Remove the use of 'normalise' since it is currently broken (normalise
Thomas Schilling <nominolo at gmail.com>**20070824233303
 "./" => "/"!) and we don't need it that much, right now.
[Add mkSharedLibName to D.Simple.Utils for DSO filename mangling
Clemens Fruhwirth <clemens at endorphin.org>**20070824141609] 
[Add --enable-shared as configure argument, and ghc-shared-options as .cabal field
Clemens Fruhwirth <clemens at endorphin.org>**20070824141140] 
[Define delete in Distribution/Compat/Map.hs
Ian Lynagh <igloo at earth.li>**20070829195308
 Fixes the build with old GHCs.
[Rejig the register code a bit
Ian Lynagh <igloo at earth.li>**20070828205209] 
[The prologue.txt is not needed for anything
Duncan Coutts <duncan at haskell.org>*-20070822214122
 The text from the description is now used for haddock
[Add docDirTemplate for inplace package config files
Clemens Fruhwirth <clemens at endorphin.org>**20070824204819] 
[Import FilePath.dropDrive for hugs and GHC>6.6. In all other cases, provide our own.
Clemens Fruhwirth <clemens at endorphin.org>**20070824145816] 
[Install any license file
Duncan Coutts <duncan at haskell.org>**20070824161642] 
[Update documentation on install-includes field
Duncan Coutts <duncan at haskell.org>**20070824155146] 
[Add install-includes .h files to the sdist tarball
Duncan Coutts <duncan at haskell.org>**20070824154839] 
[Only create includes and bin dirs if necessary
Duncan Coutts <duncan at haskell.org>**20070824152749
 For includes, don't list the include dir in the package registration
 info unless we're actually going to install some include files.
 So we should create fewer pointless empty directories. See bug #97.
[Look for install-includes in . first, then in include-dirs
Duncan Coutts <duncan at haskell.org>**20070824152632
 Since .h files listed in install-includes need not be in the include-dirs
 search path at all.
[Document lots of flags and the new build-tools: field
Duncan Coutts <duncan at haskell.org>**20070824134316
 Document the following options:
 --enable-library-for-ghci / --disable-library-for-ghc
 --enable-library-vanilla / --disable-library-vanilla
 --enable-split-objs / --disable-split-objs
 --with-PROG= --PROG-args=
[Remove unused --enable-haddock-use-packages flags
Duncan Coutts <duncan at haskell.org>**20070824133045
 The feature they controled had been removed but
 the --enable/disable flag had not been removed.
[Add a "build-tools:" field to the cabal file format
Duncan Coutts <duncan at haskell.org>**20070823212946
 It's the same format as the build-depends, eg:
 build-tools: cpphs, c2hs >= 0.15
 During the configure step we try to configure the listed programs and
 if a version range is specified then we check that it is satisfied.
[Hack to supress a warning when building Cabal
Duncan Coutts <duncan at haskell.org>**20070823212645
 Normally we'd warn if using a new format cabal file and a cabal-version >= 1.2
 field is not specified in the cabal file. However we cannot do this for cabal
 itself or we'd not be able to bootstrap. So we just supress the warning for
 the package "Cabal".
[Wrap the configure help text program list and rename the prog arg templates
Duncan Coutts <duncan at haskell.org>**20070823193245
 Use "--with-PROG=" rather than "--with-<program>" since the other subsitution
 bits like ARGS, PATH etc are upper case contractions. So it's more consistent.
[Make the GetOpt help text fit in 80 cols by wrapping the description
Duncan Coutts <duncan at haskell.org>**20070823193015
 And reduce the padding slightly.
 The configure help text look slightly less terrible now, though we've still
 got too many long flags and short flags with long arg names so there's not
 really enough width for the description so it wraps in too many cases.
[Don't include the massive list of --with-prog --prog-args flags in help text
Duncan Coutts <duncan at haskell.org>**20070823155910
 Instead have just two generic ones in the help text and at the bottom,
 list the programs that the flags apply to.
 This still needs to be properly word wrapped to fit in 80 cols (as does the
 rest of the help text).
[Swap haddock inplace/install dirs that were accidentally the wrong way round
Duncan Coutts <duncan at haskell.org>**20070823154258] 
[Fix register --gen-script
Duncan Coutts <duncan at haskell.org>**20070823154218
 It's still useless on Windows.
[The prologue.txt is not needed for anything
Duncan Coutts <duncan at haskell.org>**20070822214122
 The text from the description is now used for haddock
[tweak #if's to avoid treating non-GHC as old GHC
Ross Paterson <ross at soi.city.ac.uk>**20070819232947] 
[Hugs: get dropDrive from current version of filepath
Ross Paterson <ross at soi.city.ac.uk>**20070819232801] 
[We don't need a short option configure flag for selecting nhc
Duncan Coutts <duncan at haskell.org>**20070817043021
 I don't think we need one for ghc either, but perhaps we shouldn't remove
 that immediately as people might be using it. It's safe to remove -n now
 becuase nobody is relying on it as nhc support is still incomplete.
[Trivial reformatting
Duncan Coutts <duncan at haskell.org>**20070817043002] 
[Make configure much less verbose by default and give useful output with -v
Duncan Coutts <duncan at haskell.org>**20070817042414
 This actually brings it into line with the other commands which do not produce
 much output by default. It is very very quiet by default now though.
 To make the -v output nice we have to lower the verbosity one notch in places.
[Add a sanity check that the ghc and ghc-pkg versions should be equal
Duncan Coutts <duncan at haskell.org>**20070817034519
 This was easy to do now that Programs know how to find their version numbers.
[Rewrite the Program abstraction and the ProgramConfiguration database
Duncan Coutts <duncan at haskell.org>**20070817033841
 Also make the follow on changes to everything that uses Program.
 The notion of a program is now split into the abstract notion of a program
 that we know about and might be able to configure, and a configured program
 that we can actually run. The ProgramConfiguration database is similarly
 split. We still keep user-supplied loation and arguments and use them when
 we configure programs. The abstract Program now has functions to search for
 the program on the system and for finding the version number. This allows
 for more generic configuration of programs.
[Add some extra functions to Compat.Map that we'll need later
Duncan Coutts <duncan at haskell.org>**20070817033800] 
[Split ConfVar into ConfFlag and ConfVar
Esa Ilari Vuokko <ei at vuokko.info>**20070816003105] 
[Make 'make tests' runnable again
Esa Ilari Vuokko <ei at vuokko.info>**20070816002009] 
[Add configure --docdir flag which defaults to "$datadir/doc/$pkgid"
Duncan Coutts <duncan at haskell.org>**20070816011634
 Fixes bug #140
[Fix Paths_pkg.hs generation
Esa Ilari Vuokko <ei at vuokko.info>**20070814204557] 
[Warning police: Add type signatures and rename arg
Esa Ilari Vuokko <ei at vuokko.info>**20070814160830] 
[Warning police: Remove unused statement and import
Esa Ilari Vuokko <ei at vuokko.info>**20070814143057] 
[Warning police: provide fallback pattern match
Esa Ilari Vuokko <ei at vuokko.info>**20070814143008] 
[Reorder, make explicit and beautify imports
Esa Ilari Vuokko <ei at vuokko.info>**20070814142000] 
[Refactor the code for managing installation directories
Duncan Coutts <duncan at haskell.org>**20070814092320
 New types for the collection of installation directory templates and a
 separate type for the collection of actual real install FilePaths.
 The templates are represented with a PathTemplate adt.
 Dir templates can now be relative to each other, eg $htmldir to $docdir
 Default install dir templates are now specified compactly in one place.
 Adding new dirs should be considerably simpler than previously.
 This patch should not actualy change where anything is installed.
[ghc only supports the -x flag in 6.6 and above
Duncan Coutts <duncan at haskell.org>**20070814090557] 
[update ghc-pkg field parse error message
Duncan Coutts <duncan at haskell.org>**20070812170800] 
[Clean up import ordering and format
Esa Ilari Vuokko <ei at vuokko.info>**20070811113227] 
[Explicit imports
Esa Ilari Vuokko <ei at vuokko.info>**20070811111518] 
[Use existing parsers to handle ghc-pkg field output
Esa Ilari Vuokko <ei at vuokko.info>**20070809041153] 
[Never generate empty language extension flags
Duncan Coutts <duncan at haskell.org>**20070808235240
 Needed because some compilers support some language extensions by default
 so need no flag to turn those extensions on.
[Cabal now depends on teh containers package
Ian Lynagh <igloo at earth.li>**20070801235622] 
[fix build with GHC 6.2.x
Simon Marlow <simonmar at microsoft.com>**20070809102844] 
[Parse the output of ghc --supported-languages correctly
Magnus Jonsson <magnus at smartelectronix.com>**20070808204523] 
[Oops, fix deprecated Distribution.Extension module
Duncan Coutts <duncan at haskell.org>**20070807172125
 it no longer exports the internal per-compiler extension to flags functions
 as they are no longer exist and the equivalents are internal.
[remove unused local vars
Duncan Coutts <duncan at haskell.org>**20070807171235] 
[Add compilerExtensions field to Compiler and make each compiler fill it in
Duncan Coutts <duncan at haskell.org>**20070807170653
 It's just a list of supported extensions and the corresponding compiler flags.
 For most compilers this is currently just a static list. For ghc 6.7 and above
 we query ghc to find the list of language extensions it supports.
 In each case the code has moved out into the compiler-specific modules and the
 core code treats it generically.
 The extensionsToFlags function has been split into two:
 extensionsToFlags which now returns the flags for the supported extensions and
 unsupportedExtensions which does what it says it does. This is because the two
 roles of the previous function were always used separately, never together.
[Use String rather than importing a module just to misuse a String type alias
Duncan Coutts <duncan at haskell.org>**20070807170526] 
[Add a little documentation.
Thomas Schilling <nominolo at gmail.com>**20070807162023] 
[Fix error message.
Thomas Schilling <nominolo at gmail.com>**20070807162001] 
[Fix translation of deprecated fields.  Add test case.
Thomas Schilling <nominolo at gmail.com>**20070807161837] 
[Warn if no Cabal-version field is specified, but new syntax is used.
Thomas Schilling <nominolo at gmail.com>**20070806235131
 This isn't quite exact.  Ideally, we'd like to have something like
 isEmptyRange (specified-range && >= 1.2) but implementing isEmptyRange
 is non-trivial, so we'll go with this imperfect solution until we need
 that feature elsewhere.
[Re-enable and update unit tests.
Thomas Schilling <nominolo at gmail.com>**20070807000155] 
[Cosmetic cleanup (fix line length)
Thomas Schilling <nominolo at gmail.com>**20070806235644] 
[No longer fail to parse packages without any library or executable
Thomas Schilling <nominolo at gmail.com>**20070806235404
 sections.  Issue a warning instead.  (The previous error message
 "Unexpected end of file" was not very helpful.)
[Allow querying for the wildcard version range.
Thomas Schilling <nominolo at gmail.com>**20070806234707] 
[Split up make target for documentation generation.  Allows to build
Thomas Schilling <nominolo at gmail.com>**20070803200533
 the user's guide separately from the Haddock documentation. 
[Remove more os-specific cppery
Duncan Coutts <duncan at haskell.org>**20070807115707
 The only difference for this one was / vs \\ path separators
[Remove use of cpp in Distribution.System
Duncan Coutts <duncan at haskell.org>**20070807111837
 base it off of the System.Info.os string rather than cpp defs
[Make things build with ghc-6.6.x rather than just ghc HEAD
Duncan Coutts <duncan at haskell.org>**20070807111724
 filepath-1.0 does not export dropDrive
[Ask the compiler what languages it supports, when possible
Ian Lynagh <igloo at earth.li>**20070805171323] 
[Pattern match on an OS datatype rather than using ifdef everywhere
Ian Lynagh <igloo at earth.li>**20070805130347] 
[Add StandaloneDeriving extension
Ian Lynagh <igloo at earth.li>**20070804192416] 
[extensionToGHCFlag is now version dependent, and uses -XFoo flags for >=6.7
Ian Lynagh <igloo at earth.li>**20070804191833] 
[Add TypeFamilies extension
Ian Lynagh <igloo at earth.li>**20070804184959] 
[Don't complain about AllRightsReserved licenses
Duncan Coutts <duncan at haskell.org>**20070804125110
 That can be done in hackage when people try to upload. Fixes bug #127.
[Add setup register --gen-pkg-config flag for distros that want that.
Duncan Coutts <duncan at haskell.org>**20070804115512
 It generates the actual file to be passed to the compiler's package program.
 This is obviously compiler-specific.
[Correct the location of the haddock dir in inplace registrations
Duncan Coutts <duncan at haskell.org>**20070804115428] 
[normalise the input and output file names when pre-processing
Duncan Coutts <duncan at haskell.org>**20070804013029
 eg so we don't call cpp with ././src/blah -o ./dist/blah
 since those ././ can end up in error messages.
[Put the generated haddock-prolog file under dist
Duncan Coutts <duncan at haskell.org>**20070804004848] 
[Try and simplify cleaning by always removing dist
Duncan Coutts <duncan at haskell.org>**20070804004643
 so we don't have to individually track all the files we create
 we still have to delete a few files outside of the build dir sadly
 the configuration is still preserved if you specify --save-configure
[Remove compilerBinaryName, use compilerId instead
Duncan Coutts <duncan at haskell.org>**20070804004524] 
[Move compiler-specific code for configurion into compiler modules
Duncan Coutts <duncan at haskell.org>**20070803213321
 There's slightly more code overally but it's no longer incomprehensible
 because it's not all mixed together for all the different compilers.
[Clean up rather un-sbstract use of Compiler in configure
Duncan Coutts <duncan at haskell.org>**20070803205901] 
[-Wall police
Duncan Coutts <duncan at haskell.org>**20070802194000] 
[Change Compiler's compilerVersion fild to compilerId
Duncan Coutts <duncan at haskell.org>**20070802193400
 Of type PackageIdentifier rather than Version.
[Remove Distribution.Simple.Configure.findProgram as it's no longer used
Duncan Coutts <duncan at haskell.org>**20070802194230] 
[Put the haddock and hscolour version numbers in the global ProgramConfiguration
Duncan Coutts <duncan at haskell.org>**20070802185614
 We do this during the configure step and then later we don't have to run
 haddock & hscolour again to find out their version numbers.
 This also eliminates some annoying module interdependencies.
 Eventually the Program abstraction ought to include the ability for programs
 to discover their own version numbers so it can be done more modularly.
[Alter version parse error message to make it clearer
Duncan Coutts <duncan at haskell.org>**20070802181620] 
[Add version field to Program and add findProgram(AndVersion) utilities
Duncan Coutts <duncan at haskell.org>**20070802172941
 findProgram and findProgramAndVersion construct Program values
 The latter makes it easier to parse output of --version calls.
 The idea is that we should carry the version number along with the program
 if we know it, so we can later decide version-dependent args without having
 to do more IO to find the program version, eg see use_optP_P & haddockVersion.
[Tidy some imports/exports
Duncan Coutts <duncan at haskell.org>**20070802003250] 
[Remove redundant configure flags, missed bits of previous refactoring.
Duncan Coutts <duncan at haskell.org>**20070802003154] 
[Make the Compiler abstraction use the Program abstraction
Duncan Coutts <duncan at haskell.org>**20070801205428
 So out with compilerPath :: FilePath, in with compilerProg :: Program
 Similarly for compilerPkgTool.
 Lots of knock-on changes due to this, including converting many more uses of
 rawSystemExit to rawSystemProgram.
[Simplify rawSystemProgram using programPath
Duncan Coutts <duncan at haskell.org>**20070801200247] 
[Add programPath :: Program -> FilePath
Duncan Coutts <duncan at haskell.org>**20070801200139
 At the moment it's a partial function, but we should change that by having
 a distinction between an abstract program and a configured program.
[Clean up cpphs/ghc -cpp preprocessor code
Duncan Coutts <duncan at haskell.org>**20070801135256
 Now better separated and uses Program better.
 Also no longer needs internal lookupProgram' utils function.
[Clean up calling of ar, make it use Program abstraction
Duncan Coutts <duncan at haskell.org>**20070801021526] 
[Make all the pre-processors use the Program abstraction
Duncan Coutts <duncan at haskell.org>**20070801021049] 
[Improve hangling of the title and prolog for haddock docs
Duncan Coutts <duncan at haskell.org>**20070804021538
 Only include ": " in the title if it has a synopsis to use as subtitle
 Use the description as the prolog, or if that's empty we use the synopsis.
 Do the same for executables, fixing bug #142.
[Less confusing haddock command output when there are no libs in the package
Duncan Coutts <duncan at haskell.org>**20070804013133
 It says:
 > No documentation was generated as this package does not contain a library.
 > Perhaps you want to use the haddock command with the --executables flag.
[Add message saying where haddock docs got put
Duncan Coutts <duncan at haskell.org>**20070804010016
 And make the similar message for sdist respect the verbosity
[Make the writing registration script message less silly
Duncan Coutts <duncan at haskell.org>**20070804002353] 
[Fix haddock markup for finalizePackageDescription
Duncan Coutts <duncan at haskell.org>**20070804001745] 
[Change error message for tabs used as indentation to something more
Thomas Schilling <nominolo at gmail.com>**20070803213331
[Fix import path to HUnit.
Thomas Schilling <nominolo at gmail.com>**20070803200829] 
[Fix printing of 'impl' checks.
Thomas Schilling <nominolo at gmail.com>**20070803200622] 
[Disallow tabs .cabal files with new syntax
Thomas Schilling <nominolo at gmail.com>**20070803181244] 
[Fix tab in Cabal.cabal.
Thomas Schilling <nominolo at gmail.com>**20070803175701] 
[Add impl(...) conditional to configurations.
Thomas Schilling <nominolo at gmail.com>**20070802010527
 You can now use expressions like impl( ghc >= 6.6.1 ) in conditionals
 in .cabal files.
[Add documentation for Cabal Configurations.
Thomas Schilling <nominolo at gmail.com>**20070803125632] 
[Move the SetupWrapper module under Distribution.Simple
Duncan Coutts <duncan at haskell.org>**20070803012304
 It's really a wrapper around the simple build system.
[Cleanup. fix line length
Thomas Schilling <nominolo at gmail.com>**20070801221329] 
[Fix name of flag in error message
Duncan Coutts <duncan at haskell.org>**20070802172141] 
[Add readVersion convenience function to Distribution.Version
Duncan Coutts <duncan at haskell.org>**20070802171703
 So it's merely readVersion :: String -> Maybe Version
 Having to use readP_to_S parseVersion all over the place is annoying.
[extraArgs should override args in command lines
Duncan Coutts <duncan at haskell.org>**20070801023042
 besides, the order was inconsistent within the same function between the
 UserSpecified and FoundOnSystem cases.
[FIX compilation with GHC 6.2.x
Simon Marlow <simonmar at microsoft.com>**20070801095523] 
[Move the haddock code out into it's own module
Duncan Coutts <duncan at haskell.org>**20070731183410
 It removes about 250 loc from Distribution.Simple
[-Wall police
Duncan Coutts <duncan at haskell.org>**20070731173626] 
[Fix order of warnings.
Thomas Schilling <nominolo at gmail.com>**20070730225311] 
[Add line numbers to unknown fields error message.
Thomas Schilling <nominolo at gmail.com>**20070730225256] 
[Display a more helpful error message, when unknown fields are
Thomas Schilling <nominolo at gmail.com>**20070730224026
[Fix self-compile warnings.
Thomas Schilling <nominolo at gmail.com>**20070730220537] 
[Fix haddock markup
Ian Lynagh <igloo at earth.li>**20070729233545
 I haven't checked that it looks right, but it is now accepted by haddock.
[Pass ghc -package flags when using it as a C compiler in GHCMakefile
Ian Lynagh <igloo at earth.li>**20070729152803
 This means we get the CPP include directories included.
[Add a missing case in updateCfg
Ian Lynagh <igloo at earth.li>**20070729105910] 
[Resolve conflicts
Ian Lynagh <igloo at earth.li>**20070729105854] 
[Fix conflicts.  Fix for changed argument to 'preprocessSources'.
Thomas Schilling <nominolo at gmail.com>**20070728223322] 
[Rename field.
Thomas Schilling <nominolo at gmail.com>**20070728223102] 
[Change HUnit module path to Test.HUnit (the default now).
Thomas Schilling <nominolo at gmail.com>**20070728221453] 
[Add note to 'clean' that it could be simpler, but for compatibility
Thomas Schilling <nominolo at gmail.com>**20070728221342
 reasons isn't (for now). 
[Let sdist command run the preprocessors itself.  This way we don't
Thomas Schilling <nominolo at gmail.com>**20070728221237
 have to put stuff into the source tree.
[Store resolved package description in local build info.  
Thomas Schilling <nominolo at gmail.com>**20070728221102
 The clean and sdist commands need to use a flattened representation of
 the original description.  Note the notes for
 flattenPackageDescription for some problems with this approach.
[Export 'flattenPackageDescription'.
Thomas Schilling <nominolo at gmail.com>**20070728215155] 
[Minor documentation fix.
Thomas Schilling <nominolo at gmail.com>**20070728214859] 
[Modify test case.
Thomas Schilling <nominolo at gmail.com>**20070728214825] 
[Add function 'flattenPackageDescription'.
Thomas Schilling <nominolo at gmail.com>**20070728214746] 
[Avoid reporting the same missing dependecy twice.
Thomas Schilling <nominolo at gmail.com>**20070728214645] 
[Add documentation
Thomas Schilling <nominolo at gmail.com>**20070728214541] 
[Add documentation
Thomas Schilling <nominolo at gmail.com>**20070728214444] 
[Add/Fix test cases
Thomas Schilling <nominolo at gmail.com>**20070728214410] 
[Minor. Moved some code.
Thomas Schilling <nominolo at gmail.com>**20070719222541] 
[Add function 'ignoreCondition'.
Thomas Schilling <nominolo at gmail.com>**20070719222444] 
[Re-enable and extend test case.
Thomas Schilling <nominolo at gmail.com>**20070719222341] 
[Filter duplicate dependencies.
Thomas Schilling <nominolo at gmail.com>**20070719222233] 
[Adopt new CondTree data structure.
Thomas Schilling <nominolo at gmail.com>**20070719125305
 'finalizePackageDescription' now also takes dependencies of
 executables into account.
[Change CondTree data structure to something more flexible.
Thomas Schilling <nominolo at gmail.com>**20070719124655
 This also requires some interface changes.
[Add simpler representation of a .cabal file with conditions.
Thomas Schilling <nominolo at gmail.com>**20070717203942] 
[Preprocessor output never gets written back to the source dir.
Thomas Schilling <nominolo at gmail.com>**20070717174026
 'preprocessSources' now gets an additional flag to determine whether
 to process all sources (for building) or only platform independent
 ones (for sdist).
[Add resolved package description to 'LocalBuildInfo'.
Thomas Schilling <nominolo at gmail.com>**20070716204325] 
[Fix removed import by importing a required accessor only.
Thomas Schilling <nominolo at gmail.com>**20070716204238] 
[Add tags target to generate a tags file using 'hasktags'.  (Unix only)
Thomas Schilling <nominolo at gmail.com>**20070716203015] 
[Rename 'PreparedPackageDescription' to 'GenericPackageDescription'
Thomas Schilling <nominolo at gmail.com>**20070716200427] 
[Remove unused dependency.
Thomas Schilling <nominolo at gmail.com>**20070716200215] 
[Move configured_cabal to 'dist' directory.
Thomas Schilling <nominolo at gmail.com>**20070716154146] 
[Bugfix by Ian Lynagh:  Cabal can't have a Cabal-Version header; it breaks bootstrapping
Thomas Schilling <nominolo at gmail.com>**20070716151535] 
[Partial bugfix to allow traditional .cabal files without a library but
Thomas Schilling <nominolo at gmail.com>**20070628112301
 global build dependencies.  The correct solution is to add global
 dependencies to each executable and implement dependency resolution
 for executables.
 The current workaround is to add the dependencies to the library, but
 disable building of the library.
[Take advantage of configurations to build Cabal itself and fix bootstrapping problem.
Thomas Schilling <nominolo at gmail.com>**20070628081438] 
[Re-add configurations module to .cabal file.  (Got removed on update.)
Thomas Schilling <nominolo at gmail.com>**20070623204706] 
[Properly fix tests.
Thomas Schilling <nominolo at gmail.com>**20070623203939] 
[Disable (comment out) tests for now.  Break due to changed interface.
Thomas Schilling <nominolo at gmail.com>**20070623203121] 
[Fix typo.
Thomas Schilling <nominolo at gmail.com>**20070623202333] 
[Add proper handling of configurations to configure command.
Thomas Schilling <nominolo at gmail.com>**20070623202017] 
[Fix warnings.
Thomas Schilling <nominolo at gmail.com>**20070623201723] 
[Adjust to new package reading interface.
Thomas Schilling <nominolo at gmail.com>**20070623201546] 
[Downcase flagnames.  Re-add config flags (were removed due to update).
Thomas Schilling <nominolo at gmail.com>**20070623201455] 
[Fix warnings.
Thomas Schilling <nominolo at gmail.com>**20070623201254] 
[Fix warnings, add documentation and changes in response to some
Thomas Schilling <nominolo at gmail.com>**20070623201135
 interface changes.
[Make explicit that reading package descriptions isn't supported here, ATM.
Thomas Schilling <nominolo at gmail.com>**20070623200701] 
[Fixed warning
Thomas Schilling <nominolo at gmail.com>**20070623200522] 
[Fixed warnings, added documentation, and changed os and arch names to
Thomas Schilling <nominolo at gmail.com>**20070623200453
 simple strings.
[Add helpers for reading and writing the file to hold a configured cabal-file.
Thomas Schilling <nominolo at gmail.com>**20070618195710] 
[Add commandline support for specifying defaults for flags.
Thomas Schilling <nominolo at gmail.com>**20070618195449] 
[Compatibility parsing and working configurations.
Thomas Schilling <nominolo at gmail.com>**20070618195329] 
[Pretty printing of conditions and CondTrees.  Non-dependency
Thomas Schilling <nominolo at gmail.com>**20070614125031
 information of CondTrees is now a modifier.  Move CondTree resolution functionality. 
[Prototypical configurations
Thomas Schilling <nominolo at gmail.com>**20070613184332] 
[add line numbers to all field times
Thomas Schilling <nominolo at gmail.com>**20070613173548] 
[add flag as a section
Thomas Schilling <nominolo at gmail.com>**20070613172416] 
[added docs
Thomas Schilling <nominolo at gmail.com>**20070613172309] 
[fixed typo
Thomas Schilling <nominolo at gmail.com>**20070613172230] 
[Abstracted variables out of conditions.  Generalized simplification
Thomas Schilling <nominolo at gmail.com>**20070613172114
 function to accept an arbitrary partial assignment of these
[Added Configuration parsing and simplification.
Thomas Schilling <nominolo at gmail.com>**20070529210344] 
[Extended low-level parsing routines to also allow labelled blocks and if-blocks.
Thomas Schilling <nominolo at gmail.com>**20070529205958] 
[Added documentation.
Thomas Schilling <nominolo at gmail.com>**20070528211221] 
[Use the right output directory when building C sources for executables
Duncan Coutts <duncan at haskell.org>**20070726213309] 
[Use our own GetOpt if __GLASGOW_HASKELL__ >= 606 only
Ian Lynagh <igloo at earth.li>**20070724213112
 Used to be if __GLASGOW_HASKELL__ >= 604, but the 6.4 branch had a bug
 which looks likely to be the cause of GHC build failures we're seeing:
 -         procNextOpt (NonOpt x)   RequireOrder      = ([],x:rest,us,[])
 +         procNextOpt (NonOpt x)   RequireOrder      = ([],x:rest,[],[])
[-Wall police
Duncan Coutts <duncan at haskell.org>**20070724172023] 
[Update user guide about haddock --css --hyperlink-source --hscolour-css
Duncan Coutts <duncan at haskell.org>**20070724160742
 The haddock --css flag is new. The old --hscolour=[path] flag got split
 into two flags: --hyperlink-source and --hscolour-css=path
[Remove a couple bits of unused code and imports
Duncan Coutts <duncan at haskell.org>**20070724110732] 
[use nhc-Options rather than deprecated nhc98-Options
Duncan Coutts <duncan at haskell.org>**20070724110703] 
[Hugs build: track change to install-includes
Ross Paterson <ross at soi.city.ac.uk>**20070724101816] 
[Rename --hscolour to --hyperlink-source and add haddock --css flag
Duncan Coutts <duncan at haskell.org>**20070723190026
 So now --hyperlink-source controles wether or not we run hscolour and
 get haddock to link to the sources. The new flag --hscolour-css can
 be used to override the css file that hscolour uses.
 Also, the new flag --css can override the css file that haddock uses.
[Merges from hscolour patch and make it work with haddock-0.8
Duncan Coutts <duncan at haskell.org>**20070723180602
 Some minor changes due to changes since the hscolour patch was written.
 Make it work with haddock-0.8 by using %{MODULE} rather than %{FILE}
 and generate output file names to match (ie not using the original file
 extension, just using the module name for the output file).
[HsColour support
Roberto Zunino <zunrob at users.sf.net>**20070530194747
 Integration of Cabal, HsColour, and Haddock.
 (Also fixes bug #102)
[Remove ContextStack extension
Ian Lynagh <igloo at earth.li>**20070709132341
 Seems to be based on GHC's -fcontext-stack flag, which takes an integer
[Remove InlinePhase extension
Ian Lynagh <igloo at earth.li>**20070708172919
 As far as I can tell
 (a) The -finline-phase flag stopped actually being accepted by GHC
     sometime between GHC 4.08.2 and GHC 5.04.3
 (b) It took an Int argument
[Add KindSignatures extension
Ian Lynagh <igloo at earth.li>**20070708120616] 
[Add the MagicHash extension
Ian Lynagh <igloo at earth.li>**20070708111043] 
[TAG 2007-06-29
Ian Lynagh <igloo at earth.li>**20070629112545] 
Patch bundle hash:

More information about the cabal-devel mailing list