Is Apple Deprecating Itself Into A Hole? [Updated]

Update: This has nothing to do with Apple as this API was signaled for termination long ago.

Just had a hell of a time compiling Firefox 3.6.2 against the 10.6 SDK.

First, I forget to patch the sqlite3 bug (not sure why this is causing me problems as it was closed as fixed). Then after patching, a make clean didn’t get rid of enough cruft to let the build complete.

So starting from scratch and I get a new error I’ve never seen:

In file included from /Users/beetle/src/mozilla/toolkit/xre/nsSigHandlers.cpp:58:
/Developer/SDKs/MacOSX10.6.sdk/usr/include/ucontext.h:42:2: error: #error ucontext routines are deprecated, and require _XOPEN_SOURCE to be defined

And looking in /usr/include/ucontext.h, you see:

#else /* !_XOPEN_SOURCE */
#error ucontext routines are deprecated, and require _XOPEN_SOURCE to be defined
#endif /* _XOPEN_SOURCE */

This file has not been touched since Sep 30 of last year, so WTF. I usually do all my builds against 10.6, but someone asked me to do a 10.5 build so this issue JUST came up as of Firefox 3.6.2 (does not exist in 3.7, yet). Digging and diving a tad, I find that accelerometer controls are baked into 3.6.2 so this is probably what’s causing the problem.

Anyway, to fix this change the ucontext.h include to sys/ucontext.h like this (appears on lines 57-59 of toolkit/xre/nsSigHandlers.cpp):

#if defined(XP_MACOSX)
#include <ucontext.h>
#endif

to

#if defined(XP_MACOSX)
#include <sys/ucontext.h>
#endif

Things should be then be smashing, in the Austin Powers kind of way.

So who’s to blame? Mozilla takes the fall on this one, though this bug has already been fixed.

I’m on the bleeding edge here using not-publicly-available Apple dev tools (I’m in the Apple dev program, can’t say anything, NDA, sshhh).

Hey, like this post? Why not share it with a buddy?

Leave a Comment