United StatesChange Country, Oracle Worldwide Web Sites Communities I am a... I want to...
Bug ID: 6581453 Java DB missing in file based JDK 6 U2 distributions
6581453 : Java DB missing in file based JDK 6 U2 distributions

Details
Type:
Bug
Submit Date:
2007-07-17
Status:
Closed
Updated Date:
2011-01-26
Project Name:
JDK
Resolved Date:
2007-09-10
Component:
install
OS:
solaris,linux,generic
Sub-Component:
install
CPU:
x86,sparc,generic
Priority:
P1
Resolution:
Fixed
Affected Versions:
6u2
Fixed Versions:
6u3

Related Reports
Backport:
Duplicate:
Relates:
Relates:

Sub Tasks

Description
Java DB is missing in the file based JDK 6 U2 distributions

   jdk-6u2-solaris-sparc.sh
   jdk-6u2-solaris-i586.sh
   jdk-6u2-linux-i586.bin

Suggest bundling and reusing existing Java DB file based installers
(see http://developer.sun.com/javadb/downloads).
Also: support David Katleman's suggesting of having Java DB installed next to jdk, i.e:

   <inst.dir>/
     jdk1.6.x_ybz/
     javadb/

(which will match the intent and current implementation of the Java DB stand-alone installers)

                                    

Comments
SUGGESTED FIX

Solution for the self extracting archive bundles was to return the db directory to the jdk, as was done in GA for 6.

--- Bundles.gmk Mon Aug 27 16:15:16 2007

*** 5,14 ****
--- 5,21 ----
  # SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
  #
  
  # Makefile shared for the unix'es
  
+ # Defining Solaris 64bit
+   ifeq ($(PLATFORM), solaris)
+     ifeq ($(ARCH_DATA_MODEL), 64)
+       SOLARIS64 = true
+     endif
+   endif
+ 
  ######################################################
  # JRE Bundles
  ######################################################
  bundle-jre:
        @#

*** 55,64 ****
--- 62,83 ----
        @# Generate the self-extracting tar files...
        @#
        $(RM) -r $(OUTPUTDIR)/$(JDK_TEMPORARY_DIR) $(OUTPUTDIR)/$(JDK_BUNDLE_NAME).zip
        $(MKDIR) -p $(OUTPUTDIR)/$(JDK_TEMPORARY_DIR)
        $(CD) $(JDK_IMAGE_DIR) ; $(FIND) . | $(CPIO) -pdum $(ABS_OUTPUTDIR)/$(JDK_TEMPORARY_DIR)
+       @#
+       @# Insert JavaDB into db directory for non SOLARIS64 archives.
+       @#
+   ifndef SOLARIS64
+       $(MKDIR) -p $(OUTPUTDIR)/$(JDK_TEMPORARY_DIR)/db
+       $(CP) $(COPKG_JAVADB_DIR)/common/*.zip $(OUTPUTDIR)/$(JDK_TEMPORARY_DIR)/db
+       $(CD) $(OUTPUTDIR)/$(JDK_TEMPORARY_DIR)/db ; \
+               for db in javadb*.zip ; do \
+                       $(UNZIP) -o $$db ; \
+                       $(RM) $$db ; \
+               done  
+   endif
        for i in $(JDK_PACKED_JARS); do \
            if [ -f  $(OUTPUTDIR)/$(JDK_TEMPORARY_DIR)/$$i ]; then  \
                $(RM)  $(OUTPUTDIR)/$(JDK_TEMPORARY_DIR)/$$i ; \
                $(CP) $(PACKED_JDK_JARDIR)/`$(DIRNAME) $$i`/`$(BASENAME) $$i .jar`$(PACK_SUFFIX) \
                    $(OUTPUTDIR)/$(JDK_TEMPORARY_DIR)/`$(DIRNAME) $$i` ; \
                                     
2007-08-28
SUGGESTED FIX

Webrev pointer

http://javaweb.sfbay/jdk/eng/integrations/webrev/6u3
                                     
2007-08-28
SUGGESTED FIX

Simpler: put everything back where it was pre U2, i.e continue using the $JAVA_HOME/db install point for Java DB in the file based/"user" bundles.
                                     
2007-08-21
SUGGESTED FIX

I suggest the following method:

JDK team pick up existing Java DB self-extracting file based installers (SFXIs), e.g

    javadb-10_2_2_0-linux.bin
    javadb-10_2_2_0-solaris-sparc.sh
    javadb-10_2_2_0-solaris-x86.sh

and include them in the JDK zip bundles that are the basis of their SFXI.
When that SFXI is run, there will at one point be something like this laid
out on disk:

    ./jdkx.y.z_uu/
    ./javadb-10_2_2_0-linux.bin

This minimal code will then unzip Java DB into ./javadb:

    chmod u+x ./javadb-10_2_2_0-linux.bin
    rm ./javadb-10_2_2_0-linux.bin

A more elaborate scheme can check for any existing Java DB install
in that location:

In the shell script stub prepended to the JDK SFXI, run code e.g like
this (after the jdk bits have been installed so we know there is a 
java executable there):

    JAVADB_VERSION=10.2.2.0
    JAVADB_INSTALLER=javadb-10_2_2_0-linux.bin

    if [ -f ${JAVADB_INSTALLER} -a -f ./javadb/lib/derby.jar ] ; then

        EXISTING_JAVADB_VERSION=`./jdkx.y.z_uu/bin/java -cp ./javadb/lib/derby.jar org.apache.derby.tools.sysinfo | sed -n 's|.*lib/derby\.jar] *||p' | awk '{ print $1 }'`
        if [ ${EXISTING_JAVADB_VERSION} < ${JAVADB_VERSION} ] ; then
            ACTION="upgrade to"
        elif [ ${EXISTING_JAVADB_VERSION} > ${JAVADB_VERSION} ] ; then
            ACTION="downgrade to"
        else
            ACTION="reinstall"
        fi
        echo Java DB ${EXISTING_JAVADB_VERSION} is already installed in directory javadb.
        printf "Do you want to %s version %s? [yes/no] " ${ACTION} ${JAVADB_VERSION}
        read ANSWER
        case ${ANSWER} in
            [yY] | [yY][eE][sS] )
                rm -rf ./javadb
                chmod u+x ${JAVADB_INSTALLER}
                ./${JAVADB_INSTALLER}
                ;;
            * )
                Existing Java DB ${EXISTING_JAVADB_VERSION} installation preserved.
                ;;
        esac

    elif [ -f ${JAVADB_INSTALLER} ] ; then

        chmod u+x ${JAVADB_INSTALLER}
        ./${JAVADB_INSTALLER}

    else 

        echo ERROR: Java DB installer ${JAVADB_INSTALLER} is missing

    fi
                                     
2007-07-19
EVALUATION

Partial Evaluation:

The decision was made to co-package Java DB with Java SE.  This was implented for the "system" bundles for the Unix variants - packages containing Linux RPMs and Solaris packages.  There is no clear precedent/method to co-package in a simple tar/zip bundle.

Design alternatives are being evaluated.  Depending upon the resultant design, the CCC may need to approve this (probably) and perhaps even PSARC (not likely).
                                     
2007-07-18



Hardware and Software, Engineered to Work Together