> On Fri, Jan 7, 2011 at 9:41 PM, <kahl at cas.mcmaster.ca> wrote:
>>>> My use case would be the following: I have a large library,
>> which I want to split into several cabal packages.
>> However, I would like to keep the whole library in a single
>> hierarchical module directory structure,
>> so when I decide to move some module from one package to another,
>> I only have to move a line from one .cabal file to another,
>> and not move any files.
I would make multiple directories, each with a Cabal file and then make a
symbolic link to the source directory from each of these Cabal
directories.
However moving a module from one package to another one is a relatively
large step, that breaks other packages and thus requires increasing the
major version. I find it appropriate to move files for such a change.
I also tried to manage several Cabal packages in one Darcs repository,
e.g. the set of data-accessor packages. But I do not like that anymore
since each sub-package has its own version and this does not work well
with Darcs tags and the Darcs patch comments.
On Fri, 7 Jan 2011, Antoine Latter wrote:
> Even if that worked in Cabal, you would run into other problems -
> taking a module out of a package description file doesn't stop GHC
> from using it during compilation if it can find it, but it does stop
> GHC from linking it. So you'd end up with lots of fun linker errors.
That's unfortunately true. However I have written a small script, that
'sdist's a package, unpack it in /tmp/ and try to build it with Cabal
there. I run this script before uploading to Hackage in order to check for
missing files. Since I use Darcs it can easily happen that Darcs
registration and Cabal registration of files are out of sync. If a file is
added to Darcs repository but not to Cabal description, then the Darcs
test, that builds the package will succeed because of GHC's --make
feature. Maybe I should put my script into a Cabal package? Or try to
integrate it into cabal-install?