Daniel John Debrunner wrote:
Rick Hillegas wrote:
Daniel John Debrunner wrote:
Rick Hillegas wrote:

The place to add support for additional platforms/vms would be trunk/java/build/org/apache/derbyPreBuild/PropertySetter.java The class has a pretty extensive header comment explaining what the class does--but please let me know if the header is unclear.

At line 207 (just after this code)

  if ( j14lib != null ) { setClasspathFromLib( J14LIB, j14lib ); }
  if ( j15lib != null ) { setClasspathFromLib( J15LIB, j15lib ); }

should the task return if both j14lib and j15lib were set? E.g.

if (j14lib != null && j15lib != null)
    return;

Other it seems the setting of the classpath will be overwritten in the platform specific code and for me the build fails because the vm (Apache Harmony) is not recognized, even though I've defined j14lib & j15lib.
Thanks for the quick test-drive, Dan. I don't understand what you're seeing.

One question is why does this code need to be executed if I already have j14lib and j15lib set in my ant.properties?

            String  jdkVendor = getProperty( JDK_VENDOR );

            if ( JDK_APPLE.equals( jdkVendor ) ) { setForAppleJDKs(); }
            else if ( JDK_IBM.equals( jdkVendor ) ) { setForIbmJDKs(); }
            else if ( JDK_SUN.equals( jdkVendor ) ) { setForSunJDKs(); }


Dan.
Thanks for the continuing feedback, Dan.

Without the PropertySetter patch, the pre-existing build machinery sets java14compile.classpath based on the value of j14lib. And this setting of java14compile.classpath is correct if you are using Sun JDKs. It is wrong if you are using IBM or Apple JDKs. If you are using IBM or Apple JDKs then you need to forcibly override java14compile.classpath in your ant.properties (and j14lib is a nop).

So the code in question performs the task of looking up the jar files in the j14lib and j15lib directories and setting java14compile.classpath and java15compile.classpath accordingly. Without this code, one of the following would happen:

1) In the PropertySetter as currently coded, you would fall through to the code which makes sure that java14compile.classpath and java15compile.classpath are set--and PropertySetter would abort the build because they are not set. That is, PropertySetter would detect that it had failed to perform its task.

2) If we removed that final check from PropertySetter, then, later on in the build machinery, we would set java14compile.classpath to the list of Sun libraries. Everything would work fine for Sun JDKs and fail for IBM and Apple environments.

Regards,
-Rick

Reply via email to