1 |
On Friday 20 May 2005 21:30, Michael Haubenwallner wrote: |
2 |
> Jason Stubbs wrote: |
3 |
> <snip> |
4 |
> |
5 |
> > I intend that the package to be installed should not assume anything |
6 |
> > about where its dependencies are and should query portage for them all. |
7 |
> |
8 |
> Oh no, now many things get much clearer to me :( |
9 |
> |
10 |
> But - aren't there many settings left over to the packages to decide, |
11 |
> at least to choose the package-defaults ? |
12 |
|
13 |
Any package that does this is broken. There are a couple of cases where |
14 |
there's no other choice because portage doesn't allow for anything else but |
15 |
that will change. |
16 |
|
17 |
> > Requiring ebuilds to have special handling for when their dependencies |
18 |
> > are in the same ${PREFIX} and when in a different ${PREFIX} just seems |
19 |
> > crazy to me. |
20 |
> |
21 |
> Agreed. |
22 |
> You intend to use some portage-API in ebuilds which knows where and how |
23 |
> to look for dependencies, did i get this right ? |
24 |
> But having portage to behave differently seems crazy to me though. |
25 |
|
26 |
I would fiercely disagree with implementing ${PREFIX} support without doing |
27 |
major changes in portage to support it. There's enough hacks in portage |
28 |
already. |
29 |
|
30 |
> > If portage doesn't tell the packages what to build against, they'll go |
31 |
> > their own merry way which would definitely make the binary packages |
32 |
> > mentioned below impossible. |
33 |
> |
34 |
> Disagreed - binary packages right now can only be shared between highly |
35 |
> identical machines... |
36 |
|
37 |
In general, I do not be the case. |
38 |
|
39 |
> It seems that there are two philosophies of how packages find their |
40 |
> dependencies: |
41 |
> |
42 |
> 1) The Gentoo-Linux one: |
43 |
> All the depency information comes from the package manager and is |
44 |
> passed to packages by commandline, skipping the whole |
45 |
> autoconf-intelligence. |
46 |
> |
47 |
> pro: |
48 |
> + The patching required for packages is less complex, most of the |
49 |
> time the autoconf-intelligence has to be disabled if there's a |
50 |
> commandline parameter missing for a particular feature. |
51 |
|
52 |
+ Portage is able to know what a package requires and can ensure system |
53 |
consistency. |
54 |
|
55 |
+ Binary packages are possible. |
56 |
|
57 |
> contra: |
58 |
> - To get this work on different platforms, an autoconf alike |
59 |
> intelligence has to be re-implemented to portage and the ebuilds, |
60 |
> including access to provided/injected packages or to the |
61 |
> primary pkg mgr's database. |
62 |
|
63 |
Wrong. What do you think *DEPEND is if it's not "autoconf alike intelligence"? |
64 |
|
65 |
> - External packages installed by hand into the primary prefix will not |
66 |
> be stored in the primary pkg mgr's database and therefore cannot |
67 |
> be seen by portage as the secondary mgr once portage could read it. |
68 |
|
69 |
No different to the current system. This is what package.provided is for. |
70 |
|
71 |
> - There's always a rest of decicions left to the package's |
72 |
> autoconf-intelligence. |
73 |
|
74 |
Such as? I don't know if this is a pro or a con or what. |
75 |
|
76 |
> - This works for the primary package mgr, but would become |
77 |
> unmaintainable for secondary installations - which is your |
78 |
> legitimate fear. |
79 |
|
80 |
Without it, there is no guarantee of system consistency and hence no reason |
81 |
for adding support for it into portage at all. If you don't want portage to |
82 |
maintain system consistency for you, why not just do "./configure; make; make |
83 |
install" ? |
84 |
|
85 |
> - Different behaviour seems to be required within the ebuilds or |
86 |
> (through an API) portage if installed to / or prefix or ~. |
87 |
|
88 |
Different behaviour between prefix or ~ only. / is just another prefix. This |
89 |
is definitely not a con of philosophy 1. It is a requirement regardless. |
90 |
|
91 |
> 2) The one necessary for secondary installation: |
92 |
> Let the packages decide from environment (PATH,PKG_CONFIG_PATH,...) |
93 |
> and filesystem where to find their dependencies, and the package |
94 |
> manager just has to prepare the environment variables and the |
95 |
> filesystem to let the autoconf intelligence work. |
96 |
|
97 |
"necessary"? I think not. |
98 |
|
99 |
> pro: |
100 |
> + Many of the packages already do compile and run on several platforms, |
101 |
> by checking the environment and filesystem, and are shipped with the |
102 |
> autoconf-intelligence required for that. |
103 |
> This intelligence is used and therefore not needed in portage and |
104 |
> ebuilds. |
105 |
|
106 |
Works the same for "/", no? Tell me again what the point of portage is? |
107 |
|
108 |
> + This is what autoconf/libtool are created for. |
109 |
|
110 |
Do you use a new point to reiterate your last point just to make it look like |
111 |
your way is better? |
112 |
|
113 |
> + If there are external packages installed by hand into the primary |
114 |
> prefix, they are normally recognized, because they appear on the |
115 |
> filesystem and in the environment. |
116 |
|
117 |
Woops. Exactly the same point again. |
118 |
|
119 |
> + When installing within a primary portage, this continues to work. |
120 |
|
121 |
And again. Except that here you're saying that system consistency should be |
122 |
thrown out the window altogether. It seems to me like your concept of portage |
123 |
is: |
124 |
|
125 |
emerge() { |
126 |
PKG="$1" |
127 |
tar zxf ${PKG} |
128 |
cd ${PKG/.tar.gz/} |
129 |
./configure |
130 |
make && make install |
131 |
} |
132 |
|
133 |
> + The pkg mgr does nearly the same commands as an administrator likes to |
134 |
> do by hand if she has no pkg mgr at hand: |
135 |
> ./configure [--prefix=/my/prefix] |
136 |
> make |
137 |
> make install [DESTDIR=/tmp/inst] |
138 |
> without any more arguments ideally. |
139 |
|
140 |
Again, why use portage at all? |
141 |
|
142 |
> + Seems to be much less need for ebuild/portage to behave differently if |
143 |
> installed to / or prefix or ~ |
144 |
|
145 |
Eh? Where did that come from? |
146 |
|
147 |
> contra: |
148 |
> - If the autoconf-intelligence does not work, there's more effort needed |
149 |
> to create the patches to get it work. |
150 |
|
151 |
Where do USE flags come into this? |
152 |
|
153 |
> - There's always a rest of issues needed to be dealt with in some |
154 |
> ebuilds. |
155 |
|
156 |
This isn't a pro or con either. It's just a simple fact that exists |
157 |
regardless. |
158 |
|
159 |
> Portage itself does not predetermine which philosophy to use - it is to |
160 |
> the ebuild-dev to choose one - but maybe portage's full-support for the |
161 |
> former "doesn't exist and isn't going to exist for a very long time, if |
162 |
> ever" (to say it with ciaranm's words). |
163 |
|
164 |
Wrong. Portage does predetermine which philosophy to use. With your option 2, |
165 |
there is no way to do: |
166 |
|
167 |
1) A working version of depclean |
168 |
2) Safe unmerging of packages |
169 |
3) Binary packages |
170 |
4) Parallel compiles (future goal) |
171 |
5) Dispatched compiles in a portage cluster (future goal) |
172 |
|
173 |
> To me now, my real problem seems to be the philosophy established |
174 |
> in the ebuild-devs right now, could that be the case ? |
175 |
|
176 |
It really seems that Gentoo doesn't suit your way of thinking at all. |
177 |
|
178 |
> > Until portage supports other package formats, an equivalent of |
179 |
> > package.provided would be used for this. However, this has nothing to do |
180 |
> > with how ebuilds would find out where their dependencies are. |
181 |
> |
182 |
> Agreed, but just to ensure unterstanding: |
183 |
> One thing is the dependency tree for the pkg mgr to install all the |
184 |
> prerequisites, the other is how packages then find those prerequisites, |
185 |
> right ? |
186 |
|
187 |
Building a dependency graph implies gaining the knowledge of where packages |
188 |
are or will be installed. Passing that information to ebuilds is a minor |
189 |
thing. |
190 |
|
191 |
> >>>7 Portage needs to be able to configured with one-way dependency |
192 |
> >>>allowance between installed package databases. For example, ~ installed |
193 |
> >>>packages are allowed to depend on / installed packages. |
194 |
> |
195 |
> When installing a package into ~, a dependency install to / or prefix |
196 |
> becomes triggered or sth. like that, do you mean this ? |
197 |
|
198 |
Forget this. It's an implementation detail but we're not even past concept let |
199 |
alone design. |
200 |
|
201 |
> > This is just silly, in my opinion. Home-support may have issues beyond |
202 |
> > prefix-support, but most of them are the same. Why would you only want to |
203 |
> > consider prefix-support and implement it if considering home-support |
204 |
> > might invalidate assumptions you make? Doing this pathspec stuff is a |
205 |
> > huge project so it's not something that should be rushed into. |
206 |
> |
207 |
> Agreed from your point now since i know the Gentoo-Linux philosophy of |
208 |
> what ebuilds have to know and what packages are allowed to know (see |
209 |
> above). |
210 |
> |
211 |
> Since i've never installed plugins into my ~, some questions here: |
212 |
> |
213 |
> Can those plugins be installed into prefix or / too ? |
214 |
> |
215 |
> If so, what are the general differences in how to do that against |
216 |
> installing into ~ ? |
217 |
|
218 |
I haven't either. However, Ciaran posted about this. The main difference is |
219 |
that the directory structure changes completely. |
220 |
|
221 |
> > Doing it properly should also lay down most of the ground work for |
222 |
> > getting full cross-compile support into portage as well. Personally, I |
223 |
> > wouldn't push this GLEP for approval at all until those issues are at |
224 |
> > least looked and fleshed out a bit as well. |
225 |
> |
226 |
> I've not used cross-compiling yet, but there are cross-compiling bits in |
227 |
> the ebuilds - so what does not work now or how can these bits work now ? |
228 |
|
229 |
I haven't worked with it either. I know that there's extensive |
230 |
cross-compilation support in the toolchain but I'm pretty sure there's little |
231 |
to none before that. Using portage for cross-compilation at the moment is a |
232 |
touch-and-go thing that requires a lot of hacking. |
233 |
|
234 |
> > I'll reiterate; doing this is a huge amount of work. There really needs |
235 |
> > to be a guarantee that the effort will be worth it. And to be honest, if |
236 |
> > the only benefit is prefix-support then most everybody will consider the |
237 |
> > effort to outweigh the return. |
238 |
> |
239 |
> I want to distinguish between the effort for portage itself, which does |
240 |
> not immediately hit the ebuilds - it's just a portage-feature not used |
241 |
> by the gentoo-ebuild-tree - and the effort to get ebuilds supporting |
242 |
> prefix/home install. |
243 |
> |
244 |
> There's always the way to have a separate ebuild-tree for prefix- |
245 |
> installation, not containing ebuilds for linux-kernel and the like... |
246 |
|
247 |
It's a huge amount of work to get full support into portage as well. However, |
248 |
most of it is working through the concepts involved and designing |
249 |
accordingly. The actual implementation differs little to what is required for |
250 |
the current system. |
251 |
|
252 |
Regards, |
253 |
Jason Stubbs |