[GRASS-dev] Cannot start wxGUI: NotImplementedError: wxGCDC is not available on this platform

Hi,

after upgrade to Mandriva 2009.1 (64bit) and recompilation of 6.5
without problems, I cannot start the wxGUI:

GRASS 6.5.svn (nc_spm_08):~/grass64 > Traceback (most recent call last):
  File "/home/neteler/grass64/dist.x86_64-unknown-linux-gnu/etc/wxpython/wxgui.py",
line 1657, in <module>
    sys.exit(main())
  File "/home/neteler/grass64/dist.x86_64-unknown-linux-gnu/etc/wxpython/wxgui.py",
line 1650, in main
    app = GMApp(workspaceFile)
  File "/home/neteler/grass64/dist.x86_64-unknown-linux-gnu/etc/wxpython/wxgui.py",
line 1572, in __init__
    wx.App.__init__(self, False)
  File "/usr/lib64/python2.6/site-packages/wx-2.8-gtk2-unicode/wx/_core.py",
line 7938, in __init__
    self._BootstrapApp()
  File "/usr/lib64/python2.6/site-packages/wx-2.8-gtk2-unicode/wx/_core.py",
line 7512, in _BootstrapApp
    return _core_.PyApp__BootstrapApp(*args, **kwargs)
  File "/home/neteler/grass64/dist.x86_64-unknown-linux-gnu/etc/wxpython/wxgui.py",
line 1588, in OnInit
    workspace = self.workspaceFile)
  File "/home/neteler/grass64/dist.x86_64-unknown-linux-gnu/etc/wxpython/wxgui.py",
line 176, in __init__
    self.NewDisplay(show=False)
  File "/home/neteler/grass64/dist.x86_64-unknown-linux-gnu/etc/wxpython/wxgui.py",
line 1215, in NewDisplay
    auimgr=self._auimgr, showMapDisplay=show)
  File "/home/neteler/grass64/dist.x86_64-unknown-linux-gnu/etc/wxpython/gui_modules/wxgui_utils.py",
line 71,in __init__
    super(LayerTree, self).__init__(parent, id, pos, size,
style=style, ctstyle=ctstyle)
  File "/usr/lib64/python2.6/site-packages/wx-2.8-gtk2-unicode/wx/lib/mixins/treemixin.py",
line 488, in __init__
    super(DragAndDrop, self).__init__(*args, **kwargs)
  File "/usr/lib64/python2.6/site-packages/wx-2.8-gtk2-unicode/wx/lib/agw/customtreectrl.py",
line 1865, in __init__
    self.SetImageListCheck(16, 16)
  File "/usr/lib64/python2.6/site-packages/wx-2.8-gtk2-unicode/wx/lib/agw/customtreectrl.py",
line 4090, in SetImageListCheck
    x=sizex, y=sizey))
  File "/usr/lib64/python2.6/site-packages/wx-2.8-gtk2-unicode/wx/lib/agw/customtreectrl.py",
line 1933, in GetControlBmp
    dc = wx.GCDC(mdc)
  File "/usr/lib64/python2.6/site-packages/wx-2.8-gtk2-unicode/wx/_gdi.py",
line 6013, in __init__
    _gdi_.GCDC_swiginit(self,_gdi_.new_GCDC(*args))
NotImplementedError: wxGCDC is not available on this platform.

Versions:
rpm -qa | grep wx | sort
lib64wxgtk2.8-2.8.9-3mdv2009.1
lib64wxgtk2.8-devel-2.8.9-3mdv2009.1
lib64wxgtkgl2.8-2.8.9-3mdv2009.1
lib64wxgtkglu2.8-2.8.9-3mdv2009.1
lib64wxgtku2.8-2.8.9-3mdv2009.1
lib64wxgtku2.8-devel-2.8.9-3mdv2009.1
lib64wxPythonGTK2.8-2.8.9.2-1mdv2009.1
lib64wxPythonGTK2.8-devel-2.8.9.2-1mdv2009.1
wxgtk2.8-2.8.9-3mdv2009.1
wxPythonGTK-2.8.9.2-1mdv2009.1
wxPythonGTK-wxversion-2.8.9.2-1mdv2009.1

rpm -qa | grep cairo
lib64cairomm1.0_1-1.8.0-1mdv2009.1
lib64cairo2-1.8.6-3mdv2009.1
python-cairo-1.8.2-1mdv2009.1
lib64cairo-devel-1.8.6-3mdv2009.1
libcairo2-1.8.6-3mdv2009.1

