1 |
On Wednesday, October 26, 2016 11:14:53 PM Rich Freeman wrote: |
2 |
> On Wed, Oct 26, 2016 at 10:54 PM, Walter Dnes <waltdnes@××××××××.org> wrote: |
3 |
> > On Thu, Oct 27, 2016 at 01:10:10AM +0000, Peter Stuge wrote |
4 |
> > |
5 |
> >> waltdnes@××××××××.org wrote: |
6 |
> >> > For a build-from-source distro like Gentoo, gcc and associated |
7 |
> >> > tools are a vital part of the distro. |
8 |
> >> |
9 |
> >> A stage4 created (and updated) on a catalyst build farm doesn't need |
10 |
> >> to have gcc, but may still need libstdc++. |
11 |
> >> |
12 |
> > That just moves the requirement for gcc+tools to the catalyst build |
13 |
> > |
14 |
> > farm. OK, let's get specific... a *STANDALONE* Gentoo machine requires |
15 |
> > gcc+tools. |
16 |
> |
17 |
> This is why I think "@system" oversimplifies all of this. IMO we |
18 |
> should just specify all dependencies for everything (and those could |
19 |
> include some virtuals for convenience, like the C toolchain), and then |
20 |
> have different sets or virtuals for convenience. By all means give a |
21 |
> user with a default install that sticks virtual/common-packages or |
22 |
> something in their @world. Nobody is arguing that the typical Gentoo |
23 |
> user doesn't want gcc, or that we should force people to explicitly |
24 |
> install it. |
25 |
> |
26 |
> Fixing the dependencies means that system packages can take advantage |
27 |
> of parallel builds, which means faster updates for everybody. We can |
28 |
> still have sets for bootstraping (and I suspect that having more |
29 |
> virtuals or sets would allow stage1/2 definition to be simplified). |
30 |
> |
31 |
> It is a bit like license groups. We give everybody a default set of |
32 |
> license groups that generally makes sense. But, if you want you can |
33 |
> easily edit your make.conf to exclude anything that is copyleft from |
34 |
> your system. |
35 |
> |
36 |
> The main downside to this is it is a bit more of a hassle for |
37 |
> developers to maintain the dependency lists, since invariably you end |
38 |
> up with a lot of mundane stuff in there. And of course it is a lot of |
39 |
> change to implement, though it could be done gradually. And of course |
40 |
> the upside for the typcal user is somewhat limited, since most people |
41 |
> aren't dying to uninstall openssh or gcc. |
42 |
|
43 |
I want to +1 this, but I do see one problem: If all dependencies are defined, |
44 |
how does "emerge --with-bdeps=y --emptytree @world" work? Defining all |
45 |
dependencies means the graph is completely cyclic. |
46 |
|
47 |
Perhaps the answer is that it doesn't; you have to run 'emerge --emptytree |
48 |
@world twice' if you want to ensure every package is rebuilt with its newest |
49 |
available build dependencies. |
50 |
|
51 |
I'll sometimes do an "emerge -e @world" twice following a compiler upgrade or |
52 |
CFLAGS or LDFLAGS change. |
53 |
|
54 |
-- |
55 |
:wq |