|
Rick Hillegas made changes - 12/Dec/08 08:32 PM
Rick Hillegas made changes - 08/Jan/09 11:17 PM
Attaching derby-3989-01-ab-optionalJava5.diff. This is identical to the previous patch except that it updates BUILDING.html to reflect these changes.
Rick Hillegas made changes - 09/Jan/09 04:40 PM
Rick Hillegas made changes - 09/Jan/09 04:40 PM
I did a quick test and found that I get a build error in the jdbc4stubs:
jdbc4stubs: [mkdir] Created dir: <mypathto>\trunk\classes\stubs\jdbc4 [javac] Compiling 93 source files to <mypathto>\trunk\classes\stubs\jdbc4 [javac] <mypathto>\trunk\java\stubs\jdbc4\java\sql\Array.java:20: cannot access java.util.Map [javac] bad class file: <mypathto>\ibm16\jre\lib\java.util.jar(java/util/Map.class) [javac] class file has wrong version 50.0, should be 49.0 [javac] Please remove or make sure it appears in the correct subdirectory of the classpath. [javac] import java.util.Map; [javac] ^ [javac] 1 error [javac] Compile failed; see the compiler error output for details. I'll check on my settings etc. later, but wanted to report this & make sure this didn't get committed before I have a chance to look into it. Thanks, Myrna. Could you set the following property in your ant.properties and post the diagnostics that it prints out?
printCompilerProperties=true Thanks! I had a quick look at the ab patch, and nothing jumped at me. Two small nits, though:
* the count variable in requireAtLeastOneProperty() is never used * couldntSetProperty() reinvents Property.toString() (or actually Hashtable.toString() which is inherited by Property) Well, I can't figure out anything wrong with my settings...I am trying to build with ibm15, JAVA_HOME is set to my ibm15 installation, as is ANT_JAVA (for what it's worth), and I get 6 of those pesky version mismatch warnings. This is my output of printCompilerProperties=true:
(I replaced the actual path to my jvm's installations with <pathto> and single lines are chopped up...) ----------------- printCompilerProperties: [echo] Before setting properties: compilerLevel16 = 1.5 [echo] Before setting properties: jsr169compile.classpath = <pathto>/weme6.1/lib/jclFoundation11/classes.zip;<pathto>/weme6.1/lib/jdbc.jar [echo] Before setting properties: j14lib = <pathto>/ibm142/jre/lib [echo] Before setting properties: java14compile.classpath = ${java14compile.classpath} [echo] Before setting properties: j15lib = <pathto>/ibm15/jre/lib [echo] Before setting properties: java15compile.classpath = ${java15compile.classpath} [echo] Before setting properties: j16lib = <pathto>/ibm16/jre/lib [echo] Before setting properties: java16compile.classpath = ${java16compile.classpath} [setJdkProperties] Setting property java14compile.classpath to <pathto>\ibm142\jre\lib\charsets.jar;<pathto>\ibm142\jre\lib\core.jar;<pathto>\ibm142\jre\lib\graphics.jar;<pathto>\ibm142\jre\lib\ibmcertpathprovider.jar;<pathto>\ibm142\jre\lib\ibmjaasactivelm.jar;<pathto>\ibm142\jre\lib\ibmjaaslm.jar;<pathto>\ibm142\jre\lib\ibmjcefw.jar;<pathto>\ibm142\jre\lib\ibmjgssprovider.jar;<pathto>\ibm142\jre\lib\ibmjssefips.jar;<pathto>\ibm142\jre\lib\ibmjsseprovider.jar;<pathto>\ibm142\jre\lib\ibmorb.jar;<pathto>\ibm142\jre\lib\ibmorbapi.jar;<pathto>\ibm142\jre\lib\ibmpkcs.jar;<pathto>\ibm142\jre\lib\plugin.jar;<pathto>\ibm142\jre\lib\security.jar;<pathto>\ibm142\jre\lib\server.jar;<pathto>\ibm142\jre\lib\xml.jar [setJdkProperties] Setting property java15compile.classpath to <pathto>\ibm15\jre\lib\BD.jar;<pathto>\ibm15\jre\lib\charsets.jar;<pathto>\ibm15\jre\lib\core.jar;<pathto>\ibm15\jre\lib\deploy.jar;<pathto>\ibm15\jre\lib\graphics.jar;<pathto>\ibm15\jre\lib\ibmcertpathprovider.jar;<pathto>\ibm15\jre\lib\ibmcfw.jar;<pathto>\ibm15\jre\lib\ibmjaasactivelm.jar;<pathto>\ibm15\jre\lib\ibmjaaslm.jar;<pathto>\ibm15\jre\lib\ibmjcefw.jar;<pathto>\ibm15\jre\lib\ibmjgssprovider.jar;<pathto>\ibm15\jre\lib\ibmjsseprovider2.jar;<pathto>\ibm15\jre\lib\ibmorb.jar;<pathto>\ibm15\jre\lib\ibmorbapi.jar;<pathto>\ibm15\jre\lib\ibmpkcs.jar;<pathto>\ibm15\jre\lib\javaws.jar;<pathto>\ibm15\jre\lib\plugin.jar;<pathto>\ibm15\jre\lib\security.jar;<pathto>\ibm15\jre\lib\server.jar;<pathto>\ibm15\jre\lib\vm.jar;<pathto>\ibm15\jre\lib\xml.jar [setJdkProperties] Setting property java16compile.classpath to <pathto>\ibm16\jre\lib\annotation.jar;<pathto>\ibm16\jre\lib\beans.jar;<pathto>\ibm16\jre\lib\charsets.jar;<pathto>\ibm16\jre\lib\deploy.jar;<pathto>\ibm16\jre\lib\ibmcertpathfw.jar;<pathto>\ibm16\jre\lib\ibmcertpathprovider.jar;<pathto>\ibm16\jre\lib\ibmcfw.jar;<pathto>\ibm16\jre\lib\ibmjcefw.jar;<pathto>\ibm16\jre\lib\ibmjgssfw.jar;<pathto>\ibm16\jre\lib\ibmjgssprovider.jar;<pathto>\ibm16\jre\lib\ibmjssefw.jar;<pathto>\ibm16\jre\lib\ibmjsseprovider2.jar;<pathto>\ibm16\jre\lib\ibmorb.jar;<pathto>\ibm16\jre\lib\ibmorbapi.jar;<pathto>\ibm16\jre\lib\ibmpkcs.jar;<pathto>\ibm16\jre\lib\ibmsaslfw.jar;<pathto>\ibm16\jre\lib\ibmxmlcrypto.jar;<pathto>\ibm16\jre\lib\j9zip.jar;<pathto>\ibm16\jre\lib\java.util.jar;<pathto>\ibm16\jre\lib\javascript.jar;<pathto>\ibm16\jre\lib\javaws.jar;<pathto>\ibm16\jre\lib\jlm.jar;<pathto>\ibm16\jre\lib\jndi.jar;<pathto>\ibm16\jre\lib\logging.jar;<pathto>\ibm16\jre\lib\management-agent.jar;<pathto>\ibm16\jre\lib\plugin.jar;<pathto>\ibm16\jre\lib\resources.jar;<pathto>\ibm16\jre\lib\rt.jar;<pathto>\ibm16\jre\lib\security.jar;<pathto>\ibm16\jre\lib\sql.jar;<pathto>\ibm16\jre\lib\vm.jar;<pathto>\ibm16\jre\lib\xml.jar;<pathto>\ibm16\jre\lib\xmldsigfw.jar [setJdkProperties] Setting property java14compile.classpath to <pathto>\ibm142\jre\lib\charsets.jar;<pathto>\ibm142\jre\lib\core.jar;<pathto>\ibm142\jre\lib\graphics.jar;<pathto>\ibm142\jre\lib\ibmcertpathprovider.jar;<pathto>\ibm142\jre\lib\ibmjaasactivelm.jar;<pathto>\ibm142\jre\lib\ibmjaaslm.jar;<pathto>\ibm142\jre\lib\ibmjcefw.jar;<pathto>\ibm142\jre\lib\ibmjgssprovider.jar;<pathto>\ibm142\jre\lib\ibmjssefips.jar;<pathto>\ibm142\jre\lib\ibmjsseprovider.jar;<pathto>\ibm142\jre\lib\ibmorb.jar;<pathto>\ibm142\jre\lib\ibmorbapi.jar;<pathto>\ibm142\jre\lib\ibmpkcs.jar;<pathto>\ibm142\jre\lib\plugin.jar;<pathto>\ibm142\jre\lib\security.jar;<pathto>\ibm142\jre\lib\server.jar;<pathto>\ibm142\jre\lib\xml.jar [setJdkProperties] Setting property java15compile.classpath to <pathto>\ibm15\jre\lib\BD.jar;<pathto>\ibm15\jre\lib\charsets.jar;<pathto>\ibm15\jre\lib\core.jar;<pathto>\ibm15\jre\lib\deploy.jar;<pathto>\ibm15\jre\lib\graphics.jar;<pathto>\ibm15\jre\lib\ibmcertpathprovider.jar;<pathto>\ibm15\jre\lib\ibmcfw.jar;<pathto>\ibm15\jre\lib\ibmjaasactivelm.jar;<pathto>\ibm15\jre\lib\ibmjaaslm.jar;<pathto>\ibm15\jre\lib\ibmjcefw.jar;<pathto>\ibm15\jre\lib\ibmjgssprovider.jar;<pathto>\ibm15\jre\lib\ibmjsseprovider2.jar;<pathto>\ibm15\jre\lib\ibmorb.jar;<pathto>\ibm15\jre\lib\ibmorbapi.jar;<pathto>\ibm15\jre\lib\ibmpkcs.jar;<pathto>\ibm15\jre\lib\javaws.jar;<pathto>\ibm15\jre\lib\plugin.jar;<pathto>\ibm15\jre\lib\security.jar;<pathto>\ibm15\jre\lib\server.jar;<pathto>\ibm15\jre\lib\vm.jar;<pathto>\ibm15\jre\lib\xml.jar printCompilerProperties: [echo] After setting properties: compilerLevel16 = 1.5 [echo] After setting properties: jsr169compile.classpath = <pathto>/weme6.1/lib/jclFoundation11/classes.zip;<pathto>/weme6.1/lib/jdbc.jar [echo] After setting properties: j14lib = <pathto>/ibm142/jre/lib [echo] After setting properties: java14compile.classpath = <pathto>\ibm142\jre\lib\charsets.jar;<pathto>\ibm142\jre\lib\core.jar;<pathto>\ibm142\jre\lib\graphics.jar;<pathto>\ibm142\jre\lib\ibmcertpathprovider.jar;<pathto>\ibm142\jre\lib\ibmjaasactivelm.jar;<pathto>\ibm142\jre\lib\ibmjaaslm.jar;<pathto>\ibm142\jre\lib\ibmjcefw.jar;<pathto>\ibm142\jre\lib\ibmjgssprovider.jar;<pathto>\ibm142\jre\lib\ibmjssefips.jar;<pathto>\ibm142\jre\lib\ibmjsseprovider.jar;<pathto>\ibm142\jre\lib\ibmorb.jar;<pathto>\ibm142\jre\lib\ibmorbapi.jar;<pathto>\ibm142\jre\lib\ibmpkcs.jar;<pathto>\ibm142\jre\lib\plugin.jar;<pathto>\ibm142\jre\lib\security.jar;<pathto>\ibm142\jre\lib\server.jar;<pathto>\ibm142\jre\lib\xml.jar [echo] After setting properties: j15lib = <pathto>/ibm15/jre/lib [echo] After setting properties: java15compile.classpath = <pathto>\ibm15\jre\lib\BD.jar;<pathto>\ibm15\jre\lib\charsets.jar;<pathto>\ibm15\jre\lib\core.jar;<pathto>\ibm15\jre\lib\deploy.jar;<pathto>\ibm15\jre\lib\graphics.jar;<pathto>\ibm15\jre\lib\ibmcertpathprovider.jar;<pathto>\ibm15\jre\lib\ibmcfw.jar;<pathto>\ibm15\jre\lib\ibmjaasactivelm.jar;<pathto>\ibm15\jre\lib\ibmjaaslm.jar;<pathto>\ibm15\jre\lib\ibmjcefw.jar;<pathto>\ibm15\jre\lib\ibmjgssprovider.jar;<pathto>\ibm15\jre\lib\ibmjsseprovider2.jar;<pathto>\ibm15\jre\lib\ibmorb.jar;<pathto>\ibm15\jre\lib\ibmorbapi.jar;<pathto>\ibm15\jre\lib\ibmpkcs.jar;<pathto>\ibm15\jre\lib\javaws.jar;<pathto>\ibm15\jre\lib\plugin.jar;<pathto>\ibm15\jre\lib\security.jar;<pathto>\ibm15\jre\lib\server.jar;<pathto>\ibm15\jre\lib\vm.jar;<pathto>\ibm15\jre\lib\xml.jar [echo] After setting properties: j16lib = <pathto>/ibm16/jre/lib [echo] After setting properties: java16compile.classpath = <pathto>\ibm16\jre\lib\annotation.jar;<pathto>\ibm16\jre\lib\beans.jar;<pathto>\ibm16\jre\lib\charsets.jar;<pathto>\ibm16\jre\lib\deploy.jar;<pathto>\ibm16\jre\lib\ibmcertpathfw.jar;<pathto>\ibm16\jre\lib\ibmcertpathprovider.jar;<pathto>\ibm16\jre\lib\ibmcfw.jar;<pathto>\ibm16\jre\lib\ibmjcefw.jar;<pathto>\ibm16\jre\lib\ibmjgssfw.jar;<pathto>\ibm16\jre\lib\ibmjgssprovider.jar;<pathto>\ibm16\jre\lib\ibmjssefw.jar;<pathto>\ibm16\jre\lib\ibmjsseprovider2.jar;<pathto>\ibm16\jre\lib\ibmorb.jar;<pathto>\ibm16\jre\lib\ibmorbapi.jar;<pathto>\ibm16\jre\lib\ibmpkcs.jar;<pathto>\ibm16\jre\lib\ibmsaslfw.jar;<pathto>\ibm16\jre\lib\ibmxmlcrypto.jar;<pathto>\ibm16\jre\lib\j9zip.jar;<pathto>\ibm16\jre\lib\java.util.jar;<pathto>\ibm16\jre\lib\javascript.jar;<pathto>\ibm16\jre\lib\javaws.jar;<pathto>\ibm16\jre\lib\jlm.jar;<pathto>\ibm16\jre\lib\jndi.jar;<pathto>\ibm16\jre\lib\logging.jar;<pathto>\ibm16\jre\lib\management-agent.jar;<pathto>\ibm16\jre\lib\plugin.jar;<pathto>\ibm16\jre\lib\resources.jar;<pathto>\ibm16\jre\lib\rt.jar;<pathto>\ibm16\jre\lib\security.jar;<pathto>\ibm16\jre\lib\sql.jar;<pathto>\ibm16\jre\lib\vm.jar;<pathto>\ibm16\jre\lib\xml.jar;<pathto>\ibm16\jre\lib\xmldsigfw.jar ----------------------- my ant.properties currently looks like so: ----------------------- printCompilerProperties=true j14lib=c:/p4/p4main/ibm142/jre/lib j15lib=c:/p4/p4main/ibm15/jre/lib jdk16=c:/p4/p4main/ibm16 j16lib=${jdk16}/jre/lib jsr169compile.classpath=C:/p4/p4main/weme6.1/lib/jclFoundation11/classes.zip;C:/p4/p4main/weme6.1/lib/jdbc.jar junit=c:/p4/p4main/tools/java/junit.jar proceed=true sane=true ----------------------- For what it's worth, the compile works correctly wtih the same properties setting if I'm building with the ibm16 compiler.
In that case, the printCompilerProperties prints out that it's using 1.6: [echo] Before setting properties: compilerLevel16 = 1.6 and print one extra line in the first call, after 'Setting property java15compile.classpath to...': [setJdkProperties] Setting property java16compile.classpath to <pathto>\ibm16\jre\lib\annotation.jar;<pathto>\ibm16\jre\lib\beans.jar;<pathto>\ibm16\jre\lib\charsets.jar;<pathto>\ibm16\jre\lib\deploy.jar;<pathto>\ibm16\jre\lib\ibmcertpathfw.jar;<pathto>\ibm16\jre\lib\ibmcertpathprovider.jar;<pathto>\ibm16\jre\lib\ibmcfw.jar;<pathto>\ibm16\jre\lib\ibmjcefw.jar;<pathto>\ibm16\jre\lib\ibmjgssfw.jar;<pathto>\ibm16\jre\lib\ibmjgssprovider.jar;<pathto>\ibm16\jre\lib\ibmjssefw.jar;<pathto>\ibm16\jre\lib\ibmjsseprovider2.jar;<pathto>\ibm16\jre\lib\ibmorb.jar;<pathto>\ibm16\jre\lib\ibmorbapi.jar;<pathto>\ibm16\jre\lib\ibmpkcs.jar;<pathto>\ibm16\jre\lib\ibmsaslfw.jar;<pathto>\ibm16\jre\lib\ibmxmlcrypto.jar;<pathto>\ibm16\jre\lib\j9zip.jar;<pathto>\ibm16\jre\lib\java.util.jar;<pathto>\ibm16\jre\lib\javascript.jar;<pathto>\ibm16\jre\lib\javaws.jar;<pathto>\ibm16\jre\lib\jlm.jar;<pathto>\ibm16\jre\lib\jndi.jar;<pathto>\ibm16\jre\lib\logging.jar;<pathto>\ibm16\jre\lib\management-agent.jar;<pathto>\ibm16\jre\lib\plugin.jar;<pathto>\ibm16\jre\lib\resources.jar;<pathto>\ibm16\jre\lib\rt.jar;<pathto>\ibm16\jre\lib\security.jar;<pathto>\ibm16\jre\lib\sql.jar;<pathto>\ibm16\jre\lib\vm.jar;<pathto>\ibm16\jre\lib\xml.jar;<pathto>\ibm16\jre\lib\xmldsigfw.jar Silly question, but... Does it work without the patch? If I understand the comments on
Thanks for the experiments and analysis, Myrna and Knut. Knut is right: PropertySetter sets java16compile.classpath from j16lib if the latter property is set, and that causes the version mismatch problem if you are using the Java 5 compiler. Attaching a new rev of the patch: derby-3989-01-ac-optionalJava5.diff.
This rev aborts the build if you are using the IBM Java 5 compiler AND you have explicitly set EITHER j16lib or java16compile.classpath. Once again, I would appreciate your test-driving this patch. Thanks!
Rick Hillegas made changes - 13/Jan/09 05:58 PM
As long as I don't have j16lib nor java16compile.classpath set, things work with ibm15 compiler - and either way with ibm16 compiler.
+1
Thanks for test-driving derby-3989-01-ac-optionalJava5.diff, Myrna. Committed at subversion revision 734242.
Rick Hillegas made changes - 14/Jan/09 04:31 PM
Myrna van Lunteren made changes - 13/Apr/09 11:08 PM
Myrna van Lunteren made changes - 04/May/09 06:21 PM
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
1) If j16lib is set, PropertySetter sets java16compile.classpath from j16lib. If j16lib is not set, PropertySetter looks for a Java 6 JDK and sets java16compile.classpath to be the list of jars in the Java 6 library directory.
2) However, PropertySetter does not try to set java16compile.classpath if the compiler is an IBM Java 5 compiler. This is because the IBM Java 5 compiler raises version mismatch errors when it pulls in Java 6 libraries.
3) If, at the end, neither java15compile.classpath nor java16compile.classpath is set, PropertySetter aborts the build.
4) If PropertySetter could not set java15compile.classpath, then the master build script sets java15compile.classpath to be ${jdbc3stubs}:${java16compile.classpath}.
I have verified that the build runs correctly on the following platforms:
- Mac OS X
- Ubuntu using Sun JDKs
- Ubuntu using IBM JDKs
with the following environments:
a) Java 5 compiler + Java 6 libraries
b) Java 5 compiler - Java 6 libraries
c) Java 6 compiler + Java 5 libraries
d) Java 6 compiler - Java 5 libraries
I would appreciate it if other people could test-drive this patch on their machines and report whether the build succeeds in cases (a) through (d).
Thanks!
Touches the following files:
M java/build/org/apache/derbyPreBuild/PropertySetter.java
Implements (1) - (3).
M build.xml
Implements (4).