Question on bootstrapping pygobject

Helmut Grohne helmut at subdivi.de
Tue Apr 19 04:33:33 UTC 2016


Hi Michael,

On Tue, Apr 19, 2016 at 12:39:13AM +0200, Michael Biebl wrote:
> Am 19.04.2016 um 00:04 schrieb John Paul Adrian Glaubitz:
> > Dear GNOME developers!
> > 
> > I'm currently working on the powerpcspe port and I have run into a
> > somewhat deadlock situation.
> > 
> > I'm trying to build pygobject which turns out to be more difficult
> > than I expected due to the fact that pygobject builds-depends on
> > gnome-pkg-tools which has a dependency on python3-gi which is built
> > by pygobject.
> > 
> > Is there a particular package that can be built with --profile=stage1
> > to resolve this issue?
> 
> CCing Helmut here, he has a good grasp on this topic.

Talking about cycles, Adrian already looped me in before contacting you,
but I have no clue about gir stuff as gir cannot be cross built at
all[1]. Let me try to figure this out nonetheless.

So the immediate cycle here seems to be (but there may be more):

 * src:pygobject Build-Depends gnome-pkg-tools
 * gnome-pkg-tools Depends on python3-gi
 * python3-gi is built from src:pygobject

This particular cycle appears to be a non-cycle, because a quick find
and grep based study of the packages involved indicates that
src:pygobject only uses non-Python pieces of gnome-pkg-tools, namely two
cdbs rules uploaders.mk and gnome-get-source.mk. If this analysis is
correct (please verify), then the outcome seems set: Add a stage to
src:gnome-pkg-tools. Except that gnome-pkg-tools is Arch:all.

What's the problem with being Arch:all?  In a cross-based bootstrap all
Arch:all packages are considered available right from the start. So as
far as I can see, the only choice here is to split gnome-pkg-tools into
two binary packages where one (e.g. gnome-cdbs-rules) contains the
pieces that don't need Python and the other contains the rest and
Depends on the former. Then src:pygobject can switch its Build-Depends
and no other package is affected. No stage involved. But this all
depends on the correctness of the analysis above.

The other major way to break such cycles is unavailable to us as I
mentioned at the start: cross building. The installation set would
include python3-gi for the build architecture, which is generally
available. This cycle would simply go away when switching to cross
compilation.

Hope this helps

Helmut

[1] https://wiki.linaro.org/PeterPearse/GobjectIntrospection




More information about the pkg-gnome-maintainers mailing list