rpm -qa | grep swig
swig-1.3.38-2mdv2009.1

grep wxGCDC /usr/include/wx-2.8/wx/*
/usr/include/wx-2.8/wx/dcgraph.h:#define wxGCDC wxDC
/usr/include/wx-2.8/wx/dcgraph.h:class WXDLLEXPORT wxGCDC:
/usr/include/wx-2.8/wx/dcgraph.h: DECLARE_DYNAMIC_CLASS(wxGCDC)
/usr/include/wx-2.8/wx/dcgraph.h: DECLARE_NO_COPY_CLASS(wxGCDC)
/usr/include/wx-2.8/wx/dcgraph.h: wxGCDC(const wxWindowDC& dc);
/usr/include/wx-2.8/wx/dcgraph.h: wxGCDC( const wxMemoryDC& dc);
/usr/include/wx-2.8/wx/dcgraph.h: wxGCDC();
/usr/include/wx-2.8/wx/dcgraph.h: virtual ~wxGCDC();

No compilation errors...

Starting via
g.gui wxpython
pops up the old map screen and then it closes silently.

It the problem that wxPython <= 2.8.9.2 requires swig <= 1.3.36?
I have
rpm -qil wxgtk2.8-2.8.9-3mdv2009.1
Name : wxgtk2.8 Relocations: (not relocatable)
Version : 2.8.9 Vendor: Mandriva
Release : 3mdv2009.1 Build Date: Mon 23 Feb
2009 10:39:35 AM CET

wx-config --version
2.8.9

Any ideas?

Markus

Markus Neteler wrote:

after upgrade to Mandriva 2009.1 (64bit) and recompilation of 6.5
without problems, I cannot start the wxGUI:

   _gdi_.GCDC_swiginit(self,_gdi_.new_GCDC(*args))
NotImplementedError: wxGCDC is not available on this platform.

It appears that wxPython doesn't like your version of wxWidgets.

This doesn't look GRASS-specific, although it's possible that loading
the vdigit and nviz modules is affecting which version of wxPython is
used. You could try building --without-wxwidgets to see if that has
any impact.

--
Glynn Clements <glynn@gclements.plus.com>

For the record:

On Sat, May 2, 2009 at 10:51 PM, Markus Neteler <neteler@osgeo.org> wrote:

Hi,

after upgrade to Mandriva 2009.1 (64bit) and recompilation of 6.5
without problems, I cannot start the wxGUI:

GRASS 6.5.svn (nc_spm_08):~/grass64 > Traceback (most recent call last):
File "/home/neteler/grass64/dist.x86_64-unknown-linux-gnu/etc/wxpython/wxgui.py",
line 1657, in <module>

...

File "/usr/lib64/python2.6/site-packages/wx-2.8-gtk2-unicode/wx/lib/agw/customtreectrl.py",
line 1933, in GetControlBmp
dc = wx.GCDC(mdc)
File "/usr/lib64/python2.6/site-packages/wx-2.8-gtk2-unicode/wx/_gdi.py",
line 6013, in __init__
_gdi_.GCDC_swiginit(self,_gdi_.new_GCDC(*args))
NotImplementedError: wxGCDC is not available on this platform.

Solution:
recompile wxPythonGTK-2.8.9.2 with '--enable-graphics_ctx' in the SPEC file
for configure. Filed upstream as https://qa.mandriva.com/show_bug.cgi?id=51272

Now it works for me (again), also GRASS 7 of course.

Markus

On Fri, May 29, 2009 at 12:14 AM, Markus Neteler <neteler@osgeo.org> wrote:

On Sat, May 2, 2009 at 10:51 PM, Markus Neteler <neteler@osgeo.org> wrote:

after upgrade to Mandriva 2009.1 (64bit) and recompilation of 6.5
without problems, I cannot start the wxGUI:

...

line 6013, in __init__
_gdi_.GCDC_swiginit(self,_gdi_.new_GCDC(*args))
NotImplementedError: wxGCDC is not available on this platform.

Solution:
recompile wxPythonGTK-2.8.9.2 with '--enable-graphics_ctx' in the SPEC file
for configure. Filed upstream as https://qa.mandriva.com/show_bug.cgi?id=51272

Cool, Mandriva propagated today the updated package through the update channel.

Markus