Hi all,
for packages that aren't for public consumption, we would like to
specify a private Hackage repo location. The simplest way we could think
of to do this was to read a config file in the same format as the user
config (~/.cabal/config) from the current directory and let any flags
set in that file override the user config.
The attached patch implements this, reading any file with a
.cabal-install extension (including '.cabal-install'). It errors out if
more than one .cabal-install file is found or if there's a parse error
on the .cabal-install file.
Does this sound like a good idea? If not, any ideas for alternative ways
of handling non-public packages?
Many thanks,
Carl
1 patch for repository http://darcs.haskell.org/cabal-install:
Mon Jan 9 22:40:12 CET 2012 Carl Baatz <carl.ba...@gmail.com>
* Extend config with <pkgname>.cabal-install from current directory.
This patch allows an optional package-specific cabal-install config to
be stored in the current directory. It will use any file ending in
.cabal-install (including '.cabal-install') but fail if more than one
such file is found. The suggested naming convention is to use
<pkgname>.cabal-install.
This change affords, for example, setting a package-specific
remote-repo location, which comes in handy when developing proprietary
packages that should be uploaded only to an internal Hackage.
New patches:
[Extend config with <pkgname>.cabal-install from current directory.
Carl Baatz <carl.ba...@gmail.com>**20120109214012
Ignore-this: fec3f2017af45fc5a9ace31ff0001e6f
This patch allows an optional package-specific cabal-install config to
be stored in the current directory. It will use any file ending in
.cabal-install (including '.cabal-install') but fail if more than one
such file is found. The suggested naming convention is to use
<pkgname>.cabal-install.
This change affords, for example, setting a package-specific
remote-repo location, which comes in handy when developing proprietary
packages that should be uploaded only to an internal Hackage.
] {
hunk ./Distribution/Client/Config.hs 62
import Distribution.Simple.Program
( defaultProgramConfiguration )
import Distribution.Simple.Utils
- ( notice, warn, lowercase )
+ ( notice, warn, die, lowercase )
import Distribution.Compiler
( CompilerFlavor(..), defaultCompilerFlavor )
import Distribution.Verbosity
hunk ./Distribution/Client/Config.hs 75
import Data.Monoid
( Monoid(..) )
import Control.Monad
- ( when, foldM, liftM )
+ ( when, foldM, liftM, filterM )
import qualified Data.Map as Map
import qualified Distribution.Compat.ReadP as Parse
( option )
hunk ./Distribution/Client/Config.hs 84
import Text.PrettyPrint.HughesPJ
( (<>), (<+>), ($$), ($+$) )
import System.Directory
- ( createDirectoryIfMissing, getAppUserDataDirectory )
+ ( createDirectoryIfMissing, getAppUserDataDirectory,
+ getCurrentDirectory, getDirectoryContents, doesFileExist )
import Network.URI
( URI(..), URIAuth(..) )
import System.FilePath
hunk ./Distribution/Client/Config.hs 89
- ( (</>), takeDirectory )
+ ( (</>), takeDirectory, takeExtension )
import System.Environment
( getEnvironment )
import System.IO.Error
hunk ./Distribution/Client/Config.hs 247
-- * Config file reading
--
+-- | Load user config and extend with package config (from
+-- @\*.cabal-install@ in current directory) if it exists. Package
+-- config flags shadow corresponding user config flags.
loadConfig :: Verbosity -> Flag FilePath -> Flag Bool -> IO SavedConfig
hunk ./Distribution/Client/Config.hs 251
-loadConfig verbosity configFileFlag userInstallFlag = addBaseConf $ do
+loadConfig verbosity configFileFlag userInstallFlag = do
+ base <- baseSavedConfig
+ user <- userSavedConfig verbosity configFileFlag
+ package <- packageSavedConfig verbosity
+ let config = base `mappend` user `mappend` package
+ return (updateInstallDirs userInstallFlag config)
+
+userSavedConfig :: Verbosity -> Flag FilePath -> IO SavedConfig
+userSavedConfig verbosity configFileFlag = do
let sources = [
("commandline option", return . flagToMaybe $ configFileFlag),
("env var CABAL_CONFIG", lookup "CABAL_CONFIG" `liftM` getEnvironment),
hunk ./Distribution/Client/Config.hs 292
warn verbosity $ "Using default configuration."
initialSavedConfig
- where
- addBaseConf body = do
- base <- baseSavedConfig
- extra <- body
- return (updateInstallDirs userInstallFlag (base `mappend` extra))
+-- | Load the package config file (@\*.cabal-install@) if it
+-- exists. Fails if more than one install file is found or if parsing
+-- fails.
+--
+-- The package config might be used to specify a Hackage repo specific
+-- to the package (an internal company Hackage for example).
+packageSavedConfig :: Verbosity -> IO SavedConfig
+packageSavedConfig verbosity = do
+ dir <- getCurrentDirectory
+ files <- getDirectoryContents dir
+ installFiles <- filterM doesFileExist -- Avoid directories
+ [ dir </> file | file <- files,
+ takeExtension file == ".cabal-install" ]
+ case installFiles of
+ [] -> return mempty
+ [configFile] -> do
+ minp <- readConfigFile mempty configFile
+ case minp of
+ Nothing -> return mempty -- Config file optional
+ Just (ParseOk ws conf) -> do
+ notice verbosity $ "Loading package specific install config..."
+ when (not $ null ws) $ warn verbosity $
+ unlines (map (showPWarning configFile) ws)
+ return conf
+ Just (ParseFailed err) -> do
+ notice verbosity $ "Loading package specific install config..."
+ let (line, msg) = locatedErrorMsg err
+ -- We fail on parsing so that the remote repo setting
+ -- isn't defaulted back to the public Hackage if there
+ -- is a problem somewhere else in the config file.
+ die $ "Error parsing package specific config file " ++ configFile
+ ++ maybe "" (\n -> ":" ++ show n) line ++ ":\n" ++ msg
+ ++ "\nA package install config is optional, but must be valid if
given."
+ multiple -> die $ "Multiple install config files found.\n"
+ ++ "Please use only one of: " ++ show multiple
readConfigFile :: SavedConfig -> FilePath -> IO (Maybe (ParseResult
SavedConfig))
readConfigFile initial file = handleNotExists $
}
Context:
[cabal init: various UI tweaks and changes to the generated .cabal files
Duncan Coutts <dun...@community.haskell.org>**20110521225203
Ignore-this: abb13eb3a311b8c9e7d835fd06a7d5b
- Add a default "(none)" option for license and category. There are now no
questions with no default except for the lib/exe question. For throwaway
packages user can just keep hitting enter and get something sensible.
- Prune the list of suggested licenses (remove unversioned GPL, LGPL)
- Don't include extra-source-files or build-tools when they would be empty
- Improve the wording of the generated documentation for lib/exe fields
]
[Adjust the initial comment in cabal files generated by cabal init
Duncan Coutts <dun...@community.haskell.org>**20110517003127
Ignore-this: 6ef8f04c69c86e83117a2afb1170d05b
Use slightly longer lines and a somewhat more terse comment.
Also use a new shorter and hopefully stable URL for the user guide.
]
[Adjust the cabal init interactive prompt string
Duncan Coutts <dun...@community.haskell.org>**20110517002302
Ignore-this: e1a9b199098c9de08d2c6414b7338cfc
]
[Add a cabal init question about whether to generate comments
Duncan Coutts <dun...@community.haskell.org>**20110517002050
Ignore-this: 988d117f12625a27bbcda23fbae12716
Users will typically only want this the first time they use cabal init.
]
[Generate lower case field names in cabal init
Duncan Coutts <dun...@community.haskell.org>**20110516083429
Ignore-this: fea0d0072c491e3afad87506eef73fd2
]
[Fix formatting of cabal init BSD copyright declaration
Duncan Coutts <dun...@community.haskell.org>**20110515163822
Ignore-this: 3653f7ab4ea857a52da5f1fc3be71f9e
]
[Correct spelling surpress -> suppress
Ben Millwood <hask...@benmachine.co.uk>**20110430111730
Ignore-this: 350ebba8896534fca324804e806da9b9
]
[Fix bug where contraints where lost for case insensitive package matches
Duncan Coutts <dun...@community.haskell.org>**20110503144932
Ignore-this: dce08d788905ac7b960c2193b1c4bbee
E.g. cabal install cabal-1.8.0.6 would actually install the latest version
instead, because when 'cabal' got corrected to 'Cabal' the associated
constraint 'cabal == 1.8.0.6' was not converted to 'Cabal == 1.8.0.6'.
]
[Distinguish the various impossible errors in the solver
Duncan Coutts <dun...@haskell.org>**20110418211436
Ignore-this: b372bdb3247a66b183fac446aaaab075
Will make tracking down problems easier in future.
]
[Fix a case in the new solver pruning pass
Duncan Coutts <dun...@haskell.org>**20110418211211
Ignore-this: a31ab5fff4c1a859c79d8492a670248c
It is actually possible for pruning to eliminate required packages
because it's possible for it to propagate all the way up to one of
the initial targets.
]
[Install phase pulls in test suite dependencies when necessary.
Thomas Tuegel <ttue...@gmail.com>**20110418110529
Ignore-this: a3eaa460b229870cf3e2f276ae6df7c6
]
[Add command line support for installed, source and flag constraints
Duncan Coutts <dun...@community.haskell.org>**20110414205240
Ignore-this: 295c5f5c6bbb17a7fa659dc7ae9ea926
e.g. --constraint='foo source'
--constraint='baz installed'
--constraint='bar +this -that'
]
[Change the use of the InstalledConstraint type and enhance solver logging
Duncan Coutts <dun...@community.haskell.org>**20110414204729
Ignore-this: 3cd4778d2ba325d3dfb36d59c5c0b5aa
Now log when things get excluded due to installed and source constraints.
]
[Add support for source constraints to the solver
Duncan Coutts <dun...@community.haskell.org>**20110329095710
Ignore-this: 60539431d54b0bc7728ad23b3b6a319f
]
[Rename the constructors of PackageConstraint to be more consistent
Duncan Coutts <dun...@community.haskell.org>**20110327235254
Ignore-this: 44ff168d45470e89c25715ba2e351442
]
[Remove a module dependency to avoid cyclic imports
Duncan Coutts <dun...@community.haskell.org>**20110327223743
Ignore-this: 38bddb846c18eb7f05784502d80abfb6
]
[Tweak to conflict constraint error message
Duncan Coutts <dun...@community.haskell.org>**20110327180252
Ignore-this: 468ee6ce4c5ad38433ef946a18733581
]
[Log package exclusions due to top level constraints
Duncan Coutts <dun...@community.haskell.org>**20110327180206
Ignore-this: 71e46d530b0e7152ba0570683ecbc0f3
]
[Prune impossible packages as a solver pre-pass
Duncan Coutts <dun...@community.haskell.org>**20110327175733
Ignore-this: 2c0d3219071b7c280168094167aa678d
There are many packages that can never be successfully configured
and by pruning them early we reduce the number of choices for the
solver later (which is good since the solver does no backtracking
when it makes bad choices). This relies on two recent features:
1. we can now express constraints that exclude a particular source
package and 2. that we can exclude packages without needing to know
whether or not they will ever be needed.
]
[Distinguish installed constraint error messages
Duncan Coutts <dun...@community.haskell.org>**20110327164048
Ignore-this: 7fd6c173ef2af48f570dba450cc3cc95
]
[Eliminate TaggedDependency type from solver code
Duncan Coutts <dun...@community.haskell.org>**20110327153749
Ignore-this: 635e7f5430cced67b41becd19c4beb80
]
[Update the solver to use the new target tracking
Duncan Coutts <dun...@community.haskell.org>**20110327145756
Ignore-this: febeb903d7b4714b48d460d6a435eb01
The constraint set ADT now needs to be told which targets we are
interested in, rather than assuming anything we constrain might
be a target.
]
[Generalise the constraint set ADT in a couple ways
Duncan Coutts <dun...@community.haskell.org>**20110326171658
Ignore-this: 7e016edea6a34c441e7568c72b1968c6
We now track target packages and only require constraints on those
targets to be satisfiable. This allows us to overconstrain packages
that we do not care about, which is useful for excluding broken
packages.
We also now have a more general way of specifying constraints.
Previously constraints were specified as the conjunction of a version
range predicate and an optional installed constraint. This form made
it impossible to express constraints such as "exclude this source
package". Constraints for a package name are now specified simply by
a function predicate on the package version and installed/source state.
]
[Eliminate local definition of utility
Duncan Coutts <dun...@community.haskell.org>**20110327134232
Ignore-this: e034a11f6670d8f8ef9d4b5d2123ed
]
[Cosmetic: use PackageId rather than PackageIdentifier
Duncan Coutts <dun...@community.haskell.org>**20110327133212
Ignore-this: 25c32fd18e264281e1ccacbf9bde3e78
]
[Change the terminology used in source code for available/source packages
Duncan Coutts <dun...@community.haskell.org>**20110304221605
Ignore-this: b66b73eb59498216d8b89cfa6ad696d4
Rather than 'available' packages, the source now refers consistently to
'source' packages. This is a bit clearer.
]
[TAG 0.10.0
Duncan Coutts <dun...@haskell.org>**20110308192323
Ignore-this: 8711506cb11ca7df1d1e42692380ed88
]
[Fix username prompting for cabal upload
Duncan Coutts <dun...@community.haskell.org>**20110315224721
Ignore-this: df520d38a20f56da60fd8dfe921c3fbf
Fixes ticket #810
]
[Unbreak the world target
Duncan Coutts <dun...@community.haskell.org>**20110304233956
Ignore-this: 63eff29f8d0896610aabc5a13ce705bd
I'd accidentally left out the world target from the parsing phase
of the new user target handling system, so cabal install world did
not work. Now added to the target parser.
]
[Fix silly bug in cabal configure. Ticket #805.
Duncan Coutts <dun...@community.haskell.org>**20110304221307
Ignore-this: 6bec52c20c33624c28844849cfa2fa78
I made a mistake during the recent refactoring work and was using
the dependency planner in the wrong way. The planner was being
given the available source packages and duely picking them to
satisfy dependencies, but for configure we're supposed to assume
that all dependencies are installed already.
]
[In bootstrap script, do Cabal before other deps
Duncan Coutts <dun...@community.haskell.org>**20110227175535
Ignore-this: a25054ccde26ece8e5bfc83272909593
So that the others can use the new Cabal for their Setup.hs
]
[Add source-repository this entry
Duncan Coutts <dun...@community.haskell.org>**20110227145302
Ignore-this: 7bf8b3f2af6fc3067ced983a6e8b9532
]
[Bump version to 0.10.0
Duncan Coutts <dun...@community.haskell.org>**20110227145245
Ignore-this: 850619fd840cd2c47c2f3401e5a55abe
]
[Require Cabal >= 1.10.1
Duncan Coutts <dun...@community.haskell.org>**20110227175455
Ignore-this: 4ecf4f3ac872b8ac8b948ffe5dba454a
It contains an important bug fix for some platforms, notably OSX
]
[Update dependencies in bootstrap script
Duncan Coutts <dun...@community.haskell.org>**20110227165812
Ignore-this: b0c2a17fc8aebf04a7c919fe42773a5a
Works with ghc-6.12 and ghc-7.0
]
[Minor tweaks to bootstrap script
Duncan Coutts <dun...@community.haskell.org>**20110227165713
Ignore-this: abdecb3d0918a22e7f39d316a6b2c15d
When using curl, fail better on HTTP errors.
Also remove some dead code.
]
[Only look at global packages when doing ./bootstrap.sh --global
Duncan Coutts <dun...@community.haskell.org>**20110227152637
Ignore-this: 70346000a983f60efefd541d9392931a
Should fix ticket #796
]
[Add support for BSD fetch to bootstrap script
Duncan Coutts <dun...@community.haskell.org>**20110227152423
Ignore-this: 8406ef2b924cc72198773b2e29ef2b06
On FreeBSD fetch is installed by default, unlike wget or curl.
]
[Add missing module to other-modules
Duncan Coutts <dun...@community.haskell.org>**20110227175240
Ignore-this: fded3fdccc046a018c0620cea9e83def
]
[Update versions in README
Duncan Coutts <dun...@community.haskell.org>**20110227170553
Ignore-this: 7abda197c6006b1c3c1f43b4af87ada8
]
[Update changelog for 0.10.0 release
Duncan Coutts <dun...@community.haskell.org>**20110227151628
Ignore-this: 64083adec0b77ee86a3afade031a2889
]
[Update copyright date
Duncan Coutts <dun...@community.haskell.org>**20110227145222
Ignore-this: 66d0a4390f9027293a3998c69fe4a8d4
]
[Partial fix for handling multiple installed instances of same package version
Duncan Coutts <dun...@haskell.org>**20110227125008
Ignore-this: de73667cc9b4165c1df797a23307acd6
Previously when multiple instances of the same package are installed,
e.g. in global and user dbs, we would often end up selecting the wrong
instance. Now we select the user one consistently which will solve the
problem in most (but not all) cases.
]
[Bump version to 0.9.6
Duncan Coutts <dun...@community.haskell.org>**20110214024354
Ignore-this: dfbecb3839c895fac3b31f3bca190085
]
[Adjust the amount of output for the -v verbosity level in a few places
Duncan Coutts <dun...@community.haskell.org>**20110213234115
Ignore-this: ac14de4aeb99fcec70650040179b75af
For several commands, including install the -v verbosity level had
far too much useless internall stuff in it. Reduced the amount of
output from configuring the compiler, getting installed package and
the dependency planner. The extra detail is still available via -v3.
]
[Remove UnresolvedDependency type
Duncan Coutts <dun...@community.haskell.org>**20110213230016
Ignore-this: 3823588c1222187f1c9cbb17299cb75c
]
[Remove code related to the dep resolver that is now redundant
Duncan Coutts <dun...@community.haskell.org>**20110213230002
Ignore-this: 782ca2a1078fa8249f8f056a1a23c634
]
[Remove now-unused utilities from World module
Duncan Coutts <dun...@community.haskell.org>**20110213225041
Ignore-this: ad1a368f71538602e5bbe2716a466d35
No longer needed now that the world target is handled via UserTarget.
]
[Use the new modular dep resolver interface in the various commands
Duncan Coutts <dun...@community.haskell.org>**20110213224955
Ignore-this: 5fc85032554b125ae2a715273e7b9de3
Also minor tweak to InstallPlan.remove
]
[Insert a separate fetch stage to the install process
Duncan Coutts <dun...@community.haskell.org>**20110213200824
Ignore-this: 647cc9a52d61b5b03771e79ef2dc84e6
Helps to clarify things now that different kinds of packages
are fetched in different ways.
]
[Tweak implementation of fetchRepoTarball
Duncan Coutts <dun...@community.haskell.org>**20110213200109
Ignore-this: d1bb9fa0414f2bc70aa72086968b60e1
]
[New interface to the dep resolver that allows modular policy construction
Duncan Coutts <dun...@community.haskell.org>**20110213195009
Ignore-this: cf218b8e70792cd0f4506c016787784f
Allows shorter and clearer code for the various ways the resolver is used.
]
[Partial rewrite of cabal list and info commands
Duncan Coutts <dun...@community.haskell.org>**20110213194627
Ignore-this: cd924d6acb75052a04ea6e4459bd4ddd
The new user target system requires a change in how cabal info works.
Instead of just giving package names and looking them up in the
available package index, we can now specify names with versions or
version constraints which means we want the info to be about that
version in particular. We now list many installed and available
versions and mark which ones are preferred or not. Also fix a bug
for packages that are only installed, not available.
]
[Add a new module for handling user targets
Duncan Coutts <dun...@community.haskell.org>**20110213194150
Ignore-this: 3a4b4ccd9d52d882a3a079d715a68c
This will allow us to increase the range of targets that cabal
commands can support. The new ones are local directory targets,
local cabal files, local tarballs and remote tarballs by URL.
Also a better way of doing the special "world" target.
]
[Add a fetchPackage utility
Duncan Coutts <dun...@community.haskell.org>**20110213194034
Ignore-this: 821d447afde378889305e1205ad3ad23
Works for any package identified by PackageLocation
rather than just for repo packages.
]
[Add a few more Tar Entries utilities
Duncan Coutts <dun...@community.haskell.org>**20110213193911
Ignore-this: 9930ec082016efa9c3bed77d5eddbb17
]
[Add a local path and type param to PackageLocation
Duncan Coutts <dun...@community.haskell.org>**20110213193218
Ignore-this: 91781b96f082d3311734659ddf802638
So we can now use PackageLocation FilePath or Maybe FilePath to
describe what we know about the fetch status of package tarballs.
]
[Separate WorldPkgInfo type from UnresolvedDependency type
Duncan Coutts <dun...@community.haskell.org>**20110213185006
Ignore-this: 975965c1238b1f58a53303cb046c42bd
Currently just a renamed copy of UnresolvedDependency but called
WorldPkgInfo and defined in the World module. This is in preparation
to remove all other uses of the UnresolvedDependency type.
]
[Rename AvailablePackageSource to PackageLocation
Duncan Coutts <dun...@community.haskell.org>**20110213183529
Ignore-this: 40ee6b79bf284593491ae65228489d44
And remove import list for Types module, just import it all
]
[Split out a FetchUtils module
Duncan Coutts <dun...@community.haskell.org>**20110213183446
Ignore-this: 19241ca08b50fe9547d780b6b2030955
And rename fetchPackage function to the more accurate fetchRepoTarball
]
[Remove unnecessary Maybe from LocalUnpackedPackage dir filepath
Duncan Coutts <dun...@community.haskell.org>**20110213165151
Ignore-this: 44594d24516ba1286542b499fe5c804c
We can just use "." instead of Nothing
]
[Change the interface of the two package index search functions
Duncan Coutts <dun...@community.haskell.org>**20110123193706
Ignore-this: 1bb6d4d282bdcb029abb30409553e69b
Move the ambiguity checking to the only use site
Both normal and substring search now return [(PackageName, [pkg])]
]
[cabal report uses the correct URIs and authenticates with username and
passwords flags
Vo Minh Thu <not...@gmail.com>**20101108184927
Ignore-this: 9e07434d1547aaeb022743a88cfa092c
]
[Change position of --only-dependencies in --help listing
Duncan Coutts <dun...@community.haskell.org>**20110213171956
Ignore-this: 83fdf75d5d8977bb98d823d656a71335
Move it next to the --upgrade-dependencies flag
]
[Add an --only-dependencies flag to "install" (see ticket #697)
josh.h...@galois.com**20100630213736
Ignore-this: 3c769bcd7a85ee34d1b4787807b75bfc
This flag installs only the dependencies of the packages that were
explicitly mentioned on the command line. This is useful for using
cabal-install in development environments, where the developer needs
the dependencies to build the package in development, but does not yet
want to install the package itself.
]
[Change my email address
Duncan Coutts <dun...@community.haskell.org>**20110123202100
Ignore-this: 924e6bbc7f659a03f6c84d4c32487bf6
]
[fix a comment typo of 'according'
Jens Petersen <peter...@haskell.org>**20110122135339
Ignore-this: b7960675f98710b7b5caa046d136ac4d
]
[Preserve executable permissions on unpack
Duncan Coutts <dun...@community.haskell.org>**20110117144900
Ignore-this: 5964f7b96672dd84f646bfa80dc51612
]
[Fix time version regexp in bootstrap script
Duncan Coutts <dun...@haskell.org>**20101123174641
Ignore-this: 685b17e087526c99faee430447c4af5e
Sigh, having to use shell script and regexps...
]
[Bump upper bounds on core packages for ghc-7
Duncan Coutts <dun...@haskell.org>**20101123174328
Ignore-this: e098c14caa914e3865767d7ba124e8c
]
[Increase default HTTP package version in bootstrap script
Duncan Coutts <dun...@haskell.org>**20101123173124
Ignore-this: 73209e2ee376d55d30b453adef08d7b2
]
[Update dependencies in the boostrap.sh script
Duncan Coutts <dun...@haskell.org>**20101123172516
Ignore-this: 29b09c71664a289e0c021df552227d6
]
[Bump time package dependency for ghc-7
Duncan Coutts <dun...@haskell.org>**20101123170957
Ignore-this: a397e0ee880ee403dc553ee9ae6b6994
]
[Add an extra note about the http proxy decompression issue
Duncan Coutts <dun...@haskell.org>**20101027095034
Ignore-this: d5ac6be96ae78a92f93cf56a9e7b3ccb
]
[Use "maybeDecompress" to handle broken proxies that transparenty decompress
network streams. Closes #622, #686. Cabal update could fail in some cases, see
http://trac.haskell.org/http/ticket/109283
Dmitry Astapov <dasta...@gmail.com>**20101026212606
Ignore-this: 3686236834c6cb56b3a754c36a8d7305
]
[Added GZipUtils to handle .tar files with the same code as .tar.gz
Dmitry Astapov <dasta...@gmail.com>**20101026202343
Ignore-this: bef7a20f60de2298fc60759f1ca298d9
]
[Update to use Cabal-1.10.x
Duncan Coutts <dun...@haskell.org>**20101016192816
Ignore-this: 86d2b4bd91fe1c33e095b06438f6f972
]
[Add a TODO about fetch --constraint flags
Duncan Coutts <dun...@haskell.org>**20100901210351
Ignore-this: 973318ae9ebc87c095935493c446a39d
]
[Simplify the bash command completion
Duncan Coutts <dun...@haskell.org>**20101010204158
Ignore-this: 6398703acc0702c18141da4ce09d20db
Fixes #741. Patch contributed by Jan Braun <janbr...@gmx.net>
]
[Do not add lower case .hs files as modules in cabal init
Duncan Coutts <dun...@haskell.org>**20100614213536
Ignore-this: 622461952f03fd6f80f0037b7336a676
There's still something wrong with the recursive dir traversal.
It fails in some large cases.
]
[Disable cabal upgrade and add cabal install --upgrade-dependencies
Duncan Coutts <dun...@haskell.org>**20100531130306
Ignore-this: 6469bf32fad573bf3a5c2340bd384ef6
cabal upgrade now gives an error message telling people to use install
or, if they know what they're doing, install --upgrade-dependencies
]
[Bump version to 0.9.2
Duncan Coutts <dun...@haskell.org>**20100531121422
Ignore-this: 219c5a2d27e6aaa9639ec88265f3a40f
]
[Minor tweaks in haddock code
Duncan Coutts <dun...@haskell.org>**20100528200326
Ignore-this: 170fda28b6b709efc6c5efd171317e83
]
[Use new simplistic package resolver for cabal unpack
Duncan Coutts <dun...@haskell.org>**20100528011523
Ignore-this: 85496633aa154e3601633ea9c6f43038
]
[Add cabal fetch --no-deps and --dry-run flags
Duncan Coutts <dun...@haskell.org>**20100528003508
Ignore-this: adfaf937df9f81bdc489c8163651d588
Allows fetching one or more packages but without fetching their
dependencies and thus not requiring that a consistent install plan
can be found. On the other hand --no-deps means that there is no
guarantee that the fetched packages can actually be installed.
]
[Use the simplistic available package resolver in cabal fetch
Duncan Coutts <dun...@haskell.org>**20100518125509
Ignore-this: 5a1caa0e64772c61dfd71b3567c6b218
Not yet connected up to the user interface.
]
[Add a simplistic resolver for available packages that ignores dependencies
Duncan Coutts <dun...@haskell.org>**20100518125357
Ignore-this: a31605572aa4485898422a9d29aa6630
Suitable for cabal fetch/unpack but not for installation.
]
[Rearrange dependency resolver code slightly
Duncan Coutts <dun...@haskell.org>**20100517111624
Ignore-this: ed0d580800ccee9b1065acb559727f3f
]
[In fetch code, move dep resolution into separate function
Duncan Coutts <dun...@haskell.org>**20100517111336
Ignore-this: 860dfe33f51c1840afb61987e68b27d2
]
[Add initial internal support for more kinds of available package
Duncan Coutts <dun...@haskell.org>**20100511030941
Ignore-this: 74c25c42c83819c38608aed18c5ab214
Previously only named packages from a remote package archive, or
the unpacked package in the current directory. Now also add unpacked
packages in particular directories, local tarballs and remote tarballs.
No support in the user interface or dep planning yet.
]
[Use non-Char8 ByteString.readFile for reading 00-index.tar.gz
Duncan Coutts <dun...@haskell.org>**20100117113849
Ignore-this: b19b19959b7915c202c31337ce2084bc
Was showing up on windows as an error decompressing after cabal update.
Thanks to Tamar Christina for reporting and helping track down the bug.
]
[Remove redundant dry-run support from world file code
Duncan Coutts <dun...@haskell.org>**20100510054824
Ignore-this: fbb943e80a9a54673cbdb1805218bd80
]
[Bump version to 0.9.1
Duncan Coutts <dun...@haskell.org>**20100510034013
Ignore-this: 200668c3328194ea707ae61d0d64aa3c
New world file feature
]
[Workaround for 'cabal install world' problem with empty world file
Duncan Coutts <dun...@haskell.org>**20100510033051
Ignore-this: e5bd44421b734dc3246d43d3ed8c17d1
The current dep resolver does not like an empty set of targets
along with a non-empty set of constraints.
]
[Update a coupld copyright and maintainer notes
Duncan Coutts <dun...@haskell.org>**20100510032848
Ignore-this: bdcc380fc8d631e7ff0f2275bd03b81e
]
[A bunch of TODOs for the Install module
Duncan Coutts <dun...@haskell.org>**20100510032756
Ignore-this: 41711e805de2e5052a8b647722215857
]
[Misc minor tweaks in Main
Duncan Coutts <dun...@haskell.org>**20100510032736
Ignore-this: 83ec8d4121c0db0327d14e6058feaf6e
]
[Update world file entries ignoring version constraints
Duncan Coutts <dun...@haskell.org>**20100510032457
Ignore-this: aa8134bb28d56a32906223a60838f8af
Otherwise it is easy to add impossible constraints to the world file.
cabal install 'foo > 1' && cabal install 'foo < 1'
Would give us a world file with both constraints.
]
[Rearrange the code for the world file feature
Duncan Coutts <dun...@haskell.org>**20100510032121
Ignore-this: 8ce13765f2ef77bf562a2e1e38c777b
Better better organisation of concerns for it to be in the Install
module rather than in Main which is mostly concerned with command
line handling.
]
[Add plumbing in install code for global flags and target list
Duncan Coutts <dun...@haskell.org>**20100510031328
Ignore-this: 7a559f8b13f43f724f5796c3f7c2bea3
]
[Make the logs dir a proper config item and pass it to the install code
Duncan Coutts <dun...@haskell.org>**20100427011318
Ignore-this: 294ef784ebe8ee374035d182b10a6f5
]
[Rearrange installation code to make it a bit clearer
Duncan Coutts <dun...@haskell.org>**20100426005110
Ignore-this: 70f9f1fdaf805eabc75d2cebe70153ed
]
[Updated patch for world-file support
Peter Robinson <thaldy...@gmail.com>**20091103202927
Ignore-this: 9333ae1f97d44246802504f779efc279
Update 2: now uses writeFileAtomic from Cabal
This is a new patch for Ticket #199; it adds the "--one-shot" option.
A world file entry contains the package-name, package-version, and
user flags (if any).
For example, the file entry generated by
# cabal install stm-io-hooks --flags="-debug"
looks like this:
# stm-io-hooks -any --flags="-debug"
To rebuild/upgrade the packages in world (e.g. when updating the compiler)
use
cabal install world
Installing package 'foo' without adding it to the world file:
# cabal install foo --one-shot
]
[Import installDirsOptions from Cabal lib
Duncan Coutts <dun...@haskell.org>**20100401165125]
[Cope with intra-package deps when constructing install plans
Duncan Coutts <dun...@haskell.org>**20100320215331
Ignore-this: 17d34d739024686d2f3a75a01e1e1c48
]
[Don't generate #! lines in Setup.hs files in cabal init
Duncan Coutts <dun...@haskell.org>**20100114033501
We don't want to encourage multiple ways of invoking Setup
The one true (cross-platform) way is: runghc Setup
]
[Fix the display of the license in "cabal list" output
Duncan Coutts <dun...@haskell.org>**20100113191913]
[Adjust to the change in the type of getInstalledPackages
Duncan Coutts <dun...@haskell.org>**20091229212020
It used to return Maybe, now it always gives us a PackageIndex.
This depends on an API change in Cabal-1.9.x.
]
[Display the exception for failed downloads
Duncan Coutts <dun...@haskell.org>**20091222132526
Not great but better than nothing.
]
[Remove now-unused compat module
Duncan Coutts <dun...@haskell.org>**20091222130959]
[Change the default config on Windows to per-user installs
Duncan Coutts <dun...@haskell.org>**20091228165411
Ignore-this: afccc874f09efd2b8298ee01163c0462
Slightly experimental. We should look out for unexpected consequences.
]
[Move downloadURI to HttpUtils module
Duncan Coutts <dun...@haskell.org>**20091222095152
Ignore-this: 6a80342e38c618ed5fe541fc7dfbec08
And use exceptions rather than return codes.
]
[Fix a couple more ghc-6.12 -Wall warnings
Duncan Coutts <dun...@haskell.org>**20091222075821
Ignore-this: 429818d8b6fc528a155162e0eb67913d
]
[Fix cabal sdist --snapshot
Duncan Coutts <dun...@haskell.org>**20091222080537
Ignore-this: a1f090e1bae653645cf5d55055deab3d
]
[Distribution/Client/InstallSymlink.hs: explicitely import 'catch' and friend
tom System.IO
Sergei Trofimovich <sly...@community.haskell.org>**20091220220105
Ignore-this: d7a4b304976bc8ce42dfae963d58694c
]
[Distribution/Client/Install.hs: removed unused 'compilerTemplateEnv' from
import
Sergei Trofimovich <sly...@community.haskell.org>**20091220215508
Ignore-this: e850510c11ec648f6fcec6d85ce23a82
]
[Distribution/Client/Unpack.hs: removed redundant import
Sergei Trofimovich <sly...@community.haskell.org>**20091220214545
Ignore-this: c1120ee8014c4c1bd3177857798e563d
]
[Distribution/Client/Setup.hs: suppress warning (unused variable)
Sergei Trofimovich <sly...@community.haskell.org>**20091220214448
Ignore-this: 382010da79af4baf200a406d478cc5ec
]
[Distribution/Client/Haddock.hs: removed redundant instances
Sergei Trofimovich <sly...@community.haskell.org>**20091220213757
Ignore-this: efffb1cd16256496f70314cce6001c6f
]
[Distribution/Client/BuildReports/Anonymous.hs: removed unused import of
BuildResult
Sergei Trofimovich <sly...@community.haskell.org>**20091220213350
Ignore-this: 50c449c43df34ceb1b13c61788bb0758
]
[Distribution/Client/IndexUtils.hs: fixed warning on -Wall (unused result)
Sergei Trofimovich <sly...@community.haskell.org>**20091220211940
Ignore-this: a74aded9f99237229dbfe762fcf20478
]
[Distribution/Client/SrcDist.hs: fixed warning on -Wall (unused result)
Sergei Trofimovich <sly...@community.haskell.org>**20091220211717
Ignore-this: d7d4fade7b5e5464d114995efdabb216
]
[Fix fromFlag error in upgrade
Duncan Coutts <dun...@haskell.org>**20091221140752
Ignore-this: 82eee01373bf121c1c00a7c5d27bac0f
Use the missing defaultInstallFlags.
]
[Reorder commands in cabal --help output
Duncan Coutts <dun...@haskell.org>**20091219034451]
[Use the standard form of copyright statement in BSD3 license template
Duncan Coutts <dun...@haskell.org>**20091219031017
See http://www.opensource.org/licenses/bsd-license.php
]
[Remove stability feature from cabal init
Duncan Coutts <dun...@haskell.org>**20091219030855
The stability field in .cabal files is deprecated since it's mostly useless.
]
[Make the cabal init command line flag names follow the normal convention
Duncan Coutts <dun...@haskell.org>**20091219030747
Using hyphens rather than upper case.
]
[Fix reporting of installed program versions in cabal list
Duncan Coutts <dun...@haskell.org>**20091218232501
We do not know if programs are installed or not so report
unknown rather than saying it is not installed.
]
[Update the README
Duncan Coutts <dun...@haskell.org>**20091218173459
Ignore-this: adde7b8406a92837f295ed3d57037827
]
[Bump head to new dev version 0.9.x
Duncan Coutts <dun...@haskell.org>**20091218172245
Ignore-this: 378cbb031583940fb4e301d0e640c396
]
[Update various .cabal bits
Duncan Coutts <dun...@haskell.org>**20091218171642
Ignore-this: a54518592cf53158e6a01ff7ad8753ef
]
[Update the bootstrap script to work with ghc-6.12
Duncan Coutts <dun...@haskell.org>**20091218165234
Ignore-this: b4aca31e814592f1cd6d53cf5a461859
We can no longer expect mtl, network and parsec to be installed.
]
[Update the changelog for 0.8
Duncan Coutts <dun...@haskell.org>**20091218165221
Ignore-this: 35f1f722b56c7eec84574e9d4be0d0f3
]
[Fix combination of --global --package-db when compiling Setup.hs scripts
Duncan Coutts <dun...@haskell.org>**20091218165119
Ignore-this: 6a78eaf39c21dfc692458f1046d852ce
The order of the package db stack is important.
]
[Allow numeric fields in tar headers that use binary format
Duncan Coutts <dun...@haskell.org>**20091123063734
This is an old non-standard extension that some tar tools still use.
]
[Create all parent directories of extraced files
Duncan Coutts <dun...@haskell.org>**20091122080446
Previously only created the immediate parent directory.
No rely more heavily on the file security check to make
sure we are not writing files outside of the target area.
]
[Ignore PAX entries when checking for tarbombs
Duncan Coutts <dun...@haskell.org>**20091122080255
When checking for tarbombs, ignore PAX entry types 'g' and 'x'.
These do not get extracted so their names do not matter.
]
[fixed 'cabal sdist'
Sergei Trofimovich <sly...@community.haskell.org>**20091113165833
Ignore-this: a9061231f18a00fda66bd73e0d4bac86
]
[Build with ghc-6.6
Duncan Coutts <dun...@haskell.org>**20091110113735
Ignore-this: 939c6d822b78b7966ccc37a0739ecc81
]
[Fix base 4 exceptions in #ifdef WIN32 code section
Duncan Coutts <dun...@haskell.org>**20091110112415
Ignore-this: 53ad5959a1964ff8eccf93c17dd1e3d7
]
[Add a couple checks to "cabal unpack" and improve the messages
Duncan Coutts <dun...@haskell.org>**20091104142658
Ignore-this: 896cf992e5862393bb5e451a337545fa
]
[Fix bootstrap (#599)
Robin Green <gree...@greenrd.org>**20091102073414
Ignore-this: 67304fe1c399d679c0c7a7d0d01cff45
]
[Switch to using some Utils from the Cabal lib
Duncan Coutts <dun...@haskell.org>**20091102150528
Ignore-this: fe55da37cc85ce495a65949506ac3e42
Remove local copies. Also fixes a bug recently introduced
in the writeFileAtomic function, spotted by Peter Robinson.
]
[Parly fix building with ghc-6.6
Duncan Coutts <dun...@haskell.org>**20091028163849
Ignore-this: 75f4ae640c2c2d7d46cd4c00d835b618
The new cabal init stuff needs some work.
]
[Fix building with ghc-6.12
Duncan Coutts <dun...@haskell.org>**20091028163719
Ignore-this: eb25e32b7696174a4702394ea59e03bc
]
[Fix building with ghc-6.8
Duncan Coutts <dun...@haskell.org>**20091028163352
Ignore-this: 9dc502c70fd2e5940729656168030953
]
[Allow building with base 4
Duncan Coutts <dun...@haskell.org>**20091028163148
Ignore-this: 2ac8c966a4a014af94a21b7801331c19
]
[Bump version number a bit
Duncan Coutts <dun...@haskell.org>**20091028133527
Ignore-this: e2a10bab1da090c8aeedeb6dba74cb3
]
[Update list of modules (so sdist works)
Duncan Coutts <dun...@haskell.org>**20091028133513
Ignore-this: 91abc5688f598cf0a5ecf96855ccfe76
]
[Update new cabal init code for the recent package id changes
Duncan Coutts <dun...@haskell.org>**20091028132037
Ignore-this: 83f7b69c2a0727dba37dd7242a4f5791
]
[Initial go at converting to the new Cabal-1.8 installed package system
Duncan Coutts <dun...@haskell.org>**20091022123946
Ignore-this: 5e6665609e707de9dc73612b0efd25e9
It works by ignoring the possibility that there could be multiple
installed packages sharing the same source package Id. We just pick
the "top most" one which is usually ok. We make no attempt to check
that we are using consistent installed packages.
]
[Update for changes to finalizePackageDescription
Duncan Coutts <dun...@haskell.org>**20091018173233
Ignore-this: f60d2b66f9f0e223599ab15ac78d112c
]
[add 'init' subcommand for initializing project cabalisation
Brent Yorgey <byor...@cis.upenn.edu>**20091011165644
Ignore-this: df51056f9e138d38d64f48c86cdf6376
]
[Collecting some heuristics for creating an initial cabal file
benedikt.hu...@gmail.com**20090902160332
Ignore-this: 50eb36690a888529d209f9da5af15078
]
[Apply suggestion for bootstrap failure message
Duncan Coutts <dun...@haskell.org>**20091020212319
Ignore-this: 70ed13514b158db7672f5d16a9ed90ea
ghc ticket #3602
]
[Fix calculation of paths in check for bindir symlink overwriting
Duncan Coutts <dun...@haskell.org>**20090829004959
Ignore-this: d4dd8e12c03d23ce935de94cedbda257
We were doing it wrong, but Linux realpath() C function was letting
us get away with it. The Solaris realpath() is stricter.
The new implementation is also simpler, relying on the fact that
the canonicalizePath function will resolve symlinks.
]
[Require Cabal lib version 1.7.3
Duncan Coutts <dun...@haskell.org>**20090707095944
Needs recent api changes.
]
[Make the documentation toggle determine if we make the haddock index
Duncan Coutts <dun...@haskell.org>**20090707013030
Previously the --haddock-index=template flag controled both the
template used and whether it's used at all. When no path was set
then it was not used. The problem with that is that since we are
not enabling this feature by default then the default is blank.
That is the default config file would look like:
-- haddock-index:
which doesn't help anyone discover what it means or what a
sensible setting would be. By having a separate toggle to
enable/disable we can have a default for the index file which
makes it easy to discover in the config file:
-- documentation: False
-- doc-index-file: $datadir/doc/index.html
All the user has to do is uncomment the first line and use True.
]
[Be less noisy about warning about packages with missing docs
Duncan Coutts <dun...@haskell.org>**20090707005149]
[Use defaultInstallFlags as the defaults
Duncan Coutts <dun...@haskell.org>**20090707004836]
[Move regenerateHaddockIndex more out-of-line in the Install module
Duncan Coutts <dun...@haskell.org>**20090707003722
Also update the code somewhat following the changes in
the Cabal API for path templates and substitutions.
]
[Use $pkgroot/package/$pkgid.tar.gz as tarball URL
Duncan Coutts <dun...@haskell.org>**20090704170602]
[#516, maintains a per-user index of haddock docs
Andrea Vezzosi <sanzhi...@gmail.com>**20090607170512
Ignore-this: 1114f6b944043781c4bf99620573b1cc
If the haddock-index flag is set it keeps an index
of the haddock documentation of the packages in
the global and user databases
]
[Now supporting explicit --user or --global switches in bootstrap.sh with usage
feedback for bad args
Dino Morelli <d...@ui3.info>**20090613150958
Ignore-this: 490a4fcdd5bc1940d6f32d71b0a042a5
This change was adapted from work submitted to the cabal-devel mailing list by
Jason Dusek.
]
[add message to 'package not found' error advising to run 'cabal update'. (#497)
Brent Yorgey <byor...@cis.upenn.edu>**20090611171233]
[Fix sdist
Duncan Coutts <dun...@haskell.org>**20090605023441
Fix handling of base dir in tar file creation.
]
[Fix use of deprecated version constructors
Duncan Coutts <dun...@haskell.org>**20090604180500]
[Only report preferred new versions of cabal-install are available
Duncan Coutts <dun...@haskell.org>**20090604175726
That is, use the "preferred-versions" mechanism when deciding
whether there is a new version available. This would allow us to
upload a new version without everyone immediately being told to
get it and try it out.
]
[Make cabal upload/check print out the error messages reported by the server
Duncan Coutts <dun...@haskell.org>**20090604124836
The code to do it was already there but we were checking for the
mime type text/plain using just (==) when in fact the server reports
text/plain; charset="ISO-8859-1"
so we have to parse the field a bit better (still a bit of a hack).
]
[Require latest Cabal lib version
Duncan Coutts <dun...@haskell.org>**20090603102312]
[Improve formatting of cabal check output
Duncan Coutts <dun...@haskell.org>**20090603102254]
[Only apply preferences to base if its version is unbounded above
Duncan Coutts <dun...@haskell.org>**20090603101623
Fixes ticket #485. This means that for constraints like:
build-depends: base >= 3 && < 5
we will pick version 4. However we will continue to apply the
version 3 preference for things like:
build-depends: base >= 3
Where there is no upper bound on the version. Note that we now
also ignore preferences for base given on the command line.
We should implement #483 to split prefs from shims.
]
[Improve the parse error message for package name/deps
Duncan Coutts <dun...@haskell.org>**20090321154623
Make it clear that it's the specification of the package name that
is at fault rather than the package to which the name refers.
]
[Debian in their wisdom decided to build network against parsec 3.
Duncan Coutts <dun...@haskell.org>**20090308142925
So checking for parsec 2 fails. We don't strictly need parsec, it's
just a dependency of network, so remove the check.
]
[Simplify version ranges before printing in error messages
Duncan Coutts <dun...@haskell.org>**20090531191346
Part of ticket #369
]
[Use new top handler, should get better error messages
Duncan Coutts <dun...@haskell.org>**20090531190318]
[Fix uses of deprecated stuff
Duncan Coutts <dun...@haskell.org>**20090531190239]
[New development branch, version 0.7
Duncan Coutts <dun...@haskell.org>**20090531184336
Update to development version of Cabal
]
[Solaris 9 /bin/sh doesn't like the ! syntax in bootstrap.sh
Duncan Coutts <dun...@haskell.org>**20090318091730]
[Clarify the instructions in the README and bootstrap.sh
Duncan Coutts <dun...@haskell.org>**20090315125407
Addresses the complaint in ticket #523.
]
[Select Configuration file via env var CABAL_CONFIG.
Paolo Losi <paolo.l...@gmail.com>**20090223005251
Ignore-this: 26e5ded85cb69cb3a19cd57680a8a362
]
[Update tar code based on new tar package
Duncan Coutts <dun...@haskell.org>**20090301174949]
[Actually does compile with unix-1.0 that comes with ghc-6.6
Duncan Coutts <dun...@haskell.org>**20090221154605
ghc-6.6.1 came with unix-2.1
]
[TAG 0.6.2
Duncan Coutts <dun...@haskell.org>**20090219130720]
Patch bundle hash:
bae7f7aaea454d6c12d7bf407af4991e3a398c84
_______________________________________________
cabal-devel mailing list
cabal-devel@haskell.org
http://www.haskell.org/mailman/listinfo/cabal-devel