1 |
From: "W. Trevor King" <wking@×××××××.us> |
2 |
|
3 |
Thanks to Zero_Chaos, dwfreed, and jmbsvicetto for clarification and |
4 |
review on #gentoo-releng. |
5 |
--- |
6 |
Changes from v3: |
7 |
|
8 |
* Don't mention "bootstrap" or "toolchain" in the seed stage3 → stage1 |
9 |
table action. jmbsvicetto points out that bootstrap may be confused |
10 |
with the bootstrap.sh script used for stage1 → stage2, and that |
11 |
there are non-toolchain packages in packages.build. Why there are |
12 |
non-toolchain packages in packages.build is beyond my comprehension, |
13 |
but it's good to match reality ;). |
14 |
* Add a few explanantory paragraphs going into detail about exactly |
15 |
what's going on and how it's technically happening. This should be |
16 |
enough so that an experienced PMS-tree user can get a feel for which |
17 |
packages will be build in which stage without having to look at the |
18 |
targets/stage*/*.sh scripts at all. |
19 |
|
20 |
doc/HOWTO.txt | 34 +++++++++++++++++++++++++++++----- |
21 |
1 file changed, 29 insertions(+), 5 deletions(-) |
22 |
|
23 |
diff --git a/doc/HOWTO.txt b/doc/HOWTO.txt |
24 |
index 5717f80..1573d59 100644 |
25 |
--- a/doc/HOWTO.txt |
26 |
+++ b/doc/HOWTO.txt |
27 |
@@ -136,11 +136,35 @@ compiled toolchain, which is where Gentoo's stages come in. The “base |
28 |
system” contains the necessary build tools and supporting |
29 |
infrastructure to get things going. The stages are: |
30 |
|
31 |
-1. System must be bootstrapped and the base system must be compiled |
32 |
- (a new toolchain built with external seed tools). |
33 |
-2. Stage1 + bootstrapped (a new toolchain build with stage1 tools). |
34 |
-3. Stage2 + base system compiled (the base system built with stage2 tools). |
35 |
-4. Stage3 + non-base packages. |
36 |
+[options="header",frame="topbot",grid="none"] |
37 |
+|======================================================================================= |
38 |
+| Source | Action | Result |
39 |
+| seed stage3 | Build packages listed in your profile's `packages.build` | stage1 |
40 |
+| stage1 | Rebuild the toolchain with the package tree's `bootstrap.sh` | stage2 |
41 |
+| stage2 | Compile the base `@system` packages | stage3 |
42 |
+| stage3 | Compile additional `@world` packages | stage4 |
43 |
+|======================================================================================= |
44 |
+ |
45 |
+For stage1, Catalyst builds the stuff your profile says you need to |
46 |
+get started, using the tools in the seed stage3. It uses Portage's |
47 |
+ability to merge packages into an alternatively-rooted filesystem |
48 |
+(`/tmp/stage1root`, using `ROOT` in `make.conf`). This ensures that |
49 |
+only freshly-built packages end up in stage1. |
50 |
+ |
51 |
+A fresh stage1 has newly-compiled versions of everything you need to |
52 |
+build a full system, but all of the stage1 binaries were built with |
53 |
+tools from the seed stage3. For stage2, Catalyst rebuilds a number of |
54 |
+critial packages (GCC, binutils, ...) using the `bootstrap.sh` script |
55 |
+distributed with the package tree. Rebuilding the packages using the |
56 |
+packages themselves (instead of the seed stage3 tools) gives an extra |
57 |
+layer of separation from any crazy output that the seed tooling may |
58 |
+have generated. |
59 |
+ |
60 |
+Once we have a stage2, stages3 is a standard `emerge` of the base |
61 |
+system. The `@system` set of packages is defined by `packages` files |
62 |
+in your cascading profile. See |
63 |
+http://dev.gentoo.org/~ulm/pms/5/pms.html#x1-520005.2.6[the Package |
64 |
+Manager Specification] for details. |
65 |
|
66 |
For more details on the differences between the stages, look at the |
67 |
target helper scripts (e.g. `targets/stage1/*.sh`). |
68 |
-- |
69 |
1.8.4 |