[Mageia-dev] Packaging errors to fix

Maarten Vanraes maarten.vanraes at gmail.com
Tue Mar 15 22:57:59 CET 2011


Op dinsdag 15 maart 2011 19:06:28 schreef Michael Scherer:
> Le mardi 15 mars 2011 à 18:34 +0200, Anssi Hannula a écrit :
> > On 15.03.2011 15:38, Michael Scherer wrote:
> > > 3rd : dbus. There is a vicious loop between dbus and its own library,
> > 
> > So? Both of the requires are correct from what I know, and dependency
> > loops are not forbidden.
> > 
> > I can imagine there are also some more clear cases of such loops, like
> > library A depending on B, B on C, and C again on A, which I personally
> > don't believe are in the need of "solving".
> 
> We did have some troubles with loops at building time when we
> bootstrapped the distribution, and we clearly wanted to remove them as
> much as possible.
> 
> A loop at runtime is potentially the sign of a loop at build time too.
> So we should try to avoid them IMHO.
> 
> In the case of dbus, yes, the requires are correct, but the ordering
> seems wrong during the test. So either there is a bug in what ever jbj
> is running, or we do use Requires(post) in a wrong way, or that's a
> change somewhere. In any case, there is still the others problem to look
> at :)

imho, i think if loops are unneeded or solvable, we should try to do that if 
it's doable in a short time.

when we were talking about loops at bootstrap time, this is a whole different 
area, i think most of the loops are not really solvable, but we should find a 
way to make it easier and possibly documented, or even automagically...

for example:
 - you can bootstrap X by installing Y without functionality Z

if we would have some way to note how this is done, perhaps we can even do it 
automagically on buildsystem level.

looking at this from my pov, perhaps having a spec file macro isn't a bad idea:

%bootstrap(%feature1 %feature2 ...)

would be nice, if building it with for example --bootstrap, would deactivate 
all those features

then you could let buildsystem build once with --bootstrap and once without it 
after the dependencies are done

if you'd look at things even more, we could do something like this:

%build_order(<group>:<order_nr>) 

then with buildsystem one could build a bunch of packages and the buildsystem 
could order them according to the group.


eg java: (totally fictional example, i know nothing about java packaging)
============================================

in package A:
----------------
%bootstrap(maven eclipse)
%build_order(java:1)

%if %maven
...
%endif



in package B:
----------------
%bootstrap(maven)
%build_order(java:2)

%if %maven
...
%endif


in package maven:
-----------------------
%bootstrap(eclipse)
%build_order(java:500)



you will all agree that i'm talking bollocks here, as this is totally not how 
it is.

However, if you have something like this, you could theoretically say to 
buildsystem: "build java for me"

it could then find all spec files with build_order java, sort them on the 
number, and build and submit them all in the order. and after it's done, do 
this again with the ones that had bootstrap defined.


to me, it sounds like a good theoretical solution and it would still be 
usefull, even after bootstrapping. no idea if it would take alot of work or 
not or even practically possible.


More information about the Mageia-dev mailing list