Starting with tag: [TAG 1.5.1 Duncan Coutts **20080329181329] [Fix names of profiling libs Duncan Coutts **20080407013449 I broke this recently when refactoring. Restore the original behaviour. Was generating "libHSfoo_p-1.0.a" when it should be "libHSfoo-1.0_p.a". ] [Fix spelling in error message Duncan Coutts **20080408134610] [Fix for detecting ~/.cabal/ dir as a .cabal file Duncan Coutts **20080409073236 Which happened if you use cabal configure in your home dir. Now produced the right error message, or if you actually put a cabal project in your home dir, it might actually work. Also, do the same fix for findHookedPackageDesc. ] [Remove unused import Duncan Coutts **20080409073352] [Use relative file paths in .cabal parse error messages Duncan Coutts **20080409154030 Do this by normalising the file path in the error message and when looking for .cabal files, by looking in '.' rather than the absolute path of the current directory. ] [Check for the required cabal version early in parsing Duncan Coutts **20080409154655 Previously we only checked the "cabal-version" field after parsing and all other configure processing. If the package really needs a later Cabal version it is of course highly likely that parsing or configure are going to fail and the user is not going to get the helpful error message about the version of Cabal required. So now we do the check early during parsing. If a later version is required and parsing subsequently fails, we now report the version issue, not the subsequent parse error. If parsing succeeds we still issue a warning which should be a useful hint to the user if subsequent configure processing fails. ] [fix for #187 -- directory of Paths_packagename is included when looking for source files Andres Loeh **20080412204904] [expose tryGetConfigStateFile jeanphilippe.bernardy@gmail.com**20080417180248 This is needed by Yi to (try to) load an arbitrary project. ] [expose ghcOptions jeanphilippe.bernardy@gmail.com**20080417211221 This helps finding the options to pass to GHC API in various tools ] [Change dependency resolution algorithm. Thomas Schilling **20080413131807 There were two reasons to do this. Firstly, this formulation makes it easier to add the --constraint command line flag that adds additional constraints on the packages that should be used. Secondly, with the orgininal algorithm it was possible to satisfy the constraint "foo < 1, foo > 2" if we had two versions of package "foo" which each satisfy one constraint. This patch fixes this by requiring the same package to satisfy both constraints (which of course is impossible in this case). ] [Fix/Add documentation. Thomas Schilling **20080413131839] [Add simple test case for the dependency resolution case. This should Thomas Schilling **20080413132002 go into the test suite one day. ] [Add 'readP_to_E' function that takes the longest parse. Thomas Schilling **20080413182042] [Fix #224. We do not yet warn if the user specified a dependency that Thomas Schilling **20080413182659 did not occur in the package (it is just silently ignored.) ] [Make finalizePackageDescription use CompilerId type Duncan Coutts **20080413224111 Use the proper data type rather than a tuple (CompilerFlavor, Version) ] [Add PackageIndex.insert and reverse merge/mappend Duncan Coutts **20080415203637 Packages in the second argument to merge now mask those in the first. ] [Add newtype FlagName and FlagAssignment type alias Duncan Coutts **20080415204854 and use them in the appropriate places. ] [Fix unionBuildInfo Duncan Coutts **20080420180520 Fix ticket #264 to use nub only on the fields which are treated as sets. Probably we should be using the right types and mappend for each field. Change to construct a new value from scratch rather than overriding one of the two args. This helps to make sure we're updating all the field as we get a warning if we miss any. Turns out we were missing the ghc profiling and shared libs options which meant they were getting dropped. That had the effect of ghc-prof-options: in .cabal files being ignored. Thanks to 'midfield' from #haskell for spotting this. ] [Don't nub extra-libs in unionBuildInfo Duncan Coutts **20080420192312 It's possible that we sometimes need to list the same library more than once if there are circular symbol references. ] [fix import for nhc98 Malcolm.Wallace@cs.york.ac.uk**20080422133009] [Update UTF8 code Duncan Coutts **20080422141539 Some code and test cases taken from the utf8-string package. Updated copyright notice appropriately (I think). ] [Make warning messages show the file name Duncan Coutts **20080422141909] [Package check now take a GenericPackageDescription Duncan Coutts **20080423150354 Unfortunately in some cases we only have a already-configured PackageDescription to we have to expose a checkConfiguredPackage. We should refactor things so that we keep all the information even in a configured PackageDescription. ] [Add checks for unknown OS Arch and Compiler names Duncan Coutts **20080423151410 They're ok locally but for distribution they need to be known. ] [Fix the check for -XFooBar ghc-options flags to be more permissive Duncan Coutts **20080423190243 Previously we rejected all such flags but that posed the problem that older versions of Cabal, like 1.1.6 did not understand new extensions so we could not actually follow the advice and use the extenion. So now we only warn about -X flags if they refer to old extensions that Cabal 1.1.6 knew about. If the .cabal file specifies cabal-version: >= 1.2 or similar (anything that excludes 1.1.6) then we warn about all -X flags. ] [Normalise file names in warning messages Duncan Coutts **20080423190457 We already do this for error messages. ] [When multiple specifying list fields in the same section combine them Duncan Coutts **20080423201519 eg if you had: extensions: Foo extensions: Bar, Baz then previously we only ended up with [Bar, Baz]. Now we get them all. Only applies to list fields, for single fields the second value is taken and the first is silently discarded. This isn't good of course but the fix is harder since we're not in a context where we can report errors. Really we should just declare up front what kind of field it is and inherit the right behaviour automagically, either duplicates disallowed or allowed and combined with mappend. ] [Fix fix for #224. Thomas Schilling **20080426164537 Changing from list of Dependencies to Maps resulted in the wrong Monoid instance being used. I'd still like to be able to run a test suite on this but that'd require a lot more work to do properly... ] [Fix license parsing Duncan Coutts **20080428192255 Spotted by the testsuite which I'm trying to resurrect. ] [Make the old test code compile Duncan Coutts **20080428225729 Still a lot of bit rot, many of the full tests fail due to changed paths ] [Remove the feature for highlighting the default cases in --help output Duncan Coutts **20080429191206 Turns out it doesn't help us much because in many cases the initial/default flags are actually empty so we cannot identify the default values. ] [Change handling of bool command line args to allow an unset state Duncan Coutts **20080429201123 For bool valued flags we were always producing the command line string corresponding to a false flag value, even if the flag was not set. For example we'd always get "--disable-shared". It is important for cabal-install to be able to take an empty set of flags, override a few flags and turn the flags back into command line strings without getting a lot of extra defaults. Partly this is because we have to work with older versions of the Cabal library command line which does not recognise the new options. ] [Add help command as per ticket #272 Duncan Coutts **20080430133740 "cabal help" behaves like "cabal --help" "cabal help cmd" behaves like "cabal cmd --help" Should still work with command line completion. ] [Revert one change of (.) to fmap. It was not necessary and broke nhc98. Duncan Coutts **20080501104620 The other one was needed as we changed a type from Bool to Maybe Bool. ] [Revert the other `fmap` to (.) Malcolm.Wallace@cs.york.ac.uk**20080501110006 To avoid needing a non-H'98 instance of Functor for (->). ] [Add an --internal flag to HaddockFlags Joachim Breitner **20080501145103] [Implement --internal flag Joachim Breitner **20080501152421 Passing --internal to the haddock stage does these things: * Does not pass --hide parameter to haddock * Passes --ignore-all-exports parameter * Appends "(internal documentation)" to the title ] [With --executable, --internal just adds --ignore-all-exports Joachim Breitner **20080501152544] [Document --internal in Cabal.xml Joachim Breitner **20080501153356] [Revert the change about the --internal flag and a warning about haddock Duncan Coutts **20080501223131 Just a bit of confusion over the behaviour of the --executable flag. ] [Reverse the order of the args to PackageIndex.insert Duncan Coutts **20080504130317 To take the index last like the other functions and like Data.Map. It is actually more convenient that way round. ] [Change dependencyInconsistencies to not take the pseudo top package Duncan Coutts **20080504130802 The one case where we need the pseudo top package we can use PackageIndex.insert instead to get the same effect and there are other cases in cabal-install where we do not want a pseudo top package. ] [Add PackageIndex.dependencyCycles Duncan Coutts **20080504131626 Finds any cycles (strongly connected components) in the dependencies of set of packages. This is useful for checking the correctness of installation plans. ] [Cope better with ghc bug #2201, display a better error message Duncan Coutts **20080505085746 Otherwise it can (and does) really confuse people. The problem is that the command $ ghc-pkg-6.9 describe '*' --user returns a non-zero exit code if the user package db is empty. ghc-pkg intends this exit code to tell us if the query returned any results (one can use more complex queries as tests) but Cabal interprets it as failure. Indeed we cannot distinguish it from any other kind of failure from ghc-pkg. ] [Remove a test for the specific kind of exception for nhc98 compatibility Duncan Coutts **20080506102804 This was the check for ghc-pkg failing. We cannot check for the exception being an ExitException since that assumes ghc's representation of the Exception type, whereas nhc98 defines: type Exception = IOError ] [Add PackageIndex.delete Duncan Coutts **20080506131603 We occasionally need to remove packages from an index eg to restrict the choices of a dependency resolver. ] [Add PackageIndex.dependencyGraph that builds a Graph Duncan Coutts **20080506234326 Useful for some more tricky queries. ] [Improve style and performance of PackageIndex.dependencyClosure Duncan Coutts **20080506234447 Keep the completed set as another PackageIndex rather than a list. We want to return an index at the end anyway and in the mean time we want to do lots of lookups to see if we've visited previously. ] [Add PackageIndex.reverseDependencyClosure Duncan Coutts **20080506234902 It's similar to dependencyClosure but looks at reverse dependencies. For example it's useful to find all packages that depend on broken packages and are thus themselves broken. ] [Display Cabal version in configure output with -v Duncan Coutts **20080509163507 eg "Using Cabal-1.5.1 compiled by ghc-6.8" Annoyingly ghc doesn't give us its full version number. ] [Fix a bug in the unlitter Ian Lynagh **20080510233852 If we see a birdtrack while we are in latex mode, then we stay in latex mode - don't change into bird mode! ] [Remove gnerated file (doc/fptools.css) Ian Lynagh **20080511130035] [Make the "dist" directory configurable Ian Lynagh **20080511155640] [Remove a hardcoded "dist" Ian Lynagh **20080511181305] [Print exit code and stderr for failing progs at debug level verbosity Duncan Coutts **20080513094055 Also adjust the verbosity level we get during configure at -v3 Should make it a bit easier to track down failing calls. ] [Define bracketOnError in compat; fixes the build for GHC 6.4 Ian Lynagh **20080514003919] [Hack around lack of Read for Map in GHC 6.4 Ian Lynagh **20080514004400 This is made worse by Show on Map being strange in GHC 6.4. The code could be better, but it works, and all the ugliness is in #if's that we can remove at some point down the line. ] [Make Distribution.Compat.Char for isSymbol; fixes the build with GHC 6.4 Ian Lynagh **20080514004703] [Add new compat modules to Cabal file Ian Lynagh **20080514022119] [Make Distribution.Compat.Char for isSymbol; fixes the build with GHC 6.4 Ian Lynagh *-20080514004703] [Modules that use cpp have to have cpp language prama to say so Duncan Coutts **20080514082913 Otherwise we cannot compile with just ghc --make which is actually essential for bootstrapping. ] [Don't use Data.Char.isSymbol as it doesn't exist in base-1.0 Duncan Coutts **20080514083405 This is an alternative fix to creating a Distribution.Compat.Char ] [Made it possible to run executeables with data files in place. Johan Tibell **20080413134155 Added an environment variable, DATA_DIR, that is checked before the installation data directory is used. ] [Prefix the datadir env var with the package name Duncan Coutts **20080514094203 Partly as it is more likely not to clash with other users and since in general different libs within a program may need different paths. ] [fix scope errors in non-GHC branch of an #ifdef Malcolm.Wallace@cs.york.ac.uk**20080514112530] [Add in {-# OPTIONS #-} for the benefit of ghc-6.4.x Duncan Coutts **20080514144728 Which do not grok OPTIONS_GHC or LANGUAGE pragmas ] [Define bracketOnError in compat; fixes the build for GHC 6.4 Ian Lynagh *-20080514003919] [Eliminate use of bracketOnError, use handle instead Duncan Coutts **20080514153206 It's actually more appropriate anyway. This means we don't need any Distribution.Compat.Exception. ] [Remove redundant Char test in parseBuildToolName Duncan Coutts **20080514153343 It was made redundant after the isSymbol test was removed. Spotted by Igloo. ] [Check invariant on every construction and elide on lookups Duncan Coutts **20080514154104] [Add PackageIndex.lookupPackageName and extra deletion functions Duncan Coutts **20080514162954] [Remove Distribution.Compat.Exception from other-modules Duncan Coutts **20080514171822] [Do not display version tags Duncan Coutts **20080509094455] [Remove unused import Duncan Coutts **20080513094301] [Allow the bindir, libdir and libexec dir to be specified via env vars too Duncan Coutts **20080519173808 Same as for the datadir. Eg for package Foo, you'd use Foo_bindir=... Foo_datadir=... Foo_libexecdir=... ./Foo The next step would be generating a wrapper script that allows running the program inplace. It should also work for a library. ] [add data-dir field to package config Bertram Felgenhauer **20080509130448 Cabal will look for data files to install relative to the directory given in the data-dir field, allowing package authors to better structure their source tree. There's no behavioural change by default. ] [document data-dir field Bertram Felgenhauer **20080509131306] [Remove gnerated file (doc/fptools.css) Ian Lynagh *-20080511130035] [Rename doc/fptools.css to avoid the ghc build system cleaning it Duncan Coutts **20080520191700 The user guide gets built in two different ways. There's a target in Cabal's the top level Makefile and there is also the stuff that the ghc build system uses. The ghc build system expects to copy in doc/fptools.css and then delete it again on make clean. We want a persistent copy so that we can make the docs when we've just got a standalone Cabal build tree, so that's now kept as doc/Cabal.css. ] [Write out Bool config values correctly Duncan Coutts **20080521153420 Used by cabal-install when writing the default ~/.cabal/config file. Previously it was using show for type Maybe Bool and writing out "Just True" when of course it should just be "True". ] [Add notThisVersion :: Version -> VersionRange Duncan Coutts **20080529092244 Opposite of ThisVersion, it means /= x.y but is actually implemented as > x.y || < x.y as we do not have not or not equal as primitives. ] [Add thisPackageVersion and notThisPackageVersion Duncan Coutts **20080529092607 Util functions for makeing dependencies from package identifiers. thisPackageVersion (foo-1.0) = foo ==1.0 notThisPackageVersion (foo-1.0) = foo /=1.0 The latter is handy as a constraint in dependency resolution. ] [Change the PackageIndex invariant so the buckets are ordered Duncan Coutts **20080529095346 Each bucket holds packages with the same name case-insensitively. Previously each buckets was internally unordered. Now they're ordered by the full package id which means first by package name case-sensitively and then by version. ] [Put spaces round || and && when displaying version range expressions Duncan Coutts **20080529104214 This makes them much more readable. ] [Bump version due to api changes Duncan Coutts **20080529104714] [initial stub of the dependency analysis framework Andrea Vezzosi **20080530144930] [completed Graph internals Andrea Vezzosi **20080606110453] [Reformat and document DepMaker and Rule Duncan Coutts **20080606111332] [Note compatability issue in deprecation message for defaultUserHooks Duncan Coutts **20080527135830] [Add invariants for Graph and document it. Andrea Vezzosi **20080607054019] [Refactor Make.Graph to consider demand-driven propagation of values. Andrea Vezzosi **20080619155019 We can discover that a node depends on a target after the latter has already been produced, in that case we still need to apply its representation if there's a corresponding DepMaker ] [Update Make.MakeM to use the new Make.Graph Andrea Vezzosi **20080619160012 It also now requires only a single primitive from the underlying monad to check if a target has currently a given representation. ] [Add Make.TestMonad and Make.Rules for testing purpouses Andrea Vezzosi **20080619160531] [Install license file into the right place Duncan Coutts **20080609185840 even if the license file was kept in a subdir of the src tree. The canonical example was: license-file: debian/copyright It was being installed into $docdir/debian/ and failing since that dir did not exist. It's now installed into just $docdir. ] [Install haddock interface only when generated Duncan Coutts **20080609190251 This is actually Andrea Rossato's patch but it didn't merge cleanly due to more recent changes. Fixes ticket #250. ] [Fail better when using haddock 2.x and the --hoogle flag Duncan Coutts **20080609190555 Fixes ticket #249 ] [Fix pre-processing for haddock and executables Duncan Coutts **20080609233609 Now look in the right place to find the pre-processed source files belongign to executables. Fixes ticket #252. ] [Add withFileContents and withUTF8FileContents Duncan Coutts **20080610180150 Safe block scoped reading of files. These guarantee that the file gets closed. ] [Close the package.conf file after reading it Duncan Coutts **20080610180217 We had a bug on windows where we open and read ghc's package.conf database but because we did not consume the final newline we did not close the file. Then when we called ghc-pkg to register a package it failed because it could not rename the open file. ] [Switch to scoped file reading rather than lazy readFile Duncan Coutts **20080610180528] [Use writeFileAtomic everywhere instead of writeFile Duncan Coutts **20080610180727] [Switch the hugs code to safe file reading and writing Duncan Coutts **20080610180947] [Filter out the Paths_pkgname file in sdist Duncan Coutts **20080612091810 Fixes ticket #187 finally (I hope). ] [Fix the register --gen-pkg-config flag Duncan Coutts **20080612092425 When specified without any file name it is supposed to use a default file name rather than be ignored completely. ] [Use the standard autogenModulesDir rather than a local copy Duncan Coutts **20080612092855] [Lift the restriction that libraries must have exposed-modules Duncan Coutts **20080612092924 This allows libs that have only private modules or C code. This might be used to make libs that have non-exposed modules and only export C APIs. It could also be used to make packages that consist only of C code. That might be useful for bindings where it may make sense to split the C and Haskell code into separate packages. ] [base-1.0 does not have Data.Map.alter so use insertWith instead Duncan Coutts **20080612154309] [Update copyright and authors list in the .cabal file Duncan Coutts **20080612154444] [Update the release notes Duncan Coutts **20080612154624] [Update the README and convert it to markdown syntax Duncan Coutts **20080612162906] [Add the 1.2.4.0 release to the changelog Duncan Coutts **20080612164144] [Add the 1.4.0.0 release to the changelog Duncan Coutts **20080612164242] [Put upper bounds on all the build-depends Duncan Coutts **20080612174958] [Move the mkGHCMakefile.sh out of the root dir Duncan Coutts **20080612190317 Having it there confuses people. They think they have to run it as part of the install process. ] [Include the readme and the changelog in the tarball Duncan Coutts **20080612190558] [force results inside withHaskellFile Ross Paterson **20080614160707 withUTF8FileContents now closes the file, so we need to force what we're computing from the contents before it's gone. ] [construct InstalledPackageInfo from scratch rather than by overriding Duncan Coutts **20080616171505 It means we catch any fields that get added. As it happens we were missing a field, though its value is supposed to be just [] which is the same value as we got from the default emptyInstalledPackageInfo. ] [Makefile tweak, setup depends on Setup.hs Duncan Coutts **20080616175446] [Update changelog for 1.4.0.1 Duncan Coutts **20080617130434] [Fix css location in generation of user guide Duncan Coutts **20080617133811] ['.' should not always be in hs-source dirs Duncan Coutts **20080613230352 We changed the parsing of list fields in the .cabal file so that it adds to the current value rather than replacing it. This allows you to put multiple entries for a list field and they all get concatenated. However that means that the '.' in the hsSourceDirs of emptyBuildInfo is always added to and not replaced like we did previously. That's not what we want in this case. We want to use '.' for hsSourceDirs *only* if hsSourceDirs is otherwise null. As it happens, due to the way the configurations code works, we're already filling in the default if it'd otherwise be null so we do not need '.' in the emptyBuildInfo at all. ] [haddock-2.2 and later do now support the --hoogle flag Duncan Coutts **20080613205445] [Add version wildcard syntax Duncan Coutts **20080619175006 build-depends: foo ~1.2.* means: build-depends: foo >=1.2 && <1.3 It's also valid everywhere else version ranges are used. ] [No more need for the distinction between null and emptyBuildInfo Duncan Coutts **20080614001654 Now that we have removed the hsSourceDirs = [currentDir] default from emptyBuildInfo it is now equal to nullBuildInfo. ] [Add PackageName as a newtype Duncan Coutts **20080614002926] [Add PackageSet, like PackageIndex but case sensitive Duncan Coutts **20080614003705 Actually it turns out that we don't need case insensitivity in many cases, mosty just for simple lookups in the UI. For everything else the ordinary Ord instance is much simpler. The fact that listing the contents of a PackageIndex doesn't come out in Ord order actually causes real problems in cabal-install and necessitates re-sorting. So we should move to using PackageSet in most cases and just leave the search and lookup operations in PackageIndex. ] [Include trailing newline in hscolour command description Duncan Coutts **20080619220940] [Use conservative render style for display Duncan Coutts **20080619222258] [Add simple file name globbing (*) to data-files and extra-source-files Duncan Coutts **20080626171424] [Add compat InstalledPackageInfo types for older GHCs Duncan Coutts **20080621013727 We need these types for their Read instances so that we can still read older GHCs package db files when we make changes to the current InstalledPackageInfo type, or the types contained in it, like PackageIdentifier or License. ] [Tweaks to the readme, hopefully will reduce confusion Duncan Coutts **20080625232051] [Add ModuleName as a new type instead of using String everywhere Duncan Coutts **20080626192939] [Remove a couple old deprecated empty modules Duncan Coutts **20080626195204] [Whitespace changes, convert tabs to spaces Duncan Coutts **20080626200933] [Update module headers Duncan Coutts **20080628172550 Use cabal-devel@haskell.org as the maintainer in most cases except for a few which were pre-existing modules copied from elsewhere or modules like L.H.Extension which really belong to libraries@haskell.org Remove the useless stability module. We have more detailed information on stability elsewhere (in the version number and user guide). Add more top level module documentation, taken from the source guide. ] [Remove the SetupWrapper module Duncan Coutts **20080628173010 It's not used in Cabal itself and while cabal-install used it previously, it now has its own extended implementation. ] [TAG 2008-05-28 Ian Lynagh **20080528004259] [Update .darcs-boring Ian Lynagh **20080627182013] [Fix a haddock typo Ian Lynagh **20080629114239] [haddock typo Ian Lynagh **20080629114342] [Allow installing executables in-place, and using shell script wrappers Ian Lynagh **20080629164939 GHC-only currently. ] [Fix the build with GHC 6.4.2: Data.Map.alter doesn't exist Ian Lynagh **20080703001151] [Fix using specified package databases Ian Lynagh **20080703001216 If we are using a specified package database, we need to tell GHC what it is when building ] [massage a pattern-with-context around nhc98's typechecker Malcolm.Wallace@cs.york.ac.uk**20080704140541] [help nhc98's import overlap resolver Malcolm.Wallace@cs.york.ac.uk**20080704140613] [fix #if __GLASGOW_HASKELL__ test Ross Paterson **20080705105048 The problem is that #if __GLASGOW_HASKELL__ < NNN is also true for non-GHC. It should be #if __GLASGOW_HASKELL__ && __GLASGOW_HASKELL__ < NNN ] [more tests in Make.Rules Andrea Vezzosi **20080711162539] [add Make.RulesIO with example make program Andrea Vezzosi **20080711162620] [Make.Imports to read imports from haskell modules Andrea Vezzosi **20080711163347] [better exception handling in Make.RulesIO Andrea Vezzosi **20080711173438] [Remove the need for a compat Data.Map module Duncan Coutts **20080710154600 Stop using Map.alter, use the same solution as the PackageIndex module. ] [Correct the order of args given by --PROG-options Duncan Coutts **20080710181437 They were getting reversed. Problem located by Igloo. ] [Fix haddocking (with old haddocks?) Ian Lynagh **20080703154714] [In Makefile.in, put all the rules that mentions srcdir together Ian Lynagh **20080710231415] [Fix some whitespace in Makefile.in Ian Lynagh **20080710231519] [Teach "Setup makefile" how to cope with multiple hs-source-dirs Ian Lynagh **20080711000726] [Add a hack to copy .hs-boot files into dist/... Ian Lynagh **20080711000826 When a preprocessor generates a .hs file we need to put the .hs-boot file next to it so that GHC can find it. ] [Simplify ghc version test slightly Duncan Coutts **20080711142026] [derive Eq for ConfiguredProgram Duncan Coutts **20080711160138 a request from Saizan ] [If install is given a distPref, pass it on to copy and register Ian Lynagh **20080712121916] [Fix the "Setup makefile" rules for C files Ian Lynagh **20080712173851] [Fix installing datafiles Ian Lynagh **20080712173934 If datadir is foo and the datafile is bar then we should install it to $datadir/bar, not $datadir/foo/bar. ] [If we are using ghc as hsc2hs's cc, then tell it where package.conf is Ian Lynagh **20080713110548 if we have been told to use a specific one with --package-db ] [Pass -package-conf foo when using GHC as CC Ian Lynagh **20080713123958] [Put GHC's programArgs in GHC_OPTS when making a Makefile Ian Lynagh **20080715132429] [Generate expanded makefile rules directly, rather than using $(eval ...) Ian Lynagh **20080720194801 We used to do this with $(eval ...) and $(call ...) in the Makefile, but make 3.79.1 (which is what comes with msys) doesn't understand $(eval ...), so now we just stick the expanded loop directly into the Makefile we generate. ] [update Make.RulesIO for better integration in Cabal Andrea Vezzosi **20080722151742] [Test that make is equivalent to compiling from scratch in Make.Rules Andrea Vezzosi **20080722153457] [Add stubs of the YHC support Andrea Vezzosi **20080722205047] [implementation of the YHC support using Make.* Andrea Vezzosi **20080722205322] [add C2hs support in Make.Imports Andrea Vezzosi **20080819090825] [implement checkUpToDate and minor tweaks in Make.MakeM Andrea Vezzosi **20080819091421 checkUpToDate is like a normal make run but stops if it has to run an action. ] [cleaner interface for Make.Graph Andrea Vezzosi **20080819091842] [initial support for preprocessor chaining in Make.Suffix Andrea Vezzosi **20080819091908] [add Make.Test Andrea Vezzosi **20080819092820] [add Make.JobControl Andrea Vezzosi **20080819120626] [use JobControl to support parallel builds Andrea Vezzosi **20080819120922] [Pass -x to strip on OSX Duncan Coutts **20080720204609] [Fix warnings and add a comment explaining why we pass -x to strip on OS X Ian Lynagh **20080720220851] [And exitcode of 2 from ghc-pkg when doing describe '*' means no packages Ian Lynagh **20080722125759 This is a bit of a kludge around GHC's #2201, until Cabal is updated to use ghc-pkg dump. ] [If we have GHC >= 6.9 then use the new -optdep replacement flags Ian Lynagh **20080722163346] [Convert from PackageIndex to PackageSet Duncan Coutts **20080720194924 Turns out the feature to do case-insensitive lookups was only needed in cabal-install (and only in one little part) and elsewhere it causes problems. So use PackageSet instead. ] [Change some PackageSet functions to return the package rather than the id Duncan Coutts **20080720221702 dependencyGraph and reverseDependencyClosure now return the full package rather than just the PackageIdentifier ] [Add PackageSet.topologicalOrder and reverseTopologicalOrder Duncan Coutts **20080720223731 with type :: PackageFixedDeps pkg => PackageSet pkg -> [pkg] ] [Add gccProgram Duncan Coutts **20080720232818 on Windows we have to find ghc's private copy of gcc.exe ] [Always use gcc as cc with hsc2hs Duncan Coutts **20080720233759 Lookup what flags to use from the package index. Previously this was done by calling ghc as cc and passing -package flags to ghc. ghc would then lookup what extra flags to pass to gcc. We now do that ourselves directly and it's a good deal simpler and it's portable to the other haskell implementations. This is only a first go, the flags may not all be exactly right. Needs testing. ] [Don't need the complex code in detecting hsc2hs anymore Duncan Coutts **20080720234019 Since we do not need to know if hsc2hs uses ghc or gcc as cc by default since in either case we now tell it to use gcc. ] [Fix the location of gcc.exe in a Windows GHC installation Ian Lynagh **20080723101848] [Substitute for $topdir when we read GHC's InstalledPackageInfo's Ian Lynagh **20080723112232] [help nhc98's module disambiguator a bit Malcolm.Wallace@cs.york.ac.uk**20080724165753] [more import qualification to help nhc98 Malcolm.Wallace@cs.york.ac.uk**20080728153629] [disambiguate Control.Exception.catch for nhc98 Malcolm.Wallace@cs.york.ac.uk**20080728164506] [Pass -no-user-package-conf to ghc when not using UserPackageDB Duncan Coutts **20080729145040 Should eliminate the corner case where we're doing a global install but the user package db contains the exact same version as in the global package db. Perhaps we should warn in that case anyway since it's likely to go wrong later. ] [Use "pkg == 1.2.*" as the version wildcard syntax Duncan Coutts **20080729151612 Rather than "pkg ~ 1.2.*". This seemed to be the consensus. The syntax "pkg == 1.2.*" means "pkg >= 1.2 && < 1.3" and it is to encourage people to put upper bounds on api versions. ] [Allow $arch and $os in install paths. Duncan Coutts **20080729151952 Fixes ticket #312. For example a user could use: cabal configure --libsubdir="$pkgid/$compiler/$arch" if they wanted to have packages for multiple architectures co-exist in the same filestore area. ] [Fix the semantics of the simple file globbing to be sane Duncan Coutts **20080729152624 I realised when I started to document it that the behaviour was not terribly consistent or sensible. The meaning now is: The limitation is that * wildcards are only allowed in place of the file name, not in the directory name or file extension. In particular, wildcards do not include directories contents recursively. Furthermore, if a wildcard is used it must be used with an extension, so "data-files: data/*" is not allowed. When matching a wildcard plus extension, a file's full extension must match exactly, so "*.gz" matches "foo.gz" but not "foo.tar.gz". The reason for providing only a very limited form of wildcard is to concisely express the common case of a large number of related files of the same file type without making it too easy to accidentally include unwanted files. ] [File globs must match at least one file or it's an error. Duncan Coutts **20080729154050] [Document the $os and $arch install path vars Duncan Coutts **20080729155654] [Document the wildcard behaviour in data-files and extra-source-files fields Duncan Coutts **20080729155920] [Document more clearly that every modules must be listed Duncan Coutts **20080729160308 in one of the fields exposed-modules, other-modules or main-is Add an extra note to the section on the Paths_pkgname module as the fact that it's automatically generated confuses people. ] [Move the docs for the buildable field to a better place. Duncan Coutts **20080729160808 It doesn't need to be right up near the top. ] [Remove references to cabal-setup from the documentation Duncan Coutts **20080729160950 Change to runhaskell Setup or cabal-install as appropriate. ] [Move docs for build-depends into the build information section Duncan Coutts **20080729162024 Since it is shared between libs and exes. Extend the documentation to describe the syntax of version constraints, including the new version range syntax "build-depends: foo ==1.2.*". ] [Tweak whitespace Ian Lynagh **20080729163729] [Fix linking with hsc2hs on OS X Ian Lynagh **20080729170215 We don't tell hsc2hs to link the actual Haskell packages, so with GHC's rts package we need to also filter out the -u flags. ] [Tweak a test to not go via the pretty printer Ian Lynagh **20080729172750] [Pass the right -F and --framework flags when running hsc2hs on OS X Ian Lynagh **20080729172757] [Do not use ',' as a list separator for the cpp/cc/ld-options fields Duncan Coutts **20080729170556 It breaks for some options like "ld-options: -Wl,-z,now" No existing .cabal files on hackage were using ',' as a list separator so this should not break anything. ] [Fix uses of verbosity > deafening to use >= Duncan Coutts **20080729191855 The maximum verbosity value is deafening so >= the correct test. This primarily affected haddock. ] [Do the ghc rts ldOptions hack in a slightly more hygenic way Duncan Coutts **20080729195714] [Rearrange the Monoid instances for Library, Executable, BuildInfo Duncan Coutts **20080730163432 No functional change, just moving code about. We now define the Monoid methods directly rather than in terms of emptyLibrary, unionLibrary etc. ] [Add an "exposed" field to the .cabal file library section Duncan Coutts **20080730164516 It's a bool flag that says if by default the library should be registered with the compiler as exposed/unhidden (for compilers which have such a concept, ie ghc). You might want to do this for packages which would otherwise pollute the module namespace or clash with other common packages. It should be very rarely used. The only current examples we know of are the ghc api package and the dph packages. ] [Remove unused inDir util function Duncan Coutts **20080730165031] [Remove unused imports Duncan Coutts **20080730182957] [Make Cabal compatible with extensible exceptions Ian Lynagh **20080730183910 The code is now also more correct, e.g. when we are ignoring IO exceptions while trying to delete something, we don't also ignore timeout exceptions. ] [Remove unused imports Ian Lynagh **20080730194526] [Fix the Windows build Ian Lynagh **20080731194841] [Document the "exposed" .cabal file field Duncan Coutts **20080731162807] [Fix instance Monoid ConfigFlags for configStripExes Duncan Coutts **20080802002045] [Don't try to install libHSfoo.a if the lib had no object files Duncan Coutts **20080804143817 To allow meta-packages. ] [Adjust registration to allow packages with no modules or objects Duncan Coutts **20080804155826 So ghc-pkg does not complain about missing files and dirs. ] [Document and refactor 'parsePackageDescription'. Thomas Schilling **20080804190324 Hopefully this makes this function more understandable and easier to modify. ] [Move parseFreeText into ParseUtils and use it more widely Duncan Coutts **20080806001352] [Generalise checkPackageFiles to any monad, not just IO Duncan Coutts **20080806001547 This is to let us use the same checks for virtual or in-memory file systems, like tarball contents. ] [setup makefile: put the source-dir suffix rules after the distdir suffix rules Simon Marlow **20080806130309 This matches the behaviour of 'setup build' works, and is robust to people accidentally having old preprocessed sources lying around in the source dir. ] [Windows fixes Ian Lynagh **20080803201253] [Tidy up the ppFields function and uses Duncan Coutts **20080806121315 Put the arguments in a more sensible order: ppFields :: [FieldDescr a] -> a -> Doc and make the implementation clearer. clean up the use of it in the PackageDescription.Parse module ] [Add parsse utils for simple flat formats. Duncan Coutts **20080806122613 Should help to simplify the InstalledPackageInfo parser and also for similar formats in cabal-install. ] [Simplify InstalledPackageInfo parser and pretty printer Duncan Coutts **20080806122807 Using the new utils in ParseUtils. ] [Use 'ghc-pkg dump' instead of 'ghc-pkg describe *' David Waern**20080807190307 Does not implement lazy parsing of the output of ghc-pkg dump, so this is only a partial fix of #311. For more information about why we want to use ghc-pkg dump, see GHC ticket #2201. ] [When running "Setup makefile", put "default: all" at the top of the Makefile Ian Lynagh **20080809211148 This make "make" work even if Makefile.local contains any targets. ] [Make binary-dist do nothing in doc/Makefile, for now Ian Lynagh **20080810005135] [allow Cabal to use base-4 Simon Marlow **20080806130512] [Add auto-generated CPP macros for package version testing Simon Marlow **20080811173016 Now when using CPP you get MIN_VERSION_(A,B,C) for each in build-depends, which is true if the version of in use is >= A.B.C, using the normal ordering on version numbers. This is done by auto-generating a header file dist/build/autogen/cabal_macros.h, and passing a -include flag when running CPP. ] [Don't use tab characters in the generated Paths module Duncan Coutts **20080812160731] [Add data Platform = Platform Arch OS Duncan Coutts **20080812160941 Since we tend to pass them around together rather a lot. Also add a Text instance with a format like "i386-linux" ] [Add alias type PackageId = PackageIdentifier Duncan Coutts **20080812171006] [Fix the config-file field name of the install command's packagedb option Duncan Coutts **20080812171207] [Fix warnings in Windows Paths_pkgname module Duncan Coutts **20080812211349] [Flush stdout when printing debugging messages Duncan Coutts **20080812212236] [Don't warn about missing strip.exe on Windows Duncan Coutts **20080812220415 We don't expect Windows systems to have the strip program anyway. ] [fix imports for nhc98 Malcolm.Wallace@cs.york.ac.uk**20080813132112] [Add util rewriteFile :: FilePath -> String -> IO () Duncan Coutts **20080813192017 Write a file but only if it would have new content. If we would be writing the same as the existing content then leave the file as is so that we do not update the file's modification time. ] [Move Paths_pkgname and cabal_macros.h generation into their own modules Duncan Coutts **20080813193245] [Catch exit exceptions as well as IO exceptions after running programs Ian Lynagh **20080813213035 We need to catch IO exceptions for things like "couldn't find the program", but we also need to catch exit exceptions as Cabal uses them to signal what the program returned. ] [unbreak for non-GHC Malcolm.Wallace@cs.york.ac.uk**20080814182558] [Minor info and help message improvements Duncan Coutts **20080813124957] [Fix spelling of compatibility Duncan Coutts **20080818194951 At request of gwern who found that it was driving him nuts. ] [Don't propagate cc-options to the InstalledPackageInfo Simon Marlow **20080821132551 cc-options is for options to be passed to C compilations in the current package. If we propagate those options to the InstalledPackageInfo, they get passed to C compilations in any package that depends on this one, which could be disastrous. I've seen cc-options like these: cc-options: -optc-std=c99 cc-options: -D_FILE_OFFSET_BITS=64 Cc-options: -Wall these are all clearly intended to be local, but are in fact currently propagated to all dependent packages. ] [Don't pass cc-options to Haskell compilations Simon Marlow **20080821133421 This has no effect with GHC 6.9, and with earlier GHC's it was a misuse of cc-options. ] [Fix for #333, "Setup sdist --snapshot fails" Duncan Coutts **20080821154913 Credit to Spencer Janssen. This is just a slight alternative to the fix he proposed. It simplifies prepareSnapshotTree. ] [Update changelog Duncan Coutts **20080802135452] [Update changelog for recent 1.5.x changes Duncan Coutts **20080822160828] [Bump version number to 1.5.3 Duncan Coutts **20080822160918] [We now depend on concurrent (split off from base) Ian Lynagh **20080824135145] [Rename --distpref to --distdir Duncan Coutts **20080825164258 It's more consistent with the other flag names for dirs. Kept the old name too, but it's not shown by --help. ] [Teach Cabal about the PackageImports extension Ian Lynagh **20080825132352] [More changelog updates for 1.4.0.2 Duncan Coutts **20080824203744] [Note the per-user install path on Windows in the README Duncan Coutts **20080824203923] [resolve conflicts in Distribution.Simple.Build and Cabal.cabal Andrea Vezzosi **20080827125517] [assert that the returned rules must cover the targets in Make.Graph.insertDeps Andrea Vezzosi **20080828144004] [Use a "target -> [dep]" representation for the cache in Make.MakeM Andrea Vezzosi **20080828144158] [cleanup code and minor changes in Make.Suffix Andrea Vezzosi **20080828151127] [reimplement Distribution.Simple.PreProcess in terms of Make.Suffix Andrea Vezzosi **20080828151513] [add Make.Suffix and Make.JobControl to .cabal file Andrea Vezzosi **20080828151547] [update .YHC to use checkUpToDate Andrea Vezzosi **20080828151653] [Update modules depending on .PreProcess to use the new api Andrea Vezzosi **20080828151828] [make use of the new Cache representation in Make.MakeM Andrea Vezzosi **20080828173645 We no longer forget about not-updated targets by merging the new cache with the old one. ] [update Make.Test Andrea Vezzosi **20080829191151] [Separate out and export installDirsOptions Duncan Coutts **20080826003240 The InstallDirs is a separate type so it's handy to have the command line and config file options for it available separately. It'd be useful in cabal-install for one thing. ] [Ban package names that are not valid windows file names Duncan Coutts **20080826005502 At least for the purposes of distribution. So if you're on unix then you can call your package 'LPT1' if you feel you must, but you cannot distribute a package with this name. ] [Add release date of 1.4.0.2 Duncan Coutts **20080826204810] [Add support for manually en/disabled flags Ian Lynagh **20080827170105 The immediate use for these is so that, in haddock, we can require ghc-paths normally, but in the GHC build we can manually turn off a flag so that this dependency isn't needed. We can't use a normal flag, or in the normal build Cabal would infer that the flag needs to be turned off if ghc-paths isn't available. ] [We need to pass the CPP options to haddock 2 Ian Lynagh **20080828142303] [Allow passing haddock's location and options to "Setup haddock" Ian Lynagh **20080828142424] [In wrappers, $executablename needs to expand to something with DESTDIR Ian Lynagh **20080828155554 The installed wrapper needs to call the executable in its final place, not inside the DESTDIR where we are constructing a package. ] [Add checkPackageFileNames function to check portability of file names Duncan Coutts **20080827082349 Windows has restrictions on names of files and portable tar archives have some weird length restrictions too. Not yet used but should be used in sdist and hackage. ] [Merge PackageSet and PackageIndex Duncan Coutts **20080830130250 Have just a single module that provides both the case sensitive and insensitive operations. Turns out we hardly use the case insensitive operations, and the places where we do are not performance sensitive at all. So we use the PackageSet implementation which stores the packages case sensitively and tack on the case insensitive operations but with linear time implementations rather than log time. For the merged module/type name use PackageIndex because that is what older released versions exported, so less needless client breakage. ] [Don't redundantly pass programArgs in when calling programs. Duncan Coutts **20080831212526 That's already done by the Program framework so we were passing those extra args in twice. ] [Add some more handy Program utils Duncan Coutts **20080831214813 Mostly for dealing with lists of programs so that client code doesn't need quite to much flip foldl' (flip thing) Add specific helpers for reconfiguring programs and restoring a full ProgramConfiguration after usign read. ] [Use the new Program utils to simplify code in Configure Duncan Coutts **20080831215054] [Add flags to build command for specifying program paths Duncan Coutts **20080831215135 So we're going to allow --with-PROG for the build and haddock commands, in addition to the existing --PROG-options= flags. ] [Update the haddock command help text Duncan Coutts **20080831215325 The haddock command now supports --haddock-options= ] [Simplify the handling of --with-prog= in build/haddock commands. Duncan Coutts **20080831215551 We allow extra rgs and the location of programs to be given to the build and haddock commands, not just at configure time. The code to do this is now simpler and more general. This should not be the default use mode however since it involves configuring the programs each time where as doing it at configure time allows it to be done once and saved. Further, specifying a different version of the program at build time than at configure time is likely to fail, especially for the compiler programs. Changing the compiler really requires reconfiguring. ] [Use a hopefully more robust method of determining the gcc version Duncan Coutts **20080831220145] [Bump the version number to 1.5.4 Duncan Coutts **20080831220418 due to the PackageSet/Index api changes ] [Display the right message for sdist --snapshot Duncan Coutts **20080831221756] [package concurrent not available in nhc98 Malcolm.Wallace@cs.york.ac.uk**20080902092802] [adjust Copyright in Distribution.Simple.PreProcess Andrea Vezzosi **20080902134245] [add module headers to Make.* Andrea Vezzosi **20080902135819] [primitive check for dep. cycles in Distribution.Simple.PreProcess Andrea Vezzosi **20080902213349] [update Make.Test to the changes in Make.MakeM Andrea Vezzosi **20080902204112] [use a more space efficient representation for the cache in Make.MakeM Andrea Vezzosi **20080902213701] [Haddock 2: #include Simon Marlow **20080901145843] [Add more detail to the -Werror and -fvia-C checks Duncan Coutts **20080902171413 Also, ban rather than just warn about the -optl-Wl,-s hack now that Cabal strips exes by default. ] [Update CPP-Options in Cabal.cabal to define CABAL_VERSION=1,5,4 Ian Lynagh **20080902170348 It was still defining CABAL_VERSION=1,5,3 ] [Pass the interfaces for the transitive set of dependencies to haddock Ian Lynagh **20080903123813 Otherwise we don't get links to types from packages that we don't directly depend on. ] [more precise semantic for JobControl Andrea Vezzosi **20080903235639] [Make.MakeM no longer forgets about intermediate results if there's an error. Andrea Vezzosi **20080904003418] [Fix cabal_macros.h for package names containing '-' Duncan Coutts **20080903220116 As with the Paths_pkgname module, we map '-' to '_' as the former is not a valid character in cpp macro identifiers. Fixes cpp redefinition warnings. First reported by gwern. ] [enable parallel builds by default Andrea Vezzosi **20080905203621] [Fix to compile with base-1.0:Data.List Duncan Coutts **20080904233126 which did not have isInfixOf ] [follow library changes Ian Lynagh **20080903223608]