1 |
From: "W. Trevor King" <wking@×××××××.us> |
2 |
|
3 |
This gives users a heads up explaining why they might see linking |
4 |
errors when pkgcache is enabled. I first saw this when I build a |
5 |
stage1 without update_seed. Because my seed stage3 linked against |
6 |
libmpc.so.2, some of my stage1 files linked against the older mpc. |
7 |
However, the mpc-1.0.1 built for the stage1 installed libmpc.so.3. |
8 |
When I tried to use this stage1 to build a stage2, it died with: |
9 |
|
10 |
/usr/libexec/gcc/i686-pc-linux-gnu/4.6.3/cc1: |
11 |
error while loading shared libraries: libmpc.so.2: |
12 |
cannot open shared object file: No such file or directory |
13 |
|
14 |
To fix this, I enabled update_seed, but binary packages built during |
15 |
my first pass were used to populate the stage1, so even though I'd |
16 |
updated the seed stage3 toolchain, I still had a stage1 with cc1 |
17 |
linked against libmpc.so.2. |
18 |
|
19 |
After clearing the binary package cache, I got a stage1 *built* with |
20 |
the updated seed stage3, which gave a cc1 linked against libmpc.so.3 |
21 |
(hurray!). |
22 |
|
23 |
This commit adds a warning in the pkgcache documentation that should |
24 |
help people understand what might be going wrong if they see similar |
25 |
linking errors. For more details, see the thread following |
26 |
http://thread.gmane.org/gmane.linux.gentoo.catalyst/2137/focus=2193 |
27 |
--- |
28 |
doc/catalyst-config.5.txt | 44 +++++++++++++++++++++++++++++++++++++++++++- |
29 |
1 file changed, 43 insertions(+), 1 deletion(-) |
30 |
|
31 |
diff --git a/doc/catalyst-config.5.txt b/doc/catalyst-config.5.txt |
32 |
index 944f392..61c9aba 100644 |
33 |
--- a/doc/catalyst-config.5.txt |
34 |
+++ b/doc/catalyst-config.5.txt |
35 |
@@ -123,7 +123,8 @@ your build dies during `livecd-stage2`. |
36 |
|
37 |
pkgcache:: |
38 |
Keep a ``tbz2`` of every built package. This is useful if your build |
39 |
-dies prematurely. |
40 |
+dies prematurely. However, you may experience linking problems. See |
41 |
+the *BINARY PACKAGE DEPENDENCIES* section for details. |
42 |
|
43 |
seedcache:: |
44 |
Use the build output of a previous target if it exists to speed up the |
45 |
@@ -170,6 +171,47 @@ ripemd256, ripemd320, sha1, sha224, sha256, sha384, sha512, snefru128, |
46 |
snefru256, tiger, tiger128, tiger160, whirlpool. |
47 |
|
48 |
|
49 |
+BINARY PACKAGE DEPENDENCIES |
50 |
+--------------------------- |
51 |
+This section is only important if you are using binary packages to |
52 |
+build your stages (by enabling the `pkgcache` option and restarting |
53 |
+incomplete builds). |
54 |
+ |
55 |
+Before EAPI-5 introduced ABI sub-slots, the build-time compatibility |
56 |
+of packages was not recorded. This leads to problems such as binary |
57 |
+GCC packages built against mpc-0.8.2 (which installs libmpc.so.2) |
58 |
+being installed on systems that only have mpc-1.0.1 (which installs |
59 |
+libmpc.so.3), resulting in: |
60 |
+ |
61 |
+--------------------------------- |
62 |
+/usr/libexec/gcc/i686-pc-linux-gnu/4.6.3/cc1: |
63 |
+ error while loading shared libraries: libmpc.so.2: |
64 |
+ cannot open shared object file: No such file or directory |
65 |
+--------------------------------- |
66 |
+ |
67 |
+As long as there are packages in your stage that don't use ABI |
68 |
+sub-slots, you may experience errors like this due to untracked ABI |
69 |
+missmatches in binary packages. Packages generated by catalyst builds |
70 |
+are currently namespaced: |
71 |
+ |
72 |
+--------------------------------- |
73 |
+.../packages/<rel_type>/<target>-<subarch>-<version_stamp>/Packages |
74 |
+--------------------------------- |
75 |
+ |
76 |
+so running into these out-of-date packages is unlikely. You may run |
77 |
+into problems if: |
78 |
+ |
79 |
+* you enable `update_seed` in your stage1 spec after a previous run |
80 |
+ which generated packages linking against out-of-date seed libraries |
81 |
+ or |
82 |
+* you update your snapshot and an untracked ABI dependency is bumped |
83 |
+ without a similar bump in the dependent package. |
84 |
+ |
85 |
+without also bumping any of the package namespace variables in your |
86 |
+spec. If you do make such a change, it's a good idea to clear the |
87 |
+package cache in question and rebuild the packages from scratch. |
88 |
+ |
89 |
+ |
90 |
FILES |
91 |
----- |
92 |
An example configuration file can be found at |
93 |
-- |
94 |
1.8.2 |