On Mon, Apr 26, 2010 at 08:56:36PM +0200, Matthias Guedemann wrote:
> > But this shouldn't be necessary. lang/ghc BUILD_DEPENDS on
> > devel/haddock,no_deps:patch, which means that it gets the haddock
> > sources from devel/haddock including the patch that port has, which
> > in turn disables the dependency on ghc-paths (if built internally
> > within the ghc tree).
> 
> the ghc-paths dependency for the haddock *executable* is disabled if in
> ghc-tree, but there is also a dependency for the library. If I am not mistaken
> this in *not* there after extraction of the ghc tar.gz, only after patching
> ghc-6.12.2 / moving devel/haddock there.
> 
> What I did to make it compile was simply to remove the deps after the patches
> where applied.

Well, and this is where something's going wrong (and I really don't
understand why). The diff you sent for haddock.cabal (within
WRKSRCDIR, i.e. the extracted ghc directory) had two hunks. The first
hunk removed ghc-paths from the haddock program:

        @@ -81,8 +81,6 @@
           if flag(in-ghc-tree)
             cpp-options: -DIN_GHC_TREE
             extensions: ForeignFunctionInterface
        -  else
        -    build-depends: ghc-paths
 
           if flag(test)
             cpp-options: -DTEST


That shouldn't be necessary, as the `in-ghc-tree' flag is set when
haddock is configured internally within the ghc build.

The second hunk of your diff did address the library part of haddock:

        @@ -132,8 +130,7 @@
             containers,
             array,
             Cabal >= 1.5,
        -    ghc >= 6.12 && < 6.14,
        -    ghc-paths
        +    ghc >= 6.12 && < 6.14

That's of course (mostly) correct, but now look at
/usr/ports/devel/haddock/patches/patch-haddock_cabal.[1] It already
contains a diff similuar to that hunk (with the only difference
that it doesn't remove the dependency on ghc-paths unconditionally
but only if `in-ghc-tree' isn't set). For reference here's the
haddock.cabal hunk that *should* be in your WRKSRC after running
`make extract' in /usr/ports/lang/ghc:

        @@ -132,8 +132,10 @@ library
             containers,
             array,
             Cabal >= 1.5,
        -    ghc >= 6.12 && < 6.14,
        -    ghc-paths
        +    ghc >= 6.12 && < 6.14
        +
        +  if !flag(in-ghc-tree)
        +    build-depends: ghc-paths
 
   if flag(test)
     cpp-options: -DTEST

But it isn't, and I really don't understand the reason.

> > cd /usr/ports/lang/ghc
> > make clean
> > make extract > extract.log 2>&1
> > 
> > and then send me the extract.log?
> 
> find it attached

Perfectly normal beast. Almost identically to what I get here. Now
I'm even more confused. After `make extract',
/usr/obj/pobj/ghc-6.12.2/ghc-6.12.2/utils/haddock/haddock.cabal
should read like this:

        executable haddock
        ...
          if flag(in-ghc-tree)
            cpp-options: -DIN_GHC_TREE
            extensions: ForeignFunctionInterface
          else
            build-depends: ghc-paths
        ...

        library
        ...
          if !flag(in-ghc-tree)
            build-depends: ghc-paths
        ...

> btw. I also had segfaults, but deleted the core dump before I read your
> thread. As I'm building on an Atom netbook where the build takes ages, I hope
> you find enough other people who can send you the backtracks

Yep, I got some reports already (and wait for a report from some
kind tester who even got repeated segfaults on amd64). Building
this thing on small and slow boxes is no fun at all -- I know, since
I built the i386 bootstrapping bindist on a crap box with less than
300 MHz and only 128 MB of RAM ;-)

Ciao,
        Kili

[1] You have that patch, don't you? If not, you owe me about 15
bottles of gulden draak.

Reply via email to