[darcs-users] enfranchising darcs! (update 1)
Eric Kow
kowey at darcs.net
Tue Oct 21 08:52:27 UTC 2008
I have now pulled David's franchise patches into the stable branch.
Franchise is now available as an *optional* build method (you can
still use the old autoconf-based approach).
Why are we doing this?
======================
The main reason for making this switch is that it makes building darcs a
lot easier on Windows. At least two users (under Windows) have reported
that indeed the new build system makes darcs easier to build on Windows.
Do I need to install franchise?
================================
Not yet! The autoconf-make based system will still be available for a
few weeks. But if you would like to test out the new build system,
please install franchise and give it a whirl. Buildbot updates shortly.
The following table sums up the transition that we will undergo over the
next few weeks. For now, we still use the autoconf/make system, but as
we become more confident that the franchise-based one does everything
the current build system does, without any regressions, we will
eventually drop both autoconf and make.
+--------------+----------------------------------+
| | now middle end |
+--------------+----------------------------------+
| C lib | autoconf franchise franchise |
| checking | |
+--------------+----------------------------------+
| Haskell lib | autoconf franchise franchise |
|checking | |
+--------------+----------------------------------+
| building | make make franchise |
+--------------+----------------------------------+
Note that our Setup.hs file and the franchise build system are evolving
together. So if you want to help test the franchise-based build system,
you will need to darcs get http://darcs.net/repos/franchise and probably
update your local copy from time to time.
Isn't there some kind of debate about this?
===========================================
Indeed, there are many people who would prefer that darcs used the Cabal
system instead of franchise. Most of us from both sides accept (if
grudgingly) that some mixture of franchise and Cabal is necessary; the
question is just to what extent we use either of the libraries.
The following table compares the current state of affairs with two
prototypical mixtures that we could aim for: the "David" mixture uses
franchise for everything, but allows provides a darcs.cabal file so
for packaging and tools like cabal-install. The "Don" mixture uses
Cabal to do everything but uses franchise just to check for C libraries.
+---------------+----------------------------------+
| | old David Don |
+---------------+----------------------------------+
| overall | make franchise cabal |
| framework | |
+---------------+----------------------------------+
| C lib | autoconf franchise franchise |
| checking | |
+---------------+----------------------------------+
| Haskell lib | autoconf franchise cabal |
| checking | |
+---------------+----------------------------------+
| building | make franchise cabal |
+---------------+----------------------------------+
| packaging | - cabal cabal |
+---------------+----------------------------------+
I hope that the following summary does justice to everybody's point of
view. Bias warning: I personally favour a more Cabal-oriented mixture,
but I also intend to fully support the franchise transition.
* C libraries. We cannot get away from using something like
franchise at the moment, because we need some sort of autoconf
replacement to check for functionality in C libraries.
* Concerns about maturity. Don points out that build systems
are a time-sink (Cabal took 6 years to get to its current state).
David thinks that by limiting ourselves to the problems that are
relevant to darcs, we can get away with a lot less development.
* Backward-compatibility. David wants to avoid the situation where
new versions of darcs have different dependencies than older
versions of darcs solely because the contemporary GHC version has
changed. Don points out that this is not the case with GHC 6.10
(only 4% of packages break).
* Forward-compatibility. David wants to ensure that already released
versions of darcs will build with a future version of GHC.
* Matching the Cabal interface. Franchise now matches the familiar
Cabal (command line) interface. You can even install darcs using
cabal-install cabal's command.
* Maintaining more than one build system. Jason thinks we should
just support all three systems because people will want Cabalisation
anyway. Trent and David feel that it would be better to focus our
attention on a single build system.
* More than one version of Haskell packages. Ben pointed out that if
you have two versions of parsec, franchise could just pick the wrong
one (parsec 3 instead of parsec 2). David thinks this a matter of
refining the API check. Simon points out that there is also the
diamond dependency problem to worry about.
Anyway, that's all for now. Please shout if you have any questions or
complaints. Thanks, everyone!
--
Eric Kow <http://www.nltg.brighton.ac.uk/home/Eric.Kow>
PGP Key ID: 08AC04F9
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 194 bytes
Desc: not available
Url : http://lists.osuosl.org/pipermail/darcs-users/attachments/20081021/d5af7fa0/attachment.pgp
More information about the darcs-users
mailing list