[GRASS-dev] [GRASS GIS] #1819: problems compiling map swipe, animation, modeler, and r.li.setup
GRASS GIS
trac at osgeo.org
Thu Feb 19 15:30:21 PST 2015
#1819: problems compiling map swipe, animation, modeler, and r.li.setup
-----------------------------+----------------------------------------------
Reporter: cmbarton | Owner: grass-dev@…
Type: defect | Status: new
Priority: normal | Milestone: 7.0.0
Component: wxGUI | Version: svn-trunk
Keywords: g.gui.* modules | Platform: MacOSX
Cpu: OSX/Intel |
-----------------------------+----------------------------------------------
Comment(by cmbarton):
Replying to [comment:15 wenzeslaus]:
> Replying to [comment:14 cmbarton]:
> > Which items are fixed in r64677? I can recompile on Thursday but need
to know what to look for.
>
> `toolboxes.py` is called (as a script) during compilation to build the
XMLs for toolboxes. `toolboxes.py` before r64677 required wxPython even
when executed as a script. The environment to run GRASS modules (and
`toolboxes.py` script) during compilation is somehow incomplete. The wrong
environment cases wrong wxPython/wxWidgets to load. Then import fails and
the thus `toolboxes.py` script fails to create the XMLs.
>
> r64677 removes the need to import wxPython when `toolboxes.py` is
executed as a script. Thus the script does not need the build environment
to be perfect. Thus it should work on Mac OS X and build the XMLs.
>
> This is unrelated to the original topic of this ticket. This relates to
XML, toolboxes and menu problem mentioned in comment:10.
>
> > On the Mac, because of problems running wxPython for 64 bit, the
compiling environment is forced to 32 bit for Python. That should not be a
problem and indeed is not for all compiling except these modules, all of
which use a new windowing class developed initially for map swipe.
>
> I have no idea about which class you are talking about. What the
directories which were failing has in common is that they contain
`g.gui.*` modules. All modules (`r.*`, `v.*`, ..., `g.gui.*`) needs to be
executed during compilation to build manual pages. The issue is that
`g.gui.*` required wxPython to be imported. Thus hitting the same issue
with incomplete build environment as mentioned above. The commits r64664
and r64674 remove the need to import wxPython packages in `g.gui.*` when
only `grass.script.core.parser()` is called to obtain the interface
description (execution ends with `parser()` call when the module is asked
just for the interface using `--interface-description`). The trick in
r64664 and r64674 is that imports are done only after `parser()` call in
the body of `main()` function where the packages are needed (and not using
the standard import at the begging of the file).
>
> > Perhaps they are trying to force the import of 64 bit wx, which is
incorrect for current Mac compiling, and would conflict with the 32 bit
Python environment set as default for compiling.
>
> They are not trying to do that, at least there is nothing in GRASS GIS
source code which would indicate that (please check me). I cannot say what
is in wxPython itself (do you think that there is some class?). Supposing
that wxPython is all right, the compilation environment must be wrong.
>
> > That seems to be what is going on with the failure to correctly create
the menu xml files too. The errors are the same--they cannot import wx.
>
> They are indeed the same and thus r64664, r64674 and r64677 are using
the same approach of avoiding global imports of wx-related packages.
>
> > It acts like there is a hardwired call to Python or wxPython somewhere
instead of calling it using the system default path.
>
> If there is something wrong in GRASS GIS wxGUI source code or source
code of wxPython itself and you would find it, it would be very useful. I
don't know where is the problem but I haven't seen anything like this in
wxGUI source code. And wxGUI and modules are running when started from
regular GRASS session. Therefore I think that the problem is in build
environment, i.e. GRASS Makefiles.
I am pretty sure that this must be either in a wxPython class created for
mapswipe and reused for other modules OR something in the make/build
environment used for part of the wxPython code. Or perhaps a combination
of these. So far, I've tried to track it down, working with Anna but have
failed so far.
I hesitate to suggest a workaround instead of a fix. But one possibility
that might be helpful is to automatically run the Python code to build the
menu xml files each time GRASS is launched. This would eliminate the
effects of this compiler problem (thought not the source). It could also
have the benefit of providing an updated menu if there are any additions
or subtractions to the modules in bin or scripts.
Michael
--
Ticket URL: <http://trac.osgeo.org/grass/ticket/1819#comment:17>
GRASS GIS <http://grass.osgeo.org>
More information about the grass-dev
mailing list