Just spent a good little chunk of time getting 2.8p20 to compile on Mac OS X, so
I figured I'd pass along what I did to make it work in case anyone else is
trying to do this.

Run configure with options --disable-zero --disable-owtcl
Make sure you've installed Swig and all the swig modules (php, perl, python) if
building those - easy to do with macports.

I was getting compile errors related to an undefined type uint when compiling
the php module. If you edit module/swig/php/ow_wrap.c and add "typedef unsigned
int uint;" before line 717 where zend.h gets included, that fixes that issue.

My Python module wasn't working with an error about not being able to find
Python.Frameworks for _PyMac_Error in the compiler. This is apparently a known
bug with python 2.7, it can be fixed by opening
...Frameworks/Python.framework/Versions/2.7/lib/python2.7/config (probably in
your /Users/username/Library folder on OS X) and search for PyMac_Error. Change
PYTHONFRAMEWORKDIR to PYTHONFRAMEWORKINSTALLDIR on that line, and re-configure.

After those tweaks, everything compiled correctly, but I was getting a segfault
when trying to start up anything with the owlib. After doing some digging I
found that this was coming from ow_alias.c, which uses the function strsep. This
function wasn't getting defined for some reason, leaving the compiler to
implicitly treat the value as an int, which then gets cast to a 64 bit size_t
pointer on my system - bad things! Turns out the compiler flag
-D_POSIX_C_SOURCE=200112L blocks the definition of strsep on my system, so I
went into the configure script and searched for that flag and edited it out of
the lines where it gets added to CFLAGS and EXTRA_CFLAGS. The only problem with
this is that by default this flag is needed to get C Signal library functions
like sigaddset. On OS X you can get around this though, by including a different
signals file. After you run the new configure, go to the file
module/owlib/src/include/ow.lib and search for the include line for signal.h -
it'll read #include <sys/signal.h>. Change that to #include <signal.h> and you
should get the signal functions even without the compiler flag.

After those changes, everything seems to compile and run fine. I haven't
exhaustively tested it, and my system has a lot of different stuff on it, so
your mileage may vary, but that worked for me!


------------------------------------------------------------------------------
LogMeIn Rescue: Anywhere, Anytime Remote support for IT. Free Trial
Remotely access PCs and mobile devices and provide instant support
Improve your efficiency, and focus on delivering more value-add services
Discover what IT Professionals Know. Rescue delivers
http://p.sf.net/sfu/logmein_12329d2d
_______________________________________________
Owfs-developers mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/owfs-developers

Reply via email to