Problem building CVS version on OS X

Hi folks,

Thanks for the quick help. I do also have numarray installed, so
I don't think the NUMARRAY setting is the problem.

Jouni, thanks for the attempted fix, but it continues to fail
for me, at the same place:

gcc: src/_na_transforms.cpp
src/_na_transforms.cpp: In member function `Py::Object
   Bbox::update_numerix(const Py::Tuple&)':
src/_na_transforms.cpp:447: error: `isnan' not declared
src/_na_transforms.cpp:494: error: `isnan' undeclared (first use this function)
src/_na_transforms.cpp:494: error: (Each undeclared identifier is reported only
   once for each function it appears in.)
src/_na_transforms.cpp: In member function `Py::Object
   Bbox::update_numerix(const Py::Tuple&)':
src/_na_transforms.cpp:447: error: `isnan' not declared
src/_na_transforms.cpp:494: error: `isnan' undeclared (first use this function)
src/_na_transforms.cpp:494: error: (Each undeclared identifier is reported only
   once for each function it appears in.)
error: Command "gcc -fno-strict-aliasing -Wno-long-double -no-cpp-precomp -mno-fused-madd -fno-common -dynamic
-DNDEBUG -g -O3 -Wall -Wstrict-prototypes -Isrc -I. -I/usr/local/include -I/usr/include -I/sw/include -I. -I/Library/
Frameworks/Python.framework/Versions/2.4/include/python2.4 -c src/_na_transforms.cpp -o build/temp.darwin-7.9.0-
Power_Macintosh-2.4/src/_na_transforms.o -DNUMARRAY=1" failed with exit status 1

I've verified that the new "using std::isnan;" line is in _transforms.cpp
and is copied to _na_transforms.cpp; it just doesn't seem to satisfy
the compiler [gcc 3.3 20030304 (Apple Computer, Inc. build 1671) on 10.3.9].
I'm not a c++ programmer, and I'm stumped as to what further to try.
Jouni, did this indeed solve your build problems completely? Anyone
have any other suggestions?

Thanks,
Tom

···

-------------------------------------------------
This mail sent through IMP: http://horde.org/imp/

Hmm... I've tested with gcc 3.3 on linux, so I'm not sure why it's breaking.

First, check if adding "#include <math.h>" will help.

Some other ideas:
* Do "man isnan" from the command line and see if it specifies another
header file.
* Search inside /usr/include for isnan and see what comes up.

Good luck,
Andrew

Tom Loredo wrote:

···

Hi folks,

Thanks for the quick help. I do also have numarray installed, so
I don't think the NUMARRAY setting is the problem.

Jouni, thanks for the attempted fix, but it continues to fail
for me, at the same place:

gcc: src/_na_transforms.cpp
src/_na_transforms.cpp: In member function `Py::Object
  Bbox::update_numerix(const Py::Tuple&)':
src/_na_transforms.cpp:447: error: `isnan' not declared
src/_na_transforms.cpp:494: error: `isnan' undeclared (first use this function)
src/_na_transforms.cpp:494: error: (Each undeclared identifier is reported only
  once for each function it appears in.)
src/_na_transforms.cpp: In member function `Py::Object
  Bbox::update_numerix(const Py::Tuple&)':
src/_na_transforms.cpp:447: error: `isnan' not declared
src/_na_transforms.cpp:494: error: `isnan' undeclared (first use this function)
src/_na_transforms.cpp:494: error: (Each undeclared identifier is reported only
  once for each function it appears in.)
error: Command "gcc -fno-strict-aliasing -Wno-long-double -no-cpp-precomp -mno-fused-madd -fno-common -dynamic
-DNDEBUG -g -O3 -Wall -Wstrict-prototypes -Isrc -I. -I/usr/local/include -I/usr/include -I/sw/include -I. -I/Library/
Frameworks/Python.framework/Versions/2.4/include/python2.4 -c src/_na_transforms.cpp -o build/temp.darwin-7.9.0-
Power_Macintosh-2.4/src/_na_transforms.o -DNUMARRAY=1" failed with exit status 1

I've verified that the new "using std::isnan;" line is in _transforms.cpp
and is copied to _na_transforms.cpp; it just doesn't seem to satisfy
the compiler [gcc 3.3 20030304 (Apple Computer, Inc. build 1671) on 10.3.9].
I'm not a c++ programmer, and I'm stumped as to what further to try.
Jouni, did this indeed solve your build problems completely? Anyone
have any other suggestions?

Thanks,
Tom

-------------------------------------------------
This mail sent through IMP: http://horde.org/imp/

