Version control systems
Ian Lynagh
igloo at earth.li
Tue Aug 12 08:18:35 EDT 2008
On Tue, Aug 12, 2008 at 10:20:14AM +1000, Manuel M T Chakravarty wrote:
>
> To be honest, if you ask me, I'd go back to the old makefile based
> system and remove Cabal from everywhere except building of the library
> packages.
>
> Manuel
>
> PS: Just for some more collateral damage. Did anybody check whether
> the Mac OS installer support and the -unfortunately, only partially
> working- support to compile for older OS X versions that I added to
> the *makefiles* still works with the Cabal-based system? I doubt it.
> Took me quite a while to get all this going, and I am not very well
> motivated to spend a lot of time to figure out how it might work with
> Cabal. IMHO using Cabal for anything but the libraries was a step
> back for no good reason.
Do you mean the "rebuilding the tools with stage2" stuff? If so, that's
an interesting example to pick, as that was the impetus behind changing
how the build system worked for all the non-libraries/ghc.
Those changes made the build non-idempotent: we would build something
with the bootstrapping compiler, build some other stuff, then come back,
clean it, and build it again with the in-tree compiler. This was a
little annoying at the best of times, as e.g. rerunning make at the top
level would needlessly rebuild some stuff.
However, when my local changes meant that programs built by GHC
segfaulted, it was especially irritating to find that after (hopefully)
fixing the bug I couldn't just run make in compiler/ or rts/, because
ghc-pkg etc now just segfaulted!
It was at that point that I half-reverted the changes, and later I
reimplemented something similar using Cabal. Now we make, for example,
ghc-pkg with the bootstrapping compiler in utils/ghc-pkg/dist-inplace,
and then later on we make it with the stage1 compiler in
utils/ghc-pkg/dist-install.
To answer your actual question: No, not having OS X yet I haven't tested
it, but I did make an effort to keep it working. In mk/cabal-flags.mk we
say:
USE_STAGE_CONFIGURE_FLAGS = \
...
$(addprefix --cc-option=,$(MACOSX_DEPLOYMENT_CC_OPTS)) \
$(addprefix --ld-option=,$(MACOSX_DEPLOYMENT_LD_OPTS))
which will hopefully do the trick, and (IMO) in a much cleaner, more
maintainable way than would have been possible with the old build
system.
Thanks
Ian
More information about the Glasgow-haskell-users
mailing list