Re: Back

[ Thread Index | Date Index | More lists.tuxfamily.org/slitaz Archives ]


On Thu, 8 Dec 2011 18:52:21 +0100 (CET)
"Pascal Bellard" <pascal.bellard@xxxxxxxxxx> wrote:

> The online tool find build-depends loop chains un 35 packages :
> 
> cups-dev cups dbus-glib-dev exo glib-dev glib gobject-introspection-dev
> gobject-introspection gtk+ hal hal-dev libboost-dev libboost-signals-dev
> libexo-dev libgio-dev libnotify libnotify-dev libsdl-dev libsdl-image-dev
> libsdl-image libsdl-mixer-dev libsdl-mixer libxfce4ui-dev libxfce4ui
> poppler-apps poppler python-dev startup-notification-dev xfce4-panel-dev
> xfce4-panel xfconf xfconf-dev xorg-libXext-dev xorg-libXi-dev xorg-libXi
> 
> Note 1 : It detects the first loop only for each package.
> Note 2 : The URLs above need the ending dot.


Ok I didn't get how it works the first time: I didn't waited for the
result and used the search box to look for a particular package,
without result of course.

My point is only about build-depends; because dependency loops are not
a problem provided packages involved don't contains overlapping files.
You simply install both and that's ok.

I really think there's only one build dependency loop at all in the
wok, involving the 3 packages I cited. I think something in the method
used by the online tool is wrong. A strong hint is that *-dev packages
can't be involved in a build-dependency loop given that they don't have
build-depends themselves.

tazwok doesn't contains such tool to describes bdeps loops; and I've no
method for that. But I can tell how I find out loops using it. It
happens when generating the cookorder of all the packages in the wok.

The method is:

1. list all packages wich don't have WANTED setted, and their own build
depends
# Explanation: cook order doesn't include packages with
WANTED setted because we don't compile them but the wanted one.
2. for all build depends, replace all packages which have WANTED
setted by the one declared as wanted.
# Explanation: from a cook order point of view, build-depends give
information about which package should be cooked before this one.
Again, we don't cook packages having WANTED setted, we cook the wanted
one then split it up at package generation time.

So, we end up with something where packages are considered unsplitted.

3. for each package in the crafted list, test if another package need
it to be cooked. If not, move it to another list: the inverse cookorder.
Continue iteratively until all is proceded (this imply several
iterations over the list).

At this point, if there's a dependency loop you can detect it quite
simply. When there's one the list is left unchanged after a full cycle
of test over it.

My code does not more. It simply tell that there's a loop and left what
has not been proceded in /tmp directory. Then I'm looking for the loop
myself in this file.

I'm not sure, but I suspect the online tool to find build-dependency
loops between packages which comes from the same source (like
glib/libgio or libsdl-*). Or maybe I'm not reading the output right.

-- 
GoKhlaYeh <gokhlayeh@xxxxxxxxxx>

---
SliTaz GNU/Linux Mailing list - http://www.slitaz.org/


Mail converted by MHonArc 2.6.19+ http://listengine.tuxfamily.org/