-------------------------------------------------------
This SF.net email is sponsored by: Splunk Inc. Do you grep through log files
for problems? Stop! Download the new AJAX search engine that makes
searching your log files as easy as surfing the web. DOWNLOAD SPLUNK!
http://ads.osdn.com/?ad_id=7637&alloc_id=16865&op=click
_______________________________________________
Matplotlib-devel mailing list
Matplotlib-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/matplotlib-devel

Andrew,

Thanks for the suggestions, which proved helpful---transforms now
builds; the rest of the build is proceeding and my fingers are
crossed. Here's what I found/did.

Including math.h did not help. Poking around with man and in /usr/include
revealed that isnan is defined as a macro, not a function; math.h includes
/usr/include/architecture/ppc/math.h and the definition is in there. I
did some googling and found one other case of this causing a problem;
a workaround is provided here:

http://www.ssl.berkeley.edu/pipermail/boinc_dev/2004-October/000529.html

It involves including math.h and defining a prototype for isnan
explicitly. I tried this and the build failed, but with a slightly
different error:

gcc: src/_na_transforms.cpp
src/_na_transforms.cpp: In member function `Py::Object
   Bbox::update_numerix(const Py::Tuple&)':
src/_na_transforms.cpp:452: error: `isnan' not declared
src/_na_transforms.cpp: In member function `Py::Object
   Bbox::update_numerix(const Py::Tuple&)':
src/_na_transforms.cpp:452: error: `isnan' not declared

At this point, I commented out the "using..." line that was just
added (reasoning that isnan is now in the file's namespace), and
the build succeeded.

I don't know the build process well enough to know if this can be
easily automated in a cross-platform manner, or if there is a
better solution.

As I write the numarray and scipy builds of _transforms.cpp have
both succeeded. Hopefully that's the only stumbling block.

-Tom

···

-------------------------------------------------
This mail sent through IMP: http://horde.org/imp/

OK, it seems trying to pick up "isnan" from the C/C++ stdlib is riddled
with difficulties, at least on Mac OS X.
Following numarray's lead, I've implemented our own test "MPL_isnan64".
This involved the addition of a new header file in src/ and the patch
I'm including. Also included in the patch (and also checked into CVS)
is the unit test which shows why this whole change is necessary.

This all works for me on Mac OS X 10.4 and Debian sarge AMD64. Tom,
maybe you could try it again on Mac OS X 10.3?

Cheers!
Andrew

Tom Loredo wrote:

isnan2.patch (2.62 KB)

MPL_isnan.h (869 Bytes)

···

Andrew,

Thanks for the suggestions, which proved helpful---transforms now
builds; the rest of the build is proceeding and my fingers are
crossed. Here's what I found/did.

Including math.h did not help. Poking around with man and in /usr/include
revealed that isnan is defined as a macro, not a function; math.h includes
/usr/include/architecture/ppc/math.h and the definition is in there. I
did some googling and found one other case of this causing a problem;
a workaround is provided here:

http://www.ssl.berkeley.edu/pipermail/boinc_dev/2004-October/000529.html

It involves including math.h and defining a prototype for isnan
explicitly. I tried this and the build failed, but with a slightly
different error:

gcc: src/_na_transforms.cpp
src/_na_transforms.cpp: In member function `Py::Object
  Bbox::update_numerix(const Py::Tuple&)':
src/_na_transforms.cpp:452: error: `isnan' not declared
src/_na_transforms.cpp: In member function `Py::Object
  Bbox::update_numerix(const Py::Tuple&)':
src/_na_transforms.cpp:452: error: `isnan' not declared

At this point, I commented out the "using..." line that was just
added (reasoning that isnan is now in the file's namespace), and
the build succeeded.

I don't know the build process well enough to know if this can be
easily automated in a cross-platform manner, or if there is a
better solution.

As I write the numarray and scipy builds of _transforms.cpp have
both succeeded. Hopefully that's the only stumbling block.

-Tom

-------------------------------------------------
This mail sent through IMP: http://horde.org/imp/

-------------------------------------------------------
This SF.net email is sponsored by: Splunk Inc. Do you grep through log files
for problems? Stop! Download the new AJAX search engine that makes
searching your log files as easy as surfing the web. DOWNLOAD SPLUNK!
http://ads.osdn.com/?ad_id=7637&alloc_id=16865&op=click
_______________________________________________
Matplotlib-devel mailing list
Matplotlib-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/matplotlib-devel

Andrew,

Thanks for the new patch. It works fine on OS 10.3.9/Python 2.4,
as far as I can tell. Cool!

My tex problem that originally motivated
the reinstall appears to be due to problems with my TeTeX
install (dvipng is not finding mktex.opt and thus creating
blank PNGs, though ). I'll try reinstalling the latest TeTeX; if
anyone else has had such problems, I'd be grateful to know how
you fixed them.

-Tom

···

-------------------------------------------------
This mail sent through IMP: http://horde.org/imp/