1 |
On Mon, Jun 28, 2021 at 9:46 AM Michael Orlitzky <mjo@g.o> wrote: |
2 |
> |
3 |
> On Mon, 2021-06-28 at 15:00 +0200, Agostino Sarubbo wrote: |
4 |
> > |
5 |
> > Instead, imagine that each ebuild declares a variable called SOURCETYPE ( or |
6 |
> > similar, or in metadata.xml if you prefer ) and with a tool like equery/eix we |
7 |
> > are able to get the list of all packages that compiles C code. |
8 |
> > |
9 |
> |
10 |
> I think all you are really asking for is that we stop omitting a random |
11 |
> subset of @system from *DEPEND. |
12 |
> |
13 |
> This is long overdue, for many reasons, but in particular it would |
14 |
> force us to declare a dependency on a C compiler if one is needed and |
15 |
> allow you to re-test only those packages that use a C compiler. |
16 |
|
17 |
++ - this would also support parallel building of @system. |
18 |
|
19 |
Obviously we'll still need a core set of packages needed for |
20 |
bootstrapping/etc, but there is no reason @system couldn't just be |
21 |
another virtual. |
22 |
|
23 |
You could also have convenience virtuals for things like the C |
24 |
toolchain and so on. This will both support alternate implementations |
25 |
and avoid having to have laundry lists of deps in every ebuild. |
26 |
|
27 |
A simple way to transition would be to create a system virtual and add |
28 |
it to all ebuilds, but ask that this be removed in future updates in |
29 |
favor of more specific dependencies. Over time then the tree would |
30 |
move to specified true deps. Catalyst could still use a virtual as a |
31 |
target for bootstrapping stages. |
32 |
|
33 |
Another tool that would be useful is what some other distros do - use |
34 |
mount namespaces/etc to allow build systems to only see parts of the |
35 |
filesystem (down to the file level) that are specified in |
36 |
dependencies. This would basically eliminate unspecified or automagic |
37 |
dependencies, since anything not specified basically doesn't exist at |
38 |
build time. If you didn't want to use mount namespaces then our |
39 |
sandbox already allows limiting read access to only specified files - |
40 |
we just configure it to allow read-only to everything for every |
41 |
package. |
42 |
|
43 |
-- |
44 |
Rich |