tech-pkg archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: ghc on amd64



On Fri, Aug 01, 2014 at 02:12:30PM +0200, Thomas Klausner wrote:
 > So how can I get a ghc Haskell compiler for NetBSD/amd64?
 > The current package doesn't do that, it only provides one for i386.

Currently: build the ghc 6 package in a 32-bit chroot, or use the ghc7
package's maybe-suspect bootstrap kit.

The last I remember, we (collectively) were partway through discussing
what to do with the ghc7 bootstrap kits, and the conclusion was that
some of them probably ought to be regenerated. Unfortunately, this
pretty much requires bootstrapping all the way from the existing ghc 6
packages.

Nothing at all has been done by anyone (including me) since.

I have a patch to switch lang/ghc to use the bootstrap kit provided by
lang/ghc-bootstrap, which I've been sitting on since December; the
original idea was to wait until the official 2014Q1 bulk builds gave
us official ghc-bootstrap packages to work with, but got sucked away
by real life issues. I could commit that, but I'm no longer certain
it's the best way forward.

One way forward is to update lang/ghc and lang/ghc-bootstrap in pairs,
like I intended in January, collect the resulting ghc-bootstrap
packages somewhere reasonably safe, and keep them indefinitely as
distfiles. This gives us an archive of binary bootstrap kits with
reasonably clear provenance, but no easy way to regenerate them.

Another way forward is to create a whole series of ghc packages, one
for every other version per upstream support for building ghc, and
keep them all indefinitely in pkgsrc. We could mark them all
NOT_FOR_BULK by default so they don't waste build cycles, but then
anyone could (given a fast machine and a few days) bootstrap a current
gcc from the existing semi-source bootstrap kit. The downside is that
arbitrarily many ghc packages hang around in pkgsrc indefinitely.

Both these schemes only work tidily for i386; some measure of
finagling and/or manual intervention will be necessary for anything
else. In theory with what we have it's possible to build a cross-
compiling bootstrap-ghc package that runs on i386 and builds for any
other target ghc 6.8 supports; however, there isn't going to be any
easy way to either get these packages from official bulk builds or
generate them directly in your own, as it requires the ability to run
netbsd-i386 binaries. This could probably be arranged for amd64; for
anything else... one might be able to provide a framework to run the
first stage build inside qemu, but I shudder to think how long such a
build would take.

Even though I originally proposed the first scheme, I kind of lean
towards the second, as being able to rebuild everything is more
consistent with principles.

(Also, I wonder if there's a way to abuse the multiversion framework
to allow collecting all the ghc versions into one package without it
becoming a maintenance nightmare.)

-- 
David A. Holland
dholland%netbsd.org@localhost


Home | Main Index | Thread Index | Old Index