I'm sending this patch here to solicit comments.
Ian Lynagh has been converting GHC's build system to use Cabal for packages
instead of our current Makefile setup. There are a couple of things that don't
work as well with Cabal: (1) we can't use 'make -j' and get parallel builds, and
(2) we can't build individual files and give extra options on the command line:
this is occasionally very useful when debugging the compiler or testing small
changes.
So we could fix these with brute force: I have patches to make GHC --make work
in parallel, but it needs a lot of work to make it robust. We could add support
to Cabal to build a single file and give extra options on the command line, but
most people don't need this.
Instead, I decided to address both of these in one go: the idea is to have Cabal
generate a Makefile that you can use with 'make -j' or to build a single file
with 'make dist/build/Foo.o', for example. It only works with GHC, and only for
libraries (I could probably make it work for executables too, just haven't done
that yet). It does work with profiling, and as far as I can tell everything
else works, because GHC gets invoked with almost exactly the same arguments as
with 'setup build', except that it is invoked one file at a time.
This is really the missing piece needed to let GHC use Cabal for its build
system, so I'm pretty keen for this to go in. Comments?
Cheers,
Simon
New patches:
[Add 'setup makefile' command
Simon Marlow <[EMAIL PROTECTED]>**20070309155022
'setup makefile' generates a Makefile that performs the steps
necessary to compile the Haskell sources to object code. This only
works for libraries, and only with GHC right now.
Instead of simply 'setup build', you can do this:
$ ./setup makefile
$ make
$ ./setup build
where './setup makefile' does the preprocessing and generates a
Makefile tailored to the current package. 'make' will build all the
Haskell code to object files, and 'setup build' will build any C code
and the library archives.
The reason for all this is that you can say 'make -j' and get a
parallel build, or you can say
make dist/build/Foo.o EXTRA_HC_OPTS=-keep-s-file
to compile a single file with extra options.
] {
hunk ./Distribution/Make.hs 172
+
+ MakefileCmd -> exitWith ExitSuccess -- presumably nothing to do
hunk ./Distribution/Setup.hs 52
+ MakefileFlags(..), emptyMakefileFlags,
hunk ./Distribution/Setup.hs 62
+ parseMakefileArgs,
hunk ./Distribution/Setup.hs 97
+ | MakefileCmd -- makefile
hunk ./Distribution/Setup.hs 253
+
+data MakefileFlags = MakefileFlags {makefileVerbose :: Int,
+ makefileFile :: Maybe FilePath}
+ deriving Show
+emptyMakefileFlags = MakefileFlags {makefileVerbose = 1,
+ makefileFile = Nothing}
+
hunk ./Distribution/Setup.hs 263
--- |Most of these flags are for Configure, but InstPrefix is for Copy.
+-- | All the possible flags
hunk ./Distribution/Setup.hs 302
+ -- For makefile:
+ | MakefileFile FilePath
hunk ./Distribution/Setup.hs 391
-commandList progConf = [(configureCmd progConf), buildCmd, cleanCmd,
installCmd,
+commandList progConf = [(configureCmd progConf), buildCmd, makefileCmd,
+ cleanCmd, installCmd,
hunk ./Distribution/Setup.hs 609
+makefileCmd :: Cmd a
+makefileCmd = Cmd {
+ cmdName = "makefile",
+ cmdHelp = "Perform any necessary makefileing.",
+ cmdDescription = "", -- This can be a multi-line description
+ cmdOptions = [cmd_help, cmd_verbose,
+ Option "f" ["file"] (reqPathArg MakefileFile)
+ "Filename to use (default: Makefile)."],
+ cmdAction = MakefileCmd
+ }
+
+parseMakefileArgs :: MakefileFlags -> [String] -> [OptDescr a] -> IO
(MakefileFlags, [a], [String])
+parseMakefileArgs = parseArgs makefileCmd updateCfg
+ where updateCfg mflags fl =
+ case fl of
+ Verbose n -> mflags{makefileVerbose=n}
+ MakefileFile f -> mflags{makefileFile=Just f}
+
hunk ./Distribution/Simple/Build.hs 46
- build
+ build, makefile
hunk ./Distribution/Simple/Build.hs 58
-import Distribution.Setup (CopyDest(..), BuildFlags(..) )
+import Distribution.Setup ( CopyDest(..), BuildFlags(..),
+ MakefileFlags(..) )
hunk ./Distribution/Simple/Build.hs 75
-import Control.Monad ( unless )
+import Control.Monad ( unless, when )
hunk ./Distribution/Simple/Build.hs 92
-build :: PackageDescription -- ^mostly information from the .cabal file
+build :: PackageDescription -- ^mostly information from the .cabal file
hunk ./Distribution/Simple/Build.hs 98
+ initialBuildSteps pkg_descr lbi verbose suffixes
+ setupMessage verbose "Building" pkg_descr
+ case compilerFlavor (compiler lbi) of
+ GHC -> GHC.build pkg_descr lbi verbose
+ JHC -> JHC.build pkg_descr lbi verbose
+ Hugs -> Hugs.build pkg_descr lbi verbose
+ _ -> die ("Building is not supported with this compiler.")
+
+makefile :: PackageDescription -- ^mostly information from the .cabal file
+ -> LocalBuildInfo -- ^Configuration information
+ -> MakefileFlags -- ^Flags that the user passed to makefile
+ -> [ PPSuffixHandler ] -- ^preprocessors to run before compiling
+ -> IO ()
+makefile pkg_descr lbi flags suffixes = do
+ let verb = makefileVerbose flags
+ initialBuildSteps pkg_descr lbi verb suffixes
+ when (not (hasLibs pkg_descr)) $
+ die ("Makefile is only supported for libraries, currently.")
+ setupMessage verb "Generating Makefile" pkg_descr
+ case compilerFlavor (compiler lbi) of
+ GHC -> GHC.makefile pkg_descr lbi flags
+ _ -> die ("Generating a Makefile is not supported for this compiler.")
+
+
+initialBuildSteps pkg_descr lbi verbose suffixes = do
hunk ./Distribution/Simple/Build.hs 138
- setupMessage verbose "Building" pkg_descr
- case compilerFlavor (compiler lbi) of
- GHC -> GHC.build pkg_descr lbi verbose
- JHC -> JHC.build pkg_descr lbi verbose
- Hugs -> Hugs.build pkg_descr lbi verbose
- _ -> die ("Building is not supported with this compiler.")
hunk ./Distribution/Simple/GHC.hs 5
--- Copyright : Isaac Jones 2003-2006
+-- Copyright : Isaac Jones 2003-2007
hunk ./Distribution/Simple/GHC.hs 47
- build, installLib, installExe
+ build, makefile, installLib, installExe
hunk ./Distribution/Simple/GHC.hs 50
+import Distribution.Setup ( MakefileFlags(..) )
hunk ./Distribution/Simple/GHC.hs 90
+import System.IO
hunk ./Distribution/Simple/GHC.hs 355
- ++ (if compilerVersion (compiler lbi) > Version [6,4] []
+ ++ ghcOptions lbi bi odir
+
+ghcOptions lbi bi odir
+ = (if compilerVersion (compiler lbi) > Version [6,4] []
hunk ./Distribution/Simple/GHC.hs 378
+--
-----------------------------------------------------------------------------
+-- Building a Makefile
+
+makefile :: PackageDescription -> LocalBuildInfo -> MakefileFlags -> IO ()
+makefile pkg_descr lbi flags = do
+ let file = case makefileFile flags of
+ Just f -> f
+ _otherwise -> "Makefile"
+ h <- openFile file WriteMode
+
+ let Just lib = library pkg_descr
+ bi = libBuildInfo lib
+
+ ghc_vers = compilerVersion (compiler lbi)
+ packageId | versionBranch ghc_vers >= [6,4]
+ = showPackageId (package pkg_descr)
+ | otherwise = pkgName (package pkg_descr)
+ let decls = [
+ ("modules", unwords (exposedModules lib ++ otherModules bi)),
+ ("GHC", compilerPath (compiler lbi)),
+ ("WAYS", if withProfLib lbi then "p" else ""),
+ ("odir", buildDir lbi),
+ ("package", packageId),
+ ("GHC_OPTS", unwords (ghcOptions lbi bi (buildDir lbi))),
+ ("MAKEFILE", file)
+ ]
+ hPutStrLn h (unlines (map (\(a,b)-> a ++ " = " ++ munge b) decls))
+ hPutStrLn h makefileTemplate
+ hClose h
+ where
+ munge "" = ""
+ munge ('#':s) = '\\':'#':munge s
+ munge (c:s) = c : munge s
+
hunk ./Distribution/Simple/GHC.hs 497
+--
-----------------------------------------------------------------------------
+-- Makefile template
+
+makefileTemplate =
+ "GHC_OPTS += -package-name $(package) -i$(odir)\n"++
+ "\n"++
+ "# For adding options on the command-line\n"++
+ "GHC_OPTS += $(EXTRA_HC_OPTS)\n"++
+ "\n"++
+ "WAY_p_OPTS = -prof\n"++
+ "\n"++
+ "ifneq \"$(way)\" \"\"\n"++
+ "way_ := $(way)_\n"++
+ "_way := _$(way)\n"++
+ "GHC_OPTS += $(WAY_$(way)_OPTS)\n"++
+ "GHC_OPTS += -hisuf $(way_)hi -hcsuf $(way_)hc -osuf $(way_)o\n"++
+ "endif\n"++
+ "\n"++
+ "OBJS = $(patsubst %,$(odir)/%.$(way_)o,$(subst .,/,$(modules)))\n"++
+ "\n"++
+ "all :: .depend $(OBJS)\n"++
+ "\n"++
+ ".depend : $(MAKEFILE)\n"++
+ " $(GHC) -M -optdep-f -optdep.depend $(foreach way,$(WAYS),-optdep-s
-optdep$(way)) $(foreach obj,$(MKDEPENDHS_OBJ_SUFFICES),-osuf $(obj))
$(filter-out -split-objs, $(GHC_OPTS)) $(modules)\n"++
+ " for dir in $(sort $(foreach mod,$(OBJS),$(dir $(mod)))); do \\\n"++
+ " if test ! -d $$dir; then mkdir $$dir; fi \\\n"++
+ " done\n"++
+ "\n"++
+ "include .depend\n"++
+ "\n"++
+ "# suffix rules\n"++
+ "\n"++
+ "ifneq \"$(odir)\" \"\"\n"++
+ "odir_ = $(odir)/\n"++
+ "else\n"++
+ "odir_ =\n"++
+ "endif\n"++
+ "\n"++
+ "$(odir_)%.$(way_)o : %.hs\n"++
+ " $(GHC) $(GHC_OPTS) -c $< -o $@ -ohi $(basename $@).$(way_)hi\n"++
+ "\n"++
+ "$(odir_)%.$(way_)o : %.lhs \n"++
+ " $(GHC) $(GHC_OPTS) -c $< -o $@ -ohi $(basename $@).$(way_)hi\n"++
+ "\n"++
+ "$(odir_)%.$(way_)o : %.c\n"++
+ " @$(RM) [EMAIL PROTECTED]"++
+ " $(GHC) $(GHC_CC_OPTS) -c $< -o [EMAIL PROTECTED]"++
+ "\n"++
+ "$(odir_)%.$(way_)o : %.$(way_)s\n"++
+ " @$(RM) [EMAIL PROTECTED]"++
+ " $(GHC) $(GHC_CC_OPTS) -c $< -o [EMAIL PROTECTED]"++
+ "\n"++
+ "$(odir_)%.$(way_)o : %.S\n"++
+ " @$(RM) [EMAIL PROTECTED]"++
+ " $(GHC) $(GHC_CC_OPTS) -c $< -o [EMAIL PROTECTED]"++
+ "\n"++
+ "$(odir_)%.$(way_)s : %.c\n"++
+ " @$(RM) [EMAIL PROTECTED]"++
+ " $(GHC) $(GHC_CC_OPTS) -S $< -o [EMAIL PROTECTED]"++
+ "\n"++
+ "%.$(way_)hi : %.$(way_)o\n"++
+ " @if [ ! -f $@ ] ; then \\\n"++
+ " echo Panic! $< exists, but $@ does not.; \\\n"++
+ " exit 1; \\\n"++
+ " else exit 0 ; \\\n"++
+ " fi \n"++
+ "\n"++
+ "%.$(way_)hi-boot : %.$(way_)o-boot\n"++
+ " @if [ ! -f $@ ] ; then \\\n"++
+ " echo Panic! $< exists, but $@ does not.; \\\n"++
+ " exit 1; \\\n"++
+ " else exit 0 ; \\\n"++
+ " fi \n"++
+ "\n"++
+ "$(odir_)%.$(way_)hi : %.$(way_)hc\n"++
+ " @if [ ! -f $@ ] ; then \\\n"++
+ " echo Panic! $< exists, but $@ does not.; \\\n"++
+ " exit 1; \\\n"++
+ " else exit 0 ; \\\n"++
+ " fi\n"++
+ "\n"++
+ "show:\n"++
+ " @echo '$(VALUE)=\"$($(VALUE))\"'\n"++
+ "\n"++
+ "\n"++
+ "ifneq \"$(strip $(WAYS))\" \"\"\n"++
+ "ifeq \"$(way)\" \"\"\n"++
+ "all ::\n"++
+ "# Don't rely on -e working, instead we check exit return codes from
sub-makes.\n"++
+ " @case '${MFLAGS}' in *-[ik]*) x_on_err=0;; *-r*[ik]*) x_on_err=0;; *)
x_on_err=1;; esac; \\\n"++
+ " for i in $(WAYS) ; do \\\n"++
+ " echo \"== $(MAKE) way=$$i -f $(MAKEFILE) $@;\"; \\\n"++
+ " $(MAKE) way=$$i -f $(MAKEFILE) --no-print-directory $(MFLAGS) $@ ;
\\\n"++
+ " if [ $$? -eq 0 ] ; then true; else exit $$x_on_err; fi; \\\n"++
+ " done\n"++
+ " @echo \"== Finished recursively making \\`$@' for ways: $(WAYS)
...\"\n"++
+ "endif\n"++
+ "endif\n"++
+ "\n"++
+ "# We could consider adding this: the idea would be to have 'make' do\n"++
+ "# everything that 'setup build' does.\n"++
+ "# ifeq \"$(way)\" \"\"\n"++
+ "# all ::\n"++
+ "# ./Setup build\n"++
+ "# endif\n"
+
hunk ./Distribution/Simple.hs 80
-import Distribution.Simple.Build ( build )
+import Distribution.Simple.Build ( build, makefile )
hunk ./Distribution/Simple.hs 157
+ -- |Hook to run before makefile command. Second arg indicates verbosity
level.
+ preMakefile :: Args -> MakefileFlags -> IO HookedBuildInfo,
+
+ -- |Over-ride this hook to gbet different behavior during makefile.
+ makefileHook :: PackageDescription -> LocalBuildInfo -> Maybe UserHooks
-> MakefileFlags -> IO (),
+ -- |Hook to run after makefile command. Second arg indicates verbosity
level.
+ postMakefile :: Args -> MakefileFlags -> PackageDescription ->
LocalBuildInfo -> IO ExitCode,
+
hunk ./Distribution/Simple.hs 324
+ MakefileCmd ->
+ command (parseMakefileArgs emptyMakefileFlags) makefileVerbose
+ preMakefile makefileHook postMakefile
+ getPersistBuildConfig
+
hunk ./Distribution/Simple.hs 603
+ preMakefile = rn,
+ makefileHook = ru,
+ postMakefile = res,
hunk ./Distribution/Simple.hs 642
+ makefileHook = defaultMakefileHook,
hunk ./Distribution/Simple.hs 675
+ preMakefile = readHook makefileVerbose,
hunk ./Distribution/Simple.hs 726
+ writeInstalledConfig pkg_descr localbuildinfo False
+
+defaultMakefileHook :: PackageDescription -> LocalBuildInfo
+ -> Maybe UserHooks -> MakefileFlags -> IO ()
+defaultMakefileHook pkg_descr localbuildinfo hooks flags = do
+ makefile pkg_descr localbuildinfo flags (allSuffixHandlers hooks)
+ when (hasLibs pkg_descr) $
hunk ./doc/Cabal.xml 1704
+
+ <sect2 id="setup-makefile">
+ <title>setup makefile</title>
+ <para>Generate a Makefile that may be used to compile the
+ Haskell modules to object code. This command is currently only
+ supported when building libraries, and only if the compiler is
+ GHC.</para>
+
+ <para>The makefile replaces part of the work done by
+ <literal>setup build</literal>. The sequence of commands would
+ typeically be:
+<programlisting>
+runhaskell Setup.hs makefile
+make
+runhaskell Setup.hs build
+</programlisting>
+ where <literal>setup makefile</literal> does the preprocessing,
+ <literal>make</literal> compiles the Haskell modules, and
+ <literal>setup build</literal> performs any final steps, such as
+ building the library archives.</para>
+
+ <para>The Makefile does not use GHC's <literal>--make</literal>
+ flag to compile the modules, instead it compiles modules one at
+ a time, using dependency information generated by GHC's
+ <literal>-M</literal> flag. There are two reasons you might
+ therefore want to use <literal>setup makefile</literal>:
+
+ <itemizedlist>
+ <listitem>
+ <para>You want to build in parallel using <literal>make -j</literal>.
+ Currently, <literal>setup build</literal> on its own does not support
+ building in parallel.</para>
+ </listitem>
+ <listitem>
+ <para>You want to build an individual module, pass extra
+ flags to a compilation, or do other non-standard things that
+ <literal>setup build</literal> does not support.</para>
+ </listitem>
+ </itemizedlist>
+ </para>
+
+ </sect2>
}
Context:
[add Distribution.SetupWrapper to exposed-modules
Simon Marlow <[EMAIL PROTECTED]>**20070309122146]
[Tweaks to make Cabal play nicer with haddock
Ian Lynagh <[EMAIL PROTECTED]>**20070308155718
The path for the html docs now includes the package name at the end,
which works nicer for multiple packages sharing a contents/index.
Use --ghc-pkg when available (in haddock darcs only currently) to tell
haddock which ghc-pkg to use.
Use --allow-missing-html when available (in haddock darcs only
currently) to tell haddock not to worry if it can't find the HTML for
packages we depend on. This is necessary when haddocking a group of
packages before moving them all into place.
]
[Cope with ghc-pkg telling us packages are broken
Ian Lynagh <[EMAIL PROTECTED]>**20070307193131]
[Tell GHC to use .hs mode when we want it to cpp something for us
Ian Lynagh <[EMAIL PROTECTED]>**20070307143612]
[Add parentheses so expressions are parsed correctly
Ian Lynagh <[EMAIL PROTECTED]>**20070307131941]
[minor refactoring
Ross Paterson <[EMAIL PROTECTED]>**20070301002731]
[fix \begin{code typo
Ross Paterson <[EMAIL PROTECTED]>**20070301002557]
[document the --with-compiler / --with-hc inconsistency
Ross Paterson <[EMAIL PROTECTED]>**20070225115601]
[Clarify documentation on --with-compiler and --with-hc-pkg
[EMAIL PROTECTED]
[minor markup tweaks
Ross Paterson <[EMAIL PROTECTED]>**20070218104622]
[This usePackages stuff is haddock-specific so name it as such
Duncan Coutts <[EMAIL PROTECTED]>**20070213201434]
[{en,dis}able-use-packages, -optP-P only if haddock<0.8
Conal Elliott <[EMAIL PROTECTED]>**20070204061106]
[cabal-upload: Added command-line options for username, password, checking
instead of uploading. Added ability to get login from file, and to get password
from the terminal. Added still unused verbosity options. Bumped version number
to 0.2.
[EMAIL PROTECTED]
[exclude Setup.lhs
Ross Paterson <[EMAIL PROTECTED]>**20070212193608
This was generating a useless Main entry in the lib doc index.
(good for STABLE)
]
[Add recent Cabal modules to nhc98 build system.
[EMAIL PROTECTED]
[Compatibility with Haskell'98.
[EMAIL PROTECTED]
Import Distribution.Compat.Exception instead of Control.Exception.
Fix illegal indentation of cascaded do-blocks.
]
[add --enable-optimization/--disable-optimization config options (on by default)
Ross Paterson <[EMAIL PROTECTED]>**20070212004513]
[cabal-upload: nicer output.
[EMAIL PROTECTED]
[Send Accept header.
[EMAIL PROTECTED]
[Allow uploading multiple packages.
[EMAIL PROTECTED]
[Changed HTTP dependency to >= 1.0.
[EMAIL PROTECTED]
[cabal-upload: Removed build-simple since hackage doesn't seem to accept it for
non-lib packages.
[EMAIL PROTECTED]
[Added URL for cabal-upload wiki page.
[EMAIL PROTECTED]
[Added usage message to cabal-upload.
[EMAIL PROTECTED]
[Added a small hacky first version of cabal-upload.
[EMAIL PROTECTED]
[cabal-setup doesn't need -cpp
Ross Paterson <[EMAIL PROTECTED]>**20070115154724]
[Refactorings only
Simon Marlow <[EMAIL PROTECTED]>**20070114203741
Here are a batch of refactorings to clean up parsing and parts of the
simple build system. This patch originated in a patch sent to
[email protected] with an intial implementation of
configurations. Since then we decided to go a different route with
configurations, so I have separated the refactoring from the
configurations patch.
At this point, 2 tests fail for me, but I get the same 2 failures
without this patch.
]
[pass arguments through when performing the setup actions ourselves
Ross Paterson <[EMAIL PROTECTED]>**20070113133211]
[separate option for the compiler for Setup.hs
Ross Paterson <[EMAIL PROTECTED]>**20070113133000
This need not be the same compiler as used to build the package
]
[Ignoring user packages when installing locally doesn't make sense.
Lemmih <[EMAIL PROTECTED]>**20070112150318]
[cabal-install now caches downloaded packages in the directory for the package,
and with .tar.gz extension.
[EMAIL PROTECTED]
[cabal-install.cabal: Added build-type field. Change hs-source-dir to
hs-source-dirs (hs-source-dir has been deprecated for some time).
[EMAIL PROTECTED]
[cabal-install --user now keeps package cache and package list in
~/.cabal-install
[EMAIL PROTECTED]
[fix ghc-options (not a listField)
[EMAIL PROTECTED]
[add a Build-Type field, and use it in setupWrapper
Ross Paterson <[EMAIL PROTECTED]>**20070111233018
As discussed on the libraries list (Nov 2006), add a field Build-Type
which can be used to declare that this package uses one of the boilerplate
setup scripts. This allows setupWrapper (used by cabal-setup and
cabal-install) to bypass the setup script in this case and perform
the setup actions itself.
]
[remove a use of null+head
Ross Paterson <[EMAIL PROTECTED]>**20070111182430]
[remove two fromJust's
Ross Paterson <[EMAIL PROTECTED]>**20070111182401]
[pass CABAL_VERSION to Hugs
Ross Paterson <[EMAIL PROTECTED]>**20070111182216]
[cabal-install now puts the package list in /var/lib/cabal-install and the
tarballs in /var/cache/cabal-install by default. Added command-line options for
changing those.
[EMAIL PROTECTED]
[Track verbosity argument changes
Ian Lynagh <[EMAIL PROTECTED]>**20070111180601]
[Testsuite quietening
Ian Lynagh <[EMAIL PROTECTED]>**20070111175329]
[cabal-install: Output usage info for the right command when pasrsing the
package name arguments fails.
[EMAIL PROTECTED]
[SetupWrapper now passes verbosity to other functions, as required by Igloo's
patch.
[EMAIL PROTECTED]
[Make cabal-install use setupWrapper (the library version of cabal-setup).
[EMAIL PROTECTED]
[Moved the cabal-setup code to Distribution.SetupWrapper, so that cabal-install
can use it. CabalSetup.hs now just calls the setupWrapper function.
[EMAIL PROTECTED]
[Quieten the testsuite more
Ian Lynagh <[EMAIL PROTECTED]>**20070111155957]
[Pass verbosity info down to warn
Ian Lynagh <[EMAIL PROTECTED]>**20070111154526]
[Derive Show on various datatypes
Ian Lynagh <[EMAIL PROTECTED]>**20070111140220]
[Give feedback in runTests.sh
Ian Lynagh <[EMAIL PROTECTED]>**20070111132654]
[Be less verbose at verbosity level 1
Ian Lynagh <[EMAIL PROTECTED]>**20070111131228]
[Fix warning
Ian Lynagh <[EMAIL PROTECTED]>**20070111130928]
[No need for -fno-warn-unused-matches any more
Ian Lynagh <[EMAIL PROTECTED]>**20070111130824]
[Always pass Hooks around, not Maybe Hooks
Ian Lynagh <[EMAIL PROTECTED]>**20070111124234]
[Make Makefile use the right ghc/ghc-pkg
Ian Lynagh <[EMAIL PROTECTED]>**20070111122833]
[Add -Wall to GHCFLAGS
Ian Lynagh <[EMAIL PROTECTED]>**20070111102742]
[Updated cabal-install test scripts to use the main Cabal repo.
[EMAIL PROTECTED]
[Added cabal-install test scripts.
[EMAIL PROTECTED]
[Added cabal-install Makefile.
[EMAIL PROTECTED]
[Added HTTP package code used by cabal-install.
[EMAIL PROTECTED]
[Imported all the cabal-install sources.
[EMAIL PROTECTED]
[Added cabal-install dep on regex-compat.
[EMAIL PROTECTED]
[Removed old CabalInstall.hs (it has moved to cabal-install/src in one of the
pataches I pulled in).
[EMAIL PROTECTED]
[Pulling in cabal-install: changed default Hackage DB URL.
[EMAIL PROTECTED]
[Pulling cabal-with-install into Cabal: cabal-install.cabal changes.
[EMAIL PROTECTED]
[Pulling changes from cabal-with-install: Multiple repositories.
[EMAIL PROTECTED]
Original patch:
Sat Sep 2 00:13:40 CEST 2006 Paolo Martini <[EMAIL PROTECTED]>
* Multiple repositories.
]
[Pulling changes from cabal-with-install: Stripping off the dependencies, only
HTTP left
[EMAIL PROTECTED]
Original patch:
Sun Aug 20 19:01:03 CEST 2006 Paolo Martini <[EMAIL PROTECTED]>
* Stripping off the dependencies, only HTTP left
]
[Resolve Makefile conflict from importing Cabal-with-install patches.
[EMAIL PROTECTED]
[a program to test download & install a bunch of cabal packages
[EMAIL PROTECTED]
[added --inplace trick to cabal build so that cabal-install can build on
machines without cabal.
[EMAIL PROTECTED]
[First attempt to make a new repository (url in the configuration)
Paolo Martini <[EMAIL PROTECTED]>**20060820180342]
[Tarball index format support
Paolo Martini <[EMAIL PROTECTED]>**20060816223509]
[Quieten a test
Ian Lynagh <[EMAIL PROTECTED]>**20070110175223]
[Pass 0 verbosity on to GHC when building
Ian Lynagh <[EMAIL PROTECTED]>**20070110174050]
[More verbosity tweaking
Ian Lynagh <[EMAIL PROTECTED]>**20070110172956]
[Rejig verbosity levels a bit; 1 is now the default (was 0)
Ian Lynagh <[EMAIL PROTECTED]>**20070110165149]
[Make system tweaks to avoid cabal thinking it isn't bootstrapped when running
the testsuite
Ian Lynagh <[EMAIL PROTECTED]>**20070110162940]
[Typo
Ian Lynagh <[EMAIL PROTECTED]>**20070110154617]
[Refer to the right variables
Ian Lynagh <[EMAIL PROTECTED]>**20070110151326]
[Give unrecognised flags more clearly
Ian Lynagh <[EMAIL PROTECTED]>**20070110144650]
[Beautify
Ian Lynagh <[EMAIL PROTECTED]>**20070110143711]
[Retab
Ian Lynagh <[EMAIL PROTECTED]>**20070110143103]
[Remove some chatter from the test scripts
Ian Lynagh <[EMAIL PROTECTED]>**20070110142756]
[Eliminate more warnings
Ian Lynagh <[EMAIL PROTECTED]>**20070110142114]
[More -Wall clean fixes
Ian Lynagh <[EMAIL PROTECTED]>**20070110135838]
[Improve cleaning
Ian Lynagh <[EMAIL PROTECTED]>**20070110134230]
[-Wall clean fixes
Ian Lynagh <[EMAIL PROTECTED]>**20070110125523
This patch is sponsored by Hac 07.
Have you hacked a lambda today?
]
[Fix non-fatal problem with 'setup haddock' for an exe package
Simon Marlow <[EMAIL PROTECTED]>**20070109133751
For some unknown reason, we were passing --use-package=P to haddock,
where P is the name of the current executable package. This can never
work, since P is not a library and will not be installed. Fortunately
Haddock ignores the error and continues anyway.
]
[Set the Cabal version when building via the fptools build system
[EMAIL PROTECTED]
Without this patch, Cabal is effectively "version-less" and all .cabal
files with a version requirement are unusable. Therefore I think that
this patch (or at least something equivalent) should be pushed to the
6.6.1 branch, too.
]
[added --save-configure flag to clean. got some complaints that there was no
way to avoid reconfiguring after a clean. now if you use --save-configure, you
should be able to.
[EMAIL PROTECTED]
[tiny mod to License comments
[EMAIL PROTECTED]
[improving help output
[EMAIL PROTECTED]
As suggested by Claus Reinke in this ticket:
http://hackage.haskell.org/trac/hackage/ticket/105
]
[fix ./Setup unregister --help, which was giving the help for register
Simon Marlow <[EMAIL PROTECTED]>**20061215165000]
[Fix the links in the user guide to the API docs
Duncan Coutts <[EMAIL PROTECTED]>*-20061129131633]
[Fix the links in the user guide to the API docs
Duncan Coutts <[EMAIL PROTECTED]>**20061129131633]
[haddock comments for SrcDist.hs
[EMAIL PROTECTED]
[some haddock comments for LocalBuildInfo.hs
[EMAIL PROTECTED]
[a little comment for JHC.hs
[EMAIL PROTECTED]
[some comments for Install.hs
[EMAIL PROTECTED]
[some comments for Hugs.hs
[EMAIL PROTECTED]
[haddock comments for GHC and GHCPackageConig
[EMAIL PROTECTED]
[some comments for Configure.hs
[EMAIL PROTECTED]
[some comments for Build.hs
[EMAIL PROTECTED]
[minor comments and cleanup for Setup.hs
[EMAIL PROTECTED]
[some haddock explanation of preprocessors
[EMAIL PROTECTED]
[some comments for Package.hs
[EMAIL PROTECTED]
[haddockizing some comments from Make.hs
[EMAIL PROTECTED]
[adding comments to Program.hs
[EMAIL PROTECTED]
[comments for the Program module
[EMAIL PROTECTED]
[don't return an error code just because there's no library to register
[EMAIL PROTECTED]
[Purely cosmetic; have '--<FOO>-args' use ARGS on their RHS rather than PATH in
usage output
[EMAIL PROTECTED]
[parse executable field as a token (as documented), rather than free text
Ross Paterson <[EMAIL PROTECTED]>**20061120093400]
[trim trailing spaces (including CRs) from all input lines
Ross Paterson <[EMAIL PROTECTED]>**20061120092526]
[help nhc98 find the import of programLocation
[EMAIL PROTECTED]
[sdist: make it work on Windows platforms by simplifying 'tar' invocation.
Hopefully not at the cost of other plats (i.e., as-yet untested there..)"
[EMAIL PROTECTED]
[build: consult and use any user-provided settings for 'ld' and 'ar'
[EMAIL PROTECTED]
[defaultUserHooks.sDistHook: pass in optional LBI to SrcDist.sdist
[EMAIL PROTECTED]
[defaultProgramConfiguration: add 'ld' and 'tar' entries
[EMAIL PROTECTED]
[revise Paths module for the Hugs target
Ross Paterson <[EMAIL PROTECTED]>**20061108223349
When targetting Hugs, the Paths module now uses prefix-independent
paths relative to the location of the Main module of the program,
on all platforms.
For the Hugs target, this replaces the code using GetModuleFileNameA(),
which never worked. Behaviour under GHC should be unchanged.
]
[Hugs: fix location of installed package info
Ross Paterson <[EMAIL PROTECTED]>**20061021144613]
[Fix escaping of ' chars in register.sh script.
Duncan Coutts <[EMAIL PROTECTED]>**20061016215459]
[Tidy up command comments
Duncan Coutts <[EMAIL PROTECTED]>**20061013211158]
[Fix getDataDir etc. when bindir=$prefix
Simon Marlow <[EMAIL PROTECTED]>**20061013100941]
[Update text on the front page: packages can now overlap in GHC 6.6
Simon Marlow <[EMAIL PROTECTED]>**20061012114601
]
[New unlit code "ported" from cpphs-1.2
Lennart Kolmodin <[EMAIL PROTECTED]>**20061009192609]
[Share one more place where the cabal version is defined.
Duncan Coutts <[EMAIL PROTECTED]>**20061010140027]
[Fix spelling error in error message.
Duncan Coutts <[EMAIL PROTECTED]>**20061010140013]
[Centeralise the places that know that Cabal version number
Duncan Coutts <[EMAIL PROTECTED]>**20061010135918]
[Remove spurious debug message.
Duncan Coutts <[EMAIL PROTECTED]>**20061010125643]
[Bump to next unstable development version
Duncan Coutts <[EMAIL PROTECTED]>**20061010125602]
[Make cabal know it's own version number correctly
Duncan Coutts <[EMAIL PROTECTED]>**20061010130939
This is an unpleasent way of doing it.
Will have to fix once and for all in the next version.
]
[TAG 1.1.6
Duncan Coutts <[EMAIL PROTECTED]>**20061009123801]
Patch bundle hash:
343e137602e63baf88fb7c8cd0c5feac7c76d623
_______________________________________________
cabal-devel mailing list
[email protected]
http://www.haskell.org/mailman/listinfo/cabal-devel