Three questions about patch to cabal
Duncan Coutts
duncan.coutts at worc.ox.ac.uk
Fri Jul 21 11:08:20 EDT 2006
On Wed, 2006-07-19 at 11:30 -0700, Jeremy Shaw wrote:
> At Tue, 18 Jul 2006 02:07:01 +0100,
> Duncan Coutts wrote:
> >
> > What's wrong with the simple solution of you just building with
> > --enable-library-profiling and then splitting the ${pkg}_p.a and the
> > *.p_hi files into your profiling .deb? The names are totally regular so
> > it could be automated.
>
> A good question! I think my previous email made things sound more
> complicated than they really are because I covered three separate, but
> related, additions to the current Cabal code.
>
> Let's focus on just this part:
>
> 1) Should we add --enable/disable-library-vanilla flags
> 2) Should we require that specifying:
>
> --disable-library-vanilla --enable-library-profiling
>
> Results in just the additional files needed to support profiling
> being copied in the copy/install phase.
>
> I have already implemented both methods, aka:
>
> 1) modify dh_haskell to use the existing cabal behavior
> 2) modify both cabal and dh_haskell to implement the new behavior
>
> so I have a bit of real world data.
>
> I think the cabal+dh_haskell solution actually took less time, is
> easier to understand, is easier to extend, and is less error prone :)
Yes, your patch is fairly straightforward (and makes the code for
normal/prof/ghci in Cabal follow the same pattern which is nice.)
> Additionally, solving the problem in dh_haskell only solves it for
> Debian users. Packaging maintainers for other systems will have to
> come up with their own hacks, resulting in duplicate work.
True.
> If jhc or yhc add profiling, then I have to *hope* they also name
> things in a totally regular way so that it can be automated.
Good point.
> > The ghc devs are trying to keep the number of variants down so I don't
> > foresee n different versions (smp, bytecode etc).
>
> Right -- but the GHC devs are not the only consideration. YHC, for
> example, does generate bytecode.
Aye but for them --enable-library-vanilla would be bytecode, so it's not
an additional variant.
> > Do we need anything more complex?
>
> I think there are really three questions to ask:
>
> 1. Should we consider the current Cabal behavior to be broken?
>
> If I am not mistaken, one of the driving forces behind Cabal was
> to make it significantly easier for package maintainers to package
> libraries by providing a OS and compiler independent interface for
> building and installing libraries. If I have to start knowing the
> specifics of how various compilers name object files, then I think
> that might mean Cabal is falling short of its goals in some area.
>
> 2. Are there advantages to fixing it at the Cabal level instead of
> the package maintainer level?
>
> With the flags I proposed, I can write compiler agnostic code to
> divide the library variations into separate packages, such as
> -dev, -prof, etc. This makes life easier in the long run. If
> adding support for a new compiler is work -- it is much less
> likely to be supported.
>
> By putting the requirements in Cabal, it also serves to ensure
> that compilers will actually support the features that packagers
> need. Note that Cabal is supposed to help compiler writers by
> giving them guidelines they should adhere to. From the cabal
> homepage:
>
> "...and what Haskell implementations must do to support packages"
>
> Simon Marlow suggested that the features could also be useful for
> building GHC itself -- allowing them to use Cabal instead of a
> home-brew system.
>
> And finally, it means I get to write some of the code in Haskell
> instead of perl+bash ;)
>
> 3. Is there a less 'complex' solution?
>
> This is the big unknown question in my mind. I think that fixing
> the problem at the Cabal level is the right thing to do. The
> tricky part is knowing what solution will hold up for the long
> run.
>
> I think my proposal is good because:
>
> 1. it is easy to implement now (only a few lines of code)
> 2. it solves the problems we currently know about
> 3. if it turns out to be the wrong solution -- we will not be
> any worse off than we would be if we did nothing.
>
> Does this help?
Yes. I'll buy that. :-)
Duncan
(wearing his Cabal maintainer & Gentoo packager hats)
More information about the Libraries
mailing list