> On Jan 6, 2018, at 4:48 AM, Antoine Martin <[email protected]> wrote:
> 
> Hi,
> 
> The xpra project is finally trying to migrate from GTK2 to GTK3, and
> also making the jump to Python 3 whilst we're at it.
> We have a fairly large number of python module dependencies for which we
> have created a moduleset:
> http://xpra.org/trac/browser/xpra/trunk/osx/jhbuild/xpra-python.modules
> 
> What is the recommended way to build the same module for both python2
> and python3?
> I was hoping to minimize the moduleset duplication, but the python3
> version needs to depend on "python3" so they need a different XML node.
> Unless we can just remove the python dependency altogether and always
> ensure it is built early?
> 
> Then I was hoping to use the distutils "python3" attribute to avoid
> having to mess with symlinks from python to python3, but that didn't
> seem to have the desired effect. Am I missing something?
> 
> Another problem with building them twice is that jhbuild will keep the
> existing checkout directory since the path is the same, and the source
> doesn't get cleaned automatically so it seems quite easy to get things
> messed up.
> 
> Are there any better solutions?
> 
> 
> BTW, I believe there's a mistake on the home page:
> https://wiki.gnome.org/Projects/GTK+/OSX/Building
> It should say:
> ln -sf python3-config python-config
> Instead of:
> ln -sf python3-config python

You can set up the dependencies to build for *either* Py2 or Py3 by putting 
both in an <after> block instead of a <dependencies> block. The caveat is that 
you must then include one or the other in the list of modules to build, either 
directly or indirectly via a meta-module.

For a module to be built for both, put both in the dependencies. In that case 
the underlying project must be written to work with two versions of python at 
once. That’s easy for a cmake, meson, or autotools project but is beyond the 
abilities of waf and distutils.

No, you’re not missing anything about the distutils python3 attribute, but 
unfortunately a couple of projects are: They insist on using the python and 
python-config symlinks regardless of what we tell distutils or set in the 
environment.

Jhbuild always builds clean if you build out-of-tree (set ‘buildroot in your 
jhbuildrc-custom)’ , but some projects do dumb things in their build system 
that makes it not work. In those cases you can pass --clean to jhbuild on the 
command line or setting “makeclean” in your jhbuildrc-custom. I recommend that 
you build out-of-tree as much as possible. Set 
supports-out-of-tree-builds=“false” in any modules where the underlying project 
requires building in source.

You’re right about the wiki page. Fixed, thanks.

Regards,
John Ralls

_______________________________________________
Gtk-osx-devel-list mailing list
[email protected]
https://mail.gnome.org/mailman/listinfo/gtk-osx-devel-list

Reply via email to