Difference between revisions of "Descent principle"

From bootstrapping
Jump to navigation Jump to search
(Created page with "= Descent principle = == Context == * The goal is to remove the dependency on precompiled binaries, or at least build everything in terms of some small core. * Each package...")
 
Line 4: Line 4:
  
 
* The goal is to remove the dependency on precompiled binaries, or at least build everything in terms of some small core.
 
* The goal is to remove the dependency on precompiled binaries, or at least build everything in terms of some small core.
* Each package has a set of **inputs** required to build it. (for example many projects require 'make' and 'gcc' and binutils 'ld').
+
* Each package has a set of '''inputs''' required to build it. (for example many projects require 'make' and 'gcc' and binutils 'ld').
* If one of these inputs (directly or indirectly) is the output of building the project itself, then the package is **self-hosted**. (For example gcc is usually built using gcc)
+
* If one of these inputs (directly or indirectly) is the output of building the project itself, then the package is '''self-hosted'''. (For example gcc is usually built using gcc)
  
 
== Descent principle ==
 
== Descent principle ==

Revision as of 11:37, 26 June 2017

Descent principle

Context

  • The goal is to remove the dependency on precompiled binaries, or at least build everything in terms of some small core.
  • Each package has a set of inputs required to build it. (for example many projects require 'make' and 'gcc' and binutils 'ld').
  • If one of these inputs (directly or indirectly) is the output of building the project itself, then the package is self-hosted. (For example gcc is usually built using gcc)

Descent principle

In a set of packages, if there is only one self hosted package then you can trace the build process of any other package back down to that core.

Program

  • Identify self hosted packages.
  • Break their loop by creating a new set of inputs able to build them that is "smaller" and not self-hosted.

This can be done in parallel, there is no need to coordinate a specific bootstrap path. It will simply exist if each package can be built in terms of smaller parts.