Gentoo Archives: gentoo-catalyst

From: "W. Trevor King" <wking@×××××××.us>
To: Catalyst <gentoo-catalyst@l.g.o>
Cc: "W. Trevor King" <wking@×××××××.us>
Subject: [gentoo-catalyst] [PATCH v2 2/2] doc/catalyst-config.5.txt: Document linking issues with binary packages
Date: Fri, 12 Apr 2013 18:22:12
Message-Id: 328f6204f14eb08b3c8d02b3516ac86c7f7678ae.1365790593.git.wking@tremily.us
In Reply to: [gentoo-catalyst] [PATCH v2 0/2] pkgcache warning in catalyst-config(5) by "W. Trevor King"
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