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

Re: Packages which need themselves to compile?



On Thu, 2005-06-23 at 23:31 +0100, David Given wrote:
> On Thursday 23 June 2005 20:04, John Skaller wrote:
> [...]
> > That cannot be allowed, the build must proceed without
> > ever installing anything: if you really need something
> > installed you will need to provide a separate package,
> > and then the build interaction cannot be cyclic.
> 
> Ung. The build scripts do assume that as they build things, those things 
> become available to use.

Yes, but I intended to use the term 'installed' in 
the Debian-technical sense.

> I suspect that the only way to cleanly package this for Debian (and for most 
> other architectures) would be to split it up into (a) tools, (b) code 
> generators, (c) compilers, (d) libraries. Each one would be a different 
> Debian package and build and install seperately (but possibly from the same 
> source package).

The downside is you will have to document each of these packages.

> How about this: supply a prebuilt parser; llgen builds using this parser, and 
> then uses itself to generate a new parser. The build will then *fail* if this 
> new parser does not match the prebuilt one.

Maybe and maybe not:

It is common for the 'prebuilt' version of the bootstrap to
only provide the cut-down functionality required to parse the
actual grammar of the parser. Furthermore, it may produce
non-optimal output. The full bootstrap is typically like this:

Prebuilt_C -- gcc --> Parser0
Parser Source --Parser0--> Parser1_C --gcc--> Parser1
Parser Source --Parser1--> Parser2_C --gcc--> Parser2
Parser Source --Parser2--> Parser3_C
assert Parser3_C == Parser3_C

Even if you are using a developer generated Prebuilt C
code for the start of the bootstrap, it is a good idea
for the bootstrap process not to assume that.

For example, a Debian packager might patch it, and everything
should still work, even though it is no longer generated by
some developer private version of the parser applied to the
Parser Source -- alternatively, the packager might patch
the Parser Source. Both source files should be independently
patchable.

BTW: GHC Haskell bootstraps, you can't compile it without
already having GHC already installed.

-- 
John Skaller <skaller at users dot sourceforge dot net>
Download Felix: http://felix.sf.net



Reply to: