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` ; \
|
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
|