trying to catch up on all this...
On Jun 3, 2010, at 12:05 AM, Glynn Clements wrote:
>
> Massimo Di Stefano wrote:
>
>> i applied the patch and tried to rebuild (after make distclean)
>> File
>> "/Users/Shared/source/grass_trunk/lib/python/ctypes/ctypesgencore/parser/pplexer.py",
>> line 60, in __new__
>> value = value[1:-1].decode('string_escape')
>> ValueError: invalid \x escape
>
> This looks like an issue with Apple's "C" headers being incompatible
> with anything other than Apple's version of gcc.
>
> I think that it's going to need someone with a Mac to investigate the
> issues and make the necessary changes to ctypesgen to either support
> Apple's "enhanced" C dialect, or to provide the necessary switches to
> disable the enhancements (if such switches exist).
>
Apple's GCC is GCC. The preprocessor is custom. When I looked into ctypesgen,
it says it uses the preprocessor.
Did you take a trunk snapshot of ctypesgen? When? I see a lot of differences
between the current ctypesgen trunk and the copy in GRASS trunk. The last
batch of changes was in March. And there is a OS X 10.6-specific fix in there
(adding -U __BLOCKS__ to the parse command).
What I'm seeing so far is that there are errors in lib/python/ctypes that are
not showing up in the GRASS error log, so Michael and Massimo might have missed
them.
Removing the -U __GNUC__ causes even more errors. Adding the -U __BLOCKS__ bit
that's in trunk removes a couple errors. Using ctypesgen trunk does no more
than adding the -U __BLOCKS__ bit.
Errors I'm getting (after adding the -U __BLOCKS__ change):
- gprojects.h (from proj.py) can't find proj_api.h or ogr_srs_api.h - their
-I's are not in the ctypesgen preprocessor command
- same for ogr and geos headers in vector.py and vedit.py
- nviz.py: /usr/include/TargetConditionals.h:284:10: error: #error
TargetConditionals.h: unknown compiler
(probably included from needing AGL and Application Services headers from the
system)
this appears to be caused by undefining __GNUC__, but leaving __GNUC__
defined causes lots of syntax errors in system headers, which spill into grass
headers. I don't know how this can be fixed.
proj.py, vector.py and vedit.py still get created, though I don't know if they
work. nviz.py has a ValueError: invalid \x escape, and doesn't get created
(make error, yet it doesn't get caught by the grass error log).
For wxpython, as Michael and others have reported, wxpython does not get
compiled. The error has to do with it using the system python executable,
which runs 64bit, but wxpython is not 64bit. This has come up before and there
was no solution implemented. At runtime, OSX GRASS has a python wrapper that
will run python in 32bit mode if needed by wxpython, but this is not available
at compile time.
The workaround is to copy this wrapper to some location and add that location
to your PATH before compiling.
I think the reason it used to work when compiling inside the wxpython folder is
that the top level compile would compile the OSX app, which copied the python
wrapper to the dist/bin folder. Then running make in wxpython would run the
python wrapper for compiling vdigit/nviz. When I changed the OSX app makefiles
to simplify them (r42158), I made this step an install step.
What do you think of this: I restore the python wrapper as a compile step, to
copy it to dist/bin, then reorder the Mac compilation to be before lib
(compilation in the macosx does not depend on any GRASS compilation)? This
would fix the wxpython 32/64bit compilation problem on OSX.
Or I could move the python wrapper copy-to-bin step to lib/init?
-----
William Kyngesburye <kyngchaos*at*kyngchaos*dot*com>
http://www.kyngchaos.com/
"I ache, therefore I am. Or in my case - I am, therefore I ache."
- Marvin
_______________________________________________
grass-dev mailing list
[email protected]
http://lists.osgeo.org/mailman/listinfo/grass-dev