building phoenix, windows 7 x64

Good day.

I'm trying to build Phoenix but I'm failing miserably. This is on
Windows 7 x64 with Visual C++ 2012 RC with the debug variant of
everything. Most of the paths are shortened for clarity.

2) the trunk of wxWidgets, currently rev 72809:
   a) I rebuilt the doxygen xml files with docs/doxygen/regen.bat
   b) I copied include/wx/msw/setup0.h to setup.h and changed two
      defines:
          #define wxUSE_DEBUG_CONTEXT 1
          #define wxUSE_MEMORY_TRACING 1
   c) then "nmake -f makefile.vc" with the following options:

Phoenix's build.py can do those steps for you.

2) the trunk of phoenix (also 72809):
   a) I changed MONOLITHIC to 1 manually in config.py because I couldn't
      find a command line option for it
   b) set WXWIN=d:\wxwidgets
   c) python_d build.py 3.3 etg sip build_wx --debug --unicode

This fails when running sip (backslashes added by me for clarity):

   Running command: sip
   d:\phoenix\bin\sip-4.13.4-snapshot-9b330b545c65-win32.exe \
     -w -o -T -g -I d:\phoenix\src -I d:\phoenix\sip\gen \
     -c c:/tmp/tmp58bwa1 -b sip/cpp/_core.sbf -X pycode_core:wx/core.py \
     sip/gen/_core.sip
   sip: wxImageHistogramBase has not been defined

This is fixed, although it may not have been pushed up to the SVN server yet.

From what I can understand, wxImageHistogramBase fails because of the
WX_DECLARE_EXPORTED_HASH_MAP macro. For giggles, I removed it from
image.sip:1485 and tried again:

   d:\phoenix\bin\sip-4.13.4-snapshot-9b330b545c65-win32.exe \
     -w -o -T -g -I d:\phoenix\src -I d:\phoenix\sip\gen \
     -c c:/tmp/tmpx0cnyx -b sip/cpp/_core.sbf -X pycode_core:wx/core.py \
     sip/gen/_core.sip
   sip: wxList has not been defined

The same with this one. I'll push all my current changes up to SVN soon.

···

On 10/28/12 12:54 AM, Jonathan McDougall wrote:

--
Robin Dunn
Software Craftsman

  1. the trunk of phoenix (also 72809):
    a) I changed MONOLITHIC to 1 manually in config.py because I
    couldn’t find a command line option for it
    b) set WXWIN=d:\wxwidgets
    c) python_d build.py 3.3 etg sip build_wx --debug --unicode

[…]

sip: wxImageHistogramBase has not been defined
sip: wxList has not been defined

The same with this one. I’ll push all my current changes up to SVN
soon.

Alright, I had to do a few changes.

I updated wxWidgets to 72958 because of issues with wxAppConsole::
Base::SetCLocale() and wxControlBase::DoGetSizeFromTextSize(int, int)
being undefined. I also changed wxUSE_POSTSCRIPT to 1 since
sip_corewxPostScriptDC.cpp was failing because wxPostScriptDC was
undeclared. I then ran

nmake -f makefile.vc
COMPILER_VERSION=110 BUILD=debug SHARED=1 UNICODE=1
MONOLITHIC=1 USE_OPENGL=1 TARGET_CPU=X64 DEBUG_RUNTIME_LIBS=1

Note that I added COMPILER_VERSION=110 so that it corresponds to the
changes below in config.py.

I updated phoenix to 72958 also and had to change:

config.py:186
changed makeLibName('') to self.makeLibName('')

config.py:843
added a case for 'Version 17' to return '110' since I'm using Visual
C++ 2012

etg/_stc.py:36
uncommented DEPENDS and OTHERDEPS

I also had to make sure the CPU environment variable was defined to X64
or the script would try using %WXWIN%/lib/vcFIXME_dll.

I had to clean the sip files because they don’t seem to get rebuilt
automatically. Then I went with

python_d build.py 3.3 dox etg sip setup_py --debug --unicode

Everything went well until linking where various wxGLCanvas and
wxGLCanvasBase member functions were undefined. I had to change
config.py:186 from

self.libs += self.makeLibName('')

to

self.libs += self.makeLibName('') + self.makeLibName('gl')

so that wxmsw29ud_gl.lib got linked in.

The notice when the build is done talks about demo/demo.py, but I
couldn’t find that one.

I tried the simple

import wx

app = wx.App(False)
frame = wxFrame(None, wx.ID_ANY, "Hello World")
frame.Show(True)
app.MainLoop()

but got a crash (backslashes added by me):

siplib_d.pyd!sipIsRangeEnabled(\
    _sipExportedModuleDef * em, int range_index) Line 292 C
siplib_d.pyd!sipInitAPI(\
    _sipExportedModuleDef * em, _object * mod_dict) Line 158 C
siplib_d.pyd!sip_api_init_module(\
    _sipExportedModuleDef * client, _object * mod_dict) Line 1331 C
_core_d.pyd!PyInit__core() Line 18458 C++

The first problem I found was in sip_corecmodule.cpp:18228 in the
definition of sipModuleAPI__core where the value of em_nrtypes was
generated as 543 while typesTable only had 542 elements in it. This
gives me the impression that there’s a fundamental problem with my
build, but I changed it manually to 542 and recompiled.

I then got another crash:

siplib_d.pyd!createClassType(\
    _sipExportedModuleDef * client, _sipClassTypeDef * ctd,\
    _object * mod_dict) Line 5483 C
siplib_d.pyd!createClassType(\
    _sipExportedModuleDef * client, _sipClassTypeDef * ctd,\
    _object * mod_dict) Line 5497 C
siplib_d.pyd!createClassType(\
    _sipExportedModuleDef * client, _sipClassTypeDef * ctd,\
    _object * mod_dict) Line 5497 C
siplib_d.pyd!createClassType(\
    _sipExportedModuleDef * client, _sipClassTypeDef * ctd,\
    _object * mod_dict) Line 5497 C
siplib_d.pyd!sip_api_init_module(\
    _sipExportedModuleDef * client, _object * mod_dict) Line 1420 C
_core_d.pyd!PyInit__core() Line 18458 C++

The crash is on

do
    ++nrsupers;
while (!sup++->sc_flag);    <-

where ‘sup’ was initialized from ctd->ctd_supertype and ctd seems to
be pointing to garbage. However, the ctd pointer in the previous frame
looks fine to me (ctd_docstring is “BoxSizer(orient=HORIZONTAL)…”).
It looks like what getGeneratedType() returned and got passed to
createClassType() was invalid.

This may indicate that things weren’t built properly. Do you have an
idea?

Thanks.

···

On Thursday, November 8, 2012 8:12:58 PM UTC-5, Robin Dunn wrote:

On 10/28/12 12:54 AM, Jonathan McDougall wrote:


Jonathan McDougall