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

Re: compilers that self compile



On Thu, Oct 21, 2004 at 03:35:14PM +0200, Christoph Berg wrote:
> Re: Jeroen van Wolffelaar in <[🔎] 20041020164345.GN18918@A-Eskwadraat.nl>
> > >    * how packages like those go in the repository for the first time?
> > 
> > By ignoring build-depends while in some way you've made your system to
> > actually be able to build the package. I.e., you've for example
> > bootstrapped the compiler. Then you install it locally, and build your
> > package again, this time the normal way, and you upload it. After it's
> > in the archive, it's rebuildable by itself.
> 
> Of course, the bootstrapping has to be done for each architecture
> again.

Yes, it will. Which will make those of us porting put your package at
the very end of the queue of things to be ported, unless something else
is forcing it higher (in which case, we'll just be very annoyed at the
package, unless bootstrapping is trivial).

I would strongly suggest considering what makes it self-depend (there are
legitimate reasons, yes), and how one could deal with that in the case of
bootstrapping. For GCC, it's fairly simple; one has to bootstrap it with
another C compiler, but *any* compiler will do, more or less, including a
cross-compiler or a native package from another OS that happens to target
the platform required.

In theory, everything in Essential and Build-Essential is actually
self-dependant, because those two must (in theory) be met before one
can safely build a package, even one with no Build-Depends. However,
in practice, most of these can be remotely compiled, or copied from an
existing source, and work "well enough" to allow one to compile the
packages properly.

And, of course, packages which Build-Depend on some part of themselves
which is Arch: all aren't terribly problematic, since the old package is
already available in the archive, and can be installed anywhere.

The problem comes in when you have packages that are (perhaps gratuitously)
self-dependant, on binary packages, and which are not readily available
from simple manual compilations. If I have to spend hours building a
package just to have enough to rebuild it as a Debian package, it's going
*far* down the list. GCC is about the only exception I can think of
offhand.

(And, frankly, in some ways the port I work on - NetBSD/i386 - has it
easier, because often there is a working NetBSD-native package that can
be compiled and the bits copied into the Debian area long enough to
bootstrap.)

One solution which has been known to work reasonably is to allow a
build-option (documented in the rules file, please!) that allows a
"crippled" version of the package to be built without needing recursive
dependancies. The porter builds it, installs it locally only, then rebuilds
the full and proper package and uploads that (and, of course, after that it
isn't an issue).
-- 
Joel Baker <fenton@debian.org>                                        ,''`.
                                                                     : :' :
                                                                     `. `'
                                                                       `-

Attachment: signature.asc
Description: Digital signature


Reply to: