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