tech-pkg archive

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

Re: Updating plans of lang/ghc



PHO <pho%cielonegro.org@localhost> writes:

(Welcome as an official pkgsrc developer; I've been seeing you working
on ghc stuff for a while.)

> I like the idea of lang/ghc-bootstrap. It is fairly attractive to have
> a bootstrap kit installed as an usual pkgsrc package. The one thing I
> am concerning about is that users will have to find and install a
> binary package if they want to build lang/ghc themselves, otherwise
> they'll end up standing in front of a circular
> dependency. pkg_rolling-replace might complain about it each time the
> packages get updated, even if both lang/ghc-bootstrap and lang/ghc
> (somewhat old ones) are installed. I'm not sure this is OK or not. On
> the other hand lang/ghc7 (and wip/ghc) are free from this problem, but
> their bootstrap kits are somewhat inelegant.

I think pkg_rolling-replace (really the notion of circular dependencies)
is not really the issue.  The harder question is bulk builds, as a proxy
for starting from scratch, and the standard approach for doing so.  The
questions come down to:

  1) Does one need the bootstrap binary to build the compiler (yes, and
  this is a straightforward dependency)

  2) How do bootstrap packages get built?

     One way is to have "make package" build them, by using the
     compiler.  But this doesn't really make sense, since if you built
     the compiler you have it already, and there's no way for user to
     start from scratch (with neither package).

     Another way is to assume we'll cross-build the bootstrap binaries
     using some different mechanism, from a machine with a working
     ghc7.  In this case, the normal package build might download a
     binary and unpack it, which is not so different from downloading a
     binary package, except that it can run as part of a bulk build.
     And then the "actually cross build this" or "actually regenerate it
     natively" would do the build, and produce a binary tarball that can
     be uploaded (as a distfile) and then the version increased.

So I don't think having separate packages necessarily creates a circular
dependency *as captured by the pkgsrc dependency system*.

I tend to prefer separate packages; that way one can build lang/ghc7
using the binary bootstrap package.  I realize that at some level this
is a false sense of comfort, but it's very much like how we have gcc or
clang in base and can build other C compilers in pkgsrc, and it means
that the bits that are precompiled binaries are clearly separated and
identified.

Attachment: pgpws9dy3EQEx.pgp
Description: PGP signature



Home | Main Index | Thread Index | Old Index