Andi Vajda <va...@apache.org> wrote:

> If I switch to Mike's recommendation then 10.6 is broken out of the box.
> I don't know what developer package he's referring to. Can you please
> send me the URL ?

Here's what his message said:

``It may be necessary to install the "Java for Mac OS X 10.6 Update 3
Developer Package" or "Java for Mac OS X 10.5 Update 8 Developer
Package" from <http://connect.apple.com> under the "Java" section, to
ensure the native headers are present in the JavaVM.framework. We are
aware that this has caused some inconvenience for otherwise native
projects that make use of the JNI API, and we are leaning towards just
shipping the headers in the regular customer software update package.''

That's the "developer package" he's referring to.

> Yes, your patch should work on both but would it not be obsoleted by
> the next time Apple moves these headers around again and setup.py is
> reverted back to the /System value in consequence ?
>
> I really want the latest up to date Mac OS X setup to build out of the
> box

Sure, me too!

> ...and it seems that the current setup.py settings are the only way
> unless your patch get added ?

My patch soft-codes the location of the SDK, so that it works with both
10.5 and 10.6.  Though, after hearing from Swingler, I'd revise it as
follows (I just did this in Emacs, haven't tested it):

diff -u pylucene-3.0.3-1/jcc/setup.py.orig pylucene-3.0.3-1/jcc/setup.py
--- pylucene-3.0.3-1/jcc/setup.py.orig  2010-12-07 18:50:25.000000000 -0800
+++ pylucene-3.0.3-1/jcc/setup.py       2010-12-07 19:02:44.000000000 -0800
@@ -43,8 +43,23 @@
 else:
     JAVAHOME = None
 
+if platform in ("darwin"):
+    # possibly we shouldn't overwrite the platform module in the first place
+    import platform as _platform
+    import re
+    JAVAHOME = None
+    path = "/System/Library/Frameworks/JavaVM.framework/"
+    if os.path.isdir(path) and os.path.exists(os.path.join(path, "Headers", 
"jni.h")):
+        JAVAHOME = os.path.join(path, "Home")
+    else:
+        path = ("/Developer/SDKs/MacOSX" +
+                 re.match("[0-9]+\.[0-9]+", _platform.mac_ver()[0]).group(0) +
+                 
".sdk/System/Library/Frameworks/JavaVM.framework/Versions/Current")
+        if os.path.exists(path):
+            JAVAHOME = path
+
 JDK = {
-    'darwin': 
'/Developer/SDKs/MacOSX10.6.sdk/System/Library/Frameworks/JavaVM.framework/Versions/Current',
+    'darwin': JAVAHOME,
     'ipod': '/usr/include/gcc',
     'linux2': '/usr/lib/jvm/java-6-openjdk',
     'sunos5': '/usr/jdk/instances/jdk1.6.0',

In other words, first look for the headers where Apple says they should
be, then if they aren't there, look in the Developer SDK, but the SDK
for the current version of OS X.

Philosophically, I see little point in avoiding the use of an actual
programming language that using setup.py gives you.  Otherwise, might as
well use another Makefile.

Bill

Reply via email to