1 |
>> * gcc covers the linker |
2 |
> |
3 |
> The 'gcc' command is a wrapper for several toolchain commands, |
4 |
> from the actual compilers and assemblers down to linker. |
5 |
> Yes, it's debatable whether that's really the recommended way (tm), |
6 |
> but obviously it seems to be quite comfortable. |
7 |
> |
8 |
|
9 |
Somehow I don't really like the way it is done. The levels of |
10 |
abstraction are mixed and it results in very cryptic parameters. IMHO |
11 |
it should be one tool with coherent parameters or two tools. In the |
12 |
latter case both would be controlled be the same build script. When |
13 |
gcc says ld it should also say ar at least. |
14 |
|
15 |
>> * libtool covers gcc and ar |
16 |
> |
17 |
> Not particularily well. It's not really a wrapper, at least no |
18 |
> abstraction whatsoever, but more a command line filter doing |
19 |
> certain (quite unpredictable) magic things. I'd instead suggest |
20 |
> a real abstraction. |
21 |
|
22 |
Similar gcc. Different tasks, different levels of abstraction are |
23 |
somewhat queerly mixed. Another parameter style steps in. |
24 |
|
25 |
> |
26 |
>> * makefile configures it all |
27 |
> |
28 |
> Not perfect, but quite fine. |
29 |
> |
30 |
>> * to unburden from makefile writing, it is generated by configure |
31 |
> |
32 |
> Actually, completely unncessary. It would be much cleaner to |
33 |
> let it just generate some makefile include for the configuration |
34 |
> stuff and maybe provide a library of generic make rules. |
35 |
> |
36 |
>> * configure is needed to be generated from configure.in |
37 |
> |
38 |
> When you're going into the autotools hell. Also completely |
39 |
> obsoleted before it even came into existence. A set of well- |
40 |
> designed shell functions could do the job *much* better. |
41 |
> |
42 |
|
43 |
The shell script terminology is a little strange, especially the |
44 |
conditions. They differ from the style of most modern languages, |
45 |
differ even from C. I don't like the Ant approach either, because |
46 |
logic doesn't fit well into XML. I would appriciate it based on a |
47 |
modern programming language. Then there would be lesser needs for |
48 |
autogeneration. |
49 |
|
50 |
>> * now there comes ebuild as the next wrapper to make building easier |
51 |
> |
52 |
> Not just "easier", it essentially states where how to get the |
53 |
> sources, which different build configurations are provided and |
54 |
|
55 |
I wanted to stress how this "making easier" by another wrapper and |
56 |
another wrapper leads finnally into kind of a debugging hell, that |
57 |
makes matters more complicated in the end. Having different levels of |
58 |
abstraction is fine, but they should do it in clean way without mixing |
59 |
levels at least. |
60 |
|
61 |
It's clear that the overall package management is a different layer |
62 |
from program building. However the question of portablility for |
63 |
example is mixed into all levels, is it libtool or is it eclasses. It |
64 |
will be similar for things like internationalization. |
65 |
|
66 |
Often the way it is simply exists for historical reasons. Well that is |
67 |
the way of open source. At that point a company like MS can make more |
68 |
courageous decisions of the overall design. Sometimes they make use of |
69 |
it. |
70 |
|
71 |
> glues that to the individual package's build scripts. |
72 |
> |
73 |
> Yes, there could be more generic approaches, eg. maintaining |
74 |
> the whole (already-patched) source in a canonical repository |
75 |
> scheme (see OSS-QM), having the package provide it's switches |
76 |
> and depencies in a purely declarative way (see Briegel), etc. |
77 |
> |
78 |
>> How many languages are involved only to generate and install a C |
79 |
>> program! Maschine code, C, bash, m4, python, ... what else? How much |
80 |
>> knowlege is needed to debug this huge stack! |
81 |
> |
82 |
> The stack can be coped layer-by-layer. If you'd somehow manage |
83 |
|
84 |
Ideally it can. In praxis the stack can't always be coped |
85 |
layer-by-layer by different teams. In the moment the bug is there, you |
86 |
have to search them all. |
87 |
|
88 |
For my target of a port I have to understand them all, up to a certain |
89 |
degree. I have to apply patches at different layers. |
90 |
|
91 |
> to get Gentoo devs (along w/ other distro's maintainers) to |
92 |
> adopt the oss-qm project, the stack would only start at the |
93 |
> ebuild level (since everything beyond will be provided by |
94 |
> oss-qm and checked/tested eccessively) ;-) |
95 |
|
96 |
For my case that would be of help. I currently have to mix patches |
97 |
from cygwin with patches from Gentoo. Sure that leads to conflicts. |
98 |
|
99 |
However it is always problematic to depend on another team and have to |
100 |
wait for bugfixes. You must be able to bugfix yourself. Is that |
101 |
addressed by the oss-qm? Than it seems a layer between the original |
102 |
sources and the own project. It adds new complexity. Is that price |
103 |
worth the gain? |
104 |
|
105 |
Al |