Issue Details (XML | Word | Printable)

Key: DERBY-3989
Type: Improvement Improvement
Status: Resolved Resolved
Resolution: Fixed
Priority: Major Major
Assignee: Unassigned
Reporter: Rick Hillegas
Votes: 0
Watchers: 0
Operations

If you were logged in you would be able to see more operations.
Derby

Set the Java 5 compilation path based on the Java 6 compilation path if a Java 5 environment can't be found but a Java 6 environment can be

Created: 12/Dec/08 08:30 PM   Updated: 04/May/09 06:21 PM
Component/s: Build tools
Affects Version/s: 10.5.1.1
Fix Version/s: 10.5.1.1

Time Tracking:
Not Specified

File Attachments:
  Size
File Licensed for inclusion in ASF works derby-3989-01-aa-optionalJava5.diff 2009-01-08 11:17 PM Rick Hillegas 10 kB
File Licensed for inclusion in ASF works derby-3989-01-ab-optionalJava5.diff 2009-01-09 04:40 PM Rick Hillegas 12 kB
File Licensed for inclusion in ASF works derby-3989-01-ac-optionalJava5.diff 2009-01-13 05:58 PM Rick Hillegas 15 kB
Issue Links:
Dependants
 

Resolution Date: 14/Jan/09 04:31 PM
Labels:


 Description  « Hide
This will make the build even more flexible. Probably involves the following changes:

1) Relaxing the requirement in PropertySetter that a Java 5 JDK must exist

2) Having PropertySetter look for a Java 6 JDK (and set java16compile.classpath accordingly) just as PropertySetter looks for a Java 5 JDK today

3) Changing the setCompilerProperties target in the master build script so that it

  a) requires that java15compile.classpath or java16compile.classpath is set (it's ok for both to be set)

  b) sets java15compile.classpath to ${jdbc3stubs}:${java16compile.classpath}

 All   Comments   Work Log   Change History   Subversion Commits      Sort Order: Ascending order - Click to sort in descending order
Rick Hillegas made changes - 12/Dec/08 08:32 PM
Field Original Value New Value
Link This issue depends on DERBY-3988 [ DERBY-3988 ]
Rick Hillegas added a comment - 08/Jan/09 11:17 PM
Attaching derby-3989-01-aa-optionalJava5.diff. This patch makes it possible to build Derby using just the Derby sources and a Java 6 compiler. This patch makes the following changes:

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).

Rick Hillegas made changes - 08/Jan/09 11:17 PM
Attachment derby-3989-01-aa-optionalJava5.diff [ 12397459 ]
Rick Hillegas added a comment - 09/Jan/09 04:40 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
Attachment derby-3989-01-ab-optionalJava5.diff [ 12397531 ]
Rick Hillegas made changes - 09/Jan/09 04:40 PM
Derby Info [Patch Available]
Myrna van Lunteren added a comment - 12/Jan/09 03:12 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.

Rick Hillegas added a comment - 12/Jan/09 03:37 PM
Thanks, Myrna. Could you set the following property in your ant.properties and post the diagnostics that it prints out?

printCompilerProperties=true

Thanks!

Knut Anders Hatlen added a comment - 12/Jan/09 04:33 PM
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)

Myrna van Lunteren added a comment - 12/Jan/09 08:10 PM
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
-----------------------

Myrna van Lunteren added a comment - 12/Jan/09 10:07 PM - edited
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

Knut Anders Hatlen added a comment - 13/Jan/09 08:54 AM
Silly question, but... Does it work without the patch? If I understand the comments on DERBY-3988 correctly, the combination of the IBM 1.5 compiler and java16compile.classpath pointing to IBM 1.6 doesn't work. According to those comments, the build should have printed a message telling you to use a Java 6 compiler. I'm wondering if the build doesn't emit that message because java16compile.classpath was set implicitly from j16lib, and the build scripts should be updated to check both java16compile.classpath and j16lib in checkForProblematicSettings().

Rick Hillegas added a comment - 13/Jan/09 05:58 PM
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
Attachment derby-3989-01-ac-optionalJava5.diff [ 12397800 ]
Myrna van Lunteren added a comment - 13/Jan/09 08:05 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

Repository Revision Date User Message
ASF #734242 Tue Jan 13 21:07:02 UTC 2009 rhillegas DERBY-3989: Allow the build to succeed on machines which have a Java 6 environment but not a Java 5 environment.
Files Changed
MODIFY /db/derby/code/trunk/BUILDING.html
MODIFY /db/derby/code/trunk/build.xml
MODIFY /db/derby/code/trunk/java/build/org/apache/derbyPreBuild/PropertySetter.java

Rick Hillegas added a comment - 13/Jan/09 09:08 PM
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
Resolution Fixed [ 1 ]
Derby Info [Patch Available]
Status Open [ 1 ] Resolved [ 5 ]
Myrna van Lunteren made changes - 13/Apr/09 11:08 PM
Fix Version/s 10.5.0.0 [ 12313010 ]
Myrna van Lunteren made changes - 04/May/09 06:21 PM
Affects Version/s 10.5.1.1 [ 12313771 ]
Affects Version/s 10.5.0.0 [ 12313010 ]
Fix Version/s 10.5.1.1 [ 12313771 ]
Fix Version/s 10.5.0.0 [ 12313010 ]