Gentoo Archives: gentoo-dev

From: Jason Stubbs <jstubbs@g.o>
To: gentoo-dev@l.g.o
Subject: Re: [gentoo-dev] new glep draft: Portage as a secondary package manager
Date: Sat, 21 May 2005 01:22:48
Message-Id: 200505211022.24736.jstubbs@gentoo.org
In Reply to: Re: [gentoo-dev] new glep draft: Portage as a secondary package manager by Michael Haubenwallner
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

Replies

Subject Author
Re: [gentoo-dev] new glep draft: Portage as a secondary package manager Michael Haubenwallner <michael.haubenwallner@×××××××.at>