From ptisnovs at redhat.com Mon Nov 1 05:03:01 2010 From: ptisnovs at redhat.com (Pavel Tisnovsky) Date: Mon, 01 Nov 2010 13:03:01 +0100 Subject: Regression test for non-Latin character rendering In-Reply-To: <4CCAF5A2.8010803@redhat.com> References: <4CCAF5A2.8010803@redhat.com> Message-ID: <4CCEAC75.9090005@redhat.com> Pavel Tisnovsky wrote: > Hi all, > > I created regression test (reproducer) for RH bug > https://bugzilla.redhat.com/show_bug.cgi?id=643674 > > This regression test checks if all required fonts are properly installed > and that *.src.properties font configuration file is correct for given > system (Debian, Fedora, Ubuntu, SuSE...). The test is based on rendering > certain characters from selected code pages into BufferedImage. > > When the required font does not exists or font configuration is broken > in any way, only empty rectangle is rendered instead of the selected > character shape. This rectangle is filtered and then the destination > image is tested whether it is empty or almost empty (ie if it contains > only white area). White area means that selected character is not > correctly rendered and vice versa. > > If test images with rendered characters needs to be created, please use > the following flag: > > -create-images > > (name of each image start with character code) > > Is it ok to push this test (as patch) to IcedTea6 HEAD? > > (I'd like to push it to OpenJDK6 & OpenJDK7, but it takes some time to > get approved...) > > Cheers, > Pavel > Hi, I would also like to add one thing: diffstat for IcedTea6 HEAD is stored in attachment (in hg export format). Cheers, Pavel -------------- next part -------------- An embedded and charset-unspecified text was scrubbed... Name: hg_export Url: http://mail.openjdk.java.net/pipermail/distro-pkg-dev/attachments/20101101/5d7eb4f0/hg_export.ksh From liuqi at icedtea.classpath.org Mon Nov 1 06:11:58 2010 From: liuqi at icedtea.classpath.org (liuqi at icedtea.classpath.org) Date: Mon, 01 Nov 2010 13:11:58 +0000 Subject: /hg/openjdk6-mips: 3 new changesets Message-ID: changeset 142b74086f40 in /hg/openjdk6-mips details: http://icedtea.classpath.org/hg/openjdk6-mips?cmd=changeset;node=142b74086f40 author: Ao Qi date: Fri Oct 29 09:44:58 2010 +0800 Removed unimplemented parts in Makefile, so a relatively complete JRE can be built. changeset 7a9f890eafef in /hg/openjdk6-mips details: http://icedtea.classpath.org/hg/openjdk6-mips?cmd=changeset;node=7a9f890eafef author: YANG Yongqiang date: Mon Nov 01 17:41:18 2010 +0800 Fix 2 bugs which are related to patching. NativeGeneralJump represents both long and short jump instructions, so they must be dealed respectively in patching. Otherwise patching produces wrong results. changeset d0a60cd6d61c in /hg/openjdk6-mips details: http://icedtea.classpath.org/hg/openjdk6-mips?cmd=changeset;node=d0a60cd6d61c author: LIN Chuanwen date: Mon Nov 01 17:45:37 2010 +0800 Fix a bug caused by the MIPS ABI. When passing arguments, the stack adjusting is not according to the MIPS ABI. Fixed it. diffstat: 31 files changed, 202 insertions(+), 268 deletions(-) corba/make/common/Defs-linux.gmk | 4 env_debug.sh | 18 - env_product.sh | 7 hotspot/agent/make/saenv.sh | 4 hotspot/agent/src/os/linux/LinuxDebuggerLocal.c | 46 +++ hotspot/agent/src/os/linux/Makefile | 6 hotspot/agent/src/os/linux/libproc.h | 11 hotspot/make/Makefile | 7 hotspot/make/defs.make | 6 hotspot/make/linux/makefiles/buildtree.make | 2 hotspot/make/linux/makefiles/debug.make | 2 hotspot/make/linux/makefiles/defs.make | 20 + hotspot/make/linux/makefiles/gcc.make | 2 hotspot/make/linux/makefiles/launcher.make | 7 hotspot/make/linux/makefiles/sa.make | 3 hotspot/make/linux/makefiles/vm.make | 2 hotspot/src/cpu/mips/vm/c1_CodeStubs_mips.cpp | 9 hotspot/src/cpu/mips/vm/c1_LIRAssembler_mips.cpp | 8 hotspot/src/cpu/mips/vm/nativeInst_mips.cpp | 210 +----------------- hotspot/src/cpu/mips/vm/templateInterpreter_mips.cpp | 5 hotspot/src/share/vm/c1/c1_Runtime1.cpp | 1 hotspot/src/share/vm/runtime/reflection.cpp | 1 jdk/make/common/Defs-linux.gmk | 9 jdk/make/common/Program.gmk | 3 jdk/make/common/shared/Compiler-gcc.gmk | 8 jdk/make/common/shared/Platform.gmk | 5 jdk/make/java/instrument/Makefile | 3 jdk/make/java/redist/Makefile | 54 ++-- jdk/make/javax/sound/SoundDefs.gmk | 4 jdk/src/share/native/com/sun/media/sound/SoundDefs.h | 1 make/hotspot-rules.gmk | 2 diffs (truncated from 996 to 500 lines): diff -r d2a6a000ff33 -r d0a60cd6d61c corba/make/common/Defs-linux.gmk --- a/corba/make/common/Defs-linux.gmk Sat Oct 30 17:47:17 2010 +0800 +++ b/corba/make/common/Defs-linux.gmk Mon Nov 01 17:45:37 2010 +0800 @@ -197,6 +197,10 @@ EXTRA_LIBS += -lc EXTRA_LIBS += -lc LDFLAGS_DEFS_OPTION = -z defs +ifeq ($(ARCH), mips64) +# MIPS do not know this defs option + LDFLAGS_DEFS_OPTION = +endif LDFLAGS_COMMON += $(LDFLAGS_DEFS_OPTION) # diff -r d2a6a000ff33 -r d0a60cd6d61c env_debug.sh --- a/env_debug.sh Sat Oct 30 17:47:17 2010 +0800 +++ b/env_debug.sh Mon Nov 01 17:45:37 2010 +0800 @@ -1,27 +1,27 @@ export LANG=C export LANG=C export LC_ALL=C -export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/lib/jvm/java-6-openjdk +export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/lib/jvm/java-6-openjdk/bin export ALT_BOOTDIR=/usr/lib/jvm/java-6-openjdk #export ALT_BOOTDIR=/home/loongson/java/j2sdk-gs2 export ALT_BINARY_PLUGS_PATH=/opt/java/openjdk-binary-plugs -export ALT_JDK_IMPORT_PATH=/usr/lib/jvm/java-6-openjdk -#export ALT_SLASH_JAVA=/yangyongqiang +#export ALT_JDK_IMPORT_PATH=/usr/lib/jvm/java-6-openjdk export ARCH_DATA_MODEL=32 +#The default hotspot-build is all_product. Setting DEBUG_NAME would change the target. export DEBUG_NAME=debug -#The default hotspot-build is all_product. Setting DEBUG_NAME would change the target. -export BUILD_LANGTOOLS=fasle +# If want to build entire JDK, set all envs below true. +export BUILD_LANGTOOLS=false export BUILD_CORBA=false export BUILD_JAXP=false export BUILD_JAXWS=false +# When building jaxp, it seems a bug that jdk6-jaxp-2009_10_13.zip cannot be downloaded. +# The workaround is to download it by "wget ", and set ALT_DROPS_DIR to the dir where the zip is. +#export ALT_DROPS_DIR=~/zip_dir + export BUILD_MOTIF=false export BUILD_JDK=false export BUILD_DEPLOY=false -export CLIENT_ONLY=true - - unset CLASSPATH unset JAVA_HOME - diff -r d2a6a000ff33 -r d0a60cd6d61c env_product.sh --- a/env_product.sh Sat Oct 30 17:47:17 2010 +0800 +++ b/env_product.sh Mon Nov 01 17:45:37 2010 +0800 @@ -1,15 +1,20 @@ export LC_ALL=C export LC_ALL=C -export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/lib/jvm/java-6-openjdk +export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/lib/jvm/java-6-openjdk/bin export ALT_BOOTDIR=/usr/lib/jvm/java-6-openjdk export ALT_BINARY_PLUGS_PATH=/opt/java/openjdk-binary-plugs export ARCH_DATA_MODEL=32 #The default hotspot-build is all_product. Setting DEBUG_NAME would change the target. +# If want to build entire JDK, set all envs below true. export BUILD_LANGTOOLS=false export BUILD_CORBA=false export BUILD_JAXP=false export BUILD_JAXWS=false +# When building jaxp, it seems a bug that jdk6-jaxp-2009_10_13.zip cannot be downloaded. +# The workaround is to download it by "wget ", and set ALT_DROPS_DIR to the dir where the zip is. +#export ALT_DROPS_DIR=~/zip_dir + export BUILD_MOTIF=false export BUILD_JDK=false export BUILD_DEPLOY=false diff -r d2a6a000ff33 -r d0a60cd6d61c hotspot/agent/make/saenv.sh --- a/hotspot/agent/make/saenv.sh Sat Oct 30 17:47:17 2010 +0800 +++ b/hotspot/agent/make/saenv.sh Mon Nov 01 17:45:37 2010 +0800 @@ -42,6 +42,10 @@ if [ "$OS" = "Linux" ]; then SA_LIBPATH=$STARTDIR/../src/os/linux/amd64:$STARTDIR/linux/amd64 OPTIONS="-Dsa.library.path=$SA_LIBPATH" CPU=amd64 + elif [ "$ARCH" = "mips64" ] ; then + SA_LIBPATH=$STARTDIR/../src/os/linux/mips:$STARTDIR/linux/mips + OPTIONS="-Dsa.library.path=$SA_LIBPATH" + CPU=mips else SA_LIBPATH=$STARTDIR/../src/os/linux/i386:$STARTDIR/linux/i386 OPTIONS="-Dsa.library.path=$SA_LIBPATH" diff -r d2a6a000ff33 -r d0a60cd6d61c hotspot/agent/src/os/linux/LinuxDebuggerLocal.c --- a/hotspot/agent/src/os/linux/LinuxDebuggerLocal.c Sat Oct 30 17:47:17 2010 +0800 +++ b/hotspot/agent/src/os/linux/LinuxDebuggerLocal.c Mon Nov 01 17:45:37 2010 +0800 @@ -39,6 +39,10 @@ #if defined(sparc) || defined(sparcv9) #include "sun_jvm_hotspot_debugger_sparc_SPARCThreadContext.h" +#endif + +#if defined(mipsel) || defined(mips) +#include "sun_jvm_hotspot_debugger_mips_MIPSThreadContext.h" #endif static jfieldID p_ps_prochandle_ID = 0; @@ -307,6 +311,9 @@ JNIEXPORT jlongArray JNICALL Java_sun_jv #if defined(sparc) || defined(sparcv9) #define NPRGREG sun_jvm_hotspot_debugger_sparc_SPARCThreadContext_NPRGREG #endif +#if defined(mips) || defined(mipsel) +#define NPRGREG sun_jvm_hotspot_debugger_mips_MIPSThreadContext_NPRGREG +#endif array = (*env)->NewLongArray(env, NPRGREG); CHECK_EXCEPTION_(0); @@ -406,6 +413,45 @@ JNIEXPORT jlongArray JNICALL Java_sun_jv regs[REG_INDEX(R_O7)] = gregs.u_regs[14]; #endif /* sparc */ +#if defined(mips) || defined(mipsel) + +#define REG_INDEX(reg) sun_jvm_hotspot_debugger_mips_MIPSThreadContext_##reg + + regs[REG_INDEX(ZERO)] = gregs.regs[0]; + regs[REG_INDEX(AT)] = gregs.regs[1]; + regs[REG_INDEX(V0)] = gregs.regs[2]; + regs[REG_INDEX(V1)] = gregs.regs[3]; + regs[REG_INDEX(A0)] = gregs.regs[4]; + regs[REG_INDEX(A1)] = gregs.regs[5]; + regs[REG_INDEX(A2)] = gregs.regs[6]; + regs[REG_INDEX(A3)] = gregs.regs[7]; + regs[REG_INDEX(T0)] = gregs.regs[8]; + regs[REG_INDEX(T1)] = gregs.regs[9]; + regs[REG_INDEX(T2)] = gregs.regs[10]; + regs[REG_INDEX(T3)] = gregs.regs[11]; + regs[REG_INDEX(T4)] = gregs.regs[12]; + regs[REG_INDEX(T5)] = gregs.regs[13]; + regs[REG_INDEX(T6)] = gregs.regs[14]; + regs[REG_INDEX(T7)] = gregs.regs[15]; + regs[REG_INDEX(S0)] = gregs.regs[16]; + regs[REG_INDEX(S1)] = gregs.regs[17]; + regs[REG_INDEX(S2)] = gregs.regs[18]; + regs[REG_INDEX(S3)] = gregs.regs[19]; + regs[REG_INDEX(S4)] = gregs.regs[20]; + regs[REG_INDEX(S5)] = gregs.regs[21]; + regs[REG_INDEX(S6)] = gregs.regs[22]; + regs[REG_INDEX(S7)] = gregs.regs[23]; + regs[REG_INDEX(T8)] = gregs.regs[24]; + regs[REG_INDEX(T9)] = gregs.regs[25]; + regs[REG_INDEX(K0)] = gregs.regs[26]; + regs[REG_INDEX(K1)] = gregs.regs[27]; + regs[REG_INDEX(GP)] = gregs.regs[28]; + regs[REG_INDEX(SP)] = gregs.regs[29]; + regs[REG_INDEX(FP)] = gregs.regs[30]; + regs[REG_INDEX(S8)] = gregs.regs[30]; + regs[REG_INDEX(RA)] = gregs.regs[31]; +#endif /* mips */ + (*env)->ReleaseLongArrayElements(env, array, regs, JNI_COMMIT); return array; diff -r d2a6a000ff33 -r d0a60cd6d61c hotspot/agent/src/os/linux/Makefile --- a/hotspot/agent/src/os/linux/Makefile Sat Oct 30 17:47:17 2010 +0800 +++ b/hotspot/agent/src/os/linux/Makefile Mon Nov 01 17:45:37 2010 +0800 @@ -22,7 +22,11 @@ # # -ARCH := $(shell if ([ `uname -m` = "ia64" ]) ; then echo ia64 ; elif ([ `uname -m` = "x86_64" ]) ; then echo amd64; elif ([ `uname -m` = "sparc64" ]) ; then echo sparc; else echo i386 ; fi ) +ARCH := $(shell if ([ `uname -m` = "ia64" ]) ; then echo ia64 ; \ + elif ([ `uname -m` = "x86_64" ]) ; then echo amd64 ; \ + elif ([ `uname -m` = "sparc64" ]) ; then echo sparc ; \ + elif ([ `uname -m` = "mips64" ]) ; then echo mips ; \ + else echo i386 ; fi ) GCC = gcc JAVAH = ${JAVA_HOME}/bin/javah diff -r d2a6a000ff33 -r d0a60cd6d61c hotspot/agent/src/os/linux/libproc.h --- a/hotspot/agent/src/os/linux/libproc.h Sat Oct 30 17:47:17 2010 +0800 +++ b/hotspot/agent/src/os/linux/libproc.h Mon Nov 01 17:45:37 2010 +0800 @@ -43,6 +43,11 @@ #endif //sparc or sparcv9 +#if defined(mips) || defined(mipsel) || defined(mips64) || defined(mips64el) +#include +void abc(); +#endif + /************************************************************************************ 0. This is very minimal subset of Solaris libproc just enough for current application. @@ -83,7 +88,11 @@ unsigned long regs[IA64_REG_COUNT]; }; #endif -#if defined(sparc) || defined(sparcv9) +#if defined(sparc) || defined(sparcv9) +#define user_regs_struct pt_regs +#endif + +#if defined(mips) || defined(mipsel) || defined(mips64) || defined(mips64el) #define user_regs_struct pt_regs #endif diff -r d2a6a000ff33 -r d0a60cd6d61c hotspot/make/Makefile --- a/hotspot/make/Makefile Sat Oct 30 17:47:17 2010 +0800 +++ b/hotspot/make/Makefile Mon Nov 01 17:45:37 2010 +0800 @@ -89,7 +89,8 @@ JDK_DIRS=bin include jre lib demo JDK_DIRS=bin include jre lib demo all: all_product all_fastdebug -all_product: product product1 productkernel docs export_product +all_product: product1 productkernel docs export_product +#all_product: product product1 productkernel docs export_product all_fastdebug: fastdebug fastdebug1 fastdebugkernel docs export_fastdebug all_debug: jvmg1 jvmgkernel docs export_debug #all_debug: jvmg jvmg1 jvmgkernel docs export_debug @@ -303,7 +304,9 @@ endif $(install-file) # Xusage file -$(EXPORT_SERVER_DIR)/Xusage.txt $(EXPORT_CLIENT_DIR)/Xusage.txt $(EXPORT_KERNEL_DIR)/Xusage.txt: $(XUSAGE) +# FIXME: EXPORT_SERVER_DIR is null now. aoqi +#$(EXPORT_SERVER_DIR)/Xusage.txt $(EXPORT_CLIENT_DIR)/Xusage.txt $(EXPORT_KERNEL_DIR)/Xusage.txt: $(XUSAGE) +$(EXPORT_CLIENT_DIR)/Xusage.txt $(EXPORT_KERNEL_DIR)/Xusage.txt: $(XUSAGE) $(prep-target) $(RM) $@.temp $(SED) 's/\(separated by \)[;:]/\1$(PATH_SEP)/g' $< > $@.temp diff -r d2a6a000ff33 -r d0a60cd6d61c hotspot/make/defs.make --- a/hotspot/make/defs.make Sat Oct 30 17:47:17 2010 +0800 +++ b/hotspot/make/defs.make Mon Nov 01 17:45:37 2010 +0800 @@ -218,6 +218,8 @@ ifneq ($(OSNAME),windows) endif endif ifeq ($(BUILDARCH), mips) + # FIXME: Simply set BUILDARCH mipsel, because loongson is mipsel. aoqi + BUILDARCH = mipsel ifdef LP64 BUILDARCH = mips64 endif @@ -232,8 +234,10 @@ ifneq ($(OSNAME),windows) LIBARCH/ia64 = ia64 LIBARCH/mips = mips LIBARCH/mips64 = mips64 + LIBARCH/mipsel = mipsel + LIBARCH/mips64el= mips64el - LP64_ARCH = sparcv9 amd64 ia64 mips64 + LP64_ARCH = sparcv9 amd64 ia64 mips64 mips64el endif # Required make macro settings for all platforms diff -r d2a6a000ff33 -r d0a60cd6d61c hotspot/make/linux/makefiles/buildtree.make --- a/hotspot/make/linux/makefiles/buildtree.make Sat Oct 30 17:47:17 2010 +0800 +++ b/hotspot/make/linux/makefiles/buildtree.make Mon Nov 01 17:45:37 2010 +0800 @@ -114,7 +114,7 @@ BUILDTREE_MAKE = $(GAMMADIR)/make/$(OS_F BUILDTREE_MAKE = $(GAMMADIR)/make/$(OS_FAMILY)/makefiles/buildtree.make BUILDTREE_TARGETS = Makefile flags.make flags_vm.make vm.make adlc.make jvmti.make sa.make \ - env.sh env.csh .dbxrc #test_gamma + env.sh env.csh .dbxrc test_gamma BUILDTREE_VARS = GAMMADIR=$(GAMMADIR) OS_FAMILY=$(OS_FAMILY) \ ARCH=$(ARCH) BUILDARCH=$(BUILDARCH) LIBARCH=$(LIBARCH) VARIANT=$(VARIANT) diff -r d2a6a000ff33 -r d0a60cd6d61c hotspot/make/linux/makefiles/debug.make --- a/hotspot/make/linux/makefiles/debug.make Sat Oct 30 17:47:17 2010 +0800 +++ b/hotspot/make/linux/makefiles/debug.make Mon Nov 01 17:45:37 2010 +0800 @@ -40,5 +40,5 @@ _JUNK_ := $(shell echo -e >&2 ""\ G_SUFFIX = VERSION = debug -SYSDEFS += -DASSERT -DDEBUG -DLOONGSONDEBUG +SYSDEFS += -DASSERT -DDEBUG PICFLAGS = DEFAULT diff -r d2a6a000ff33 -r d0a60cd6d61c hotspot/make/linux/makefiles/defs.make --- a/hotspot/make/linux/makefiles/defs.make Sat Oct 30 17:47:17 2010 +0800 +++ b/hotspot/make/linux/makefiles/defs.make Mon Nov 01 17:45:37 2010 +0800 @@ -87,22 +87,32 @@ ifeq ($(ARCH), i686) HS_ARCH = x86 endif +# mips +ifeq ($(ARCH), mips64) + ARCH_DATA_MODEL = 32 + PLATFORM = linux-mipsel + VM_PLATFORM = linux_mipsel + HS_ARCH = mips +endif + JDK_INCLUDE_SUBDIR=linux # FIXUP: The subdirectory for a debug build is NOT the same on all platforms VM_DEBUG=jvmg EXPORT_LIST += $(EXPORT_DOCS_DIR)/platform/jvmti/jvmti.html -EXPORT_SERVER_DIR = $(EXPORT_JRE_LIB_ARCH_DIR)/server -EXPORT_LIST += $(EXPORT_SERVER_DIR)/Xusage.txt -EXPORT_LIST += $(EXPORT_SERVER_DIR)/libjsig.so -EXPORT_LIST += $(EXPORT_SERVER_DIR)/libjvm.so +#server cannot work now. FIXME aoqi +#EXPORT_SERVER_DIR = $(EXPORT_JRE_LIB_ARCH_DIR)/server +#EXPORT_LIST += $(EXPORT_SERVER_DIR)/Xusage.txt +#EXPORT_LIST += $(EXPORT_SERVER_DIR)/libjsig.so +#EXPORT_LIST += $(EXPORT_SERVER_DIR)/libjvm.so ifeq ($(ARCH_DATA_MODEL), 32) EXPORT_CLIENT_DIR = $(EXPORT_JRE_LIB_ARCH_DIR)/client EXPORT_LIST += $(EXPORT_CLIENT_DIR)/Xusage.txt EXPORT_LIST += $(EXPORT_CLIENT_DIR)/libjsig.so EXPORT_LIST += $(EXPORT_CLIENT_DIR)/libjvm.so - EXPORT_LIST += $(EXPORT_JRE_LIB_ARCH_DIR)/libsaproc.so +#libsaproc.so is not generated yet, its build is in saproc.make. FIXME aoqi +# EXPORT_LIST += $(EXPORT_JRE_LIB_ARCH_DIR)/libsaproc.so EXPORT_LIST += $(EXPORT_LIB_DIR)/sa-jdi.jar else ifeq ($(ARCH),ia64) diff -r d2a6a000ff33 -r d0a60cd6d61c hotspot/make/linux/makefiles/gcc.make --- a/hotspot/make/linux/makefiles/gcc.make Sat Oct 30 17:47:17 2010 +0800 +++ b/hotspot/make/linux/makefiles/gcc.make Mon Nov 01 17:45:37 2010 +0800 @@ -83,7 +83,7 @@ endif endif # Compiler warnings are treated as errors -WARNINGS_ARE_ERRORS = +WARNINGS_ARE_ERRORS = # Except for a few acceptable ones # Since GCC 4.3, -Wconversion has changed its meanings to warn these implicit diff -r d2a6a000ff33 -r d0a60cd6d61c hotspot/make/linux/makefiles/launcher.make --- a/hotspot/make/linux/makefiles/launcher.make Sat Oct 30 17:47:17 2010 +0800 +++ b/hotspot/make/linux/makefiles/launcher.make Mon Nov 01 17:45:37 2010 +0800 @@ -31,10 +31,15 @@ LAUNCHERFLAGS = $(ARCHFLAG) \ LAUNCHERFLAGS = $(ARCHFLAG) \ -I$(LAUNCHERDIR) -I$(GAMMADIR)/src/share/vm/prims \ -DFULL_VERSION=\"$(HOTSPOT_RELEASE_VERSION)\" \ - -DARCH=\"$(LIBARCH)\" \ -DGAMMA \ -DLAUNCHER_TYPE=\"gamma\" \ -DLINK_INTO_$(LINK_INTO) + +ifeq ($(LIBARCH),mips) + LAUNCHERFLAGS += -DARCH=\"mipsel\" +else + LAUNCHERFLAGS += -DARCH=\"$(LIBARCH)\" +endif ifeq ($(LINK_INTO),AOUT) LAUNCHER.o = launcher.o $(JVM_OBJ_FILES) diff -r d2a6a000ff33 -r d0a60cd6d61c hotspot/make/linux/makefiles/sa.make --- a/hotspot/make/linux/makefiles/sa.make Sat Oct 30 17:47:17 2010 +0800 +++ b/hotspot/make/linux/makefiles/sa.make Mon Nov 01 17:45:37 2010 +0800 @@ -42,6 +42,7 @@ SA_CLASSPATH = $(BOOT_JAVA_HOME)/lib/too # gnumake 3.78.1 does not accept the *s that # are in AGENT_FILES1 and AGENT_FILES2, so use the shell to expand them +# see sa.files AGENT_FILES1 := $(shell /usr/bin/test -d $(AGENT_DIR) && /bin/ls $(AGENT_FILES1)) AGENT_FILES2 := $(shell /usr/bin/test -d $(AGENT_DIR) && /bin/ls $(AGENT_FILES2)) @@ -91,6 +92,8 @@ all: $(QUIETLY) $(REMOTE) $(RUN.JAVAH) -classpath $(SA_CLASSDIR) -d $(GENERATED) -jni sun.jvm.hotspot.debugger.ia64.IA64ThreadContext $(QUIETLY) $(REMOTE) $(RUN.JAVAH) -classpath $(SA_CLASSDIR) -d $(GENERATED) -jni sun.jvm.hotspot.debugger.amd64.AMD64ThreadContext $(QUIETLY) $(REMOTE) $(RUN.JAVAH) -classpath $(SA_CLASSDIR) -d $(GENERATED) -jni sun.jvm.hotspot.debugger.sparc.SPARCThreadContext +#*.java of MIPS in hotspot/agent/src/share/classes/sun has not been implemented yet. FIXME aoqi +#$(QUIETLY) $(REMOTE) $(RUN.JAVAH) -classpath $(SA_CLASSDIR) -d $(GENERATED) -jni sun.jvm.hotspot.debugger.mips.MIPSThreadContext clean: rm -rf $(SA_CLASSDIR) diff -r d2a6a000ff33 -r d0a60cd6d61c hotspot/make/linux/makefiles/vm.make --- a/hotspot/make/linux/makefiles/vm.make Sat Oct 30 17:47:17 2010 +0800 +++ b/hotspot/make/linux/makefiles/vm.make Mon Nov 01 17:45:37 2010 +0800 @@ -221,7 +221,7 @@ include $(MAKEFILES_DIR)/saproc.make #---------------------------------------------------------------------- -#TODO aoqi +#FIXME aoqi, libsaproc[_g].so(serviceability agent) of mips has not been implemented yet. #build: $(LIBJVM) $(LAUNCHER) $(LIBJSIG) $(LIBJVM_DB) checkAndBuildSA build: $(LIBJVM) $(LAUNCHER) $(LIBJSIG) $(LIBJVM_DB) diff -r d2a6a000ff33 -r d0a60cd6d61c hotspot/src/cpu/mips/vm/c1_CodeStubs_mips.cpp --- a/hotspot/src/cpu/mips/vm/c1_CodeStubs_mips.cpp Sat Oct 30 17:47:17 2010 +0800 +++ b/hotspot/src/cpu/mips/vm/c1_CodeStubs_mips.cpp Mon Nov 01 17:45:37 2010 +0800 @@ -373,14 +373,11 @@ void PatchingStub::emit_code(LIR_Assembl } if (CommentedAssembly) { - __ block_comment("patch data encoded as movl"); + __ block_comment("patch data"); } // Now emit the patch record telling the runtime how to find the - // pieces of the patch. We only need 3 bytes but for readability of - // the disassembly we make the data look like a movl reg, imm32, - // which requires 5 bytes - //int sizeof_patch_record = 5; - //for mips, I use a move instruction instead @jerome, 12/29, 06 + // pieces of the patch. We only need 3 bytes but for alignment, we + // need 4 bytes int sizeof_patch_record = 4; bytes_to_skip += sizeof_patch_record; diff -r d2a6a000ff33 -r d0a60cd6d61c hotspot/src/cpu/mips/vm/c1_LIRAssembler_mips.cpp --- a/hotspot/src/cpu/mips/vm/c1_LIRAssembler_mips.cpp Sat Oct 30 17:47:17 2010 +0800 +++ b/hotspot/src/cpu/mips/vm/c1_LIRAssembler_mips.cpp Mon Nov 01 17:45:37 2010 +0800 @@ -2479,13 +2479,14 @@ void LIR_Assembler::emit_opTypeCheck(LIR jobject2reg(k->encoding(),k_RInfo); } assert(obj != k_RInfo, "must be different"); + int the_pc; if (op->profiled_method() != NULL) { ciMethod* method = op->profiled_method(); int bci = op->profiled_bci(); Label profile_done; // __ jcc(Assembler::notEqual, profile_done); - __ bne(obj, ZERO, done); + __ bne(obj, ZERO, profile_done); __ delayed()->nop(); // Object is null; update methodDataOop @@ -2498,15 +2499,11 @@ void LIR_Assembler::emit_opTypeCheck(LIR assert(data != NULL, "need data for checkcast"); assert(data->is_BitData(), "need BitData for checkcast"); Register mdo = klass_RInfo; - // __ movl(mdo, md->encoding()); - //__ move(mdo, md->encoding()); int oop_index = __ oop_recorder()->find_index(md->encoding()); RelocationHolder rspec = oop_Relocation::spec(oop_index); __ relocate(rspec); __ lui(mdo, Assembler::split_high((int)md->encoding())); __ addiu(mdo, mdo, Assembler::split_low((int)md->encoding())); - - Address data_addr(mdo, md->byte_offset_of_slot(data, DataLayout::header_offset())); //FIXME, it very ineffictive to replace orl with 3 mips instruction @jerome, 12/27,06 @@ -2521,7 +2518,6 @@ void LIR_Assembler::emit_opTypeCheck(LIR } else { __ beq(obj, ZERO, done); __ delayed()->nop(); - } __ verify_oop(obj); diff -r d2a6a000ff33 -r d0a60cd6d61c hotspot/src/cpu/mips/vm/nativeInst_mips.cpp --- a/hotspot/src/cpu/mips/vm/nativeInst_mips.cpp Sat Oct 30 17:47:17 2010 +0800 +++ b/hotspot/src/cpu/mips/vm/nativeInst_mips.cpp Mon Nov 01 17:45:37 2010 +0800 @@ -37,15 +37,6 @@ void NativeInstruction::set_long_at(int } void NativeCall::verify() { -/* - // Make sure code pattern is actually a call imm32 instruction. - int inst = ubyte_at(0); - if (inst != instruction_code) { - tty->print_cr("Addr: " INTPTR_FORMAT " Code: 0x%x", instruction_address(), - inst); - fatal("not a call disp32"); - } -*/ // make sure code pattern is actually a call instruction if ( !is_op(Assembler::lui_op) || !is_op(long_at(4), Assembler::addiu_op) || @@ -145,136 +136,9 @@ void NativeCall::insert(address code_pos // selfs (spinlock). Then patches the last byte, and then atomicly replaces // the jmp's with the first 4 byte of the new instruction. void NativeCall::replace_mt_safe(address instr_addr, address code_buffer) { -/* - assert(Patching_lock->is_locked() || - SafepointSynchronize::is_at_safepoint(), "concurrent code patching"); - assert (instr_addr != NULL, "illegal address for code patching"); - - NativeCall* n_call = nativeCall_at (instr_addr); // checking that it is a call - if (os::is_MP()) { - guarantee((intptr_t)instr_addr % BytesPerWord == 0, "must be aligned"); - } - - // First patch dummy jmp in place - unsigned char patch[4]; - assert(sizeof(patch)==sizeof(jint), "sanity check"); - patch[0] = 0xEB; // jmp rel8 - patch[1] = 0xFE; // jmp to self - patch[2] = 0xEB; - patch[3] = 0xFE; - - // First patch dummy jmp in place - *(jint*)instr_addr = *(jint *)patch; - - // Invalidate. Opteron requires a flush after every write. - n_call->wrote(0); - - // Patch 4th byte - instr_addr[4] = code_buffer[4]; - - n_call->wrote(4); - - // Patch bytes 0-3 - *(jint*)instr_addr = *(jint *)code_buffer; From ahughes at redhat.com Mon Nov 1 06:17:14 2010 From: ahughes at redhat.com (Dr Andrew John Hughes) Date: Mon, 1 Nov 2010 13:17:14 +0000 Subject: Regression test for non-Latin character rendering In-Reply-To: <4CCAF5A2.8010803@redhat.com> References: <4CCAF5A2.8010803@redhat.com> Message-ID: <20101101131714.GA11106@rivendell.middle-earth.co.uk> On 18:26 Fri 29 Oct , Pavel Tisnovsky wrote: > Hi all, > > I created regression test (reproducer) for RH bug > https://bugzilla.redhat.com/show_bug.cgi?id=643674 > > This regression test checks if all required fonts are properly installed > and that *.src.properties font configuration file is correct for given > system (Debian, Fedora, Ubuntu, SuSE...). The test is based on rendering > certain characters from selected code pages into BufferedImage. > > When the required font does not exists or font configuration is broken > in any way, only empty rectangle is rendered instead of the selected > character shape. This rectangle is filtered and then the destination > image is tested whether it is empty or almost empty (ie if it contains > only white area). White area means that selected character is not > correctly rendered and vice versa. > > If test images with rendered characters needs to be created, please use > the following flag: > > -create-images > > (name of each image start with character code) > > Is it ok to push this test (as patch) to IcedTea6 HEAD? > Sounds ok. Can you post the actual patch for IcedTea6? Probably worth backporting to the branches too. > (I'd like to push it to OpenJDK6 & OpenJDK7, but it takes some time to > get approved...) > Yeah, do that when you have time. > Cheers, > Pavel > import java.awt.Color; > import java.awt.Font; > import java.awt.Graphics2D; > import java.awt.RenderingHints; > import java.awt.image.BufferedImage; > import java.io.File; > import java.io.IOException; > import java.util.Arrays; > > import javax.imageio.ImageIO; > > /** > * @test > * @run main InternationalFontsRendering > * @author Pavel Tisnovsky > * > * @summary This test check if all required fonts are properly installed and configured. > * > * This regression test checks if all required fonts are properly installed and > * that .src.properties font configuration is correct. The test is based on > * rendering certain characters from selected code pages into BufferedImage. > * > * When the font does not exists or font configuration is broken, only empty > * rectangle is rendered instead of the selected character shape. This rectangle > * is filtered and then the destination image is tested whether it is empty > * (=white). > * > * If test images with rendered characters needs to be created use following flag: > * -create-images > * > * regression for bug: https://bugzilla.redhat.com/show_bug.cgi?id=643674 > * (Bug 643674 Misconfigured Path for Asian Font) > * > * @author Pavel Tisnovsky > * > */ > public class InternationalFontsRendering > { > private static int WIDTH = 200; > private static int HEIGHT = 200; > > private static final int FONT_SIZE = 160; > > private static final int MINIMUM_HORIZONTAL_LINE_LENGTH = 70; > private static final int MINIMUM_VERTICAL_LINE_LENGTH = 80; > private static final int BLACK_WHITE_THRESHOLD = 128; > private static final int BLACK_PIXEL_COUNT_THRESHOLD = WIDTH * HEIGHT / 1000; > > private static final String[][] testedStrings = { > {"Latin-1", "abcdefABCDEF"}, > {"Latin-2", "??????????????????????????"}, > {"Cyrilic", "??????????????????"}, > {"Greek", "????????????????????????????????"}, > {"Asia-Test1", "???????????????"}, > {"Asia-Test2", "??????????????????"}, > {"Asia-Test3", "???????????????"}, > {"Asia-Test4", "???????????????"}, > }; > > /** > * Creates test image a renders one big character to it. > * @param testedString > * @return > */ > private BufferedImage createTestImage(String str) > { > BufferedImage image = new BufferedImage(WIDTH, HEIGHT, BufferedImage.TYPE_BYTE_GRAY); > Graphics2D gc = image.createGraphics(); > gc.setBackground(Color.WHITE); > gc.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_OFF); > gc.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING, RenderingHints.VALUE_TEXT_ANTIALIAS_OFF); > gc.clearRect(0, 0, WIDTH, HEIGHT); > gc.setFont(new Font(Font.DIALOG, Font.PLAIN, FONT_SIZE)); > gc.setColor(Color.BLACK); > gc.drawString(str, 0, HEIGHT - 40); > gc.dispose(); > return image; > } > > /** > * Creates destination image and then copies data from source image to it > * @param src > * @return > */ > private BufferedImage createDestinationImage(BufferedImage src) > { > BufferedImage image = new BufferedImage(WIDTH, HEIGHT, BufferedImage.TYPE_BYTE_GRAY); > src.copyData(image.getRaster()); > return image; > } > > /** > * Removes long horizontal lines from image > */ > private void removeHorizontalLines(BufferedImage image) > { > for (int y = 0; y < image.getHeight(); y++) > { > int startX = -1, endX = -1; > for (int x = 0; x < image.getWidth(); x++) > { > int color = image.getRaster().getSample(x, y, 0); > if (startX < 0 && color < 128) > { > startX = x; > //System.out.println("> " + y + "\t" + x); > } > if (startX > 0 && endX < 0 && color > BLACK_WHITE_THRESHOLD) > { > endX = x; > //System.out.println("< " + y + "\t" + x); > } > } > if (startX > 0 && endX > 0 && (endX - startX) > MINIMUM_HORIZONTAL_LINE_LENGTH) > { > for (int x = startX; x < endX; x++) > { > image.getRaster().setSample(x, y, 0, 255); > } > } > } > } > > /** > * Removes long vertical lines from image > */ > private void removeVerticalLines(BufferedImage image) > { > for (int x = 0; x < image.getWidth(); x++) > { > int startY = -1, endY = -1; > for (int y = 0; y < image.getHeight(); y++) > { > int color = image.getRaster().getSample(x, y, 0); > if (startY < 0 && color < 128) > { > startY = y; > } > if (startY > 0 && endY < 0 && color > BLACK_WHITE_THRESHOLD) > { > endY = y; > //System.out.println("< " + y + "\t" + x); > } > } > if (startY > 0 && endY > 0 && (endY - startY) > MINIMUM_VERTICAL_LINE_LENGTH) > { > for (int y = startY; y < endY; y++) > { > image.getRaster().setSample(x, y, 0, 255); > } > } > } > } > > /** > * Test if image is almost empty (one large white area) > * @param image > * @return > */ > private boolean isImageAlmostEmpty(BufferedImage image) > { > int blackPixelCount = 0; > for (int y = 0; y < image.getHeight(); y++) > { > for (int x = 0; x < image.getWidth(); x++) > { > if (image.getRaster().getSample(x, y, 0) < BLACK_WHITE_THRESHOLD) > { > blackPixelCount++; > } > } > } > return blackPixelCount < BLACK_PIXEL_COUNT_THRESHOLD; > } > > public void runTest(boolean createImages) throws IOException > { > for (String[] testedString : testedStrings) > { > System.out.println("\nTesting " + testedString[0]); > for (int i = 0; i < testedString[1].length(); i++) > { > String str = testedString[1].substring(i, 1+i); > int code = str.charAt(0); > System.out.print(code + "\t"); > BufferedImage src = createTestImage(str); > BufferedImage dst = createDestinationImage(src); > removeHorizontalLines(dst); > removeVerticalLines(dst); > > if (createImages /* || true*/) > { > ImageIO.write(src, "png", new File(code + "_src.png")); > ImageIO.write(dst, "png", new File(code + "_dst.png")); > } > > if (isImageAlmostEmpty(dst)) > { > throw new RuntimeException("Error in rendering of character with code: " + code); > } > } > } > } > > public static void main(String[] args) throws IOException > { > new InternationalFontsRendering().runTest(Arrays.asList(args).contains("-create-images")); > } > } -- Andrew :) Free Java Software Engineer Red Hat, Inc. (http://www.redhat.com) Support Free Java! Contribute to GNU Classpath and the OpenJDK http://www.gnu.org/software/classpath http://openjdk.java.net PGP Key: 94EFD9D8 (http://subkeys.pgp.net) Fingerprint = F8EF F1EA 401E 2E60 15FA 7927 142C 2591 94EF D9D8 From ahughes at redhat.com Mon Nov 1 06:18:43 2010 From: ahughes at redhat.com (Dr Andrew John Hughes) Date: Mon, 1 Nov 2010 13:18:43 +0000 Subject: Regression test for non-Latin character rendering In-Reply-To: <4CCEAC75.9090005@redhat.com> References: <4CCAF5A2.8010803@redhat.com> <4CCEAC75.9090005@redhat.com> Message-ID: <20101101131842.GB11106@rivendell.middle-earth.co.uk> On 13:03 Mon 01 Nov , Pavel Tisnovsky wrote: > Pavel Tisnovsky wrote: > > Hi all, > > > > I created regression test (reproducer) for RH bug > > https://bugzilla.redhat.com/show_bug.cgi?id=643674 > > > > This regression test checks if all required fonts are properly installed > > and that *.src.properties font configuration file is correct for given > > system (Debian, Fedora, Ubuntu, SuSE...). The test is based on rendering > > certain characters from selected code pages into BufferedImage. > > > > When the required font does not exists or font configuration is broken > > in any way, only empty rectangle is rendered instead of the selected > > character shape. This rectangle is filtered and then the destination > > image is tested whether it is empty or almost empty (ie if it contains > > only white area). White area means that selected character is not > > correctly rendered and vice versa. > > > > If test images with rendered characters needs to be created, please use > > the following flag: > > > > -create-images > > > > (name of each image start with character code) > > > > Is it ok to push this test (as patch) to IcedTea6 HEAD? > > > > (I'd like to push it to OpenJDK6 & OpenJDK7, but it takes some time to > > get approved...) > > > > Cheers, > > Pavel > > > > Hi, > > I would also like to add one thing: diffstat for IcedTea6 HEAD is stored > in attachment (in hg export format). > Does this run ok with a normal check-jdk JTreg run? If so, please commit. > Cheers, > Pavel > # HG changeset patch > # User ptisnovs > # Date 1288609100 -3600 > # Node ID 9e93fe87fc3a9bf337d556d65438032e0cd85359 > # Parent 0bfb4898c03918836c6fd811d8a373a68d69ed6c > Added new regression test for checking if all non-Latin fonts are installed and properly configured.. > > diff -r 0bfb4898c039 -r 9e93fe87fc3a ChangeLog > --- a/ChangeLog Wed Oct 20 14:45:55 2010 +0100 > +++ b/ChangeLog Mon Nov 01 11:58:20 2010 +0100 > @@ -1,3 +1,12 @@ > +2010-11-01 Pavel Tisnovsky > + > + * Makefile.am: > + * patches/icedtea-jtreg-international-fonts.patch: > + Added new regression test > + patches/icedtea-jtreg-international-fonts.patch > + for checking if all non-Latin fonts are installed > + and properly configured. > + > 2010-10-19 Andrew John Hughes > > * INSTALL: Clarify HotSpot build documentation. > diff -r 0bfb4898c039 -r 9e93fe87fc3a Makefile.am > --- a/Makefile.am Wed Oct 20 14:45:55 2010 +0100 > +++ b/Makefile.am Mon Nov 01 11:58:20 2010 +0100 > @@ -291,8 +291,9 @@ > patches/numa_on_early_glibc.patch \ > patches/icedtea-shark-build.patch \ > patches/openjdk/6985992-test_6933784.patch \ > - patches/openjdk/6853592-badwindow-warning-fix.patch \ > - patches/6703377-freetypescaler.patch > + patches/openjdk/6853592-badwindow-warning-fix.patch \ > + patches/6703377-freetypescaler.patch \ > + patches/icedtea-jtreg-international-fonts.patch > > if !WITH_ALT_HSBUILD > ICEDTEA_PATCHES += \ > diff -r 0bfb4898c039 -r 9e93fe87fc3a patches/icedtea-jtreg-international-fonts.patch > --- /dev/null Thu Jan 01 00:00:00 1970 +0000 > +++ b/patches/icedtea-jtreg-international-fonts.patch Mon Nov 01 11:58:20 2010 +0100 > @@ -0,0 +1,195 @@ > +--- /dev/null 2010-06-29 14:56:30.329576932 +0200 > ++++ openjdk/jdk/test/java/awt/font/InternationalFonts/InternationalFontsRendering.java 2010-11-01 11:27:46.000000000 +0100 > +@@ -0,0 +1,192 @@ > ++import java.awt.Color; > ++import java.awt.Font; > ++import java.awt.Graphics2D; > ++import java.awt.RenderingHints; > ++import java.awt.image.BufferedImage; > ++import java.io.File; > ++import java.io.IOException; > ++import java.util.Arrays; > ++import java.util.List; > ++import java.util.ArrayList; > ++ > ++import javax.imageio.ImageIO; > ++ > ++/** > ++ * @test > ++ * @run main InternationalFontsRendering > ++ * @author Pavel Tisnovsky > ++ * > ++ * @summary This test check if all required fonts are properly installed and configured. > ++ * > ++ * This regression test checks if all required fonts are properly installed and > ++ * that .src.properties font configuration is correct. The test is based on > ++ * rendering certain characters from selected code pages into BufferedImage. > ++ * > ++ * When the font does not exists or font configuration is broken, only empty > ++ * rectangle is rendered instead of the selected character shape. This rectangle > ++ * is filtered and then the destination image is tested whether it is empty > ++ * (=white). > ++ * > ++ * If test images with rendered characters needs to be created use following flag: > ++ * -create-images > ++ * > ++ * regression for bug: https://bugzilla.redhat.com/show_bug.cgi?id=643674 > ++ * (Bug 643674 Misconfigured Path for Asian Font) > ++ * > ++ */ > ++public class InternationalFontsRendering > ++{ > ++ private static int WIDTH = 200; > ++ private static int HEIGHT = 200; > ++ > ++ private static final int FONT_SIZE = 160; > ++ > ++ private static final int MINIMUM_HORIZONTAL_LINE_LENGTH = 70; > ++ private static final int MINIMUM_VERTICAL_LINE_LENGTH = 80; > ++ private static final int BLACK_WHITE_THRESHOLD = 128; > ++ private static final int BLACK_PIXEL_COUNT_THRESHOLD = WIDTH * HEIGHT / 1000; > ++ > ++ private static final String[][] testedStrings = { > ++ {"Latin-1", "abcdefABCDEF"}, > ++ {"Latin-2", "??????????????????????????"}, > ++ {"Cyrilic", "??????????????????"}, > ++ {"Greek", "????????????????????????????????"}, > ++ {"Asia-Test1", "???????????????"}, > ++ {"Asia-Test2", "??????????????????"}, > ++ {"Asia-Test3", "???????????????"}, > ++ {"Asia-Test4", "???????????????"}, > ++ }; > ++ > ++ /** > ++ * Creates test image a renders one big character to it. > ++ * @param testedString > ++ * @return > ++ */ > ++ private BufferedImage createTestImage(String str) { > ++ BufferedImage image = new BufferedImage(WIDTH, HEIGHT, BufferedImage.TYPE_BYTE_GRAY); > ++ Graphics2D gc = image.createGraphics(); > ++ gc.setBackground(Color.WHITE); > ++ gc.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_OFF); > ++ gc.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING, RenderingHints.VALUE_TEXT_ANTIALIAS_OFF); > ++ gc.clearRect(0, 0, WIDTH, HEIGHT); > ++ gc.setFont(new Font(Font.DIALOG, Font.PLAIN, FONT_SIZE)); > ++ gc.setColor(Color.BLACK); > ++ gc.drawString(str, 0, HEIGHT - 40); > ++ gc.dispose(); > ++ return image; > ++ } > ++ > ++ /** > ++ * Creates destination image and then copies data from source image to it > ++ * @param src > ++ * @return > ++ */ > ++ private BufferedImage createDestinationImage(BufferedImage src) { > ++ BufferedImage image = new BufferedImage(WIDTH, HEIGHT, BufferedImage.TYPE_BYTE_GRAY); > ++ src.copyData(image.getRaster()); > ++ return image; > ++ } > ++ > ++ /** > ++ * Removes long horizontal lines from image > ++ */ > ++ private void removeHorizontalLines(BufferedImage image) { > ++ for (int y = 0; y < image.getHeight(); y++) { > ++ int startX = -1, endX = -1; > ++ for (int x = 0; x < image.getWidth(); x++) { > ++ int color = image.getRaster().getSample(x, y, 0); > ++ if (startX < 0 && color <= BLACK_WHITE_THRESHOLD) { > ++ startX = x; > ++ //System.out.println("> " + y + "\t" + x); > ++ } > ++ if (startX > 0 && endX < 0 && color > BLACK_WHITE_THRESHOLD) { > ++ endX = x; > ++ //System.out.println("< " + y + "\t" + x); > ++ } > ++ } > ++ // remove long horizontal line, but only if this line found detected in image > ++ if (startX > 0 && endX > 0 && (endX - startX) > MINIMUM_HORIZONTAL_LINE_LENGTH) { > ++ for (int x = startX; x < endX; x++) { > ++ image.getRaster().setSample(x, y, 0, 255); > ++ } > ++ } > ++ } > ++ } > ++ > ++ /** > ++ * Removes long vertical lines from image > ++ */ > ++ private void removeVerticalLines(BufferedImage image) { > ++ for (int x = 0; x < image.getWidth(); x++) { > ++ int startY = -1, endY = -1; > ++ for (int y = 0; y < image.getHeight(); y++) { > ++ int color = image.getRaster().getSample(x, y, 0); > ++ if (startY < 0 && color <= BLACK_WHITE_THRESHOLD) { > ++ startY = y; > ++ } > ++ if (startY > 0 && endY < 0 && color > BLACK_WHITE_THRESHOLD) { > ++ endY = y; > ++ //System.out.println("< " + y + "\t" + x); > ++ } > ++ } > ++ // remove long vertical line, but only if this line found detected in image > ++ if (startY > 0 && endY > 0 && (endY - startY) > MINIMUM_VERTICAL_LINE_LENGTH) { > ++ for (int y = startY; y < endY; y++) { > ++ image.getRaster().setSample(x, y, 0, 255); > ++ } > ++ } > ++ } > ++ } > ++ > ++ /** > ++ * Test if image is almost empty (one large white area) > ++ * @param image > ++ * @return > ++ */ > ++ private boolean isImageAlmostEmpty(BufferedImage image) { > ++ int blackPixelCount = 0; > ++ for (int y = 0; y < image.getHeight(); y++) { > ++ for (int x = 0; x < image.getWidth(); x++) { > ++ if (image.getRaster().getSample(x, y, 0) < BLACK_WHITE_THRESHOLD) { > ++ blackPixelCount++; > ++ } > ++ } > ++ } > ++ return blackPixelCount < BLACK_PIXEL_COUNT_THRESHOLD; > ++ } > ++ > ++ public void runTest(boolean createImages) throws IOException > ++ { > ++ List badCharacters = new ArrayList(); > ++ for (String[] testedString : testedStrings) { > ++ System.out.println("\nTesting " + testedString[0]); > ++ for (int i = 0; i < testedString[1].length(); i++) { > ++ String str = testedString[1].substring(i, 1+i); > ++ int code = str.charAt(0); > ++ System.out.print(code + "\t"); > ++ BufferedImage src = createTestImage(str); > ++ BufferedImage dst = createDestinationImage(src); > ++ removeHorizontalLines(dst); > ++ removeVerticalLines(dst); > ++ > ++ if (createImages /* || true*/) { > ++ ImageIO.write(src, "png", new File(code + "_src.png")); > ++ ImageIO.write(dst, "png", new File(code + "_dst.png")); > ++ } > ++ > ++ if (isImageAlmostEmpty(dst)) { > ++ System.err.println("Bad rendering of character with code: " + code); > ++ badCharacters.add(Integer.valueOf(code)); > ++ } > ++ } > ++ } > ++ if (!badCharacters.isEmpty()) { > ++ throw new RuntimeException("Error in rendering of character(s) with code(s): " + badCharacters.toString()); > ++ } > ++ } > ++ > ++ public static void main(String[] args) throws IOException { > ++ new InternationalFontsRendering().runTest(Arrays.asList(args).contains("-create-images")); > ++ } > ++} > ++ -- Andrew :) Free Java Software Engineer Red Hat, Inc. (http://www.redhat.com) Support Free Java! Contribute to GNU Classpath and the OpenJDK http://www.gnu.org/software/classpath http://openjdk.java.net PGP Key: 94EFD9D8 (http://subkeys.pgp.net) Fingerprint = F8EF F1EA 401E 2E60 15FA 7927 142C 2591 94EF D9D8 From ptisnovs at redhat.com Mon Nov 1 07:08:59 2010 From: ptisnovs at redhat.com (Pavel Tisnovsky) Date: Mon, 01 Nov 2010 15:08:59 +0100 Subject: Regression test for non-Latin character rendering In-Reply-To: <20101101131842.GB11106@rivendell.middle-earth.co.uk> References: <4CCAF5A2.8010803@redhat.com> <4CCEAC75.9090005@redhat.com> <20101101131842.GB11106@rivendell.middle-earth.co.uk> Message-ID: <4CCEC9FB.4080103@redhat.com> Dr Andrew John Hughes wrote: > On 13:03 Mon 01 Nov , Pavel Tisnovsky wrote: >> Pavel Tisnovsky wrote: >>> Hi all, >>> >>> I created regression test (reproducer) for RH bug >>> https://bugzilla.redhat.com/show_bug.cgi?id=643674 >>> >>> This regression test checks if all required fonts are properly installed >>> and that *.src.properties font configuration file is correct for given >>> system (Debian, Fedora, Ubuntu, SuSE...). The test is based on rendering >>> certain characters from selected code pages into BufferedImage. >>> >>> When the required font does not exists or font configuration is broken >>> in any way, only empty rectangle is rendered instead of the selected >>> character shape. This rectangle is filtered and then the destination >>> image is tested whether it is empty or almost empty (ie if it contains >>> only white area). White area means that selected character is not >>> correctly rendered and vice versa. >>> >>> If test images with rendered characters needs to be created, please use >>> the following flag: >>> >>> -create-images >>> >>> (name of each image start with character code) >>> >>> Is it ok to push this test (as patch) to IcedTea6 HEAD? >>> >>> (I'd like to push it to OpenJDK6 & OpenJDK7, but it takes some time to >>> get approved...) >>> >>> Cheers, >>> Pavel >>> >> Hi, >> >> I would also like to add one thing: diffstat for IcedTea6 HEAD is stored >> in attachment (in hg export format). >> > > Does this run ok with a normal check-jdk JTreg run? I usually start regression tests by "make check -k" or in some cases via test harness GUI. Both way the test fails (on Fedoras at least) because of improper font names in configuration file, as is described in https://bugzilla.redhat.com/show_bug.cgi?id=643674 > > If so, please commit. > >> Cheers, >> Pavel > >> # HG changeset patch >> # User ptisnovs >> # Date 1288609100 -3600 >> # Node ID 9e93fe87fc3a9bf337d556d65438032e0cd85359 >> # Parent 0bfb4898c03918836c6fd811d8a373a68d69ed6c >> Added new regression test for checking if all non-Latin fonts are installed and properly configured.. >> >> diff -r 0bfb4898c039 -r 9e93fe87fc3a ChangeLog >> --- a/ChangeLog Wed Oct 20 14:45:55 2010 +0100 >> +++ b/ChangeLog Mon Nov 01 11:58:20 2010 +0100 >> @@ -1,3 +1,12 @@ >> +2010-11-01 Pavel Tisnovsky >> + >> + * Makefile.am: >> + * patches/icedtea-jtreg-international-fonts.patch: >> + Added new regression test >> + patches/icedtea-jtreg-international-fonts.patch >> + for checking if all non-Latin fonts are installed >> + and properly configured. >> + >> 2010-10-19 Andrew John Hughes >> >> * INSTALL: Clarify HotSpot build documentation. >> diff -r 0bfb4898c039 -r 9e93fe87fc3a Makefile.am >> --- a/Makefile.am Wed Oct 20 14:45:55 2010 +0100 >> +++ b/Makefile.am Mon Nov 01 11:58:20 2010 +0100 >> @@ -291,8 +291,9 @@ >> patches/numa_on_early_glibc.patch \ >> patches/icedtea-shark-build.patch \ >> patches/openjdk/6985992-test_6933784.patch \ >> - patches/openjdk/6853592-badwindow-warning-fix.patch \ >> - patches/6703377-freetypescaler.patch >> + patches/openjdk/6853592-badwindow-warning-fix.patch \ >> + patches/6703377-freetypescaler.patch \ >> + patches/icedtea-jtreg-international-fonts.patch >> >> if !WITH_ALT_HSBUILD >> ICEDTEA_PATCHES += \ >> diff -r 0bfb4898c039 -r 9e93fe87fc3a patches/icedtea-jtreg-international-fonts.patch >> --- /dev/null Thu Jan 01 00:00:00 1970 +0000 >> +++ b/patches/icedtea-jtreg-international-fonts.patch Mon Nov 01 11:58:20 2010 +0100 >> @@ -0,0 +1,195 @@ >> +--- /dev/null 2010-06-29 14:56:30.329576932 +0200 >> ++++ openjdk/jdk/test/java/awt/font/InternationalFonts/InternationalFontsRendering.java 2010-11-01 11:27:46.000000000 +0100 >> +@@ -0,0 +1,192 @@ >> ++import java.awt.Color; >> ++import java.awt.Font; >> ++import java.awt.Graphics2D; >> ++import java.awt.RenderingHints; >> ++import java.awt.image.BufferedImage; >> ++import java.io.File; >> ++import java.io.IOException; >> ++import java.util.Arrays; >> ++import java.util.List; >> ++import java.util.ArrayList; >> ++ >> ++import javax.imageio.ImageIO; >> ++ >> ++/** >> ++ * @test >> ++ * @run main InternationalFontsRendering >> ++ * @author Pavel Tisnovsky >> ++ * >> ++ * @summary This test check if all required fonts are properly installed and configured. >> ++ * >> ++ * This regression test checks if all required fonts are properly installed and >> ++ * that .src.properties font configuration is correct. The test is based on >> ++ * rendering certain characters from selected code pages into BufferedImage. >> ++ * >> ++ * When the font does not exists or font configuration is broken, only empty >> ++ * rectangle is rendered instead of the selected character shape. This rectangle >> ++ * is filtered and then the destination image is tested whether it is empty >> ++ * (=white). >> ++ * >> ++ * If test images with rendered characters needs to be created use following flag: >> ++ * -create-images >> ++ * >> ++ * regression for bug: https://bugzilla.redhat.com/show_bug.cgi?id=643674 >> ++ * (Bug 643674 Misconfigured Path for Asian Font) >> ++ * >> ++ */ >> ++public class InternationalFontsRendering >> ++{ >> ++ private static int WIDTH = 200; >> ++ private static int HEIGHT = 200; >> ++ >> ++ private static final int FONT_SIZE = 160; >> ++ >> ++ private static final int MINIMUM_HORIZONTAL_LINE_LENGTH = 70; >> ++ private static final int MINIMUM_VERTICAL_LINE_LENGTH = 80; >> ++ private static final int BLACK_WHITE_THRESHOLD = 128; >> ++ private static final int BLACK_PIXEL_COUNT_THRESHOLD = WIDTH * HEIGHT / 1000; >> ++ >> ++ private static final String[][] testedStrings = { >> ++ {"Latin-1", "abcdefABCDEF"}, >> ++ {"Latin-2", "??????????????????????????"}, >> ++ {"Cyrilic", "??????????????????"}, >> ++ {"Greek", "????????????????????????????????"}, >> ++ {"Asia-Test1", "???????????????"}, >> ++ {"Asia-Test2", "??????????????????"}, >> ++ {"Asia-Test3", "???????????????"}, >> ++ {"Asia-Test4", "???????????????"}, >> ++ }; >> ++ >> ++ /** >> ++ * Creates test image a renders one big character to it. >> ++ * @param testedString >> ++ * @return >> ++ */ >> ++ private BufferedImage createTestImage(String str) { >> ++ BufferedImage image = new BufferedImage(WIDTH, HEIGHT, BufferedImage.TYPE_BYTE_GRAY); >> ++ Graphics2D gc = image.createGraphics(); >> ++ gc.setBackground(Color.WHITE); >> ++ gc.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_OFF); >> ++ gc.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING, RenderingHints.VALUE_TEXT_ANTIALIAS_OFF); >> ++ gc.clearRect(0, 0, WIDTH, HEIGHT); >> ++ gc.setFont(new Font(Font.DIALOG, Font.PLAIN, FONT_SIZE)); >> ++ gc.setColor(Color.BLACK); >> ++ gc.drawString(str, 0, HEIGHT - 40); >> ++ gc.dispose(); >> ++ return image; >> ++ } >> ++ >> ++ /** >> ++ * Creates destination image and then copies data from source image to it >> ++ * @param src >> ++ * @return >> ++ */ >> ++ private BufferedImage createDestinationImage(BufferedImage src) { >> ++ BufferedImage image = new BufferedImage(WIDTH, HEIGHT, BufferedImage.TYPE_BYTE_GRAY); >> ++ src.copyData(image.getRaster()); >> ++ return image; >> ++ } >> ++ >> ++ /** >> ++ * Removes long horizontal lines from image >> ++ */ >> ++ private void removeHorizontalLines(BufferedImage image) { >> ++ for (int y = 0; y < image.getHeight(); y++) { >> ++ int startX = -1, endX = -1; >> ++ for (int x = 0; x < image.getWidth(); x++) { >> ++ int color = image.getRaster().getSample(x, y, 0); >> ++ if (startX < 0 && color <= BLACK_WHITE_THRESHOLD) { >> ++ startX = x; >> ++ //System.out.println("> " + y + "\t" + x); >> ++ } >> ++ if (startX > 0 && endX < 0 && color > BLACK_WHITE_THRESHOLD) { >> ++ endX = x; >> ++ //System.out.println("< " + y + "\t" + x); >> ++ } >> ++ } >> ++ // remove long horizontal line, but only if this line found detected in image >> ++ if (startX > 0 && endX > 0 && (endX - startX) > MINIMUM_HORIZONTAL_LINE_LENGTH) { >> ++ for (int x = startX; x < endX; x++) { >> ++ image.getRaster().setSample(x, y, 0, 255); >> ++ } >> ++ } >> ++ } >> ++ } >> ++ >> ++ /** >> ++ * Removes long vertical lines from image >> ++ */ >> ++ private void removeVerticalLines(BufferedImage image) { >> ++ for (int x = 0; x < image.getWidth(); x++) { >> ++ int startY = -1, endY = -1; >> ++ for (int y = 0; y < image.getHeight(); y++) { >> ++ int color = image.getRaster().getSample(x, y, 0); >> ++ if (startY < 0 && color <= BLACK_WHITE_THRESHOLD) { >> ++ startY = y; >> ++ } >> ++ if (startY > 0 && endY < 0 && color > BLACK_WHITE_THRESHOLD) { >> ++ endY = y; >> ++ //System.out.println("< " + y + "\t" + x); >> ++ } >> ++ } >> ++ // remove long vertical line, but only if this line found detected in image >> ++ if (startY > 0 && endY > 0 && (endY - startY) > MINIMUM_VERTICAL_LINE_LENGTH) { >> ++ for (int y = startY; y < endY; y++) { >> ++ image.getRaster().setSample(x, y, 0, 255); >> ++ } >> ++ } >> ++ } >> ++ } >> ++ >> ++ /** >> ++ * Test if image is almost empty (one large white area) >> ++ * @param image >> ++ * @return >> ++ */ >> ++ private boolean isImageAlmostEmpty(BufferedImage image) { >> ++ int blackPixelCount = 0; >> ++ for (int y = 0; y < image.getHeight(); y++) { >> ++ for (int x = 0; x < image.getWidth(); x++) { >> ++ if (image.getRaster().getSample(x, y, 0) < BLACK_WHITE_THRESHOLD) { >> ++ blackPixelCount++; >> ++ } >> ++ } >> ++ } >> ++ return blackPixelCount < BLACK_PIXEL_COUNT_THRESHOLD; >> ++ } >> ++ >> ++ public void runTest(boolean createImages) throws IOException >> ++ { >> ++ List badCharacters = new ArrayList(); >> ++ for (String[] testedString : testedStrings) { >> ++ System.out.println("\nTesting " + testedString[0]); >> ++ for (int i = 0; i < testedString[1].length(); i++) { >> ++ String str = testedString[1].substring(i, 1+i); >> ++ int code = str.charAt(0); >> ++ System.out.print(code + "\t"); >> ++ BufferedImage src = createTestImage(str); >> ++ BufferedImage dst = createDestinationImage(src); >> ++ removeHorizontalLines(dst); >> ++ removeVerticalLines(dst); >> ++ >> ++ if (createImages /* || true*/) { >> ++ ImageIO.write(src, "png", new File(code + "_src.png")); >> ++ ImageIO.write(dst, "png", new File(code + "_dst.png")); >> ++ } >> ++ >> ++ if (isImageAlmostEmpty(dst)) { >> ++ System.err.println("Bad rendering of character with code: " + code); >> ++ badCharacters.add(Integer.valueOf(code)); >> ++ } >> ++ } >> ++ } >> ++ if (!badCharacters.isEmpty()) { >> ++ throw new RuntimeException("Error in rendering of character(s) with code(s): " + badCharacters.toString()); >> ++ } >> ++ } >> ++ >> ++ public static void main(String[] args) throws IOException { >> ++ new InternationalFontsRendering().runTest(Arrays.asList(args).contains("-create-images")); >> ++ } >> ++} >> ++ > > From dbhole at icedtea.classpath.org Mon Nov 1 07:51:35 2010 From: dbhole at icedtea.classpath.org (dbhole at icedtea.classpath.org) Date: Mon, 01 Nov 2010 14:51:35 +0000 Subject: /hg/icedtea-web: Added docs for the plugin. Message-ID: changeset bdab3d4ac170 in /hg/icedtea-web details: http://icedtea.classpath.org/hg/icedtea-web?cmd=changeset;node=bdab3d4ac170 author: Deepak Bhole date: Mon Nov 01 10:51:43 2010 -0700 Added docs for the plugin. diffstat: 1 file changed, 14 insertions(+) ChangeLog | 14 ++++++++++++++ diffs (31 lines): diff -r 499642ab12a6 -r bdab3d4ac170 ChangeLog --- a/ChangeLog Fri Oct 29 17:40:16 2010 -0400 +++ b/ChangeLog Mon Nov 01 10:51:43 2010 -0700 @@ -1,3 +1,17 @@ 2010-10-29 Omair Majid + + * plugin/docs: Added new docs folder that contains plugin documentation. + * plugin/docs/MessageBusArchitecture.png: Diagram of the JS <-> Java + message handling architectrure. + * plugin/docs/OverallArchitecture.png: Diagram of the overall plugin + architecture. + * plugin/docs/java-js-wf.png: Sequence diagram showing an example + LiveConnect call from an applet to JavaScript/Browser. + * plugin/docs/js-java-wf.png: Sequence diagram showing an example + LiveConnect call from JavaScript/Browser to an applet. + * plugin/docs/npplugin_liveconnect_design.pdf: Slides with notes on the + above diagrams. + 2010-10-29 Omair Majid * netx/net/sourceforge/jnlp/JNLPFile.java: Add component. diff -r 499642ab12a6 -r bdab3d4ac170 plugin/docs/MessageBusArchitecture.png Binary file plugin/docs/MessageBusArchitecture.png has changed diff -r 499642ab12a6 -r bdab3d4ac170 plugin/docs/OverallArchitecture.png Binary file plugin/docs/OverallArchitecture.png has changed diff -r 499642ab12a6 -r bdab3d4ac170 plugin/docs/java-js-wf.png Binary file plugin/docs/java-js-wf.png has changed diff -r 499642ab12a6 -r bdab3d4ac170 plugin/docs/js-java-wf.png Binary file plugin/docs/js-java-wf.png has changed diff -r 499642ab12a6 -r bdab3d4ac170 plugin/docs/npplugin_liveconnect_design.pdf Binary file plugin/docs/npplugin_liveconnect_design.pdf has changed From dbhole at icedtea.classpath.org Mon Nov 1 08:41:44 2010 From: dbhole at icedtea.classpath.org (dbhole at icedtea.classpath.org) Date: Mon, 01 Nov 2010 15:41:44 +0000 Subject: /hg/icedtea-web: Fixed PR542 Message-ID: changeset df3cf32781d3 in /hg/icedtea-web details: http://icedtea.classpath.org/hg/icedtea-web?cmd=changeset;node=df3cf32781d3 author: Deepak Bhole date: Mon Nov 01 11:41:59 2010 -0700 Fixed PR542 Plugin fails with NPE on http://www.openprocessing.org/visuals/iframe.php?visualID=2615 diffstat: 3 files changed, 18 insertions(+), 1 deletion(-) ChangeLog | 9 +++++++++ NEWS | 1 + netx/net/sourceforge/jnlp/runtime/JNLPClassLoader.java | 9 ++++++++- diffs (43 lines): diff -r bdab3d4ac170 -r df3cf32781d3 ChangeLog --- a/ChangeLog Mon Nov 01 10:51:43 2010 -0700 +++ b/ChangeLog Mon Nov 01 11:41:59 2010 -0700 @@ -1,3 +1,12 @@ 2010-11-01 Deepak Bhole + + PR542: Plugin fails with NPE on + http://www.openprocessing.org/visuals/iframe.php?visualID=2615 + * netx/net/sourceforge/jnlp/runtime/JNLPClassLoader.java + (initializeResources): If cacheFile is null (JAR couldn't be downloaded), + try to continue, rather than allowing the exception to cause an abort. + * NEWS: Updated. + 2010-11-01 Deepak Bhole * plugin/docs: Added new docs folder that contains plugin documentation. diff -r bdab3d4ac170 -r df3cf32781d3 NEWS --- a/NEWS Mon Nov 01 10:51:43 2010 -0700 +++ b/NEWS Mon Nov 01 11:41:59 2010 -0700 @@ -11,3 +11,4 @@ New in release 1.0 (2010-XX-XX): New in release 1.0 (2010-XX-XX): * Initial release of IcedTea-Web +* PR542: Plugin fails with NPE on http://www.openprocessing.org/visuals/iframe.php?visualID=2615 diff -r bdab3d4ac170 -r df3cf32781d3 netx/net/sourceforge/jnlp/runtime/JNLPClassLoader.java --- a/netx/net/sourceforge/jnlp/runtime/JNLPClassLoader.java Mon Nov 01 10:51:43 2010 -0700 +++ b/netx/net/sourceforge/jnlp/runtime/JNLPClassLoader.java Mon Nov 01 11:41:59 2010 -0700 @@ -462,7 +462,14 @@ public class JNLPClassLoader extends URL for (JARDesc jarDesc: file.getResources().getJARs()) { try { - URL location = tracker.getCacheFile(jarDesc.getLocation()).toURL(); + File cachedFile = tracker.getCacheFile(jarDesc.getLocation()); + + if (cachedFile == null) { + System.err.println("JAR " + jarDesc.getLocation() + " not found. Continuing."); + continue; // JAR not found. Keep going. + } + + URL location = cachedFile.toURL(); SecurityDesc jarSecurity = file.getSecurity(); if (file instanceof PluginBridge) { From ahughes at redhat.com Mon Nov 1 08:42:58 2010 From: ahughes at redhat.com (Dr Andrew John Hughes) Date: Mon, 1 Nov 2010 15:42:58 +0000 Subject: [icedtea-web] RFC: Add class checks to fail early on non-Oracle JDKs Message-ID: <20101101154258.GJ11106@rivendell.middle-earth.co.uk> The attached patch makes configure fail if it can't find a number of internal Sun classes that the plugin and NetX wrongly depend on. This makes the build fail early and clearly on non-Oracle JDKs rather than attempting a build and hitting compile errors. Over time, I expect the java.* classes to become available in GNU Classpath and for those working on plugin and NetX to fix these issues with internal code usage (which also produce warnings from javac during build). Bugs are filed under GNU Classpath and IcedTea as appropriate for these issues. Ok for icedtea-web HEAD? ChangeLog: 2010-10-28 Andrew John Hughes * Makefile.am: (NETX_BOOTSTRAP_CLASSES): Removed. (PLUGIN_BOOTSTRAP_CLASSES): Likewise. (NETX_SUN_CLASSES): Likewise. (PLUGIN_SUN_CLASSES): Likewise. * acinclude.m4: (IT_CHECK_FOR_CLASS): Require detection of javac and java. Put test class in sun.applet to get access to some internal classes. Change test to use forName for the same reason. I expect to be able to revert this when usage of sun.applet is fixed. (IT_FIND_JAVA): Ported from IcedTea6. Change to prioritise 'java' over 'gij'. * configure.ac: Add IT_CHECK_FOR_CLASS checks for classes which are required but not found in JDKs other than Oracle-based ones. Also check for java.* classes missing from current versions of gcj but which may appear there in future. -- Andrew :) Free Java Software Engineer Red Hat, Inc. (http://www.redhat.com) Support Free Java! Contribute to GNU Classpath and the OpenJDK http://www.gnu.org/software/classpath http://openjdk.java.net PGP Key: 94EFD9D8 (http://subkeys.pgp.net) Fingerprint = F8EF F1EA 401E 2E60 15FA 7927 142C 2591 94EF D9D8 -------------- next part -------------- diff -r 3571cd24829e Makefile.am --- a/Makefile.am Thu Oct 28 16:18:36 2010 -0400 +++ b/Makefile.am Mon Nov 01 15:34:18 2010 +0000 @@ -8,46 +8,6 @@ # Build directories BOOT_DIR = $(abs_top_builddir)/bootstrap/jdk1.6.0 - -# PR43578 - java.security.CodeSource.getCodeSigners() missing -# PR43582 - Missing javax.swing.JTable.setFillsViewportHeight -# PR43585 - java.security.KeyStore.TrustedCertificateEntry class missing -NETX_BOOTSTRAP_CLASSES = \ - $(SHARE)/java/security/CodeSource.java \ - $(SHARE)/javax/swing/JTable.java \ - $(SHARE)/java/security/KeyStore.java - -# PR46074 - Missing java.net cookie code required by IcedTea plugin -PLUGIN_BOOTSTRAP_CLASSES = \ - $(SHARE)/java/net/CookieManager.java \ - $(SHARE)/java/net/HttpCookie.java \ - $(SHARE)/java/net/CookieHandler.java - -# IT563 - NetX uses sun.security code -# IT564 - NetX depends on sun.misc.BASE64Encoder -# IT570 - NetX depends on sun.applet.AppletViewPanel -# IT571 - NetX depends on com.sun.net.ssl.internal.ssl.X509ExtendedTrustManager.java -NETX_SUN_CLASSES = \ - $(SHARE)/sun/security/provider/X509Factory.java \ - $(SHARE)/sun/security/util/SecurityConstants.java \ - $(SHARE)/sun/security/util/HostnameChecker.java \ - $(SHARE)/sun/security/util/DerValue.java \ - $(SHARE)/sun/security/x509/X500Name.java \ - $(SHARE)/sun/misc/BASE64Encoder.java \ - $(SHARE)/sun/applet/AppletViewerPanel.java \ - $(SHARE)/sun/security/validator/ValidatorException.java \ - $(SHARE)/com/sun/net/ssl/internal/ssl/X509ExtendedTrustManager.java - -# IT573 - Plugin depends on sun.awt,X11.XEmbeddedFrame.java -# IT574 - Plugin depends on sun.misc.Ref -# IT575 - Plugin depends on com.sun/jndi.toolkit.url.UrlUtil -# IT576 - Plugin depends on sun.applet.AppletImageRef -PLUGIN_SUN_CLASSES = \ - $(SOLARIS)/sun/awt/X11/XEmbeddedFrame.java \ - $(SHARE)/sun/misc/Ref.java \ - $(SHARE)/com/sun/jndi/toolkit/url/UrlUtil.java \ - $(SHARE)/sun/applet/AppletImageRef.java - RUNTIME = $(BOOT_DIR)/jre/lib/rt.jar:$(BOOT_DIR)/jre/lib/jsse.jar # Flags diff -r 3571cd24829e acinclude.m4 --- a/acinclude.m4 Thu Oct 28 16:18:36 2010 -0400 +++ b/acinclude.m4 Mon Nov 01 15:34:18 2010 +0000 @@ -302,19 +302,27 @@ dnl is usually the name of the class with '.' dnl replaced by '_' and all letters capitalised. dnl e.g. IT_CHECK_FOR_CLASS([JAVA_UTIL_SCANNER],[java.util.Scanner]) +dnl Test class has to be in sun.applet for some internal classes AC_DEFUN([IT_CHECK_FOR_CLASS],[ -AC_CACHE_CHECK([if $2 is missing], it_cv_$1, [ -CLASS=Test.java +AC_REQUIRE([IT_FIND_JAVAC]) +AC_REQUIRE([IT_FIND_JAVA]) +AC_CACHE_CHECK([if $2 is available], it_cv_$1, [ +CLASS=sun/applet/Test.java BYTECODE=$(echo $CLASS|sed 's#\.java##') -mkdir tmp.$$ +mkdir -p tmp.$$/$(dirname $CLASS) cd tmp.$$ cat << \EOF > $CLASS [/* [#]line __oline__ "configure" */ +package sun.applet; + +import $2; + public class Test { public static void main(String[] args) + throws Exception { - $2.class.toString(); + System.out.println(Class.forName("$2")); } } ] @@ -331,7 +339,8 @@ ]) rm -f $CLASS *.class cd .. -rmdir tmp.$$ +# should be rmdir but has to be rm -rf due to sun.applet usage +rm -rf tmp.$$ if test x"${it_cv_$1}" = "xno"; then AC_MSG_ERROR([$2 not found.]) fi @@ -507,3 +516,30 @@ AC_SUBST(ARCH_PREFIX) AC_SUBST(ARCHFLAG) ]) + +AC_DEFUN_ONCE([IT_FIND_JAVA], +[ + AC_MSG_CHECKING([for a Java virtual machine]) + AC_ARG_WITH([java], + [AS_HELP_STRING(--with-java,specify location of the 1.5 java vm)], + [ + JAVA="${withval}" + ], + [ + JAVA=${SYSTEM_JDK_DIR}/bin/java + ]) + if ! test -f "${JAVA}"; then + AC_PATH_PROG(JAVA, "${JAVA}") + fi + if test -z "${JAVA}"; then + AC_PATH_PROG(JAVA, "java") + fi + if test -z "${JAVA}"; then + AC_PATH_PROG(JAVA, "gij") + fi + if test -z "${JAVA}"; then + AC_MSG_ERROR("A 1.5-compatible Java VM is required.") + fi + AC_MSG_RESULT(${JAVA}) + AC_SUBST(JAVA) +]) diff -r 3571cd24829e configure.ac --- a/configure.ac Thu Oct 28 16:18:36 2010 -0400 +++ b/configure.ac Mon Nov 01 15:34:18 2010 +0000 @@ -49,4 +49,32 @@ AC_SUBST(X11_CFLAGS) AC_SUBST(X11_LIBS) +dnl PR46074 (gcc) - Missing java.net cookie code required by IcedTea plugin +dnl IT563 - NetX uses sun.security code +dnl IT564 - NetX depends on sun.misc.BASE64Encoder +dnl IT570 - NetX depends on sun.applet.AppletViewPanel +dnl IT571 - NetX depends on com.sun.net.ssl.internal.ssl.X509ExtendedTrustManager.java +dnl IT573 - Plugin depends on sun.awt,X11.XEmbeddedFrame.java +dnl IT574 - Plugin depends on sun.misc.Ref +dnl IT575 - Plugin depends on com.sun/jndi.toolkit.url.UrlUtil +dnl IT576 - Plugin depends on sun.applet.AppletImageRef + +IT_CHECK_FOR_CLASS(JAVA_UTIL_JAR_PACK200, [java.util.jar.Pack200]) +IT_CHECK_FOR_CLASS(JAVA_NET_COOKIEMANAGER, [java.net.CookieManager]) +IT_CHECK_FOR_CLASS(JAVA_NET_HTTPCOOKIE, [java.net.HttpCookie]) +IT_CHECK_FOR_CLASS(JAVA_NET_COOKIEHANDLER, [java.net.CookieHandler]) +IT_CHECK_FOR_CLASS(SUN_SECURITY_PROVIDER_X509FACTORY, [sun.security.provider.X509Factory]) +IT_CHECK_FOR_CLASS(SUN_SECURITY_UTIL_SECURITYCONSTANTS, [sun.security.util.SecurityConstants]) +IT_CHECK_FOR_CLASS(SUN_SECURITY_UTIL_HOSTNAMECHECKER, [sun.security.util.HostnameChecker]) +IT_CHECK_FOR_CLASS(SUN_SECURITY_X509_X500NAME, [sun.security.x509.X500Name]) +IT_CHECK_FOR_CLASS(SUN_MISC_BASE64ENCODER, [sun.misc.BASE64Encoder]) +IT_CHECK_FOR_CLASS(SUN_APPLET_APPLETVIEWERPANEL, [sun.applet.AppletViewerPanel]) +IT_CHECK_FOR_CLASS(SUN_SECURITY_VALIDATOR_VALIDATOREXCEPTION, [sun.security.validator.ValidatorException]) +IT_CHECK_FOR_CLASS(COM_SUN_NET_SSL_INTERNAL_SSL_X509EXTENDEDTRUSTMANAGER, + [com.sun.net.ssl.internal.ssl.X509ExtendedTrustManager]) +IT_CHECK_FOR_CLASS(SUN_AWT_X11_XEMBEDDEDFRAME, [sun.awt.X11.XEmbeddedFrame]) +IT_CHECK_FOR_CLASS(SUN_MISC_REF, [sun.misc.Ref]) +IT_CHECK_FOR_CLASS(COM_SUN_JNDI_TOOLKIT_URL_URLUTIL, [com.sun.jndi.toolkit.url.UrlUtil]) +IT_CHECK_FOR_CLASS(SUN_APPLET_APPLETIMAGEREF, [sun.applet.AppletImageRef]) + AC_OUTPUT From omajid at icedtea.classpath.org Mon Nov 1 08:47:37 2010 From: omajid at icedtea.classpath.org (omajid at icedtea.classpath.org) Date: Mon, 01 Nov 2010 15:47:37 +0000 Subject: /hg/icedtea-web: allow running make clean multiple times Message-ID: changeset 6c2527d42900 in /hg/icedtea-web details: http://icedtea.classpath.org/hg/icedtea-web?cmd=changeset;node=6c2527d42900 author: Omair Majid date: Mon Nov 01 11:44:15 2010 -0400 allow running make clean multiple times 2010-11-01 Omair Majid * Makefile.am (clean-IcedTeaPlugin): Only delete launcher directory if it exists. diffstat: 2 files changed, 8 insertions(+), 1 deletion(-) ChangeLog | 5 +++++ Makefile.am | 4 +++- diffs (26 lines): diff -r df3cf32781d3 -r 6c2527d42900 ChangeLog --- a/ChangeLog Mon Nov 01 11:41:59 2010 -0700 +++ b/ChangeLog Mon Nov 01 11:44:15 2010 -0400 @@ -1,3 +1,8 @@ 2010-11-01 Deepak Bhole + + * Makefile.am (clean-IcedTeaPlugin): Only delete launcher directory if it + exists. + 2010-11-01 Deepak Bhole PR542: Plugin fails with NPE on diff -r df3cf32781d3 -r 6c2527d42900 Makefile.am --- a/Makefile.am Mon Nov 01 11:41:59 2010 -0700 +++ b/Makefile.am Mon Nov 01 11:44:15 2010 -0400 @@ -190,7 +190,9 @@ clean-IcedTeaPlugin: clean-IcedTeaPlugin: rm -f $(PLUGIN_DIR)/launcher/*.o rm -f $(PLUGIN_DIR)/launcher/pluginappletviewer - rmdir $(PLUGIN_DIR)/launcher + if [ -e $(PLUGIN_DIR)/launcher ]; then \ + rmdir $(PLUGIN_DIR)/launcher ; \ + fi rm -f $(PLUGIN_DIR)/*.o rm -f $(PLUGIN_DIR)/IcedTeaPlugin.so if [ $(abs_top_srcdir) != $(abs_top_builddir) ]; then \ From omajid at redhat.com Mon Nov 1 09:11:26 2010 From: omajid at redhat.com (Omair Majid) Date: Mon, 01 Nov 2010 12:11:26 -0400 Subject: [icedtea-web] RFC: use the new configuration file for infrastructure settings In-Reply-To: <20101029194310.GB2057@redhat.com> References: <4CCAF4A4.10303@redhat.com> <20101029194310.GB2057@redhat.com> Message-ID: <4CCEE6AE.7000702@redhat.com> On 10/29/2010 03:43 PM, Deepak Bhole wrote: > * Omair Majid [2010-10-29 12:39]: >> Hi, >> >> The attached patch integrates the "infrastructure" part of the >> deployment properties into netx/icedteanpplugin. >> > > Looks fine to me. Please make sure this is very well tested though. > Things like cache are critical parts of the code... > > Ok for HEAD assuming it has undergone edge case testing. > I have tested out pretty much every code path affected by this patch. The only thing that I noticed is that the Java Console doesnt work (I tried it out using Firefox's Web Developer extension), but it isnt working without this patch either. Any ideas on other types of tests I could try out? Thanks, Omair >> ChangeLog: >> >> 2010-10-29 Omair Majid >> >> * netx/net/sourceforge/jnlp/Launcher.java >> (markNetxRunning): Get file name from configuration. >> (markNetxStopped): Likewise. >> * netx/net/sourceforge/jnlp/cache/CacheUtil.java >> (clearCache): Get cache directory from configuration. >> (okToClearCache): Get netx_running file from configuration. >> (getCacheFile): Get cache directory from configuration. >> (urlToPath): Change semantics to take in the full path of the >> directory instead of a directory under runtime. >> * netx/net/sourceforge/jnlp/runtime/DeploymentConfiguration.java: >> Change DEPLOYMENT_DIR to ".icedtea". Add constants >> KEY_USER_CACHE_DIR, KEY_USER_PERSISTENCE_CACHE_DIR, >> KEY_SYSTEM_CACHE_DIR, KEY_USER_LOG_DIR, KEY_USER_TMP_DIR, >> KEY_USER_LOCKS_DIR, and KEY_USER_NETX_RUNNING_FILE. >> (load): Use DEPLOYMENT_DIR instead of hardcoded string. >> (loadDefaultProperties): Add LOCKS_DIR. Replace strings with >> constants. Add new default values for persistence cache directory, >> single instance locks directory and the netx_running file. >> * netx/net/sourceforge/jnlp/runtime/JNLPRuntime.java: Remove >> unneeded TMP_DIR, LOCKS_DIR and NETX_RUNNING_FILE >> * netx/net/sourceforge/jnlp/services/SingleInstanceLock.java >> (getLockFile): Get locks directory from configuration. >> * netx/net/sourceforge/jnlp/services/XPersistenceService.java >> (toCacheFile): Get persistence cache directory from configuration. >> * netx/net/sourceforge/jnlp/util/XDesktopEntry.java >> (getContentsAsReader): Get cache directory from configuration. >> (installDesktopLauncher): Get temporary directory from >> configuration. Make parent directories if required. >> * plugin/icedteanp/java/sun/applet/JavaConsole.java >> (initialize): Get log directory from configuration and create the >> error and output files under it. >> * plugin/icedteanp/java/sun/applet/PluginMain.java: >> PLUGIN_STDERR_FILE and PLUGIN_STDOUT_FILE are now just filesnames. >> (PluginMain): Use configuration for finding the log directory. >> Initialize JNLPRuntime before creating the stderr and stdout logs. >> >> Any comments? >> >> Thanks, >> Omair > >> diff -r 3571cd24829e netx/net/sourceforge/jnlp/Launcher.java >> --- a/netx/net/sourceforge/jnlp/Launcher.java Thu Oct 28 16:18:36 2010 -0400 >> +++ b/netx/net/sourceforge/jnlp/Launcher.java Fri Oct 29 11:48:26 2010 -0400 >> @@ -43,6 +43,7 @@ >> import net.sourceforge.jnlp.runtime.AppThreadGroup; >> import net.sourceforge.jnlp.runtime.AppletInstance; >> import net.sourceforge.jnlp.runtime.ApplicationInstance; >> +import net.sourceforge.jnlp.runtime.DeploymentConfiguration; >> import net.sourceforge.jnlp.runtime.JNLPClassLoader; >> import net.sourceforge.jnlp.runtime.JNLPRuntime; >> import net.sourceforge.jnlp.services.InstanceExistsException; >> @@ -724,7 +725,8 @@ >> try { >> String message = "This file is used to check if netx is running"; >> >> - File netxRunningFile = new File(JNLPRuntime.NETX_RUNNING_FILE); >> + File netxRunningFile = new File(JNLPRuntime.getConfiguration() >> + .getProperty(DeploymentConfiguration.KEY_USER_NETX_RUNNING_FILE)); >> netxRunningFile.getParentFile().mkdirs(); >> if (netxRunningFile.createNewFile()) { >> FileOutputStream fos = new FileOutputStream(netxRunningFile); >> @@ -749,7 +751,7 @@ >> if (fileLock != null&& fileLock.isShared()) { >> if (JNLPRuntime.isDebug()) { >> System.out.println("Acquired shared lock on " + >> - JNLPRuntime.NETX_RUNNING_FILE + " to indicate javaws is running"); >> + netxRunningFile.toString() + " to indicate javaws is running"); >> } >> } else { >> fileLock = null; >> @@ -773,7 +775,9 @@ >> fileLock.channel().close(); >> fileLock = null; >> if (JNLPRuntime.isDebug()) { >> - System.out.println("Release shared lock on " + JNLPRuntime.NETX_RUNNING_FILE); >> + String file = JNLPRuntime.getConfiguration() >> + .getProperty(DeploymentConfiguration.KEY_USER_NETX_RUNNING_FILE); >> + System.out.println("Release shared lock on " + file); >> } >> } catch (IOException e) { >> e.printStackTrace(); >> diff -r 3571cd24829e netx/net/sourceforge/jnlp/cache/CacheUtil.java >> --- a/netx/net/sourceforge/jnlp/cache/CacheUtil.java Thu Oct 28 16:18:36 2010 -0400 >> +++ b/netx/net/sourceforge/jnlp/cache/CacheUtil.java Fri Oct 29 11:48:26 2010 -0400 >> @@ -141,7 +141,8 @@ >> return; >> } >> >> - File cacheDir = new File(JNLPRuntime.getBaseDir() + File.separator + "cache"); >> + File cacheDir = new File(JNLPRuntime.getConfiguration() >> + .getProperty(DeploymentConfiguration.KEY_USER_CACHE_DIR)); >> if (!(cacheDir.isDirectory())) { >> return; >> } >> @@ -150,7 +151,8 @@ >> System.err.println("Clearing cache directory: " + cacheDir); >> } >> try { >> - FileUtils.recursiveDelete(cacheDir, JNLPRuntime.getBaseDir()); >> + cacheDir = cacheDir.getCanonicalFile(); >> + FileUtils.recursiveDelete(cacheDir, cacheDir); >> } catch (IOException e) { >> throw new RuntimeException(e); >> } >> @@ -161,7 +163,8 @@ >> * @return true if the cache can be cleared at this time without problems >> */ >> private static boolean okToClearCache() { >> - File otherJavawsRunning = new File(JNLPRuntime.NETX_RUNNING_FILE); >> + File otherJavawsRunning = new File(JNLPRuntime.getConfiguration() >> + .getProperty(DeploymentConfiguration.KEY_USER_NETX_RUNNING_FILE)); >> try { >> if (otherJavawsRunning.isFile()) { >> FileOutputStream fis = new FileOutputStream(otherJavawsRunning); >> @@ -289,7 +292,9 @@ >> throw new IllegalArgumentException(R("CNotCacheable", source)); >> >> try { >> - File localFile = urlToPath(source, "cache"); >> + String cacheDir = JNLPRuntime.getConfiguration() >> + .getProperty(DeploymentConfiguration.KEY_USER_CACHE_DIR); >> + File localFile = urlToPath(source, cacheDir); >> localFile.getParentFile().mkdirs(); >> >> return localFile; >> @@ -345,20 +350,23 @@ >> } >> >> /** >> - * Converts a URL into a local path string within the runtime's >> - * base directory. >> + * Converts a URL into a local path string within the given directory. For >> + * example a url with subdirectory /tmp/ will >> + * result in a File that is located somewhere within /tmp/ >> * >> * @param location the url >> - * @param subdir subdirectory under the base directory >> + * @param subdir the subdirectory >> * @return the file >> */ >> public static File urlToPath(URL location, String subdir) { >> + if (subdir == null) { >> + throw new NullPointerException(); >> + } >> + >> StringBuffer path = new StringBuffer(); >> >> - if (subdir != null) { >> - path.append(subdir); >> - path.append(File.separatorChar); >> - } >> + path.append(subdir); >> + path.append(File.separatorChar); >> >> path.append(location.getProtocol()); >> path.append(File.separatorChar); >> @@ -366,7 +374,7 @@ >> path.append(File.separatorChar); >> path.append(location.getPath().replace('/', File.separatorChar)); >> >> - return new File(JNLPRuntime.getBaseDir(), FileUtils.sanitizePath(path.toString())); >> + return new File(FileUtils.sanitizePath(path.toString())); >> } >> >> >> diff -r 3571cd24829e netx/net/sourceforge/jnlp/runtime/DeploymentConfiguration.java >> --- a/netx/net/sourceforge/jnlp/runtime/DeploymentConfiguration.java Thu Oct 28 16:18:36 2010 -0400 >> +++ b/netx/net/sourceforge/jnlp/runtime/DeploymentConfiguration.java Fri Oct 29 11:48:26 2010 -0400 >> @@ -28,6 +28,7 @@ >> import java.io.Reader; >> import java.net.MalformedURLException; >> import java.net.URL; >> +import java.nio.channels.FileLock; >> import java.util.HashMap; >> import java.util.Map; >> import java.util.Properties; >> @@ -98,7 +99,7 @@ >> } >> } >> >> - public static final String DEPLOYMENT_DIR = ".netx"; >> + public static final String DEPLOYMENT_DIR = ".icedtea"; >> public static final String DEPLOYMENT_CONFIG = "deployment.config"; >> public static final String DEPLOYMENT_PROPERTIES = "deployment.properties"; >> >> @@ -125,6 +126,22 @@ >> public static final int PROXY_TYPE_AUTO = 2; >> public static final int PROXY_TYPE_BROWSER = 3; >> >> + public static final String KEY_USER_CACHE_DIR = "deployment.user.cachedir"; >> + public static final String KEY_USER_PERSISTENCE_CACHE_DIR = "deployment.user.pcachedir"; >> + public static final String KEY_SYSTEM_CACHE_DIR = "deployment.system.cachedir"; >> + public static final String KEY_USER_LOG_DIR = "deployment.user.logdir"; >> + public static final String KEY_USER_TMP_DIR = "deployment.user.tmp"; >> + /** the directory containing locks for single instance applications */ >> + public static final String KEY_USER_LOCKS_DIR = "deployment.user.locksdir"; >> + /** >> + * The netx_running file is used to indicate if any instances of netx are >> + * running (this file may exist even if no instances are running). All netx >> + * instances acquire a shared lock on this file. If this file can be locked >> + * (using a {@link FileLock}) in exclusive mode, then other netx instances >> + * are not running >> + */ >> + public static final String KEY_USER_NETX_RUNNING_FILE = "deployment.user.runningfile"; >> + >> public enum ConfigType { >> System, User >> } >> @@ -156,7 +173,7 @@ >> */ >> public void load() throws ConfigurationException { >> // make sure no state leaks if security check fails later on >> - File userFile = new File(System.getProperty("user.home") + File.separator + ".netx" >> + File userFile = new File(System.getProperty("user.home") + File.separator + DEPLOYMENT_DIR >> + File.separator + DEPLOYMENT_PROPERTIES); >> >> SecurityManager sm = System.getSecurityManager(); >> @@ -277,6 +294,10 @@ >> final String USER_HOME = System.getProperty("user.home") + File.separator + DEPLOYMENT_DIR; >> final String USER_SECURITY = USER_HOME + File.separator + "security"; >> >> + final String LOCKS_DIR = System.getProperty("java.io.tmpdir") + File.separator >> + + System.getProperty("user.name") + File.separator + "netx" + File.separator >> + + "locks"; >> + >> /* >> * This is more or less a straight copy from the deployment >> * configuration page, with occasional replacements of "" or no-defaults >> @@ -285,10 +306,13 @@ >> >> String[][] defaults = new String[][] { >> /* infrastructure */ >> - { "deployment.user.cachedir", USER_HOME + File.separator + "cache" }, >> - { "deployment.system.cachedir", null }, >> - { "deployment.user.logdir", USER_HOME + File.separator + "log" }, >> - { "deployment.user.tmp", USER_HOME + File.separator + "tmp" }, >> + { KEY_USER_CACHE_DIR, USER_HOME + File.separator + "cache" }, >> + { KEY_USER_PERSISTENCE_CACHE_DIR, USER_HOME + File.separator + "pcache" }, >> + { KEY_SYSTEM_CACHE_DIR, null }, >> + { KEY_USER_LOG_DIR, USER_HOME + File.separator + "log" }, >> + { KEY_USER_TMP_DIR, USER_HOME + File.separator + "tmp" }, >> + { KEY_USER_LOCKS_DIR, LOCKS_DIR }, >> + { KEY_USER_NETX_RUNNING_FILE, LOCKS_DIR + File.separator + "netx_running" }, >> /* certificates and policy files */ >> { "deployment.user.security.policy", "file://" + USER_SECURITY + File.separator + "java.policy" }, >> { "deployment.user.security.trusted.cacerts", USER_SECURITY + File.separator + "trusted.cacerts" }, >> diff -r 3571cd24829e netx/net/sourceforge/jnlp/runtime/JNLPRuntime.java >> --- a/netx/net/sourceforge/jnlp/runtime/JNLPRuntime.java Thu Oct 28 16:18:36 2010 -0400 >> +++ b/netx/net/sourceforge/jnlp/runtime/JNLPRuntime.java Fri Oct 29 11:48:26 2010 -0400 >> @@ -132,25 +132,6 @@ >> /** the ~/.netx/security/trusted.certs file containing trusted certificates */ >> public static final String CERTIFICATES_FILE = SECURITY_DIR + File.separator + "trusted.certs"; >> >> - /** the /tmp/ directory used for temporary files */ >> - public static final String TMP_DIR = System.getProperty("java.io.tmpdir"); >> - >> - /** >> - * the /tmp/$USER/netx/locks/ directory containing locks for single instance >> - * applications >> - */ >> - public static final String LOCKS_DIR = TMP_DIR + File.separator + USER + File.separator >> - + "netx" + File.separator + "locks"; >> - >> - /** >> - * The /tmp/$USER/netx/locks/netx_running file is used to indicate if any >> - * instances of netx are running (this file may exist even if no instances >> - * are running). All netx instances acquire a shared lock on this file. If >> - * this file can be locked (using a {@link FileLock}) in exclusive mode, then >> - * other netx instances are not running >> - */ >> - public static final String NETX_RUNNING_FILE = LOCKS_DIR + File.separator + "netx_running"; >> - >> /** the java.home directory */ >> public static final String JAVA_HOME_DIR = System.getProperty("java.home"); >> >> diff -r 3571cd24829e netx/net/sourceforge/jnlp/services/SingleInstanceLock.java >> --- a/netx/net/sourceforge/jnlp/services/SingleInstanceLock.java Thu Oct 28 16:18:36 2010 -0400 >> +++ b/netx/net/sourceforge/jnlp/services/SingleInstanceLock.java Fri Oct 29 11:48:26 2010 -0400 >> @@ -28,6 +28,7 @@ >> import java.net.ServerSocket; >> >> import net.sourceforge.jnlp.JNLPFile; >> +import net.sourceforge.jnlp.runtime.DeploymentConfiguration; >> import net.sourceforge.jnlp.runtime.JNLPRuntime; >> import net.sourceforge.jnlp.util.FileUtils; >> >> @@ -128,7 +129,8 @@ >> * may or may not exist. >> */ >> private File getLockFile() { >> - File baseDir = new File(JNLPRuntime.LOCKS_DIR); >> + File baseDir = new File(JNLPRuntime.getConfiguration() >> + .getProperty(DeploymentConfiguration.KEY_USER_LOCKS_DIR)); >> >> if (!baseDir.isDirectory()&& !baseDir.mkdirs()) { >> throw new RuntimeException(R("RNoLockDir", baseDir)); >> diff -r 3571cd24829e netx/net/sourceforge/jnlp/services/XPersistenceService.java >> --- a/netx/net/sourceforge/jnlp/services/XPersistenceService.java Thu Oct 28 16:18:36 2010 -0400 >> +++ b/netx/net/sourceforge/jnlp/services/XPersistenceService.java Fri Oct 29 11:48:26 2010 -0400 >> @@ -80,7 +80,9 @@ >> * @return the file >> */ >> protected File toCacheFile(URL location) throws MalformedURLException { >> - return CacheUtil.urlToPath(location, "pcache"); >> + String pcache = JNLPRuntime.getConfiguration() >> + .getProperty(DeploymentConfiguration.KEY_USER_PERSISTENCE_CACHE_DIR); >> + return CacheUtil.urlToPath(location, pcache); >> } >> >> /** >> diff -r 3571cd24829e netx/net/sourceforge/jnlp/util/XDesktopEntry.java >> --- a/netx/net/sourceforge/jnlp/util/XDesktopEntry.java Thu Oct 28 16:18:36 2010 -0400 >> +++ b/netx/net/sourceforge/jnlp/util/XDesktopEntry.java Fri Oct 29 11:48:26 2010 -0400 >> @@ -32,6 +32,7 @@ >> import net.sourceforge.jnlp.StreamEater; >> import net.sourceforge.jnlp.cache.CacheUtil; >> import net.sourceforge.jnlp.cache.UpdatePolicy; >> +import net.sourceforge.jnlp.runtime.DeploymentConfiguration; >> import net.sourceforge.jnlp.runtime.JNLPRuntime; >> >> /** >> @@ -73,7 +74,9 @@ >> >> String pathToJavaws = System.getProperty("java.home") + File.separator + "bin" >> + File.separator + "javaws"; >> - File cacheFile = CacheUtil.urlToPath(file.getSourceLocation(), "cache"); >> + String cacheDir = JNLPRuntime.getConfiguration() >> + .getProperty(DeploymentConfiguration.KEY_USER_CACHE_DIR); >> + File cacheFile = CacheUtil.urlToPath(file.getSourceLocation(), cacheDir); >> >> String fileContents = "[Desktop Entry]\n"; >> fileContents += "Version=1.0\n"; >> @@ -131,10 +134,14 @@ >> * Install this XDesktopEntry into the user's desktop as a launcher >> */ >> private void installDesktopLauncher() { >> - File shortcutFile = new File(JNLPRuntime.TMP_DIR + File.separator >> - + FileUtils.sanitizeFileName(file.getTitle()) + ".desktop"); >> + File shortcutFile = new File(JNLPRuntime.getConfiguration() >> + .getProperty(DeploymentConfiguration.KEY_USER_TMP_DIR) >> + + File.separator + FileUtils.sanitizeFileName(file.getTitle()) + ".desktop"); >> try { >> >> + if (!shortcutFile.getParentFile().isDirectory()&& !shortcutFile.getParentFile().mkdirs()) { >> + throw new IOException(shortcutFile.getParentFile().toString()); >> + } >> /* >> * Write out a Java String (UTF-16) as a UTF-8 file >> */ >> diff -r 3571cd24829e plugin/icedteanp/java/sun/applet/JavaConsole.java >> --- a/plugin/icedteanp/java/sun/applet/JavaConsole.java Thu Oct 28 16:18:36 2010 -0400 >> +++ b/plugin/icedteanp/java/sun/applet/JavaConsole.java Fri Oct 29 11:48:26 2010 -0400 >> @@ -63,6 +63,9 @@ >> import javax.swing.border.EmptyBorder; >> import javax.swing.border.TitledBorder; >> >> +import net.sourceforge.jnlp.runtime.DeploymentConfiguration; >> +import net.sourceforge.jnlp.runtime.JNLPRuntime; >> + >> /** >> * A simple Java console for IcedTeaPlugin >> * >> @@ -86,6 +89,8 @@ >> e.printStackTrace(); >> } >> >> + final String logDir = JNLPRuntime.getConfiguration().getProperty(DeploymentConfiguration.KEY_USER_LOG_DIR); >> + >> consoleWindow = new JFrame("Java Console"); >> >> JPanel contentPanel = new JPanel(); >> @@ -104,7 +109,7 @@ >> stdOutText.setEditable(false); >> stdOutText.setFont(monoSpace); >> >> - TextAreaUpdater stdOutUpdater = new TextAreaUpdater(new File( >> + TextAreaUpdater stdOutUpdater = new TextAreaUpdater(new File(logDir, >> PluginMain.PLUGIN_STDOUT_FILE), stdOutText); >> stdOutUpdater.setName("IcedteaPlugin Console Thread(System.out)"); >> >> @@ -117,7 +122,7 @@ >> stdErrText.setEditable(false); >> stdErrText.setFont(monoSpace); >> >> - TextAreaUpdater stdErrUpdater = new TextAreaUpdater(new File( >> + TextAreaUpdater stdErrUpdater = new TextAreaUpdater(new File(logDir, >> PluginMain.PLUGIN_STDERR_FILE), stdErrText); >> stdErrUpdater.setName("IcedteaPlugin Console Thread(System.err)"); >> >> diff -r 3571cd24829e plugin/icedteanp/java/sun/applet/PluginMain.java >> --- a/plugin/icedteanp/java/sun/applet/PluginMain.java Thu Oct 28 16:18:36 2010 -0400 >> +++ b/plugin/icedteanp/java/sun/applet/PluginMain.java Fri Oct 29 11:48:26 2010 -0400 >> @@ -80,6 +80,8 @@ >> import javax.net.ssl.SSLSocketFactory; >> import javax.net.ssl.TrustManager; >> >> +import net.sourceforge.jnlp.runtime.DeploymentConfiguration; >> +import net.sourceforge.jnlp.runtime.JNLPRuntime; >> import net.sourceforge.jnlp.security.VariableX509TrustManager; >> >> /** >> @@ -87,10 +89,9 @@ >> */ >> public class PluginMain >> { >> - >> // the files where stdout/stderr are sent to >> - public static final String PLUGIN_STDERR_FILE = System.getProperty("user.home") + "/.icedteaplugin/java.stderr"; >> - public static final String PLUGIN_STDOUT_FILE = System.getProperty("user.home") + "/.icedteaplugin/java.stdout"; >> + public static final String PLUGIN_STDERR_FILE = "java.stderr"; >> + public static final String PLUGIN_STDOUT_FILE = "java.stdout"; >> >> final boolean redirectStreams = System.getenv().containsKey("ICEDTEAPLUGIN_DEBUG"); >> static PluginStreamHandler streamHandler; >> @@ -123,16 +124,6 @@ >> >> public PluginMain(String inPipe, String outPipe) { >> >> - try { >> - File errFile = new File(PLUGIN_STDERR_FILE); >> - File outFile = new File(PLUGIN_STDOUT_FILE); >> - >> - System.setErr(new TeeOutputStream(new FileOutputStream(errFile), System.err)); >> - System.setOut(new TeeOutputStream(new FileOutputStream(outFile), System.out)); >> - } catch (Exception e) { >> - PluginDebug.debug("Unable to redirect streams"); >> - e.printStackTrace(); >> - } >> >> connect(inPipe, outPipe); >> >> @@ -141,6 +132,20 @@ >> securityContext.setStreamhandler(streamHandler); >> AppletSecurityContextManager.addContext(0, securityContext); >> >> + String logDir = JNLPRuntime.getConfiguration().getProperty(DeploymentConfiguration.KEY_USER_LOG_DIR); >> + try { >> + File errFile = new File(logDir, PLUGIN_STDERR_FILE); >> + errFile.getParentFile().mkdirs(); >> + File outFile = new File(logDir, PLUGIN_STDOUT_FILE); >> + outFile.getParentFile().mkdirs(); >> + >> + System.setErr(new TeeOutputStream(new FileOutputStream(errFile), System.err)); >> + System.setOut(new TeeOutputStream(new FileOutputStream(outFile), System.out)); >> + } catch (Exception e) { >> + PluginDebug.debug("Unable to redirect streams"); >> + e.printStackTrace(); >> + } >> + >> PluginAppletViewer.setStreamhandler(streamHandler); >> PluginAppletViewer.setPluginCallRequestFactory(new PluginCallRequestFactory()); >> > From dbhole at redhat.com Mon Nov 1 11:19:43 2010 From: dbhole at redhat.com (Deepak Bhole) Date: Mon, 1 Nov 2010 14:19:43 -0400 Subject: [icedtea-web] RFC: use the new configuration file for infrastructure settings In-Reply-To: <4CCEE6AE.7000702@redhat.com> References: <4CCAF4A4.10303@redhat.com> <20101029194310.GB2057@redhat.com> <4CCEE6AE.7000702@redhat.com> Message-ID: <20101101181942.GA16588@redhat.com> * Omair Majid [2010-11-01 12:11]: > On 10/29/2010 03:43 PM, Deepak Bhole wrote: > >* Omair Majid [2010-10-29 12:39]: > >>Hi, > >> > >>The attached patch integrates the "infrastructure" part of the > >>deployment properties into netx/icedteanpplugin. > >> > > > >Looks fine to me. Please make sure this is very well tested though. > >Things like cache are critical parts of the code... > > > >Ok for HEAD assuming it has undergone edge case testing. > > > > I have tested out pretty much every code path affected by this > patch. The only thing that I noticed is that the Java Console doesnt > work (I tried it out using Firefox's Web Developer extension), but > it isnt working without this patch either. > Is the console not-appearing a problem introduced by the patch? > Any ideas on other types of tests I could try out? > Just with jars that case stuff, and try with the cache dir not existing to start with, etc. No specific sites I can think of either. Cheers, Deepak > Thanks, > Omair > > >>ChangeLog: > >> > >>2010-10-29 Omair Majid > >> > >> * netx/net/sourceforge/jnlp/Launcher.java > >> (markNetxRunning): Get file name from configuration. > >> (markNetxStopped): Likewise. > >> * netx/net/sourceforge/jnlp/cache/CacheUtil.java > >> (clearCache): Get cache directory from configuration. > >> (okToClearCache): Get netx_running file from configuration. > >> (getCacheFile): Get cache directory from configuration. > >> (urlToPath): Change semantics to take in the full path of the > >> directory instead of a directory under runtime. > >> * netx/net/sourceforge/jnlp/runtime/DeploymentConfiguration.java: > >> Change DEPLOYMENT_DIR to ".icedtea". Add constants > >> KEY_USER_CACHE_DIR, KEY_USER_PERSISTENCE_CACHE_DIR, > >> KEY_SYSTEM_CACHE_DIR, KEY_USER_LOG_DIR, KEY_USER_TMP_DIR, > >> KEY_USER_LOCKS_DIR, and KEY_USER_NETX_RUNNING_FILE. > >> (load): Use DEPLOYMENT_DIR instead of hardcoded string. > >> (loadDefaultProperties): Add LOCKS_DIR. Replace strings with > >> constants. Add new default values for persistence cache directory, > >> single instance locks directory and the netx_running file. > >> * netx/net/sourceforge/jnlp/runtime/JNLPRuntime.java: Remove > >> unneeded TMP_DIR, LOCKS_DIR and NETX_RUNNING_FILE > >> * netx/net/sourceforge/jnlp/services/SingleInstanceLock.java > >> (getLockFile): Get locks directory from configuration. > >> * netx/net/sourceforge/jnlp/services/XPersistenceService.java > >> (toCacheFile): Get persistence cache directory from configuration. > >> * netx/net/sourceforge/jnlp/util/XDesktopEntry.java > >> (getContentsAsReader): Get cache directory from configuration. > >> (installDesktopLauncher): Get temporary directory from > >> configuration. Make parent directories if required. > >> * plugin/icedteanp/java/sun/applet/JavaConsole.java > >> (initialize): Get log directory from configuration and create the > >> error and output files under it. > >> * plugin/icedteanp/java/sun/applet/PluginMain.java: > >> PLUGIN_STDERR_FILE and PLUGIN_STDOUT_FILE are now just filesnames. > >> (PluginMain): Use configuration for finding the log directory. > >> Initialize JNLPRuntime before creating the stderr and stdout logs. > >> > >>Any comments? > >> > >>Thanks, > >>Omair > > > >>diff -r 3571cd24829e netx/net/sourceforge/jnlp/Launcher.java > >>--- a/netx/net/sourceforge/jnlp/Launcher.java Thu Oct 28 16:18:36 2010 -0400 > >>+++ b/netx/net/sourceforge/jnlp/Launcher.java Fri Oct 29 11:48:26 2010 -0400 > >>@@ -43,6 +43,7 @@ > >> import net.sourceforge.jnlp.runtime.AppThreadGroup; > >> import net.sourceforge.jnlp.runtime.AppletInstance; > >> import net.sourceforge.jnlp.runtime.ApplicationInstance; > >>+import net.sourceforge.jnlp.runtime.DeploymentConfiguration; > >> import net.sourceforge.jnlp.runtime.JNLPClassLoader; > >> import net.sourceforge.jnlp.runtime.JNLPRuntime; > >> import net.sourceforge.jnlp.services.InstanceExistsException; > >>@@ -724,7 +725,8 @@ > >> try { > >> String message = "This file is used to check if netx is running"; > >> > >>- File netxRunningFile = new File(JNLPRuntime.NETX_RUNNING_FILE); > >>+ File netxRunningFile = new File(JNLPRuntime.getConfiguration() > >>+ .getProperty(DeploymentConfiguration.KEY_USER_NETX_RUNNING_FILE)); > >> netxRunningFile.getParentFile().mkdirs(); > >> if (netxRunningFile.createNewFile()) { > >> FileOutputStream fos = new FileOutputStream(netxRunningFile); > >>@@ -749,7 +751,7 @@ > >> if (fileLock != null&& fileLock.isShared()) { > >> if (JNLPRuntime.isDebug()) { > >> System.out.println("Acquired shared lock on " + > >>- JNLPRuntime.NETX_RUNNING_FILE + " to indicate javaws is running"); > >>+ netxRunningFile.toString() + " to indicate javaws is running"); > >> } > >> } else { > >> fileLock = null; > >>@@ -773,7 +775,9 @@ > >> fileLock.channel().close(); > >> fileLock = null; > >> if (JNLPRuntime.isDebug()) { > >>- System.out.println("Release shared lock on " + JNLPRuntime.NETX_RUNNING_FILE); > >>+ String file = JNLPRuntime.getConfiguration() > >>+ .getProperty(DeploymentConfiguration.KEY_USER_NETX_RUNNING_FILE); > >>+ System.out.println("Release shared lock on " + file); > >> } > >> } catch (IOException e) { > >> e.printStackTrace(); > >>diff -r 3571cd24829e netx/net/sourceforge/jnlp/cache/CacheUtil.java > >>--- a/netx/net/sourceforge/jnlp/cache/CacheUtil.java Thu Oct 28 16:18:36 2010 -0400 > >>+++ b/netx/net/sourceforge/jnlp/cache/CacheUtil.java Fri Oct 29 11:48:26 2010 -0400 > >>@@ -141,7 +141,8 @@ > >> return; > >> } > >> > >>- File cacheDir = new File(JNLPRuntime.getBaseDir() + File.separator + "cache"); > >>+ File cacheDir = new File(JNLPRuntime.getConfiguration() > >>+ .getProperty(DeploymentConfiguration.KEY_USER_CACHE_DIR)); > >> if (!(cacheDir.isDirectory())) { > >> return; > >> } > >>@@ -150,7 +151,8 @@ > >> System.err.println("Clearing cache directory: " + cacheDir); > >> } > >> try { > >>- FileUtils.recursiveDelete(cacheDir, JNLPRuntime.getBaseDir()); > >>+ cacheDir = cacheDir.getCanonicalFile(); > >>+ FileUtils.recursiveDelete(cacheDir, cacheDir); > >> } catch (IOException e) { > >> throw new RuntimeException(e); > >> } > >>@@ -161,7 +163,8 @@ > >> * @return true if the cache can be cleared at this time without problems > >> */ > >> private static boolean okToClearCache() { > >>- File otherJavawsRunning = new File(JNLPRuntime.NETX_RUNNING_FILE); > >>+ File otherJavawsRunning = new File(JNLPRuntime.getConfiguration() > >>+ .getProperty(DeploymentConfiguration.KEY_USER_NETX_RUNNING_FILE)); > >> try { > >> if (otherJavawsRunning.isFile()) { > >> FileOutputStream fis = new FileOutputStream(otherJavawsRunning); > >>@@ -289,7 +292,9 @@ > >> throw new IllegalArgumentException(R("CNotCacheable", source)); > >> > >> try { > >>- File localFile = urlToPath(source, "cache"); > >>+ String cacheDir = JNLPRuntime.getConfiguration() > >>+ .getProperty(DeploymentConfiguration.KEY_USER_CACHE_DIR); > >>+ File localFile = urlToPath(source, cacheDir); > >> localFile.getParentFile().mkdirs(); > >> > >> return localFile; > >>@@ -345,20 +350,23 @@ > >> } > >> > >> /** > >>- * Converts a URL into a local path string within the runtime's > >>- * base directory. > >>+ * Converts a URL into a local path string within the given directory. For > >>+ * example a url with subdirectory /tmp/ will > >>+ * result in a File that is located somewhere within /tmp/ > >> * > >> * @param location the url > >>- * @param subdir subdirectory under the base directory > >>+ * @param subdir the subdirectory > >> * @return the file > >> */ > >> public static File urlToPath(URL location, String subdir) { > >>+ if (subdir == null) { > >>+ throw new NullPointerException(); > >>+ } > >>+ > >> StringBuffer path = new StringBuffer(); > >> > >>- if (subdir != null) { > >>- path.append(subdir); > >>- path.append(File.separatorChar); > >>- } > >>+ path.append(subdir); > >>+ path.append(File.separatorChar); > >> > >> path.append(location.getProtocol()); > >> path.append(File.separatorChar); > >>@@ -366,7 +374,7 @@ > >> path.append(File.separatorChar); > >> path.append(location.getPath().replace('/', File.separatorChar)); > >> > >>- return new File(JNLPRuntime.getBaseDir(), FileUtils.sanitizePath(path.toString())); > >>+ return new File(FileUtils.sanitizePath(path.toString())); > >> } > >> > >> > >>diff -r 3571cd24829e netx/net/sourceforge/jnlp/runtime/DeploymentConfiguration.java > >>--- a/netx/net/sourceforge/jnlp/runtime/DeploymentConfiguration.java Thu Oct 28 16:18:36 2010 -0400 > >>+++ b/netx/net/sourceforge/jnlp/runtime/DeploymentConfiguration.java Fri Oct 29 11:48:26 2010 -0400 > >>@@ -28,6 +28,7 @@ > >> import java.io.Reader; > >> import java.net.MalformedURLException; > >> import java.net.URL; > >>+import java.nio.channels.FileLock; > >> import java.util.HashMap; > >> import java.util.Map; > >> import java.util.Properties; > >>@@ -98,7 +99,7 @@ > >> } > >> } > >> > >>- public static final String DEPLOYMENT_DIR = ".netx"; > >>+ public static final String DEPLOYMENT_DIR = ".icedtea"; > >> public static final String DEPLOYMENT_CONFIG = "deployment.config"; > >> public static final String DEPLOYMENT_PROPERTIES = "deployment.properties"; > >> > >>@@ -125,6 +126,22 @@ > >> public static final int PROXY_TYPE_AUTO = 2; > >> public static final int PROXY_TYPE_BROWSER = 3; > >> > >>+ public static final String KEY_USER_CACHE_DIR = "deployment.user.cachedir"; > >>+ public static final String KEY_USER_PERSISTENCE_CACHE_DIR = "deployment.user.pcachedir"; > >>+ public static final String KEY_SYSTEM_CACHE_DIR = "deployment.system.cachedir"; > >>+ public static final String KEY_USER_LOG_DIR = "deployment.user.logdir"; > >>+ public static final String KEY_USER_TMP_DIR = "deployment.user.tmp"; > >>+ /** the directory containing locks for single instance applications */ > >>+ public static final String KEY_USER_LOCKS_DIR = "deployment.user.locksdir"; > >>+ /** > >>+ * The netx_running file is used to indicate if any instances of netx are > >>+ * running (this file may exist even if no instances are running). All netx > >>+ * instances acquire a shared lock on this file. If this file can be locked > >>+ * (using a {@link FileLock}) in exclusive mode, then other netx instances > >>+ * are not running > >>+ */ > >>+ public static final String KEY_USER_NETX_RUNNING_FILE = "deployment.user.runningfile"; > >>+ > >> public enum ConfigType { > >> System, User > >> } > >>@@ -156,7 +173,7 @@ > >> */ > >> public void load() throws ConfigurationException { > >> // make sure no state leaks if security check fails later on > >>- File userFile = new File(System.getProperty("user.home") + File.separator + ".netx" > >>+ File userFile = new File(System.getProperty("user.home") + File.separator + DEPLOYMENT_DIR > >> + File.separator + DEPLOYMENT_PROPERTIES); > >> > >> SecurityManager sm = System.getSecurityManager(); > >>@@ -277,6 +294,10 @@ > >> final String USER_HOME = System.getProperty("user.home") + File.separator + DEPLOYMENT_DIR; > >> final String USER_SECURITY = USER_HOME + File.separator + "security"; > >> > >>+ final String LOCKS_DIR = System.getProperty("java.io.tmpdir") + File.separator > >>+ + System.getProperty("user.name") + File.separator + "netx" + File.separator > >>+ + "locks"; > >>+ > >> /* > >> * This is more or less a straight copy from the deployment > >> * configuration page, with occasional replacements of "" or no-defaults > >>@@ -285,10 +306,13 @@ > >> > >> String[][] defaults = new String[][] { > >> /* infrastructure */ > >>- { "deployment.user.cachedir", USER_HOME + File.separator + "cache" }, > >>- { "deployment.system.cachedir", null }, > >>- { "deployment.user.logdir", USER_HOME + File.separator + "log" }, > >>- { "deployment.user.tmp", USER_HOME + File.separator + "tmp" }, > >>+ { KEY_USER_CACHE_DIR, USER_HOME + File.separator + "cache" }, > >>+ { KEY_USER_PERSISTENCE_CACHE_DIR, USER_HOME + File.separator + "pcache" }, > >>+ { KEY_SYSTEM_CACHE_DIR, null }, > >>+ { KEY_USER_LOG_DIR, USER_HOME + File.separator + "log" }, > >>+ { KEY_USER_TMP_DIR, USER_HOME + File.separator + "tmp" }, > >>+ { KEY_USER_LOCKS_DIR, LOCKS_DIR }, > >>+ { KEY_USER_NETX_RUNNING_FILE, LOCKS_DIR + File.separator + "netx_running" }, > >> /* certificates and policy files */ > >> { "deployment.user.security.policy", "file://" + USER_SECURITY + File.separator + "java.policy" }, > >> { "deployment.user.security.trusted.cacerts", USER_SECURITY + File.separator + "trusted.cacerts" }, > >>diff -r 3571cd24829e netx/net/sourceforge/jnlp/runtime/JNLPRuntime.java > >>--- a/netx/net/sourceforge/jnlp/runtime/JNLPRuntime.java Thu Oct 28 16:18:36 2010 -0400 > >>+++ b/netx/net/sourceforge/jnlp/runtime/JNLPRuntime.java Fri Oct 29 11:48:26 2010 -0400 > >>@@ -132,25 +132,6 @@ > >> /** the ~/.netx/security/trusted.certs file containing trusted certificates */ > >> public static final String CERTIFICATES_FILE = SECURITY_DIR + File.separator + "trusted.certs"; > >> > >>- /** the /tmp/ directory used for temporary files */ > >>- public static final String TMP_DIR = System.getProperty("java.io.tmpdir"); > >>- > >>- /** > >>- * the /tmp/$USER/netx/locks/ directory containing locks for single instance > >>- * applications > >>- */ > >>- public static final String LOCKS_DIR = TMP_DIR + File.separator + USER + File.separator > >>- + "netx" + File.separator + "locks"; > >>- > >>- /** > >>- * The /tmp/$USER/netx/locks/netx_running file is used to indicate if any > >>- * instances of netx are running (this file may exist even if no instances > >>- * are running). All netx instances acquire a shared lock on this file. If > >>- * this file can be locked (using a {@link FileLock}) in exclusive mode, then > >>- * other netx instances are not running > >>- */ > >>- public static final String NETX_RUNNING_FILE = LOCKS_DIR + File.separator + "netx_running"; > >>- > >> /** the java.home directory */ > >> public static final String JAVA_HOME_DIR = System.getProperty("java.home"); > >> > >>diff -r 3571cd24829e netx/net/sourceforge/jnlp/services/SingleInstanceLock.java > >>--- a/netx/net/sourceforge/jnlp/services/SingleInstanceLock.java Thu Oct 28 16:18:36 2010 -0400 > >>+++ b/netx/net/sourceforge/jnlp/services/SingleInstanceLock.java Fri Oct 29 11:48:26 2010 -0400 > >>@@ -28,6 +28,7 @@ > >> import java.net.ServerSocket; > >> > >> import net.sourceforge.jnlp.JNLPFile; > >>+import net.sourceforge.jnlp.runtime.DeploymentConfiguration; > >> import net.sourceforge.jnlp.runtime.JNLPRuntime; > >> import net.sourceforge.jnlp.util.FileUtils; > >> > >>@@ -128,7 +129,8 @@ > >> * may or may not exist. > >> */ > >> private File getLockFile() { > >>- File baseDir = new File(JNLPRuntime.LOCKS_DIR); > >>+ File baseDir = new File(JNLPRuntime.getConfiguration() > >>+ .getProperty(DeploymentConfiguration.KEY_USER_LOCKS_DIR)); > >> > >> if (!baseDir.isDirectory()&& !baseDir.mkdirs()) { > >> throw new RuntimeException(R("RNoLockDir", baseDir)); > >>diff -r 3571cd24829e netx/net/sourceforge/jnlp/services/XPersistenceService.java > >>--- a/netx/net/sourceforge/jnlp/services/XPersistenceService.java Thu Oct 28 16:18:36 2010 -0400 > >>+++ b/netx/net/sourceforge/jnlp/services/XPersistenceService.java Fri Oct 29 11:48:26 2010 -0400 > >>@@ -80,7 +80,9 @@ > >> * @return the file > >> */ > >> protected File toCacheFile(URL location) throws MalformedURLException { > >>- return CacheUtil.urlToPath(location, "pcache"); > >>+ String pcache = JNLPRuntime.getConfiguration() > >>+ .getProperty(DeploymentConfiguration.KEY_USER_PERSISTENCE_CACHE_DIR); > >>+ return CacheUtil.urlToPath(location, pcache); > >> } > >> > >> /** > >>diff -r 3571cd24829e netx/net/sourceforge/jnlp/util/XDesktopEntry.java > >>--- a/netx/net/sourceforge/jnlp/util/XDesktopEntry.java Thu Oct 28 16:18:36 2010 -0400 > >>+++ b/netx/net/sourceforge/jnlp/util/XDesktopEntry.java Fri Oct 29 11:48:26 2010 -0400 > >>@@ -32,6 +32,7 @@ > >> import net.sourceforge.jnlp.StreamEater; > >> import net.sourceforge.jnlp.cache.CacheUtil; > >> import net.sourceforge.jnlp.cache.UpdatePolicy; > >>+import net.sourceforge.jnlp.runtime.DeploymentConfiguration; > >> import net.sourceforge.jnlp.runtime.JNLPRuntime; > >> > >> /** > >>@@ -73,7 +74,9 @@ > >> > >> String pathToJavaws = System.getProperty("java.home") + File.separator + "bin" > >> + File.separator + "javaws"; > >>- File cacheFile = CacheUtil.urlToPath(file.getSourceLocation(), "cache"); > >>+ String cacheDir = JNLPRuntime.getConfiguration() > >>+ .getProperty(DeploymentConfiguration.KEY_USER_CACHE_DIR); > >>+ File cacheFile = CacheUtil.urlToPath(file.getSourceLocation(), cacheDir); > >> > >> String fileContents = "[Desktop Entry]\n"; > >> fileContents += "Version=1.0\n"; > >>@@ -131,10 +134,14 @@ > >> * Install this XDesktopEntry into the user's desktop as a launcher > >> */ > >> private void installDesktopLauncher() { > >>- File shortcutFile = new File(JNLPRuntime.TMP_DIR + File.separator > >>- + FileUtils.sanitizeFileName(file.getTitle()) + ".desktop"); > >>+ File shortcutFile = new File(JNLPRuntime.getConfiguration() > >>+ .getProperty(DeploymentConfiguration.KEY_USER_TMP_DIR) > >>+ + File.separator + FileUtils.sanitizeFileName(file.getTitle()) + ".desktop"); > >> try { > >> > >>+ if (!shortcutFile.getParentFile().isDirectory()&& !shortcutFile.getParentFile().mkdirs()) { > >>+ throw new IOException(shortcutFile.getParentFile().toString()); > >>+ } > >> /* > >> * Write out a Java String (UTF-16) as a UTF-8 file > >> */ > >>diff -r 3571cd24829e plugin/icedteanp/java/sun/applet/JavaConsole.java > >>--- a/plugin/icedteanp/java/sun/applet/JavaConsole.java Thu Oct 28 16:18:36 2010 -0400 > >>+++ b/plugin/icedteanp/java/sun/applet/JavaConsole.java Fri Oct 29 11:48:26 2010 -0400 > >>@@ -63,6 +63,9 @@ > >> import javax.swing.border.EmptyBorder; > >> import javax.swing.border.TitledBorder; > >> > >>+import net.sourceforge.jnlp.runtime.DeploymentConfiguration; > >>+import net.sourceforge.jnlp.runtime.JNLPRuntime; > >>+ > >> /** > >> * A simple Java console for IcedTeaPlugin > >> * > >>@@ -86,6 +89,8 @@ > >> e.printStackTrace(); > >> } > >> > >>+ final String logDir = JNLPRuntime.getConfiguration().getProperty(DeploymentConfiguration.KEY_USER_LOG_DIR); > >>+ > >> consoleWindow = new JFrame("Java Console"); > >> > >> JPanel contentPanel = new JPanel(); > >>@@ -104,7 +109,7 @@ > >> stdOutText.setEditable(false); > >> stdOutText.setFont(monoSpace); > >> > >>- TextAreaUpdater stdOutUpdater = new TextAreaUpdater(new File( > >>+ TextAreaUpdater stdOutUpdater = new TextAreaUpdater(new File(logDir, > >> PluginMain.PLUGIN_STDOUT_FILE), stdOutText); > >> stdOutUpdater.setName("IcedteaPlugin Console Thread(System.out)"); > >> > >>@@ -117,7 +122,7 @@ > >> stdErrText.setEditable(false); > >> stdErrText.setFont(monoSpace); > >> > >>- TextAreaUpdater stdErrUpdater = new TextAreaUpdater(new File( > >>+ TextAreaUpdater stdErrUpdater = new TextAreaUpdater(new File(logDir, > >> PluginMain.PLUGIN_STDERR_FILE), stdErrText); > >> stdErrUpdater.setName("IcedteaPlugin Console Thread(System.err)"); > >> > >>diff -r 3571cd24829e plugin/icedteanp/java/sun/applet/PluginMain.java > >>--- a/plugin/icedteanp/java/sun/applet/PluginMain.java Thu Oct 28 16:18:36 2010 -0400 > >>+++ b/plugin/icedteanp/java/sun/applet/PluginMain.java Fri Oct 29 11:48:26 2010 -0400 > >>@@ -80,6 +80,8 @@ > >> import javax.net.ssl.SSLSocketFactory; > >> import javax.net.ssl.TrustManager; > >> > >>+import net.sourceforge.jnlp.runtime.DeploymentConfiguration; > >>+import net.sourceforge.jnlp.runtime.JNLPRuntime; > >> import net.sourceforge.jnlp.security.VariableX509TrustManager; > >> > >> /** > >>@@ -87,10 +89,9 @@ > >> */ > >> public class PluginMain > >> { > >>- > >> // the files where stdout/stderr are sent to > >>- public static final String PLUGIN_STDERR_FILE = System.getProperty("user.home") + "/.icedteaplugin/java.stderr"; > >>- public static final String PLUGIN_STDOUT_FILE = System.getProperty("user.home") + "/.icedteaplugin/java.stdout"; > >>+ public static final String PLUGIN_STDERR_FILE = "java.stderr"; > >>+ public static final String PLUGIN_STDOUT_FILE = "java.stdout"; > >> > >> final boolean redirectStreams = System.getenv().containsKey("ICEDTEAPLUGIN_DEBUG"); > >> static PluginStreamHandler streamHandler; > >>@@ -123,16 +124,6 @@ > >> > >> public PluginMain(String inPipe, String outPipe) { > >> > >>- try { > >>- File errFile = new File(PLUGIN_STDERR_FILE); > >>- File outFile = new File(PLUGIN_STDOUT_FILE); > >>- > >>- System.setErr(new TeeOutputStream(new FileOutputStream(errFile), System.err)); > >>- System.setOut(new TeeOutputStream(new FileOutputStream(outFile), System.out)); > >>- } catch (Exception e) { > >>- PluginDebug.debug("Unable to redirect streams"); > >>- e.printStackTrace(); > >>- } > >> > >> connect(inPipe, outPipe); > >> > >>@@ -141,6 +132,20 @@ > >> securityContext.setStreamhandler(streamHandler); > >> AppletSecurityContextManager.addContext(0, securityContext); > >> > >>+ String logDir = JNLPRuntime.getConfiguration().getProperty(DeploymentConfiguration.KEY_USER_LOG_DIR); > >>+ try { > >>+ File errFile = new File(logDir, PLUGIN_STDERR_FILE); > >>+ errFile.getParentFile().mkdirs(); > >>+ File outFile = new File(logDir, PLUGIN_STDOUT_FILE); > >>+ outFile.getParentFile().mkdirs(); > >>+ > >>+ System.setErr(new TeeOutputStream(new FileOutputStream(errFile), System.err)); > >>+ System.setOut(new TeeOutputStream(new FileOutputStream(outFile), System.out)); > >>+ } catch (Exception e) { > >>+ PluginDebug.debug("Unable to redirect streams"); > >>+ e.printStackTrace(); > >>+ } > >>+ > >> PluginAppletViewer.setStreamhandler(streamHandler); > >> PluginAppletViewer.setPluginCallRequestFactory(new PluginCallRequestFactory()); > >> > > > From omajid at redhat.com Mon Nov 1 11:27:47 2010 From: omajid at redhat.com (Omair Majid) Date: Mon, 01 Nov 2010 14:27:47 -0400 Subject: [icedtea-web] RFC: use the new configuration file for infrastructure settings In-Reply-To: <20101101181942.GA16588@redhat.com> References: <4CCAF4A4.10303@redhat.com> <20101029194310.GB2057@redhat.com> <4CCEE6AE.7000702@redhat.com> <20101101181942.GA16588@redhat.com> Message-ID: <4CCF06A3.8010003@redhat.com> On 11/01/2010 02:19 PM, Deepak Bhole wrote: > * Omair Majid [2010-11-01 12:11]: >> On 10/29/2010 03:43 PM, Deepak Bhole wrote: >>> * Omair Majid [2010-10-29 12:39]: >>>> Hi, >>>> >>>> The attached patch integrates the "infrastructure" part of the >>>> deployment properties into netx/icedteanpplugin. >>>> >>> >>> Looks fine to me. Please make sure this is very well tested though. >>> Things like cache are critical parts of the code... >>> >>> Ok for HEAD assuming it has undergone edge case testing. >>> >> >> I have tested out pretty much every code path affected by this >> patch. The only thing that I noticed is that the Java Console doesnt >> work (I tried it out using Firefox's Web Developer extension), but >> it isnt working without this patch either. >> > > Is the console not-appearing a problem introduced by the patch? > No, this seems to have happened some time ago. https://bugzilla.mozilla.org/show_bug.cgi?id=460244 > >> Any ideas on other types of tests I could try out? >> > > Just with jars that case stuff, and try with the cache dir not existing > to start with, etc. No specific sites I can think of either. > Did you mean 'jars that cache stuff'? I tried out a number of times with blank directories - the patch already takes care of all the missing directories I could find (cache, pcache, tmp or log). Do you have a list of applets that are known to work? Thanks, Omair >> >>>> ChangeLog: >>>> >>>> 2010-10-29 Omair Majid >>>> >>>> * netx/net/sourceforge/jnlp/Launcher.java >>>> (markNetxRunning): Get file name from configuration. >>>> (markNetxStopped): Likewise. >>>> * netx/net/sourceforge/jnlp/cache/CacheUtil.java >>>> (clearCache): Get cache directory from configuration. >>>> (okToClearCache): Get netx_running file from configuration. >>>> (getCacheFile): Get cache directory from configuration. >>>> (urlToPath): Change semantics to take in the full path of the >>>> directory instead of a directory under runtime. >>>> * netx/net/sourceforge/jnlp/runtime/DeploymentConfiguration.java: >>>> Change DEPLOYMENT_DIR to ".icedtea". Add constants >>>> KEY_USER_CACHE_DIR, KEY_USER_PERSISTENCE_CACHE_DIR, >>>> KEY_SYSTEM_CACHE_DIR, KEY_USER_LOG_DIR, KEY_USER_TMP_DIR, >>>> KEY_USER_LOCKS_DIR, and KEY_USER_NETX_RUNNING_FILE. >>>> (load): Use DEPLOYMENT_DIR instead of hardcoded string. >>>> (loadDefaultProperties): Add LOCKS_DIR. Replace strings with >>>> constants. Add new default values for persistence cache directory, >>>> single instance locks directory and the netx_running file. >>>> * netx/net/sourceforge/jnlp/runtime/JNLPRuntime.java: Remove >>>> unneeded TMP_DIR, LOCKS_DIR and NETX_RUNNING_FILE >>>> * netx/net/sourceforge/jnlp/services/SingleInstanceLock.java >>>> (getLockFile): Get locks directory from configuration. >>>> * netx/net/sourceforge/jnlp/services/XPersistenceService.java >>>> (toCacheFile): Get persistence cache directory from configuration. >>>> * netx/net/sourceforge/jnlp/util/XDesktopEntry.java >>>> (getContentsAsReader): Get cache directory from configuration. >>>> (installDesktopLauncher): Get temporary directory from >>>> configuration. Make parent directories if required. >>>> * plugin/icedteanp/java/sun/applet/JavaConsole.java >>>> (initialize): Get log directory from configuration and create the >>>> error and output files under it. >>>> * plugin/icedteanp/java/sun/applet/PluginMain.java: >>>> PLUGIN_STDERR_FILE and PLUGIN_STDOUT_FILE are now just filesnames. >>>> (PluginMain): Use configuration for finding the log directory. >>>> Initialize JNLPRuntime before creating the stderr and stdout logs. >>>> >>>> Any comments? >>>> >>>> Thanks, >>>> Omair >>> >>>> diff -r 3571cd24829e netx/net/sourceforge/jnlp/Launcher.java >>>> --- a/netx/net/sourceforge/jnlp/Launcher.java Thu Oct 28 16:18:36 2010 -0400 >>>> +++ b/netx/net/sourceforge/jnlp/Launcher.java Fri Oct 29 11:48:26 2010 -0400 >>>> @@ -43,6 +43,7 @@ >>>> import net.sourceforge.jnlp.runtime.AppThreadGroup; >>>> import net.sourceforge.jnlp.runtime.AppletInstance; >>>> import net.sourceforge.jnlp.runtime.ApplicationInstance; >>>> +import net.sourceforge.jnlp.runtime.DeploymentConfiguration; >>>> import net.sourceforge.jnlp.runtime.JNLPClassLoader; >>>> import net.sourceforge.jnlp.runtime.JNLPRuntime; >>>> import net.sourceforge.jnlp.services.InstanceExistsException; >>>> @@ -724,7 +725,8 @@ >>>> try { >>>> String message = "This file is used to check if netx is running"; >>>> >>>> - File netxRunningFile = new File(JNLPRuntime.NETX_RUNNING_FILE); >>>> + File netxRunningFile = new File(JNLPRuntime.getConfiguration() >>>> + .getProperty(DeploymentConfiguration.KEY_USER_NETX_RUNNING_FILE)); >>>> netxRunningFile.getParentFile().mkdirs(); >>>> if (netxRunningFile.createNewFile()) { >>>> FileOutputStream fos = new FileOutputStream(netxRunningFile); >>>> @@ -749,7 +751,7 @@ >>>> if (fileLock != null&& fileLock.isShared()) { >>>> if (JNLPRuntime.isDebug()) { >>>> System.out.println("Acquired shared lock on " + >>>> - JNLPRuntime.NETX_RUNNING_FILE + " to indicate javaws is running"); >>>> + netxRunningFile.toString() + " to indicate javaws is running"); >>>> } >>>> } else { >>>> fileLock = null; >>>> @@ -773,7 +775,9 @@ >>>> fileLock.channel().close(); >>>> fileLock = null; >>>> if (JNLPRuntime.isDebug()) { >>>> - System.out.println("Release shared lock on " + JNLPRuntime.NETX_RUNNING_FILE); >>>> + String file = JNLPRuntime.getConfiguration() >>>> + .getProperty(DeploymentConfiguration.KEY_USER_NETX_RUNNING_FILE); >>>> + System.out.println("Release shared lock on " + file); >>>> } >>>> } catch (IOException e) { >>>> e.printStackTrace(); >>>> diff -r 3571cd24829e netx/net/sourceforge/jnlp/cache/CacheUtil.java >>>> --- a/netx/net/sourceforge/jnlp/cache/CacheUtil.java Thu Oct 28 16:18:36 2010 -0400 >>>> +++ b/netx/net/sourceforge/jnlp/cache/CacheUtil.java Fri Oct 29 11:48:26 2010 -0400 >>>> @@ -141,7 +141,8 @@ >>>> return; >>>> } >>>> >>>> - File cacheDir = new File(JNLPRuntime.getBaseDir() + File.separator + "cache"); >>>> + File cacheDir = new File(JNLPRuntime.getConfiguration() >>>> + .getProperty(DeploymentConfiguration.KEY_USER_CACHE_DIR)); >>>> if (!(cacheDir.isDirectory())) { >>>> return; >>>> } >>>> @@ -150,7 +151,8 @@ >>>> System.err.println("Clearing cache directory: " + cacheDir); >>>> } >>>> try { >>>> - FileUtils.recursiveDelete(cacheDir, JNLPRuntime.getBaseDir()); >>>> + cacheDir = cacheDir.getCanonicalFile(); >>>> + FileUtils.recursiveDelete(cacheDir, cacheDir); >>>> } catch (IOException e) { >>>> throw new RuntimeException(e); >>>> } >>>> @@ -161,7 +163,8 @@ >>>> * @return true if the cache can be cleared at this time without problems >>>> */ >>>> private static boolean okToClearCache() { >>>> - File otherJavawsRunning = new File(JNLPRuntime.NETX_RUNNING_FILE); >>>> + File otherJavawsRunning = new File(JNLPRuntime.getConfiguration() >>>> + .getProperty(DeploymentConfiguration.KEY_USER_NETX_RUNNING_FILE)); >>>> try { >>>> if (otherJavawsRunning.isFile()) { >>>> FileOutputStream fis = new FileOutputStream(otherJavawsRunning); >>>> @@ -289,7 +292,9 @@ >>>> throw new IllegalArgumentException(R("CNotCacheable", source)); >>>> >>>> try { >>>> - File localFile = urlToPath(source, "cache"); >>>> + String cacheDir = JNLPRuntime.getConfiguration() >>>> + .getProperty(DeploymentConfiguration.KEY_USER_CACHE_DIR); >>>> + File localFile = urlToPath(source, cacheDir); >>>> localFile.getParentFile().mkdirs(); >>>> >>>> return localFile; >>>> @@ -345,20 +350,23 @@ >>>> } >>>> >>>> /** >>>> - * Converts a URL into a local path string within the runtime's >>>> - * base directory. >>>> + * Converts a URL into a local path string within the given directory. For >>>> + * example a url with subdirectory /tmp/ will >>>> + * result in a File that is located somewhere within /tmp/ >>>> * >>>> * @param location the url >>>> - * @param subdir subdirectory under the base directory >>>> + * @param subdir the subdirectory >>>> * @return the file >>>> */ >>>> public static File urlToPath(URL location, String subdir) { >>>> + if (subdir == null) { >>>> + throw new NullPointerException(); >>>> + } >>>> + >>>> StringBuffer path = new StringBuffer(); >>>> >>>> - if (subdir != null) { >>>> - path.append(subdir); >>>> - path.append(File.separatorChar); >>>> - } >>>> + path.append(subdir); >>>> + path.append(File.separatorChar); >>>> >>>> path.append(location.getProtocol()); >>>> path.append(File.separatorChar); >>>> @@ -366,7 +374,7 @@ >>>> path.append(File.separatorChar); >>>> path.append(location.getPath().replace('/', File.separatorChar)); >>>> >>>> - return new File(JNLPRuntime.getBaseDir(), FileUtils.sanitizePath(path.toString())); >>>> + return new File(FileUtils.sanitizePath(path.toString())); >>>> } >>>> >>>> >>>> diff -r 3571cd24829e netx/net/sourceforge/jnlp/runtime/DeploymentConfiguration.java >>>> --- a/netx/net/sourceforge/jnlp/runtime/DeploymentConfiguration.java Thu Oct 28 16:18:36 2010 -0400 >>>> +++ b/netx/net/sourceforge/jnlp/runtime/DeploymentConfiguration.java Fri Oct 29 11:48:26 2010 -0400 >>>> @@ -28,6 +28,7 @@ >>>> import java.io.Reader; >>>> import java.net.MalformedURLException; >>>> import java.net.URL; >>>> +import java.nio.channels.FileLock; >>>> import java.util.HashMap; >>>> import java.util.Map; >>>> import java.util.Properties; >>>> @@ -98,7 +99,7 @@ >>>> } >>>> } >>>> >>>> - public static final String DEPLOYMENT_DIR = ".netx"; >>>> + public static final String DEPLOYMENT_DIR = ".icedtea"; >>>> public static final String DEPLOYMENT_CONFIG = "deployment.config"; >>>> public static final String DEPLOYMENT_PROPERTIES = "deployment.properties"; >>>> >>>> @@ -125,6 +126,22 @@ >>>> public static final int PROXY_TYPE_AUTO = 2; >>>> public static final int PROXY_TYPE_BROWSER = 3; >>>> >>>> + public static final String KEY_USER_CACHE_DIR = "deployment.user.cachedir"; >>>> + public static final String KEY_USER_PERSISTENCE_CACHE_DIR = "deployment.user.pcachedir"; >>>> + public static final String KEY_SYSTEM_CACHE_DIR = "deployment.system.cachedir"; >>>> + public static final String KEY_USER_LOG_DIR = "deployment.user.logdir"; >>>> + public static final String KEY_USER_TMP_DIR = "deployment.user.tmp"; >>>> + /** the directory containing locks for single instance applications */ >>>> + public static final String KEY_USER_LOCKS_DIR = "deployment.user.locksdir"; >>>> + /** >>>> + * The netx_running file is used to indicate if any instances of netx are >>>> + * running (this file may exist even if no instances are running). All netx >>>> + * instances acquire a shared lock on this file. If this file can be locked >>>> + * (using a {@link FileLock}) in exclusive mode, then other netx instances >>>> + * are not running >>>> + */ >>>> + public static final String KEY_USER_NETX_RUNNING_FILE = "deployment.user.runningfile"; >>>> + >>>> public enum ConfigType { >>>> System, User >>>> } >>>> @@ -156,7 +173,7 @@ >>>> */ >>>> public void load() throws ConfigurationException { >>>> // make sure no state leaks if security check fails later on >>>> - File userFile = new File(System.getProperty("user.home") + File.separator + ".netx" >>>> + File userFile = new File(System.getProperty("user.home") + File.separator + DEPLOYMENT_DIR >>>> + File.separator + DEPLOYMENT_PROPERTIES); >>>> >>>> SecurityManager sm = System.getSecurityManager(); >>>> @@ -277,6 +294,10 @@ >>>> final String USER_HOME = System.getProperty("user.home") + File.separator + DEPLOYMENT_DIR; >>>> final String USER_SECURITY = USER_HOME + File.separator + "security"; >>>> >>>> + final String LOCKS_DIR = System.getProperty("java.io.tmpdir") + File.separator >>>> + + System.getProperty("user.name") + File.separator + "netx" + File.separator >>>> + + "locks"; >>>> + >>>> /* >>>> * This is more or less a straight copy from the deployment >>>> * configuration page, with occasional replacements of "" or no-defaults >>>> @@ -285,10 +306,13 @@ >>>> >>>> String[][] defaults = new String[][] { >>>> /* infrastructure */ >>>> - { "deployment.user.cachedir", USER_HOME + File.separator + "cache" }, >>>> - { "deployment.system.cachedir", null }, >>>> - { "deployment.user.logdir", USER_HOME + File.separator + "log" }, >>>> - { "deployment.user.tmp", USER_HOME + File.separator + "tmp" }, >>>> + { KEY_USER_CACHE_DIR, USER_HOME + File.separator + "cache" }, >>>> + { KEY_USER_PERSISTENCE_CACHE_DIR, USER_HOME + File.separator + "pcache" }, >>>> + { KEY_SYSTEM_CACHE_DIR, null }, >>>> + { KEY_USER_LOG_DIR, USER_HOME + File.separator + "log" }, >>>> + { KEY_USER_TMP_DIR, USER_HOME + File.separator + "tmp" }, >>>> + { KEY_USER_LOCKS_DIR, LOCKS_DIR }, >>>> + { KEY_USER_NETX_RUNNING_FILE, LOCKS_DIR + File.separator + "netx_running" }, >>>> /* certificates and policy files */ >>>> { "deployment.user.security.policy", "file://" + USER_SECURITY + File.separator + "java.policy" }, >>>> { "deployment.user.security.trusted.cacerts", USER_SECURITY + File.separator + "trusted.cacerts" }, >>>> diff -r 3571cd24829e netx/net/sourceforge/jnlp/runtime/JNLPRuntime.java >>>> --- a/netx/net/sourceforge/jnlp/runtime/JNLPRuntime.java Thu Oct 28 16:18:36 2010 -0400 >>>> +++ b/netx/net/sourceforge/jnlp/runtime/JNLPRuntime.java Fri Oct 29 11:48:26 2010 -0400 >>>> @@ -132,25 +132,6 @@ >>>> /** the ~/.netx/security/trusted.certs file containing trusted certificates */ >>>> public static final String CERTIFICATES_FILE = SECURITY_DIR + File.separator + "trusted.certs"; >>>> >>>> - /** the /tmp/ directory used for temporary files */ >>>> - public static final String TMP_DIR = System.getProperty("java.io.tmpdir"); >>>> - >>>> - /** >>>> - * the /tmp/$USER/netx/locks/ directory containing locks for single instance >>>> - * applications >>>> - */ >>>> - public static final String LOCKS_DIR = TMP_DIR + File.separator + USER + File.separator >>>> - + "netx" + File.separator + "locks"; >>>> - >>>> - /** >>>> - * The /tmp/$USER/netx/locks/netx_running file is used to indicate if any >>>> - * instances of netx are running (this file may exist even if no instances >>>> - * are running). All netx instances acquire a shared lock on this file. If >>>> - * this file can be locked (using a {@link FileLock}) in exclusive mode, then >>>> - * other netx instances are not running >>>> - */ >>>> - public static final String NETX_RUNNING_FILE = LOCKS_DIR + File.separator + "netx_running"; >>>> - >>>> /** the java.home directory */ >>>> public static final String JAVA_HOME_DIR = System.getProperty("java.home"); >>>> >>>> diff -r 3571cd24829e netx/net/sourceforge/jnlp/services/SingleInstanceLock.java >>>> --- a/netx/net/sourceforge/jnlp/services/SingleInstanceLock.java Thu Oct 28 16:18:36 2010 -0400 >>>> +++ b/netx/net/sourceforge/jnlp/services/SingleInstanceLock.java Fri Oct 29 11:48:26 2010 -0400 >>>> @@ -28,6 +28,7 @@ >>>> import java.net.ServerSocket; >>>> >>>> import net.sourceforge.jnlp.JNLPFile; >>>> +import net.sourceforge.jnlp.runtime.DeploymentConfiguration; >>>> import net.sourceforge.jnlp.runtime.JNLPRuntime; >>>> import net.sourceforge.jnlp.util.FileUtils; >>>> >>>> @@ -128,7 +129,8 @@ >>>> * may or may not exist. >>>> */ >>>> private File getLockFile() { >>>> - File baseDir = new File(JNLPRuntime.LOCKS_DIR); >>>> + File baseDir = new File(JNLPRuntime.getConfiguration() >>>> + .getProperty(DeploymentConfiguration.KEY_USER_LOCKS_DIR)); >>>> >>>> if (!baseDir.isDirectory()&& !baseDir.mkdirs()) { >>>> throw new RuntimeException(R("RNoLockDir", baseDir)); >>>> diff -r 3571cd24829e netx/net/sourceforge/jnlp/services/XPersistenceService.java >>>> --- a/netx/net/sourceforge/jnlp/services/XPersistenceService.java Thu Oct 28 16:18:36 2010 -0400 >>>> +++ b/netx/net/sourceforge/jnlp/services/XPersistenceService.java Fri Oct 29 11:48:26 2010 -0400 >>>> @@ -80,7 +80,9 @@ >>>> * @return the file >>>> */ >>>> protected File toCacheFile(URL location) throws MalformedURLException { >>>> - return CacheUtil.urlToPath(location, "pcache"); >>>> + String pcache = JNLPRuntime.getConfiguration() >>>> + .getProperty(DeploymentConfiguration.KEY_USER_PERSISTENCE_CACHE_DIR); >>>> + return CacheUtil.urlToPath(location, pcache); >>>> } >>>> >>>> /** >>>> diff -r 3571cd24829e netx/net/sourceforge/jnlp/util/XDesktopEntry.java >>>> --- a/netx/net/sourceforge/jnlp/util/XDesktopEntry.java Thu Oct 28 16:18:36 2010 -0400 >>>> +++ b/netx/net/sourceforge/jnlp/util/XDesktopEntry.java Fri Oct 29 11:48:26 2010 -0400 >>>> @@ -32,6 +32,7 @@ >>>> import net.sourceforge.jnlp.StreamEater; >>>> import net.sourceforge.jnlp.cache.CacheUtil; >>>> import net.sourceforge.jnlp.cache.UpdatePolicy; >>>> +import net.sourceforge.jnlp.runtime.DeploymentConfiguration; >>>> import net.sourceforge.jnlp.runtime.JNLPRuntime; >>>> >>>> /** >>>> @@ -73,7 +74,9 @@ >>>> >>>> String pathToJavaws = System.getProperty("java.home") + File.separator + "bin" >>>> + File.separator + "javaws"; >>>> - File cacheFile = CacheUtil.urlToPath(file.getSourceLocation(), "cache"); >>>> + String cacheDir = JNLPRuntime.getConfiguration() >>>> + .getProperty(DeploymentConfiguration.KEY_USER_CACHE_DIR); >>>> + File cacheFile = CacheUtil.urlToPath(file.getSourceLocation(), cacheDir); >>>> >>>> String fileContents = "[Desktop Entry]\n"; >>>> fileContents += "Version=1.0\n"; >>>> @@ -131,10 +134,14 @@ >>>> * Install this XDesktopEntry into the user's desktop as a launcher >>>> */ >>>> private void installDesktopLauncher() { >>>> - File shortcutFile = new File(JNLPRuntime.TMP_DIR + File.separator >>>> - + FileUtils.sanitizeFileName(file.getTitle()) + ".desktop"); >>>> + File shortcutFile = new File(JNLPRuntime.getConfiguration() >>>> + .getProperty(DeploymentConfiguration.KEY_USER_TMP_DIR) >>>> + + File.separator + FileUtils.sanitizeFileName(file.getTitle()) + ".desktop"); >>>> try { >>>> >>>> + if (!shortcutFile.getParentFile().isDirectory()&& !shortcutFile.getParentFile().mkdirs()) { >>>> + throw new IOException(shortcutFile.getParentFile().toString()); >>>> + } >>>> /* >>>> * Write out a Java String (UTF-16) as a UTF-8 file >>>> */ >>>> diff -r 3571cd24829e plugin/icedteanp/java/sun/applet/JavaConsole.java >>>> --- a/plugin/icedteanp/java/sun/applet/JavaConsole.java Thu Oct 28 16:18:36 2010 -0400 >>>> +++ b/plugin/icedteanp/java/sun/applet/JavaConsole.java Fri Oct 29 11:48:26 2010 -0400 >>>> @@ -63,6 +63,9 @@ >>>> import javax.swing.border.EmptyBorder; >>>> import javax.swing.border.TitledBorder; >>>> >>>> +import net.sourceforge.jnlp.runtime.DeploymentConfiguration; >>>> +import net.sourceforge.jnlp.runtime.JNLPRuntime; >>>> + >>>> /** >>>> * A simple Java console for IcedTeaPlugin >>>> * >>>> @@ -86,6 +89,8 @@ >>>> e.printStackTrace(); >>>> } >>>> >>>> + final String logDir = JNLPRuntime.getConfiguration().getProperty(DeploymentConfiguration.KEY_USER_LOG_DIR); >>>> + >>>> consoleWindow = new JFrame("Java Console"); >>>> >>>> JPanel contentPanel = new JPanel(); >>>> @@ -104,7 +109,7 @@ >>>> stdOutText.setEditable(false); >>>> stdOutText.setFont(monoSpace); >>>> >>>> - TextAreaUpdater stdOutUpdater = new TextAreaUpdater(new File( >>>> + TextAreaUpdater stdOutUpdater = new TextAreaUpdater(new File(logDir, >>>> PluginMain.PLUGIN_STDOUT_FILE), stdOutText); >>>> stdOutUpdater.setName("IcedteaPlugin Console Thread(System.out)"); >>>> >>>> @@ -117,7 +122,7 @@ >>>> stdErrText.setEditable(false); >>>> stdErrText.setFont(monoSpace); >>>> >>>> - TextAreaUpdater stdErrUpdater = new TextAreaUpdater(new File( >>>> + TextAreaUpdater stdErrUpdater = new TextAreaUpdater(new File(logDir, >>>> PluginMain.PLUGIN_STDERR_FILE), stdErrText); >>>> stdErrUpdater.setName("IcedteaPlugin Console Thread(System.err)"); >>>> >>>> diff -r 3571cd24829e plugin/icedteanp/java/sun/applet/PluginMain.java >>>> --- a/plugin/icedteanp/java/sun/applet/PluginMain.java Thu Oct 28 16:18:36 2010 -0400 >>>> +++ b/plugin/icedteanp/java/sun/applet/PluginMain.java Fri Oct 29 11:48:26 2010 -0400 >>>> @@ -80,6 +80,8 @@ >>>> import javax.net.ssl.SSLSocketFactory; >>>> import javax.net.ssl.TrustManager; >>>> >>>> +import net.sourceforge.jnlp.runtime.DeploymentConfiguration; >>>> +import net.sourceforge.jnlp.runtime.JNLPRuntime; >>>> import net.sourceforge.jnlp.security.VariableX509TrustManager; >>>> >>>> /** >>>> @@ -87,10 +89,9 @@ >>>> */ >>>> public class PluginMain >>>> { >>>> - >>>> // the files where stdout/stderr are sent to >>>> - public static final String PLUGIN_STDERR_FILE = System.getProperty("user.home") + "/.icedteaplugin/java.stderr"; >>>> - public static final String PLUGIN_STDOUT_FILE = System.getProperty("user.home") + "/.icedteaplugin/java.stdout"; >>>> + public static final String PLUGIN_STDERR_FILE = "java.stderr"; >>>> + public static final String PLUGIN_STDOUT_FILE = "java.stdout"; >>>> >>>> final boolean redirectStreams = System.getenv().containsKey("ICEDTEAPLUGIN_DEBUG"); >>>> static PluginStreamHandler streamHandler; >>>> @@ -123,16 +124,6 @@ >>>> >>>> public PluginMain(String inPipe, String outPipe) { >>>> >>>> - try { >>>> - File errFile = new File(PLUGIN_STDERR_FILE); >>>> - File outFile = new File(PLUGIN_STDOUT_FILE); >>>> - >>>> - System.setErr(new TeeOutputStream(new FileOutputStream(errFile), System.err)); >>>> - System.setOut(new TeeOutputStream(new FileOutputStream(outFile), System.out)); >>>> - } catch (Exception e) { >>>> - PluginDebug.debug("Unable to redirect streams"); >>>> - e.printStackTrace(); >>>> - } >>>> >>>> connect(inPipe, outPipe); >>>> >>>> @@ -141,6 +132,20 @@ >>>> securityContext.setStreamhandler(streamHandler); >>>> AppletSecurityContextManager.addContext(0, securityContext); >>>> >>>> + String logDir = JNLPRuntime.getConfiguration().getProperty(DeploymentConfiguration.KEY_USER_LOG_DIR); >>>> + try { >>>> + File errFile = new File(logDir, PLUGIN_STDERR_FILE); >>>> + errFile.getParentFile().mkdirs(); >>>> + File outFile = new File(logDir, PLUGIN_STDOUT_FILE); >>>> + outFile.getParentFile().mkdirs(); >>>> + >>>> + System.setErr(new TeeOutputStream(new FileOutputStream(errFile), System.err)); >>>> + System.setOut(new TeeOutputStream(new FileOutputStream(outFile), System.out)); >>>> + } catch (Exception e) { >>>> + PluginDebug.debug("Unable to redirect streams"); >>>> + e.printStackTrace(); >>>> + } >>>> + >>>> PluginAppletViewer.setStreamhandler(streamHandler); >>>> PluginAppletViewer.setPluginCallRequestFactory(new PluginCallRequestFactory()); >>>> >>> >> From dbhole at redhat.com Mon Nov 1 11:34:12 2010 From: dbhole at redhat.com (Deepak Bhole) Date: Mon, 1 Nov 2010 14:34:12 -0400 Subject: [icedtea-web] RFC: use the new configuration file for infrastructure settings In-Reply-To: <4CCF06A3.8010003@redhat.com> References: <4CCAF4A4.10303@redhat.com> <20101029194310.GB2057@redhat.com> <4CCEE6AE.7000702@redhat.com> <20101101181942.GA16588@redhat.com> <4CCF06A3.8010003@redhat.com> Message-ID: <20101101183412.GC16588@redhat.com> * Omair Majid [2010-11-01 14:27]: > On 11/01/2010 02:19 PM, Deepak Bhole wrote: > >* Omair Majid [2010-11-01 12:11]: > >>On 10/29/2010 03:43 PM, Deepak Bhole wrote: > >>>* Omair Majid [2010-10-29 12:39]: > >>>>Hi, > >>>> > >>>>The attached patch integrates the "infrastructure" part of the > >>>>deployment properties into netx/icedteanpplugin. > >>>> > >>> > >>>Looks fine to me. Please make sure this is very well tested though. > >>>Things like cache are critical parts of the code... > >>> > >>>Ok for HEAD assuming it has undergone edge case testing. > >>> > >> > >>I have tested out pretty much every code path affected by this > >>patch. The only thing that I noticed is that the Java Console doesnt > >>work (I tried it out using Firefox's Web Developer extension), but > >>it isnt working without this patch either. > >> > > > >Is the console not-appearing a problem introduced by the patch? > > > > No, this seems to have happened some time ago. > https://bugzilla.mozilla.org/show_bug.cgi?id=460244 > > > > >>Any ideas on other types of tests I could try out? > >> > > > >Just with jars that case stuff, and try with the cache dir not existing > >to start with, etc. No specific sites I can think of either. > > > > Did you mean 'jars that cache stuff'? I tried out a number of times > with blank directories - the patch already takes care of all the > missing directories I could find (cache, pcache, tmp or log). Do you > have a list of applets that are known to work? I haven't tried this list in a while, but whatever is not 404d should work: http://www.knuddels.de/applet.html?v=88&c=6 http://www.absolutepoker.com/no-download/ http://www.visibone.com/font/FontTest2.html http://www.jigzone.com http://www.jwirc.com/chat.html http://www.java.com/en/download/help/testvm.xml?ff3 http://www.w3.org/People/mimasa/test/object/java/clock http://gamow.ist.utl.pt/~amaro/Spline3D.html http://www.upshot.com/login/javatest/logo/javavmtest.html http://www.javatester.org/ http://www.goes.noaa.gov/GSSLOOPS/wcir.html http://games.yahoo.com/games/login2?page=po&ss=1 http://www.postlet.com/example/ http://www.colorado.edu/physics/2000/xray/making_xrays.html http://jmol.sourceforge.net/demo/atoms/ Deepak > > Thanks, > Omair > > > >> > >>>>ChangeLog: > >>>> > >>>>2010-10-29 Omair Majid > >>>> > >>>> * netx/net/sourceforge/jnlp/Launcher.java > >>>> (markNetxRunning): Get file name from configuration. > >>>> (markNetxStopped): Likewise. > >>>> * netx/net/sourceforge/jnlp/cache/CacheUtil.java > >>>> (clearCache): Get cache directory from configuration. > >>>> (okToClearCache): Get netx_running file from configuration. > >>>> (getCacheFile): Get cache directory from configuration. > >>>> (urlToPath): Change semantics to take in the full path of the > >>>> directory instead of a directory under runtime. > >>>> * netx/net/sourceforge/jnlp/runtime/DeploymentConfiguration.java: > >>>> Change DEPLOYMENT_DIR to ".icedtea". Add constants > >>>> KEY_USER_CACHE_DIR, KEY_USER_PERSISTENCE_CACHE_DIR, > >>>> KEY_SYSTEM_CACHE_DIR, KEY_USER_LOG_DIR, KEY_USER_TMP_DIR, > >>>> KEY_USER_LOCKS_DIR, and KEY_USER_NETX_RUNNING_FILE. > >>>> (load): Use DEPLOYMENT_DIR instead of hardcoded string. > >>>> (loadDefaultProperties): Add LOCKS_DIR. Replace strings with > >>>> constants. Add new default values for persistence cache directory, > >>>> single instance locks directory and the netx_running file. > >>>> * netx/net/sourceforge/jnlp/runtime/JNLPRuntime.java: Remove > >>>> unneeded TMP_DIR, LOCKS_DIR and NETX_RUNNING_FILE > >>>> * netx/net/sourceforge/jnlp/services/SingleInstanceLock.java > >>>> (getLockFile): Get locks directory from configuration. > >>>> * netx/net/sourceforge/jnlp/services/XPersistenceService.java > >>>> (toCacheFile): Get persistence cache directory from configuration. > >>>> * netx/net/sourceforge/jnlp/util/XDesktopEntry.java > >>>> (getContentsAsReader): Get cache directory from configuration. > >>>> (installDesktopLauncher): Get temporary directory from > >>>> configuration. Make parent directories if required. > >>>> * plugin/icedteanp/java/sun/applet/JavaConsole.java > >>>> (initialize): Get log directory from configuration and create the > >>>> error and output files under it. > >>>> * plugin/icedteanp/java/sun/applet/PluginMain.java: > >>>> PLUGIN_STDERR_FILE and PLUGIN_STDOUT_FILE are now just filesnames. > >>>> (PluginMain): Use configuration for finding the log directory. > >>>> Initialize JNLPRuntime before creating the stderr and stdout logs. > >>>> > >>>>Any comments? > >>>> > >>>>Thanks, > >>>>Omair > >>> > >>>>diff -r 3571cd24829e netx/net/sourceforge/jnlp/Launcher.java > >>>>--- a/netx/net/sourceforge/jnlp/Launcher.java Thu Oct 28 16:18:36 2010 -0400 > >>>>+++ b/netx/net/sourceforge/jnlp/Launcher.java Fri Oct 29 11:48:26 2010 -0400 > >>>>@@ -43,6 +43,7 @@ > >>>> import net.sourceforge.jnlp.runtime.AppThreadGroup; > >>>> import net.sourceforge.jnlp.runtime.AppletInstance; > >>>> import net.sourceforge.jnlp.runtime.ApplicationInstance; > >>>>+import net.sourceforge.jnlp.runtime.DeploymentConfiguration; > >>>> import net.sourceforge.jnlp.runtime.JNLPClassLoader; > >>>> import net.sourceforge.jnlp.runtime.JNLPRuntime; > >>>> import net.sourceforge.jnlp.services.InstanceExistsException; > >>>>@@ -724,7 +725,8 @@ > >>>> try { > >>>> String message = "This file is used to check if netx is running"; > >>>> > >>>>- File netxRunningFile = new File(JNLPRuntime.NETX_RUNNING_FILE); > >>>>+ File netxRunningFile = new File(JNLPRuntime.getConfiguration() > >>>>+ .getProperty(DeploymentConfiguration.KEY_USER_NETX_RUNNING_FILE)); > >>>> netxRunningFile.getParentFile().mkdirs(); > >>>> if (netxRunningFile.createNewFile()) { > >>>> FileOutputStream fos = new FileOutputStream(netxRunningFile); > >>>>@@ -749,7 +751,7 @@ > >>>> if (fileLock != null&& fileLock.isShared()) { > >>>> if (JNLPRuntime.isDebug()) { > >>>> System.out.println("Acquired shared lock on " + > >>>>- JNLPRuntime.NETX_RUNNING_FILE + " to indicate javaws is running"); > >>>>+ netxRunningFile.toString() + " to indicate javaws is running"); > >>>> } > >>>> } else { > >>>> fileLock = null; > >>>>@@ -773,7 +775,9 @@ > >>>> fileLock.channel().close(); > >>>> fileLock = null; > >>>> if (JNLPRuntime.isDebug()) { > >>>>- System.out.println("Release shared lock on " + JNLPRuntime.NETX_RUNNING_FILE); > >>>>+ String file = JNLPRuntime.getConfiguration() > >>>>+ .getProperty(DeploymentConfiguration.KEY_USER_NETX_RUNNING_FILE); > >>>>+ System.out.println("Release shared lock on " + file); > >>>> } > >>>> } catch (IOException e) { > >>>> e.printStackTrace(); > >>>>diff -r 3571cd24829e netx/net/sourceforge/jnlp/cache/CacheUtil.java > >>>>--- a/netx/net/sourceforge/jnlp/cache/CacheUtil.java Thu Oct 28 16:18:36 2010 -0400 > >>>>+++ b/netx/net/sourceforge/jnlp/cache/CacheUtil.java Fri Oct 29 11:48:26 2010 -0400 > >>>>@@ -141,7 +141,8 @@ > >>>> return; > >>>> } > >>>> > >>>>- File cacheDir = new File(JNLPRuntime.getBaseDir() + File.separator + "cache"); > >>>>+ File cacheDir = new File(JNLPRuntime.getConfiguration() > >>>>+ .getProperty(DeploymentConfiguration.KEY_USER_CACHE_DIR)); > >>>> if (!(cacheDir.isDirectory())) { > >>>> return; > >>>> } > >>>>@@ -150,7 +151,8 @@ > >>>> System.err.println("Clearing cache directory: " + cacheDir); > >>>> } > >>>> try { > >>>>- FileUtils.recursiveDelete(cacheDir, JNLPRuntime.getBaseDir()); > >>>>+ cacheDir = cacheDir.getCanonicalFile(); > >>>>+ FileUtils.recursiveDelete(cacheDir, cacheDir); > >>>> } catch (IOException e) { > >>>> throw new RuntimeException(e); > >>>> } > >>>>@@ -161,7 +163,8 @@ > >>>> * @return true if the cache can be cleared at this time without problems > >>>> */ > >>>> private static boolean okToClearCache() { > >>>>- File otherJavawsRunning = new File(JNLPRuntime.NETX_RUNNING_FILE); > >>>>+ File otherJavawsRunning = new File(JNLPRuntime.getConfiguration() > >>>>+ .getProperty(DeploymentConfiguration.KEY_USER_NETX_RUNNING_FILE)); > >>>> try { > >>>> if (otherJavawsRunning.isFile()) { > >>>> FileOutputStream fis = new FileOutputStream(otherJavawsRunning); > >>>>@@ -289,7 +292,9 @@ > >>>> throw new IllegalArgumentException(R("CNotCacheable", source)); > >>>> > >>>> try { > >>>>- File localFile = urlToPath(source, "cache"); > >>>>+ String cacheDir = JNLPRuntime.getConfiguration() > >>>>+ .getProperty(DeploymentConfiguration.KEY_USER_CACHE_DIR); > >>>>+ File localFile = urlToPath(source, cacheDir); > >>>> localFile.getParentFile().mkdirs(); > >>>> > >>>> return localFile; > >>>>@@ -345,20 +350,23 @@ > >>>> } > >>>> > >>>> /** > >>>>- * Converts a URL into a local path string within the runtime's > >>>>- * base directory. > >>>>+ * Converts a URL into a local path string within the given directory. For > >>>>+ * example a url with subdirectory /tmp/ will > >>>>+ * result in a File that is located somewhere within /tmp/ > >>>> * > >>>> * @param location the url > >>>>- * @param subdir subdirectory under the base directory > >>>>+ * @param subdir the subdirectory > >>>> * @return the file > >>>> */ > >>>> public static File urlToPath(URL location, String subdir) { > >>>>+ if (subdir == null) { > >>>>+ throw new NullPointerException(); > >>>>+ } > >>>>+ > >>>> StringBuffer path = new StringBuffer(); > >>>> > >>>>- if (subdir != null) { > >>>>- path.append(subdir); > >>>>- path.append(File.separatorChar); > >>>>- } > >>>>+ path.append(subdir); > >>>>+ path.append(File.separatorChar); > >>>> > >>>> path.append(location.getProtocol()); > >>>> path.append(File.separatorChar); > >>>>@@ -366,7 +374,7 @@ > >>>> path.append(File.separatorChar); > >>>> path.append(location.getPath().replace('/', File.separatorChar)); > >>>> > >>>>- return new File(JNLPRuntime.getBaseDir(), FileUtils.sanitizePath(path.toString())); > >>>>+ return new File(FileUtils.sanitizePath(path.toString())); > >>>> } > >>>> > >>>> > >>>>diff -r 3571cd24829e netx/net/sourceforge/jnlp/runtime/DeploymentConfiguration.java > >>>>--- a/netx/net/sourceforge/jnlp/runtime/DeploymentConfiguration.java Thu Oct 28 16:18:36 2010 -0400 > >>>>+++ b/netx/net/sourceforge/jnlp/runtime/DeploymentConfiguration.java Fri Oct 29 11:48:26 2010 -0400 > >>>>@@ -28,6 +28,7 @@ > >>>> import java.io.Reader; > >>>> import java.net.MalformedURLException; > >>>> import java.net.URL; > >>>>+import java.nio.channels.FileLock; > >>>> import java.util.HashMap; > >>>> import java.util.Map; > >>>> import java.util.Properties; > >>>>@@ -98,7 +99,7 @@ > >>>> } > >>>> } > >>>> > >>>>- public static final String DEPLOYMENT_DIR = ".netx"; > >>>>+ public static final String DEPLOYMENT_DIR = ".icedtea"; > >>>> public static final String DEPLOYMENT_CONFIG = "deployment.config"; > >>>> public static final String DEPLOYMENT_PROPERTIES = "deployment.properties"; > >>>> > >>>>@@ -125,6 +126,22 @@ > >>>> public static final int PROXY_TYPE_AUTO = 2; > >>>> public static final int PROXY_TYPE_BROWSER = 3; > >>>> > >>>>+ public static final String KEY_USER_CACHE_DIR = "deployment.user.cachedir"; > >>>>+ public static final String KEY_USER_PERSISTENCE_CACHE_DIR = "deployment.user.pcachedir"; > >>>>+ public static final String KEY_SYSTEM_CACHE_DIR = "deployment.system.cachedir"; > >>>>+ public static final String KEY_USER_LOG_DIR = "deployment.user.logdir"; > >>>>+ public static final String KEY_USER_TMP_DIR = "deployment.user.tmp"; > >>>>+ /** the directory containing locks for single instance applications */ > >>>>+ public static final String KEY_USER_LOCKS_DIR = "deployment.user.locksdir"; > >>>>+ /** > >>>>+ * The netx_running file is used to indicate if any instances of netx are > >>>>+ * running (this file may exist even if no instances are running). All netx > >>>>+ * instances acquire a shared lock on this file. If this file can be locked > >>>>+ * (using a {@link FileLock}) in exclusive mode, then other netx instances > >>>>+ * are not running > >>>>+ */ > >>>>+ public static final String KEY_USER_NETX_RUNNING_FILE = "deployment.user.runningfile"; > >>>>+ > >>>> public enum ConfigType { > >>>> System, User > >>>> } > >>>>@@ -156,7 +173,7 @@ > >>>> */ > >>>> public void load() throws ConfigurationException { > >>>> // make sure no state leaks if security check fails later on > >>>>- File userFile = new File(System.getProperty("user.home") + File.separator + ".netx" > >>>>+ File userFile = new File(System.getProperty("user.home") + File.separator + DEPLOYMENT_DIR > >>>> + File.separator + DEPLOYMENT_PROPERTIES); > >>>> > >>>> SecurityManager sm = System.getSecurityManager(); > >>>>@@ -277,6 +294,10 @@ > >>>> final String USER_HOME = System.getProperty("user.home") + File.separator + DEPLOYMENT_DIR; > >>>> final String USER_SECURITY = USER_HOME + File.separator + "security"; > >>>> > >>>>+ final String LOCKS_DIR = System.getProperty("java.io.tmpdir") + File.separator > >>>>+ + System.getProperty("user.name") + File.separator + "netx" + File.separator > >>>>+ + "locks"; > >>>>+ > >>>> /* > >>>> * This is more or less a straight copy from the deployment > >>>> * configuration page, with occasional replacements of "" or no-defaults > >>>>@@ -285,10 +306,13 @@ > >>>> > >>>> String[][] defaults = new String[][] { > >>>> /* infrastructure */ > >>>>- { "deployment.user.cachedir", USER_HOME + File.separator + "cache" }, > >>>>- { "deployment.system.cachedir", null }, > >>>>- { "deployment.user.logdir", USER_HOME + File.separator + "log" }, > >>>>- { "deployment.user.tmp", USER_HOME + File.separator + "tmp" }, > >>>>+ { KEY_USER_CACHE_DIR, USER_HOME + File.separator + "cache" }, > >>>>+ { KEY_USER_PERSISTENCE_CACHE_DIR, USER_HOME + File.separator + "pcache" }, > >>>>+ { KEY_SYSTEM_CACHE_DIR, null }, > >>>>+ { KEY_USER_LOG_DIR, USER_HOME + File.separator + "log" }, > >>>>+ { KEY_USER_TMP_DIR, USER_HOME + File.separator + "tmp" }, > >>>>+ { KEY_USER_LOCKS_DIR, LOCKS_DIR }, > >>>>+ { KEY_USER_NETX_RUNNING_FILE, LOCKS_DIR + File.separator + "netx_running" }, > >>>> /* certificates and policy files */ > >>>> { "deployment.user.security.policy", "file://" + USER_SECURITY + File.separator + "java.policy" }, > >>>> { "deployment.user.security.trusted.cacerts", USER_SECURITY + File.separator + "trusted.cacerts" }, > >>>>diff -r 3571cd24829e netx/net/sourceforge/jnlp/runtime/JNLPRuntime.java > >>>>--- a/netx/net/sourceforge/jnlp/runtime/JNLPRuntime.java Thu Oct 28 16:18:36 2010 -0400 > >>>>+++ b/netx/net/sourceforge/jnlp/runtime/JNLPRuntime.java Fri Oct 29 11:48:26 2010 -0400 > >>>>@@ -132,25 +132,6 @@ > >>>> /** the ~/.netx/security/trusted.certs file containing trusted certificates */ > >>>> public static final String CERTIFICATES_FILE = SECURITY_DIR + File.separator + "trusted.certs"; > >>>> > >>>>- /** the /tmp/ directory used for temporary files */ > >>>>- public static final String TMP_DIR = System.getProperty("java.io.tmpdir"); > >>>>- > >>>>- /** > >>>>- * the /tmp/$USER/netx/locks/ directory containing locks for single instance > >>>>- * applications > >>>>- */ > >>>>- public static final String LOCKS_DIR = TMP_DIR + File.separator + USER + File.separator > >>>>- + "netx" + File.separator + "locks"; > >>>>- > >>>>- /** > >>>>- * The /tmp/$USER/netx/locks/netx_running file is used to indicate if any > >>>>- * instances of netx are running (this file may exist even if no instances > >>>>- * are running). All netx instances acquire a shared lock on this file. If > >>>>- * this file can be locked (using a {@link FileLock}) in exclusive mode, then > >>>>- * other netx instances are not running > >>>>- */ > >>>>- public static final String NETX_RUNNING_FILE = LOCKS_DIR + File.separator + "netx_running"; > >>>>- > >>>> /** the java.home directory */ > >>>> public static final String JAVA_HOME_DIR = System.getProperty("java.home"); > >>>> > >>>>diff -r 3571cd24829e netx/net/sourceforge/jnlp/services/SingleInstanceLock.java > >>>>--- a/netx/net/sourceforge/jnlp/services/SingleInstanceLock.java Thu Oct 28 16:18:36 2010 -0400 > >>>>+++ b/netx/net/sourceforge/jnlp/services/SingleInstanceLock.java Fri Oct 29 11:48:26 2010 -0400 > >>>>@@ -28,6 +28,7 @@ > >>>> import java.net.ServerSocket; > >>>> > >>>> import net.sourceforge.jnlp.JNLPFile; > >>>>+import net.sourceforge.jnlp.runtime.DeploymentConfiguration; > >>>> import net.sourceforge.jnlp.runtime.JNLPRuntime; > >>>> import net.sourceforge.jnlp.util.FileUtils; > >>>> > >>>>@@ -128,7 +129,8 @@ > >>>> * may or may not exist. > >>>> */ > >>>> private File getLockFile() { > >>>>- File baseDir = new File(JNLPRuntime.LOCKS_DIR); > >>>>+ File baseDir = new File(JNLPRuntime.getConfiguration() > >>>>+ .getProperty(DeploymentConfiguration.KEY_USER_LOCKS_DIR)); > >>>> > >>>> if (!baseDir.isDirectory()&& !baseDir.mkdirs()) { > >>>> throw new RuntimeException(R("RNoLockDir", baseDir)); > >>>>diff -r 3571cd24829e netx/net/sourceforge/jnlp/services/XPersistenceService.java > >>>>--- a/netx/net/sourceforge/jnlp/services/XPersistenceService.java Thu Oct 28 16:18:36 2010 -0400 > >>>>+++ b/netx/net/sourceforge/jnlp/services/XPersistenceService.java Fri Oct 29 11:48:26 2010 -0400 > >>>>@@ -80,7 +80,9 @@ > >>>> * @return the file > >>>> */ > >>>> protected File toCacheFile(URL location) throws MalformedURLException { > >>>>- return CacheUtil.urlToPath(location, "pcache"); > >>>>+ String pcache = JNLPRuntime.getConfiguration() > >>>>+ .getProperty(DeploymentConfiguration.KEY_USER_PERSISTENCE_CACHE_DIR); > >>>>+ return CacheUtil.urlToPath(location, pcache); > >>>> } > >>>> > >>>> /** > >>>>diff -r 3571cd24829e netx/net/sourceforge/jnlp/util/XDesktopEntry.java > >>>>--- a/netx/net/sourceforge/jnlp/util/XDesktopEntry.java Thu Oct 28 16:18:36 2010 -0400 > >>>>+++ b/netx/net/sourceforge/jnlp/util/XDesktopEntry.java Fri Oct 29 11:48:26 2010 -0400 > >>>>@@ -32,6 +32,7 @@ > >>>> import net.sourceforge.jnlp.StreamEater; > >>>> import net.sourceforge.jnlp.cache.CacheUtil; > >>>> import net.sourceforge.jnlp.cache.UpdatePolicy; > >>>>+import net.sourceforge.jnlp.runtime.DeploymentConfiguration; > >>>> import net.sourceforge.jnlp.runtime.JNLPRuntime; > >>>> > >>>> /** > >>>>@@ -73,7 +74,9 @@ > >>>> > >>>> String pathToJavaws = System.getProperty("java.home") + File.separator + "bin" > >>>> + File.separator + "javaws"; > >>>>- File cacheFile = CacheUtil.urlToPath(file.getSourceLocation(), "cache"); > >>>>+ String cacheDir = JNLPRuntime.getConfiguration() > >>>>+ .getProperty(DeploymentConfiguration.KEY_USER_CACHE_DIR); > >>>>+ File cacheFile = CacheUtil.urlToPath(file.getSourceLocation(), cacheDir); > >>>> > >>>> String fileContents = "[Desktop Entry]\n"; > >>>> fileContents += "Version=1.0\n"; > >>>>@@ -131,10 +134,14 @@ > >>>> * Install this XDesktopEntry into the user's desktop as a launcher > >>>> */ > >>>> private void installDesktopLauncher() { > >>>>- File shortcutFile = new File(JNLPRuntime.TMP_DIR + File.separator > >>>>- + FileUtils.sanitizeFileName(file.getTitle()) + ".desktop"); > >>>>+ File shortcutFile = new File(JNLPRuntime.getConfiguration() > >>>>+ .getProperty(DeploymentConfiguration.KEY_USER_TMP_DIR) > >>>>+ + File.separator + FileUtils.sanitizeFileName(file.getTitle()) + ".desktop"); > >>>> try { > >>>> > >>>>+ if (!shortcutFile.getParentFile().isDirectory()&& !shortcutFile.getParentFile().mkdirs()) { > >>>>+ throw new IOException(shortcutFile.getParentFile().toString()); > >>>>+ } > >>>> /* > >>>> * Write out a Java String (UTF-16) as a UTF-8 file > >>>> */ > >>>>diff -r 3571cd24829e plugin/icedteanp/java/sun/applet/JavaConsole.java > >>>>--- a/plugin/icedteanp/java/sun/applet/JavaConsole.java Thu Oct 28 16:18:36 2010 -0400 > >>>>+++ b/plugin/icedteanp/java/sun/applet/JavaConsole.java Fri Oct 29 11:48:26 2010 -0400 > >>>>@@ -63,6 +63,9 @@ > >>>> import javax.swing.border.EmptyBorder; > >>>> import javax.swing.border.TitledBorder; > >>>> > >>>>+import net.sourceforge.jnlp.runtime.DeploymentConfiguration; > >>>>+import net.sourceforge.jnlp.runtime.JNLPRuntime; > >>>>+ > >>>> /** > >>>> * A simple Java console for IcedTeaPlugin > >>>> * > >>>>@@ -86,6 +89,8 @@ > >>>> e.printStackTrace(); > >>>> } > >>>> > >>>>+ final String logDir = JNLPRuntime.getConfiguration().getProperty(DeploymentConfiguration.KEY_USER_LOG_DIR); > >>>>+ > >>>> consoleWindow = new JFrame("Java Console"); > >>>> > >>>> JPanel contentPanel = new JPanel(); > >>>>@@ -104,7 +109,7 @@ > >>>> stdOutText.setEditable(false); > >>>> stdOutText.setFont(monoSpace); > >>>> > >>>>- TextAreaUpdater stdOutUpdater = new TextAreaUpdater(new File( > >>>>+ TextAreaUpdater stdOutUpdater = new TextAreaUpdater(new File(logDir, > >>>> PluginMain.PLUGIN_STDOUT_FILE), stdOutText); > >>>> stdOutUpdater.setName("IcedteaPlugin Console Thread(System.out)"); > >>>> > >>>>@@ -117,7 +122,7 @@ > >>>> stdErrText.setEditable(false); > >>>> stdErrText.setFont(monoSpace); > >>>> > >>>>- TextAreaUpdater stdErrUpdater = new TextAreaUpdater(new File( > >>>>+ TextAreaUpdater stdErrUpdater = new TextAreaUpdater(new File(logDir, > >>>> PluginMain.PLUGIN_STDERR_FILE), stdErrText); > >>>> stdErrUpdater.setName("IcedteaPlugin Console Thread(System.err)"); > >>>> > >>>>diff -r 3571cd24829e plugin/icedteanp/java/sun/applet/PluginMain.java > >>>>--- a/plugin/icedteanp/java/sun/applet/PluginMain.java Thu Oct 28 16:18:36 2010 -0400 > >>>>+++ b/plugin/icedteanp/java/sun/applet/PluginMain.java Fri Oct 29 11:48:26 2010 -0400 > >>>>@@ -80,6 +80,8 @@ > >>>> import javax.net.ssl.SSLSocketFactory; > >>>> import javax.net.ssl.TrustManager; > >>>> > >>>>+import net.sourceforge.jnlp.runtime.DeploymentConfiguration; > >>>>+import net.sourceforge.jnlp.runtime.JNLPRuntime; > >>>> import net.sourceforge.jnlp.security.VariableX509TrustManager; > >>>> > >>>> /** > >>>>@@ -87,10 +89,9 @@ > >>>> */ > >>>> public class PluginMain > >>>> { > >>>>- > >>>> // the files where stdout/stderr are sent to > >>>>- public static final String PLUGIN_STDERR_FILE = System.getProperty("user.home") + "/.icedteaplugin/java.stderr"; > >>>>- public static final String PLUGIN_STDOUT_FILE = System.getProperty("user.home") + "/.icedteaplugin/java.stdout"; > >>>>+ public static final String PLUGIN_STDERR_FILE = "java.stderr"; > >>>>+ public static final String PLUGIN_STDOUT_FILE = "java.stdout"; > >>>> > >>>> final boolean redirectStreams = System.getenv().containsKey("ICEDTEAPLUGIN_DEBUG"); > >>>> static PluginStreamHandler streamHandler; > >>>>@@ -123,16 +124,6 @@ > >>>> > >>>> public PluginMain(String inPipe, String outPipe) { > >>>> > >>>>- try { > >>>>- File errFile = new File(PLUGIN_STDERR_FILE); > >>>>- File outFile = new File(PLUGIN_STDOUT_FILE); > >>>>- > >>>>- System.setErr(new TeeOutputStream(new FileOutputStream(errFile), System.err)); > >>>>- System.setOut(new TeeOutputStream(new FileOutputStream(outFile), System.out)); > >>>>- } catch (Exception e) { > >>>>- PluginDebug.debug("Unable to redirect streams"); > >>>>- e.printStackTrace(); > >>>>- } > >>>> > >>>> connect(inPipe, outPipe); > >>>> > >>>>@@ -141,6 +132,20 @@ > >>>> securityContext.setStreamhandler(streamHandler); > >>>> AppletSecurityContextManager.addContext(0, securityContext); > >>>> > >>>>+ String logDir = JNLPRuntime.getConfiguration().getProperty(DeploymentConfiguration.KEY_USER_LOG_DIR); > >>>>+ try { > >>>>+ File errFile = new File(logDir, PLUGIN_STDERR_FILE); > >>>>+ errFile.getParentFile().mkdirs(); > >>>>+ File outFile = new File(logDir, PLUGIN_STDOUT_FILE); > >>>>+ outFile.getParentFile().mkdirs(); > >>>>+ > >>>>+ System.setErr(new TeeOutputStream(new FileOutputStream(errFile), System.err)); > >>>>+ System.setOut(new TeeOutputStream(new FileOutputStream(outFile), System.out)); > >>>>+ } catch (Exception e) { > >>>>+ PluginDebug.debug("Unable to redirect streams"); > >>>>+ e.printStackTrace(); > >>>>+ } > >>>>+ > >>>> PluginAppletViewer.setStreamhandler(streamHandler); > >>>> PluginAppletViewer.setPluginCallRequestFactory(new PluginCallRequestFactory()); > >>>> > >>> > >> > From omajid at redhat.com Mon Nov 1 12:27:45 2010 From: omajid at redhat.com (Omair Majid) Date: Mon, 01 Nov 2010 15:27:45 -0400 Subject: [icedtea-web] RFC: move a number of translatable strings into Messages.properties Message-ID: <4CCF14B1.7080904@redhat.com> Hi, The attached patch moves a number of user-visible strings to Messages.properties file. There should be no user-visible strings left in any class in the package net.sourceforge.jnlp.security.*. The only exception is AppletWarningPane which I have not modified as it is currently unused. ChangeLog 2010-11-01 Omair Majid * netx/net/sourceforge/jnlp/resources/Messages.properties: Add ButAllow, ButClose, ButCopy, ButMoreInformation, ButProceed, ButRun, AlwaysAllowAction, Continue, Field, From, Name, Publisher, Value, Version, SNoAssociatedCertificate, SAlwaysTrustPublisher, SHttpsUnverified, SNotAllSignedSummary, SNotAllSignedDetail, SNotAllSignedQuestion, SCertificateDetails, SIssuer, SSerial, SMD5Fingerprint, SSHA1Fingerprint, SSignature, SSignatureAlgorithm, SSubject, SValidity, CVCertificateViewer, CVDetails, CVIssuedTo, CVExport, CVImport, CVIssuedBy, IssuedTo, CVRemove, CVRemoveConfirmMessage,CVRemoveConfirmTitle, and CVUser. * netx/net/sourceforge/jnlp/security/AccessWarningPane.java (addComponents): Use localized strings. * netx/net/sourceforge/jnlp/security/CertWarningPane.java (addComponents): Likewise. * netx/net/sourceforge/jnlp/security/CertsInfoPane.java (parseCert): Likewise. (addComponents): Likewise. * netx/net/sourceforge/jnlp/security/MoreInfoPane.java (addComponents): Likewise. * netx/net/sourceforge/jnlp/security/NotAllSignedWarningPane.java (addComponents): Likewise. * netx/net/sourceforge/jnlp/security/viewer/CertificatePane.java: Likewise. (addComponents): Likewise. (RemoveButtonListener.actionPerformed): Likewise. Any comments? Thanks, Omair -------------- next part -------------- A non-text attachment was scrubbed... Name: icedtea-web-move-translatable-strings-to-messages.patch Type: text/x-patch Size: 18193 bytes Desc: not available Url : http://mail.openjdk.java.net/pipermail/distro-pkg-dev/attachments/20101101/aad9210b/icedtea-web-move-translatable-strings-to-messages.patch From omajid at redhat.com Mon Nov 1 12:50:36 2010 From: omajid at redhat.com (Omair Majid) Date: Mon, 01 Nov 2010 15:50:36 -0400 Subject: [icedtea-web] RFC: use the new configuration file for infrastructure settings In-Reply-To: <20101101183412.GC16588@redhat.com> References: <4CCAF4A4.10303@redhat.com> <20101029194310.GB2057@redhat.com> <4CCEE6AE.7000702@redhat.com> <20101101181942.GA16588@redhat.com> <4CCF06A3.8010003@redhat.com> <20101101183412.GC16588@redhat.com> Message-ID: <4CCF1A0C.1060901@redhat.com> On 11/01/2010 02:34 PM, Deepak Bhole wrote: > * Omair Majid [2010-11-01 14:27]: >> On 11/01/2010 02:19 PM, Deepak Bhole wrote: >>> * Omair Majid [2010-11-01 12:11]: >>>> On 10/29/2010 03:43 PM, Deepak Bhole wrote: >>>>> * Omair Majid [2010-10-29 12:39]: >>>>>> Hi, >>>>>> >>>>>> The attached patch integrates the "infrastructure" part of the >>>>>> deployment properties into netx/icedteanpplugin. >>>>>> >>>>> >>>>> Looks fine to me. Please make sure this is very well tested though. >>>>> Things like cache are critical parts of the code... >>>>> >>>>> Ok for HEAD assuming it has undergone edge case testing. >>>>> >>>> >>>> I have tested out pretty much every code path affected by this >>>> patch. The only thing that I noticed is that the Java Console doesnt >>>> work (I tried it out using Firefox's Web Developer extension), but >>>> it isnt working without this patch either. >>>> >>> >>> Is the console not-appearing a problem introduced by the patch? >>> >> >> No, this seems to have happened some time ago. >> https://bugzilla.mozilla.org/show_bug.cgi?id=460244 >> >>> >>>> Any ideas on other types of tests I could try out? >>>> >>> >>> Just with jars that case stuff, and try with the cache dir not existing >>> to start with, etc. No specific sites I can think of either. >>> >> >> Did you mean 'jars that cache stuff'? I tried out a number of times >> with blank directories - the patch already takes care of all the >> missing directories I could find (cache, pcache, tmp or log). Do you >> have a list of applets that are known to work? > > I haven't tried this list in a while, but whatever is not 404d should > work: > > http://www.knuddels.de/applet.html?v=88&c=6 > http://www.absolutepoker.com/no-download/ > http://www.visibone.com/font/FontTest2.html > http://www.jigzone.com > http://www.jwirc.com/chat.html > http://www.java.com/en/download/help/testvm.xml?ff3 > http://www.w3.org/People/mimasa/test/object/java/clock > http://gamow.ist.utl.pt/~amaro/Spline3D.html > http://www.upshot.com/login/javatest/logo/javavmtest.html > http://www.javatester.org/ > http://www.goes.noaa.gov/GSSLOOPS/wcir.html > http://games.yahoo.com/games/login2?page=po&ss=1 > http://www.postlet.com/example/ > http://www.colorado.edu/physics/2000/xray/making_xrays.html > http://jmol.sourceforge.net/demo/atoms/ > > Deepak > Thanks for the links. As far as I can tell, the websites work the same with or without the patch applied - I dont observe any regressions. Thanks, Omair >>>>>> ChangeLog: >>>>>> >>>>>> 2010-10-29 Omair Majid >>>>>> >>>>>> * netx/net/sourceforge/jnlp/Launcher.java >>>>>> (markNetxRunning): Get file name from configuration. >>>>>> (markNetxStopped): Likewise. >>>>>> * netx/net/sourceforge/jnlp/cache/CacheUtil.java >>>>>> (clearCache): Get cache directory from configuration. >>>>>> (okToClearCache): Get netx_running file from configuration. >>>>>> (getCacheFile): Get cache directory from configuration. >>>>>> (urlToPath): Change semantics to take in the full path of the >>>>>> directory instead of a directory under runtime. >>>>>> * netx/net/sourceforge/jnlp/runtime/DeploymentConfiguration.java: >>>>>> Change DEPLOYMENT_DIR to ".icedtea". Add constants >>>>>> KEY_USER_CACHE_DIR, KEY_USER_PERSISTENCE_CACHE_DIR, >>>>>> KEY_SYSTEM_CACHE_DIR, KEY_USER_LOG_DIR, KEY_USER_TMP_DIR, >>>>>> KEY_USER_LOCKS_DIR, and KEY_USER_NETX_RUNNING_FILE. >>>>>> (load): Use DEPLOYMENT_DIR instead of hardcoded string. >>>>>> (loadDefaultProperties): Add LOCKS_DIR. Replace strings with >>>>>> constants. Add new default values for persistence cache directory, >>>>>> single instance locks directory and the netx_running file. >>>>>> * netx/net/sourceforge/jnlp/runtime/JNLPRuntime.java: Remove >>>>>> unneeded TMP_DIR, LOCKS_DIR and NETX_RUNNING_FILE >>>>>> * netx/net/sourceforge/jnlp/services/SingleInstanceLock.java >>>>>> (getLockFile): Get locks directory from configuration. >>>>>> * netx/net/sourceforge/jnlp/services/XPersistenceService.java >>>>>> (toCacheFile): Get persistence cache directory from configuration. >>>>>> * netx/net/sourceforge/jnlp/util/XDesktopEntry.java >>>>>> (getContentsAsReader): Get cache directory from configuration. >>>>>> (installDesktopLauncher): Get temporary directory from >>>>>> configuration. Make parent directories if required. >>>>>> * plugin/icedteanp/java/sun/applet/JavaConsole.java >>>>>> (initialize): Get log directory from configuration and create the >>>>>> error and output files under it. >>>>>> * plugin/icedteanp/java/sun/applet/PluginMain.java: >>>>>> PLUGIN_STDERR_FILE and PLUGIN_STDOUT_FILE are now just filesnames. >>>>>> (PluginMain): Use configuration for finding the log directory. >>>>>> Initialize JNLPRuntime before creating the stderr and stdout logs. >>>>>> >>>>>> Any comments? >>>>>> >>>>>> Thanks, >>>>>> Omair >>>>> >>>>>> diff -r 3571cd24829e netx/net/sourceforge/jnlp/Launcher.java >>>>>> --- a/netx/net/sourceforge/jnlp/Launcher.java Thu Oct 28 16:18:36 2010 -0400 >>>>>> +++ b/netx/net/sourceforge/jnlp/Launcher.java Fri Oct 29 11:48:26 2010 -0400 >>>>>> @@ -43,6 +43,7 @@ >>>>>> import net.sourceforge.jnlp.runtime.AppThreadGroup; >>>>>> import net.sourceforge.jnlp.runtime.AppletInstance; >>>>>> import net.sourceforge.jnlp.runtime.ApplicationInstance; >>>>>> +import net.sourceforge.jnlp.runtime.DeploymentConfiguration; >>>>>> import net.sourceforge.jnlp.runtime.JNLPClassLoader; >>>>>> import net.sourceforge.jnlp.runtime.JNLPRuntime; >>>>>> import net.sourceforge.jnlp.services.InstanceExistsException; >>>>>> @@ -724,7 +725,8 @@ >>>>>> try { >>>>>> String message = "This file is used to check if netx is running"; >>>>>> >>>>>> - File netxRunningFile = new File(JNLPRuntime.NETX_RUNNING_FILE); >>>>>> + File netxRunningFile = new File(JNLPRuntime.getConfiguration() >>>>>> + .getProperty(DeploymentConfiguration.KEY_USER_NETX_RUNNING_FILE)); >>>>>> netxRunningFile.getParentFile().mkdirs(); >>>>>> if (netxRunningFile.createNewFile()) { >>>>>> FileOutputStream fos = new FileOutputStream(netxRunningFile); >>>>>> @@ -749,7 +751,7 @@ >>>>>> if (fileLock != null&& fileLock.isShared()) { >>>>>> if (JNLPRuntime.isDebug()) { >>>>>> System.out.println("Acquired shared lock on " + >>>>>> - JNLPRuntime.NETX_RUNNING_FILE + " to indicate javaws is running"); >>>>>> + netxRunningFile.toString() + " to indicate javaws is running"); >>>>>> } >>>>>> } else { >>>>>> fileLock = null; >>>>>> @@ -773,7 +775,9 @@ >>>>>> fileLock.channel().close(); >>>>>> fileLock = null; >>>>>> if (JNLPRuntime.isDebug()) { >>>>>> - System.out.println("Release shared lock on " + JNLPRuntime.NETX_RUNNING_FILE); >>>>>> + String file = JNLPRuntime.getConfiguration() >>>>>> + .getProperty(DeploymentConfiguration.KEY_USER_NETX_RUNNING_FILE); >>>>>> + System.out.println("Release shared lock on " + file); >>>>>> } >>>>>> } catch (IOException e) { >>>>>> e.printStackTrace(); >>>>>> diff -r 3571cd24829e netx/net/sourceforge/jnlp/cache/CacheUtil.java >>>>>> --- a/netx/net/sourceforge/jnlp/cache/CacheUtil.java Thu Oct 28 16:18:36 2010 -0400 >>>>>> +++ b/netx/net/sourceforge/jnlp/cache/CacheUtil.java Fri Oct 29 11:48:26 2010 -0400 >>>>>> @@ -141,7 +141,8 @@ >>>>>> return; >>>>>> } >>>>>> >>>>>> - File cacheDir = new File(JNLPRuntime.getBaseDir() + File.separator + "cache"); >>>>>> + File cacheDir = new File(JNLPRuntime.getConfiguration() >>>>>> + .getProperty(DeploymentConfiguration.KEY_USER_CACHE_DIR)); >>>>>> if (!(cacheDir.isDirectory())) { >>>>>> return; >>>>>> } >>>>>> @@ -150,7 +151,8 @@ >>>>>> System.err.println("Clearing cache directory: " + cacheDir); >>>>>> } >>>>>> try { >>>>>> - FileUtils.recursiveDelete(cacheDir, JNLPRuntime.getBaseDir()); >>>>>> + cacheDir = cacheDir.getCanonicalFile(); >>>>>> + FileUtils.recursiveDelete(cacheDir, cacheDir); >>>>>> } catch (IOException e) { >>>>>> throw new RuntimeException(e); >>>>>> } >>>>>> @@ -161,7 +163,8 @@ >>>>>> * @return true if the cache can be cleared at this time without problems >>>>>> */ >>>>>> private static boolean okToClearCache() { >>>>>> - File otherJavawsRunning = new File(JNLPRuntime.NETX_RUNNING_FILE); >>>>>> + File otherJavawsRunning = new File(JNLPRuntime.getConfiguration() >>>>>> + .getProperty(DeploymentConfiguration.KEY_USER_NETX_RUNNING_FILE)); >>>>>> try { >>>>>> if (otherJavawsRunning.isFile()) { >>>>>> FileOutputStream fis = new FileOutputStream(otherJavawsRunning); >>>>>> @@ -289,7 +292,9 @@ >>>>>> throw new IllegalArgumentException(R("CNotCacheable", source)); >>>>>> >>>>>> try { >>>>>> - File localFile = urlToPath(source, "cache"); >>>>>> + String cacheDir = JNLPRuntime.getConfiguration() >>>>>> + .getProperty(DeploymentConfiguration.KEY_USER_CACHE_DIR); >>>>>> + File localFile = urlToPath(source, cacheDir); >>>>>> localFile.getParentFile().mkdirs(); >>>>>> >>>>>> return localFile; >>>>>> @@ -345,20 +350,23 @@ >>>>>> } >>>>>> >>>>>> /** >>>>>> - * Converts a URL into a local path string within the runtime's >>>>>> - * base directory. >>>>>> + * Converts a URL into a local path string within the given directory. For >>>>>> + * example a url with subdirectory /tmp/ will >>>>>> + * result in a File that is located somewhere within /tmp/ >>>>>> * >>>>>> * @param location the url >>>>>> - * @param subdir subdirectory under the base directory >>>>>> + * @param subdir the subdirectory >>>>>> * @return the file >>>>>> */ >>>>>> public static File urlToPath(URL location, String subdir) { >>>>>> + if (subdir == null) { >>>>>> + throw new NullPointerException(); >>>>>> + } >>>>>> + >>>>>> StringBuffer path = new StringBuffer(); >>>>>> >>>>>> - if (subdir != null) { >>>>>> - path.append(subdir); >>>>>> - path.append(File.separatorChar); >>>>>> - } >>>>>> + path.append(subdir); >>>>>> + path.append(File.separatorChar); >>>>>> >>>>>> path.append(location.getProtocol()); >>>>>> path.append(File.separatorChar); >>>>>> @@ -366,7 +374,7 @@ >>>>>> path.append(File.separatorChar); >>>>>> path.append(location.getPath().replace('/', File.separatorChar)); >>>>>> >>>>>> - return new File(JNLPRuntime.getBaseDir(), FileUtils.sanitizePath(path.toString())); >>>>>> + return new File(FileUtils.sanitizePath(path.toString())); >>>>>> } >>>>>> >>>>>> >>>>>> diff -r 3571cd24829e netx/net/sourceforge/jnlp/runtime/DeploymentConfiguration.java >>>>>> --- a/netx/net/sourceforge/jnlp/runtime/DeploymentConfiguration.java Thu Oct 28 16:18:36 2010 -0400 >>>>>> +++ b/netx/net/sourceforge/jnlp/runtime/DeploymentConfiguration.java Fri Oct 29 11:48:26 2010 -0400 >>>>>> @@ -28,6 +28,7 @@ >>>>>> import java.io.Reader; >>>>>> import java.net.MalformedURLException; >>>>>> import java.net.URL; >>>>>> +import java.nio.channels.FileLock; >>>>>> import java.util.HashMap; >>>>>> import java.util.Map; >>>>>> import java.util.Properties; >>>>>> @@ -98,7 +99,7 @@ >>>>>> } >>>>>> } >>>>>> >>>>>> - public static final String DEPLOYMENT_DIR = ".netx"; >>>>>> + public static final String DEPLOYMENT_DIR = ".icedtea"; >>>>>> public static final String DEPLOYMENT_CONFIG = "deployment.config"; >>>>>> public static final String DEPLOYMENT_PROPERTIES = "deployment.properties"; >>>>>> >>>>>> @@ -125,6 +126,22 @@ >>>>>> public static final int PROXY_TYPE_AUTO = 2; >>>>>> public static final int PROXY_TYPE_BROWSER = 3; >>>>>> >>>>>> + public static final String KEY_USER_CACHE_DIR = "deployment.user.cachedir"; >>>>>> + public static final String KEY_USER_PERSISTENCE_CACHE_DIR = "deployment.user.pcachedir"; >>>>>> + public static final String KEY_SYSTEM_CACHE_DIR = "deployment.system.cachedir"; >>>>>> + public static final String KEY_USER_LOG_DIR = "deployment.user.logdir"; >>>>>> + public static final String KEY_USER_TMP_DIR = "deployment.user.tmp"; >>>>>> + /** the directory containing locks for single instance applications */ >>>>>> + public static final String KEY_USER_LOCKS_DIR = "deployment.user.locksdir"; >>>>>> + /** >>>>>> + * The netx_running file is used to indicate if any instances of netx are >>>>>> + * running (this file may exist even if no instances are running). All netx >>>>>> + * instances acquire a shared lock on this file. If this file can be locked >>>>>> + * (using a {@link FileLock}) in exclusive mode, then other netx instances >>>>>> + * are not running >>>>>> + */ >>>>>> + public static final String KEY_USER_NETX_RUNNING_FILE = "deployment.user.runningfile"; >>>>>> + >>>>>> public enum ConfigType { >>>>>> System, User >>>>>> } >>>>>> @@ -156,7 +173,7 @@ >>>>>> */ >>>>>> public void load() throws ConfigurationException { >>>>>> // make sure no state leaks if security check fails later on >>>>>> - File userFile = new File(System.getProperty("user.home") + File.separator + ".netx" >>>>>> + File userFile = new File(System.getProperty("user.home") + File.separator + DEPLOYMENT_DIR >>>>>> + File.separator + DEPLOYMENT_PROPERTIES); >>>>>> >>>>>> SecurityManager sm = System.getSecurityManager(); >>>>>> @@ -277,6 +294,10 @@ >>>>>> final String USER_HOME = System.getProperty("user.home") + File.separator + DEPLOYMENT_DIR; >>>>>> final String USER_SECURITY = USER_HOME + File.separator + "security"; >>>>>> >>>>>> + final String LOCKS_DIR = System.getProperty("java.io.tmpdir") + File.separator >>>>>> + + System.getProperty("user.name") + File.separator + "netx" + File.separator >>>>>> + + "locks"; >>>>>> + >>>>>> /* >>>>>> * This is more or less a straight copy from the deployment >>>>>> * configuration page, with occasional replacements of "" or no-defaults >>>>>> @@ -285,10 +306,13 @@ >>>>>> >>>>>> String[][] defaults = new String[][] { >>>>>> /* infrastructure */ >>>>>> - { "deployment.user.cachedir", USER_HOME + File.separator + "cache" }, >>>>>> - { "deployment.system.cachedir", null }, >>>>>> - { "deployment.user.logdir", USER_HOME + File.separator + "log" }, >>>>>> - { "deployment.user.tmp", USER_HOME + File.separator + "tmp" }, >>>>>> + { KEY_USER_CACHE_DIR, USER_HOME + File.separator + "cache" }, >>>>>> + { KEY_USER_PERSISTENCE_CACHE_DIR, USER_HOME + File.separator + "pcache" }, >>>>>> + { KEY_SYSTEM_CACHE_DIR, null }, >>>>>> + { KEY_USER_LOG_DIR, USER_HOME + File.separator + "log" }, >>>>>> + { KEY_USER_TMP_DIR, USER_HOME + File.separator + "tmp" }, >>>>>> + { KEY_USER_LOCKS_DIR, LOCKS_DIR }, >>>>>> + { KEY_USER_NETX_RUNNING_FILE, LOCKS_DIR + File.separator + "netx_running" }, >>>>>> /* certificates and policy files */ >>>>>> { "deployment.user.security.policy", "file://" + USER_SECURITY + File.separator + "java.policy" }, >>>>>> { "deployment.user.security.trusted.cacerts", USER_SECURITY + File.separator + "trusted.cacerts" }, >>>>>> diff -r 3571cd24829e netx/net/sourceforge/jnlp/runtime/JNLPRuntime.java >>>>>> --- a/netx/net/sourceforge/jnlp/runtime/JNLPRuntime.java Thu Oct 28 16:18:36 2010 -0400 >>>>>> +++ b/netx/net/sourceforge/jnlp/runtime/JNLPRuntime.java Fri Oct 29 11:48:26 2010 -0400 >>>>>> @@ -132,25 +132,6 @@ >>>>>> /** the ~/.netx/security/trusted.certs file containing trusted certificates */ >>>>>> public static final String CERTIFICATES_FILE = SECURITY_DIR + File.separator + "trusted.certs"; >>>>>> >>>>>> - /** the /tmp/ directory used for temporary files */ >>>>>> - public static final String TMP_DIR = System.getProperty("java.io.tmpdir"); >>>>>> - >>>>>> - /** >>>>>> - * the /tmp/$USER/netx/locks/ directory containing locks for single instance >>>>>> - * applications >>>>>> - */ >>>>>> - public static final String LOCKS_DIR = TMP_DIR + File.separator + USER + File.separator >>>>>> - + "netx" + File.separator + "locks"; >>>>>> - >>>>>> - /** >>>>>> - * The /tmp/$USER/netx/locks/netx_running file is used to indicate if any >>>>>> - * instances of netx are running (this file may exist even if no instances >>>>>> - * are running). All netx instances acquire a shared lock on this file. If >>>>>> - * this file can be locked (using a {@link FileLock}) in exclusive mode, then >>>>>> - * other netx instances are not running >>>>>> - */ >>>>>> - public static final String NETX_RUNNING_FILE = LOCKS_DIR + File.separator + "netx_running"; >>>>>> - >>>>>> /** the java.home directory */ >>>>>> public static final String JAVA_HOME_DIR = System.getProperty("java.home"); >>>>>> >>>>>> diff -r 3571cd24829e netx/net/sourceforge/jnlp/services/SingleInstanceLock.java >>>>>> --- a/netx/net/sourceforge/jnlp/services/SingleInstanceLock.java Thu Oct 28 16:18:36 2010 -0400 >>>>>> +++ b/netx/net/sourceforge/jnlp/services/SingleInstanceLock.java Fri Oct 29 11:48:26 2010 -0400 >>>>>> @@ -28,6 +28,7 @@ >>>>>> import java.net.ServerSocket; >>>>>> >>>>>> import net.sourceforge.jnlp.JNLPFile; >>>>>> +import net.sourceforge.jnlp.runtime.DeploymentConfiguration; >>>>>> import net.sourceforge.jnlp.runtime.JNLPRuntime; >>>>>> import net.sourceforge.jnlp.util.FileUtils; >>>>>> >>>>>> @@ -128,7 +129,8 @@ >>>>>> * may or may not exist. >>>>>> */ >>>>>> private File getLockFile() { >>>>>> - File baseDir = new File(JNLPRuntime.LOCKS_DIR); >>>>>> + File baseDir = new File(JNLPRuntime.getConfiguration() >>>>>> + .getProperty(DeploymentConfiguration.KEY_USER_LOCKS_DIR)); >>>>>> >>>>>> if (!baseDir.isDirectory()&& !baseDir.mkdirs()) { >>>>>> throw new RuntimeException(R("RNoLockDir", baseDir)); >>>>>> diff -r 3571cd24829e netx/net/sourceforge/jnlp/services/XPersistenceService.java >>>>>> --- a/netx/net/sourceforge/jnlp/services/XPersistenceService.java Thu Oct 28 16:18:36 2010 -0400 >>>>>> +++ b/netx/net/sourceforge/jnlp/services/XPersistenceService.java Fri Oct 29 11:48:26 2010 -0400 >>>>>> @@ -80,7 +80,9 @@ >>>>>> * @return the file >>>>>> */ >>>>>> protected File toCacheFile(URL location) throws MalformedURLException { >>>>>> - return CacheUtil.urlToPath(location, "pcache"); >>>>>> + String pcache = JNLPRuntime.getConfiguration() >>>>>> + .getProperty(DeploymentConfiguration.KEY_USER_PERSISTENCE_CACHE_DIR); >>>>>> + return CacheUtil.urlToPath(location, pcache); >>>>>> } >>>>>> >>>>>> /** >>>>>> diff -r 3571cd24829e netx/net/sourceforge/jnlp/util/XDesktopEntry.java >>>>>> --- a/netx/net/sourceforge/jnlp/util/XDesktopEntry.java Thu Oct 28 16:18:36 2010 -0400 >>>>>> +++ b/netx/net/sourceforge/jnlp/util/XDesktopEntry.java Fri Oct 29 11:48:26 2010 -0400 >>>>>> @@ -32,6 +32,7 @@ >>>>>> import net.sourceforge.jnlp.StreamEater; >>>>>> import net.sourceforge.jnlp.cache.CacheUtil; >>>>>> import net.sourceforge.jnlp.cache.UpdatePolicy; >>>>>> +import net.sourceforge.jnlp.runtime.DeploymentConfiguration; >>>>>> import net.sourceforge.jnlp.runtime.JNLPRuntime; >>>>>> >>>>>> /** >>>>>> @@ -73,7 +74,9 @@ >>>>>> >>>>>> String pathToJavaws = System.getProperty("java.home") + File.separator + "bin" >>>>>> + File.separator + "javaws"; >>>>>> - File cacheFile = CacheUtil.urlToPath(file.getSourceLocation(), "cache"); >>>>>> + String cacheDir = JNLPRuntime.getConfiguration() >>>>>> + .getProperty(DeploymentConfiguration.KEY_USER_CACHE_DIR); >>>>>> + File cacheFile = CacheUtil.urlToPath(file.getSourceLocation(), cacheDir); >>>>>> >>>>>> String fileContents = "[Desktop Entry]\n"; >>>>>> fileContents += "Version=1.0\n"; >>>>>> @@ -131,10 +134,14 @@ >>>>>> * Install this XDesktopEntry into the user's desktop as a launcher >>>>>> */ >>>>>> private void installDesktopLauncher() { >>>>>> - File shortcutFile = new File(JNLPRuntime.TMP_DIR + File.separator >>>>>> - + FileUtils.sanitizeFileName(file.getTitle()) + ".desktop"); >>>>>> + File shortcutFile = new File(JNLPRuntime.getConfiguration() >>>>>> + .getProperty(DeploymentConfiguration.KEY_USER_TMP_DIR) >>>>>> + + File.separator + FileUtils.sanitizeFileName(file.getTitle()) + ".desktop"); >>>>>> try { >>>>>> >>>>>> + if (!shortcutFile.getParentFile().isDirectory()&& !shortcutFile.getParentFile().mkdirs()) { >>>>>> + throw new IOException(shortcutFile.getParentFile().toString()); >>>>>> + } >>>>>> /* >>>>>> * Write out a Java String (UTF-16) as a UTF-8 file >>>>>> */ >>>>>> diff -r 3571cd24829e plugin/icedteanp/java/sun/applet/JavaConsole.java >>>>>> --- a/plugin/icedteanp/java/sun/applet/JavaConsole.java Thu Oct 28 16:18:36 2010 -0400 >>>>>> +++ b/plugin/icedteanp/java/sun/applet/JavaConsole.java Fri Oct 29 11:48:26 2010 -0400 >>>>>> @@ -63,6 +63,9 @@ >>>>>> import javax.swing.border.EmptyBorder; >>>>>> import javax.swing.border.TitledBorder; >>>>>> >>>>>> +import net.sourceforge.jnlp.runtime.DeploymentConfiguration; >>>>>> +import net.sourceforge.jnlp.runtime.JNLPRuntime; >>>>>> + >>>>>> /** >>>>>> * A simple Java console for IcedTeaPlugin >>>>>> * >>>>>> @@ -86,6 +89,8 @@ >>>>>> e.printStackTrace(); >>>>>> } >>>>>> >>>>>> + final String logDir = JNLPRuntime.getConfiguration().getProperty(DeploymentConfiguration.KEY_USER_LOG_DIR); >>>>>> + >>>>>> consoleWindow = new JFrame("Java Console"); >>>>>> >>>>>> JPanel contentPanel = new JPanel(); >>>>>> @@ -104,7 +109,7 @@ >>>>>> stdOutText.setEditable(false); >>>>>> stdOutText.setFont(monoSpace); >>>>>> >>>>>> - TextAreaUpdater stdOutUpdater = new TextAreaUpdater(new File( >>>>>> + TextAreaUpdater stdOutUpdater = new TextAreaUpdater(new File(logDir, >>>>>> PluginMain.PLUGIN_STDOUT_FILE), stdOutText); >>>>>> stdOutUpdater.setName("IcedteaPlugin Console Thread(System.out)"); >>>>>> >>>>>> @@ -117,7 +122,7 @@ >>>>>> stdErrText.setEditable(false); >>>>>> stdErrText.setFont(monoSpace); >>>>>> >>>>>> - TextAreaUpdater stdErrUpdater = new TextAreaUpdater(new File( >>>>>> + TextAreaUpdater stdErrUpdater = new TextAreaUpdater(new File(logDir, >>>>>> PluginMain.PLUGIN_STDERR_FILE), stdErrText); >>>>>> stdErrUpdater.setName("IcedteaPlugin Console Thread(System.err)"); >>>>>> >>>>>> diff -r 3571cd24829e plugin/icedteanp/java/sun/applet/PluginMain.java >>>>>> --- a/plugin/icedteanp/java/sun/applet/PluginMain.java Thu Oct 28 16:18:36 2010 -0400 >>>>>> +++ b/plugin/icedteanp/java/sun/applet/PluginMain.java Fri Oct 29 11:48:26 2010 -0400 >>>>>> @@ -80,6 +80,8 @@ >>>>>> import javax.net.ssl.SSLSocketFactory; >>>>>> import javax.net.ssl.TrustManager; >>>>>> >>>>>> +import net.sourceforge.jnlp.runtime.DeploymentConfiguration; >>>>>> +import net.sourceforge.jnlp.runtime.JNLPRuntime; >>>>>> import net.sourceforge.jnlp.security.VariableX509TrustManager; >>>>>> >>>>>> /** >>>>>> @@ -87,10 +89,9 @@ >>>>>> */ >>>>>> public class PluginMain >>>>>> { >>>>>> - >>>>>> // the files where stdout/stderr are sent to >>>>>> - public static final String PLUGIN_STDERR_FILE = System.getProperty("user.home") + "/.icedteaplugin/java.stderr"; >>>>>> - public static final String PLUGIN_STDOUT_FILE = System.getProperty("user.home") + "/.icedteaplugin/java.stdout"; >>>>>> + public static final String PLUGIN_STDERR_FILE = "java.stderr"; >>>>>> + public static final String PLUGIN_STDOUT_FILE = "java.stdout"; >>>>>> >>>>>> final boolean redirectStreams = System.getenv().containsKey("ICEDTEAPLUGIN_DEBUG"); >>>>>> static PluginStreamHandler streamHandler; >>>>>> @@ -123,16 +124,6 @@ >>>>>> >>>>>> public PluginMain(String inPipe, String outPipe) { >>>>>> >>>>>> - try { >>>>>> - File errFile = new File(PLUGIN_STDERR_FILE); >>>>>> - File outFile = new File(PLUGIN_STDOUT_FILE); >>>>>> - >>>>>> - System.setErr(new TeeOutputStream(new FileOutputStream(errFile), System.err)); >>>>>> - System.setOut(new TeeOutputStream(new FileOutputStream(outFile), System.out)); >>>>>> - } catch (Exception e) { >>>>>> - PluginDebug.debug("Unable to redirect streams"); >>>>>> - e.printStackTrace(); >>>>>> - } >>>>>> >>>>>> connect(inPipe, outPipe); >>>>>> >>>>>> @@ -141,6 +132,20 @@ >>>>>> securityContext.setStreamhandler(streamHandler); >>>>>> AppletSecurityContextManager.addContext(0, securityContext); >>>>>> >>>>>> + String logDir = JNLPRuntime.getConfiguration().getProperty(DeploymentConfiguration.KEY_USER_LOG_DIR); >>>>>> + try { >>>>>> + File errFile = new File(logDir, PLUGIN_STDERR_FILE); >>>>>> + errFile.getParentFile().mkdirs(); >>>>>> + File outFile = new File(logDir, PLUGIN_STDOUT_FILE); >>>>>> + outFile.getParentFile().mkdirs(); >>>>>> + >>>>>> + System.setErr(new TeeOutputStream(new FileOutputStream(errFile), System.err)); >>>>>> + System.setOut(new TeeOutputStream(new FileOutputStream(outFile), System.out)); >>>>>> + } catch (Exception e) { >>>>>> + PluginDebug.debug("Unable to redirect streams"); >>>>>> + e.printStackTrace(); >>>>>> + } >>>>>> + >>>>>> PluginAppletViewer.setStreamhandler(streamHandler); >>>>>> PluginAppletViewer.setPluginCallRequestFactory(new PluginCallRequestFactory()); >>>>>> >>>>> >>>> >> From liuqi at icedtea.classpath.org Mon Nov 1 21:07:09 2010 From: liuqi at icedtea.classpath.org (liuqi at icedtea.classpath.org) Date: Tue, 02 Nov 2010 04:07:09 +0000 Subject: /hg/openjdk6-mips: Added some missing files. Message-ID: changeset a7a1c6bde40a in /hg/openjdk6-mips details: http://icedtea.classpath.org/hg/openjdk6-mips?cmd=changeset;node=a7a1c6bde40a author: Ao Qi date: Tue Nov 02 10:34:12 2010 +0800 Added some missing files. These files are omitted in the previous commit to fix the building complete JRE problem. diffstat: 14 files changed, 800 insertions(+) hotspot/agent/src/share/classes/sun/jvm/hotspot/debugger/dbx/mips/DbxMIPSThread.java | 86 +++++++ hotspot/agent/src/share/classes/sun/jvm/hotspot/debugger/dbx/mips/DbxMIPSThreadContext.java | 46 +++ hotspot/agent/src/share/classes/sun/jvm/hotspot/debugger/dbx/mips/DbxMIPSThreadFactory.java | 44 +++ hotspot/agent/src/share/classes/sun/jvm/hotspot/debugger/linux/mips/LinuxMIPSCFrame.java | 75 ++++++ hotspot/agent/src/share/classes/sun/jvm/hotspot/debugger/linux/mips/LinuxMIPSThreadContext.java | 46 +++ hotspot/agent/src/share/classes/sun/jvm/hotspot/debugger/mips/MIPSThreadContext.java | 118 ++++++++++ hotspot/agent/src/share/classes/sun/jvm/hotspot/debugger/proc/mips/ProcMIPSThread.java | 91 +++++++ hotspot/agent/src/share/classes/sun/jvm/hotspot/debugger/proc/mips/ProcMIPSThreadContext.java | 46 +++ hotspot/agent/src/share/classes/sun/jvm/hotspot/debugger/proc/mips/ProcMIPSThreadFactory.java | 44 +++ hotspot/agent/src/share/classes/sun/jvm/hotspot/debugger/remote/mips/RemoteMIPSThread.java | 53 ++++ hotspot/agent/src/share/classes/sun/jvm/hotspot/debugger/remote/mips/RemoteMIPSThreadContext.java | 50 ++++ hotspot/agent/src/share/classes/sun/jvm/hotspot/debugger/remote/mips/RemoteMIPSThreadFactory.java | 44 +++ hotspot/make/linux/makefiles/mipsel.make | 42 +++ hotspot/make/linux/platform_mipsel | 15 + diffs (truncated from 856 to 500 lines): diff -r d0a60cd6d61c -r a7a1c6bde40a hotspot/agent/src/share/classes/sun/jvm/hotspot/debugger/dbx/mips/DbxMIPSThread.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/hotspot/agent/src/share/classes/sun/jvm/hotspot/debugger/dbx/mips/DbxMIPSThread.java Tue Nov 02 10:34:12 2010 +0800 @@ -0,0 +1,86 @@ +/* + * Copyright 2010 Lemote, Inc. All Rights Reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, + * CA 95054 USA or visit www.sun.com if you need additional information or + * have any questions. + * + */ + +package sun.jvm.hotspot.debugger.dbx.mips; + +import sun.jvm.hotspot.debugger.*; +import sun.jvm.hotspot.debugger.mips.*; +import sun.jvm.hotspot.debugger.dbx.*; +import sun.jvm.hotspot.utilities.*; + +public class DbxMIPSThread implements ThreadProxy { + private DbxDebugger debugger; + private int id; + + public DbxMIPSThread(DbxDebugger debugger, Address addr) { + this.debugger = debugger; + + // FIXME: the size here should be configurable. However, making it + // so would produce a dependency on the "types" package from the + // debugger package, which is not desired. + this.id = (int) addr.getCIntegerAt(0, 4, true); + } + + public DbxMIPSThread(DbxDebugger debugger, long id) { + this.debugger = debugger; + this.id = (int) id; + } + + public boolean equals(Object obj) { + if ((obj == null) || !(obj instanceof DbxMIPSThread)) { + return false; + } + + return (((DbxMIPSThread) obj).id == id); + } + + public int hashCode() { + return id; + } + + public ThreadContext getContext() throws IllegalThreadStateException { + DbxMIPSThreadContext context = new DbxMIPSThreadContext(debugger); + long[] regs = debugger.getThreadIntegerRegisterSet(id); + if (Assert.ASSERTS_ENABLED) { + Assert.that(regs.length == 19, "unknown size of register set -- adjust this code"); + } + for (int i = 0; i < regs.length; i++) { + context.setRegister(i, regs[i]); + } + return context; + } + + public boolean canSetContext() throws DebuggerException { + return false; + } + + public void setContext(ThreadContext context) + throws IllegalThreadStateException, DebuggerException { + throw new DebuggerException("Unimplemented"); + } + + public String toString() { + return "t@" + id; + } +} diff -r d0a60cd6d61c -r a7a1c6bde40a hotspot/agent/src/share/classes/sun/jvm/hotspot/debugger/dbx/mips/DbxMIPSThreadContext.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/hotspot/agent/src/share/classes/sun/jvm/hotspot/debugger/dbx/mips/DbxMIPSThreadContext.java Tue Nov 02 10:34:12 2010 +0800 @@ -0,0 +1,46 @@ +/* + * Copyright 2010 Lemote, Inc. All Rights Reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, + * CA 95054 USA or visit www.sun.com if you need additional information or + * have any questions. + * + */ + +package sun.jvm.hotspot.debugger.dbx.mips; + +import sun.jvm.hotspot.debugger.*; +import sun.jvm.hotspot.debugger.mips.*; +import sun.jvm.hotspot.debugger.dbx.*; + +public class DbxMIPSThreadContext extends MIPSThreadContext { + private DbxDebugger debugger; + + public DbxMIPSThreadContext(DbxDebugger debugger) { + super(); + this.debugger = debugger; + } + + public void setRegisterAsAddress(int index, Address value) { + setRegister(index, debugger.getAddressValue(value)); + } + + public Address getRegisterAsAddress(int index) { + return debugger.newAddress(getRegister(index)); + } +} diff -r d0a60cd6d61c -r a7a1c6bde40a hotspot/agent/src/share/classes/sun/jvm/hotspot/debugger/dbx/mips/DbxMIPSThreadFactory.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/hotspot/agent/src/share/classes/sun/jvm/hotspot/debugger/dbx/mips/DbxMIPSThreadFactory.java Tue Nov 02 10:34:12 2010 +0800 @@ -0,0 +1,44 @@ +/* + * Copyright 2010 Lemote, Inc. All Rights Reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, + * CA 95054 USA or visit www.sun.com if you need additional information or + * have any questions. + * + */ + +package sun.jvm.hotspot.debugger.dbx.mips; + +import sun.jvm.hotspot.debugger.*; +import sun.jvm.hotspot.debugger.dbx.*; + +public class DbxMIPSThreadFactory implements DbxThreadFactory { + private DbxDebugger debugger; + + public DbxMIPSThreadFactory(DbxDebugger debugger) { + this.debugger = debugger; + } + + public ThreadProxy createThreadWrapper(Address threadIdentifierAddr) { + return new DbxMIPSThread(debugger, threadIdentifierAddr); + } + + public ThreadProxy createThreadWrapper(long id) { + return new DbxMIPSThread(debugger, id); + } +} diff -r d0a60cd6d61c -r a7a1c6bde40a hotspot/agent/src/share/classes/sun/jvm/hotspot/debugger/linux/mips/LinuxMIPSCFrame.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/hotspot/agent/src/share/classes/sun/jvm/hotspot/debugger/linux/mips/LinuxMIPSCFrame.java Tue Nov 02 10:34:12 2010 +0800 @@ -0,0 +1,75 @@ +/* + * Copyright 2010 Lemote, Inc. All Rights Reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, + * CA 95054 USA or visit www.sun.com if you need additional information or + * have any questions. + * + */ + +package sun.jvm.hotspot.debugger.linux.mips; + +import sun.jvm.hotspot.debugger.*; +import sun.jvm.hotspot.debugger.linux.*; +import sun.jvm.hotspot.debugger.cdbg.*; +import sun.jvm.hotspot.debugger.cdbg.basic.*; + +final public class LinuxMIPSCFrame extends BasicCFrame { + // package/class internals only + public LinuxMIPSCFrame(LinuxDebugger dbg, Address ebp, Address pc) { + super(dbg.getCDebugger()); + this.ebp = ebp; + this.pc = pc; + this.dbg = dbg; + } + + // override base class impl to avoid ELF parsing + public ClosestSymbol closestSymbolToPC() { + // try native lookup in debugger. + return dbg.lookup(dbg.getAddressValue(pc())); + } + + public Address pc() { + return pc; + } + + public Address localVariableBase() { + return ebp; + } + + public CFrame sender() { + if (ebp == null) { + return null; + } + + Address nextEBP = ebp.getAddressAt( 0 * ADDRESS_SIZE); + if (nextEBP == null) { + return null; + } + Address nextPC = ebp.getAddressAt( 1 * ADDRESS_SIZE); + if (nextPC == null) { + return null; + } + return new LinuxMIPSCFrame(dbg, nextEBP, nextPC); + } + + private static final int ADDRESS_SIZE = 4; + private Address pc; + private Address ebp; + private LinuxDebugger dbg; +} diff -r d0a60cd6d61c -r a7a1c6bde40a hotspot/agent/src/share/classes/sun/jvm/hotspot/debugger/linux/mips/LinuxMIPSThreadContext.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/hotspot/agent/src/share/classes/sun/jvm/hotspot/debugger/linux/mips/LinuxMIPSThreadContext.java Tue Nov 02 10:34:12 2010 +0800 @@ -0,0 +1,46 @@ +/* + * Copyright 2010 Lemote, Inc. All Rights Reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, + * CA 95054 USA or visit www.sun.com if you need additional information or + * have any questions. + * + */ + +package sun.jvm.hotspot.debugger.linux.mips; + +import sun.jvm.hotspot.debugger.*; +import sun.jvm.hotspot.debugger.mips.*; +import sun.jvm.hotspot.debugger.linux.*; + +public class LinuxMIPSThreadContext extends MIPSThreadContext { + private LinuxDebugger debugger; + + public LinuxMIPSThreadContext(LinuxDebugger debugger) { + super(); + this.debugger = debugger; + } + + public void setRegisterAsAddress(int index, Address value) { + setRegister(index, debugger.getAddressValue(value)); + } + + public Address getRegisterAsAddress(int index) { + return debugger.newAddress(getRegister(index)); + } +} diff -r d0a60cd6d61c -r a7a1c6bde40a hotspot/agent/src/share/classes/sun/jvm/hotspot/debugger/mips/MIPSThreadContext.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/hotspot/agent/src/share/classes/sun/jvm/hotspot/debugger/mips/MIPSThreadContext.java Tue Nov 02 10:34:12 2010 +0800 @@ -0,0 +1,118 @@ +/* + * Copyright 2010 Lemote, Inc. All Rights Reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, + * CA 95054 USA or visit www.sun.com if you need additional information or + * have any questions. + * + */ + +package sun.jvm.hotspot.debugger.mips; + +import sun.jvm.hotspot.debugger.*; + +/** Specifies the thread context on x86 platforms; only a sub-portion + of the context is guaranteed to be present on all operating + systems. */ + +public abstract class MIPSThreadContext implements ThreadContext { + // Taken from /usr/include/ia32/sys/reg.h on Solaris/x86 + + // NOTE: the indices for the various registers must be maintained as + // listed across various operating systems. However, only a small + // subset of the registers' values are guaranteed to be present (and + // must be present for the SA's stack walking to work): EAX, EBX, + // ECX, EDX, ESI, EDI, EBP, ESP, and EIP. + + public static final int ZERO = 0; + public static final int AT = 1; + public static final int V0 = 2; + public static final int V1 = 3; + public static final int A0 = 4; + public static final int A1 = 5; + public static final int A2 = 6; + public static final int A3 = 7; + public static final int T0 = 8; + public static final int T1 = 9; + public static final int T2 = 10; + public static final int T3 = 11; + public static final int T4 = 12; + public static final int T5 = 13; + public static final int T6 = 14; + public static final int T7 = 15; + public static final int S0 = 16; + public static final int S1 = 17; + public static final int S2 = 18; + public static final int S3 = 19; + public static final int S4 = 20; + public static final int S5 = 21; + public static final int S6 = 22; + public static final int S7 = 23; + public static final int T8 = 24; + public static final int T9 = 25; + public static final int K0 = 26; + public static final int K1 = 27; + public static final int GP = 28; + public static final int SP = 29; + public static final int FP = 30; + public static final int RA = 31; + + + + private static final String[] regNames = { + "ZERO", "AT", "V0", "V1", + "A0", "A1", "A2", "A3", + "T0", "T1", "T2", "T3", + "T4", "T5", "T6", "T7", + "S0", "S1", "S2", "S3", + "S4", "S5", "S6", "S7", + "T8", "T9", "K0", "K1" + "GP", "SP", "FP", "RA" + }; + + // Ought to be int on x86 but we're stuck + private long[] data; + + public MIPSThreadContext() { + data = new long[NPRGREG]; + } + + public int getNumRegisters() { + return NPRGREG; + } + + public String getRegisterName(int index) { + return regNames[index]; + } + + public void setRegister(int index, long value) { + data[index] = value; + } + + public long getRegister(int index) { + return data[index]; + } + + /** This can't be implemented in this class since we would have to + tie the implementation to, for example, the debugging system */ + public abstract void setRegisterAsAddress(int index, Address value); + + /** This can't be implemented in this class since we would have to + tie the implementation to, for example, the debugging system */ + public abstract Address getRegisterAsAddress(int index); +} diff -r d0a60cd6d61c -r a7a1c6bde40a hotspot/agent/src/share/classes/sun/jvm/hotspot/debugger/proc/mips/ProcMIPSThread.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/hotspot/agent/src/share/classes/sun/jvm/hotspot/debugger/proc/mips/ProcMIPSThread.java Tue Nov 02 10:34:12 2010 +0800 @@ -0,0 +1,91 @@ +/* + * Copyright 2010 Lemote, Inc. All Rights Reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, + * CA 95054 USA or visit www.sun.com if you need additional information or + * have any questions. + * + */ + +package sun.jvm.hotspot.debugger.proc.mips; + +import sun.jvm.hotspot.debugger.*; +import sun.jvm.hotspot.debugger.mips.*; +import sun.jvm.hotspot.debugger.proc.*; +import sun.jvm.hotspot.utilities.*; + +public class ProcMIPSThread implements ThreadProxy { + private ProcDebugger debugger; + private int id; + + public ProcMIPSThread(ProcDebugger debugger, Address addr) { + this.debugger = debugger; + + // FIXME: the size here should be configurable. However, making it + // so would produce a dependency on the "types" package from the + // debugger package, which is not desired. + this.id = (int) addr.getCIntegerAt(0, 4, true); + } + + public ProcMIPSThread(ProcDebugger debugger, long id) { + this.debugger = debugger; + this.id = (int) id; + } + + public ThreadContext getContext() throws IllegalThreadStateException { + ProcMIPSThreadContext context = new ProcMIPSThreadContext(debugger); + long[] regs = debugger.getThreadIntegerRegisterSet(id); + /* + _NGREG in reg.h is defined to be 19. Because we have included + debug registers MIPSThreadContext.NPRGREG is 25. + */ + From ptisnovs at icedtea.classpath.org Tue Nov 2 03:39:56 2010 From: ptisnovs at icedtea.classpath.org (ptisnovs at icedtea.classpath.org) Date: Tue, 02 Nov 2010 10:39:56 +0000 Subject: /hg/icedtea6: Added new regression test for check if all non-Lat... Message-ID: changeset 2210c22d3fff in /hg/icedtea6 details: http://icedtea.classpath.org/hg/icedtea6?cmd=changeset;node=2210c22d3fff author: ptisnovs date: Tue Nov 02 10:44:52 2010 +0100 Added new regression test for check if all non-Latin fonts are installed and properly configured. diffstat: 3 files changed, 207 insertions(+), 2 deletions(-) ChangeLog | 9 + Makefile.am | 5 patches/icedtea-jtreg-international-fonts.patch | 195 +++++++++++++++++++++++ diffs (230 lines): diff -r 0bfb4898c039 -r 2210c22d3fff ChangeLog --- a/ChangeLog Wed Oct 20 14:45:55 2010 +0100 +++ b/ChangeLog Tue Nov 02 10:44:52 2010 +0100 @@ -1,3 +1,12 @@ 2010-10-19 Andrew John Hughes + + * Makefile.am: + * patches/icedtea-jtreg-international-fonts.patch: + Added new regression test + patches/icedtea-jtreg-international-fonts.patch + for checking if all non-Latin fonts are installed + and properly configured. + 2010-10-19 Andrew John Hughes * INSTALL: Clarify HotSpot build documentation. diff -r 0bfb4898c039 -r 2210c22d3fff Makefile.am --- a/Makefile.am Wed Oct 20 14:45:55 2010 +0100 +++ b/Makefile.am Tue Nov 02 10:44:52 2010 +0100 @@ -291,8 +291,9 @@ ICEDTEA_PATCHES = \ patches/numa_on_early_glibc.patch \ patches/icedtea-shark-build.patch \ patches/openjdk/6985992-test_6933784.patch \ - patches/openjdk/6853592-badwindow-warning-fix.patch \ - patches/6703377-freetypescaler.patch + patches/openjdk/6853592-badwindow-warning-fix.patch \ + patches/6703377-freetypescaler.patch \ + patches/icedtea-jtreg-international-fonts.patch if !WITH_ALT_HSBUILD ICEDTEA_PATCHES += \ diff -r 0bfb4898c039 -r 2210c22d3fff patches/icedtea-jtreg-international-fonts.patch --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/patches/icedtea-jtreg-international-fonts.patch Tue Nov 02 10:44:52 2010 +0100 @@ -0,0 +1,195 @@ +--- /dev/null 2010-06-29 14:56:30.329576932 +0200 ++++ openjdk/jdk/test/java/awt/font/InternationalFonts/InternationalFontsRendering.java 2010-11-01 11:27:46.000000000 +0100 +@@ -0,0 +1,192 @@ ++import java.awt.Color; ++import java.awt.Font; ++import java.awt.Graphics2D; ++import java.awt.RenderingHints; ++import java.awt.image.BufferedImage; ++import java.io.File; ++import java.io.IOException; ++import java.util.Arrays; ++import java.util.List; ++import java.util.ArrayList; ++ ++import javax.imageio.ImageIO; ++ ++/** ++ * @test ++ * @run main InternationalFontsRendering ++ * @author Pavel Tisnovsky ++ * ++ * @summary This test check if all required fonts are properly installed and configured. ++ * ++ * This regression test checks if all required fonts are properly installed and ++ * that .src.properties font configuration is correct. The test is based on ++ * rendering certain characters from selected code pages into BufferedImage. ++ * ++ * When the font does not exists or font configuration is broken, only empty ++ * rectangle is rendered instead of the selected character shape. This rectangle ++ * is filtered and then the destination image is tested whether it is empty ++ * (=white). ++ * ++ * If test images with rendered characters needs to be created use following flag: ++ * -create-images ++ * ++ * regression for bug: https://bugzilla.redhat.com/show_bug.cgi?id=643674 ++ * (Bug 643674 Misconfigured Path for Asian Font) ++ * ++ */ ++public class InternationalFontsRendering ++{ ++ private static int WIDTH = 200; ++ private static int HEIGHT = 200; ++ ++ private static final int FONT_SIZE = 160; ++ ++ private static final int MINIMUM_HORIZONTAL_LINE_LENGTH = 70; ++ private static final int MINIMUM_VERTICAL_LINE_LENGTH = 80; ++ private static final int BLACK_WHITE_THRESHOLD = 128; ++ private static final int BLACK_PIXEL_COUNT_THRESHOLD = WIDTH * HEIGHT / 1000; ++ ++ private static final String[][] testedStrings = { ++ {"Latin-1", "abcdefABCDEF"}, ++ {"Latin-2", "??????????????????????????"}, ++ {"Cyrilic", "??????????????????"}, ++ {"Greek", "????????????????????????????????"}, ++ {"Asia-Test1", "???????????????"}, ++ {"Asia-Test2", "??????????????????"}, ++ {"Asia-Test3", "???????????????"}, ++ {"Asia-Test4", "???????????????"}, ++ }; ++ ++ /** ++ * Creates test image a renders one big character to it. ++ * @param testedString ++ * @return ++ */ ++ private BufferedImage createTestImage(String str) { ++ BufferedImage image = new BufferedImage(WIDTH, HEIGHT, BufferedImage.TYPE_BYTE_GRAY); ++ Graphics2D gc = image.createGraphics(); ++ gc.setBackground(Color.WHITE); ++ gc.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_OFF); ++ gc.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING, RenderingHints.VALUE_TEXT_ANTIALIAS_OFF); ++ gc.clearRect(0, 0, WIDTH, HEIGHT); ++ gc.setFont(new Font(Font.DIALOG, Font.PLAIN, FONT_SIZE)); ++ gc.setColor(Color.BLACK); ++ gc.drawString(str, 0, HEIGHT - 40); ++ gc.dispose(); ++ return image; ++ } ++ ++ /** ++ * Creates destination image and then copies data from source image to it ++ * @param src ++ * @return ++ */ ++ private BufferedImage createDestinationImage(BufferedImage src) { ++ BufferedImage image = new BufferedImage(WIDTH, HEIGHT, BufferedImage.TYPE_BYTE_GRAY); ++ src.copyData(image.getRaster()); ++ return image; ++ } ++ ++ /** ++ * Removes long horizontal lines from image ++ */ ++ private void removeHorizontalLines(BufferedImage image) { ++ for (int y = 0; y < image.getHeight(); y++) { ++ int startX = -1, endX = -1; ++ for (int x = 0; x < image.getWidth(); x++) { ++ int color = image.getRaster().getSample(x, y, 0); ++ if (startX < 0 && color <= BLACK_WHITE_THRESHOLD) { ++ startX = x; ++ //System.out.println("> " + y + "\t" + x); ++ } ++ if (startX > 0 && endX < 0 && color > BLACK_WHITE_THRESHOLD) { ++ endX = x; ++ //System.out.println("< " + y + "\t" + x); ++ } ++ } ++ // remove long horizontal line, but only if this line found detected in image ++ if (startX > 0 && endX > 0 && (endX - startX) > MINIMUM_HORIZONTAL_LINE_LENGTH) { ++ for (int x = startX; x < endX; x++) { ++ image.getRaster().setSample(x, y, 0, 255); ++ } ++ } ++ } ++ } ++ ++ /** ++ * Removes long vertical lines from image ++ */ ++ private void removeVerticalLines(BufferedImage image) { ++ for (int x = 0; x < image.getWidth(); x++) { ++ int startY = -1, endY = -1; ++ for (int y = 0; y < image.getHeight(); y++) { ++ int color = image.getRaster().getSample(x, y, 0); ++ if (startY < 0 && color <= BLACK_WHITE_THRESHOLD) { ++ startY = y; ++ } ++ if (startY > 0 && endY < 0 && color > BLACK_WHITE_THRESHOLD) { ++ endY = y; ++ //System.out.println("< " + y + "\t" + x); ++ } ++ } ++ // remove long vertical line, but only if this line found detected in image ++ if (startY > 0 && endY > 0 && (endY - startY) > MINIMUM_VERTICAL_LINE_LENGTH) { ++ for (int y = startY; y < endY; y++) { ++ image.getRaster().setSample(x, y, 0, 255); ++ } ++ } ++ } ++ } ++ ++ /** ++ * Test if image is almost empty (one large white area) ++ * @param image ++ * @return ++ */ ++ private boolean isImageAlmostEmpty(BufferedImage image) { ++ int blackPixelCount = 0; ++ for (int y = 0; y < image.getHeight(); y++) { ++ for (int x = 0; x < image.getWidth(); x++) { ++ if (image.getRaster().getSample(x, y, 0) < BLACK_WHITE_THRESHOLD) { ++ blackPixelCount++; ++ } ++ } ++ } ++ return blackPixelCount < BLACK_PIXEL_COUNT_THRESHOLD; ++ } ++ ++ public void runTest(boolean createImages) throws IOException ++ { ++ List badCharacters = new ArrayList(); ++ for (String[] testedString : testedStrings) { ++ System.out.println("\nTesting " + testedString[0]); ++ for (int i = 0; i < testedString[1].length(); i++) { ++ String str = testedString[1].substring(i, 1+i); ++ int code = str.charAt(0); ++ System.out.print(code + "\t"); ++ BufferedImage src = createTestImage(str); ++ BufferedImage dst = createDestinationImage(src); ++ removeHorizontalLines(dst); ++ removeVerticalLines(dst); ++ ++ if (createImages /* || true*/) { ++ ImageIO.write(src, "png", new File(code + "_src.png")); ++ ImageIO.write(dst, "png", new File(code + "_dst.png")); ++ } ++ ++ if (isImageAlmostEmpty(dst)) { ++ System.err.println("Bad rendering of character with code: " + code); ++ badCharacters.add(Integer.valueOf(code)); ++ } ++ } ++ } ++ if (!badCharacters.isEmpty()) { ++ throw new RuntimeException("Error in rendering of character(s) with code(s): " + badCharacters.toString()); ++ } ++ } ++ ++ public static void main(String[] args) throws IOException { ++ new InternationalFontsRendering().runTest(Arrays.asList(args).contains("-create-images")); ++ } ++} ++ From bugzilla-daemon at icedtea.classpath.org Tue Nov 2 07:23:37 2010 From: bugzilla-daemon at icedtea.classpath.org (bugzilla-daemon at icedtea.classpath.org) Date: Tue, 02 Nov 2010 14:23:37 +0000 Subject: [Bug 584] New: ARM Zero c++ interpreter freecol crash using -Xincgc Message-ID: http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=584 Summary: ARM Zero c++ interpreter freecol crash using -Xincgc Product: IcedTea Version: 6-1.9 Platform: all OS/Version: Linux Status: NEW Severity: normal Priority: P2 Component: Zero AssignedTo: unassigned at icedtea.classpath.org ReportedBy: xerxes at zafena.se testcase: install freecol package under ubuntu 10.10 armel run freecol start new game crash happens before the "world map" are displayed. workaround: edit /usr/games/freecol and remove -Xincgc JVM option java -version: java version "1.6.0_20" OpenJDK Runtime Environment (IcedTea6 1.9) (6b20-1.9-0ubuntu1) OpenJDK Zero VM (build 17.0-b16, interpreted mode) freecol version: 0.9.2+dfsg-2_all triage: i have currently only been able to reproduce this bug on ubuntu armel systems Gdb backtrace indicating some sort of stack corruption: 1. (gdb) run 2. Starting program: /media/flap/java/22okt-zero-cacao/bin/java -classpath :/usr/share/java/miglayout.jar:/usr/share/java/wstx-lgpl.jar:/usr/share/java/freecol.jar:/usr/share/java/cortado.jar:/usr/share/java/commons-cli.jar -Djava.net.preferIPv4Stack=true -Xincgc -Xmx180M net.sf.freecol.FreeCol --freecol-data /usr/share/games/freecol 3. [Thread debugging using libthread_db enabled] 4. process 8686 is executing new program: /media/flap/java/22okt-zero-cacao/bin/java 5. [Thread debugging using libthread_db enabled] 6. [New Thread 0x4068f470 (LWP 8689)] 7. [New Thread 0x42847470 (LWP 8690)] 8. [New Thread 0x428c7470 (LWP 8691)] 9. [New Thread 0x52955470 (LWP 8692)] 10. [New Thread 0x52b96470 (LWP 8693)] 11. [New Thread 0x52d16470 (LWP 8694)] 12. [New Thread 0x52e96470 (LWP 8695)] 13. [New Thread 0x53336470 (LWP 8696)] 14. [New Thread 0x534b6470 (LWP 8697)] 15. [New Thread 0x53636470 (LWP 8698)] 16. [New Thread 0x536b6470 (LWP 8699)] 17. [New Thread 0x53b8e470 (LWP 8700)] 18. [New Thread 0x53e53470 (LWP 8701)] 19. [New Thread 0x53fd3470 (LWP 8702)] 20. [New Thread 0x54153470 (LWP 8705)] 21. 22. Program received signal SIGSEGV, Segmentation fault. 23. [Switching to Thread 0x4068f470 (LWP 8689)] 24. BytecodeInterpreter::run (istate=0x4068e5b8) 25. at /media/flap/openjdk-6-6b20-1.9/build/openjdk/hotspot/src/share/vm/interpreter/bytecodeInterpreter.cpp:1601 26. 1601 SET_STACK_INT(ary->length(), -1); 27. (gdb) bt 28. #0 BytecodeInterpreter::run (istate=0x4068e5b8) 29. at /media/flap/openjdk-6-6b20-1.9/build/openjdk/hotspot/src/share/vm/interpreter/bytecodeInterpreter.cpp:1601 30. #1 0x40258146 in CppInterpreter::main_loop (recurse=, __the_thread__=0x1dc10) 31. at /media/flap/openjdk-6-6b20-1.9/build/openjdk/hotspot/src/cpu/zero/vm/cppInterpreter_zero.cpp:81 32. #2 0x40258c50 in CppInterpreter::normal_entry (method=, UNUSED=, 33. __the_thread__=0x1dc10) 34. at /media/flap/openjdk-6-6b20-1.9/build/openjdk/hotspot/src/cpu/zero/vm/cppInterpreter_zero.cpp:48 35. #3 0x40258166 in invoke (recurse=, __the_thread__=0x1dc10) 36. at /media/flap/openjdk-6-6b20-1.9/build/openjdk/hotspot/src/cpu/zero/vm/entry_zero.hpp:56 37. #4 invoke_method (recurse=, __the_thread__=0x1dc10) 38. at /media/flap/openjdk-6-6b20-1.9/build/openjdk/hotspot/src/cpu/zero/vm/interpreter_zero.hpp:28 39. #5 CppInterpreter::main_loop (recurse=, __the_thread__=0x1dc10) 40. at /media/flap/openjdk-6-6b20-1.9/build/openjdk/hotspot/src/cpu/zero/vm/cppInterpreter_zero.cpp:95 41. #6 0x40258c50 in CppInterpreter::normal_entry (method=, UNUSED=, 42. __the_thread__=0x1dc10) 43. at /media/flap/openjdk-6-6b20-1.9/build/openjdk/hotspot/src/cpu/zero/vm/cppInterpreter_zero.cpp:48 44. #7 0x40258166 in invoke (recurse=, __the_thread__=0x1dc10) 45. at /media/flap/openjdk-6-6b20-1.9/build/openjdk/hotspot/src/cpu/zero/vm/entry_zero.hpp:56 46. #8 invoke_method (recurse=, __the_thread__=0x1dc10) 47. at /media/flap/openjdk-6-6b20-1.9/build/openjdk/hotspot/src/cpu/zero/vm/interpreter_zero.hpp:28 48. #9 CppInterpreter::main_loop (recurse=, __the_thread__=0x1dc10) 49. at /media/flap/openjdk-6-6b20-1.9/build/openjdk/hotspot/src/cpu/zero/vm/cppInterpreter_zero.cpp:95 50. #10 0x40258c50 in CppInterpreter::normal_entry (method=, UNUSED=, 51. __the_thread__=0x1dc10) 52. at /media/flap/openjdk-6-6b20-1.9/build/openjdk/hotspot/src/cpu/zero/vm/cppInterpreter_zero.cpp:48 53. #11 0x40258166 in invoke (recurse=, __the_thread__=0x1dc10) 54. at /media/flap/openjdk-6-6b20-1.9/build/openjdk/hotspot/src/cpu/zero/vm/entry_zero.hpp:56 55. #12 invoke_method (recurse=, __the_thread__=0x1dc10) 56. at /media/flap/openjdk-6-6b20-1.9/build/openjdk/hotspot/src/cpu/zero/vm/interpreter_zero.hpp:28 57. #13 CppInterpreter::main_loop (recurse=, __the_thread__=0x1dc10) 58. at /media/flap/openjdk-6-6b20-1.9/build/openjdk/hotspot/src/cpu/zero/vm/cppInterpreter_zero.cpp:95 59. #14 0x40258c50 in CppInterpreter::normal_entry (method=, UNUSED=, 60. __the_thread__=0x1dc10) 61. at /media/flap/openjdk-6-6b20-1.9/build/openjdk/hotspot/src/cpu/zero/vm/cppInterpreter_zero.cpp:48 62. #15 0x40258166 in invoke (recurse=, __the_thread__=0x1dc10) 63. at /media/flap/openjdk-6-6b20-1.9/build/openjdk/hotspot/src/cpu/zero/vm/entry_zero.hpp:56 64. #16 invoke_method (recurse=, __the_thread__=0x1dc10) 65. at /media/flap/openjdk-6-6b20-1.9/build/openjdk/hotspot/src/cpu/zero/vm/interpreter_zero.hpp:28 66. #17 CppInterpreter::main_loop (recurse=, __the_thread__=0x1dc10) 67. at /media/flap/openjdk-6-6b20-1.9/build/openjdk/hotspot/src/cpu/zero/vm/cppInterpreter_zero.cpp:95 68. #18 0x40258c50 in CppInterpreter::normal_entry (method=, UNUSED=, 69. __the_thread__=0x1dc10) 70. at /media/flap/openjdk-6-6b20-1.9/build/openjdk/hotspot/src/cpu/zero/vm/cppInterpreter_zero.cpp:48 71. #19 0x40258166 in invoke (recurse=, __the_thread__=0x1dc10) 72. at /media/flap/openjdk-6-6b20-1.9/build/openjdk/hotspot/src/cpu/zero/vm/entry_zero.hpp:56 73. #20 invoke_method (recurse=, __the_thread__=0x1dc10) 74. at /media/flap/openjdk-6-6b20-1.9/build/openjdk/hotspot/src/cpu/zero/vm/interpreter_zero.hpp:28 75. #21 CppInterpreter::main_loop (recurse=, __the_thread__=0x1dc10) 76. at /media/flap/openjdk-6-6b20-1.9/build/openjdk/hotspot/src/cpu/zero/vm/cppInterpreter_zero.cpp:95 77. #22 0x40258c50 in CppInterpreter::normal_entry (method=, UNUSED=, 78. __the_thread__=0x1dc10) 79. at /media/flap/openjdk-6-6b20-1.9/build/openjdk/hotspot/src/cpu/zero/vm/cppInterpreter_zero.cpp:48 80. #23 0x403dd788 in invoke (call_wrapper=0x405d2018, result=, result_type=, 81. method=0x4dcdb528, 82. entry_point=0x40748140 "!\214%@!\214%@a\214%@\241\214%@!\214%@!\214%@!\214%@!\214%@!\214%@!\214%@!\214%@\001\206%@\001\206%@", parameters=0x405d20d0, parameter_words=2, __the_thread__=0x1dc10) 83. at /media/flap/openjdk-6-6b20-1.9/build/openjdk/hotspot/src/cpu/zero/vm/entry_zero.hpp:56 84. #24 invoke_method (call_wrapper=0x405d2018, result=, result_type=, 85. method=0x4dcdb528, 86. entry_point=0x40748140 "!\214%@!\214%@a\214%@\241\214%@!\214%@!\214%@!\214%@!\214%@!\214%@!\214%@!\214%@\001\206%@\001\206%@", parameters=0x405d20d0, parameter_words=2, __the_thread__=0x1dc10) 87. at /media/flap/openjdk-6-6b20-1.9/build/openjdk/hotspot/src/cpu/zero/vm/interpreter_zero.hpp:28 88. #25 StubGenerator::call_stub (call_wrapper=0x405d2018, result=, result_type=, 89. method=0x4dcdb528, 90. entry_point=0x40748140 "!\214%@!\214%@a\214%@\241\214%@!\214%@!\214%@!\214%@!\214%@!\214%@!\214%@!\214%@\001\206%@\001\206%@", parameters=0x405d20d0, parameter_words=2, __the_thread__=0x1dc10) 91. at /media/flap/openjdk-6-6b20-1.9/build/openjdk/hotspot/src/cpu/zero/vm/stubGenerator_zero.cpp:68 92. #26 0x402cf856 in JavaCalls::call_helper (result=0x405d21d8, m=, args=0x405d20cc, 93. __the_thread__=0x1dc10) at /media/flap/openjdk-6-6b20-1.9/build/openjdk/hotspot/src/share/vm/runtime/javaCalls.cpp:387 94. #27 0x40391b5e in os::os_exception_wrapper (f=0xfffb0e64, value=, method=, 95. args=, thread=0x1dc10) 96. at /media/flap/openjdk-6-6b20-1.9/build/openjdk/hotspot/src/os/linux/vm/os_linux.cpp:4048 97. #28 0x402cecd6 in JavaCalls::call (result=0x402cecd7, method=..., args=0x405d20cc, __the_thread__=) 98. at /media/flap/openjdk-6-6b20-1.9/build/openjdk/hotspot/src/share/vm/runtime/javaCalls.cpp:293 99. #29 0x402da5e6 in jni_invoke_nonstatic (env=, result=0x405d21d8, receiver=, 100. call_type=, method_id=0xe7048, args=0x405d21bc, __the_thread__=0x1dc10) 101. at /media/flap/openjdk-6-6b20-1.9/build/openjdk/hotspot/src/share/vm/prims/jni.cpp:1093 102. #30 0x402e1bd2 in jni_CallObjectMethod (env=0x1dd28, obj=0xea2c0, methodID=0xe7048) 103. at /media/flap/openjdk-6-6b20-1.9/build/openjdk/hotspot/src/share/vm/prims/jni.cpp:1350 104. #31 0x406c2ff2 in JNU_GetStringPlatformChars (env=0x1dd28, jstr=, isCopy=) 105. at ../../../src/share/native/common/jni_util.c:791 106. #32 0x406c6952 in Java_java_io_UnixFileSystem_getBooleanAttributes0 (env=0x1dd28, this=, 107. file=) at ../../../src/solaris/native/java/io/UnixFileSystem_md.c:177 108. #33 0x40428b40 in ffi_call_SYSV () from /media/flap/java/22okt-zero-cacao/jre/lib/arm/server/libjvm.so 109. #34 0x404289ec in ffi_call () from /media/flap/java/22okt-zero-cacao/jre/lib/arm/server/libjvm.so 110. #35 0x404289ec in ffi_call () from /media/flap/java/22okt-zero-cacao/jre/lib/arm/server/libjvm.so 111. Backtrace stopped: previous frame identical to this frame (corrupt stack?) 112. (gdb) list 113. 1596 114. 1597 CASE(_arraylength): 115. 1598 { 116. 1599 arrayOop ary = (arrayOop) STACK_OBJECT(-1); 117. 1600 CHECK_NULL(ary); 118. 1601 SET_STACK_INT(ary->length(), -1); 119. 1602 UPDATE_PC_AND_CONTINUE(1); 120. 1603 } 121. 1604 122. 1605 /* monitorenter and monitorexit for locking/unlocking an object */ 123. (gdb) ary= 0x20 -- Configure bugmail: http://icedtea.classpath.org/bugzilla/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are the assignee for the bug, or are watching the assignee. From dbhole at redhat.com Tue Nov 2 13:09:05 2010 From: dbhole at redhat.com (Deepak Bhole) Date: Tue, 2 Nov 2010 16:09:05 -0400 Subject: [icedtea-web] RFC: Add class checks to fail early on non-Oracle JDKs In-Reply-To: <20101101154258.GJ11106@rivendell.middle-earth.co.uk> References: <20101101154258.GJ11106@rivendell.middle-earth.co.uk> Message-ID: <20101102200905.GA9096@redhat.com> * Dr Andrew John Hughes [2010-11-01 11:48]: > The attached patch makes configure fail if it can't find a number of > internal Sun classes that the plugin and NetX wrongly depend on. This > makes the build fail early and clearly on non-Oracle JDKs rather than > attempting a build and hitting compile errors. > > Over time, I expect the java.* classes to become available in GNU Classpath > and for those working on plugin and NetX to fix these issues with internal > code usage (which also produce warnings from javac during build). Bugs > are filed under GNU Classpath and IcedTea as appropriate for these issues. > > Ok for icedtea-web HEAD? > Looks good to me. Okay for HEAD! Cheers, Deepak > ChangeLog: > > 2010-10-28 Andrew John Hughes > > * Makefile.am: > (NETX_BOOTSTRAP_CLASSES): Removed. > (PLUGIN_BOOTSTRAP_CLASSES): Likewise. > (NETX_SUN_CLASSES): Likewise. > (PLUGIN_SUN_CLASSES): Likewise. > * acinclude.m4: > (IT_CHECK_FOR_CLASS): Require detection > of javac and java. Put test class in > sun.applet to get access to some internal > classes. Change test to use forName for > the same reason. I expect to be able to > revert this when usage of sun.applet is fixed. > (IT_FIND_JAVA): Ported from IcedTea6. Change > to prioritise 'java' over 'gij'. > * configure.ac: > Add IT_CHECK_FOR_CLASS checks for classes which > are required but not found in JDKs other than > Oracle-based ones. Also check for java.* classes > missing from current versions of gcj but which > may appear there in future. > > -- > Andrew :) > > Free Java Software Engineer > Red Hat, Inc. (http://www.redhat.com) > > Support Free Java! > Contribute to GNU Classpath and the OpenJDK > http://www.gnu.org/software/classpath > http://openjdk.java.net > PGP Key: 94EFD9D8 (http://subkeys.pgp.net) > Fingerprint = F8EF F1EA 401E 2E60 15FA 7927 142C 2591 94EF D9D8 > diff -r 3571cd24829e Makefile.am > --- a/Makefile.am Thu Oct 28 16:18:36 2010 -0400 > +++ b/Makefile.am Mon Nov 01 15:34:18 2010 +0000 > @@ -8,46 +8,6 @@ > # Build directories > > BOOT_DIR = $(abs_top_builddir)/bootstrap/jdk1.6.0 > - > -# PR43578 - java.security.CodeSource.getCodeSigners() missing > -# PR43582 - Missing javax.swing.JTable.setFillsViewportHeight > -# PR43585 - java.security.KeyStore.TrustedCertificateEntry class missing > -NETX_BOOTSTRAP_CLASSES = \ > - $(SHARE)/java/security/CodeSource.java \ > - $(SHARE)/javax/swing/JTable.java \ > - $(SHARE)/java/security/KeyStore.java > - > -# PR46074 - Missing java.net cookie code required by IcedTea plugin > -PLUGIN_BOOTSTRAP_CLASSES = \ > - $(SHARE)/java/net/CookieManager.java \ > - $(SHARE)/java/net/HttpCookie.java \ > - $(SHARE)/java/net/CookieHandler.java > - > -# IT563 - NetX uses sun.security code > -# IT564 - NetX depends on sun.misc.BASE64Encoder > -# IT570 - NetX depends on sun.applet.AppletViewPanel > -# IT571 - NetX depends on com.sun.net.ssl.internal.ssl.X509ExtendedTrustManager.java > -NETX_SUN_CLASSES = \ > - $(SHARE)/sun/security/provider/X509Factory.java \ > - $(SHARE)/sun/security/util/SecurityConstants.java \ > - $(SHARE)/sun/security/util/HostnameChecker.java \ > - $(SHARE)/sun/security/util/DerValue.java \ > - $(SHARE)/sun/security/x509/X500Name.java \ > - $(SHARE)/sun/misc/BASE64Encoder.java \ > - $(SHARE)/sun/applet/AppletViewerPanel.java \ > - $(SHARE)/sun/security/validator/ValidatorException.java \ > - $(SHARE)/com/sun/net/ssl/internal/ssl/X509ExtendedTrustManager.java > - > -# IT573 - Plugin depends on sun.awt,X11.XEmbeddedFrame.java > -# IT574 - Plugin depends on sun.misc.Ref > -# IT575 - Plugin depends on com.sun/jndi.toolkit.url.UrlUtil > -# IT576 - Plugin depends on sun.applet.AppletImageRef > -PLUGIN_SUN_CLASSES = \ > - $(SOLARIS)/sun/awt/X11/XEmbeddedFrame.java \ > - $(SHARE)/sun/misc/Ref.java \ > - $(SHARE)/com/sun/jndi/toolkit/url/UrlUtil.java \ > - $(SHARE)/sun/applet/AppletImageRef.java > - > RUNTIME = $(BOOT_DIR)/jre/lib/rt.jar:$(BOOT_DIR)/jre/lib/jsse.jar > > # Flags > diff -r 3571cd24829e acinclude.m4 > --- a/acinclude.m4 Thu Oct 28 16:18:36 2010 -0400 > +++ b/acinclude.m4 Mon Nov 01 15:34:18 2010 +0000 > @@ -302,19 +302,27 @@ > dnl is usually the name of the class with '.' > dnl replaced by '_' and all letters capitalised. > dnl e.g. IT_CHECK_FOR_CLASS([JAVA_UTIL_SCANNER],[java.util.Scanner]) > +dnl Test class has to be in sun.applet for some internal classes > AC_DEFUN([IT_CHECK_FOR_CLASS],[ > -AC_CACHE_CHECK([if $2 is missing], it_cv_$1, [ > -CLASS=Test.java > +AC_REQUIRE([IT_FIND_JAVAC]) > +AC_REQUIRE([IT_FIND_JAVA]) > +AC_CACHE_CHECK([if $2 is available], it_cv_$1, [ > +CLASS=sun/applet/Test.java > BYTECODE=$(echo $CLASS|sed 's#\.java##') > -mkdir tmp.$$ > +mkdir -p tmp.$$/$(dirname $CLASS) > cd tmp.$$ > cat << \EOF > $CLASS > [/* [#]line __oline__ "configure" */ > +package sun.applet; > + > +import $2; > + > public class Test > { > public static void main(String[] args) > + throws Exception > { > - $2.class.toString(); > + System.out.println(Class.forName("$2")); > } > } > ] > @@ -331,7 +339,8 @@ > ]) > rm -f $CLASS *.class > cd .. > -rmdir tmp.$$ > +# should be rmdir but has to be rm -rf due to sun.applet usage > +rm -rf tmp.$$ > if test x"${it_cv_$1}" = "xno"; then > AC_MSG_ERROR([$2 not found.]) > fi > @@ -507,3 +516,30 @@ > AC_SUBST(ARCH_PREFIX) > AC_SUBST(ARCHFLAG) > ]) > + > +AC_DEFUN_ONCE([IT_FIND_JAVA], > +[ > + AC_MSG_CHECKING([for a Java virtual machine]) > + AC_ARG_WITH([java], > + [AS_HELP_STRING(--with-java,specify location of the 1.5 java vm)], > + [ > + JAVA="${withval}" > + ], > + [ > + JAVA=${SYSTEM_JDK_DIR}/bin/java > + ]) > + if ! test -f "${JAVA}"; then > + AC_PATH_PROG(JAVA, "${JAVA}") > + fi > + if test -z "${JAVA}"; then > + AC_PATH_PROG(JAVA, "java") > + fi > + if test -z "${JAVA}"; then > + AC_PATH_PROG(JAVA, "gij") > + fi > + if test -z "${JAVA}"; then > + AC_MSG_ERROR("A 1.5-compatible Java VM is required.") > + fi > + AC_MSG_RESULT(${JAVA}) > + AC_SUBST(JAVA) > +]) > diff -r 3571cd24829e configure.ac > --- a/configure.ac Thu Oct 28 16:18:36 2010 -0400 > +++ b/configure.ac Mon Nov 01 15:34:18 2010 +0000 > @@ -49,4 +49,32 @@ > AC_SUBST(X11_CFLAGS) > AC_SUBST(X11_LIBS) > > +dnl PR46074 (gcc) - Missing java.net cookie code required by IcedTea plugin > +dnl IT563 - NetX uses sun.security code > +dnl IT564 - NetX depends on sun.misc.BASE64Encoder > +dnl IT570 - NetX depends on sun.applet.AppletViewPanel > +dnl IT571 - NetX depends on com.sun.net.ssl.internal.ssl.X509ExtendedTrustManager.java > +dnl IT573 - Plugin depends on sun.awt,X11.XEmbeddedFrame.java > +dnl IT574 - Plugin depends on sun.misc.Ref > +dnl IT575 - Plugin depends on com.sun/jndi.toolkit.url.UrlUtil > +dnl IT576 - Plugin depends on sun.applet.AppletImageRef > + > +IT_CHECK_FOR_CLASS(JAVA_UTIL_JAR_PACK200, [java.util.jar.Pack200]) > +IT_CHECK_FOR_CLASS(JAVA_NET_COOKIEMANAGER, [java.net.CookieManager]) > +IT_CHECK_FOR_CLASS(JAVA_NET_HTTPCOOKIE, [java.net.HttpCookie]) > +IT_CHECK_FOR_CLASS(JAVA_NET_COOKIEHANDLER, [java.net.CookieHandler]) > +IT_CHECK_FOR_CLASS(SUN_SECURITY_PROVIDER_X509FACTORY, [sun.security.provider.X509Factory]) > +IT_CHECK_FOR_CLASS(SUN_SECURITY_UTIL_SECURITYCONSTANTS, [sun.security.util.SecurityConstants]) > +IT_CHECK_FOR_CLASS(SUN_SECURITY_UTIL_HOSTNAMECHECKER, [sun.security.util.HostnameChecker]) > +IT_CHECK_FOR_CLASS(SUN_SECURITY_X509_X500NAME, [sun.security.x509.X500Name]) > +IT_CHECK_FOR_CLASS(SUN_MISC_BASE64ENCODER, [sun.misc.BASE64Encoder]) > +IT_CHECK_FOR_CLASS(SUN_APPLET_APPLETVIEWERPANEL, [sun.applet.AppletViewerPanel]) > +IT_CHECK_FOR_CLASS(SUN_SECURITY_VALIDATOR_VALIDATOREXCEPTION, [sun.security.validator.ValidatorException]) > +IT_CHECK_FOR_CLASS(COM_SUN_NET_SSL_INTERNAL_SSL_X509EXTENDEDTRUSTMANAGER, > + [com.sun.net.ssl.internal.ssl.X509ExtendedTrustManager]) > +IT_CHECK_FOR_CLASS(SUN_AWT_X11_XEMBEDDEDFRAME, [sun.awt.X11.XEmbeddedFrame]) > +IT_CHECK_FOR_CLASS(SUN_MISC_REF, [sun.misc.Ref]) > +IT_CHECK_FOR_CLASS(COM_SUN_JNDI_TOOLKIT_URL_URLUTIL, [com.sun.jndi.toolkit.url.UrlUtil]) > +IT_CHECK_FOR_CLASS(SUN_APPLET_APPLETIMAGEREF, [sun.applet.AppletImageRef]) > + > AC_OUTPUT From dbhole at redhat.com Tue Nov 2 14:31:56 2010 From: dbhole at redhat.com (Deepak Bhole) Date: Tue, 2 Nov 2010 17:31:56 -0400 Subject: [icedtea-web] RFC: Patch to double-buffer applets Message-ID: <20101102213155.GA9563@redhat.com> Hi, IcedTea plugin currently does not double-buffer the applet panel. As a result, some applets may flicker depending on the machine. Attached patch buffers the frame offscreen and then draws it, thereby addressing the issue. ChangeLog: 2010-11-02 Deepak Bhole * plugin/icedteanp/java/sun/applet/PluginAppletViewer.java (update): Override method and implement double-buffering. Cheers, Deepak -------------- next part -------------- diff -r 6c2527d42900 ChangeLog --- a/ChangeLog Mon Nov 01 11:44:15 2010 -0400 +++ b/ChangeLog Tue Nov 02 17:29:03 2010 -0700 @@ -1,3 +1,8 @@ +2010-11-02 Deepak Bhole + + * plugin/icedteanp/java/sun/applet/PluginAppletViewer.java (update): + Override method and implement double-buffering. + 2010-11-01 Omair Majid * Makefile.am (clean-IcedTeaPlugin): Only delete launcher directory if it diff -r 6c2527d42900 NEWS --- a/NEWS Mon Nov 01 11:44:15 2010 -0400 +++ b/NEWS Tue Nov 02 17:29:03 2010 -0700 @@ -12,3 +12,4 @@ * Initial release of IcedTea-Web * PR542: Plugin fails with NPE on http://www.openprocessing.org/visuals/iframe.php?visualID=2615 +* Applets are now double-buffered to eliminate flicker in ones that do heavy drawing diff -r 6c2527d42900 plugin/icedteanp/java/sun/applet/PluginAppletViewer.java --- a/plugin/icedteanp/java/sun/applet/PluginAppletViewer.java Mon Nov 01 11:44:15 2010 -0400 +++ b/plugin/icedteanp/java/sun/applet/PluginAppletViewer.java Tue Nov 02 17:29:03 2010 -0700 @@ -359,6 +366,9 @@ private static Long requestIdentityCounter = 0L; + private Image bufferedPanelImage; + private Graphics bufferedImageGraphics; + /** * Null constructor to allow instantiation via newInstance() */ @@ -2163,4 +2178,24 @@ } } } + + /** + * {@inheritDoc} + */ + public void update(Graphics g) { + + System.err.println("Buffering and drawing"); + + // If the image or the graphics don't exist, create new ones + if (bufferedPanelImage == null || bufferedImageGraphics == null) { + bufferedPanelImage = createImage(getWidth(), getHeight()); + bufferedImageGraphics = bufferedPanelImage.getGraphics (); + } + + // Paint off-screen + paint(bufferedImageGraphics); + + // Draw the painted image + g.drawImage(bufferedPanelImage, 0, 0, this); + } } From dbhole at redhat.com Tue Nov 2 14:37:57 2010 From: dbhole at redhat.com (Deepak Bhole) Date: Tue, 2 Nov 2010 17:37:57 -0400 Subject: [icedtea-web] RFC: Patch to double-buffer applets In-Reply-To: <20101102213155.GA9563@redhat.com> References: <20101102213155.GA9563@redhat.com> Message-ID: <20101102213756.GB9563@redhat.com> * Deepak Bhole [2010-11-02 17:31]: > Hi, > > IcedTea plugin currently does not double-buffer the applet panel. As a > result, some applets may flicker depending on the machine. > > Attached patch buffers the frame offscreen and then draws it, thereby > addressing the issue. > > ChangeLog: > 2010-11-02 Deepak Bhole > > * plugin/icedteanp/java/sun/applet/PluginAppletViewer.java (update): > Override method and implement double-buffering. > > Cheers, > Deepak Doh! There shouldn't be a println in there. New patch attached. I also fixed the variable names for the image and its graphics. Cheers, Deepak > diff -r 6c2527d42900 ChangeLog > --- a/ChangeLog Mon Nov 01 11:44:15 2010 -0400 > +++ b/ChangeLog Tue Nov 02 17:29:03 2010 -0700 > @@ -1,3 +1,8 @@ > +2010-11-02 Deepak Bhole > + > + * plugin/icedteanp/java/sun/applet/PluginAppletViewer.java (update): > + Override method and implement double-buffering. > + > 2010-11-01 Omair Majid > > * Makefile.am (clean-IcedTeaPlugin): Only delete launcher directory if it > diff -r 6c2527d42900 NEWS > --- a/NEWS Mon Nov 01 11:44:15 2010 -0400 > +++ b/NEWS Tue Nov 02 17:29:03 2010 -0700 > @@ -12,3 +12,4 @@ > > * Initial release of IcedTea-Web > * PR542: Plugin fails with NPE on http://www.openprocessing.org/visuals/iframe.php?visualID=2615 > +* Applets are now double-buffered to eliminate flicker in ones that do heavy drawing > diff -r 6c2527d42900 plugin/icedteanp/java/sun/applet/PluginAppletViewer.java > --- a/plugin/icedteanp/java/sun/applet/PluginAppletViewer.java Mon Nov 01 11:44:15 2010 -0400 > +++ b/plugin/icedteanp/java/sun/applet/PluginAppletViewer.java Tue Nov 02 17:29:03 2010 -0700 > @@ -359,6 +366,9 @@ > > private static Long requestIdentityCounter = 0L; > > + private Image bufferedPanelImage; > + private Graphics bufferedImageGraphics; > + > /** > * Null constructor to allow instantiation via newInstance() > */ > @@ -2163,4 +2178,24 @@ > } > } > } > + > + /** > + * {@inheritDoc} > + */ > + public void update(Graphics g) { > + > + System.err.println("Buffering and drawing"); > + > + // If the image or the graphics don't exist, create new ones > + if (bufferedPanelImage == null || bufferedImageGraphics == null) { > + bufferedPanelImage = createImage(getWidth(), getHeight()); > + bufferedImageGraphics = bufferedPanelImage.getGraphics (); > + } > + > + // Paint off-screen > + paint(bufferedImageGraphics); > + > + // Draw the painted image > + g.drawImage(bufferedPanelImage, 0, 0, this); > + } > } -------------- next part -------------- diff -r 6c2527d42900 ChangeLog --- a/ChangeLog Mon Nov 01 11:44:15 2010 -0400 +++ b/ChangeLog Tue Nov 02 17:37:09 2010 -0700 @@ -1,3 +1,8 @@ +2010-11-02 Deepak Bhole + + * plugin/icedteanp/java/sun/applet/PluginAppletViewer.java (update): + Override method and implement double-buffering. + 2010-11-01 Omair Majid * Makefile.am (clean-IcedTeaPlugin): Only delete launcher directory if it diff -r 6c2527d42900 NEWS --- a/NEWS Mon Nov 01 11:44:15 2010 -0400 +++ b/NEWS Tue Nov 02 17:37:09 2010 -0700 @@ -12,3 +12,4 @@ * Initial release of IcedTea-Web * PR542: Plugin fails with NPE on http://www.openprocessing.org/visuals/iframe.php?visualID=2615 +* Applets are now double-buffered to eliminate flicker in ones that do heavy drawing diff -r 6c2527d42900 plugin/icedteanp/java/sun/applet/PluginAppletViewer.java --- a/plugin/icedteanp/java/sun/applet/PluginAppletViewer.java Mon Nov 01 11:44:15 2010 -0400 +++ b/plugin/icedteanp/java/sun/applet/PluginAppletViewer.java Tue Nov 02 17:37:09 2010 -0700 @@ -359,6 +366,9 @@ private static Long requestIdentityCounter = 0L; + private Image bufferedFrameImage; + private Graphics bufferedFrameImageGraphics; + /** * Null constructor to allow instantiation via newInstance() */ @@ -2163,4 +2178,22 @@ } } } + + /** + * {@inheritDoc} + */ + public void update(Graphics g) { + + // If the image or the graphics don't exist, create new ones + if (bufferedFrameImage == null || bufferedFrameImageGraphics == null) { + bufferedFrameImage = createImage(getWidth(), getHeight()); + bufferedFrameImageGraphics = bufferedFrameImage.getGraphics (); + } + + // Paint off-screen + paint(bufferedFrameImageGraphics); + + // Draw the painted image + g.drawImage(bufferedFrameImage, 0, 0, this); + } } From dbhole at redhat.com Tue Nov 2 14:49:35 2010 From: dbhole at redhat.com (Deepak Bhole) Date: Tue, 2 Nov 2010 17:49:35 -0400 Subject: [icedtea-web] RFC: use the new configuration file for infrastructure settings In-Reply-To: <4CCF1A0C.1060901@redhat.com> References: <4CCAF4A4.10303@redhat.com> <20101029194310.GB2057@redhat.com> <4CCEE6AE.7000702@redhat.com> <20101101181942.GA16588@redhat.com> <4CCF06A3.8010003@redhat.com> <20101101183412.GC16588@redhat.com> <4CCF1A0C.1060901@redhat.com> Message-ID: <20101102214935.GC9563@redhat.com> * Omair Majid [2010-11-01 15:50]: > On 11/01/2010 02:34 PM, Deepak Bhole wrote: > >* Omair Majid [2010-11-01 14:27]: > >>On 11/01/2010 02:19 PM, Deepak Bhole wrote: > >>>* Omair Majid [2010-11-01 12:11]: > >>>>On 10/29/2010 03:43 PM, Deepak Bhole wrote: > >>>>>* Omair Majid [2010-10-29 12:39]: > >>>>>>Hi, > >>>>>> > >>>>>>The attached patch integrates the "infrastructure" part of the > >>>>>>deployment properties into netx/icedteanpplugin. > >>>>>> > >>>>> > >>>>>Looks fine to me. Please make sure this is very well tested though. > >>>>>Things like cache are critical parts of the code... > >>>>> > >>>>>Ok for HEAD assuming it has undergone edge case testing. > >>>>> > >>>> > >>>>I have tested out pretty much every code path affected by this > >>>>patch. The only thing that I noticed is that the Java Console doesnt > >>>>work (I tried it out using Firefox's Web Developer extension), but > >>>>it isnt working without this patch either. > >>>> > >>> > >>>Is the console not-appearing a problem introduced by the patch? > >>> > >> > >>No, this seems to have happened some time ago. > >>https://bugzilla.mozilla.org/show_bug.cgi?id=460244 > >> > >>> > >>>>Any ideas on other types of tests I could try out? > >>>> > >>> > >>>Just with jars that case stuff, and try with the cache dir not existing > >>>to start with, etc. No specific sites I can think of either. > >>> > >> > >>Did you mean 'jars that cache stuff'? I tried out a number of times > >>with blank directories - the patch already takes care of all the > >>missing directories I could find (cache, pcache, tmp or log). Do you > >>have a list of applets that are known to work? > > > >I haven't tried this list in a while, but whatever is not 404d should > >work: > > > >http://www.knuddels.de/applet.html?v=88&c=6 > >http://www.absolutepoker.com/no-download/ > >http://www.visibone.com/font/FontTest2.html > >http://www.jigzone.com > >http://www.jwirc.com/chat.html > >http://www.java.com/en/download/help/testvm.xml?ff3 > >http://www.w3.org/People/mimasa/test/object/java/clock > >http://gamow.ist.utl.pt/~amaro/Spline3D.html > >http://www.upshot.com/login/javatest/logo/javavmtest.html > >http://www.javatester.org/ > >http://www.goes.noaa.gov/GSSLOOPS/wcir.html > >http://games.yahoo.com/games/login2?page=po&ss=1 > >http://www.postlet.com/example/ > >http://www.colorado.edu/physics/2000/xray/making_xrays.html > >http://jmol.sourceforge.net/demo/atoms/ > > > >Deepak > > > > Thanks for the links. As far as I can tell, the websites work the > same with or without the patch applied - I dont observe any > regressions. Okay then, OK for commit to HEAD. Deepak > > Thanks, > Omair > > > >>>>>>ChangeLog: > >>>>>> > >>>>>>2010-10-29 Omair Majid > >>>>>> > >>>>>> * netx/net/sourceforge/jnlp/Launcher.java > >>>>>> (markNetxRunning): Get file name from configuration. > >>>>>> (markNetxStopped): Likewise. > >>>>>> * netx/net/sourceforge/jnlp/cache/CacheUtil.java > >>>>>> (clearCache): Get cache directory from configuration. > >>>>>> (okToClearCache): Get netx_running file from configuration. > >>>>>> (getCacheFile): Get cache directory from configuration. > >>>>>> (urlToPath): Change semantics to take in the full path of the > >>>>>> directory instead of a directory under runtime. > >>>>>> * netx/net/sourceforge/jnlp/runtime/DeploymentConfiguration.java: > >>>>>> Change DEPLOYMENT_DIR to ".icedtea". Add constants > >>>>>> KEY_USER_CACHE_DIR, KEY_USER_PERSISTENCE_CACHE_DIR, > >>>>>> KEY_SYSTEM_CACHE_DIR, KEY_USER_LOG_DIR, KEY_USER_TMP_DIR, > >>>>>> KEY_USER_LOCKS_DIR, and KEY_USER_NETX_RUNNING_FILE. > >>>>>> (load): Use DEPLOYMENT_DIR instead of hardcoded string. > >>>>>> (loadDefaultProperties): Add LOCKS_DIR. Replace strings with > >>>>>> constants. Add new default values for persistence cache directory, > >>>>>> single instance locks directory and the netx_running file. > >>>>>> * netx/net/sourceforge/jnlp/runtime/JNLPRuntime.java: Remove > >>>>>> unneeded TMP_DIR, LOCKS_DIR and NETX_RUNNING_FILE > >>>>>> * netx/net/sourceforge/jnlp/services/SingleInstanceLock.java > >>>>>> (getLockFile): Get locks directory from configuration. > >>>>>> * netx/net/sourceforge/jnlp/services/XPersistenceService.java > >>>>>> (toCacheFile): Get persistence cache directory from configuration. > >>>>>> * netx/net/sourceforge/jnlp/util/XDesktopEntry.java > >>>>>> (getContentsAsReader): Get cache directory from configuration. > >>>>>> (installDesktopLauncher): Get temporary directory from > >>>>>> configuration. Make parent directories if required. > >>>>>> * plugin/icedteanp/java/sun/applet/JavaConsole.java > >>>>>> (initialize): Get log directory from configuration and create the > >>>>>> error and output files under it. > >>>>>> * plugin/icedteanp/java/sun/applet/PluginMain.java: > >>>>>> PLUGIN_STDERR_FILE and PLUGIN_STDOUT_FILE are now just filesnames. > >>>>>> (PluginMain): Use configuration for finding the log directory. > >>>>>> Initialize JNLPRuntime before creating the stderr and stdout logs. > >>>>>> > >>>>>>Any comments? > >>>>>> > >>>>>>Thanks, > >>>>>>Omair > >>>>> > >>>>>>diff -r 3571cd24829e netx/net/sourceforge/jnlp/Launcher.java > >>>>>>--- a/netx/net/sourceforge/jnlp/Launcher.java Thu Oct 28 16:18:36 2010 -0400 > >>>>>>+++ b/netx/net/sourceforge/jnlp/Launcher.java Fri Oct 29 11:48:26 2010 -0400 > >>>>>>@@ -43,6 +43,7 @@ > >>>>>> import net.sourceforge.jnlp.runtime.AppThreadGroup; > >>>>>> import net.sourceforge.jnlp.runtime.AppletInstance; > >>>>>> import net.sourceforge.jnlp.runtime.ApplicationInstance; > >>>>>>+import net.sourceforge.jnlp.runtime.DeploymentConfiguration; > >>>>>> import net.sourceforge.jnlp.runtime.JNLPClassLoader; > >>>>>> import net.sourceforge.jnlp.runtime.JNLPRuntime; > >>>>>> import net.sourceforge.jnlp.services.InstanceExistsException; > >>>>>>@@ -724,7 +725,8 @@ > >>>>>> try { > >>>>>> String message = "This file is used to check if netx is running"; > >>>>>> > >>>>>>- File netxRunningFile = new File(JNLPRuntime.NETX_RUNNING_FILE); > >>>>>>+ File netxRunningFile = new File(JNLPRuntime.getConfiguration() > >>>>>>+ .getProperty(DeploymentConfiguration.KEY_USER_NETX_RUNNING_FILE)); > >>>>>> netxRunningFile.getParentFile().mkdirs(); > >>>>>> if (netxRunningFile.createNewFile()) { > >>>>>> FileOutputStream fos = new FileOutputStream(netxRunningFile); > >>>>>>@@ -749,7 +751,7 @@ > >>>>>> if (fileLock != null&& fileLock.isShared()) { > >>>>>> if (JNLPRuntime.isDebug()) { > >>>>>> System.out.println("Acquired shared lock on " + > >>>>>>- JNLPRuntime.NETX_RUNNING_FILE + " to indicate javaws is running"); > >>>>>>+ netxRunningFile.toString() + " to indicate javaws is running"); > >>>>>> } > >>>>>> } else { > >>>>>> fileLock = null; > >>>>>>@@ -773,7 +775,9 @@ > >>>>>> fileLock.channel().close(); > >>>>>> fileLock = null; > >>>>>> if (JNLPRuntime.isDebug()) { > >>>>>>- System.out.println("Release shared lock on " + JNLPRuntime.NETX_RUNNING_FILE); > >>>>>>+ String file = JNLPRuntime.getConfiguration() > >>>>>>+ .getProperty(DeploymentConfiguration.KEY_USER_NETX_RUNNING_FILE); > >>>>>>+ System.out.println("Release shared lock on " + file); > >>>>>> } > >>>>>> } catch (IOException e) { > >>>>>> e.printStackTrace(); > >>>>>>diff -r 3571cd24829e netx/net/sourceforge/jnlp/cache/CacheUtil.java > >>>>>>--- a/netx/net/sourceforge/jnlp/cache/CacheUtil.java Thu Oct 28 16:18:36 2010 -0400 > >>>>>>+++ b/netx/net/sourceforge/jnlp/cache/CacheUtil.java Fri Oct 29 11:48:26 2010 -0400 > >>>>>>@@ -141,7 +141,8 @@ > >>>>>> return; > >>>>>> } > >>>>>> > >>>>>>- File cacheDir = new File(JNLPRuntime.getBaseDir() + File.separator + "cache"); > >>>>>>+ File cacheDir = new File(JNLPRuntime.getConfiguration() > >>>>>>+ .getProperty(DeploymentConfiguration.KEY_USER_CACHE_DIR)); > >>>>>> if (!(cacheDir.isDirectory())) { > >>>>>> return; > >>>>>> } > >>>>>>@@ -150,7 +151,8 @@ > >>>>>> System.err.println("Clearing cache directory: " + cacheDir); > >>>>>> } > >>>>>> try { > >>>>>>- FileUtils.recursiveDelete(cacheDir, JNLPRuntime.getBaseDir()); > >>>>>>+ cacheDir = cacheDir.getCanonicalFile(); > >>>>>>+ FileUtils.recursiveDelete(cacheDir, cacheDir); > >>>>>> } catch (IOException e) { > >>>>>> throw new RuntimeException(e); > >>>>>> } > >>>>>>@@ -161,7 +163,8 @@ > >>>>>> * @return true if the cache can be cleared at this time without problems > >>>>>> */ > >>>>>> private static boolean okToClearCache() { > >>>>>>- File otherJavawsRunning = new File(JNLPRuntime.NETX_RUNNING_FILE); > >>>>>>+ File otherJavawsRunning = new File(JNLPRuntime.getConfiguration() > >>>>>>+ .getProperty(DeploymentConfiguration.KEY_USER_NETX_RUNNING_FILE)); > >>>>>> try { > >>>>>> if (otherJavawsRunning.isFile()) { > >>>>>> FileOutputStream fis = new FileOutputStream(otherJavawsRunning); > >>>>>>@@ -289,7 +292,9 @@ > >>>>>> throw new IllegalArgumentException(R("CNotCacheable", source)); > >>>>>> > >>>>>> try { > >>>>>>- File localFile = urlToPath(source, "cache"); > >>>>>>+ String cacheDir = JNLPRuntime.getConfiguration() > >>>>>>+ .getProperty(DeploymentConfiguration.KEY_USER_CACHE_DIR); > >>>>>>+ File localFile = urlToPath(source, cacheDir); > >>>>>> localFile.getParentFile().mkdirs(); > >>>>>> > >>>>>> return localFile; > >>>>>>@@ -345,20 +350,23 @@ > >>>>>> } > >>>>>> > >>>>>> /** > >>>>>>- * Converts a URL into a local path string within the runtime's > >>>>>>- * base directory. > >>>>>>+ * Converts a URL into a local path string within the given directory. For > >>>>>>+ * example a url with subdirectory /tmp/ will > >>>>>>+ * result in a File that is located somewhere within /tmp/ > >>>>>> * > >>>>>> * @param location the url > >>>>>>- * @param subdir subdirectory under the base directory > >>>>>>+ * @param subdir the subdirectory > >>>>>> * @return the file > >>>>>> */ > >>>>>> public static File urlToPath(URL location, String subdir) { > >>>>>>+ if (subdir == null) { > >>>>>>+ throw new NullPointerException(); > >>>>>>+ } > >>>>>>+ > >>>>>> StringBuffer path = new StringBuffer(); > >>>>>> > >>>>>>- if (subdir != null) { > >>>>>>- path.append(subdir); > >>>>>>- path.append(File.separatorChar); > >>>>>>- } > >>>>>>+ path.append(subdir); > >>>>>>+ path.append(File.separatorChar); > >>>>>> > >>>>>> path.append(location.getProtocol()); > >>>>>> path.append(File.separatorChar); > >>>>>>@@ -366,7 +374,7 @@ > >>>>>> path.append(File.separatorChar); > >>>>>> path.append(location.getPath().replace('/', File.separatorChar)); > >>>>>> > >>>>>>- return new File(JNLPRuntime.getBaseDir(), FileUtils.sanitizePath(path.toString())); > >>>>>>+ return new File(FileUtils.sanitizePath(path.toString())); > >>>>>> } > >>>>>> > >>>>>> > >>>>>>diff -r 3571cd24829e netx/net/sourceforge/jnlp/runtime/DeploymentConfiguration.java > >>>>>>--- a/netx/net/sourceforge/jnlp/runtime/DeploymentConfiguration.java Thu Oct 28 16:18:36 2010 -0400 > >>>>>>+++ b/netx/net/sourceforge/jnlp/runtime/DeploymentConfiguration.java Fri Oct 29 11:48:26 2010 -0400 > >>>>>>@@ -28,6 +28,7 @@ > >>>>>> import java.io.Reader; > >>>>>> import java.net.MalformedURLException; > >>>>>> import java.net.URL; > >>>>>>+import java.nio.channels.FileLock; > >>>>>> import java.util.HashMap; > >>>>>> import java.util.Map; > >>>>>> import java.util.Properties; > >>>>>>@@ -98,7 +99,7 @@ > >>>>>> } > >>>>>> } > >>>>>> > >>>>>>- public static final String DEPLOYMENT_DIR = ".netx"; > >>>>>>+ public static final String DEPLOYMENT_DIR = ".icedtea"; > >>>>>> public static final String DEPLOYMENT_CONFIG = "deployment.config"; > >>>>>> public static final String DEPLOYMENT_PROPERTIES = "deployment.properties"; > >>>>>> > >>>>>>@@ -125,6 +126,22 @@ > >>>>>> public static final int PROXY_TYPE_AUTO = 2; > >>>>>> public static final int PROXY_TYPE_BROWSER = 3; > >>>>>> > >>>>>>+ public static final String KEY_USER_CACHE_DIR = "deployment.user.cachedir"; > >>>>>>+ public static final String KEY_USER_PERSISTENCE_CACHE_DIR = "deployment.user.pcachedir"; > >>>>>>+ public static final String KEY_SYSTEM_CACHE_DIR = "deployment.system.cachedir"; > >>>>>>+ public static final String KEY_USER_LOG_DIR = "deployment.user.logdir"; > >>>>>>+ public static final String KEY_USER_TMP_DIR = "deployment.user.tmp"; > >>>>>>+ /** the directory containing locks for single instance applications */ > >>>>>>+ public static final String KEY_USER_LOCKS_DIR = "deployment.user.locksdir"; > >>>>>>+ /** > >>>>>>+ * The netx_running file is used to indicate if any instances of netx are > >>>>>>+ * running (this file may exist even if no instances are running). All netx > >>>>>>+ * instances acquire a shared lock on this file. If this file can be locked > >>>>>>+ * (using a {@link FileLock}) in exclusive mode, then other netx instances > >>>>>>+ * are not running > >>>>>>+ */ > >>>>>>+ public static final String KEY_USER_NETX_RUNNING_FILE = "deployment.user.runningfile"; > >>>>>>+ > >>>>>> public enum ConfigType { > >>>>>> System, User > >>>>>> } > >>>>>>@@ -156,7 +173,7 @@ > >>>>>> */ > >>>>>> public void load() throws ConfigurationException { > >>>>>> // make sure no state leaks if security check fails later on > >>>>>>- File userFile = new File(System.getProperty("user.home") + File.separator + ".netx" > >>>>>>+ File userFile = new File(System.getProperty("user.home") + File.separator + DEPLOYMENT_DIR > >>>>>> + File.separator + DEPLOYMENT_PROPERTIES); > >>>>>> > >>>>>> SecurityManager sm = System.getSecurityManager(); > >>>>>>@@ -277,6 +294,10 @@ > >>>>>> final String USER_HOME = System.getProperty("user.home") + File.separator + DEPLOYMENT_DIR; > >>>>>> final String USER_SECURITY = USER_HOME + File.separator + "security"; > >>>>>> > >>>>>>+ final String LOCKS_DIR = System.getProperty("java.io.tmpdir") + File.separator > >>>>>>+ + System.getProperty("user.name") + File.separator + "netx" + File.separator > >>>>>>+ + "locks"; > >>>>>>+ > >>>>>> /* > >>>>>> * This is more or less a straight copy from the deployment > >>>>>> * configuration page, with occasional replacements of "" or no-defaults > >>>>>>@@ -285,10 +306,13 @@ > >>>>>> > >>>>>> String[][] defaults = new String[][] { > >>>>>> /* infrastructure */ > >>>>>>- { "deployment.user.cachedir", USER_HOME + File.separator + "cache" }, > >>>>>>- { "deployment.system.cachedir", null }, > >>>>>>- { "deployment.user.logdir", USER_HOME + File.separator + "log" }, > >>>>>>- { "deployment.user.tmp", USER_HOME + File.separator + "tmp" }, > >>>>>>+ { KEY_USER_CACHE_DIR, USER_HOME + File.separator + "cache" }, > >>>>>>+ { KEY_USER_PERSISTENCE_CACHE_DIR, USER_HOME + File.separator + "pcache" }, > >>>>>>+ { KEY_SYSTEM_CACHE_DIR, null }, > >>>>>>+ { KEY_USER_LOG_DIR, USER_HOME + File.separator + "log" }, > >>>>>>+ { KEY_USER_TMP_DIR, USER_HOME + File.separator + "tmp" }, > >>>>>>+ { KEY_USER_LOCKS_DIR, LOCKS_DIR }, > >>>>>>+ { KEY_USER_NETX_RUNNING_FILE, LOCKS_DIR + File.separator + "netx_running" }, > >>>>>> /* certificates and policy files */ > >>>>>> { "deployment.user.security.policy", "file://" + USER_SECURITY + File.separator + "java.policy" }, > >>>>>> { "deployment.user.security.trusted.cacerts", USER_SECURITY + File.separator + "trusted.cacerts" }, > >>>>>>diff -r 3571cd24829e netx/net/sourceforge/jnlp/runtime/JNLPRuntime.java > >>>>>>--- a/netx/net/sourceforge/jnlp/runtime/JNLPRuntime.java Thu Oct 28 16:18:36 2010 -0400 > >>>>>>+++ b/netx/net/sourceforge/jnlp/runtime/JNLPRuntime.java Fri Oct 29 11:48:26 2010 -0400 > >>>>>>@@ -132,25 +132,6 @@ > >>>>>> /** the ~/.netx/security/trusted.certs file containing trusted certificates */ > >>>>>> public static final String CERTIFICATES_FILE = SECURITY_DIR + File.separator + "trusted.certs"; > >>>>>> > >>>>>>- /** the /tmp/ directory used for temporary files */ > >>>>>>- public static final String TMP_DIR = System.getProperty("java.io.tmpdir"); > >>>>>>- > >>>>>>- /** > >>>>>>- * the /tmp/$USER/netx/locks/ directory containing locks for single instance > >>>>>>- * applications > >>>>>>- */ > >>>>>>- public static final String LOCKS_DIR = TMP_DIR + File.separator + USER + File.separator > >>>>>>- + "netx" + File.separator + "locks"; > >>>>>>- > >>>>>>- /** > >>>>>>- * The /tmp/$USER/netx/locks/netx_running file is used to indicate if any > >>>>>>- * instances of netx are running (this file may exist even if no instances > >>>>>>- * are running). All netx instances acquire a shared lock on this file. If > >>>>>>- * this file can be locked (using a {@link FileLock}) in exclusive mode, then > >>>>>>- * other netx instances are not running > >>>>>>- */ > >>>>>>- public static final String NETX_RUNNING_FILE = LOCKS_DIR + File.separator + "netx_running"; > >>>>>>- > >>>>>> /** the java.home directory */ > >>>>>> public static final String JAVA_HOME_DIR = System.getProperty("java.home"); > >>>>>> > >>>>>>diff -r 3571cd24829e netx/net/sourceforge/jnlp/services/SingleInstanceLock.java > >>>>>>--- a/netx/net/sourceforge/jnlp/services/SingleInstanceLock.java Thu Oct 28 16:18:36 2010 -0400 > >>>>>>+++ b/netx/net/sourceforge/jnlp/services/SingleInstanceLock.java Fri Oct 29 11:48:26 2010 -0400 > >>>>>>@@ -28,6 +28,7 @@ > >>>>>> import java.net.ServerSocket; > >>>>>> > >>>>>> import net.sourceforge.jnlp.JNLPFile; > >>>>>>+import net.sourceforge.jnlp.runtime.DeploymentConfiguration; > >>>>>> import net.sourceforge.jnlp.runtime.JNLPRuntime; > >>>>>> import net.sourceforge.jnlp.util.FileUtils; > >>>>>> > >>>>>>@@ -128,7 +129,8 @@ > >>>>>> * may or may not exist. > >>>>>> */ > >>>>>> private File getLockFile() { > >>>>>>- File baseDir = new File(JNLPRuntime.LOCKS_DIR); > >>>>>>+ File baseDir = new File(JNLPRuntime.getConfiguration() > >>>>>>+ .getProperty(DeploymentConfiguration.KEY_USER_LOCKS_DIR)); > >>>>>> > >>>>>> if (!baseDir.isDirectory()&& !baseDir.mkdirs()) { > >>>>>> throw new RuntimeException(R("RNoLockDir", baseDir)); > >>>>>>diff -r 3571cd24829e netx/net/sourceforge/jnlp/services/XPersistenceService.java > >>>>>>--- a/netx/net/sourceforge/jnlp/services/XPersistenceService.java Thu Oct 28 16:18:36 2010 -0400 > >>>>>>+++ b/netx/net/sourceforge/jnlp/services/XPersistenceService.java Fri Oct 29 11:48:26 2010 -0400 > >>>>>>@@ -80,7 +80,9 @@ > >>>>>> * @return the file > >>>>>> */ > >>>>>> protected File toCacheFile(URL location) throws MalformedURLException { > >>>>>>- return CacheUtil.urlToPath(location, "pcache"); > >>>>>>+ String pcache = JNLPRuntime.getConfiguration() > >>>>>>+ .getProperty(DeploymentConfiguration.KEY_USER_PERSISTENCE_CACHE_DIR); > >>>>>>+ return CacheUtil.urlToPath(location, pcache); > >>>>>> } > >>>>>> > >>>>>> /** > >>>>>>diff -r 3571cd24829e netx/net/sourceforge/jnlp/util/XDesktopEntry.java > >>>>>>--- a/netx/net/sourceforge/jnlp/util/XDesktopEntry.java Thu Oct 28 16:18:36 2010 -0400 > >>>>>>+++ b/netx/net/sourceforge/jnlp/util/XDesktopEntry.java Fri Oct 29 11:48:26 2010 -0400 > >>>>>>@@ -32,6 +32,7 @@ > >>>>>> import net.sourceforge.jnlp.StreamEater; > >>>>>> import net.sourceforge.jnlp.cache.CacheUtil; > >>>>>> import net.sourceforge.jnlp.cache.UpdatePolicy; > >>>>>>+import net.sourceforge.jnlp.runtime.DeploymentConfiguration; > >>>>>> import net.sourceforge.jnlp.runtime.JNLPRuntime; > >>>>>> > >>>>>> /** > >>>>>>@@ -73,7 +74,9 @@ > >>>>>> > >>>>>> String pathToJavaws = System.getProperty("java.home") + File.separator + "bin" > >>>>>> + File.separator + "javaws"; > >>>>>>- File cacheFile = CacheUtil.urlToPath(file.getSourceLocation(), "cache"); > >>>>>>+ String cacheDir = JNLPRuntime.getConfiguration() > >>>>>>+ .getProperty(DeploymentConfiguration.KEY_USER_CACHE_DIR); > >>>>>>+ File cacheFile = CacheUtil.urlToPath(file.getSourceLocation(), cacheDir); > >>>>>> > >>>>>> String fileContents = "[Desktop Entry]\n"; > >>>>>> fileContents += "Version=1.0\n"; > >>>>>>@@ -131,10 +134,14 @@ > >>>>>> * Install this XDesktopEntry into the user's desktop as a launcher > >>>>>> */ > >>>>>> private void installDesktopLauncher() { > >>>>>>- File shortcutFile = new File(JNLPRuntime.TMP_DIR + File.separator > >>>>>>- + FileUtils.sanitizeFileName(file.getTitle()) + ".desktop"); > >>>>>>+ File shortcutFile = new File(JNLPRuntime.getConfiguration() > >>>>>>+ .getProperty(DeploymentConfiguration.KEY_USER_TMP_DIR) > >>>>>>+ + File.separator + FileUtils.sanitizeFileName(file.getTitle()) + ".desktop"); > >>>>>> try { > >>>>>> > >>>>>>+ if (!shortcutFile.getParentFile().isDirectory()&& !shortcutFile.getParentFile().mkdirs()) { > >>>>>>+ throw new IOException(shortcutFile.getParentFile().toString()); > >>>>>>+ } > >>>>>> /* > >>>>>> * Write out a Java String (UTF-16) as a UTF-8 file > >>>>>> */ > >>>>>>diff -r 3571cd24829e plugin/icedteanp/java/sun/applet/JavaConsole.java > >>>>>>--- a/plugin/icedteanp/java/sun/applet/JavaConsole.java Thu Oct 28 16:18:36 2010 -0400 > >>>>>>+++ b/plugin/icedteanp/java/sun/applet/JavaConsole.java Fri Oct 29 11:48:26 2010 -0400 > >>>>>>@@ -63,6 +63,9 @@ > >>>>>> import javax.swing.border.EmptyBorder; > >>>>>> import javax.swing.border.TitledBorder; > >>>>>> > >>>>>>+import net.sourceforge.jnlp.runtime.DeploymentConfiguration; > >>>>>>+import net.sourceforge.jnlp.runtime.JNLPRuntime; > >>>>>>+ > >>>>>> /** > >>>>>> * A simple Java console for IcedTeaPlugin > >>>>>> * > >>>>>>@@ -86,6 +89,8 @@ > >>>>>> e.printStackTrace(); > >>>>>> } > >>>>>> > >>>>>>+ final String logDir = JNLPRuntime.getConfiguration().getProperty(DeploymentConfiguration.KEY_USER_LOG_DIR); > >>>>>>+ > >>>>>> consoleWindow = new JFrame("Java Console"); > >>>>>> > >>>>>> JPanel contentPanel = new JPanel(); > >>>>>>@@ -104,7 +109,7 @@ > >>>>>> stdOutText.setEditable(false); > >>>>>> stdOutText.setFont(monoSpace); > >>>>>> > >>>>>>- TextAreaUpdater stdOutUpdater = new TextAreaUpdater(new File( > >>>>>>+ TextAreaUpdater stdOutUpdater = new TextAreaUpdater(new File(logDir, > >>>>>> PluginMain.PLUGIN_STDOUT_FILE), stdOutText); > >>>>>> stdOutUpdater.setName("IcedteaPlugin Console Thread(System.out)"); > >>>>>> > >>>>>>@@ -117,7 +122,7 @@ > >>>>>> stdErrText.setEditable(false); > >>>>>> stdErrText.setFont(monoSpace); > >>>>>> > >>>>>>- TextAreaUpdater stdErrUpdater = new TextAreaUpdater(new File( > >>>>>>+ TextAreaUpdater stdErrUpdater = new TextAreaUpdater(new File(logDir, > >>>>>> PluginMain.PLUGIN_STDERR_FILE), stdErrText); > >>>>>> stdErrUpdater.setName("IcedteaPlugin Console Thread(System.err)"); > >>>>>> > >>>>>>diff -r 3571cd24829e plugin/icedteanp/java/sun/applet/PluginMain.java > >>>>>>--- a/plugin/icedteanp/java/sun/applet/PluginMain.java Thu Oct 28 16:18:36 2010 -0400 > >>>>>>+++ b/plugin/icedteanp/java/sun/applet/PluginMain.java Fri Oct 29 11:48:26 2010 -0400 > >>>>>>@@ -80,6 +80,8 @@ > >>>>>> import javax.net.ssl.SSLSocketFactory; > >>>>>> import javax.net.ssl.TrustManager; > >>>>>> > >>>>>>+import net.sourceforge.jnlp.runtime.DeploymentConfiguration; > >>>>>>+import net.sourceforge.jnlp.runtime.JNLPRuntime; > >>>>>> import net.sourceforge.jnlp.security.VariableX509TrustManager; > >>>>>> > >>>>>> /** > >>>>>>@@ -87,10 +89,9 @@ > >>>>>> */ > >>>>>> public class PluginMain > >>>>>> { > >>>>>>- > >>>>>> // the files where stdout/stderr are sent to > >>>>>>- public static final String PLUGIN_STDERR_FILE = System.getProperty("user.home") + "/.icedteaplugin/java.stderr"; > >>>>>>- public static final String PLUGIN_STDOUT_FILE = System.getProperty("user.home") + "/.icedteaplugin/java.stdout"; > >>>>>>+ public static final String PLUGIN_STDERR_FILE = "java.stderr"; > >>>>>>+ public static final String PLUGIN_STDOUT_FILE = "java.stdout"; > >>>>>> > >>>>>> final boolean redirectStreams = System.getenv().containsKey("ICEDTEAPLUGIN_DEBUG"); > >>>>>> static PluginStreamHandler streamHandler; > >>>>>>@@ -123,16 +124,6 @@ > >>>>>> > >>>>>> public PluginMain(String inPipe, String outPipe) { > >>>>>> > >>>>>>- try { > >>>>>>- File errFile = new File(PLUGIN_STDERR_FILE); > >>>>>>- File outFile = new File(PLUGIN_STDOUT_FILE); > >>>>>>- > >>>>>>- System.setErr(new TeeOutputStream(new FileOutputStream(errFile), System.err)); > >>>>>>- System.setOut(new TeeOutputStream(new FileOutputStream(outFile), System.out)); > >>>>>>- } catch (Exception e) { > >>>>>>- PluginDebug.debug("Unable to redirect streams"); > >>>>>>- e.printStackTrace(); > >>>>>>- } > >>>>>> > >>>>>> connect(inPipe, outPipe); > >>>>>> > >>>>>>@@ -141,6 +132,20 @@ > >>>>>> securityContext.setStreamhandler(streamHandler); > >>>>>> AppletSecurityContextManager.addContext(0, securityContext); > >>>>>> > >>>>>>+ String logDir = JNLPRuntime.getConfiguration().getProperty(DeploymentConfiguration.KEY_USER_LOG_DIR); > >>>>>>+ try { > >>>>>>+ File errFile = new File(logDir, PLUGIN_STDERR_FILE); > >>>>>>+ errFile.getParentFile().mkdirs(); > >>>>>>+ File outFile = new File(logDir, PLUGIN_STDOUT_FILE); > >>>>>>+ outFile.getParentFile().mkdirs(); > >>>>>>+ > >>>>>>+ System.setErr(new TeeOutputStream(new FileOutputStream(errFile), System.err)); > >>>>>>+ System.setOut(new TeeOutputStream(new FileOutputStream(outFile), System.out)); > >>>>>>+ } catch (Exception e) { > >>>>>>+ PluginDebug.debug("Unable to redirect streams"); > >>>>>>+ e.printStackTrace(); > >>>>>>+ } > >>>>>>+ > >>>>>> PluginAppletViewer.setStreamhandler(streamHandler); > >>>>>> PluginAppletViewer.setPluginCallRequestFactory(new PluginCallRequestFactory()); > >>>>>> > >>>>> > >>>> > >> > From ahughes at redhat.com Tue Nov 2 16:04:25 2010 From: ahughes at redhat.com (Dr Andrew John Hughes) Date: Tue, 2 Nov 2010 23:04:25 +0000 Subject: [icedtea-web] RFC: Patch to double-buffer applets In-Reply-To: <20101102213756.GB9563@redhat.com> References: <20101102213155.GA9563@redhat.com> <20101102213756.GB9563@redhat.com> Message-ID: <20101102230425.GD20032@rivendell.middle-earth.co.uk> On 17:37 Tue 02 Nov , Deepak Bhole wrote: > * Deepak Bhole [2010-11-02 17:31]: > > Hi, > > > > IcedTea plugin currently does not double-buffer the applet panel. As a > > result, some applets may flicker depending on the machine. > > > > Attached patch buffers the frame offscreen and then draws it, thereby > > addressing the issue. > > > > ChangeLog: > > 2010-11-02 Deepak Bhole > > > > * plugin/icedteanp/java/sun/applet/PluginAppletViewer.java (update): > > Override method and implement double-buffering. > > > > Cheers, > > Deepak > > > Doh! There shouldn't be a println in there. New patch attached. I also > fixed the variable names for the image and its graphics. > > Cheers, > Deepak > Looks good to me. Maybe the variable names could be shorter, while still conveying the same meaning e.g. bufPanelImage. > > diff -r 6c2527d42900 ChangeLog > > --- a/ChangeLog Mon Nov 01 11:44:15 2010 -0400 > > +++ b/ChangeLog Tue Nov 02 17:29:03 2010 -0700 > > @@ -1,3 +1,8 @@ > > +2010-11-02 Deepak Bhole > > + > > + * plugin/icedteanp/java/sun/applet/PluginAppletViewer.java (update): > > + Override method and implement double-buffering. > > + > > 2010-11-01 Omair Majid > > > > * Makefile.am (clean-IcedTeaPlugin): Only delete launcher directory if it > > diff -r 6c2527d42900 NEWS > > --- a/NEWS Mon Nov 01 11:44:15 2010 -0400 > > +++ b/NEWS Tue Nov 02 17:29:03 2010 -0700 > > @@ -12,3 +12,4 @@ > > > > * Initial release of IcedTea-Web > > * PR542: Plugin fails with NPE on http://www.openprocessing.org/visuals/iframe.php?visualID=2615 > > +* Applets are now double-buffered to eliminate flicker in ones that do heavy drawing > > diff -r 6c2527d42900 plugin/icedteanp/java/sun/applet/PluginAppletViewer.java > > --- a/plugin/icedteanp/java/sun/applet/PluginAppletViewer.java Mon Nov 01 11:44:15 2010 -0400 > > +++ b/plugin/icedteanp/java/sun/applet/PluginAppletViewer.java Tue Nov 02 17:29:03 2010 -0700 > > @@ -359,6 +366,9 @@ > > > > private static Long requestIdentityCounter = 0L; > > > > + private Image bufferedPanelImage; > > + private Graphics bufferedImageGraphics; > > + > > /** > > * Null constructor to allow instantiation via newInstance() > > */ > > @@ -2163,4 +2178,24 @@ > > } > > } > > } > > + > > + /** > > + * {@inheritDoc} > > + */ > > + public void update(Graphics g) { > > + > > + System.err.println("Buffering and drawing"); > > + > > + // If the image or the graphics don't exist, create new ones > > + if (bufferedPanelImage == null || bufferedImageGraphics == null) { > > + bufferedPanelImage = createImage(getWidth(), getHeight()); > > + bufferedImageGraphics = bufferedPanelImage.getGraphics (); > > + } > > + > > + // Paint off-screen > > + paint(bufferedImageGraphics); > > + > > + // Draw the painted image > > + g.drawImage(bufferedPanelImage, 0, 0, this); > > + } > > } > > diff -r 6c2527d42900 ChangeLog > --- a/ChangeLog Mon Nov 01 11:44:15 2010 -0400 > +++ b/ChangeLog Tue Nov 02 17:37:09 2010 -0700 > @@ -1,3 +1,8 @@ > +2010-11-02 Deepak Bhole > + > + * plugin/icedteanp/java/sun/applet/PluginAppletViewer.java (update): > + Override method and implement double-buffering. > + > 2010-11-01 Omair Majid > > * Makefile.am (clean-IcedTeaPlugin): Only delete launcher directory if it > diff -r 6c2527d42900 NEWS > --- a/NEWS Mon Nov 01 11:44:15 2010 -0400 > +++ b/NEWS Tue Nov 02 17:37:09 2010 -0700 > @@ -12,3 +12,4 @@ > > * Initial release of IcedTea-Web > * PR542: Plugin fails with NPE on http://www.openprocessing.org/visuals/iframe.php?visualID=2615 > +* Applets are now double-buffered to eliminate flicker in ones that do heavy drawing > diff -r 6c2527d42900 plugin/icedteanp/java/sun/applet/PluginAppletViewer.java > --- a/plugin/icedteanp/java/sun/applet/PluginAppletViewer.java Mon Nov 01 11:44:15 2010 -0400 > +++ b/plugin/icedteanp/java/sun/applet/PluginAppletViewer.java Tue Nov 02 17:37:09 2010 -0700 > @@ -359,6 +366,9 @@ > > private static Long requestIdentityCounter = 0L; > > + private Image bufferedFrameImage; > + private Graphics bufferedFrameImageGraphics; > + > /** > * Null constructor to allow instantiation via newInstance() > */ > @@ -2163,4 +2178,22 @@ > } > } > } > + > + /** > + * {@inheritDoc} > + */ > + public void update(Graphics g) { > + > + // If the image or the graphics don't exist, create new ones > + if (bufferedFrameImage == null || bufferedFrameImageGraphics == null) { > + bufferedFrameImage = createImage(getWidth(), getHeight()); > + bufferedFrameImageGraphics = bufferedFrameImage.getGraphics (); > + } > + > + // Paint off-screen > + paint(bufferedFrameImageGraphics); > + > + // Draw the painted image > + g.drawImage(bufferedFrameImage, 0, 0, this); > + } > } -- Andrew :) Free Java Software Engineer Red Hat, Inc. (http://www.redhat.com) Support Free Java! Contribute to GNU Classpath and the OpenJDK http://www.gnu.org/software/classpath http://openjdk.java.net PGP Key: 94EFD9D8 (http://subkeys.pgp.net) Fingerprint = F8EF F1EA 401E 2E60 15FA 7927 142C 2591 94EF D9D8 From andrew at icedtea.classpath.org Tue Nov 2 16:28:49 2010 From: andrew at icedtea.classpath.org (andrew at icedtea.classpath.org) Date: Tue, 02 Nov 2010 23:28:49 +0000 Subject: /hg/icedtea6: 3 new changesets Message-ID: changeset 13734765e6dd in /hg/icedtea6 details: http://icedtea.classpath.org/hg/icedtea6?cmd=changeset;node=13734765e6dd author: Andrew John Hughes date: Fri Oct 22 12:43:16 2010 +0100 Cleanup ecj.jar detection. 2010-10-22 Andrew John Hughes * acinclude.m4: (FIND_JAVAC): Don't fail if $JAVAC is empty, ecj.jar can be used. (FIND_ECJ_JAR): Check additional Gentoo locations. Fail only if both $JAVAC is empty and ECJ_JAR is no. changeset e8f1ae620c8e in /hg/icedtea6 details: http://icedtea.classpath.org/hg/icedtea6?cmd=changeset;node=e8f1ae620c8e author: Andrew John Hughes date: Tue Nov 02 23:26:57 2010 +0000 Fix hs19 on ppc machines. 2010-10-22 Andrew John Hughes * Makefile.am: Add new patch for hs19 builds only. * NEWS: Mention fix. * patches/openjdk/6994130-ppc_fix.patch: Fix build on PPC machines (thanks to Gary Benson). changeset 119d733ccf0a in /hg/icedtea6 details: http://icedtea.classpath.org/hg/icedtea6?cmd=changeset;node=119d733ccf0a author: Andrew John Hughes date: Tue Nov 02 23:28:02 2010 +0000 Merge diffstat: 6 files changed, 248 insertions(+), 12 deletions(-) ChangeLog | 28 +++ Makefile.am | 10 - NEWS | 5 acinclude.m4 | 11 - patches/icedtea-jtreg-international-fonts.patch | 195 +++++++++++++++++++++++ patches/openjdk/6994130-ppc_fix.patch | 11 + diffs (325 lines): diff -r 0bfb4898c039 -r 119d733ccf0a ChangeLog --- a/ChangeLog Wed Oct 20 14:45:55 2010 +0100 +++ b/ChangeLog Tue Nov 02 23:28:02 2010 +0000 @@ -1,4 +1,30 @@ 2010-10-19 Andrew John Hughes +2010-11-02 Pavel Tisnovsky + + * Makefile.am: + * patches/icedtea-jtreg-international-fonts.patch: + Added new regression test + patches/icedtea-jtreg-international-fonts.patch + for checking if all non-Latin fonts are installed + and properly configured. + +2010-10-22 Andrew John Hughes + + * Makefile.am: Add new patch for hs19 + builds only. + * NEWS: Mention fix. + * patches/openjdk/6994130-ppc_fix.patch: + Fix build on PPC machines (thanks to Gary + Benson). + +2010-10-22 Andrew John Hughes + + * acinclude.m4: + (FIND_JAVAC): Don't fail if $JAVAC is empty, + ecj.jar can be used. + (FIND_ECJ_JAR): Check additional Gentoo locations. + Fail only if both $JAVAC is empty and ECJ_JAR is no. + +2010-10-20 Andrew John Hughes * INSTALL: Clarify HotSpot build documentation. * acinclude.m4: diff -r 0bfb4898c039 -r 119d733ccf0a Makefile.am --- a/Makefile.am Wed Oct 20 14:45:55 2010 +0100 +++ b/Makefile.am Tue Nov 02 23:28:02 2010 +0000 @@ -291,10 +291,14 @@ ICEDTEA_PATCHES = \ patches/numa_on_early_glibc.patch \ patches/icedtea-shark-build.patch \ patches/openjdk/6985992-test_6933784.patch \ - patches/openjdk/6853592-badwindow-warning-fix.patch \ - patches/6703377-freetypescaler.patch + patches/openjdk/6853592-badwindow-warning-fix.patch \ + patches/6703377-freetypescaler.patch \ + patches/icedtea-jtreg-international-fonts.patch -if !WITH_ALT_HSBUILD +if WITH_ALT_HSBUILD +ICEDTEA_PATCHES += \ + patches/openjdk/6994130-ppc_fix.patch +else ICEDTEA_PATCHES += \ patches/shark_do_nothing_on_stub_frame.patch \ patches/icedtea-shark-build-hotspot.patch \ diff -r 0bfb4898c039 -r 119d733ccf0a NEWS --- a/NEWS Wed Oct 20 14:45:55 2010 +0100 +++ b/NEWS Tue Nov 02 23:28:02 2010 +0000 @@ -36,13 +36,14 @@ New in release 1.10 (2010-XX-XX): - S6980004, CVE-2010-3573: limit HTTP request cookie headers in HttpURLConnection - S6981426, CVE-2010-3574: limit use of TRACE method in HttpURLConnection - S6990437: Update with correct copyright info for source and test files from SSR10_02 fixes -* Backports from OpenJDK6 +* Backports - S4356282, RH525870: RFE: T2K should be used to rasterize CID/CFF fonts - S6954424: Support OpenType/CFF fonts in JDK 7 - S6438179: XToolkit.isTraySupported() result has nothing to do with the system tray - S6638712: Inference with wildcard types causes selection of inapplicable method - S6650759: Inference of formal type parameter (unused in formal parameters) is not performed -* Netx + - S6991430, PR579: Zero PowerPC fix. +* NetX - A new man page for javaws. - Add a new option -Xclearcache * Plugin diff -r 0bfb4898c039 -r 119d733ccf0a acinclude.m4 --- a/acinclude.m4 Wed Oct 20 14:45:55 2010 +0100 +++ b/acinclude.m4 Tue Nov 02 23:28:02 2010 +0000 @@ -135,9 +135,6 @@ AC_DEFUN([FIND_JAVAC], IT_FIND_JAVAC IT_FIND_ECJ - if test "x${JAVAC}" = x; then - AC_MSG_ERROR([cannot find a Java compiler, try --with-javac or --with-ecj]) - fi AC_SUBST(JAVAC) ]) @@ -332,7 +329,9 @@ AC_DEFUN([FIND_ECJ_JAR], if test -z "${ECJ_JAR}"; then for jar in /usr/share/java/eclipse-ecj.jar \ /usr/share/java/ecj.jar \ - /usr/share/eclipse-ecj-3.{2,3,4,5}/lib/ecj.jar; do + /usr/share/eclipse-ecj/ecj.jar \ + /usr/share/eclipse-ecj-3.{2,3,4,5}/lib/ecj.jar \ + /usr/share/ecj-gcj-3.{2,3,4,5}/lib/ecj.jar ; do if test -e $jar; then ECJ_JAR=$jar break @@ -343,8 +342,8 @@ AC_DEFUN([FIND_ECJ_JAR], fi fi AC_MSG_RESULT(${ECJ_JAR}) - if test "x${ECJ_JAR}" = "xno"; then - AC_MSG_ERROR("No compiler or ecj JAR file was found.") + if test "x${JAVAC}" = "x" && test "x${ECJ_JAR}" = "xno"; then + AC_MSG_ERROR([No compiler or ecj JAR file was found; try --with-javac, --with-ecj or --with-ecj-jar]) fi AC_SUBST(ECJ_JAR) ]) diff -r 0bfb4898c039 -r 119d733ccf0a patches/icedtea-jtreg-international-fonts.patch --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/patches/icedtea-jtreg-international-fonts.patch Tue Nov 02 23:28:02 2010 +0000 @@ -0,0 +1,195 @@ +--- /dev/null 2010-06-29 14:56:30.329576932 +0200 ++++ openjdk/jdk/test/java/awt/font/InternationalFonts/InternationalFontsRendering.java 2010-11-01 11:27:46.000000000 +0100 +@@ -0,0 +1,192 @@ ++import java.awt.Color; ++import java.awt.Font; ++import java.awt.Graphics2D; ++import java.awt.RenderingHints; ++import java.awt.image.BufferedImage; ++import java.io.File; ++import java.io.IOException; ++import java.util.Arrays; ++import java.util.List; ++import java.util.ArrayList; ++ ++import javax.imageio.ImageIO; ++ ++/** ++ * @test ++ * @run main InternationalFontsRendering ++ * @author Pavel Tisnovsky ++ * ++ * @summary This test check if all required fonts are properly installed and configured. ++ * ++ * This regression test checks if all required fonts are properly installed and ++ * that .src.properties font configuration is correct. The test is based on ++ * rendering certain characters from selected code pages into BufferedImage. ++ * ++ * When the font does not exists or font configuration is broken, only empty ++ * rectangle is rendered instead of the selected character shape. This rectangle ++ * is filtered and then the destination image is tested whether it is empty ++ * (=white). ++ * ++ * If test images with rendered characters needs to be created use following flag: ++ * -create-images ++ * ++ * regression for bug: https://bugzilla.redhat.com/show_bug.cgi?id=643674 ++ * (Bug 643674 Misconfigured Path for Asian Font) ++ * ++ */ ++public class InternationalFontsRendering ++{ ++ private static int WIDTH = 200; ++ private static int HEIGHT = 200; ++ ++ private static final int FONT_SIZE = 160; ++ ++ private static final int MINIMUM_HORIZONTAL_LINE_LENGTH = 70; ++ private static final int MINIMUM_VERTICAL_LINE_LENGTH = 80; ++ private static final int BLACK_WHITE_THRESHOLD = 128; ++ private static final int BLACK_PIXEL_COUNT_THRESHOLD = WIDTH * HEIGHT / 1000; ++ ++ private static final String[][] testedStrings = { ++ {"Latin-1", "abcdefABCDEF"}, ++ {"Latin-2", "??????????????????????????"}, ++ {"Cyrilic", "??????????????????"}, ++ {"Greek", "????????????????????????????????"}, ++ {"Asia-Test1", "???????????????"}, ++ {"Asia-Test2", "??????????????????"}, ++ {"Asia-Test3", "???????????????"}, ++ {"Asia-Test4", "???????????????"}, ++ }; ++ ++ /** ++ * Creates test image a renders one big character to it. ++ * @param testedString ++ * @return ++ */ ++ private BufferedImage createTestImage(String str) { ++ BufferedImage image = new BufferedImage(WIDTH, HEIGHT, BufferedImage.TYPE_BYTE_GRAY); ++ Graphics2D gc = image.createGraphics(); ++ gc.setBackground(Color.WHITE); ++ gc.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_OFF); ++ gc.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING, RenderingHints.VALUE_TEXT_ANTIALIAS_OFF); ++ gc.clearRect(0, 0, WIDTH, HEIGHT); ++ gc.setFont(new Font(Font.DIALOG, Font.PLAIN, FONT_SIZE)); ++ gc.setColor(Color.BLACK); ++ gc.drawString(str, 0, HEIGHT - 40); ++ gc.dispose(); ++ return image; ++ } ++ ++ /** ++ * Creates destination image and then copies data from source image to it ++ * @param src ++ * @return ++ */ ++ private BufferedImage createDestinationImage(BufferedImage src) { ++ BufferedImage image = new BufferedImage(WIDTH, HEIGHT, BufferedImage.TYPE_BYTE_GRAY); ++ src.copyData(image.getRaster()); ++ return image; ++ } ++ ++ /** ++ * Removes long horizontal lines from image ++ */ ++ private void removeHorizontalLines(BufferedImage image) { ++ for (int y = 0; y < image.getHeight(); y++) { ++ int startX = -1, endX = -1; ++ for (int x = 0; x < image.getWidth(); x++) { ++ int color = image.getRaster().getSample(x, y, 0); ++ if (startX < 0 && color <= BLACK_WHITE_THRESHOLD) { ++ startX = x; ++ //System.out.println("> " + y + "\t" + x); ++ } ++ if (startX > 0 && endX < 0 && color > BLACK_WHITE_THRESHOLD) { ++ endX = x; ++ //System.out.println("< " + y + "\t" + x); ++ } ++ } ++ // remove long horizontal line, but only if this line found detected in image ++ if (startX > 0 && endX > 0 && (endX - startX) > MINIMUM_HORIZONTAL_LINE_LENGTH) { ++ for (int x = startX; x < endX; x++) { ++ image.getRaster().setSample(x, y, 0, 255); ++ } ++ } ++ } ++ } ++ ++ /** ++ * Removes long vertical lines from image ++ */ ++ private void removeVerticalLines(BufferedImage image) { ++ for (int x = 0; x < image.getWidth(); x++) { ++ int startY = -1, endY = -1; ++ for (int y = 0; y < image.getHeight(); y++) { ++ int color = image.getRaster().getSample(x, y, 0); ++ if (startY < 0 && color <= BLACK_WHITE_THRESHOLD) { ++ startY = y; ++ } ++ if (startY > 0 && endY < 0 && color > BLACK_WHITE_THRESHOLD) { ++ endY = y; ++ //System.out.println("< " + y + "\t" + x); ++ } ++ } ++ // remove long vertical line, but only if this line found detected in image ++ if (startY > 0 && endY > 0 && (endY - startY) > MINIMUM_VERTICAL_LINE_LENGTH) { ++ for (int y = startY; y < endY; y++) { ++ image.getRaster().setSample(x, y, 0, 255); ++ } ++ } ++ } ++ } ++ ++ /** ++ * Test if image is almost empty (one large white area) ++ * @param image ++ * @return ++ */ ++ private boolean isImageAlmostEmpty(BufferedImage image) { ++ int blackPixelCount = 0; ++ for (int y = 0; y < image.getHeight(); y++) { ++ for (int x = 0; x < image.getWidth(); x++) { ++ if (image.getRaster().getSample(x, y, 0) < BLACK_WHITE_THRESHOLD) { ++ blackPixelCount++; ++ } ++ } ++ } ++ return blackPixelCount < BLACK_PIXEL_COUNT_THRESHOLD; ++ } ++ ++ public void runTest(boolean createImages) throws IOException ++ { ++ List badCharacters = new ArrayList(); ++ for (String[] testedString : testedStrings) { ++ System.out.println("\nTesting " + testedString[0]); ++ for (int i = 0; i < testedString[1].length(); i++) { ++ String str = testedString[1].substring(i, 1+i); ++ int code = str.charAt(0); ++ System.out.print(code + "\t"); ++ BufferedImage src = createTestImage(str); ++ BufferedImage dst = createDestinationImage(src); ++ removeHorizontalLines(dst); ++ removeVerticalLines(dst); ++ ++ if (createImages /* || true*/) { ++ ImageIO.write(src, "png", new File(code + "_src.png")); ++ ImageIO.write(dst, "png", new File(code + "_dst.png")); ++ } ++ ++ if (isImageAlmostEmpty(dst)) { ++ System.err.println("Bad rendering of character with code: " + code); ++ badCharacters.add(Integer.valueOf(code)); ++ } ++ } ++ } ++ if (!badCharacters.isEmpty()) { ++ throw new RuntimeException("Error in rendering of character(s) with code(s): " + badCharacters.toString()); ++ } ++ } ++ ++ public static void main(String[] args) throws IOException { ++ new InternationalFontsRendering().runTest(Arrays.asList(args).contains("-create-images")); ++ } ++} ++ diff -r 0bfb4898c039 -r 119d733ccf0a patches/openjdk/6994130-ppc_fix.patch --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/patches/openjdk/6994130-ppc_fix.patch Tue Nov 02 23:28:02 2010 +0000 @@ -0,0 +1,11 @@ +--- openjdk.orig/hotspot/src/share/vm/runtime/frame.cpp 2010-10-22 10:56:58.000000000 +0100 ++++ openjdk/hotspot/src/share/vm/runtime/frame.cpp 2010-10-22 10:56:58.000000000 +0100 +@@ -878,7 +878,7 @@ + + #endif /* CC_INTERP */ + +-#ifndef PPC ++#if !defined(PPC) || defined(ZERO) + if (m->is_native()) { + #ifdef CC_INTERP + f->do_oop((oop*)&istate->_oop_temp); From dhorak at redhat.com Wed Nov 3 03:15:33 2010 From: dhorak at redhat.com (Dan =?ISO-8859-1?Q?Hor=E1k?=) Date: Wed, 03 Nov 2010 11:15:33 +0100 Subject: build failure for java-1.6.0-openjdk-1.6.0.0-44.1.9.1.fc14 on s390 (32-bit) Message-ID: <1288779333.2887.30.camel@eagle.danny.cz> Hi, I'm working on the s390(x) port of Fedora and I got a build failure for the latest java-1.6.0-openjdk package on the s390 (32-bit) architecture, see http://s390.koji.fedoraproject.org/koji/taskinfo?taskID=220141 for details. Proposed fix is attached. With regards, Dan -------------- next part -------------- A non-text attachment was scrubbed... Name: java-1.6.0-openjdk-s390.patch Type: text/x-patch Size: 1095 bytes Desc: not available Url : http://mail.openjdk.java.net/pipermail/distro-pkg-dev/attachments/20101103/b1f11133/java-1.6.0-openjdk-s390.patch From andrew at icedtea.classpath.org Wed Nov 3 03:52:59 2010 From: andrew at icedtea.classpath.org (andrew at icedtea.classpath.org) Date: Wed, 03 Nov 2010 10:52:59 +0000 Subject: /hg/icedtea6: Bump to latest revision of hs19 (b09). Message-ID: changeset ef8a301ba119 in /hg/icedtea6 details: http://icedtea.classpath.org/hg/icedtea6?cmd=changeset;node=ef8a301ba119 author: Andrew John Hughes date: Wed Nov 03 10:52:50 2010 +0000 Bump to latest revision of hs19 (b09). 2010-11-02 Andrew John Hughes * Makefile.am: (replace-hotspot): Don't hardcode 'master' as the top-level directory, extract it from the url. * hotspot.map: Move to latest hs19 (currently only on baseline tree) diffstat: 3 files changed, 14 insertions(+), 3 deletions(-) ChangeLog | 9 +++++++++ Makefile.am | 6 ++++-- hotspot.map | 2 +- diffs (39 lines): diff -r 119d733ccf0a -r ef8a301ba119 ChangeLog --- a/ChangeLog Tue Nov 02 23:28:02 2010 +0000 +++ b/ChangeLog Wed Nov 03 10:52:50 2010 +0000 @@ -1,3 +1,12 @@ 2010-11-02 Pavel Tisnovsky + + * Makefile.am: + (replace-hotspot): Don't hardcode 'master' + as the top-level directory, extract it + from the url. + * hotspot.map: Move to latest hs19 (currently + only on baseline tree) + 2010-11-02 Pavel Tisnovsky * Makefile.am: diff -r 119d733ccf0a -r ef8a301ba119 Makefile.am --- a/Makefile.am Tue Nov 02 23:28:02 2010 +0000 +++ b/Makefile.am Wed Nov 03 10:52:50 2010 +0000 @@ -873,8 +873,10 @@ if WITH_ALT_HSBUILD if test -e ${HOTSPOT_SRC_ZIP} ; \ then \ $(TAR) xf $(HOTSPOT_SRC_ZIP) ; \ - chmod -R ug+w master-* ; \ - mv master-$$($(AWK) 'version==$$1 {print $$3}' version=$(HSBUILD) \ + dir=$$($(AWK) 'version==$$1 {print gensub(/.*\/([^/]*)$$/,"\\1","g",$$2)}' \ + version=hs19 $(abs_top_srcdir)/hotspot.map) ; \ + chmod -R ug+w $$dir-* ; \ + mv $$dir-$$($(AWK) 'version==$$1 {print $$3}' version=$(HSBUILD) \ $(abs_top_srcdir)/hotspot.map) openjdk/hotspot ; \ fi ; \ fi ; diff -r 119d733ccf0a -r ef8a301ba119 hotspot.map --- a/hotspot.map Tue Nov 02 23:28:02 2010 +0000 +++ b/hotspot.map Wed Nov 03 10:52:50 2010 +0000 @@ -1,2 +1,2 @@ # version url changeset md5sum -hs19 http://hg.openjdk.java.net/hsx/hsx19/master 0803c0f69b51 f174d20d004c5e1ad08929895dbee21c +hs19 http://hg.openjdk.java.net/hsx/hsx19/baseline 13edc857b967 f174d20d004c5e1ad08929895dbee21c From andrew at icedtea.classpath.org Wed Nov 3 03:54:14 2010 From: andrew at icedtea.classpath.org (andrew at icedtea.classpath.org) Date: Wed, 03 Nov 2010 10:54:14 +0000 Subject: /hg/icedtea6: Update md5sum of hs19 tarball. Message-ID: changeset 51aa61578bf2 in /hg/icedtea6 details: http://icedtea.classpath.org/hg/icedtea6?cmd=changeset;node=51aa61578bf2 author: Andrew John Hughes date: Wed Nov 03 10:54:08 2010 +0000 Update md5sum of hs19 tarball. 2010-11-02 Andrew John Hughes * hotspot.map: Update md5sum for new HotSpot. diffstat: 2 files changed, 6 insertions(+), 1 deletion(-) ChangeLog | 5 +++++ hotspot.map | 2 +- diffs (19 lines): diff -r ef8a301ba119 -r 51aa61578bf2 ChangeLog --- a/ChangeLog Wed Nov 03 10:52:50 2010 +0000 +++ b/ChangeLog Wed Nov 03 10:54:08 2010 +0000 @@ -1,3 +1,8 @@ 2010-11-02 Andrew John Hughes + + * hotspot.map: Update md5sum for new + HotSpot. + 2010-11-02 Andrew John Hughes * Makefile.am: diff -r ef8a301ba119 -r 51aa61578bf2 hotspot.map --- a/hotspot.map Wed Nov 03 10:52:50 2010 +0000 +++ b/hotspot.map Wed Nov 03 10:54:08 2010 +0000 @@ -1,2 +1,2 @@ # version url changeset md5sum -hs19 http://hg.openjdk.java.net/hsx/hsx19/baseline 13edc857b967 f174d20d004c5e1ad08929895dbee21c +hs19 http://hg.openjdk.java.net/hsx/hsx19/baseline 13edc857b967 aecc54d4c62c4e4b2e54bdafb41309dd From jvanek at redhat.com Wed Nov 3 04:25:22 2010 From: jvanek at redhat.com (Jiri Vanek) Date: Wed, 03 Nov 2010 12:25:22 +0100 Subject: patch for Asian fonts for fedora, changing paths to fonts files. Dependencies are necessary to be added to rpms. In-Reply-To: <4CD05AAD.4080106@oracle.com> References: <4CD03846.5060103@redhat.com> <4CD05AAD.4080106@oracle.com> Message-ID: <4CD146A2.60806@redhat.com> background is here: https://bugzilla.redhat.com/show_bug.cgi?id=643674 and https://bugzilla.redhat.com/show_bug.cgi?id=582455 and https://bugzilla.redhat.com/show_bug.cgi?id=622680 I was speaking with author of cjkuni fonts (and will ensure with autor of beakmuk and szma and lohit - but expect same result)and he confiremd that in f14 there was big refactoring of fonts (backported to f13 but no more deep ). This newly re-factored paths should be "final" (:DD ) Reproducer was created for those fonts (arabic - default ok, chinese, japanese, corean and indic) - as Pavel mentioned some time ago. So my suggestion is to update fontconfig.Fedora.properties to new version ant to keep old file as fontconfig.Fedora.12.properties and 11 (nothing more we suppotrt (?)..) This patch is for all except indic (which will come soon) I think we have to move this, because there are missconfigured paths also in rhel 5 and 6 and..there are also complains (Oracle do not support those fonts, so i can recommend nothing more then to swap to openjdk...) Except configuration issue there is also issue with dependencies. Whether to add them to spec file. I'm for add them into spec file. As Deepak mentioned - 40mb of dependencies is not such a big amount in today's days. Regards J. On 11/02/2010 07:38 PM, Phil Race wrote: > Is this because some new version of Fedora moved the fonts ? > If you fix these then any one running on the old version of Fedora will > be broken by this. > What needs to happen is that you first copy the existing > fontconfig.Fedora.properties.src > to match the old version, eg : > > % cp fontconfig.Fedora.properties.src fontconfig.Fedora.9.properties.src > > Then that will get picked up on the old version. > You'd need to to this for all older versions you think are worthy of > support, eg > if your proposed change is for v. 11 and the old file is applicable to > v.10 as well > then you'd also need to do > > % cp fontconfig.Fedora.9.properties.src fontconfig.Fedora.10.properties.src > > For more information read > > http://download.oracle.com/javase/6/docs/technotes/guides/intl/fontconfig.html > > > -phil. > > On 11/2/2010 9:11 AM, Jiri Vanek wrote: >> *** fontconfig.Fedora.properties.src 2010-11-02 15:47:08.042037406 +0100 >> --- fontconfig.Fedora.properties.src 2010-11-02 15:42:43.000000000 +0100 >> *************** >> *** 356,367 **** >> >> filename.DejaVu_Serif_Oblique=/usr/share/fonts/dejavu/DejaVuSerif-Oblique.ttf >> >> >> filename.DejaVu_Serif_Bold_Oblique=/usr/share/fonts/dejavu/DejaVuSerif-BoldOblique.ttf >> >> >> ! >> filename.Sazanami_Gothic=/usr/share/fonts/sazanami-fonts-gothic/sazanami-gothic.ttf >> >> ! >> filename.Sazanami_Mincho=/usr/share/fonts/sazanami-fonts-mincho/sazanami-mincho.ttf >> >> ! >> filename.AR_PL_ShanHeiSun_Uni=/usr/share/fonts/cjkunifonts-uming/uming.ttc >> >> ! filename.AR_PL_ZenKai_Uni=/usr/share/fonts/cjkunifonts-ukai/ukai.ttc >> ! filename.Baekmuk_Gulim=/usr/share/fonts/baekmuk-ttf-gulim/gulim.ttf >> ! filename.Baekmuk_Batang=/usr/share/fonts/baekmuk-ttf-batang/batang.ttf >> >> filename.Lohit_Bengali=/usr/share/fonts/lohit-bengali/lohit_bn.ttf >> filename.Lohit_Gujarati=/usr/share/fonts/lohit-gujarati/lohit_gu.ttf >> --- 356,367 ---- >> >> filename.DejaVu_Serif_Oblique=/usr/share/fonts/dejavu/DejaVuSerif-Oblique.ttf >> >> >> filename.DejaVu_Serif_Bold_Oblique=/usr/share/fonts/dejavu/DejaVuSerif-BoldOblique.ttf >> >> >> ! >> filename.Sazanami_Gothic=/usr/share/fonts/sazanami/gothic/sazanami-gothic.ttf >> >> ! >> filename.Sazanami_Mincho=/usr/share/fonts/sazanami/mincho/sazanami-mincho.ttf >> >> ! filename.AR_PL_ShanHeiSun_Uni=/usr/share/fonts/cjkuni-uming/uming.ttc >> ! filename.AR_PL_ZenKai_Uni=/usr/share/fonts/cjkuni-ukai/ukai.ttc >> ! filename.Baekmuk_Gulim=/usr/share/fonts/baekmuk-ttf/gulim.ttf >> ! filename.Baekmuk_Batang=/usr/share/fonts/baekmuk-ttf/batang.ttf >> >> filename.Lohit_Bengali=/usr/share/fonts/lohit-bengali/lohit_bn.ttf >> filename.Lohit_Gujarati=/usr/share/fonts/lohit-gujarati/lohit_gu.ttf > From jvanek at redhat.com Wed Nov 3 04:44:56 2010 From: jvanek at redhat.com (jiri Vanek) Date: Wed, 3 Nov 2010 07:44:56 -0400 (EDT) Subject: patch for Asian fonts for fedora, changing paths to fonts files. Dependencies are necessary to be added to rpms. In-Reply-To: <4CD146A2.60806@redhat.com> Message-ID: <1058787953.1192831288784696040.JavaMail.root@zmail05.collab.prod.int.phx2.redhat.com> background is here: https://bugzilla.redhat.com/show_bug.cgi?id=643674 and https://bugzilla.redhat.com/show_bug.cgi?id=582455 and https://bugzilla.redhat.com/show_bug.cgi?id=622680 I was speaking with author of cjkuni fonts (and will ensure with autor of beakmuk and szma and lohit - but expect same result)and he confiremd that in f14 there was big refactoring of fonts (backported to f13 but no more deep ). This newly re-factored paths should be "final" (:DD ) Reproducer was created for those fonts (arabic - default ok, chinese, japanese, corean and indic) - as Pavel mentioned some time ago. So my suggestion is to update fontconfig.Fedora.properties to new version ant to keep old file as fontconfig.Fedora.12.properties and 11 (nothing more we suppotrt (?)..) This patch is for all except indic (which will come soon) I think we have to move this, because there are missconfigured paths also in rhel 5 and 6 and..there are also complains (Oracle do not support those fonts, so i can recommend nothing more then to swap to openjdk...) Except configuration issue there is also issue with dependencies. Whether to add them to spec file. I'm for add them into spec file. As Deepak mentioned - 40mb of dependencies is not such a big amount in today's days. Regards J. On 11/02/2010 07:38 PM, Phil Race wrote: > Is this because some new version of Fedora moved the fonts ? > If you fix these then any one running on the old version of Fedora will > be broken by this. > What needs to happen is that you first copy the existing > fontconfig.Fedora.properties.src > to match the old version, eg : > > % cp fontconfig.Fedora.properties.src fontconfig.Fedora.9.properties.src > > Then that will get picked up on the old version. > You'd need to to this for all older versions you think are worthy of > support, eg > if your proposed change is for v. 11 and the old file is applicable to > v.10 as well > then you'd also need to do > > % cp fontconfig.Fedora.9.properties.src fontconfig.Fedora.10.properties.src > > For more information read > > http://download.oracle.com/javase/6/docs/technotes/guides/intl/fontconfig.html > > > -phil. > > On 11/2/2010 9:11 AM, Jiri Vanek wrote: >> *** fontconfig.Fedora.properties.src 2010-11-02 15:47:08.042037406 +0100 >> --- fontconfig.Fedora.properties.src 2010-11-02 15:42:43.000000000 +0100 >> *************** >> *** 356,367 **** >> >> filename.DejaVu_Serif_Oblique=/usr/share/fonts/dejavu/DejaVuSerif-Oblique.ttf >> >> >> filename.DejaVu_Serif_Bold_Oblique=/usr/share/fonts/dejavu/DejaVuSerif-BoldOblique.ttf >> >> >> ! >> filename.Sazanami_Gothic=/usr/share/fonts/sazanami-fonts-gothic/sazanami-gothic.ttf >> >> ! >> filename.Sazanami_Mincho=/usr/share/fonts/sazanami-fonts-mincho/sazanami-mincho.ttf >> >> ! >> filename.AR_PL_ShanHeiSun_Uni=/usr/share/fonts/cjkunifonts-uming/uming.ttc >> >> ! filename.AR_PL_ZenKai_Uni=/usr/share/fonts/cjkunifonts-ukai/ukai.ttc >> ! filename.Baekmuk_Gulim=/usr/share/fonts/baekmuk-ttf-gulim/gulim.ttf >> ! filename.Baekmuk_Batang=/usr/share/fonts/baekmuk-ttf-batang/batang.ttf >> >> filename.Lohit_Bengali=/usr/share/fonts/lohit-bengali/lohit_bn.ttf >> filename.Lohit_Gujarati=/usr/share/fonts/lohit-gujarati/lohit_gu.ttf >> --- 356,367 ---- >> >> filename.DejaVu_Serif_Oblique=/usr/share/fonts/dejavu/DejaVuSerif-Oblique.ttf >> >> >> filename.DejaVu_Serif_Bold_Oblique=/usr/share/fonts/dejavu/DejaVuSerif-BoldOblique.ttf >> >> >> ! >> filename.Sazanami_Gothic=/usr/share/fonts/sazanami/gothic/sazanami-gothic.ttf >> >> ! >> filename.Sazanami_Mincho=/usr/share/fonts/sazanami/mincho/sazanami-mincho.ttf >> >> ! filename.AR_PL_ShanHeiSun_Uni=/usr/share/fonts/cjkuni-uming/uming.ttc >> ! filename.AR_PL_ZenKai_Uni=/usr/share/fonts/cjkuni-ukai/ukai.ttc >> ! filename.Baekmuk_Gulim=/usr/share/fonts/baekmuk-ttf/gulim.ttf >> ! filename.Baekmuk_Batang=/usr/share/fonts/baekmuk-ttf/batang.ttf >> >> filename.Lohit_Bengali=/usr/share/fonts/lohit-bengali/lohit_bn.ttf >> filename.Lohit_Gujarati=/usr/share/fonts/lohit-gujarati/lohit_gu.ttf > From omajid at redhat.com Wed Nov 3 06:32:24 2010 From: omajid at redhat.com (Omair Majid) Date: Wed, 03 Nov 2010 09:32:24 -0400 Subject: [icedtea-web] RFC: Patch to double-buffer applets In-Reply-To: <20101102213756.GB9563@redhat.com> References: <20101102213155.GA9563@redhat.com> <20101102213756.GB9563@redhat.com> Message-ID: <4CD16468.1000306@redhat.com> Hi Deepak, On 11/02/2010 05:37 PM, Deepak Bhole wrote: > * Deepak Bhole [2010-11-02 17:31]: >> Hi, >> >> IcedTea plugin currently does not double-buffer the applet panel. As a >> result, some applets may flicker depending on the machine. >> >> Attached patch buffers the frame offscreen and then draws it, thereby >> addressing the issue. >> Is there a specific test case that this fixes? The only flickering applet that I know of is at http://download.oracle.com/javase/1.4.2/docs/guide/misc/applet.html, and I dont see any change in that applet with the patch applied. >> ChangeLog: >> 2010-11-02 Deepak Bhole >> >> * plugin/icedteanp/java/sun/applet/PluginAppletViewer.java (update): >> Override method and implement double-buffering. >> >> Cheers, >> Deepak > > > Doh! There shouldn't be a println in there. New patch attached. I also > fixed the variable names for the image and its graphics. > > >> diff -r 6c2527d42900 ChangeLog >> --- a/ChangeLog Mon Nov 01 11:44:15 2010 -0400 >> +++ b/ChangeLog Tue Nov 02 17:29:03 2010 -0700 >> @@ -1,3 +1,8 @@ >> +2010-11-02 Deepak Bhole >> + >> + * plugin/icedteanp/java/sun/applet/PluginAppletViewer.java (update): >> + Override method and implement double-buffering. >> + >> 2010-11-01 Omair Majid >> >> * Makefile.am (clean-IcedTeaPlugin): Only delete launcher directory if it >> diff -r 6c2527d42900 NEWS >> --- a/NEWS Mon Nov 01 11:44:15 2010 -0400 >> +++ b/NEWS Tue Nov 02 17:29:03 2010 -0700 >> @@ -12,3 +12,4 @@ >> >> * Initial release of IcedTea-Web >> * PR542: Plugin fails with NPE on http://www.openprocessing.org/visuals/iframe.php?visualID=2615 >> +* Applets are now double-buffered to eliminate flicker in ones that do heavy drawing >> diff -r 6c2527d42900 plugin/icedteanp/java/sun/applet/PluginAppletViewer.java >> --- a/plugin/icedteanp/java/sun/applet/PluginAppletViewer.java Mon Nov 01 11:44:15 2010 -0400 >> +++ b/plugin/icedteanp/java/sun/applet/PluginAppletViewer.java Tue Nov 02 17:29:03 2010 -0700 >> @@ -359,6 +366,9 @@ >> >> private static Long requestIdentityCounter = 0L; >> >> + private Image bufferedPanelImage; >> + private Graphics bufferedImageGraphics; >> + >> /** >> * Null constructor to allow instantiation via newInstance() >> */ >> @@ -2163,4 +2178,24 @@ >> } >> } >> } >> + >> + /** >> + * {@inheritDoc} >> + */ >> + public void update(Graphics g) { >> + >> + System.err.println("Buffering and drawing"); >> + >> + // If the image or the graphics don't exist, create new ones >> + if (bufferedPanelImage == null || bufferedImageGraphics == null) { >> + bufferedPanelImage = createImage(getWidth(), getHeight()); >> + bufferedImageGraphics = bufferedPanelImage.getGraphics (); >> + } >> + >> + // Paint off-screen >> + paint(bufferedImageGraphics); The overridden method is update, but paint is called here instead. Is there a reason for that? As far as I know, the semantics of update() are slightly different from paint() - update() clears the background and then calls paint(). Perhaps super.update() might be more appropriate? >> + >> + // Draw the painted image >> + g.drawImage(bufferedPanelImage, 0, 0, this); >> + } >> } > Thanks, Omair From jvanek at redhat.com Wed Nov 3 07:39:53 2010 From: jvanek at redhat.com (Jiri Vanek) Date: Wed, 03 Nov 2010 15:39:53 +0100 Subject: patch to Assian - inidc, chinese, japanese and korean - languages, based on ptisnovsly reproducer Message-ID: <4CD17439.6010201@redhat.com> --- fontconfig.Fedora.properties.src 2010-11-03 13:06:58.124299143 +0100 +++ fontconfig.Fedora.properties.src 2010-11-03 15:07:14.033297761 +0100 @@ -35,6 +35,8 @@ dialog.plain.korean=Baekmuk Gulim dialog.plain.chinese-big5=AR PL ShanHeiSun Uni dialog.plain.chinese-gb18030=AR PL ShanHeiSun Uni +dialog.plain.assamese=Lohit Assamese +dialog.plain.devanagari=Lohit Devanagari dialog.plain.bengali=Lohit Bengali dialog.plain.gujarati=Lohit Gujarati dialog.plain.hindi=Lohit Hindi @@ -50,6 +52,8 @@ dialog.bold.korean=Baekmuk Gulim dialog.bold.chinese-big5=AR PL ShanHeiSun Uni dialog.bold.chinese-gb18030=AR PL ShanHeiSun Uni +dialog.bold.assamese=Lohit Assamese +dialog.bold.devanagari=Lohit Devanagari dialog.bold.bengali=Lohit Bengali dialog.bold.gujarati=Lohit Gujarati dialog.bold.hindi=Lohit Hindi @@ -65,6 +69,8 @@ dialog.italic.korean=Baekmuk Gulim dialog.italic.chinese-big5=AR PL ShanHeiSun Uni dialog.italic.chinese-gb18030=AR PL ShanHeiSun Uni +dialog.italic.assamese=Lohit Assamese +dialog.italic.devanagari=Lohit Devanagari dialog.italic.bengali=Lohit Bengali dialog.italic.gujarati=Lohit Gujarati dialog.italic.hindi=Lohit Hindi @@ -80,6 +86,8 @@ dialog.bolditalic.korean=Baekmuk Gulim dialog.bolditalic.chinese-big5=AR PL ShanHeiSun Uni dialog.bolditalic.chinese-gb18030=AR PL ShanHeiSun Uni +dialog.bolditalic.assamese=Lohit Assamese +dialog.bolditalic.devanagari=Lohit Devanagari dialog.bolditalic.bengali=Lohit Bengali dialog.bolditalic.gujarati=Lohit Gujarati dialog.bolditalic.hindi=Lohit Hindi @@ -95,6 +103,8 @@ sansserif.plain.korean=Baekmuk Gulim sansserif.plain.chinese-big5=AR PL ShanHeiSun Uni sansserif.plain.chinese-gb18030=AR PL ShanHeiSun Uni +sansserif.plain.assamese=Lohit Assamese +sansserif.plain.devanagari=Lohit Devanagari sansserif.plain.bengali=Lohit Bengali sansserif.plain.gujarati=Lohit Gujarati sansserif.plain.hindi=Lohit Hindi @@ -110,6 +120,8 @@ sansserif.bold.korean=Baekmuk Gulim sansserif.bold.chinese-big5=AR PL ShanHeiSun Uni sansserif.bold.chinese-gb18030=AR PL ShanHeiSun Uni +sansserif.bold.assamese=Lohit Assamese +sansserif.bold.devanagari=Lohit Devanagari sansserif.bold.bengali=Lohit Bengali sansserif.bold.gujarati=Lohit Gujarati sansserif.bold.hindi=Lohit Hindi @@ -125,6 +137,8 @@ sansserif.italic.korean=Baekmuk Gulim sansserif.italic.chinese-big5=AR PL ShanHeiSun Uni sansserif.italic.chinese-gb18030=AR PL ShanHeiSun Uni +sansserif.italic.assamese=Lohit Assamese +sansserif.italic.devanagari=Lohit Devanagari sansserif.italic.bengali=Lohit Bengali sansserif.italic.gujarati=Lohit Gujarati sansserif.italic.hindi=Lohit Hindi @@ -140,6 +154,8 @@ sansserif.bolditalic.korean=Baekmuk Gulim sansserif.bolditalic.chinese-big5=AR PL ShanHeiSun Uni sansserif.bolditalic.chinese-gb18030=AR PL ShanHeiSun Uni +sansserif.bolditalic.assamese=Lohit Assamese +sansserif.bolditalic.devanagari=Lohit Devanagari sansserif.bolditalic.bengali=Lohit Bengali sansserif.bolditalic.gujarati=Lohit Gujarati sansserif.bolditalic.hindi=Lohit Hindi @@ -155,6 +171,8 @@ serif.plain.korean=Baekmuk Batang serif.plain.chinese-big5=AR PL ZenKai Uni serif.plain.chinese-gb18030=AR PL ZenKai Uni +serif.plain.assamese=Lohit Assamese +serif.plain.devanagari=Lohit Devanagari serif.plain.bengali=Lohit Bengali serif.plain.gujarati=Lohit Gujarati serif.plain.hindi=Lohit Hindi @@ -170,6 +188,8 @@ serif.bold.korean=Baekmuk Batang serif.bold.chinese-big5=AR PL ZenKai Uni serif.bold.chinese-gb18030=AR PL ZenKai Uni +serif.bold.assamese=Lohit Assamese +serif.bold.devanagari=Lohit Devanagari serif.bold.bengali=Lohit Bengali serif.bold.gujarati=Lohit Gujarati serif.bold.hindi=Lohit Hindi @@ -185,6 +205,8 @@ serif.italic.korean=Baekmuk Batang serif.italic.chinese-big5=AR PL ZenKai Uni serif.italic.chinese-gb18030=AR PL ZenKai Uni +serif.italic.assamese=Lohit Assamese +serif.italic.devanagari=Lohit Devanagari serif.italic.bengali=Lohit Bengali serif.italic.gujarati=Lohit Gujarati serif.italic.hindi=Lohit Hindi @@ -200,6 +222,8 @@ serif.bolditalic.korean=Baekmuk Batang serif.bolditalic.chinese-big5=AR PL ZenKai Uni serif.bolditalic.chinese-gb18030=AR PL ZenKai Uni +serif.bolditalic.assamese=Lohit Assamese +serif.bolditalic.devanagari=Lohit Devanagari serif.bolditalic.bengali=Lohit Bengali serif.bolditalic.gujarati=Lohit Gujarati serif.bolditalic.hindi=Lohit Hindi @@ -215,6 +239,8 @@ monospaced.plain.korean=Baekmuk Gulim monospaced.plain.chinese-big5=AR PL ShanHeiSun Uni monospaced.plain.chinese-gb18030=AR PL ShanHeiSun Uni +monospaced.plain.assamese=Lohit Assamese +monospaced.plain.devanagari=Lohit Devanagari monospaced.plain.bengali=Lohit Bengali monospaced.plain.gujarati=Lohit Gujarati monospaced.plain.hindi=Lohit Hindi @@ -230,6 +256,8 @@ monospaced.bold.korean=Baekmuk Gulim monospaced.bold.chinese-big5=AR PL ShanHeiSun Uni monospaced.bold.chinese-gb18030=AR PL ShanHeiSun Uni +monospaced.bold.assamese=Lohit Assamese +monospaced.bold.devanagari=Lohit Devanagari monospaced.bold.bengali=Lohit Bengali monospaced.bold.gujarati=Lohit Gujarati monospaced.bold.hindi=Lohit Hindi @@ -245,6 +273,8 @@ monospaced.italic.korean=Baekmuk Gulim monospaced.italic.chinese-big5=AR PL ShanHeiSun Uni monospaced.italic.chinese-gb18030=AR PL ShanHeiSun Uni +monospaced.italic.assamese=Lohit Assamese +monospaced.italic.devanagari=Lohit Devanagari monospaced.italic.bengali=Lohit Bengali monospaced.italic.gujarati=Lohit Gujarati monospaced.italic.hindi=Lohit Hindi @@ -260,6 +290,8 @@ monospaced.bolditalic.korean=Baekmuk Gulim monospaced.bolditalic.chinese-big5=AR PL ShanHeiSun Uni monospaced.bolditalic.chinese-gb18030=AR PL ShanHeiSun Uni +monospaced.bolditalic.assamese=Lohit Assamese +monospaced.bolditalic.devanagari=Lohit Devanagari monospaced.bolditalic.bengali=Lohit Bengali monospaced.bolditalic.gujarati=Lohit Gujarati monospaced.bolditalic.hindi=Lohit Hindi @@ -275,6 +307,8 @@ dialoginput.plain.korean=Baekmuk Gulim dialoginput.plain.chinese-big5=AR PL ShanHeiSun Uni dialoginput.plain.chinese-gb18030=AR PL ShanHeiSun Uni +dialoginput.plain.assamese=Lohit Assamese +dialoginput.plain.devanagari=Lohit Devanagari dialoginput.plain.bengali=Lohit Bengali dialoginput.plain.gujarati=Lohit Gujarati dialoginput.plain.hindi=Lohit Hindi @@ -290,6 +324,8 @@ dialoginput.bold.korean=Baekmuk Gulim dialoginput.bold.chinese-big5=AR PL ShanHeiSun Uni dialoginput.bold.chinese-gb18030=AR PL ShanHeiSun Uni +dialoginput.bold.assamese=Lohit Assamese +dialoginput.bold.devanagari=Lohit Devanagari dialoginput.bold.bengali=Lohit Bengali dialoginput.bold.gujarati=Lohit Gujarati dialoginput.bold.hindi=Lohit Hindi @@ -305,6 +341,8 @@ dialoginput.italic.korean=Baekmuk Gulim dialoginput.italic.chinese-big5=AR PL ShanHeiSun Uni dialoginput.italic.chinese-gb18030=AR PL ShanHeiSun Uni +dialoginput.italic.assamese=Lohit Assamese +dialoginput.italic.devanagari=Lohit Devanagari dialoginput.italic.bengali=Lohit Bengali dialoginput.italic.gujarati=Lohit Gujarati dialoginput.italic.hindi=Lohit Hindi @@ -320,6 +358,8 @@ dialoginput.bolditalic.korean=Baekmuk Gulim dialoginput.bolditalic.chinese-big5=AR PL ShanHeiSun Uni dialoginput.bolditalic.chinese-gb18030=AR PL ShanHeiSun Uni +dialoginput.bolditalic.assamese=Lohit Assamese +dialoginput.bolditalic.devanagari=Lohit Devanagari dialoginput.bolditalic.bengali=Lohit Bengali dialoginput.bolditalic.gujarati=Lohit Gujarati dialoginput.bolditalic.hindi=Lohit Hindi @@ -356,21 +396,24 @@ filename.DejaVu_Serif_Oblique=/usr/share/fonts/dejavu/DejaVuSerif-Oblique.ttf filename.DejaVu_Serif_Bold_Oblique=/usr/share/fonts/dejavu/DejaVuSerif-BoldOblique.ttf -filename.Sazanami_Gothic=/usr/share/fonts/sazanami-fonts-gothic/sazanami-gothic.ttf -filename.Sazanami_Mincho=/usr/share/fonts/sazanami-fonts-mincho/sazanami-mincho.ttf -filename.AR_PL_ShanHeiSun_Uni=/usr/share/fonts/cjkunifonts-uming/uming.ttc -filename.AR_PL_ZenKai_Uni=/usr/share/fonts/cjkunifonts-ukai/ukai.ttc -filename.Baekmuk_Gulim=/usr/share/fonts/baekmuk-ttf-gulim/gulim.ttf -filename.Baekmuk_Batang=/usr/share/fonts/baekmuk-ttf-batang/batang.ttf +filename.Sazanami_Gothic=/usr/share/fonts/sazanami/gothic/sazanami-gothic.ttf +filename.Sazanami_Mincho=/usr/share/fonts/sazanami/mincho/sazanami-mincho.ttf +filename.AR_PL_ShanHeiSun_Uni=/usr/share/fonts/cjkuni-uming/uming.ttc +filename.AR_PL_ZenKai_Uni=/usr/share/fonts/cjkuni-ukai/ukai.ttc +filename.Baekmuk_Gulim=/usr/share/fonts/baekmuk-ttf/gulim.ttf +filename.Baekmuk_Batang=/usr/share/fonts/baekmuk-ttf/batang.ttf + +filename.Lohit_Assamese=/usr/share/fonts/lohit-assamese/Lohit-Assamese.ttf +filename.Lohit_Devanagari=/usr/share/fonts/lohit-devanagari/Lohit-Devanagari.ttf +filename.Lohit_Bengali=/usr/share/fonts/lohit-bengali/Lohit-Bengali.ttf +filename.Lohit_Gujarati=/usr/share/fonts/lohit-gujarati/Lohit-Gujarati.ttf +filename.Lohit_Hindi=/usr/share/fonts/lohit-devanagari/Lohit-Devanagari.ttf +filename.Lohit_Kannda=/usr/share/fonts/lohit-kannada/Lohit-Kannada.ttf +filename.Lohit_Malayalam=/usr/share/fonts/lohit-malayalam/Lohit-Malayalam.ttf +filename.Lohit_Oriya=/usr/share/fonts/lohit-oriya/Lohit-Oriya.ttf +filename.Lohit_Punjabi=/usr/share/fonts/lohit-punjabi/Lohit-Punjabi.ttf +filename.Lohit_Tamil=/usr/share/fonts/lohit-tamil/Lohit-Tamil.ttf +filename.Lohit_Telugu=/usr/share/fonts/lohit-telugu/Lohit-Telugu.ttf -filename.Lohit_Bengali=/usr/share/fonts/lohit-bengali/lohit_bn.ttf -filename.Lohit_Gujarati=/usr/share/fonts/lohit-gujarati/lohit_gu.ttf -filename.Lohit_Hindi=/usr/share/fonts/lohit-hindi/lohit_hi.ttf -filename.Lohit_Kannda=/usr/share/fonts/lohit-kannada/lohit_kn.ttf -filename.Lohit_Malayalam=/usr/share/fonts/lohit-malayalam/lohit_ml.ttf -filename.Lohit_Oriya=/usr/share/fonts/lohit-oriya/lohit_or.ttf -filename.Lohit_Punjabi=/usr/share/fonts/lohit-punjabi/lohit_pa.ttf -filename.Lohit_Tamil=/usr/share/fonts/lohit-tamil/lohit_ta.ttf -filename.Lohit_Telugu=/usr/share/fonts/lohit-telugu/lohit_te.ttf filename.LKLUG=/usr/share/fonts/lklug/lklug.ttf --- /dev/null 2010-11-03 15:11:54.580570056 +0100 +++ fontconfig.Fedora.12.properties.src 2010-11-03 13:06:58.124299143 +0100 @@ -0,0 +1,376 @@ +# +# Copyright 2007 Sun Microsystems, Inc. All Rights Reserved. +# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +# +# This code is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License version 2 only, as +# published by the Free Software Foundation. Sun designates this +# particular file as subject to the "Classpath" exception as provided +# by Sun in the LICENSE file that accompanied this code. +# +# This code is distributed in the hope that it will be useful, but WITHOUT +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +# version 2 for more details (a copy is included in the LICENSE file that +# accompanied this code). +# +# You should have received a copy of the GNU General Public License version +# 2 along with this work; if not, write to the Free Software Foundation, +# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. +# +# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, +# CA 95054 USA or visit www.sun.com if you need additional information or +# have any questions. +# + +# Version + +# Uses Fedora 9 fonts and file paths. +version=1 + +# Component Font Mappings + +dialog.plain.latin-1=DejaVu Sans +dialog.plain.japanese-x0208=Sazanami Gothic +dialog.plain.korean=Baekmuk Gulim +dialog.plain.chinese-big5=AR PL ShanHeiSun Uni +dialog.plain.chinese-gb18030=AR PL ShanHeiSun Uni +dialog.plain.bengali=Lohit Bengali +dialog.plain.gujarati=Lohit Gujarati +dialog.plain.hindi=Lohit Hindi +dialog.plain.malayalam=Lohit Malayalam +dialog.plain.oriya=Lohit Oriya +dialog.plain.punjabi=Lohit Punjabi +dialog.plain.tamil=Lohit Tamil +dialog.plain.telugu=Lohit Telugu +dialog.plain.sinhala=LKLUG + +dialog.bold.latin-1=DejaVu Sans Bold +dialog.bold.japanese-x0208=Sazanami Gothic +dialog.bold.korean=Baekmuk Gulim +dialog.bold.chinese-big5=AR PL ShanHeiSun Uni +dialog.bold.chinese-gb18030=AR PL ShanHeiSun Uni +dialog.bold.bengali=Lohit Bengali +dialog.bold.gujarati=Lohit Gujarati +dialog.bold.hindi=Lohit Hindi +dialog.bold.malayalam=Lohit Malayalam +dialog.bold.oriya=Lohit Oriya +dialog.bold.punjabi=Lohit Punjabi +dialog.bold.tamil=Lohit Tamil +dialog.bold.telugu=Lohit Telugu +dialog.bold.sinhala=LKLUG + +dialog.italic.latin-1=DejaVu Sans Oblique +dialog.italic.japanese-x0208=Sazanami Gothic +dialog.italic.korean=Baekmuk Gulim +dialog.italic.chinese-big5=AR PL ShanHeiSun Uni +dialog.italic.chinese-gb18030=AR PL ShanHeiSun Uni +dialog.italic.bengali=Lohit Bengali +dialog.italic.gujarati=Lohit Gujarati +dialog.italic.hindi=Lohit Hindi +dialog.italic.malayalam=Lohit Malayalam +dialog.italic.oriya=Lohit Oriya +dialog.italic.punjabi=Lohit Punjabi +dialog.italic.tamil=Lohit Tamil +dialog.italic.telugu=Lohit Telugu +dialog.italic.sinhala=LKLUG + +dialog.bolditalic.latin-1=DejaVu Sans Bold Oblique +dialog.bolditalic.japanese-x0208=Sazanami Gothic +dialog.bolditalic.korean=Baekmuk Gulim +dialog.bolditalic.chinese-big5=AR PL ShanHeiSun Uni +dialog.bolditalic.chinese-gb18030=AR PL ShanHeiSun Uni +dialog.bolditalic.bengali=Lohit Bengali +dialog.bolditalic.gujarati=Lohit Gujarati +dialog.bolditalic.hindi=Lohit Hindi +dialog.bolditalic.malayalam=Lohit Malayalam +dialog.bolditalic.oriya=Lohit Oriya +dialog.bolditalic.punjabi=Lohit Punjabi +dialog.bolditalic.tamil=Lohit Tamil +dialog.bolditalic.telugu=Lohit Telugu +dialog.bolditalic.sinhala=LKLUG + +sansserif.plain.latin-1=DejaVu Sans +sansserif.plain.japanese-x0208=Sazanami Gothic +sansserif.plain.korean=Baekmuk Gulim +sansserif.plain.chinese-big5=AR PL ShanHeiSun Uni +sansserif.plain.chinese-gb18030=AR PL ShanHeiSun Uni +sansserif.plain.bengali=Lohit Bengali +sansserif.plain.gujarati=Lohit Gujarati +sansserif.plain.hindi=Lohit Hindi +sansserif.plain.malayalam=Lohit Malayalam +sansserif.plain.oriya=Lohit Oriya +sansserif.plain.punjabi=Lohit Punjabi +sansserif.plain.tamil=Lohit Tamil +sansserif.plain.telugu=Lohit Telugu +sansserif.plain.sinhala=LKLUG + +sansserif.bold.latin-1=DejaVu Sans Bold +sansserif.bold.japanese-x0208=Sazanami Gothic +sansserif.bold.korean=Baekmuk Gulim +sansserif.bold.chinese-big5=AR PL ShanHeiSun Uni +sansserif.bold.chinese-gb18030=AR PL ShanHeiSun Uni +sansserif.bold.bengali=Lohit Bengali +sansserif.bold.gujarati=Lohit Gujarati +sansserif.bold.hindi=Lohit Hindi +sansserif.bold.malayalam=Lohit Malayalam +sansserif.bold.oriya=Lohit Oriya +sansserif.bold.punjabi=Lohit Punjabi +sansserif.bold.tamil=Lohit Tamil +sansserif.bold.telugu=Lohit Telugu +sansserif.bold.sinhala=LKLUG + +sansserif.italic.latin-1=DejaVu Sans Oblique +sansserif.italic.japanese-x0208=Sazanami Gothic +sansserif.italic.korean=Baekmuk Gulim +sansserif.italic.chinese-big5=AR PL ShanHeiSun Uni +sansserif.italic.chinese-gb18030=AR PL ShanHeiSun Uni +sansserif.italic.bengali=Lohit Bengali +sansserif.italic.gujarati=Lohit Gujarati +sansserif.italic.hindi=Lohit Hindi +sansserif.italic.malayalam=Lohit Malayalam +sansserif.italic.oriya=Lohit Oriya +sansserif.italic.punjabi=Lohit Punjabi +sansserif.italic.tamil=Lohit Tamil +sansserif.italic.telugu=Lohit Telugu +sansserif.italic.sinhala=LKLUG + +sansserif.bolditalic.latin-1=DejaVu Sans Bold Oblique +sansserif.bolditalic.japanese-x0208=Sazanami Gothic +sansserif.bolditalic.korean=Baekmuk Gulim +sansserif.bolditalic.chinese-big5=AR PL ShanHeiSun Uni +sansserif.bolditalic.chinese-gb18030=AR PL ShanHeiSun Uni +sansserif.bolditalic.bengali=Lohit Bengali +sansserif.bolditalic.gujarati=Lohit Gujarati +sansserif.bolditalic.hindi=Lohit Hindi +sansserif.bolditalic.malayalam=Lohit Malayalam +sansserif.bolditalic.oriya=Lohit Oriya +sansserif.bolditalic.punjabi=Lohit Punjabi +sansserif.bolditalic.tamil=Lohit Tamil +sansserif.bolditalic.telugu=Lohit Telugu +sansserif.bolditalic.sinhala=LKLUG + +serif.plain.latin-1=DejaVu Serif +serif.plain.japanese-x0208=Sazanami Mincho +serif.plain.korean=Baekmuk Batang +serif.plain.chinese-big5=AR PL ZenKai Uni +serif.plain.chinese-gb18030=AR PL ZenKai Uni +serif.plain.bengali=Lohit Bengali +serif.plain.gujarati=Lohit Gujarati +serif.plain.hindi=Lohit Hindi +serif.plain.malayalam=Lohit Malayalam +serif.plain.oriya=Lohit Oriya +serif.plain.punjabi=Lohit Punjabi +serif.plain.tamil=Lohit Tamil +serif.plain.telugu=Lohit Telugu +serif.plain.sinhala=LKLUG + +serif.bold.latin-1=DejaVu Serif Bold +serif.bold.japanese-x0208=Sazanami Mincho +serif.bold.korean=Baekmuk Batang +serif.bold.chinese-big5=AR PL ZenKai Uni +serif.bold.chinese-gb18030=AR PL ZenKai Uni +serif.bold.bengali=Lohit Bengali +serif.bold.gujarati=Lohit Gujarati +serif.bold.hindi=Lohit Hindi +serif.bold.malayalam=Lohit Malayalam +serif.bold.oriya=Lohit Oriya +serif.bold.punjabi=Lohit Punjabi +serif.bold.tamil=Lohit Tamil +serif.bold.telugu=Lohit Telugu +serif.bold.sinhala=LKLUG + +serif.italic.latin-1=DejaVu Serif Oblique +serif.italic.japanese-x0208=Sazanami Mincho +serif.italic.korean=Baekmuk Batang +serif.italic.chinese-big5=AR PL ZenKai Uni +serif.italic.chinese-gb18030=AR PL ZenKai Uni +serif.italic.bengali=Lohit Bengali +serif.italic.gujarati=Lohit Gujarati +serif.italic.hindi=Lohit Hindi +serif.italic.malayalam=Lohit Malayalam +serif.italic.oriya=Lohit Oriya +serif.italic.punjabi=Lohit Punjabi +serif.italic.tamil=Lohit Tamil +serif.italic.telugu=Lohit Telugu +serif.italic.sinhala=LKLUG + +serif.bolditalic.latin-1=DejaVu Serif Bold Oblique +serif.bolditalic.japanese-x0208=Sazanami Mincho +serif.bolditalic.korean=Baekmuk Batang +serif.bolditalic.chinese-big5=AR PL ZenKai Uni +serif.bolditalic.chinese-gb18030=AR PL ZenKai Uni +serif.bolditalic.bengali=Lohit Bengali +serif.bolditalic.gujarati=Lohit Gujarati +serif.bolditalic.hindi=Lohit Hindi +serif.bolditalic.malayalam=Lohit Malayalam +serif.bolditalic.oriya=Lohit Oriya +serif.bolditalic.punjabi=Lohit Punjabi +serif.bolditalic.tamil=Lohit Tamil +serif.bolditalic.telugu=Lohit Telugu +serif.bolditalic.sinhala=LKLUG + +monospaced.plain.latin-1=DejaVu Sans Mono +monospaced.plain.japanese-x0208=Sazanami Gothic +monospaced.plain.korean=Baekmuk Gulim +monospaced.plain.chinese-big5=AR PL ShanHeiSun Uni +monospaced.plain.chinese-gb18030=AR PL ShanHeiSun Uni +monospaced.plain.bengali=Lohit Bengali +monospaced.plain.gujarati=Lohit Gujarati +monospaced.plain.hindi=Lohit Hindi +monospaced.plain.malayalam=Lohit Malayalam +monospaced.plain.oriya=Lohit Oriya +monospaced.plain.punjabi=Lohit Punjabi +monospaced.plain.tamil=Lohit Tamil +monospaced.plain.telugu=Lohit Telugu +monospaced.plain.sinhala=LKLUG + +monospaced.bold.latin-1=DejaVu Sans Mono Bold +monospaced.bold.japanese-x0208=Sazanami Gothic +monospaced.bold.korean=Baekmuk Gulim +monospaced.bold.chinese-big5=AR PL ShanHeiSun Uni +monospaced.bold.chinese-gb18030=AR PL ShanHeiSun Uni +monospaced.bold.bengali=Lohit Bengali +monospaced.bold.gujarati=Lohit Gujarati +monospaced.bold.hindi=Lohit Hindi +monospaced.bold.malayalam=Lohit Malayalam +monospaced.bold.oriya=Lohit Oriya +monospaced.bold.punjabi=Lohit Punjabi +monospaced.bold.tamil=Lohit Tamil +monospaced.bold.telugu=Lohit Telugu +monospaced.bold.sinhala=LKLUG + +monospaced.italic.latin-1=DejaVu Sans Mono Oblique +monospaced.italic.japanese-x0208=Sazanami Gothic +monospaced.italic.korean=Baekmuk Gulim +monospaced.italic.chinese-big5=AR PL ShanHeiSun Uni +monospaced.italic.chinese-gb18030=AR PL ShanHeiSun Uni +monospaced.italic.bengali=Lohit Bengali +monospaced.italic.gujarati=Lohit Gujarati +monospaced.italic.hindi=Lohit Hindi +monospaced.italic.malayalam=Lohit Malayalam +monospaced.italic.oriya=Lohit Oriya +monospaced.italic.punjabi=Lohit Punjabi +monospaced.italic.tamil=Lohit Tamil +monospaced.italic.telugu=Lohit Telugu +monospaced.italic.sinhala=LKLUG + +monospaced.bolditalic.latin-1=DejaVu Sans Mono Bold Oblique +monospaced.bolditalic.japanese-x0208=Sazanami Gothic +monospaced.bolditalic.korean=Baekmuk Gulim +monospaced.bolditalic.chinese-big5=AR PL ShanHeiSun Uni +monospaced.bolditalic.chinese-gb18030=AR PL ShanHeiSun Uni +monospaced.bolditalic.bengali=Lohit Bengali +monospaced.bolditalic.gujarati=Lohit Gujarati +monospaced.bolditalic.hindi=Lohit Hindi +monospaced.bolditalic.malayalam=Lohit Malayalam +monospaced.bolditalic.oriya=Lohit Oriya +monospaced.bolditalic.punjabi=Lohit Punjabi +monospaced.bolditalic.tamil=Lohit Tamil +monospaced.bolditalic.telugu=Lohit Telugu +monospaced.bolditalic.sinhala=LKLUG + +dialoginput.plain.latin-1=DejaVu Sans Mono +dialoginput.plain.japanese-x0208=Sazanami Gothic +dialoginput.plain.korean=Baekmuk Gulim +dialoginput.plain.chinese-big5=AR PL ShanHeiSun Uni +dialoginput.plain.chinese-gb18030=AR PL ShanHeiSun Uni +dialoginput.plain.bengali=Lohit Bengali +dialoginput.plain.gujarati=Lohit Gujarati +dialoginput.plain.hindi=Lohit Hindi +dialoginput.plain.malayalam=Lohit Malayalam +dialoginput.plain.oriya=Lohit Oriya +dialoginput.plain.punjabi=Lohit Punjabi +dialoginput.plain.tamil=Lohit Tamil +dialoginput.plain.telugu=Lohit Telugu +dialoginput.plain.sinhala=LKLUG + +dialoginput.bold.latin-1=DejaVu Sans Mono Bold +dialoginput.bold.japanese-x0208=Sazanami Gothic +dialoginput.bold.korean=Baekmuk Gulim +dialoginput.bold.chinese-big5=AR PL ShanHeiSun Uni +dialoginput.bold.chinese-gb18030=AR PL ShanHeiSun Uni +dialoginput.bold.bengali=Lohit Bengali +dialoginput.bold.gujarati=Lohit Gujarati +dialoginput.bold.hindi=Lohit Hindi +dialoginput.bold.malayalam=Lohit Malayalam +dialoginput.bold.oriya=Lohit Oriya +dialoginput.bold.punjabi=Lohit Punjabi +dialoginput.bold.tamil=Lohit Tamil +dialoginput.bold.telugu=Lohit Telugu +dialoginput.bold.sinhala=LKLUG + +dialoginput.italic.latin-1=DejaVu Sans Mono Oblique +dialoginput.italic.japanese-x0208=Sazanami Gothic +dialoginput.italic.korean=Baekmuk Gulim +dialoginput.italic.chinese-big5=AR PL ShanHeiSun Uni +dialoginput.italic.chinese-gb18030=AR PL ShanHeiSun Uni +dialoginput.italic.bengali=Lohit Bengali +dialoginput.italic.gujarati=Lohit Gujarati +dialoginput.italic.hindi=Lohit Hindi +dialoginput.italic.malayalam=Lohit Malayalam +dialoginput.italic.oriya=Lohit Oriya +dialoginput.italic.punjabi=Lohit Punjabi +dialoginput.italic.tamil=Lohit Tamil +dialoginput.italic.telugu=Lohit Telugu +dialoginput.italic.sinhala=LKLUG + +dialoginput.bolditalic.latin-1=DejaVu Sans Mono Bold Oblique +dialoginput.bolditalic.japanese-x0208=Sazanami Gothic +dialoginput.bolditalic.korean=Baekmuk Gulim +dialoginput.bolditalic.chinese-big5=AR PL ShanHeiSun Uni +dialoginput.bolditalic.chinese-gb18030=AR PL ShanHeiSun Uni +dialoginput.bolditalic.bengali=Lohit Bengali +dialoginput.bolditalic.gujarati=Lohit Gujarati +dialoginput.bolditalic.hindi=Lohit Hindi +dialoginput.bolditalic.malayalam=Lohit Malayalam +dialoginput.bolditalic.oriya=Lohit Oriya +dialoginput.bolditalic.punjabi=Lohit Punjabi +dialoginput.bolditalic.tamil=Lohit Tamil +dialoginput.bolditalic.telugu=Lohit Telugu +dialoginput.bolditalic.sinhala=LKLUG + +# Search Sequences + +sequence.allfonts=latin-1 +sequence.allfonts.Big5=chinese-big5,latin-1 +sequence.allfonts.x-euc-jp-linux=japanese-x0208,latin-1 +sequence.allfonts.EUC-KR=korean,latin-1 +sequence.allfonts.GB18030=chinese-gb18030,latin-1 +sequence.fallback=chinese-big5,chinese-gb18030,japanese-x0208,korean,bengali,gujarati,hindi,oriya,punjabi,malayalam,tamil,telugu,sinhala + +# Font File Names + +filename.DejaVu_Sans=/usr/share/fonts/dejavu/DejaVuSans.ttf +filename.DejaVu_Sans_Bold=/usr/share/fonts/dejavu/DejaVuSans-Bold.ttf +filename.DejaVu_Sans_Oblique=/usr/share/fonts/dejavu/DejaVuSans-Oblique.ttf +filename.DejaVu_Sans_Bold_Oblique=/usr/share/fonts/dejavu/DejaVuSans-BoldOblique.ttf + +filename.DejaVu_Sans_Mono=/usr/share/fonts/dejavu/DejaVuSansMono.ttf +filename.DejaVu_Sans_Mono_Bold=/usr/share/fonts/dejavu/DejaVuSansMono-Bold.ttf +filename.DejaVu_Sans_Mono_Oblique=/usr/share/fonts/dejavu/DejaVuSansMono-Oblique.ttf +filename.DejaVu_Sans_Mono_Bold_Oblique=/usr/share/fonts/dejavu/DejaVuSansMono-BoldOblique.ttf + +filename.DejaVu_Serif=/usr/share/fonts/dejavu/DejaVuSerif.ttf +filename.DejaVu_Serif_Bold=/usr/share/fonts/dejavu/DejaVuSerif-Bold.ttf +filename.DejaVu_Serif_Oblique=/usr/share/fonts/dejavu/DejaVuSerif-Oblique.ttf +filename.DejaVu_Serif_Bold_Oblique=/usr/share/fonts/dejavu/DejaVuSerif-BoldOblique.ttf + +filename.Sazanami_Gothic=/usr/share/fonts/sazanami-fonts-gothic/sazanami-gothic.ttf +filename.Sazanami_Mincho=/usr/share/fonts/sazanami-fonts-mincho/sazanami-mincho.ttf +filename.AR_PL_ShanHeiSun_Uni=/usr/share/fonts/cjkunifonts-uming/uming.ttc +filename.AR_PL_ZenKai_Uni=/usr/share/fonts/cjkunifonts-ukai/ukai.ttc +filename.Baekmuk_Gulim=/usr/share/fonts/baekmuk-ttf-gulim/gulim.ttf +filename.Baekmuk_Batang=/usr/share/fonts/baekmuk-ttf-batang/batang.ttf + +filename.Lohit_Bengali=/usr/share/fonts/lohit-bengali/lohit_bn.ttf +filename.Lohit_Gujarati=/usr/share/fonts/lohit-gujarati/lohit_gu.ttf +filename.Lohit_Hindi=/usr/share/fonts/lohit-hindi/lohit_hi.ttf +filename.Lohit_Kannda=/usr/share/fonts/lohit-kannada/lohit_kn.ttf +filename.Lohit_Malayalam=/usr/share/fonts/lohit-malayalam/lohit_ml.ttf +filename.Lohit_Oriya=/usr/share/fonts/lohit-oriya/lohit_or.ttf +filename.Lohit_Punjabi=/usr/share/fonts/lohit-punjabi/lohit_pa.ttf +filename.Lohit_Tamil=/usr/share/fonts/lohit-tamil/lohit_ta.ttf +filename.Lohit_Telugu=/usr/share/fonts/lohit-telugu/lohit_te.ttf +filename.LKLUG=/usr/share/fonts/lklug/lklug.ttf + --- /dev/null 2010-11-03 15:11:54.580570056 +0100 +++ fontconfig.Fedora.11.properties.src 2010-11-03 13:06:58.124299143 +0100 @@ -0,0 +1,376 @@ +# +# Copyright 2007 Sun Microsystems, Inc. All Rights Reserved. +# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +# +# This code is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License version 2 only, as +# published by the Free Software Foundation. Sun designates this +# particular file as subject to the "Classpath" exception as provided +# by Sun in the LICENSE file that accompanied this code. +# +# This code is distributed in the hope that it will be useful, but WITHOUT +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +# version 2 for more details (a copy is included in the LICENSE file that +# accompanied this code). +# +# You should have received a copy of the GNU General Public License version +# 2 along with this work; if not, write to the Free Software Foundation, +# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. +# +# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, +# CA 95054 USA or visit www.sun.com if you need additional information or +# have any questions. +# + +# Version + +# Uses Fedora 9 fonts and file paths. +version=1 + +# Component Font Mappings + +dialog.plain.latin-1=DejaVu Sans +dialog.plain.japanese-x0208=Sazanami Gothic +dialog.plain.korean=Baekmuk Gulim +dialog.plain.chinese-big5=AR PL ShanHeiSun Uni +dialog.plain.chinese-gb18030=AR PL ShanHeiSun Uni +dialog.plain.bengali=Lohit Bengali +dialog.plain.gujarati=Lohit Gujarati +dialog.plain.hindi=Lohit Hindi +dialog.plain.malayalam=Lohit Malayalam +dialog.plain.oriya=Lohit Oriya +dialog.plain.punjabi=Lohit Punjabi +dialog.plain.tamil=Lohit Tamil +dialog.plain.telugu=Lohit Telugu +dialog.plain.sinhala=LKLUG + +dialog.bold.latin-1=DejaVu Sans Bold +dialog.bold.japanese-x0208=Sazanami Gothic +dialog.bold.korean=Baekmuk Gulim +dialog.bold.chinese-big5=AR PL ShanHeiSun Uni +dialog.bold.chinese-gb18030=AR PL ShanHeiSun Uni +dialog.bold.bengali=Lohit Bengali +dialog.bold.gujarati=Lohit Gujarati +dialog.bold.hindi=Lohit Hindi +dialog.bold.malayalam=Lohit Malayalam +dialog.bold.oriya=Lohit Oriya +dialog.bold.punjabi=Lohit Punjabi +dialog.bold.tamil=Lohit Tamil +dialog.bold.telugu=Lohit Telugu +dialog.bold.sinhala=LKLUG + +dialog.italic.latin-1=DejaVu Sans Oblique +dialog.italic.japanese-x0208=Sazanami Gothic +dialog.italic.korean=Baekmuk Gulim +dialog.italic.chinese-big5=AR PL ShanHeiSun Uni +dialog.italic.chinese-gb18030=AR PL ShanHeiSun Uni +dialog.italic.bengali=Lohit Bengali +dialog.italic.gujarati=Lohit Gujarati +dialog.italic.hindi=Lohit Hindi +dialog.italic.malayalam=Lohit Malayalam +dialog.italic.oriya=Lohit Oriya +dialog.italic.punjabi=Lohit Punjabi +dialog.italic.tamil=Lohit Tamil +dialog.italic.telugu=Lohit Telugu +dialog.italic.sinhala=LKLUG + +dialog.bolditalic.latin-1=DejaVu Sans Bold Oblique +dialog.bolditalic.japanese-x0208=Sazanami Gothic +dialog.bolditalic.korean=Baekmuk Gulim +dialog.bolditalic.chinese-big5=AR PL ShanHeiSun Uni +dialog.bolditalic.chinese-gb18030=AR PL ShanHeiSun Uni +dialog.bolditalic.bengali=Lohit Bengali +dialog.bolditalic.gujarati=Lohit Gujarati +dialog.bolditalic.hindi=Lohit Hindi +dialog.bolditalic.malayalam=Lohit Malayalam +dialog.bolditalic.oriya=Lohit Oriya +dialog.bolditalic.punjabi=Lohit Punjabi +dialog.bolditalic.tamil=Lohit Tamil +dialog.bolditalic.telugu=Lohit Telugu +dialog.bolditalic.sinhala=LKLUG + +sansserif.plain.latin-1=DejaVu Sans +sansserif.plain.japanese-x0208=Sazanami Gothic +sansserif.plain.korean=Baekmuk Gulim +sansserif.plain.chinese-big5=AR PL ShanHeiSun Uni +sansserif.plain.chinese-gb18030=AR PL ShanHeiSun Uni +sansserif.plain.bengali=Lohit Bengali +sansserif.plain.gujarati=Lohit Gujarati +sansserif.plain.hindi=Lohit Hindi +sansserif.plain.malayalam=Lohit Malayalam +sansserif.plain.oriya=Lohit Oriya +sansserif.plain.punjabi=Lohit Punjabi +sansserif.plain.tamil=Lohit Tamil +sansserif.plain.telugu=Lohit Telugu +sansserif.plain.sinhala=LKLUG + +sansserif.bold.latin-1=DejaVu Sans Bold +sansserif.bold.japanese-x0208=Sazanami Gothic +sansserif.bold.korean=Baekmuk Gulim +sansserif.bold.chinese-big5=AR PL ShanHeiSun Uni +sansserif.bold.chinese-gb18030=AR PL ShanHeiSun Uni +sansserif.bold.bengali=Lohit Bengali +sansserif.bold.gujarati=Lohit Gujarati +sansserif.bold.hindi=Lohit Hindi +sansserif.bold.malayalam=Lohit Malayalam +sansserif.bold.oriya=Lohit Oriya +sansserif.bold.punjabi=Lohit Punjabi +sansserif.bold.tamil=Lohit Tamil +sansserif.bold.telugu=Lohit Telugu +sansserif.bold.sinhala=LKLUG + +sansserif.italic.latin-1=DejaVu Sans Oblique +sansserif.italic.japanese-x0208=Sazanami Gothic +sansserif.italic.korean=Baekmuk Gulim +sansserif.italic.chinese-big5=AR PL ShanHeiSun Uni +sansserif.italic.chinese-gb18030=AR PL ShanHeiSun Uni +sansserif.italic.bengali=Lohit Bengali +sansserif.italic.gujarati=Lohit Gujarati +sansserif.italic.hindi=Lohit Hindi +sansserif.italic.malayalam=Lohit Malayalam +sansserif.italic.oriya=Lohit Oriya +sansserif.italic.punjabi=Lohit Punjabi +sansserif.italic.tamil=Lohit Tamil +sansserif.italic.telugu=Lohit Telugu +sansserif.italic.sinhala=LKLUG + +sansserif.bolditalic.latin-1=DejaVu Sans Bold Oblique +sansserif.bolditalic.japanese-x0208=Sazanami Gothic +sansserif.bolditalic.korean=Baekmuk Gulim +sansserif.bolditalic.chinese-big5=AR PL ShanHeiSun Uni +sansserif.bolditalic.chinese-gb18030=AR PL ShanHeiSun Uni +sansserif.bolditalic.bengali=Lohit Bengali +sansserif.bolditalic.gujarati=Lohit Gujarati +sansserif.bolditalic.hindi=Lohit Hindi +sansserif.bolditalic.malayalam=Lohit Malayalam +sansserif.bolditalic.oriya=Lohit Oriya +sansserif.bolditalic.punjabi=Lohit Punjabi +sansserif.bolditalic.tamil=Lohit Tamil +sansserif.bolditalic.telugu=Lohit Telugu +sansserif.bolditalic.sinhala=LKLUG + +serif.plain.latin-1=DejaVu Serif +serif.plain.japanese-x0208=Sazanami Mincho +serif.plain.korean=Baekmuk Batang +serif.plain.chinese-big5=AR PL ZenKai Uni +serif.plain.chinese-gb18030=AR PL ZenKai Uni +serif.plain.bengali=Lohit Bengali +serif.plain.gujarati=Lohit Gujarati +serif.plain.hindi=Lohit Hindi +serif.plain.malayalam=Lohit Malayalam +serif.plain.oriya=Lohit Oriya +serif.plain.punjabi=Lohit Punjabi +serif.plain.tamil=Lohit Tamil +serif.plain.telugu=Lohit Telugu +serif.plain.sinhala=LKLUG + +serif.bold.latin-1=DejaVu Serif Bold +serif.bold.japanese-x0208=Sazanami Mincho +serif.bold.korean=Baekmuk Batang +serif.bold.chinese-big5=AR PL ZenKai Uni +serif.bold.chinese-gb18030=AR PL ZenKai Uni +serif.bold.bengali=Lohit Bengali +serif.bold.gujarati=Lohit Gujarati +serif.bold.hindi=Lohit Hindi +serif.bold.malayalam=Lohit Malayalam +serif.bold.oriya=Lohit Oriya +serif.bold.punjabi=Lohit Punjabi +serif.bold.tamil=Lohit Tamil +serif.bold.telugu=Lohit Telugu +serif.bold.sinhala=LKLUG + +serif.italic.latin-1=DejaVu Serif Oblique +serif.italic.japanese-x0208=Sazanami Mincho +serif.italic.korean=Baekmuk Batang +serif.italic.chinese-big5=AR PL ZenKai Uni +serif.italic.chinese-gb18030=AR PL ZenKai Uni +serif.italic.bengali=Lohit Bengali +serif.italic.gujarati=Lohit Gujarati +serif.italic.hindi=Lohit Hindi +serif.italic.malayalam=Lohit Malayalam +serif.italic.oriya=Lohit Oriya +serif.italic.punjabi=Lohit Punjabi +serif.italic.tamil=Lohit Tamil +serif.italic.telugu=Lohit Telugu +serif.italic.sinhala=LKLUG + +serif.bolditalic.latin-1=DejaVu Serif Bold Oblique +serif.bolditalic.japanese-x0208=Sazanami Mincho +serif.bolditalic.korean=Baekmuk Batang +serif.bolditalic.chinese-big5=AR PL ZenKai Uni +serif.bolditalic.chinese-gb18030=AR PL ZenKai Uni +serif.bolditalic.bengali=Lohit Bengali +serif.bolditalic.gujarati=Lohit Gujarati +serif.bolditalic.hindi=Lohit Hindi +serif.bolditalic.malayalam=Lohit Malayalam +serif.bolditalic.oriya=Lohit Oriya +serif.bolditalic.punjabi=Lohit Punjabi +serif.bolditalic.tamil=Lohit Tamil +serif.bolditalic.telugu=Lohit Telugu +serif.bolditalic.sinhala=LKLUG + +monospaced.plain.latin-1=DejaVu Sans Mono +monospaced.plain.japanese-x0208=Sazanami Gothic +monospaced.plain.korean=Baekmuk Gulim +monospaced.plain.chinese-big5=AR PL ShanHeiSun Uni +monospaced.plain.chinese-gb18030=AR PL ShanHeiSun Uni +monospaced.plain.bengali=Lohit Bengali +monospaced.plain.gujarati=Lohit Gujarati +monospaced.plain.hindi=Lohit Hindi +monospaced.plain.malayalam=Lohit Malayalam +monospaced.plain.oriya=Lohit Oriya +monospaced.plain.punjabi=Lohit Punjabi +monospaced.plain.tamil=Lohit Tamil +monospaced.plain.telugu=Lohit Telugu +monospaced.plain.sinhala=LKLUG + +monospaced.bold.latin-1=DejaVu Sans Mono Bold +monospaced.bold.japanese-x0208=Sazanami Gothic +monospaced.bold.korean=Baekmuk Gulim +monospaced.bold.chinese-big5=AR PL ShanHeiSun Uni +monospaced.bold.chinese-gb18030=AR PL ShanHeiSun Uni +monospaced.bold.bengali=Lohit Bengali +monospaced.bold.gujarati=Lohit Gujarati +monospaced.bold.hindi=Lohit Hindi +monospaced.bold.malayalam=Lohit Malayalam +monospaced.bold.oriya=Lohit Oriya +monospaced.bold.punjabi=Lohit Punjabi +monospaced.bold.tamil=Lohit Tamil +monospaced.bold.telugu=Lohit Telugu +monospaced.bold.sinhala=LKLUG + +monospaced.italic.latin-1=DejaVu Sans Mono Oblique +monospaced.italic.japanese-x0208=Sazanami Gothic +monospaced.italic.korean=Baekmuk Gulim +monospaced.italic.chinese-big5=AR PL ShanHeiSun Uni +monospaced.italic.chinese-gb18030=AR PL ShanHeiSun Uni +monospaced.italic.bengali=Lohit Bengali +monospaced.italic.gujarati=Lohit Gujarati +monospaced.italic.hindi=Lohit Hindi +monospaced.italic.malayalam=Lohit Malayalam +monospaced.italic.oriya=Lohit Oriya +monospaced.italic.punjabi=Lohit Punjabi +monospaced.italic.tamil=Lohit Tamil +monospaced.italic.telugu=Lohit Telugu +monospaced.italic.sinhala=LKLUG + +monospaced.bolditalic.latin-1=DejaVu Sans Mono Bold Oblique +monospaced.bolditalic.japanese-x0208=Sazanami Gothic +monospaced.bolditalic.korean=Baekmuk Gulim +monospaced.bolditalic.chinese-big5=AR PL ShanHeiSun Uni +monospaced.bolditalic.chinese-gb18030=AR PL ShanHeiSun Uni +monospaced.bolditalic.bengali=Lohit Bengali +monospaced.bolditalic.gujarati=Lohit Gujarati +monospaced.bolditalic.hindi=Lohit Hindi +monospaced.bolditalic.malayalam=Lohit Malayalam +monospaced.bolditalic.oriya=Lohit Oriya +monospaced.bolditalic.punjabi=Lohit Punjabi +monospaced.bolditalic.tamil=Lohit Tamil +monospaced.bolditalic.telugu=Lohit Telugu +monospaced.bolditalic.sinhala=LKLUG + +dialoginput.plain.latin-1=DejaVu Sans Mono +dialoginput.plain.japanese-x0208=Sazanami Gothic +dialoginput.plain.korean=Baekmuk Gulim +dialoginput.plain.chinese-big5=AR PL ShanHeiSun Uni +dialoginput.plain.chinese-gb18030=AR PL ShanHeiSun Uni +dialoginput.plain.bengali=Lohit Bengali +dialoginput.plain.gujarati=Lohit Gujarati +dialoginput.plain.hindi=Lohit Hindi +dialoginput.plain.malayalam=Lohit Malayalam +dialoginput.plain.oriya=Lohit Oriya +dialoginput.plain.punjabi=Lohit Punjabi +dialoginput.plain.tamil=Lohit Tamil +dialoginput.plain.telugu=Lohit Telugu +dialoginput.plain.sinhala=LKLUG + +dialoginput.bold.latin-1=DejaVu Sans Mono Bold +dialoginput.bold.japanese-x0208=Sazanami Gothic +dialoginput.bold.korean=Baekmuk Gulim +dialoginput.bold.chinese-big5=AR PL ShanHeiSun Uni +dialoginput.bold.chinese-gb18030=AR PL ShanHeiSun Uni +dialoginput.bold.bengali=Lohit Bengali +dialoginput.bold.gujarati=Lohit Gujarati +dialoginput.bold.hindi=Lohit Hindi +dialoginput.bold.malayalam=Lohit Malayalam +dialoginput.bold.oriya=Lohit Oriya +dialoginput.bold.punjabi=Lohit Punjabi +dialoginput.bold.tamil=Lohit Tamil +dialoginput.bold.telugu=Lohit Telugu +dialoginput.bold.sinhala=LKLUG + +dialoginput.italic.latin-1=DejaVu Sans Mono Oblique +dialoginput.italic.japanese-x0208=Sazanami Gothic +dialoginput.italic.korean=Baekmuk Gulim +dialoginput.italic.chinese-big5=AR PL ShanHeiSun Uni +dialoginput.italic.chinese-gb18030=AR PL ShanHeiSun Uni +dialoginput.italic.bengali=Lohit Bengali +dialoginput.italic.gujarati=Lohit Gujarati +dialoginput.italic.hindi=Lohit Hindi +dialoginput.italic.malayalam=Lohit Malayalam +dialoginput.italic.oriya=Lohit Oriya +dialoginput.italic.punjabi=Lohit Punjabi +dialoginput.italic.tamil=Lohit Tamil +dialoginput.italic.telugu=Lohit Telugu +dialoginput.italic.sinhala=LKLUG + +dialoginput.bolditalic.latin-1=DejaVu Sans Mono Bold Oblique +dialoginput.bolditalic.japanese-x0208=Sazanami Gothic +dialoginput.bolditalic.korean=Baekmuk Gulim +dialoginput.bolditalic.chinese-big5=AR PL ShanHeiSun Uni +dialoginput.bolditalic.chinese-gb18030=AR PL ShanHeiSun Uni +dialoginput.bolditalic.bengali=Lohit Bengali +dialoginput.bolditalic.gujarati=Lohit Gujarati +dialoginput.bolditalic.hindi=Lohit Hindi +dialoginput.bolditalic.malayalam=Lohit Malayalam +dialoginput.bolditalic.oriya=Lohit Oriya +dialoginput.bolditalic.punjabi=Lohit Punjabi +dialoginput.bolditalic.tamil=Lohit Tamil +dialoginput.bolditalic.telugu=Lohit Telugu +dialoginput.bolditalic.sinhala=LKLUG + +# Search Sequences + +sequence.allfonts=latin-1 +sequence.allfonts.Big5=chinese-big5,latin-1 +sequence.allfonts.x-euc-jp-linux=japanese-x0208,latin-1 +sequence.allfonts.EUC-KR=korean,latin-1 +sequence.allfonts.GB18030=chinese-gb18030,latin-1 +sequence.fallback=chinese-big5,chinese-gb18030,japanese-x0208,korean,bengali,gujarati,hindi,oriya,punjabi,malayalam,tamil,telugu,sinhala + +# Font File Names + +filename.DejaVu_Sans=/usr/share/fonts/dejavu/DejaVuSans.ttf +filename.DejaVu_Sans_Bold=/usr/share/fonts/dejavu/DejaVuSans-Bold.ttf +filename.DejaVu_Sans_Oblique=/usr/share/fonts/dejavu/DejaVuSans-Oblique.ttf +filename.DejaVu_Sans_Bold_Oblique=/usr/share/fonts/dejavu/DejaVuSans-BoldOblique.ttf + +filename.DejaVu_Sans_Mono=/usr/share/fonts/dejavu/DejaVuSansMono.ttf +filename.DejaVu_Sans_Mono_Bold=/usr/share/fonts/dejavu/DejaVuSansMono-Bold.ttf +filename.DejaVu_Sans_Mono_Oblique=/usr/share/fonts/dejavu/DejaVuSansMono-Oblique.ttf +filename.DejaVu_Sans_Mono_Bold_Oblique=/usr/share/fonts/dejavu/DejaVuSansMono-BoldOblique.ttf + +filename.DejaVu_Serif=/usr/share/fonts/dejavu/DejaVuSerif.ttf +filename.DejaVu_Serif_Bold=/usr/share/fonts/dejavu/DejaVuSerif-Bold.ttf +filename.DejaVu_Serif_Oblique=/usr/share/fonts/dejavu/DejaVuSerif-Oblique.ttf +filename.DejaVu_Serif_Bold_Oblique=/usr/share/fonts/dejavu/DejaVuSerif-BoldOblique.ttf + +filename.Sazanami_Gothic=/usr/share/fonts/sazanami-fonts-gothic/sazanami-gothic.ttf +filename.Sazanami_Mincho=/usr/share/fonts/sazanami-fonts-mincho/sazanami-mincho.ttf +filename.AR_PL_ShanHeiSun_Uni=/usr/share/fonts/cjkunifonts-uming/uming.ttc +filename.AR_PL_ZenKai_Uni=/usr/share/fonts/cjkunifonts-ukai/ukai.ttc +filename.Baekmuk_Gulim=/usr/share/fonts/baekmuk-ttf-gulim/gulim.ttf +filename.Baekmuk_Batang=/usr/share/fonts/baekmuk-ttf-batang/batang.ttf + +filename.Lohit_Bengali=/usr/share/fonts/lohit-bengali/lohit_bn.ttf +filename.Lohit_Gujarati=/usr/share/fonts/lohit-gujarati/lohit_gu.ttf +filename.Lohit_Hindi=/usr/share/fonts/lohit-hindi/lohit_hi.ttf +filename.Lohit_Kannda=/usr/share/fonts/lohit-kannada/lohit_kn.ttf +filename.Lohit_Malayalam=/usr/share/fonts/lohit-malayalam/lohit_ml.ttf +filename.Lohit_Oriya=/usr/share/fonts/lohit-oriya/lohit_or.ttf +filename.Lohit_Punjabi=/usr/share/fonts/lohit-punjabi/lohit_pa.ttf +filename.Lohit_Tamil=/usr/share/fonts/lohit-tamil/lohit_ta.ttf +filename.Lohit_Telugu=/usr/share/fonts/lohit-telugu/lohit_te.ttf +filename.LKLUG=/usr/share/fonts/lklug/lklug.ttf + From dbhole at redhat.com Wed Nov 3 07:52:08 2010 From: dbhole at redhat.com (Deepak Bhole) Date: Wed, 3 Nov 2010 10:52:08 -0400 Subject: [icedtea-web] RFC: Patch to double-buffer applets In-Reply-To: <4CD16468.1000306@redhat.com> References: <20101102213155.GA9563@redhat.com> <20101102213756.GB9563@redhat.com> <4CD16468.1000306@redhat.com> Message-ID: <20101103145208.GA15122@redhat.com> * Omair Majid [2010-11-03 09:32]: > Hi Deepak, > > On 11/02/2010 05:37 PM, Deepak Bhole wrote: > >* Deepak Bhole [2010-11-02 17:31]: > >>Hi, > >> > >>IcedTea plugin currently does not double-buffer the applet panel. As a > >>result, some applets may flicker depending on the machine. > >> > >>Attached patch buffers the frame offscreen and then draws it, thereby > >>addressing the issue. > >> > > Is there a specific test case that this fixes? The only flickering > applet that I know of is at > http://download.oracle.com/javase/1.4.2/docs/guide/misc/applet.html, > and I dont see any change in that applet with the patch applied. > Nope, no specific applet. I came across the problem when I was working on a splash screen for the plugin -- it flickers significantly without the patch. Applets which do something similar would flicker as well (the splash screen is embedded into the same frame that the plugin would be). Deepak > >>ChangeLog: > >>2010-11-02 Deepak Bhole > >> > >> * plugin/icedteanp/java/sun/applet/PluginAppletViewer.java (update): > >> Override method and implement double-buffering. > >> > >>Cheers, > >>Deepak > > > > > >Doh! There shouldn't be a println in there. New patch attached. I also > >fixed the variable names for the image and its graphics. > > > > > >>diff -r 6c2527d42900 ChangeLog > >>--- a/ChangeLog Mon Nov 01 11:44:15 2010 -0400 > >>+++ b/ChangeLog Tue Nov 02 17:29:03 2010 -0700 > >>@@ -1,3 +1,8 @@ > >>+2010-11-02 Deepak Bhole > >>+ > >>+ * plugin/icedteanp/java/sun/applet/PluginAppletViewer.java (update): > >>+ Override method and implement double-buffering. > >>+ > >> 2010-11-01 Omair Majid > >> > >> * Makefile.am (clean-IcedTeaPlugin): Only delete launcher directory if it > >>diff -r 6c2527d42900 NEWS > >>--- a/NEWS Mon Nov 01 11:44:15 2010 -0400 > >>+++ b/NEWS Tue Nov 02 17:29:03 2010 -0700 > >>@@ -12,3 +12,4 @@ > >> > >> * Initial release of IcedTea-Web > >> * PR542: Plugin fails with NPE on http://www.openprocessing.org/visuals/iframe.php?visualID=2615 > >>+* Applets are now double-buffered to eliminate flicker in ones that do heavy drawing > >>diff -r 6c2527d42900 plugin/icedteanp/java/sun/applet/PluginAppletViewer.java > >>--- a/plugin/icedteanp/java/sun/applet/PluginAppletViewer.java Mon Nov 01 11:44:15 2010 -0400 > >>+++ b/plugin/icedteanp/java/sun/applet/PluginAppletViewer.java Tue Nov 02 17:29:03 2010 -0700 > >>@@ -359,6 +366,9 @@ > >> > >> private static Long requestIdentityCounter = 0L; > >> > >>+ private Image bufferedPanelImage; > >>+ private Graphics bufferedImageGraphics; > >>+ > >> /** > >> * Null constructor to allow instantiation via newInstance() > >> */ > >>@@ -2163,4 +2178,24 @@ > >> } > >> } > >> } > >>+ > >>+ /** > >>+ * {@inheritDoc} > >>+ */ > >>+ public void update(Graphics g) { > >>+ > >>+ System.err.println("Buffering and drawing"); > >>+ > >>+ // If the image or the graphics don't exist, create new ones > >>+ if (bufferedPanelImage == null || bufferedImageGraphics == null) { > >>+ bufferedPanelImage = createImage(getWidth(), getHeight()); > >>+ bufferedImageGraphics = bufferedPanelImage.getGraphics (); > >>+ } > >>+ > >>+ // Paint off-screen > >>+ paint(bufferedImageGraphics); > > The overridden method is update, but paint is called here instead. > Is there a reason for that? As far as I know, the semantics of > update() are slightly different from paint() - update() clears the > background and then calls paint(). Perhaps super.update() might be > more appropriate? > > >>+ > >>+ // Draw the painted image > >>+ g.drawImage(bufferedPanelImage, 0, 0, this); > >>+ } > >> } > > > > Thanks, > Omair From dbhole at redhat.com Wed Nov 3 07:52:33 2010 From: dbhole at redhat.com (Deepak Bhole) Date: Wed, 3 Nov 2010 10:52:33 -0400 Subject: [icedtea-web] RFC: Patch to double-buffer applets In-Reply-To: <20101103145208.GA15122@redhat.com> References: <20101102213155.GA9563@redhat.com> <20101102213756.GB9563@redhat.com> <4CD16468.1000306@redhat.com> <20101103145208.GA15122@redhat.com> Message-ID: <20101103145233.GB15122@redhat.com> * Deepak Bhole [2010-11-03 10:52]: > * Omair Majid [2010-11-03 09:32]: > > Hi Deepak, > > > > On 11/02/2010 05:37 PM, Deepak Bhole wrote: > > >* Deepak Bhole [2010-11-02 17:31]: > > >>Hi, > > >> > > >>IcedTea plugin currently does not double-buffer the applet panel. As a > > >>result, some applets may flicker depending on the machine. > > >> > > >>Attached patch buffers the frame offscreen and then draws it, thereby > > >>addressing the issue. > > >> > > > > Is there a specific test case that this fixes? The only flickering > > applet that I know of is at > > http://download.oracle.com/javase/1.4.2/docs/guide/misc/applet.html, > > and I dont see any change in that applet with the patch applied. > > > > Nope, no specific applet. I came across the problem when I was working > on a splash screen for the plugin -- it flickers significantly without > the patch. > > Applets which do something similar would flicker as well (the splash > screen is embedded into the same frame that the plugin would be). > s/plugin would be/applet would be > Deepak > > > >>ChangeLog: > > >>2010-11-02 Deepak Bhole > > >> > > >> * plugin/icedteanp/java/sun/applet/PluginAppletViewer.java (update): > > >> Override method and implement double-buffering. > > >> > > >>Cheers, > > >>Deepak > > > > > > > > >Doh! There shouldn't be a println in there. New patch attached. I also > > >fixed the variable names for the image and its graphics. > > > > > > > > >>diff -r 6c2527d42900 ChangeLog > > >>--- a/ChangeLog Mon Nov 01 11:44:15 2010 -0400 > > >>+++ b/ChangeLog Tue Nov 02 17:29:03 2010 -0700 > > >>@@ -1,3 +1,8 @@ > > >>+2010-11-02 Deepak Bhole > > >>+ > > >>+ * plugin/icedteanp/java/sun/applet/PluginAppletViewer.java (update): > > >>+ Override method and implement double-buffering. > > >>+ > > >> 2010-11-01 Omair Majid > > >> > > >> * Makefile.am (clean-IcedTeaPlugin): Only delete launcher directory if it > > >>diff -r 6c2527d42900 NEWS > > >>--- a/NEWS Mon Nov 01 11:44:15 2010 -0400 > > >>+++ b/NEWS Tue Nov 02 17:29:03 2010 -0700 > > >>@@ -12,3 +12,4 @@ > > >> > > >> * Initial release of IcedTea-Web > > >> * PR542: Plugin fails with NPE on http://www.openprocessing.org/visuals/iframe.php?visualID=2615 > > >>+* Applets are now double-buffered to eliminate flicker in ones that do heavy drawing > > >>diff -r 6c2527d42900 plugin/icedteanp/java/sun/applet/PluginAppletViewer.java > > >>--- a/plugin/icedteanp/java/sun/applet/PluginAppletViewer.java Mon Nov 01 11:44:15 2010 -0400 > > >>+++ b/plugin/icedteanp/java/sun/applet/PluginAppletViewer.java Tue Nov 02 17:29:03 2010 -0700 > > >>@@ -359,6 +366,9 @@ > > >> > > >> private static Long requestIdentityCounter = 0L; > > >> > > >>+ private Image bufferedPanelImage; > > >>+ private Graphics bufferedImageGraphics; > > >>+ > > >> /** > > >> * Null constructor to allow instantiation via newInstance() > > >> */ > > >>@@ -2163,4 +2178,24 @@ > > >> } > > >> } > > >> } > > >>+ > > >>+ /** > > >>+ * {@inheritDoc} > > >>+ */ > > >>+ public void update(Graphics g) { > > >>+ > > >>+ System.err.println("Buffering and drawing"); > > >>+ > > >>+ // If the image or the graphics don't exist, create new ones > > >>+ if (bufferedPanelImage == null || bufferedImageGraphics == null) { > > >>+ bufferedPanelImage = createImage(getWidth(), getHeight()); > > >>+ bufferedImageGraphics = bufferedPanelImage.getGraphics (); > > >>+ } > > >>+ > > >>+ // Paint off-screen > > >>+ paint(bufferedImageGraphics); > > > > The overridden method is update, but paint is called here instead. > > Is there a reason for that? As far as I know, the semantics of > > update() are slightly different from paint() - update() clears the > > background and then calls paint(). Perhaps super.update() might be > > more appropriate? > > > > >>+ > > >>+ // Draw the painted image > > >>+ g.drawImage(bufferedPanelImage, 0, 0, this); > > >>+ } > > >> } > > > > > > > Thanks, > > Omair From ahughes at redhat.com Wed Nov 3 08:27:39 2010 From: ahughes at redhat.com (Dr Andrew John Hughes) Date: Wed, 3 Nov 2010 15:27:39 +0000 Subject: patch for Asian fonts for fedora, changing paths to fonts files. Dependencies are necessary to be added to rpms. In-Reply-To: <1058787953.1192831288784696040.JavaMail.root@zmail05.collab.prod.int.phx2.redhat.com> References: <4CD146A2.60806@redhat.com> <1058787953.1192831288784696040.JavaMail.root@zmail05.collab.prod.int.phx2.redhat.com> Message-ID: <20101103152739.GB4256@rivendell.middle-earth.co.uk> On 07:44 Wed 03 Nov , jiri Vanek wrote: > > > background is here: https://bugzilla.redhat.com/show_bug.cgi?id=643674 > and https://bugzilla.redhat.com/show_bug.cgi?id=582455 and > https://bugzilla.redhat.com/show_bug.cgi?id=622680 > > I was speaking with author of cjkuni fonts (and will ensure with autor > of beakmuk and szma and lohit - but expect same result)and he confiremd > that in f14 there was big refactoring of fonts (backported to f13 but no > more deep ). This newly re-factored paths should be "final" (:DD ) > > Reproducer was created for those fonts (arabic - default ok, chinese, > japanese, corean and indic) - as Pavel mentioned some time ago. > > So my suggestion is to update fontconfig.Fedora.properties to new > version ant to keep old file as fontconfig.Fedora.12.properties and 11 > (nothing more we suppotrt (?)..) > > This patch is for all except indic (which will come soon) > Ok, so can you please post a patch for IcedTea6 HEAD that makes these changes to fontconfig? Thanks, -- Andrew :) Free Java Software Engineer Red Hat, Inc. (http://www.redhat.com) Support Free Java! Contribute to GNU Classpath and the OpenJDK http://www.gnu.org/software/classpath http://openjdk.java.net PGP Key: 94EFD9D8 (http://subkeys.pgp.net) Fingerprint = F8EF F1EA 401E 2E60 15FA 7927 142C 2591 94EF D9D8 From omajid at icedtea.classpath.org Wed Nov 3 08:34:34 2010 From: omajid at icedtea.classpath.org (omajid at icedtea.classpath.org) Date: Wed, 03 Nov 2010 15:34:34 +0000 Subject: /hg/icedtea-web: use deployment.properties file for infrastructu... Message-ID: changeset 30efa2ff349b in /hg/icedtea-web details: http://icedtea.classpath.org/hg/icedtea-web?cmd=changeset;node=30efa2ff349b author: Omair Majid date: Wed Nov 03 11:33:41 2010 -0400 use deployment.properties file for infrastructure related configuration 2010-11-03 Omair Majid * netx/net/sourceforge/jnlp/Launcher.java (markNetxRunning): Get file name from configuration. (markNetxStopped): Likewise. * netx/net/sourceforge/jnlp/cache/CacheUtil.java (clearCache): Get cache directory from configuration. (okToClearCache): Get netx_running file from configuration. (getCacheFile): Get cache directory from configuration. (urlToPath): Change semantics to take in the full path of the directory instead of a directory under runtime. * netx/net/sourceforge/jnlp/runtime/DeploymentConfiguration.java: Change DEPLOYMENT_DIR to ".icedtea". Add constants KEY_USER_CACHE_DIR, KEY_USER_PERSISTENCE_CACHE_DIR, KEY_SYSTEM_CACHE_DIR, KEY_USER_LOG_DIR, KEY_USER_TMP_DIR, KEY_USER_LOCKS_DIR, and KEY_USER_NETX_RUNNING_FILE. (load): Use DEPLOYMENT_DIR instead of hardcoded string. (loadDefaultProperties): Add LOCKS_DIR. Replace strings with constants. Add new default values for persistence cache directory, single instance locks directory and the netx_running file. * netx/net/sourceforge/jnlp/runtime/JNLPRuntime.java: Remove unneeded TMP_DIR, LOCKS_DIR and NETX_RUNNING_FILE * netx/net/sourceforge/jnlp/services/SingleInstanceLock.java (getLockFile): Get locks directory from configuration. * netx/net/sourceforge/jnlp/services/XPersistenceService.java (toCacheFile): Get persistence cache directory from configuration. * netx/net/sourceforge/jnlp/util/XDesktopEntry.java (getContentsAsReader): Get cache directory from configuration. (installDesktopLauncher): Get temporary directory from configuration. Make parent directories if required. * plugin/icedteanp/java/sun/applet/JavaConsole.java (initialize): Get log directory from configuration and create the error and output files under it. * plugin/icedteanp/java/sun/applet/PluginMain.java: PLUGIN_STDERR_FILE and PLUGIN_STDOUT_FILE are now just filesnames. (PluginMain): Use configuration for finding the log directory. Initialize JNLPRuntime before creating the stderr and stdout logs. diffstat: 10 files changed, 136 insertions(+), 60 deletions(-) ChangeLog | 38 ++++++++++ netx/net/sourceforge/jnlp/Launcher.java | 10 +- netx/net/sourceforge/jnlp/cache/CacheUtil.java | 32 +++++--- netx/net/sourceforge/jnlp/runtime/DeploymentConfiguration.java | 36 +++++++-- netx/net/sourceforge/jnlp/runtime/JNLPRuntime.java | 19 ----- netx/net/sourceforge/jnlp/services/SingleInstanceLock.java | 4 - netx/net/sourceforge/jnlp/services/XPersistenceService.java | 4 - netx/net/sourceforge/jnlp/util/XDesktopEntry.java | 13 ++- plugin/icedteanp/java/sun/applet/JavaConsole.java | 9 +- plugin/icedteanp/java/sun/applet/PluginMain.java | 31 ++++---- diffs (457 lines): diff -r 6c2527d42900 -r 30efa2ff349b ChangeLog --- a/ChangeLog Mon Nov 01 11:44:15 2010 -0400 +++ b/ChangeLog Wed Nov 03 11:33:41 2010 -0400 @@ -1,3 +1,41 @@ 2010-11-01 Omair Majid + + * netx/net/sourceforge/jnlp/Launcher.java + (markNetxRunning): Get file name from configuration. + (markNetxStopped): Likewise. + * netx/net/sourceforge/jnlp/cache/CacheUtil.java + (clearCache): Get cache directory from configuration. + (okToClearCache): Get netx_running file from configuration. + (getCacheFile): Get cache directory from configuration. + (urlToPath): Change semantics to take in the full path of the + directory instead of a directory under runtime. + * netx/net/sourceforge/jnlp/runtime/DeploymentConfiguration.java: + Change DEPLOYMENT_DIR to ".icedtea". Add constants + KEY_USER_CACHE_DIR, KEY_USER_PERSISTENCE_CACHE_DIR, + KEY_SYSTEM_CACHE_DIR, KEY_USER_LOG_DIR, KEY_USER_TMP_DIR, + KEY_USER_LOCKS_DIR, and KEY_USER_NETX_RUNNING_FILE. + (load): Use DEPLOYMENT_DIR instead of hardcoded string. + (loadDefaultProperties): Add LOCKS_DIR. Replace strings with + constants. Add new default values for persistence cache directory, + single instance locks directory and the netx_running file. + * netx/net/sourceforge/jnlp/runtime/JNLPRuntime.java: Remove + unneeded TMP_DIR, LOCKS_DIR and NETX_RUNNING_FILE + * netx/net/sourceforge/jnlp/services/SingleInstanceLock.java + (getLockFile): Get locks directory from configuration. + * netx/net/sourceforge/jnlp/services/XPersistenceService.java + (toCacheFile): Get persistence cache directory from configuration. + * netx/net/sourceforge/jnlp/util/XDesktopEntry.java + (getContentsAsReader): Get cache directory from configuration. + (installDesktopLauncher): Get temporary directory from + configuration. Make parent directories if required. + * plugin/icedteanp/java/sun/applet/JavaConsole.java + (initialize): Get log directory from configuration and create the + error and output files under it. + * plugin/icedteanp/java/sun/applet/PluginMain.java: + PLUGIN_STDERR_FILE and PLUGIN_STDOUT_FILE are now just filesnames. + (PluginMain): Use configuration for finding the log directory. + Initialize JNLPRuntime before creating the stderr and stdout logs. + 2010-11-01 Omair Majid * Makefile.am (clean-IcedTeaPlugin): Only delete launcher directory if it diff -r 6c2527d42900 -r 30efa2ff349b netx/net/sourceforge/jnlp/Launcher.java --- a/netx/net/sourceforge/jnlp/Launcher.java Mon Nov 01 11:44:15 2010 -0400 +++ b/netx/net/sourceforge/jnlp/Launcher.java Wed Nov 03 11:33:41 2010 -0400 @@ -43,6 +43,7 @@ import net.sourceforge.jnlp.runtime.AppT import net.sourceforge.jnlp.runtime.AppThreadGroup; import net.sourceforge.jnlp.runtime.AppletInstance; import net.sourceforge.jnlp.runtime.ApplicationInstance; +import net.sourceforge.jnlp.runtime.DeploymentConfiguration; import net.sourceforge.jnlp.runtime.JNLPClassLoader; import net.sourceforge.jnlp.runtime.JNLPRuntime; import net.sourceforge.jnlp.services.InstanceExistsException; @@ -724,7 +725,8 @@ public class Launcher { try { String message = "This file is used to check if netx is running"; - File netxRunningFile = new File(JNLPRuntime.NETX_RUNNING_FILE); + File netxRunningFile = new File(JNLPRuntime.getConfiguration() + .getProperty(DeploymentConfiguration.KEY_USER_NETX_RUNNING_FILE)); netxRunningFile.getParentFile().mkdirs(); if (netxRunningFile.createNewFile()) { FileOutputStream fos = new FileOutputStream(netxRunningFile); @@ -749,7 +751,7 @@ public class Launcher { if (fileLock != null && fileLock.isShared()) { if (JNLPRuntime.isDebug()) { System.out.println("Acquired shared lock on " + - JNLPRuntime.NETX_RUNNING_FILE + " to indicate javaws is running"); + netxRunningFile.toString() + " to indicate javaws is running"); } } else { fileLock = null; @@ -773,7 +775,9 @@ public class Launcher { fileLock.channel().close(); fileLock = null; if (JNLPRuntime.isDebug()) { - System.out.println("Release shared lock on " + JNLPRuntime.NETX_RUNNING_FILE); + String file = JNLPRuntime.getConfiguration() + .getProperty(DeploymentConfiguration.KEY_USER_NETX_RUNNING_FILE); + System.out.println("Release shared lock on " + file); } } catch (IOException e) { e.printStackTrace(); diff -r 6c2527d42900 -r 30efa2ff349b netx/net/sourceforge/jnlp/cache/CacheUtil.java --- a/netx/net/sourceforge/jnlp/cache/CacheUtil.java Mon Nov 01 11:44:15 2010 -0400 +++ b/netx/net/sourceforge/jnlp/cache/CacheUtil.java Wed Nov 03 11:33:41 2010 -0400 @@ -141,7 +141,8 @@ public class CacheUtil { return; } - File cacheDir = new File(JNLPRuntime.getBaseDir() + File.separator + "cache"); + File cacheDir = new File(JNLPRuntime.getConfiguration() + .getProperty(DeploymentConfiguration.KEY_USER_CACHE_DIR)); if (!(cacheDir.isDirectory())) { return; } @@ -150,7 +151,8 @@ public class CacheUtil { System.err.println("Clearing cache directory: " + cacheDir); } try { - FileUtils.recursiveDelete(cacheDir, JNLPRuntime.getBaseDir()); + cacheDir = cacheDir.getCanonicalFile(); + FileUtils.recursiveDelete(cacheDir, cacheDir); } catch (IOException e) { throw new RuntimeException(e); } @@ -161,7 +163,8 @@ public class CacheUtil { * @return true if the cache can be cleared at this time without problems */ private static boolean okToClearCache() { - File otherJavawsRunning = new File(JNLPRuntime.NETX_RUNNING_FILE); + File otherJavawsRunning = new File(JNLPRuntime.getConfiguration() + .getProperty(DeploymentConfiguration.KEY_USER_NETX_RUNNING_FILE)); try { if (otherJavawsRunning.isFile()) { FileOutputStream fis = new FileOutputStream(otherJavawsRunning); @@ -289,7 +292,9 @@ public class CacheUtil { throw new IllegalArgumentException(R("CNotCacheable", source)); try { - File localFile = urlToPath(source, "cache"); + String cacheDir = JNLPRuntime.getConfiguration() + .getProperty(DeploymentConfiguration.KEY_USER_CACHE_DIR); + File localFile = urlToPath(source, cacheDir); localFile.getParentFile().mkdirs(); return localFile; @@ -345,20 +350,23 @@ public class CacheUtil { } /** - * Converts a URL into a local path string within the runtime's - * base directory. + * Converts a URL into a local path string within the given directory. For + * example a url with subdirectory /tmp/ will + * result in a File that is located somewhere within /tmp/ * * @param location the url - * @param subdir subdirectory under the base directory + * @param subdir the subdirectory * @return the file */ public static File urlToPath(URL location, String subdir) { + if (subdir == null) { + throw new NullPointerException(); + } + StringBuffer path = new StringBuffer(); - if (subdir != null) { - path.append(subdir); - path.append(File.separatorChar); - } + path.append(subdir); + path.append(File.separatorChar); path.append(location.getProtocol()); path.append(File.separatorChar); @@ -366,7 +374,7 @@ public class CacheUtil { path.append(File.separatorChar); path.append(location.getPath().replace('/', File.separatorChar)); - return new File(JNLPRuntime.getBaseDir(), FileUtils.sanitizePath(path.toString())); + return new File(FileUtils.sanitizePath(path.toString())); } diff -r 6c2527d42900 -r 30efa2ff349b netx/net/sourceforge/jnlp/runtime/DeploymentConfiguration.java --- a/netx/net/sourceforge/jnlp/runtime/DeploymentConfiguration.java Mon Nov 01 11:44:15 2010 -0400 +++ b/netx/net/sourceforge/jnlp/runtime/DeploymentConfiguration.java Wed Nov 03 11:33:41 2010 -0400 @@ -28,6 +28,7 @@ import java.io.Reader; import java.io.Reader; import java.net.MalformedURLException; import java.net.URL; +import java.nio.channels.FileLock; import java.util.HashMap; import java.util.Map; import java.util.Properties; @@ -98,7 +99,7 @@ public final class DeploymentConfigurati } } - public static final String DEPLOYMENT_DIR = ".netx"; + public static final String DEPLOYMENT_DIR = ".icedtea"; public static final String DEPLOYMENT_CONFIG = "deployment.config"; public static final String DEPLOYMENT_PROPERTIES = "deployment.properties"; @@ -124,6 +125,22 @@ public final class DeploymentConfigurati public static final int PROXY_TYPE_MANUAL = 1; public static final int PROXY_TYPE_AUTO = 2; public static final int PROXY_TYPE_BROWSER = 3; + + public static final String KEY_USER_CACHE_DIR = "deployment.user.cachedir"; + public static final String KEY_USER_PERSISTENCE_CACHE_DIR = "deployment.user.pcachedir"; + public static final String KEY_SYSTEM_CACHE_DIR = "deployment.system.cachedir"; + public static final String KEY_USER_LOG_DIR = "deployment.user.logdir"; + public static final String KEY_USER_TMP_DIR = "deployment.user.tmp"; + /** the directory containing locks for single instance applications */ + public static final String KEY_USER_LOCKS_DIR = "deployment.user.locksdir"; + /** + * The netx_running file is used to indicate if any instances of netx are + * running (this file may exist even if no instances are running). All netx + * instances acquire a shared lock on this file. If this file can be locked + * (using a {@link FileLock}) in exclusive mode, then other netx instances + * are not running + */ + public static final String KEY_USER_NETX_RUNNING_FILE = "deployment.user.runningfile"; public enum ConfigType { System, User @@ -156,7 +173,7 @@ public final class DeploymentConfigurati */ public void load() throws ConfigurationException { // make sure no state leaks if security check fails later on - File userFile = new File(System.getProperty("user.home") + File.separator + ".netx" + File userFile = new File(System.getProperty("user.home") + File.separator + DEPLOYMENT_DIR + File.separator + DEPLOYMENT_PROPERTIES); SecurityManager sm = System.getSecurityManager(); @@ -277,6 +294,10 @@ public final class DeploymentConfigurati final String USER_HOME = System.getProperty("user.home") + File.separator + DEPLOYMENT_DIR; final String USER_SECURITY = USER_HOME + File.separator + "security"; + final String LOCKS_DIR = System.getProperty("java.io.tmpdir") + File.separator + + System.getProperty("user.name") + File.separator + "netx" + File.separator + + "locks"; + /* * This is more or less a straight copy from the deployment * configuration page, with occasional replacements of "" or no-defaults @@ -285,10 +306,13 @@ public final class DeploymentConfigurati String[][] defaults = new String[][] { /* infrastructure */ - { "deployment.user.cachedir", USER_HOME + File.separator + "cache" }, - { "deployment.system.cachedir", null }, - { "deployment.user.logdir", USER_HOME + File.separator + "log" }, - { "deployment.user.tmp", USER_HOME + File.separator + "tmp" }, + { KEY_USER_CACHE_DIR, USER_HOME + File.separator + "cache" }, + { KEY_USER_PERSISTENCE_CACHE_DIR, USER_HOME + File.separator + "pcache" }, + { KEY_SYSTEM_CACHE_DIR, null }, + { KEY_USER_LOG_DIR, USER_HOME + File.separator + "log" }, + { KEY_USER_TMP_DIR, USER_HOME + File.separator + "tmp" }, + { KEY_USER_LOCKS_DIR, LOCKS_DIR }, + { KEY_USER_NETX_RUNNING_FILE, LOCKS_DIR + File.separator + "netx_running" }, /* certificates and policy files */ { "deployment.user.security.policy", "file://" + USER_SECURITY + File.separator + "java.policy" }, { "deployment.user.security.trusted.cacerts", USER_SECURITY + File.separator + "trusted.cacerts" }, diff -r 6c2527d42900 -r 30efa2ff349b netx/net/sourceforge/jnlp/runtime/JNLPRuntime.java --- a/netx/net/sourceforge/jnlp/runtime/JNLPRuntime.java Mon Nov 01 11:44:15 2010 -0400 +++ b/netx/net/sourceforge/jnlp/runtime/JNLPRuntime.java Wed Nov 03 11:33:41 2010 -0400 @@ -131,25 +131,6 @@ public class JNLPRuntime { /** the ~/.netx/security/trusted.certs file containing trusted certificates */ public static final String CERTIFICATES_FILE = SECURITY_DIR + File.separator + "trusted.certs"; - - /** the /tmp/ directory used for temporary files */ - public static final String TMP_DIR = System.getProperty("java.io.tmpdir"); - - /** - * the /tmp/$USER/netx/locks/ directory containing locks for single instance - * applications - */ - public static final String LOCKS_DIR = TMP_DIR + File.separator + USER + File.separator - + "netx" + File.separator + "locks"; - - /** - * The /tmp/$USER/netx/locks/netx_running file is used to indicate if any - * instances of netx are running (this file may exist even if no instances - * are running). All netx instances acquire a shared lock on this file. If - * this file can be locked (using a {@link FileLock}) in exclusive mode, then - * other netx instances are not running - */ - public static final String NETX_RUNNING_FILE = LOCKS_DIR + File.separator + "netx_running"; /** the java.home directory */ public static final String JAVA_HOME_DIR = System.getProperty("java.home"); diff -r 6c2527d42900 -r 30efa2ff349b netx/net/sourceforge/jnlp/services/SingleInstanceLock.java --- a/netx/net/sourceforge/jnlp/services/SingleInstanceLock.java Mon Nov 01 11:44:15 2010 -0400 +++ b/netx/net/sourceforge/jnlp/services/SingleInstanceLock.java Wed Nov 03 11:33:41 2010 -0400 @@ -28,6 +28,7 @@ import java.net.ServerSocket; import java.net.ServerSocket; import net.sourceforge.jnlp.JNLPFile; +import net.sourceforge.jnlp.runtime.DeploymentConfiguration; import net.sourceforge.jnlp.runtime.JNLPRuntime; import net.sourceforge.jnlp.util.FileUtils; @@ -128,7 +129,8 @@ class SingleInstanceLock { * may or may not exist. */ private File getLockFile() { - File baseDir = new File(JNLPRuntime.LOCKS_DIR); + File baseDir = new File(JNLPRuntime.getConfiguration() + .getProperty(DeploymentConfiguration.KEY_USER_LOCKS_DIR)); if (!baseDir.isDirectory() && !baseDir.mkdirs()) { throw new RuntimeException(R("RNoLockDir", baseDir)); diff -r 6c2527d42900 -r 30efa2ff349b netx/net/sourceforge/jnlp/services/XPersistenceService.java --- a/netx/net/sourceforge/jnlp/services/XPersistenceService.java Mon Nov 01 11:44:15 2010 -0400 +++ b/netx/net/sourceforge/jnlp/services/XPersistenceService.java Wed Nov 03 11:33:41 2010 -0400 @@ -80,7 +80,9 @@ class XPersistenceService implements Per * @return the file */ protected File toCacheFile(URL location) throws MalformedURLException { - return CacheUtil.urlToPath(location, "pcache"); + String pcache = JNLPRuntime.getConfiguration() + .getProperty(DeploymentConfiguration.KEY_USER_PERSISTENCE_CACHE_DIR); + return CacheUtil.urlToPath(location, pcache); } /** diff -r 6c2527d42900 -r 30efa2ff349b netx/net/sourceforge/jnlp/util/XDesktopEntry.java --- a/netx/net/sourceforge/jnlp/util/XDesktopEntry.java Mon Nov 01 11:44:15 2010 -0400 +++ b/netx/net/sourceforge/jnlp/util/XDesktopEntry.java Wed Nov 03 11:33:41 2010 -0400 @@ -32,6 +32,7 @@ import net.sourceforge.jnlp.StreamEater; import net.sourceforge.jnlp.StreamEater; import net.sourceforge.jnlp.cache.CacheUtil; import net.sourceforge.jnlp.cache.UpdatePolicy; +import net.sourceforge.jnlp.runtime.DeploymentConfiguration; import net.sourceforge.jnlp.runtime.JNLPRuntime; /** @@ -73,7 +74,9 @@ public class XDesktopEntry { String pathToJavaws = System.getProperty("java.home") + File.separator + "bin" + File.separator + "javaws"; - File cacheFile = CacheUtil.urlToPath(file.getSourceLocation(), "cache"); + String cacheDir = JNLPRuntime.getConfiguration() + .getProperty(DeploymentConfiguration.KEY_USER_CACHE_DIR); + File cacheFile = CacheUtil.urlToPath(file.getSourceLocation(), cacheDir); String fileContents = "[Desktop Entry]\n"; fileContents += "Version=1.0\n"; @@ -131,10 +134,14 @@ public class XDesktopEntry { * Install this XDesktopEntry into the user's desktop as a launcher */ private void installDesktopLauncher() { - File shortcutFile = new File(JNLPRuntime.TMP_DIR + File.separator - + FileUtils.sanitizeFileName(file.getTitle()) + ".desktop"); + File shortcutFile = new File(JNLPRuntime.getConfiguration() + .getProperty(DeploymentConfiguration.KEY_USER_TMP_DIR) + + File.separator + FileUtils.sanitizeFileName(file.getTitle()) + ".desktop"); try { + if (!shortcutFile.getParentFile().isDirectory() && !shortcutFile.getParentFile().mkdirs()) { + throw new IOException(shortcutFile.getParentFile().toString()); + } /* * Write out a Java String (UTF-16) as a UTF-8 file */ diff -r 6c2527d42900 -r 30efa2ff349b plugin/icedteanp/java/sun/applet/JavaConsole.java --- a/plugin/icedteanp/java/sun/applet/JavaConsole.java Mon Nov 01 11:44:15 2010 -0400 +++ b/plugin/icedteanp/java/sun/applet/JavaConsole.java Wed Nov 03 11:33:41 2010 -0400 @@ -63,6 +63,9 @@ import javax.swing.border.EmptyBorder; import javax.swing.border.EmptyBorder; import javax.swing.border.TitledBorder; +import net.sourceforge.jnlp.runtime.DeploymentConfiguration; +import net.sourceforge.jnlp.runtime.JNLPRuntime; + /** * A simple Java console for IcedTeaPlugin * @@ -86,6 +89,8 @@ public class JavaConsole { e.printStackTrace(); } + final String logDir = JNLPRuntime.getConfiguration().getProperty(DeploymentConfiguration.KEY_USER_LOG_DIR); + consoleWindow = new JFrame("Java Console"); JPanel contentPanel = new JPanel(); @@ -104,7 +109,7 @@ public class JavaConsole { stdOutText.setEditable(false); stdOutText.setFont(monoSpace); - TextAreaUpdater stdOutUpdater = new TextAreaUpdater(new File( + TextAreaUpdater stdOutUpdater = new TextAreaUpdater(new File(logDir, PluginMain.PLUGIN_STDOUT_FILE), stdOutText); stdOutUpdater.setName("IcedteaPlugin Console Thread(System.out)"); @@ -117,7 +122,7 @@ public class JavaConsole { stdErrText.setEditable(false); stdErrText.setFont(monoSpace); - TextAreaUpdater stdErrUpdater = new TextAreaUpdater(new File( + TextAreaUpdater stdErrUpdater = new TextAreaUpdater(new File(logDir, PluginMain.PLUGIN_STDERR_FILE), stdErrText); stdErrUpdater.setName("IcedteaPlugin Console Thread(System.err)"); diff -r 6c2527d42900 -r 30efa2ff349b plugin/icedteanp/java/sun/applet/PluginMain.java --- a/plugin/icedteanp/java/sun/applet/PluginMain.java Mon Nov 01 11:44:15 2010 -0400 +++ b/plugin/icedteanp/java/sun/applet/PluginMain.java Wed Nov 03 11:33:41 2010 -0400 @@ -80,6 +80,8 @@ import javax.net.ssl.SSLSocketFactory; import javax.net.ssl.SSLSocketFactory; import javax.net.ssl.TrustManager; +import net.sourceforge.jnlp.runtime.DeploymentConfiguration; +import net.sourceforge.jnlp.runtime.JNLPRuntime; import net.sourceforge.jnlp.security.VariableX509TrustManager; /** @@ -87,10 +89,9 @@ import net.sourceforge.jnlp.security.Var */ public class PluginMain { - // the files where stdout/stderr are sent to - public static final String PLUGIN_STDERR_FILE = System.getProperty("user.home") + "/.icedteaplugin/java.stderr"; - public static final String PLUGIN_STDOUT_FILE = System.getProperty("user.home") + "/.icedteaplugin/java.stdout"; + public static final String PLUGIN_STDERR_FILE = "java.stderr"; + public static final String PLUGIN_STDOUT_FILE = "java.stdout"; final boolean redirectStreams = System.getenv().containsKey("ICEDTEAPLUGIN_DEBUG"); static PluginStreamHandler streamHandler; @@ -123,16 +124,6 @@ public class PluginMain public PluginMain(String inPipe, String outPipe) { - try { - File errFile = new File(PLUGIN_STDERR_FILE); - File outFile = new File(PLUGIN_STDOUT_FILE); - - System.setErr(new TeeOutputStream(new FileOutputStream(errFile), System.err)); - System.setOut(new TeeOutputStream(new FileOutputStream(outFile), System.out)); - } catch (Exception e) { - PluginDebug.debug("Unable to redirect streams"); - e.printStackTrace(); - } connect(inPipe, outPipe); @@ -140,6 +131,20 @@ public class PluginMain securityContext.prePopulateLCClasses(); securityContext.setStreamhandler(streamHandler); AppletSecurityContextManager.addContext(0, securityContext); + + String logDir = JNLPRuntime.getConfiguration().getProperty(DeploymentConfiguration.KEY_USER_LOG_DIR); + try { + File errFile = new File(logDir, PLUGIN_STDERR_FILE); + errFile.getParentFile().mkdirs(); + File outFile = new File(logDir, PLUGIN_STDOUT_FILE); + outFile.getParentFile().mkdirs(); + + System.setErr(new TeeOutputStream(new FileOutputStream(errFile), System.err)); + System.setOut(new TeeOutputStream(new FileOutputStream(outFile), System.out)); + } catch (Exception e) { + PluginDebug.debug("Unable to redirect streams"); + e.printStackTrace(); + } PluginAppletViewer.setStreamhandler(streamHandler); PluginAppletViewer.setPluginCallRequestFactory(new PluginCallRequestFactory()); From omajid at redhat.com Wed Nov 3 09:32:06 2010 From: omajid at redhat.com (Omair Majid) Date: Wed, 03 Nov 2010 12:32:06 -0400 Subject: /hg/icedtea-web: Stabilize plugin initialization In-Reply-To: References: Message-ID: <4CD18E86.4090602@redhat.com> Hi, On 10/26/2010 05:50 PM, dbhole at icedtea.classpath.org wrote: > changeset d4a914a000e3 in /hg/icedtea-web > details: http://icedtea.classpath.org/hg/icedtea-web?cmd=changeset;node=d4a914a000e3 > author: Deepak Bhole > date: Tue Oct 26 17:49:57 2010 -0700 > > Stabilize plugin initialization > - Fixed frame pop-up issue when tab is closed early > - Fixed 100% CPU load when too many applets load in parallel > - Fixed message queue processing to prioritize destroy first > It appears that this commit broke nettbank: https://www.portalbank.no/1100/. With this changeset, I can no longer type in the text field :( Thanks, Omair > > diffstat: > > 3 files changed, 264 insertions(+), 98 deletions(-) > ChangeLog | 25 > plugin/icedteanp/java/sun/applet/PluginAppletViewer.java | 300 +++++++---- > plugin/icedteanp/java/sun/applet/PluginMessageConsumer.java | 37 + > > diffs (truncated from 635 to 500 lines): > > diff -r dfd749c077c3 -r d4a914a000e3 ChangeLog > --- a/ChangeLog Tue Oct 26 12:01:22 2010 -0400 > +++ b/ChangeLog Tue Oct 26 17:49:57 2010 -0700 > @@ -1,3 +1,28 @@ 2010-10-26 Andrew Su > +2010-10-26 Deepak Bhole > + > + * plugin/icedteanp/java/sun/applet/PluginAppletViewer.java: > + Replace all status.put calls with calls to updateStatus(). > + (createPanel): Create a frame with a 0 handle. Use the new > + waitForAppletInit function to wait until applet is ready. > + (reFrame): Re-order code so that the panel is never parentless. > + (handleMessage): Re-wrote message processing to handle destroy calls > + correctly, checking for them more often to prevent a frame from popping up > + if the tab/page is closed before loading finishes. Decode special > + characters in the message. > + (updateStatus): New function. Updates the status for the given instance if > + applicable. > + (destroyApplet): New function. Destroys a given applet and frees related > + resources. > + (waitForAppletInit): New function. Blocks until applet is initialized. > + (parse): Remove part that decoded the params. Decoding is now done earlier > + in handleMessage(). > + * plugin/icedteanp/java/sun/applet/PluginMessageConsumer.java: > + (getPriorityStrIfPriority): Mark destroy messages as priority. > + (bringPriorityMessagesToFront): Scans the queue for priority messages and > + brings them to the front. > + (run): If the queue is not empty and there are no workers left, run > + bringPriorityMessagesToFront() and retry. > + > 2010-10-26 Andrew Su > > * Makefile.am: Split rm -rf into rm -f and rmdir for launcher > diff -r dfd749c077c3 -r d4a914a000e3 plugin/icedteanp/java/sun/applet/PluginAppletViewer.java > --- a/plugin/icedteanp/java/sun/applet/PluginAppletViewer.java Tue Oct 26 12:01:22 2010 -0400 > +++ b/plugin/icedteanp/java/sun/applet/PluginAppletViewer.java Tue Oct 26 17:49:57 2010 -0700 > @@ -136,12 +136,10 @@ import com.sun.jndi.toolkit.url.UrlUtil; > } > } > }); > + > + // create the frame. > + PluginAppletViewer.reFrame(null, identifier, System.out, 0, panel); > > - > - > - // create the frame. > - PluginAppletViewer.reFrame(null, identifier, System.out, handle, panel); > - > panel.init(); > > // Start the applet > @@ -179,15 +177,7 @@ import com.sun.jndi.toolkit.url.UrlUtil; > > // Wait for the panel to initialize > // (happens in a separate thread) > - while (panel.getApplet() == null&& > - ((NetxPanel) panel).isAlive()) { > - try { > - Thread.sleep(50); > - PluginDebug.debug("Waiting for applet to initialize..."); > - } catch (InterruptedException ie) { > - // just wait > - } > - } > + PluginAppletViewer.waitForAppletInit((NetxPanel) panel); > > a = panel.getApplet(); > > @@ -317,7 +307,17 @@ import com.sun.jndi.toolkit.url.UrlUtil; > */ > private static String defaultSaveFile = "Applet.ser"; > > - private static enum PAV_INIT_STATUS {PRE_INIT, IN_INIT, INIT_COMPLETE, INACTIVE}; > + > + /** > + * Enumerates the current status of an applet > + * > + * PRE_INIT -> Parsing and initialization phase > + * INIT_COMPLETE -> Initialization complete, reframe pending > + * REFRAME_COMPLETE -> Reframe complete, applet is initialized and usable by the user > + * INACTIVE -> Browser has directed that the applet be destroyed (this state is non-overridable except by DESTROYED) > + * DESTROYED -> Applet has been destroyed > + */ > + private static enum PAV_INIT_STATUS {PRE_INIT, INIT_COMPLETE, REFRAME_COMPLETE, INACTIVE, DESTROYED}; > > /** > * The panel in which the applet is being displayed. > @@ -350,7 +350,6 @@ import com.sun.jndi.toolkit.url.UrlUtil; > > private static HashMap status = > new HashMap(); > - > > private long handle = 0; > private WindowListener windowEventListener = null; > @@ -380,16 +379,20 @@ import com.sun.jndi.toolkit.url.UrlUtil; > return; > > PluginAppletViewer newFrame = new PluginAppletViewer(handle, identifier, statusMsgStream, panel); > - > + > if (oldFrame != null) { > applets.remove(oldFrame.identifier); > oldFrame.removeWindowListener(oldFrame.windowEventListener); > panel.removeAppletListener(oldFrame.appletEventListener); > + > + // Add first, remove later > + newFrame.add("Center", panel); > oldFrame.remove(panel); > oldFrame.dispose(); > + } else { > + newFrame.add("Center", panel); > } > > - newFrame.add("Center", panel); > newFrame.pack(); > > newFrame.appletEventListener = new AppletEventListener(newFrame, newFrame); > @@ -397,11 +400,6 @@ import com.sun.jndi.toolkit.url.UrlUtil; > > applets.put(identifier, newFrame); > > - // dispose oldframe if necessary > - if (oldFrame != null) { > - oldFrame.dispose(); > - } > - > PluginDebug.debug(panel + " reframed"); > } > > @@ -449,7 +447,7 @@ import com.sun.jndi.toolkit.url.UrlUtil; > this.frame = frame; > this.appletViewer = appletViewer; > } > - > + > public void appletStateChanged(AppletEvent evt) > { > AppletPanel src = (AppletPanel)evt.getSource(); > @@ -483,9 +481,9 @@ import com.sun.jndi.toolkit.url.UrlUtil; > AppletPanel.changeFrameAppContext(frame, SunToolkit.targetToAppContext(a)); > else > AppletPanel.changeFrameAppContext(frame, AppContext.getAppContext()); > - > - status.put(appletViewer.identifier, PAV_INIT_STATUS.INIT_COMPLETE); > - > + > + updateStatus(appletViewer.identifier, PAV_INIT_STATUS.INIT_COMPLETE); > + > break; > } > } > @@ -510,7 +508,13 @@ import com.sun.jndi.toolkit.url.UrlUtil; > > try { > if (message.startsWith("handle")) { > - > + > + // If there is a key for this status, it means it > + // was either initialized before, or destroy has been > + // processed. Stop moving further. > + if (updateStatus(identifier, PAV_INIT_STATUS.PRE_INIT) != null) > + return; > + > // Extract the information from the message > String[] msgParts = new String[4]; > for (int i=0; i< 3; i++) { > @@ -519,32 +523,38 @@ import com.sun.jndi.toolkit.url.UrlUtil; > msgParts[i] = message.substring(spaceLocation + 1, nextSpaceLocation); > message = message.substring(nextSpaceLocation + 1); > } > - > + > long handle = Long.parseLong(msgParts[0]); > String width = msgParts[1]; > String height = msgParts[2]; > - > + > int spaceLocation = message.indexOf(' ', "tag".length()+1); > String documentBase = > UrlUtil.decode(message.substring("tag".length() + 1, spaceLocation)); > - String tag = message.substring(spaceLocation+1); > + String tag = message.substring(spaceLocation+1); > + > + // Decode the tag > + tag = tag.replace(">", ">"); > + tag = tag.replace("<", "<"); > + tag = tag.replace("&", "&"); > + tag = tag.replace(" ", "\n"); > + tag = tag.replace(" ", "\r"); > + tag = tag.replace(""", "\""); > > PluginDebug.debug ("Handle = " + handle + "\n" + > "Width = " + width + "\n" + > "Height = " + height + "\n" + > "DocumentBase = " + documentBase + "\n" + > "Tag = " + tag); > - > - status.put(identifier, PAV_INIT_STATUS.PRE_INIT); > + > PluginAppletViewer.parse > (identifier, handle, width, height, > new StringReader(tag), > new URL(documentBase)); > - > > int maxWait = APPLET_TIMEOUT; // wait for applet to fully load > int wait = 0; > - while (!status.get(identifier).equals(PAV_INIT_STATUS.INIT_COMPLETE)&& > + while ( !applets.containsKey(identifier)&& // Map is populated only by reFrame > (wait< maxWait)) { > > try { > @@ -555,9 +565,44 @@ import com.sun.jndi.toolkit.url.UrlUtil; > } > } > > - if (!status.get(identifier).equals(PAV_INIT_STATUS.INIT_COMPLETE)) > + // If wait exceeded maxWait, we timed out. Throw an exception > + if (wait>= maxWait) > throw new Exception("Applet initialization timeout"); > > + PluginAppletViewer oldFrame = applets.get(identifier); > + > + // We should not try to destroy an applet during > + // initialization. It may cause an inconsistent state, > + // which would bad if it's a trusted applet that > + // read/writes to files > + waitForAppletInit((NetxPanel) applets.get(identifier).panel); > + > + // Should we proceed with reframing? > + if (status.get(identifier).equals(PAV_INIT_STATUS.INACTIVE)) { > + destroyApplet(identifier); > + return; > + } > + > + // Proceed with re-framing > + reFrame(oldFrame, identifier, System.out, handle, oldFrame.panel); > + > + // There is a slight chance that destroy can happen > + // between the above and below line > + if (updateStatus(identifier, PAV_INIT_STATUS.REFRAME_COMPLETE).equals(PAV_INIT_STATUS.INACTIVE)) { > + destroyApplet(identifier); > + } > + > + } else if (message.startsWith("destroy")) { > + > + // Set it inactive, and try to do cleanup is applicable > + PAV_INIT_STATUS previousStatus = updateStatus(identifier, PAV_INIT_STATUS.INACTIVE); > + PluginDebug.debug("Destroy status set for " + identifier); > + > + if (previousStatus != null&& > + previousStatus.equals(PAV_INIT_STATUS.REFRAME_COMPLETE)) { > + destroyApplet(identifier); > + } > + > } else { > PluginDebug.debug ("Handling message: " + message + " instance " + identifier + " " + Thread.currentThread()); > > @@ -568,7 +613,7 @@ import com.sun.jndi.toolkit.url.UrlUtil; > status.get(identifier).equals(PAV_INIT_STATUS.PRE_INIT) > ) > ); > - > + > // don't bother processing further for inactive applets > if (status.get(identifier).equals(PAV_INIT_STATUS.INACTIVE)) > return; > @@ -580,31 +625,131 @@ import com.sun.jndi.toolkit.url.UrlUtil; > e.printStackTrace(); > > // If an exception happened during pre-init, we need to update status > - if (status.get(identifier).equals(PAV_INIT_STATUS.PRE_INIT)) > - status.put(identifier, PAV_INIT_STATUS.INACTIVE); > + updateStatus(identifier, PAV_INIT_STATUS.INACTIVE); > > throw new RuntimeException("Failed to handle message: " + > message + " for instance " + identifier, e); > } > } > - > + > + /** > + * Sets the status unless an overriding status is set (e.g. if > + * status is DESTROYED, it may not be overridden). > + * > + * @param identifier The identifier for which the status is to be set > + * @param status The status to switch to > + * @return The previous status > + */ > + private static synchronized PAV_INIT_STATUS updateStatus(int identifier, PAV_INIT_STATUS newStatus) { > + > + PAV_INIT_STATUS prev = status.get(identifier); > + > + // If the status is set > + if (status.containsKey(identifier)) { > + > + // Nothing may override destroyed status > + if (status.get(identifier).equals(PAV_INIT_STATUS.DESTROYED)) { > + return prev; > + } > + > + // If status is inactive, only DESTROYED may override it > + if (status.get(identifier).equals(PAV_INIT_STATUS.INACTIVE)) { > + if (!newStatus.equals(PAV_INIT_STATUS.DESTROYED)) { > + return prev; > + } > + } > + } > + > + // Else set to given status > + status.put(identifier, newStatus); > + > + return prev; > + } > + > + /** > + * Destroys the given applet instance. > + * > + * This function may be called multiple times without problems. > + * It does a synchronized check on the status and will only > + * attempt to destroy the applet if not previously destroyed. > + * > + * @param identifier The instance which is to be destroyed > + */ > + > + private static synchronized void destroyApplet(int identifier) { > + > + PluginDebug.debug("DestroyApplet called for " + identifier); > + > + PAV_INIT_STATUS prev = updateStatus(identifier, PAV_INIT_STATUS.DESTROYED); > + > + // If already destroyed, return > + if (prev.equals(PAV_INIT_STATUS.DESTROYED)) { > + PluginDebug.debug(identifier + " already destroyed. Returning."); > + return; > + } > + > + // If already disposed, return > + if (applets.get(identifier).panel.applet == null) { > + // Try to still dispose the panel itself -- no harm done with double dispose > + applets.get(identifier).dispose(); > + > + PluginDebug.debug(identifier + " inactive. Returning."); > + return; > + } > + > + PluginDebug.debug("Attempting to destroy " + identifier); > + > + final int fIdentifier = identifier; > + SwingUtilities.invokeLater(new Runnable() { > + public void run() { > + applets.get(fIdentifier).appletClose(); > + } > + }); > + > + PluginDebug.debug(identifier + " destroyed"); > + } > + > + /** > + * Function to block until applet initialization is complete > + * > + * @param identifier The instance to wait for > + */ > + public static void waitForAppletInit(NetxPanel panel) { > + > + int waitTime = 0; > + > + // Wait till initialization finishes > + while (panel.getApplet() == null&& > + panel.isAlive()&& > + waitTime< APPLET_TIMEOUT) { > + try { > + if (waitTime%500 == 0) > + PluginDebug.debug("Waiting for applet panel " + panel + " to initialize..."); > + > + Thread.sleep(waitTime += 50); > + } catch (InterruptedException ie) { > + // just wait > + } > + } > + > + PluginDebug.debug("Applet panel " + panel + " initialized"); > + } > + > public void handleMessage(int reference, String message) > { > if (message.startsWith("width")) { > > // Wait for panel to come alive > int maxWait = APPLET_TIMEOUT; // wait for panel to come alive > - int wait = 0; > + int wait = 0; > while (!status.get(identifier).equals(PAV_INIT_STATUS.INIT_COMPLETE)&& wait< maxWait) { > - > - try { > - Thread.sleep(50); > - wait += 50; > - } catch (InterruptedException ie) { > - // just wait > - } > - } > - > + try { > + Thread.sleep(50); > + wait += 50; > + } catch (InterruptedException ie) { > + // just wait > + } > + } > > // 0 => width, 1=> width_value, 2 => height, 3=> height_value > String[] dimMsg = message.split(" "); > @@ -636,7 +781,7 @@ import com.sun.jndi.toolkit.url.UrlUtil; > > panel.setSize(width, height); > panel.validate(); > - > + > panel.applet.resize(width, height); > panel.applet.validate(); > } > @@ -649,9 +794,6 @@ import com.sun.jndi.toolkit.url.UrlUtil; > e.printStackTrace(); > } > > - } else if (message.startsWith("destroy")) { > - dispose(); > - status.put(identifier, PAV_INIT_STATUS.INACTIVE); > } else if (message.startsWith("GetJavaObject")) { > > // FIXME: how do we determine what security context this > @@ -672,15 +814,7 @@ import com.sun.jndi.toolkit.url.UrlUtil; > > // Wait for the panel to initialize > // (happens in a separate thread) > - while (panel.getApplet() == null&& > - ((NetxPanel) panel).isAlive()) { > - try { > - Thread.sleep(50); > - PluginDebug.debug("Waiting for applet to initialize..."); > - } catch (InterruptedException ie) { > - // just wait > - } > - } > + waitForAppletInit((NetxPanel) panel); > > PluginDebug.debug(panel + " -- " + panel.getApplet() + " -- " + ((NetxPanel) panel).isAlive()); > > @@ -1548,10 +1682,11 @@ import com.sun.jndi.toolkit.url.UrlUtil; > if (countApplets() == 0) { > appletSystemExit(); > } > + > + updateStatus(identifier, PAV_INIT_STATUS.DESTROYED); > } > }).start(); > > - status.put(identifier, PAV_INIT_STATUS.INACTIVE); > } > > /** > @@ -1677,18 +1812,6 @@ import com.sun.jndi.toolkit.url.UrlUtil; > val = buf.toString(); > } > > - att = att.replace(">", ">"); > - att = att.replace("<", "<"); > - att = att.replace("&", "&"); > - att = att.replace(" ", "\n"); > - att = att.replace(" ", "\r"); > - > - val = val.replace(">", ">"); > - val = val.replace("<", "<"); > - val = val.replace("&", "&"); > - val = val.replace(" ", "\n"); > - val = val.replace(" ", "\r"); > - > PluginDebug.debug("PUT " + att + " = '" + val + "'"); > atts.put(att.toLowerCase(java.util.Locale.ENGLISH), val); > > @@ -1708,7 +1831,6 @@ import com.sun.jndi.toolkit.url.UrlUtil; > // private static final == inline > private static final boolean isInt(Object o) { > boolean isInt = false; > - > try { > Integer.parseInt((String) o); > isInt = true; > @@ -1763,7 +1885,6 @@ import com.sun.jndi.toolkit.url.UrlUtil; > } catch (IOException ioe) { > return ioe; > } > - > return null; > } > }; > @@ -1785,6 +1906,7 @@ import com.sun.jndi.toolkit.url.UrlUtil; > boolean isObjectTag = false; > boolean isEmbedTag = false; From dbhole at redhat.com Wed Nov 3 09:46:24 2010 From: dbhole at redhat.com (Deepak Bhole) Date: Wed, 3 Nov 2010 12:46:24 -0400 Subject: /hg/icedtea-web: Stabilize plugin initialization In-Reply-To: <4CD18E86.4090602@redhat.com> References: <4CD18E86.4090602@redhat.com> Message-ID: <20101103164624.GD15122@redhat.com> * Omair Majid [2010-11-03 12:32]: > Hi, > > On 10/26/2010 05:50 PM, dbhole at icedtea.classpath.org wrote: > >changeset d4a914a000e3 in /hg/icedtea-web > >details: http://icedtea.classpath.org/hg/icedtea-web?cmd=changeset;node=d4a914a000e3 > >author: Deepak Bhole > >date: Tue Oct 26 17:49:57 2010 -0700 > > > > Stabilize plugin initialization > > - Fixed frame pop-up issue when tab is closed early > > - Fixed 100% CPU load when too many applets load in parallel > > - Fixed message queue processing to prioritize destroy first > > > > It appears that this commit broke nettbank: > https://www.portalbank.no/1100/. With this changeset, I can no > longer type in the text field :( > Hmm, did you bisect? The change is unrelated to keyboard input -- it only re-organizes the sequence of initialization events. Once the applet is running, it should be the same as before. Cheers, Deepak > Thanks, > Omair > > > > >diffstat: > > > >3 files changed, 264 insertions(+), 98 deletions(-) > >ChangeLog | 25 > >plugin/icedteanp/java/sun/applet/PluginAppletViewer.java | 300 +++++++---- > >plugin/icedteanp/java/sun/applet/PluginMessageConsumer.java | 37 + > > > >diffs (truncated from 635 to 500 lines): > > > >diff -r dfd749c077c3 -r d4a914a000e3 ChangeLog > >--- a/ChangeLog Tue Oct 26 12:01:22 2010 -0400 > >+++ b/ChangeLog Tue Oct 26 17:49:57 2010 -0700 > >@@ -1,3 +1,28 @@ 2010-10-26 Andrew Su > >+2010-10-26 Deepak Bhole > >+ > >+ * plugin/icedteanp/java/sun/applet/PluginAppletViewer.java: > >+ Replace all status.put calls with calls to updateStatus(). > >+ (createPanel): Create a frame with a 0 handle. Use the new > >+ waitForAppletInit function to wait until applet is ready. > >+ (reFrame): Re-order code so that the panel is never parentless. > >+ (handleMessage): Re-wrote message processing to handle destroy calls > >+ correctly, checking for them more often to prevent a frame from popping up > >+ if the tab/page is closed before loading finishes. Decode special > >+ characters in the message. > >+ (updateStatus): New function. Updates the status for the given instance if > >+ applicable. > >+ (destroyApplet): New function. Destroys a given applet and frees related > >+ resources. > >+ (waitForAppletInit): New function. Blocks until applet is initialized. > >+ (parse): Remove part that decoded the params. Decoding is now done earlier > >+ in handleMessage(). > >+ * plugin/icedteanp/java/sun/applet/PluginMessageConsumer.java: > >+ (getPriorityStrIfPriority): Mark destroy messages as priority. > >+ (bringPriorityMessagesToFront): Scans the queue for priority messages and > >+ brings them to the front. > >+ (run): If the queue is not empty and there are no workers left, run > >+ bringPriorityMessagesToFront() and retry. > >+ > > 2010-10-26 Andrew Su > > > > * Makefile.am: Split rm -rf into rm -f and rmdir for launcher > >diff -r dfd749c077c3 -r d4a914a000e3 plugin/icedteanp/java/sun/applet/PluginAppletViewer.java > >--- a/plugin/icedteanp/java/sun/applet/PluginAppletViewer.java Tue Oct 26 12:01:22 2010 -0400 > >+++ b/plugin/icedteanp/java/sun/applet/PluginAppletViewer.java Tue Oct 26 17:49:57 2010 -0700 > >@@ -136,12 +136,10 @@ import com.sun.jndi.toolkit.url.UrlUtil; > > } > > } > > }); > >+ > >+ // create the frame. > >+ PluginAppletViewer.reFrame(null, identifier, System.out, 0, panel); > > > >- > >- > >- // create the frame. > >- PluginAppletViewer.reFrame(null, identifier, System.out, handle, panel); > >- > > panel.init(); > > > > // Start the applet > >@@ -179,15 +177,7 @@ import com.sun.jndi.toolkit.url.UrlUtil; > > > > // Wait for the panel to initialize > > // (happens in a separate thread) > >- while (panel.getApplet() == null&& > >- ((NetxPanel) panel).isAlive()) { > >- try { > >- Thread.sleep(50); > >- PluginDebug.debug("Waiting for applet to initialize..."); > >- } catch (InterruptedException ie) { > >- // just wait > >- } > >- } > >+ PluginAppletViewer.waitForAppletInit((NetxPanel) panel); > > > > a = panel.getApplet(); > > > >@@ -317,7 +307,17 @@ import com.sun.jndi.toolkit.url.UrlUtil; > > */ > > private static String defaultSaveFile = "Applet.ser"; > > > >- private static enum PAV_INIT_STATUS {PRE_INIT, IN_INIT, INIT_COMPLETE, INACTIVE}; > >+ > >+ /** > >+ * Enumerates the current status of an applet > >+ * > >+ * PRE_INIT -> Parsing and initialization phase > >+ * INIT_COMPLETE -> Initialization complete, reframe pending > >+ * REFRAME_COMPLETE -> Reframe complete, applet is initialized and usable by the user > >+ * INACTIVE -> Browser has directed that the applet be destroyed (this state is non-overridable except by DESTROYED) > >+ * DESTROYED -> Applet has been destroyed > >+ */ > >+ private static enum PAV_INIT_STATUS {PRE_INIT, INIT_COMPLETE, REFRAME_COMPLETE, INACTIVE, DESTROYED}; > > > > /** > > * The panel in which the applet is being displayed. > >@@ -350,7 +350,6 @@ import com.sun.jndi.toolkit.url.UrlUtil; > > > > private static HashMap status = > > new HashMap(); > >- > > > > private long handle = 0; > > private WindowListener windowEventListener = null; > >@@ -380,16 +379,20 @@ import com.sun.jndi.toolkit.url.UrlUtil; > > return; > > > > PluginAppletViewer newFrame = new PluginAppletViewer(handle, identifier, statusMsgStream, panel); > >- > >+ > > if (oldFrame != null) { > > applets.remove(oldFrame.identifier); > > oldFrame.removeWindowListener(oldFrame.windowEventListener); > > panel.removeAppletListener(oldFrame.appletEventListener); > >+ > >+ // Add first, remove later > >+ newFrame.add("Center", panel); > > oldFrame.remove(panel); > > oldFrame.dispose(); > >+ } else { > >+ newFrame.add("Center", panel); > > } > > > >- newFrame.add("Center", panel); > > newFrame.pack(); > > > > newFrame.appletEventListener = new AppletEventListener(newFrame, newFrame); > >@@ -397,11 +400,6 @@ import com.sun.jndi.toolkit.url.UrlUtil; > > > > applets.put(identifier, newFrame); > > > >- // dispose oldframe if necessary > >- if (oldFrame != null) { > >- oldFrame.dispose(); > >- } > >- > > PluginDebug.debug(panel + " reframed"); > > } > > > >@@ -449,7 +447,7 @@ import com.sun.jndi.toolkit.url.UrlUtil; > > this.frame = frame; > > this.appletViewer = appletViewer; > > } > >- > >+ > > public void appletStateChanged(AppletEvent evt) > > { > > AppletPanel src = (AppletPanel)evt.getSource(); > >@@ -483,9 +481,9 @@ import com.sun.jndi.toolkit.url.UrlUtil; > > AppletPanel.changeFrameAppContext(frame, SunToolkit.targetToAppContext(a)); > > else > > AppletPanel.changeFrameAppContext(frame, AppContext.getAppContext()); > >- > >- status.put(appletViewer.identifier, PAV_INIT_STATUS.INIT_COMPLETE); > >- > >+ > >+ updateStatus(appletViewer.identifier, PAV_INIT_STATUS.INIT_COMPLETE); > >+ > > break; > > } > > } > >@@ -510,7 +508,13 @@ import com.sun.jndi.toolkit.url.UrlUtil; > > > > try { > > if (message.startsWith("handle")) { > >- > >+ > >+ // If there is a key for this status, it means it > >+ // was either initialized before, or destroy has been > >+ // processed. Stop moving further. > >+ if (updateStatus(identifier, PAV_INIT_STATUS.PRE_INIT) != null) > >+ return; > >+ > > // Extract the information from the message > > String[] msgParts = new String[4]; > > for (int i=0; i< 3; i++) { > >@@ -519,32 +523,38 @@ import com.sun.jndi.toolkit.url.UrlUtil; > > msgParts[i] = message.substring(spaceLocation + 1, nextSpaceLocation); > > message = message.substring(nextSpaceLocation + 1); > > } > >- > >+ > > long handle = Long.parseLong(msgParts[0]); > > String width = msgParts[1]; > > String height = msgParts[2]; > >- > >+ > > int spaceLocation = message.indexOf(' ', "tag".length()+1); > > String documentBase = > > UrlUtil.decode(message.substring("tag".length() + 1, spaceLocation)); > >- String tag = message.substring(spaceLocation+1); > >+ String tag = message.substring(spaceLocation+1); > >+ > >+ // Decode the tag > >+ tag = tag.replace(">", ">"); > >+ tag = tag.replace("<", "<"); > >+ tag = tag.replace("&", "&"); > >+ tag = tag.replace(" ", "\n"); > >+ tag = tag.replace(" ", "\r"); > >+ tag = tag.replace(""", "\""); > > > > PluginDebug.debug ("Handle = " + handle + "\n" + > > "Width = " + width + "\n" + > > "Height = " + height + "\n" + > > "DocumentBase = " + documentBase + "\n" + > > "Tag = " + tag); > >- > >- status.put(identifier, PAV_INIT_STATUS.PRE_INIT); > >+ > > PluginAppletViewer.parse > > (identifier, handle, width, height, > > new StringReader(tag), > > new URL(documentBase)); > >- > > > > int maxWait = APPLET_TIMEOUT; // wait for applet to fully load > > int wait = 0; > >- while (!status.get(identifier).equals(PAV_INIT_STATUS.INIT_COMPLETE)&& > >+ while ( !applets.containsKey(identifier)&& // Map is populated only by reFrame > > (wait< maxWait)) { > > > > try { > >@@ -555,9 +565,44 @@ import com.sun.jndi.toolkit.url.UrlUtil; > > } > > } > > > >- if (!status.get(identifier).equals(PAV_INIT_STATUS.INIT_COMPLETE)) > >+ // If wait exceeded maxWait, we timed out. Throw an exception > >+ if (wait>= maxWait) > > throw new Exception("Applet initialization timeout"); > > > >+ PluginAppletViewer oldFrame = applets.get(identifier); > >+ > >+ // We should not try to destroy an applet during > >+ // initialization. It may cause an inconsistent state, > >+ // which would bad if it's a trusted applet that > >+ // read/writes to files > >+ waitForAppletInit((NetxPanel) applets.get(identifier).panel); > >+ > >+ // Should we proceed with reframing? > >+ if (status.get(identifier).equals(PAV_INIT_STATUS.INACTIVE)) { > >+ destroyApplet(identifier); > >+ return; > >+ } > >+ > >+ // Proceed with re-framing > >+ reFrame(oldFrame, identifier, System.out, handle, oldFrame.panel); > >+ > >+ // There is a slight chance that destroy can happen > >+ // between the above and below line > >+ if (updateStatus(identifier, PAV_INIT_STATUS.REFRAME_COMPLETE).equals(PAV_INIT_STATUS.INACTIVE)) { > >+ destroyApplet(identifier); > >+ } > >+ > >+ } else if (message.startsWith("destroy")) { > >+ > >+ // Set it inactive, and try to do cleanup is applicable > >+ PAV_INIT_STATUS previousStatus = updateStatus(identifier, PAV_INIT_STATUS.INACTIVE); > >+ PluginDebug.debug("Destroy status set for " + identifier); > >+ > >+ if (previousStatus != null&& > >+ previousStatus.equals(PAV_INIT_STATUS.REFRAME_COMPLETE)) { > >+ destroyApplet(identifier); > >+ } > >+ > > } else { > > PluginDebug.debug ("Handling message: " + message + " instance " + identifier + " " + Thread.currentThread()); > > > >@@ -568,7 +613,7 @@ import com.sun.jndi.toolkit.url.UrlUtil; > > status.get(identifier).equals(PAV_INIT_STATUS.PRE_INIT) > > ) > > ); > >- > >+ > > // don't bother processing further for inactive applets > > if (status.get(identifier).equals(PAV_INIT_STATUS.INACTIVE)) > > return; > >@@ -580,31 +625,131 @@ import com.sun.jndi.toolkit.url.UrlUtil; > > e.printStackTrace(); > > > > // If an exception happened during pre-init, we need to update status > >- if (status.get(identifier).equals(PAV_INIT_STATUS.PRE_INIT)) > >- status.put(identifier, PAV_INIT_STATUS.INACTIVE); > >+ updateStatus(identifier, PAV_INIT_STATUS.INACTIVE); > > > > throw new RuntimeException("Failed to handle message: " + > > message + " for instance " + identifier, e); > > } > > } > >- > >+ > >+ /** > >+ * Sets the status unless an overriding status is set (e.g. if > >+ * status is DESTROYED, it may not be overridden). > >+ * > >+ * @param identifier The identifier for which the status is to be set > >+ * @param status The status to switch to > >+ * @return The previous status > >+ */ > >+ private static synchronized PAV_INIT_STATUS updateStatus(int identifier, PAV_INIT_STATUS newStatus) { > >+ > >+ PAV_INIT_STATUS prev = status.get(identifier); > >+ > >+ // If the status is set > >+ if (status.containsKey(identifier)) { > >+ > >+ // Nothing may override destroyed status > >+ if (status.get(identifier).equals(PAV_INIT_STATUS.DESTROYED)) { > >+ return prev; > >+ } > >+ > >+ // If status is inactive, only DESTROYED may override it > >+ if (status.get(identifier).equals(PAV_INIT_STATUS.INACTIVE)) { > >+ if (!newStatus.equals(PAV_INIT_STATUS.DESTROYED)) { > >+ return prev; > >+ } > >+ } > >+ } > >+ > >+ // Else set to given status > >+ status.put(identifier, newStatus); > >+ > >+ return prev; > >+ } > >+ > >+ /** > >+ * Destroys the given applet instance. > >+ * > >+ * This function may be called multiple times without problems. > >+ * It does a synchronized check on the status and will only > >+ * attempt to destroy the applet if not previously destroyed. > >+ * > >+ * @param identifier The instance which is to be destroyed > >+ */ > >+ > >+ private static synchronized void destroyApplet(int identifier) { > >+ > >+ PluginDebug.debug("DestroyApplet called for " + identifier); > >+ > >+ PAV_INIT_STATUS prev = updateStatus(identifier, PAV_INIT_STATUS.DESTROYED); > >+ > >+ // If already destroyed, return > >+ if (prev.equals(PAV_INIT_STATUS.DESTROYED)) { > >+ PluginDebug.debug(identifier + " already destroyed. Returning."); > >+ return; > >+ } > >+ > >+ // If already disposed, return > >+ if (applets.get(identifier).panel.applet == null) { > >+ // Try to still dispose the panel itself -- no harm done with double dispose > >+ applets.get(identifier).dispose(); > >+ > >+ PluginDebug.debug(identifier + " inactive. Returning."); > >+ return; > >+ } > >+ > >+ PluginDebug.debug("Attempting to destroy " + identifier); > >+ > >+ final int fIdentifier = identifier; > >+ SwingUtilities.invokeLater(new Runnable() { > >+ public void run() { > >+ applets.get(fIdentifier).appletClose(); > >+ } > >+ }); > >+ > >+ PluginDebug.debug(identifier + " destroyed"); > >+ } > >+ > >+ /** > >+ * Function to block until applet initialization is complete > >+ * > >+ * @param identifier The instance to wait for > >+ */ > >+ public static void waitForAppletInit(NetxPanel panel) { > >+ > >+ int waitTime = 0; > >+ > >+ // Wait till initialization finishes > >+ while (panel.getApplet() == null&& > >+ panel.isAlive()&& > >+ waitTime< APPLET_TIMEOUT) { > >+ try { > >+ if (waitTime%500 == 0) > >+ PluginDebug.debug("Waiting for applet panel " + panel + " to initialize..."); > >+ > >+ Thread.sleep(waitTime += 50); > >+ } catch (InterruptedException ie) { > >+ // just wait > >+ } > >+ } > >+ > >+ PluginDebug.debug("Applet panel " + panel + " initialized"); > >+ } > >+ > > public void handleMessage(int reference, String message) > > { > > if (message.startsWith("width")) { > > > > // Wait for panel to come alive > > int maxWait = APPLET_TIMEOUT; // wait for panel to come alive > >- int wait = 0; > >+ int wait = 0; > > while (!status.get(identifier).equals(PAV_INIT_STATUS.INIT_COMPLETE)&& wait< maxWait) { > >- > >- try { > >- Thread.sleep(50); > >- wait += 50; > >- } catch (InterruptedException ie) { > >- // just wait > >- } > >- } > >- > >+ try { > >+ Thread.sleep(50); > >+ wait += 50; > >+ } catch (InterruptedException ie) { > >+ // just wait > >+ } > >+ } > > > > // 0 => width, 1=> width_value, 2 => height, 3=> height_value > > String[] dimMsg = message.split(" "); > >@@ -636,7 +781,7 @@ import com.sun.jndi.toolkit.url.UrlUtil; > > > > panel.setSize(width, height); > > panel.validate(); > >- > >+ > > panel.applet.resize(width, height); > > panel.applet.validate(); > > } > >@@ -649,9 +794,6 @@ import com.sun.jndi.toolkit.url.UrlUtil; > > e.printStackTrace(); > > } > > > >- } else if (message.startsWith("destroy")) { > >- dispose(); > >- status.put(identifier, PAV_INIT_STATUS.INACTIVE); > > } else if (message.startsWith("GetJavaObject")) { > > > > // FIXME: how do we determine what security context this > >@@ -672,15 +814,7 @@ import com.sun.jndi.toolkit.url.UrlUtil; > > > > // Wait for the panel to initialize > > // (happens in a separate thread) > >- while (panel.getApplet() == null&& > >- ((NetxPanel) panel).isAlive()) { > >- try { > >- Thread.sleep(50); > >- PluginDebug.debug("Waiting for applet to initialize..."); > >- } catch (InterruptedException ie) { > >- // just wait > >- } > >- } > >+ waitForAppletInit((NetxPanel) panel); > > > > PluginDebug.debug(panel + " -- " + panel.getApplet() + " -- " + ((NetxPanel) panel).isAlive()); > > > >@@ -1548,10 +1682,11 @@ import com.sun.jndi.toolkit.url.UrlUtil; > > if (countApplets() == 0) { > > appletSystemExit(); > > } > >+ > >+ updateStatus(identifier, PAV_INIT_STATUS.DESTROYED); > > } > > }).start(); > > > >- status.put(identifier, PAV_INIT_STATUS.INACTIVE); > > } > > > > /** > >@@ -1677,18 +1812,6 @@ import com.sun.jndi.toolkit.url.UrlUtil; > > val = buf.toString(); > > } > > > >- att = att.replace(">", ">"); > >- att = att.replace("<", "<"); > >- att = att.replace("&", "&"); > >- att = att.replace(" ", "\n"); > >- att = att.replace(" ", "\r"); > >- > >- val = val.replace(">", ">"); > >- val = val.replace("<", "<"); > >- val = val.replace("&", "&"); > >- val = val.replace(" ", "\n"); > >- val = val.replace(" ", "\r"); > >- > > PluginDebug.debug("PUT " + att + " = '" + val + "'"); > > atts.put(att.toLowerCase(java.util.Locale.ENGLISH), val); > > > >@@ -1708,7 +1831,6 @@ import com.sun.jndi.toolkit.url.UrlUtil; > > // private static final == inline > > private static final boolean isInt(Object o) { > > boolean isInt = false; > >- > > try { > > Integer.parseInt((String) o); > > isInt = true; > >@@ -1763,7 +1885,6 @@ import com.sun.jndi.toolkit.url.UrlUtil; > > } catch (IOException ioe) { > > return ioe; > > } > >- > > return null; > > } > > }; > >@@ -1785,6 +1906,7 @@ import com.sun.jndi.toolkit.url.UrlUtil; > > boolean isObjectTag = false; > > boolean isEmbedTag = false; > From omajid at redhat.com Wed Nov 3 09:52:27 2010 From: omajid at redhat.com (Omair Majid) Date: Wed, 03 Nov 2010 12:52:27 -0400 Subject: /hg/icedtea-web: Stabilize plugin initialization In-Reply-To: <20101103164624.GD15122@redhat.com> References: <4CD18E86.4090602@redhat.com> <20101103164624.GD15122@redhat.com> Message-ID: <4CD1934B.3080903@redhat.com> On 11/03/2010 12:46 PM, Deepak Bhole wrote: > * Omair Majid [2010-11-03 12:32]: >> Hi, >> >> On 10/26/2010 05:50 PM, dbhole at icedtea.classpath.org wrote: >>> changeset d4a914a000e3 in /hg/icedtea-web >>> details: http://icedtea.classpath.org/hg/icedtea-web?cmd=changeset;node=d4a914a000e3 >>> author: Deepak Bhole >>> date: Tue Oct 26 17:49:57 2010 -0700 >>> >>> Stabilize plugin initialization >>> - Fixed frame pop-up issue when tab is closed early >>> - Fixed 100% CPU load when too many applets load in parallel >>> - Fixed message queue processing to prioritize destroy first >>> >> >> It appears that this commit broke nettbank: >> https://www.portalbank.no/1100/. With this changeset, I can no >> longer type in the text field :( >> > > Hmm, did you bisect? The change is unrelated to keyboard input -- it > only re-organizes the sequence of initialization events. Once the applet > is running, it should be the same as before. > Yup, I used hg bisect. Then I manually confirmed. I was quite surprised too as I dont see how it could change the applet's behaviour after it starts. Infact, my first suspect was my own AppContext patch. So please confirm this yourself. On the other hand, I recall that there was this typing backwards bug once in firefox which the plugin could trigger - maybe this is something similar? I just wanted to point out the regression to make sure we didnt get surprises close to release time. Thanks, Omair >>> >>> diffstat: >>> >>> 3 files changed, 264 insertions(+), 98 deletions(-) >>> ChangeLog | 25 >>> plugin/icedteanp/java/sun/applet/PluginAppletViewer.java | 300 +++++++---- >>> plugin/icedteanp/java/sun/applet/PluginMessageConsumer.java | 37 + >>> >>> diffs (truncated from 635 to 500 lines): >>> >>> diff -r dfd749c077c3 -r d4a914a000e3 ChangeLog >>> --- a/ChangeLog Tue Oct 26 12:01:22 2010 -0400 >>> +++ b/ChangeLog Tue Oct 26 17:49:57 2010 -0700 >>> @@ -1,3 +1,28 @@ 2010-10-26 Andrew Su >>> +2010-10-26 Deepak Bhole >>> + >>> + * plugin/icedteanp/java/sun/applet/PluginAppletViewer.java: >>> + Replace all status.put calls with calls to updateStatus(). >>> + (createPanel): Create a frame with a 0 handle. Use the new >>> + waitForAppletInit function to wait until applet is ready. >>> + (reFrame): Re-order code so that the panel is never parentless. >>> + (handleMessage): Re-wrote message processing to handle destroy calls >>> + correctly, checking for them more often to prevent a frame from popping up >>> + if the tab/page is closed before loading finishes. Decode special >>> + characters in the message. >>> + (updateStatus): New function. Updates the status for the given instance if >>> + applicable. >>> + (destroyApplet): New function. Destroys a given applet and frees related >>> + resources. >>> + (waitForAppletInit): New function. Blocks until applet is initialized. >>> + (parse): Remove part that decoded the params. Decoding is now done earlier >>> + in handleMessage(). >>> + * plugin/icedteanp/java/sun/applet/PluginMessageConsumer.java: >>> + (getPriorityStrIfPriority): Mark destroy messages as priority. >>> + (bringPriorityMessagesToFront): Scans the queue for priority messages and >>> + brings them to the front. >>> + (run): If the queue is not empty and there are no workers left, run >>> + bringPriorityMessagesToFront() and retry. >>> + >>> 2010-10-26 Andrew Su >>> >>> * Makefile.am: Split rm -rf into rm -f and rmdir for launcher >>> diff -r dfd749c077c3 -r d4a914a000e3 plugin/icedteanp/java/sun/applet/PluginAppletViewer.java >>> --- a/plugin/icedteanp/java/sun/applet/PluginAppletViewer.java Tue Oct 26 12:01:22 2010 -0400 >>> +++ b/plugin/icedteanp/java/sun/applet/PluginAppletViewer.java Tue Oct 26 17:49:57 2010 -0700 >>> @@ -136,12 +136,10 @@ import com.sun.jndi.toolkit.url.UrlUtil; >>> } >>> } >>> }); >>> + >>> + // create the frame. >>> + PluginAppletViewer.reFrame(null, identifier, System.out, 0, panel); >>> >>> - >>> - >>> - // create the frame. >>> - PluginAppletViewer.reFrame(null, identifier, System.out, handle, panel); >>> - >>> panel.init(); >>> >>> // Start the applet >>> @@ -179,15 +177,7 @@ import com.sun.jndi.toolkit.url.UrlUtil; >>> >>> // Wait for the panel to initialize >>> // (happens in a separate thread) >>> - while (panel.getApplet() == null&& >>> - ((NetxPanel) panel).isAlive()) { >>> - try { >>> - Thread.sleep(50); >>> - PluginDebug.debug("Waiting for applet to initialize..."); >>> - } catch (InterruptedException ie) { >>> - // just wait >>> - } >>> - } >>> + PluginAppletViewer.waitForAppletInit((NetxPanel) panel); >>> >>> a = panel.getApplet(); >>> >>> @@ -317,7 +307,17 @@ import com.sun.jndi.toolkit.url.UrlUtil; >>> */ >>> private static String defaultSaveFile = "Applet.ser"; >>> >>> - private static enum PAV_INIT_STATUS {PRE_INIT, IN_INIT, INIT_COMPLETE, INACTIVE}; >>> + >>> + /** >>> + * Enumerates the current status of an applet >>> + * >>> + * PRE_INIT -> Parsing and initialization phase >>> + * INIT_COMPLETE -> Initialization complete, reframe pending >>> + * REFRAME_COMPLETE -> Reframe complete, applet is initialized and usable by the user >>> + * INACTIVE -> Browser has directed that the applet be destroyed (this state is non-overridable except by DESTROYED) >>> + * DESTROYED -> Applet has been destroyed >>> + */ >>> + private static enum PAV_INIT_STATUS {PRE_INIT, INIT_COMPLETE, REFRAME_COMPLETE, INACTIVE, DESTROYED}; >>> >>> /** >>> * The panel in which the applet is being displayed. >>> @@ -350,7 +350,6 @@ import com.sun.jndi.toolkit.url.UrlUtil; >>> >>> private static HashMap status = >>> new HashMap(); >>> - >>> >>> private long handle = 0; >>> private WindowListener windowEventListener = null; >>> @@ -380,16 +379,20 @@ import com.sun.jndi.toolkit.url.UrlUtil; >>> return; >>> >>> PluginAppletViewer newFrame = new PluginAppletViewer(handle, identifier, statusMsgStream, panel); >>> - >>> + >>> if (oldFrame != null) { >>> applets.remove(oldFrame.identifier); >>> oldFrame.removeWindowListener(oldFrame.windowEventListener); >>> panel.removeAppletListener(oldFrame.appletEventListener); >>> + >>> + // Add first, remove later >>> + newFrame.add("Center", panel); >>> oldFrame.remove(panel); >>> oldFrame.dispose(); >>> + } else { >>> + newFrame.add("Center", panel); >>> } >>> >>> - newFrame.add("Center", panel); >>> newFrame.pack(); >>> >>> newFrame.appletEventListener = new AppletEventListener(newFrame, newFrame); >>> @@ -397,11 +400,6 @@ import com.sun.jndi.toolkit.url.UrlUtil; >>> >>> applets.put(identifier, newFrame); >>> >>> - // dispose oldframe if necessary >>> - if (oldFrame != null) { >>> - oldFrame.dispose(); >>> - } >>> - >>> PluginDebug.debug(panel + " reframed"); >>> } >>> >>> @@ -449,7 +447,7 @@ import com.sun.jndi.toolkit.url.UrlUtil; >>> this.frame = frame; >>> this.appletViewer = appletViewer; >>> } >>> - >>> + >>> public void appletStateChanged(AppletEvent evt) >>> { >>> AppletPanel src = (AppletPanel)evt.getSource(); >>> @@ -483,9 +481,9 @@ import com.sun.jndi.toolkit.url.UrlUtil; >>> AppletPanel.changeFrameAppContext(frame, SunToolkit.targetToAppContext(a)); >>> else >>> AppletPanel.changeFrameAppContext(frame, AppContext.getAppContext()); >>> - >>> - status.put(appletViewer.identifier, PAV_INIT_STATUS.INIT_COMPLETE); >>> - >>> + >>> + updateStatus(appletViewer.identifier, PAV_INIT_STATUS.INIT_COMPLETE); >>> + >>> break; >>> } >>> } >>> @@ -510,7 +508,13 @@ import com.sun.jndi.toolkit.url.UrlUtil; >>> >>> try { >>> if (message.startsWith("handle")) { >>> - >>> + >>> + // If there is a key for this status, it means it >>> + // was either initialized before, or destroy has been >>> + // processed. Stop moving further. >>> + if (updateStatus(identifier, PAV_INIT_STATUS.PRE_INIT) != null) >>> + return; >>> + >>> // Extract the information from the message >>> String[] msgParts = new String[4]; >>> for (int i=0; i< 3; i++) { >>> @@ -519,32 +523,38 @@ import com.sun.jndi.toolkit.url.UrlUtil; >>> msgParts[i] = message.substring(spaceLocation + 1, nextSpaceLocation); >>> message = message.substring(nextSpaceLocation + 1); >>> } >>> - >>> + >>> long handle = Long.parseLong(msgParts[0]); >>> String width = msgParts[1]; >>> String height = msgParts[2]; >>> - >>> + >>> int spaceLocation = message.indexOf(' ', "tag".length()+1); >>> String documentBase = >>> UrlUtil.decode(message.substring("tag".length() + 1, spaceLocation)); >>> - String tag = message.substring(spaceLocation+1); >>> + String tag = message.substring(spaceLocation+1); >>> + >>> + // Decode the tag >>> + tag = tag.replace(">", ">"); >>> + tag = tag.replace("<", "<"); >>> + tag = tag.replace("&", "&"); >>> + tag = tag.replace(" ", "\n"); >>> + tag = tag.replace(" ", "\r"); >>> + tag = tag.replace(""", "\""); >>> >>> PluginDebug.debug ("Handle = " + handle + "\n" + >>> "Width = " + width + "\n" + >>> "Height = " + height + "\n" + >>> "DocumentBase = " + documentBase + "\n" + >>> "Tag = " + tag); >>> - >>> - status.put(identifier, PAV_INIT_STATUS.PRE_INIT); >>> + >>> PluginAppletViewer.parse >>> (identifier, handle, width, height, >>> new StringReader(tag), >>> new URL(documentBase)); >>> - >>> >>> int maxWait = APPLET_TIMEOUT; // wait for applet to fully load >>> int wait = 0; >>> - while (!status.get(identifier).equals(PAV_INIT_STATUS.INIT_COMPLETE)&& >>> + while ( !applets.containsKey(identifier)&& // Map is populated only by reFrame >>> (wait< maxWait)) { >>> >>> try { >>> @@ -555,9 +565,44 @@ import com.sun.jndi.toolkit.url.UrlUtil; >>> } >>> } >>> >>> - if (!status.get(identifier).equals(PAV_INIT_STATUS.INIT_COMPLETE)) >>> + // If wait exceeded maxWait, we timed out. Throw an exception >>> + if (wait>= maxWait) >>> throw new Exception("Applet initialization timeout"); >>> >>> + PluginAppletViewer oldFrame = applets.get(identifier); >>> + >>> + // We should not try to destroy an applet during >>> + // initialization. It may cause an inconsistent state, >>> + // which would bad if it's a trusted applet that >>> + // read/writes to files >>> + waitForAppletInit((NetxPanel) applets.get(identifier).panel); >>> + >>> + // Should we proceed with reframing? >>> + if (status.get(identifier).equals(PAV_INIT_STATUS.INACTIVE)) { >>> + destroyApplet(identifier); >>> + return; >>> + } >>> + >>> + // Proceed with re-framing >>> + reFrame(oldFrame, identifier, System.out, handle, oldFrame.panel); >>> + >>> + // There is a slight chance that destroy can happen >>> + // between the above and below line >>> + if (updateStatus(identifier, PAV_INIT_STATUS.REFRAME_COMPLETE).equals(PAV_INIT_STATUS.INACTIVE)) { >>> + destroyApplet(identifier); >>> + } >>> + >>> + } else if (message.startsWith("destroy")) { >>> + >>> + // Set it inactive, and try to do cleanup is applicable >>> + PAV_INIT_STATUS previousStatus = updateStatus(identifier, PAV_INIT_STATUS.INACTIVE); >>> + PluginDebug.debug("Destroy status set for " + identifier); >>> + >>> + if (previousStatus != null&& >>> + previousStatus.equals(PAV_INIT_STATUS.REFRAME_COMPLETE)) { >>> + destroyApplet(identifier); >>> + } >>> + >>> } else { >>> PluginDebug.debug ("Handling message: " + message + " instance " + identifier + " " + Thread.currentThread()); >>> >>> @@ -568,7 +613,7 @@ import com.sun.jndi.toolkit.url.UrlUtil; >>> status.get(identifier).equals(PAV_INIT_STATUS.PRE_INIT) >>> ) >>> ); >>> - >>> + >>> // don't bother processing further for inactive applets >>> if (status.get(identifier).equals(PAV_INIT_STATUS.INACTIVE)) >>> return; >>> @@ -580,31 +625,131 @@ import com.sun.jndi.toolkit.url.UrlUtil; >>> e.printStackTrace(); >>> >>> // If an exception happened during pre-init, we need to update status >>> - if (status.get(identifier).equals(PAV_INIT_STATUS.PRE_INIT)) >>> - status.put(identifier, PAV_INIT_STATUS.INACTIVE); >>> + updateStatus(identifier, PAV_INIT_STATUS.INACTIVE); >>> >>> throw new RuntimeException("Failed to handle message: " + >>> message + " for instance " + identifier, e); >>> } >>> } >>> - >>> + >>> + /** >>> + * Sets the status unless an overriding status is set (e.g. if >>> + * status is DESTROYED, it may not be overridden). >>> + * >>> + * @param identifier The identifier for which the status is to be set >>> + * @param status The status to switch to >>> + * @return The previous status >>> + */ >>> + private static synchronized PAV_INIT_STATUS updateStatus(int identifier, PAV_INIT_STATUS newStatus) { >>> + >>> + PAV_INIT_STATUS prev = status.get(identifier); >>> + >>> + // If the status is set >>> + if (status.containsKey(identifier)) { >>> + >>> + // Nothing may override destroyed status >>> + if (status.get(identifier).equals(PAV_INIT_STATUS.DESTROYED)) { >>> + return prev; >>> + } >>> + >>> + // If status is inactive, only DESTROYED may override it >>> + if (status.get(identifier).equals(PAV_INIT_STATUS.INACTIVE)) { >>> + if (!newStatus.equals(PAV_INIT_STATUS.DESTROYED)) { >>> + return prev; >>> + } >>> + } >>> + } >>> + >>> + // Else set to given status >>> + status.put(identifier, newStatus); >>> + >>> + return prev; >>> + } >>> + >>> + /** >>> + * Destroys the given applet instance. >>> + * >>> + * This function may be called multiple times without problems. >>> + * It does a synchronized check on the status and will only >>> + * attempt to destroy the applet if not previously destroyed. >>> + * >>> + * @param identifier The instance which is to be destroyed >>> + */ >>> + >>> + private static synchronized void destroyApplet(int identifier) { >>> + >>> + PluginDebug.debug("DestroyApplet called for " + identifier); >>> + >>> + PAV_INIT_STATUS prev = updateStatus(identifier, PAV_INIT_STATUS.DESTROYED); >>> + >>> + // If already destroyed, return >>> + if (prev.equals(PAV_INIT_STATUS.DESTROYED)) { >>> + PluginDebug.debug(identifier + " already destroyed. Returning."); >>> + return; >>> + } >>> + >>> + // If already disposed, return >>> + if (applets.get(identifier).panel.applet == null) { >>> + // Try to still dispose the panel itself -- no harm done with double dispose >>> + applets.get(identifier).dispose(); >>> + >>> + PluginDebug.debug(identifier + " inactive. Returning."); >>> + return; >>> + } >>> + >>> + PluginDebug.debug("Attempting to destroy " + identifier); >>> + >>> + final int fIdentifier = identifier; >>> + SwingUtilities.invokeLater(new Runnable() { >>> + public void run() { >>> + applets.get(fIdentifier).appletClose(); >>> + } >>> + }); >>> + >>> + PluginDebug.debug(identifier + " destroyed"); >>> + } >>> + >>> + /** >>> + * Function to block until applet initialization is complete >>> + * >>> + * @param identifier The instance to wait for >>> + */ >>> + public static void waitForAppletInit(NetxPanel panel) { >>> + >>> + int waitTime = 0; >>> + >>> + // Wait till initialization finishes >>> + while (panel.getApplet() == null&& >>> + panel.isAlive()&& >>> + waitTime< APPLET_TIMEOUT) { >>> + try { >>> + if (waitTime%500 == 0) >>> + PluginDebug.debug("Waiting for applet panel " + panel + " to initialize..."); >>> + >>> + Thread.sleep(waitTime += 50); >>> + } catch (InterruptedException ie) { >>> + // just wait >>> + } >>> + } >>> + >>> + PluginDebug.debug("Applet panel " + panel + " initialized"); >>> + } >>> + >>> public void handleMessage(int reference, String message) >>> { >>> if (message.startsWith("width")) { >>> >>> // Wait for panel to come alive >>> int maxWait = APPLET_TIMEOUT; // wait for panel to come alive >>> - int wait = 0; >>> + int wait = 0; >>> while (!status.get(identifier).equals(PAV_INIT_STATUS.INIT_COMPLETE)&& wait< maxWait) { >>> - >>> - try { >>> - Thread.sleep(50); >>> - wait += 50; >>> - } catch (InterruptedException ie) { >>> - // just wait >>> - } >>> - } >>> - >>> + try { >>> + Thread.sleep(50); >>> + wait += 50; >>> + } catch (InterruptedException ie) { >>> + // just wait >>> + } >>> + } >>> >>> // 0 => width, 1=> width_value, 2 => height, 3=> height_value >>> String[] dimMsg = message.split(" "); >>> @@ -636,7 +781,7 @@ import com.sun.jndi.toolkit.url.UrlUtil; >>> >>> panel.setSize(width, height); >>> panel.validate(); >>> - >>> + >>> panel.applet.resize(width, height); >>> panel.applet.validate(); >>> } >>> @@ -649,9 +794,6 @@ import com.sun.jndi.toolkit.url.UrlUtil; >>> e.printStackTrace(); >>> } >>> >>> - } else if (message.startsWith("destroy")) { >>> - dispose(); >>> - status.put(identifier, PAV_INIT_STATUS.INACTIVE); >>> } else if (message.startsWith("GetJavaObject")) { >>> >>> // FIXME: how do we determine what security context this >>> @@ -672,15 +814,7 @@ import com.sun.jndi.toolkit.url.UrlUtil; >>> >>> // Wait for the panel to initialize >>> // (happens in a separate thread) >>> - while (panel.getApplet() == null&& >>> - ((NetxPanel) panel).isAlive()) { >>> - try { >>> - Thread.sleep(50); >>> - PluginDebug.debug("Waiting for applet to initialize..."); >>> - } catch (InterruptedException ie) { >>> - // just wait >>> - } >>> - } >>> + waitForAppletInit((NetxPanel) panel); >>> >>> PluginDebug.debug(panel + " -- " + panel.getApplet() + " -- " + ((NetxPanel) panel).isAlive()); >>> >>> @@ -1548,10 +1682,11 @@ import com.sun.jndi.toolkit.url.UrlUtil; >>> if (countApplets() == 0) { >>> appletSystemExit(); >>> } >>> + >>> + updateStatus(identifier, PAV_INIT_STATUS.DESTROYED); >>> } >>> }).start(); >>> >>> - status.put(identifier, PAV_INIT_STATUS.INACTIVE); >>> } >>> >>> /** >>> @@ -1677,18 +1812,6 @@ import com.sun.jndi.toolkit.url.UrlUtil; >>> val = buf.toString(); >>> } >>> >>> - att = att.replace(">", ">"); >>> - att = att.replace("<", "<"); >>> - att = att.replace("&", "&"); >>> - att = att.replace(" ", "\n"); >>> - att = att.replace(" ", "\r"); >>> - >>> - val = val.replace(">", ">"); >>> - val = val.replace("<", "<"); >>> - val = val.replace("&", "&"); >>> - val = val.replace(" ", "\n"); >>> - val = val.replace(" ", "\r"); >>> - >>> PluginDebug.debug("PUT " + att + " = '" + val + "'"); >>> atts.put(att.toLowerCase(java.util.Locale.ENGLISH), val); >>> >>> @@ -1708,7 +1831,6 @@ import com.sun.jndi.toolkit.url.UrlUtil; >>> // private static final == inline >>> private static final boolean isInt(Object o) { >>> boolean isInt = false; >>> - >>> try { >>> Integer.parseInt((String) o); >>> isInt = true; >>> @@ -1763,7 +1885,6 @@ import com.sun.jndi.toolkit.url.UrlUtil; >>> } catch (IOException ioe) { >>> return ioe; >>> } >>> - >>> return null; >>> } >>> }; >>> @@ -1785,6 +1906,7 @@ import com.sun.jndi.toolkit.url.UrlUtil; >>> boolean isObjectTag = false; >>> boolean isEmbedTag = false; >> From dbhole at redhat.com Wed Nov 3 10:02:03 2010 From: dbhole at redhat.com (Deepak Bhole) Date: Wed, 3 Nov 2010 13:02:03 -0400 Subject: /hg/icedtea-web: Stabilize plugin initialization In-Reply-To: <4CD1934B.3080903@redhat.com> References: <4CD18E86.4090602@redhat.com> <20101103164624.GD15122@redhat.com> <4CD1934B.3080903@redhat.com> Message-ID: <20101103170202.GE15122@redhat.com> * Omair Majid [2010-11-03 12:52]: > On 11/03/2010 12:46 PM, Deepak Bhole wrote: > >* Omair Majid [2010-11-03 12:32]: > >>Hi, > >> > >>On 10/26/2010 05:50 PM, dbhole at icedtea.classpath.org wrote: > >>>changeset d4a914a000e3 in /hg/icedtea-web > >>>details: http://icedtea.classpath.org/hg/icedtea-web?cmd=changeset;node=d4a914a000e3 > >>>author: Deepak Bhole > >>>date: Tue Oct 26 17:49:57 2010 -0700 > >>> > >>> Stabilize plugin initialization > >>> - Fixed frame pop-up issue when tab is closed early > >>> - Fixed 100% CPU load when too many applets load in parallel > >>> - Fixed message queue processing to prioritize destroy first > >>> > >> > >>It appears that this commit broke nettbank: > >>https://www.portalbank.no/1100/. With this changeset, I can no > >>longer type in the text field :( > >> > > > >Hmm, did you bisect? The change is unrelated to keyboard input -- it > >only re-organizes the sequence of initialization events. Once the applet > >is running, it should be the same as before. > > > > Yup, I used hg bisect. Then I manually confirmed. I was quite > surprised too as I dont see how it could change the applet's > behaviour after it starts. Infact, my first suspect was my own > AppContext patch. So please confirm this yourself. On the other > hand, I recall that there was this typing backwards bug once in > firefox which the plugin could trigger - maybe this is something > similar? I just wanted to point out the regression to make sure we > didnt get surprises close to release time. > Hmm. This is very odd. It if definitely not the typing backwards bug from Firefox. That one was OJI specific, caused by the way events were pushed up the stack in xulrunner code. I'll take a look. Thanks! Deepak > Thanks, > Omair > > >>> > >>>diffstat: > >>> > >>>3 files changed, 264 insertions(+), 98 deletions(-) > >>>ChangeLog | 25 > >>>plugin/icedteanp/java/sun/applet/PluginAppletViewer.java | 300 +++++++---- > >>>plugin/icedteanp/java/sun/applet/PluginMessageConsumer.java | 37 + > >>> > >>>diffs (truncated from 635 to 500 lines): > >>> > >>>diff -r dfd749c077c3 -r d4a914a000e3 ChangeLog > >>>--- a/ChangeLog Tue Oct 26 12:01:22 2010 -0400 > >>>+++ b/ChangeLog Tue Oct 26 17:49:57 2010 -0700 > >>>@@ -1,3 +1,28 @@ 2010-10-26 Andrew Su > >>>+2010-10-26 Deepak Bhole > >>>+ > >>>+ * plugin/icedteanp/java/sun/applet/PluginAppletViewer.java: > >>>+ Replace all status.put calls with calls to updateStatus(). > >>>+ (createPanel): Create a frame with a 0 handle. Use the new > >>>+ waitForAppletInit function to wait until applet is ready. > >>>+ (reFrame): Re-order code so that the panel is never parentless. > >>>+ (handleMessage): Re-wrote message processing to handle destroy calls > >>>+ correctly, checking for them more often to prevent a frame from popping up > >>>+ if the tab/page is closed before loading finishes. Decode special > >>>+ characters in the message. > >>>+ (updateStatus): New function. Updates the status for the given instance if > >>>+ applicable. > >>>+ (destroyApplet): New function. Destroys a given applet and frees related > >>>+ resources. > >>>+ (waitForAppletInit): New function. Blocks until applet is initialized. > >>>+ (parse): Remove part that decoded the params. Decoding is now done earlier > >>>+ in handleMessage(). > >>>+ * plugin/icedteanp/java/sun/applet/PluginMessageConsumer.java: > >>>+ (getPriorityStrIfPriority): Mark destroy messages as priority. > >>>+ (bringPriorityMessagesToFront): Scans the queue for priority messages and > >>>+ brings them to the front. > >>>+ (run): If the queue is not empty and there are no workers left, run > >>>+ bringPriorityMessagesToFront() and retry. > >>>+ > >>> 2010-10-26 Andrew Su > >>> > >>> * Makefile.am: Split rm -rf into rm -f and rmdir for launcher > >>>diff -r dfd749c077c3 -r d4a914a000e3 plugin/icedteanp/java/sun/applet/PluginAppletViewer.java > >>>--- a/plugin/icedteanp/java/sun/applet/PluginAppletViewer.java Tue Oct 26 12:01:22 2010 -0400 > >>>+++ b/plugin/icedteanp/java/sun/applet/PluginAppletViewer.java Tue Oct 26 17:49:57 2010 -0700 > >>>@@ -136,12 +136,10 @@ import com.sun.jndi.toolkit.url.UrlUtil; > >>> } > >>> } > >>> }); > >>>+ > >>>+ // create the frame. > >>>+ PluginAppletViewer.reFrame(null, identifier, System.out, 0, panel); > >>> > >>>- > >>>- > >>>- // create the frame. > >>>- PluginAppletViewer.reFrame(null, identifier, System.out, handle, panel); > >>>- > >>> panel.init(); > >>> > >>> // Start the applet > >>>@@ -179,15 +177,7 @@ import com.sun.jndi.toolkit.url.UrlUtil; > >>> > >>> // Wait for the panel to initialize > >>> // (happens in a separate thread) > >>>- while (panel.getApplet() == null&& > >>>- ((NetxPanel) panel).isAlive()) { > >>>- try { > >>>- Thread.sleep(50); > >>>- PluginDebug.debug("Waiting for applet to initialize..."); > >>>- } catch (InterruptedException ie) { > >>>- // just wait > >>>- } > >>>- } > >>>+ PluginAppletViewer.waitForAppletInit((NetxPanel) panel); > >>> > >>> a = panel.getApplet(); > >>> > >>>@@ -317,7 +307,17 @@ import com.sun.jndi.toolkit.url.UrlUtil; > >>> */ > >>> private static String defaultSaveFile = "Applet.ser"; > >>> > >>>- private static enum PAV_INIT_STATUS {PRE_INIT, IN_INIT, INIT_COMPLETE, INACTIVE}; > >>>+ > >>>+ /** > >>>+ * Enumerates the current status of an applet > >>>+ * > >>>+ * PRE_INIT -> Parsing and initialization phase > >>>+ * INIT_COMPLETE -> Initialization complete, reframe pending > >>>+ * REFRAME_COMPLETE -> Reframe complete, applet is initialized and usable by the user > >>>+ * INACTIVE -> Browser has directed that the applet be destroyed (this state is non-overridable except by DESTROYED) > >>>+ * DESTROYED -> Applet has been destroyed > >>>+ */ > >>>+ private static enum PAV_INIT_STATUS {PRE_INIT, INIT_COMPLETE, REFRAME_COMPLETE, INACTIVE, DESTROYED}; > >>> > >>> /** > >>> * The panel in which the applet is being displayed. > >>>@@ -350,7 +350,6 @@ import com.sun.jndi.toolkit.url.UrlUtil; > >>> > >>> private static HashMap status = > >>> new HashMap(); > >>>- > >>> > >>> private long handle = 0; > >>> private WindowListener windowEventListener = null; > >>>@@ -380,16 +379,20 @@ import com.sun.jndi.toolkit.url.UrlUtil; > >>> return; > >>> > >>> PluginAppletViewer newFrame = new PluginAppletViewer(handle, identifier, statusMsgStream, panel); > >>>- > >>>+ > >>> if (oldFrame != null) { > >>> applets.remove(oldFrame.identifier); > >>> oldFrame.removeWindowListener(oldFrame.windowEventListener); > >>> panel.removeAppletListener(oldFrame.appletEventListener); > >>>+ > >>>+ // Add first, remove later > >>>+ newFrame.add("Center", panel); > >>> oldFrame.remove(panel); > >>> oldFrame.dispose(); > >>>+ } else { > >>>+ newFrame.add("Center", panel); > >>> } > >>> > >>>- newFrame.add("Center", panel); > >>> newFrame.pack(); > >>> > >>> newFrame.appletEventListener = new AppletEventListener(newFrame, newFrame); > >>>@@ -397,11 +400,6 @@ import com.sun.jndi.toolkit.url.UrlUtil; > >>> > >>> applets.put(identifier, newFrame); > >>> > >>>- // dispose oldframe if necessary > >>>- if (oldFrame != null) { > >>>- oldFrame.dispose(); > >>>- } > >>>- > >>> PluginDebug.debug(panel + " reframed"); > >>> } > >>> > >>>@@ -449,7 +447,7 @@ import com.sun.jndi.toolkit.url.UrlUtil; > >>> this.frame = frame; > >>> this.appletViewer = appletViewer; > >>> } > >>>- > >>>+ > >>> public void appletStateChanged(AppletEvent evt) > >>> { > >>> AppletPanel src = (AppletPanel)evt.getSource(); > >>>@@ -483,9 +481,9 @@ import com.sun.jndi.toolkit.url.UrlUtil; > >>> AppletPanel.changeFrameAppContext(frame, SunToolkit.targetToAppContext(a)); > >>> else > >>> AppletPanel.changeFrameAppContext(frame, AppContext.getAppContext()); > >>>- > >>>- status.put(appletViewer.identifier, PAV_INIT_STATUS.INIT_COMPLETE); > >>>- > >>>+ > >>>+ updateStatus(appletViewer.identifier, PAV_INIT_STATUS.INIT_COMPLETE); > >>>+ > >>> break; > >>> } > >>> } > >>>@@ -510,7 +508,13 @@ import com.sun.jndi.toolkit.url.UrlUtil; > >>> > >>> try { > >>> if (message.startsWith("handle")) { > >>>- > >>>+ > >>>+ // If there is a key for this status, it means it > >>>+ // was either initialized before, or destroy has been > >>>+ // processed. Stop moving further. > >>>+ if (updateStatus(identifier, PAV_INIT_STATUS.PRE_INIT) != null) > >>>+ return; > >>>+ > >>> // Extract the information from the message > >>> String[] msgParts = new String[4]; > >>> for (int i=0; i< 3; i++) { > >>>@@ -519,32 +523,38 @@ import com.sun.jndi.toolkit.url.UrlUtil; > >>> msgParts[i] = message.substring(spaceLocation + 1, nextSpaceLocation); > >>> message = message.substring(nextSpaceLocation + 1); > >>> } > >>>- > >>>+ > >>> long handle = Long.parseLong(msgParts[0]); > >>> String width = msgParts[1]; > >>> String height = msgParts[2]; > >>>- > >>>+ > >>> int spaceLocation = message.indexOf(' ', "tag".length()+1); > >>> String documentBase = > >>> UrlUtil.decode(message.substring("tag".length() + 1, spaceLocation)); > >>>- String tag = message.substring(spaceLocation+1); > >>>+ String tag = message.substring(spaceLocation+1); > >>>+ > >>>+ // Decode the tag > >>>+ tag = tag.replace(">", ">"); > >>>+ tag = tag.replace("<", "<"); > >>>+ tag = tag.replace("&", "&"); > >>>+ tag = tag.replace(" ", "\n"); > >>>+ tag = tag.replace(" ", "\r"); > >>>+ tag = tag.replace(""", "\""); > >>> > >>> PluginDebug.debug ("Handle = " + handle + "\n" + > >>> "Width = " + width + "\n" + > >>> "Height = " + height + "\n" + > >>> "DocumentBase = " + documentBase + "\n" + > >>> "Tag = " + tag); > >>>- > >>>- status.put(identifier, PAV_INIT_STATUS.PRE_INIT); > >>>+ > >>> PluginAppletViewer.parse > >>> (identifier, handle, width, height, > >>> new StringReader(tag), > >>> new URL(documentBase)); > >>>- > >>> > >>> int maxWait = APPLET_TIMEOUT; // wait for applet to fully load > >>> int wait = 0; > >>>- while (!status.get(identifier).equals(PAV_INIT_STATUS.INIT_COMPLETE)&& > >>>+ while ( !applets.containsKey(identifier)&& // Map is populated only by reFrame > >>> (wait< maxWait)) { > >>> > >>> try { > >>>@@ -555,9 +565,44 @@ import com.sun.jndi.toolkit.url.UrlUtil; > >>> } > >>> } > >>> > >>>- if (!status.get(identifier).equals(PAV_INIT_STATUS.INIT_COMPLETE)) > >>>+ // If wait exceeded maxWait, we timed out. Throw an exception > >>>+ if (wait>= maxWait) > >>> throw new Exception("Applet initialization timeout"); > >>> > >>>+ PluginAppletViewer oldFrame = applets.get(identifier); > >>>+ > >>>+ // We should not try to destroy an applet during > >>>+ // initialization. It may cause an inconsistent state, > >>>+ // which would bad if it's a trusted applet that > >>>+ // read/writes to files > >>>+ waitForAppletInit((NetxPanel) applets.get(identifier).panel); > >>>+ > >>>+ // Should we proceed with reframing? > >>>+ if (status.get(identifier).equals(PAV_INIT_STATUS.INACTIVE)) { > >>>+ destroyApplet(identifier); > >>>+ return; > >>>+ } > >>>+ > >>>+ // Proceed with re-framing > >>>+ reFrame(oldFrame, identifier, System.out, handle, oldFrame.panel); > >>>+ > >>>+ // There is a slight chance that destroy can happen > >>>+ // between the above and below line > >>>+ if (updateStatus(identifier, PAV_INIT_STATUS.REFRAME_COMPLETE).equals(PAV_INIT_STATUS.INACTIVE)) { > >>>+ destroyApplet(identifier); > >>>+ } > >>>+ > >>>+ } else if (message.startsWith("destroy")) { > >>>+ > >>>+ // Set it inactive, and try to do cleanup is applicable > >>>+ PAV_INIT_STATUS previousStatus = updateStatus(identifier, PAV_INIT_STATUS.INACTIVE); > >>>+ PluginDebug.debug("Destroy status set for " + identifier); > >>>+ > >>>+ if (previousStatus != null&& > >>>+ previousStatus.equals(PAV_INIT_STATUS.REFRAME_COMPLETE)) { > >>>+ destroyApplet(identifier); > >>>+ } > >>>+ > >>> } else { > >>> PluginDebug.debug ("Handling message: " + message + " instance " + identifier + " " + Thread.currentThread()); > >>> > >>>@@ -568,7 +613,7 @@ import com.sun.jndi.toolkit.url.UrlUtil; > >>> status.get(identifier).equals(PAV_INIT_STATUS.PRE_INIT) > >>> ) > >>> ); > >>>- > >>>+ > >>> // don't bother processing further for inactive applets > >>> if (status.get(identifier).equals(PAV_INIT_STATUS.INACTIVE)) > >>> return; > >>>@@ -580,31 +625,131 @@ import com.sun.jndi.toolkit.url.UrlUtil; > >>> e.printStackTrace(); > >>> > >>> // If an exception happened during pre-init, we need to update status > >>>- if (status.get(identifier).equals(PAV_INIT_STATUS.PRE_INIT)) > >>>- status.put(identifier, PAV_INIT_STATUS.INACTIVE); > >>>+ updateStatus(identifier, PAV_INIT_STATUS.INACTIVE); > >>> > >>> throw new RuntimeException("Failed to handle message: " + > >>> message + " for instance " + identifier, e); > >>> } > >>> } > >>>- > >>>+ > >>>+ /** > >>>+ * Sets the status unless an overriding status is set (e.g. if > >>>+ * status is DESTROYED, it may not be overridden). > >>>+ * > >>>+ * @param identifier The identifier for which the status is to be set > >>>+ * @param status The status to switch to > >>>+ * @return The previous status > >>>+ */ > >>>+ private static synchronized PAV_INIT_STATUS updateStatus(int identifier, PAV_INIT_STATUS newStatus) { > >>>+ > >>>+ PAV_INIT_STATUS prev = status.get(identifier); > >>>+ > >>>+ // If the status is set > >>>+ if (status.containsKey(identifier)) { > >>>+ > >>>+ // Nothing may override destroyed status > >>>+ if (status.get(identifier).equals(PAV_INIT_STATUS.DESTROYED)) { > >>>+ return prev; > >>>+ } > >>>+ > >>>+ // If status is inactive, only DESTROYED may override it > >>>+ if (status.get(identifier).equals(PAV_INIT_STATUS.INACTIVE)) { > >>>+ if (!newStatus.equals(PAV_INIT_STATUS.DESTROYED)) { > >>>+ return prev; > >>>+ } > >>>+ } > >>>+ } > >>>+ > >>>+ // Else set to given status > >>>+ status.put(identifier, newStatus); > >>>+ > >>>+ return prev; > >>>+ } > >>>+ > >>>+ /** > >>>+ * Destroys the given applet instance. > >>>+ * > >>>+ * This function may be called multiple times without problems. > >>>+ * It does a synchronized check on the status and will only > >>>+ * attempt to destroy the applet if not previously destroyed. > >>>+ * > >>>+ * @param identifier The instance which is to be destroyed > >>>+ */ > >>>+ > >>>+ private static synchronized void destroyApplet(int identifier) { > >>>+ > >>>+ PluginDebug.debug("DestroyApplet called for " + identifier); > >>>+ > >>>+ PAV_INIT_STATUS prev = updateStatus(identifier, PAV_INIT_STATUS.DESTROYED); > >>>+ > >>>+ // If already destroyed, return > >>>+ if (prev.equals(PAV_INIT_STATUS.DESTROYED)) { > >>>+ PluginDebug.debug(identifier + " already destroyed. Returning."); > >>>+ return; > >>>+ } > >>>+ > >>>+ // If already disposed, return > >>>+ if (applets.get(identifier).panel.applet == null) { > >>>+ // Try to still dispose the panel itself -- no harm done with double dispose > >>>+ applets.get(identifier).dispose(); > >>>+ > >>>+ PluginDebug.debug(identifier + " inactive. Returning."); > >>>+ return; > >>>+ } > >>>+ > >>>+ PluginDebug.debug("Attempting to destroy " + identifier); > >>>+ > >>>+ final int fIdentifier = identifier; > >>>+ SwingUtilities.invokeLater(new Runnable() { > >>>+ public void run() { > >>>+ applets.get(fIdentifier).appletClose(); > >>>+ } > >>>+ }); > >>>+ > >>>+ PluginDebug.debug(identifier + " destroyed"); > >>>+ } > >>>+ > >>>+ /** > >>>+ * Function to block until applet initialization is complete > >>>+ * > >>>+ * @param identifier The instance to wait for > >>>+ */ > >>>+ public static void waitForAppletInit(NetxPanel panel) { > >>>+ > >>>+ int waitTime = 0; > >>>+ > >>>+ // Wait till initialization finishes > >>>+ while (panel.getApplet() == null&& > >>>+ panel.isAlive()&& > >>>+ waitTime< APPLET_TIMEOUT) { > >>>+ try { > >>>+ if (waitTime%500 == 0) > >>>+ PluginDebug.debug("Waiting for applet panel " + panel + " to initialize..."); > >>>+ > >>>+ Thread.sleep(waitTime += 50); > >>>+ } catch (InterruptedException ie) { > >>>+ // just wait > >>>+ } > >>>+ } > >>>+ > >>>+ PluginDebug.debug("Applet panel " + panel + " initialized"); > >>>+ } > >>>+ > >>> public void handleMessage(int reference, String message) > >>> { > >>> if (message.startsWith("width")) { > >>> > >>> // Wait for panel to come alive > >>> int maxWait = APPLET_TIMEOUT; // wait for panel to come alive > >>>- int wait = 0; > >>>+ int wait = 0; > >>> while (!status.get(identifier).equals(PAV_INIT_STATUS.INIT_COMPLETE)&& wait< maxWait) { > >>>- > >>>- try { > >>>- Thread.sleep(50); > >>>- wait += 50; > >>>- } catch (InterruptedException ie) { > >>>- // just wait > >>>- } > >>>- } > >>>- > >>>+ try { > >>>+ Thread.sleep(50); > >>>+ wait += 50; > >>>+ } catch (InterruptedException ie) { > >>>+ // just wait > >>>+ } > >>>+ } > >>> > >>> // 0 => width, 1=> width_value, 2 => height, 3=> height_value > >>> String[] dimMsg = message.split(" "); > >>>@@ -636,7 +781,7 @@ import com.sun.jndi.toolkit.url.UrlUtil; > >>> > >>> panel.setSize(width, height); > >>> panel.validate(); > >>>- > >>>+ > >>> panel.applet.resize(width, height); > >>> panel.applet.validate(); > >>> } > >>>@@ -649,9 +794,6 @@ import com.sun.jndi.toolkit.url.UrlUtil; > >>> e.printStackTrace(); > >>> } > >>> > >>>- } else if (message.startsWith("destroy")) { > >>>- dispose(); > >>>- status.put(identifier, PAV_INIT_STATUS.INACTIVE); > >>> } else if (message.startsWith("GetJavaObject")) { > >>> > >>> // FIXME: how do we determine what security context this > >>>@@ -672,15 +814,7 @@ import com.sun.jndi.toolkit.url.UrlUtil; > >>> > >>> // Wait for the panel to initialize > >>> // (happens in a separate thread) > >>>- while (panel.getApplet() == null&& > >>>- ((NetxPanel) panel).isAlive()) { > >>>- try { > >>>- Thread.sleep(50); > >>>- PluginDebug.debug("Waiting for applet to initialize..."); > >>>- } catch (InterruptedException ie) { > >>>- // just wait > >>>- } > >>>- } > >>>+ waitForAppletInit((NetxPanel) panel); > >>> > >>> PluginDebug.debug(panel + " -- " + panel.getApplet() + " -- " + ((NetxPanel) panel).isAlive()); > >>> > >>>@@ -1548,10 +1682,11 @@ import com.sun.jndi.toolkit.url.UrlUtil; > >>> if (countApplets() == 0) { > >>> appletSystemExit(); > >>> } > >>>+ > >>>+ updateStatus(identifier, PAV_INIT_STATUS.DESTROYED); > >>> } > >>> }).start(); > >>> > >>>- status.put(identifier, PAV_INIT_STATUS.INACTIVE); > >>> } > >>> > >>> /** > >>>@@ -1677,18 +1812,6 @@ import com.sun.jndi.toolkit.url.UrlUtil; > >>> val = buf.toString(); > >>> } > >>> > >>>- att = att.replace(">", ">"); > >>>- att = att.replace("<", "<"); > >>>- att = att.replace("&", "&"); > >>>- att = att.replace(" ", "\n"); > >>>- att = att.replace(" ", "\r"); > >>>- > >>>- val = val.replace(">", ">"); > >>>- val = val.replace("<", "<"); > >>>- val = val.replace("&", "&"); > >>>- val = val.replace(" ", "\n"); > >>>- val = val.replace(" ", "\r"); > >>>- > >>> PluginDebug.debug("PUT " + att + " = '" + val + "'"); > >>> atts.put(att.toLowerCase(java.util.Locale.ENGLISH), val); > >>> > >>>@@ -1708,7 +1831,6 @@ import com.sun.jndi.toolkit.url.UrlUtil; > >>> // private static final == inline > >>> private static final boolean isInt(Object o) { > >>> boolean isInt = false; > >>>- > >>> try { > >>> Integer.parseInt((String) o); > >>> isInt = true; > >>>@@ -1763,7 +1885,6 @@ import com.sun.jndi.toolkit.url.UrlUtil; > >>> } catch (IOException ioe) { > >>> return ioe; > >>> } > >>>- > >>> return null; > >>> } > >>> }; > >>>@@ -1785,6 +1906,7 @@ import com.sun.jndi.toolkit.url.UrlUtil; > >>> boolean isObjectTag = false; > >>> boolean isEmbedTag = false; > >> > From andrew at icedtea.classpath.org Wed Nov 3 11:26:55 2010 From: andrew at icedtea.classpath.org (andrew at icedtea.classpath.org) Date: Wed, 03 Nov 2010 18:26:55 +0000 Subject: /hg/icedtea6: Additional S390 size_t fixes. Message-ID: changeset a4bd79afa729 in /hg/icedtea6 details: http://icedtea.classpath.org/hg/icedtea6?cmd=changeset;node=a4bd79afa729 author: Andrew John Hughes date: Wed Nov 03 18:26:48 2010 +0000 Additional S390 size_t fixes. 2010-11-03 Dan Hor?k * patches/hotspot/hs19/params-cast-size_t.patch: Add additional fixes for S390. diffstat: 2 files changed, 25 insertions(+) ChangeLog | 5 +++++ patches/hotspot/hs19/params-cast-size_t.patch | 20 ++++++++++++++++++++ diffs (39 lines): diff -r 51aa61578bf2 -r a4bd79afa729 ChangeLog --- a/ChangeLog Wed Nov 03 10:54:08 2010 +0000 +++ b/ChangeLog Wed Nov 03 18:26:48 2010 +0000 @@ -1,3 +1,8 @@ 2010-11-02 Andrew John Hughes + + * patches/hotspot/hs19/params-cast-size_t.patch: + Add additional fixes for S390. + 2010-11-02 Andrew John Hughes * hotspot.map: Update md5sum for new diff -r 51aa61578bf2 -r a4bd79afa729 patches/hotspot/hs19/params-cast-size_t.patch --- a/patches/hotspot/hs19/params-cast-size_t.patch Wed Nov 03 10:54:08 2010 +0000 +++ b/patches/hotspot/hs19/params-cast-size_t.patch Wed Nov 03 18:26:48 2010 +0000 @@ -262,3 +262,23 @@ diff -Nru openjdk.orig/hotspot/src/share if (PrintGCDetails && Verbose) { // Too early to use gclog_or_tty tty->print_cr("Ergo set OldSize: " SIZE_FORMAT, OldSize); +--- openjdk.orig/hotspot/src/share/vm/oops/objArrayKlass.inline.hpp 2010-10-28 05:45:16.000000000 -0400 ++++ openjdk/hotspot/src/share/vm/oops/objArrayKlass.inline.hpp 2010-10-28 05:46:22.000000000 -0400 +@@ -37,7 +37,7 @@ void objArrayKlass::objarray_follow_cont + const size_t beg_index = size_t(index); + assert(beg_index < len || len == 0, "index too large"); + +- const size_t stride = MIN2(len - beg_index, ObjArrayMarkingStride); ++ const size_t stride = MIN2(len - beg_index, (size_t)ObjArrayMarkingStride); + const size_t end_index = beg_index + stride; + T* const base = (T*)a->base(); + T* const beg = base + beg_index; +@@ -71,7 +71,7 @@ void objArrayKlass::objarray_follow_cont + const size_t beg_index = size_t(index); + assert(beg_index < len || len == 0, "index too large"); + +- const size_t stride = MIN2(len - beg_index, ObjArrayMarkingStride); ++ const size_t stride = MIN2(len - beg_index, (size_t)ObjArrayMarkingStride); + const size_t end_index = beg_index + stride; + T* const base = (T*)a->base(); + T* const beg = base + beg_index; From ahughes at redhat.com Wed Nov 3 11:27:19 2010 From: ahughes at redhat.com (Dr Andrew John Hughes) Date: Wed, 3 Nov 2010 18:27:19 +0000 Subject: build failure for java-1.6.0-openjdk-1.6.0.0-44.1.9.1.fc14 on s390 (32-bit) In-Reply-To: <1288779333.2887.30.camel@eagle.danny.cz> References: <1288779333.2887.30.camel@eagle.danny.cz> Message-ID: <20101103182718.GE4256@rivendell.middle-earth.co.uk> On 11:15 Wed 03 Nov , Dan Hor?k wrote: > Hi, > > I'm working on the s390(x) port of Fedora and I got a build failure for > the latest java-1.6.0-openjdk package on the s390 (32-bit) architecture, > see http://s390.koji.fedoraproject.org/koji/taskinfo?taskID=220141 for > details. Proposed fix is attached. > > > With regards, > > Dan > I've committed this to HEAD. Does this look ok for 1.9? > --- icedtea6-1.9.1/openjdk/hotspot/src/share/vm/oops/objArrayKlass.inline.hpp.s390 2010-10-28 05:45:16.000000000 -0400 > +++ icedtea6-1.9.1/openjdk/hotspot/src/share/vm/oops/objArrayKlass.inline.hpp 2010-10-28 05:46:22.000000000 -0400 > @@ -37,7 +37,7 @@ void objArrayKlass::objarray_follow_cont > const size_t beg_index = size_t(index); > assert(beg_index < len || len == 0, "index too large"); > > - const size_t stride = MIN2(len - beg_index, ObjArrayMarkingStride); > + const size_t stride = MIN2(len - beg_index, (size_t)ObjArrayMarkingStride); > const size_t end_index = beg_index + stride; > T* const base = (T*)a->base(); > T* const beg = base + beg_index; > @@ -71,7 +71,7 @@ void objArrayKlass::objarray_follow_cont > const size_t beg_index = size_t(index); > assert(beg_index < len || len == 0, "index too large"); > > - const size_t stride = MIN2(len - beg_index, ObjArrayMarkingStride); > + const size_t stride = MIN2(len - beg_index, (size_t)ObjArrayMarkingStride); > const size_t end_index = beg_index + stride; > T* const base = (T*)a->base(); > T* const beg = base + beg_index; -- Andrew :) Free Java Software Engineer Red Hat, Inc. (http://www.redhat.com) Support Free Java! Contribute to GNU Classpath and the OpenJDK http://www.gnu.org/software/classpath http://openjdk.java.net PGP Key: 94EFD9D8 (http://subkeys.pgp.net) Fingerprint = F8EF F1EA 401E 2E60 15FA 7927 142C 2591 94EF D9D8 From ahughes at redhat.com Wed Nov 3 15:53:04 2010 From: ahughes at redhat.com (Dr Andrew John Hughes) Date: Wed, 3 Nov 2010 22:53:04 +0000 Subject: patch to Assian - inidc, chinese, japanese and korean - languages, based on ptisnovsly reproducer In-Reply-To: <4CD17439.6010201@redhat.com> References: <4CD17439.6010201@redhat.com> Message-ID: <20101103225304.GF4256@rivendell.middle-earth.co.uk> On 15:39 Wed 03 Nov , Jiri Vanek wrote: > --- fontconfig.Fedora.properties.src 2010-11-03 13:06:58.124299143 +0100 > +++ fontconfig.Fedora.properties.src 2010-11-03 15:07:14.033297761 +0100 > @@ -35,6 +35,8 @@ > dialog.plain.korean=Baekmuk Gulim > dialog.plain.chinese-big5=AR PL ShanHeiSun Uni > dialog.plain.chinese-gb18030=AR PL ShanHeiSun Uni > +dialog.plain.assamese=Lohit Assamese > +dialog.plain.devanagari=Lohit Devanagari > dialog.plain.bengali=Lohit Bengali > dialog.plain.gujarati=Lohit Gujarati > dialog.plain.hindi=Lohit Hindi > @@ -50,6 +52,8 @@ > dialog.bold.korean=Baekmuk Gulim > dialog.bold.chinese-big5=AR PL ShanHeiSun Uni > dialog.bold.chinese-gb18030=AR PL ShanHeiSun Uni > +dialog.bold.assamese=Lohit Assamese > +dialog.bold.devanagari=Lohit Devanagari > dialog.bold.bengali=Lohit Bengali > dialog.bold.gujarati=Lohit Gujarati > dialog.bold.hindi=Lohit Hindi > @@ -65,6 +69,8 @@ > dialog.italic.korean=Baekmuk Gulim > dialog.italic.chinese-big5=AR PL ShanHeiSun Uni > dialog.italic.chinese-gb18030=AR PL ShanHeiSun Uni > +dialog.italic.assamese=Lohit Assamese > +dialog.italic.devanagari=Lohit Devanagari > dialog.italic.bengali=Lohit Bengali > dialog.italic.gujarati=Lohit Gujarati > dialog.italic.hindi=Lohit Hindi > @@ -80,6 +86,8 @@ > dialog.bolditalic.korean=Baekmuk Gulim > dialog.bolditalic.chinese-big5=AR PL ShanHeiSun Uni > dialog.bolditalic.chinese-gb18030=AR PL ShanHeiSun Uni > +dialog.bolditalic.assamese=Lohit Assamese > +dialog.bolditalic.devanagari=Lohit Devanagari > dialog.bolditalic.bengali=Lohit Bengali > dialog.bolditalic.gujarati=Lohit Gujarati > dialog.bolditalic.hindi=Lohit Hindi > @@ -95,6 +103,8 @@ > sansserif.plain.korean=Baekmuk Gulim > sansserif.plain.chinese-big5=AR PL ShanHeiSun Uni > sansserif.plain.chinese-gb18030=AR PL ShanHeiSun Uni > +sansserif.plain.assamese=Lohit Assamese > +sansserif.plain.devanagari=Lohit Devanagari > sansserif.plain.bengali=Lohit Bengali > sansserif.plain.gujarati=Lohit Gujarati > sansserif.plain.hindi=Lohit Hindi > @@ -110,6 +120,8 @@ > sansserif.bold.korean=Baekmuk Gulim > sansserif.bold.chinese-big5=AR PL ShanHeiSun Uni > sansserif.bold.chinese-gb18030=AR PL ShanHeiSun Uni > +sansserif.bold.assamese=Lohit Assamese > +sansserif.bold.devanagari=Lohit Devanagari > sansserif.bold.bengali=Lohit Bengali > sansserif.bold.gujarati=Lohit Gujarati > sansserif.bold.hindi=Lohit Hindi > @@ -125,6 +137,8 @@ > sansserif.italic.korean=Baekmuk Gulim > sansserif.italic.chinese-big5=AR PL ShanHeiSun Uni > sansserif.italic.chinese-gb18030=AR PL ShanHeiSun Uni > +sansserif.italic.assamese=Lohit Assamese > +sansserif.italic.devanagari=Lohit Devanagari > sansserif.italic.bengali=Lohit Bengali > sansserif.italic.gujarati=Lohit Gujarati > sansserif.italic.hindi=Lohit Hindi > @@ -140,6 +154,8 @@ > sansserif.bolditalic.korean=Baekmuk Gulim > sansserif.bolditalic.chinese-big5=AR PL ShanHeiSun Uni > sansserif.bolditalic.chinese-gb18030=AR PL ShanHeiSun Uni > +sansserif.bolditalic.assamese=Lohit Assamese > +sansserif.bolditalic.devanagari=Lohit Devanagari > sansserif.bolditalic.bengali=Lohit Bengali > sansserif.bolditalic.gujarati=Lohit Gujarati > sansserif.bolditalic.hindi=Lohit Hindi > @@ -155,6 +171,8 @@ > serif.plain.korean=Baekmuk Batang > serif.plain.chinese-big5=AR PL ZenKai Uni > serif.plain.chinese-gb18030=AR PL ZenKai Uni > +serif.plain.assamese=Lohit Assamese > +serif.plain.devanagari=Lohit Devanagari > serif.plain.bengali=Lohit Bengali > serif.plain.gujarati=Lohit Gujarati > serif.plain.hindi=Lohit Hindi > @@ -170,6 +188,8 @@ > serif.bold.korean=Baekmuk Batang > serif.bold.chinese-big5=AR PL ZenKai Uni > serif.bold.chinese-gb18030=AR PL ZenKai Uni > +serif.bold.assamese=Lohit Assamese > +serif.bold.devanagari=Lohit Devanagari > serif.bold.bengali=Lohit Bengali > serif.bold.gujarati=Lohit Gujarati > serif.bold.hindi=Lohit Hindi > @@ -185,6 +205,8 @@ > serif.italic.korean=Baekmuk Batang > serif.italic.chinese-big5=AR PL ZenKai Uni > serif.italic.chinese-gb18030=AR PL ZenKai Uni > +serif.italic.assamese=Lohit Assamese > +serif.italic.devanagari=Lohit Devanagari > serif.italic.bengali=Lohit Bengali > serif.italic.gujarati=Lohit Gujarati > serif.italic.hindi=Lohit Hindi > @@ -200,6 +222,8 @@ > serif.bolditalic.korean=Baekmuk Batang > serif.bolditalic.chinese-big5=AR PL ZenKai Uni > serif.bolditalic.chinese-gb18030=AR PL ZenKai Uni > +serif.bolditalic.assamese=Lohit Assamese > +serif.bolditalic.devanagari=Lohit Devanagari > serif.bolditalic.bengali=Lohit Bengali > serif.bolditalic.gujarati=Lohit Gujarati > serif.bolditalic.hindi=Lohit Hindi > @@ -215,6 +239,8 @@ > monospaced.plain.korean=Baekmuk Gulim > monospaced.plain.chinese-big5=AR PL ShanHeiSun Uni > monospaced.plain.chinese-gb18030=AR PL ShanHeiSun Uni > +monospaced.plain.assamese=Lohit Assamese > +monospaced.plain.devanagari=Lohit Devanagari > monospaced.plain.bengali=Lohit Bengali > monospaced.plain.gujarati=Lohit Gujarati > monospaced.plain.hindi=Lohit Hindi > @@ -230,6 +256,8 @@ > monospaced.bold.korean=Baekmuk Gulim > monospaced.bold.chinese-big5=AR PL ShanHeiSun Uni > monospaced.bold.chinese-gb18030=AR PL ShanHeiSun Uni > +monospaced.bold.assamese=Lohit Assamese > +monospaced.bold.devanagari=Lohit Devanagari > monospaced.bold.bengali=Lohit Bengali > monospaced.bold.gujarati=Lohit Gujarati > monospaced.bold.hindi=Lohit Hindi > @@ -245,6 +273,8 @@ > monospaced.italic.korean=Baekmuk Gulim > monospaced.italic.chinese-big5=AR PL ShanHeiSun Uni > monospaced.italic.chinese-gb18030=AR PL ShanHeiSun Uni > +monospaced.italic.assamese=Lohit Assamese > +monospaced.italic.devanagari=Lohit Devanagari > monospaced.italic.bengali=Lohit Bengali > monospaced.italic.gujarati=Lohit Gujarati > monospaced.italic.hindi=Lohit Hindi > @@ -260,6 +290,8 @@ > monospaced.bolditalic.korean=Baekmuk Gulim > monospaced.bolditalic.chinese-big5=AR PL ShanHeiSun Uni > monospaced.bolditalic.chinese-gb18030=AR PL ShanHeiSun Uni > +monospaced.bolditalic.assamese=Lohit Assamese > +monospaced.bolditalic.devanagari=Lohit Devanagari > monospaced.bolditalic.bengali=Lohit Bengali > monospaced.bolditalic.gujarati=Lohit Gujarati > monospaced.bolditalic.hindi=Lohit Hindi > @@ -275,6 +307,8 @@ > dialoginput.plain.korean=Baekmuk Gulim > dialoginput.plain.chinese-big5=AR PL ShanHeiSun Uni > dialoginput.plain.chinese-gb18030=AR PL ShanHeiSun Uni > +dialoginput.plain.assamese=Lohit Assamese > +dialoginput.plain.devanagari=Lohit Devanagari > dialoginput.plain.bengali=Lohit Bengali > dialoginput.plain.gujarati=Lohit Gujarati > dialoginput.plain.hindi=Lohit Hindi > @@ -290,6 +324,8 @@ > dialoginput.bold.korean=Baekmuk Gulim > dialoginput.bold.chinese-big5=AR PL ShanHeiSun Uni > dialoginput.bold.chinese-gb18030=AR PL ShanHeiSun Uni > +dialoginput.bold.assamese=Lohit Assamese > +dialoginput.bold.devanagari=Lohit Devanagari > dialoginput.bold.bengali=Lohit Bengali > dialoginput.bold.gujarati=Lohit Gujarati > dialoginput.bold.hindi=Lohit Hindi > @@ -305,6 +341,8 @@ > dialoginput.italic.korean=Baekmuk Gulim > dialoginput.italic.chinese-big5=AR PL ShanHeiSun Uni > dialoginput.italic.chinese-gb18030=AR PL ShanHeiSun Uni > +dialoginput.italic.assamese=Lohit Assamese > +dialoginput.italic.devanagari=Lohit Devanagari > dialoginput.italic.bengali=Lohit Bengali > dialoginput.italic.gujarati=Lohit Gujarati > dialoginput.italic.hindi=Lohit Hindi > @@ -320,6 +358,8 @@ > dialoginput.bolditalic.korean=Baekmuk Gulim > dialoginput.bolditalic.chinese-big5=AR PL ShanHeiSun Uni > dialoginput.bolditalic.chinese-gb18030=AR PL ShanHeiSun Uni > +dialoginput.bolditalic.assamese=Lohit Assamese > +dialoginput.bolditalic.devanagari=Lohit Devanagari > dialoginput.bolditalic.bengali=Lohit Bengali > dialoginput.bolditalic.gujarati=Lohit Gujarati > dialoginput.bolditalic.hindi=Lohit Hindi > @@ -356,21 +396,24 @@ > > filename.DejaVu_Serif_Oblique=/usr/share/fonts/dejavu/DejaVuSerif-Oblique.ttf > > filename.DejaVu_Serif_Bold_Oblique=/usr/share/fonts/dejavu/DejaVuSerif-BoldOblique.ttf > > -filename.Sazanami_Gothic=/usr/share/fonts/sazanami-fonts-gothic/sazanami-gothic.ttf > -filename.Sazanami_Mincho=/usr/share/fonts/sazanami-fonts-mincho/sazanami-mincho.ttf > -filename.AR_PL_ShanHeiSun_Uni=/usr/share/fonts/cjkunifonts-uming/uming.ttc > -filename.AR_PL_ZenKai_Uni=/usr/share/fonts/cjkunifonts-ukai/ukai.ttc > -filename.Baekmuk_Gulim=/usr/share/fonts/baekmuk-ttf-gulim/gulim.ttf > -filename.Baekmuk_Batang=/usr/share/fonts/baekmuk-ttf-batang/batang.ttf > +filename.Sazanami_Gothic=/usr/share/fonts/sazanami/gothic/sazanami-gothic.ttf > +filename.Sazanami_Mincho=/usr/share/fonts/sazanami/mincho/sazanami-mincho.ttf > +filename.AR_PL_ShanHeiSun_Uni=/usr/share/fonts/cjkuni-uming/uming.ttc > +filename.AR_PL_ZenKai_Uni=/usr/share/fonts/cjkuni-ukai/ukai.ttc > +filename.Baekmuk_Gulim=/usr/share/fonts/baekmuk-ttf/gulim.ttf > +filename.Baekmuk_Batang=/usr/share/fonts/baekmuk-ttf/batang.ttf > + > +filename.Lohit_Assamese=/usr/share/fonts/lohit-assamese/Lohit-Assamese.ttf > +filename.Lohit_Devanagari=/usr/share/fonts/lohit-devanagari/Lohit-Devanagari.ttf > +filename.Lohit_Bengali=/usr/share/fonts/lohit-bengali/Lohit-Bengali.ttf > +filename.Lohit_Gujarati=/usr/share/fonts/lohit-gujarati/Lohit-Gujarati.ttf > +filename.Lohit_Hindi=/usr/share/fonts/lohit-devanagari/Lohit-Devanagari.ttf > +filename.Lohit_Kannda=/usr/share/fonts/lohit-kannada/Lohit-Kannada.ttf > +filename.Lohit_Malayalam=/usr/share/fonts/lohit-malayalam/Lohit-Malayalam.ttf > +filename.Lohit_Oriya=/usr/share/fonts/lohit-oriya/Lohit-Oriya.ttf > +filename.Lohit_Punjabi=/usr/share/fonts/lohit-punjabi/Lohit-Punjabi.ttf > +filename.Lohit_Tamil=/usr/share/fonts/lohit-tamil/Lohit-Tamil.ttf > +filename.Lohit_Telugu=/usr/share/fonts/lohit-telugu/Lohit-Telugu.ttf > > -filename.Lohit_Bengali=/usr/share/fonts/lohit-bengali/lohit_bn.ttf > -filename.Lohit_Gujarati=/usr/share/fonts/lohit-gujarati/lohit_gu.ttf > -filename.Lohit_Hindi=/usr/share/fonts/lohit-hindi/lohit_hi.ttf > -filename.Lohit_Kannda=/usr/share/fonts/lohit-kannada/lohit_kn.ttf > -filename.Lohit_Malayalam=/usr/share/fonts/lohit-malayalam/lohit_ml.ttf > -filename.Lohit_Oriya=/usr/share/fonts/lohit-oriya/lohit_or.ttf > -filename.Lohit_Punjabi=/usr/share/fonts/lohit-punjabi/lohit_pa.ttf > -filename.Lohit_Tamil=/usr/share/fonts/lohit-tamil/lohit_ta.ttf > -filename.Lohit_Telugu=/usr/share/fonts/lohit-telugu/lohit_te.ttf > filename.LKLUG=/usr/share/fonts/lklug/lklug.ttf > > > --- /dev/null 2010-11-03 15:11:54.580570056 +0100 > +++ fontconfig.Fedora.12.properties.src 2010-11-03 13:06:58.124299143 +0100 > @@ -0,0 +1,376 @@ > +# > +# Copyright 2007 Sun Microsystems, Inc. All Rights Reserved. > +# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. > +# > +# This code is free software; you can redistribute it and/or modify it > +# under the terms of the GNU General Public License version 2 only, as > +# published by the Free Software Foundation. Sun designates this > +# particular file as subject to the "Classpath" exception as provided > +# by Sun in the LICENSE file that accompanied this code. > +# > +# This code is distributed in the hope that it will be useful, but WITHOUT > +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or > +# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License > +# version 2 for more details (a copy is included in the LICENSE file that > +# accompanied this code). > +# > +# You should have received a copy of the GNU General Public License version > +# 2 along with this work; if not, write to the Free Software Foundation, > +# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. > +# > +# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, > +# CA 95054 USA or visit www.sun.com if you need additional information or > +# have any questions. > +# > + > +# Version > + > +# Uses Fedora 9 fonts and file paths. > +version=1 > + > +# Component Font Mappings > + > +dialog.plain.latin-1=DejaVu Sans > +dialog.plain.japanese-x0208=Sazanami Gothic > +dialog.plain.korean=Baekmuk Gulim > +dialog.plain.chinese-big5=AR PL ShanHeiSun Uni > +dialog.plain.chinese-gb18030=AR PL ShanHeiSun Uni > +dialog.plain.bengali=Lohit Bengali > +dialog.plain.gujarati=Lohit Gujarati > +dialog.plain.hindi=Lohit Hindi > +dialog.plain.malayalam=Lohit Malayalam > +dialog.plain.oriya=Lohit Oriya > +dialog.plain.punjabi=Lohit Punjabi > +dialog.plain.tamil=Lohit Tamil > +dialog.plain.telugu=Lohit Telugu > +dialog.plain.sinhala=LKLUG > + > +dialog.bold.latin-1=DejaVu Sans Bold > +dialog.bold.japanese-x0208=Sazanami Gothic > +dialog.bold.korean=Baekmuk Gulim > +dialog.bold.chinese-big5=AR PL ShanHeiSun Uni > +dialog.bold.chinese-gb18030=AR PL ShanHeiSun Uni > +dialog.bold.bengali=Lohit Bengali > +dialog.bold.gujarati=Lohit Gujarati > +dialog.bold.hindi=Lohit Hindi > +dialog.bold.malayalam=Lohit Malayalam > +dialog.bold.oriya=Lohit Oriya > +dialog.bold.punjabi=Lohit Punjabi > +dialog.bold.tamil=Lohit Tamil > +dialog.bold.telugu=Lohit Telugu > +dialog.bold.sinhala=LKLUG > + > +dialog.italic.latin-1=DejaVu Sans Oblique > +dialog.italic.japanese-x0208=Sazanami Gothic > +dialog.italic.korean=Baekmuk Gulim > +dialog.italic.chinese-big5=AR PL ShanHeiSun Uni > +dialog.italic.chinese-gb18030=AR PL ShanHeiSun Uni > +dialog.italic.bengali=Lohit Bengali > +dialog.italic.gujarati=Lohit Gujarati > +dialog.italic.hindi=Lohit Hindi > +dialog.italic.malayalam=Lohit Malayalam > +dialog.italic.oriya=Lohit Oriya > +dialog.italic.punjabi=Lohit Punjabi > +dialog.italic.tamil=Lohit Tamil > +dialog.italic.telugu=Lohit Telugu > +dialog.italic.sinhala=LKLUG > + > +dialog.bolditalic.latin-1=DejaVu Sans Bold Oblique > +dialog.bolditalic.japanese-x0208=Sazanami Gothic > +dialog.bolditalic.korean=Baekmuk Gulim > +dialog.bolditalic.chinese-big5=AR PL ShanHeiSun Uni > +dialog.bolditalic.chinese-gb18030=AR PL ShanHeiSun Uni > +dialog.bolditalic.bengali=Lohit Bengali > +dialog.bolditalic.gujarati=Lohit Gujarati > +dialog.bolditalic.hindi=Lohit Hindi > +dialog.bolditalic.malayalam=Lohit Malayalam > +dialog.bolditalic.oriya=Lohit Oriya > +dialog.bolditalic.punjabi=Lohit Punjabi > +dialog.bolditalic.tamil=Lohit Tamil > +dialog.bolditalic.telugu=Lohit Telugu > +dialog.bolditalic.sinhala=LKLUG > + > +sansserif.plain.latin-1=DejaVu Sans > +sansserif.plain.japanese-x0208=Sazanami Gothic > +sansserif.plain.korean=Baekmuk Gulim > +sansserif.plain.chinese-big5=AR PL ShanHeiSun Uni > +sansserif.plain.chinese-gb18030=AR PL ShanHeiSun Uni > +sansserif.plain.bengali=Lohit Bengali > +sansserif.plain.gujarati=Lohit Gujarati > +sansserif.plain.hindi=Lohit Hindi > +sansserif.plain.malayalam=Lohit Malayalam > +sansserif.plain.oriya=Lohit Oriya > +sansserif.plain.punjabi=Lohit Punjabi > +sansserif.plain.tamil=Lohit Tamil > +sansserif.plain.telugu=Lohit Telugu > +sansserif.plain.sinhala=LKLUG > + > +sansserif.bold.latin-1=DejaVu Sans Bold > +sansserif.bold.japanese-x0208=Sazanami Gothic > +sansserif.bold.korean=Baekmuk Gulim > +sansserif.bold.chinese-big5=AR PL ShanHeiSun Uni > +sansserif.bold.chinese-gb18030=AR PL ShanHeiSun Uni > +sansserif.bold.bengali=Lohit Bengali > +sansserif.bold.gujarati=Lohit Gujarati > +sansserif.bold.hindi=Lohit Hindi > +sansserif.bold.malayalam=Lohit Malayalam > +sansserif.bold.oriya=Lohit Oriya > +sansserif.bold.punjabi=Lohit Punjabi > +sansserif.bold.tamil=Lohit Tamil > +sansserif.bold.telugu=Lohit Telugu > +sansserif.bold.sinhala=LKLUG > + > +sansserif.italic.latin-1=DejaVu Sans Oblique > +sansserif.italic.japanese-x0208=Sazanami Gothic > +sansserif.italic.korean=Baekmuk Gulim > +sansserif.italic.chinese-big5=AR PL ShanHeiSun Uni > +sansserif.italic.chinese-gb18030=AR PL ShanHeiSun Uni > +sansserif.italic.bengali=Lohit Bengali > +sansserif.italic.gujarati=Lohit Gujarati > +sansserif.italic.hindi=Lohit Hindi > +sansserif.italic.malayalam=Lohit Malayalam > +sansserif.italic.oriya=Lohit Oriya > +sansserif.italic.punjabi=Lohit Punjabi > +sansserif.italic.tamil=Lohit Tamil > +sansserif.italic.telugu=Lohit Telugu > +sansserif.italic.sinhala=LKLUG > + > +sansserif.bolditalic.latin-1=DejaVu Sans Bold Oblique > +sansserif.bolditalic.japanese-x0208=Sazanami Gothic > +sansserif.bolditalic.korean=Baekmuk Gulim > +sansserif.bolditalic.chinese-big5=AR PL ShanHeiSun Uni > +sansserif.bolditalic.chinese-gb18030=AR PL ShanHeiSun Uni > +sansserif.bolditalic.bengali=Lohit Bengali > +sansserif.bolditalic.gujarati=Lohit Gujarati > +sansserif.bolditalic.hindi=Lohit Hindi > +sansserif.bolditalic.malayalam=Lohit Malayalam > +sansserif.bolditalic.oriya=Lohit Oriya > +sansserif.bolditalic.punjabi=Lohit Punjabi > +sansserif.bolditalic.tamil=Lohit Tamil > +sansserif.bolditalic.telugu=Lohit Telugu > +sansserif.bolditalic.sinhala=LKLUG > + > +serif.plain.latin-1=DejaVu Serif > +serif.plain.japanese-x0208=Sazanami Mincho > +serif.plain.korean=Baekmuk Batang > +serif.plain.chinese-big5=AR PL ZenKai Uni > +serif.plain.chinese-gb18030=AR PL ZenKai Uni > +serif.plain.bengali=Lohit Bengali > +serif.plain.gujarati=Lohit Gujarati > +serif.plain.hindi=Lohit Hindi > +serif.plain.malayalam=Lohit Malayalam > +serif.plain.oriya=Lohit Oriya > +serif.plain.punjabi=Lohit Punjabi > +serif.plain.tamil=Lohit Tamil > +serif.plain.telugu=Lohit Telugu > +serif.plain.sinhala=LKLUG > + > +serif.bold.latin-1=DejaVu Serif Bold > +serif.bold.japanese-x0208=Sazanami Mincho > +serif.bold.korean=Baekmuk Batang > +serif.bold.chinese-big5=AR PL ZenKai Uni > +serif.bold.chinese-gb18030=AR PL ZenKai Uni > +serif.bold.bengali=Lohit Bengali > +serif.bold.gujarati=Lohit Gujarati > +serif.bold.hindi=Lohit Hindi > +serif.bold.malayalam=Lohit Malayalam > +serif.bold.oriya=Lohit Oriya > +serif.bold.punjabi=Lohit Punjabi > +serif.bold.tamil=Lohit Tamil > +serif.bold.telugu=Lohit Telugu > +serif.bold.sinhala=LKLUG > + > +serif.italic.latin-1=DejaVu Serif Oblique > +serif.italic.japanese-x0208=Sazanami Mincho > +serif.italic.korean=Baekmuk Batang > +serif.italic.chinese-big5=AR PL ZenKai Uni > +serif.italic.chinese-gb18030=AR PL ZenKai Uni > +serif.italic.bengali=Lohit Bengali > +serif.italic.gujarati=Lohit Gujarati > +serif.italic.hindi=Lohit Hindi > +serif.italic.malayalam=Lohit Malayalam > +serif.italic.oriya=Lohit Oriya > +serif.italic.punjabi=Lohit Punjabi > +serif.italic.tamil=Lohit Tamil > +serif.italic.telugu=Lohit Telugu > +serif.italic.sinhala=LKLUG > + > +serif.bolditalic.latin-1=DejaVu Serif Bold Oblique > +serif.bolditalic.japanese-x0208=Sazanami Mincho > +serif.bolditalic.korean=Baekmuk Batang > +serif.bolditalic.chinese-big5=AR PL ZenKai Uni > +serif.bolditalic.chinese-gb18030=AR PL ZenKai Uni > +serif.bolditalic.bengali=Lohit Bengali > +serif.bolditalic.gujarati=Lohit Gujarati > +serif.bolditalic.hindi=Lohit Hindi > +serif.bolditalic.malayalam=Lohit Malayalam > +serif.bolditalic.oriya=Lohit Oriya > +serif.bolditalic.punjabi=Lohit Punjabi > +serif.bolditalic.tamil=Lohit Tamil > +serif.bolditalic.telugu=Lohit Telugu > +serif.bolditalic.sinhala=LKLUG > + > +monospaced.plain.latin-1=DejaVu Sans Mono > +monospaced.plain.japanese-x0208=Sazanami Gothic > +monospaced.plain.korean=Baekmuk Gulim > +monospaced.plain.chinese-big5=AR PL ShanHeiSun Uni > +monospaced.plain.chinese-gb18030=AR PL ShanHeiSun Uni > +monospaced.plain.bengali=Lohit Bengali > +monospaced.plain.gujarati=Lohit Gujarati > +monospaced.plain.hindi=Lohit Hindi > +monospaced.plain.malayalam=Lohit Malayalam > +monospaced.plain.oriya=Lohit Oriya > +monospaced.plain.punjabi=Lohit Punjabi > +monospaced.plain.tamil=Lohit Tamil > +monospaced.plain.telugu=Lohit Telugu > +monospaced.plain.sinhala=LKLUG > + > +monospaced.bold.latin-1=DejaVu Sans Mono Bold > +monospaced.bold.japanese-x0208=Sazanami Gothic > +monospaced.bold.korean=Baekmuk Gulim > +monospaced.bold.chinese-big5=AR PL ShanHeiSun Uni > +monospaced.bold.chinese-gb18030=AR PL ShanHeiSun Uni > +monospaced.bold.bengali=Lohit Bengali > +monospaced.bold.gujarati=Lohit Gujarati > +monospaced.bold.hindi=Lohit Hindi > +monospaced.bold.malayalam=Lohit Malayalam > +monospaced.bold.oriya=Lohit Oriya > +monospaced.bold.punjabi=Lohit Punjabi > +monospaced.bold.tamil=Lohit Tamil > +monospaced.bold.telugu=Lohit Telugu > +monospaced.bold.sinhala=LKLUG > + > +monospaced.italic.latin-1=DejaVu Sans Mono Oblique > +monospaced.italic.japanese-x0208=Sazanami Gothic > +monospaced.italic.korean=Baekmuk Gulim > +monospaced.italic.chinese-big5=AR PL ShanHeiSun Uni > +monospaced.italic.chinese-gb18030=AR PL ShanHeiSun Uni > +monospaced.italic.bengali=Lohit Bengali > +monospaced.italic.gujarati=Lohit Gujarati > +monospaced.italic.hindi=Lohit Hindi > +monospaced.italic.malayalam=Lohit Malayalam > +monospaced.italic.oriya=Lohit Oriya > +monospaced.italic.punjabi=Lohit Punjabi > +monospaced.italic.tamil=Lohit Tamil > +monospaced.italic.telugu=Lohit Telugu > +monospaced.italic.sinhala=LKLUG > + > +monospaced.bolditalic.latin-1=DejaVu Sans Mono Bold Oblique > +monospaced.bolditalic.japanese-x0208=Sazanami Gothic > +monospaced.bolditalic.korean=Baekmuk Gulim > +monospaced.bolditalic.chinese-big5=AR PL ShanHeiSun Uni > +monospaced.bolditalic.chinese-gb18030=AR PL ShanHeiSun Uni > +monospaced.bolditalic.bengali=Lohit Bengali > +monospaced.bolditalic.gujarati=Lohit Gujarati > +monospaced.bolditalic.hindi=Lohit Hindi > +monospaced.bolditalic.malayalam=Lohit Malayalam > +monospaced.bolditalic.oriya=Lohit Oriya > +monospaced.bolditalic.punjabi=Lohit Punjabi > +monospaced.bolditalic.tamil=Lohit Tamil > +monospaced.bolditalic.telugu=Lohit Telugu > +monospaced.bolditalic.sinhala=LKLUG > + > +dialoginput.plain.latin-1=DejaVu Sans Mono > +dialoginput.plain.japanese-x0208=Sazanami Gothic > +dialoginput.plain.korean=Baekmuk Gulim > +dialoginput.plain.chinese-big5=AR PL ShanHeiSun Uni > +dialoginput.plain.chinese-gb18030=AR PL ShanHeiSun Uni > +dialoginput.plain.bengali=Lohit Bengali > +dialoginput.plain.gujarati=Lohit Gujarati > +dialoginput.plain.hindi=Lohit Hindi > +dialoginput.plain.malayalam=Lohit Malayalam > +dialoginput.plain.oriya=Lohit Oriya > +dialoginput.plain.punjabi=Lohit Punjabi > +dialoginput.plain.tamil=Lohit Tamil > +dialoginput.plain.telugu=Lohit Telugu > +dialoginput.plain.sinhala=LKLUG > + > +dialoginput.bold.latin-1=DejaVu Sans Mono Bold > +dialoginput.bold.japanese-x0208=Sazanami Gothic > +dialoginput.bold.korean=Baekmuk Gulim > +dialoginput.bold.chinese-big5=AR PL ShanHeiSun Uni > +dialoginput.bold.chinese-gb18030=AR PL ShanHeiSun Uni > +dialoginput.bold.bengali=Lohit Bengali > +dialoginput.bold.gujarati=Lohit Gujarati > +dialoginput.bold.hindi=Lohit Hindi > +dialoginput.bold.malayalam=Lohit Malayalam > +dialoginput.bold.oriya=Lohit Oriya > +dialoginput.bold.punjabi=Lohit Punjabi > +dialoginput.bold.tamil=Lohit Tamil > +dialoginput.bold.telugu=Lohit Telugu > +dialoginput.bold.sinhala=LKLUG > + > +dialoginput.italic.latin-1=DejaVu Sans Mono Oblique > +dialoginput.italic.japanese-x0208=Sazanami Gothic > +dialoginput.italic.korean=Baekmuk Gulim > +dialoginput.italic.chinese-big5=AR PL ShanHeiSun Uni > +dialoginput.italic.chinese-gb18030=AR PL ShanHeiSun Uni > +dialoginput.italic.bengali=Lohit Bengali > +dialoginput.italic.gujarati=Lohit Gujarati > +dialoginput.italic.hindi=Lohit Hindi > +dialoginput.italic.malayalam=Lohit Malayalam > +dialoginput.italic.oriya=Lohit Oriya > +dialoginput.italic.punjabi=Lohit Punjabi > +dialoginput.italic.tamil=Lohit Tamil > +dialoginput.italic.telugu=Lohit Telugu > +dialoginput.italic.sinhala=LKLUG > + > +dialoginput.bolditalic.latin-1=DejaVu Sans Mono Bold Oblique > +dialoginput.bolditalic.japanese-x0208=Sazanami Gothic > +dialoginput.bolditalic.korean=Baekmuk Gulim > +dialoginput.bolditalic.chinese-big5=AR PL ShanHeiSun Uni > +dialoginput.bolditalic.chinese-gb18030=AR PL ShanHeiSun Uni > +dialoginput.bolditalic.bengali=Lohit Bengali > +dialoginput.bolditalic.gujarati=Lohit Gujarati > +dialoginput.bolditalic.hindi=Lohit Hindi > +dialoginput.bolditalic.malayalam=Lohit Malayalam > +dialoginput.bolditalic.oriya=Lohit Oriya > +dialoginput.bolditalic.punjabi=Lohit Punjabi > +dialoginput.bolditalic.tamil=Lohit Tamil > +dialoginput.bolditalic.telugu=Lohit Telugu > +dialoginput.bolditalic.sinhala=LKLUG > + > +# Search Sequences > + > +sequence.allfonts=latin-1 > +sequence.allfonts.Big5=chinese-big5,latin-1 > +sequence.allfonts.x-euc-jp-linux=japanese-x0208,latin-1 > +sequence.allfonts.EUC-KR=korean,latin-1 > +sequence.allfonts.GB18030=chinese-gb18030,latin-1 > +sequence.fallback=chinese-big5,chinese-gb18030,japanese-x0208,korean,bengali,gujarati,hindi,oriya,punjabi,malayalam,tamil,telugu,sinhala > + > +# Font File Names > + > +filename.DejaVu_Sans=/usr/share/fonts/dejavu/DejaVuSans.ttf > +filename.DejaVu_Sans_Bold=/usr/share/fonts/dejavu/DejaVuSans-Bold.ttf > +filename.DejaVu_Sans_Oblique=/usr/share/fonts/dejavu/DejaVuSans-Oblique.ttf > +filename.DejaVu_Sans_Bold_Oblique=/usr/share/fonts/dejavu/DejaVuSans-BoldOblique.ttf > + > +filename.DejaVu_Sans_Mono=/usr/share/fonts/dejavu/DejaVuSansMono.ttf > +filename.DejaVu_Sans_Mono_Bold=/usr/share/fonts/dejavu/DejaVuSansMono-Bold.ttf > +filename.DejaVu_Sans_Mono_Oblique=/usr/share/fonts/dejavu/DejaVuSansMono-Oblique.ttf > +filename.DejaVu_Sans_Mono_Bold_Oblique=/usr/share/fonts/dejavu/DejaVuSansMono-BoldOblique.ttf > + > +filename.DejaVu_Serif=/usr/share/fonts/dejavu/DejaVuSerif.ttf > +filename.DejaVu_Serif_Bold=/usr/share/fonts/dejavu/DejaVuSerif-Bold.ttf > +filename.DejaVu_Serif_Oblique=/usr/share/fonts/dejavu/DejaVuSerif-Oblique.ttf > +filename.DejaVu_Serif_Bold_Oblique=/usr/share/fonts/dejavu/DejaVuSerif-BoldOblique.ttf > + > +filename.Sazanami_Gothic=/usr/share/fonts/sazanami-fonts-gothic/sazanami-gothic.ttf > +filename.Sazanami_Mincho=/usr/share/fonts/sazanami-fonts-mincho/sazanami-mincho.ttf > +filename.AR_PL_ShanHeiSun_Uni=/usr/share/fonts/cjkunifonts-uming/uming.ttc > +filename.AR_PL_ZenKai_Uni=/usr/share/fonts/cjkunifonts-ukai/ukai.ttc > +filename.Baekmuk_Gulim=/usr/share/fonts/baekmuk-ttf-gulim/gulim.ttf > +filename.Baekmuk_Batang=/usr/share/fonts/baekmuk-ttf-batang/batang.ttf > + > +filename.Lohit_Bengali=/usr/share/fonts/lohit-bengali/lohit_bn.ttf > +filename.Lohit_Gujarati=/usr/share/fonts/lohit-gujarati/lohit_gu.ttf > +filename.Lohit_Hindi=/usr/share/fonts/lohit-hindi/lohit_hi.ttf > +filename.Lohit_Kannda=/usr/share/fonts/lohit-kannada/lohit_kn.ttf > +filename.Lohit_Malayalam=/usr/share/fonts/lohit-malayalam/lohit_ml.ttf > +filename.Lohit_Oriya=/usr/share/fonts/lohit-oriya/lohit_or.ttf > +filename.Lohit_Punjabi=/usr/share/fonts/lohit-punjabi/lohit_pa.ttf > +filename.Lohit_Tamil=/usr/share/fonts/lohit-tamil/lohit_ta.ttf > +filename.Lohit_Telugu=/usr/share/fonts/lohit-telugu/lohit_te.ttf > +filename.LKLUG=/usr/share/fonts/lklug/lklug.ttf > + > > --- /dev/null 2010-11-03 15:11:54.580570056 +0100 > +++ fontconfig.Fedora.11.properties.src 2010-11-03 13:06:58.124299143 +0100 > @@ -0,0 +1,376 @@ > +# > +# Copyright 2007 Sun Microsystems, Inc. All Rights Reserved. > +# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. > +# > +# This code is free software; you can redistribute it and/or modify it > +# under the terms of the GNU General Public License version 2 only, as > +# published by the Free Software Foundation. Sun designates this > +# particular file as subject to the "Classpath" exception as provided > +# by Sun in the LICENSE file that accompanied this code. > +# > +# This code is distributed in the hope that it will be useful, but WITHOUT > +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or > +# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License > +# version 2 for more details (a copy is included in the LICENSE file that > +# accompanied this code). > +# > +# You should have received a copy of the GNU General Public License version > +# 2 along with this work; if not, write to the Free Software Foundation, > +# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. > +# > +# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, > +# CA 95054 USA or visit www.sun.com if you need additional information or > +# have any questions. > +# > + > +# Version > + > +# Uses Fedora 9 fonts and file paths. > +version=1 > + > +# Component Font Mappings > + > +dialog.plain.latin-1=DejaVu Sans > +dialog.plain.japanese-x0208=Sazanami Gothic > +dialog.plain.korean=Baekmuk Gulim > +dialog.plain.chinese-big5=AR PL ShanHeiSun Uni > +dialog.plain.chinese-gb18030=AR PL ShanHeiSun Uni > +dialog.plain.bengali=Lohit Bengali > +dialog.plain.gujarati=Lohit Gujarati > +dialog.plain.hindi=Lohit Hindi > +dialog.plain.malayalam=Lohit Malayalam > +dialog.plain.oriya=Lohit Oriya > +dialog.plain.punjabi=Lohit Punjabi > +dialog.plain.tamil=Lohit Tamil > +dialog.plain.telugu=Lohit Telugu > +dialog.plain.sinhala=LKLUG > + > +dialog.bold.latin-1=DejaVu Sans Bold > +dialog.bold.japanese-x0208=Sazanami Gothic > +dialog.bold.korean=Baekmuk Gulim > +dialog.bold.chinese-big5=AR PL ShanHeiSun Uni > +dialog.bold.chinese-gb18030=AR PL ShanHeiSun Uni > +dialog.bold.bengali=Lohit Bengali > +dialog.bold.gujarati=Lohit Gujarati > +dialog.bold.hindi=Lohit Hindi > +dialog.bold.malayalam=Lohit Malayalam > +dialog.bold.oriya=Lohit Oriya > +dialog.bold.punjabi=Lohit Punjabi > +dialog.bold.tamil=Lohit Tamil > +dialog.bold.telugu=Lohit Telugu > +dialog.bold.sinhala=LKLUG > + > +dialog.italic.latin-1=DejaVu Sans Oblique > +dialog.italic.japanese-x0208=Sazanami Gothic > +dialog.italic.korean=Baekmuk Gulim > +dialog.italic.chinese-big5=AR PL ShanHeiSun Uni > +dialog.italic.chinese-gb18030=AR PL ShanHeiSun Uni > +dialog.italic.bengali=Lohit Bengali > +dialog.italic.gujarati=Lohit Gujarati > +dialog.italic.hindi=Lohit Hindi > +dialog.italic.malayalam=Lohit Malayalam > +dialog.italic.oriya=Lohit Oriya > +dialog.italic.punjabi=Lohit Punjabi > +dialog.italic.tamil=Lohit Tamil > +dialog.italic.telugu=Lohit Telugu > +dialog.italic.sinhala=LKLUG > + > +dialog.bolditalic.latin-1=DejaVu Sans Bold Oblique > +dialog.bolditalic.japanese-x0208=Sazanami Gothic > +dialog.bolditalic.korean=Baekmuk Gulim > +dialog.bolditalic.chinese-big5=AR PL ShanHeiSun Uni > +dialog.bolditalic.chinese-gb18030=AR PL ShanHeiSun Uni > +dialog.bolditalic.bengali=Lohit Bengali > +dialog.bolditalic.gujarati=Lohit Gujarati > +dialog.bolditalic.hindi=Lohit Hindi > +dialog.bolditalic.malayalam=Lohit Malayalam > +dialog.bolditalic.oriya=Lohit Oriya > +dialog.bolditalic.punjabi=Lohit Punjabi > +dialog.bolditalic.tamil=Lohit Tamil > +dialog.bolditalic.telugu=Lohit Telugu > +dialog.bolditalic.sinhala=LKLUG > + > +sansserif.plain.latin-1=DejaVu Sans > +sansserif.plain.japanese-x0208=Sazanami Gothic > +sansserif.plain.korean=Baekmuk Gulim > +sansserif.plain.chinese-big5=AR PL ShanHeiSun Uni > +sansserif.plain.chinese-gb18030=AR PL ShanHeiSun Uni > +sansserif.plain.bengali=Lohit Bengali > +sansserif.plain.gujarati=Lohit Gujarati > +sansserif.plain.hindi=Lohit Hindi > +sansserif.plain.malayalam=Lohit Malayalam > +sansserif.plain.oriya=Lohit Oriya > +sansserif.plain.punjabi=Lohit Punjabi > +sansserif.plain.tamil=Lohit Tamil > +sansserif.plain.telugu=Lohit Telugu > +sansserif.plain.sinhala=LKLUG > + > +sansserif.bold.latin-1=DejaVu Sans Bold > +sansserif.bold.japanese-x0208=Sazanami Gothic > +sansserif.bold.korean=Baekmuk Gulim > +sansserif.bold.chinese-big5=AR PL ShanHeiSun Uni > +sansserif.bold.chinese-gb18030=AR PL ShanHeiSun Uni > +sansserif.bold.bengali=Lohit Bengali > +sansserif.bold.gujarati=Lohit Gujarati > +sansserif.bold.hindi=Lohit Hindi > +sansserif.bold.malayalam=Lohit Malayalam > +sansserif.bold.oriya=Lohit Oriya > +sansserif.bold.punjabi=Lohit Punjabi > +sansserif.bold.tamil=Lohit Tamil > +sansserif.bold.telugu=Lohit Telugu > +sansserif.bold.sinhala=LKLUG > + > +sansserif.italic.latin-1=DejaVu Sans Oblique > +sansserif.italic.japanese-x0208=Sazanami Gothic > +sansserif.italic.korean=Baekmuk Gulim > +sansserif.italic.chinese-big5=AR PL ShanHeiSun Uni > +sansserif.italic.chinese-gb18030=AR PL ShanHeiSun Uni > +sansserif.italic.bengali=Lohit Bengali > +sansserif.italic.gujarati=Lohit Gujarati > +sansserif.italic.hindi=Lohit Hindi > +sansserif.italic.malayalam=Lohit Malayalam > +sansserif.italic.oriya=Lohit Oriya > +sansserif.italic.punjabi=Lohit Punjabi > +sansserif.italic.tamil=Lohit Tamil > +sansserif.italic.telugu=Lohit Telugu > +sansserif.italic.sinhala=LKLUG > + > +sansserif.bolditalic.latin-1=DejaVu Sans Bold Oblique > +sansserif.bolditalic.japanese-x0208=Sazanami Gothic > +sansserif.bolditalic.korean=Baekmuk Gulim > +sansserif.bolditalic.chinese-big5=AR PL ShanHeiSun Uni > +sansserif.bolditalic.chinese-gb18030=AR PL ShanHeiSun Uni > +sansserif.bolditalic.bengali=Lohit Bengali > +sansserif.bolditalic.gujarati=Lohit Gujarati > +sansserif.bolditalic.hindi=Lohit Hindi > +sansserif.bolditalic.malayalam=Lohit Malayalam > +sansserif.bolditalic.oriya=Lohit Oriya > +sansserif.bolditalic.punjabi=Lohit Punjabi > +sansserif.bolditalic.tamil=Lohit Tamil > +sansserif.bolditalic.telugu=Lohit Telugu > +sansserif.bolditalic.sinhala=LKLUG > + > +serif.plain.latin-1=DejaVu Serif > +serif.plain.japanese-x0208=Sazanami Mincho > +serif.plain.korean=Baekmuk Batang > +serif.plain.chinese-big5=AR PL ZenKai Uni > +serif.plain.chinese-gb18030=AR PL ZenKai Uni > +serif.plain.bengali=Lohit Bengali > +serif.plain.gujarati=Lohit Gujarati > +serif.plain.hindi=Lohit Hindi > +serif.plain.malayalam=Lohit Malayalam > +serif.plain.oriya=Lohit Oriya > +serif.plain.punjabi=Lohit Punjabi > +serif.plain.tamil=Lohit Tamil > +serif.plain.telugu=Lohit Telugu > +serif.plain.sinhala=LKLUG > + > +serif.bold.latin-1=DejaVu Serif Bold > +serif.bold.japanese-x0208=Sazanami Mincho > +serif.bold.korean=Baekmuk Batang > +serif.bold.chinese-big5=AR PL ZenKai Uni > +serif.bold.chinese-gb18030=AR PL ZenKai Uni > +serif.bold.bengali=Lohit Bengali > +serif.bold.gujarati=Lohit Gujarati > +serif.bold.hindi=Lohit Hindi > +serif.bold.malayalam=Lohit Malayalam > +serif.bold.oriya=Lohit Oriya > +serif.bold.punjabi=Lohit Punjabi > +serif.bold.tamil=Lohit Tamil > +serif.bold.telugu=Lohit Telugu > +serif.bold.sinhala=LKLUG > + > +serif.italic.latin-1=DejaVu Serif Oblique > +serif.italic.japanese-x0208=Sazanami Mincho > +serif.italic.korean=Baekmuk Batang > +serif.italic.chinese-big5=AR PL ZenKai Uni > +serif.italic.chinese-gb18030=AR PL ZenKai Uni > +serif.italic.bengali=Lohit Bengali > +serif.italic.gujarati=Lohit Gujarati > +serif.italic.hindi=Lohit Hindi > +serif.italic.malayalam=Lohit Malayalam > +serif.italic.oriya=Lohit Oriya > +serif.italic.punjabi=Lohit Punjabi > +serif.italic.tamil=Lohit Tamil > +serif.italic.telugu=Lohit Telugu > +serif.italic.sinhala=LKLUG > + > +serif.bolditalic.latin-1=DejaVu Serif Bold Oblique > +serif.bolditalic.japanese-x0208=Sazanami Mincho > +serif.bolditalic.korean=Baekmuk Batang > +serif.bolditalic.chinese-big5=AR PL ZenKai Uni > +serif.bolditalic.chinese-gb18030=AR PL ZenKai Uni > +serif.bolditalic.bengali=Lohit Bengali > +serif.bolditalic.gujarati=Lohit Gujarati > +serif.bolditalic.hindi=Lohit Hindi > +serif.bolditalic.malayalam=Lohit Malayalam > +serif.bolditalic.oriya=Lohit Oriya > +serif.bolditalic.punjabi=Lohit Punjabi > +serif.bolditalic.tamil=Lohit Tamil > +serif.bolditalic.telugu=Lohit Telugu > +serif.bolditalic.sinhala=LKLUG > + > +monospaced.plain.latin-1=DejaVu Sans Mono > +monospaced.plain.japanese-x0208=Sazanami Gothic > +monospaced.plain.korean=Baekmuk Gulim > +monospaced.plain.chinese-big5=AR PL ShanHeiSun Uni > +monospaced.plain.chinese-gb18030=AR PL ShanHeiSun Uni > +monospaced.plain.bengali=Lohit Bengali > +monospaced.plain.gujarati=Lohit Gujarati > +monospaced.plain.hindi=Lohit Hindi > +monospaced.plain.malayalam=Lohit Malayalam > +monospaced.plain.oriya=Lohit Oriya > +monospaced.plain.punjabi=Lohit Punjabi > +monospaced.plain.tamil=Lohit Tamil > +monospaced.plain.telugu=Lohit Telugu > +monospaced.plain.sinhala=LKLUG > + > +monospaced.bold.latin-1=DejaVu Sans Mono Bold > +monospaced.bold.japanese-x0208=Sazanami Gothic > +monospaced.bold.korean=Baekmuk Gulim > +monospaced.bold.chinese-big5=AR PL ShanHeiSun Uni > +monospaced.bold.chinese-gb18030=AR PL ShanHeiSun Uni > +monospaced.bold.bengali=Lohit Bengali > +monospaced.bold.gujarati=Lohit Gujarati > +monospaced.bold.hindi=Lohit Hindi > +monospaced.bold.malayalam=Lohit Malayalam > +monospaced.bold.oriya=Lohit Oriya > +monospaced.bold.punjabi=Lohit Punjabi > +monospaced.bold.tamil=Lohit Tamil > +monospaced.bold.telugu=Lohit Telugu > +monospaced.bold.sinhala=LKLUG > + > +monospaced.italic.latin-1=DejaVu Sans Mono Oblique > +monospaced.italic.japanese-x0208=Sazanami Gothic > +monospaced.italic.korean=Baekmuk Gulim > +monospaced.italic.chinese-big5=AR PL ShanHeiSun Uni > +monospaced.italic.chinese-gb18030=AR PL ShanHeiSun Uni > +monospaced.italic.bengali=Lohit Bengali > +monospaced.italic.gujarati=Lohit Gujarati > +monospaced.italic.hindi=Lohit Hindi > +monospaced.italic.malayalam=Lohit Malayalam > +monospaced.italic.oriya=Lohit Oriya > +monospaced.italic.punjabi=Lohit Punjabi > +monospaced.italic.tamil=Lohit Tamil > +monospaced.italic.telugu=Lohit Telugu > +monospaced.italic.sinhala=LKLUG > + > +monospaced.bolditalic.latin-1=DejaVu Sans Mono Bold Oblique > +monospaced.bolditalic.japanese-x0208=Sazanami Gothic > +monospaced.bolditalic.korean=Baekmuk Gulim > +monospaced.bolditalic.chinese-big5=AR PL ShanHeiSun Uni > +monospaced.bolditalic.chinese-gb18030=AR PL ShanHeiSun Uni > +monospaced.bolditalic.bengali=Lohit Bengali > +monospaced.bolditalic.gujarati=Lohit Gujarati > +monospaced.bolditalic.hindi=Lohit Hindi > +monospaced.bolditalic.malayalam=Lohit Malayalam > +monospaced.bolditalic.oriya=Lohit Oriya > +monospaced.bolditalic.punjabi=Lohit Punjabi > +monospaced.bolditalic.tamil=Lohit Tamil > +monospaced.bolditalic.telugu=Lohit Telugu > +monospaced.bolditalic.sinhala=LKLUG > + > +dialoginput.plain.latin-1=DejaVu Sans Mono > +dialoginput.plain.japanese-x0208=Sazanami Gothic > +dialoginput.plain.korean=Baekmuk Gulim > +dialoginput.plain.chinese-big5=AR PL ShanHeiSun Uni > +dialoginput.plain.chinese-gb18030=AR PL ShanHeiSun Uni > +dialoginput.plain.bengali=Lohit Bengali > +dialoginput.plain.gujarati=Lohit Gujarati > +dialoginput.plain.hindi=Lohit Hindi > +dialoginput.plain.malayalam=Lohit Malayalam > +dialoginput.plain.oriya=Lohit Oriya > +dialoginput.plain.punjabi=Lohit Punjabi > +dialoginput.plain.tamil=Lohit Tamil > +dialoginput.plain.telugu=Lohit Telugu > +dialoginput.plain.sinhala=LKLUG > + > +dialoginput.bold.latin-1=DejaVu Sans Mono Bold > +dialoginput.bold.japanese-x0208=Sazanami Gothic > +dialoginput.bold.korean=Baekmuk Gulim > +dialoginput.bold.chinese-big5=AR PL ShanHeiSun Uni > +dialoginput.bold.chinese-gb18030=AR PL ShanHeiSun Uni > +dialoginput.bold.bengali=Lohit Bengali > +dialoginput.bold.gujarati=Lohit Gujarati > +dialoginput.bold.hindi=Lohit Hindi > +dialoginput.bold.malayalam=Lohit Malayalam > +dialoginput.bold.oriya=Lohit Oriya > +dialoginput.bold.punjabi=Lohit Punjabi > +dialoginput.bold.tamil=Lohit Tamil > +dialoginput.bold.telugu=Lohit Telugu > +dialoginput.bold.sinhala=LKLUG > + > +dialoginput.italic.latin-1=DejaVu Sans Mono Oblique > +dialoginput.italic.japanese-x0208=Sazanami Gothic > +dialoginput.italic.korean=Baekmuk Gulim > +dialoginput.italic.chinese-big5=AR PL ShanHeiSun Uni > +dialoginput.italic.chinese-gb18030=AR PL ShanHeiSun Uni > +dialoginput.italic.bengali=Lohit Bengali > +dialoginput.italic.gujarati=Lohit Gujarati > +dialoginput.italic.hindi=Lohit Hindi > +dialoginput.italic.malayalam=Lohit Malayalam > +dialoginput.italic.oriya=Lohit Oriya > +dialoginput.italic.punjabi=Lohit Punjabi > +dialoginput.italic.tamil=Lohit Tamil > +dialoginput.italic.telugu=Lohit Telugu > +dialoginput.italic.sinhala=LKLUG > + > +dialoginput.bolditalic.latin-1=DejaVu Sans Mono Bold Oblique > +dialoginput.bolditalic.japanese-x0208=Sazanami Gothic > +dialoginput.bolditalic.korean=Baekmuk Gulim > +dialoginput.bolditalic.chinese-big5=AR PL ShanHeiSun Uni > +dialoginput.bolditalic.chinese-gb18030=AR PL ShanHeiSun Uni > +dialoginput.bolditalic.bengali=Lohit Bengali > +dialoginput.bolditalic.gujarati=Lohit Gujarati > +dialoginput.bolditalic.hindi=Lohit Hindi > +dialoginput.bolditalic.malayalam=Lohit Malayalam > +dialoginput.bolditalic.oriya=Lohit Oriya > +dialoginput.bolditalic.punjabi=Lohit Punjabi > +dialoginput.bolditalic.tamil=Lohit Tamil > +dialoginput.bolditalic.telugu=Lohit Telugu > +dialoginput.bolditalic.sinhala=LKLUG > + > +# Search Sequences > + > +sequence.allfonts=latin-1 > +sequence.allfonts.Big5=chinese-big5,latin-1 > +sequence.allfonts.x-euc-jp-linux=japanese-x0208,latin-1 > +sequence.allfonts.EUC-KR=korean,latin-1 > +sequence.allfonts.GB18030=chinese-gb18030,latin-1 > +sequence.fallback=chinese-big5,chinese-gb18030,japanese-x0208,korean,bengali,gujarati,hindi,oriya,punjabi,malayalam,tamil,telugu,sinhala > + > +# Font File Names > + > +filename.DejaVu_Sans=/usr/share/fonts/dejavu/DejaVuSans.ttf > +filename.DejaVu_Sans_Bold=/usr/share/fonts/dejavu/DejaVuSans-Bold.ttf > +filename.DejaVu_Sans_Oblique=/usr/share/fonts/dejavu/DejaVuSans-Oblique.ttf > +filename.DejaVu_Sans_Bold_Oblique=/usr/share/fonts/dejavu/DejaVuSans-BoldOblique.ttf > + > +filename.DejaVu_Sans_Mono=/usr/share/fonts/dejavu/DejaVuSansMono.ttf > +filename.DejaVu_Sans_Mono_Bold=/usr/share/fonts/dejavu/DejaVuSansMono-Bold.ttf > +filename.DejaVu_Sans_Mono_Oblique=/usr/share/fonts/dejavu/DejaVuSansMono-Oblique.ttf > +filename.DejaVu_Sans_Mono_Bold_Oblique=/usr/share/fonts/dejavu/DejaVuSansMono-BoldOblique.ttf > + > +filename.DejaVu_Serif=/usr/share/fonts/dejavu/DejaVuSerif.ttf > +filename.DejaVu_Serif_Bold=/usr/share/fonts/dejavu/DejaVuSerif-Bold.ttf > +filename.DejaVu_Serif_Oblique=/usr/share/fonts/dejavu/DejaVuSerif-Oblique.ttf > +filename.DejaVu_Serif_Bold_Oblique=/usr/share/fonts/dejavu/DejaVuSerif-BoldOblique.ttf > + > +filename.Sazanami_Gothic=/usr/share/fonts/sazanami-fonts-gothic/sazanami-gothic.ttf > +filename.Sazanami_Mincho=/usr/share/fonts/sazanami-fonts-mincho/sazanami-mincho.ttf > +filename.AR_PL_ShanHeiSun_Uni=/usr/share/fonts/cjkunifonts-uming/uming.ttc > +filename.AR_PL_ZenKai_Uni=/usr/share/fonts/cjkunifonts-ukai/ukai.ttc > +filename.Baekmuk_Gulim=/usr/share/fonts/baekmuk-ttf-gulim/gulim.ttf > +filename.Baekmuk_Batang=/usr/share/fonts/baekmuk-ttf-batang/batang.ttf > + > +filename.Lohit_Bengali=/usr/share/fonts/lohit-bengali/lohit_bn.ttf > +filename.Lohit_Gujarati=/usr/share/fonts/lohit-gujarati/lohit_gu.ttf > +filename.Lohit_Hindi=/usr/share/fonts/lohit-hindi/lohit_hi.ttf > +filename.Lohit_Kannda=/usr/share/fonts/lohit-kannada/lohit_kn.ttf > +filename.Lohit_Malayalam=/usr/share/fonts/lohit-malayalam/lohit_ml.ttf > +filename.Lohit_Oriya=/usr/share/fonts/lohit-oriya/lohit_or.ttf > +filename.Lohit_Punjabi=/usr/share/fonts/lohit-punjabi/lohit_pa.ttf > +filename.Lohit_Tamil=/usr/share/fonts/lohit-tamil/lohit_ta.ttf > +filename.Lohit_Telugu=/usr/share/fonts/lohit-telugu/lohit_te.ttf > +filename.LKLUG=/usr/share/fonts/lklug/lklug.ttf > + A patch for IcedTea6 should add the patch to the patches subdirectory and to the list in Makefile.am. Even if I do this for you with this patch, it doesn't apply: Checking patches/fonts-f14.patch The text leading up to this was: -------------------------- |--- openjdk.orig/jdk/src/solaris/classes/sun/awt/fontconfigs/fontconfig.Fedora.properties.src 2010-11-03 13:06:58.124299143 +0100 |+++ openjdk/jdk/src/solaris/classes/sun/awt/fontconfigs/fontconfig.Fedora.properties.src 2010-11-03 15:07:14.033297761 +0100 -------------------------- No file to patch. Skipping patch. /usr/bin/patch: **** malformed patch at line 187: filename.DejaVu_Serif_Bold_Oblique=/usr/share/fonts/dejavu/DejaVuSerif-BoldOblique.ttf Please supply a working patch against IcedTea6 HEAD. If the new fontconfig files are just copies of the existing ones, I think it may actually be better to copy them in Makefile.am rather than patching in new copies so it's clear that this is what's being done. We should support F9 and F10 as well as these were supported to begin with. -- Andrew :) Free Java Software Engineer Red Hat, Inc. (http://www.redhat.com) Support Free Java! Contribute to GNU Classpath and the OpenJDK http://www.gnu.org/software/classpath http://openjdk.java.net PGP Key: 94EFD9D8 (http://subkeys.pgp.net) Fingerprint = F8EF F1EA 401E 2E60 15FA 7927 142C 2591 94EF D9D8 From andrew at icedtea.classpath.org Wed Nov 3 16:06:30 2010 From: andrew at icedtea.classpath.org (andrew at icedtea.classpath.org) Date: Wed, 03 Nov 2010 23:06:30 +0000 Subject: /hg/icedtea-web: Check for required proprietary Sun classes duri... Message-ID: changeset 2405cef22921 in /hg/icedtea-web details: http://icedtea.classpath.org/hg/icedtea-web?cmd=changeset;node=2405cef22921 author: Andrew John Hughes date: Wed Nov 03 23:06:23 2010 +0000 Check for required proprietary Sun classes during configure. 2010-10-28 Andrew John Hughes * Makefile.am: (NETX_BOOTSTRAP_CLASSES): Removed. (PLUGIN_BOOTSTRAP_CLASSES): Likewise. (NETX_SUN_CLASSES): Likewise. (PLUGIN_SUN_CLASSES): Likewise. * acinclude.m4: (IT_CHECK_FOR_CLASS): Require detection of javac and java. Put test class in sun.applet to get access to some internal classes. Change test to use forName for the same reason. I expect to be able to revert this when usage of sun.applet is fixed. (IT_FIND_JAVA): Ported from IcedTea6. Change to prioritise 'java' over 'gij'. * configure.ac: Add IT_CHECK_FOR_CLASS checks for classes which are required but not found in JDKs other than Oracle-based ones. Also check for java.* classes missing from current versions of gcj but which may appear there in future. diffstat: 4 files changed, 92 insertions(+), 45 deletions(-) ChangeLog | 23 +++++++++++++++++++++++ Makefile.am | 40 ---------------------------------------- acinclude.m4 | 46 +++++++++++++++++++++++++++++++++++++++++----- configure.ac | 28 ++++++++++++++++++++++++++++ diffs (192 lines): diff -r 30efa2ff349b -r 2405cef22921 ChangeLog --- a/ChangeLog Wed Nov 03 11:33:41 2010 -0400 +++ b/ChangeLog Wed Nov 03 23:06:23 2010 +0000 @@ -1,3 +1,26 @@ 2010-11-03 Omair Majid + + * Makefile.am: + (NETX_BOOTSTRAP_CLASSES): Removed. + (PLUGIN_BOOTSTRAP_CLASSES): Likewise. + (NETX_SUN_CLASSES): Likewise. + (PLUGIN_SUN_CLASSES): Likewise. + * acinclude.m4: + (IT_CHECK_FOR_CLASS): Require detection + of javac and java. Put test class in + sun.applet to get access to some internal + classes. Change test to use forName for + the same reason. I expect to be able to + revert this when usage of sun.applet is fixed. + (IT_FIND_JAVA): Ported from IcedTea6. Change + to prioritise 'java' over 'gij'. + * configure.ac: + Add IT_CHECK_FOR_CLASS checks for classes which + are required but not found in JDKs other than + Oracle-based ones. Also check for java.* classes + missing from current versions of gcj but which + may appear there in future. + 2010-11-03 Omair Majid * netx/net/sourceforge/jnlp/Launcher.java diff -r 30efa2ff349b -r 2405cef22921 Makefile.am --- a/Makefile.am Wed Nov 03 11:33:41 2010 -0400 +++ b/Makefile.am Wed Nov 03 23:06:23 2010 +0000 @@ -8,46 +8,6 @@ NETX_EXTRA_DIR=$(abs_top_srcdir)/extra/n # Build directories BOOT_DIR = $(abs_top_builddir)/bootstrap/jdk1.6.0 - -# PR43578 - java.security.CodeSource.getCodeSigners() missing -# PR43582 - Missing javax.swing.JTable.setFillsViewportHeight -# PR43585 - java.security.KeyStore.TrustedCertificateEntry class missing -NETX_BOOTSTRAP_CLASSES = \ - $(SHARE)/java/security/CodeSource.java \ - $(SHARE)/javax/swing/JTable.java \ - $(SHARE)/java/security/KeyStore.java - -# PR46074 - Missing java.net cookie code required by IcedTea plugin -PLUGIN_BOOTSTRAP_CLASSES = \ - $(SHARE)/java/net/CookieManager.java \ - $(SHARE)/java/net/HttpCookie.java \ - $(SHARE)/java/net/CookieHandler.java - -# IT563 - NetX uses sun.security code -# IT564 - NetX depends on sun.misc.BASE64Encoder -# IT570 - NetX depends on sun.applet.AppletViewPanel -# IT571 - NetX depends on com.sun.net.ssl.internal.ssl.X509ExtendedTrustManager.java -NETX_SUN_CLASSES = \ - $(SHARE)/sun/security/provider/X509Factory.java \ - $(SHARE)/sun/security/util/SecurityConstants.java \ - $(SHARE)/sun/security/util/HostnameChecker.java \ - $(SHARE)/sun/security/util/DerValue.java \ - $(SHARE)/sun/security/x509/X500Name.java \ - $(SHARE)/sun/misc/BASE64Encoder.java \ - $(SHARE)/sun/applet/AppletViewerPanel.java \ - $(SHARE)/sun/security/validator/ValidatorException.java \ - $(SHARE)/com/sun/net/ssl/internal/ssl/X509ExtendedTrustManager.java - -# IT573 - Plugin depends on sun.awt,X11.XEmbeddedFrame.java -# IT574 - Plugin depends on sun.misc.Ref -# IT575 - Plugin depends on com.sun/jndi.toolkit.url.UrlUtil -# IT576 - Plugin depends on sun.applet.AppletImageRef -PLUGIN_SUN_CLASSES = \ - $(SOLARIS)/sun/awt/X11/XEmbeddedFrame.java \ - $(SHARE)/sun/misc/Ref.java \ - $(SHARE)/com/sun/jndi/toolkit/url/UrlUtil.java \ - $(SHARE)/sun/applet/AppletImageRef.java - RUNTIME = $(BOOT_DIR)/jre/lib/rt.jar:$(BOOT_DIR)/jre/lib/jsse.jar # Flags diff -r 30efa2ff349b -r 2405cef22921 acinclude.m4 --- a/acinclude.m4 Wed Nov 03 11:33:41 2010 -0400 +++ b/acinclude.m4 Wed Nov 03 23:06:23 2010 +0000 @@ -302,19 +302,27 @@ dnl is usually the name of the class wit dnl is usually the name of the class with '.' dnl replaced by '_' and all letters capitalised. dnl e.g. IT_CHECK_FOR_CLASS([JAVA_UTIL_SCANNER],[java.util.Scanner]) +dnl Test class has to be in sun.applet for some internal classes AC_DEFUN([IT_CHECK_FOR_CLASS],[ -AC_CACHE_CHECK([if $2 is missing], it_cv_$1, [ -CLASS=Test.java +AC_REQUIRE([IT_FIND_JAVAC]) +AC_REQUIRE([IT_FIND_JAVA]) +AC_CACHE_CHECK([if $2 is available], it_cv_$1, [ +CLASS=sun/applet/Test.java BYTECODE=$(echo $CLASS|sed 's#\.java##') -mkdir tmp.$$ +mkdir -p tmp.$$/$(dirname $CLASS) cd tmp.$$ cat << \EOF > $CLASS [/* [#]line __oline__ "configure" */ +package sun.applet; + +import $2; + public class Test { public static void main(String[] args) + throws Exception { - $2.class.toString(); + System.out.println(Class.forName("$2")); } } ] @@ -331,7 +339,8 @@ fi ]) rm -f $CLASS *.class cd .. -rmdir tmp.$$ +# should be rmdir but has to be rm -rf due to sun.applet usage +rm -rf tmp.$$ if test x"${it_cv_$1}" = "xno"; then AC_MSG_ERROR([$2 not found.]) fi @@ -507,3 +516,30 @@ AC_DEFUN([IT_SET_ARCH_SETTINGS], AC_SUBST(ARCH_PREFIX) AC_SUBST(ARCHFLAG) ]) + +AC_DEFUN_ONCE([IT_FIND_JAVA], +[ + AC_MSG_CHECKING([for a Java virtual machine]) + AC_ARG_WITH([java], + [AS_HELP_STRING(--with-java,specify location of the 1.5 java vm)], + [ + JAVA="${withval}" + ], + [ + JAVA=${SYSTEM_JDK_DIR}/bin/java + ]) + if ! test -f "${JAVA}"; then + AC_PATH_PROG(JAVA, "${JAVA}") + fi + if test -z "${JAVA}"; then + AC_PATH_PROG(JAVA, "java") + fi + if test -z "${JAVA}"; then + AC_PATH_PROG(JAVA, "gij") + fi + if test -z "${JAVA}"; then + AC_MSG_ERROR("A 1.5-compatible Java VM is required.") + fi + AC_MSG_RESULT(${JAVA}) + AC_SUBST(JAVA) +]) diff -r 30efa2ff349b -r 2405cef22921 configure.ac --- a/configure.ac Wed Nov 03 11:33:41 2010 -0400 +++ b/configure.ac Wed Nov 03 23:06:23 2010 +0000 @@ -49,4 +49,32 @@ AC_SUBST(X11_CFLAGS) AC_SUBST(X11_CFLAGS) AC_SUBST(X11_LIBS) +dnl PR46074 (gcc) - Missing java.net cookie code required by IcedTea plugin +dnl IT563 - NetX uses sun.security code +dnl IT564 - NetX depends on sun.misc.BASE64Encoder +dnl IT570 - NetX depends on sun.applet.AppletViewPanel +dnl IT571 - NetX depends on com.sun.net.ssl.internal.ssl.X509ExtendedTrustManager.java +dnl IT573 - Plugin depends on sun.awt,X11.XEmbeddedFrame.java +dnl IT574 - Plugin depends on sun.misc.Ref +dnl IT575 - Plugin depends on com.sun/jndi.toolkit.url.UrlUtil +dnl IT576 - Plugin depends on sun.applet.AppletImageRef + +IT_CHECK_FOR_CLASS(JAVA_UTIL_JAR_PACK200, [java.util.jar.Pack200]) +IT_CHECK_FOR_CLASS(JAVA_NET_COOKIEMANAGER, [java.net.CookieManager]) +IT_CHECK_FOR_CLASS(JAVA_NET_HTTPCOOKIE, [java.net.HttpCookie]) +IT_CHECK_FOR_CLASS(JAVA_NET_COOKIEHANDLER, [java.net.CookieHandler]) +IT_CHECK_FOR_CLASS(SUN_SECURITY_PROVIDER_X509FACTORY, [sun.security.provider.X509Factory]) +IT_CHECK_FOR_CLASS(SUN_SECURITY_UTIL_SECURITYCONSTANTS, [sun.security.util.SecurityConstants]) +IT_CHECK_FOR_CLASS(SUN_SECURITY_UTIL_HOSTNAMECHECKER, [sun.security.util.HostnameChecker]) +IT_CHECK_FOR_CLASS(SUN_SECURITY_X509_X500NAME, [sun.security.x509.X500Name]) +IT_CHECK_FOR_CLASS(SUN_MISC_BASE64ENCODER, [sun.misc.BASE64Encoder]) +IT_CHECK_FOR_CLASS(SUN_APPLET_APPLETVIEWERPANEL, [sun.applet.AppletViewerPanel]) +IT_CHECK_FOR_CLASS(SUN_SECURITY_VALIDATOR_VALIDATOREXCEPTION, [sun.security.validator.ValidatorException]) +IT_CHECK_FOR_CLASS(COM_SUN_NET_SSL_INTERNAL_SSL_X509EXTENDEDTRUSTMANAGER, + [com.sun.net.ssl.internal.ssl.X509ExtendedTrustManager]) +IT_CHECK_FOR_CLASS(SUN_AWT_X11_XEMBEDDEDFRAME, [sun.awt.X11.XEmbeddedFrame]) +IT_CHECK_FOR_CLASS(SUN_MISC_REF, [sun.misc.Ref]) +IT_CHECK_FOR_CLASS(COM_SUN_JNDI_TOOLKIT_URL_URLUTIL, [com.sun.jndi.toolkit.url.UrlUtil]) +IT_CHECK_FOR_CLASS(SUN_APPLET_APPLETIMAGEREF, [sun.applet.AppletImageRef]) + AC_OUTPUT From liuqi at icedtea.classpath.org Wed Nov 3 22:46:05 2010 From: liuqi at icedtea.classpath.org (liuqi at icedtea.classpath.org) Date: Thu, 04 Nov 2010 05:46:05 +0000 Subject: /hg/openjdk6-mips: Fix 2 bugs related to patching and make some ... Message-ID: changeset 388ae1bd0bdd in /hg/openjdk6-mips details: http://icedtea.classpath.org/hg/openjdk6-mips?cmd=changeset;node=388ae1bd0bdd author: YANG Yongqiang date: Thu Nov 04 11:15:53 2010 +0800 Fix 2 bugs related to patching and make some codes more readable. 1. In MIPS, oops-table used by relocating must be updated accordingly when patching. 2. Allocate enough space for patching. 3. Make NativeInstructions more readable. NativeCall's size is 16 bytes instead of 12. If 12 is used, we must fix it by adding 4 explicitly. diffstat: 7 files changed, 112 insertions(+), 81 deletions(-) hotspot/src/cpu/mips/vm/c1_CodeStubs_mips.cpp | 20 +++++-- hotspot/src/cpu/mips/vm/c1_LIRAssembler_mips.cpp | 24 +------- hotspot/src/cpu/mips/vm/c1_Runtime1_mips.cpp | 61 +++++++++++++++++----- hotspot/src/cpu/mips/vm/nativeInst_mips.cpp | 39 ++++---------- hotspot/src/cpu/mips/vm/nativeInst_mips.hpp | 21 ++++--- hotspot/src/share/vm/c1/c1_LIRAssembler.cpp | 3 - hotspot/src/share/vm/c1/c1_Runtime1.cpp | 25 ++++++++- diffs (truncated from 502 to 500 lines): diff -r a7a1c6bde40a -r 388ae1bd0bdd hotspot/src/cpu/mips/vm/c1_CodeStubs_mips.cpp --- a/hotspot/src/cpu/mips/vm/c1_CodeStubs_mips.cpp Tue Nov 02 10:34:12 2010 +0800 +++ b/hotspot/src/cpu/mips/vm/c1_CodeStubs_mips.cpp Thu Nov 04 11:15:53 2010 +0800 @@ -273,7 +273,7 @@ void MonitorExitStub::emit_code(LIR_Asse // - in runtime: after initializing class, restore original code, reexecute instruction //int PatchingStub::_patch_info_offset = -NativeGeneralJump::instruction_size; -int PatchingStub::_patch_info_offset = -(NativeCall::instruction_size + 4); +int PatchingStub::_patch_info_offset = -NativeCall::instruction_size; void PatchingStub::align_patch_site(MacroAssembler* masm) { // We're patching a 5-7 byte instruction on intel and we need to @@ -289,7 +289,7 @@ void PatchingStub::align_patch_site(Macr } void PatchingStub::emit_code(LIR_Assembler* ce) { -// assert(NativeCall::instruction_size <= _bytes_to_copy && _bytes_to_copy <= 0xFF, "not enough room for call"); + assert(NativeCall::instruction_size <= _bytes_to_copy && _bytes_to_copy <= 0xFF, "not enough room for call"); assert(_bytes_to_copy <= 0xFF, "not enough room for call"); Label call_patch; @@ -311,6 +311,9 @@ void PatchingStub::emit_code(LIR_Assembl __ relocate(rspec); __ lui(_obj, Assembler::split_high((int)o)); __ addiu(_obj, _obj, Assembler::split_low((int)o)); + while ((intx)__ pc() - (intx)start < NativeCall::instruction_size) { + __ nop(); + } #ifdef ASSERT for (int i = 0; i < _bytes_to_copy; i++) { address ptr = (address)(_pc_start + i); @@ -322,11 +325,15 @@ void PatchingStub::emit_code(LIR_Assembl // make a copy the code which is going to be patched. assert((_bytes_to_copy&3)==0, "change this code"); + address start = __ pc(); for ( int i = 0; i < _bytes_to_copy; i+=4) { __ a_long (*(int*)(_pc_start + i)); //make the site look like a nop, @jerome *(int*)(_pc_start + i)=0; } + while ((intx)__ pc() - (intx)start < NativeCall::instruction_size) { + __ nop(); + } } address end_of_patch = __ pc(); @@ -393,7 +400,7 @@ void PatchingStub::emit_code(LIR_Assembl assert(patch_info_pc - end_of_patch == bytes_to_skip, "incorrect patch info"); address entry = __ pc(); - NativeGeneralJump::insert_unconditional((address)_pc_start, entry); + NativeGeneralJump::insert_unconditional((address)_pc_start, entry); address target = NULL; switch (_id) { case access_field_id: target = Runtime1::entry_for(Runtime1::access_field_patching_id); break; @@ -418,13 +425,14 @@ void PatchingStub::emit_code(LIR_Assembl __ delayed()->nop(); // Add enough nops so deoptimization can overwrite the jmp above with a call // and not destroy the world. - for (int j = __ offset() ; j < jmp_off + NativeCall::instruction_size + 4 ; j+=4 ) { + for (int j = __ offset(); j < jmp_off + NativeCall::instruction_size; j += 4 ) { __ nop(); } if (_id == load_klass_id) { CodeSection* cs = __ code_section(); - RelocIterator iter(cs, (address)_pc_start, (address)(_pc_start + 1)); - relocInfo::change_reloc_info_for_address(&iter, (address) _pc_start, relocInfo::oop_type, relocInfo::none); + address pc = (address)_pc_start; + RelocIterator iter(cs, pc, pc + 1); + relocInfo::change_reloc_info_for_address(&iter, pc, relocInfo::oop_type, relocInfo::none); } } diff -r a7a1c6bde40a -r 388ae1bd0bdd hotspot/src/cpu/mips/vm/c1_LIRAssembler_mips.cpp --- a/hotspot/src/cpu/mips/vm/c1_LIRAssembler_mips.cpp Tue Nov 02 10:34:12 2010 +0800 +++ b/hotspot/src/cpu/mips/vm/c1_LIRAssembler_mips.cpp Thu Nov 04 11:15:53 2010 +0800 @@ -546,8 +546,8 @@ void LIR_Assembler::swap_reg(Register a, void LIR_Assembler::const2reg(LIR_Opr src, LIR_Opr dest, LIR_PatchCode patch_code, CodeEmitInfo* info) { assert(src->is_constant(), "should not call otherwise"); - assert(dest->is_register(), "should not call otherwise"); - LIR_Const* c = src->as_constant_ptr(); + assert(dest->is_register(), "should not call otherwise"); + LIR_Const* c = src->as_constant_ptr(); switch (c->type()) { case T_INT: { @@ -585,21 +585,7 @@ void LIR_Assembler::const2reg(LIR_Opr sr case T_OBJECT: { if (patch_code == lir_patch_none) { - if (c->as_jobject() == NULL) { - NEEDS_CLEANUP - int oop_index = __ oop_recorder()->allocate_index(c->as_jobject()); - RelocationHolder rspec = oop_Relocation::spec(oop_index); - __ relocate(rspec); - __ lui(dest->as_register(), Assembler::split_high((int) c->as_jobject() )); - __ addiu( dest->as_register() , dest->as_register() , - Assembler::split_low((int) c->as_jobject())); - } else { - int oop_index = __ oop_recorder()->find_index(c->as_jobject()); - RelocationHolder rspec = oop_Relocation::spec(oop_index); - __ relocate(rspec); - __ lui(dest->as_register(), Assembler::split_high((int)c->as_jobject())); - __ addiu(dest->as_register(), dest->as_register(), Assembler::split_low((int)c->as_jobject())); - } + jobject2reg(c->as_jobject(), dest->as_register()); } else { jobject2reg_with_patching(dest->as_register(), info); } @@ -4188,10 +4174,6 @@ void LIR_Assembler::jobject2reg(jobject // This seems wrong as we do not emit relocInfo // for classes that are not loaded yet, i.e., they will be // never GC'd - NEEDS_CLEANUP - int oop_index = __ oop_recorder()->allocate_index(o); - RelocationHolder rspec = oop_Relocation::spec(oop_index); - __ relocate(rspec); __ lui(reg, Assembler::split_high((int)o)); __ addiu(reg, reg, Assembler::split_low((int)o)); } else { diff -r a7a1c6bde40a -r 388ae1bd0bdd hotspot/src/cpu/mips/vm/c1_Runtime1_mips.cpp --- a/hotspot/src/cpu/mips/vm/c1_Runtime1_mips.cpp Tue Nov 02 10:34:12 2010 +0800 +++ b/hotspot/src/cpu/mips/vm/c1_Runtime1_mips.cpp Thu Nov 04 11:15:53 2010 +0800 @@ -220,21 +220,19 @@ const int float_regs_as_doubles_size_in_ // account. // enum reg_save_layout { - //F0_off = 0, - //F31_off = F0_off + 31, - //T0_off = F31_off + 1, T0_off = 0, -// T8_off = T0_off + 8, -// T9_off, S0_off = T0_off + 8, FP_off = S0_off + 8, + T8_off, + T9_off, SP_off, V0_off, V1_off, -/* A0_off, + A0_off, A1_off, A2_off, - A3_off,*/ + A3_off, + GP_off, //temp_2_off, temp_1_off, saved_fp_off, @@ -279,6 +277,14 @@ static OopMap* generate_oop_map(StubAsse for (Register r = S0; r != S7->successor(); r = r->successor() ) { map->set_callee_saved(VMRegImpl::stack2reg(S0_off + num_rt_args + i++), r->as_VMReg()); } + map->set_callee_saved(VMRegImpl::stack2reg(FP_off + num_rt_args), FP->as_VMReg()); + map->set_callee_saved(VMRegImpl::stack2reg(GP_off + num_rt_args), GP->as_VMReg()); + map->set_callee_saved(VMRegImpl::stack2reg(T8_off + num_rt_args), T8->as_VMReg()); + map->set_callee_saved(VMRegImpl::stack2reg(T9_off + num_rt_args), T9->as_VMReg()); + map->set_callee_saved(VMRegImpl::stack2reg(A0_off + num_rt_args), A0->as_VMReg()); + map->set_callee_saved(VMRegImpl::stack2reg(A1_off + num_rt_args), A1->as_VMReg()); + map->set_callee_saved(VMRegImpl::stack2reg(A2_off + num_rt_args), A2->as_VMReg()); + map->set_callee_saved(VMRegImpl::stack2reg(A3_off + num_rt_args), A3->as_VMReg()); return map; } @@ -298,9 +304,17 @@ static OopMap* save_live_registers(StubA for (Register r = S0; r != S7->successor(); r = r->successor() ) { __ sw(r, SP, (r->encoding() - S0->encoding() + S0_off) * wordSize); } + __ sw(FP, SP, FP_off * wordSize); + __ sw(GP, SP, GP_off * wordSize); + __ sw(T8, SP, T8_off * wordSize); + __ sw(T9, SP, T9_off * wordSize); + __ sw(A0, SP, A0_off * wordSize); + __ sw(A1, SP, A1_off * wordSize); + __ sw(A2, SP, A2_off * wordSize); + __ sw(A3, SP, A3_off * wordSize); __ sw(V0, SP, V0_off * wordSize); __ sw(V1, SP, V1_off * wordSize); - + return generate_oop_map(sasm, num_rt_args, save_fpu_registers, describe_fpu_registers); } @@ -312,6 +326,16 @@ static void restore_fpu(StubAssembler* s for (Register r = S0; r != S7->successor(); r = r->successor() ) { __ lw(r, SP, (r->encoding() - S0->encoding() + S0_off) * wordSize); } + __ lw(FP, SP, FP_off * wordSize); + __ lw(GP, SP, GP_off * wordSize); + + __ lw(T8, SP, T8_off * wordSize); + __ lw(T9, SP, T9_off * wordSize); + __ lw(A0, SP, A0_off * wordSize); + __ lw(A1, SP, A1_off * wordSize); + __ lw(A2, SP, A2_off * wordSize); + __ lw(A3, SP, A3_off * wordSize); + __ lw(V0, SP, V0_off * wordSize); __ lw(V1, SP, V1_off * wordSize); __ addiu(SP, SP, (reg_save_frame_size - 2) * wordSize); @@ -332,6 +356,15 @@ static void restore_live_registers_excep for (Register r = S0; r != S7->successor(); r = r->successor() ) { __ lw(r, SP, (r->encoding() - S0->encoding() + S0_off) * wordSize); } + __ lw(FP, SP, FP_off * wordSize); + __ lw(GP, SP, GP_off * wordSize); + + __ lw(T8, SP, T8_off * wordSize); + __ lw(T9, SP, T9_off * wordSize); + __ lw(A0, SP, A0_off * wordSize); + __ lw(A1, SP, A1_off * wordSize); + __ lw(A2, SP, A2_off * wordSize); + __ lw(A3, SP, A3_off * wordSize); __ lw(V1, SP, V1_off * wordSize); __ addiu(SP, SP, (reg_save_frame_size - 2)* wordSize); @@ -561,10 +594,9 @@ OopMapSet* Runtime1::generate_patching(S // distinguish each RT-Call. // Note: This number affects also the RT-Call in generate_handle_exception because // the oop-map is shared for all calls. - //FIXME,for mips, I do not think it is need - const int num_rt_args = 1; // thread - // const int num_rt_args = 2; // for x86 version, thread + dummy ,push (eax) + + DeoptimizationBlob* deopt_blob = SharedRuntime::deopt_blob(); assert(deopt_blob != NULL, "deoptimization blob must have been created"); @@ -582,6 +614,7 @@ OopMapSet* Runtime1::generate_patching(S #endif __ move(A0, thread); + /* * NOTE: this frame should be compiled frame, but at this point, the pc in frame-anchor * is contained in interpreter. It should be wrong, and should be cleared but is not. @@ -589,7 +622,7 @@ OopMapSet* Runtime1::generate_patching(S * is not right. It depends on that the caller pc is stored in *(sp - 1) but it's not the case */ __ set_last_Java_frame(thread, NOREG, FP, NULL); - __ addi(SP, SP, (-1) * wordSize); + __ addiu(SP, SP, (-1) * wordSize); __ move(AT, -8); __ andr(SP, SP, AT); __ relocate(relocInfo::internal_pc_type); @@ -681,7 +714,6 @@ OopMapSet* Runtime1::generate_patching(S __ bind(L); } - // Runtime will return true if the nmethod has been deoptimized during // the patching process. In that case we must do a deopt reexecute instead. @@ -693,12 +725,14 @@ OopMapSet* Runtime1::generate_patching(S // Will reexecute. Proper return address is already on the stack we just restore // registers, pop all of our frame but the return address and jump to the deopt blob restore_live_registers(sasm); + __ leave(); __ jmp(deopt_blob->unpack_with_reexecution(), relocInfo::runtime_call_type); __ delayed()->nop(); __ bind(cont); restore_live_registers(sasm); + __ leave(); __ jr(RA); __ delayed()->nop(); @@ -1216,6 +1250,7 @@ OopMapSet* Runtime1::generate_code_for(S StubFrame f(sasm, "access_field_patching", dont_gc_arguments); // we should set up register map oop_maps = generate_patching(sasm, CAST_FROM_FN_PTR(address, access_field_patching)); + } break; diff -r a7a1c6bde40a -r 388ae1bd0bdd hotspot/src/cpu/mips/vm/nativeInst_mips.cpp --- a/hotspot/src/cpu/mips/vm/nativeInst_mips.cpp Tue Nov 02 10:34:12 2010 +0800 +++ b/hotspot/src/cpu/mips/vm/nativeInst_mips.cpp Thu Nov 04 11:15:53 2010 +0800 @@ -125,6 +125,7 @@ void NativeCall::insert(address code_pos __ lui(T9, Assembler::split_high((int)entry)); __ addiu(T9, T9, Assembler::split_low((int)entry)); __ jalr (); + __ delayed()->nop(); #undef __ ICache::invalidate_range(call->addr_at(0), instruction_size); @@ -153,11 +154,7 @@ void NativeMovConstReg::print() { } void NativeMovConstReg::set_data(int x) { - set_long_at(0, (long_at(0) & 0xffff0000) | (Assembler::split_high(x) & 0xffff)); - set_long_at(4, (long_at(4) & 0xffff0000) | (Assembler::split_low(x) & 0xffff)); - ICache::invalidate_range(addr_at(0), 8); - // ICache::invalidate_all(); #ifndef CORE // also store the value into an oop_Relocation cell, if any CodeBlob* nm = CodeCache::find_blob(instruction_address()); @@ -172,12 +169,15 @@ void NativeMovConstReg::set_data(int x) *oop_addr = (oop)x; } else { assert(oop_addr == r->oop_addr(), "must be only one set-oop here"); - } } + } } } +#endif -#endif + set_long_at(0, (long_at(0) & 0xffff0000) | (Assembler::split_high(x) & 0xffff)); + set_long_at(4, (long_at(4) & 0xffff0000) | (Assembler::split_low(x) & 0xffff)); + ICache::invalidate_range(addr_at(0), 8); } //------------------------------------------------------------------- @@ -272,18 +272,14 @@ void NativeGeneralJump::set_jump_destin // we now use b to do this. be careful when using this method // by yjl 9/16/2005 void NativeGeneralJump::insert_unconditional(address code_pos, address entry) { - CodeBuffer cb(code_pos, instruction_size + 4); + CodeBuffer cb(code_pos, instruction_size); MacroAssembler masm(&cb); #define __ masm. -// __ lui(AT, Assembler::split_high((int)entry)); -// __ addiu(AT, AT, Assembler::split_low((int)entry)); -// __ jr (AT); -// __ delayed()->nop(); __ b(entry); __ delayed()->nop(); #undef __ - ICache::invalidate_range(code_pos, instruction_size + 4); + ICache::invalidate_range(code_pos, instruction_size); } @@ -293,20 +289,9 @@ void NativeGeneralJump::insert_unconditi // the jmp's with the first 4 byte of the new instruction. void NativeGeneralJump::replace_mt_safe(address instr_addr, address code_buffer) { NativeGeneralJump* h_jump = nativeGeneralJump_at (instr_addr); - int i0, i1 , i2; - if(!h_jump->is_short()) { - i2 = ((int*)code_buffer)[2]; - h_jump->set_long_at(2 * BytesPerInstWord, i2); - } - - i1 = ((int*)code_buffer)[1]; - h_jump->set_long_at(1 * BytesPerInstWord, i1); - i0 = ((int*)code_buffer)[0]; - h_jump->set_long_at(0 * BytesPerInstWord, i0); - - // beq ZERO, ZERO, -1 - // 0001 0000 0000 0000 1111 1111 1111 1111 - + assert(NativeGeneralJump::instruction_size == NativeCall::instruction_size, + "note::Runtime1::patch_code uses NativeCall::instruction_size"); + memcpy(instr_addr, code_buffer, NativeCall::instruction_size); ICache::invalidate_range(h_jump->addr_at(0), instruction_size); } @@ -341,7 +326,7 @@ void NativeGeneralJump::patch_verified_e *(unsigned int *)(verified_entry + 8) = code_buffer[2]; *(unsigned int *)(verified_entry + 12) = code_buffer[3]; - ICache::invalidate_range(verified_entry, instruction_size + 4); + ICache::invalidate_range(verified_entry, instruction_size); //ICache::invalidate_all(); } diff -r a7a1c6bde40a -r 388ae1bd0bdd hotspot/src/cpu/mips/vm/nativeInst_mips.hpp --- a/hotspot/src/cpu/mips/vm/nativeInst_mips.hpp Tue Nov 02 10:34:12 2010 +0800 +++ b/hotspot/src/cpu/mips/vm/nativeInst_mips.hpp Thu Nov 04 11:15:53 2010 +0800 @@ -135,7 +135,7 @@ class NativeCall: public NativeInstructi enum mips_specific_constants { //instruction_code = 0xE8, instruction_offset = 0, - instruction_size = 12, + instruction_size = 16, return_address_offset = 16, displacement_offset = 0 }; @@ -347,23 +347,25 @@ class NativeMovRegMemPatching: public Na // lui reg, split_high(addr) // addiu reg, split_low(addr) // jr reg +// nop // or // beq ZERO, ZERO, offset +// nop class NativeGeneralJump: public NativeInstruction { public: enum mips_specific_constants { instruction_offset = 0, beq_opcode = 0x10000000,//000100|00000|00000|offset b_mask = 0xffff0000, - short_size = 4, - instruction_size = 12 + short_size = 8, + instruction_size = 16 }; bool is_short() const { return (long_at(instruction_offset) & b_mask) == beq_opcode; } address instruction_address() const { return addr_at(instruction_offset); } address jump_destination() const { if ( is_short() ) { - return addr_at(short_size) + Assembler::imm_off(long_at(instruction_offset)) * 4; + return addr_at(4) + Assembler::imm_off(long_at(instruction_offset)) * 4; } return (address)Assembler::merge(long_at(4)&0xffff, long_at(instruction_offset)&0xffff); } @@ -416,12 +418,14 @@ public: }; // return instruction that does not pop values of the stack +// jr RA +// delay slot class NativeReturn: public NativeInstruction { public: - enum Intel_specific_constants { - instruction_size = 4, + enum mips_specific_constants { + instruction_size = 8, instruction_offset = 0, - next_instruction_offset = 4 + next_instruction_offset = 8 }; }; @@ -477,8 +481,7 @@ inline bool NativeInstruction::is_jump() return ((long_at(0) & NativeGeneralJump::b_mask) == NativeGeneralJump::beq_opcode) || (is_op(long_at(0), Assembler::lui_op) && is_op(long_at(4), Assembler::addiu_op) && - is_special_op(long_at(8), Assembler::jr_op) && - !is_rs(long_at(8), RA) ); + is_special_op(long_at(8), Assembler::jr_op)); } inline bool NativeInstruction::is_cond_jump() { return is_int_branch() || is_float_branch(); } diff -r a7a1c6bde40a -r 388ae1bd0bdd hotspot/src/share/vm/c1/c1_LIRAssembler.cpp --- a/hotspot/src/share/vm/c1/c1_LIRAssembler.cpp Tue Nov 02 10:34:12 2010 +0800 +++ b/hotspot/src/share/vm/c1/c1_LIRAssembler.cpp Thu Nov 04 11:15:53 2010 +0800 @@ -28,12 +28,9 @@ void LIR_Assembler::patching_epilog(PatchingStub* patch, LIR_PatchCode patch_code, Register obj, CodeEmitInfo* info) { // we must have enough patching space so that call can be inserted -#ifndef MIPS32 while ((intx) _masm->pc() - (intx) patch->pc_start() < NativeCall::instruction_size) { _masm->nop(); } -#endif - patch->install(_masm, patch_code, obj, info); append_patching_stub(patch); diff -r a7a1c6bde40a -r 388ae1bd0bdd hotspot/src/share/vm/c1/c1_Runtime1.cpp --- a/hotspot/src/share/vm/c1/c1_Runtime1.cpp Tue Nov 02 10:34:12 2010 +0800 +++ b/hotspot/src/share/vm/c1/c1_Runtime1.cpp Thu Nov 04 11:15:53 2010 +0800 @@ -874,7 +874,7 @@ JRT_ENTRY(void, Runtime1::patch_code(Jav NativeGeneralJump* jump = nativeGeneralJump_at(caller_frame.pc()); address instr_pc = jump->jump_destination(); NativeInstruction* ni = nativeInstruction_at(instr_pc); - if (ni->is_jump() ) { + if (ni->is_jump()) { // the jump has not been patched yet // The jump destination is slow case and therefore not part of the stubs // (stubs are only for StaticCalls) @@ -993,7 +993,28 @@ JRT_ENTRY(void, Runtime1::patch_code(Jav RelocIterator iter(nm, (address)instr_pc, (address)(instr_pc + 1)); relocInfo::change_reloc_info_for_address(&iter, (address) instr_pc, relocInfo::none, relocInfo::oop_type); -#if defined(SPARC) +#ifdef MIPS32 + // Update the oop location in the nmethod with the proper + // oop. When the code was generated, a NULL was stuffed + // in the oop table and that table needs to be update to + // have the right value. On intel the value is kept + // directly in the instruction instead of in the oop + // table, so set_data above effectively updated the value. + RelocIterator oops(nm, instr_pc, instr_pc + 1); + bool found = false; + while (oops.next() && !found) { + if (oops.type() == relocInfo::oop_type) { + oop_Relocation* r = oops.oop_reloc(); + oop* oop_adr = r->oop_addr(); + *oop_adr = load_klass(); + r->fix_oop_relocation(); + found = true; + } + } + assert(found, "the oop must exist!"); +#endif + +#if defined(SPARC) // Sparc takes two relocations for an oop so update the second one. From jvanek at redhat.com Thu Nov 4 04:39:38 2010 From: jvanek at redhat.com (Jiri Vanek) Date: Thu, 04 Nov 2010 12:39:38 +0100 Subject: patch for Asian fonts for fedora, changing paths to fonts files. Dependencies are necessary to be added to rpms. Message-ID: <4CD29B7A.4030600@redhat.com> --- openjdk/jdk/src/solaris/classes/sun/awt/fontconfigs/linux.fontconfig.Fedora.properties 2010-11-04 11:06:26.695428114 +0100 +++ openjdk/jdk/src/solaris/classes/sun/awt/fontconfigs/linux.fontconfig.Fedora.11.properties 2010-11-04 11:19:45.133587953 +0100 @@ -35,6 +35,8 @@ dialog.plain.korean=Baekmuk Gulim dialog.plain.chinese-big5=AR PL ShanHeiSun Uni dialog.plain.chinese-gb18030=AR PL ShanHeiSun Uni +dialog.plain.assamese=Lohit Assamese +dialog.plain.devanagari=Lohit Devanagari dialog.plain.bengali=Lohit Bengali dialog.plain.gujarati=Lohit Gujarati dialog.plain.hindi=Lohit Hindi @@ -50,6 +52,8 @@ dialog.bold.korean=Baekmuk Gulim dialog.bold.chinese-big5=AR PL ShanHeiSun Uni dialog.bold.chinese-gb18030=AR PL ShanHeiSun Uni +dialog.bold.assamese=Lohit Assamese +dialog.bold.devanagari=Lohit Devanagari dialog.bold.bengali=Lohit Bengali dialog.bold.gujarati=Lohit Gujarati dialog.bold.hindi=Lohit Hindi @@ -65,6 +69,8 @@ dialog.italic.korean=Baekmuk Gulim dialog.italic.chinese-big5=AR PL ShanHeiSun Uni dialog.italic.chinese-gb18030=AR PL ShanHeiSun Uni +dialog.italic.assamese=Lohit Assamese +dialog.italic.devanagari=Lohit Devanagari dialog.italic.bengali=Lohit Bengali dialog.italic.gujarati=Lohit Gujarati dialog.italic.hindi=Lohit Hindi @@ -80,6 +86,8 @@ dialog.bolditalic.korean=Baekmuk Gulim dialog.bolditalic.chinese-big5=AR PL ShanHeiSun Uni dialog.bolditalic.chinese-gb18030=AR PL ShanHeiSun Uni +dialog.bolditalic.assamese=Lohit Assamese +dialog.bolditalic.devanagari=Lohit Devanagari dialog.bolditalic.bengali=Lohit Bengali dialog.bolditalic.gujarati=Lohit Gujarati dialog.bolditalic.hindi=Lohit Hindi @@ -95,6 +103,8 @@ sansserif.plain.korean=Baekmuk Gulim sansserif.plain.chinese-big5=AR PL ShanHeiSun Uni sansserif.plain.chinese-gb18030=AR PL ShanHeiSun Uni +sansserif.plain.assamese=Lohit Assamese +sansserif.plain.devanagari=Lohit Devanagari sansserif.plain.bengali=Lohit Bengali sansserif.plain.gujarati=Lohit Gujarati sansserif.plain.hindi=Lohit Hindi @@ -110,6 +120,8 @@ sansserif.bold.korean=Baekmuk Gulim sansserif.bold.chinese-big5=AR PL ShanHeiSun Uni sansserif.bold.chinese-gb18030=AR PL ShanHeiSun Uni +sansserif.bold.assamese=Lohit Assamese +sansserif.bold.devanagari=Lohit Devanagari sansserif.bold.bengali=Lohit Bengali sansserif.bold.gujarati=Lohit Gujarati sansserif.bold.hindi=Lohit Hindi @@ -125,6 +137,8 @@ sansserif.italic.korean=Baekmuk Gulim sansserif.italic.chinese-big5=AR PL ShanHeiSun Uni sansserif.italic.chinese-gb18030=AR PL ShanHeiSun Uni +sansserif.italic.assamese=Lohit Assamese +sansserif.italic.devanagari=Lohit Devanagari sansserif.italic.bengali=Lohit Bengali sansserif.italic.gujarati=Lohit Gujarati sansserif.italic.hindi=Lohit Hindi @@ -140,6 +154,8 @@ sansserif.bolditalic.korean=Baekmuk Gulim sansserif.bolditalic.chinese-big5=AR PL ShanHeiSun Uni sansserif.bolditalic.chinese-gb18030=AR PL ShanHeiSun Uni +sansserif.bolditalic.assamese=Lohit Assamese +sansserif.bolditalic.devanagari=Lohit Devanagari sansserif.bolditalic.bengali=Lohit Bengali sansserif.bolditalic.gujarati=Lohit Gujarati sansserif.bolditalic.hindi=Lohit Hindi @@ -155,6 +171,8 @@ serif.plain.korean=Baekmuk Batang serif.plain.chinese-big5=AR PL ZenKai Uni serif.plain.chinese-gb18030=AR PL ZenKai Uni +serif.plain.assamese=Lohit Assamese +serif.plain.devanagari=Lohit Devanagari serif.plain.bengali=Lohit Bengali serif.plain.gujarati=Lohit Gujarati serif.plain.hindi=Lohit Hindi @@ -170,6 +188,8 @@ serif.bold.korean=Baekmuk Batang serif.bold.chinese-big5=AR PL ZenKai Uni serif.bold.chinese-gb18030=AR PL ZenKai Uni +serif.bold.assamese=Lohit Assamese +serif.bold.devanagari=Lohit Devanagari serif.bold.bengali=Lohit Bengali serif.bold.gujarati=Lohit Gujarati serif.bold.hindi=Lohit Hindi @@ -185,6 +205,8 @@ serif.italic.korean=Baekmuk Batang serif.italic.chinese-big5=AR PL ZenKai Uni serif.italic.chinese-gb18030=AR PL ZenKai Uni +serif.italic.assamese=Lohit Assamese +serif.italic.devanagari=Lohit Devanagari serif.italic.bengali=Lohit Bengali serif.italic.gujarati=Lohit Gujarati serif.italic.hindi=Lohit Hindi @@ -200,6 +222,8 @@ serif.bolditalic.korean=Baekmuk Batang serif.bolditalic.chinese-big5=AR PL ZenKai Uni serif.bolditalic.chinese-gb18030=AR PL ZenKai Uni +serif.bolditalic.assamese=Lohit Assamese +serif.bolditalic.devanagari=Lohit Devanagari serif.bolditalic.bengali=Lohit Bengali serif.bolditalic.gujarati=Lohit Gujarati serif.bolditalic.hindi=Lohit Hindi @@ -215,6 +239,8 @@ monospaced.plain.korean=Baekmuk Gulim monospaced.plain.chinese-big5=AR PL ShanHeiSun Uni monospaced.plain.chinese-gb18030=AR PL ShanHeiSun Uni +monospaced.plain.assamese=Lohit Assamese +monospaced.plain.devanagari=Lohit Devanagari monospaced.plain.bengali=Lohit Bengali monospaced.plain.gujarati=Lohit Gujarati monospaced.plain.hindi=Lohit Hindi @@ -230,6 +256,8 @@ monospaced.bold.korean=Baekmuk Gulim monospaced.bold.chinese-big5=AR PL ShanHeiSun Uni monospaced.bold.chinese-gb18030=AR PL ShanHeiSun Uni +monospaced.bold.assamese=Lohit Assamese +monospaced.bold.devanagari=Lohit Devanagari monospaced.bold.bengali=Lohit Bengali monospaced.bold.gujarati=Lohit Gujarati monospaced.bold.hindi=Lohit Hindi @@ -245,6 +273,8 @@ monospaced.italic.korean=Baekmuk Gulim monospaced.italic.chinese-big5=AR PL ShanHeiSun Uni monospaced.italic.chinese-gb18030=AR PL ShanHeiSun Uni +monospaced.italic.assamese=Lohit Assamese +monospaced.italic.devanagari=Lohit Devanagari monospaced.italic.bengali=Lohit Bengali monospaced.italic.gujarati=Lohit Gujarati monospaced.italic.hindi=Lohit Hindi @@ -260,6 +290,8 @@ monospaced.bolditalic.korean=Baekmuk Gulim monospaced.bolditalic.chinese-big5=AR PL ShanHeiSun Uni monospaced.bolditalic.chinese-gb18030=AR PL ShanHeiSun Uni +monospaced.bolditalic.assamese=Lohit Assamese +monospaced.bolditalic.devanagari=Lohit Devanagari monospaced.bolditalic.bengali=Lohit Bengali monospaced.bolditalic.gujarati=Lohit Gujarati monospaced.bolditalic.hindi=Lohit Hindi @@ -275,6 +307,8 @@ dialoginput.plain.korean=Baekmuk Gulim dialoginput.plain.chinese-big5=AR PL ShanHeiSun Uni dialoginput.plain.chinese-gb18030=AR PL ShanHeiSun Uni +dialoginput.plain.assamese=Lohit Assamese +dialoginput.plain.devanagari=Lohit Devanagari dialoginput.plain.bengali=Lohit Bengali dialoginput.plain.gujarati=Lohit Gujarati dialoginput.plain.hindi=Lohit Hindi @@ -290,6 +324,8 @@ dialoginput.bold.korean=Baekmuk Gulim dialoginput.bold.chinese-big5=AR PL ShanHeiSun Uni dialoginput.bold.chinese-gb18030=AR PL ShanHeiSun Uni +dialoginput.bold.assamese=Lohit Assamese +dialoginput.bold.devanagari=Lohit Devanagari dialoginput.bold.bengali=Lohit Bengali dialoginput.bold.gujarati=Lohit Gujarati dialoginput.bold.hindi=Lohit Hindi @@ -305,6 +341,8 @@ dialoginput.italic.korean=Baekmuk Gulim dialoginput.italic.chinese-big5=AR PL ShanHeiSun Uni dialoginput.italic.chinese-gb18030=AR PL ShanHeiSun Uni +dialoginput.italic.assamese=Lohit Assamese +dialoginput.italic.devanagari=Lohit Devanagari dialoginput.italic.bengali=Lohit Bengali dialoginput.italic.gujarati=Lohit Gujarati dialoginput.italic.hindi=Lohit Hindi @@ -320,6 +358,8 @@ dialoginput.bolditalic.korean=Baekmuk Gulim dialoginput.bolditalic.chinese-big5=AR PL ShanHeiSun Uni dialoginput.bolditalic.chinese-gb18030=AR PL ShanHeiSun Uni +dialoginput.bolditalic.assamese=Lohit Assamese +dialoginput.bolditalic.devanagari=Lohit Devanagari dialoginput.bolditalic.bengali=Lohit Bengali dialoginput.bolditalic.gujarati=Lohit Gujarati dialoginput.bolditalic.hindi=Lohit Hindi @@ -356,21 +396,24 @@ filename.DejaVu_Serif_Oblique=/usr/share/fonts/dejavu/DejaVuSerif-Oblique.ttf filename.DejaVu_Serif_Bold_Oblique=/usr/share/fonts/dejavu/DejaVuSerif-BoldOblique.ttf -filename.Sazanami_Gothic=/usr/share/fonts/sazanami-fonts-gothic/sazanami-gothic.ttf -filename.Sazanami_Mincho=/usr/share/fonts/sazanami-fonts-mincho/sazanami-mincho.ttf +filename.Sazanami_Gothic=/usr/share/fonts/sazanami/gothic/sazanami-gothic.ttf +filename.Sazanami_Mincho=/usr/share/fonts/sazanami/mincho/sazanami-mincho.ttf filename.AR_PL_ShanHeiSun_Uni=/usr/share/fonts/cjkunifonts-uming/uming.ttc filename.AR_PL_ZenKai_Uni=/usr/share/fonts/cjkunifonts-ukai/ukai.ttc -filename.Baekmuk_Gulim=/usr/share/fonts/baekmuk-ttf-gulim/gulim.ttf -filename.Baekmuk_Batang=/usr/share/fonts/baekmuk-ttf-batang/batang.ttf +filename.Baekmuk_Gulim=/usr/share/fonts/baekmuk-ttf/gulim.ttf +filename.Baekmuk_Batang=/usr/share/fonts/baekmuk-ttf/batang.ttf + +filename.Lohit_Assamese=/usr/share/fonts/lohit-assamese/Lohit-Assamese.ttf +filename.Lohit_Devanagari=/usr/share/fonts/lohit-devanagari/Lohit-Devanagari.ttf +filename.Lohit_Bengali=/usr/share/fonts/lohit-bengali/Lohit-Bengali.ttf +filename.Lohit_Gujarati=/usr/share/fonts/lohit-gujarati/Lohit-Gujarati.ttf +filename.Lohit_Hindi=/usr/share/fonts/lohit-devanagari/Lohit-Devanagari.ttf +filename.Lohit_Kannda=/usr/share/fonts/lohit-kannada/Lohit-Kannada.ttf +filename.Lohit_Malayalam=/usr/share/fonts/lohit-malayalam/Lohit-Malayalam.ttf +filename.Lohit_Oriya=/usr/share/fonts/lohit-oriya/Lohit-Oriya.ttf +filename.Lohit_Punjabi=/usr/share/fonts/lohit-punjabi/Lohit-Punjabi.ttf +filename.Lohit_Tamil=/usr/share/fonts/lohit-tamil/Lohit-Tamil.ttf +filename.Lohit_Telugu=/usr/share/fonts/lohit-telugu/Lohit-Telugu.ttf -filename.Lohit_Bengali=/usr/share/fonts/lohit-bengali/lohit_bn.ttf -filename.Lohit_Gujarati=/usr/share/fonts/lohit-gujarati/lohit_gu.ttf -filename.Lohit_Hindi=/usr/share/fonts/lohit-hindi/lohit_hi.ttf -filename.Lohit_Kannda=/usr/share/fonts/lohit-kannada/lohit_kn.ttf -filename.Lohit_Malayalam=/usr/share/fonts/lohit-malayalam/lohit_ml.ttf -filename.Lohit_Oriya=/usr/share/fonts/lohit-oriya/lohit_or.ttf -filename.Lohit_Punjabi=/usr/share/fonts/lohit-punjabi/lohit_pa.ttf -filename.Lohit_Tamil=/usr/share/fonts/lohit-tamil/lohit_ta.ttf -filename.Lohit_Telugu=/usr/share/fonts/lohit-telugu/lohit_te.ttf filename.LKLUG=/usr/share/fonts/lklug/lklug.ttf --- openjdk/jdk/src/solaris/classes/sun/awt/fontconfigs/linux.fontconfig.Fedora.properties 2010-11-04 11:06:26.695428114 +0100 +++ openjdk/jdk/src/solaris/classes/sun/awt/fontconfigs/linux.fontconfig.Fedora.12.properties 2010-11-04 11:19:45.133587953 +0100 @@ -35,6 +35,8 @@ dialog.plain.korean=Baekmuk Gulim dialog.plain.chinese-big5=AR PL ShanHeiSun Uni dialog.plain.chinese-gb18030=AR PL ShanHeiSun Uni +dialog.plain.assamese=Lohit Assamese +dialog.plain.devanagari=Lohit Devanagari dialog.plain.bengali=Lohit Bengali dialog.plain.gujarati=Lohit Gujarati dialog.plain.hindi=Lohit Hindi @@ -50,6 +52,8 @@ dialog.bold.korean=Baekmuk Gulim dialog.bold.chinese-big5=AR PL ShanHeiSun Uni dialog.bold.chinese-gb18030=AR PL ShanHeiSun Uni +dialog.bold.assamese=Lohit Assamese +dialog.bold.devanagari=Lohit Devanagari dialog.bold.bengali=Lohit Bengali dialog.bold.gujarati=Lohit Gujarati dialog.bold.hindi=Lohit Hindi @@ -65,6 +69,8 @@ dialog.italic.korean=Baekmuk Gulim dialog.italic.chinese-big5=AR PL ShanHeiSun Uni dialog.italic.chinese-gb18030=AR PL ShanHeiSun Uni +dialog.italic.assamese=Lohit Assamese +dialog.italic.devanagari=Lohit Devanagari dialog.italic.bengali=Lohit Bengali dialog.italic.gujarati=Lohit Gujarati dialog.italic.hindi=Lohit Hindi @@ -80,6 +86,8 @@ dialog.bolditalic.korean=Baekmuk Gulim dialog.bolditalic.chinese-big5=AR PL ShanHeiSun Uni dialog.bolditalic.chinese-gb18030=AR PL ShanHeiSun Uni +dialog.bolditalic.assamese=Lohit Assamese +dialog.bolditalic.devanagari=Lohit Devanagari dialog.bolditalic.bengali=Lohit Bengali dialog.bolditalic.gujarati=Lohit Gujarati dialog.bolditalic.hindi=Lohit Hindi @@ -95,6 +103,8 @@ sansserif.plain.korean=Baekmuk Gulim sansserif.plain.chinese-big5=AR PL ShanHeiSun Uni sansserif.plain.chinese-gb18030=AR PL ShanHeiSun Uni +sansserif.plain.assamese=Lohit Assamese +sansserif.plain.devanagari=Lohit Devanagari sansserif.plain.bengali=Lohit Bengali sansserif.plain.gujarati=Lohit Gujarati sansserif.plain.hindi=Lohit Hindi @@ -110,6 +120,8 @@ sansserif.bold.korean=Baekmuk Gulim sansserif.bold.chinese-big5=AR PL ShanHeiSun Uni sansserif.bold.chinese-gb18030=AR PL ShanHeiSun Uni +sansserif.bold.assamese=Lohit Assamese +sansserif.bold.devanagari=Lohit Devanagari sansserif.bold.bengali=Lohit Bengali sansserif.bold.gujarati=Lohit Gujarati sansserif.bold.hindi=Lohit Hindi @@ -125,6 +137,8 @@ sansserif.italic.korean=Baekmuk Gulim sansserif.italic.chinese-big5=AR PL ShanHeiSun Uni sansserif.italic.chinese-gb18030=AR PL ShanHeiSun Uni +sansserif.italic.assamese=Lohit Assamese +sansserif.italic.devanagari=Lohit Devanagari sansserif.italic.bengali=Lohit Bengali sansserif.italic.gujarati=Lohit Gujarati sansserif.italic.hindi=Lohit Hindi @@ -140,6 +154,8 @@ sansserif.bolditalic.korean=Baekmuk Gulim sansserif.bolditalic.chinese-big5=AR PL ShanHeiSun Uni sansserif.bolditalic.chinese-gb18030=AR PL ShanHeiSun Uni +sansserif.bolditalic.assamese=Lohit Assamese +sansserif.bolditalic.devanagari=Lohit Devanagari sansserif.bolditalic.bengali=Lohit Bengali sansserif.bolditalic.gujarati=Lohit Gujarati sansserif.bolditalic.hindi=Lohit Hindi @@ -155,6 +171,8 @@ serif.plain.korean=Baekmuk Batang serif.plain.chinese-big5=AR PL ZenKai Uni serif.plain.chinese-gb18030=AR PL ZenKai Uni +serif.plain.assamese=Lohit Assamese +serif.plain.devanagari=Lohit Devanagari serif.plain.bengali=Lohit Bengali serif.plain.gujarati=Lohit Gujarati serif.plain.hindi=Lohit Hindi @@ -170,6 +188,8 @@ serif.bold.korean=Baekmuk Batang serif.bold.chinese-big5=AR PL ZenKai Uni serif.bold.chinese-gb18030=AR PL ZenKai Uni +serif.bold.assamese=Lohit Assamese +serif.bold.devanagari=Lohit Devanagari serif.bold.bengali=Lohit Bengali serif.bold.gujarati=Lohit Gujarati serif.bold.hindi=Lohit Hindi @@ -185,6 +205,8 @@ serif.italic.korean=Baekmuk Batang serif.italic.chinese-big5=AR PL ZenKai Uni serif.italic.chinese-gb18030=AR PL ZenKai Uni +serif.italic.assamese=Lohit Assamese +serif.italic.devanagari=Lohit Devanagari serif.italic.bengali=Lohit Bengali serif.italic.gujarati=Lohit Gujarati serif.italic.hindi=Lohit Hindi @@ -200,6 +222,8 @@ serif.bolditalic.korean=Baekmuk Batang serif.bolditalic.chinese-big5=AR PL ZenKai Uni serif.bolditalic.chinese-gb18030=AR PL ZenKai Uni +serif.bolditalic.assamese=Lohit Assamese +serif.bolditalic.devanagari=Lohit Devanagari serif.bolditalic.bengali=Lohit Bengali serif.bolditalic.gujarati=Lohit Gujarati serif.bolditalic.hindi=Lohit Hindi @@ -215,6 +239,8 @@ monospaced.plain.korean=Baekmuk Gulim monospaced.plain.chinese-big5=AR PL ShanHeiSun Uni monospaced.plain.chinese-gb18030=AR PL ShanHeiSun Uni +monospaced.plain.assamese=Lohit Assamese +monospaced.plain.devanagari=Lohit Devanagari monospaced.plain.bengali=Lohit Bengali monospaced.plain.gujarati=Lohit Gujarati monospaced.plain.hindi=Lohit Hindi @@ -230,6 +256,8 @@ monospaced.bold.korean=Baekmuk Gulim monospaced.bold.chinese-big5=AR PL ShanHeiSun Uni monospaced.bold.chinese-gb18030=AR PL ShanHeiSun Uni +monospaced.bold.assamese=Lohit Assamese +monospaced.bold.devanagari=Lohit Devanagari monospaced.bold.bengali=Lohit Bengali monospaced.bold.gujarati=Lohit Gujarati monospaced.bold.hindi=Lohit Hindi @@ -245,6 +273,8 @@ monospaced.italic.korean=Baekmuk Gulim monospaced.italic.chinese-big5=AR PL ShanHeiSun Uni monospaced.italic.chinese-gb18030=AR PL ShanHeiSun Uni +monospaced.italic.assamese=Lohit Assamese +monospaced.italic.devanagari=Lohit Devanagari monospaced.italic.bengali=Lohit Bengali monospaced.italic.gujarati=Lohit Gujarati monospaced.italic.hindi=Lohit Hindi @@ -260,6 +290,8 @@ monospaced.bolditalic.korean=Baekmuk Gulim monospaced.bolditalic.chinese-big5=AR PL ShanHeiSun Uni monospaced.bolditalic.chinese-gb18030=AR PL ShanHeiSun Uni +monospaced.bolditalic.assamese=Lohit Assamese +monospaced.bolditalic.devanagari=Lohit Devanagari monospaced.bolditalic.bengali=Lohit Bengali monospaced.bolditalic.gujarati=Lohit Gujarati monospaced.bolditalic.hindi=Lohit Hindi @@ -275,6 +307,8 @@ dialoginput.plain.korean=Baekmuk Gulim dialoginput.plain.chinese-big5=AR PL ShanHeiSun Uni dialoginput.plain.chinese-gb18030=AR PL ShanHeiSun Uni +dialoginput.plain.assamese=Lohit Assamese +dialoginput.plain.devanagari=Lohit Devanagari dialoginput.plain.bengali=Lohit Bengali dialoginput.plain.gujarati=Lohit Gujarati dialoginput.plain.hindi=Lohit Hindi @@ -290,6 +324,8 @@ dialoginput.bold.korean=Baekmuk Gulim dialoginput.bold.chinese-big5=AR PL ShanHeiSun Uni dialoginput.bold.chinese-gb18030=AR PL ShanHeiSun Uni +dialoginput.bold.assamese=Lohit Assamese +dialoginput.bold.devanagari=Lohit Devanagari dialoginput.bold.bengali=Lohit Bengali dialoginput.bold.gujarati=Lohit Gujarati dialoginput.bold.hindi=Lohit Hindi @@ -305,6 +341,8 @@ dialoginput.italic.korean=Baekmuk Gulim dialoginput.italic.chinese-big5=AR PL ShanHeiSun Uni dialoginput.italic.chinese-gb18030=AR PL ShanHeiSun Uni +dialoginput.italic.assamese=Lohit Assamese +dialoginput.italic.devanagari=Lohit Devanagari dialoginput.italic.bengali=Lohit Bengali dialoginput.italic.gujarati=Lohit Gujarati dialoginput.italic.hindi=Lohit Hindi @@ -320,6 +358,8 @@ dialoginput.bolditalic.korean=Baekmuk Gulim dialoginput.bolditalic.chinese-big5=AR PL ShanHeiSun Uni dialoginput.bolditalic.chinese-gb18030=AR PL ShanHeiSun Uni +dialoginput.bolditalic.assamese=Lohit Assamese +dialoginput.bolditalic.devanagari=Lohit Devanagari dialoginput.bolditalic.bengali=Lohit Bengali dialoginput.bolditalic.gujarati=Lohit Gujarati dialoginput.bolditalic.hindi=Lohit Hindi @@ -356,21 +396,24 @@ filename.DejaVu_Serif_Oblique=/usr/share/fonts/dejavu/DejaVuSerif-Oblique.ttf filename.DejaVu_Serif_Bold_Oblique=/usr/share/fonts/dejavu/DejaVuSerif-BoldOblique.ttf -filename.Sazanami_Gothic=/usr/share/fonts/sazanami-fonts-gothic/sazanami-gothic.ttf -filename.Sazanami_Mincho=/usr/share/fonts/sazanami-fonts-mincho/sazanami-mincho.ttf +filename.Sazanami_Gothic=/usr/share/fonts/sazanami/gothic/sazanami-gothic.ttf +filename.Sazanami_Mincho=/usr/share/fonts/sazanami/mincho/sazanami-mincho.ttf filename.AR_PL_ShanHeiSun_Uni=/usr/share/fonts/cjkunifonts-uming/uming.ttc filename.AR_PL_ZenKai_Uni=/usr/share/fonts/cjkunifonts-ukai/ukai.ttc -filename.Baekmuk_Gulim=/usr/share/fonts/baekmuk-ttf-gulim/gulim.ttf -filename.Baekmuk_Batang=/usr/share/fonts/baekmuk-ttf-batang/batang.ttf +filename.Baekmuk_Gulim=/usr/share/fonts/baekmuk-ttf/gulim.ttf +filename.Baekmuk_Batang=/usr/share/fonts/baekmuk-ttf/batang.ttf + +filename.Lohit_Assamese=/usr/share/fonts/lohit-assamese/Lohit-Assamese.ttf +filename.Lohit_Devanagari=/usr/share/fonts/lohit-devanagari/Lohit-Devanagari.ttf +filename.Lohit_Bengali=/usr/share/fonts/lohit-bengali/Lohit-Bengali.ttf +filename.Lohit_Gujarati=/usr/share/fonts/lohit-gujarati/Lohit-Gujarati.ttf +filename.Lohit_Hindi=/usr/share/fonts/lohit-devanagari/Lohit-Devanagari.ttf +filename.Lohit_Kannda=/usr/share/fonts/lohit-kannada/Lohit-Kannada.ttf +filename.Lohit_Malayalam=/usr/share/fonts/lohit-malayalam/Lohit-Malayalam.ttf +filename.Lohit_Oriya=/usr/share/fonts/lohit-oriya/Lohit-Oriya.ttf +filename.Lohit_Punjabi=/usr/share/fonts/lohit-punjabi/Lohit-Punjabi.ttf +filename.Lohit_Tamil=/usr/share/fonts/lohit-tamil/Lohit-Tamil.ttf +filename.Lohit_Telugu=/usr/share/fonts/lohit-telugu/Lohit-Telugu.ttf -filename.Lohit_Bengali=/usr/share/fonts/lohit-bengali/lohit_bn.ttf -filename.Lohit_Gujarati=/usr/share/fonts/lohit-gujarati/lohit_gu.ttf -filename.Lohit_Hindi=/usr/share/fonts/lohit-hindi/lohit_hi.ttf -filename.Lohit_Kannda=/usr/share/fonts/lohit-kannada/lohit_kn.ttf -filename.Lohit_Malayalam=/usr/share/fonts/lohit-malayalam/lohit_ml.ttf -filename.Lohit_Oriya=/usr/share/fonts/lohit-oriya/lohit_or.ttf -filename.Lohit_Punjabi=/usr/share/fonts/lohit-punjabi/lohit_pa.ttf -filename.Lohit_Tamil=/usr/share/fonts/lohit-tamil/lohit_ta.ttf -filename.Lohit_Telugu=/usr/share/fonts/lohit-telugu/lohit_te.ttf filename.LKLUG=/usr/share/fonts/lklug/lklug.ttf --- openjdk/jdk/src/solaris/classes/sun/awt/fontconfigs/linux.fontconfig.Fedora.properties 2010-11-04 11:06:26.695428114 +0100 +++ openjdk/jdk/src/solaris/classes/sun/awt/fontconfigs/linux.fontconfig.Fedora.properties 2010-11-04 11:06:25.602455633 +0100 @@ -35,6 +35,8 @@ dialog.plain.korean=Baekmuk Gulim dialog.plain.chinese-big5=AR PL ShanHeiSun Uni dialog.plain.chinese-gb18030=AR PL ShanHeiSun Uni +dialog.plain.assamese=Lohit Assamese +dialog.plain.devanagari=Lohit Devanagari dialog.plain.bengali=Lohit Bengali dialog.plain.gujarati=Lohit Gujarati dialog.plain.hindi=Lohit Hindi @@ -50,6 +52,8 @@ dialog.bold.korean=Baekmuk Gulim dialog.bold.chinese-big5=AR PL ShanHeiSun Uni dialog.bold.chinese-gb18030=AR PL ShanHeiSun Uni +dialog.bold.assamese=Lohit Assamese +dialog.bold.devanagari=Lohit Devanagari dialog.bold.bengali=Lohit Bengali dialog.bold.gujarati=Lohit Gujarati dialog.bold.hindi=Lohit Hindi @@ -65,6 +69,8 @@ dialog.italic.korean=Baekmuk Gulim dialog.italic.chinese-big5=AR PL ShanHeiSun Uni dialog.italic.chinese-gb18030=AR PL ShanHeiSun Uni +dialog.italic.assamese=Lohit Assamese +dialog.italic.devanagari=Lohit Devanagari dialog.italic.bengali=Lohit Bengali dialog.italic.gujarati=Lohit Gujarati dialog.italic.hindi=Lohit Hindi @@ -80,6 +86,8 @@ dialog.bolditalic.korean=Baekmuk Gulim dialog.bolditalic.chinese-big5=AR PL ShanHeiSun Uni dialog.bolditalic.chinese-gb18030=AR PL ShanHeiSun Uni +dialog.bolditalic.assamese=Lohit Assamese +dialog.bolditalic.devanagari=Lohit Devanagari dialog.bolditalic.bengali=Lohit Bengali dialog.bolditalic.gujarati=Lohit Gujarati dialog.bolditalic.hindi=Lohit Hindi @@ -95,6 +103,8 @@ sansserif.plain.korean=Baekmuk Gulim sansserif.plain.chinese-big5=AR PL ShanHeiSun Uni sansserif.plain.chinese-gb18030=AR PL ShanHeiSun Uni +sansserif.plain.assamese=Lohit Assamese +sansserif.plain.devanagari=Lohit Devanagari sansserif.plain.bengali=Lohit Bengali sansserif.plain.gujarati=Lohit Gujarati sansserif.plain.hindi=Lohit Hindi @@ -110,6 +120,8 @@ sansserif.bold.korean=Baekmuk Gulim sansserif.bold.chinese-big5=AR PL ShanHeiSun Uni sansserif.bold.chinese-gb18030=AR PL ShanHeiSun Uni +sansserif.bold.assamese=Lohit Assamese +sansserif.bold.devanagari=Lohit Devanagari sansserif.bold.bengali=Lohit Bengali sansserif.bold.gujarati=Lohit Gujarati sansserif.bold.hindi=Lohit Hindi @@ -125,6 +137,8 @@ sansserif.italic.korean=Baekmuk Gulim sansserif.italic.chinese-big5=AR PL ShanHeiSun Uni sansserif.italic.chinese-gb18030=AR PL ShanHeiSun Uni +sansserif.italic.assamese=Lohit Assamese +sansserif.italic.devanagari=Lohit Devanagari sansserif.italic.bengali=Lohit Bengali sansserif.italic.gujarati=Lohit Gujarati sansserif.italic.hindi=Lohit Hindi @@ -140,6 +154,8 @@ sansserif.bolditalic.korean=Baekmuk Gulim sansserif.bolditalic.chinese-big5=AR PL ShanHeiSun Uni sansserif.bolditalic.chinese-gb18030=AR PL ShanHeiSun Uni +sansserif.bolditalic.assamese=Lohit Assamese +sansserif.bolditalic.devanagari=Lohit Devanagari sansserif.bolditalic.bengali=Lohit Bengali sansserif.bolditalic.gujarati=Lohit Gujarati sansserif.bolditalic.hindi=Lohit Hindi @@ -155,6 +171,8 @@ serif.plain.korean=Baekmuk Batang serif.plain.chinese-big5=AR PL ZenKai Uni serif.plain.chinese-gb18030=AR PL ZenKai Uni +serif.plain.assamese=Lohit Assamese +serif.plain.devanagari=Lohit Devanagari serif.plain.bengali=Lohit Bengali serif.plain.gujarati=Lohit Gujarati serif.plain.hindi=Lohit Hindi @@ -170,6 +188,8 @@ serif.bold.korean=Baekmuk Batang serif.bold.chinese-big5=AR PL ZenKai Uni serif.bold.chinese-gb18030=AR PL ZenKai Uni +serif.bold.assamese=Lohit Assamese +serif.bold.devanagari=Lohit Devanagari serif.bold.bengali=Lohit Bengali serif.bold.gujarati=Lohit Gujarati serif.bold.hindi=Lohit Hindi @@ -185,6 +205,8 @@ serif.italic.korean=Baekmuk Batang serif.italic.chinese-big5=AR PL ZenKai Uni serif.italic.chinese-gb18030=AR PL ZenKai Uni +serif.italic.assamese=Lohit Assamese +serif.italic.devanagari=Lohit Devanagari serif.italic.bengali=Lohit Bengali serif.italic.gujarati=Lohit Gujarati serif.italic.hindi=Lohit Hindi @@ -200,6 +222,8 @@ serif.bolditalic.korean=Baekmuk Batang serif.bolditalic.chinese-big5=AR PL ZenKai Uni serif.bolditalic.chinese-gb18030=AR PL ZenKai Uni +serif.bolditalic.assamese=Lohit Assamese +serif.bolditalic.devanagari=Lohit Devanagari serif.bolditalic.bengali=Lohit Bengali serif.bolditalic.gujarati=Lohit Gujarati serif.bolditalic.hindi=Lohit Hindi @@ -215,6 +239,8 @@ monospaced.plain.korean=Baekmuk Gulim monospaced.plain.chinese-big5=AR PL ShanHeiSun Uni monospaced.plain.chinese-gb18030=AR PL ShanHeiSun Uni +monospaced.plain.assamese=Lohit Assamese +monospaced.plain.devanagari=Lohit Devanagari monospaced.plain.bengali=Lohit Bengali monospaced.plain.gujarati=Lohit Gujarati monospaced.plain.hindi=Lohit Hindi @@ -230,6 +256,8 @@ monospaced.bold.korean=Baekmuk Gulim monospaced.bold.chinese-big5=AR PL ShanHeiSun Uni monospaced.bold.chinese-gb18030=AR PL ShanHeiSun Uni +monospaced.bold.assamese=Lohit Assamese +monospaced.bold.devanagari=Lohit Devanagari monospaced.bold.bengali=Lohit Bengali monospaced.bold.gujarati=Lohit Gujarati monospaced.bold.hindi=Lohit Hindi @@ -245,6 +273,8 @@ monospaced.italic.korean=Baekmuk Gulim monospaced.italic.chinese-big5=AR PL ShanHeiSun Uni monospaced.italic.chinese-gb18030=AR PL ShanHeiSun Uni +monospaced.italic.assamese=Lohit Assamese +monospaced.italic.devanagari=Lohit Devanagari monospaced.italic.bengali=Lohit Bengali monospaced.italic.gujarati=Lohit Gujarati monospaced.italic.hindi=Lohit Hindi @@ -260,6 +290,8 @@ monospaced.bolditalic.korean=Baekmuk Gulim monospaced.bolditalic.chinese-big5=AR PL ShanHeiSun Uni monospaced.bolditalic.chinese-gb18030=AR PL ShanHeiSun Uni +monospaced.bolditalic.assamese=Lohit Assamese +monospaced.bolditalic.devanagari=Lohit Devanagari monospaced.bolditalic.bengali=Lohit Bengali monospaced.bolditalic.gujarati=Lohit Gujarati monospaced.bolditalic.hindi=Lohit Hindi @@ -275,6 +307,8 @@ dialoginput.plain.korean=Baekmuk Gulim dialoginput.plain.chinese-big5=AR PL ShanHeiSun Uni dialoginput.plain.chinese-gb18030=AR PL ShanHeiSun Uni +dialoginput.plain.assamese=Lohit Assamese +dialoginput.plain.devanagari=Lohit Devanagari dialoginput.plain.bengali=Lohit Bengali dialoginput.plain.gujarati=Lohit Gujarati dialoginput.plain.hindi=Lohit Hindi @@ -290,6 +324,8 @@ dialoginput.bold.korean=Baekmuk Gulim dialoginput.bold.chinese-big5=AR PL ShanHeiSun Uni dialoginput.bold.chinese-gb18030=AR PL ShanHeiSun Uni +dialoginput.bold.assamese=Lohit Assamese +dialoginput.bold.devanagari=Lohit Devanagari dialoginput.bold.bengali=Lohit Bengali dialoginput.bold.gujarati=Lohit Gujarati dialoginput.bold.hindi=Lohit Hindi @@ -305,6 +341,8 @@ dialoginput.italic.korean=Baekmuk Gulim dialoginput.italic.chinese-big5=AR PL ShanHeiSun Uni dialoginput.italic.chinese-gb18030=AR PL ShanHeiSun Uni +dialoginput.italic.assamese=Lohit Assamese +dialoginput.italic.devanagari=Lohit Devanagari dialoginput.italic.bengali=Lohit Bengali dialoginput.italic.gujarati=Lohit Gujarati dialoginput.italic.hindi=Lohit Hindi @@ -320,6 +358,8 @@ dialoginput.bolditalic.korean=Baekmuk Gulim dialoginput.bolditalic.chinese-big5=AR PL ShanHeiSun Uni dialoginput.bolditalic.chinese-gb18030=AR PL ShanHeiSun Uni +dialoginput.bolditalic.assamese=Lohit Assamese +dialoginput.bolditalic.devanagari=Lohit Devanagari dialoginput.bolditalic.bengali=Lohit Bengali dialoginput.bolditalic.gujarati=Lohit Gujarati dialoginput.bolditalic.hindi=Lohit Hindi @@ -356,21 +396,24 @@ filename.DejaVu_Serif_Oblique=/usr/share/fonts/dejavu/DejaVuSerif-Oblique.ttf filename.DejaVu_Serif_Bold_Oblique=/usr/share/fonts/dejavu/DejaVuSerif-BoldOblique.ttf -filename.Sazanami_Gothic=/usr/share/fonts/sazanami-fonts-gothic/sazanami-gothic.ttf -filename.Sazanami_Mincho=/usr/share/fonts/sazanami-fonts-mincho/sazanami-mincho.ttf -filename.AR_PL_ShanHeiSun_Uni=/usr/share/fonts/cjkunifonts-uming/uming.ttc -filename.AR_PL_ZenKai_Uni=/usr/share/fonts/cjkunifonts-ukai/ukai.ttc -filename.Baekmuk_Gulim=/usr/share/fonts/baekmuk-ttf-gulim/gulim.ttf -filename.Baekmuk_Batang=/usr/share/fonts/baekmuk-ttf-batang/batang.ttf +filename.Sazanami_Gothic=/usr/share/fonts/sazanami/gothic/sazanami-gothic.ttf +filename.Sazanami_Mincho=/usr/share/fonts/sazanami/mincho/sazanami-mincho.ttf +filename.AR_PL_ShanHeiSun_Uni=/usr/share/fonts/cjkuni-uming/uming.ttc +filename.AR_PL_ZenKai_Uni=/usr/share/fonts/cjkuni-ukai/ukai.ttc +filename.Baekmuk_Gulim=/usr/share/fonts/baekmuk-ttf/gulim.ttf +filename.Baekmuk_Batang=/usr/share/fonts/baekmuk-ttf/batang.ttf + +filename.Lohit_Assamese=/usr/share/fonts/lohit-assamese/Lohit-Assamese.ttf +filename.Lohit_Devanagari=/usr/share/fonts/lohit-devanagari/Lohit-Devanagari.ttf +filename.Lohit_Bengali=/usr/share/fonts/lohit-bengali/Lohit-Bengali.ttf +filename.Lohit_Gujarati=/usr/share/fonts/lohit-gujarati/Lohit-Gujarati.ttf +filename.Lohit_Hindi=/usr/share/fonts/lohit-devanagari/Lohit-Devanagari.ttf +filename.Lohit_Kannda=/usr/share/fonts/lohit-kannada/Lohit-Kannada.ttf +filename.Lohit_Malayalam=/usr/share/fonts/lohit-malayalam/Lohit-Malayalam.ttf +filename.Lohit_Oriya=/usr/share/fonts/lohit-oriya/Lohit-Oriya.ttf +filename.Lohit_Punjabi=/usr/share/fonts/lohit-punjabi/Lohit-Punjabi.ttf +filename.Lohit_Tamil=/usr/share/fonts/lohit-tamil/Lohit-Tamil.ttf +filename.Lohit_Telugu=/usr/share/fonts/lohit-telugu/Lohit-Telugu.ttf -filename.Lohit_Bengali=/usr/share/fonts/lohit-bengali/lohit_bn.ttf -filename.Lohit_Gujarati=/usr/share/fonts/lohit-gujarati/lohit_gu.ttf -filename.Lohit_Hindi=/usr/share/fonts/lohit-hindi/lohit_hi.ttf -filename.Lohit_Kannda=/usr/share/fonts/lohit-kannada/lohit_kn.ttf -filename.Lohit_Malayalam=/usr/share/fonts/lohit-malayalam/lohit_ml.ttf -filename.Lohit_Oriya=/usr/share/fonts/lohit-oriya/lohit_or.ttf -filename.Lohit_Punjabi=/usr/share/fonts/lohit-punjabi/lohit_pa.ttf -filename.Lohit_Tamil=/usr/share/fonts/lohit-tamil/lohit_ta.ttf -filename.Lohit_Telugu=/usr/share/fonts/lohit-telugu/lohit_te.ttf filename.LKLUG=/usr/share/fonts/lklug/lklug.ttf On 11/02/2010 08:25 PM, Dr Andrew John Hughes wrote: > Why was this posted to jdk6-dev? rather than distro-pkg-dev? > > Where is there no explanation of what this is? > > On 17:11 Tue 02 Nov , Jiri Vanek wrote: >> *** fontconfig.Fedora.properties.src 2010-11-02 15:47:08.042037406 +0100 >> --- fontconfig.Fedora.properties.src 2010-11-02 15:42:43.000000000 +0100 >> *************** >> *** 356,367 **** >> >> filename.DejaVu_Serif_Oblique=/usr/share/fonts/dejavu/DejaVuSerif-Oblique.ttf >> >> filename.DejaVu_Serif_Bold_Oblique=/usr/share/fonts/dejavu/DejaVuSerif-BoldOblique.ttf >> >> ! >> filename.Sazanami_Gothic=/usr/share/fonts/sazanami-fonts-gothic/sazanami-gothic.ttf >> ! >> filename.Sazanami_Mincho=/usr/share/fonts/sazanami-fonts-mincho/sazanami-mincho.ttf >> ! filename.AR_PL_ShanHeiSun_Uni=/usr/share/fonts/cjkunifonts-uming/uming.ttc >> ! filename.AR_PL_ZenKai_Uni=/usr/share/fonts/cjkunifonts-ukai/ukai.ttc >> ! filename.Baekmuk_Gulim=/usr/share/fonts/baekmuk-ttf-gulim/gulim.ttf >> ! filename.Baekmuk_Batang=/usr/share/fonts/baekmuk-ttf-batang/batang.ttf >> >> filename.Lohit_Bengali=/usr/share/fonts/lohit-bengali/lohit_bn.ttf >> filename.Lohit_Gujarati=/usr/share/fonts/lohit-gujarati/lohit_gu.ttf >> --- 356,367 ---- >> >> filename.DejaVu_Serif_Oblique=/usr/share/fonts/dejavu/DejaVuSerif-Oblique.ttf >> >> filename.DejaVu_Serif_Bold_Oblique=/usr/share/fonts/dejavu/DejaVuSerif-BoldOblique.ttf >> >> ! >> filename.Sazanami_Gothic=/usr/share/fonts/sazanami/gothic/sazanami-gothic.ttf >> ! >> filename.Sazanami_Mincho=/usr/share/fonts/sazanami/mincho/sazanami-mincho.ttf >> ! filename.AR_PL_ShanHeiSun_Uni=/usr/share/fonts/cjkuni-uming/uming.ttc >> ! filename.AR_PL_ZenKai_Uni=/usr/share/fonts/cjkuni-ukai/ukai.ttc >> ! filename.Baekmuk_Gulim=/usr/share/fonts/baekmuk-ttf/gulim.ttf >> ! filename.Baekmuk_Batang=/usr/share/fonts/baekmuk-ttf/batang.ttf >> >> filename.Lohit_Bengali=/usr/share/fonts/lohit-bengali/lohit_bn.ttf >> filename.Lohit_Gujarati=/usr/share/fonts/lohit-gujarati/lohit_gu.ttf > From ptisnovs at redhat.com Thu Nov 4 10:09:31 2010 From: ptisnovs at redhat.com (Pavel Tisnovsky) Date: Thu, 04 Nov 2010 18:09:31 +0100 Subject: Reviewer needed: patch for regression test compiler/6857159/Test6857159.java Message-ID: <4CD2E8CB.80904@redhat.com> Hi all, can anybody review (very simple) patch for regression test compiler/6857159/Test6857159.java please? This test correction was already approved for OpenJDK7 and I pushed it to tl-gate two hours ago. But I'd like to include this correction to IcedTea6 HEAD too. Thank you in advance Pavel T. Here is diffstat for IcedTea6 HEAD: # HG changeset patch # User ptisnovs # Date 1288886704 -3600 # Node ID a31de5ddde0255827307549841dc51bc0268cb0c # Parent a4bd79afa729b29f963bf0805c002ddaf4b6ac5b Correction of regression test Test6857159. diff -r a4bd79afa729 -r a31de5ddde02 ChangeLog --- a/ChangeLog Wed Nov 03 18:26:48 2010 +0000 +++ b/ChangeLog Thu Nov 04 17:05:04 2010 +0100 @@ -1,3 +1,10 @@ +2010-11-04 Pavel Tisnovsky + + * Makefile.am: + * patches/openjdk/6997495-test_correction_6857159.patch: + Testcase correction, now the regression test Test6857159 should not + timeout on most machines. + 2010-11-03 Dan Hor?k * patches/hotspot/hs19/params-cast-size_t.patch: diff -r a4bd79afa729 -r a31de5ddde02 Makefile.am --- a/Makefile.am Wed Nov 03 18:26:48 2010 +0000 +++ b/Makefile.am Thu Nov 04 17:05:04 2010 +0100 @@ -293,7 +293,8 @@ patches/openjdk/6985992-test_6933784.patch \ patches/openjdk/6853592-badwindow-warning-fix.patch \ patches/6703377-freetypescaler.patch \ - patches/icedtea-jtreg-international-fonts.patch + patches/icedtea-jtreg-international-fonts.patch \ + patches/openjdk/6997495-test_correction_6857159.patch if WITH_ALT_HSBUILD ICEDTEA_PATCHES += \ diff -r a4bd79afa729 -r a31de5ddde02 patches/openjdk/6997495-test_correction_6857159.patch --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/patches/openjdk/6997495-test_correction_6857159.patch Thu Nov 04 17:05:04 2010 +0100 @@ -0,0 +1,21 @@ +# HG changeset patch +# User ptisnovs +# Date 1288875792 -3600 +# Node ID 086898a88056cd9f7de4475b7ebf4cc6c65f2b5e +# Parent 68d6141ea19de3a9ba98ef753f0da41a61f736a0 +6997495: correction of regression test compiler/6857159/Test6857159 +Summary: Testcase correction. +Reviewed-by: never + +diff -r 68d6141ea19d -r 086898a88056 test/compiler/6857159/Test6857159.java +--- openjdk.old/hotspot/test/compiler/6857159/Test6857159.java 2010-10-08 22:29:24.000000000 +0200 ++++ openjdk/hotspot/test/compiler/6857159/Test6857159.java 2010-11-04 15:27:47.000000000 +0100 +@@ -54,7 +54,7 @@ + } + + public static void main(String[] args) throws Exception { +- for (int i = 0; i < 100000; i++) { ++ for (int i = 0; i < 20000; i++) { + Thread t = null; + switch (i % 3) { + case 0: t = new ct0(); break; From dbhole at redhat.com Thu Nov 4 11:14:16 2010 From: dbhole at redhat.com (Deepak Bhole) Date: Thu, 4 Nov 2010 14:14:16 -0400 Subject: [icedtea-web] RFC: Patch to double-buffer applets In-Reply-To: <4CD16468.1000306@redhat.com> References: <20101102213155.GA9563@redhat.com> <20101102213756.GB9563@redhat.com> <4CD16468.1000306@redhat.com> Message-ID: <20101104181416.GA2897@redhat.com> * Omair Majid [2010-11-03 09:32]: > Hi Deepak, > > On 11/02/2010 05:37 PM, Deepak Bhole wrote: > >* Deepak Bhole [2010-11-02 17:31]: > >>Hi, > >> > >>IcedTea plugin currently does not double-buffer the applet panel. As a > >>result, some applets may flicker depending on the machine. > >> > >>Attached patch buffers the frame offscreen and then draws it, thereby > >>addressing the issue. > >> > > Is there a specific test case that this fixes? The only flickering > applet that I know of is at > http://download.oracle.com/javase/1.4.2/docs/guide/misc/applet.html, > and I dont see any change in that applet with the patch applied. > > >>ChangeLog: > >>2010-11-02 Deepak Bhole > >> > >> * plugin/icedteanp/java/sun/applet/PluginAppletViewer.java (update): > >> Override method and implement double-buffering. > >> > >>Cheers, > >>Deepak > > > > > >Doh! There shouldn't be a println in there. New patch attached. I also > >fixed the variable names for the image and its graphics. > > > > > >>diff -r 6c2527d42900 ChangeLog > >>--- a/ChangeLog Mon Nov 01 11:44:15 2010 -0400 > >>+++ b/ChangeLog Tue Nov 02 17:29:03 2010 -0700 > >>@@ -1,3 +1,8 @@ > >>+2010-11-02 Deepak Bhole > >>+ > >>+ * plugin/icedteanp/java/sun/applet/PluginAppletViewer.java (update): > >>+ Override method and implement double-buffering. > >>+ > >> 2010-11-01 Omair Majid > >> > >> * Makefile.am (clean-IcedTeaPlugin): Only delete launcher directory if it > >>diff -r 6c2527d42900 NEWS > >>--- a/NEWS Mon Nov 01 11:44:15 2010 -0400 > >>+++ b/NEWS Tue Nov 02 17:29:03 2010 -0700 > >>@@ -12,3 +12,4 @@ > >> > >> * Initial release of IcedTea-Web > >> * PR542: Plugin fails with NPE on http://www.openprocessing.org/visuals/iframe.php?visualID=2615 > >>+* Applets are now double-buffered to eliminate flicker in ones that do heavy drawing > >>diff -r 6c2527d42900 plugin/icedteanp/java/sun/applet/PluginAppletViewer.java > >>--- a/plugin/icedteanp/java/sun/applet/PluginAppletViewer.java Mon Nov 01 11:44:15 2010 -0400 > >>+++ b/plugin/icedteanp/java/sun/applet/PluginAppletViewer.java Tue Nov 02 17:29:03 2010 -0700 > >>@@ -359,6 +366,9 @@ > >> > >> private static Long requestIdentityCounter = 0L; > >> > >>+ private Image bufferedPanelImage; > >>+ private Graphics bufferedImageGraphics; > >>+ > >> /** > >> * Null constructor to allow instantiation via newInstance() > >> */ > >>@@ -2163,4 +2178,24 @@ > >> } > >> } > >> } > >>+ > >>+ /** > >>+ * {@inheritDoc} > >>+ */ > >>+ public void update(Graphics g) { > >>+ > >>+ System.err.println("Buffering and drawing"); > >>+ > >>+ // If the image or the graphics don't exist, create new ones > >>+ if (bufferedPanelImage == null || bufferedImageGraphics == null) { > >>+ bufferedPanelImage = createImage(getWidth(), getHeight()); > >>+ bufferedImageGraphics = bufferedPanelImage.getGraphics (); > >>+ } > >>+ > >>+ // Paint off-screen > >>+ paint(bufferedImageGraphics); > > The overridden method is update, but paint is called here instead. > Is there a reason for that? As far as I know, the semantics of > update() are slightly different from paint() - update() clears the > background and then calls paint(). Perhaps super.update() might be > more appropriate? > super.update() would just call paint on the Graphics instance passed to it. Container's (super in this case) update() methods do a couple of additional checks, but we don't need them for applets, which are known lightweight containers. I can definitely add the call if you feel it would be cleaner though -- just that it doesn't make a difference in this case. Cheers, Deepak > >>+ > >>+ // Draw the painted image > >>+ g.drawImage(bufferedPanelImage, 0, 0, this); > >>+ } > >> } > > > > Thanks, > Omair From ahughes at redhat.com Thu Nov 4 11:34:18 2010 From: ahughes at redhat.com (Dr Andrew John Hughes) Date: Thu, 4 Nov 2010 18:34:18 +0000 Subject: Reviewer needed: patch for regression test compiler/6857159/Test6857159.java In-Reply-To: <4CD2E8CB.80904@redhat.com> References: <4CD2E8CB.80904@redhat.com> Message-ID: <20101104183418.GD29957@rivendell.middle-earth.co.uk> On 18:09 Thu 04 Nov , Pavel Tisnovsky wrote: > Hi all, > > can anybody review (very simple) patch for regression test compiler/6857159/Test6857159.java please? > > This test correction was already approved for OpenJDK7 and I pushed it to > tl-gate two hours ago. But I'd like to include this correction to IcedTea6 HEAD too. > Approved. > Thank you in advance > Pavel T. > > > Here is diffstat for IcedTea6 HEAD: > > # HG changeset patch > # User ptisnovs > # Date 1288886704 -3600 > # Node ID a31de5ddde0255827307549841dc51bc0268cb0c > # Parent a4bd79afa729b29f963bf0805c002ddaf4b6ac5b > Correction of regression test Test6857159. > > diff -r a4bd79afa729 -r a31de5ddde02 ChangeLog > --- a/ChangeLog Wed Nov 03 18:26:48 2010 +0000 > +++ b/ChangeLog Thu Nov 04 17:05:04 2010 +0100 > @@ -1,3 +1,10 @@ > +2010-11-04 Pavel Tisnovsky > + > + * Makefile.am: > + * patches/openjdk/6997495-test_correction_6857159.patch: > + Testcase correction, now the regression test Test6857159 should not > + timeout on most machines. > + > 2010-11-03 Dan Hor?k > > * patches/hotspot/hs19/params-cast-size_t.patch: > diff -r a4bd79afa729 -r a31de5ddde02 Makefile.am > --- a/Makefile.am Wed Nov 03 18:26:48 2010 +0000 > +++ b/Makefile.am Thu Nov 04 17:05:04 2010 +0100 > @@ -293,7 +293,8 @@ > patches/openjdk/6985992-test_6933784.patch \ > patches/openjdk/6853592-badwindow-warning-fix.patch \ > patches/6703377-freetypescaler.patch \ > - patches/icedtea-jtreg-international-fonts.patch > + patches/icedtea-jtreg-international-fonts.patch \ > + patches/openjdk/6997495-test_correction_6857159.patch > > if WITH_ALT_HSBUILD > ICEDTEA_PATCHES += \ > diff -r a4bd79afa729 -r a31de5ddde02 patches/openjdk/6997495-test_correction_6857159.patch > --- /dev/null Thu Jan 01 00:00:00 1970 +0000 > +++ b/patches/openjdk/6997495-test_correction_6857159.patch Thu Nov 04 17:05:04 2010 +0100 > @@ -0,0 +1,21 @@ > +# HG changeset patch > +# User ptisnovs > +# Date 1288875792 -3600 > +# Node ID 086898a88056cd9f7de4475b7ebf4cc6c65f2b5e > +# Parent 68d6141ea19de3a9ba98ef753f0da41a61f736a0 > +6997495: correction of regression test compiler/6857159/Test6857159 > +Summary: Testcase correction. > +Reviewed-by: never > + > +diff -r 68d6141ea19d -r 086898a88056 test/compiler/6857159/Test6857159.java > +--- openjdk.old/hotspot/test/compiler/6857159/Test6857159.java 2010-10-08 22:29:24.000000000 +0200 > ++++ openjdk/hotspot/test/compiler/6857159/Test6857159.java 2010-11-04 15:27:47.000000000 +0100 > +@@ -54,7 +54,7 @@ > + } > + > + public static void main(String[] args) throws Exception { > +- for (int i = 0; i < 100000; i++) { > ++ for (int i = 0; i < 20000; i++) { > + Thread t = null; > + switch (i % 3) { > + case 0: t = new ct0(); break; -- Andrew :) Free Java Software Engineer Red Hat, Inc. (http://www.redhat.com) Support Free Java! Contribute to GNU Classpath and the OpenJDK http://www.gnu.org/software/classpath http://openjdk.java.net PGP Key: 94EFD9D8 (http://subkeys.pgp.net) Fingerprint = F8EF F1EA 401E 2E60 15FA 7927 142C 2591 94EF D9D8 From omajid at redhat.com Thu Nov 4 12:30:14 2010 From: omajid at redhat.com (Omair Majid) Date: Thu, 04 Nov 2010 15:30:14 -0400 Subject: [icedtea-web] RFC: Patch to double-buffer applets In-Reply-To: <20101104181416.GA2897@redhat.com> References: <20101102213155.GA9563@redhat.com> <20101102213756.GB9563@redhat.com> <4CD16468.1000306@redhat.com> <20101104181416.GA2897@redhat.com> Message-ID: <4CD309C6.1010003@redhat.com> On 11/04/2010 02:14 PM, Deepak Bhole wrote: > * Omair Majid [2010-11-03 09:32]: >> Hi Deepak, >> >> On 11/02/2010 05:37 PM, Deepak Bhole wrote: >>> * Deepak Bhole [2010-11-02 17:31]: >>>> Hi, >>>> >>>> IcedTea plugin currently does not double-buffer the applet panel. As a >>>> result, some applets may flicker depending on the machine. >>>> >>>> Attached patch buffers the frame offscreen and then draws it, thereby >>>> addressing the issue. >>>> >> >> Is there a specific test case that this fixes? The only flickering >> applet that I know of is at >> http://download.oracle.com/javase/1.4.2/docs/guide/misc/applet.html, >> and I dont see any change in that applet with the patch applied. >> >>>> ChangeLog: >>>> 2010-11-02 Deepak Bhole >>>> >>>> * plugin/icedteanp/java/sun/applet/PluginAppletViewer.java (update): >>>> Override method and implement double-buffering. >>>> >>>> Cheers, >>>> Deepak >>> >>> >>> Doh! There shouldn't be a println in there. New patch attached. I also >>> fixed the variable names for the image and its graphics. >>> >>> >>>> diff -r 6c2527d42900 ChangeLog >>>> --- a/ChangeLog Mon Nov 01 11:44:15 2010 -0400 >>>> +++ b/ChangeLog Tue Nov 02 17:29:03 2010 -0700 >>>> @@ -1,3 +1,8 @@ >>>> +2010-11-02 Deepak Bhole >>>> + >>>> + * plugin/icedteanp/java/sun/applet/PluginAppletViewer.java (update): >>>> + Override method and implement double-buffering. >>>> + >>>> 2010-11-01 Omair Majid >>>> >>>> * Makefile.am (clean-IcedTeaPlugin): Only delete launcher directory if it >>>> diff -r 6c2527d42900 NEWS >>>> --- a/NEWS Mon Nov 01 11:44:15 2010 -0400 >>>> +++ b/NEWS Tue Nov 02 17:29:03 2010 -0700 >>>> @@ -12,3 +12,4 @@ >>>> >>>> * Initial release of IcedTea-Web >>>> * PR542: Plugin fails with NPE on http://www.openprocessing.org/visuals/iframe.php?visualID=2615 >>>> +* Applets are now double-buffered to eliminate flicker in ones that do heavy drawing >>>> diff -r 6c2527d42900 plugin/icedteanp/java/sun/applet/PluginAppletViewer.java >>>> --- a/plugin/icedteanp/java/sun/applet/PluginAppletViewer.java Mon Nov 01 11:44:15 2010 -0400 >>>> +++ b/plugin/icedteanp/java/sun/applet/PluginAppletViewer.java Tue Nov 02 17:29:03 2010 -0700 >>>> @@ -359,6 +366,9 @@ >>>> >>>> private static Long requestIdentityCounter = 0L; >>>> >>>> + private Image bufferedPanelImage; >>>> + private Graphics bufferedImageGraphics; >>>> + >>>> /** >>>> * Null constructor to allow instantiation via newInstance() >>>> */ >>>> @@ -2163,4 +2178,24 @@ >>>> } >>>> } >>>> } >>>> + >>>> + /** >>>> + * {@inheritDoc} >>>> + */ >>>> + public void update(Graphics g) { >>>> + >>>> + System.err.println("Buffering and drawing"); >>>> + >>>> + // If the image or the graphics don't exist, create new ones >>>> + if (bufferedPanelImage == null || bufferedImageGraphics == null) { >>>> + bufferedPanelImage = createImage(getWidth(), getHeight()); >>>> + bufferedImageGraphics = bufferedPanelImage.getGraphics (); >>>> + } >>>> + >>>> + // Paint off-screen >>>> + paint(bufferedImageGraphics); >> >> The overridden method is update, but paint is called here instead. >> Is there a reason for that? As far as I know, the semantics of >> update() are slightly different from paint() - update() clears the >> background and then calls paint(). Perhaps super.update() might be >> more appropriate? >> > > super.update() would just call paint on the Graphics instance passed to > it. Container's (super in this case) update() methods do a couple of > additional checks, but we don't need them for applets, which are known > lightweight containers. > > I can definitely add the call if you feel it would be cleaner though -- > just that it doesn't make a difference in this case. > Thanks for the explanation. Its makes more sense now. Please go ahead and commit the patch you posted. If you could add this explanation as a comment to the patch too, that would be great. Cheers, Omair From omajid at redhat.com Thu Nov 4 13:15:12 2010 From: omajid at redhat.com (Omair Majid) Date: Thu, 04 Nov 2010 16:15:12 -0400 Subject: [icedtea-web] RFC: integrate multiple KeyStore support into CertificateViewer Message-ID: <4CD31450.7060606@redhat.com> Hi, The attached patch starts integrating some of the security certificate configuration into Netx. It adds a new class KeyStores that is used to access the different types of KeyStore that Netx supports - per user and per system variants of trusted CA KeyStore, trusted certificate store, JSSE CA store, and JSSE certificates store. It also fixes up the certificate viewer (javaws -viewer) to use these multiple certificate stores. ChangeLog 2010-11-04 Omair Majid * netx/net/sourceforge/jnlp/runtime/DeploymentConfiguration.java: Add KEY_USER_TRUSTED_CA_CERTS, KEY_USER_TRUSTED_JSSE_CA_CERTS, KEY_USER_TRUSTED_CERTS, KEY_USER_TRUSTED_JSSE_CERTS, KEY_USER_TRUSTED_CLIENT_CERTS, KEY_SYSTEM_TRUSTED_CA_CERTS, KEY_SYSTEM_TRUSTED_JSSE_CA_CERTS, KEY_SYSTEM_TRUSTED_CERTS, KEY_SYSTEM_TRUSTED_JSSE_CERTS, KEY_SYSTEM_TRUSTED_CLIENT_CERTS (loadDefaultProperties): Use the defined constants. * netx/net/sourceforge/jnlp/security/KeyStores.java: New class. (getPassword): New method. Return the default password used for KeyStores. (getKeyStore(Level,Type)): New method. Returns the appropriate KeyStore. (getKeyStore(Level,Type,String)): Likewise. (getCertKeyStores): New method. Return all the trusted certificate KeyStores. (getCAKeyStores): New method. Return all the trusted CA certificate KeyStores. (getKeyStoreLocation): New method. Return the location of the appropriate KeyStore. (toTranslatableString): New method. Return a string that can be used to create a human-readable name for the KeyStore. (toDisplayableString): New method. Return a human-readable name for the KeyStore. (createKeyStoreFromFile): New method. Creates a new KeyStore object, initializing it from the given file if possible. * netx/net/sourceforge/jnlp/security/viewer/CertificatePane.java (CertificatePane): Create two JTables. Populate the tables when done creating the user interface. (initializeKeyStore): Use the correct keystore. (addComponents): Do not read KeyStore. Create more interface elements to show the new possible KeyStores. Mark some buttons to be disabled when needed. (repopulateTable): Renamed to... (repopulateTables): New method. Read KeyStore and use the contents to create the user and system tables. (CertificateType): New class. (CertificateTypeListener): New class. Listens to JComboBox change events. (TabChangeListener): New class. Listens to new tab selections. (ImportButtonListener): Import certificates to the appropriate KeyStore. (ExportButtonListener): Find the certificate from the right table. (RemoveButtonListener): Find the certificate from the right table and right the KeyStore. (DetailsButtonListener): Find the certificate from the right table. * netx/net/sourceforge/jnlp/security/viewer/CertificateViewer.java (showCertficaiteViewer): Initialize the JNLPRuntime so the configuration gets loaded. * netx/net/sourceforge/jnlp/tools/KeyTool.java (addToKeyStore(File,KeyStore)): New method. Adds certificate from the file to the KeyStore. (addToKeyStore(X509Certificate,KeyStore)): New method. Adds a certificate to a KeyStore. Any thoughts or comments? Thanks, Omair -------------- next part -------------- A non-text attachment was scrubbed... Name: icedtea-web-integrate-configuration-security-files-05.patch Type: text/x-patch Size: 33462 bytes Desc: not available Url : http://mail.openjdk.java.net/pipermail/distro-pkg-dev/attachments/20101104/0585c267/icedtea-web-integrate-configuration-security-files-05.patch From dbhole at redhat.com Thu Nov 4 13:30:32 2010 From: dbhole at redhat.com (Deepak Bhole) Date: Thu, 4 Nov 2010 16:30:32 -0400 Subject: [icedtea-web] RFC: Patch to remove plugin re-framing Message-ID: <20101104203032.GB2897@redhat.com> Hi, Attached patch changes the plugin so that the panel is Framed only once. This patch permanently resolves the frame pop-out issue. The reFrame method has been updated and renamed to framePanel. framePanel is called only once during initialization now, and there is no more frame swapping. This also resolves the issue whereby keyboard events were being discarded. ChangeLog: 2010-11-04 Deepak Bhole * plugin/icedteanp/java/sun/applet/PluginAppletViewer.java (createPanel): Call the new framePanel() method with the proper handle. (framePanel): New method, renamed from reFrame. Changed to now do one-time framing of panel into the plugin. (handleMessage): Don't re-frame the panel. Panel is now framed only once. (destroyApplet): Dispose the frame right away, and try to remove the panel if possible. If not, handleMessage() will do it when the panel is ready/removable. Comments? Deepak -------------- next part -------------- diff -r 6c2527d42900 plugin/icedteanp/java/sun/applet/PluginAppletViewer.java --- a/plugin/icedteanp/java/sun/applet/PluginAppletViewer.java Mon Nov 01 11:44:15 2010 -0400 +++ b/plugin/icedteanp/java/sun/applet/PluginAppletViewer.java Thu Nov 04 16:23:48 2010 -0700 @@ -138,7 +138,7 @@ }); // create the frame. - PluginAppletViewer.reFrame(null, identifier, System.out, 0, panel); + PluginAppletViewer.framePanel(identifier, System.out, handle, panel); panel.init(); @@ -365,42 +365,25 @@ public PluginAppletViewer() { } - public static void reFrame(PluginAppletViewer oldFrame, - int identifier, PrintStream statusMsgStream, - long handle, AppletViewerPanel panel) { + public static void framePanel(int identifier, PrintStream statusMsgStream, + long handle, AppletViewerPanel panel) { - PluginDebug.debug("Reframing " + panel); + PluginDebug.debug("Framing " + panel); // SecurityManager MUST be set, and only privileged code may call reFrame() System.getSecurityManager().checkPermission(new AllPermission()); - // Same handle => nothing to do - if (oldFrame != null && handle == oldFrame.handle) - return; + PluginAppletViewer appletFrame = new PluginAppletViewer(handle, identifier, statusMsgStream, panel); + + appletFrame.add("Center", panel); + appletFrame.pack(); - PluginAppletViewer newFrame = new PluginAppletViewer(handle, identifier, statusMsgStream, panel); - - if (oldFrame != null) { - applets.remove(oldFrame.identifier); - oldFrame.removeWindowListener(oldFrame.windowEventListener); - panel.removeAppletListener(oldFrame.appletEventListener); + appletFrame.appletEventListener = new AppletEventListener(appletFrame, appletFrame); + panel.addAppletListener(appletFrame.appletEventListener); - // Add first, remove later - newFrame.add("Center", panel); - oldFrame.remove(panel); - oldFrame.dispose(); - } else { - newFrame.add("Center", panel); - } + applets.put(identifier, appletFrame); - newFrame.pack(); - - newFrame.appletEventListener = new AppletEventListener(newFrame, newFrame); - panel.addAppletListener(newFrame.appletEventListener); - - applets.put(identifier, newFrame); - - PluginDebug.debug(panel + " reframed"); + PluginDebug.debug(panel + " framed"); } /** @@ -578,20 +561,11 @@ waitForAppletInit((NetxPanel) applets.get(identifier).panel); // Should we proceed with reframing? - if (status.get(identifier).equals(PAV_INIT_STATUS.INACTIVE)) { + if (updateStatus(identifier, PAV_INIT_STATUS.REFRAME_COMPLETE).equals(PAV_INIT_STATUS.INACTIVE)) { destroyApplet(identifier); return; } - // Proceed with re-framing - reFrame(oldFrame, identifier, System.out, handle, oldFrame.panel); - - // There is a slight chance that destroy can happen - // between the above and below line - if (updateStatus(identifier, PAV_INIT_STATUS.REFRAME_COMPLETE).equals(PAV_INIT_STATUS.INACTIVE)) { - destroyApplet(identifier); - } - } else if (message.startsWith("destroy")) { // Set it inactive, and try to do cleanup is applicable @@ -688,16 +662,19 @@ return; } - // If already disposed, return - if (applets.get(identifier).panel.applet == null) { - // Try to still dispose the panel itself -- no harm done with double dispose + PluginDebug.debug("Attempting to destroy frame " + identifier); + + // Try to dispose the panel right away + if (applets.containsKey(identifier)) applets.get(identifier).dispose(); - PluginDebug.debug(identifier + " inactive. Returning."); + // If panel is already disposed, return + if (applets.get(identifier).panel.applet == null) { + PluginDebug.debug(identifier + " panel inactive. Returning."); return; } - PluginDebug.debug("Attempting to destroy " + identifier); + PluginDebug.debug("Attempting to destroy panel " + identifier); final int fIdentifier = identifier; SwingUtilities.invokeLater(new Runnable() { @@ -1671,7 +1648,7 @@ public void run() { ThreadGroup tg = ((JNLPClassLoader) p.applet.getClass().getClassLoader()).getApplication().getThreadGroup(); - + appletShutdown(p); appletPanels.removeElement(p); dispose(); From dbhole at redhat.com Thu Nov 4 13:32:49 2010 From: dbhole at redhat.com (Deepak Bhole) Date: Thu, 4 Nov 2010 16:32:49 -0400 Subject: /hg/icedtea-web: Stabilize plugin initialization In-Reply-To: <4CD1934B.3080903@redhat.com> References: <4CD18E86.4090602@redhat.com> <20101103164624.GD15122@redhat.com> <4CD1934B.3080903@redhat.com> Message-ID: <20101104203249.GC2897@redhat.com> * Omair Majid [2010-11-03 12:52]: > On 11/03/2010 12:46 PM, Deepak Bhole wrote: > >* Omair Majid [2010-11-03 12:32]: > >>Hi, > >> > >>On 10/26/2010 05:50 PM, dbhole at icedtea.classpath.org wrote: > >>>changeset d4a914a000e3 in /hg/icedtea-web > >>>details: http://icedtea.classpath.org/hg/icedtea-web?cmd=changeset;node=d4a914a000e3 > >>>author: Deepak Bhole > >>>date: Tue Oct 26 17:49:57 2010 -0700 > >>> > >>> Stabilize plugin initialization > >>> - Fixed frame pop-up issue when tab is closed early > >>> - Fixed 100% CPU load when too many applets load in parallel > >>> - Fixed message queue processing to prioritize destroy first > >>> > >> > >>It appears that this commit broke nettbank: > >>https://www.portalbank.no/1100/. With this changeset, I can no > >>longer type in the text field :( > >> > > > >Hmm, did you bisect? The change is unrelated to keyboard input -- it > >only re-organizes the sequence of initialization events. Once the applet > >is running, it should be the same as before. > > > > Yup, I used hg bisect. Then I manually confirmed. I was quite > surprised too as I dont see how it could change the applet's > behaviour after it starts. Infact, my first suspect was my own > AppContext patch. So please confirm this yourself. On the other > hand, I recall that there was this typing backwards bug once in > firefox which the plugin could trigger - maybe this is something > similar? I just wanted to point out the regression to make sure we > didnt get surprises close to release time. > Weird. Turns out re-framing was causing keyboard events to be lost. I am not sure why. I have posted a patch so that the plugin does not change frames now. This was necessary to resolve the frame pop-out issue permanently anyway.. so two birds with one stone. Cheers, Deepak > Thanks, > Omair > > >>> > >>>diffstat: > >>> > >>>3 files changed, 264 insertions(+), 98 deletions(-) > >>>ChangeLog | 25 > >>>plugin/icedteanp/java/sun/applet/PluginAppletViewer.java | 300 +++++++---- > >>>plugin/icedteanp/java/sun/applet/PluginMessageConsumer.java | 37 + > >>> > >>>diffs (truncated from 635 to 500 lines): > >>> > >>>diff -r dfd749c077c3 -r d4a914a000e3 ChangeLog > >>>--- a/ChangeLog Tue Oct 26 12:01:22 2010 -0400 > >>>+++ b/ChangeLog Tue Oct 26 17:49:57 2010 -0700 > >>>@@ -1,3 +1,28 @@ 2010-10-26 Andrew Su > >>>+2010-10-26 Deepak Bhole > >>>+ > >>>+ * plugin/icedteanp/java/sun/applet/PluginAppletViewer.java: > >>>+ Replace all status.put calls with calls to updateStatus(). > >>>+ (createPanel): Create a frame with a 0 handle. Use the new > >>>+ waitForAppletInit function to wait until applet is ready. > >>>+ (reFrame): Re-order code so that the panel is never parentless. > >>>+ (handleMessage): Re-wrote message processing to handle destroy calls > >>>+ correctly, checking for them more often to prevent a frame from popping up > >>>+ if the tab/page is closed before loading finishes. Decode special > >>>+ characters in the message. > >>>+ (updateStatus): New function. Updates the status for the given instance if > >>>+ applicable. > >>>+ (destroyApplet): New function. Destroys a given applet and frees related > >>>+ resources. > >>>+ (waitForAppletInit): New function. Blocks until applet is initialized. > >>>+ (parse): Remove part that decoded the params. Decoding is now done earlier > >>>+ in handleMessage(). > >>>+ * plugin/icedteanp/java/sun/applet/PluginMessageConsumer.java: > >>>+ (getPriorityStrIfPriority): Mark destroy messages as priority. > >>>+ (bringPriorityMessagesToFront): Scans the queue for priority messages and > >>>+ brings them to the front. > >>>+ (run): If the queue is not empty and there are no workers left, run > >>>+ bringPriorityMessagesToFront() and retry. > >>>+ > >>> 2010-10-26 Andrew Su > >>> > >>> * Makefile.am: Split rm -rf into rm -f and rmdir for launcher > >>>diff -r dfd749c077c3 -r d4a914a000e3 plugin/icedteanp/java/sun/applet/PluginAppletViewer.java > >>>--- a/plugin/icedteanp/java/sun/applet/PluginAppletViewer.java Tue Oct 26 12:01:22 2010 -0400 > >>>+++ b/plugin/icedteanp/java/sun/applet/PluginAppletViewer.java Tue Oct 26 17:49:57 2010 -0700 > >>>@@ -136,12 +136,10 @@ import com.sun.jndi.toolkit.url.UrlUtil; > >>> } > >>> } > >>> }); > >>>+ > >>>+ // create the frame. > >>>+ PluginAppletViewer.reFrame(null, identifier, System.out, 0, panel); > >>> > >>>- > >>>- > >>>- // create the frame. > >>>- PluginAppletViewer.reFrame(null, identifier, System.out, handle, panel); > >>>- > >>> panel.init(); > >>> > >>> // Start the applet > >>>@@ -179,15 +177,7 @@ import com.sun.jndi.toolkit.url.UrlUtil; > >>> > >>> // Wait for the panel to initialize > >>> // (happens in a separate thread) > >>>- while (panel.getApplet() == null&& > >>>- ((NetxPanel) panel).isAlive()) { > >>>- try { > >>>- Thread.sleep(50); > >>>- PluginDebug.debug("Waiting for applet to initialize..."); > >>>- } catch (InterruptedException ie) { > >>>- // just wait > >>>- } > >>>- } > >>>+ PluginAppletViewer.waitForAppletInit((NetxPanel) panel); > >>> > >>> a = panel.getApplet(); > >>> > >>>@@ -317,7 +307,17 @@ import com.sun.jndi.toolkit.url.UrlUtil; > >>> */ > >>> private static String defaultSaveFile = "Applet.ser"; > >>> > >>>- private static enum PAV_INIT_STATUS {PRE_INIT, IN_INIT, INIT_COMPLETE, INACTIVE}; > >>>+ > >>>+ /** > >>>+ * Enumerates the current status of an applet > >>>+ * > >>>+ * PRE_INIT -> Parsing and initialization phase > >>>+ * INIT_COMPLETE -> Initialization complete, reframe pending > >>>+ * REFRAME_COMPLETE -> Reframe complete, applet is initialized and usable by the user > >>>+ * INACTIVE -> Browser has directed that the applet be destroyed (this state is non-overridable except by DESTROYED) > >>>+ * DESTROYED -> Applet has been destroyed > >>>+ */ > >>>+ private static enum PAV_INIT_STATUS {PRE_INIT, INIT_COMPLETE, REFRAME_COMPLETE, INACTIVE, DESTROYED}; > >>> > >>> /** > >>> * The panel in which the applet is being displayed. > >>>@@ -350,7 +350,6 @@ import com.sun.jndi.toolkit.url.UrlUtil; > >>> > >>> private static HashMap status = > >>> new HashMap(); > >>>- > >>> > >>> private long handle = 0; > >>> private WindowListener windowEventListener = null; > >>>@@ -380,16 +379,20 @@ import com.sun.jndi.toolkit.url.UrlUtil; > >>> return; > >>> > >>> PluginAppletViewer newFrame = new PluginAppletViewer(handle, identifier, statusMsgStream, panel); > >>>- > >>>+ > >>> if (oldFrame != null) { > >>> applets.remove(oldFrame.identifier); > >>> oldFrame.removeWindowListener(oldFrame.windowEventListener); > >>> panel.removeAppletListener(oldFrame.appletEventListener); > >>>+ > >>>+ // Add first, remove later > >>>+ newFrame.add("Center", panel); > >>> oldFrame.remove(panel); > >>> oldFrame.dispose(); > >>>+ } else { > >>>+ newFrame.add("Center", panel); > >>> } > >>> > >>>- newFrame.add("Center", panel); > >>> newFrame.pack(); > >>> > >>> newFrame.appletEventListener = new AppletEventListener(newFrame, newFrame); > >>>@@ -397,11 +400,6 @@ import com.sun.jndi.toolkit.url.UrlUtil; > >>> > >>> applets.put(identifier, newFrame); > >>> > >>>- // dispose oldframe if necessary > >>>- if (oldFrame != null) { > >>>- oldFrame.dispose(); > >>>- } > >>>- > >>> PluginDebug.debug(panel + " reframed"); > >>> } > >>> > >>>@@ -449,7 +447,7 @@ import com.sun.jndi.toolkit.url.UrlUtil; > >>> this.frame = frame; > >>> this.appletViewer = appletViewer; > >>> } > >>>- > >>>+ > >>> public void appletStateChanged(AppletEvent evt) > >>> { > >>> AppletPanel src = (AppletPanel)evt.getSource(); > >>>@@ -483,9 +481,9 @@ import com.sun.jndi.toolkit.url.UrlUtil; > >>> AppletPanel.changeFrameAppContext(frame, SunToolkit.targetToAppContext(a)); > >>> else > >>> AppletPanel.changeFrameAppContext(frame, AppContext.getAppContext()); > >>>- > >>>- status.put(appletViewer.identifier, PAV_INIT_STATUS.INIT_COMPLETE); > >>>- > >>>+ > >>>+ updateStatus(appletViewer.identifier, PAV_INIT_STATUS.INIT_COMPLETE); > >>>+ > >>> break; > >>> } > >>> } > >>>@@ -510,7 +508,13 @@ import com.sun.jndi.toolkit.url.UrlUtil; > >>> > >>> try { > >>> if (message.startsWith("handle")) { > >>>- > >>>+ > >>>+ // If there is a key for this status, it means it > >>>+ // was either initialized before, or destroy has been > >>>+ // processed. Stop moving further. > >>>+ if (updateStatus(identifier, PAV_INIT_STATUS.PRE_INIT) != null) > >>>+ return; > >>>+ > >>> // Extract the information from the message > >>> String[] msgParts = new String[4]; > >>> for (int i=0; i< 3; i++) { > >>>@@ -519,32 +523,38 @@ import com.sun.jndi.toolkit.url.UrlUtil; > >>> msgParts[i] = message.substring(spaceLocation + 1, nextSpaceLocation); > >>> message = message.substring(nextSpaceLocation + 1); > >>> } > >>>- > >>>+ > >>> long handle = Long.parseLong(msgParts[0]); > >>> String width = msgParts[1]; > >>> String height = msgParts[2]; > >>>- > >>>+ > >>> int spaceLocation = message.indexOf(' ', "tag".length()+1); > >>> String documentBase = > >>> UrlUtil.decode(message.substring("tag".length() + 1, spaceLocation)); > >>>- String tag = message.substring(spaceLocation+1); > >>>+ String tag = message.substring(spaceLocation+1); > >>>+ > >>>+ // Decode the tag > >>>+ tag = tag.replace(">", ">"); > >>>+ tag = tag.replace("<", "<"); > >>>+ tag = tag.replace("&", "&"); > >>>+ tag = tag.replace(" ", "\n"); > >>>+ tag = tag.replace(" ", "\r"); > >>>+ tag = tag.replace(""", "\""); > >>> > >>> PluginDebug.debug ("Handle = " + handle + "\n" + > >>> "Width = " + width + "\n" + > >>> "Height = " + height + "\n" + > >>> "DocumentBase = " + documentBase + "\n" + > >>> "Tag = " + tag); > >>>- > >>>- status.put(identifier, PAV_INIT_STATUS.PRE_INIT); > >>>+ > >>> PluginAppletViewer.parse > >>> (identifier, handle, width, height, > >>> new StringReader(tag), > >>> new URL(documentBase)); > >>>- > >>> > >>> int maxWait = APPLET_TIMEOUT; // wait for applet to fully load > >>> int wait = 0; > >>>- while (!status.get(identifier).equals(PAV_INIT_STATUS.INIT_COMPLETE)&& > >>>+ while ( !applets.containsKey(identifier)&& // Map is populated only by reFrame > >>> (wait< maxWait)) { > >>> > >>> try { > >>>@@ -555,9 +565,44 @@ import com.sun.jndi.toolkit.url.UrlUtil; > >>> } > >>> } > >>> > >>>- if (!status.get(identifier).equals(PAV_INIT_STATUS.INIT_COMPLETE)) > >>>+ // If wait exceeded maxWait, we timed out. Throw an exception > >>>+ if (wait>= maxWait) > >>> throw new Exception("Applet initialization timeout"); > >>> > >>>+ PluginAppletViewer oldFrame = applets.get(identifier); > >>>+ > >>>+ // We should not try to destroy an applet during > >>>+ // initialization. It may cause an inconsistent state, > >>>+ // which would bad if it's a trusted applet that > >>>+ // read/writes to files > >>>+ waitForAppletInit((NetxPanel) applets.get(identifier).panel); > >>>+ > >>>+ // Should we proceed with reframing? > >>>+ if (status.get(identifier).equals(PAV_INIT_STATUS.INACTIVE)) { > >>>+ destroyApplet(identifier); > >>>+ return; > >>>+ } > >>>+ > >>>+ // Proceed with re-framing > >>>+ reFrame(oldFrame, identifier, System.out, handle, oldFrame.panel); > >>>+ > >>>+ // There is a slight chance that destroy can happen > >>>+ // between the above and below line > >>>+ if (updateStatus(identifier, PAV_INIT_STATUS.REFRAME_COMPLETE).equals(PAV_INIT_STATUS.INACTIVE)) { > >>>+ destroyApplet(identifier); > >>>+ } > >>>+ > >>>+ } else if (message.startsWith("destroy")) { > >>>+ > >>>+ // Set it inactive, and try to do cleanup is applicable > >>>+ PAV_INIT_STATUS previousStatus = updateStatus(identifier, PAV_INIT_STATUS.INACTIVE); > >>>+ PluginDebug.debug("Destroy status set for " + identifier); > >>>+ > >>>+ if (previousStatus != null&& > >>>+ previousStatus.equals(PAV_INIT_STATUS.REFRAME_COMPLETE)) { > >>>+ destroyApplet(identifier); > >>>+ } > >>>+ > >>> } else { > >>> PluginDebug.debug ("Handling message: " + message + " instance " + identifier + " " + Thread.currentThread()); > >>> > >>>@@ -568,7 +613,7 @@ import com.sun.jndi.toolkit.url.UrlUtil; > >>> status.get(identifier).equals(PAV_INIT_STATUS.PRE_INIT) > >>> ) > >>> ); > >>>- > >>>+ > >>> // don't bother processing further for inactive applets > >>> if (status.get(identifier).equals(PAV_INIT_STATUS.INACTIVE)) > >>> return; > >>>@@ -580,31 +625,131 @@ import com.sun.jndi.toolkit.url.UrlUtil; > >>> e.printStackTrace(); > >>> > >>> // If an exception happened during pre-init, we need to update status > >>>- if (status.get(identifier).equals(PAV_INIT_STATUS.PRE_INIT)) > >>>- status.put(identifier, PAV_INIT_STATUS.INACTIVE); > >>>+ updateStatus(identifier, PAV_INIT_STATUS.INACTIVE); > >>> > >>> throw new RuntimeException("Failed to handle message: " + > >>> message + " for instance " + identifier, e); > >>> } > >>> } > >>>- > >>>+ > >>>+ /** > >>>+ * Sets the status unless an overriding status is set (e.g. if > >>>+ * status is DESTROYED, it may not be overridden). > >>>+ * > >>>+ * @param identifier The identifier for which the status is to be set > >>>+ * @param status The status to switch to > >>>+ * @return The previous status > >>>+ */ > >>>+ private static synchronized PAV_INIT_STATUS updateStatus(int identifier, PAV_INIT_STATUS newStatus) { > >>>+ > >>>+ PAV_INIT_STATUS prev = status.get(identifier); > >>>+ > >>>+ // If the status is set > >>>+ if (status.containsKey(identifier)) { > >>>+ > >>>+ // Nothing may override destroyed status > >>>+ if (status.get(identifier).equals(PAV_INIT_STATUS.DESTROYED)) { > >>>+ return prev; > >>>+ } > >>>+ > >>>+ // If status is inactive, only DESTROYED may override it > >>>+ if (status.get(identifier).equals(PAV_INIT_STATUS.INACTIVE)) { > >>>+ if (!newStatus.equals(PAV_INIT_STATUS.DESTROYED)) { > >>>+ return prev; > >>>+ } > >>>+ } > >>>+ } > >>>+ > >>>+ // Else set to given status > >>>+ status.put(identifier, newStatus); > >>>+ > >>>+ return prev; > >>>+ } > >>>+ > >>>+ /** > >>>+ * Destroys the given applet instance. > >>>+ * > >>>+ * This function may be called multiple times without problems. > >>>+ * It does a synchronized check on the status and will only > >>>+ * attempt to destroy the applet if not previously destroyed. > >>>+ * > >>>+ * @param identifier The instance which is to be destroyed > >>>+ */ > >>>+ > >>>+ private static synchronized void destroyApplet(int identifier) { > >>>+ > >>>+ PluginDebug.debug("DestroyApplet called for " + identifier); > >>>+ > >>>+ PAV_INIT_STATUS prev = updateStatus(identifier, PAV_INIT_STATUS.DESTROYED); > >>>+ > >>>+ // If already destroyed, return > >>>+ if (prev.equals(PAV_INIT_STATUS.DESTROYED)) { > >>>+ PluginDebug.debug(identifier + " already destroyed. Returning."); > >>>+ return; > >>>+ } > >>>+ > >>>+ // If already disposed, return > >>>+ if (applets.get(identifier).panel.applet == null) { > >>>+ // Try to still dispose the panel itself -- no harm done with double dispose > >>>+ applets.get(identifier).dispose(); > >>>+ > >>>+ PluginDebug.debug(identifier + " inactive. Returning."); > >>>+ return; > >>>+ } > >>>+ > >>>+ PluginDebug.debug("Attempting to destroy " + identifier); > >>>+ > >>>+ final int fIdentifier = identifier; > >>>+ SwingUtilities.invokeLater(new Runnable() { > >>>+ public void run() { > >>>+ applets.get(fIdentifier).appletClose(); > >>>+ } > >>>+ }); > >>>+ > >>>+ PluginDebug.debug(identifier + " destroyed"); > >>>+ } > >>>+ > >>>+ /** > >>>+ * Function to block until applet initialization is complete > >>>+ * > >>>+ * @param identifier The instance to wait for > >>>+ */ > >>>+ public static void waitForAppletInit(NetxPanel panel) { > >>>+ > >>>+ int waitTime = 0; > >>>+ > >>>+ // Wait till initialization finishes > >>>+ while (panel.getApplet() == null&& > >>>+ panel.isAlive()&& > >>>+ waitTime< APPLET_TIMEOUT) { > >>>+ try { > >>>+ if (waitTime%500 == 0) > >>>+ PluginDebug.debug("Waiting for applet panel " + panel + " to initialize..."); > >>>+ > >>>+ Thread.sleep(waitTime += 50); > >>>+ } catch (InterruptedException ie) { > >>>+ // just wait > >>>+ } > >>>+ } > >>>+ > >>>+ PluginDebug.debug("Applet panel " + panel + " initialized"); > >>>+ } > >>>+ > >>> public void handleMessage(int reference, String message) > >>> { > >>> if (message.startsWith("width")) { > >>> > >>> // Wait for panel to come alive > >>> int maxWait = APPLET_TIMEOUT; // wait for panel to come alive > >>>- int wait = 0; > >>>+ int wait = 0; > >>> while (!status.get(identifier).equals(PAV_INIT_STATUS.INIT_COMPLETE)&& wait< maxWait) { > >>>- > >>>- try { > >>>- Thread.sleep(50); > >>>- wait += 50; > >>>- } catch (InterruptedException ie) { > >>>- // just wait > >>>- } > >>>- } > >>>- > >>>+ try { > >>>+ Thread.sleep(50); > >>>+ wait += 50; > >>>+ } catch (InterruptedException ie) { > >>>+ // just wait > >>>+ } > >>>+ } > >>> > >>> // 0 => width, 1=> width_value, 2 => height, 3=> height_value > >>> String[] dimMsg = message.split(" "); > >>>@@ -636,7 +781,7 @@ import com.sun.jndi.toolkit.url.UrlUtil; > >>> > >>> panel.setSize(width, height); > >>> panel.validate(); > >>>- > >>>+ > >>> panel.applet.resize(width, height); > >>> panel.applet.validate(); > >>> } > >>>@@ -649,9 +794,6 @@ import com.sun.jndi.toolkit.url.UrlUtil; > >>> e.printStackTrace(); > >>> } > >>> > >>>- } else if (message.startsWith("destroy")) { > >>>- dispose(); > >>>- status.put(identifier, PAV_INIT_STATUS.INACTIVE); > >>> } else if (message.startsWith("GetJavaObject")) { > >>> > >>> // FIXME: how do we determine what security context this > >>>@@ -672,15 +814,7 @@ import com.sun.jndi.toolkit.url.UrlUtil; > >>> > >>> // Wait for the panel to initialize > >>> // (happens in a separate thread) > >>>- while (panel.getApplet() == null&& > >>>- ((NetxPanel) panel).isAlive()) { > >>>- try { > >>>- Thread.sleep(50); > >>>- PluginDebug.debug("Waiting for applet to initialize..."); > >>>- } catch (InterruptedException ie) { > >>>- // just wait > >>>- } > >>>- } > >>>+ waitForAppletInit((NetxPanel) panel); > >>> > >>> PluginDebug.debug(panel + " -- " + panel.getApplet() + " -- " + ((NetxPanel) panel).isAlive()); > >>> > >>>@@ -1548,10 +1682,11 @@ import com.sun.jndi.toolkit.url.UrlUtil; > >>> if (countApplets() == 0) { > >>> appletSystemExit(); > >>> } > >>>+ > >>>+ updateStatus(identifier, PAV_INIT_STATUS.DESTROYED); > >>> } > >>> }).start(); > >>> > >>>- status.put(identifier, PAV_INIT_STATUS.INACTIVE); > >>> } > >>> > >>> /** > >>>@@ -1677,18 +1812,6 @@ import com.sun.jndi.toolkit.url.UrlUtil; > >>> val = buf.toString(); > >>> } > >>> > >>>- att = att.replace(">", ">"); > >>>- att = att.replace("<", "<"); > >>>- att = att.replace("&", "&"); > >>>- att = att.replace(" ", "\n"); > >>>- att = att.replace(" ", "\r"); > >>>- > >>>- val = val.replace(">", ">"); > >>>- val = val.replace("<", "<"); > >>>- val = val.replace("&", "&"); > >>>- val = val.replace(" ", "\n"); > >>>- val = val.replace(" ", "\r"); > >>>- > >>> PluginDebug.debug("PUT " + att + " = '" + val + "'"); > >>> atts.put(att.toLowerCase(java.util.Locale.ENGLISH), val); > >>> > >>>@@ -1708,7 +1831,6 @@ import com.sun.jndi.toolkit.url.UrlUtil; > >>> // private static final == inline > >>> private static final boolean isInt(Object o) { > >>> boolean isInt = false; > >>>- > >>> try { > >>> Integer.parseInt((String) o); > >>> isInt = true; > >>>@@ -1763,7 +1885,6 @@ import com.sun.jndi.toolkit.url.UrlUtil; > >>> } catch (IOException ioe) { > >>> return ioe; > >>> } > >>>- > >>> return null; > >>> } > >>> }; > >>>@@ -1785,6 +1906,7 @@ import com.sun.jndi.toolkit.url.UrlUtil; > >>> boolean isObjectTag = false; > >>> boolean isEmbedTag = false; > >> > From dbhole at icedtea.classpath.org Thu Nov 4 13:45:23 2010 From: dbhole at icedtea.classpath.org (dbhole at icedtea.classpath.org) Date: Thu, 04 Nov 2010 20:45:23 +0000 Subject: /hg/icedtea-web: Double-buffer applet frame drawing. Message-ID: changeset 8e66d9386273 in /hg/icedtea-web details: http://icedtea.classpath.org/hg/icedtea-web?cmd=changeset;node=8e66d9386273 author: Deepak Bhole date: Thu Nov 04 16:44:27 2010 -0700 Double-buffer applet frame drawing. diffstat: 3 files changed, 31 insertions(+) ChangeLog | 5 ++ NEWS | 1 plugin/icedteanp/java/sun/applet/PluginAppletViewer.java | 25 ++++++++++++++ diffs (60 lines): diff -r 2405cef22921 -r 8e66d9386273 ChangeLog --- a/ChangeLog Wed Nov 03 23:06:23 2010 +0000 +++ b/ChangeLog Thu Nov 04 16:44:27 2010 -0700 @@ -1,3 +1,8 @@ 2010-10-28 Andrew John Hughes + + * plugin/icedteanp/java/sun/applet/PluginAppletViewer.java (update): + Override method and implement double-buffering. + 2010-10-28 Andrew John Hughes * Makefile.am: diff -r 2405cef22921 -r 8e66d9386273 NEWS --- a/NEWS Wed Nov 03 23:06:23 2010 +0000 +++ b/NEWS Thu Nov 04 16:44:27 2010 -0700 @@ -12,3 +12,4 @@ New in release 1.0 (2010-XX-XX): * Initial release of IcedTea-Web * PR542: Plugin fails with NPE on http://www.openprocessing.org/visuals/iframe.php?visualID=2615 +* Applets are now double-buffered to eliminate flicker in ones that do heavy drawing diff -r 2405cef22921 -r 8e66d9386273 plugin/icedteanp/java/sun/applet/PluginAppletViewer.java --- a/plugin/icedteanp/java/sun/applet/PluginAppletViewer.java Wed Nov 03 23:06:23 2010 +0000 +++ b/plugin/icedteanp/java/sun/applet/PluginAppletViewer.java Thu Nov 04 16:44:27 2010 -0700 @@ -358,6 +358,9 @@ import com.sun.jndi.toolkit.url.UrlUtil; public static final int APPLET_TIMEOUT = 180000; private static Long requestIdentityCounter = 0L; + + private Image bufFrameImg; + private Graphics bufFrameImgGraphics; /** * Null constructor to allow instantiation via newInstance() @@ -2163,4 +2166,26 @@ import com.sun.jndi.toolkit.url.UrlUtil; } } } + + /** + * {@inheritDoc} + * + * This method calls paint directly, rather than via super.update() since + * the parent class's update() just does a couple of checks (both of + * which are accounted for) and then calls paint anyway. + */ + public void update(Graphics g) { + + // If the image or the graphics don't exist, create new ones + if (bufFrameImg == null || bufFrameImgGraphics == null) { + bufFrameImg = createImage(getWidth(), getHeight()); + bufFrameImgGraphics = bufFrameImg.getGraphics (); + } + + // Paint off-screen + paint(bufFrameImgGraphics); + + // Draw the painted image + g.drawImage(bufFrameImg, 0, 0, this); + } } From dbhole at redhat.com Thu Nov 4 13:46:07 2010 From: dbhole at redhat.com (Deepak Bhole) Date: Thu, 4 Nov 2010 16:46:07 -0400 Subject: [icedtea-web] RFC: Patch to double-buffer applets In-Reply-To: <4CD309C6.1010003@redhat.com> References: <20101102213155.GA9563@redhat.com> <20101102213756.GB9563@redhat.com> <4CD16468.1000306@redhat.com> <20101104181416.GA2897@redhat.com> <4CD309C6.1010003@redhat.com> Message-ID: <20101104204606.GD2897@redhat.com> * Omair Majid [2010-11-04 15:30]: > On 11/04/2010 02:14 PM, Deepak Bhole wrote: > >* Omair Majid [2010-11-03 09:32]: > >>Hi Deepak, > >> > >>On 11/02/2010 05:37 PM, Deepak Bhole wrote: > >>>* Deepak Bhole [2010-11-02 17:31]: > >>>>Hi, > >>>> > >>>>IcedTea plugin currently does not double-buffer the applet panel. As a > >>>>result, some applets may flicker depending on the machine. > >>>> > >>>>Attached patch buffers the frame offscreen and then draws it, thereby > >>>>addressing the issue. > >>>> > >> > >>Is there a specific test case that this fixes? The only flickering > >>applet that I know of is at > >>http://download.oracle.com/javase/1.4.2/docs/guide/misc/applet.html, > >>and I dont see any change in that applet with the patch applied. > >> > >>>>ChangeLog: > >>>>2010-11-02 Deepak Bhole > >>>> > >>>> * plugin/icedteanp/java/sun/applet/PluginAppletViewer.java (update): > >>>> Override method and implement double-buffering. > >>>> > >>>>Cheers, > >>>>Deepak > >>> > >>> > >>>Doh! There shouldn't be a println in there. New patch attached. I also > >>>fixed the variable names for the image and its graphics. > >>> > >>> > >>>>diff -r 6c2527d42900 ChangeLog > >>>>--- a/ChangeLog Mon Nov 01 11:44:15 2010 -0400 > >>>>+++ b/ChangeLog Tue Nov 02 17:29:03 2010 -0700 > >>>>@@ -1,3 +1,8 @@ > >>>>+2010-11-02 Deepak Bhole > >>>>+ > >>>>+ * plugin/icedteanp/java/sun/applet/PluginAppletViewer.java (update): > >>>>+ Override method and implement double-buffering. > >>>>+ > >>>> 2010-11-01 Omair Majid > >>>> > >>>> * Makefile.am (clean-IcedTeaPlugin): Only delete launcher directory if it > >>>>diff -r 6c2527d42900 NEWS > >>>>--- a/NEWS Mon Nov 01 11:44:15 2010 -0400 > >>>>+++ b/NEWS Tue Nov 02 17:29:03 2010 -0700 > >>>>@@ -12,3 +12,4 @@ > >>>> > >>>> * Initial release of IcedTea-Web > >>>> * PR542: Plugin fails with NPE on http://www.openprocessing.org/visuals/iframe.php?visualID=2615 > >>>>+* Applets are now double-buffered to eliminate flicker in ones that do heavy drawing > >>>>diff -r 6c2527d42900 plugin/icedteanp/java/sun/applet/PluginAppletViewer.java > >>>>--- a/plugin/icedteanp/java/sun/applet/PluginAppletViewer.java Mon Nov 01 11:44:15 2010 -0400 > >>>>+++ b/plugin/icedteanp/java/sun/applet/PluginAppletViewer.java Tue Nov 02 17:29:03 2010 -0700 > >>>>@@ -359,6 +366,9 @@ > >>>> > >>>> private static Long requestIdentityCounter = 0L; > >>>> > >>>>+ private Image bufferedPanelImage; > >>>>+ private Graphics bufferedImageGraphics; > >>>>+ > >>>> /** > >>>> * Null constructor to allow instantiation via newInstance() > >>>> */ > >>>>@@ -2163,4 +2178,24 @@ > >>>> } > >>>> } > >>>> } > >>>>+ > >>>>+ /** > >>>>+ * {@inheritDoc} > >>>>+ */ > >>>>+ public void update(Graphics g) { > >>>>+ > >>>>+ System.err.println("Buffering and drawing"); > >>>>+ > >>>>+ // If the image or the graphics don't exist, create new ones > >>>>+ if (bufferedPanelImage == null || bufferedImageGraphics == null) { > >>>>+ bufferedPanelImage = createImage(getWidth(), getHeight()); > >>>>+ bufferedImageGraphics = bufferedPanelImage.getGraphics (); > >>>>+ } > >>>>+ > >>>>+ // Paint off-screen > >>>>+ paint(bufferedImageGraphics); > >> > >>The overridden method is update, but paint is called here instead. > >>Is there a reason for that? As far as I know, the semantics of > >>update() are slightly different from paint() - update() clears the > >>background and then calls paint(). Perhaps super.update() might be > >>more appropriate? > >> > > > >super.update() would just call paint on the Graphics instance passed to > >it. Container's (super in this case) update() methods do a couple of > >additional checks, but we don't need them for applets, which are known > >lightweight containers. > > > >I can definitely add the call if you feel it would be cleaner though -- > >just that it doesn't make a difference in this case. > > > > Thanks for the explanation. Its makes more sense now. Please go > ahead and commit the patch you posted. If you could add this > explanation as a comment to the patch too, that would be great. > Added and pushed: http://icedtea.classpath.org/hg/icedtea-web/rev/8e66d9386273 Thanks for reviewing! Cheers, Deepak > Cheers, > Omair From dbhole at redhat.com Thu Nov 4 13:46:28 2010 From: dbhole at redhat.com (Deepak Bhole) Date: Thu, 4 Nov 2010 16:46:28 -0400 Subject: [icedtea-web] RFC: Patch to double-buffer applets In-Reply-To: <20101102230425.GD20032@rivendell.middle-earth.co.uk> References: <20101102213155.GA9563@redhat.com> <20101102213756.GB9563@redhat.com> <20101102230425.GD20032@rivendell.middle-earth.co.uk> Message-ID: <20101104204626.GE2897@redhat.com> * Dr Andrew John Hughes [2010-11-02 19:04]: > On 17:37 Tue 02 Nov , Deepak Bhole wrote: > > * Deepak Bhole [2010-11-02 17:31]: > > > Hi, > > > > > > IcedTea plugin currently does not double-buffer the applet panel. As a > > > result, some applets may flicker depending on the machine. > > > > > > Attached patch buffers the frame offscreen and then draws it, thereby > > > addressing the issue. > > > > > > ChangeLog: > > > 2010-11-02 Deepak Bhole > > > > > > * plugin/icedteanp/java/sun/applet/PluginAppletViewer.java (update): > > > Override method and implement double-buffering. > > > > > > Cheers, > > > Deepak > > > > > > Doh! There shouldn't be a println in there. New patch attached. I also > > fixed the variable names for the image and its graphics. > > > > Cheers, > > Deepak > > > > Looks good to me. Maybe the variable names could be shorter, while still > conveying the same meaning e.g. bufPanelImage. > Done and pushed: http://icedtea.classpath.org/hg/icedtea-web/rev/8e66d9386273 Thanks for reviewing! Cheers, Deepak > > > diff -r 6c2527d42900 ChangeLog > > > --- a/ChangeLog Mon Nov 01 11:44:15 2010 -0400 > > > +++ b/ChangeLog Tue Nov 02 17:29:03 2010 -0700 > > > @@ -1,3 +1,8 @@ > > > +2010-11-02 Deepak Bhole > > > + > > > + * plugin/icedteanp/java/sun/applet/PluginAppletViewer.java (update): > > > + Override method and implement double-buffering. > > > + > > > 2010-11-01 Omair Majid > > > > > > * Makefile.am (clean-IcedTeaPlugin): Only delete launcher directory if it > > > diff -r 6c2527d42900 NEWS > > > --- a/NEWS Mon Nov 01 11:44:15 2010 -0400 > > > +++ b/NEWS Tue Nov 02 17:29:03 2010 -0700 > > > @@ -12,3 +12,4 @@ > > > > > > * Initial release of IcedTea-Web > > > * PR542: Plugin fails with NPE on http://www.openprocessing.org/visuals/iframe.php?visualID=2615 > > > +* Applets are now double-buffered to eliminate flicker in ones that do heavy drawing > > > diff -r 6c2527d42900 plugin/icedteanp/java/sun/applet/PluginAppletViewer.java > > > --- a/plugin/icedteanp/java/sun/applet/PluginAppletViewer.java Mon Nov 01 11:44:15 2010 -0400 > > > +++ b/plugin/icedteanp/java/sun/applet/PluginAppletViewer.java Tue Nov 02 17:29:03 2010 -0700 > > > @@ -359,6 +366,9 @@ > > > > > > private static Long requestIdentityCounter = 0L; > > > > > > + private Image bufferedPanelImage; > > > + private Graphics bufferedImageGraphics; > > > + > > > /** > > > * Null constructor to allow instantiation via newInstance() > > > */ > > > @@ -2163,4 +2178,24 @@ > > > } > > > } > > > } > > > + > > > + /** > > > + * {@inheritDoc} > > > + */ > > > + public void update(Graphics g) { > > > + > > > + System.err.println("Buffering and drawing"); > > > + > > > + // If the image or the graphics don't exist, create new ones > > > + if (bufferedPanelImage == null || bufferedImageGraphics == null) { > > > + bufferedPanelImage = createImage(getWidth(), getHeight()); > > > + bufferedImageGraphics = bufferedPanelImage.getGraphics (); > > > + } > > > + > > > + // Paint off-screen > > > + paint(bufferedImageGraphics); > > > + > > > + // Draw the painted image > > > + g.drawImage(bufferedPanelImage, 0, 0, this); > > > + } > > > } > > > > > diff -r 6c2527d42900 ChangeLog > > --- a/ChangeLog Mon Nov 01 11:44:15 2010 -0400 > > +++ b/ChangeLog Tue Nov 02 17:37:09 2010 -0700 > > @@ -1,3 +1,8 @@ > > +2010-11-02 Deepak Bhole > > + > > + * plugin/icedteanp/java/sun/applet/PluginAppletViewer.java (update): > > + Override method and implement double-buffering. > > + > > 2010-11-01 Omair Majid > > > > * Makefile.am (clean-IcedTeaPlugin): Only delete launcher directory if it > > diff -r 6c2527d42900 NEWS > > --- a/NEWS Mon Nov 01 11:44:15 2010 -0400 > > +++ b/NEWS Tue Nov 02 17:37:09 2010 -0700 > > @@ -12,3 +12,4 @@ > > > > * Initial release of IcedTea-Web > > * PR542: Plugin fails with NPE on http://www.openprocessing.org/visuals/iframe.php?visualID=2615 > > +* Applets are now double-buffered to eliminate flicker in ones that do heavy drawing > > diff -r 6c2527d42900 plugin/icedteanp/java/sun/applet/PluginAppletViewer.java > > --- a/plugin/icedteanp/java/sun/applet/PluginAppletViewer.java Mon Nov 01 11:44:15 2010 -0400 > > +++ b/plugin/icedteanp/java/sun/applet/PluginAppletViewer.java Tue Nov 02 17:37:09 2010 -0700 > > @@ -359,6 +366,9 @@ > > > > private static Long requestIdentityCounter = 0L; > > > > + private Image bufferedFrameImage; > > + private Graphics bufferedFrameImageGraphics; > > + > > /** > > * Null constructor to allow instantiation via newInstance() > > */ > > @@ -2163,4 +2178,22 @@ > > } > > } > > } > > + > > + /** > > + * {@inheritDoc} > > + */ > > + public void update(Graphics g) { > > + > > + // If the image or the graphics don't exist, create new ones > > + if (bufferedFrameImage == null || bufferedFrameImageGraphics == null) { > > + bufferedFrameImage = createImage(getWidth(), getHeight()); > > + bufferedFrameImageGraphics = bufferedFrameImage.getGraphics (); > > + } > > + > > + // Paint off-screen > > + paint(bufferedFrameImageGraphics); > > + > > + // Draw the painted image > > + g.drawImage(bufferedFrameImage, 0, 0, this); > > + } > > } > > > -- > Andrew :) > > Free Java Software Engineer > Red Hat, Inc. (http://www.redhat.com) > > Support Free Java! > Contribute to GNU Classpath and the OpenJDK > http://www.gnu.org/software/classpath > http://openjdk.java.net > PGP Key: 94EFD9D8 (http://subkeys.pgp.net) > Fingerprint = F8EF F1EA 401E 2E60 15FA 7927 142C 2591 94EF D9D8 From omajid at redhat.com Fri Nov 5 06:43:14 2010 From: omajid at redhat.com (Omair Majid) Date: Fri, 05 Nov 2010 09:43:14 -0400 Subject: [icedtea-web] RFC: use browser path from configuration Message-ID: <4CD409F2.5000908@redhat.com> Hi, The attached patch integrates the browser path selection and usage into the netx DeploymentConfiguration. ChangeLog: 2010-11-05 Omair Majid * netx/net/sourceforge/jnlp/runtime/DeploymentConfiguration.java: Add KEY_BROWSER_PATH. (loadDefaultProperties): Use KEY_BROWSER_PATH. * netx/net/sourceforge/jnlp/services/XBasicService.java (initialize): Use the browser command from the configuration. Save updates to configuration as well. Any thoughts or comments? Thanks, Omair -------------- next part -------------- A non-text attachment was scrubbed... Name: icedtea-web-integrate-configuration-browser-01.patch Type: text/x-patch Size: 2462 bytes Desc: not available Url : http://mail.openjdk.java.net/pipermail/distro-pkg-dev/attachments/20101105/5e60ee7f/icedtea-web-integrate-configuration-browser-01.patch From omajid at redhat.com Fri Nov 5 07:30:54 2010 From: omajid at redhat.com (Omair Majid) Date: Fri, 05 Nov 2010 10:30:54 -0400 Subject: [icedtea-web] RFC: Integrate desktop shortcut creation with configuration Message-ID: <4CD4151E.8080802@redhat.com> Hi, The attached patch allows using the new configuration to select whether the user should be prompted for desktop shortcut/launcher creation. ChangeLog: 2010-11-05 Omair Majid * netx/net/sourceforge/jnlp/ShortcutDesc.java: Change prefixes from SHORTCUT_ to CREATE_. * netx/net/sourceforge/jnlp/runtime/ApplicationInstance.java (addMenuAndDesktopEntries): Call shouldCreateShortcut to find out if shortcut should be created. Remove call to checkAccess which does nothing as the entire stack contains trusted classes. (shouldCreateShortcut): New method. Use the configuration to find out if a shorcut should be created, and possibly prompt the user. * netx/net/sourceforge/jnlp/runtime/DeploymentConfiguration.java: Add KEY_CREATE_DESKTOP_SHORTCUT. (loadDefaultProperties): Use KEY_CREATE_DESKTOP_SHORTCUT. Any thoughts or comments? Thanks, Omair -------------- next part -------------- A non-text attachment was scrubbed... Name: icedtea-web-integrate-configuration-desktop-shortcut-02.patch Type: text/x-patch Size: 5510 bytes Desc: not available Url : http://mail.openjdk.java.net/pipermail/distro-pkg-dev/attachments/20101105/98797652/icedtea-web-integrate-configuration-desktop-shortcut-02.patch From omajid at redhat.com Fri Nov 5 09:48:28 2010 From: omajid at redhat.com (Omair Majid) Date: Fri, 05 Nov 2010 12:48:28 -0400 Subject: [icedtea-web] RFC: add configuration support for user prompts (and other access control options) Message-ID: <4CD4355C.6050000@redhat.com> Hi, The attached patch adds support in netx for part of the 'security access and control' set of configuration options. The patch allows disabling user prompts for security warnings and denying permissions, as well as not installing custom authenticator and not granting permissions to hide window warnings. ChangeLog 2010-11-05 Omair Majid * netx/net/sourceforge/jnlp/SecurityDesc.java: Remove window banner permissions from sandboxPermissions and j2eePermissions. (getSandBoxPermissions): Dynamically add window banner permissions if allowed by configuration. * netx/net/sourceforge/jnlp/runtime/DeploymentConfiguration.java: Add KEY_SECURITY_PROMPT_USER, KEY_SECURITY_ALLOW_HIDE_WINDOW_WARNING, KEY_SECURITY_PROMPT_USER_FOR_JNLP, and KEY_SECURITY_INSTALL_AUTHENTICATOR. (loadDefaultProperties): Use the new constants. * netx/net/sourceforge/jnlp/security/SecurityWarning.java (showAccessWarningDialog): Check if the user should be prompted before prompting the user. (showNotAllSignedWarningDialog): Likewise. (showCertWarningDialog): Likewise. (showAppletWarning): Likewise. (shouldPromptUser): New method. Check if configuration allows showing user prompts. * netx/net/sourceforge/jnlp/services/ServiceUtil.java (checkAccess(AccessType,Object...)): Clarify javadocs. (checkAccess(ApplicationInstance,AccessType,Object...)): Clarify javadocs. Only prompt the user if showing JNLP prompts is ok. (shouldPromptUser): New method. Returns true if configuration allows for showing JNLP api prompts. * plugin/icedteanp/java/sun/applet/PluginMain.java (init): Only install custom authenticator if allowed by configuration. Any thoughts or comments? Thanks, Omair -------------- next part -------------- A non-text attachment was scrubbed... Name: icedtea-web-integrate-configuration-prompts-01.patch Type: text/x-patch Size: 10496 bytes Desc: not available Url : http://mail.openjdk.java.net/pipermail/distro-pkg-dev/attachments/20101105/664c34df/icedtea-web-integrate-configuration-prompts-01.patch From bugzilla-daemon at icedtea.classpath.org Fri Nov 5 10:59:29 2010 From: bugzilla-daemon at icedtea.classpath.org (bugzilla-daemon at icedtea.classpath.org) Date: Fri, 05 Nov 2010 17:59:29 +0000 Subject: [Bug 585] New: Freenet throws java.lang.UnsatisfiedLinkError with OpenJDK/CACAO Message-ID: http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=585 Summary: Freenet throws java.lang.UnsatisfiedLinkError with OpenJDK/CACAO Product: IcedTea Version: 6-1.9 Platform: all OS/Version: Linux Status: NEW Severity: normal Priority: P2 Component: CACAO AssignedTo: unassigned at icedtea.classpath.org ReportedBy: eric225125 at gmail.com java -version java version "1.6.0_20" IcedTea Runtime Environment (1.9.1) (Exherbo) CACAO (build 1.1.0pre1, compiled mode) jvm 1 | WrapperManager Error: Error in WrapperListener.start callback. java.lang.UnsatisfiedLinkError: putBooleanVolatile jvm 1 | WrapperManager Error: java.lang.UnsatisfiedLinkError: putBooleanVolatile jvm 1 | WrapperManager Error: at sun.reflect.UnsafeQualifiedStaticBooleanFieldAccessorImpl.set(UnsafeQualifiedStaticBooleanFieldAccessorImpl.java:83) jvm 1 | WrapperManager Error: at java.lang.reflect.Field.set(Field.java:675) jvm 1 | WrapperManager Error: at freenet.support.Logger$1.shouldUpdate(Logger.java:573) jvm 1 | WrapperManager Error: at freenet.support.LoggerHook.instanceRegisterLogThresholdCallback(LoggerHook.java:204) jvm 1 | WrapperManager Error: at freenet.support.Logger.registerLogThresholdCallback(Logger.java:537) jvm 1 | WrapperManager Error: at freenet.support.Logger.registerClass(Logger.java:599) jvm 1 | WrapperManager Error: at freenet.node.GetPubkey.(GetPubkey.java:20) jvm 1 | WrapperManager Error: at freenet.node.Node.(Node.java:1002) jvm 1 | WrapperManager Error: at freenet.node.NodeStarter.start(NodeStarter.java:162) jvm 1 | WrapperManager Error: at org.tanukisoftware.wrapper.WrapperManager$11.run(WrapperManager.java:2979) Relevant Freenet code: http://github.com/freenet/fred-official/blob/master/src/freenet/support/Logger.java I mentioned this issue on IRC, and gnu_andrew said it looks like missing call. -- Configure bugmail: http://icedtea.classpath.org/bugzilla/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are the assignee for the bug, or are watching the assignee. From dlila at icedtea.classpath.org Fri Nov 5 11:26:55 2010 From: dlila at icedtea.classpath.org (dlila at icedtea.classpath.org) Date: Fri, 05 Nov 2010 18:26:55 +0000 Subject: /hg/icedtea6: Temporary icedtea6 backport of the openjdk7 render... Message-ID: changeset 3d4097e0baa9 in /hg/icedtea6 details: http://icedtea.classpath.org/hg/icedtea6?cmd=changeset;node=3d4097e0baa9 author: Denis Lila date: Fri Nov 05 14:28:04 2010 -0400 Temporary icedtea6 backport of the openjdk7 rendering engine. diffstat: 2 files changed, 6078 insertions(+), 1 deletion(-) Makefile.am | 3 patches/icedtea-pisces.patch | 6076 ++++++++++++++++++++++++++++++++++++++++++ diffs (truncated from 6093 to 500 lines): diff -r a4bd79afa729 -r 3d4097e0baa9 Makefile.am --- a/Makefile.am Wed Nov 03 18:26:48 2010 +0000 +++ b/Makefile.am Fri Nov 05 14:28:04 2010 -0400 @@ -293,7 +293,8 @@ ICEDTEA_PATCHES = \ patches/openjdk/6985992-test_6933784.patch \ patches/openjdk/6853592-badwindow-warning-fix.patch \ patches/6703377-freetypescaler.patch \ - patches/icedtea-jtreg-international-fonts.patch + patches/icedtea-jtreg-international-fonts.patch \ + patches/icedtea-pisces.patch if WITH_ALT_HSBUILD ICEDTEA_PATCHES += \ diff -r a4bd79afa729 -r 3d4097e0baa9 patches/icedtea-pisces.patch --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/patches/icedtea-pisces.patch Fri Nov 05 14:28:04 2010 -0400 @@ -0,0 +1,6076 @@ +diff -Nru openjdk.orig/jdk/src/share/classes/sun/java2d/pisces/Curve.java openjdk/jdk/src/share/classes/sun/java2d/pisces/Curve.java +--- openjdk.orig/jdk/src/share/classes/sun/java2d/pisces/Curve.java 1969-12-31 19:00:00.000000000 -0500 ++++ openjdk/jdk/src/share/classes/sun/java2d/pisces/Curve.java 2010-11-04 09:55:16.830085236 -0400 +@@ -0,0 +1,294 @@ ++/* ++ * Copyright (c) 2007, Oracle and/or its affiliates. All rights reserved. ++ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. ++ * ++ * This code is free software; you can redistribute it and/or modify it ++ * under the terms of the GNU General Public License version 2 only, as ++ * published by the Free Software Foundation. Oracle designates this ++ * particular file as subject to the "Classpath" exception as provided ++ * by Oracle in the LICENSE file that accompanied this code. ++ * ++ * This code is distributed in the hope that it will be useful, but WITHOUT ++ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or ++ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License ++ * version 2 for more details (a copy is included in the LICENSE file that ++ * accompanied this code). ++ * ++ * You should have received a copy of the GNU General Public License version ++ * 2 along with this work; if not, write to the Free Software Foundation, ++ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. ++ * ++ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA ++ * or visit www.oracle.com if you need additional information or have any ++ * questions. ++ */ ++ ++package sun.java2d.pisces; ++ ++import java.util.Iterator; ++ ++class Curve { ++ ++ float ax, ay, bx, by, cx, cy, dx, dy; ++ float dax, day, dbx, dby; ++ ++ Curve() { ++ } ++ ++ void set(float[] points, int type) { ++ switch(type) { ++ case 8: ++ set(points[0], points[1], ++ points[2], points[3], ++ points[4], points[5], ++ points[6], points[7]); ++ break; ++ case 6: ++ set(points[0], points[1], ++ points[2], points[3], ++ points[4], points[5]); ++ break; ++ default: ++ throw new InternalError("Curves can only be cubic or quadratic"); ++ } ++ } ++ ++ void set(float x1, float y1, ++ float x2, float y2, ++ float x3, float y3, ++ float x4, float y4) ++ { ++ ax = 3 * (x2 - x3) + x4 - x1; ++ ay = 3 * (y2 - y3) + y4 - y1; ++ bx = 3 * (x1 - 2 * x2 + x3); ++ by = 3 * (y1 - 2 * y2 + y3); ++ cx = 3 * (x2 - x1); ++ cy = 3 * (y2 - y1); ++ dx = x1; ++ dy = y1; ++ dax = 3 * ax; day = 3 * ay; ++ dbx = 2 * bx; dby = 2 * by; ++ } ++ ++ void set(float x1, float y1, ++ float x2, float y2, ++ float x3, float y3) ++ { ++ ax = ay = 0f; ++ ++ bx = x1 - 2 * x2 + x3; ++ by = y1 - 2 * y2 + y3; ++ cx = 2 * (x2 - x1); ++ cy = 2 * (y2 - y1); ++ dx = x1; ++ dy = y1; ++ dax = 0; day = 0; ++ dbx = 2 * bx; dby = 2 * by; ++ } ++ ++ float xat(float t) { ++ return t * (t * (t * ax + bx) + cx) + dx; ++ } ++ float yat(float t) { ++ return t * (t * (t * ay + by) + cy) + dy; ++ } ++ ++ float dxat(float t) { ++ return t * (t * dax + dbx) + cx; ++ } ++ ++ float dyat(float t) { ++ return t * (t * day + dby) + cy; ++ } ++ ++ private float ddxat(float t) { ++ return 2 * dax * t + dbx; ++ } ++ ++ private float ddyat(float t) { ++ return 2 * day * t + dby; ++ } ++ ++ int dxRoots(float[] roots, int off) { ++ return Helpers.quadraticRoots(dax, dbx, cx, roots, off); ++ } ++ ++ int dyRoots(float[] roots, int off) { ++ return Helpers.quadraticRoots(day, dby, cy, roots, off); ++ } ++ ++ int infPoints(float[] pts, int off) { ++ // inflection point at t if -f'(t)x*f''(t)y + f'(t)y*f''(t)x == 0 ++ // Fortunately, this turns out to be quadratic, so there are at ++ // most 2 inflection points. ++ final float a = dax * dby - dbx * day; ++ final float b = 2 * (cy * dax - day * cx); ++ final float c = cy * dbx - cx * dby; ++ ++ return Helpers.quadraticRoots(a, b, c, pts, off); ++ } ++ ++ // finds points where the first and second derivative are ++ // perpendicular. This happens when g(t) = f'(t)*f''(t) == 0 (where ++ // * is a dot product). Unfortunately, we have to solve a cubic. ++ private int perpendiculardfddf(float[] pts, int off, final float err) { ++ assert pts.length >= off + 4; ++ ++ // these are the coefficients of g(t): ++ final float a = 2*(dax*dax + day*day); ++ final float b = 3*(dax*dbx + day*dby); ++ final float c = 2*(dax*cx + day*cy) + dbx*dbx + dby*dby; ++ final float d = dbx*cx + dby*cy; ++ // TODO: We might want to divide the polynomial by a to make the ++ // coefficients smaller. This won't change the roots. ++ return Helpers.cubicRootsInAB(a, b, c, d, pts, off, err, 0f, 1f); ++ } ++ ++ // Tries to find the roots of the function ROC(t)-w in [0, 1). It uses ++ // a variant of the false position algorithm to find the roots. False ++ // position requires that 2 initial values x0,x1 be given, and that the ++ // function must have opposite signs at those values. To find such ++ // values, we need the local extrema of the ROC function, for which we ++ // need the roots of its derivative; however, it's harder to find the ++ // roots of the derivative in this case than it is to find the roots ++ // of the original function. So, we find all points where this curve's ++ // first and second derivative are perpendicular, and we pretend these ++ // are our local extrema. There are at most 3 of these, so we will check ++ // at most 4 sub-intervals of (0,1). ROC has asymptotes at inflection ++ // points, so roc-w can have at least 6 roots. This shouldn't be a ++ // problem for what we're trying to do (draw a nice looking curve). ++ int rootsOfROCMinusW(float[] roots, int off, final float w, final float err) { ++ // no OOB exception, because by now off<=6, and roots.length >= 10 ++ assert off <= 6 && roots.length >= 10; ++ int ret = off; ++ int numPerpdfddf = perpendiculardfddf(roots, off, err); ++ float t0 = 0, ft0 = ROCsq(t0) - w*w; ++ roots[off + numPerpdfddf] = 1f; // always check interval end points ++ numPerpdfddf++; ++ for (int i = off; i < off + numPerpdfddf; i++) { ++ float t1 = roots[i], ft1 = ROCsq(t1) - w*w; ++ if (ft0 == 0f) { ++ roots[ret++] = t0; ++ } else if (ft1 * ft0 < 0f) { // have opposite signs ++ // (ROC(t)^2 == w^2) == (ROC(t) == w) is true because ++ // ROC(t) >= 0 for all t. ++ roots[ret++] = falsePositionROCsqMinusX(t0, t1, w*w, err); ++ } ++ t0 = t1; ++ ft0 = ft1; ++ } ++ ++ return ret - off; ++ } ++ ++ private static float eliminateInf(float x) { ++ return (x == Float.POSITIVE_INFINITY ? Float.MAX_VALUE : ++ (x == Float.NEGATIVE_INFINITY ? Float.MIN_VALUE : x)); ++ } ++ ++ // A slight modification of the false position algorithm on wikipedia. ++ // This only works for the ROCsq-x functions. It might be nice to have ++ // the function as an argument, but that would be awkward in java6. ++ // It is something to consider for java7, depending on how closures ++ // and function objects turn out. Same goes for the newton's method ++ // algorithm in Helpers.java ++ private float falsePositionROCsqMinusX(float x0, float x1, ++ final float x, final float err) ++ { ++ final int iterLimit = 100; ++ int side = 0; ++ float t = x1, ft = eliminateInf(ROCsq(t) - x); ++ float s = x0, fs = eliminateInf(ROCsq(s) - x); ++ float r = s, fr; ++ for (int i = 0; i < iterLimit && Math.abs(t - s) > err * Math.abs(t + s); i++) { ++ r = (fs * t - ft * s) / (fs - ft); ++ fr = ROCsq(r) - x; ++ if (fr * ft > 0) {// have the same sign ++ ft = fr; t = r; ++ if (side < 0) { ++ fs /= (1 << (-side)); ++ side--; ++ } else { ++ side = -1; ++ } ++ } else if (fr * fs > 0) { ++ fs = fr; s = r; ++ if (side > 0) { ++ ft /= (1 << side); ++ side++; ++ } else { ++ side = 1; ++ } ++ } else { ++ break; ++ } ++ } ++ return r; ++ } ++ ++ // returns the radius of curvature squared at t of this curve ++ // see http://en.wikipedia.org/wiki/Radius_of_curvature_(applications) ++ private float ROCsq(final float t) { ++ final float dx = dxat(t); ++ final float dy = dyat(t); ++ final float ddx = ddxat(t); ++ final float ddy = ddyat(t); ++ final float dx2dy2 = dx*dx + dy*dy; ++ final float ddx2ddy2 = ddx*ddx + ddy*ddy; ++ final float ddxdxddydy = ddx*dx + ddy*dy; ++ float ret = ((dx2dy2*dx2dy2) / (dx2dy2 * ddx2ddy2 - ddxdxddydy*ddxdxddydy))*dx2dy2; ++ return ret; ++ } ++ ++ // curve to be broken should be in pts[0] ++ // this will change the contents of both pts and Ts ++ // TODO: There's no reason for Ts to be an array. All we need is a sequence ++ // of t values at which to subdivide. An array statisfies this condition, ++ // but is unnecessarily restrictive. Ts should be an Iterator instead. ++ // Doing this will also make dashing easier, since we could easily make ++ // LengthIterator an Iterator and feed it to this function to simplify ++ // the loop in Dasher.somethingTo. ++ static Iterator breakPtsAtTs(final float[][] pts, final int type, ++ final float[] Ts, final int numTs) ++ { ++ assert pts.length >= 2 && pts[0].length >= 8 && numTs <= Ts.length; ++ return new Iterator() { ++ int nextIdx = 0; ++ int nextCurveIdx = 0; ++ float prevT = 0; ++ ++ public boolean hasNext() { ++ return nextCurveIdx < numTs + 1; ++ } ++ ++ public float[] next() { ++ float[] ret; ++ if (nextCurveIdx < numTs) { ++ float curT = Ts[nextCurveIdx]; ++ float splitT = (curT - prevT) / (1 - prevT); ++ Helpers.subdivideAt(splitT, ++ pts[nextIdx], 0, ++ pts[nextIdx], 0, ++ pts[1-nextIdx], 0, type); ++ updateTs(Ts, Ts[nextCurveIdx], nextCurveIdx + 1, numTs - nextCurveIdx - 1); ++ ret = pts[nextIdx]; ++ nextIdx = 1 - nextIdx; ++ } else { ++ ret = pts[nextIdx]; ++ } ++ nextCurveIdx++; ++ return ret; ++ } ++ ++ public void remove() {} ++ }; ++ } ++ ++ // precondition: ts[off]...ts[off+len-1] must all be greater than t. ++ private static void updateTs(float[] ts, final float t, final int off, final int len) { ++ for (int i = off; i < off + len; i++) { ++ ts[i] = (ts[i] - t) / (1 - t); ++ } ++ } ++} ++ +diff -Nru openjdk.orig/jdk/src/share/classes/sun/java2d/pisces/Dasher.java openjdk/jdk/src/share/classes/sun/java2d/pisces/Dasher.java +--- openjdk.orig/jdk/src/share/classes/sun/java2d/pisces/Dasher.java 2010-11-04 09:55:54.074209905 -0400 ++++ openjdk/jdk/src/share/classes/sun/java2d/pisces/Dasher.java 2010-11-04 09:55:16.830085236 -0400 +@@ -25,6 +25,8 @@ + + package sun.java2d.pisces; + ++import sun.awt.geom.PathConsumer2D; ++ + /** + * The Dasher class takes a series of linear commands + * (moveTo, lineTo, close and +@@ -36,118 +38,68 @@ + * semantics are unclear. + * + */ +-public class Dasher extends LineSink { +- +- LineSink output; +- int[] dash; +- int startPhase; +- boolean startDashOn; +- int startIdx; +- +- int idx; +- boolean dashOn; +- int phase; +- +- int sx, sy; +- int x0, y0; +- +- int m00, m01; +- int m10, m11; +- +- Transform4 transform; ++public class Dasher implements sun.awt.geom.PathConsumer2D { + +- boolean symmetric; +- long ldet; ++ private final PathConsumer2D out; ++ private final float[] dash; ++ private final float startPhase; ++ private final boolean startDashOn; ++ private final int startIdx; ++ ++ private boolean starting; ++ private boolean needsMoveTo; ++ ++ private int idx; ++ private boolean dashOn; ++ private float phase; + +- boolean firstDashOn; +- boolean starting; +- int sx1, sy1; ++ private float sx, sy; ++ private float x0, y0; + +- /** +- * Empty constructor. setOutput and +- * setParameters must be called prior to calling any +- * other methods. +- */ +- public Dasher() {} ++ // temporary storage for the current curve ++ private float[] curCurvepts; + + /** + * Constructs a Dasher. + * +- * @param output an output LineSink. +- * @param dash an array of ints containing the dash +- * pattern in S15.16 format. +- * @param phase an int containing the dash phase in +- * S15.16 format. +- * @param transform a Transform4 object indicating +- * the transform that has been previously applied to all incoming +- * coordinates. This is required in order to compute dash lengths +- * properly. ++ * @param out an output PathConsumer2D. ++ * @param dash an array of floats containing the dash pattern ++ * @param phase a float containing the dash phase + */ +- public Dasher(LineSink output, +- int[] dash, int phase, +- Transform4 transform) { +- setOutput(output); +- setParameters(dash, phase, transform); +- } +- +- /** +- * Sets the output LineSink of this +- * Dasher. +- * +- * @param output an output LineSink. +- */ +- public void setOutput(LineSink output) { +- this.output = output; +- } +- +- /** +- * Sets the parameters of this Dasher. +- * +- * @param dash an array of ints containing the dash +- * pattern in S15.16 format. +- * @param phase an int containing the dash phase in +- * S15.16 format. +- * @param transform a Transform4 object indicating +- * the transform that has been previously applied to all incoming +- * coordinates. This is required in order to compute dash lengths +- * properly. +- */ +- public void setParameters(int[] dash, int phase, +- Transform4 transform) { ++ public Dasher(PathConsumer2D out, float[] dash, float phase) { + if (phase < 0) { + throw new IllegalArgumentException("phase < 0 !"); + } + ++ this.out = out; ++ + // Normalize so 0 <= phase < dash[0] + int idx = 0; + dashOn = true; +- int d; ++ float d; + while (phase >= (d = dash[idx])) { + phase -= d; + idx = (idx + 1) % dash.length; + dashOn = !dashOn; + } + +- this.dash = new int[dash.length]; +- for (int i = 0; i < dash.length; i++) { +- this.dash[i] = dash[i]; +- } ++ this.dash = dash; + this.startPhase = this.phase = phase; + this.startDashOn = dashOn; + this.startIdx = idx; ++ this.starting = true; + +- this.transform = transform; +- +- this.m00 = transform.m00; +- this.m01 = transform.m01; +- this.m10 = transform.m10; +- this.m11 = transform.m11; +- this.ldet = ((long)m00*m11 - (long)m01*m10) >> 16; +- this.symmetric = (m00 == m11 && m10 == -m01); ++ // we need curCurvepts to be able to contain 2 curves because when ++ // dashing curves, we need to subdivide it ++ curCurvepts = new float[8 * 2]; + } + +- public void moveTo(int x0, int y0) { +- output.moveTo(x0, y0); ++ public void moveTo(float x0, float y0) { ++ if (firstSegidx > 0) { ++ out.moveTo(sx, sy); ++ emitFirstSegments(); ++ } ++ needsMoveTo = true; + this.idx = startIdx; + this.dashOn = this.startDashOn; + this.phase = this.startPhase; +@@ -156,91 +108,398 @@ + this.starting = true; + } + +- public void lineJoin() { +- output.lineJoin(); ++ private void emitSeg(float[] buf, int off, int type) { ++ switch (type) { ++ case 8: ++ out.curveTo(buf[off+0], buf[off+1], ++ buf[off+2], buf[off+3], ++ buf[off+4], buf[off+5]); ++ break; ++ case 6: ++ out.quadTo(buf[off+0], buf[off+1], ++ buf[off+2], buf[off+3]); ++ break; ++ case 4: ++ out.lineTo(buf[off], buf[off+1]); From andrew at icedtea.classpath.org Fri Nov 5 11:31:13 2010 From: andrew at icedtea.classpath.org (andrew at icedtea.classpath.org) Date: Fri, 05 Nov 2010 18:31:13 +0000 Subject: /hg/icedtea6: 2 new changesets Message-ID: changeset d7a53bef488a in /hg/icedtea6 details: http://icedtea.classpath.org/hg/icedtea6?cmd=changeset;node=d7a53bef488a author: Andrew John Hughes date: Fri Nov 05 18:28:04 2010 +0000 Switch back to master tree for hs19. 2010-11-05 Andrew John Hughes * hotspot.map: Switch back to master now changes have been pushed through (same content, different tree). changeset f935004da674 in /hg/icedtea6 details: http://icedtea.classpath.org/hg/icedtea6?cmd=changeset;node=f935004da674 author: Andrew John Hughes date: Fri Nov 05 18:31:07 2010 +0000 Merge diffstat: 4 files changed, 6086 insertions(+), 2 deletions(-) ChangeLog | 6 Makefile.am | 3 hotspot.map | 3 patches/icedtea-pisces.patch | 6076 ++++++++++++++++++++++++++++++++++++++++++ diffs (truncated from 6114 to 500 lines): diff -r a4bd79afa729 -r f935004da674 ChangeLog --- a/ChangeLog Wed Nov 03 18:26:48 2010 +0000 +++ b/ChangeLog Fri Nov 05 18:31:07 2010 +0000 @@ -1,3 +1,9 @@ 2010-11-03 Dan Hor??k + + * hotspot.map: + Switch back to master now changes have been + pushed through (same content, different tree). + 2010-11-03 Dan Hor??k * patches/hotspot/hs19/params-cast-size_t.patch: diff -r a4bd79afa729 -r f935004da674 Makefile.am --- a/Makefile.am Wed Nov 03 18:26:48 2010 +0000 +++ b/Makefile.am Fri Nov 05 18:31:07 2010 +0000 @@ -293,7 +293,8 @@ ICEDTEA_PATCHES = \ patches/openjdk/6985992-test_6933784.patch \ patches/openjdk/6853592-badwindow-warning-fix.patch \ patches/6703377-freetypescaler.patch \ - patches/icedtea-jtreg-international-fonts.patch + patches/icedtea-jtreg-international-fonts.patch \ + patches/icedtea-pisces.patch if WITH_ALT_HSBUILD ICEDTEA_PATCHES += \ diff -r a4bd79afa729 -r f935004da674 hotspot.map --- a/hotspot.map Wed Nov 03 18:26:48 2010 +0000 +++ b/hotspot.map Fri Nov 05 18:31:07 2010 +0000 @@ -1,2 +1,3 @@ # version url changeset md5sum -hs19 http://hg.openjdk.java.net/hsx/hsx19/baseline 13edc857b967 aecc54d4c62c4e4b2e54bdafb41309dd +hs19 http://hg.openjdk.java.net/hsx/hsx19/master 13edc857b967 3171888f17698d8e9348f8b3e813d20d + diff -r a4bd79afa729 -r f935004da674 patches/icedtea-pisces.patch --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/patches/icedtea-pisces.patch Fri Nov 05 18:31:07 2010 +0000 @@ -0,0 +1,6076 @@ +diff -Nru openjdk.orig/jdk/src/share/classes/sun/java2d/pisces/Curve.java openjdk/jdk/src/share/classes/sun/java2d/pisces/Curve.java +--- openjdk.orig/jdk/src/share/classes/sun/java2d/pisces/Curve.java 1969-12-31 19:00:00.000000000 -0500 ++++ openjdk/jdk/src/share/classes/sun/java2d/pisces/Curve.java 2010-11-04 09:55:16.830085236 -0400 +@@ -0,0 +1,294 @@ ++/* ++ * Copyright (c) 2007, Oracle and/or its affiliates. All rights reserved. ++ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. ++ * ++ * This code is free software; you can redistribute it and/or modify it ++ * under the terms of the GNU General Public License version 2 only, as ++ * published by the Free Software Foundation. Oracle designates this ++ * particular file as subject to the "Classpath" exception as provided ++ * by Oracle in the LICENSE file that accompanied this code. ++ * ++ * This code is distributed in the hope that it will be useful, but WITHOUT ++ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or ++ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License ++ * version 2 for more details (a copy is included in the LICENSE file that ++ * accompanied this code). ++ * ++ * You should have received a copy of the GNU General Public License version ++ * 2 along with this work; if not, write to the Free Software Foundation, ++ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. ++ * ++ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA ++ * or visit www.oracle.com if you need additional information or have any ++ * questions. ++ */ ++ ++package sun.java2d.pisces; ++ ++import java.util.Iterator; ++ ++class Curve { ++ ++ float ax, ay, bx, by, cx, cy, dx, dy; ++ float dax, day, dbx, dby; ++ ++ Curve() { ++ } ++ ++ void set(float[] points, int type) { ++ switch(type) { ++ case 8: ++ set(points[0], points[1], ++ points[2], points[3], ++ points[4], points[5], ++ points[6], points[7]); ++ break; ++ case 6: ++ set(points[0], points[1], ++ points[2], points[3], ++ points[4], points[5]); ++ break; ++ default: ++ throw new InternalError("Curves can only be cubic or quadratic"); ++ } ++ } ++ ++ void set(float x1, float y1, ++ float x2, float y2, ++ float x3, float y3, ++ float x4, float y4) ++ { ++ ax = 3 * (x2 - x3) + x4 - x1; ++ ay = 3 * (y2 - y3) + y4 - y1; ++ bx = 3 * (x1 - 2 * x2 + x3); ++ by = 3 * (y1 - 2 * y2 + y3); ++ cx = 3 * (x2 - x1); ++ cy = 3 * (y2 - y1); ++ dx = x1; ++ dy = y1; ++ dax = 3 * ax; day = 3 * ay; ++ dbx = 2 * bx; dby = 2 * by; ++ } ++ ++ void set(float x1, float y1, ++ float x2, float y2, ++ float x3, float y3) ++ { ++ ax = ay = 0f; ++ ++ bx = x1 - 2 * x2 + x3; ++ by = y1 - 2 * y2 + y3; ++ cx = 2 * (x2 - x1); ++ cy = 2 * (y2 - y1); ++ dx = x1; ++ dy = y1; ++ dax = 0; day = 0; ++ dbx = 2 * bx; dby = 2 * by; ++ } ++ ++ float xat(float t) { ++ return t * (t * (t * ax + bx) + cx) + dx; ++ } ++ float yat(float t) { ++ return t * (t * (t * ay + by) + cy) + dy; ++ } ++ ++ float dxat(float t) { ++ return t * (t * dax + dbx) + cx; ++ } ++ ++ float dyat(float t) { ++ return t * (t * day + dby) + cy; ++ } ++ ++ private float ddxat(float t) { ++ return 2 * dax * t + dbx; ++ } ++ ++ private float ddyat(float t) { ++ return 2 * day * t + dby; ++ } ++ ++ int dxRoots(float[] roots, int off) { ++ return Helpers.quadraticRoots(dax, dbx, cx, roots, off); ++ } ++ ++ int dyRoots(float[] roots, int off) { ++ return Helpers.quadraticRoots(day, dby, cy, roots, off); ++ } ++ ++ int infPoints(float[] pts, int off) { ++ // inflection point at t if -f'(t)x*f''(t)y + f'(t)y*f''(t)x == 0 ++ // Fortunately, this turns out to be quadratic, so there are at ++ // most 2 inflection points. ++ final float a = dax * dby - dbx * day; ++ final float b = 2 * (cy * dax - day * cx); ++ final float c = cy * dbx - cx * dby; ++ ++ return Helpers.quadraticRoots(a, b, c, pts, off); ++ } ++ ++ // finds points where the first and second derivative are ++ // perpendicular. This happens when g(t) = f'(t)*f''(t) == 0 (where ++ // * is a dot product). Unfortunately, we have to solve a cubic. ++ private int perpendiculardfddf(float[] pts, int off, final float err) { ++ assert pts.length >= off + 4; ++ ++ // these are the coefficients of g(t): ++ final float a = 2*(dax*dax + day*day); ++ final float b = 3*(dax*dbx + day*dby); ++ final float c = 2*(dax*cx + day*cy) + dbx*dbx + dby*dby; ++ final float d = dbx*cx + dby*cy; ++ // TODO: We might want to divide the polynomial by a to make the ++ // coefficients smaller. This won't change the roots. ++ return Helpers.cubicRootsInAB(a, b, c, d, pts, off, err, 0f, 1f); ++ } ++ ++ // Tries to find the roots of the function ROC(t)-w in [0, 1). It uses ++ // a variant of the false position algorithm to find the roots. False ++ // position requires that 2 initial values x0,x1 be given, and that the ++ // function must have opposite signs at those values. To find such ++ // values, we need the local extrema of the ROC function, for which we ++ // need the roots of its derivative; however, it's harder to find the ++ // roots of the derivative in this case than it is to find the roots ++ // of the original function. So, we find all points where this curve's ++ // first and second derivative are perpendicular, and we pretend these ++ // are our local extrema. There are at most 3 of these, so we will check ++ // at most 4 sub-intervals of (0,1). ROC has asymptotes at inflection ++ // points, so roc-w can have at least 6 roots. This shouldn't be a ++ // problem for what we're trying to do (draw a nice looking curve). ++ int rootsOfROCMinusW(float[] roots, int off, final float w, final float err) { ++ // no OOB exception, because by now off<=6, and roots.length >= 10 ++ assert off <= 6 && roots.length >= 10; ++ int ret = off; ++ int numPerpdfddf = perpendiculardfddf(roots, off, err); ++ float t0 = 0, ft0 = ROCsq(t0) - w*w; ++ roots[off + numPerpdfddf] = 1f; // always check interval end points ++ numPerpdfddf++; ++ for (int i = off; i < off + numPerpdfddf; i++) { ++ float t1 = roots[i], ft1 = ROCsq(t1) - w*w; ++ if (ft0 == 0f) { ++ roots[ret++] = t0; ++ } else if (ft1 * ft0 < 0f) { // have opposite signs ++ // (ROC(t)^2 == w^2) == (ROC(t) == w) is true because ++ // ROC(t) >= 0 for all t. ++ roots[ret++] = falsePositionROCsqMinusX(t0, t1, w*w, err); ++ } ++ t0 = t1; ++ ft0 = ft1; ++ } ++ ++ return ret - off; ++ } ++ ++ private static float eliminateInf(float x) { ++ return (x == Float.POSITIVE_INFINITY ? Float.MAX_VALUE : ++ (x == Float.NEGATIVE_INFINITY ? Float.MIN_VALUE : x)); ++ } ++ ++ // A slight modification of the false position algorithm on wikipedia. ++ // This only works for the ROCsq-x functions. It might be nice to have ++ // the function as an argument, but that would be awkward in java6. ++ // It is something to consider for java7, depending on how closures ++ // and function objects turn out. Same goes for the newton's method ++ // algorithm in Helpers.java ++ private float falsePositionROCsqMinusX(float x0, float x1, ++ final float x, final float err) ++ { ++ final int iterLimit = 100; ++ int side = 0; ++ float t = x1, ft = eliminateInf(ROCsq(t) - x); ++ float s = x0, fs = eliminateInf(ROCsq(s) - x); ++ float r = s, fr; ++ for (int i = 0; i < iterLimit && Math.abs(t - s) > err * Math.abs(t + s); i++) { ++ r = (fs * t - ft * s) / (fs - ft); ++ fr = ROCsq(r) - x; ++ if (fr * ft > 0) {// have the same sign ++ ft = fr; t = r; ++ if (side < 0) { ++ fs /= (1 << (-side)); ++ side--; ++ } else { ++ side = -1; ++ } ++ } else if (fr * fs > 0) { ++ fs = fr; s = r; ++ if (side > 0) { ++ ft /= (1 << side); ++ side++; ++ } else { ++ side = 1; ++ } ++ } else { ++ break; ++ } ++ } ++ return r; ++ } ++ ++ // returns the radius of curvature squared at t of this curve ++ // see http://en.wikipedia.org/wiki/Radius_of_curvature_(applications) ++ private float ROCsq(final float t) { ++ final float dx = dxat(t); ++ final float dy = dyat(t); ++ final float ddx = ddxat(t); ++ final float ddy = ddyat(t); ++ final float dx2dy2 = dx*dx + dy*dy; ++ final float ddx2ddy2 = ddx*ddx + ddy*ddy; ++ final float ddxdxddydy = ddx*dx + ddy*dy; ++ float ret = ((dx2dy2*dx2dy2) / (dx2dy2 * ddx2ddy2 - ddxdxddydy*ddxdxddydy))*dx2dy2; ++ return ret; ++ } ++ ++ // curve to be broken should be in pts[0] ++ // this will change the contents of both pts and Ts ++ // TODO: There's no reason for Ts to be an array. All we need is a sequence ++ // of t values at which to subdivide. An array statisfies this condition, ++ // but is unnecessarily restrictive. Ts should be an Iterator instead. ++ // Doing this will also make dashing easier, since we could easily make ++ // LengthIterator an Iterator and feed it to this function to simplify ++ // the loop in Dasher.somethingTo. ++ static Iterator breakPtsAtTs(final float[][] pts, final int type, ++ final float[] Ts, final int numTs) ++ { ++ assert pts.length >= 2 && pts[0].length >= 8 && numTs <= Ts.length; ++ return new Iterator() { ++ int nextIdx = 0; ++ int nextCurveIdx = 0; ++ float prevT = 0; ++ ++ public boolean hasNext() { ++ return nextCurveIdx < numTs + 1; ++ } ++ ++ public float[] next() { ++ float[] ret; ++ if (nextCurveIdx < numTs) { ++ float curT = Ts[nextCurveIdx]; ++ float splitT = (curT - prevT) / (1 - prevT); ++ Helpers.subdivideAt(splitT, ++ pts[nextIdx], 0, ++ pts[nextIdx], 0, ++ pts[1-nextIdx], 0, type); ++ updateTs(Ts, Ts[nextCurveIdx], nextCurveIdx + 1, numTs - nextCurveIdx - 1); ++ ret = pts[nextIdx]; ++ nextIdx = 1 - nextIdx; ++ } else { ++ ret = pts[nextIdx]; ++ } ++ nextCurveIdx++; ++ return ret; ++ } ++ ++ public void remove() {} ++ }; ++ } ++ ++ // precondition: ts[off]...ts[off+len-1] must all be greater than t. ++ private static void updateTs(float[] ts, final float t, final int off, final int len) { ++ for (int i = off; i < off + len; i++) { ++ ts[i] = (ts[i] - t) / (1 - t); ++ } ++ } ++} ++ +diff -Nru openjdk.orig/jdk/src/share/classes/sun/java2d/pisces/Dasher.java openjdk/jdk/src/share/classes/sun/java2d/pisces/Dasher.java +--- openjdk.orig/jdk/src/share/classes/sun/java2d/pisces/Dasher.java 2010-11-04 09:55:54.074209905 -0400 ++++ openjdk/jdk/src/share/classes/sun/java2d/pisces/Dasher.java 2010-11-04 09:55:16.830085236 -0400 +@@ -25,6 +25,8 @@ + + package sun.java2d.pisces; + ++import sun.awt.geom.PathConsumer2D; ++ + /** + * The Dasher class takes a series of linear commands + * (moveTo, lineTo, close and +@@ -36,118 +38,68 @@ + * semantics are unclear. + * + */ +-public class Dasher extends LineSink { +- +- LineSink output; +- int[] dash; +- int startPhase; +- boolean startDashOn; +- int startIdx; +- +- int idx; +- boolean dashOn; +- int phase; +- +- int sx, sy; +- int x0, y0; +- +- int m00, m01; +- int m10, m11; +- +- Transform4 transform; ++public class Dasher implements sun.awt.geom.PathConsumer2D { + +- boolean symmetric; +- long ldet; ++ private final PathConsumer2D out; ++ private final float[] dash; ++ private final float startPhase; ++ private final boolean startDashOn; ++ private final int startIdx; ++ ++ private boolean starting; ++ private boolean needsMoveTo; ++ ++ private int idx; ++ private boolean dashOn; ++ private float phase; + +- boolean firstDashOn; +- boolean starting; +- int sx1, sy1; ++ private float sx, sy; ++ private float x0, y0; + +- /** +- * Empty constructor. setOutput and +- * setParameters must be called prior to calling any +- * other methods. +- */ +- public Dasher() {} ++ // temporary storage for the current curve ++ private float[] curCurvepts; + + /** + * Constructs a Dasher. + * +- * @param output an output LineSink. +- * @param dash an array of ints containing the dash +- * pattern in S15.16 format. +- * @param phase an int containing the dash phase in +- * S15.16 format. +- * @param transform a Transform4 object indicating +- * the transform that has been previously applied to all incoming +- * coordinates. This is required in order to compute dash lengths +- * properly. ++ * @param out an output PathConsumer2D. ++ * @param dash an array of floats containing the dash pattern ++ * @param phase a float containing the dash phase + */ +- public Dasher(LineSink output, +- int[] dash, int phase, +- Transform4 transform) { +- setOutput(output); +- setParameters(dash, phase, transform); +- } +- +- /** +- * Sets the output LineSink of this +- * Dasher. +- * +- * @param output an output LineSink. +- */ +- public void setOutput(LineSink output) { +- this.output = output; +- } +- +- /** +- * Sets the parameters of this Dasher. +- * +- * @param dash an array of ints containing the dash +- * pattern in S15.16 format. +- * @param phase an int containing the dash phase in +- * S15.16 format. +- * @param transform a Transform4 object indicating +- * the transform that has been previously applied to all incoming +- * coordinates. This is required in order to compute dash lengths +- * properly. +- */ +- public void setParameters(int[] dash, int phase, +- Transform4 transform) { ++ public Dasher(PathConsumer2D out, float[] dash, float phase) { + if (phase < 0) { + throw new IllegalArgumentException("phase < 0 !"); + } + ++ this.out = out; ++ + // Normalize so 0 <= phase < dash[0] + int idx = 0; + dashOn = true; +- int d; ++ float d; + while (phase >= (d = dash[idx])) { + phase -= d; + idx = (idx + 1) % dash.length; + dashOn = !dashOn; + } + +- this.dash = new int[dash.length]; +- for (int i = 0; i < dash.length; i++) { +- this.dash[i] = dash[i]; +- } ++ this.dash = dash; + this.startPhase = this.phase = phase; + this.startDashOn = dashOn; + this.startIdx = idx; ++ this.starting = true; + +- this.transform = transform; +- +- this.m00 = transform.m00; +- this.m01 = transform.m01; +- this.m10 = transform.m10; +- this.m11 = transform.m11; +- this.ldet = ((long)m00*m11 - (long)m01*m10) >> 16; +- this.symmetric = (m00 == m11 && m10 == -m01); ++ // we need curCurvepts to be able to contain 2 curves because when ++ // dashing curves, we need to subdivide it ++ curCurvepts = new float[8 * 2]; + } + +- public void moveTo(int x0, int y0) { +- output.moveTo(x0, y0); ++ public void moveTo(float x0, float y0) { ++ if (firstSegidx > 0) { ++ out.moveTo(sx, sy); ++ emitFirstSegments(); ++ } ++ needsMoveTo = true; + this.idx = startIdx; From omajid at redhat.com Fri Nov 5 11:58:06 2010 From: omajid at redhat.com (Omair Majid) Date: Fri, 05 Nov 2010 14:58:06 -0400 Subject: [icedtea-web] RFC: Patch to remove plugin re-framing In-Reply-To: <20101104203032.GB2897@redhat.com> References: <20101104203032.GB2897@redhat.com> Message-ID: <4CD453BE.8020204@redhat.com> Hi Deepak, On 11/04/2010 04:30 PM, Deepak Bhole wrote: > Attached patch changes the plugin so that the panel is Framed only once. > This patch permanently resolves the frame pop-out issue. > > The reFrame method has been updated and renamed to framePanel. > framePanel is called only once during initialization now, and there is > no more frame swapping. This also resolves the issue whereby keyboard > events were being discarded. > > ChangeLog: > 2010-11-04 Deepak Bhole > > * plugin/icedteanp/java/sun/applet/PluginAppletViewer.java > (createPanel): Call the new framePanel() method with the proper handle. > (framePanel): New method, renamed from reFrame. Changed to now do one-time > framing of panel into the plugin. > (handleMessage): Don't re-frame the panel. Panel is now framed only once. > (destroyApplet): Dispose the frame right away, and try to remove the panel > if possible. If not, handleMessage() will do it when the panel is > ready/removable. > > Comments? > The patch looks fine to me. I can confirm that it fixes the keyboard input problem too. Cheers, Omair From bugzilla-daemon at icedtea.classpath.org Fri Nov 5 12:07:54 2010 From: bugzilla-daemon at icedtea.classpath.org (bugzilla-daemon at icedtea.classpath.org) Date: Fri, 05 Nov 2010 19:07:54 +0000 Subject: [Bug 586] New: classes missing from src.zip Message-ID: http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=586 Summary: classes missing from src.zip Product: IcedTea Version: 6-1.9 Platform: all URL: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=570070 OS/Version: Linux Status: NEW Severity: minor Priority: P2 Component: IcedTea6 AssignedTo: unassigned at icedtea.classpath.org ReportedBy: drazzib at drazzib.com The source files in src.zip do not agree with those found in rt.jar. A large number of classes are found in one, but not the other. To get a full diff: ~$ jar tf /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar |sed s/.class$// | grep -v \\\$ |sort > rt ~$ jar tf /usr/lib/jvm/java-6-openjdk/src.zip |sed s/.java$// | grep -v /$ | sort > src $ diff -u rt src | diffstat src | 2825 ++++++-------------------------------------------------------------- 1 file changed, 289 insertions(+), 2536 deletions(-) -- Configure bugmail: http://icedtea.classpath.org/bugzilla/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are the assignee for the bug, or are watching the assignee. From dlila at icedtea.classpath.org Fri Nov 5 13:49:49 2010 From: dlila at icedtea.classpath.org (dlila at icedtea.classpath.org) Date: Fri, 05 Nov 2010 20:49:49 +0000 Subject: /hg/icedtea6: Added changelog entry for my previous changeset an... Message-ID: changeset f7334fbff599 in /hg/icedtea6 details: http://icedtea.classpath.org/hg/icedtea6?cmd=changeset;node=f7334fbff599 author: Denis Lila date: Fri Nov 05 16:50:59 2010 -0400 Added changelog entry for my previous changeset and put the patch file in patches/openjdk. diffstat: 5 files changed, 6089 insertions(+), 6077 deletions(-) ChangeLog | 8 Makefile.am | 2 NEWS | 4 patches/icedtea-pisces.patch | 6076 ------------------ patches/openjdk/6967436-6976265-6967434-pisces.patch | 6076 ++++++++++++++++++ diffs (truncated from 12201 to 500 lines): diff -r f935004da674 -r f7334fbff599 ChangeLog --- a/ChangeLog Fri Nov 05 18:31:07 2010 +0000 +++ b/ChangeLog Fri Nov 05 16:50:59 2010 -0400 @@ -1,3 +1,11 @@ 2010-11-05 Andrew John Hughes + + * Makefile.am: + Apply backported patch. + * patches/openjdk/6967436-6976265-6967434-pisces.patch: + Backport of the openjdk7 rendering engine, which fixes + various bugs and includes performance improvements. + 2010-11-05 Andrew John Hughes * hotspot.map: diff -r f935004da674 -r f7334fbff599 Makefile.am --- a/Makefile.am Fri Nov 05 18:31:07 2010 +0000 +++ b/Makefile.am Fri Nov 05 16:50:59 2010 -0400 @@ -294,7 +294,7 @@ ICEDTEA_PATCHES = \ patches/openjdk/6853592-badwindow-warning-fix.patch \ patches/6703377-freetypescaler.patch \ patches/icedtea-jtreg-international-fonts.patch \ - patches/icedtea-pisces.patch + patches/openjdk/6967436-6976265-6967434-pisces.patch if WITH_ALT_HSBUILD ICEDTEA_PATCHES += \ diff -r f935004da674 -r f7334fbff599 NEWS --- a/NEWS Fri Nov 05 18:31:07 2010 +0000 +++ b/NEWS Fri Nov 05 16:50:59 2010 -0400 @@ -43,6 +43,10 @@ New in release 1.10 (2010-XX-XX): - S6638712: Inference with wildcard types causes selection of inapplicable method - S6650759: Inference of formal type parameter (unused in formal parameters) is not performed - S6991430, PR579: Zero PowerPC fix. + - S6967436, RH597227: lines longer than 2^15 can fill window. + - S6967433: dashed lines broken when using scaling transforms. + - S6976265: No STROKE_CONTROL + - S6967434, PR450, RH530642: Round joins/caps of scaled up lines have poor quality. * NetX - A new man page for javaws. - Add a new option -Xclearcache diff -r f935004da674 -r f7334fbff599 patches/icedtea-pisces.patch --- a/patches/icedtea-pisces.patch Fri Nov 05 18:31:07 2010 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,6076 +0,0 @@ -diff -Nru openjdk.orig/jdk/src/share/classes/sun/java2d/pisces/Curve.java openjdk/jdk/src/share/classes/sun/java2d/pisces/Curve.java ---- openjdk.orig/jdk/src/share/classes/sun/java2d/pisces/Curve.java 1969-12-31 19:00:00.000000000 -0500 -+++ openjdk/jdk/src/share/classes/sun/java2d/pisces/Curve.java 2010-11-04 09:55:16.830085236 -0400 -@@ -0,0 +1,294 @@ -+/* -+ * Copyright (c) 2007, Oracle and/or its affiliates. All rights reserved. -+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. -+ * -+ * This code is free software; you can redistribute it and/or modify it -+ * under the terms of the GNU General Public License version 2 only, as -+ * published by the Free Software Foundation. Oracle designates this -+ * particular file as subject to the "Classpath" exception as provided -+ * by Oracle in the LICENSE file that accompanied this code. -+ * -+ * This code is distributed in the hope that it will be useful, but WITHOUT -+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -+ * version 2 for more details (a copy is included in the LICENSE file that -+ * accompanied this code). -+ * -+ * You should have received a copy of the GNU General Public License version -+ * 2 along with this work; if not, write to the Free Software Foundation, -+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. -+ * -+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA -+ * or visit www.oracle.com if you need additional information or have any -+ * questions. -+ */ -+ -+package sun.java2d.pisces; -+ -+import java.util.Iterator; -+ -+class Curve { -+ -+ float ax, ay, bx, by, cx, cy, dx, dy; -+ float dax, day, dbx, dby; -+ -+ Curve() { -+ } -+ -+ void set(float[] points, int type) { -+ switch(type) { -+ case 8: -+ set(points[0], points[1], -+ points[2], points[3], -+ points[4], points[5], -+ points[6], points[7]); -+ break; -+ case 6: -+ set(points[0], points[1], -+ points[2], points[3], -+ points[4], points[5]); -+ break; -+ default: -+ throw new InternalError("Curves can only be cubic or quadratic"); -+ } -+ } -+ -+ void set(float x1, float y1, -+ float x2, float y2, -+ float x3, float y3, -+ float x4, float y4) -+ { -+ ax = 3 * (x2 - x3) + x4 - x1; -+ ay = 3 * (y2 - y3) + y4 - y1; -+ bx = 3 * (x1 - 2 * x2 + x3); -+ by = 3 * (y1 - 2 * y2 + y3); -+ cx = 3 * (x2 - x1); -+ cy = 3 * (y2 - y1); -+ dx = x1; -+ dy = y1; -+ dax = 3 * ax; day = 3 * ay; -+ dbx = 2 * bx; dby = 2 * by; -+ } -+ -+ void set(float x1, float y1, -+ float x2, float y2, -+ float x3, float y3) -+ { -+ ax = ay = 0f; -+ -+ bx = x1 - 2 * x2 + x3; -+ by = y1 - 2 * y2 + y3; -+ cx = 2 * (x2 - x1); -+ cy = 2 * (y2 - y1); -+ dx = x1; -+ dy = y1; -+ dax = 0; day = 0; -+ dbx = 2 * bx; dby = 2 * by; -+ } -+ -+ float xat(float t) { -+ return t * (t * (t * ax + bx) + cx) + dx; -+ } -+ float yat(float t) { -+ return t * (t * (t * ay + by) + cy) + dy; -+ } -+ -+ float dxat(float t) { -+ return t * (t * dax + dbx) + cx; -+ } -+ -+ float dyat(float t) { -+ return t * (t * day + dby) + cy; -+ } -+ -+ private float ddxat(float t) { -+ return 2 * dax * t + dbx; -+ } -+ -+ private float ddyat(float t) { -+ return 2 * day * t + dby; -+ } -+ -+ int dxRoots(float[] roots, int off) { -+ return Helpers.quadraticRoots(dax, dbx, cx, roots, off); -+ } -+ -+ int dyRoots(float[] roots, int off) { -+ return Helpers.quadraticRoots(day, dby, cy, roots, off); -+ } -+ -+ int infPoints(float[] pts, int off) { -+ // inflection point at t if -f'(t)x*f''(t)y + f'(t)y*f''(t)x == 0 -+ // Fortunately, this turns out to be quadratic, so there are at -+ // most 2 inflection points. -+ final float a = dax * dby - dbx * day; -+ final float b = 2 * (cy * dax - day * cx); -+ final float c = cy * dbx - cx * dby; -+ -+ return Helpers.quadraticRoots(a, b, c, pts, off); -+ } -+ -+ // finds points where the first and second derivative are -+ // perpendicular. This happens when g(t) = f'(t)*f''(t) == 0 (where -+ // * is a dot product). Unfortunately, we have to solve a cubic. -+ private int perpendiculardfddf(float[] pts, int off, final float err) { -+ assert pts.length >= off + 4; -+ -+ // these are the coefficients of g(t): -+ final float a = 2*(dax*dax + day*day); -+ final float b = 3*(dax*dbx + day*dby); -+ final float c = 2*(dax*cx + day*cy) + dbx*dbx + dby*dby; -+ final float d = dbx*cx + dby*cy; -+ // TODO: We might want to divide the polynomial by a to make the -+ // coefficients smaller. This won't change the roots. -+ return Helpers.cubicRootsInAB(a, b, c, d, pts, off, err, 0f, 1f); -+ } -+ -+ // Tries to find the roots of the function ROC(t)-w in [0, 1). It uses -+ // a variant of the false position algorithm to find the roots. False -+ // position requires that 2 initial values x0,x1 be given, and that the -+ // function must have opposite signs at those values. To find such -+ // values, we need the local extrema of the ROC function, for which we -+ // need the roots of its derivative; however, it's harder to find the -+ // roots of the derivative in this case than it is to find the roots -+ // of the original function. So, we find all points where this curve's -+ // first and second derivative are perpendicular, and we pretend these -+ // are our local extrema. There are at most 3 of these, so we will check -+ // at most 4 sub-intervals of (0,1). ROC has asymptotes at inflection -+ // points, so roc-w can have at least 6 roots. This shouldn't be a -+ // problem for what we're trying to do (draw a nice looking curve). -+ int rootsOfROCMinusW(float[] roots, int off, final float w, final float err) { -+ // no OOB exception, because by now off<=6, and roots.length >= 10 -+ assert off <= 6 && roots.length >= 10; -+ int ret = off; -+ int numPerpdfddf = perpendiculardfddf(roots, off, err); -+ float t0 = 0, ft0 = ROCsq(t0) - w*w; -+ roots[off + numPerpdfddf] = 1f; // always check interval end points -+ numPerpdfddf++; -+ for (int i = off; i < off + numPerpdfddf; i++) { -+ float t1 = roots[i], ft1 = ROCsq(t1) - w*w; -+ if (ft0 == 0f) { -+ roots[ret++] = t0; -+ } else if (ft1 * ft0 < 0f) { // have opposite signs -+ // (ROC(t)^2 == w^2) == (ROC(t) == w) is true because -+ // ROC(t) >= 0 for all t. -+ roots[ret++] = falsePositionROCsqMinusX(t0, t1, w*w, err); -+ } -+ t0 = t1; -+ ft0 = ft1; -+ } -+ -+ return ret - off; -+ } -+ -+ private static float eliminateInf(float x) { -+ return (x == Float.POSITIVE_INFINITY ? Float.MAX_VALUE : -+ (x == Float.NEGATIVE_INFINITY ? Float.MIN_VALUE : x)); -+ } -+ -+ // A slight modification of the false position algorithm on wikipedia. -+ // This only works for the ROCsq-x functions. It might be nice to have -+ // the function as an argument, but that would be awkward in java6. -+ // It is something to consider for java7, depending on how closures -+ // and function objects turn out. Same goes for the newton's method -+ // algorithm in Helpers.java -+ private float falsePositionROCsqMinusX(float x0, float x1, -+ final float x, final float err) -+ { -+ final int iterLimit = 100; -+ int side = 0; -+ float t = x1, ft = eliminateInf(ROCsq(t) - x); -+ float s = x0, fs = eliminateInf(ROCsq(s) - x); -+ float r = s, fr; -+ for (int i = 0; i < iterLimit && Math.abs(t - s) > err * Math.abs(t + s); i++) { -+ r = (fs * t - ft * s) / (fs - ft); -+ fr = ROCsq(r) - x; -+ if (fr * ft > 0) {// have the same sign -+ ft = fr; t = r; -+ if (side < 0) { -+ fs /= (1 << (-side)); -+ side--; -+ } else { -+ side = -1; -+ } -+ } else if (fr * fs > 0) { -+ fs = fr; s = r; -+ if (side > 0) { -+ ft /= (1 << side); -+ side++; -+ } else { -+ side = 1; -+ } -+ } else { -+ break; -+ } -+ } -+ return r; -+ } -+ -+ // returns the radius of curvature squared at t of this curve -+ // see http://en.wikipedia.org/wiki/Radius_of_curvature_(applications) -+ private float ROCsq(final float t) { -+ final float dx = dxat(t); -+ final float dy = dyat(t); -+ final float ddx = ddxat(t); -+ final float ddy = ddyat(t); -+ final float dx2dy2 = dx*dx + dy*dy; -+ final float ddx2ddy2 = ddx*ddx + ddy*ddy; -+ final float ddxdxddydy = ddx*dx + ddy*dy; -+ float ret = ((dx2dy2*dx2dy2) / (dx2dy2 * ddx2ddy2 - ddxdxddydy*ddxdxddydy))*dx2dy2; -+ return ret; -+ } -+ -+ // curve to be broken should be in pts[0] -+ // this will change the contents of both pts and Ts -+ // TODO: There's no reason for Ts to be an array. All we need is a sequence -+ // of t values at which to subdivide. An array statisfies this condition, -+ // but is unnecessarily restrictive. Ts should be an Iterator instead. -+ // Doing this will also make dashing easier, since we could easily make -+ // LengthIterator an Iterator and feed it to this function to simplify -+ // the loop in Dasher.somethingTo. -+ static Iterator breakPtsAtTs(final float[][] pts, final int type, -+ final float[] Ts, final int numTs) -+ { -+ assert pts.length >= 2 && pts[0].length >= 8 && numTs <= Ts.length; -+ return new Iterator() { -+ int nextIdx = 0; -+ int nextCurveIdx = 0; -+ float prevT = 0; -+ -+ public boolean hasNext() { -+ return nextCurveIdx < numTs + 1; -+ } -+ -+ public float[] next() { -+ float[] ret; -+ if (nextCurveIdx < numTs) { -+ float curT = Ts[nextCurveIdx]; -+ float splitT = (curT - prevT) / (1 - prevT); -+ Helpers.subdivideAt(splitT, -+ pts[nextIdx], 0, -+ pts[nextIdx], 0, -+ pts[1-nextIdx], 0, type); -+ updateTs(Ts, Ts[nextCurveIdx], nextCurveIdx + 1, numTs - nextCurveIdx - 1); -+ ret = pts[nextIdx]; -+ nextIdx = 1 - nextIdx; -+ } else { -+ ret = pts[nextIdx]; -+ } -+ nextCurveIdx++; -+ return ret; -+ } -+ -+ public void remove() {} -+ }; -+ } -+ -+ // precondition: ts[off]...ts[off+len-1] must all be greater than t. -+ private static void updateTs(float[] ts, final float t, final int off, final int len) { -+ for (int i = off; i < off + len; i++) { -+ ts[i] = (ts[i] - t) / (1 - t); -+ } -+ } -+} -+ -diff -Nru openjdk.orig/jdk/src/share/classes/sun/java2d/pisces/Dasher.java openjdk/jdk/src/share/classes/sun/java2d/pisces/Dasher.java ---- openjdk.orig/jdk/src/share/classes/sun/java2d/pisces/Dasher.java 2010-11-04 09:55:54.074209905 -0400 -+++ openjdk/jdk/src/share/classes/sun/java2d/pisces/Dasher.java 2010-11-04 09:55:16.830085236 -0400 -@@ -25,6 +25,8 @@ - - package sun.java2d.pisces; - -+import sun.awt.geom.PathConsumer2D; -+ - /** - * The Dasher class takes a series of linear commands - * (moveTo, lineTo, close and -@@ -36,118 +38,68 @@ - * semantics are unclear. - * - */ --public class Dasher extends LineSink { -- -- LineSink output; -- int[] dash; -- int startPhase; -- boolean startDashOn; -- int startIdx; -- -- int idx; -- boolean dashOn; -- int phase; -- -- int sx, sy; -- int x0, y0; -- -- int m00, m01; -- int m10, m11; -- -- Transform4 transform; -+public class Dasher implements sun.awt.geom.PathConsumer2D { - -- boolean symmetric; -- long ldet; -+ private final PathConsumer2D out; -+ private final float[] dash; -+ private final float startPhase; -+ private final boolean startDashOn; -+ private final int startIdx; -+ -+ private boolean starting; -+ private boolean needsMoveTo; -+ -+ private int idx; -+ private boolean dashOn; -+ private float phase; - -- boolean firstDashOn; -- boolean starting; -- int sx1, sy1; -+ private float sx, sy; -+ private float x0, y0; - -- /** -- * Empty constructor. setOutput and -- * setParameters must be called prior to calling any -- * other methods. -- */ -- public Dasher() {} -+ // temporary storage for the current curve -+ private float[] curCurvepts; - - /** - * Constructs a Dasher. - * -- * @param output an output LineSink. -- * @param dash an array of ints containing the dash -- * pattern in S15.16 format. -- * @param phase an int containing the dash phase in -- * S15.16 format. -- * @param transform a Transform4 object indicating -- * the transform that has been previously applied to all incoming -- * coordinates. This is required in order to compute dash lengths -- * properly. -+ * @param out an output PathConsumer2D. -+ * @param dash an array of floats containing the dash pattern -+ * @param phase a float containing the dash phase - */ -- public Dasher(LineSink output, -- int[] dash, int phase, -- Transform4 transform) { -- setOutput(output); -- setParameters(dash, phase, transform); -- } -- -- /** -- * Sets the output LineSink of this -- * Dasher. -- * -- * @param output an output LineSink. -- */ -- public void setOutput(LineSink output) { -- this.output = output; -- } -- -- /** -- * Sets the parameters of this Dasher. -- * -- * @param dash an array of ints containing the dash -- * pattern in S15.16 format. -- * @param phase an int containing the dash phase in -- * S15.16 format. -- * @param transform a Transform4 object indicating -- * the transform that has been previously applied to all incoming -- * coordinates. This is required in order to compute dash lengths -- * properly. -- */ -- public void setParameters(int[] dash, int phase, -- Transform4 transform) { -+ public Dasher(PathConsumer2D out, float[] dash, float phase) { - if (phase < 0) { - throw new IllegalArgumentException("phase < 0 !"); - } - -+ this.out = out; -+ - // Normalize so 0 <= phase < dash[0] - int idx = 0; - dashOn = true; -- int d; -+ float d; - while (phase >= (d = dash[idx])) { - phase -= d; - idx = (idx + 1) % dash.length; - dashOn = !dashOn; - } - -- this.dash = new int[dash.length]; -- for (int i = 0; i < dash.length; i++) { -- this.dash[i] = dash[i]; -- } -+ this.dash = dash; - this.startPhase = this.phase = phase; - this.startDashOn = dashOn; - this.startIdx = idx; -+ this.starting = true; - -- this.transform = transform; -- -- this.m00 = transform.m00; -- this.m01 = transform.m01; -- this.m10 = transform.m10; -- this.m11 = transform.m11; -- this.ldet = ((long)m00*m11 - (long)m01*m10) >> 16; -- this.symmetric = (m00 == m11 && m10 == -m01); -+ // we need curCurvepts to be able to contain 2 curves because when -+ // dashing curves, we need to subdivide it -+ curCurvepts = new float[8 * 2]; - } - -- public void moveTo(int x0, int y0) { -- output.moveTo(x0, y0); From tmarble at info9.net Fri Nov 5 15:28:18 2010 From: tmarble at info9.net (Tom Marble) Date: Fri, 05 Nov 2010 17:28:18 -0500 Subject: CFP Now Open: Free Java @ FOSDEM 2011 Message-ID: <4CD48502.1030102@info9.net> All: Join us at FOSDEM 2011 to be part of our sessions where we'll discuss the state of Free Java! http://wiki.debian.org/Java/DevJam/2011/Fosdem Our theme is "Java Sans Fronti?res" * Why Free Java technology is awesome * Standing on the Shoulders of Free Java * The future of Free Java The Call For Participation is OPEN NOW, but closes on the 3rd of December... So send in a talk proposal today and join us in Brussels 5-6 February! Why FOSDEM? * Engage in scintillating discussions with smart hackers over world famous Belgian Beer * Join the Web of Trust by getting your strong new key signed * Indulge in exquisite chocolate * Visit historic Brussels within walking distance Why the Free Java DevJam? * This is the most significant non-commercial, neutral environment for Java developers to meet * Learn how to get involved in technical Free Java projects * We will not shy away from politics (especially this year)! * We will get together for an awesome dinner * You will meet historic hackers in the evolution of Free Java Please join the freejava-devroom at lists.fosdem.org list for general discussion about the event. http://lists.fosdem.org/mailman/listinfo/freejava-devroom To submit a formal Talk Proposal follow the guidelines at http://wiki.debian.org/Java/DevJam/2011/Fosdem/CallForParticipation Respectfully, Andrew Haley GCJ Maintainer, GNU Classpath, IcedTea & OpenJDK Developer. Andrew John Hughes IcedTea Maintainer, GNU Classpath Maintainer, OpenJDK & GCJ Developer Christian Thalinger OpenJDK developer, former CACAO Maintainer Mark Wielaard GNU Classpath Maintainer, GCJ, IcedTea & OpenJDK contributor. Tom Marble Java Libre hacker, Former OpenJDK Ambassador From bugzilla-daemon at icedtea.classpath.org Fri Nov 5 17:29:07 2010 From: bugzilla-daemon at icedtea.classpath.org (bugzilla-daemon at icedtea.classpath.org) Date: Sat, 06 Nov 2010 00:29:07 +0000 Subject: [Bug 586] classes missing from src.zip Message-ID: http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=586 ------- Comment #1 from gnu_andrew at member.fsf.org 2010-11-06 00:29 ------- Some sources will have classes in other JAR files than rt.jar which is expected. Can you actually list which ones are at issue? -- Configure bugmail: http://icedtea.classpath.org/bugzilla/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are the assignee for the bug, or are watching the assignee. From bugzilla-daemon at icedtea.classpath.org Fri Nov 5 17:40:45 2010 From: bugzilla-daemon at icedtea.classpath.org (bugzilla-daemon at icedtea.classpath.org) Date: Sat, 06 Nov 2010 00:40:45 +0000 Subject: [Bug 586] classes missing from src.zip Message-ID: http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=586 ------- Comment #2 from drazzib at drazzib.com 2010-11-06 00:40 ------- Created an attachment (id=432) --> (http://icedtea.classpath.org/bugzilla/attachment.cgi?id=432&action=view) rt.jar filelist -- Configure bugmail: http://icedtea.classpath.org/bugzilla/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are the assignee for the bug, or are watching the assignee. From bugzilla-daemon at icedtea.classpath.org Fri Nov 5 17:41:05 2010 From: bugzilla-daemon at icedtea.classpath.org (bugzilla-daemon at icedtea.classpath.org) Date: Sat, 06 Nov 2010 00:41:05 +0000 Subject: [Bug 586] classes missing from src.zip Message-ID: http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=586 ------- Comment #3 from drazzib at drazzib.com 2010-11-06 00:41 ------- Created an attachment (id=433) --> (http://icedtea.classpath.org/bugzilla/attachment.cgi?id=433&action=view) src.zip filelist -- Configure bugmail: http://icedtea.classpath.org/bugzilla/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are the assignee for the bug, or are watching the assignee. From bugzilla-daemon at icedtea.classpath.org Fri Nov 5 17:48:53 2010 From: bugzilla-daemon at icedtea.classpath.org (bugzilla-daemon at icedtea.classpath.org) Date: Sat, 06 Nov 2010 00:48:53 +0000 Subject: [Bug 586] classes missing from src.zip Message-ID: http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=586 ------- Comment #4 from drazzib at drazzib.com 2010-11-06 00:48 ------- Hi Andrew, Here is some extracts of items IN rt.jar nut NOT IN src.zip : 1) java.awt.* : -java/awt/EventQueueItem -java/awt/FocusManager -java/awt/geom/AreaIterator -java/awt/ImageMediaEntry -java/awt/LightweightDispatcher -java/awt/MediaEntry -java/awt/MutableBoolean -java/awt/PeerFixer -java/awt/Queue -java/awt/VKCollection 2) javax.net.* : -javax/net/DefaultServerSocketFactory -javax/net/DefaultSocketFactory -javax/net/ServerSocketFactory -javax/net/SocketFactory -- Configure bugmail: http://icedtea.classpath.org/bugzilla/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are the assignee for the bug, or are watching the assignee. From bugzilla-daemon at icedtea.classpath.org Fri Nov 5 19:23:27 2010 From: bugzilla-daemon at icedtea.classpath.org (bugzilla-daemon at icedtea.classpath.org) Date: Sat, 06 Nov 2010 02:23:27 +0000 Subject: [Bug 585] Freenet throws java.lang.UnsatisfiedLinkError with OpenJDK/CACAO Message-ID: http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=585 gnu_andrew at member.fsf.org changed: What |Removed |Added ---------------------------------------------------------------------------- Status|NEW |ASSIGNED ------- Comment #1 from gnu_andrew at member.fsf.org 2010-11-06 02:23 ------- I've reproduced this with the attached simple test case: $ /home/andrew/build/cacao-icedtea6/bin/java Test Exception in thread "main" java.lang.UnsatisfiedLinkError: putBooleanVolatile at sun.reflect.UnsafeQualifiedStaticBooleanFieldAccessorImpl.set(UnsafeQualifiedStaticBooleanFieldAccessorImpl.java:83) at java.lang.reflect.Field.set(Field.java:675) at Test.main(Test.java:14) -- Configure bugmail: http://icedtea.classpath.org/bugzilla/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are the assignee for the bug, or are watching the assignee. From bugzilla-daemon at icedtea.classpath.org Fri Nov 5 19:23:38 2010 From: bugzilla-daemon at icedtea.classpath.org (bugzilla-daemon at icedtea.classpath.org) Date: Sat, 06 Nov 2010 02:23:38 +0000 Subject: [Bug 585] Freenet throws java.lang.UnsatisfiedLinkError with OpenJDK/CACAO Message-ID: http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=585 gnu_andrew at member.fsf.org changed: What |Removed |Added ---------------------------------------------------------------------------- AssignedTo|unassigned at icedtea.classpath|gnu_andrew at member.fsf.org |.org | Status|ASSIGNED |NEW -- Configure bugmail: http://icedtea.classpath.org/bugzilla/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are the assignee for the bug, or are watching the assignee. You are the assignee for the bug, or are watching the assignee. From liuqi at icedtea.classpath.org Sat Nov 6 02:36:56 2010 From: liuqi at icedtea.classpath.org (liuqi at icedtea.classpath.org) Date: Sat, 06 Nov 2010 09:36:56 +0000 Subject: /hg/openjdk6-mips: Fix a bug in the register allocator. Message-ID: changeset da31f361800f in /hg/openjdk6-mips details: http://icedtea.classpath.org/hg/openjdk6-mips?cmd=changeset;node=da31f361800f author: YANG Yongqiang date: Fri Nov 05 17:36:30 2010 +0800 Fix a bug in the register allocator. In MIPS, float registers containing double-precision operands must be both adjacent physically and aligned. A single-precision operand takes up two float registers temporarily. Thus, one of them is wasted. diffstat: 3 files changed, 67 insertions(+), 143 deletions(-) hotspot/src/cpu/mips/vm/c1_LIRAssembler_mips.cpp | 132 +++++++++++----------- hotspot/src/cpu/mips/vm/c1_LinearScan_mips.hpp | 77 ------------ hotspot/src/share/vm/runtime/reflection.cpp | 1 diffs (244 lines): diff -r 388ae1bd0bdd -r da31f361800f hotspot/src/cpu/mips/vm/c1_LIRAssembler_mips.cpp --- a/hotspot/src/cpu/mips/vm/c1_LIRAssembler_mips.cpp Thu Nov 04 11:15:53 2010 +0800 +++ b/hotspot/src/cpu/mips/vm/c1_LIRAssembler_mips.cpp Fri Nov 05 17:36:30 2010 +0800 @@ -2367,72 +2367,72 @@ void LIR_Assembler::emit_opTypeCheck(LIR void LIR_Assembler::emit_opTypeCheck(LIR_OpTypeCheck* op) { LIR_Code code = op->code(); if (code == lir_store_check) { - Register value = op->object()->as_register(); - Register array = op->array()->as_register(); - Register k_RInfo = op->tmp1()->as_register(); - Register klass_RInfo = op->tmp2()->as_register(); - - CodeStub* stub = op->stub(); - Label done; - - __ beq(value, ZERO, done); - __ delayed()->nop(); - add_debug_info_for_null_check_here(op->info_for_exception()); - - __ lw(k_RInfo, array, oopDesc::klass_offset_in_bytes()); - __ lw(klass_RInfo, value, oopDesc::klass_offset_in_bytes()); - - __ lw(k_RInfo, k_RInfo, objArrayKlass::element_klass_offset_in_bytes() + sizeof(oopDesc)); - // get super_check_offset - //for SIGBUS, FIXME, Jerome - __ nop(); - __ nop(); - __ lw(T9, k_RInfo, sizeof(oopDesc) + Klass::super_check_offset_offset_in_bytes()); - - // See if we get an immediate positive hit - __ add(AT, klass_RInfo, T9); - __ lw(AT, AT, 0); - __ beq(k_RInfo, AT, done); - __ delayed()->nop(); - - // check for immediate negative hit - __ move(AT, sizeof(oopDesc) + Klass::secondary_super_cache_offset_in_bytes()); - __ bne(T9, AT, *stub->entry()); // fail - __ delayed()->nop(); - - // check for self - __ beq(klass_RInfo, k_RInfo, done); - __ delayed()->nop(); - - // super type array - __ lw(T8, klass_RInfo, sizeof(oopDesc) + Klass::secondary_supers_offset_in_bytes()); - // length - __ lw(T9, T8, arrayOopDesc::length_offset_in_bytes()); - - // base - __ addi(T8, T8, arrayOopDesc::base_offset_in_bytes(T_OBJECT)); - - Label miss, hit, loop; - // T9:count, T8:base, k_RInfo: super klass - __ bind(loop); - __ beq(T9, ZERO, miss); - __ delayed()->lw(AT, T8, 0); - __ beq(AT, k_RInfo, hit); - __ delayed(); - __ addiu(T9, T9, -1); - __ b(loop); - __ delayed(); - __ addi(T8, T8, 1 * wordSize); - - __ bind(miss); - __ b(*stub->entry()); - __ delayed()->nop(); - - __ bind(hit); - __ sw(k_RInfo, klass_RInfo, sizeof(oopDesc) - + Klass::secondary_super_cache_offset_in_bytes()); - - __ bind(done); + Register value = op->object()->as_register(); + Register array = op->array()->as_register(); + Register k_RInfo = op->tmp1()->as_register(); + Register klass_RInfo = op->tmp2()->as_register(); + + CodeStub* stub = op->stub(); + Label done; + + __ beq(value, ZERO, done); + __ delayed()->nop(); + add_debug_info_for_null_check_here(op->info_for_exception()); + + __ lw(k_RInfo, array, oopDesc::klass_offset_in_bytes()); + __ lw(klass_RInfo, value, oopDesc::klass_offset_in_bytes()); + + __ lw(k_RInfo, k_RInfo, objArrayKlass::element_klass_offset_in_bytes() + sizeof(oopDesc)); + // get super_check_offset + //for SIGBUS, FIXME, Jerome + __ nop(); + __ nop(); + __ lw(T9, k_RInfo, sizeof(oopDesc) + Klass::super_check_offset_offset_in_bytes()); + + // See if we get an immediate positive hit + __ add(AT, klass_RInfo, T9); + __ lw(AT, AT, 0); + __ beq(k_RInfo, AT, done); + __ delayed()->nop(); + + // check for immediate negative hit + __ move(AT, sizeof(oopDesc) + Klass::secondary_super_cache_offset_in_bytes()); + __ bne(T9, AT, *stub->entry()); // fail + __ delayed()->nop(); + + // check for self + __ beq(klass_RInfo, k_RInfo, done); + __ delayed()->nop(); + + // super type array + __ lw(T8, klass_RInfo, sizeof(oopDesc) + Klass::secondary_supers_offset_in_bytes()); + // length + __ lw(T9, T8, arrayOopDesc::length_offset_in_bytes()); + + // base + __ addi(T8, T8, arrayOopDesc::base_offset_in_bytes(T_OBJECT)); + + Label miss, hit, loop; + // T9:count, T8:base, k_RInfo: super klass + __ bind(loop); + __ beq(T9, ZERO, miss); + __ delayed()->lw(AT, T8, 0); + __ beq(AT, k_RInfo, hit); + __ delayed(); + __ addiu(T9, T9, -1); + __ b(loop); + __ delayed(); + __ addi(T8, T8, 1 * wordSize); + + __ bind(miss); + __ b(*stub->entry()); + __ delayed()->nop(); + + __ bind(hit); + __ sw(k_RInfo, klass_RInfo, sizeof(oopDesc) + + Klass::secondary_super_cache_offset_in_bytes()); + + __ bind(done); } else if (op->code() == lir_checkcast) { // we always need a stub for the failure case. CodeStub* stub = op->stub(); diff -r 388ae1bd0bdd -r da31f361800f hotspot/src/cpu/mips/vm/c1_LinearScan_mips.hpp --- a/hotspot/src/cpu/mips/vm/c1_LinearScan_mips.hpp Thu Nov 04 11:15:53 2010 +0800 +++ b/hotspot/src/cpu/mips/vm/c1_LinearScan_mips.hpp Fri Nov 05 17:36:30 2010 +0800 @@ -36,7 +36,7 @@ inline int LinearScan::num_physical_regs inline bool LinearScan::requires_adjacent_regs(BasicType type) { - return false; + return type == T_FLOAT || type == T_DOUBLE; } inline bool LinearScan::is_caller_save(int assigned_reg) { @@ -68,78 +68,3 @@ inline bool LinearScanWalker::pd_init_re } return false; } - -/* -class FpuStackAllocator VALUE_OBJ_CLASS_SPEC { - private: - Compilation* _compilation; - LinearScan* _allocator; - - LIR_OpVisitState visitor; - - LIR_List* _lir; - int _pos; - FpuStackSim _sim; - FpuStackSim _temp_sim; - - bool _debug_information_computed; - - LinearScan* allocator() { return _allocator; } - Compilation* compilation() const { return _compilation; } - - // unified bailout support - void bailout(const char* msg) const { compilation()->bailout(msg); } - bool bailed_out() const { return compilation()->bailed_out(); } - - int pos() { return _pos; } - void set_pos(int pos) { _pos = pos; } - LIR_Op* cur_op() { return lir()->instructions_list()->at(pos()); } - LIR_List* lir() { return _lir; } - void set_lir(LIR_List* lir) { _lir = lir; } - FpuStackSim* sim() { return &_sim; } - FpuStackSim* temp_sim() { return &_temp_sim; } - - int fpu_num(LIR_Opr opr); - int tos_offset(LIR_Opr opr); - LIR_Opr to_fpu_stack_top(LIR_Opr opr, bool dont_check_offset = false); - - // Helper functions for handling operations - void insert_op(LIR_Op* op); - void insert_exchange(int offset); - void insert_exchange(LIR_Opr opr); - void insert_free(int offset); - void insert_free_if_dead(LIR_Opr opr); - void insert_free_if_dead(LIR_Opr opr, LIR_Opr ignore); - void insert_copy(LIR_Opr from, LIR_Opr to); - void do_rename(LIR_Opr from, LIR_Opr to); - void do_push(LIR_Opr opr); - void pop_if_last_use(LIR_Op* op, LIR_Opr opr); - void pop_always(LIR_Op* op, LIR_Opr opr); - void clear_fpu_stack(LIR_Opr preserve); - void handle_op1(LIR_Op1* op1); - void handle_op2(LIR_Op2* op2); - void handle_opCall(LIR_OpCall* opCall); - void compute_debug_information(LIR_Op* op); - void allocate_exception_handler(XHandler* xhandler); - void allocate_block(BlockBegin* block); - -#ifndef PRODUCT - void check_invalid_lir_op(LIR_Op* op); -#endif - - // Helper functions for merging of fpu stacks - void merge_insert_add(LIR_List* instrs, FpuStackSim* cur_sim, int reg); - void merge_insert_xchg(LIR_List* instrs, FpuStackSim* cur_sim, int slot); - void merge_insert_pop(LIR_List* instrs, FpuStackSim* cur_sim); - bool merge_rename(FpuStackSim* cur_sim, FpuStackSim* sux_sim, int start_slot, int change_slot); - void merge_fpu_stack(LIR_List* instrs, FpuStackSim* cur_sim, FpuStackSim* sux_sim); - void merge_cleanup_fpu_stack(LIR_List* instrs, FpuStackSim* cur_sim, BitMap& live_fpu_regs); - bool merge_fpu_stack_with_successors(BlockBegin* block); - - public: - LIR_Opr to_fpu_stack(LIR_Opr opr); // used by LinearScan for creation of debug information - - FpuStackAllocator(Compilation* compilation, LinearScan* allocator); - void allocate(); -}; -*/ diff -r 388ae1bd0bdd -r da31f361800f hotspot/src/share/vm/runtime/reflection.cpp --- a/hotspot/src/share/vm/runtime/reflection.cpp Thu Nov 04 11:15:53 2010 +0800 +++ b/hotspot/src/share/vm/runtime/reflection.cpp Fri Nov 05 17:36:30 2010 +0800 @@ -862,7 +862,6 @@ oop Reflection::invoke(instanceKlassHand // resolve based on the receiver if (instanceKlass::cast(reflected_method->method_holder())->is_interface()) { // resolve interface call - tty->print_cr("resolve interface call"); if (ReflectionWrapResolutionErrors) { // new default: 6531596 // Match resolution errors with those thrown due to reflection inlining From bugzilla-daemon at icedtea.classpath.org Sat Nov 6 02:51:20 2010 From: bugzilla-daemon at icedtea.classpath.org (bugzilla-daemon at icedtea.classpath.org) Date: Sat, 06 Nov 2010 09:51:20 +0000 Subject: [Bug 587] New: IcedTea6 1.8.2 (HotSpot Server VM) crash when playing Freecol game Message-ID: http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=587 Summary: IcedTea6 1.8.2 (HotSpot Server VM) crash when playing Freecol game Product: IcedTea Version: 6-1.8.1 Platform: x86_64 URL: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=568657 OS/Version: Linux Status: NEW Severity: normal Priority: P2 Component: IcedTea6 AssignedTo: unassigned at icedtea.classpath.org ReportedBy: drazzib at drazzib.com Hi, Steps to reproduce: 1) install freecol (from Debian package or from http://www.freecol.org/) 1') [debian] Remove workaround from /usr/games/freecol: delete -Xincgc 2) play the game for a few rounds Expected results: 1) openjdk does not crash Actual results: 1) openjdk crashes with SIGSEGV Actual workaround : -Xincgc (incremental garbage collector) seems to - at least - reduce occurence of this segfault. Regards, -- Configure bugmail: http://icedtea.classpath.org/bugzilla/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are the assignee for the bug, or are watching the assignee. From bugzilla-daemon at icedtea.classpath.org Sat Nov 6 02:51:57 2010 From: bugzilla-daemon at icedtea.classpath.org (bugzilla-daemon at icedtea.classpath.org) Date: Sat, 06 Nov 2010 09:51:57 +0000 Subject: [Bug 587] IcedTea6 1.8.2 (HotSpot Server VM) crash when playing Freecol game Message-ID: http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=587 ------- Comment #1 from drazzib at drazzib.com 2010-11-06 09:51 ------- Created an attachment (id=435) --> (http://icedtea.classpath.org/bugzilla/attachment.cgi?id=435&action=view) First crash (after 2-3 minutes of game) -- Configure bugmail: http://icedtea.classpath.org/bugzilla/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are the assignee for the bug, or are watching the assignee. From bugzilla-daemon at icedtea.classpath.org Sat Nov 6 02:52:19 2010 From: bugzilla-daemon at icedtea.classpath.org (bugzilla-daemon at icedtea.classpath.org) Date: Sat, 06 Nov 2010 09:52:19 +0000 Subject: [Bug 587] IcedTea6 1.8.2 (HotSpot Server VM) crash when playing Freecol game Message-ID: http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=587 ------- Comment #2 from drazzib at drazzib.com 2010-11-06 09:52 ------- Created an attachment (id=436) --> (http://icedtea.classpath.org/bugzilla/attachment.cgi?id=436&action=view) Second crash (after 1 minutes of game) -- Configure bugmail: http://icedtea.classpath.org/bugzilla/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are the assignee for the bug, or are watching the assignee. From liuqi at loongson.cn Sat Nov 6 05:12:17 2010 From: liuqi at loongson.cn (LIU Qi) Date: Sat, 6 Nov 2010 20:12:17 +0800 Subject: OpenJDK MIPS port releases the init document Message-ID: <20101106121216.GA7549@loongson.cn> Hi guys, We have written up some OpenJDK MIPS port related information on this wiki page: http://icedtea.classpath.org/wiki/MIPSPort We will update and rich the information continuously. Any comments and suggestions are welcomed. Regards, Qi -- LIU Qi liuqi at loongson.cn liuqi82 at gmail.com Loongson Technology Co. Ltd. PGP Key fingerprint: 3D29 FDFD AFB3 225D B744 7FAB 51C7 4820 63BA 272F From doko at ubuntu.com Sat Nov 6 09:12:08 2010 From: doko at ubuntu.com (Matthias Klose) Date: Sat, 06 Nov 2010 17:12:08 +0100 Subject: [icedtea-web] RFC: use browser path from configuration In-Reply-To: <4CD409F2.5000908@redhat.com> References: <4CD409F2.5000908@redhat.com> Message-ID: <4CD57E58.4010600@ubuntu.com> On 05.11.2010 14:43, Omair Majid wrote: > Hi, > > The attached patch integrates the browser path selection and usage into the netx > DeploymentConfiguration. > > ChangeLog: > 2010-11-05 Omair Majid > > * netx/net/sourceforge/jnlp/runtime/DeploymentConfiguration.java: > Add KEY_BROWSER_PATH. > (loadDefaultProperties): Use KEY_BROWSER_PATH. > * netx/net/sourceforge/jnlp/services/XBasicService.java > (initialize): Use the browser command from the configuration. > Save updates to configuration as well. > > Any thoughts or comments? is there no way to detect the browser which is currently running (e.g. an environment variable set by the browser?) From bugzilla-daemon at icedtea.classpath.org Mon Nov 8 02:49:18 2010 From: bugzilla-daemon at icedtea.classpath.org (bugzilla-daemon at icedtea.classpath.org) Date: Mon, 08 Nov 2010 10:49:18 +0000 Subject: [Bug 587] IcedTea6 1.8.2 (HotSpot Server VM) crash when playing Freecol game Message-ID: http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=587 ------- Comment #3 from xerxes at zafena.se 2010-11-08 10:49 ------- (In reply to comment #0) > Hi, > > Steps to reproduce: > 1) install freecol (from Debian package or from http://www.freecol.org/) > 1') [debian] Remove workaround from /usr/games/freecol: delete -Xincgc > 2) play the game for a few rounds > > Expected results: > 1) openjdk does not crash > > Actual results: > 1) openjdk crashes with SIGSEGV > > Actual workaround : > -Xincgc (incremental garbage collector) seems to - at least - reduce occurence > of this segfault. Hi would it be possible for you to file a new bug with the logs included from when you hit the segfault using -Xincgc on OpenJDK 64-Bit Server VM (16.0-b13 mixed mode linux-amd64 ) as well? We are most likely observing two different kinds of garbage collector bugs so it would be great to have to separate bugreports. Thanks Xerxes -- Configure bugmail: http://icedtea.classpath.org/bugzilla/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are the assignee for the bug, or are watching the assignee. From ptisnovs at icedtea.classpath.org Mon Nov 8 04:24:05 2010 From: ptisnovs at icedtea.classpath.org (ptisnovs at icedtea.classpath.org) Date: Mon, 08 Nov 2010 12:24:05 +0000 Subject: /hg/icedtea6: Testcase correction, now the regression test Test6... Message-ID: changeset c06d558f7684 in /hg/icedtea6 details: http://icedtea.classpath.org/hg/icedtea6?cmd=changeset;node=c06d558f7684 author: ptisnovs date: Mon Nov 08 12:28:36 2010 +0100 Testcase correction, now the regression test Test6857159 should not timeout on most machines diffstat: 3 files changed, 30 insertions(+), 1 deletion(-) ChangeLog | 7 +++++ Makefile.am | 3 +- patches/openjdk/6997495-test_correction_6857159.patch | 21 +++++++++++++++++ diffs (52 lines): diff -r f7334fbff599 -r c06d558f7684 ChangeLog --- a/ChangeLog Fri Nov 05 16:50:59 2010 -0400 +++ b/ChangeLog Mon Nov 08 12:28:36 2010 +0100 @@ -1,3 +1,10 @@ 2010-11-05 Denis Lila + + * Makefile.am: + * patches/openjdk/6997495-test_correction_6857159.patch: + Testcase correction, now the regression test Test6857159 should + not timeout on most machines. + 2010-11-05 Denis Lila * Makefile.am: diff -r f7334fbff599 -r c06d558f7684 Makefile.am --- a/Makefile.am Fri Nov 05 16:50:59 2010 -0400 +++ b/Makefile.am Mon Nov 08 12:28:36 2010 +0100 @@ -294,7 +294,8 @@ ICEDTEA_PATCHES = \ patches/openjdk/6853592-badwindow-warning-fix.patch \ patches/6703377-freetypescaler.patch \ patches/icedtea-jtreg-international-fonts.patch \ - patches/openjdk/6967436-6976265-6967434-pisces.patch + patches/openjdk/6967436-6976265-6967434-pisces.patch \ + patches/openjdk/6997495-test_correction_6857159.patch if WITH_ALT_HSBUILD ICEDTEA_PATCHES += \ diff -r f7334fbff599 -r c06d558f7684 patches/openjdk/6997495-test_correction_6857159.patch --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/patches/openjdk/6997495-test_correction_6857159.patch Mon Nov 08 12:28:36 2010 +0100 @@ -0,0 +1,21 @@ +# HG changeset patch +# User ptisnovs +# Date 1288875792 -3600 +# Node ID 086898a88056cd9f7de4475b7ebf4cc6c65f2b5e +# Parent 68d6141ea19de3a9ba98ef753f0da41a61f736a0 +6997495: correction of regression test compiler/6857159/Test6857159 +Summary: Testcase correction. +Reviewed-by: never + +diff -r 68d6141ea19d -r 086898a88056 test/compiler/6857159/Test6857159.java +--- openjdk.old/hotspot/test/compiler/6857159/Test6857159.java 2010-10-08 22:29:24.000000000 +0200 ++++ openjdk/hotspot/test/compiler/6857159/Test6857159.java 2010-11-04 15:27:47.000000000 +0100 +@@ -54,7 +54,7 @@ + } + + public static void main(String[] args) throws Exception { +- for (int i = 0; i < 100000; i++) { ++ for (int i = 0; i < 20000; i++) { + Thread t = null; + switch (i % 3) { + case 0: t = new ct0(); break; From liuqi at icedtea.classpath.org Mon Nov 8 04:35:05 2010 From: liuqi at icedtea.classpath.org (liuqi at icedtea.classpath.org) Date: Mon, 08 Nov 2010 12:35:05 +0000 Subject: /hg/openjdk6-mips: Fix bug related to the unsafe ops. Message-ID: changeset 8ef762f87d0e in /hg/openjdk6-mips details: http://icedtea.classpath.org/hg/openjdk6-mips?cmd=changeset;node=8ef762f87d0e author: YANG Yongqiang date: Mon Nov 08 19:53:05 2010 +0800 Fix bug related to the unsafe ops. diffstat: 2 files changed, 17 insertions(+), 12 deletions(-) hotspot/src/cpu/mips/vm/c1_LIRAssembler_mips.cpp | 17 +++++++++++------ hotspot/src/cpu/mips/vm/c1_LIRGenerator_mips.cpp | 12 ++++++------ diffs (117 lines): diff -r da31f361800f -r 8ef762f87d0e hotspot/src/cpu/mips/vm/c1_LIRAssembler_mips.cpp --- a/hotspot/src/cpu/mips/vm/c1_LIRAssembler_mips.cpp Fri Nov 05 17:36:30 2010 +0800 +++ b/hotspot/src/cpu/mips/vm/c1_LIRAssembler_mips.cpp Mon Nov 08 19:53:05 2010 +0800 @@ -2371,6 +2371,7 @@ void LIR_Assembler::emit_opTypeCheck(LIR Register array = op->array()->as_register(); Register k_RInfo = op->tmp1()->as_register(); Register klass_RInfo = op->tmp2()->as_register(); + Register tmp = op->tmp3()->as_register(); CodeStub* stub = op->stub(); Label done; @@ -2387,27 +2388,29 @@ void LIR_Assembler::emit_opTypeCheck(LIR //for SIGBUS, FIXME, Jerome __ nop(); __ nop(); - __ lw(T9, k_RInfo, sizeof(oopDesc) + Klass::super_check_offset_offset_in_bytes()); + __ lw(tmp, k_RInfo, sizeof(oopDesc) + Klass::super_check_offset_offset_in_bytes()); // See if we get an immediate positive hit - __ add(AT, klass_RInfo, T9); + __ add(AT, klass_RInfo, tmp); + __ lw(AT, AT, 0); __ beq(k_RInfo, AT, done); __ delayed()->nop(); // check for immediate negative hit __ move(AT, sizeof(oopDesc) + Klass::secondary_super_cache_offset_in_bytes()); - __ bne(T9, AT, *stub->entry()); // fail + __ bne(tmp, AT, *stub->entry()); // fail __ delayed()->nop(); // check for self __ beq(klass_RInfo, k_RInfo, done); __ delayed()->nop(); + __ push(T8); // super type array __ lw(T8, klass_RInfo, sizeof(oopDesc) + Klass::secondary_supers_offset_in_bytes()); // length - __ lw(T9, T8, arrayOopDesc::length_offset_in_bytes()); + __ lw(tmp, T8, arrayOopDesc::length_offset_in_bytes()); // base __ addi(T8, T8, arrayOopDesc::base_offset_in_bytes(T_OBJECT)); @@ -2415,22 +2418,24 @@ void LIR_Assembler::emit_opTypeCheck(LIR Label miss, hit, loop; // T9:count, T8:base, k_RInfo: super klass __ bind(loop); - __ beq(T9, ZERO, miss); + __ beq(tmp, ZERO, miss); __ delayed()->lw(AT, T8, 0); __ beq(AT, k_RInfo, hit); __ delayed(); - __ addiu(T9, T9, -1); + __ addiu(tmp, tmp, -1); __ b(loop); __ delayed(); __ addi(T8, T8, 1 * wordSize); __ bind(miss); + __ pop(T8); __ b(*stub->entry()); __ delayed()->nop(); __ bind(hit); __ sw(k_RInfo, klass_RInfo, sizeof(oopDesc) + Klass::secondary_super_cache_offset_in_bytes()); + __ pop(T8); __ bind(done); } else if (op->code() == lir_checkcast) { diff -r da31f361800f -r 8ef762f87d0e hotspot/src/cpu/mips/vm/c1_LIRGenerator_mips.cpp --- a/hotspot/src/cpu/mips/vm/c1_LIRGenerator_mips.cpp Fri Nov 05 17:36:30 2010 +0800 +++ b/hotspot/src/cpu/mips/vm/c1_LIRGenerator_mips.cpp Mon Nov 08 19:53:05 2010 +0800 @@ -1269,9 +1269,9 @@ void LIRGenerator::volatile_field_load(L void LIRGenerator::get_Object_unsafe(LIR_Opr dst, LIR_Opr src, LIR_Opr offset, BasicType type, bool is_volatile) { - __ add(src, src, offset); + __ add(src, offset, offset); if (is_volatile && type == T_LONG) { - LIR_Address* addr = new LIR_Address(src, 0, T_DOUBLE); + LIR_Address* addr = new LIR_Address(offset, 0, T_DOUBLE); LIR_Opr tmp = new_register(T_DOUBLE); __ load(addr, tmp); LIR_Opr spill = new_register(T_LONG); @@ -1279,7 +1279,7 @@ void LIRGenerator::get_Object_unsafe(LIR __ move(tmp, spill); __ move(spill, dst); } else { - LIR_Address* addr = new LIR_Address(src, 0, type); + LIR_Address* addr = new LIR_Address(offset, 0, type); __ load(addr, dst); } } @@ -1287,9 +1287,9 @@ void LIRGenerator::get_Object_unsafe(LIR void LIRGenerator::put_Object_unsafe(LIR_Opr src, LIR_Opr offset, LIR_Opr data, BasicType type, bool is_volatile) { - __ add(src, src, offset); + __ add(src, offset, offset); if (is_volatile && type == T_LONG) { - LIR_Address* addr = new LIR_Address(src, 0, T_DOUBLE); + LIR_Address* addr = new LIR_Address(offset, 0, T_DOUBLE); LIR_Opr tmp = new_register(T_DOUBLE); LIR_Opr spill = new_register(T_DOUBLE); set_vreg_flag(spill, must_start_in_memory); @@ -1298,7 +1298,7 @@ void LIRGenerator::put_Object_unsafe(LIR __ move(tmp, addr); } else { - LIR_Address* addr = new LIR_Address(src, 0, type); + LIR_Address* addr = new LIR_Address(offset, 0, type); bool is_obj = (type == T_ARRAY || type == T_OBJECT); if (is_obj) { // Do the pre-write barrier, if any. From bugzilla-daemon at icedtea.classpath.org Mon Nov 8 07:00:59 2010 From: bugzilla-daemon at icedtea.classpath.org (bugzilla-daemon at icedtea.classpath.org) Date: Mon, 08 Nov 2010 15:00:59 +0000 Subject: [Bug 587] IcedTea6 1.8.2 (HotSpot Server VM) crash when playing Freecol game Message-ID: http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=587 ------- Comment #4 from xerxes at zafena.se 2010-11-08 15:00 ------- Created an attachment (id=437) --> (http://icedtea.classpath.org/bugzilla/attachment.cgi?id=437&action=view) chrash hs_err_pidxxx.log on ia32 using icedtea6 1.8.2 I can confirm this bug, I am able to reproduce this bug on ia32 by using the testcase in comment #1: using xerxes at xerxes-J464X:~$ java -version java version "1.6.0_18" OpenJDK Runtime Environment (IcedTea6 1.8.2) (6b18-1.8.2-4ubuntu2) OpenJDK Server VM (build 16.0-b13, mixed mode) -- Configure bugmail: http://icedtea.classpath.org/bugzilla/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are the assignee for the bug, or are watching the assignee. From bugzilla-daemon at icedtea.classpath.org Mon Nov 8 07:10:44 2010 From: bugzilla-daemon at icedtea.classpath.org (bugzilla-daemon at icedtea.classpath.org) Date: Mon, 08 Nov 2010 15:10:44 +0000 Subject: [Bug 587] IcedTea6 1.8.2 (HotSpot Server VM) crash when playing Freecol game Message-ID: http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=587 ------- Comment #5 from xerxes at zafena.se 2010-11-08 15:10 ------- Im unable to reproduce this bug using a recently compiled openjdk and hotspot on ia32. I am unable to reproduce the crashing testcase using: xerxes at xerxes-J464X:~$ java -version java version "1.6.0_20" OpenJDK Runtime Environment (IcedTea6 1.10pre+r0bfb4898c039) (Ubuntu build 1.6.0_20-b20) OpenJDK Server VM (build 19.0-b06, mixed mode) Damien: would you please try reproduce this bug using at least the latest icedtea6 1.9 release? I belive this bug have been fixed using the latest openjdk6 and hotspot sources. -- Configure bugmail: http://icedtea.classpath.org/bugzilla/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are the assignee for the bug, or are watching the assignee. From ptisnovs at redhat.com Mon Nov 8 07:18:17 2010 From: ptisnovs at redhat.com (Pavel Tisnovsky) Date: Mon, 08 Nov 2010 16:18:17 +0100 Subject: Reviewer needed: font configuration correction for Fedora 11, 12, 13 and 14 Message-ID: <4CD814B9.2030509@redhat.com> Hi all, can anybody please review fix for F11-F14 font configuration which is based on patches created by Jiri Vanek? The fix is divided into three patches: separated patch for AWT Makefile, second patch which creates new font configuration files for F11 and F12 (the content of this files is the same as content of original Fedora font configuration, ie. application of this patch is the same as doing 'cp' but I don't want to make changes in Makefile.am) and the third patch which makes all needed changes in F11, F12 and common Fedora font configuration files. Jiri thinks that the division of the fix into three separate patches is easier for further adjustments in the future. All three patches are attached to this mail as well as hg diffstat done against IcedTea6 HEAD. Thank you in advance, Pavel -------------- next part -------------- An embedded and charset-unspecified text was scrubbed... Name: diffstat Url: http://mail.openjdk.java.net/pipermail/distro-pkg-dev/attachments/20101108/6479ff7c/diffstat.ksh -------------- next part -------------- A non-text attachment was scrubbed... Name: icedtea-fontconfig-Fedora-11-14-awt-makefile.patch Type: text/x-patch Size: 458 bytes Desc: not available Url : http://mail.openjdk.java.net/pipermail/distro-pkg-dev/attachments/20101108/6479ff7c/icedtea-fontconfig-Fedora-11-14-awt-makefile.patch -------------- next part -------------- A non-text attachment was scrubbed... Name: icedtea-fontconfig-Fedora-11-14-changes.patch Type: text/x-patch Size: 30080 bytes Desc: not available Url : http://mail.openjdk.java.net/pipermail/distro-pkg-dev/attachments/20101108/6479ff7c/icedtea-fontconfig-Fedora-11-14-changes.patch -------------- next part -------------- A non-text attachment was scrubbed... Name: icedtea-fontconfig-Fedora-11-14-create.patch Type: text/x-patch Size: 31132 bytes Desc: not available Url : http://mail.openjdk.java.net/pipermail/distro-pkg-dev/attachments/20101108/6479ff7c/icedtea-fontconfig-Fedora-11-14-create.patch From omajid at redhat.com Mon Nov 8 07:19:32 2010 From: omajid at redhat.com (Omair Majid) Date: Mon, 08 Nov 2010 10:19:32 -0500 Subject: [icedtea-web] RFC: use browser path from configuration In-Reply-To: <4CD57E58.4010600@ubuntu.com> References: <4CD409F2.5000908@redhat.com> <4CD57E58.4010600@ubuntu.com> Message-ID: <4CD81504.7090703@redhat.com> On 11/06/2010 12:12 PM, Matthias Klose wrote: > On 05.11.2010 14:43, Omair Majid wrote: >> Hi, >> >> The attached patch integrates the browser path selection and usage >> into the netx >> DeploymentConfiguration. >> >> ChangeLog: >> 2010-11-05 Omair Majid >> >> * netx/net/sourceforge/jnlp/runtime/DeploymentConfiguration.java: >> Add KEY_BROWSER_PATH. >> (loadDefaultProperties): Use KEY_BROWSER_PATH. >> * netx/net/sourceforge/jnlp/services/XBasicService.java >> (initialize): Use the browser command from the configuration. >> Save updates to configuration as well. >> >> Any thoughts or comments? > > is there no way to detect the browser which is currently running (e.g. > an environment variable set by the browser?) One of the goals for this project is to be 100% compatible to Java Web Start. And Java Web Start uses a single preselected browser using the same configuration option. Yes, it's not the greatest way to find the user's browser but since Java Web Start does it this way, we should support it too. That said, I would like to add additional methods to find the user's preferred browser. Do you know of a simple way to identify the current browser? It is possible to use xdg-open but a quick test shows that it uses the user's default (not necessarily the currently running) browser to open the URL. If you know of alternatives, please let me know. I cant guarantee when I will get around to implementing this though. Of course, patches are more than welcome! Cheers, Omair From omajid at redhat.com Mon Nov 8 07:36:46 2010 From: omajid at redhat.com (Omair Majid) Date: Mon, 08 Nov 2010 10:36:46 -0500 Subject: [icedtea-web] RFC: fix icon names for desktop entries Message-ID: <4CD8190E.7070700@redhat.com> Hi, The attached patch removes file extensions from the icon names used in desktop entries. As the algorithm in the Icon Theme Specification [1] implies, icon names should not have extensions if they are not absolute paths. ChangeLog 2010-11-08 Omair Majid * javaws.desktop: Change value for key "Icon" to "javaws". * netx/net/sourceforge/jnlp/util/XDesktopEntry.java: Change JAVA_ICON_NAME to "java". Any thoughts or comments? Thanks, Omair [1] http://standards.freedesktop.org/icon-theme-spec/latest/ar01s05.html -------------- next part -------------- A non-text attachment was scrubbed... Name: icedtea-web-fix-shortcut-icon-name.patch Type: text/x-patch Size: 810 bytes Desc: not available Url : http://mail.openjdk.java.net/pipermail/distro-pkg-dev/attachments/20101108/e557025b/icedtea-web-fix-shortcut-icon-name.patch From ahughes at redhat.com Mon Nov 8 07:37:15 2010 From: ahughes at redhat.com (Dr Andrew John Hughes) Date: Mon, 8 Nov 2010 15:37:15 +0000 Subject: Reviewer needed: font configuration correction for Fedora 11, 12, 13 and 14 In-Reply-To: <4CD814B9.2030509@redhat.com> References: <4CD814B9.2030509@redhat.com> Message-ID: <20101108153715.GB6830@rivendell.middle-earth.co.uk> On 16:18 Mon 08 Nov , Pavel Tisnovsky wrote: > Hi all, > > can anybody please review fix for F11-F14 font configuration which is based on patches created by Jiri Vanek? > > The fix is divided into three patches: separated patch for AWT Makefile, second patch which creates new font > configuration files for F11 and F12 (the content of this files is the same as content of original Fedora font > configuration, ie. application of this patch is the same as doing 'cp' but I don't want to make changes in Makefile.am) > and the third patch which makes all needed changes in F11, F12 and common Fedora font configuration files. Jiri thinks > that the division of the fix into three separate patches is easier for further adjustments in the future. > > All three patches are attached to this mail as well as hg diffstat done against IcedTea6 HEAD. > > Thank you in advance, > Pavel * Please give the Makefile patch a shorter name e.g. f14-fonts.patch. Especially don't keep adding this useless 'icedtea-' prefix. I intend to remove this where it is used before 1.10. * I thought only changes needed to be made to support f14. So why are the files for f11, f12 & f13 being changed? * We should support f9 and f10 too as they were supported before and this will break them otherwise. IIRC f9 was the first supported, but someone correct me if I'm wrong. * The files should be copied to make it clear they are identical copies of the original. If you're unhappy making these changes to Makefile.am, I can handle that part or talk you through how to do it. > # HG changeset patch > # User ptisnovs > # Date 1289228160 -3600 > # Node ID cef084267617e972ba143e8c362c4f7eb2614743 > # Parent c06d558f7684615065180c613e44025d84694373 > Font configuration correction for Fedora 11, 12, 13 and 14. > > diff -r c06d558f7684 -r cef084267617 ChangeLog > --- a/ChangeLog Mon Nov 08 12:28:36 2010 +0100 > +++ b/ChangeLog Mon Nov 08 15:56:00 2010 +0100 > @@ -1,3 +1,11 @@ > +2010-11-09 Jiri Vanek > + > + * Makefile.am: > + * patches/icedtea-fontconfig-Fedora-11-14-awt-makefile.patch > + * patches/icedtea-fontconfig-Fedora-11-14-create.patch > + * patches/icedtea-fontconfig-Fedora-11-14-changes.patch > + Font configuration correction for Fedora 11, 12, 13 and 14. > + > 2010-11-08 Pavel Tisnovsky > > * Makefile.am: > diff -r c06d558f7684 -r cef084267617 Makefile.am > --- a/Makefile.am Mon Nov 08 12:28:36 2010 +0100 > +++ b/Makefile.am Mon Nov 08 15:56:00 2010 +0100 > @@ -295,7 +295,10 @@ > patches/6703377-freetypescaler.patch \ > patches/icedtea-jtreg-international-fonts.patch \ > patches/openjdk/6967436-6976265-6967434-pisces.patch \ > - patches/openjdk/6997495-test_correction_6857159.patch > + patches/openjdk/6997495-test_correction_6857159.patch \ > + patches/icedtea-fontconfig-Fedora-11-14-awt-makefile.patch \ > + patches/icedtea-fontconfig-Fedora-11-14-create.patch \ > + patches/icedtea-fontconfig-Fedora-11-14-changes.patch > > if WITH_ALT_HSBUILD > ICEDTEA_PATCHES += \ > diff -r c06d558f7684 -r cef084267617 patches/icedtea-fontconfig-Fedora-11-14-awt-makefile.patch > --- /dev/null Thu Jan 01 00:00:00 1970 +0000 > +++ b/patches/icedtea-fontconfig-Fedora-11-14-awt-makefile.patch Mon Nov 08 15:56:00 2010 +0100 > @@ -0,0 +1,11 @@ > +--- openjdk/jdk/make/sun/awt/Makefile 2010-11-04 09:52:49.583434000 +0100 > ++++ openjdk/jdk/make/sun/awt/Makefile 2010-11-04 16:50:14.091688769 +0100 > +@@ -387,6 +387,8 @@ > + fontconfig.SuSE.properties \ > + fontconfig.Ubuntu.properties \ > + fontconfig.Fedora.properties \ > ++ fontconfig.Fedora.11.properties \ > ++ fontconfig.Fedora.12.properties \ > + fontconfig.RedHat.6.0.properties \ > + fontconfig.Gentoo.properties > + else > diff -r c06d558f7684 -r cef084267617 patches/icedtea-fontconfig-Fedora-11-14-changes.patch > --- /dev/null Thu Jan 01 00:00:00 1970 +0000 > +++ b/patches/icedtea-fontconfig-Fedora-11-14-changes.patch Mon Nov 08 15:56:00 2010 +0100 > @@ -0,0 +1,663 @@ > +--- openjdk-old/jdk/src/solaris/classes/sun/awt/fontconfigs/linux.fontconfig.Fedora.11.properties 2010-11-04 11:06:26.695428114 +0100 > ++++ openjdk/jdk/src/solaris/classes/sun/awt/fontconfigs/linux.fontconfig.Fedora.11.properties 2010-11-04 11:19:45.133587953 +0100 > +@@ -35,6 +35,8 @@ > + dialog.plain.korean=Baekmuk Gulim > + dialog.plain.chinese-big5=AR PL ShanHeiSun Uni > + dialog.plain.chinese-gb18030=AR PL ShanHeiSun Uni > ++dialog.plain.assamese=Lohit Assamese > ++dialog.plain.devanagari=Lohit Devanagari > + dialog.plain.bengali=Lohit Bengali > + dialog.plain.gujarati=Lohit Gujarati > + dialog.plain.hindi=Lohit Hindi > +@@ -50,6 +52,8 @@ > + dialog.bold.korean=Baekmuk Gulim > + dialog.bold.chinese-big5=AR PL ShanHeiSun Uni > + dialog.bold.chinese-gb18030=AR PL ShanHeiSun Uni > ++dialog.bold.assamese=Lohit Assamese > ++dialog.bold.devanagari=Lohit Devanagari > + dialog.bold.bengali=Lohit Bengali > + dialog.bold.gujarati=Lohit Gujarati > + dialog.bold.hindi=Lohit Hindi > +@@ -65,6 +69,8 @@ > + dialog.italic.korean=Baekmuk Gulim > + dialog.italic.chinese-big5=AR PL ShanHeiSun Uni > + dialog.italic.chinese-gb18030=AR PL ShanHeiSun Uni > ++dialog.italic.assamese=Lohit Assamese > ++dialog.italic.devanagari=Lohit Devanagari > + dialog.italic.bengali=Lohit Bengali > + dialog.italic.gujarati=Lohit Gujarati > + dialog.italic.hindi=Lohit Hindi > +@@ -80,6 +86,8 @@ > + dialog.bolditalic.korean=Baekmuk Gulim > + dialog.bolditalic.chinese-big5=AR PL ShanHeiSun Uni > + dialog.bolditalic.chinese-gb18030=AR PL ShanHeiSun Uni > ++dialog.bolditalic.assamese=Lohit Assamese > ++dialog.bolditalic.devanagari=Lohit Devanagari > + dialog.bolditalic.bengali=Lohit Bengali > + dialog.bolditalic.gujarati=Lohit Gujarati > + dialog.bolditalic.hindi=Lohit Hindi > +@@ -95,6 +103,8 @@ > + sansserif.plain.korean=Baekmuk Gulim > + sansserif.plain.chinese-big5=AR PL ShanHeiSun Uni > + sansserif.plain.chinese-gb18030=AR PL ShanHeiSun Uni > ++sansserif.plain.assamese=Lohit Assamese > ++sansserif.plain.devanagari=Lohit Devanagari > + sansserif.plain.bengali=Lohit Bengali > + sansserif.plain.gujarati=Lohit Gujarati > + sansserif.plain.hindi=Lohit Hindi > +@@ -110,6 +120,8 @@ > + sansserif.bold.korean=Baekmuk Gulim > + sansserif.bold.chinese-big5=AR PL ShanHeiSun Uni > + sansserif.bold.chinese-gb18030=AR PL ShanHeiSun Uni > ++sansserif.bold.assamese=Lohit Assamese > ++sansserif.bold.devanagari=Lohit Devanagari > + sansserif.bold.bengali=Lohit Bengali > + sansserif.bold.gujarati=Lohit Gujarati > + sansserif.bold.hindi=Lohit Hindi > +@@ -125,6 +137,8 @@ > + sansserif.italic.korean=Baekmuk Gulim > + sansserif.italic.chinese-big5=AR PL ShanHeiSun Uni > + sansserif.italic.chinese-gb18030=AR PL ShanHeiSun Uni > ++sansserif.italic.assamese=Lohit Assamese > ++sansserif.italic.devanagari=Lohit Devanagari > + sansserif.italic.bengali=Lohit Bengali > + sansserif.italic.gujarati=Lohit Gujarati > + sansserif.italic.hindi=Lohit Hindi > +@@ -140,6 +154,8 @@ > + sansserif.bolditalic.korean=Baekmuk Gulim > + sansserif.bolditalic.chinese-big5=AR PL ShanHeiSun Uni > + sansserif.bolditalic.chinese-gb18030=AR PL ShanHeiSun Uni > ++sansserif.bolditalic.assamese=Lohit Assamese > ++sansserif.bolditalic.devanagari=Lohit Devanagari > + sansserif.bolditalic.bengali=Lohit Bengali > + sansserif.bolditalic.gujarati=Lohit Gujarati > + sansserif.bolditalic.hindi=Lohit Hindi > +@@ -155,6 +171,8 @@ > + serif.plain.korean=Baekmuk Batang > + serif.plain.chinese-big5=AR PL ZenKai Uni > + serif.plain.chinese-gb18030=AR PL ZenKai Uni > ++serif.plain.assamese=Lohit Assamese > ++serif.plain.devanagari=Lohit Devanagari > + serif.plain.bengali=Lohit Bengali > + serif.plain.gujarati=Lohit Gujarati > + serif.plain.hindi=Lohit Hindi > +@@ -170,6 +188,8 @@ > + serif.bold.korean=Baekmuk Batang > + serif.bold.chinese-big5=AR PL ZenKai Uni > + serif.bold.chinese-gb18030=AR PL ZenKai Uni > ++serif.bold.assamese=Lohit Assamese > ++serif.bold.devanagari=Lohit Devanagari > + serif.bold.bengali=Lohit Bengali > + serif.bold.gujarati=Lohit Gujarati > + serif.bold.hindi=Lohit Hindi > +@@ -185,6 +205,8 @@ > + serif.italic.korean=Baekmuk Batang > + serif.italic.chinese-big5=AR PL ZenKai Uni > + serif.italic.chinese-gb18030=AR PL ZenKai Uni > ++serif.italic.assamese=Lohit Assamese > ++serif.italic.devanagari=Lohit Devanagari > + serif.italic.bengali=Lohit Bengali > + serif.italic.gujarati=Lohit Gujarati > + serif.italic.hindi=Lohit Hindi > +@@ -200,6 +222,8 @@ > + serif.bolditalic.korean=Baekmuk Batang > + serif.bolditalic.chinese-big5=AR PL ZenKai Uni > + serif.bolditalic.chinese-gb18030=AR PL ZenKai Uni > ++serif.bolditalic.assamese=Lohit Assamese > ++serif.bolditalic.devanagari=Lohit Devanagari > + serif.bolditalic.bengali=Lohit Bengali > + serif.bolditalic.gujarati=Lohit Gujarati > + serif.bolditalic.hindi=Lohit Hindi > +@@ -215,6 +239,8 @@ > + monospaced.plain.korean=Baekmuk Gulim > + monospaced.plain.chinese-big5=AR PL ShanHeiSun Uni > + monospaced.plain.chinese-gb18030=AR PL ShanHeiSun Uni > ++monospaced.plain.assamese=Lohit Assamese > ++monospaced.plain.devanagari=Lohit Devanagari > + monospaced.plain.bengali=Lohit Bengali > + monospaced.plain.gujarati=Lohit Gujarati > + monospaced.plain.hindi=Lohit Hindi > +@@ -230,6 +256,8 @@ > + monospaced.bold.korean=Baekmuk Gulim > + monospaced.bold.chinese-big5=AR PL ShanHeiSun Uni > + monospaced.bold.chinese-gb18030=AR PL ShanHeiSun Uni > ++monospaced.bold.assamese=Lohit Assamese > ++monospaced.bold.devanagari=Lohit Devanagari > + monospaced.bold.bengali=Lohit Bengali > + monospaced.bold.gujarati=Lohit Gujarati > + monospaced.bold.hindi=Lohit Hindi > +@@ -245,6 +273,8 @@ > + monospaced.italic.korean=Baekmuk Gulim > + monospaced.italic.chinese-big5=AR PL ShanHeiSun Uni > + monospaced.italic.chinese-gb18030=AR PL ShanHeiSun Uni > ++monospaced.italic.assamese=Lohit Assamese > ++monospaced.italic.devanagari=Lohit Devanagari > + monospaced.italic.bengali=Lohit Bengali > + monospaced.italic.gujarati=Lohit Gujarati > + monospaced.italic.hindi=Lohit Hindi > +@@ -260,6 +290,8 @@ > + monospaced.bolditalic.korean=Baekmuk Gulim > + monospaced.bolditalic.chinese-big5=AR PL ShanHeiSun Uni > + monospaced.bolditalic.chinese-gb18030=AR PL ShanHeiSun Uni > ++monospaced.bolditalic.assamese=Lohit Assamese > ++monospaced.bolditalic.devanagari=Lohit Devanagari > + monospaced.bolditalic.bengali=Lohit Bengali > + monospaced.bolditalic.gujarati=Lohit Gujarati > + monospaced.bolditalic.hindi=Lohit Hindi > +@@ -275,6 +307,8 @@ > + dialoginput.plain.korean=Baekmuk Gulim > + dialoginput.plain.chinese-big5=AR PL ShanHeiSun Uni > + dialoginput.plain.chinese-gb18030=AR PL ShanHeiSun Uni > ++dialoginput.plain.assamese=Lohit Assamese > ++dialoginput.plain.devanagari=Lohit Devanagari > + dialoginput.plain.bengali=Lohit Bengali > + dialoginput.plain.gujarati=Lohit Gujarati > + dialoginput.plain.hindi=Lohit Hindi > +@@ -290,6 +324,8 @@ > + dialoginput.bold.korean=Baekmuk Gulim > + dialoginput.bold.chinese-big5=AR PL ShanHeiSun Uni > + dialoginput.bold.chinese-gb18030=AR PL ShanHeiSun Uni > ++dialoginput.bold.assamese=Lohit Assamese > ++dialoginput.bold.devanagari=Lohit Devanagari > + dialoginput.bold.bengali=Lohit Bengali > + dialoginput.bold.gujarati=Lohit Gujarati > + dialoginput.bold.hindi=Lohit Hindi > +@@ -305,6 +341,8 @@ > + dialoginput.italic.korean=Baekmuk Gulim > + dialoginput.italic.chinese-big5=AR PL ShanHeiSun Uni > + dialoginput.italic.chinese-gb18030=AR PL ShanHeiSun Uni > ++dialoginput.italic.assamese=Lohit Assamese > ++dialoginput.italic.devanagari=Lohit Devanagari > + dialoginput.italic.bengali=Lohit Bengali > + dialoginput.italic.gujarati=Lohit Gujarati > + dialoginput.italic.hindi=Lohit Hindi > +@@ -320,6 +358,8 @@ > + dialoginput.bolditalic.korean=Baekmuk Gulim > + dialoginput.bolditalic.chinese-big5=AR PL ShanHeiSun Uni > + dialoginput.bolditalic.chinese-gb18030=AR PL ShanHeiSun Uni > ++dialoginput.bolditalic.assamese=Lohit Assamese > ++dialoginput.bolditalic.devanagari=Lohit Devanagari > + dialoginput.bolditalic.bengali=Lohit Bengali > + dialoginput.bolditalic.gujarati=Lohit Gujarati > + dialoginput.bolditalic.hindi=Lohit Hindi > +@@ -356,21 +396,24 @@ > + filename.DejaVu_Serif_Oblique=/usr/share/fonts/dejavu/DejaVuSerif-Oblique.ttf > + filename.DejaVu_Serif_Bold_Oblique=/usr/share/fonts/dejavu/DejaVuSerif-BoldOblique.ttf > + > +-filename.Sazanami_Gothic=/usr/share/fonts/sazanami-fonts-gothic/sazanami-gothic.ttf > +-filename.Sazanami_Mincho=/usr/share/fonts/sazanami-fonts-mincho/sazanami-mincho.ttf > ++filename.Sazanami_Gothic=/usr/share/fonts/sazanami/gothic/sazanami-gothic.ttf > ++filename.Sazanami_Mincho=/usr/share/fonts/sazanami/mincho/sazanami-mincho.ttf > + filename.AR_PL_ShanHeiSun_Uni=/usr/share/fonts/cjkunifonts-uming/uming.ttc > + filename.AR_PL_ZenKai_Uni=/usr/share/fonts/cjkunifonts-ukai/ukai.ttc > +-filename.Baekmuk_Gulim=/usr/share/fonts/baekmuk-ttf-gulim/gulim.ttf > +-filename.Baekmuk_Batang=/usr/share/fonts/baekmuk-ttf-batang/batang.ttf > ++filename.Baekmuk_Gulim=/usr/share/fonts/baekmuk-ttf/gulim.ttf > ++filename.Baekmuk_Batang=/usr/share/fonts/baekmuk-ttf/batang.ttf > ++ > ++filename.Lohit_Assamese=/usr/share/fonts/lohit-assamese/Lohit-Assamese.ttf > ++filename.Lohit_Devanagari=/usr/share/fonts/lohit-devanagari/Lohit-Devanagari.ttf > ++filename.Lohit_Bengali=/usr/share/fonts/lohit-bengali/Lohit-Bengali.ttf > ++filename.Lohit_Gujarati=/usr/share/fonts/lohit-gujarati/Lohit-Gujarati.ttf > ++filename.Lohit_Hindi=/usr/share/fonts/lohit-devanagari/Lohit-Devanagari.ttf > ++filename.Lohit_Kannda=/usr/share/fonts/lohit-kannada/Lohit-Kannada.ttf > ++filename.Lohit_Malayalam=/usr/share/fonts/lohit-malayalam/Lohit-Malayalam.ttf > ++filename.Lohit_Oriya=/usr/share/fonts/lohit-oriya/Lohit-Oriya.ttf > ++filename.Lohit_Punjabi=/usr/share/fonts/lohit-punjabi/Lohit-Punjabi.ttf > ++filename.Lohit_Tamil=/usr/share/fonts/lohit-tamil/Lohit-Tamil.ttf > ++filename.Lohit_Telugu=/usr/share/fonts/lohit-telugu/Lohit-Telugu.ttf > + > +-filename.Lohit_Bengali=/usr/share/fonts/lohit-bengali/lohit_bn.ttf > +-filename.Lohit_Gujarati=/usr/share/fonts/lohit-gujarati/lohit_gu.ttf > +-filename.Lohit_Hindi=/usr/share/fonts/lohit-hindi/lohit_hi.ttf > +-filename.Lohit_Kannda=/usr/share/fonts/lohit-kannada/lohit_kn.ttf > +-filename.Lohit_Malayalam=/usr/share/fonts/lohit-malayalam/lohit_ml.ttf > +-filename.Lohit_Oriya=/usr/share/fonts/lohit-oriya/lohit_or.ttf > +-filename.Lohit_Punjabi=/usr/share/fonts/lohit-punjabi/lohit_pa.ttf > +-filename.Lohit_Tamil=/usr/share/fonts/lohit-tamil/lohit_ta.ttf > +-filename.Lohit_Telugu=/usr/share/fonts/lohit-telugu/lohit_te.ttf > + filename.LKLUG=/usr/share/fonts/lklug/lklug.ttf > + > + > +--- openjdk-old/jdk/src/solaris/classes/sun/awt/fontconfigs/linux.fontconfig.Fedora.12.properties 2010-11-04 11:06:26.695428114 +0100 > ++++ openjdk/jdk/src/solaris/classes/sun/awt/fontconfigs/linux.fontconfig.Fedora.12.properties 2010-11-04 11:19:45.133587953 +0100 > +@@ -35,6 +35,8 @@ > + dialog.plain.korean=Baekmuk Gulim > + dialog.plain.chinese-big5=AR PL ShanHeiSun Uni > + dialog.plain.chinese-gb18030=AR PL ShanHeiSun Uni > ++dialog.plain.assamese=Lohit Assamese > ++dialog.plain.devanagari=Lohit Devanagari > + dialog.plain.bengali=Lohit Bengali > + dialog.plain.gujarati=Lohit Gujarati > + dialog.plain.hindi=Lohit Hindi > +@@ -50,6 +52,8 @@ > + dialog.bold.korean=Baekmuk Gulim > + dialog.bold.chinese-big5=AR PL ShanHeiSun Uni > + dialog.bold.chinese-gb18030=AR PL ShanHeiSun Uni > ++dialog.bold.assamese=Lohit Assamese > ++dialog.bold.devanagari=Lohit Devanagari > + dialog.bold.bengali=Lohit Bengali > + dialog.bold.gujarati=Lohit Gujarati > + dialog.bold.hindi=Lohit Hindi > +@@ -65,6 +69,8 @@ > + dialog.italic.korean=Baekmuk Gulim > + dialog.italic.chinese-big5=AR PL ShanHeiSun Uni > + dialog.italic.chinese-gb18030=AR PL ShanHeiSun Uni > ++dialog.italic.assamese=Lohit Assamese > ++dialog.italic.devanagari=Lohit Devanagari > + dialog.italic.bengali=Lohit Bengali > + dialog.italic.gujarati=Lohit Gujarati > + dialog.italic.hindi=Lohit Hindi > +@@ -80,6 +86,8 @@ > + dialog.bolditalic.korean=Baekmuk Gulim > + dialog.bolditalic.chinese-big5=AR PL ShanHeiSun Uni > + dialog.bolditalic.chinese-gb18030=AR PL ShanHeiSun Uni > ++dialog.bolditalic.assamese=Lohit Assamese > ++dialog.bolditalic.devanagari=Lohit Devanagari > + dialog.bolditalic.bengali=Lohit Bengali > + dialog.bolditalic.gujarati=Lohit Gujarati > + dialog.bolditalic.hindi=Lohit Hindi > +@@ -95,6 +103,8 @@ > + sansserif.plain.korean=Baekmuk Gulim > + sansserif.plain.chinese-big5=AR PL ShanHeiSun Uni > + sansserif.plain.chinese-gb18030=AR PL ShanHeiSun Uni > ++sansserif.plain.assamese=Lohit Assamese > ++sansserif.plain.devanagari=Lohit Devanagari > + sansserif.plain.bengali=Lohit Bengali > + sansserif.plain.gujarati=Lohit Gujarati > + sansserif.plain.hindi=Lohit Hindi > +@@ -110,6 +120,8 @@ > + sansserif.bold.korean=Baekmuk Gulim > + sansserif.bold.chinese-big5=AR PL ShanHeiSun Uni > + sansserif.bold.chinese-gb18030=AR PL ShanHeiSun Uni > ++sansserif.bold.assamese=Lohit Assamese > ++sansserif.bold.devanagari=Lohit Devanagari > + sansserif.bold.bengali=Lohit Bengali > + sansserif.bold.gujarati=Lohit Gujarati > + sansserif.bold.hindi=Lohit Hindi > +@@ -125,6 +137,8 @@ > + sansserif.italic.korean=Baekmuk Gulim > + sansserif.italic.chinese-big5=AR PL ShanHeiSun Uni > + sansserif.italic.chinese-gb18030=AR PL ShanHeiSun Uni > ++sansserif.italic.assamese=Lohit Assamese > ++sansserif.italic.devanagari=Lohit Devanagari > + sansserif.italic.bengali=Lohit Bengali > + sansserif.italic.gujarati=Lohit Gujarati > + sansserif.italic.hindi=Lohit Hindi > +@@ -140,6 +154,8 @@ > + sansserif.bolditalic.korean=Baekmuk Gulim > + sansserif.bolditalic.chinese-big5=AR PL ShanHeiSun Uni > + sansserif.bolditalic.chinese-gb18030=AR PL ShanHeiSun Uni > ++sansserif.bolditalic.assamese=Lohit Assamese > ++sansserif.bolditalic.devanagari=Lohit Devanagari > + sansserif.bolditalic.bengali=Lohit Bengali > + sansserif.bolditalic.gujarati=Lohit Gujarati > + sansserif.bolditalic.hindi=Lohit Hindi > +@@ -155,6 +171,8 @@ > + serif.plain.korean=Baekmuk Batang > + serif.plain.chinese-big5=AR PL ZenKai Uni > + serif.plain.chinese-gb18030=AR PL ZenKai Uni > ++serif.plain.assamese=Lohit Assamese > ++serif.plain.devanagari=Lohit Devanagari > + serif.plain.bengali=Lohit Bengali > + serif.plain.gujarati=Lohit Gujarati > + serif.plain.hindi=Lohit Hindi > +@@ -170,6 +188,8 @@ > + serif.bold.korean=Baekmuk Batang > + serif.bold.chinese-big5=AR PL ZenKai Uni > + serif.bold.chinese-gb18030=AR PL ZenKai Uni > ++serif.bold.assamese=Lohit Assamese > ++serif.bold.devanagari=Lohit Devanagari > + serif.bold.bengali=Lohit Bengali > + serif.bold.gujarati=Lohit Gujarati > + serif.bold.hindi=Lohit Hindi > +@@ -185,6 +205,8 @@ > + serif.italic.korean=Baekmuk Batang > + serif.italic.chinese-big5=AR PL ZenKai Uni > + serif.italic.chinese-gb18030=AR PL ZenKai Uni > ++serif.italic.assamese=Lohit Assamese > ++serif.italic.devanagari=Lohit Devanagari > + serif.italic.bengali=Lohit Bengali > + serif.italic.gujarati=Lohit Gujarati > + serif.italic.hindi=Lohit Hindi > +@@ -200,6 +222,8 @@ > + serif.bolditalic.korean=Baekmuk Batang > + serif.bolditalic.chinese-big5=AR PL ZenKai Uni > + serif.bolditalic.chinese-gb18030=AR PL ZenKai Uni > ++serif.bolditalic.assamese=Lohit Assamese > ++serif.bolditalic.devanagari=Lohit Devanagari > + serif.bolditalic.bengali=Lohit Bengali > + serif.bolditalic.gujarati=Lohit Gujarati > + serif.bolditalic.hindi=Lohit Hindi > +@@ -215,6 +239,8 @@ > + monospaced.plain.korean=Baekmuk Gulim > + monospaced.plain.chinese-big5=AR PL ShanHeiSun Uni > + monospaced.plain.chinese-gb18030=AR PL ShanHeiSun Uni > ++monospaced.plain.assamese=Lohit Assamese > ++monospaced.plain.devanagari=Lohit Devanagari > + monospaced.plain.bengali=Lohit Bengali > + monospaced.plain.gujarati=Lohit Gujarati > + monospaced.plain.hindi=Lohit Hindi > +@@ -230,6 +256,8 @@ > + monospaced.bold.korean=Baekmuk Gulim > + monospaced.bold.chinese-big5=AR PL ShanHeiSun Uni > + monospaced.bold.chinese-gb18030=AR PL ShanHeiSun Uni > ++monospaced.bold.assamese=Lohit Assamese > ++monospaced.bold.devanagari=Lohit Devanagari > + monospaced.bold.bengali=Lohit Bengali > + monospaced.bold.gujarati=Lohit Gujarati > + monospaced.bold.hindi=Lohit Hindi > +@@ -245,6 +273,8 @@ > + monospaced.italic.korean=Baekmuk Gulim > + monospaced.italic.chinese-big5=AR PL ShanHeiSun Uni > + monospaced.italic.chinese-gb18030=AR PL ShanHeiSun Uni > ++monospaced.italic.assamese=Lohit Assamese > ++monospaced.italic.devanagari=Lohit Devanagari > + monospaced.italic.bengali=Lohit Bengali > + monospaced.italic.gujarati=Lohit Gujarati > + monospaced.italic.hindi=Lohit Hindi > +@@ -260,6 +290,8 @@ > + monospaced.bolditalic.korean=Baekmuk Gulim > + monospaced.bolditalic.chinese-big5=AR PL ShanHeiSun Uni > + monospaced.bolditalic.chinese-gb18030=AR PL ShanHeiSun Uni > ++monospaced.bolditalic.assamese=Lohit Assamese > ++monospaced.bolditalic.devanagari=Lohit Devanagari > + monospaced.bolditalic.bengali=Lohit Bengali > + monospaced.bolditalic.gujarati=Lohit Gujarati > + monospaced.bolditalic.hindi=Lohit Hindi > +@@ -275,6 +307,8 @@ > + dialoginput.plain.korean=Baekmuk Gulim > + dialoginput.plain.chinese-big5=AR PL ShanHeiSun Uni > + dialoginput.plain.chinese-gb18030=AR PL ShanHeiSun Uni > ++dialoginput.plain.assamese=Lohit Assamese > ++dialoginput.plain.devanagari=Lohit Devanagari > + dialoginput.plain.bengali=Lohit Bengali > + dialoginput.plain.gujarati=Lohit Gujarati > + dialoginput.plain.hindi=Lohit Hindi > +@@ -290,6 +324,8 @@ > + dialoginput.bold.korean=Baekmuk Gulim > + dialoginput.bold.chinese-big5=AR PL ShanHeiSun Uni > + dialoginput.bold.chinese-gb18030=AR PL ShanHeiSun Uni > ++dialoginput.bold.assamese=Lohit Assamese > ++dialoginput.bold.devanagari=Lohit Devanagari > + dialoginput.bold.bengali=Lohit Bengali > + dialoginput.bold.gujarati=Lohit Gujarati > + dialoginput.bold.hindi=Lohit Hindi > +@@ -305,6 +341,8 @@ > + dialoginput.italic.korean=Baekmuk Gulim > + dialoginput.italic.chinese-big5=AR PL ShanHeiSun Uni > + dialoginput.italic.chinese-gb18030=AR PL ShanHeiSun Uni > ++dialoginput.italic.assamese=Lohit Assamese > ++dialoginput.italic.devanagari=Lohit Devanagari > + dialoginput.italic.bengali=Lohit Bengali > + dialoginput.italic.gujarati=Lohit Gujarati > + dialoginput.italic.hindi=Lohit Hindi > +@@ -320,6 +358,8 @@ > + dialoginput.bolditalic.korean=Baekmuk Gulim > + dialoginput.bolditalic.chinese-big5=AR PL ShanHeiSun Uni > + dialoginput.bolditalic.chinese-gb18030=AR PL ShanHeiSun Uni > ++dialoginput.bolditalic.assamese=Lohit Assamese > ++dialoginput.bolditalic.devanagari=Lohit Devanagari > + dialoginput.bolditalic.bengali=Lohit Bengali > + dialoginput.bolditalic.gujarati=Lohit Gujarati > + dialoginput.bolditalic.hindi=Lohit Hindi > +@@ -356,21 +396,24 @@ > + filename.DejaVu_Serif_Oblique=/usr/share/fonts/dejavu/DejaVuSerif-Oblique.ttf > + filename.DejaVu_Serif_Bold_Oblique=/usr/share/fonts/dejavu/DejaVuSerif-BoldOblique.ttf > + > +-filename.Sazanami_Gothic=/usr/share/fonts/sazanami-fonts-gothic/sazanami-gothic.ttf > +-filename.Sazanami_Mincho=/usr/share/fonts/sazanami-fonts-mincho/sazanami-mincho.ttf > ++filename.Sazanami_Gothic=/usr/share/fonts/sazanami/gothic/sazanami-gothic.ttf > ++filename.Sazanami_Mincho=/usr/share/fonts/sazanami/mincho/sazanami-mincho.ttf > + filename.AR_PL_ShanHeiSun_Uni=/usr/share/fonts/cjkunifonts-uming/uming.ttc > + filename.AR_PL_ZenKai_Uni=/usr/share/fonts/cjkunifonts-ukai/ukai.ttc > +-filename.Baekmuk_Gulim=/usr/share/fonts/baekmuk-ttf-gulim/gulim.ttf > +-filename.Baekmuk_Batang=/usr/share/fonts/baekmuk-ttf-batang/batang.ttf > ++filename.Baekmuk_Gulim=/usr/share/fonts/baekmuk-ttf/gulim.ttf > ++filename.Baekmuk_Batang=/usr/share/fonts/baekmuk-ttf/batang.ttf > ++ > ++filename.Lohit_Assamese=/usr/share/fonts/lohit-assamese/Lohit-Assamese.ttf > ++filename.Lohit_Devanagari=/usr/share/fonts/lohit-devanagari/Lohit-Devanagari.ttf > ++filename.Lohit_Bengali=/usr/share/fonts/lohit-bengali/Lohit-Bengali.ttf > ++filename.Lohit_Gujarati=/usr/share/fonts/lohit-gujarati/Lohit-Gujarati.ttf > ++filename.Lohit_Hindi=/usr/share/fonts/lohit-devanagari/Lohit-Devanagari.ttf > ++filename.Lohit_Kannda=/usr/share/fonts/lohit-kannada/Lohit-Kannada.ttf > ++filename.Lohit_Malayalam=/usr/share/fonts/lohit-malayalam/Lohit-Malayalam.ttf > ++filename.Lohit_Oriya=/usr/share/fonts/lohit-oriya/Lohit-Oriya.ttf > ++filename.Lohit_Punjabi=/usr/share/fonts/lohit-punjabi/Lohit-Punjabi.ttf > ++filename.Lohit_Tamil=/usr/share/fonts/lohit-tamil/Lohit-Tamil.ttf > ++filename.Lohit_Telugu=/usr/share/fonts/lohit-telugu/Lohit-Telugu.ttf > + > +-filename.Lohit_Bengali=/usr/share/fonts/lohit-bengali/lohit_bn.ttf > +-filename.Lohit_Gujarati=/usr/share/fonts/lohit-gujarati/lohit_gu.ttf > +-filename.Lohit_Hindi=/usr/share/fonts/lohit-hindi/lohit_hi.ttf > +-filename.Lohit_Kannda=/usr/share/fonts/lohit-kannada/lohit_kn.ttf > +-filename.Lohit_Malayalam=/usr/share/fonts/lohit-malayalam/lohit_ml.ttf > +-filename.Lohit_Oriya=/usr/share/fonts/lohit-oriya/lohit_or.ttf > +-filename.Lohit_Punjabi=/usr/share/fonts/lohit-punjabi/lohit_pa.ttf > +-filename.Lohit_Tamil=/usr/share/fonts/lohit-tamil/lohit_ta.ttf > +-filename.Lohit_Telugu=/usr/share/fonts/lohit-telugu/lohit_te.ttf > + filename.LKLUG=/usr/share/fonts/lklug/lklug.ttf > + > +--- openjdk-old/jdk/src/solaris/classes/sun/awt/fontconfigs/linux.fontconfig.Fedora.properties 2010-11-04 11:06:26.695428114 +0100 > ++++ openjdk/jdk/src/solaris/classes/sun/awt/fontconfigs/linux.fontconfig.Fedora.properties 2010-11-04 11:06:25.602455633 +0100 > +@@ -35,6 +35,8 @@ > + dialog.plain.korean=Baekmuk Gulim > + dialog.plain.chinese-big5=AR PL ShanHeiSun Uni > + dialog.plain.chinese-gb18030=AR PL ShanHeiSun Uni > ++dialog.plain.assamese=Lohit Assamese > ++dialog.plain.devanagari=Lohit Devanagari > + dialog.plain.bengali=Lohit Bengali > + dialog.plain.gujarati=Lohit Gujarati > + dialog.plain.hindi=Lohit Hindi > +@@ -50,6 +52,8 @@ > + dialog.bold.korean=Baekmuk Gulim > + dialog.bold.chinese-big5=AR PL ShanHeiSun Uni > + dialog.bold.chinese-gb18030=AR PL ShanHeiSun Uni > ++dialog.bold.assamese=Lohit Assamese > ++dialog.bold.devanagari=Lohit Devanagari > + dialog.bold.bengali=Lohit Bengali > + dialog.bold.gujarati=Lohit Gujarati > + dialog.bold.hindi=Lohit Hindi > +@@ -65,6 +69,8 @@ > + dialog.italic.korean=Baekmuk Gulim > + dialog.italic.chinese-big5=AR PL ShanHeiSun Uni > + dialog.italic.chinese-gb18030=AR PL ShanHeiSun Uni > ++dialog.italic.assamese=Lohit Assamese > ++dialog.italic.devanagari=Lohit Devanagari > + dialog.italic.bengali=Lohit Bengali > + dialog.italic.gujarati=Lohit Gujarati > + dialog.italic.hindi=Lohit Hindi > +@@ -80,6 +86,8 @@ > + dialog.bolditalic.korean=Baekmuk Gulim > + dialog.bolditalic.chinese-big5=AR PL ShanHeiSun Uni > + dialog.bolditalic.chinese-gb18030=AR PL ShanHeiSun Uni > ++dialog.bolditalic.assamese=Lohit Assamese > ++dialog.bolditalic.devanagari=Lohit Devanagari > + dialog.bolditalic.bengali=Lohit Bengali > + dialog.bolditalic.gujarati=Lohit Gujarati > + dialog.bolditalic.hindi=Lohit Hindi > +@@ -95,6 +103,8 @@ > + sansserif.plain.korean=Baekmuk Gulim > + sansserif.plain.chinese-big5=AR PL ShanHeiSun Uni > + sansserif.plain.chinese-gb18030=AR PL ShanHeiSun Uni > ++sansserif.plain.assamese=Lohit Assamese > ++sansserif.plain.devanagari=Lohit Devanagari > + sansserif.plain.bengali=Lohit Bengali > + sansserif.plain.gujarati=Lohit Gujarati > + sansserif.plain.hindi=Lohit Hindi > +@@ -110,6 +120,8 @@ > + sansserif.bold.korean=Baekmuk Gulim > + sansserif.bold.chinese-big5=AR PL ShanHeiSun Uni > + sansserif.bold.chinese-gb18030=AR PL ShanHeiSun Uni > ++sansserif.bold.assamese=Lohit Assamese > ++sansserif.bold.devanagari=Lohit Devanagari > + sansserif.bold.bengali=Lohit Bengali > + sansserif.bold.gujarati=Lohit Gujarati > + sansserif.bold.hindi=Lohit Hindi > +@@ -125,6 +137,8 @@ > + sansserif.italic.korean=Baekmuk Gulim > + sansserif.italic.chinese-big5=AR PL ShanHeiSun Uni > + sansserif.italic.chinese-gb18030=AR PL ShanHeiSun Uni > ++sansserif.italic.assamese=Lohit Assamese > ++sansserif.italic.devanagari=Lohit Devanagari > + sansserif.italic.bengali=Lohit Bengali > + sansserif.italic.gujarati=Lohit Gujarati > + sansserif.italic.hindi=Lohit Hindi > +@@ -140,6 +154,8 @@ > + sansserif.bolditalic.korean=Baekmuk Gulim > + sansserif.bolditalic.chinese-big5=AR PL ShanHeiSun Uni > + sansserif.bolditalic.chinese-gb18030=AR PL ShanHeiSun Uni > ++sansserif.bolditalic.assamese=Lohit Assamese > ++sansserif.bolditalic.devanagari=Lohit Devanagari > + sansserif.bolditalic.bengali=Lohit Bengali > + sansserif.bolditalic.gujarati=Lohit Gujarati > + sansserif.bolditalic.hindi=Lohit Hindi > +@@ -155,6 +171,8 @@ > + serif.plain.korean=Baekmuk Batang > + serif.plain.chinese-big5=AR PL ZenKai Uni > + serif.plain.chinese-gb18030=AR PL ZenKai Uni > ++serif.plain.assamese=Lohit Assamese > ++serif.plain.devanagari=Lohit Devanagari > + serif.plain.bengali=Lohit Bengali > + serif.plain.gujarati=Lohit Gujarati > + serif.plain.hindi=Lohit Hindi > +@@ -170,6 +188,8 @@ > + serif.bold.korean=Baekmuk Batang > + serif.bold.chinese-big5=AR PL ZenKai Uni > + serif.bold.chinese-gb18030=AR PL ZenKai Uni > ++serif.bold.assamese=Lohit Assamese > ++serif.bold.devanagari=Lohit Devanagari > + serif.bold.bengali=Lohit Bengali > + serif.bold.gujarati=Lohit Gujarati > + serif.bold.hindi=Lohit Hindi > +@@ -185,6 +205,8 @@ > + serif.italic.korean=Baekmuk Batang > + serif.italic.chinese-big5=AR PL ZenKai Uni > + serif.italic.chinese-gb18030=AR PL ZenKai Uni > ++serif.italic.assamese=Lohit Assamese > ++serif.italic.devanagari=Lohit Devanagari > + serif.italic.bengali=Lohit Bengali > + serif.italic.gujarati=Lohit Gujarati > + serif.italic.hindi=Lohit Hindi > +@@ -200,6 +222,8 @@ > + serif.bolditalic.korean=Baekmuk Batang > + serif.bolditalic.chinese-big5=AR PL ZenKai Uni > + serif.bolditalic.chinese-gb18030=AR PL ZenKai Uni > ++serif.bolditalic.assamese=Lohit Assamese > ++serif.bolditalic.devanagari=Lohit Devanagari > + serif.bolditalic.bengali=Lohit Bengali > + serif.bolditalic.gujarati=Lohit Gujarati > + serif.bolditalic.hindi=Lohit Hindi > +@@ -215,6 +239,8 @@ > + monospaced.plain.korean=Baekmuk Gulim > + monospaced.plain.chinese-big5=AR PL ShanHeiSun Uni > + monospaced.plain.chinese-gb18030=AR PL ShanHeiSun Uni > ++monospaced.plain.assamese=Lohit Assamese > ++monospaced.plain.devanagari=Lohit Devanagari > + monospaced.plain.bengali=Lohit Bengali > + monospaced.plain.gujarati=Lohit Gujarati > + monospaced.plain.hindi=Lohit Hindi > +@@ -230,6 +256,8 @@ > + monospaced.bold.korean=Baekmuk Gulim > + monospaced.bold.chinese-big5=AR PL ShanHeiSun Uni > + monospaced.bold.chinese-gb18030=AR PL ShanHeiSun Uni > ++monospaced.bold.assamese=Lohit Assamese > ++monospaced.bold.devanagari=Lohit Devanagari > + monospaced.bold.bengali=Lohit Bengali > + monospaced.bold.gujarati=Lohit Gujarati > + monospaced.bold.hindi=Lohit Hindi > +@@ -245,6 +273,8 @@ > + monospaced.italic.korean=Baekmuk Gulim > + monospaced.italic.chinese-big5=AR PL ShanHeiSun Uni > + monospaced.italic.chinese-gb18030=AR PL ShanHeiSun Uni > ++monospaced.italic.assamese=Lohit Assamese > ++monospaced.italic.devanagari=Lohit Devanagari > + monospaced.italic.bengali=Lohit Bengali > + monospaced.italic.gujarati=Lohit Gujarati > + monospaced.italic.hindi=Lohit Hindi > +@@ -260,6 +290,8 @@ > + monospaced.bolditalic.korean=Baekmuk Gulim > + monospaced.bolditalic.chinese-big5=AR PL ShanHeiSun Uni > + monospaced.bolditalic.chinese-gb18030=AR PL ShanHeiSun Uni > ++monospaced.bolditalic.assamese=Lohit Assamese > ++monospaced.bolditalic.devanagari=Lohit Devanagari > + monospaced.bolditalic.bengali=Lohit Bengali > + monospaced.bolditalic.gujarati=Lohit Gujarati > + monospaced.bolditalic.hindi=Lohit Hindi > +@@ -275,6 +307,8 @@ > + dialoginput.plain.korean=Baekmuk Gulim > + dialoginput.plain.chinese-big5=AR PL ShanHeiSun Uni > + dialoginput.plain.chinese-gb18030=AR PL ShanHeiSun Uni > ++dialoginput.plain.assamese=Lohit Assamese > ++dialoginput.plain.devanagari=Lohit Devanagari > + dialoginput.plain.bengali=Lohit Bengali > + dialoginput.plain.gujarati=Lohit Gujarati > + dialoginput.plain.hindi=Lohit Hindi > +@@ -290,6 +324,8 @@ > + dialoginput.bold.korean=Baekmuk Gulim > + dialoginput.bold.chinese-big5=AR PL ShanHeiSun Uni > + dialoginput.bold.chinese-gb18030=AR PL ShanHeiSun Uni > ++dialoginput.bold.assamese=Lohit Assamese > ++dialoginput.bold.devanagari=Lohit Devanagari > + dialoginput.bold.bengali=Lohit Bengali > + dialoginput.bold.gujarati=Lohit Gujarati > + dialoginput.bold.hindi=Lohit Hindi > +@@ -305,6 +341,8 @@ > + dialoginput.italic.korean=Baekmuk Gulim > + dialoginput.italic.chinese-big5=AR PL ShanHeiSun Uni > + dialoginput.italic.chinese-gb18030=AR PL ShanHeiSun Uni > ++dialoginput.italic.assamese=Lohit Assamese > ++dialoginput.italic.devanagari=Lohit Devanagari > + dialoginput.italic.bengali=Lohit Bengali > + dialoginput.italic.gujarati=Lohit Gujarati > + dialoginput.italic.hindi=Lohit Hindi > +@@ -320,6 +358,8 @@ > + dialoginput.bolditalic.korean=Baekmuk Gulim > + dialoginput.bolditalic.chinese-big5=AR PL ShanHeiSun Uni > + dialoginput.bolditalic.chinese-gb18030=AR PL ShanHeiSun Uni > ++dialoginput.bolditalic.assamese=Lohit Assamese > ++dialoginput.bolditalic.devanagari=Lohit Devanagari > + dialoginput.bolditalic.bengali=Lohit Bengali > + dialoginput.bolditalic.gujarati=Lohit Gujarati > + dialoginput.bolditalic.hindi=Lohit Hindi > +@@ -356,21 +396,24 @@ > + filename.DejaVu_Serif_Oblique=/usr/share/fonts/dejavu/DejaVuSerif-Oblique.ttf > + filename.DejaVu_Serif_Bold_Oblique=/usr/share/fonts/dejavu/DejaVuSerif-BoldOblique.ttf > + > +-filename.Sazanami_Gothic=/usr/share/fonts/sazanami-fonts-gothic/sazanami-gothic.ttf > +-filename.Sazanami_Mincho=/usr/share/fonts/sazanami-fonts-mincho/sazanami-mincho.ttf > +-filename.AR_PL_ShanHeiSun_Uni=/usr/share/fonts/cjkunifonts-uming/uming.ttc > +-filename.AR_PL_ZenKai_Uni=/usr/share/fonts/cjkunifonts-ukai/ukai.ttc > +-filename.Baekmuk_Gulim=/usr/share/fonts/baekmuk-ttf-gulim/gulim.ttf > +-filename.Baekmuk_Batang=/usr/share/fonts/baekmuk-ttf-batang/batang.ttf > ++filename.Sazanami_Gothic=/usr/share/fonts/sazanami/gothic/sazanami-gothic.ttf > ++filename.Sazanami_Mincho=/usr/share/fonts/sazanami/mincho/sazanami-mincho.ttf > ++filename.AR_PL_ShanHeiSun_Uni=/usr/share/fonts/cjkuni-uming/uming.ttc > ++filename.AR_PL_ZenKai_Uni=/usr/share/fonts/cjkuni-ukai/ukai.ttc > ++filename.Baekmuk_Gulim=/usr/share/fonts/baekmuk-ttf/gulim.ttf > ++filename.Baekmuk_Batang=/usr/share/fonts/baekmuk-ttf/batang.ttf > ++ > ++filename.Lohit_Assamese=/usr/share/fonts/lohit-assamese/Lohit-Assamese.ttf > ++filename.Lohit_Devanagari=/usr/share/fonts/lohit-devanagari/Lohit-Devanagari.ttf > ++filename.Lohit_Bengali=/usr/share/fonts/lohit-bengali/Lohit-Bengali.ttf > ++filename.Lohit_Gujarati=/usr/share/fonts/lohit-gujarati/Lohit-Gujarati.ttf > ++filename.Lohit_Hindi=/usr/share/fonts/lohit-devanagari/Lohit-Devanagari.ttf > ++filename.Lohit_Kannda=/usr/share/fonts/lohit-kannada/Lohit-Kannada.ttf > ++filename.Lohit_Malayalam=/usr/share/fonts/lohit-malayalam/Lohit-Malayalam.ttf > ++filename.Lohit_Oriya=/usr/share/fonts/lohit-oriya/Lohit-Oriya.ttf > ++filename.Lohit_Punjabi=/usr/share/fonts/lohit-punjabi/Lohit-Punjabi.ttf > ++filename.Lohit_Tamil=/usr/share/fonts/lohit-tamil/Lohit-Tamil.ttf > ++filename.Lohit_Telugu=/usr/share/fonts/lohit-telugu/Lohit-Telugu.ttf > + > +-filename.Lohit_Bengali=/usr/share/fonts/lohit-bengali/lohit_bn.ttf > +-filename.Lohit_Gujarati=/usr/share/fonts/lohit-gujarati/lohit_gu.ttf > +-filename.Lohit_Hindi=/usr/share/fonts/lohit-hindi/lohit_hi.ttf > +-filename.Lohit_Kannda=/usr/share/fonts/lohit-kannada/lohit_kn.ttf > +-filename.Lohit_Malayalam=/usr/share/fonts/lohit-malayalam/lohit_ml.ttf > +-filename.Lohit_Oriya=/usr/share/fonts/lohit-oriya/lohit_or.ttf > +-filename.Lohit_Punjabi=/usr/share/fonts/lohit-punjabi/lohit_pa.ttf > +-filename.Lohit_Tamil=/usr/share/fonts/lohit-tamil/lohit_ta.ttf > +-filename.Lohit_Telugu=/usr/share/fonts/lohit-telugu/lohit_te.ttf > + filename.LKLUG=/usr/share/fonts/lklug/lklug.ttf > + > diff -r c06d558f7684 -r cef084267617 patches/icedtea-fontconfig-Fedora-11-14-create.patch > --- /dev/null Thu Jan 01 00:00:00 1970 +0000 > +++ b/patches/icedtea-fontconfig-Fedora-11-14-create.patch Mon Nov 08 15:56:00 2010 +0100 > @@ -0,0 +1,762 @@ > +# This patch just creates new files. Content is copypasted from linux.fontconfig.Fedora.properties BEFORE patching > +--- /dev/null 1970-01-01 00:00:00 UTC > ++++ openjdk/jdk/src/solaris/classes/sun/awt/fontconfigs/linux.fontconfig.Fedora.11.properties 2010-11-04 11:19:45.133587953 +0100 > +@@ -0,0 +1,376 @@ > ++# > ++# Copyright 2007 Sun Microsystems, Inc. All Rights Reserved. > ++# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. > ++# > ++# This code is free software; you can redistribute it and/or modify it > ++# under the terms of the GNU General Public License version 2 only, as > ++# published by the Free Software Foundation. Sun designates this > ++# particular file as subject to the "Classpath" exception as provided > ++# by Sun in the LICENSE file that accompanied this code. > ++# > ++# This code is distributed in the hope that it will be useful, but WITHOUT > ++# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or > ++# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License > ++# version 2 for more details (a copy is included in the LICENSE file that > ++# accompanied this code). > ++# > ++# You should have received a copy of the GNU General Public License version > ++# 2 along with this work; if not, write to the Free Software Foundation, > ++# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. > ++# > ++# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, > ++# CA 95054 USA or visit www.sun.com if you need additional information or > ++# have any questions. > ++# > ++ > ++# Version > ++ > ++# Uses Fedora 9 fonts and file paths. > ++version=1 > ++ > ++# Component Font Mappings > ++ > ++dialog.plain.latin-1=DejaVu Sans > ++dialog.plain.japanese-x0208=Sazanami Gothic > ++dialog.plain.korean=Baekmuk Gulim > ++dialog.plain.chinese-big5=AR PL ShanHeiSun Uni > ++dialog.plain.chinese-gb18030=AR PL ShanHeiSun Uni > ++dialog.plain.bengali=Lohit Bengali > ++dialog.plain.gujarati=Lohit Gujarati > ++dialog.plain.hindi=Lohit Hindi > ++dialog.plain.malayalam=Lohit Malayalam > ++dialog.plain.oriya=Lohit Oriya > ++dialog.plain.punjabi=Lohit Punjabi > ++dialog.plain.tamil=Lohit Tamil > ++dialog.plain.telugu=Lohit Telugu > ++dialog.plain.sinhala=LKLUG > ++ > ++dialog.bold.latin-1=DejaVu Sans Bold > ++dialog.bold.japanese-x0208=Sazanami Gothic > ++dialog.bold.korean=Baekmuk Gulim > ++dialog.bold.chinese-big5=AR PL ShanHeiSun Uni > ++dialog.bold.chinese-gb18030=AR PL ShanHeiSun Uni > ++dialog.bold.bengali=Lohit Bengali > ++dialog.bold.gujarati=Lohit Gujarati > ++dialog.bold.hindi=Lohit Hindi > ++dialog.bold.malayalam=Lohit Malayalam > ++dialog.bold.oriya=Lohit Oriya > ++dialog.bold.punjabi=Lohit Punjabi > ++dialog.bold.tamil=Lohit Tamil > ++dialog.bold.telugu=Lohit Telugu > ++dialog.bold.sinhala=LKLUG > ++ > ++dialog.italic.latin-1=DejaVu Sans Oblique > ++dialog.italic.japanese-x0208=Sazanami Gothic > ++dialog.italic.korean=Baekmuk Gulim > ++dialog.italic.chinese-big5=AR PL ShanHeiSun Uni > ++dialog.italic.chinese-gb18030=AR PL ShanHeiSun Uni > ++dialog.italic.bengali=Lohit Bengali > ++dialog.italic.gujarati=Lohit Gujarati > ++dialog.italic.hindi=Lohit Hindi > ++dialog.italic.malayalam=Lohit Malayalam > ++dialog.italic.oriya=Lohit Oriya > ++dialog.italic.punjabi=Lohit Punjabi > ++dialog.italic.tamil=Lohit Tamil > ++dialog.italic.telugu=Lohit Telugu > ++dialog.italic.sinhala=LKLUG > ++ > ++dialog.bolditalic.latin-1=DejaVu Sans Bold Oblique > ++dialog.bolditalic.japanese-x0208=Sazanami Gothic > ++dialog.bolditalic.korean=Baekmuk Gulim > ++dialog.bolditalic.chinese-big5=AR PL ShanHeiSun Uni > ++dialog.bolditalic.chinese-gb18030=AR PL ShanHeiSun Uni > ++dialog.bolditalic.bengali=Lohit Bengali > ++dialog.bolditalic.gujarati=Lohit Gujarati > ++dialog.bolditalic.hindi=Lohit Hindi > ++dialog.bolditalic.malayalam=Lohit Malayalam > ++dialog.bolditalic.oriya=Lohit Oriya > ++dialog.bolditalic.punjabi=Lohit Punjabi > ++dialog.bolditalic.tamil=Lohit Tamil > ++dialog.bolditalic.telugu=Lohit Telugu > ++dialog.bolditalic.sinhala=LKLUG > ++ > ++sansserif.plain.latin-1=DejaVu Sans > ++sansserif.plain.japanese-x0208=Sazanami Gothic > ++sansserif.plain.korean=Baekmuk Gulim > ++sansserif.plain.chinese-big5=AR PL ShanHeiSun Uni > ++sansserif.plain.chinese-gb18030=AR PL ShanHeiSun Uni > ++sansserif.plain.bengali=Lohit Bengali > ++sansserif.plain.gujarati=Lohit Gujarati > ++sansserif.plain.hindi=Lohit Hindi > ++sansserif.plain.malayalam=Lohit Malayalam > ++sansserif.plain.oriya=Lohit Oriya > ++sansserif.plain.punjabi=Lohit Punjabi > ++sansserif.plain.tamil=Lohit Tamil > ++sansserif.plain.telugu=Lohit Telugu > ++sansserif.plain.sinhala=LKLUG > ++ > ++sansserif.bold.latin-1=DejaVu Sans Bold > ++sansserif.bold.japanese-x0208=Sazanami Gothic > ++sansserif.bold.korean=Baekmuk Gulim > ++sansserif.bold.chinese-big5=AR PL ShanHeiSun Uni > ++sansserif.bold.chinese-gb18030=AR PL ShanHeiSun Uni > ++sansserif.bold.bengali=Lohit Bengali > ++sansserif.bold.gujarati=Lohit Gujarati > ++sansserif.bold.hindi=Lohit Hindi > ++sansserif.bold.malayalam=Lohit Malayalam > ++sansserif.bold.oriya=Lohit Oriya > ++sansserif.bold.punjabi=Lohit Punjabi > ++sansserif.bold.tamil=Lohit Tamil > ++sansserif.bold.telugu=Lohit Telugu > ++sansserif.bold.sinhala=LKLUG > ++ > ++sansserif.italic.latin-1=DejaVu Sans Oblique > ++sansserif.italic.japanese-x0208=Sazanami Gothic > ++sansserif.italic.korean=Baekmuk Gulim > ++sansserif.italic.chinese-big5=AR PL ShanHeiSun Uni > ++sansserif.italic.chinese-gb18030=AR PL ShanHeiSun Uni > ++sansserif.italic.bengali=Lohit Bengali > ++sansserif.italic.gujarati=Lohit Gujarati > ++sansserif.italic.hindi=Lohit Hindi > ++sansserif.italic.malayalam=Lohit Malayalam > ++sansserif.italic.oriya=Lohit Oriya > ++sansserif.italic.punjabi=Lohit Punjabi > ++sansserif.italic.tamil=Lohit Tamil > ++sansserif.italic.telugu=Lohit Telugu > ++sansserif.italic.sinhala=LKLUG > ++ > ++sansserif.bolditalic.latin-1=DejaVu Sans Bold Oblique > ++sansserif.bolditalic.japanese-x0208=Sazanami Gothic > ++sansserif.bolditalic.korean=Baekmuk Gulim > ++sansserif.bolditalic.chinese-big5=AR PL ShanHeiSun Uni > ++sansserif.bolditalic.chinese-gb18030=AR PL ShanHeiSun Uni > ++sansserif.bolditalic.bengali=Lohit Bengali > ++sansserif.bolditalic.gujarati=Lohit Gujarati > ++sansserif.bolditalic.hindi=Lohit Hindi > ++sansserif.bolditalic.malayalam=Lohit Malayalam > ++sansserif.bolditalic.oriya=Lohit Oriya > ++sansserif.bolditalic.punjabi=Lohit Punjabi > ++sansserif.bolditalic.tamil=Lohit Tamil > ++sansserif.bolditalic.telugu=Lohit Telugu > ++sansserif.bolditalic.sinhala=LKLUG > ++ > ++serif.plain.latin-1=DejaVu Serif > ++serif.plain.japanese-x0208=Sazanami Mincho > ++serif.plain.korean=Baekmuk Batang > ++serif.plain.chinese-big5=AR PL ZenKai Uni > ++serif.plain.chinese-gb18030=AR PL ZenKai Uni > ++serif.plain.bengali=Lohit Bengali > ++serif.plain.gujarati=Lohit Gujarati > ++serif.plain.hindi=Lohit Hindi > ++serif.plain.malayalam=Lohit Malayalam > ++serif.plain.oriya=Lohit Oriya > ++serif.plain.punjabi=Lohit Punjabi > ++serif.plain.tamil=Lohit Tamil > ++serif.plain.telugu=Lohit Telugu > ++serif.plain.sinhala=LKLUG > ++ > ++serif.bold.latin-1=DejaVu Serif Bold > ++serif.bold.japanese-x0208=Sazanami Mincho > ++serif.bold.korean=Baekmuk Batang > ++serif.bold.chinese-big5=AR PL ZenKai Uni > ++serif.bold.chinese-gb18030=AR PL ZenKai Uni > ++serif.bold.bengali=Lohit Bengali > ++serif.bold.gujarati=Lohit Gujarati > ++serif.bold.hindi=Lohit Hindi > ++serif.bold.malayalam=Lohit Malayalam > ++serif.bold.oriya=Lohit Oriya > ++serif.bold.punjabi=Lohit Punjabi > ++serif.bold.tamil=Lohit Tamil > ++serif.bold.telugu=Lohit Telugu > ++serif.bold.sinhala=LKLUG > ++ > ++serif.italic.latin-1=DejaVu Serif Oblique > ++serif.italic.japanese-x0208=Sazanami Mincho > ++serif.italic.korean=Baekmuk Batang > ++serif.italic.chinese-big5=AR PL ZenKai Uni > ++serif.italic.chinese-gb18030=AR PL ZenKai Uni > ++serif.italic.bengali=Lohit Bengali > ++serif.italic.gujarati=Lohit Gujarati > ++serif.italic.hindi=Lohit Hindi > ++serif.italic.malayalam=Lohit Malayalam > ++serif.italic.oriya=Lohit Oriya > ++serif.italic.punjabi=Lohit Punjabi > ++serif.italic.tamil=Lohit Tamil > ++serif.italic.telugu=Lohit Telugu > ++serif.italic.sinhala=LKLUG > ++ > ++serif.bolditalic.latin-1=DejaVu Serif Bold Oblique > ++serif.bolditalic.japanese-x0208=Sazanami Mincho > ++serif.bolditalic.korean=Baekmuk Batang > ++serif.bolditalic.chinese-big5=AR PL ZenKai Uni > ++serif.bolditalic.chinese-gb18030=AR PL ZenKai Uni > ++serif.bolditalic.bengali=Lohit Bengali > ++serif.bolditalic.gujarati=Lohit Gujarati > ++serif.bolditalic.hindi=Lohit Hindi > ++serif.bolditalic.malayalam=Lohit Malayalam > ++serif.bolditalic.oriya=Lohit Oriya > ++serif.bolditalic.punjabi=Lohit Punjabi > ++serif.bolditalic.tamil=Lohit Tamil > ++serif.bolditalic.telugu=Lohit Telugu > ++serif.bolditalic.sinhala=LKLUG > ++ > ++monospaced.plain.latin-1=DejaVu Sans Mono > ++monospaced.plain.japanese-x0208=Sazanami Gothic > ++monospaced.plain.korean=Baekmuk Gulim > ++monospaced.plain.chinese-big5=AR PL ShanHeiSun Uni > ++monospaced.plain.chinese-gb18030=AR PL ShanHeiSun Uni > ++monospaced.plain.bengali=Lohit Bengali > ++monospaced.plain.gujarati=Lohit Gujarati > ++monospaced.plain.hindi=Lohit Hindi > ++monospaced.plain.malayalam=Lohit Malayalam > ++monospaced.plain.oriya=Lohit Oriya > ++monospaced.plain.punjabi=Lohit Punjabi > ++monospaced.plain.tamil=Lohit Tamil > ++monospaced.plain.telugu=Lohit Telugu > ++monospaced.plain.sinhala=LKLUG > ++ > ++monospaced.bold.latin-1=DejaVu Sans Mono Bold > ++monospaced.bold.japanese-x0208=Sazanami Gothic > ++monospaced.bold.korean=Baekmuk Gulim > ++monospaced.bold.chinese-big5=AR PL ShanHeiSun Uni > ++monospaced.bold.chinese-gb18030=AR PL ShanHeiSun Uni > ++monospaced.bold.bengali=Lohit Bengali > ++monospaced.bold.gujarati=Lohit Gujarati > ++monospaced.bold.hindi=Lohit Hindi > ++monospaced.bold.malayalam=Lohit Malayalam > ++monospaced.bold.oriya=Lohit Oriya > ++monospaced.bold.punjabi=Lohit Punjabi > ++monospaced.bold.tamil=Lohit Tamil > ++monospaced.bold.telugu=Lohit Telugu > ++monospaced.bold.sinhala=LKLUG > ++ > ++monospaced.italic.latin-1=DejaVu Sans Mono Oblique > ++monospaced.italic.japanese-x0208=Sazanami Gothic > ++monospaced.italic.korean=Baekmuk Gulim > ++monospaced.italic.chinese-big5=AR PL ShanHeiSun Uni > ++monospaced.italic.chinese-gb18030=AR PL ShanHeiSun Uni > ++monospaced.italic.bengali=Lohit Bengali > ++monospaced.italic.gujarati=Lohit Gujarati > ++monospaced.italic.hindi=Lohit Hindi > ++monospaced.italic.malayalam=Lohit Malayalam > ++monospaced.italic.oriya=Lohit Oriya > ++monospaced.italic.punjabi=Lohit Punjabi > ++monospaced.italic.tamil=Lohit Tamil > ++monospaced.italic.telugu=Lohit Telugu > ++monospaced.italic.sinhala=LKLUG > ++ > ++monospaced.bolditalic.latin-1=DejaVu Sans Mono Bold Oblique > ++monospaced.bolditalic.japanese-x0208=Sazanami Gothic > ++monospaced.bolditalic.korean=Baekmuk Gulim > ++monospaced.bolditalic.chinese-big5=AR PL ShanHeiSun Uni > ++monospaced.bolditalic.chinese-gb18030=AR PL ShanHeiSun Uni > ++monospaced.bolditalic.bengali=Lohit Bengali > ++monospaced.bolditalic.gujarati=Lohit Gujarati > ++monospaced.bolditalic.hindi=Lohit Hindi > ++monospaced.bolditalic.malayalam=Lohit Malayalam > ++monospaced.bolditalic.oriya=Lohit Oriya > ++monospaced.bolditalic.punjabi=Lohit Punjabi > ++monospaced.bolditalic.tamil=Lohit Tamil > ++monospaced.bolditalic.telugu=Lohit Telugu > ++monospaced.bolditalic.sinhala=LKLUG > ++ > ++dialoginput.plain.latin-1=DejaVu Sans Mono > ++dialoginput.plain.japanese-x0208=Sazanami Gothic > ++dialoginput.plain.korean=Baekmuk Gulim > ++dialoginput.plain.chinese-big5=AR PL ShanHeiSun Uni > ++dialoginput.plain.chinese-gb18030=AR PL ShanHeiSun Uni > ++dialoginput.plain.bengali=Lohit Bengali > ++dialoginput.plain.gujarati=Lohit Gujarati > ++dialoginput.plain.hindi=Lohit Hindi > ++dialoginput.plain.malayalam=Lohit Malayalam > ++dialoginput.plain.oriya=Lohit Oriya > ++dialoginput.plain.punjabi=Lohit Punjabi > ++dialoginput.plain.tamil=Lohit Tamil > ++dialoginput.plain.telugu=Lohit Telugu > ++dialoginput.plain.sinhala=LKLUG > ++ > ++dialoginput.bold.latin-1=DejaVu Sans Mono Bold > ++dialoginput.bold.japanese-x0208=Sazanami Gothic > ++dialoginput.bold.korean=Baekmuk Gulim > ++dialoginput.bold.chinese-big5=AR PL ShanHeiSun Uni > ++dialoginput.bold.chinese-gb18030=AR PL ShanHeiSun Uni > ++dialoginput.bold.bengali=Lohit Bengali > ++dialoginput.bold.gujarati=Lohit Gujarati > ++dialoginput.bold.hindi=Lohit Hindi > ++dialoginput.bold.malayalam=Lohit Malayalam > ++dialoginput.bold.oriya=Lohit Oriya > ++dialoginput.bold.punjabi=Lohit Punjabi > ++dialoginput.bold.tamil=Lohit Tamil > ++dialoginput.bold.telugu=Lohit Telugu > ++dialoginput.bold.sinhala=LKLUG > ++ > ++dialoginput.italic.latin-1=DejaVu Sans Mono Oblique > ++dialoginput.italic.japanese-x0208=Sazanami Gothic > ++dialoginput.italic.korean=Baekmuk Gulim > ++dialoginput.italic.chinese-big5=AR PL ShanHeiSun Uni > ++dialoginput.italic.chinese-gb18030=AR PL ShanHeiSun Uni > ++dialoginput.italic.bengali=Lohit Bengali > ++dialoginput.italic.gujarati=Lohit Gujarati > ++dialoginput.italic.hindi=Lohit Hindi > ++dialoginput.italic.malayalam=Lohit Malayalam > ++dialoginput.italic.oriya=Lohit Oriya > ++dialoginput.italic.punjabi=Lohit Punjabi > ++dialoginput.italic.tamil=Lohit Tamil > ++dialoginput.italic.telugu=Lohit Telugu > ++dialoginput.italic.sinhala=LKLUG > ++ > ++dialoginput.bolditalic.latin-1=DejaVu Sans Mono Bold Oblique > ++dialoginput.bolditalic.japanese-x0208=Sazanami Gothic > ++dialoginput.bolditalic.korean=Baekmuk Gulim > ++dialoginput.bolditalic.chinese-big5=AR PL ShanHeiSun Uni > ++dialoginput.bolditalic.chinese-gb18030=AR PL ShanHeiSun Uni > ++dialoginput.bolditalic.bengali=Lohit Bengali > ++dialoginput.bolditalic.gujarati=Lohit Gujarati > ++dialoginput.bolditalic.hindi=Lohit Hindi > ++dialoginput.bolditalic.malayalam=Lohit Malayalam > ++dialoginput.bolditalic.oriya=Lohit Oriya > ++dialoginput.bolditalic.punjabi=Lohit Punjabi > ++dialoginput.bolditalic.tamil=Lohit Tamil > ++dialoginput.bolditalic.telugu=Lohit Telugu > ++dialoginput.bolditalic.sinhala=LKLUG > ++ > ++# Search Sequences > ++ > ++sequence.allfonts=latin-1 > ++sequence.allfonts.Big5=chinese-big5,latin-1 > ++sequence.allfonts.x-euc-jp-linux=japanese-x0208,latin-1 > ++sequence.allfonts.EUC-KR=korean,latin-1 > ++sequence.allfonts.GB18030=chinese-gb18030,latin-1 > ++sequence.fallback=chinese-big5,chinese-gb18030,japanese-x0208,korean,bengali,gujarati,hindi,oriya,punjabi,malayalam,tamil,telugu,sinhala > ++ > ++# Font File Names > ++ > ++filename.DejaVu_Sans=/usr/share/fonts/dejavu/DejaVuSans.ttf > ++filename.DejaVu_Sans_Bold=/usr/share/fonts/dejavu/DejaVuSans-Bold.ttf > ++filename.DejaVu_Sans_Oblique=/usr/share/fonts/dejavu/DejaVuSans-Oblique.ttf > ++filename.DejaVu_Sans_Bold_Oblique=/usr/share/fonts/dejavu/DejaVuSans-BoldOblique.ttf > ++ > ++filename.DejaVu_Sans_Mono=/usr/share/fonts/dejavu/DejaVuSansMono.ttf > ++filename.DejaVu_Sans_Mono_Bold=/usr/share/fonts/dejavu/DejaVuSansMono-Bold.ttf > ++filename.DejaVu_Sans_Mono_Oblique=/usr/share/fonts/dejavu/DejaVuSansMono-Oblique.ttf > ++filename.DejaVu_Sans_Mono_Bold_Oblique=/usr/share/fonts/dejavu/DejaVuSansMono-BoldOblique.ttf > ++ > ++filename.DejaVu_Serif=/usr/share/fonts/dejavu/DejaVuSerif.ttf > ++filename.DejaVu_Serif_Bold=/usr/share/fonts/dejavu/DejaVuSerif-Bold.ttf > ++filename.DejaVu_Serif_Oblique=/usr/share/fonts/dejavu/DejaVuSerif-Oblique.ttf > ++filename.DejaVu_Serif_Bold_Oblique=/usr/share/fonts/dejavu/DejaVuSerif-BoldOblique.ttf > ++ > ++filename.Sazanami_Gothic=/usr/share/fonts/sazanami-fonts-gothic/sazanami-gothic.ttf > ++filename.Sazanami_Mincho=/usr/share/fonts/sazanami-fonts-mincho/sazanami-mincho.ttf > ++filename.AR_PL_ShanHeiSun_Uni=/usr/share/fonts/cjkunifonts-uming/uming.ttc > ++filename.AR_PL_ZenKai_Uni=/usr/share/fonts/cjkunifonts-ukai/ukai.ttc > ++filename.Baekmuk_Gulim=/usr/share/fonts/baekmuk-ttf-gulim/gulim.ttf > ++filename.Baekmuk_Batang=/usr/share/fonts/baekmuk-ttf-batang/batang.ttf > ++ > ++filename.Lohit_Bengali=/usr/share/fonts/lohit-bengali/lohit_bn.ttf > ++filename.Lohit_Gujarati=/usr/share/fonts/lohit-gujarati/lohit_gu.ttf > ++filename.Lohit_Hindi=/usr/share/fonts/lohit-hindi/lohit_hi.ttf > ++filename.Lohit_Kannda=/usr/share/fonts/lohit-kannada/lohit_kn.ttf > ++filename.Lohit_Malayalam=/usr/share/fonts/lohit-malayalam/lohit_ml.ttf > ++filename.Lohit_Oriya=/usr/share/fonts/lohit-oriya/lohit_or.ttf > ++filename.Lohit_Punjabi=/usr/share/fonts/lohit-punjabi/lohit_pa.ttf > ++filename.Lohit_Tamil=/usr/share/fonts/lohit-tamil/lohit_ta.ttf > ++filename.Lohit_Telugu=/usr/share/fonts/lohit-telugu/lohit_te.ttf > ++filename.LKLUG=/usr/share/fonts/lklug/lklug.ttf > ++ > + > + > +--- /dev/null 1970-01-01 00:00:00 UTC > ++++ openjdk/jdk/src/solaris/classes/sun/awt/fontconfigs/linux.fontconfig.Fedora.12.properties 2010-11-04 11:19:45.133587953 +0100 > +@@ -0,0 +1,376 @@ > ++# > ++# Copyright 2007 Sun Microsystems, Inc. All Rights Reserved. > ++# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. > ++# > ++# This code is free software; you can redistribute it and/or modify it > ++# under the terms of the GNU General Public License version 2 only, as > ++# published by the Free Software Foundation. Sun designates this > ++# particular file as subject to the "Classpath" exception as provided > ++# by Sun in the LICENSE file that accompanied this code. > ++# > ++# This code is distributed in the hope that it will be useful, but WITHOUT > ++# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or > ++# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License > ++# version 2 for more details (a copy is included in the LICENSE file that > ++# accompanied this code). > ++# > ++# You should have received a copy of the GNU General Public License version > ++# 2 along with this work; if not, write to the Free Software Foundation, > ++# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. > ++# > ++# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, > ++# CA 95054 USA or visit www.sun.com if you need additional information or > ++# have any questions. > ++# > ++ > ++# Version > ++ > ++# Uses Fedora 9 fonts and file paths. > ++version=1 > ++ > ++# Component Font Mappings > ++ > ++dialog.plain.latin-1=DejaVu Sans > ++dialog.plain.japanese-x0208=Sazanami Gothic > ++dialog.plain.korean=Baekmuk Gulim > ++dialog.plain.chinese-big5=AR PL ShanHeiSun Uni > ++dialog.plain.chinese-gb18030=AR PL ShanHeiSun Uni > ++dialog.plain.bengali=Lohit Bengali > ++dialog.plain.gujarati=Lohit Gujarati > ++dialog.plain.hindi=Lohit Hindi > ++dialog.plain.malayalam=Lohit Malayalam > ++dialog.plain.oriya=Lohit Oriya > ++dialog.plain.punjabi=Lohit Punjabi > ++dialog.plain.tamil=Lohit Tamil > ++dialog.plain.telugu=Lohit Telugu > ++dialog.plain.sinhala=LKLUG > ++ > ++dialog.bold.latin-1=DejaVu Sans Bold > ++dialog.bold.japanese-x0208=Sazanami Gothic > ++dialog.bold.korean=Baekmuk Gulim > ++dialog.bold.chinese-big5=AR PL ShanHeiSun Uni > ++dialog.bold.chinese-gb18030=AR PL ShanHeiSun Uni > ++dialog.bold.bengali=Lohit Bengali > ++dialog.bold.gujarati=Lohit Gujarati > ++dialog.bold.hindi=Lohit Hindi > ++dialog.bold.malayalam=Lohit Malayalam > ++dialog.bold.oriya=Lohit Oriya > ++dialog.bold.punjabi=Lohit Punjabi > ++dialog.bold.tamil=Lohit Tamil > ++dialog.bold.telugu=Lohit Telugu > ++dialog.bold.sinhala=LKLUG > ++ > ++dialog.italic.latin-1=DejaVu Sans Oblique > ++dialog.italic.japanese-x0208=Sazanami Gothic > ++dialog.italic.korean=Baekmuk Gulim > ++dialog.italic.chinese-big5=AR PL ShanHeiSun Uni > ++dialog.italic.chinese-gb18030=AR PL ShanHeiSun Uni > ++dialog.italic.bengali=Lohit Bengali > ++dialog.italic.gujarati=Lohit Gujarati > ++dialog.italic.hindi=Lohit Hindi > ++dialog.italic.malayalam=Lohit Malayalam > ++dialog.italic.oriya=Lohit Oriya > ++dialog.italic.punjabi=Lohit Punjabi > ++dialog.italic.tamil=Lohit Tamil > ++dialog.italic.telugu=Lohit Telugu > ++dialog.italic.sinhala=LKLUG > ++ > ++dialog.bolditalic.latin-1=DejaVu Sans Bold Oblique > ++dialog.bolditalic.japanese-x0208=Sazanami Gothic > ++dialog.bolditalic.korean=Baekmuk Gulim > ++dialog.bolditalic.chinese-big5=AR PL ShanHeiSun Uni > ++dialog.bolditalic.chinese-gb18030=AR PL ShanHeiSun Uni > ++dialog.bolditalic.bengali=Lohit Bengali > ++dialog.bolditalic.gujarati=Lohit Gujarati > ++dialog.bolditalic.hindi=Lohit Hindi > ++dialog.bolditalic.malayalam=Lohit Malayalam > ++dialog.bolditalic.oriya=Lohit Oriya > ++dialog.bolditalic.punjabi=Lohit Punjabi > ++dialog.bolditalic.tamil=Lohit Tamil > ++dialog.bolditalic.telugu=Lohit Telugu > ++dialog.bolditalic.sinhala=LKLUG > ++ > ++sansserif.plain.latin-1=DejaVu Sans > ++sansserif.plain.japanese-x0208=Sazanami Gothic > ++sansserif.plain.korean=Baekmuk Gulim > ++sansserif.plain.chinese-big5=AR PL ShanHeiSun Uni > ++sansserif.plain.chinese-gb18030=AR PL ShanHeiSun Uni > ++sansserif.plain.bengali=Lohit Bengali > ++sansserif.plain.gujarati=Lohit Gujarati > ++sansserif.plain.hindi=Lohit Hindi > ++sansserif.plain.malayalam=Lohit Malayalam > ++sansserif.plain.oriya=Lohit Oriya > ++sansserif.plain.punjabi=Lohit Punjabi > ++sansserif.plain.tamil=Lohit Tamil > ++sansserif.plain.telugu=Lohit Telugu > ++sansserif.plain.sinhala=LKLUG > ++ > ++sansserif.bold.latin-1=DejaVu Sans Bold > ++sansserif.bold.japanese-x0208=Sazanami Gothic > ++sansserif.bold.korean=Baekmuk Gulim > ++sansserif.bold.chinese-big5=AR PL ShanHeiSun Uni > ++sansserif.bold.chinese-gb18030=AR PL ShanHeiSun Uni > ++sansserif.bold.bengali=Lohit Bengali > ++sansserif.bold.gujarati=Lohit Gujarati > ++sansserif.bold.hindi=Lohit Hindi > ++sansserif.bold.malayalam=Lohit Malayalam > ++sansserif.bold.oriya=Lohit Oriya > ++sansserif.bold.punjabi=Lohit Punjabi > ++sansserif.bold.tamil=Lohit Tamil > ++sansserif.bold.telugu=Lohit Telugu > ++sansserif.bold.sinhala=LKLUG > ++ > ++sansserif.italic.latin-1=DejaVu Sans Oblique > ++sansserif.italic.japanese-x0208=Sazanami Gothic > ++sansserif.italic.korean=Baekmuk Gulim > ++sansserif.italic.chinese-big5=AR PL ShanHeiSun Uni > ++sansserif.italic.chinese-gb18030=AR PL ShanHeiSun Uni > ++sansserif.italic.bengali=Lohit Bengali > ++sansserif.italic.gujarati=Lohit Gujarati > ++sansserif.italic.hindi=Lohit Hindi > ++sansserif.italic.malayalam=Lohit Malayalam > ++sansserif.italic.oriya=Lohit Oriya > ++sansserif.italic.punjabi=Lohit Punjabi > ++sansserif.italic.tamil=Lohit Tamil > ++sansserif.italic.telugu=Lohit Telugu > ++sansserif.italic.sinhala=LKLUG > ++ > ++sansserif.bolditalic.latin-1=DejaVu Sans Bold Oblique > ++sansserif.bolditalic.japanese-x0208=Sazanami Gothic > ++sansserif.bolditalic.korean=Baekmuk Gulim > ++sansserif.bolditalic.chinese-big5=AR PL ShanHeiSun Uni > ++sansserif.bolditalic.chinese-gb18030=AR PL ShanHeiSun Uni > ++sansserif.bolditalic.bengali=Lohit Bengali > ++sansserif.bolditalic.gujarati=Lohit Gujarati > ++sansserif.bolditalic.hindi=Lohit Hindi > ++sansserif.bolditalic.malayalam=Lohit Malayalam > ++sansserif.bolditalic.oriya=Lohit Oriya > ++sansserif.bolditalic.punjabi=Lohit Punjabi > ++sansserif.bolditalic.tamil=Lohit Tamil > ++sansserif.bolditalic.telugu=Lohit Telugu > ++sansserif.bolditalic.sinhala=LKLUG > ++ > ++serif.plain.latin-1=DejaVu Serif > ++serif.plain.japanese-x0208=Sazanami Mincho > ++serif.plain.korean=Baekmuk Batang > ++serif.plain.chinese-big5=AR PL ZenKai Uni > ++serif.plain.chinese-gb18030=AR PL ZenKai Uni > ++serif.plain.bengali=Lohit Bengali > ++serif.plain.gujarati=Lohit Gujarati > ++serif.plain.hindi=Lohit Hindi > ++serif.plain.malayalam=Lohit Malayalam > ++serif.plain.oriya=Lohit Oriya > ++serif.plain.punjabi=Lohit Punjabi > ++serif.plain.tamil=Lohit Tamil > ++serif.plain.telugu=Lohit Telugu > ++serif.plain.sinhala=LKLUG > ++ > ++serif.bold.latin-1=DejaVu Serif Bold > ++serif.bold.japanese-x0208=Sazanami Mincho > ++serif.bold.korean=Baekmuk Batang > ++serif.bold.chinese-big5=AR PL ZenKai Uni > ++serif.bold.chinese-gb18030=AR PL ZenKai Uni > ++serif.bold.bengali=Lohit Bengali > ++serif.bold.gujarati=Lohit Gujarati > ++serif.bold.hindi=Lohit Hindi > ++serif.bold.malayalam=Lohit Malayalam > ++serif.bold.oriya=Lohit Oriya > ++serif.bold.punjabi=Lohit Punjabi > ++serif.bold.tamil=Lohit Tamil > ++serif.bold.telugu=Lohit Telugu > ++serif.bold.sinhala=LKLUG > ++ > ++serif.italic.latin-1=DejaVu Serif Oblique > ++serif.italic.japanese-x0208=Sazanami Mincho > ++serif.italic.korean=Baekmuk Batang > ++serif.italic.chinese-big5=AR PL ZenKai Uni > ++serif.italic.chinese-gb18030=AR PL ZenKai Uni > ++serif.italic.bengali=Lohit Bengali > ++serif.italic.gujarati=Lohit Gujarati > ++serif.italic.hindi=Lohit Hindi > ++serif.italic.malayalam=Lohit Malayalam > ++serif.italic.oriya=Lohit Oriya > ++serif.italic.punjabi=Lohit Punjabi > ++serif.italic.tamil=Lohit Tamil > ++serif.italic.telugu=Lohit Telugu > ++serif.italic.sinhala=LKLUG > ++ > ++serif.bolditalic.latin-1=DejaVu Serif Bold Oblique > ++serif.bolditalic.japanese-x0208=Sazanami Mincho > ++serif.bolditalic.korean=Baekmuk Batang > ++serif.bolditalic.chinese-big5=AR PL ZenKai Uni > ++serif.bolditalic.chinese-gb18030=AR PL ZenKai Uni > ++serif.bolditalic.bengali=Lohit Bengali > ++serif.bolditalic.gujarati=Lohit Gujarati > ++serif.bolditalic.hindi=Lohit Hindi > ++serif.bolditalic.malayalam=Lohit Malayalam > ++serif.bolditalic.oriya=Lohit Oriya > ++serif.bolditalic.punjabi=Lohit Punjabi > ++serif.bolditalic.tamil=Lohit Tamil > ++serif.bolditalic.telugu=Lohit Telugu > ++serif.bolditalic.sinhala=LKLUG > ++ > ++monospaced.plain.latin-1=DejaVu Sans Mono > ++monospaced.plain.japanese-x0208=Sazanami Gothic > ++monospaced.plain.korean=Baekmuk Gulim > ++monospaced.plain.chinese-big5=AR PL ShanHeiSun Uni > ++monospaced.plain.chinese-gb18030=AR PL ShanHeiSun Uni > ++monospaced.plain.bengali=Lohit Bengali > ++monospaced.plain.gujarati=Lohit Gujarati > ++monospaced.plain.hindi=Lohit Hindi > ++monospaced.plain.malayalam=Lohit Malayalam > ++monospaced.plain.oriya=Lohit Oriya > ++monospaced.plain.punjabi=Lohit Punjabi > ++monospaced.plain.tamil=Lohit Tamil > ++monospaced.plain.telugu=Lohit Telugu > ++monospaced.plain.sinhala=LKLUG > ++ > ++monospaced.bold.latin-1=DejaVu Sans Mono Bold > ++monospaced.bold.japanese-x0208=Sazanami Gothic > ++monospaced.bold.korean=Baekmuk Gulim > ++monospaced.bold.chinese-big5=AR PL ShanHeiSun Uni > ++monospaced.bold.chinese-gb18030=AR PL ShanHeiSun Uni > ++monospaced.bold.bengali=Lohit Bengali > ++monospaced.bold.gujarati=Lohit Gujarati > ++monospaced.bold.hindi=Lohit Hindi > ++monospaced.bold.malayalam=Lohit Malayalam > ++monospaced.bold.oriya=Lohit Oriya > ++monospaced.bold.punjabi=Lohit Punjabi > ++monospaced.bold.tamil=Lohit Tamil > ++monospaced.bold.telugu=Lohit Telugu > ++monospaced.bold.sinhala=LKLUG > ++ > ++monospaced.italic.latin-1=DejaVu Sans Mono Oblique > ++monospaced.italic.japanese-x0208=Sazanami Gothic > ++monospaced.italic.korean=Baekmuk Gulim > ++monospaced.italic.chinese-big5=AR PL ShanHeiSun Uni > ++monospaced.italic.chinese-gb18030=AR PL ShanHeiSun Uni > ++monospaced.italic.bengali=Lohit Bengali > ++monospaced.italic.gujarati=Lohit Gujarati > ++monospaced.italic.hindi=Lohit Hindi > ++monospaced.italic.malayalam=Lohit Malayalam > ++monospaced.italic.oriya=Lohit Oriya > ++monospaced.italic.punjabi=Lohit Punjabi > ++monospaced.italic.tamil=Lohit Tamil > ++monospaced.italic.telugu=Lohit Telugu > ++monospaced.italic.sinhala=LKLUG > ++ > ++monospaced.bolditalic.latin-1=DejaVu Sans Mono Bold Oblique > ++monospaced.bolditalic.japanese-x0208=Sazanami Gothic > ++monospaced.bolditalic.korean=Baekmuk Gulim > ++monospaced.bolditalic.chinese-big5=AR PL ShanHeiSun Uni > ++monospaced.bolditalic.chinese-gb18030=AR PL ShanHeiSun Uni > ++monospaced.bolditalic.bengali=Lohit Bengali > ++monospaced.bolditalic.gujarati=Lohit Gujarati > ++monospaced.bolditalic.hindi=Lohit Hindi > ++monospaced.bolditalic.malayalam=Lohit Malayalam > ++monospaced.bolditalic.oriya=Lohit Oriya > ++monospaced.bolditalic.punjabi=Lohit Punjabi > ++monospaced.bolditalic.tamil=Lohit Tamil > ++monospaced.bolditalic.telugu=Lohit Telugu > ++monospaced.bolditalic.sinhala=LKLUG > ++ > ++dialoginput.plain.latin-1=DejaVu Sans Mono > ++dialoginput.plain.japanese-x0208=Sazanami Gothic > ++dialoginput.plain.korean=Baekmuk Gulim > ++dialoginput.plain.chinese-big5=AR PL ShanHeiSun Uni > ++dialoginput.plain.chinese-gb18030=AR PL ShanHeiSun Uni > ++dialoginput.plain.bengali=Lohit Bengali > ++dialoginput.plain.gujarati=Lohit Gujarati > ++dialoginput.plain.hindi=Lohit Hindi > ++dialoginput.plain.malayalam=Lohit Malayalam > ++dialoginput.plain.oriya=Lohit Oriya > ++dialoginput.plain.punjabi=Lohit Punjabi > ++dialoginput.plain.tamil=Lohit Tamil > ++dialoginput.plain.telugu=Lohit Telugu > ++dialoginput.plain.sinhala=LKLUG > ++ > ++dialoginput.bold.latin-1=DejaVu Sans Mono Bold > ++dialoginput.bold.japanese-x0208=Sazanami Gothic > ++dialoginput.bold.korean=Baekmuk Gulim > ++dialoginput.bold.chinese-big5=AR PL ShanHeiSun Uni > ++dialoginput.bold.chinese-gb18030=AR PL ShanHeiSun Uni > ++dialoginput.bold.bengali=Lohit Bengali > ++dialoginput.bold.gujarati=Lohit Gujarati > ++dialoginput.bold.hindi=Lohit Hindi > ++dialoginput.bold.malayalam=Lohit Malayalam > ++dialoginput.bold.oriya=Lohit Oriya > ++dialoginput.bold.punjabi=Lohit Punjabi > ++dialoginput.bold.tamil=Lohit Tamil > ++dialoginput.bold.telugu=Lohit Telugu > ++dialoginput.bold.sinhala=LKLUG > ++ > ++dialoginput.italic.latin-1=DejaVu Sans Mono Oblique > ++dialoginput.italic.japanese-x0208=Sazanami Gothic > ++dialoginput.italic.korean=Baekmuk Gulim > ++dialoginput.italic.chinese-big5=AR PL ShanHeiSun Uni > ++dialoginput.italic.chinese-gb18030=AR PL ShanHeiSun Uni > ++dialoginput.italic.bengali=Lohit Bengali > ++dialoginput.italic.gujarati=Lohit Gujarati > ++dialoginput.italic.hindi=Lohit Hindi > ++dialoginput.italic.malayalam=Lohit Malayalam > ++dialoginput.italic.oriya=Lohit Oriya > ++dialoginput.italic.punjabi=Lohit Punjabi > ++dialoginput.italic.tamil=Lohit Tamil > ++dialoginput.italic.telugu=Lohit Telugu > ++dialoginput.italic.sinhala=LKLUG > ++ > ++dialoginput.bolditalic.latin-1=DejaVu Sans Mono Bold Oblique > ++dialoginput.bolditalic.japanese-x0208=Sazanami Gothic > ++dialoginput.bolditalic.korean=Baekmuk Gulim > ++dialoginput.bolditalic.chinese-big5=AR PL ShanHeiSun Uni > ++dialoginput.bolditalic.chinese-gb18030=AR PL ShanHeiSun Uni > ++dialoginput.bolditalic.bengali=Lohit Bengali > ++dialoginput.bolditalic.gujarati=Lohit Gujarati > ++dialoginput.bolditalic.hindi=Lohit Hindi > ++dialoginput.bolditalic.malayalam=Lohit Malayalam > ++dialoginput.bolditalic.oriya=Lohit Oriya > ++dialoginput.bolditalic.punjabi=Lohit Punjabi > ++dialoginput.bolditalic.tamil=Lohit Tamil > ++dialoginput.bolditalic.telugu=Lohit Telugu > ++dialoginput.bolditalic.sinhala=LKLUG > ++ > ++# Search Sequences > ++ > ++sequence.allfonts=latin-1 > ++sequence.allfonts.Big5=chinese-big5,latin-1 > ++sequence.allfonts.x-euc-jp-linux=japanese-x0208,latin-1 > ++sequence.allfonts.EUC-KR=korean,latin-1 > ++sequence.allfonts.GB18030=chinese-gb18030,latin-1 > ++sequence.fallback=chinese-big5,chinese-gb18030,japanese-x0208,korean,bengali,gujarati,hindi,oriya,punjabi,malayalam,tamil,telugu,sinhala > ++ > ++# Font File Names > ++ > ++filename.DejaVu_Sans=/usr/share/fonts/dejavu/DejaVuSans.ttf > ++filename.DejaVu_Sans_Bold=/usr/share/fonts/dejavu/DejaVuSans-Bold.ttf > ++filename.DejaVu_Sans_Oblique=/usr/share/fonts/dejavu/DejaVuSans-Oblique.ttf > ++filename.DejaVu_Sans_Bold_Oblique=/usr/share/fonts/dejavu/DejaVuSans-BoldOblique.ttf > ++ > ++filename.DejaVu_Sans_Mono=/usr/share/fonts/dejavu/DejaVuSansMono.ttf > ++filename.DejaVu_Sans_Mono_Bold=/usr/share/fonts/dejavu/DejaVuSansMono-Bold.ttf > ++filename.DejaVu_Sans_Mono_Oblique=/usr/share/fonts/dejavu/DejaVuSansMono-Oblique.ttf > ++filename.DejaVu_Sans_Mono_Bold_Oblique=/usr/share/fonts/dejavu/DejaVuSansMono-BoldOblique.ttf > ++ > ++filename.DejaVu_Serif=/usr/share/fonts/dejavu/DejaVuSerif.ttf > ++filename.DejaVu_Serif_Bold=/usr/share/fonts/dejavu/DejaVuSerif-Bold.ttf > ++filename.DejaVu_Serif_Oblique=/usr/share/fonts/dejavu/DejaVuSerif-Oblique.ttf > ++filename.DejaVu_Serif_Bold_Oblique=/usr/share/fonts/dejavu/DejaVuSerif-BoldOblique.ttf > ++ > ++filename.Sazanami_Gothic=/usr/share/fonts/sazanami-fonts-gothic/sazanami-gothic.ttf > ++filename.Sazanami_Mincho=/usr/share/fonts/sazanami-fonts-mincho/sazanami-mincho.ttf > ++filename.AR_PL_ShanHeiSun_Uni=/usr/share/fonts/cjkunifonts-uming/uming.ttc > ++filename.AR_PL_ZenKai_Uni=/usr/share/fonts/cjkunifonts-ukai/ukai.ttc > ++filename.Baekmuk_Gulim=/usr/share/fonts/baekmuk-ttf-gulim/gulim.ttf > ++filename.Baekmuk_Batang=/usr/share/fonts/baekmuk-ttf-batang/batang.ttf > ++ > ++filename.Lohit_Bengali=/usr/share/fonts/lohit-bengali/lohit_bn.ttf > ++filename.Lohit_Gujarati=/usr/share/fonts/lohit-gujarati/lohit_gu.ttf > ++filename.Lohit_Hindi=/usr/share/fonts/lohit-hindi/lohit_hi.ttf > ++filename.Lohit_Kannda=/usr/share/fonts/lohit-kannada/lohit_kn.ttf > ++filename.Lohit_Malayalam=/usr/share/fonts/lohit-malayalam/lohit_ml.ttf > ++filename.Lohit_Oriya=/usr/share/fonts/lohit-oriya/lohit_or.ttf > ++filename.Lohit_Punjabi=/usr/share/fonts/lohit-punjabi/lohit_pa.ttf > ++filename.Lohit_Tamil=/usr/share/fonts/lohit-tamil/lohit_ta.ttf > ++filename.Lohit_Telugu=/usr/share/fonts/lohit-telugu/lohit_te.ttf > ++filename.LKLUG=/usr/share/fonts/lklug/lklug.ttf > ++ > + > --- openjdk/jdk/make/sun/awt/Makefile 2010-11-04 09:52:49.583434000 +0100 > +++ openjdk/jdk/make/sun/awt/Makefile 2010-11-04 16:50:14.091688769 +0100 > @@ -387,6 +387,8 @@ > fontconfig.SuSE.properties \ > fontconfig.Ubuntu.properties \ > fontconfig.Fedora.properties \ > + fontconfig.Fedora.11.properties \ > + fontconfig.Fedora.12.properties \ > fontconfig.RedHat.6.0.properties \ > fontconfig.Gentoo.properties > else > --- openjdk-old/jdk/src/solaris/classes/sun/awt/fontconfigs/linux.fontconfig.Fedora.11.properties 2010-11-04 11:06:26.695428114 +0100 > +++ openjdk/jdk/src/solaris/classes/sun/awt/fontconfigs/linux.fontconfig.Fedora.11.properties 2010-11-04 11:19:45.133587953 +0100 > @@ -35,6 +35,8 @@ > dialog.plain.korean=Baekmuk Gulim > dialog.plain.chinese-big5=AR PL ShanHeiSun Uni > dialog.plain.chinese-gb18030=AR PL ShanHeiSun Uni > +dialog.plain.assamese=Lohit Assamese > +dialog.plain.devanagari=Lohit Devanagari > dialog.plain.bengali=Lohit Bengali > dialog.plain.gujarati=Lohit Gujarati > dialog.plain.hindi=Lohit Hindi > @@ -50,6 +52,8 @@ > dialog.bold.korean=Baekmuk Gulim > dialog.bold.chinese-big5=AR PL ShanHeiSun Uni > dialog.bold.chinese-gb18030=AR PL ShanHeiSun Uni > +dialog.bold.assamese=Lohit Assamese > +dialog.bold.devanagari=Lohit Devanagari > dialog.bold.bengali=Lohit Bengali > dialog.bold.gujarati=Lohit Gujarati > dialog.bold.hindi=Lohit Hindi > @@ -65,6 +69,8 @@ > dialog.italic.korean=Baekmuk Gulim > dialog.italic.chinese-big5=AR PL ShanHeiSun Uni > dialog.italic.chinese-gb18030=AR PL ShanHeiSun Uni > +dialog.italic.assamese=Lohit Assamese > +dialog.italic.devanagari=Lohit Devanagari > dialog.italic.bengali=Lohit Bengali > dialog.italic.gujarati=Lohit Gujarati > dialog.italic.hindi=Lohit Hindi > @@ -80,6 +86,8 @@ > dialog.bolditalic.korean=Baekmuk Gulim > dialog.bolditalic.chinese-big5=AR PL ShanHeiSun Uni > dialog.bolditalic.chinese-gb18030=AR PL ShanHeiSun Uni > +dialog.bolditalic.assamese=Lohit Assamese > +dialog.bolditalic.devanagari=Lohit Devanagari > dialog.bolditalic.bengali=Lohit Bengali > dialog.bolditalic.gujarati=Lohit Gujarati > dialog.bolditalic.hindi=Lohit Hindi > @@ -95,6 +103,8 @@ > sansserif.plain.korean=Baekmuk Gulim > sansserif.plain.chinese-big5=AR PL ShanHeiSun Uni > sansserif.plain.chinese-gb18030=AR PL ShanHeiSun Uni > +sansserif.plain.assamese=Lohit Assamese > +sansserif.plain.devanagari=Lohit Devanagari > sansserif.plain.bengali=Lohit Bengali > sansserif.plain.gujarati=Lohit Gujarati > sansserif.plain.hindi=Lohit Hindi > @@ -110,6 +120,8 @@ > sansserif.bold.korean=Baekmuk Gulim > sansserif.bold.chinese-big5=AR PL ShanHeiSun Uni > sansserif.bold.chinese-gb18030=AR PL ShanHeiSun Uni > +sansserif.bold.assamese=Lohit Assamese > +sansserif.bold.devanagari=Lohit Devanagari > sansserif.bold.bengali=Lohit Bengali > sansserif.bold.gujarati=Lohit Gujarati > sansserif.bold.hindi=Lohit Hindi > @@ -125,6 +137,8 @@ > sansserif.italic.korean=Baekmuk Gulim > sansserif.italic.chinese-big5=AR PL ShanHeiSun Uni > sansserif.italic.chinese-gb18030=AR PL ShanHeiSun Uni > +sansserif.italic.assamese=Lohit Assamese > +sansserif.italic.devanagari=Lohit Devanagari > sansserif.italic.bengali=Lohit Bengali > sansserif.italic.gujarati=Lohit Gujarati > sansserif.italic.hindi=Lohit Hindi > @@ -140,6 +154,8 @@ > sansserif.bolditalic.korean=Baekmuk Gulim > sansserif.bolditalic.chinese-big5=AR PL ShanHeiSun Uni > sansserif.bolditalic.chinese-gb18030=AR PL ShanHeiSun Uni > +sansserif.bolditalic.assamese=Lohit Assamese > +sansserif.bolditalic.devanagari=Lohit Devanagari > sansserif.bolditalic.bengali=Lohit Bengali > sansserif.bolditalic.gujarati=Lohit Gujarati > sansserif.bolditalic.hindi=Lohit Hindi > @@ -155,6 +171,8 @@ > serif.plain.korean=Baekmuk Batang > serif.plain.chinese-big5=AR PL ZenKai Uni > serif.plain.chinese-gb18030=AR PL ZenKai Uni > +serif.plain.assamese=Lohit Assamese > +serif.plain.devanagari=Lohit Devanagari > serif.plain.bengali=Lohit Bengali > serif.plain.gujarati=Lohit Gujarati > serif.plain.hindi=Lohit Hindi > @@ -170,6 +188,8 @@ > serif.bold.korean=Baekmuk Batang > serif.bold.chinese-big5=AR PL ZenKai Uni > serif.bold.chinese-gb18030=AR PL ZenKai Uni > +serif.bold.assamese=Lohit Assamese > +serif.bold.devanagari=Lohit Devanagari > serif.bold.bengali=Lohit Bengali > serif.bold.gujarati=Lohit Gujarati > serif.bold.hindi=Lohit Hindi > @@ -185,6 +205,8 @@ > serif.italic.korean=Baekmuk Batang > serif.italic.chinese-big5=AR PL ZenKai Uni > serif.italic.chinese-gb18030=AR PL ZenKai Uni > +serif.italic.assamese=Lohit Assamese > +serif.italic.devanagari=Lohit Devanagari > serif.italic.bengali=Lohit Bengali > serif.italic.gujarati=Lohit Gujarati > serif.italic.hindi=Lohit Hindi > @@ -200,6 +222,8 @@ > serif.bolditalic.korean=Baekmuk Batang > serif.bolditalic.chinese-big5=AR PL ZenKai Uni > serif.bolditalic.chinese-gb18030=AR PL ZenKai Uni > +serif.bolditalic.assamese=Lohit Assamese > +serif.bolditalic.devanagari=Lohit Devanagari > serif.bolditalic.bengali=Lohit Bengali > serif.bolditalic.gujarati=Lohit Gujarati > serif.bolditalic.hindi=Lohit Hindi > @@ -215,6 +239,8 @@ > monospaced.plain.korean=Baekmuk Gulim > monospaced.plain.chinese-big5=AR PL ShanHeiSun Uni > monospaced.plain.chinese-gb18030=AR PL ShanHeiSun Uni > +monospaced.plain.assamese=Lohit Assamese > +monospaced.plain.devanagari=Lohit Devanagari > monospaced.plain.bengali=Lohit Bengali > monospaced.plain.gujarati=Lohit Gujarati > monospaced.plain.hindi=Lohit Hindi > @@ -230,6 +256,8 @@ > monospaced.bold.korean=Baekmuk Gulim > monospaced.bold.chinese-big5=AR PL ShanHeiSun Uni > monospaced.bold.chinese-gb18030=AR PL ShanHeiSun Uni > +monospaced.bold.assamese=Lohit Assamese > +monospaced.bold.devanagari=Lohit Devanagari > monospaced.bold.bengali=Lohit Bengali > monospaced.bold.gujarati=Lohit Gujarati > monospaced.bold.hindi=Lohit Hindi > @@ -245,6 +273,8 @@ > monospaced.italic.korean=Baekmuk Gulim > monospaced.italic.chinese-big5=AR PL ShanHeiSun Uni > monospaced.italic.chinese-gb18030=AR PL ShanHeiSun Uni > +monospaced.italic.assamese=Lohit Assamese > +monospaced.italic.devanagari=Lohit Devanagari > monospaced.italic.bengali=Lohit Bengali > monospaced.italic.gujarati=Lohit Gujarati > monospaced.italic.hindi=Lohit Hindi > @@ -260,6 +290,8 @@ > monospaced.bolditalic.korean=Baekmuk Gulim > monospaced.bolditalic.chinese-big5=AR PL ShanHeiSun Uni > monospaced.bolditalic.chinese-gb18030=AR PL ShanHeiSun Uni > +monospaced.bolditalic.assamese=Lohit Assamese > +monospaced.bolditalic.devanagari=Lohit Devanagari > monospaced.bolditalic.bengali=Lohit Bengali > monospaced.bolditalic.gujarati=Lohit Gujarati > monospaced.bolditalic.hindi=Lohit Hindi > @@ -275,6 +307,8 @@ > dialoginput.plain.korean=Baekmuk Gulim > dialoginput.plain.chinese-big5=AR PL ShanHeiSun Uni > dialoginput.plain.chinese-gb18030=AR PL ShanHeiSun Uni > +dialoginput.plain.assamese=Lohit Assamese > +dialoginput.plain.devanagari=Lohit Devanagari > dialoginput.plain.bengali=Lohit Bengali > dialoginput.plain.gujarati=Lohit Gujarati > dialoginput.plain.hindi=Lohit Hindi > @@ -290,6 +324,8 @@ > dialoginput.bold.korean=Baekmuk Gulim > dialoginput.bold.chinese-big5=AR PL ShanHeiSun Uni > dialoginput.bold.chinese-gb18030=AR PL ShanHeiSun Uni > +dialoginput.bold.assamese=Lohit Assamese > +dialoginput.bold.devanagari=Lohit Devanagari > dialoginput.bold.bengali=Lohit Bengali > dialoginput.bold.gujarati=Lohit Gujarati > dialoginput.bold.hindi=Lohit Hindi > @@ -305,6 +341,8 @@ > dialoginput.italic.korean=Baekmuk Gulim > dialoginput.italic.chinese-big5=AR PL ShanHeiSun Uni > dialoginput.italic.chinese-gb18030=AR PL ShanHeiSun Uni > +dialoginput.italic.assamese=Lohit Assamese > +dialoginput.italic.devanagari=Lohit Devanagari > dialoginput.italic.bengali=Lohit Bengali > dialoginput.italic.gujarati=Lohit Gujarati > dialoginput.italic.hindi=Lohit Hindi > @@ -320,6 +358,8 @@ > dialoginput.bolditalic.korean=Baekmuk Gulim > dialoginput.bolditalic.chinese-big5=AR PL ShanHeiSun Uni > dialoginput.bolditalic.chinese-gb18030=AR PL ShanHeiSun Uni > +dialoginput.bolditalic.assamese=Lohit Assamese > +dialoginput.bolditalic.devanagari=Lohit Devanagari > dialoginput.bolditalic.bengali=Lohit Bengali > dialoginput.bolditalic.gujarati=Lohit Gujarati > dialoginput.bolditalic.hindi=Lohit Hindi > @@ -356,21 +396,24 @@ > filename.DejaVu_Serif_Oblique=/usr/share/fonts/dejavu/DejaVuSerif-Oblique.ttf > filename.DejaVu_Serif_Bold_Oblique=/usr/share/fonts/dejavu/DejaVuSerif-BoldOblique.ttf > > -filename.Sazanami_Gothic=/usr/share/fonts/sazanami-fonts-gothic/sazanami-gothic.ttf > -filename.Sazanami_Mincho=/usr/share/fonts/sazanami-fonts-mincho/sazanami-mincho.ttf > +filename.Sazanami_Gothic=/usr/share/fonts/sazanami/gothic/sazanami-gothic.ttf > +filename.Sazanami_Mincho=/usr/share/fonts/sazanami/mincho/sazanami-mincho.ttf > filename.AR_PL_ShanHeiSun_Uni=/usr/share/fonts/cjkunifonts-uming/uming.ttc > filename.AR_PL_ZenKai_Uni=/usr/share/fonts/cjkunifonts-ukai/ukai.ttc > -filename.Baekmuk_Gulim=/usr/share/fonts/baekmuk-ttf-gulim/gulim.ttf > -filename.Baekmuk_Batang=/usr/share/fonts/baekmuk-ttf-batang/batang.ttf > +filename.Baekmuk_Gulim=/usr/share/fonts/baekmuk-ttf/gulim.ttf > +filename.Baekmuk_Batang=/usr/share/fonts/baekmuk-ttf/batang.ttf > + > +filename.Lohit_Assamese=/usr/share/fonts/lohit-assamese/Lohit-Assamese.ttf > +filename.Lohit_Devanagari=/usr/share/fonts/lohit-devanagari/Lohit-Devanagari.ttf > +filename.Lohit_Bengali=/usr/share/fonts/lohit-bengali/Lohit-Bengali.ttf > +filename.Lohit_Gujarati=/usr/share/fonts/lohit-gujarati/Lohit-Gujarati.ttf > +filename.Lohit_Hindi=/usr/share/fonts/lohit-devanagari/Lohit-Devanagari.ttf > +filename.Lohit_Kannda=/usr/share/fonts/lohit-kannada/Lohit-Kannada.ttf > +filename.Lohit_Malayalam=/usr/share/fonts/lohit-malayalam/Lohit-Malayalam.ttf > +filename.Lohit_Oriya=/usr/share/fonts/lohit-oriya/Lohit-Oriya.ttf > +filename.Lohit_Punjabi=/usr/share/fonts/lohit-punjabi/Lohit-Punjabi.ttf > +filename.Lohit_Tamil=/usr/share/fonts/lohit-tamil/Lohit-Tamil.ttf > +filename.Lohit_Telugu=/usr/share/fonts/lohit-telugu/Lohit-Telugu.ttf > > -filename.Lohit_Bengali=/usr/share/fonts/lohit-bengali/lohit_bn.ttf > -filename.Lohit_Gujarati=/usr/share/fonts/lohit-gujarati/lohit_gu.ttf > -filename.Lohit_Hindi=/usr/share/fonts/lohit-hindi/lohit_hi.ttf > -filename.Lohit_Kannda=/usr/share/fonts/lohit-kannada/lohit_kn.ttf > -filename.Lohit_Malayalam=/usr/share/fonts/lohit-malayalam/lohit_ml.ttf > -filename.Lohit_Oriya=/usr/share/fonts/lohit-oriya/lohit_or.ttf > -filename.Lohit_Punjabi=/usr/share/fonts/lohit-punjabi/lohit_pa.ttf > -filename.Lohit_Tamil=/usr/share/fonts/lohit-tamil/lohit_ta.ttf > -filename.Lohit_Telugu=/usr/share/fonts/lohit-telugu/lohit_te.ttf > filename.LKLUG=/usr/share/fonts/lklug/lklug.ttf > > > --- openjdk-old/jdk/src/solaris/classes/sun/awt/fontconfigs/linux.fontconfig.Fedora.12.properties 2010-11-04 11:06:26.695428114 +0100 > +++ openjdk/jdk/src/solaris/classes/sun/awt/fontconfigs/linux.fontconfig.Fedora.12.properties 2010-11-04 11:19:45.133587953 +0100 > @@ -35,6 +35,8 @@ > dialog.plain.korean=Baekmuk Gulim > dialog.plain.chinese-big5=AR PL ShanHeiSun Uni > dialog.plain.chinese-gb18030=AR PL ShanHeiSun Uni > +dialog.plain.assamese=Lohit Assamese > +dialog.plain.devanagari=Lohit Devanagari > dialog.plain.bengali=Lohit Bengali > dialog.plain.gujarati=Lohit Gujarati > dialog.plain.hindi=Lohit Hindi > @@ -50,6 +52,8 @@ > dialog.bold.korean=Baekmuk Gulim > dialog.bold.chinese-big5=AR PL ShanHeiSun Uni > dialog.bold.chinese-gb18030=AR PL ShanHeiSun Uni > +dialog.bold.assamese=Lohit Assamese > +dialog.bold.devanagari=Lohit Devanagari > dialog.bold.bengali=Lohit Bengali > dialog.bold.gujarati=Lohit Gujarati > dialog.bold.hindi=Lohit Hindi > @@ -65,6 +69,8 @@ > dialog.italic.korean=Baekmuk Gulim > dialog.italic.chinese-big5=AR PL ShanHeiSun Uni > dialog.italic.chinese-gb18030=AR PL ShanHeiSun Uni > +dialog.italic.assamese=Lohit Assamese > +dialog.italic.devanagari=Lohit Devanagari > dialog.italic.bengali=Lohit Bengali > dialog.italic.gujarati=Lohit Gujarati > dialog.italic.hindi=Lohit Hindi > @@ -80,6 +86,8 @@ > dialog.bolditalic.korean=Baekmuk Gulim > dialog.bolditalic.chinese-big5=AR PL ShanHeiSun Uni > dialog.bolditalic.chinese-gb18030=AR PL ShanHeiSun Uni > +dialog.bolditalic.assamese=Lohit Assamese > +dialog.bolditalic.devanagari=Lohit Devanagari > dialog.bolditalic.bengali=Lohit Bengali > dialog.bolditalic.gujarati=Lohit Gujarati > dialog.bolditalic.hindi=Lohit Hindi > @@ -95,6 +103,8 @@ > sansserif.plain.korean=Baekmuk Gulim > sansserif.plain.chinese-big5=AR PL ShanHeiSun Uni > sansserif.plain.chinese-gb18030=AR PL ShanHeiSun Uni > +sansserif.plain.assamese=Lohit Assamese > +sansserif.plain.devanagari=Lohit Devanagari > sansserif.plain.bengali=Lohit Bengali > sansserif.plain.gujarati=Lohit Gujarati > sansserif.plain.hindi=Lohit Hindi > @@ -110,6 +120,8 @@ > sansserif.bold.korean=Baekmuk Gulim > sansserif.bold.chinese-big5=AR PL ShanHeiSun Uni > sansserif.bold.chinese-gb18030=AR PL ShanHeiSun Uni > +sansserif.bold.assamese=Lohit Assamese > +sansserif.bold.devanagari=Lohit Devanagari > sansserif.bold.bengali=Lohit Bengali > sansserif.bold.gujarati=Lohit Gujarati > sansserif.bold.hindi=Lohit Hindi > @@ -125,6 +137,8 @@ > sansserif.italic.korean=Baekmuk Gulim > sansserif.italic.chinese-big5=AR PL ShanHeiSun Uni > sansserif.italic.chinese-gb18030=AR PL ShanHeiSun Uni > +sansserif.italic.assamese=Lohit Assamese > +sansserif.italic.devanagari=Lohit Devanagari > sansserif.italic.bengali=Lohit Bengali > sansserif.italic.gujarati=Lohit Gujarati > sansserif.italic.hindi=Lohit Hindi > @@ -140,6 +154,8 @@ > sansserif.bolditalic.korean=Baekmuk Gulim > sansserif.bolditalic.chinese-big5=AR PL ShanHeiSun Uni > sansserif.bolditalic.chinese-gb18030=AR PL ShanHeiSun Uni > +sansserif.bolditalic.assamese=Lohit Assamese > +sansserif.bolditalic.devanagari=Lohit Devanagari > sansserif.bolditalic.bengali=Lohit Bengali > sansserif.bolditalic.gujarati=Lohit Gujarati > sansserif.bolditalic.hindi=Lohit Hindi > @@ -155,6 +171,8 @@ > serif.plain.korean=Baekmuk Batang > serif.plain.chinese-big5=AR PL ZenKai Uni > serif.plain.chinese-gb18030=AR PL ZenKai Uni > +serif.plain.assamese=Lohit Assamese > +serif.plain.devanagari=Lohit Devanagari > serif.plain.bengali=Lohit Bengali > serif.plain.gujarati=Lohit Gujarati > serif.plain.hindi=Lohit Hindi > @@ -170,6 +188,8 @@ > serif.bold.korean=Baekmuk Batang > serif.bold.chinese-big5=AR PL ZenKai Uni > serif.bold.chinese-gb18030=AR PL ZenKai Uni > +serif.bold.assamese=Lohit Assamese > +serif.bold.devanagari=Lohit Devanagari > serif.bold.bengali=Lohit Bengali > serif.bold.gujarati=Lohit Gujarati > serif.bold.hindi=Lohit Hindi > @@ -185,6 +205,8 @@ > serif.italic.korean=Baekmuk Batang > serif.italic.chinese-big5=AR PL ZenKai Uni > serif.italic.chinese-gb18030=AR PL ZenKai Uni > +serif.italic.assamese=Lohit Assamese > +serif.italic.devanagari=Lohit Devanagari > serif.italic.bengali=Lohit Bengali > serif.italic.gujarati=Lohit Gujarati > serif.italic.hindi=Lohit Hindi > @@ -200,6 +222,8 @@ > serif.bolditalic.korean=Baekmuk Batang > serif.bolditalic.chinese-big5=AR PL ZenKai Uni > serif.bolditalic.chinese-gb18030=AR PL ZenKai Uni > +serif.bolditalic.assamese=Lohit Assamese > +serif.bolditalic.devanagari=Lohit Devanagari > serif.bolditalic.bengali=Lohit Bengali > serif.bolditalic.gujarati=Lohit Gujarati > serif.bolditalic.hindi=Lohit Hindi > @@ -215,6 +239,8 @@ > monospaced.plain.korean=Baekmuk Gulim > monospaced.plain.chinese-big5=AR PL ShanHeiSun Uni > monospaced.plain.chinese-gb18030=AR PL ShanHeiSun Uni > +monospaced.plain.assamese=Lohit Assamese > +monospaced.plain.devanagari=Lohit Devanagari > monospaced.plain.bengali=Lohit Bengali > monospaced.plain.gujarati=Lohit Gujarati > monospaced.plain.hindi=Lohit Hindi > @@ -230,6 +256,8 @@ > monospaced.bold.korean=Baekmuk Gulim > monospaced.bold.chinese-big5=AR PL ShanHeiSun Uni > monospaced.bold.chinese-gb18030=AR PL ShanHeiSun Uni > +monospaced.bold.assamese=Lohit Assamese > +monospaced.bold.devanagari=Lohit Devanagari > monospaced.bold.bengali=Lohit Bengali > monospaced.bold.gujarati=Lohit Gujarati > monospaced.bold.hindi=Lohit Hindi > @@ -245,6 +273,8 @@ > monospaced.italic.korean=Baekmuk Gulim > monospaced.italic.chinese-big5=AR PL ShanHeiSun Uni > monospaced.italic.chinese-gb18030=AR PL ShanHeiSun Uni > +monospaced.italic.assamese=Lohit Assamese > +monospaced.italic.devanagari=Lohit Devanagari > monospaced.italic.bengali=Lohit Bengali > monospaced.italic.gujarati=Lohit Gujarati > monospaced.italic.hindi=Lohit Hindi > @@ -260,6 +290,8 @@ > monospaced.bolditalic.korean=Baekmuk Gulim > monospaced.bolditalic.chinese-big5=AR PL ShanHeiSun Uni > monospaced.bolditalic.chinese-gb18030=AR PL ShanHeiSun Uni > +monospaced.bolditalic.assamese=Lohit Assamese > +monospaced.bolditalic.devanagari=Lohit Devanagari > monospaced.bolditalic.bengali=Lohit Bengali > monospaced.bolditalic.gujarati=Lohit Gujarati > monospaced.bolditalic.hindi=Lohit Hindi > @@ -275,6 +307,8 @@ > dialoginput.plain.korean=Baekmuk Gulim > dialoginput.plain.chinese-big5=AR PL ShanHeiSun Uni > dialoginput.plain.chinese-gb18030=AR PL ShanHeiSun Uni > +dialoginput.plain.assamese=Lohit Assamese > +dialoginput.plain.devanagari=Lohit Devanagari > dialoginput.plain.bengali=Lohit Bengali > dialoginput.plain.gujarati=Lohit Gujarati > dialoginput.plain.hindi=Lohit Hindi > @@ -290,6 +324,8 @@ > dialoginput.bold.korean=Baekmuk Gulim > dialoginput.bold.chinese-big5=AR PL ShanHeiSun Uni > dialoginput.bold.chinese-gb18030=AR PL ShanHeiSun Uni > +dialoginput.bold.assamese=Lohit Assamese > +dialoginput.bold.devanagari=Lohit Devanagari > dialoginput.bold.bengali=Lohit Bengali > dialoginput.bold.gujarati=Lohit Gujarati > dialoginput.bold.hindi=Lohit Hindi > @@ -305,6 +341,8 @@ > dialoginput.italic.korean=Baekmuk Gulim > dialoginput.italic.chinese-big5=AR PL ShanHeiSun Uni > dialoginput.italic.chinese-gb18030=AR PL ShanHeiSun Uni > +dialoginput.italic.assamese=Lohit Assamese > +dialoginput.italic.devanagari=Lohit Devanagari > dialoginput.italic.bengali=Lohit Bengali > dialoginput.italic.gujarati=Lohit Gujarati > dialoginput.italic.hindi=Lohit Hindi > @@ -320,6 +358,8 @@ > dialoginput.bolditalic.korean=Baekmuk Gulim > dialoginput.bolditalic.chinese-big5=AR PL ShanHeiSun Uni > dialoginput.bolditalic.chinese-gb18030=AR PL ShanHeiSun Uni > +dialoginput.bolditalic.assamese=Lohit Assamese > +dialoginput.bolditalic.devanagari=Lohit Devanagari > dialoginput.bolditalic.bengali=Lohit Bengali > dialoginput.bolditalic.gujarati=Lohit Gujarati > dialoginput.bolditalic.hindi=Lohit Hindi > @@ -356,21 +396,24 @@ > filename.DejaVu_Serif_Oblique=/usr/share/fonts/dejavu/DejaVuSerif-Oblique.ttf > filename.DejaVu_Serif_Bold_Oblique=/usr/share/fonts/dejavu/DejaVuSerif-BoldOblique.ttf > > -filename.Sazanami_Gothic=/usr/share/fonts/sazanami-fonts-gothic/sazanami-gothic.ttf > -filename.Sazanami_Mincho=/usr/share/fonts/sazanami-fonts-mincho/sazanami-mincho.ttf > +filename.Sazanami_Gothic=/usr/share/fonts/sazanami/gothic/sazanami-gothic.ttf > +filename.Sazanami_Mincho=/usr/share/fonts/sazanami/mincho/sazanami-mincho.ttf > filename.AR_PL_ShanHeiSun_Uni=/usr/share/fonts/cjkunifonts-uming/uming.ttc > filename.AR_PL_ZenKai_Uni=/usr/share/fonts/cjkunifonts-ukai/ukai.ttc > -filename.Baekmuk_Gulim=/usr/share/fonts/baekmuk-ttf-gulim/gulim.ttf > -filename.Baekmuk_Batang=/usr/share/fonts/baekmuk-ttf-batang/batang.ttf > +filename.Baekmuk_Gulim=/usr/share/fonts/baekmuk-ttf/gulim.ttf > +filename.Baekmuk_Batang=/usr/share/fonts/baekmuk-ttf/batang.ttf > + > +filename.Lohit_Assamese=/usr/share/fonts/lohit-assamese/Lohit-Assamese.ttf > +filename.Lohit_Devanagari=/usr/share/fonts/lohit-devanagari/Lohit-Devanagari.ttf > +filename.Lohit_Bengali=/usr/share/fonts/lohit-bengali/Lohit-Bengali.ttf > +filename.Lohit_Gujarati=/usr/share/fonts/lohit-gujarati/Lohit-Gujarati.ttf > +filename.Lohit_Hindi=/usr/share/fonts/lohit-devanagari/Lohit-Devanagari.ttf > +filename.Lohit_Kannda=/usr/share/fonts/lohit-kannada/Lohit-Kannada.ttf > +filename.Lohit_Malayalam=/usr/share/fonts/lohit-malayalam/Lohit-Malayalam.ttf > +filename.Lohit_Oriya=/usr/share/fonts/lohit-oriya/Lohit-Oriya.ttf > +filename.Lohit_Punjabi=/usr/share/fonts/lohit-punjabi/Lohit-Punjabi.ttf > +filename.Lohit_Tamil=/usr/share/fonts/lohit-tamil/Lohit-Tamil.ttf > +filename.Lohit_Telugu=/usr/share/fonts/lohit-telugu/Lohit-Telugu.ttf > > -filename.Lohit_Bengali=/usr/share/fonts/lohit-bengali/lohit_bn.ttf > -filename.Lohit_Gujarati=/usr/share/fonts/lohit-gujarati/lohit_gu.ttf > -filename.Lohit_Hindi=/usr/share/fonts/lohit-hindi/lohit_hi.ttf > -filename.Lohit_Kannda=/usr/share/fonts/lohit-kannada/lohit_kn.ttf > -filename.Lohit_Malayalam=/usr/share/fonts/lohit-malayalam/lohit_ml.ttf > -filename.Lohit_Oriya=/usr/share/fonts/lohit-oriya/lohit_or.ttf > -filename.Lohit_Punjabi=/usr/share/fonts/lohit-punjabi/lohit_pa.ttf > -filename.Lohit_Tamil=/usr/share/fonts/lohit-tamil/lohit_ta.ttf > -filename.Lohit_Telugu=/usr/share/fonts/lohit-telugu/lohit_te.ttf > filename.LKLUG=/usr/share/fonts/lklug/lklug.ttf > > --- openjdk-old/jdk/src/solaris/classes/sun/awt/fontconfigs/linux.fontconfig.Fedora.properties 2010-11-04 11:06:26.695428114 +0100 > +++ openjdk/jdk/src/solaris/classes/sun/awt/fontconfigs/linux.fontconfig.Fedora.properties 2010-11-04 11:06:25.602455633 +0100 > @@ -35,6 +35,8 @@ > dialog.plain.korean=Baekmuk Gulim > dialog.plain.chinese-big5=AR PL ShanHeiSun Uni > dialog.plain.chinese-gb18030=AR PL ShanHeiSun Uni > +dialog.plain.assamese=Lohit Assamese > +dialog.plain.devanagari=Lohit Devanagari > dialog.plain.bengali=Lohit Bengali > dialog.plain.gujarati=Lohit Gujarati > dialog.plain.hindi=Lohit Hindi > @@ -50,6 +52,8 @@ > dialog.bold.korean=Baekmuk Gulim > dialog.bold.chinese-big5=AR PL ShanHeiSun Uni > dialog.bold.chinese-gb18030=AR PL ShanHeiSun Uni > +dialog.bold.assamese=Lohit Assamese > +dialog.bold.devanagari=Lohit Devanagari > dialog.bold.bengali=Lohit Bengali > dialog.bold.gujarati=Lohit Gujarati > dialog.bold.hindi=Lohit Hindi > @@ -65,6 +69,8 @@ > dialog.italic.korean=Baekmuk Gulim > dialog.italic.chinese-big5=AR PL ShanHeiSun Uni > dialog.italic.chinese-gb18030=AR PL ShanHeiSun Uni > +dialog.italic.assamese=Lohit Assamese > +dialog.italic.devanagari=Lohit Devanagari > dialog.italic.bengali=Lohit Bengali > dialog.italic.gujarati=Lohit Gujarati > dialog.italic.hindi=Lohit Hindi > @@ -80,6 +86,8 @@ > dialog.bolditalic.korean=Baekmuk Gulim > dialog.bolditalic.chinese-big5=AR PL ShanHeiSun Uni > dialog.bolditalic.chinese-gb18030=AR PL ShanHeiSun Uni > +dialog.bolditalic.assamese=Lohit Assamese > +dialog.bolditalic.devanagari=Lohit Devanagari > dialog.bolditalic.bengali=Lohit Bengali > dialog.bolditalic.gujarati=Lohit Gujarati > dialog.bolditalic.hindi=Lohit Hindi > @@ -95,6 +103,8 @@ > sansserif.plain.korean=Baekmuk Gulim > sansserif.plain.chinese-big5=AR PL ShanHeiSun Uni > sansserif.plain.chinese-gb18030=AR PL ShanHeiSun Uni > +sansserif.plain.assamese=Lohit Assamese > +sansserif.plain.devanagari=Lohit Devanagari > sansserif.plain.bengali=Lohit Bengali > sansserif.plain.gujarati=Lohit Gujarati > sansserif.plain.hindi=Lohit Hindi > @@ -110,6 +120,8 @@ > sansserif.bold.korean=Baekmuk Gulim > sansserif.bold.chinese-big5=AR PL ShanHeiSun Uni > sansserif.bold.chinese-gb18030=AR PL ShanHeiSun Uni > +sansserif.bold.assamese=Lohit Assamese > +sansserif.bold.devanagari=Lohit Devanagari > sansserif.bold.bengali=Lohit Bengali > sansserif.bold.gujarati=Lohit Gujarati > sansserif.bold.hindi=Lohit Hindi > @@ -125,6 +137,8 @@ > sansserif.italic.korean=Baekmuk Gulim > sansserif.italic.chinese-big5=AR PL ShanHeiSun Uni > sansserif.italic.chinese-gb18030=AR PL ShanHeiSun Uni > +sansserif.italic.assamese=Lohit Assamese > +sansserif.italic.devanagari=Lohit Devanagari > sansserif.italic.bengali=Lohit Bengali > sansserif.italic.gujarati=Lohit Gujarati > sansserif.italic.hindi=Lohit Hindi > @@ -140,6 +154,8 @@ > sansserif.bolditalic.korean=Baekmuk Gulim > sansserif.bolditalic.chinese-big5=AR PL ShanHeiSun Uni > sansserif.bolditalic.chinese-gb18030=AR PL ShanHeiSun Uni > +sansserif.bolditalic.assamese=Lohit Assamese > +sansserif.bolditalic.devanagari=Lohit Devanagari > sansserif.bolditalic.bengali=Lohit Bengali > sansserif.bolditalic.gujarati=Lohit Gujarati > sansserif.bolditalic.hindi=Lohit Hindi > @@ -155,6 +171,8 @@ > serif.plain.korean=Baekmuk Batang > serif.plain.chinese-big5=AR PL ZenKai Uni > serif.plain.chinese-gb18030=AR PL ZenKai Uni > +serif.plain.assamese=Lohit Assamese > +serif.plain.devanagari=Lohit Devanagari > serif.plain.bengali=Lohit Bengali > serif.plain.gujarati=Lohit Gujarati > serif.plain.hindi=Lohit Hindi > @@ -170,6 +188,8 @@ > serif.bold.korean=Baekmuk Batang > serif.bold.chinese-big5=AR PL ZenKai Uni > serif.bold.chinese-gb18030=AR PL ZenKai Uni > +serif.bold.assamese=Lohit Assamese > +serif.bold.devanagari=Lohit Devanagari > serif.bold.bengali=Lohit Bengali > serif.bold.gujarati=Lohit Gujarati > serif.bold.hindi=Lohit Hindi > @@ -185,6 +205,8 @@ > serif.italic.korean=Baekmuk Batang > serif.italic.chinese-big5=AR PL ZenKai Uni > serif.italic.chinese-gb18030=AR PL ZenKai Uni > +serif.italic.assamese=Lohit Assamese > +serif.italic.devanagari=Lohit Devanagari > serif.italic.bengali=Lohit Bengali > serif.italic.gujarati=Lohit Gujarati > serif.italic.hindi=Lohit Hindi > @@ -200,6 +222,8 @@ > serif.bolditalic.korean=Baekmuk Batang > serif.bolditalic.chinese-big5=AR PL ZenKai Uni > serif.bolditalic.chinese-gb18030=AR PL ZenKai Uni > +serif.bolditalic.assamese=Lohit Assamese > +serif.bolditalic.devanagari=Lohit Devanagari > serif.bolditalic.bengali=Lohit Bengali > serif.bolditalic.gujarati=Lohit Gujarati > serif.bolditalic.hindi=Lohit Hindi > @@ -215,6 +239,8 @@ > monospaced.plain.korean=Baekmuk Gulim > monospaced.plain.chinese-big5=AR PL ShanHeiSun Uni > monospaced.plain.chinese-gb18030=AR PL ShanHeiSun Uni > +monospaced.plain.assamese=Lohit Assamese > +monospaced.plain.devanagari=Lohit Devanagari > monospaced.plain.bengali=Lohit Bengali > monospaced.plain.gujarati=Lohit Gujarati > monospaced.plain.hindi=Lohit Hindi > @@ -230,6 +256,8 @@ > monospaced.bold.korean=Baekmuk Gulim > monospaced.bold.chinese-big5=AR PL ShanHeiSun Uni > monospaced.bold.chinese-gb18030=AR PL ShanHeiSun Uni > +monospaced.bold.assamese=Lohit Assamese > +monospaced.bold.devanagari=Lohit Devanagari > monospaced.bold.bengali=Lohit Bengali > monospaced.bold.gujarati=Lohit Gujarati > monospaced.bold.hindi=Lohit Hindi > @@ -245,6 +273,8 @@ > monospaced.italic.korean=Baekmuk Gulim > monospaced.italic.chinese-big5=AR PL ShanHeiSun Uni > monospaced.italic.chinese-gb18030=AR PL ShanHeiSun Uni > +monospaced.italic.assamese=Lohit Assamese > +monospaced.italic.devanagari=Lohit Devanagari > monospaced.italic.bengali=Lohit Bengali > monospaced.italic.gujarati=Lohit Gujarati > monospaced.italic.hindi=Lohit Hindi > @@ -260,6 +290,8 @@ > monospaced.bolditalic.korean=Baekmuk Gulim > monospaced.bolditalic.chinese-big5=AR PL ShanHeiSun Uni > monospaced.bolditalic.chinese-gb18030=AR PL ShanHeiSun Uni > +monospaced.bolditalic.assamese=Lohit Assamese > +monospaced.bolditalic.devanagari=Lohit Devanagari > monospaced.bolditalic.bengali=Lohit Bengali > monospaced.bolditalic.gujarati=Lohit Gujarati > monospaced.bolditalic.hindi=Lohit Hindi > @@ -275,6 +307,8 @@ > dialoginput.plain.korean=Baekmuk Gulim > dialoginput.plain.chinese-big5=AR PL ShanHeiSun Uni > dialoginput.plain.chinese-gb18030=AR PL ShanHeiSun Uni > +dialoginput.plain.assamese=Lohit Assamese > +dialoginput.plain.devanagari=Lohit Devanagari > dialoginput.plain.bengali=Lohit Bengali > dialoginput.plain.gujarati=Lohit Gujarati > dialoginput.plain.hindi=Lohit Hindi > @@ -290,6 +324,8 @@ > dialoginput.bold.korean=Baekmuk Gulim > dialoginput.bold.chinese-big5=AR PL ShanHeiSun Uni > dialoginput.bold.chinese-gb18030=AR PL ShanHeiSun Uni > +dialoginput.bold.assamese=Lohit Assamese > +dialoginput.bold.devanagari=Lohit Devanagari > dialoginput.bold.bengali=Lohit Bengali > dialoginput.bold.gujarati=Lohit Gujarati > dialoginput.bold.hindi=Lohit Hindi > @@ -305,6 +341,8 @@ > dialoginput.italic.korean=Baekmuk Gulim > dialoginput.italic.chinese-big5=AR PL ShanHeiSun Uni > dialoginput.italic.chinese-gb18030=AR PL ShanHeiSun Uni > +dialoginput.italic.assamese=Lohit Assamese > +dialoginput.italic.devanagari=Lohit Devanagari > dialoginput.italic.bengali=Lohit Bengali > dialoginput.italic.gujarati=Lohit Gujarati > dialoginput.italic.hindi=Lohit Hindi > @@ -320,6 +358,8 @@ > dialoginput.bolditalic.korean=Baekmuk Gulim > dialoginput.bolditalic.chinese-big5=AR PL ShanHeiSun Uni > dialoginput.bolditalic.chinese-gb18030=AR PL ShanHeiSun Uni > +dialoginput.bolditalic.assamese=Lohit Assamese > +dialoginput.bolditalic.devanagari=Lohit Devanagari > dialoginput.bolditalic.bengali=Lohit Bengali > dialoginput.bolditalic.gujarati=Lohit Gujarati > dialoginput.bolditalic.hindi=Lohit Hindi > @@ -356,21 +396,24 @@ > filename.DejaVu_Serif_Oblique=/usr/share/fonts/dejavu/DejaVuSerif-Oblique.ttf > filename.DejaVu_Serif_Bold_Oblique=/usr/share/fonts/dejavu/DejaVuSerif-BoldOblique.ttf > > -filename.Sazanami_Gothic=/usr/share/fonts/sazanami-fonts-gothic/sazanami-gothic.ttf > -filename.Sazanami_Mincho=/usr/share/fonts/sazanami-fonts-mincho/sazanami-mincho.ttf > -filename.AR_PL_ShanHeiSun_Uni=/usr/share/fonts/cjkunifonts-uming/uming.ttc > -filename.AR_PL_ZenKai_Uni=/usr/share/fonts/cjkunifonts-ukai/ukai.ttc > -filename.Baekmuk_Gulim=/usr/share/fonts/baekmuk-ttf-gulim/gulim.ttf > -filename.Baekmuk_Batang=/usr/share/fonts/baekmuk-ttf-batang/batang.ttf > +filename.Sazanami_Gothic=/usr/share/fonts/sazanami/gothic/sazanami-gothic.ttf > +filename.Sazanami_Mincho=/usr/share/fonts/sazanami/mincho/sazanami-mincho.ttf > +filename.AR_PL_ShanHeiSun_Uni=/usr/share/fonts/cjkuni-uming/uming.ttc > +filename.AR_PL_ZenKai_Uni=/usr/share/fonts/cjkuni-ukai/ukai.ttc > +filename.Baekmuk_Gulim=/usr/share/fonts/baekmuk-ttf/gulim.ttf > +filename.Baekmuk_Batang=/usr/share/fonts/baekmuk-ttf/batang.ttf > + > +filename.Lohit_Assamese=/usr/share/fonts/lohit-assamese/Lohit-Assamese.ttf > +filename.Lohit_Devanagari=/usr/share/fonts/lohit-devanagari/Lohit-Devanagari.ttf > +filename.Lohit_Bengali=/usr/share/fonts/lohit-bengali/Lohit-Bengali.ttf > +filename.Lohit_Gujarati=/usr/share/fonts/lohit-gujarati/Lohit-Gujarati.ttf > +filename.Lohit_Hindi=/usr/share/fonts/lohit-devanagari/Lohit-Devanagari.ttf > +filename.Lohit_Kannda=/usr/share/fonts/lohit-kannada/Lohit-Kannada.ttf > +filename.Lohit_Malayalam=/usr/share/fonts/lohit-malayalam/Lohit-Malayalam.ttf > +filename.Lohit_Oriya=/usr/share/fonts/lohit-oriya/Lohit-Oriya.ttf > +filename.Lohit_Punjabi=/usr/share/fonts/lohit-punjabi/Lohit-Punjabi.ttf > +filename.Lohit_Tamil=/usr/share/fonts/lohit-tamil/Lohit-Tamil.ttf > +filename.Lohit_Telugu=/usr/share/fonts/lohit-telugu/Lohit-Telugu.ttf > > -filename.Lohit_Bengali=/usr/share/fonts/lohit-bengali/lohit_bn.ttf > -filename.Lohit_Gujarati=/usr/share/fonts/lohit-gujarati/lohit_gu.ttf > -filename.Lohit_Hindi=/usr/share/fonts/lohit-hindi/lohit_hi.ttf > -filename.Lohit_Kannda=/usr/share/fonts/lohit-kannada/lohit_kn.ttf > -filename.Lohit_Malayalam=/usr/share/fonts/lohit-malayalam/lohit_ml.ttf > -filename.Lohit_Oriya=/usr/share/fonts/lohit-oriya/lohit_or.ttf > -filename.Lohit_Punjabi=/usr/share/fonts/lohit-punjabi/lohit_pa.ttf > -filename.Lohit_Tamil=/usr/share/fonts/lohit-tamil/lohit_ta.ttf > -filename.Lohit_Telugu=/usr/share/fonts/lohit-telugu/lohit_te.ttf > filename.LKLUG=/usr/share/fonts/lklug/lklug.ttf > > # This patch just creates new files. Content is copypasted from linux.fontconfig.Fedora.properties BEFORE patching > --- /dev/null 1970-01-01 00:00:00 UTC > +++ openjdk/jdk/src/solaris/classes/sun/awt/fontconfigs/linux.fontconfig.Fedora.11.properties 2010-11-04 11:19:45.133587953 +0100 > @@ -0,0 +1,376 @@ > +# > +# Copyright 2007 Sun Microsystems, Inc. All Rights Reserved. > +# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. > +# > +# This code is free software; you can redistribute it and/or modify it > +# under the terms of the GNU General Public License version 2 only, as > +# published by the Free Software Foundation. Sun designates this > +# particular file as subject to the "Classpath" exception as provided > +# by Sun in the LICENSE file that accompanied this code. > +# > +# This code is distributed in the hope that it will be useful, but WITHOUT > +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or > +# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License > +# version 2 for more details (a copy is included in the LICENSE file that > +# accompanied this code). > +# > +# You should have received a copy of the GNU General Public License version > +# 2 along with this work; if not, write to the Free Software Foundation, > +# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. > +# > +# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, > +# CA 95054 USA or visit www.sun.com if you need additional information or > +# have any questions. > +# > + > +# Version > + > +# Uses Fedora 9 fonts and file paths. > +version=1 > + > +# Component Font Mappings > + > +dialog.plain.latin-1=DejaVu Sans > +dialog.plain.japanese-x0208=Sazanami Gothic > +dialog.plain.korean=Baekmuk Gulim > +dialog.plain.chinese-big5=AR PL ShanHeiSun Uni > +dialog.plain.chinese-gb18030=AR PL ShanHeiSun Uni > +dialog.plain.bengali=Lohit Bengali > +dialog.plain.gujarati=Lohit Gujarati > +dialog.plain.hindi=Lohit Hindi > +dialog.plain.malayalam=Lohit Malayalam > +dialog.plain.oriya=Lohit Oriya > +dialog.plain.punjabi=Lohit Punjabi > +dialog.plain.tamil=Lohit Tamil > +dialog.plain.telugu=Lohit Telugu > +dialog.plain.sinhala=LKLUG > + > +dialog.bold.latin-1=DejaVu Sans Bold > +dialog.bold.japanese-x0208=Sazanami Gothic > +dialog.bold.korean=Baekmuk Gulim > +dialog.bold.chinese-big5=AR PL ShanHeiSun Uni > +dialog.bold.chinese-gb18030=AR PL ShanHeiSun Uni > +dialog.bold.bengali=Lohit Bengali > +dialog.bold.gujarati=Lohit Gujarati > +dialog.bold.hindi=Lohit Hindi > +dialog.bold.malayalam=Lohit Malayalam > +dialog.bold.oriya=Lohit Oriya > +dialog.bold.punjabi=Lohit Punjabi > +dialog.bold.tamil=Lohit Tamil > +dialog.bold.telugu=Lohit Telugu > +dialog.bold.sinhala=LKLUG > + > +dialog.italic.latin-1=DejaVu Sans Oblique > +dialog.italic.japanese-x0208=Sazanami Gothic > +dialog.italic.korean=Baekmuk Gulim > +dialog.italic.chinese-big5=AR PL ShanHeiSun Uni > +dialog.italic.chinese-gb18030=AR PL ShanHeiSun Uni > +dialog.italic.bengali=Lohit Bengali > +dialog.italic.gujarati=Lohit Gujarati > +dialog.italic.hindi=Lohit Hindi > +dialog.italic.malayalam=Lohit Malayalam > +dialog.italic.oriya=Lohit Oriya > +dialog.italic.punjabi=Lohit Punjabi > +dialog.italic.tamil=Lohit Tamil > +dialog.italic.telugu=Lohit Telugu > +dialog.italic.sinhala=LKLUG > + > +dialog.bolditalic.latin-1=DejaVu Sans Bold Oblique > +dialog.bolditalic.japanese-x0208=Sazanami Gothic > +dialog.bolditalic.korean=Baekmuk Gulim > +dialog.bolditalic.chinese-big5=AR PL ShanHeiSun Uni > +dialog.bolditalic.chinese-gb18030=AR PL ShanHeiSun Uni > +dialog.bolditalic.bengali=Lohit Bengali > +dialog.bolditalic.gujarati=Lohit Gujarati > +dialog.bolditalic.hindi=Lohit Hindi > +dialog.bolditalic.malayalam=Lohit Malayalam > +dialog.bolditalic.oriya=Lohit Oriya > +dialog.bolditalic.punjabi=Lohit Punjabi > +dialog.bolditalic.tamil=Lohit Tamil > +dialog.bolditalic.telugu=Lohit Telugu > +dialog.bolditalic.sinhala=LKLUG > + > +sansserif.plain.latin-1=DejaVu Sans > +sansserif.plain.japanese-x0208=Sazanami Gothic > +sansserif.plain.korean=Baekmuk Gulim > +sansserif.plain.chinese-big5=AR PL ShanHeiSun Uni > +sansserif.plain.chinese-gb18030=AR PL ShanHeiSun Uni > +sansserif.plain.bengali=Lohit Bengali > +sansserif.plain.gujarati=Lohit Gujarati > +sansserif.plain.hindi=Lohit Hindi > +sansserif.plain.malayalam=Lohit Malayalam > +sansserif.plain.oriya=Lohit Oriya > +sansserif.plain.punjabi=Lohit Punjabi > +sansserif.plain.tamil=Lohit Tamil > +sansserif.plain.telugu=Lohit Telugu > +sansserif.plain.sinhala=LKLUG > + > +sansserif.bold.latin-1=DejaVu Sans Bold > +sansserif.bold.japanese-x0208=Sazanami Gothic > +sansserif.bold.korean=Baekmuk Gulim > +sansserif.bold.chinese-big5=AR PL ShanHeiSun Uni > +sansserif.bold.chinese-gb18030=AR PL ShanHeiSun Uni > +sansserif.bold.bengali=Lohit Bengali > +sansserif.bold.gujarati=Lohit Gujarati > +sansserif.bold.hindi=Lohit Hindi > +sansserif.bold.malayalam=Lohit Malayalam > +sansserif.bold.oriya=Lohit Oriya > +sansserif.bold.punjabi=Lohit Punjabi > +sansserif.bold.tamil=Lohit Tamil > +sansserif.bold.telugu=Lohit Telugu > +sansserif.bold.sinhala=LKLUG > + > +sansserif.italic.latin-1=DejaVu Sans Oblique > +sansserif.italic.japanese-x0208=Sazanami Gothic > +sansserif.italic.korean=Baekmuk Gulim > +sansserif.italic.chinese-big5=AR PL ShanHeiSun Uni > +sansserif.italic.chinese-gb18030=AR PL ShanHeiSun Uni > +sansserif.italic.bengali=Lohit Bengali > +sansserif.italic.gujarati=Lohit Gujarati > +sansserif.italic.hindi=Lohit Hindi > +sansserif.italic.malayalam=Lohit Malayalam > +sansserif.italic.oriya=Lohit Oriya > +sansserif.italic.punjabi=Lohit Punjabi > +sansserif.italic.tamil=Lohit Tamil > +sansserif.italic.telugu=Lohit Telugu > +sansserif.italic.sinhala=LKLUG > + > +sansserif.bolditalic.latin-1=DejaVu Sans Bold Oblique > +sansserif.bolditalic.japanese-x0208=Sazanami Gothic > +sansserif.bolditalic.korean=Baekmuk Gulim > +sansserif.bolditalic.chinese-big5=AR PL ShanHeiSun Uni > +sansserif.bolditalic.chinese-gb18030=AR PL ShanHeiSun Uni > +sansserif.bolditalic.bengali=Lohit Bengali > +sansserif.bolditalic.gujarati=Lohit Gujarati > +sansserif.bolditalic.hindi=Lohit Hindi > +sansserif.bolditalic.malayalam=Lohit Malayalam > +sansserif.bolditalic.oriya=Lohit Oriya > +sansserif.bolditalic.punjabi=Lohit Punjabi > +sansserif.bolditalic.tamil=Lohit Tamil > +sansserif.bolditalic.telugu=Lohit Telugu > +sansserif.bolditalic.sinhala=LKLUG > + > +serif.plain.latin-1=DejaVu Serif > +serif.plain.japanese-x0208=Sazanami Mincho > +serif.plain.korean=Baekmuk Batang > +serif.plain.chinese-big5=AR PL ZenKai Uni > +serif.plain.chinese-gb18030=AR PL ZenKai Uni > +serif.plain.bengali=Lohit Bengali > +serif.plain.gujarati=Lohit Gujarati > +serif.plain.hindi=Lohit Hindi > +serif.plain.malayalam=Lohit Malayalam > +serif.plain.oriya=Lohit Oriya > +serif.plain.punjabi=Lohit Punjabi > +serif.plain.tamil=Lohit Tamil > +serif.plain.telugu=Lohit Telugu > +serif.plain.sinhala=LKLUG > + > +serif.bold.latin-1=DejaVu Serif Bold > +serif.bold.japanese-x0208=Sazanami Mincho > +serif.bold.korean=Baekmuk Batang > +serif.bold.chinese-big5=AR PL ZenKai Uni > +serif.bold.chinese-gb18030=AR PL ZenKai Uni > +serif.bold.bengali=Lohit Bengali > +serif.bold.gujarati=Lohit Gujarati > +serif.bold.hindi=Lohit Hindi > +serif.bold.malayalam=Lohit Malayalam > +serif.bold.oriya=Lohit Oriya > +serif.bold.punjabi=Lohit Punjabi > +serif.bold.tamil=Lohit Tamil > +serif.bold.telugu=Lohit Telugu > +serif.bold.sinhala=LKLUG > + > +serif.italic.latin-1=DejaVu Serif Oblique > +serif.italic.japanese-x0208=Sazanami Mincho > +serif.italic.korean=Baekmuk Batang > +serif.italic.chinese-big5=AR PL ZenKai Uni > +serif.italic.chinese-gb18030=AR PL ZenKai Uni > +serif.italic.bengali=Lohit Bengali > +serif.italic.gujarati=Lohit Gujarati > +serif.italic.hindi=Lohit Hindi > +serif.italic.malayalam=Lohit Malayalam > +serif.italic.oriya=Lohit Oriya > +serif.italic.punjabi=Lohit Punjabi > +serif.italic.tamil=Lohit Tamil > +serif.italic.telugu=Lohit Telugu > +serif.italic.sinhala=LKLUG > + > +serif.bolditalic.latin-1=DejaVu Serif Bold Oblique > +serif.bolditalic.japanese-x0208=Sazanami Mincho > +serif.bolditalic.korean=Baekmuk Batang > +serif.bolditalic.chinese-big5=AR PL ZenKai Uni > +serif.bolditalic.chinese-gb18030=AR PL ZenKai Uni > +serif.bolditalic.bengali=Lohit Bengali > +serif.bolditalic.gujarati=Lohit Gujarati > +serif.bolditalic.hindi=Lohit Hindi > +serif.bolditalic.malayalam=Lohit Malayalam > +serif.bolditalic.oriya=Lohit Oriya > +serif.bolditalic.punjabi=Lohit Punjabi > +serif.bolditalic.tamil=Lohit Tamil > +serif.bolditalic.telugu=Lohit Telugu > +serif.bolditalic.sinhala=LKLUG > + > +monospaced.plain.latin-1=DejaVu Sans Mono > +monospaced.plain.japanese-x0208=Sazanami Gothic > +monospaced.plain.korean=Baekmuk Gulim > +monospaced.plain.chinese-big5=AR PL ShanHeiSun Uni > +monospaced.plain.chinese-gb18030=AR PL ShanHeiSun Uni > +monospaced.plain.bengali=Lohit Bengali > +monospaced.plain.gujarati=Lohit Gujarati > +monospaced.plain.hindi=Lohit Hindi > +monospaced.plain.malayalam=Lohit Malayalam > +monospaced.plain.oriya=Lohit Oriya > +monospaced.plain.punjabi=Lohit Punjabi > +monospaced.plain.tamil=Lohit Tamil > +monospaced.plain.telugu=Lohit Telugu > +monospaced.plain.sinhala=LKLUG > + > +monospaced.bold.latin-1=DejaVu Sans Mono Bold > +monospaced.bold.japanese-x0208=Sazanami Gothic > +monospaced.bold.korean=Baekmuk Gulim > +monospaced.bold.chinese-big5=AR PL ShanHeiSun Uni > +monospaced.bold.chinese-gb18030=AR PL ShanHeiSun Uni > +monospaced.bold.bengali=Lohit Bengali > +monospaced.bold.gujarati=Lohit Gujarati > +monospaced.bold.hindi=Lohit Hindi > +monospaced.bold.malayalam=Lohit Malayalam > +monospaced.bold.oriya=Lohit Oriya > +monospaced.bold.punjabi=Lohit Punjabi > +monospaced.bold.tamil=Lohit Tamil > +monospaced.bold.telugu=Lohit Telugu > +monospaced.bold.sinhala=LKLUG > + > +monospaced.italic.latin-1=DejaVu Sans Mono Oblique > +monospaced.italic.japanese-x0208=Sazanami Gothic > +monospaced.italic.korean=Baekmuk Gulim > +monospaced.italic.chinese-big5=AR PL ShanHeiSun Uni > +monospaced.italic.chinese-gb18030=AR PL ShanHeiSun Uni > +monospaced.italic.bengali=Lohit Bengali > +monospaced.italic.gujarati=Lohit Gujarati > +monospaced.italic.hindi=Lohit Hindi > +monospaced.italic.malayalam=Lohit Malayalam > +monospaced.italic.oriya=Lohit Oriya > +monospaced.italic.punjabi=Lohit Punjabi > +monospaced.italic.tamil=Lohit Tamil > +monospaced.italic.telugu=Lohit Telugu > +monospaced.italic.sinhala=LKLUG > + > +monospaced.bolditalic.latin-1=DejaVu Sans Mono Bold Oblique > +monospaced.bolditalic.japanese-x0208=Sazanami Gothic > +monospaced.bolditalic.korean=Baekmuk Gulim > +monospaced.bolditalic.chinese-big5=AR PL ShanHeiSun Uni > +monospaced.bolditalic.chinese-gb18030=AR PL ShanHeiSun Uni > +monospaced.bolditalic.bengali=Lohit Bengali > +monospaced.bolditalic.gujarati=Lohit Gujarati > +monospaced.bolditalic.hindi=Lohit Hindi > +monospaced.bolditalic.malayalam=Lohit Malayalam > +monospaced.bolditalic.oriya=Lohit Oriya > +monospaced.bolditalic.punjabi=Lohit Punjabi > +monospaced.bolditalic.tamil=Lohit Tamil > +monospaced.bolditalic.telugu=Lohit Telugu > +monospaced.bolditalic.sinhala=LKLUG > + > +dialoginput.plain.latin-1=DejaVu Sans Mono > +dialoginput.plain.japanese-x0208=Sazanami Gothic > +dialoginput.plain.korean=Baekmuk Gulim > +dialoginput.plain.chinese-big5=AR PL ShanHeiSun Uni > +dialoginput.plain.chinese-gb18030=AR PL ShanHeiSun Uni > +dialoginput.plain.bengali=Lohit Bengali > +dialoginput.plain.gujarati=Lohit Gujarati > +dialoginput.plain.hindi=Lohit Hindi > +dialoginput.plain.malayalam=Lohit Malayalam > +dialoginput.plain.oriya=Lohit Oriya > +dialoginput.plain.punjabi=Lohit Punjabi > +dialoginput.plain.tamil=Lohit Tamil > +dialoginput.plain.telugu=Lohit Telugu > +dialoginput.plain.sinhala=LKLUG > + > +dialoginput.bold.latin-1=DejaVu Sans Mono Bold > +dialoginput.bold.japanese-x0208=Sazanami Gothic > +dialoginput.bold.korean=Baekmuk Gulim > +dialoginput.bold.chinese-big5=AR PL ShanHeiSun Uni > +dialoginput.bold.chinese-gb18030=AR PL ShanHeiSun Uni > +dialoginput.bold.bengali=Lohit Bengali > +dialoginput.bold.gujarati=Lohit Gujarati > +dialoginput.bold.hindi=Lohit Hindi > +dialoginput.bold.malayalam=Lohit Malayalam > +dialoginput.bold.oriya=Lohit Oriya > +dialoginput.bold.punjabi=Lohit Punjabi > +dialoginput.bold.tamil=Lohit Tamil > +dialoginput.bold.telugu=Lohit Telugu > +dialoginput.bold.sinhala=LKLUG > + > +dialoginput.italic.latin-1=DejaVu Sans Mono Oblique > +dialoginput.italic.japanese-x0208=Sazanami Gothic > +dialoginput.italic.korean=Baekmuk Gulim > +dialoginput.italic.chinese-big5=AR PL ShanHeiSun Uni > +dialoginput.italic.chinese-gb18030=AR PL ShanHeiSun Uni > +dialoginput.italic.bengali=Lohit Bengali > +dialoginput.italic.gujarati=Lohit Gujarati > +dialoginput.italic.hindi=Lohit Hindi > +dialoginput.italic.malayalam=Lohit Malayalam > +dialoginput.italic.oriya=Lohit Oriya > +dialoginput.italic.punjabi=Lohit Punjabi > +dialoginput.italic.tamil=Lohit Tamil > +dialoginput.italic.telugu=Lohit Telugu > +dialoginput.italic.sinhala=LKLUG > + > +dialoginput.bolditalic.latin-1=DejaVu Sans Mono Bold Oblique > +dialoginput.bolditalic.japanese-x0208=Sazanami Gothic > +dialoginput.bolditalic.korean=Baekmuk Gulim > +dialoginput.bolditalic.chinese-big5=AR PL ShanHeiSun Uni > +dialoginput.bolditalic.chinese-gb18030=AR PL ShanHeiSun Uni > +dialoginput.bolditalic.bengali=Lohit Bengali > +dialoginput.bolditalic.gujarati=Lohit Gujarati > +dialoginput.bolditalic.hindi=Lohit Hindi > +dialoginput.bolditalic.malayalam=Lohit Malayalam > +dialoginput.bolditalic.oriya=Lohit Oriya > +dialoginput.bolditalic.punjabi=Lohit Punjabi > +dialoginput.bolditalic.tamil=Lohit Tamil > +dialoginput.bolditalic.telugu=Lohit Telugu > +dialoginput.bolditalic.sinhala=LKLUG > + > +# Search Sequences > + > +sequence.allfonts=latin-1 > +sequence.allfonts.Big5=chinese-big5,latin-1 > +sequence.allfonts.x-euc-jp-linux=japanese-x0208,latin-1 > +sequence.allfonts.EUC-KR=korean,latin-1 > +sequence.allfonts.GB18030=chinese-gb18030,latin-1 > +sequence.fallback=chinese-big5,chinese-gb18030,japanese-x0208,korean,bengali,gujarati,hindi,oriya,punjabi,malayalam,tamil,telugu,sinhala > + > +# Font File Names > + > +filename.DejaVu_Sans=/usr/share/fonts/dejavu/DejaVuSans.ttf > +filename.DejaVu_Sans_Bold=/usr/share/fonts/dejavu/DejaVuSans-Bold.ttf > +filename.DejaVu_Sans_Oblique=/usr/share/fonts/dejavu/DejaVuSans-Oblique.ttf > +filename.DejaVu_Sans_Bold_Oblique=/usr/share/fonts/dejavu/DejaVuSans-BoldOblique.ttf > + > +filename.DejaVu_Sans_Mono=/usr/share/fonts/dejavu/DejaVuSansMono.ttf > +filename.DejaVu_Sans_Mono_Bold=/usr/share/fonts/dejavu/DejaVuSansMono-Bold.ttf > +filename.DejaVu_Sans_Mono_Oblique=/usr/share/fonts/dejavu/DejaVuSansMono-Oblique.ttf > +filename.DejaVu_Sans_Mono_Bold_Oblique=/usr/share/fonts/dejavu/DejaVuSansMono-BoldOblique.ttf > + > +filename.DejaVu_Serif=/usr/share/fonts/dejavu/DejaVuSerif.ttf > +filename.DejaVu_Serif_Bold=/usr/share/fonts/dejavu/DejaVuSerif-Bold.ttf > +filename.DejaVu_Serif_Oblique=/usr/share/fonts/dejavu/DejaVuSerif-Oblique.ttf > +filename.DejaVu_Serif_Bold_Oblique=/usr/share/fonts/dejavu/DejaVuSerif-BoldOblique.ttf > + > +filename.Sazanami_Gothic=/usr/share/fonts/sazanami-fonts-gothic/sazanami-gothic.ttf > +filename.Sazanami_Mincho=/usr/share/fonts/sazanami-fonts-mincho/sazanami-mincho.ttf > +filename.AR_PL_ShanHeiSun_Uni=/usr/share/fonts/cjkunifonts-uming/uming.ttc > +filename.AR_PL_ZenKai_Uni=/usr/share/fonts/cjkunifonts-ukai/ukai.ttc > +filename.Baekmuk_Gulim=/usr/share/fonts/baekmuk-ttf-gulim/gulim.ttf > +filename.Baekmuk_Batang=/usr/share/fonts/baekmuk-ttf-batang/batang.ttf > + > +filename.Lohit_Bengali=/usr/share/fonts/lohit-bengali/lohit_bn.ttf > +filename.Lohit_Gujarati=/usr/share/fonts/lohit-gujarati/lohit_gu.ttf > +filename.Lohit_Hindi=/usr/share/fonts/lohit-hindi/lohit_hi.ttf > +filename.Lohit_Kannda=/usr/share/fonts/lohit-kannada/lohit_kn.ttf > +filename.Lohit_Malayalam=/usr/share/fonts/lohit-malayalam/lohit_ml.ttf > +filename.Lohit_Oriya=/usr/share/fonts/lohit-oriya/lohit_or.ttf > +filename.Lohit_Punjabi=/usr/share/fonts/lohit-punjabi/lohit_pa.ttf > +filename.Lohit_Tamil=/usr/share/fonts/lohit-tamil/lohit_ta.ttf > +filename.Lohit_Telugu=/usr/share/fonts/lohit-telugu/lohit_te.ttf > +filename.LKLUG=/usr/share/fonts/lklug/lklug.ttf > + > > > --- /dev/null 1970-01-01 00:00:00 UTC > +++ openjdk/jdk/src/solaris/classes/sun/awt/fontconfigs/linux.fontconfig.Fedora.12.properties 2010-11-04 11:19:45.133587953 +0100 > @@ -0,0 +1,376 @@ > +# > +# Copyright 2007 Sun Microsystems, Inc. All Rights Reserved. > +# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. > +# > +# This code is free software; you can redistribute it and/or modify it > +# under the terms of the GNU General Public License version 2 only, as > +# published by the Free Software Foundation. Sun designates this > +# particular file as subject to the "Classpath" exception as provided > +# by Sun in the LICENSE file that accompanied this code. > +# > +# This code is distributed in the hope that it will be useful, but WITHOUT > +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or > +# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License > +# version 2 for more details (a copy is included in the LICENSE file that > +# accompanied this code). > +# > +# You should have received a copy of the GNU General Public License version > +# 2 along with this work; if not, write to the Free Software Foundation, > +# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. > +# > +# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, > +# CA 95054 USA or visit www.sun.com if you need additional information or > +# have any questions. > +# > + > +# Version > + > +# Uses Fedora 9 fonts and file paths. > +version=1 > + > +# Component Font Mappings > + > +dialog.plain.latin-1=DejaVu Sans > +dialog.plain.japanese-x0208=Sazanami Gothic > +dialog.plain.korean=Baekmuk Gulim > +dialog.plain.chinese-big5=AR PL ShanHeiSun Uni > +dialog.plain.chinese-gb18030=AR PL ShanHeiSun Uni > +dialog.plain.bengali=Lohit Bengali > +dialog.plain.gujarati=Lohit Gujarati > +dialog.plain.hindi=Lohit Hindi > +dialog.plain.malayalam=Lohit Malayalam > +dialog.plain.oriya=Lohit Oriya > +dialog.plain.punjabi=Lohit Punjabi > +dialog.plain.tamil=Lohit Tamil > +dialog.plain.telugu=Lohit Telugu > +dialog.plain.sinhala=LKLUG > + > +dialog.bold.latin-1=DejaVu Sans Bold > +dialog.bold.japanese-x0208=Sazanami Gothic > +dialog.bold.korean=Baekmuk Gulim > +dialog.bold.chinese-big5=AR PL ShanHeiSun Uni > +dialog.bold.chinese-gb18030=AR PL ShanHeiSun Uni > +dialog.bold.bengali=Lohit Bengali > +dialog.bold.gujarati=Lohit Gujarati > +dialog.bold.hindi=Lohit Hindi > +dialog.bold.malayalam=Lohit Malayalam > +dialog.bold.oriya=Lohit Oriya > +dialog.bold.punjabi=Lohit Punjabi > +dialog.bold.tamil=Lohit Tamil > +dialog.bold.telugu=Lohit Telugu > +dialog.bold.sinhala=LKLUG > + > +dialog.italic.latin-1=DejaVu Sans Oblique > +dialog.italic.japanese-x0208=Sazanami Gothic > +dialog.italic.korean=Baekmuk Gulim > +dialog.italic.chinese-big5=AR PL ShanHeiSun Uni > +dialog.italic.chinese-gb18030=AR PL ShanHeiSun Uni > +dialog.italic.bengali=Lohit Bengali > +dialog.italic.gujarati=Lohit Gujarati > +dialog.italic.hindi=Lohit Hindi > +dialog.italic.malayalam=Lohit Malayalam > +dialog.italic.oriya=Lohit Oriya > +dialog.italic.punjabi=Lohit Punjabi > +dialog.italic.tamil=Lohit Tamil > +dialog.italic.telugu=Lohit Telugu > +dialog.italic.sinhala=LKLUG > + > +dialog.bolditalic.latin-1=DejaVu Sans Bold Oblique > +dialog.bolditalic.japanese-x0208=Sazanami Gothic > +dialog.bolditalic.korean=Baekmuk Gulim > +dialog.bolditalic.chinese-big5=AR PL ShanHeiSun Uni > +dialog.bolditalic.chinese-gb18030=AR PL ShanHeiSun Uni > +dialog.bolditalic.bengali=Lohit Bengali > +dialog.bolditalic.gujarati=Lohit Gujarati > +dialog.bolditalic.hindi=Lohit Hindi > +dialog.bolditalic.malayalam=Lohit Malayalam > +dialog.bolditalic.oriya=Lohit Oriya > +dialog.bolditalic.punjabi=Lohit Punjabi > +dialog.bolditalic.tamil=Lohit Tamil > +dialog.bolditalic.telugu=Lohit Telugu > +dialog.bolditalic.sinhala=LKLUG > + > +sansserif.plain.latin-1=DejaVu Sans > +sansserif.plain.japanese-x0208=Sazanami Gothic > +sansserif.plain.korean=Baekmuk Gulim > +sansserif.plain.chinese-big5=AR PL ShanHeiSun Uni > +sansserif.plain.chinese-gb18030=AR PL ShanHeiSun Uni > +sansserif.plain.bengali=Lohit Bengali > +sansserif.plain.gujarati=Lohit Gujarati > +sansserif.plain.hindi=Lohit Hindi > +sansserif.plain.malayalam=Lohit Malayalam > +sansserif.plain.oriya=Lohit Oriya > +sansserif.plain.punjabi=Lohit Punjabi > +sansserif.plain.tamil=Lohit Tamil > +sansserif.plain.telugu=Lohit Telugu > +sansserif.plain.sinhala=LKLUG > + > +sansserif.bold.latin-1=DejaVu Sans Bold > +sansserif.bold.japanese-x0208=Sazanami Gothic > +sansserif.bold.korean=Baekmuk Gulim > +sansserif.bold.chinese-big5=AR PL ShanHeiSun Uni > +sansserif.bold.chinese-gb18030=AR PL ShanHeiSun Uni > +sansserif.bold.bengali=Lohit Bengali > +sansserif.bold.gujarati=Lohit Gujarati > +sansserif.bold.hindi=Lohit Hindi > +sansserif.bold.malayalam=Lohit Malayalam > +sansserif.bold.oriya=Lohit Oriya > +sansserif.bold.punjabi=Lohit Punjabi > +sansserif.bold.tamil=Lohit Tamil > +sansserif.bold.telugu=Lohit Telugu > +sansserif.bold.sinhala=LKLUG > + > +sansserif.italic.latin-1=DejaVu Sans Oblique > +sansserif.italic.japanese-x0208=Sazanami Gothic > +sansserif.italic.korean=Baekmuk Gulim > +sansserif.italic.chinese-big5=AR PL ShanHeiSun Uni > +sansserif.italic.chinese-gb18030=AR PL ShanHeiSun Uni > +sansserif.italic.bengali=Lohit Bengali > +sansserif.italic.gujarati=Lohit Gujarati > +sansserif.italic.hindi=Lohit Hindi > +sansserif.italic.malayalam=Lohit Malayalam > +sansserif.italic.oriya=Lohit Oriya > +sansserif.italic.punjabi=Lohit Punjabi > +sansserif.italic.tamil=Lohit Tamil > +sansserif.italic.telugu=Lohit Telugu > +sansserif.italic.sinhala=LKLUG > + > +sansserif.bolditalic.latin-1=DejaVu Sans Bold Oblique > +sansserif.bolditalic.japanese-x0208=Sazanami Gothic > +sansserif.bolditalic.korean=Baekmuk Gulim > +sansserif.bolditalic.chinese-big5=AR PL ShanHeiSun Uni > +sansserif.bolditalic.chinese-gb18030=AR PL ShanHeiSun Uni > +sansserif.bolditalic.bengali=Lohit Bengali > +sansserif.bolditalic.gujarati=Lohit Gujarati > +sansserif.bolditalic.hindi=Lohit Hindi > +sansserif.bolditalic.malayalam=Lohit Malayalam > +sansserif.bolditalic.oriya=Lohit Oriya > +sansserif.bolditalic.punjabi=Lohit Punjabi > +sansserif.bolditalic.tamil=Lohit Tamil > +sansserif.bolditalic.telugu=Lohit Telugu > +sansserif.bolditalic.sinhala=LKLUG > + > +serif.plain.latin-1=DejaVu Serif > +serif.plain.japanese-x0208=Sazanami Mincho > +serif.plain.korean=Baekmuk Batang > +serif.plain.chinese-big5=AR PL ZenKai Uni > +serif.plain.chinese-gb18030=AR PL ZenKai Uni > +serif.plain.bengali=Lohit Bengali > +serif.plain.gujarati=Lohit Gujarati > +serif.plain.hindi=Lohit Hindi > +serif.plain.malayalam=Lohit Malayalam > +serif.plain.oriya=Lohit Oriya > +serif.plain.punjabi=Lohit Punjabi > +serif.plain.tamil=Lohit Tamil > +serif.plain.telugu=Lohit Telugu > +serif.plain.sinhala=LKLUG > + > +serif.bold.latin-1=DejaVu Serif Bold > +serif.bold.japanese-x0208=Sazanami Mincho > +serif.bold.korean=Baekmuk Batang > +serif.bold.chinese-big5=AR PL ZenKai Uni > +serif.bold.chinese-gb18030=AR PL ZenKai Uni > +serif.bold.bengali=Lohit Bengali > +serif.bold.gujarati=Lohit Gujarati > +serif.bold.hindi=Lohit Hindi > +serif.bold.malayalam=Lohit Malayalam > +serif.bold.oriya=Lohit Oriya > +serif.bold.punjabi=Lohit Punjabi > +serif.bold.tamil=Lohit Tamil > +serif.bold.telugu=Lohit Telugu > +serif.bold.sinhala=LKLUG > + > +serif.italic.latin-1=DejaVu Serif Oblique > +serif.italic.japanese-x0208=Sazanami Mincho > +serif.italic.korean=Baekmuk Batang > +serif.italic.chinese-big5=AR PL ZenKai Uni > +serif.italic.chinese-gb18030=AR PL ZenKai Uni > +serif.italic.bengali=Lohit Bengali > +serif.italic.gujarati=Lohit Gujarati > +serif.italic.hindi=Lohit Hindi > +serif.italic.malayalam=Lohit Malayalam > +serif.italic.oriya=Lohit Oriya > +serif.italic.punjabi=Lohit Punjabi > +serif.italic.tamil=Lohit Tamil > +serif.italic.telugu=Lohit Telugu > +serif.italic.sinhala=LKLUG > + > +serif.bolditalic.latin-1=DejaVu Serif Bold Oblique > +serif.bolditalic.japanese-x0208=Sazanami Mincho > +serif.bolditalic.korean=Baekmuk Batang > +serif.bolditalic.chinese-big5=AR PL ZenKai Uni > +serif.bolditalic.chinese-gb18030=AR PL ZenKai Uni > +serif.bolditalic.bengali=Lohit Bengali > +serif.bolditalic.gujarati=Lohit Gujarati > +serif.bolditalic.hindi=Lohit Hindi > +serif.bolditalic.malayalam=Lohit Malayalam > +serif.bolditalic.oriya=Lohit Oriya > +serif.bolditalic.punjabi=Lohit Punjabi > +serif.bolditalic.tamil=Lohit Tamil > +serif.bolditalic.telugu=Lohit Telugu > +serif.bolditalic.sinhala=LKLUG > + > +monospaced.plain.latin-1=DejaVu Sans Mono > +monospaced.plain.japanese-x0208=Sazanami Gothic > +monospaced.plain.korean=Baekmuk Gulim > +monospaced.plain.chinese-big5=AR PL ShanHeiSun Uni > +monospaced.plain.chinese-gb18030=AR PL ShanHeiSun Uni > +monospaced.plain.bengali=Lohit Bengali > +monospaced.plain.gujarati=Lohit Gujarati > +monospaced.plain.hindi=Lohit Hindi > +monospaced.plain.malayalam=Lohit Malayalam > +monospaced.plain.oriya=Lohit Oriya > +monospaced.plain.punjabi=Lohit Punjabi > +monospaced.plain.tamil=Lohit Tamil > +monospaced.plain.telugu=Lohit Telugu > +monospaced.plain.sinhala=LKLUG > + > +monospaced.bold.latin-1=DejaVu Sans Mono Bold > +monospaced.bold.japanese-x0208=Sazanami Gothic > +monospaced.bold.korean=Baekmuk Gulim > +monospaced.bold.chinese-big5=AR PL ShanHeiSun Uni > +monospaced.bold.chinese-gb18030=AR PL ShanHeiSun Uni > +monospaced.bold.bengali=Lohit Bengali > +monospaced.bold.gujarati=Lohit Gujarati > +monospaced.bold.hindi=Lohit Hindi > +monospaced.bold.malayalam=Lohit Malayalam > +monospaced.bold.oriya=Lohit Oriya > +monospaced.bold.punjabi=Lohit Punjabi > +monospaced.bold.tamil=Lohit Tamil > +monospaced.bold.telugu=Lohit Telugu > +monospaced.bold.sinhala=LKLUG > + > +monospaced.italic.latin-1=DejaVu Sans Mono Oblique > +monospaced.italic.japanese-x0208=Sazanami Gothic > +monospaced.italic.korean=Baekmuk Gulim > +monospaced.italic.chinese-big5=AR PL ShanHeiSun Uni > +monospaced.italic.chinese-gb18030=AR PL ShanHeiSun Uni > +monospaced.italic.bengali=Lohit Bengali > +monospaced.italic.gujarati=Lohit Gujarati > +monospaced.italic.hindi=Lohit Hindi > +monospaced.italic.malayalam=Lohit Malayalam > +monospaced.italic.oriya=Lohit Oriya > +monospaced.italic.punjabi=Lohit Punjabi > +monospaced.italic.tamil=Lohit Tamil > +monospaced.italic.telugu=Lohit Telugu > +monospaced.italic.sinhala=LKLUG > + > +monospaced.bolditalic.latin-1=DejaVu Sans Mono Bold Oblique > +monospaced.bolditalic.japanese-x0208=Sazanami Gothic > +monospaced.bolditalic.korean=Baekmuk Gulim > +monospaced.bolditalic.chinese-big5=AR PL ShanHeiSun Uni > +monospaced.bolditalic.chinese-gb18030=AR PL ShanHeiSun Uni > +monospaced.bolditalic.bengali=Lohit Bengali > +monospaced.bolditalic.gujarati=Lohit Gujarati > +monospaced.bolditalic.hindi=Lohit Hindi > +monospaced.bolditalic.malayalam=Lohit Malayalam > +monospaced.bolditalic.oriya=Lohit Oriya > +monospaced.bolditalic.punjabi=Lohit Punjabi > +monospaced.bolditalic.tamil=Lohit Tamil > +monospaced.bolditalic.telugu=Lohit Telugu > +monospaced.bolditalic.sinhala=LKLUG > + > +dialoginput.plain.latin-1=DejaVu Sans Mono > +dialoginput.plain.japanese-x0208=Sazanami Gothic > +dialoginput.plain.korean=Baekmuk Gulim > +dialoginput.plain.chinese-big5=AR PL ShanHeiSun Uni > +dialoginput.plain.chinese-gb18030=AR PL ShanHeiSun Uni > +dialoginput.plain.bengali=Lohit Bengali > +dialoginput.plain.gujarati=Lohit Gujarati > +dialoginput.plain.hindi=Lohit Hindi > +dialoginput.plain.malayalam=Lohit Malayalam > +dialoginput.plain.oriya=Lohit Oriya > +dialoginput.plain.punjabi=Lohit Punjabi > +dialoginput.plain.tamil=Lohit Tamil > +dialoginput.plain.telugu=Lohit Telugu > +dialoginput.plain.sinhala=LKLUG > + > +dialoginput.bold.latin-1=DejaVu Sans Mono Bold > +dialoginput.bold.japanese-x0208=Sazanami Gothic > +dialoginput.bold.korean=Baekmuk Gulim > +dialoginput.bold.chinese-big5=AR PL ShanHeiSun Uni > +dialoginput.bold.chinese-gb18030=AR PL ShanHeiSun Uni > +dialoginput.bold.bengali=Lohit Bengali > +dialoginput.bold.gujarati=Lohit Gujarati > +dialoginput.bold.hindi=Lohit Hindi > +dialoginput.bold.malayalam=Lohit Malayalam > +dialoginput.bold.oriya=Lohit Oriya > +dialoginput.bold.punjabi=Lohit Punjabi > +dialoginput.bold.tamil=Lohit Tamil > +dialoginput.bold.telugu=Lohit Telugu > +dialoginput.bold.sinhala=LKLUG > + > +dialoginput.italic.latin-1=DejaVu Sans Mono Oblique > +dialoginput.italic.japanese-x0208=Sazanami Gothic > +dialoginput.italic.korean=Baekmuk Gulim > +dialoginput.italic.chinese-big5=AR PL ShanHeiSun Uni > +dialoginput.italic.chinese-gb18030=AR PL ShanHeiSun Uni > +dialoginput.italic.bengali=Lohit Bengali > +dialoginput.italic.gujarati=Lohit Gujarati > +dialoginput.italic.hindi=Lohit Hindi > +dialoginput.italic.malayalam=Lohit Malayalam > +dialoginput.italic.oriya=Lohit Oriya > +dialoginput.italic.punjabi=Lohit Punjabi > +dialoginput.italic.tamil=Lohit Tamil > +dialoginput.italic.telugu=Lohit Telugu > +dialoginput.italic.sinhala=LKLUG > + > +dialoginput.bolditalic.latin-1=DejaVu Sans Mono Bold Oblique > +dialoginput.bolditalic.japanese-x0208=Sazanami Gothic > +dialoginput.bolditalic.korean=Baekmuk Gulim > +dialoginput.bolditalic.chinese-big5=AR PL ShanHeiSun Uni > +dialoginput.bolditalic.chinese-gb18030=AR PL ShanHeiSun Uni > +dialoginput.bolditalic.bengali=Lohit Bengali > +dialoginput.bolditalic.gujarati=Lohit Gujarati > +dialoginput.bolditalic.hindi=Lohit Hindi > +dialoginput.bolditalic.malayalam=Lohit Malayalam > +dialoginput.bolditalic.oriya=Lohit Oriya > +dialoginput.bolditalic.punjabi=Lohit Punjabi > +dialoginput.bolditalic.tamil=Lohit Tamil > +dialoginput.bolditalic.telugu=Lohit Telugu > +dialoginput.bolditalic.sinhala=LKLUG > + > +# Search Sequences > + > +sequence.allfonts=latin-1 > +sequence.allfonts.Big5=chinese-big5,latin-1 > +sequence.allfonts.x-euc-jp-linux=japanese-x0208,latin-1 > +sequence.allfonts.EUC-KR=korean,latin-1 > +sequence.allfonts.GB18030=chinese-gb18030,latin-1 > +sequence.fallback=chinese-big5,chinese-gb18030,japanese-x0208,korean,bengali,gujarati,hindi,oriya,punjabi,malayalam,tamil,telugu,sinhala > + > +# Font File Names > + > +filename.DejaVu_Sans=/usr/share/fonts/dejavu/DejaVuSans.ttf > +filename.DejaVu_Sans_Bold=/usr/share/fonts/dejavu/DejaVuSans-Bold.ttf > +filename.DejaVu_Sans_Oblique=/usr/share/fonts/dejavu/DejaVuSans-Oblique.ttf > +filename.DejaVu_Sans_Bold_Oblique=/usr/share/fonts/dejavu/DejaVuSans-BoldOblique.ttf > + > +filename.DejaVu_Sans_Mono=/usr/share/fonts/dejavu/DejaVuSansMono.ttf > +filename.DejaVu_Sans_Mono_Bold=/usr/share/fonts/dejavu/DejaVuSansMono-Bold.ttf > +filename.DejaVu_Sans_Mono_Oblique=/usr/share/fonts/dejavu/DejaVuSansMono-Oblique.ttf > +filename.DejaVu_Sans_Mono_Bold_Oblique=/usr/share/fonts/dejavu/DejaVuSansMono-BoldOblique.ttf > + > +filename.DejaVu_Serif=/usr/share/fonts/dejavu/DejaVuSerif.ttf > +filename.DejaVu_Serif_Bold=/usr/share/fonts/dejavu/DejaVuSerif-Bold.ttf > +filename.DejaVu_Serif_Oblique=/usr/share/fonts/dejavu/DejaVuSerif-Oblique.ttf > +filename.DejaVu_Serif_Bold_Oblique=/usr/share/fonts/dejavu/DejaVuSerif-BoldOblique.ttf > + > +filename.Sazanami_Gothic=/usr/share/fonts/sazanami-fonts-gothic/sazanami-gothic.ttf > +filename.Sazanami_Mincho=/usr/share/fonts/sazanami-fonts-mincho/sazanami-mincho.ttf > +filename.AR_PL_ShanHeiSun_Uni=/usr/share/fonts/cjkunifonts-uming/uming.ttc > +filename.AR_PL_ZenKai_Uni=/usr/share/fonts/cjkunifonts-ukai/ukai.ttc > +filename.Baekmuk_Gulim=/usr/share/fonts/baekmuk-ttf-gulim/gulim.ttf > +filename.Baekmuk_Batang=/usr/share/fonts/baekmuk-ttf-batang/batang.ttf > + > +filename.Lohit_Bengali=/usr/share/fonts/lohit-bengali/lohit_bn.ttf > +filename.Lohit_Gujarati=/usr/share/fonts/lohit-gujarati/lohit_gu.ttf > +filename.Lohit_Hindi=/usr/share/fonts/lohit-hindi/lohit_hi.ttf > +filename.Lohit_Kannda=/usr/share/fonts/lohit-kannada/lohit_kn.ttf > +filename.Lohit_Malayalam=/usr/share/fonts/lohit-malayalam/lohit_ml.ttf > +filename.Lohit_Oriya=/usr/share/fonts/lohit-oriya/lohit_or.ttf > +filename.Lohit_Punjabi=/usr/share/fonts/lohit-punjabi/lohit_pa.ttf > +filename.Lohit_Tamil=/usr/share/fonts/lohit-tamil/lohit_ta.ttf > +filename.Lohit_Telugu=/usr/share/fonts/lohit-telugu/lohit_te.ttf > +filename.LKLUG=/usr/share/fonts/lklug/lklug.ttf > + > -- Andrew :) Free Java Software Engineer Red Hat, Inc. (http://www.redhat.com) Support Free Java! Contribute to GNU Classpath and the OpenJDK http://www.gnu.org/software/classpath http://openjdk.java.net PGP Key: 94EFD9D8 (http://subkeys.pgp.net) Fingerprint = F8EF F1EA 401E 2E60 15FA 7927 142C 2591 94EF D9D8 From bugzilla-daemon at icedtea.classpath.org Mon Nov 8 11:58:20 2010 From: bugzilla-daemon at icedtea.classpath.org (bugzilla-daemon at icedtea.classpath.org) Date: Mon, 08 Nov 2010 19:58:20 +0000 Subject: [Bug 587] IcedTea6 1.8.2 (HotSpot Server VM) crash when playing Freecol game Message-ID: http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=587 ------- Comment #6 from drazzib at drazzib.com 2010-11-08 19:58 ------- (In reply to comment #5) > I am unable to reproduce the crashing testcase using: > xerxes at xerxes-J464X:~$ java -version > java version "1.6.0_20" > OpenJDK Runtime Environment (IcedTea6 1.10pre+r0bfb4898c039) (Ubuntu build > 1.6.0_20-b20) > OpenJDK Server VM (build 19.0-b06, mixed mode) Hi Xerxes, I can confirm it's fixed with IcedTea6 1.9.1 or OpenJDK 6b20. Here is my full version : java version "1.6.0_20" OpenJDK Runtime Environment (IcedTea6 1.9.1) (6b20-1.9.1-1) OpenJDK 64-Bit Server VM (build 17.0-b16, mixed mode) Thanks for your time. -- Configure bugmail: http://icedtea.classpath.org/bugzilla/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are the assignee for the bug, or are watching the assignee. From asu at redhat.com Mon Nov 8 12:15:07 2010 From: asu at redhat.com (Andrew Su) Date: Mon, 08 Nov 2010 15:15:07 -0500 Subject: [icedtea-web] RFC: integrate multiple KeyStore support into CertificateViewer In-Reply-To: <4CD31450.7060606@redhat.com> References: <4CD31450.7060606@redhat.com> Message-ID: <4CD85A4B.1000006@redhat.com> Hi, On 11/04/2010 04:15 PM, Omair Majid wrote: > Hi, > > The attached patch starts integrating some of the security certificate > configuration into Netx. > > It adds a new class KeyStores that is used to access the different > types of KeyStore that Netx supports - per user and per system > variants of trusted CA KeyStore, trusted certificate store, JSSE CA > store, and JSSE certificates store. > > It also fixes up the certificate viewer (javaws -viewer) to use these > multiple certificate stores. > > ChangeLog > 2010-11-04 Omair Majid > > * netx/net/sourceforge/jnlp/runtime/DeploymentConfiguration.java: > Add KEY_USER_TRUSTED_CA_CERTS, KEY_USER_TRUSTED_JSSE_CA_CERTS, > KEY_USER_TRUSTED_CERTS, KEY_USER_TRUSTED_JSSE_CERTS, > KEY_USER_TRUSTED_CLIENT_CERTS, KEY_SYSTEM_TRUSTED_CA_CERTS, > KEY_SYSTEM_TRUSTED_JSSE_CA_CERTS, KEY_SYSTEM_TRUSTED_CERTS, > KEY_SYSTEM_TRUSTED_JSSE_CERTS, KEY_SYSTEM_TRUSTED_CLIENT_CERTS > (loadDefaultProperties): Use the defined constants. > * netx/net/sourceforge/jnlp/security/KeyStores.java: New class. > (getPassword): New method. Return the default password used for > KeyStores. > (getKeyStore(Level,Type)): New method. Returns the appropriate > KeyStore. > (getKeyStore(Level,Type,String)): Likewise. > (getCertKeyStores): New method. Return all the trusted certificate > KeyStores. > (getCAKeyStores): New method. Return all the trusted CA certificate > KeyStores. > (getKeyStoreLocation): New method. Return the location of the > appropriate KeyStore. > (toTranslatableString): New method. Return a string that can be > used to create a human-readable name for the KeyStore. > (toDisplayableString): New method. Return a human-readable name > for the KeyStore. > (createKeyStoreFromFile): New method. Creates a new KeyStore object, > initializing it from the given file if possible. > * netx/net/sourceforge/jnlp/security/viewer/CertificatePane.java > (CertificatePane): Create two JTables. Populate the tables when > done creating the user interface. > (initializeKeyStore): Use the correct keystore. > (addComponents): Do not read KeyStore. Create more interface > elements to show the new possible KeyStores. Mark some buttons to > be disabled when needed. > (repopulateTable): Renamed to... > (repopulateTables): New method. Read KeyStore and use the contents > to create the user and system tables. > (CertificateType): New class. > (CertificateTypeListener): New class. Listens to JComboBox change > events. > (TabChangeListener): New class. Listens to new tab selections. > (ImportButtonListener): Import certificates to the appropriate > KeyStore. > (ExportButtonListener): Find the certificate from the right table. > (RemoveButtonListener): Find the certificate from the right table > and right the KeyStore. > (DetailsButtonListener): Find the certificate from the right table. > * netx/net/sourceforge/jnlp/security/viewer/CertificateViewer.java > (showCertficaiteViewer): Initialize the JNLPRuntime so the > configuration gets loaded. > * netx/net/sourceforge/jnlp/tools/KeyTool.java > (addToKeyStore(File,KeyStore)): New method. Adds certificate from > the file to the KeyStore. > (addToKeyStore(X509Certificate,KeyStore)): New method. Adds a > certificate to a KeyStore. > > > Any thoughts or comments? > > Thanks, > Omair > icedtea-web-integrate-configuration-security-files-05.patch > > > diff -r 2405cef22921 netx/net/sourceforge/jnlp/runtime/DeploymentConfiguration.java > --- a/netx/net/sourceforge/jnlp/runtime/DeploymentConfiguration.java Wed Nov 03 23:06:23 2010 +0000 > +++ b/netx/net/sourceforge/jnlp/runtime/DeploymentConfiguration.java Thu Nov 04 15:57:40 2010 -0400 > @@ -142,6 +142,18 @@ > */ > public static final String KEY_USER_NETX_RUNNING_FILE = "deployment.user.runningfile"; > > + public static final String KEY_USER_TRUSTED_CA_CERTS = "deployment.user.security.trusted.cacerts"; > + public static final String KEY_USER_TRUSTED_JSSE_CA_CERTS = "deployment.user.security.trusted.jssecacerts"; > + public static final String KEY_USER_TRUSTED_CERTS = "deployment.user.security.trusted.certs"; > + public static final String KEY_USER_TRUSTED_JSSE_CERTS = "deployment.user.security.trusted.jssecerts"; > + public static final String KEY_USER_TRUSTED_CLIENT_CERTS = "deployment.user.security.trusted.clientauthcerts"; > + > + public static final String KEY_SYSTEM_TRUSTED_CA_CERTS = "deployment.system.security.cacerts"; > + public static final String KEY_SYSTEM_TRUSTED_JSSE_CA_CERTS = "deployment.system.security.jssecacerts"; > + public static final String KEY_SYSTEM_TRUSTED_CERTS = "deployment.system.security.trusted.certs"; > + public static final String KEY_SYSTEM_TRUSTED_JSSE_CERTS = "deployment.system.security.trusted.jssecerts"; > + public static final String KEY_SYSTEM_TRUSTED_CLIENT_CERTS = "deployment.system.security.trusted.clientautcerts"; > + > public enum ConfigType { > System, User > } > @@ -315,17 +327,17 @@ > { KEY_USER_NETX_RUNNING_FILE, LOCKS_DIR + File.separator + "netx_running" }, > /* certificates and policy files */ > { "deployment.user.security.policy","file://" + USER_SECURITY + File.separator + "java.policy" }, > - { "deployment.user.security.trusted.cacerts", USER_SECURITY + File.separator + "trusted.cacerts" }, > - { "deployment.user.security.trusted.jssecacerts", USER_SECURITY + File.separator + "trusted.jssecacerts" }, > - { "deployment.user.security.trusted.certs", USER_SECURITY + File.separator + "trusted.certs" }, > - { "deployment.user.security.trusted.jssecerts", USER_SECURITY + File.separator + "trusted.jssecerts"}, > - { "deployment.user.security.trusted.clientauthcerts", USER_SECURITY + File.separator + "trusted.clientcerts" }, > + { KEY_USER_TRUSTED_CA_CERTS, USER_SECURITY + File.separator + "trusted.cacerts" }, > + { KEY_USER_TRUSTED_JSSE_CA_CERTS, USER_SECURITY + File.separator + "trusted.jssecacerts" }, > + { KEY_USER_TRUSTED_CERTS, USER_SECURITY + File.separator + "trusted.certs" }, > + { KEY_USER_TRUSTED_JSSE_CERTS, USER_SECURITY + File.separator + "trusted.jssecerts"}, > + { KEY_USER_TRUSTED_CLIENT_CERTS, USER_SECURITY + File.separator + "trusted.clientcerts" }, > { "deployment.system.security.policy", null }, > - { "deployment.system.security.cacerts", SYSTEM_SECURITY + File.separator + "cacerts" }, > - { "deployment.system.security.jssecacerts", SYSTEM_SECURITY + File.separator + "jssecacerts" }, > - { "deployment.system.security.trusted.certs", SYSTEM_SECURITY + File.separator + "trusted.certs" }, > - { "deployment.system.security.trusted.jssecerts", SYSTEM_SECURITY + File.separator + "trusted.jssecerts" }, > - { "deployment.system.security.trusted.clientautcerts", SYSTEM_SECURITY + File.separator + "trusted.clientcerts" }, > + { KEY_SYSTEM_TRUSTED_CA_CERTS , SYSTEM_SECURITY + File.separator + "cacerts" }, > + { KEY_SYSTEM_TRUSTED_JSSE_CA_CERTS, SYSTEM_SECURITY + File.separator + "jssecacerts" }, > + { KEY_SYSTEM_TRUSTED_CERTS, SYSTEM_SECURITY + File.separator + "trusted.certs" }, > + { KEY_SYSTEM_TRUSTED_JSSE_CERTS, SYSTEM_SECURITY + File.separator + "trusted.jssecerts" }, > + { KEY_SYSTEM_TRUSTED_CLIENT_CERTS, SYSTEM_SECURITY + File.separator + "trusted.clientcerts" }, > /* security access and control */ > { "deployment.security.askgrantdialog.show", String.valueOf(true) }, > { "deployment.security.askgrantdialog.notinca", String.valueOf(true) }, > diff -r 2405cef22921 netx/net/sourceforge/jnlp/security/KeyStores.java > --- /dev/null Thu Jan 01 00:00:00 1970 +0000 > +++ b/netx/net/sourceforge/jnlp/security/KeyStores.java Thu Nov 04 15:57:40 2010 -0400 > @@ -0,0 +1,300 @@ > +package net.sourceforge.jnlp.security; > + > +import java.io.File; > +import java.io.FileInputStream; > +import java.io.FileOutputStream; > +import java.io.IOException; > +import java.security.KeyStore; > +import java.security.KeyStoreException; > +import java.security.NoSuchAlgorithmException; > +import java.security.cert.CertificateException; > +import java.util.ArrayList; > +import java.util.List; > +import java.util.StringTokenizer; > + > +import net.sourceforge.jnlp.runtime.DeploymentConfiguration; > +import net.sourceforge.jnlp.runtime.JNLPRuntime; > +import net.sourceforge.jnlp.runtime.Translator; > + > +/** > + * TheKeyStores class allows easily accessing the various KeyStores > + * used. > + */ > +public final class KeyStores { > + > + /* this gets turned into user-readable strings, see toUserReadableString */ > + > + public enum Level { > + USER, > + SYSTEM, > + } > + > + public enum Type { > + CERTS, > + JSSE_CERTS, > + CA_CERTS, > + JSSE_CA_CERTS, > + CLIENT_CERTS, > + } > + > + private static final String KEYSTORE_TYPE = "JKS"; > + /** the default password used to protect the KeyStores */ > + private static final String DEFAULT_PASSWORD = "changeit"; > + > + public static final char[] getPassword() { > + return DEFAULT_PASSWORD.toCharArray(); > + } > + > + /** > + * Returns a KeyStore corresponding to the appropriate level level (user or > + * system) and type. > + * > + * @param level whether the KeyStore desired is a user-level or system-level > + * KeyStore > + * @param type the type of KeyStore desired > + * @return a KeyStore containing certificates from the appropriate > + */ > + public static final KeyStore getKeyStore(Level level, Type type) { > + boolean create = false; > + if (level == Level.USER) { > + create = true; > + } else { > + create = false; > + } > + return getKeyStore(level, type, create); > + } > + > + /** > + * Returns a KeyStore corresponding to the appropriate level level (user or > + * system) and type. > + * > + * @param level whether the KeyStore desired is a user-level or system-level > + * KeyStore > + * @param type the type of KeyStore desired > + * @return a KeyStore containing certificates from the appropriate > + */ > + public static final KeyStore getKeyStore(Level level, Type type, boolean create) { > + String location = getKeyStoreLocation(level, type); > + KeyStore ks = null; > + try { > + ks = createKeyStoreFromFile(new File(location), create, DEFAULT_PASSWORD); > + } catch (Exception e) { > + e.printStackTrace(); > + } > + return ks; > + } > + > + /** > + * Returns an array of KeyStore that contain certificates that are trusted. > + * The KeyStores contain certificates from different sources. > + * > + * @return an array of KeyStore containing trusted Certificates > + */ > + public static final KeyStore[] getCertKeyStores() { > + List result = new ArrayList(10); > + KeyStore ks = null; > + > + /* System-level JSSE certificates */ > + ks = getKeyStore(Level.SYSTEM, Type.JSSE_CERTS); > + if (ks != null) { > + result.add(ks); > + } > + /* System-level certificates */ > + ks = getKeyStore(Level.SYSTEM, Type.CERTS); > + if (ks != null) { > + result.add(ks); > + } > + /* User-level JSSE certificates */ > + ks = getKeyStore(Level.USER, Type.JSSE_CERTS); > + if (ks != null) { > + result.add(ks); > + } > + /* User-level certificates */ > + ks = getKeyStore(Level.USER, Type.CERTS); > + if (ks != null) { > + result.add(ks); > + } > + > + return result.toArray(new KeyStore[result.size()]); > + } > + > + /** > + * Returns an array of KeyStore that contain trusted CA certificates. > + * > + * @return an array of KeyStore containing trusted CA certificates > + */ > + public static final KeyStore[] getCAKeyStores() { > + List result = new ArrayList(10); > + KeyStore ks = null; > + > + /* System-level JSSE CA certificates */ > + ks = getKeyStore(Level.SYSTEM, Type.JSSE_CA_CERTS); > + if (ks != null) { > + result.add(ks); > + } > + /* System-level CA certificates */ > + ks = getKeyStore(Level.SYSTEM, Type.CA_CERTS); > + if (ks != null) { > + result.add(ks); > + } > + /* User-level JSSE CA certificates */ > + ks = getKeyStore(Level.USER, Type.JSSE_CA_CERTS); > + if (ks != null) { > + result.add(ks); > + } > + /* User-level CA certificates */ > + ks = getKeyStore(Level.USER, Type.CA_CERTS); > + if (ks != null) { > + result.add(ks); > + } > + > + return result.toArray(new KeyStore[result.size()]); > + } > + > + /** > + * Returns the location of a KeyStore corresponding to the given level and type. > + * @param level > + * @param type > + * @return > + */ > + public static final String getKeyStoreLocation(Level level, Type type) { > + String configKey = null; > + switch (level) { > + case SYSTEM: > + switch (type) { > + case JSSE_CA_CERTS: > + configKey = DeploymentConfiguration.KEY_SYSTEM_TRUSTED_JSSE_CA_CERTS; > + break; > + case CA_CERTS: > + configKey = DeploymentConfiguration.KEY_SYSTEM_TRUSTED_CA_CERTS; > + break; > + case JSSE_CERTS: > + configKey = DeploymentConfiguration.KEY_SYSTEM_TRUSTED_JSSE_CERTS; > + break; > + case CERTS: > + configKey = DeploymentConfiguration.KEY_SYSTEM_TRUSTED_CERTS; > + break; > + case CLIENT_CERTS: > + configKey = DeploymentConfiguration.KEY_SYSTEM_TRUSTED_CLIENT_CERTS; > + break; > + } > + break; > + case USER: > + switch (type) { > + case JSSE_CA_CERTS: > + configKey = DeploymentConfiguration.KEY_USER_TRUSTED_JSSE_CA_CERTS; > + break; > + case CA_CERTS: > + configKey = DeploymentConfiguration.KEY_USER_TRUSTED_CA_CERTS; > + break; > + case JSSE_CERTS: > + configKey = DeploymentConfiguration.KEY_USER_TRUSTED_JSSE_CERTS; > + break; > + case CERTS: > + configKey = DeploymentConfiguration.KEY_USER_TRUSTED_CERTS; > + break; > + case CLIENT_CERTS: > + configKey = DeploymentConfiguration.KEY_SYSTEM_TRUSTED_CLIENT_CERTS; > + break; > + } > + break; > + } > + > + if (configKey == null) { > + throw new RuntimeException("Unspported"); > + } > + > + return JNLPRuntime.getConfiguration().getProperty(configKey); > + } > + > + /** > + * Returns a String that can be used as a translation key to create a > + * user-visible representation of this KeyStore. Creates a string by > + * concatenating a level and type, converting everything to Title Case and > + * removing the _'s. (USER,CA_CERTS) becomes UserCaCerts. > + * > + * @param level > + * @param type > + * @return > + */ > + public static final String toTranslatableString(Level level, Type type) { > + StringBuilder response = new StringBuilder(); > + > + if (level != null) { > + String levelString = level.toString(); > + response.append(levelString.substring(0, 1).toUpperCase()); > + response.append(levelString.substring(1).toLowerCase()); > + } > + > + if (type != null) { > + String typeString = type.toString(); > + StringTokenizer tokenizer = new StringTokenizer(typeString, "_"); > + while (tokenizer.hasMoreTokens()) { > + String token = tokenizer.nextToken(); > + response.append(token.substring(0, 1).toUpperCase()); > + response.append(token.substring(1).toLowerCase()); > + } > + } > + > + return response.toString(); > + } > + > + /** > + * Returns a human readable name for this KeyStore > + * > + * @param level the level of the KeyStore > + * @param type the type of KeyStore > + * @return a localized name for this KeyStore > + */ > + public static String toDisplayableString(Level level, Type type) { > + return Translator.R(toTranslatableString(level, type)); > + } > + > + /** > + * Reads the file (using the password) and uses it to create a new > + * {@link KeyStore}. If the file does not exist and should not be created, > + * it returns an empty but initialized KeyStore > + * > + * @param file the file to load information from > + * @param password the password to unlock the KeyStore file. > + * @return a KeyStore containing data from the file > + */ > + private static final KeyStore createKeyStoreFromFile(File file, boolean createIfNotFound, > + String password) throws IOException, KeyStoreException, NoSuchAlgorithmException, > + CertificateException { > + FileInputStream fis = null; > + KeyStore ks = null; > + > + try { > + if (createIfNotFound&& !file.exists()) { > + File parent = file.getParentFile(); > + if (!parent.isDirectory()&& !parent.mkdirs()) { According to mkdirs() some of the parent directories may get created. Maybe clean up if attempt failed. > + throw new IOException("unable to create " + parent); > + } > + ks = KeyStore.getInstance(KEYSTORE_TYPE); > + ks.load(null, password.toCharArray()); > + FileOutputStream fos = new FileOutputStream(file); > + ks.store(fos, password.toCharArray()); > + fos.close(); > + } > + > + // TODO catch exception when password is incorrect and prompt user > + > + if (file.exists()) { > + fis = new FileInputStream(file); > + ks = KeyStore.getInstance(KEYSTORE_TYPE); > + ks.load(fis, password.toCharArray()); > + } else { > + ks = KeyStore.getInstance(KEYSTORE_TYPE); > + ks.load(null, password.toCharArray()); > + } > + } finally { > + if (fis != null) { > + fis.close(); > + } > + } > + > + return ks; > + } > + > +} > diff -r 2405cef22921 netx/net/sourceforge/jnlp/security/viewer/CertificatePane.java > --- a/netx/net/sourceforge/jnlp/security/viewer/CertificatePane.java Wed Nov 03 23:06:23 2010 +0000 > +++ b/netx/net/sourceforge/jnlp/security/viewer/CertificatePane.java Thu Nov 04 15:57:40 2010 -0400 > @@ -44,93 +44,153 @@ > import java.awt.event.ActionListener; > import java.awt.event.KeyEvent; > import java.io.FileOutputStream; > +import java.io.OutputStream; > import java.io.PrintStream; > import java.security.KeyStore; > import java.security.cert.Certificate; > import java.security.cert.X509Certificate; > import java.util.ArrayList; > import java.util.Enumeration; > +import java.util.List; > > import javax.swing.BorderFactory; > import javax.swing.JButton; > +import javax.swing.JComboBox; > import javax.swing.JComponent; > import javax.swing.JDialog; > import javax.swing.JFileChooser; > +import javax.swing.JLabel; > import javax.swing.JOptionPane; > import javax.swing.JPanel; > import javax.swing.JScrollPane; > import javax.swing.JTabbedPane; > import javax.swing.JTable; > +import javax.swing.event.ChangeEvent; > +import javax.swing.event.ChangeListener; > import javax.swing.table.DefaultTableModel; > > +import net.sourceforge.jnlp.security.KeyStores; > import net.sourceforge.jnlp.security.SecurityUtil; > import net.sourceforge.jnlp.security.SecurityWarningDialog; > +import net.sourceforge.jnlp.security.KeyStores.Level; > import net.sourceforge.jnlp.tools.KeyTool; > > public class CertificatePane extends JPanel { > > /** > - * The certificates stored in the user's trusted.certs file. > + * The certificates stored in the certificates file. > */ > private ArrayList certs = null; > > + private static final Dimension TABLE_DIMENSION = new Dimension(500,200); > + > /** > * "Issued To" and "Issued By" string pairs for certs. > */ > private String[][] issuedToAndBy = null; > private final String[] columnNames = { "Issued To", "Issued By" }; > > - private JTable table; > + private final CertificateType[] certificateTypes = new CertificateType[] { > + new CertificateType(KeyStores.Type.CA_CERTS), > + new CertificateType(KeyStores.Type.JSSE_CA_CERTS), > + new CertificateType(KeyStores.Type.CERTS), > + new CertificateType(KeyStores.Type.JSSE_CERTS), > + }; > + > + JTabbedPane tabbedPane; > + private final JTable userTable; > + private final JTable systemTable; > + private JComboBox certificateTypeCombo; > + private KeyStores.Type currentKeyStoreType; > + private KeyStores.Level currentKeyStoreLevel; > + > + /** JComponents that should be disbled for system store */ > + private final List disableForSystem; > > private JDialog parent; > - > private JComponent defaultFocusComponent = null; > > /** > - * The KeyStore associated with the user's trusted.certs file. > + * The Current KeyStore. Only one table/tab is visible for interaction to > + * the user. This KeyStore corresponds to that. > */ > private KeyStore keyStore = null; > > public CertificatePane(JDialog parent) { > super(); > this.parent = parent; > - initializeKeyStore(); > + > + userTable = new JTable(null); > + systemTable = new JTable(null); > + disableForSystem = new ArrayList(); > + > addComponents(); > + > + currentKeyStoreType = ((CertificateType)(certificateTypeCombo.getSelectedItem())).getType(); > + if (tabbedPane.getSelectedIndex() == 0) { > + currentKeyStoreLevel = Level.USER; > + } else { > + currentKeyStoreLevel = Level.SYSTEM; > + } > + > + repopulateTables(); > } > > /** > * Reads the user's trusted.cacerts keystore. > */ > private void initializeKeyStore() { > - try { > - keyStore = SecurityUtil.getUserKeyStore(); > - } catch (Exception e) { > - // TODO Auto-generated catch block > - e.printStackTrace(); > - } > + try { > + keyStore = KeyStores.getKeyStore(currentKeyStoreLevel, currentKeyStoreType); > + } catch (Exception e) { > + e.printStackTrace(); > + } > } > > //create the GUI here. > protected void addComponents() { > - readKeyStore(); > > JPanel main = new JPanel(new BorderLayout()); > > + JPanel certificateTypePanel = new JPanel(new BorderLayout()); > + certificateTypePanel.setBorder(BorderFactory.createEmptyBorder(5,5,5,5)); > + > + JLabel certificateTypeLabel = new JLabel("Certificate Type:"); > + > + certificateTypeCombo = new JComboBox(certificateTypes); > + certificateTypeCombo.addActionListener(new CertificateTypeListener()); > + > + certificateTypePanel.add(certificateTypeLabel, BorderLayout.LINE_START); > + certificateTypePanel.add(certificateTypeCombo, BorderLayout.CENTER); > + > JPanel tablePanel = new JPanel(new BorderLayout()); > > - //Table > - DefaultTableModel tableModel > + // User Table > + DefaultTableModel userTableModel > = new DefaultTableModel(issuedToAndBy, columnNames); > - table = new JTable(tableModel); > - table.getTableHeader().setReorderingAllowed(false); > - table.setFillsViewportHeight(true); > - JScrollPane tablePane = new JScrollPane(table); > - tablePane.setPreferredSize(new Dimension(500,200)); > - tablePane.setSize(new Dimension(500,200)); > - tablePane.setBorder(BorderFactory.createEmptyBorder(10,10,10,10)); > + userTable.setModel(userTableModel); > + userTable.getTableHeader().setReorderingAllowed(false); > + userTable.setFillsViewportHeight(true); > + JScrollPane userTablePane = new JScrollPane(userTable); > + userTablePane.setPreferredSize(TABLE_DIMENSION); > + userTablePane.setSize(TABLE_DIMENSION); > + userTablePane.setBorder(BorderFactory.createEmptyBorder(10,10,10,10)); > > - JTabbedPane tabbedPane = new JTabbedPane(); > - tabbedPane.addTab("User", tablePane); > + // System Table > + DefaultTableModel systemTableModel = new DefaultTableModel(issuedToAndBy, columnNames); > + systemTable.setModel(systemTableModel); > + systemTable.getTableHeader().setReorderingAllowed(false); > + systemTable.setFillsViewportHeight(true); > + JScrollPane systemTablePane = new JScrollPane(systemTable); > + systemTablePane.setPreferredSize(TABLE_DIMENSION); > + systemTablePane.setSize(TABLE_DIMENSION); > + systemTablePane.setBorder(BorderFactory.createEmptyBorder(10,10,10,10)); > + > + tabbedPane = new JTabbedPane(); > + tabbedPane.addTab("User", userTablePane); > + tabbedPane.addTab("System", systemTablePane); > + tabbedPane.addChangeListener(new TabChangeListener()); > + > JPanel buttonPanel = new JPanel(new FlowLayout()); > > String[] buttonNames = {"Import", "Export", "Remove", "Details"}; > @@ -156,6 +216,10 @@ > button.setMnemonic(buttonMnemonics[i]); > button.addActionListener(listeners[i]); > button.setSize(maxWidth, button.getSize().height); > + // import and remove buttons > + if (i == 0 || i == 2) { > + disableForSystem.add(button); > + } > buttonPanel.add(button); > } > > @@ -169,6 +233,7 @@ > defaultFocusComponent = closeButton; > closePanel.add(closeButton, BorderLayout.EAST); > > + main.add(certificateTypePanel, BorderLayout.NORTH); > main.add(tablePanel, BorderLayout.CENTER); > main.add(closePanel, BorderLayout.SOUTH); > > @@ -204,6 +269,7 @@ > } > } catch (Exception e) { > //TODO > + e.printStackTrace(); > } > } > > @@ -211,14 +277,16 @@ > * Re-reads the certs file and repopulates the JTable. This is typically > * called after a certificate was deleted from the keystore. > */ > - private void repopulateTable() { > + private void repopulateTables() { > initializeKeyStore(); > readKeyStore(); > DefaultTableModel tableModel > = new DefaultTableModel(issuedToAndBy, columnNames); > > - table.setModel(tableModel); > - repaint(); > + userTable.setModel(tableModel); > + > + tableModel = new DefaultTableModel(issuedToAndBy, columnNames); > + systemTable.setModel(tableModel); > } > > public void focusOnDefaultButton() { > @@ -227,6 +295,61 @@ > } > } > > + /** Allows storing KeyStores.Types in a JComponent */ > + private class CertificateType { > + private final KeyStores.Type type; > + > + public CertificateType(KeyStores.Type type) { > + this.type = type; > + } > + > + public KeyStores.Type getType() { > + return type; > + } > + > + public String toString() { > + return KeyStores.toTranslatableString(null, type); > + } > + } > + > + /** Invoked when a user selects a different certificate type */ > + private class CertificateTypeListener implements ActionListener { > + @Override > + public void actionPerformed(ActionEvent e) { > + JComboBox source = (JComboBox) e.getSource(); > + CertificateType type = (CertificateType) source.getSelectedItem(); > + currentKeyStoreType = type.getType(); > + repopulateTables(); > + } > + } > + > + /** > + * Invoked when a user selects a different tab (switches from user to system > + * or vice versa). Changes the currentKeyStore Enables or disables buttons. > + */ > + private class TabChangeListener implements ChangeListener { > + @Override > + public void stateChanged(ChangeEvent e) { > + JTabbedPane source = (JTabbedPane) e.getSource(); > + switch (source.getSelectedIndex()) { > + case 0: > + currentKeyStoreLevel = Level.USER; > + for (JComponent component : disableForSystem) { > + component.setEnabled(true); > + } > + break; > + case 1: > + currentKeyStoreLevel = Level.SYSTEM; > + for (JComponent component : disableForSystem) { > + component.setEnabled(false); > + } > + break; > + } > + repopulateTables(); > + > + } > + } > + > private class ImportButtonListener implements ActionListener { > public void actionPerformed(ActionEvent e) { > > @@ -235,8 +358,12 @@ > if(returnVal == JFileChooser.APPROVE_OPTION) { > try { > KeyTool kt = new KeyTool(); > - kt.importCert(chooser.getSelectedFile()); > - repopulateTable(); > + KeyStore ks = keyStore; > + kt.addToKeyStore(chooser.getSelectedFile(), ks); > + OutputStream os = new FileOutputStream( > + KeyStores.getKeyStoreLocation(currentKeyStoreLevel, currentKeyStoreType)); > + ks.store(os, KeyStores.getPassword()); > + repopulateTables(); > } catch (Exception ex) { > // TODO: handle exception > ex.printStackTrace(); > @@ -247,6 +374,14 @@ > > private class ExportButtonListener implements ActionListener { > public void actionPerformed(ActionEvent e) { > + > + JTable table = null; > + if (currentKeyStoreLevel == Level.USER) { > + table = userTable; > + } else { > + table = systemTable; > + } > + > //For now, let's just export in -rfc mode as keytool does. > //we'll write to a file the exported certificate. > > @@ -263,7 +398,7 @@ > Certificate c = keyStore.getCertificate(alias); > PrintStream ps = new PrintStream(chooser.getSelectedFile().getAbsolutePath()); > KeyTool.dumpCert(c, ps); > - repopulateTable(); > + repopulateTables(); > } > } > } > @@ -281,6 +416,12 @@ > */ > public void actionPerformed(ActionEvent e) { > > + JTable table = null; > + if (currentKeyStoreLevel == Level.USER) { > + table = userTable; > + } else { > + table = systemTable; > + } > try { > int selectedRow = table.getSelectedRow(); > > @@ -295,12 +436,12 @@ > if (i == 0) { > keyStore.deleteEntry(alias); > FileOutputStream fos = new FileOutputStream( > - SecurityUtil.getTrustedCertsFilename()); > - keyStore.store(fos, SecurityUtil.getTrustedCertsPassword()); > + KeyStores.getKeyStoreLocation(currentKeyStoreLevel, currentKeyStoreType)); > + keyStore.store(fos, KeyStores.getPassword()); > fos.close(); > } > } > - repopulateTable(); > + repopulateTables(); > } > } catch (Exception ex) { > // TODO > @@ -317,6 +458,13 @@ > */ > public void actionPerformed(ActionEvent e) { > > + JTable table = null; > + if (currentKeyStoreLevel == Level.USER) { > + table = userTable; > + } else { > + table = systemTable; > + } > + > int selectedRow = table.getSelectedRow(); > if (selectedRow != -1&& selectedRow>= 0) { > X509Certificate c = certs.get(selectedRow); > diff -r 2405cef22921 netx/net/sourceforge/jnlp/security/viewer/CertificateViewer.java > --- a/netx/net/sourceforge/jnlp/security/viewer/CertificateViewer.java Wed Nov 03 23:06:23 2010 +0000 > +++ b/netx/net/sourceforge/jnlp/security/viewer/CertificateViewer.java Thu Nov 04 15:57:40 2010 -0400 > @@ -48,6 +48,8 @@ > import javax.swing.JDialog; > import javax.swing.UIManager; > > +import net.sourceforge.jnlp.runtime.JNLPRuntime; > + > public class CertificateViewer extends JDialog { > > private boolean initialized = false; > @@ -97,6 +99,7 @@ > > > public static void showCertificateViewer() throws Exception { > + JNLPRuntime.initialize(true); > setSystemLookAndFeel(); > > CertificateViewer cv = new CertificateViewer(); > diff -r 2405cef22921 netx/net/sourceforge/jnlp/tools/KeyTool.java > --- a/netx/net/sourceforge/jnlp/tools/KeyTool.java Wed Nov 03 23:06:23 2010 +0000 > +++ b/netx/net/sourceforge/jnlp/tools/KeyTool.java Thu Nov 04 15:57:40 2010 -0400 > @@ -32,7 +32,9 @@ > import java.io.IOException; > import java.io.InputStream; > import java.io.PrintStream; > +import java.math.BigInteger; > import java.security.KeyStore; > +import java.security.KeyStoreException; > import java.security.MessageDigest; > import java.security.PublicKey; > import java.security.cert.Certificate; > @@ -117,6 +119,47 @@ > return importCert((Certificate)cert); > } > > + /** > + * Adds the X509Certficate in the file to the KeyStore > + */ > + public final void addToKeyStore(File file, KeyStore ks) throws CertificateException, > + IOException, KeyStoreException { > + BufferedInputStream bis = new BufferedInputStream(new FileInputStream(file)); > + CertificateFactory cf = CertificateFactory.getInstance("X509"); > + X509Certificate cert = null; > + > + try { > + cert = (X509Certificate) cf.generateCertificate(bis); > + } catch (ClassCastException cce) { > + throw new CertificateException("Input file is not an X509 Certificate", cce); > + } > + > + addToKeyStore(cert, ks); > + > + } > + > + /** > + * Adds an X509Certificate to the KeyStore > + */ > + public final void addToKeyStore(X509Certificate cert, KeyStore ks) throws KeyStoreException { > + String alias = null; > + Random random = new Random(); > + alias = ks.getCertificateAlias(cert); > + // already in keystore; done > + if (alias != null) { > + return; > + } > + > + boolean aliasFound = false; > + do { > + alias = new BigInteger(20, random).toString(); > + if (ks.getCertificate(alias) == null) { > + aliasFound = true; > + } > + } while (!aliasFound); > + ks.setCertificateEntry(alias, cert); aliasFound is a bit confusing for name. this can be changed to: do{ alias = new BigInteger(20, random).toString(); } while (ks.getCertificate(alias) != null); to avoid using aliasFound. > + } > + > /** > * Adds a trusted certificate to the user's keystore. > * @return true if the add was successful, false otherwise. Everything else seems okay to me. Cheers, Andrew -------------- next part -------------- An HTML attachment was scrubbed... URL: http://mail.openjdk.java.net/pipermail/distro-pkg-dev/attachments/20101108/44bfe812/attachment.html From omajid at redhat.com Mon Nov 8 12:36:01 2010 From: omajid at redhat.com (Omair Majid) Date: Mon, 08 Nov 2010 15:36:01 -0500 Subject: [icedtea-web] RFC: integrate multiple KeyStore support into CertificateViewer In-Reply-To: <4CD85A4B.1000006@redhat.com> References: <4CD31450.7060606@redhat.com> <4CD85A4B.1000006@redhat.com> Message-ID: <4CD85F31.2020209@redhat.com> Hi Andrew, On 11/08/2010 03:15 PM, Andrew Su wrote: > Hi, > > On 11/04/2010 04:15 PM, Omair Majid wrote: >> Hi, >> >> The attached patch starts integrating some of the security certificate >> configuration into Netx. >> >> It adds a new class KeyStores that is used to access the different >> types of KeyStore that Netx supports - per user and per system >> variants of trusted CA KeyStore, trusted certificate store, JSSE CA >> store, and JSSE certificates store. >> >> It also fixes up the certificate viewer (javaws -viewer) to use these >> multiple certificate stores. >> >> ChangeLog >> 2010-11-04 Omair Majid >> >> * netx/net/sourceforge/jnlp/runtime/DeploymentConfiguration.java: >> Add KEY_USER_TRUSTED_CA_CERTS, KEY_USER_TRUSTED_JSSE_CA_CERTS, >> KEY_USER_TRUSTED_CERTS, KEY_USER_TRUSTED_JSSE_CERTS, >> KEY_USER_TRUSTED_CLIENT_CERTS, KEY_SYSTEM_TRUSTED_CA_CERTS, >> KEY_SYSTEM_TRUSTED_JSSE_CA_CERTS, KEY_SYSTEM_TRUSTED_CERTS, >> KEY_SYSTEM_TRUSTED_JSSE_CERTS, KEY_SYSTEM_TRUSTED_CLIENT_CERTS >> (loadDefaultProperties): Use the defined constants. >> * netx/net/sourceforge/jnlp/security/KeyStores.java: New class. >> (getPassword): New method. Return the default password used for >> KeyStores. >> (getKeyStore(Level,Type)): New method. Returns the appropriate >> KeyStore. >> (getKeyStore(Level,Type,String)): Likewise. >> (getCertKeyStores): New method. Return all the trusted certificate >> KeyStores. >> (getCAKeyStores): New method. Return all the trusted CA certificate >> KeyStores. >> (getKeyStoreLocation): New method. Return the location of the >> appropriate KeyStore. >> (toTranslatableString): New method. Return a string that can be >> used to create a human-readable name for the KeyStore. >> (toDisplayableString): New method. Return a human-readable name >> for the KeyStore. >> (createKeyStoreFromFile): New method. Creates a new KeyStore object, >> initializing it from the given file if possible. >> * netx/net/sourceforge/jnlp/security/viewer/CertificatePane.java >> (CertificatePane): Create two JTables. Populate the tables when >> done creating the user interface. >> (initializeKeyStore): Use the correct keystore. >> (addComponents): Do not read KeyStore. Create more interface >> elements to show the new possible KeyStores. Mark some buttons to >> be disabled when needed. >> (repopulateTable): Renamed to... >> (repopulateTables): New method. Read KeyStore and use the contents >> to create the user and system tables. >> (CertificateType): New class. >> (CertificateTypeListener): New class. Listens to JComboBox change >> events. >> (TabChangeListener): New class. Listens to new tab selections. >> (ImportButtonListener): Import certificates to the appropriate >> KeyStore. >> (ExportButtonListener): Find the certificate from the right table. >> (RemoveButtonListener): Find the certificate from the right table >> and right the KeyStore. >> (DetailsButtonListener): Find the certificate from the right table. >> * netx/net/sourceforge/jnlp/security/viewer/CertificateViewer.java >> (showCertficaiteViewer): Initialize the JNLPRuntime so the >> configuration gets loaded. >> * netx/net/sourceforge/jnlp/tools/KeyTool.java >> (addToKeyStore(File,KeyStore)): New method. Adds certificate from >> the file to the KeyStore. >> (addToKeyStore(X509Certificate,KeyStore)): New method. Adds a >> certificate to a KeyStore. >> >> >> Any thoughts or comments? >> >> Thanks, >> Omair >> icedtea-web-integrate-configuration-security-files-05.patch >> >> >> diff -r 2405cef22921 netx/net/sourceforge/jnlp/runtime/DeploymentConfiguration.java >> --- a/netx/net/sourceforge/jnlp/runtime/DeploymentConfiguration.java Wed Nov 03 23:06:23 2010 +0000 >> +++ b/netx/net/sourceforge/jnlp/runtime/DeploymentConfiguration.java Thu Nov 04 15:57:40 2010 -0400 >> @@ -142,6 +142,18 @@ >> */ >> public static final String KEY_USER_NETX_RUNNING_FILE = "deployment.user.runningfile"; >> >> + public static final String KEY_USER_TRUSTED_CA_CERTS = "deployment.user.security.trusted.cacerts"; >> + public static final String KEY_USER_TRUSTED_JSSE_CA_CERTS = "deployment.user.security.trusted.jssecacerts"; >> + public static final String KEY_USER_TRUSTED_CERTS = "deployment.user.security.trusted.certs"; >> + public static final String KEY_USER_TRUSTED_JSSE_CERTS = "deployment.user.security.trusted.jssecerts"; >> + public static final String KEY_USER_TRUSTED_CLIENT_CERTS = "deployment.user.security.trusted.clientauthcerts"; >> + >> + public static final String KEY_SYSTEM_TRUSTED_CA_CERTS = "deployment.system.security.cacerts"; >> + public static final String KEY_SYSTEM_TRUSTED_JSSE_CA_CERTS = "deployment.system.security.jssecacerts"; >> + public static final String KEY_SYSTEM_TRUSTED_CERTS = "deployment.system.security.trusted.certs"; >> + public static final String KEY_SYSTEM_TRUSTED_JSSE_CERTS = "deployment.system.security.trusted.jssecerts"; >> + public static final String KEY_SYSTEM_TRUSTED_CLIENT_CERTS = "deployment.system.security.trusted.clientautcerts"; >> + >> public enum ConfigType { >> System, User >> } >> @@ -315,17 +327,17 @@ >> { KEY_USER_NETX_RUNNING_FILE, LOCKS_DIR + File.separator + "netx_running" }, >> /* certificates and policy files */ >> { "deployment.user.security.policy","file://" + USER_SECURITY + File.separator + "java.policy" }, >> - { "deployment.user.security.trusted.cacerts", USER_SECURITY + File.separator + "trusted.cacerts" }, >> - { "deployment.user.security.trusted.jssecacerts", USER_SECURITY + File.separator + "trusted.jssecacerts" }, >> - { "deployment.user.security.trusted.certs", USER_SECURITY + File.separator + "trusted.certs" }, >> - { "deployment.user.security.trusted.jssecerts", USER_SECURITY + File.separator + "trusted.jssecerts"}, >> - { "deployment.user.security.trusted.clientauthcerts", USER_SECURITY + File.separator + "trusted.clientcerts" }, >> + { KEY_USER_TRUSTED_CA_CERTS, USER_SECURITY + File.separator + "trusted.cacerts" }, >> + { KEY_USER_TRUSTED_JSSE_CA_CERTS, USER_SECURITY + File.separator + "trusted.jssecacerts" }, >> + { KEY_USER_TRUSTED_CERTS, USER_SECURITY + File.separator + "trusted.certs" }, >> + { KEY_USER_TRUSTED_JSSE_CERTS, USER_SECURITY + File.separator + "trusted.jssecerts"}, >> + { KEY_USER_TRUSTED_CLIENT_CERTS, USER_SECURITY + File.separator + "trusted.clientcerts" }, >> { "deployment.system.security.policy", null }, >> - { "deployment.system.security.cacerts", SYSTEM_SECURITY + File.separator + "cacerts" }, >> - { "deployment.system.security.jssecacerts", SYSTEM_SECURITY + File.separator + "jssecacerts" }, >> - { "deployment.system.security.trusted.certs", SYSTEM_SECURITY + File.separator + "trusted.certs" }, >> - { "deployment.system.security.trusted.jssecerts", SYSTEM_SECURITY + File.separator + "trusted.jssecerts" }, >> - { "deployment.system.security.trusted.clientautcerts", SYSTEM_SECURITY + File.separator + "trusted.clientcerts" }, >> + { KEY_SYSTEM_TRUSTED_CA_CERTS , SYSTEM_SECURITY + File.separator + "cacerts" }, >> + { KEY_SYSTEM_TRUSTED_JSSE_CA_CERTS, SYSTEM_SECURITY + File.separator + "jssecacerts" }, >> + { KEY_SYSTEM_TRUSTED_CERTS, SYSTEM_SECURITY + File.separator + "trusted.certs" }, >> + { KEY_SYSTEM_TRUSTED_JSSE_CERTS, SYSTEM_SECURITY + File.separator + "trusted.jssecerts" }, >> + { KEY_SYSTEM_TRUSTED_CLIENT_CERTS, SYSTEM_SECURITY + File.separator + "trusted.clientcerts" }, >> /* security access and control */ >> { "deployment.security.askgrantdialog.show", String.valueOf(true) }, >> { "deployment.security.askgrantdialog.notinca", String.valueOf(true) }, >> diff -r 2405cef22921 netx/net/sourceforge/jnlp/security/KeyStores.java >> --- /dev/null Thu Jan 01 00:00:00 1970 +0000 >> +++ b/netx/net/sourceforge/jnlp/security/KeyStores.java Thu Nov 04 15:57:40 2010 -0400 >> @@ -0,0 +1,300 @@ >> +package net.sourceforge.jnlp.security; >> + >> +import java.io.File; >> +import java.io.FileInputStream; >> +import java.io.FileOutputStream; >> +import java.io.IOException; >> +import java.security.KeyStore; >> +import java.security.KeyStoreException; >> +import java.security.NoSuchAlgorithmException; >> +import java.security.cert.CertificateException; >> +import java.util.ArrayList; >> +import java.util.List; >> +import java.util.StringTokenizer; >> + >> +import net.sourceforge.jnlp.runtime.DeploymentConfiguration; >> +import net.sourceforge.jnlp.runtime.JNLPRuntime; >> +import net.sourceforge.jnlp.runtime.Translator; >> + >> +/** >> + * TheKeyStores class allows easily accessing the various KeyStores >> + * used. >> + */ >> +public final class KeyStores { >> + >> + /* this gets turned into user-readable strings, see toUserReadableString */ >> + >> + public enum Level { >> + USER, >> + SYSTEM, >> + } >> + >> + public enum Type { >> + CERTS, >> + JSSE_CERTS, >> + CA_CERTS, >> + JSSE_CA_CERTS, >> + CLIENT_CERTS, >> + } >> + >> + private static final String KEYSTORE_TYPE = "JKS"; >> + /** the default password used to protect the KeyStores */ >> + private static final String DEFAULT_PASSWORD = "changeit"; >> + >> + public static final char[] getPassword() { >> + return DEFAULT_PASSWORD.toCharArray(); >> + } >> + >> + /** >> + * Returns a KeyStore corresponding to the appropriate level level (user or >> + * system) and type. >> + * >> + * @param level whether the KeyStore desired is a user-level or system-level >> + * KeyStore >> + * @param type the type of KeyStore desired >> + * @return a KeyStore containing certificates from the appropriate >> + */ >> + public static final KeyStore getKeyStore(Level level, Type type) { >> + boolean create = false; >> + if (level == Level.USER) { >> + create = true; >> + } else { >> + create = false; >> + } >> + return getKeyStore(level, type, create); >> + } >> + >> + /** >> + * Returns a KeyStore corresponding to the appropriate level level (user or >> + * system) and type. >> + * >> + * @param level whether the KeyStore desired is a user-level or system-level >> + * KeyStore >> + * @param type the type of KeyStore desired >> + * @return a KeyStore containing certificates from the appropriate >> + */ >> + public static final KeyStore getKeyStore(Level level, Type type, boolean create) { >> + String location = getKeyStoreLocation(level, type); >> + KeyStore ks = null; >> + try { >> + ks = createKeyStoreFromFile(new File(location), create, DEFAULT_PASSWORD); >> + } catch (Exception e) { >> + e.printStackTrace(); >> + } >> + return ks; >> + } >> + >> + /** >> + * Returns an array of KeyStore that contain certificates that are trusted. >> + * The KeyStores contain certificates from different sources. >> + * >> + * @return an array of KeyStore containing trusted Certificates >> + */ >> + public static final KeyStore[] getCertKeyStores() { >> + List result = new ArrayList(10); >> + KeyStore ks = null; >> + >> + /* System-level JSSE certificates */ >> + ks = getKeyStore(Level.SYSTEM, Type.JSSE_CERTS); >> + if (ks != null) { >> + result.add(ks); >> + } >> + /* System-level certificates */ >> + ks = getKeyStore(Level.SYSTEM, Type.CERTS); >> + if (ks != null) { >> + result.add(ks); >> + } >> + /* User-level JSSE certificates */ >> + ks = getKeyStore(Level.USER, Type.JSSE_CERTS); >> + if (ks != null) { >> + result.add(ks); >> + } >> + /* User-level certificates */ >> + ks = getKeyStore(Level.USER, Type.CERTS); >> + if (ks != null) { >> + result.add(ks); >> + } >> + >> + return result.toArray(new KeyStore[result.size()]); >> + } >> + >> + /** >> + * Returns an array of KeyStore that contain trusted CA certificates. >> + * >> + * @return an array of KeyStore containing trusted CA certificates >> + */ >> + public static final KeyStore[] getCAKeyStores() { >> + List result = new ArrayList(10); >> + KeyStore ks = null; >> + >> + /* System-level JSSE CA certificates */ >> + ks = getKeyStore(Level.SYSTEM, Type.JSSE_CA_CERTS); >> + if (ks != null) { >> + result.add(ks); >> + } >> + /* System-level CA certificates */ >> + ks = getKeyStore(Level.SYSTEM, Type.CA_CERTS); >> + if (ks != null) { >> + result.add(ks); >> + } >> + /* User-level JSSE CA certificates */ >> + ks = getKeyStore(Level.USER, Type.JSSE_CA_CERTS); >> + if (ks != null) { >> + result.add(ks); >> + } >> + /* User-level CA certificates */ >> + ks = getKeyStore(Level.USER, Type.CA_CERTS); >> + if (ks != null) { >> + result.add(ks); >> + } >> + >> + return result.toArray(new KeyStore[result.size()]); >> + } >> + >> + /** >> + * Returns the location of a KeyStore corresponding to the given level and type. >> + * @param level >> + * @param type >> + * @return >> + */ >> + public static final String getKeyStoreLocation(Level level, Type type) { >> + String configKey = null; >> + switch (level) { >> + case SYSTEM: >> + switch (type) { >> + case JSSE_CA_CERTS: >> + configKey = DeploymentConfiguration.KEY_SYSTEM_TRUSTED_JSSE_CA_CERTS; >> + break; >> + case CA_CERTS: >> + configKey = DeploymentConfiguration.KEY_SYSTEM_TRUSTED_CA_CERTS; >> + break; >> + case JSSE_CERTS: >> + configKey = DeploymentConfiguration.KEY_SYSTEM_TRUSTED_JSSE_CERTS; >> + break; >> + case CERTS: >> + configKey = DeploymentConfiguration.KEY_SYSTEM_TRUSTED_CERTS; >> + break; >> + case CLIENT_CERTS: >> + configKey = DeploymentConfiguration.KEY_SYSTEM_TRUSTED_CLIENT_CERTS; >> + break; >> + } >> + break; >> + case USER: >> + switch (type) { >> + case JSSE_CA_CERTS: >> + configKey = DeploymentConfiguration.KEY_USER_TRUSTED_JSSE_CA_CERTS; >> + break; >> + case CA_CERTS: >> + configKey = DeploymentConfiguration.KEY_USER_TRUSTED_CA_CERTS; >> + break; >> + case JSSE_CERTS: >> + configKey = DeploymentConfiguration.KEY_USER_TRUSTED_JSSE_CERTS; >> + break; >> + case CERTS: >> + configKey = DeploymentConfiguration.KEY_USER_TRUSTED_CERTS; >> + break; >> + case CLIENT_CERTS: >> + configKey = DeploymentConfiguration.KEY_SYSTEM_TRUSTED_CLIENT_CERTS; >> + break; >> + } >> + break; >> + } >> + >> + if (configKey == null) { >> + throw new RuntimeException("Unspported"); >> + } >> + >> + return JNLPRuntime.getConfiguration().getProperty(configKey); >> + } >> + >> + /** >> + * Returns a String that can be used as a translation key to create a >> + * user-visible representation of this KeyStore. Creates a string by >> + * concatenating a level and type, converting everything to Title Case and >> + * removing the _'s. (USER,CA_CERTS) becomes UserCaCerts. >> + * >> + * @param level >> + * @param type >> + * @return >> + */ >> + public static final String toTranslatableString(Level level, Type type) { >> + StringBuilder response = new StringBuilder(); >> + >> + if (level != null) { >> + String levelString = level.toString(); >> + response.append(levelString.substring(0, 1).toUpperCase()); >> + response.append(levelString.substring(1).toLowerCase()); >> + } >> + >> + if (type != null) { >> + String typeString = type.toString(); >> + StringTokenizer tokenizer = new StringTokenizer(typeString, "_"); >> + while (tokenizer.hasMoreTokens()) { >> + String token = tokenizer.nextToken(); >> + response.append(token.substring(0, 1).toUpperCase()); >> + response.append(token.substring(1).toLowerCase()); >> + } >> + } >> + >> + return response.toString(); >> + } >> + >> + /** >> + * Returns a human readable name for this KeyStore >> + * >> + * @param level the level of the KeyStore >> + * @param type the type of KeyStore >> + * @return a localized name for this KeyStore >> + */ >> + public static String toDisplayableString(Level level, Type type) { >> + return Translator.R(toTranslatableString(level, type)); >> + } >> + >> + /** >> + * Reads the file (using the password) and uses it to create a new >> + * {@link KeyStore}. If the file does not exist and should not be created, >> + * it returns an empty but initialized KeyStore >> + * >> + * @param file the file to load information from >> + * @param password the password to unlock the KeyStore file. >> + * @return a KeyStore containing data from the file >> + */ >> + private static final KeyStore createKeyStoreFromFile(File file, boolean createIfNotFound, >> + String password) throws IOException, KeyStoreException, NoSuchAlgorithmException, >> + CertificateException { >> + FileInputStream fis = null; >> + KeyStore ks = null; >> + >> + try { >> + if (createIfNotFound&& !file.exists()) { >> + File parent = file.getParentFile(); >> + if (!parent.isDirectory()&& !parent.mkdirs()) { > According to mkdirs() some of the parent directories may get created. > Maybe clean up if attempt failed. The problem is that we dont know which directories were created. We could keep track of all the parent directories which did not exist and try deleting them, but IMHO the cleanup is unnecessary. >> + throw new IOException("unable to create " + parent); >> + } >> + ks = KeyStore.getInstance(KEYSTORE_TYPE); >> + ks.load(null, password.toCharArray()); >> + FileOutputStream fos = new FileOutputStream(file); >> + ks.store(fos, password.toCharArray()); >> + fos.close(); >> + } >> + >> + // TODO catch exception when password is incorrect and prompt user >> + >> + if (file.exists()) { >> + fis = new FileInputStream(file); >> + ks = KeyStore.getInstance(KEYSTORE_TYPE); >> + ks.load(fis, password.toCharArray()); >> + } else { >> + ks = KeyStore.getInstance(KEYSTORE_TYPE); >> + ks.load(null, password.toCharArray()); >> + } >> + } finally { >> + if (fis != null) { >> + fis.close(); >> + } >> + } >> + >> + return ks; >> + } >> + >> +} >> diff -r 2405cef22921 netx/net/sourceforge/jnlp/security/viewer/CertificatePane.java >> --- a/netx/net/sourceforge/jnlp/security/viewer/CertificatePane.java Wed Nov 03 23:06:23 2010 +0000 >> +++ b/netx/net/sourceforge/jnlp/security/viewer/CertificatePane.java Thu Nov 04 15:57:40 2010 -0400 >> @@ -44,93 +44,153 @@ >> import java.awt.event.ActionListener; >> import java.awt.event.KeyEvent; >> import java.io.FileOutputStream; >> +import java.io.OutputStream; >> import java.io.PrintStream; >> import java.security.KeyStore; >> import java.security.cert.Certificate; >> import java.security.cert.X509Certificate; >> import java.util.ArrayList; >> import java.util.Enumeration; >> +import java.util.List; >> >> import javax.swing.BorderFactory; >> import javax.swing.JButton; >> +import javax.swing.JComboBox; >> import javax.swing.JComponent; >> import javax.swing.JDialog; >> import javax.swing.JFileChooser; >> +import javax.swing.JLabel; >> import javax.swing.JOptionPane; >> import javax.swing.JPanel; >> import javax.swing.JScrollPane; >> import javax.swing.JTabbedPane; >> import javax.swing.JTable; >> +import javax.swing.event.ChangeEvent; >> +import javax.swing.event.ChangeListener; >> import javax.swing.table.DefaultTableModel; >> >> +import net.sourceforge.jnlp.security.KeyStores; >> import net.sourceforge.jnlp.security.SecurityUtil; >> import net.sourceforge.jnlp.security.SecurityWarningDialog; >> +import net.sourceforge.jnlp.security.KeyStores.Level; >> import net.sourceforge.jnlp.tools.KeyTool; >> >> public class CertificatePane extends JPanel { >> >> /** >> - * The certificates stored in the user's trusted.certs file. >> + * The certificates stored in the certificates file. >> */ >> private ArrayList certs = null; >> >> + private static final Dimension TABLE_DIMENSION = new Dimension(500,200); >> + >> /** >> * "Issued To" and "Issued By" string pairs for certs. >> */ >> private String[][] issuedToAndBy = null; >> private final String[] columnNames = { "Issued To", "Issued By" }; >> >> - private JTable table; >> + private final CertificateType[] certificateTypes = new CertificateType[] { >> + new CertificateType(KeyStores.Type.CA_CERTS), >> + new CertificateType(KeyStores.Type.JSSE_CA_CERTS), >> + new CertificateType(KeyStores.Type.CERTS), >> + new CertificateType(KeyStores.Type.JSSE_CERTS), >> + }; >> + >> + JTabbedPane tabbedPane; >> + private final JTable userTable; >> + private final JTable systemTable; >> + private JComboBox certificateTypeCombo; >> + private KeyStores.Type currentKeyStoreType; >> + private KeyStores.Level currentKeyStoreLevel; >> + >> + /** JComponents that should be disbled for system store */ >> + private final List disableForSystem; >> >> private JDialog parent; >> - >> private JComponent defaultFocusComponent = null; >> >> /** >> - * The KeyStore associated with the user's trusted.certs file. >> + * The Current KeyStore. Only one table/tab is visible for interaction to >> + * the user. This KeyStore corresponds to that. >> */ >> private KeyStore keyStore = null; >> >> public CertificatePane(JDialog parent) { >> super(); >> this.parent = parent; >> - initializeKeyStore(); >> + >> + userTable = new JTable(null); >> + systemTable = new JTable(null); >> + disableForSystem = new ArrayList(); >> + >> addComponents(); >> + >> + currentKeyStoreType = ((CertificateType)(certificateTypeCombo.getSelectedItem())).getType(); >> + if (tabbedPane.getSelectedIndex() == 0) { >> + currentKeyStoreLevel = Level.USER; >> + } else { >> + currentKeyStoreLevel = Level.SYSTEM; >> + } >> + >> + repopulateTables(); >> } >> >> /** >> * Reads the user's trusted.cacerts keystore. >> */ >> private void initializeKeyStore() { >> - try { >> - keyStore = SecurityUtil.getUserKeyStore(); >> - } catch (Exception e) { >> - // TODO Auto-generated catch block >> - e.printStackTrace(); >> - } >> + try { >> + keyStore = KeyStores.getKeyStore(currentKeyStoreLevel, currentKeyStoreType); >> + } catch (Exception e) { >> + e.printStackTrace(); >> + } >> } >> >> //create the GUI here. >> protected void addComponents() { >> - readKeyStore(); >> >> JPanel main = new JPanel(new BorderLayout()); >> >> + JPanel certificateTypePanel = new JPanel(new BorderLayout()); >> + certificateTypePanel.setBorder(BorderFactory.createEmptyBorder(5,5,5,5)); >> + >> + JLabel certificateTypeLabel = new JLabel("Certificate Type:"); >> + >> + certificateTypeCombo = new JComboBox(certificateTypes); >> + certificateTypeCombo.addActionListener(new CertificateTypeListener()); >> + >> + certificateTypePanel.add(certificateTypeLabel, BorderLayout.LINE_START); >> + certificateTypePanel.add(certificateTypeCombo, BorderLayout.CENTER); >> + >> JPanel tablePanel = new JPanel(new BorderLayout()); >> >> - //Table >> - DefaultTableModel tableModel >> + // User Table >> + DefaultTableModel userTableModel >> = new DefaultTableModel(issuedToAndBy, columnNames); >> - table = new JTable(tableModel); >> - table.getTableHeader().setReorderingAllowed(false); >> - table.setFillsViewportHeight(true); >> - JScrollPane tablePane = new JScrollPane(table); >> - tablePane.setPreferredSize(new Dimension(500,200)); >> - tablePane.setSize(new Dimension(500,200)); >> - tablePane.setBorder(BorderFactory.createEmptyBorder(10,10,10,10)); >> + userTable.setModel(userTableModel); >> + userTable.getTableHeader().setReorderingAllowed(false); >> + userTable.setFillsViewportHeight(true); >> + JScrollPane userTablePane = new JScrollPane(userTable); >> + userTablePane.setPreferredSize(TABLE_DIMENSION); >> + userTablePane.setSize(TABLE_DIMENSION); >> + userTablePane.setBorder(BorderFactory.createEmptyBorder(10,10,10,10)); >> >> - JTabbedPane tabbedPane = new JTabbedPane(); >> - tabbedPane.addTab("User", tablePane); >> + // System Table >> + DefaultTableModel systemTableModel = new DefaultTableModel(issuedToAndBy, columnNames); >> + systemTable.setModel(systemTableModel); >> + systemTable.getTableHeader().setReorderingAllowed(false); >> + systemTable.setFillsViewportHeight(true); >> + JScrollPane systemTablePane = new JScrollPane(systemTable); >> + systemTablePane.setPreferredSize(TABLE_DIMENSION); >> + systemTablePane.setSize(TABLE_DIMENSION); >> + systemTablePane.setBorder(BorderFactory.createEmptyBorder(10,10,10,10)); >> + >> + tabbedPane = new JTabbedPane(); >> + tabbedPane.addTab("User", userTablePane); >> + tabbedPane.addTab("System", systemTablePane); >> + tabbedPane.addChangeListener(new TabChangeListener()); >> + >> JPanel buttonPanel = new JPanel(new FlowLayout()); >> >> String[] buttonNames = {"Import", "Export", "Remove", "Details"}; >> @@ -156,6 +216,10 @@ >> button.setMnemonic(buttonMnemonics[i]); >> button.addActionListener(listeners[i]); >> button.setSize(maxWidth, button.getSize().height); >> + // import and remove buttons >> + if (i == 0 || i == 2) { >> + disableForSystem.add(button); >> + } >> buttonPanel.add(button); >> } >> >> @@ -169,6 +233,7 @@ >> defaultFocusComponent = closeButton; >> closePanel.add(closeButton, BorderLayout.EAST); >> >> + main.add(certificateTypePanel, BorderLayout.NORTH); >> main.add(tablePanel, BorderLayout.CENTER); >> main.add(closePanel, BorderLayout.SOUTH); >> >> @@ -204,6 +269,7 @@ >> } >> } catch (Exception e) { >> //TODO >> + e.printStackTrace(); >> } >> } >> >> @@ -211,14 +277,16 @@ >> * Re-reads the certs file and repopulates the JTable. This is typically >> * called after a certificate was deleted from the keystore. >> */ >> - private void repopulateTable() { >> + private void repopulateTables() { >> initializeKeyStore(); >> readKeyStore(); >> DefaultTableModel tableModel >> = new DefaultTableModel(issuedToAndBy, columnNames); >> >> - table.setModel(tableModel); >> - repaint(); >> + userTable.setModel(tableModel); >> + >> + tableModel = new DefaultTableModel(issuedToAndBy, columnNames); >> + systemTable.setModel(tableModel); >> } >> >> public void focusOnDefaultButton() { >> @@ -227,6 +295,61 @@ >> } >> } >> >> + /** Allows storing KeyStores.Types in a JComponent */ >> + private class CertificateType { >> + private final KeyStores.Type type; >> + >> + public CertificateType(KeyStores.Type type) { >> + this.type = type; >> + } >> + >> + public KeyStores.Type getType() { >> + return type; >> + } >> + >> + public String toString() { >> + return KeyStores.toTranslatableString(null, type); >> + } >> + } >> + >> + /** Invoked when a user selects a different certificate type */ >> + private class CertificateTypeListener implements ActionListener { >> + @Override >> + public void actionPerformed(ActionEvent e) { >> + JComboBox source = (JComboBox) e.getSource(); >> + CertificateType type = (CertificateType) source.getSelectedItem(); >> + currentKeyStoreType = type.getType(); >> + repopulateTables(); >> + } >> + } >> + >> + /** >> + * Invoked when a user selects a different tab (switches from user to system >> + * or vice versa). Changes the currentKeyStore Enables or disables buttons. >> + */ >> + private class TabChangeListener implements ChangeListener { >> + @Override >> + public void stateChanged(ChangeEvent e) { >> + JTabbedPane source = (JTabbedPane) e.getSource(); >> + switch (source.getSelectedIndex()) { >> + case 0: >> + currentKeyStoreLevel = Level.USER; >> + for (JComponent component : disableForSystem) { >> + component.setEnabled(true); >> + } >> + break; >> + case 1: >> + currentKeyStoreLevel = Level.SYSTEM; >> + for (JComponent component : disableForSystem) { >> + component.setEnabled(false); >> + } >> + break; >> + } >> + repopulateTables(); >> + >> + } >> + } >> + >> private class ImportButtonListener implements ActionListener { >> public void actionPerformed(ActionEvent e) { >> >> @@ -235,8 +358,12 @@ >> if(returnVal == JFileChooser.APPROVE_OPTION) { >> try { >> KeyTool kt = new KeyTool(); >> - kt.importCert(chooser.getSelectedFile()); >> - repopulateTable(); >> + KeyStore ks = keyStore; >> + kt.addToKeyStore(chooser.getSelectedFile(), ks); >> + OutputStream os = new FileOutputStream( >> + KeyStores.getKeyStoreLocation(currentKeyStoreLevel, currentKeyStoreType)); >> + ks.store(os, KeyStores.getPassword()); >> + repopulateTables(); >> } catch (Exception ex) { >> // TODO: handle exception >> ex.printStackTrace(); >> @@ -247,6 +374,14 @@ >> >> private class ExportButtonListener implements ActionListener { >> public void actionPerformed(ActionEvent e) { >> + >> + JTable table = null; >> + if (currentKeyStoreLevel == Level.USER) { >> + table = userTable; >> + } else { >> + table = systemTable; >> + } >> + >> //For now, let's just export in -rfc mode as keytool does. >> //we'll write to a file the exported certificate. >> >> @@ -263,7 +398,7 @@ >> Certificate c = keyStore.getCertificate(alias); >> PrintStream ps = new PrintStream(chooser.getSelectedFile().getAbsolutePath()); >> KeyTool.dumpCert(c, ps); >> - repopulateTable(); >> + repopulateTables(); >> } >> } >> } >> @@ -281,6 +416,12 @@ >> */ >> public void actionPerformed(ActionEvent e) { >> >> + JTable table = null; >> + if (currentKeyStoreLevel == Level.USER) { >> + table = userTable; >> + } else { >> + table = systemTable; >> + } >> try { >> int selectedRow = table.getSelectedRow(); >> >> @@ -295,12 +436,12 @@ >> if (i == 0) { >> keyStore.deleteEntry(alias); >> FileOutputStream fos = new FileOutputStream( >> - SecurityUtil.getTrustedCertsFilename()); >> - keyStore.store(fos, SecurityUtil.getTrustedCertsPassword()); >> + KeyStores.getKeyStoreLocation(currentKeyStoreLevel, currentKeyStoreType)); >> + keyStore.store(fos, KeyStores.getPassword()); >> fos.close(); >> } >> } >> - repopulateTable(); >> + repopulateTables(); >> } >> } catch (Exception ex) { >> // TODO >> @@ -317,6 +458,13 @@ >> */ >> public void actionPerformed(ActionEvent e) { >> >> + JTable table = null; >> + if (currentKeyStoreLevel == Level.USER) { >> + table = userTable; >> + } else { >> + table = systemTable; >> + } >> + >> int selectedRow = table.getSelectedRow(); >> if (selectedRow != -1&& selectedRow>= 0) { >> X509Certificate c = certs.get(selectedRow); >> diff -r 2405cef22921 netx/net/sourceforge/jnlp/security/viewer/CertificateViewer.java >> --- a/netx/net/sourceforge/jnlp/security/viewer/CertificateViewer.java Wed Nov 03 23:06:23 2010 +0000 >> +++ b/netx/net/sourceforge/jnlp/security/viewer/CertificateViewer.java Thu Nov 04 15:57:40 2010 -0400 >> @@ -48,6 +48,8 @@ >> import javax.swing.JDialog; >> import javax.swing.UIManager; >> >> +import net.sourceforge.jnlp.runtime.JNLPRuntime; >> + >> public class CertificateViewer extends JDialog { >> >> private boolean initialized = false; >> @@ -97,6 +99,7 @@ >> >> >> public static void showCertificateViewer() throws Exception { >> + JNLPRuntime.initialize(true); >> setSystemLookAndFeel(); >> >> CertificateViewer cv = new CertificateViewer(); >> diff -r 2405cef22921 netx/net/sourceforge/jnlp/tools/KeyTool.java >> --- a/netx/net/sourceforge/jnlp/tools/KeyTool.java Wed Nov 03 23:06:23 2010 +0000 >> +++ b/netx/net/sourceforge/jnlp/tools/KeyTool.java Thu Nov 04 15:57:40 2010 -0400 >> @@ -32,7 +32,9 @@ >> import java.io.IOException; >> import java.io.InputStream; >> import java.io.PrintStream; >> +import java.math.BigInteger; >> import java.security.KeyStore; >> +import java.security.KeyStoreException; >> import java.security.MessageDigest; >> import java.security.PublicKey; >> import java.security.cert.Certificate; >> @@ -117,6 +119,47 @@ >> return importCert((Certificate)cert); >> } >> >> + /** >> + * Adds the X509Certficate in the file to the KeyStore >> + */ >> + public final void addToKeyStore(File file, KeyStore ks) throws CertificateException, >> + IOException, KeyStoreException { >> + BufferedInputStream bis = new BufferedInputStream(new FileInputStream(file)); >> + CertificateFactory cf = CertificateFactory.getInstance("X509"); >> + X509Certificate cert = null; >> + >> + try { >> + cert = (X509Certificate) cf.generateCertificate(bis); >> + } catch (ClassCastException cce) { >> + throw new CertificateException("Input file is not an X509 Certificate", cce); >> + } >> + >> + addToKeyStore(cert, ks); >> + >> + } >> + >> + /** >> + * Adds an X509Certificate to the KeyStore >> + */ >> + public final void addToKeyStore(X509Certificate cert, KeyStore ks) throws KeyStoreException { >> + String alias = null; >> + Random random = new Random(); >> + alias = ks.getCertificateAlias(cert); >> + // already in keystore; done >> + if (alias != null) { >> + return; >> + } >> + >> + boolean aliasFound = false; >> + do { >> + alias = new BigInteger(20, random).toString(); >> + if (ks.getCertificate(alias) == null) { >> + aliasFound = true; >> + } >> + } while (!aliasFound); >> + ks.setCertificateEntry(alias, cert); > aliasFound is a bit confusing for name. > > this can be changed to: > > do{ > alias = new BigInteger(20, random).toString(); > } while (ks.getCertificate(alias) != null); > > to avoid using aliasFound. > Fixed. >> + } >> + >> /** >> * Adds a trusted certificate to the user's keystore. >> * @return true if the add was successful, false otherwise. > Everything else seems okay to me. > Thanks for reviewing the patch. Ok to commit? Thanks, Omair From dbhole at redhat.com Mon Nov 8 12:57:58 2010 From: dbhole at redhat.com (Deepak Bhole) Date: Mon, 8 Nov 2010 15:57:58 -0500 Subject: [icedtea-web] RFC: integrate multiple KeyStore support into CertificateViewer In-Reply-To: <4CD85F31.2020209@redhat.com> References: <4CD31450.7060606@redhat.com> <4CD85A4B.1000006@redhat.com> <4CD85F31.2020209@redhat.com> Message-ID: <20101108205757.GB4255@redhat.com> * Omair Majid [2010-11-08 15:36]: > Hi Andrew, > > On 11/08/2010 03:15 PM, Andrew Su wrote: > >Hi, > > > >On 11/04/2010 04:15 PM, Omair Majid wrote: > >>Hi, > >> > >>The attached patch starts integrating some of the security certificate > >>configuration into Netx. > >> > >>It adds a new class KeyStores that is used to access the different > >>types of KeyStore that Netx supports - per user and per system > >>variants of trusted CA KeyStore, trusted certificate store, JSSE CA > >>store, and JSSE certificates store. > >> > >>It also fixes up the certificate viewer (javaws -viewer) to use these > >>multiple certificate stores. > >> > >>ChangeLog > >>2010-11-04 Omair Majid > >> > >>* netx/net/sourceforge/jnlp/runtime/DeploymentConfiguration.java: > >>Add KEY_USER_TRUSTED_CA_CERTS, KEY_USER_TRUSTED_JSSE_CA_CERTS, > >>KEY_USER_TRUSTED_CERTS, KEY_USER_TRUSTED_JSSE_CERTS, > >>KEY_USER_TRUSTED_CLIENT_CERTS, KEY_SYSTEM_TRUSTED_CA_CERTS, > >>KEY_SYSTEM_TRUSTED_JSSE_CA_CERTS, KEY_SYSTEM_TRUSTED_CERTS, > >>KEY_SYSTEM_TRUSTED_JSSE_CERTS, KEY_SYSTEM_TRUSTED_CLIENT_CERTS > >>(loadDefaultProperties): Use the defined constants. > >>* netx/net/sourceforge/jnlp/security/KeyStores.java: New class. > >>(getPassword): New method. Return the default password used for > >>KeyStores. > >>(getKeyStore(Level,Type)): New method. Returns the appropriate > >>KeyStore. > >>(getKeyStore(Level,Type,String)): Likewise. > >>(getCertKeyStores): New method. Return all the trusted certificate > >>KeyStores. > >>(getCAKeyStores): New method. Return all the trusted CA certificate > >>KeyStores. > >>(getKeyStoreLocation): New method. Return the location of the > >>appropriate KeyStore. > >>(toTranslatableString): New method. Return a string that can be > >>used to create a human-readable name for the KeyStore. > >>(toDisplayableString): New method. Return a human-readable name > >>for the KeyStore. > >>(createKeyStoreFromFile): New method. Creates a new KeyStore object, > >>initializing it from the given file if possible. > >>* netx/net/sourceforge/jnlp/security/viewer/CertificatePane.java > >>(CertificatePane): Create two JTables. Populate the tables when > >>done creating the user interface. > >>(initializeKeyStore): Use the correct keystore. > >>(addComponents): Do not read KeyStore. Create more interface > >>elements to show the new possible KeyStores. Mark some buttons to > >>be disabled when needed. > >>(repopulateTable): Renamed to... > >>(repopulateTables): New method. Read KeyStore and use the contents > >>to create the user and system tables. > >>(CertificateType): New class. > >>(CertificateTypeListener): New class. Listens to JComboBox change > >>events. > >>(TabChangeListener): New class. Listens to new tab selections. > >>(ImportButtonListener): Import certificates to the appropriate > >>KeyStore. > >>(ExportButtonListener): Find the certificate from the right table. > >>(RemoveButtonListener): Find the certificate from the right table > >>and right the KeyStore. > >>(DetailsButtonListener): Find the certificate from the right table. > >>* netx/net/sourceforge/jnlp/security/viewer/CertificateViewer.java > >>(showCertficaiteViewer): Initialize the JNLPRuntime so the > >>configuration gets loaded. > >>* netx/net/sourceforge/jnlp/tools/KeyTool.java > >>(addToKeyStore(File,KeyStore)): New method. Adds certificate from > >>the file to the KeyStore. > >>(addToKeyStore(X509Certificate,KeyStore)): New method. Adds a > >>certificate to a KeyStore. > >> > >> > >>Any thoughts or comments? > >> > >>Thanks, > >>Omair > >>icedtea-web-integrate-configuration-security-files-05.patch > >> > >> > >>diff -r 2405cef22921 netx/net/sourceforge/jnlp/runtime/DeploymentConfiguration.java > >>--- a/netx/net/sourceforge/jnlp/runtime/DeploymentConfiguration.java Wed Nov 03 23:06:23 2010 +0000 > >>+++ b/netx/net/sourceforge/jnlp/runtime/DeploymentConfiguration.java Thu Nov 04 15:57:40 2010 -0400 > >>@@ -142,6 +142,18 @@ > >> */ > >> public static final String KEY_USER_NETX_RUNNING_FILE = "deployment.user.runningfile"; > >> > >>+ public static final String KEY_USER_TRUSTED_CA_CERTS = "deployment.user.security.trusted.cacerts"; > >>+ public static final String KEY_USER_TRUSTED_JSSE_CA_CERTS = "deployment.user.security.trusted.jssecacerts"; > >>+ public static final String KEY_USER_TRUSTED_CERTS = "deployment.user.security.trusted.certs"; > >>+ public static final String KEY_USER_TRUSTED_JSSE_CERTS = "deployment.user.security.trusted.jssecerts"; > >>+ public static final String KEY_USER_TRUSTED_CLIENT_CERTS = "deployment.user.security.trusted.clientauthcerts"; > >>+ > >>+ public static final String KEY_SYSTEM_TRUSTED_CA_CERTS = "deployment.system.security.cacerts"; > >>+ public static final String KEY_SYSTEM_TRUSTED_JSSE_CA_CERTS = "deployment.system.security.jssecacerts"; > >>+ public static final String KEY_SYSTEM_TRUSTED_CERTS = "deployment.system.security.trusted.certs"; > >>+ public static final String KEY_SYSTEM_TRUSTED_JSSE_CERTS = "deployment.system.security.trusted.jssecerts"; > >>+ public static final String KEY_SYSTEM_TRUSTED_CLIENT_CERTS = "deployment.system.security.trusted.clientautcerts"; > >>+ > >> public enum ConfigType { > >> System, User > >> } > >>@@ -315,17 +327,17 @@ > >> { KEY_USER_NETX_RUNNING_FILE, LOCKS_DIR + File.separator + "netx_running" }, > >> /* certificates and policy files */ > >> { "deployment.user.security.policy","file://" + USER_SECURITY + File.separator + "java.policy" }, > >>- { "deployment.user.security.trusted.cacerts", USER_SECURITY + File.separator + "trusted.cacerts" }, > >>- { "deployment.user.security.trusted.jssecacerts", USER_SECURITY + File.separator + "trusted.jssecacerts" }, > >>- { "deployment.user.security.trusted.certs", USER_SECURITY + File.separator + "trusted.certs" }, > >>- { "deployment.user.security.trusted.jssecerts", USER_SECURITY + File.separator + "trusted.jssecerts"}, > >>- { "deployment.user.security.trusted.clientauthcerts", USER_SECURITY + File.separator + "trusted.clientcerts" }, > >>+ { KEY_USER_TRUSTED_CA_CERTS, USER_SECURITY + File.separator + "trusted.cacerts" }, > >>+ { KEY_USER_TRUSTED_JSSE_CA_CERTS, USER_SECURITY + File.separator + "trusted.jssecacerts" }, > >>+ { KEY_USER_TRUSTED_CERTS, USER_SECURITY + File.separator + "trusted.certs" }, > >>+ { KEY_USER_TRUSTED_JSSE_CERTS, USER_SECURITY + File.separator + "trusted.jssecerts"}, > >>+ { KEY_USER_TRUSTED_CLIENT_CERTS, USER_SECURITY + File.separator + "trusted.clientcerts" }, > >> { "deployment.system.security.policy", null }, > >>- { "deployment.system.security.cacerts", SYSTEM_SECURITY + File.separator + "cacerts" }, > >>- { "deployment.system.security.jssecacerts", SYSTEM_SECURITY + File.separator + "jssecacerts" }, > >>- { "deployment.system.security.trusted.certs", SYSTEM_SECURITY + File.separator + "trusted.certs" }, > >>- { "deployment.system.security.trusted.jssecerts", SYSTEM_SECURITY + File.separator + "trusted.jssecerts" }, > >>- { "deployment.system.security.trusted.clientautcerts", SYSTEM_SECURITY + File.separator + "trusted.clientcerts" }, > >>+ { KEY_SYSTEM_TRUSTED_CA_CERTS , SYSTEM_SECURITY + File.separator + "cacerts" }, > >>+ { KEY_SYSTEM_TRUSTED_JSSE_CA_CERTS, SYSTEM_SECURITY + File.separator + "jssecacerts" }, > >>+ { KEY_SYSTEM_TRUSTED_CERTS, SYSTEM_SECURITY + File.separator + "trusted.certs" }, > >>+ { KEY_SYSTEM_TRUSTED_JSSE_CERTS, SYSTEM_SECURITY + File.separator + "trusted.jssecerts" }, > >>+ { KEY_SYSTEM_TRUSTED_CLIENT_CERTS, SYSTEM_SECURITY + File.separator + "trusted.clientcerts" }, > >> /* security access and control */ > >> { "deployment.security.askgrantdialog.show", String.valueOf(true) }, > >> { "deployment.security.askgrantdialog.notinca", String.valueOf(true) }, > >>diff -r 2405cef22921 netx/net/sourceforge/jnlp/security/KeyStores.java > >>--- /dev/null Thu Jan 01 00:00:00 1970 +0000 > >>+++ b/netx/net/sourceforge/jnlp/security/KeyStores.java Thu Nov 04 15:57:40 2010 -0400 > >>@@ -0,0 +1,300 @@ > >>+package net.sourceforge.jnlp.security; > >>+ > >>+import java.io.File; > >>+import java.io.FileInputStream; > >>+import java.io.FileOutputStream; > >>+import java.io.IOException; > >>+import java.security.KeyStore; > >>+import java.security.KeyStoreException; > >>+import java.security.NoSuchAlgorithmException; > >>+import java.security.cert.CertificateException; > >>+import java.util.ArrayList; > >>+import java.util.List; > >>+import java.util.StringTokenizer; > >>+ > >>+import net.sourceforge.jnlp.runtime.DeploymentConfiguration; > >>+import net.sourceforge.jnlp.runtime.JNLPRuntime; > >>+import net.sourceforge.jnlp.runtime.Translator; > >>+ > >>+/** > >>+ * TheKeyStores class allows easily accessing the various KeyStores > >>+ * used. > >>+ */ > >>+public final class KeyStores { > >>+ > >>+ /* this gets turned into user-readable strings, see toUserReadableString */ > >>+ > >>+ public enum Level { > >>+ USER, > >>+ SYSTEM, > >>+ } > >>+ > >>+ public enum Type { > >>+ CERTS, > >>+ JSSE_CERTS, > >>+ CA_CERTS, > >>+ JSSE_CA_CERTS, > >>+ CLIENT_CERTS, > >>+ } > >>+ > >>+ private static final String KEYSTORE_TYPE = "JKS"; > >>+ /** the default password used to protect the KeyStores */ > >>+ private static final String DEFAULT_PASSWORD = "changeit"; > >>+ > >>+ public static final char[] getPassword() { > >>+ return DEFAULT_PASSWORD.toCharArray(); > >>+ } > >>+ > >>+ /** > >>+ * Returns a KeyStore corresponding to the appropriate level level (user or > >>+ * system) and type. > >>+ * > >>+ * @param level whether the KeyStore desired is a user-level or system-level > >>+ * KeyStore > >>+ * @param type the type of KeyStore desired > >>+ * @return a KeyStore containing certificates from the appropriate > >>+ */ > >>+ public static final KeyStore getKeyStore(Level level, Type type) { > >>+ boolean create = false; > >>+ if (level == Level.USER) { > >>+ create = true; > >>+ } else { > >>+ create = false; > >>+ } > >>+ return getKeyStore(level, type, create); > >>+ } > >>+ > >>+ /** > >>+ * Returns a KeyStore corresponding to the appropriate level level (user or > >>+ * system) and type. > >>+ * > >>+ * @param level whether the KeyStore desired is a user-level or system-level > >>+ * KeyStore > >>+ * @param type the type of KeyStore desired > >>+ * @return a KeyStore containing certificates from the appropriate > >>+ */ > >>+ public static final KeyStore getKeyStore(Level level, Type type, boolean create) { > >>+ String location = getKeyStoreLocation(level, type); > >>+ KeyStore ks = null; > >>+ try { > >>+ ks = createKeyStoreFromFile(new File(location), create, DEFAULT_PASSWORD); > >>+ } catch (Exception e) { > >>+ e.printStackTrace(); > >>+ } > >>+ return ks; > >>+ } > >>+ > >>+ /** > >>+ * Returns an array of KeyStore that contain certificates that are trusted. > >>+ * The KeyStores contain certificates from different sources. > >>+ * > >>+ * @return an array of KeyStore containing trusted Certificates > >>+ */ > >>+ public static final KeyStore[] getCertKeyStores() { > >>+ List result = new ArrayList(10); > >>+ KeyStore ks = null; > >>+ > >>+ /* System-level JSSE certificates */ > >>+ ks = getKeyStore(Level.SYSTEM, Type.JSSE_CERTS); > >>+ if (ks != null) { > >>+ result.add(ks); > >>+ } > >>+ /* System-level certificates */ > >>+ ks = getKeyStore(Level.SYSTEM, Type.CERTS); > >>+ if (ks != null) { > >>+ result.add(ks); > >>+ } > >>+ /* User-level JSSE certificates */ > >>+ ks = getKeyStore(Level.USER, Type.JSSE_CERTS); > >>+ if (ks != null) { > >>+ result.add(ks); > >>+ } > >>+ /* User-level certificates */ > >>+ ks = getKeyStore(Level.USER, Type.CERTS); > >>+ if (ks != null) { > >>+ result.add(ks); > >>+ } > >>+ > >>+ return result.toArray(new KeyStore[result.size()]); > >>+ } > >>+ > >>+ /** > >>+ * Returns an array of KeyStore that contain trusted CA certificates. > >>+ * > >>+ * @return an array of KeyStore containing trusted CA certificates > >>+ */ > >>+ public static final KeyStore[] getCAKeyStores() { > >>+ List result = new ArrayList(10); > >>+ KeyStore ks = null; > >>+ > >>+ /* System-level JSSE CA certificates */ > >>+ ks = getKeyStore(Level.SYSTEM, Type.JSSE_CA_CERTS); > >>+ if (ks != null) { > >>+ result.add(ks); > >>+ } > >>+ /* System-level CA certificates */ > >>+ ks = getKeyStore(Level.SYSTEM, Type.CA_CERTS); > >>+ if (ks != null) { > >>+ result.add(ks); > >>+ } > >>+ /* User-level JSSE CA certificates */ > >>+ ks = getKeyStore(Level.USER, Type.JSSE_CA_CERTS); > >>+ if (ks != null) { > >>+ result.add(ks); > >>+ } > >>+ /* User-level CA certificates */ > >>+ ks = getKeyStore(Level.USER, Type.CA_CERTS); > >>+ if (ks != null) { > >>+ result.add(ks); > >>+ } > >>+ > >>+ return result.toArray(new KeyStore[result.size()]); > >>+ } > >>+ > >>+ /** > >>+ * Returns the location of a KeyStore corresponding to the given level and type. > >>+ * @param level > >>+ * @param type > >>+ * @return > >>+ */ > >>+ public static final String getKeyStoreLocation(Level level, Type type) { > >>+ String configKey = null; > >>+ switch (level) { > >>+ case SYSTEM: > >>+ switch (type) { > >>+ case JSSE_CA_CERTS: > >>+ configKey = DeploymentConfiguration.KEY_SYSTEM_TRUSTED_JSSE_CA_CERTS; > >>+ break; > >>+ case CA_CERTS: > >>+ configKey = DeploymentConfiguration.KEY_SYSTEM_TRUSTED_CA_CERTS; > >>+ break; > >>+ case JSSE_CERTS: > >>+ configKey = DeploymentConfiguration.KEY_SYSTEM_TRUSTED_JSSE_CERTS; > >>+ break; > >>+ case CERTS: > >>+ configKey = DeploymentConfiguration.KEY_SYSTEM_TRUSTED_CERTS; > >>+ break; > >>+ case CLIENT_CERTS: > >>+ configKey = DeploymentConfiguration.KEY_SYSTEM_TRUSTED_CLIENT_CERTS; > >>+ break; > >>+ } > >>+ break; > >>+ case USER: > >>+ switch (type) { > >>+ case JSSE_CA_CERTS: > >>+ configKey = DeploymentConfiguration.KEY_USER_TRUSTED_JSSE_CA_CERTS; > >>+ break; > >>+ case CA_CERTS: > >>+ configKey = DeploymentConfiguration.KEY_USER_TRUSTED_CA_CERTS; > >>+ break; > >>+ case JSSE_CERTS: > >>+ configKey = DeploymentConfiguration.KEY_USER_TRUSTED_JSSE_CERTS; > >>+ break; > >>+ case CERTS: > >>+ configKey = DeploymentConfiguration.KEY_USER_TRUSTED_CERTS; > >>+ break; > >>+ case CLIENT_CERTS: > >>+ configKey = DeploymentConfiguration.KEY_SYSTEM_TRUSTED_CLIENT_CERTS; > >>+ break; > >>+ } > >>+ break; > >>+ } > >>+ > >>+ if (configKey == null) { > >>+ throw new RuntimeException("Unspported"); > >>+ } > >>+ > >>+ return JNLPRuntime.getConfiguration().getProperty(configKey); > >>+ } > >>+ > >>+ /** > >>+ * Returns a String that can be used as a translation key to create a > >>+ * user-visible representation of this KeyStore. Creates a string by > >>+ * concatenating a level and type, converting everything to Title Case and > >>+ * removing the _'s. (USER,CA_CERTS) becomes UserCaCerts. > >>+ * > >>+ * @param level > >>+ * @param type > >>+ * @return > >>+ */ > >>+ public static final String toTranslatableString(Level level, Type type) { > >>+ StringBuilder response = new StringBuilder(); > >>+ > >>+ if (level != null) { > >>+ String levelString = level.toString(); > >>+ response.append(levelString.substring(0, 1).toUpperCase()); > >>+ response.append(levelString.substring(1).toLowerCase()); > >>+ } > >>+ > >>+ if (type != null) { > >>+ String typeString = type.toString(); > >>+ StringTokenizer tokenizer = new StringTokenizer(typeString, "_"); > >>+ while (tokenizer.hasMoreTokens()) { > >>+ String token = tokenizer.nextToken(); > >>+ response.append(token.substring(0, 1).toUpperCase()); > >>+ response.append(token.substring(1).toLowerCase()); > >>+ } > >>+ } > >>+ > >>+ return response.toString(); > >>+ } > >>+ > >>+ /** > >>+ * Returns a human readable name for this KeyStore > >>+ * > >>+ * @param level the level of the KeyStore > >>+ * @param type the type of KeyStore > >>+ * @return a localized name for this KeyStore > >>+ */ > >>+ public static String toDisplayableString(Level level, Type type) { > >>+ return Translator.R(toTranslatableString(level, type)); > >>+ } > >>+ > >>+ /** > >>+ * Reads the file (using the password) and uses it to create a new > >>+ * {@link KeyStore}. If the file does not exist and should not be created, > >>+ * it returns an empty but initialized KeyStore > >>+ * > >>+ * @param file the file to load information from > >>+ * @param password the password to unlock the KeyStore file. > >>+ * @return a KeyStore containing data from the file > >>+ */ > >>+ private static final KeyStore createKeyStoreFromFile(File file, boolean createIfNotFound, > >>+ String password) throws IOException, KeyStoreException, NoSuchAlgorithmException, > >>+ CertificateException { > >>+ FileInputStream fis = null; > >>+ KeyStore ks = null; > >>+ > >>+ try { > >>+ if (createIfNotFound&& !file.exists()) { > >>+ File parent = file.getParentFile(); > >>+ if (!parent.isDirectory()&& !parent.mkdirs()) { > >According to mkdirs() some of the parent directories may get created. > >Maybe clean up if attempt failed. > > The problem is that we dont know which directories were created. We > could keep track of all the parent directories which did not exist > and try deleting them, but IMHO the cleanup is unnecessary. > > >>+ throw new IOException("unable to create " + parent); > >>+ } > >>+ ks = KeyStore.getInstance(KEYSTORE_TYPE); > >>+ ks.load(null, password.toCharArray()); > >>+ FileOutputStream fos = new FileOutputStream(file); > >>+ ks.store(fos, password.toCharArray()); > >>+ fos.close(); > >>+ } > >>+ > >>+ // TODO catch exception when password is incorrect and prompt user > >>+ > >>+ if (file.exists()) { > >>+ fis = new FileInputStream(file); > >>+ ks = KeyStore.getInstance(KEYSTORE_TYPE); > >>+ ks.load(fis, password.toCharArray()); > >>+ } else { > >>+ ks = KeyStore.getInstance(KEYSTORE_TYPE); > >>+ ks.load(null, password.toCharArray()); > >>+ } > >>+ } finally { > >>+ if (fis != null) { > >>+ fis.close(); > >>+ } > >>+ } > >>+ > >>+ return ks; > >>+ } > >>+ > >>+} > >>diff -r 2405cef22921 netx/net/sourceforge/jnlp/security/viewer/CertificatePane.java > >>--- a/netx/net/sourceforge/jnlp/security/viewer/CertificatePane.java Wed Nov 03 23:06:23 2010 +0000 > >>+++ b/netx/net/sourceforge/jnlp/security/viewer/CertificatePane.java Thu Nov 04 15:57:40 2010 -0400 > >>@@ -44,93 +44,153 @@ > >> import java.awt.event.ActionListener; > >> import java.awt.event.KeyEvent; > >> import java.io.FileOutputStream; > >>+import java.io.OutputStream; > >> import java.io.PrintStream; > >> import java.security.KeyStore; > >> import java.security.cert.Certificate; > >> import java.security.cert.X509Certificate; > >> import java.util.ArrayList; > >> import java.util.Enumeration; > >>+import java.util.List; > >> > >> import javax.swing.BorderFactory; > >> import javax.swing.JButton; > >>+import javax.swing.JComboBox; > >> import javax.swing.JComponent; > >> import javax.swing.JDialog; > >> import javax.swing.JFileChooser; > >>+import javax.swing.JLabel; > >> import javax.swing.JOptionPane; > >> import javax.swing.JPanel; > >> import javax.swing.JScrollPane; > >> import javax.swing.JTabbedPane; > >> import javax.swing.JTable; > >>+import javax.swing.event.ChangeEvent; > >>+import javax.swing.event.ChangeListener; > >> import javax.swing.table.DefaultTableModel; > >> > >>+import net.sourceforge.jnlp.security.KeyStores; > >> import net.sourceforge.jnlp.security.SecurityUtil; > >> import net.sourceforge.jnlp.security.SecurityWarningDialog; > >>+import net.sourceforge.jnlp.security.KeyStores.Level; > >> import net.sourceforge.jnlp.tools.KeyTool; > >> > >> public class CertificatePane extends JPanel { > >> > >> /** > >>- * The certificates stored in the user's trusted.certs file. > >>+ * The certificates stored in the certificates file. > >> */ > >> private ArrayList certs = null; > >> > >>+ private static final Dimension TABLE_DIMENSION = new Dimension(500,200); > >>+ > >> /** > >> * "Issued To" and "Issued By" string pairs for certs. > >> */ > >> private String[][] issuedToAndBy = null; > >> private final String[] columnNames = { "Issued To", "Issued By" }; > >> > >>- private JTable table; > >>+ private final CertificateType[] certificateTypes = new CertificateType[] { > >>+ new CertificateType(KeyStores.Type.CA_CERTS), > >>+ new CertificateType(KeyStores.Type.JSSE_CA_CERTS), > >>+ new CertificateType(KeyStores.Type.CERTS), > >>+ new CertificateType(KeyStores.Type.JSSE_CERTS), > >>+ }; > >>+ > >>+ JTabbedPane tabbedPane; > >>+ private final JTable userTable; > >>+ private final JTable systemTable; > >>+ private JComboBox certificateTypeCombo; > >>+ private KeyStores.Type currentKeyStoreType; > >>+ private KeyStores.Level currentKeyStoreLevel; > >>+ > >>+ /** JComponents that should be disbled for system store */ > >>+ private final List disableForSystem; > >> > >> private JDialog parent; > >>- > >> private JComponent defaultFocusComponent = null; > >> > >> /** > >>- * The KeyStore associated with the user's trusted.certs file. > >>+ * The Current KeyStore. Only one table/tab is visible for interaction to > >>+ * the user. This KeyStore corresponds to that. > >> */ > >> private KeyStore keyStore = null; > >> > >> public CertificatePane(JDialog parent) { > >> super(); > >> this.parent = parent; > >>- initializeKeyStore(); > >>+ > >>+ userTable = new JTable(null); > >>+ systemTable = new JTable(null); > >>+ disableForSystem = new ArrayList(); > >>+ > >> addComponents(); > >>+ > >>+ currentKeyStoreType = ((CertificateType)(certificateTypeCombo.getSelectedItem())).getType(); > >>+ if (tabbedPane.getSelectedIndex() == 0) { > >>+ currentKeyStoreLevel = Level.USER; > >>+ } else { > >>+ currentKeyStoreLevel = Level.SYSTEM; > >>+ } > >>+ > >>+ repopulateTables(); > >> } > >> > >> /** > >> * Reads the user's trusted.cacerts keystore. > >> */ > >> private void initializeKeyStore() { > >>- try { > >>- keyStore = SecurityUtil.getUserKeyStore(); > >>- } catch (Exception e) { > >>- // TODO Auto-generated catch block > >>- e.printStackTrace(); > >>- } > >>+ try { > >>+ keyStore = KeyStores.getKeyStore(currentKeyStoreLevel, currentKeyStoreType); > >>+ } catch (Exception e) { > >>+ e.printStackTrace(); > >>+ } > >> } > >> > >> //create the GUI here. > >> protected void addComponents() { > >>- readKeyStore(); > >> > >> JPanel main = new JPanel(new BorderLayout()); > >> > >>+ JPanel certificateTypePanel = new JPanel(new BorderLayout()); > >>+ certificateTypePanel.setBorder(BorderFactory.createEmptyBorder(5,5,5,5)); > >>+ > >>+ JLabel certificateTypeLabel = new JLabel("Certificate Type:"); > >>+ > >>+ certificateTypeCombo = new JComboBox(certificateTypes); > >>+ certificateTypeCombo.addActionListener(new CertificateTypeListener()); > >>+ > >>+ certificateTypePanel.add(certificateTypeLabel, BorderLayout.LINE_START); > >>+ certificateTypePanel.add(certificateTypeCombo, BorderLayout.CENTER); > >>+ > >> JPanel tablePanel = new JPanel(new BorderLayout()); > >> > >>- //Table > >>- DefaultTableModel tableModel > >>+ // User Table > >>+ DefaultTableModel userTableModel > >> = new DefaultTableModel(issuedToAndBy, columnNames); > >>- table = new JTable(tableModel); > >>- table.getTableHeader().setReorderingAllowed(false); > >>- table.setFillsViewportHeight(true); > >>- JScrollPane tablePane = new JScrollPane(table); > >>- tablePane.setPreferredSize(new Dimension(500,200)); > >>- tablePane.setSize(new Dimension(500,200)); > >>- tablePane.setBorder(BorderFactory.createEmptyBorder(10,10,10,10)); > >>+ userTable.setModel(userTableModel); > >>+ userTable.getTableHeader().setReorderingAllowed(false); > >>+ userTable.setFillsViewportHeight(true); > >>+ JScrollPane userTablePane = new JScrollPane(userTable); > >>+ userTablePane.setPreferredSize(TABLE_DIMENSION); > >>+ userTablePane.setSize(TABLE_DIMENSION); > >>+ userTablePane.setBorder(BorderFactory.createEmptyBorder(10,10,10,10)); > >> > >>- JTabbedPane tabbedPane = new JTabbedPane(); > >>- tabbedPane.addTab("User", tablePane); > >>+ // System Table > >>+ DefaultTableModel systemTableModel = new DefaultTableModel(issuedToAndBy, columnNames); > >>+ systemTable.setModel(systemTableModel); > >>+ systemTable.getTableHeader().setReorderingAllowed(false); > >>+ systemTable.setFillsViewportHeight(true); > >>+ JScrollPane systemTablePane = new JScrollPane(systemTable); > >>+ systemTablePane.setPreferredSize(TABLE_DIMENSION); > >>+ systemTablePane.setSize(TABLE_DIMENSION); > >>+ systemTablePane.setBorder(BorderFactory.createEmptyBorder(10,10,10,10)); > >>+ > >>+ tabbedPane = new JTabbedPane(); > >>+ tabbedPane.addTab("User", userTablePane); > >>+ tabbedPane.addTab("System", systemTablePane); > >>+ tabbedPane.addChangeListener(new TabChangeListener()); > >>+ > >> JPanel buttonPanel = new JPanel(new FlowLayout()); > >> > >> String[] buttonNames = {"Import", "Export", "Remove", "Details"}; > >>@@ -156,6 +216,10 @@ > >> button.setMnemonic(buttonMnemonics[i]); > >> button.addActionListener(listeners[i]); > >> button.setSize(maxWidth, button.getSize().height); > >>+ // import and remove buttons > >>+ if (i == 0 || i == 2) { > >>+ disableForSystem.add(button); > >>+ } > >> buttonPanel.add(button); > >> } > >> > >>@@ -169,6 +233,7 @@ > >> defaultFocusComponent = closeButton; > >> closePanel.add(closeButton, BorderLayout.EAST); > >> > >>+ main.add(certificateTypePanel, BorderLayout.NORTH); > >> main.add(tablePanel, BorderLayout.CENTER); > >> main.add(closePanel, BorderLayout.SOUTH); > >> > >>@@ -204,6 +269,7 @@ > >> } > >> } catch (Exception e) { > >> //TODO > >>+ e.printStackTrace(); > >> } > >> } > >> > >>@@ -211,14 +277,16 @@ > >> * Re-reads the certs file and repopulates the JTable. This is typically > >> * called after a certificate was deleted from the keystore. > >> */ > >>- private void repopulateTable() { > >>+ private void repopulateTables() { > >> initializeKeyStore(); > >> readKeyStore(); > >> DefaultTableModel tableModel > >> = new DefaultTableModel(issuedToAndBy, columnNames); > >> > >>- table.setModel(tableModel); > >>- repaint(); > >>+ userTable.setModel(tableModel); > >>+ > >>+ tableModel = new DefaultTableModel(issuedToAndBy, columnNames); > >>+ systemTable.setModel(tableModel); > >> } > >> > >> public void focusOnDefaultButton() { > >>@@ -227,6 +295,61 @@ > >> } > >> } > >> > >>+ /** Allows storing KeyStores.Types in a JComponent */ > >>+ private class CertificateType { > >>+ private final KeyStores.Type type; > >>+ > >>+ public CertificateType(KeyStores.Type type) { > >>+ this.type = type; > >>+ } > >>+ > >>+ public KeyStores.Type getType() { > >>+ return type; > >>+ } > >>+ > >>+ public String toString() { > >>+ return KeyStores.toTranslatableString(null, type); > >>+ } > >>+ } > >>+ > >>+ /** Invoked when a user selects a different certificate type */ > >>+ private class CertificateTypeListener implements ActionListener { > >>+ @Override > >>+ public void actionPerformed(ActionEvent e) { > >>+ JComboBox source = (JComboBox) e.getSource(); > >>+ CertificateType type = (CertificateType) source.getSelectedItem(); > >>+ currentKeyStoreType = type.getType(); > >>+ repopulateTables(); > >>+ } > >>+ } > >>+ > >>+ /** > >>+ * Invoked when a user selects a different tab (switches from user to system > >>+ * or vice versa). Changes the currentKeyStore Enables or disables buttons. > >>+ */ > >>+ private class TabChangeListener implements ChangeListener { > >>+ @Override > >>+ public void stateChanged(ChangeEvent e) { > >>+ JTabbedPane source = (JTabbedPane) e.getSource(); > >>+ switch (source.getSelectedIndex()) { > >>+ case 0: > >>+ currentKeyStoreLevel = Level.USER; > >>+ for (JComponent component : disableForSystem) { > >>+ component.setEnabled(true); > >>+ } > >>+ break; > >>+ case 1: > >>+ currentKeyStoreLevel = Level.SYSTEM; > >>+ for (JComponent component : disableForSystem) { > >>+ component.setEnabled(false); > >>+ } > >>+ break; > >>+ } > >>+ repopulateTables(); > >>+ > >>+ } > >>+ } > >>+ > >> private class ImportButtonListener implements ActionListener { > >> public void actionPerformed(ActionEvent e) { > >> > >>@@ -235,8 +358,12 @@ > >> if(returnVal == JFileChooser.APPROVE_OPTION) { > >> try { > >> KeyTool kt = new KeyTool(); > >>- kt.importCert(chooser.getSelectedFile()); > >>- repopulateTable(); > >>+ KeyStore ks = keyStore; > >>+ kt.addToKeyStore(chooser.getSelectedFile(), ks); > >>+ OutputStream os = new FileOutputStream( > >>+ KeyStores.getKeyStoreLocation(currentKeyStoreLevel, currentKeyStoreType)); > >>+ ks.store(os, KeyStores.getPassword()); > >>+ repopulateTables(); > >> } catch (Exception ex) { > >> // TODO: handle exception > >> ex.printStackTrace(); > >>@@ -247,6 +374,14 @@ > >> > >> private class ExportButtonListener implements ActionListener { > >> public void actionPerformed(ActionEvent e) { > >>+ > >>+ JTable table = null; > >>+ if (currentKeyStoreLevel == Level.USER) { > >>+ table = userTable; > >>+ } else { > >>+ table = systemTable; > >>+ } > >>+ > >> //For now, let's just export in -rfc mode as keytool does. > >> //we'll write to a file the exported certificate. > >> > >>@@ -263,7 +398,7 @@ > >> Certificate c = keyStore.getCertificate(alias); > >> PrintStream ps = new PrintStream(chooser.getSelectedFile().getAbsolutePath()); > >> KeyTool.dumpCert(c, ps); > >>- repopulateTable(); > >>+ repopulateTables(); > >> } > >> } > >> } > >>@@ -281,6 +416,12 @@ > >> */ > >> public void actionPerformed(ActionEvent e) { > >> > >>+ JTable table = null; > >>+ if (currentKeyStoreLevel == Level.USER) { > >>+ table = userTable; > >>+ } else { > >>+ table = systemTable; > >>+ } > >> try { > >> int selectedRow = table.getSelectedRow(); > >> > >>@@ -295,12 +436,12 @@ > >> if (i == 0) { > >> keyStore.deleteEntry(alias); > >> FileOutputStream fos = new FileOutputStream( > >>- SecurityUtil.getTrustedCertsFilename()); > >>- keyStore.store(fos, SecurityUtil.getTrustedCertsPassword()); > >>+ KeyStores.getKeyStoreLocation(currentKeyStoreLevel, currentKeyStoreType)); > >>+ keyStore.store(fos, KeyStores.getPassword()); > >> fos.close(); > >> } > >> } > >>- repopulateTable(); > >>+ repopulateTables(); > >> } > >> } catch (Exception ex) { > >> // TODO > >>@@ -317,6 +458,13 @@ > >> */ > >> public void actionPerformed(ActionEvent e) { > >> > >>+ JTable table = null; > >>+ if (currentKeyStoreLevel == Level.USER) { > >>+ table = userTable; > >>+ } else { > >>+ table = systemTable; > >>+ } > >>+ > >> int selectedRow = table.getSelectedRow(); > >> if (selectedRow != -1&& selectedRow>= 0) { > >> X509Certificate c = certs.get(selectedRow); > >>diff -r 2405cef22921 netx/net/sourceforge/jnlp/security/viewer/CertificateViewer.java > >>--- a/netx/net/sourceforge/jnlp/security/viewer/CertificateViewer.java Wed Nov 03 23:06:23 2010 +0000 > >>+++ b/netx/net/sourceforge/jnlp/security/viewer/CertificateViewer.java Thu Nov 04 15:57:40 2010 -0400 > >>@@ -48,6 +48,8 @@ > >> import javax.swing.JDialog; > >> import javax.swing.UIManager; > >> > >>+import net.sourceforge.jnlp.runtime.JNLPRuntime; > >>+ > >> public class CertificateViewer extends JDialog { > >> > >> private boolean initialized = false; > >>@@ -97,6 +99,7 @@ > >> > >> > >> public static void showCertificateViewer() throws Exception { > >>+ JNLPRuntime.initialize(true); > >> setSystemLookAndFeel(); > >> > >> CertificateViewer cv = new CertificateViewer(); > >>diff -r 2405cef22921 netx/net/sourceforge/jnlp/tools/KeyTool.java > >>--- a/netx/net/sourceforge/jnlp/tools/KeyTool.java Wed Nov 03 23:06:23 2010 +0000 > >>+++ b/netx/net/sourceforge/jnlp/tools/KeyTool.java Thu Nov 04 15:57:40 2010 -0400 > >>@@ -32,7 +32,9 @@ > >> import java.io.IOException; > >> import java.io.InputStream; > >> import java.io.PrintStream; > >>+import java.math.BigInteger; > >> import java.security.KeyStore; > >>+import java.security.KeyStoreException; > >> import java.security.MessageDigest; > >> import java.security.PublicKey; > >> import java.security.cert.Certificate; > >>@@ -117,6 +119,47 @@ > >> return importCert((Certificate)cert); > >> } > >> > >>+ /** > >>+ * Adds the X509Certficate in the file to the KeyStore > >>+ */ > >>+ public final void addToKeyStore(File file, KeyStore ks) throws CertificateException, > >>+ IOException, KeyStoreException { > >>+ BufferedInputStream bis = new BufferedInputStream(new FileInputStream(file)); > >>+ CertificateFactory cf = CertificateFactory.getInstance("X509"); > >>+ X509Certificate cert = null; > >>+ > >>+ try { > >>+ cert = (X509Certificate) cf.generateCertificate(bis); > >>+ } catch (ClassCastException cce) { > >>+ throw new CertificateException("Input file is not an X509 Certificate", cce); > >>+ } > >>+ > >>+ addToKeyStore(cert, ks); > >>+ > >>+ } > >>+ > >>+ /** > >>+ * Adds an X509Certificate to the KeyStore > >>+ */ > >>+ public final void addToKeyStore(X509Certificate cert, KeyStore ks) throws KeyStoreException { > >>+ String alias = null; > >>+ Random random = new Random(); > >>+ alias = ks.getCertificateAlias(cert); > >>+ // already in keystore; done > >>+ if (alias != null) { > >>+ return; > >>+ } > >>+ > >>+ boolean aliasFound = false; > >>+ do { > >>+ alias = new BigInteger(20, random).toString(); > >>+ if (ks.getCertificate(alias) == null) { > >>+ aliasFound = true; > >>+ } > >>+ } while (!aliasFound); > >>+ ks.setCertificateEntry(alias, cert); > >aliasFound is a bit confusing for name. > > > >this can be changed to: > > > >do{ > >alias = new BigInteger(20, random).toString(); > >} while (ks.getCertificate(alias) != null); > > > >to avoid using aliasFound. > > > > Fixed. > > >>+ } > >>+ > >> /** > >> * Adds a trusted certificate to the user's keystore. > >> * @return true if the add was successful, false otherwise. > >Everything else seems okay to me. > > > > Thanks for reviewing the patch. Ok to commit? > Speaking only for myself and not Andrew, OK from me for HEAD. Cheers, Deepak > Thanks, > Omair From omajid at redhat.com Mon Nov 8 13:15:48 2010 From: omajid at redhat.com (Omair Majid) Date: Mon, 08 Nov 2010 16:15:48 -0500 Subject: [icedtea-web] RFC: use an actual number as the JDK_UPDATE_VERSION for plugin Message-ID: <4CD86884.1090009@redhat.com> Hi, The IcedTea builds used to pass in a value for JDK_UPDATE_VERSION when building the plugin, which was left out when IcedTea-Web was created. This patch defines this variable and sets it to an arbitrary value. Without this patch, about:plugins in firefox shows that the plugin supports the mime type "application/x-java-applet;jpi-version=1.6.0_". This seems to cause issues with the deployJava.js script - the users get redirected to the Java download page. Adding any value after the _ is enough to make applets using deployJava.js work with the plugin. The following web page can be used as a reproducer: http://download.oracle.com/javase/tutorial/deployment/applet/examples/dist/applet_Draggable/AppletPage.html ChangeLog: 2010-11-08 Omair Majid * Makefile.am (JDKJDK_UPDATE_VERSION): Define variable. Any thoughts or comments? Thanks, Omair -------------- next part -------------- A non-text attachment was scrubbed... Name: icedtea-web-jdk-update-version.patch Type: text/x-patch Size: 400 bytes Desc: not available Url : http://mail.openjdk.java.net/pipermail/distro-pkg-dev/attachments/20101108/ca66fc18/icedtea-web-jdk-update-version.patch From dbhole at redhat.com Mon Nov 8 13:18:46 2010 From: dbhole at redhat.com (Deepak Bhole) Date: Mon, 8 Nov 2010 16:18:46 -0500 Subject: [icedtea-web] RFC: use an actual number as the JDK_UPDATE_VERSION for plugin In-Reply-To: <4CD86884.1090009@redhat.com> References: <4CD86884.1090009@redhat.com> Message-ID: <20101108211845.GA4558@redhat.com> * Omair Majid [2010-11-08 16:16]: > Hi, > > The IcedTea builds used to pass in a value for JDK_UPDATE_VERSION > when building the plugin, which was left out when IcedTea-Web was > created. This patch defines this variable and sets it to an > arbitrary value. > > Without this patch, about:plugins in firefox shows that the plugin > supports the mime type > "application/x-java-applet;jpi-version=1.6.0_". This seems to cause > issues with the deployJava.js script - the users get redirected to > the Java download page. Adding any value after the _ is enough to > make applets using deployJava.js work with the plugin. > > The following web page can be used as a reproducer: > http://download.oracle.com/javase/tutorial/deployment/applet/examples/dist/applet_Draggable/AppletPage.html > > ChangeLog: > 2010-11-08 Omair Majid > > * Makefile.am (JDKJDK_UPDATE_VERSION): Define variable. > Minor typo up there. Looks fine otherwise. Ok for HEAD. Deepak > Any thoughts or comments? > > Thanks, > Omair > diff -r 8e66d9386273 Makefile.am > --- a/Makefile.am Thu Nov 04 16:44:27 2010 -0700 > +++ b/Makefile.am Mon Nov 08 15:51:36 2010 -0500 > @@ -17,6 +17,8 @@ > IT_CLASS_TARGET_VERSION=6 > IT_JAVACFLAGS=$(IT_JAVAC_SETTINGS) -source $(IT_LANGUAGE_SOURCE_VERSION) -target $(IT_CLASS_TARGET_VERSION) > > +JDK_UPDATE_VERSION=50 > + > # Sources list > > PLUGIN_TEST_SRCS = $(abs_top_srcdir)/plugin/tests/LiveConnect/*.java From asu at redhat.com Mon Nov 8 13:19:26 2010 From: asu at redhat.com (Andrew Su) Date: Mon, 8 Nov 2010 16:19:26 -0500 (EST) Subject: [icedtea-web] RFC: integrate multiple KeyStore support into CertificateViewer In-Reply-To: <20101108205757.GB4255@redhat.com> Message-ID: <1767549457.280101289251166985.JavaMail.root@zmail01.collab.prod.int.phx2.redhat.com> ----- "Deepak Bhole" wrote: > From: "Deepak Bhole" > To: "Omair Majid" > Cc: "Andrew Su" , "IcedTea" > Sent: Monday, November 8, 2010 3:57:58 PM GMT -05:00 US/Canada Eastern > Subject: Re: [icedtea-web] RFC: integrate multiple KeyStore support into CertificateViewer > > * Omair Majid [2010-11-08 15:36]: > > Hi Andrew, > > > > On 11/08/2010 03:15 PM, Andrew Su wrote: > > >Hi, > > > > > >On 11/04/2010 04:15 PM, Omair Majid wrote: > > >>Hi, > > >> > > >>The attached patch starts integrating some of the security > certificate > > >>configuration into Netx. > > >> > > >>It adds a new class KeyStores that is used to access the > different > > >>types of KeyStore that Netx supports - per user and per system > > >>variants of trusted CA KeyStore, trusted certificate store, JSSE > CA > > >>store, and JSSE certificates store. > > >> > > >>It also fixes up the certificate viewer (javaws -viewer) to use > these > > >>multiple certificate stores. > > >> > > >>ChangeLog > > >>2010-11-04 Omair Majid > > >> > > >>* netx/net/sourceforge/jnlp/runtime/DeploymentConfiguration.java: > > >>Add KEY_USER_TRUSTED_CA_CERTS, KEY_USER_TRUSTED_JSSE_CA_CERTS, > > >>KEY_USER_TRUSTED_CERTS, KEY_USER_TRUSTED_JSSE_CERTS, > > >>KEY_USER_TRUSTED_CLIENT_CERTS, KEY_SYSTEM_TRUSTED_CA_CERTS, > > >>KEY_SYSTEM_TRUSTED_JSSE_CA_CERTS, KEY_SYSTEM_TRUSTED_CERTS, > > >>KEY_SYSTEM_TRUSTED_JSSE_CERTS, KEY_SYSTEM_TRUSTED_CLIENT_CERTS > > >>(loadDefaultProperties): Use the defined constants. > > >>* netx/net/sourceforge/jnlp/security/KeyStores.java: New class. > > >>(getPassword): New method. Return the default password used for > > >>KeyStores. > > >>(getKeyStore(Level,Type)): New method. Returns the appropriate > > >>KeyStore. > > >>(getKeyStore(Level,Type,String)): Likewise. > > >>(getCertKeyStores): New method. Return all the trusted > certificate > > >>KeyStores. > > >>(getCAKeyStores): New method. Return all the trusted CA > certificate > > >>KeyStores. > > >>(getKeyStoreLocation): New method. Return the location of the > > >>appropriate KeyStore. > > >>(toTranslatableString): New method. Return a string that can be > > >>used to create a human-readable name for the KeyStore. > > >>(toDisplayableString): New method. Return a human-readable name > > >>for the KeyStore. > > >>(createKeyStoreFromFile): New method. Creates a new KeyStore > object, > > >>initializing it from the given file if possible. > > >>* netx/net/sourceforge/jnlp/security/viewer/CertificatePane.java > > >>(CertificatePane): Create two JTables. Populate the tables when > > >>done creating the user interface. > > >>(initializeKeyStore): Use the correct keystore. > > >>(addComponents): Do not read KeyStore. Create more interface > > >>elements to show the new possible KeyStores. Mark some buttons to > > >>be disabled when needed. > > >>(repopulateTable): Renamed to... > > >>(repopulateTables): New method. Read KeyStore and use the > contents > > >>to create the user and system tables. > > >>(CertificateType): New class. > > >>(CertificateTypeListener): New class. Listens to JComboBox change > > >>events. > > >>(TabChangeListener): New class. Listens to new tab selections. > > >>(ImportButtonListener): Import certificates to the appropriate > > >>KeyStore. > > >>(ExportButtonListener): Find the certificate from the right > table. > > >>(RemoveButtonListener): Find the certificate from the right table > > >>and right the KeyStore. > > >>(DetailsButtonListener): Find the certificate from the right > table. > > >>* > netx/net/sourceforge/jnlp/security/viewer/CertificateViewer.java > > >>(showCertficaiteViewer): Initialize the JNLPRuntime so the > > >>configuration gets loaded. > > >>* netx/net/sourceforge/jnlp/tools/KeyTool.java > > >>(addToKeyStore(File,KeyStore)): New method. Adds certificate from > > >>the file to the KeyStore. > > >>(addToKeyStore(X509Certificate,KeyStore)): New method. Adds a > > >>certificate to a KeyStore. > > >> > > >> > > >>Any thoughts or comments? > > >> > > >>Thanks, > > >>Omair > > >>icedtea-web-integrate-configuration-security-files-05.patch > > >> > > >> > > >>diff -r 2405cef22921 > netx/net/sourceforge/jnlp/runtime/DeploymentConfiguration.java > > >>--- > a/netx/net/sourceforge/jnlp/runtime/DeploymentConfiguration.java Wed > Nov 03 23:06:23 2010 +0000 > > >>+++ > b/netx/net/sourceforge/jnlp/runtime/DeploymentConfiguration.java Thu > Nov 04 15:57:40 2010 -0400 > > >>@@ -142,6 +142,18 @@ > > >> */ > > >> public static final String KEY_USER_NETX_RUNNING_FILE = > "deployment.user.runningfile"; > > >> > > >>+ public static final String KEY_USER_TRUSTED_CA_CERTS = > "deployment.user.security.trusted.cacerts"; > > >>+ public static final String KEY_USER_TRUSTED_JSSE_CA_CERTS = > "deployment.user.security.trusted.jssecacerts"; > > >>+ public static final String KEY_USER_TRUSTED_CERTS = > "deployment.user.security.trusted.certs"; > > >>+ public static final String KEY_USER_TRUSTED_JSSE_CERTS = > "deployment.user.security.trusted.jssecerts"; > > >>+ public static final String KEY_USER_TRUSTED_CLIENT_CERTS = > "deployment.user.security.trusted.clientauthcerts"; > > >>+ > > >>+ public static final String KEY_SYSTEM_TRUSTED_CA_CERTS = > "deployment.system.security.cacerts"; > > >>+ public static final String KEY_SYSTEM_TRUSTED_JSSE_CA_CERTS = > "deployment.system.security.jssecacerts"; > > >>+ public static final String KEY_SYSTEM_TRUSTED_CERTS = > "deployment.system.security.trusted.certs"; > > >>+ public static final String KEY_SYSTEM_TRUSTED_JSSE_CERTS = > "deployment.system.security.trusted.jssecerts"; > > >>+ public static final String KEY_SYSTEM_TRUSTED_CLIENT_CERTS = > "deployment.system.security.trusted.clientautcerts"; > > >>+ > > >> public enum ConfigType { > > >> System, User > > >> } > > >>@@ -315,17 +327,17 @@ > > >> { KEY_USER_NETX_RUNNING_FILE, LOCKS_DIR + > File.separator + "netx_running" }, > > >> /* certificates and policy files */ > > >> { "deployment.user.security.policy","file://" + > USER_SECURITY + File.separator + "java.policy" }, > > >>- { "deployment.user.security.trusted.cacerts", > USER_SECURITY + File.separator + "trusted.cacerts" }, > > >>- { "deployment.user.security.trusted.jssecacerts", > USER_SECURITY + File.separator + "trusted.jssecacerts" }, > > >>- { "deployment.user.security.trusted.certs", > USER_SECURITY + File.separator + "trusted.certs" }, > > >>- { "deployment.user.security.trusted.jssecerts", > USER_SECURITY + File.separator + "trusted.jssecerts"}, > > >>- { "deployment.user.security.trusted.clientauthcerts", > USER_SECURITY + File.separator + "trusted.clientcerts" }, > > >>+ { KEY_USER_TRUSTED_CA_CERTS, USER_SECURITY + > File.separator + "trusted.cacerts" }, > > >>+ { KEY_USER_TRUSTED_JSSE_CA_CERTS, USER_SECURITY + > File.separator + "trusted.jssecacerts" }, > > >>+ { KEY_USER_TRUSTED_CERTS, USER_SECURITY + > File.separator + "trusted.certs" }, > > >>+ { KEY_USER_TRUSTED_JSSE_CERTS, USER_SECURITY + > File.separator + "trusted.jssecerts"}, > > >>+ { KEY_USER_TRUSTED_CLIENT_CERTS, USER_SECURITY + > File.separator + "trusted.clientcerts" }, > > >> { "deployment.system.security.policy", null }, > > >>- { "deployment.system.security.cacerts", > SYSTEM_SECURITY + File.separator + "cacerts" }, > > >>- { "deployment.system.security.jssecacerts", > SYSTEM_SECURITY + File.separator + "jssecacerts" }, > > >>- { "deployment.system.security.trusted.certs", > SYSTEM_SECURITY + File.separator + "trusted.certs" }, > > >>- { "deployment.system.security.trusted.jssecerts", > SYSTEM_SECURITY + File.separator + "trusted.jssecerts" }, > > >>- { > "deployment.system.security.trusted.clientautcerts", SYSTEM_SECURITY + > File.separator + "trusted.clientcerts" }, > > >>+ { KEY_SYSTEM_TRUSTED_CA_CERTS , SYSTEM_SECURITY + > File.separator + "cacerts" }, > > >>+ { KEY_SYSTEM_TRUSTED_JSSE_CA_CERTS, SYSTEM_SECURITY + > File.separator + "jssecacerts" }, > > >>+ { KEY_SYSTEM_TRUSTED_CERTS, SYSTEM_SECURITY + > File.separator + "trusted.certs" }, > > >>+ { KEY_SYSTEM_TRUSTED_JSSE_CERTS, SYSTEM_SECURITY + > File.separator + "trusted.jssecerts" }, > > >>+ { KEY_SYSTEM_TRUSTED_CLIENT_CERTS, SYSTEM_SECURITY + > File.separator + "trusted.clientcerts" }, > > >> /* security access and control */ > > >> { "deployment.security.askgrantdialog.show", > String.valueOf(true) }, > > >> { "deployment.security.askgrantdialog.notinca", > String.valueOf(true) }, > > >>diff -r 2405cef22921 > netx/net/sourceforge/jnlp/security/KeyStores.java > > >>--- /dev/null Thu Jan 01 00:00:00 1970 +0000 > > >>+++ b/netx/net/sourceforge/jnlp/security/KeyStores.java Thu Nov 04 > 15:57:40 2010 -0400 > > >>@@ -0,0 +1,300 @@ > > >>+package net.sourceforge.jnlp.security; > > >>+ > > >>+import java.io.File; > > >>+import java.io.FileInputStream; > > >>+import java.io.FileOutputStream; > > >>+import java.io.IOException; > > >>+import java.security.KeyStore; > > >>+import java.security.KeyStoreException; > > >>+import java.security.NoSuchAlgorithmException; > > >>+import java.security.cert.CertificateException; > > >>+import java.util.ArrayList; > > >>+import java.util.List; > > >>+import java.util.StringTokenizer; > > >>+ > > >>+import net.sourceforge.jnlp.runtime.DeploymentConfiguration; > > >>+import net.sourceforge.jnlp.runtime.JNLPRuntime; > > >>+import net.sourceforge.jnlp.runtime.Translator; > > >>+ > > >>+/** > > >>+ * TheKeyStores class allows easily accessing the > various KeyStores > > >>+ * used. > > >>+ */ > > >>+public final class KeyStores { > > >>+ > > >>+ /* this gets turned into user-readable strings, see > toUserReadableString */ > > >>+ > > >>+ public enum Level { > > >>+ USER, > > >>+ SYSTEM, > > >>+ } > > >>+ > > >>+ public enum Type { > > >>+ CERTS, > > >>+ JSSE_CERTS, > > >>+ CA_CERTS, > > >>+ JSSE_CA_CERTS, > > >>+ CLIENT_CERTS, > > >>+ } > > >>+ > > >>+ private static final String KEYSTORE_TYPE = "JKS"; > > >>+ /** the default password used to protect the KeyStores */ > > >>+ private static final String DEFAULT_PASSWORD = "changeit"; > > >>+ > > >>+ public static final char[] getPassword() { > > >>+ return DEFAULT_PASSWORD.toCharArray(); > > >>+ } > > >>+ > > >>+ /** > > >>+ * Returns a KeyStore corresponding to the appropriate level > level (user or > > >>+ * system) and type. > > >>+ * > > >>+ * @param level whether the KeyStore desired is a user-level > or system-level > > >>+ * KeyStore > > >>+ * @param type the type of KeyStore desired > > >>+ * @return a KeyStore containing certificates from the > appropriate > > >>+ */ > > >>+ public static final KeyStore getKeyStore(Level level, Type > type) { > > >>+ boolean create = false; > > >>+ if (level == Level.USER) { > > >>+ create = true; > > >>+ } else { > > >>+ create = false; > > >>+ } > > >>+ return getKeyStore(level, type, create); > > >>+ } > > >>+ > > >>+ /** > > >>+ * Returns a KeyStore corresponding to the appropriate level > level (user or > > >>+ * system) and type. > > >>+ * > > >>+ * @param level whether the KeyStore desired is a user-level > or system-level > > >>+ * KeyStore > > >>+ * @param type the type of KeyStore desired > > >>+ * @return a KeyStore containing certificates from the > appropriate > > >>+ */ > > >>+ public static final KeyStore getKeyStore(Level level, Type > type, boolean create) { > > >>+ String location = getKeyStoreLocation(level, type); > > >>+ KeyStore ks = null; > > >>+ try { > > >>+ ks = createKeyStoreFromFile(new File(location), > create, DEFAULT_PASSWORD); > > >>+ } catch (Exception e) { > > >>+ e.printStackTrace(); > > >>+ } > > >>+ return ks; > > >>+ } > > >>+ > > >>+ /** > > >>+ * Returns an array of KeyStore that contain certificates > that are trusted. > > >>+ * The KeyStores contain certificates from different > sources. > > >>+ * > > >>+ * @return an array of KeyStore containing trusted > Certificates > > >>+ */ > > >>+ public static final KeyStore[] getCertKeyStores() { > > >>+ List result = new ArrayList(10); > > >>+ KeyStore ks = null; > > >>+ > > >>+ /* System-level JSSE certificates */ > > >>+ ks = getKeyStore(Level.SYSTEM, Type.JSSE_CERTS); > > >>+ if (ks != null) { > > >>+ result.add(ks); > > >>+ } > > >>+ /* System-level certificates */ > > >>+ ks = getKeyStore(Level.SYSTEM, Type.CERTS); > > >>+ if (ks != null) { > > >>+ result.add(ks); > > >>+ } > > >>+ /* User-level JSSE certificates */ > > >>+ ks = getKeyStore(Level.USER, Type.JSSE_CERTS); > > >>+ if (ks != null) { > > >>+ result.add(ks); > > >>+ } > > >>+ /* User-level certificates */ > > >>+ ks = getKeyStore(Level.USER, Type.CERTS); > > >>+ if (ks != null) { > > >>+ result.add(ks); > > >>+ } > > >>+ > > >>+ return result.toArray(new KeyStore[result.size()]); > > >>+ } > > >>+ > > >>+ /** > > >>+ * Returns an array of KeyStore that contain trusted CA > certificates. > > >>+ * > > >>+ * @return an array of KeyStore containing trusted CA > certificates > > >>+ */ > > >>+ public static final KeyStore[] getCAKeyStores() { > > >>+ List result = new ArrayList(10); > > >>+ KeyStore ks = null; > > >>+ > > >>+ /* System-level JSSE CA certificates */ > > >>+ ks = getKeyStore(Level.SYSTEM, Type.JSSE_CA_CERTS); > > >>+ if (ks != null) { > > >>+ result.add(ks); > > >>+ } > > >>+ /* System-level CA certificates */ > > >>+ ks = getKeyStore(Level.SYSTEM, Type.CA_CERTS); > > >>+ if (ks != null) { > > >>+ result.add(ks); > > >>+ } > > >>+ /* User-level JSSE CA certificates */ > > >>+ ks = getKeyStore(Level.USER, Type.JSSE_CA_CERTS); > > >>+ if (ks != null) { > > >>+ result.add(ks); > > >>+ } > > >>+ /* User-level CA certificates */ > > >>+ ks = getKeyStore(Level.USER, Type.CA_CERTS); > > >>+ if (ks != null) { > > >>+ result.add(ks); > > >>+ } > > >>+ > > >>+ return result.toArray(new KeyStore[result.size()]); > > >>+ } > > >>+ > > >>+ /** > > >>+ * Returns the location of a KeyStore corresponding to the > given level and type. > > >>+ * @param level > > >>+ * @param type > > >>+ * @return > > >>+ */ > > >>+ public static final String getKeyStoreLocation(Level level, > Type type) { > > >>+ String configKey = null; > > >>+ switch (level) { > > >>+ case SYSTEM: > > >>+ switch (type) { > > >>+ case JSSE_CA_CERTS: > > >>+ configKey = > DeploymentConfiguration.KEY_SYSTEM_TRUSTED_JSSE_CA_CERTS; > > >>+ break; > > >>+ case CA_CERTS: > > >>+ configKey = > DeploymentConfiguration.KEY_SYSTEM_TRUSTED_CA_CERTS; > > >>+ break; > > >>+ case JSSE_CERTS: > > >>+ configKey = > DeploymentConfiguration.KEY_SYSTEM_TRUSTED_JSSE_CERTS; > > >>+ break; > > >>+ case CERTS: > > >>+ configKey = > DeploymentConfiguration.KEY_SYSTEM_TRUSTED_CERTS; > > >>+ break; > > >>+ case CLIENT_CERTS: > > >>+ configKey = > DeploymentConfiguration.KEY_SYSTEM_TRUSTED_CLIENT_CERTS; > > >>+ break; > > >>+ } > > >>+ break; > > >>+ case USER: > > >>+ switch (type) { > > >>+ case JSSE_CA_CERTS: > > >>+ configKey = > DeploymentConfiguration.KEY_USER_TRUSTED_JSSE_CA_CERTS; > > >>+ break; > > >>+ case CA_CERTS: > > >>+ configKey = > DeploymentConfiguration.KEY_USER_TRUSTED_CA_CERTS; > > >>+ break; > > >>+ case JSSE_CERTS: > > >>+ configKey = > DeploymentConfiguration.KEY_USER_TRUSTED_JSSE_CERTS; > > >>+ break; > > >>+ case CERTS: > > >>+ configKey = > DeploymentConfiguration.KEY_USER_TRUSTED_CERTS; > > >>+ break; > > >>+ case CLIENT_CERTS: > > >>+ configKey = > DeploymentConfiguration.KEY_SYSTEM_TRUSTED_CLIENT_CERTS; > > >>+ break; > > >>+ } > > >>+ break; > > >>+ } > > >>+ > > >>+ if (configKey == null) { > > >>+ throw new RuntimeException("Unspported"); > > >>+ } > > >>+ > > >>+ return > JNLPRuntime.getConfiguration().getProperty(configKey); > > >>+ } > > >>+ > > >>+ /** > > >>+ * Returns a String that can be used as a translation key to > create a > > >>+ * user-visible representation of this KeyStore. Creates a > string by > > >>+ * concatenating a level and type, converting everything to > Title Case and > > >>+ * removing the _'s. (USER,CA_CERTS) becomes UserCaCerts. > > >>+ * > > >>+ * @param level > > >>+ * @param type > > >>+ * @return > > >>+ */ > > >>+ public static final String toTranslatableString(Level level, > Type type) { > > >>+ StringBuilder response = new StringBuilder(); > > >>+ > > >>+ if (level != null) { > > >>+ String levelString = level.toString(); > > >>+ response.append(levelString.substring(0, > 1).toUpperCase()); > > >>+ > response.append(levelString.substring(1).toLowerCase()); > > >>+ } > > >>+ > > >>+ if (type != null) { > > >>+ String typeString = type.toString(); > > >>+ StringTokenizer tokenizer = new > StringTokenizer(typeString, "_"); > > >>+ while (tokenizer.hasMoreTokens()) { > > >>+ String token = tokenizer.nextToken(); > > >>+ response.append(token.substring(0, > 1).toUpperCase()); > > >>+ > response.append(token.substring(1).toLowerCase()); > > >>+ } > > >>+ } > > >>+ > > >>+ return response.toString(); > > >>+ } > > >>+ > > >>+ /** > > >>+ * Returns a human readable name for this KeyStore > > >>+ * > > >>+ * @param level the level of the KeyStore > > >>+ * @param type the type of KeyStore > > >>+ * @return a localized name for this KeyStore > > >>+ */ > > >>+ public static String toDisplayableString(Level level, Type > type) { > > >>+ return Translator.R(toTranslatableString(level, type)); > > >>+ } > > >>+ > > >>+ /** > > >>+ * Reads the file (using the password) and uses it to create > a new > > >>+ * {@link KeyStore}. If the file does not exist and should > not be created, > > >>+ * it returns an empty but initialized KeyStore > > >>+ * > > >>+ * @param file the file to load information from > > >>+ * @param password the password to unlock the KeyStore file. > > >>+ * @return a KeyStore containing data from the file > > >>+ */ > > >>+ private static final KeyStore createKeyStoreFromFile(File > file, boolean createIfNotFound, > > >>+ String password) throws IOException, > KeyStoreException, NoSuchAlgorithmException, > > >>+ CertificateException { > > >>+ FileInputStream fis = null; > > >>+ KeyStore ks = null; > > >>+ > > >>+ try { > > >>+ if (createIfNotFound&& !file.exists()) { > > >>+ File parent = file.getParentFile(); > > >>+ if (!parent.isDirectory()&& !parent.mkdirs()) { > > >According to mkdirs() some of the parent directories may get > created. > > >Maybe clean up if attempt failed. > > > > The problem is that we dont know which directories were created. We > > could keep track of all the parent directories which did not exist > > and try deleting them, but IMHO the cleanup is unnecessary. > > > > >>+ throw new IOException("unable to create " + > parent); > > >>+ } > > >>+ ks = KeyStore.getInstance(KEYSTORE_TYPE); > > >>+ ks.load(null, password.toCharArray()); > > >>+ FileOutputStream fos = new > FileOutputStream(file); > > >>+ ks.store(fos, password.toCharArray()); > > >>+ fos.close(); > > >>+ } > > >>+ > > >>+ // TODO catch exception when password is incorrect > and prompt user > > >>+ > > >>+ if (file.exists()) { > > >>+ fis = new FileInputStream(file); > > >>+ ks = KeyStore.getInstance(KEYSTORE_TYPE); > > >>+ ks.load(fis, password.toCharArray()); > > >>+ } else { > > >>+ ks = KeyStore.getInstance(KEYSTORE_TYPE); > > >>+ ks.load(null, password.toCharArray()); > > >>+ } > > >>+ } finally { > > >>+ if (fis != null) { > > >>+ fis.close(); > > >>+ } > > >>+ } > > >>+ > > >>+ return ks; > > >>+ } > > >>+ > > >>+} > > >>diff -r 2405cef22921 > netx/net/sourceforge/jnlp/security/viewer/CertificatePane.java > > >>--- > a/netx/net/sourceforge/jnlp/security/viewer/CertificatePane.java Wed > Nov 03 23:06:23 2010 +0000 > > >>+++ > b/netx/net/sourceforge/jnlp/security/viewer/CertificatePane.java Thu > Nov 04 15:57:40 2010 -0400 > > >>@@ -44,93 +44,153 @@ > > >> import java.awt.event.ActionListener; > > >> import java.awt.event.KeyEvent; > > >> import java.io.FileOutputStream; > > >>+import java.io.OutputStream; > > >> import java.io.PrintStream; > > >> import java.security.KeyStore; > > >> import java.security.cert.Certificate; > > >> import java.security.cert.X509Certificate; > > >> import java.util.ArrayList; > > >> import java.util.Enumeration; > > >>+import java.util.List; > > >> > > >> import javax.swing.BorderFactory; > > >> import javax.swing.JButton; > > >>+import javax.swing.JComboBox; > > >> import javax.swing.JComponent; > > >> import javax.swing.JDialog; > > >> import javax.swing.JFileChooser; > > >>+import javax.swing.JLabel; > > >> import javax.swing.JOptionPane; > > >> import javax.swing.JPanel; > > >> import javax.swing.JScrollPane; > > >> import javax.swing.JTabbedPane; > > >> import javax.swing.JTable; > > >>+import javax.swing.event.ChangeEvent; > > >>+import javax.swing.event.ChangeListener; > > >> import javax.swing.table.DefaultTableModel; > > >> > > >>+import net.sourceforge.jnlp.security.KeyStores; > > >> import net.sourceforge.jnlp.security.SecurityUtil; > > >> import net.sourceforge.jnlp.security.SecurityWarningDialog; > > >>+import net.sourceforge.jnlp.security.KeyStores.Level; > > >> import net.sourceforge.jnlp.tools.KeyTool; > > >> > > >> public class CertificatePane extends JPanel { > > >> > > >> /** > > >>- * The certificates stored in the user's trusted.certs > file. > > >>+ * The certificates stored in the certificates file. > > >> */ > > >> private ArrayList certs = null; > > >> > > >>+ private static final Dimension TABLE_DIMENSION = new > Dimension(500,200); > > >>+ > > >> /** > > >> * "Issued To" and "Issued By" string pairs for certs. > > >> */ > > >> private String[][] issuedToAndBy = null; > > >> private final String[] columnNames = { "Issued To", > "Issued By" }; > > >> > > >>- private JTable table; > > >>+ private final CertificateType[] certificateTypes = new > CertificateType[] { > > >>+ new CertificateType(KeyStores.Type.CA_CERTS), > > >>+ new CertificateType(KeyStores.Type.JSSE_CA_CERTS), > > >>+ new CertificateType(KeyStores.Type.CERTS), > > >>+ new CertificateType(KeyStores.Type.JSSE_CERTS), > > >>+ }; > > >>+ > > >>+ JTabbedPane tabbedPane; > > >>+ private final JTable userTable; > > >>+ private final JTable systemTable; > > >>+ private JComboBox certificateTypeCombo; > > >>+ private KeyStores.Type currentKeyStoreType; > > >>+ private KeyStores.Level currentKeyStoreLevel; > > >>+ > > >>+ /** JComponents that should be disbled for system store > */ > > >>+ private final List disableForSystem; > > >> > > >> private JDialog parent; > > >>- > > >> private JComponent defaultFocusComponent = null; > > >> > > >> /** > > >>- * The KeyStore associated with the user's trusted.certs > file. > > >>+ * The Current KeyStore. Only one table/tab is visible > for interaction to > > >>+ * the user. This KeyStore corresponds to that. > > >> */ > > >> private KeyStore keyStore = null; > > >> > > >> public CertificatePane(JDialog parent) { > > >> super(); > > >> this.parent = parent; > > >>- initializeKeyStore(); > > >>+ > > >>+ userTable = new JTable(null); > > >>+ systemTable = new JTable(null); > > >>+ disableForSystem = new ArrayList(); > > >>+ > > >> addComponents(); > > >>+ > > >>+ currentKeyStoreType = > ((CertificateType)(certificateTypeCombo.getSelectedItem())).getType(); > > >>+ if (tabbedPane.getSelectedIndex() == 0) { > > >>+ currentKeyStoreLevel = Level.USER; > > >>+ } else { > > >>+ currentKeyStoreLevel = Level.SYSTEM; > > >>+ } > > >>+ > > >>+ repopulateTables(); > > >> } > > >> > > >> /** > > >> * Reads the user's trusted.cacerts keystore. > > >> */ > > >> private void initializeKeyStore() { > > >>- try { > > >>- keyStore = > SecurityUtil.getUserKeyStore(); > > >>- } catch (Exception e) { > > >>- // TODO Auto-generated catch block > > >>- e.printStackTrace(); > > >>- } > > >>+ try { > > >>+ keyStore = > KeyStores.getKeyStore(currentKeyStoreLevel, currentKeyStoreType); > > >>+ } catch (Exception e) { > > >>+ e.printStackTrace(); > > >>+ } > > >> } > > >> > > >> //create the GUI here. > > >> protected void addComponents() { > > >>- readKeyStore(); > > >> > > >> JPanel main = new JPanel(new BorderLayout()); > > >> > > >>+ JPanel certificateTypePanel = new JPanel(new > BorderLayout()); > > >>+ > certificateTypePanel.setBorder(BorderFactory.createEmptyBorder(5,5,5,5)); > > >>+ > > >>+ JLabel certificateTypeLabel = new > JLabel("Certificate Type:"); > > >>+ > > >>+ certificateTypeCombo = new > JComboBox(certificateTypes); > > >>+ certificateTypeCombo.addActionListener(new > CertificateTypeListener()); > > >>+ > > >>+ certificateTypePanel.add(certificateTypeLabel, > BorderLayout.LINE_START); > > >>+ certificateTypePanel.add(certificateTypeCombo, > BorderLayout.CENTER); > > >>+ > > >> JPanel tablePanel = new JPanel(new > BorderLayout()); > > >> > > >>- //Table > > >>- DefaultTableModel tableModel > > >>+ // User Table > > >>+ DefaultTableModel userTableModel > > >> = new DefaultTableModel(issuedToAndBy, > columnNames); > > >>- table = new JTable(tableModel); > > >>- > table.getTableHeader().setReorderingAllowed(false); > > >>- table.setFillsViewportHeight(true); > > >>- JScrollPane tablePane = new JScrollPane(table); > > >>- tablePane.setPreferredSize(new > Dimension(500,200)); > > >>- tablePane.setSize(new Dimension(500,200)); > > >>- > tablePane.setBorder(BorderFactory.createEmptyBorder(10,10,10,10)); > > >>+ userTable.setModel(userTableModel); > > >>+ > userTable.getTableHeader().setReorderingAllowed(false); > > >>+ userTable.setFillsViewportHeight(true); > > >>+ JScrollPane userTablePane = new > JScrollPane(userTable); > > >>+ userTablePane.setPreferredSize(TABLE_DIMENSION); > > >>+ userTablePane.setSize(TABLE_DIMENSION); > > >>+ > userTablePane.setBorder(BorderFactory.createEmptyBorder(10,10,10,10)); > > >> > > >>- JTabbedPane tabbedPane = new JTabbedPane(); > > >>- tabbedPane.addTab("User", tablePane); > > >>+ // System Table > > >>+ DefaultTableModel systemTableModel = new > DefaultTableModel(issuedToAndBy, columnNames); > > >>+ systemTable.setModel(systemTableModel); > > >>+ > systemTable.getTableHeader().setReorderingAllowed(false); > > >>+ systemTable.setFillsViewportHeight(true); > > >>+ JScrollPane systemTablePane = new > JScrollPane(systemTable); > > >>+ > systemTablePane.setPreferredSize(TABLE_DIMENSION); > > >>+ systemTablePane.setSize(TABLE_DIMENSION); > > >>+ > systemTablePane.setBorder(BorderFactory.createEmptyBorder(10,10,10,10)); > > >>+ > > >>+ tabbedPane = new JTabbedPane(); > > >>+ tabbedPane.addTab("User", userTablePane); > > >>+ tabbedPane.addTab("System", systemTablePane); > > >>+ tabbedPane.addChangeListener(new > TabChangeListener()); > > >>+ > > >> JPanel buttonPanel = new JPanel(new > FlowLayout()); > > >> > > >> String[] buttonNames = {"Import", "Export", > "Remove", "Details"}; > > >>@@ -156,6 +216,10 @@ > > >> button.setMnemonic(buttonMnemonics[i]); > > >> button.addActionListener(listeners[i]); > > >> button.setSize(maxWidth, > button.getSize().height); > > >>+ // import and remove buttons > > >>+ if (i == 0 || i == 2) { > > >>+ disableForSystem.add(button); > > >>+ } > > >> buttonPanel.add(button); > > >> } > > >> > > >>@@ -169,6 +233,7 @@ > > >> defaultFocusComponent = closeButton; > > >> closePanel.add(closeButton, BorderLayout.EAST); > > >> > > >>+ main.add(certificateTypePanel, > BorderLayout.NORTH); > > >> main.add(tablePanel, BorderLayout.CENTER); > > >> main.add(closePanel, BorderLayout.SOUTH); > > >> > > >>@@ -204,6 +269,7 @@ > > >> } > > >> } catch (Exception e) { > > >> //TODO > > >>+ e.printStackTrace(); > > >> } > > >> } > > >> > > >>@@ -211,14 +277,16 @@ > > >> * Re-reads the certs file and repopulates the JTable. > This is typically > > >> * called after a certificate was deleted from the > keystore. > > >> */ > > >>- private void repopulateTable() { > > >>+ private void repopulateTables() { > > >> initializeKeyStore(); > > >> readKeyStore(); > > >> DefaultTableModel tableModel > > >> = new DefaultTableModel(issuedToAndBy, > columnNames); > > >> > > >>- table.setModel(tableModel); > > >>- repaint(); > > >>+ userTable.setModel(tableModel); > > >>+ > > >>+ tableModel = new DefaultTableModel(issuedToAndBy, > columnNames); > > >>+ systemTable.setModel(tableModel); > > >> } > > >> > > >> public void focusOnDefaultButton() { > > >>@@ -227,6 +295,61 @@ > > >> } > > >> } > > >> > > >>+ /** Allows storing KeyStores.Types in a JComponent */ > > >>+ private class CertificateType { > > >>+ private final KeyStores.Type type; > > >>+ > > >>+ public CertificateType(KeyStores.Type type) { > > >>+ this.type = type; > > >>+ } > > >>+ > > >>+ public KeyStores.Type getType() { > > >>+ return type; > > >>+ } > > >>+ > > >>+ public String toString() { > > >>+ return KeyStores.toTranslatableString(null, type); > > >>+ } > > >>+ } > > >>+ > > >>+ /** Invoked when a user selects a different certificate type > */ > > >>+ private class CertificateTypeListener implements > ActionListener { > > >>+ @Override > > >>+ public void actionPerformed(ActionEvent e) { > > >>+ JComboBox source = (JComboBox) e.getSource(); > > >>+ CertificateType type = (CertificateType) > source.getSelectedItem(); > > >>+ currentKeyStoreType = type.getType(); > > >>+ repopulateTables(); > > >>+ } > > >>+ } > > >>+ > > >>+ /** > > >>+ * Invoked when a user selects a different tab (switches from > user to system > > >>+ * or vice versa). Changes the currentKeyStore Enables or > disables buttons. > > >>+ */ > > >>+ private class TabChangeListener implements ChangeListener { > > >>+ @Override > > >>+ public void stateChanged(ChangeEvent e) { > > >>+ JTabbedPane source = (JTabbedPane) e.getSource(); > > >>+ switch (source.getSelectedIndex()) { > > >>+ case 0: > > >>+ currentKeyStoreLevel = Level.USER; > > >>+ for (JComponent component : disableForSystem) > { > > >>+ component.setEnabled(true); > > >>+ } > > >>+ break; > > >>+ case 1: > > >>+ currentKeyStoreLevel = Level.SYSTEM; > > >>+ for (JComponent component : disableForSystem) > { > > >>+ component.setEnabled(false); > > >>+ } > > >>+ break; > > >>+ } > > >>+ repopulateTables(); > > >>+ > > >>+ } > > >>+ } > > >>+ > > >> private class ImportButtonListener implements > ActionListener { > > >> public void actionPerformed(ActionEvent e) { > > >> > > >>@@ -235,8 +358,12 @@ > > >> if(returnVal == JFileChooser.APPROVE_OPTION) { > > >> try { > > >> KeyTool kt = new KeyTool(); > > >>- > kt.importCert(chooser.getSelectedFile()); > > >>- repopulateTable(); > > >>+ KeyStore ks = keyStore; > > >>+ > kt.addToKeyStore(chooser.getSelectedFile(), ks); > > >>+ OutputStream os = new > FileOutputStream( > > >>+ > KeyStores.getKeyStoreLocation(currentKeyStoreLevel, > currentKeyStoreType)); > > >>+ ks.store(os, > KeyStores.getPassword()); > > >>+ repopulateTables(); > > >> } catch (Exception ex) { > > >> // TODO: handle exception > > >> ex.printStackTrace(); > > >>@@ -247,6 +374,14 @@ > > >> > > >> private class ExportButtonListener implements > ActionListener { > > >> public void actionPerformed(ActionEvent e) { > > >>+ > > >>+ JTable table = null; > > >>+ if (currentKeyStoreLevel == Level.USER) { > > >>+ table = userTable; > > >>+ } else { > > >>+ table = systemTable; > > >>+ } > > >>+ > > >> //For now, let's just export in -rfc > mode as keytool does. > > >> //we'll write to a file the exported > certificate. > > >> > > >>@@ -263,7 +398,7 @@ > > >> Certificate c = > keyStore.getCertificate(alias); > > >> PrintStream ps = > new PrintStream(chooser.getSelectedFile().getAbsolutePath()); > > >> > KeyTool.dumpCert(c, ps); > > >>- > repopulateTable(); > > >>+ > repopulateTables(); > > >> } > > >> } > > >> } > > >>@@ -281,6 +416,12 @@ > > >> */ > > >> public void actionPerformed(ActionEvent e) { > > >> > > >>+ JTable table = null; > > >>+ if (currentKeyStoreLevel == Level.USER) { > > >>+ table = userTable; > > >>+ } else { > > >>+ table = systemTable; > > >>+ } > > >> try { > > >> int selectedRow = > table.getSelectedRow(); > > >> > > >>@@ -295,12 +436,12 @@ > > >> if (i == 0) { > > >> > keyStore.deleteEntry(alias); > > >> FileOutputStream > fos = new FileOutputStream( > > >>- > SecurityUtil.getTrustedCertsFilename()); > > >>- > keyStore.store(fos, SecurityUtil.getTrustedCertsPassword()); > > >>+ > KeyStores.getKeyStoreLocation(currentKeyStoreLevel, > currentKeyStoreType)); > > >>+ > keyStore.store(fos, KeyStores.getPassword()); > > >> fos.close(); > > >> } > > >> } > > >>- repopulateTable(); > > >>+ repopulateTables(); > > >> } > > >> } catch (Exception ex) { > > >> // TODO > > >>@@ -317,6 +458,13 @@ > > >> */ > > >> public void actionPerformed(ActionEvent e) { > > >> > > >>+ JTable table = null; > > >>+ if (currentKeyStoreLevel == Level.USER) { > > >>+ table = userTable; > > >>+ } else { > > >>+ table = systemTable; > > >>+ } > > >>+ > > >> int selectedRow = table.getSelectedRow(); > > >> if (selectedRow != -1&& selectedRow>= 0) { > > >> X509Certificate c = > certs.get(selectedRow); > > >>diff -r 2405cef22921 > netx/net/sourceforge/jnlp/security/viewer/CertificateViewer.java > > >>--- > a/netx/net/sourceforge/jnlp/security/viewer/CertificateViewer.java Wed > Nov 03 23:06:23 2010 +0000 > > >>+++ > b/netx/net/sourceforge/jnlp/security/viewer/CertificateViewer.java Thu > Nov 04 15:57:40 2010 -0400 > > >>@@ -48,6 +48,8 @@ > > >> import javax.swing.JDialog; > > >> import javax.swing.UIManager; > > >> > > >>+import net.sourceforge.jnlp.runtime.JNLPRuntime; > > >>+ > > >> public class CertificateViewer extends JDialog { > > >> > > >> private boolean initialized = false; > > >>@@ -97,6 +99,7 @@ > > >> > > >> > > >> public static void showCertificateViewer() throws > Exception { > > >>+ JNLPRuntime.initialize(true); > > >> setSystemLookAndFeel(); > > >> > > >> CertificateViewer cv = new CertificateViewer(); > > >>diff -r 2405cef22921 netx/net/sourceforge/jnlp/tools/KeyTool.java > > >>--- a/netx/net/sourceforge/jnlp/tools/KeyTool.java Wed Nov 03 > 23:06:23 2010 +0000 > > >>+++ b/netx/net/sourceforge/jnlp/tools/KeyTool.java Thu Nov 04 > 15:57:40 2010 -0400 > > >>@@ -32,7 +32,9 @@ > > >> import java.io.IOException; > > >> import java.io.InputStream; > > >> import java.io.PrintStream; > > >>+import java.math.BigInteger; > > >> import java.security.KeyStore; > > >>+import java.security.KeyStoreException; > > >> import java.security.MessageDigest; > > >> import java.security.PublicKey; > > >> import java.security.cert.Certificate; > > >>@@ -117,6 +119,47 @@ > > >> return importCert((Certificate)cert); > > >> } > > >> > > >>+ /** > > >>+ * Adds the X509Certficate in the file to the KeyStore > > >>+ */ > > >>+ public final void addToKeyStore(File file, KeyStore ks) > throws CertificateException, > > >>+ IOException, KeyStoreException { > > >>+ BufferedInputStream bis = new BufferedInputStream(new > FileInputStream(file)); > > >>+ CertificateFactory cf = > CertificateFactory.getInstance("X509"); > > >>+ X509Certificate cert = null; > > >>+ > > >>+ try { > > >>+ cert = (X509Certificate) > cf.generateCertificate(bis); > > >>+ } catch (ClassCastException cce) { > > >>+ throw new CertificateException("Input file is not an > X509 Certificate", cce); > > >>+ } > > >>+ > > >>+ addToKeyStore(cert, ks); > > >>+ > > >>+ } > > >>+ > > >>+ /** > > >>+ * Adds an X509Certificate to the KeyStore > > >>+ */ > > >>+ public final void addToKeyStore(X509Certificate cert, > KeyStore ks) throws KeyStoreException { > > >>+ String alias = null; > > >>+ Random random = new Random(); > > >>+ alias = ks.getCertificateAlias(cert); > > >>+ // already in keystore; done > > >>+ if (alias != null) { > > >>+ return; > > >>+ } > > >>+ > > >>+ boolean aliasFound = false; > > >>+ do { > > >>+ alias = new BigInteger(20, random).toString(); > > >>+ if (ks.getCertificate(alias) == null) { > > >>+ aliasFound = true; > > >>+ } > > >>+ } while (!aliasFound); > > >>+ ks.setCertificateEntry(alias, cert); > > >aliasFound is a bit confusing for name. > > > > > >this can be changed to: > > > > > >do{ > > >alias = new BigInteger(20, random).toString(); > > >} while (ks.getCertificate(alias) != null); > > > > > >to avoid using aliasFound. > > > > > > > Fixed. > > > > >>+ } > > >>+ > > >> /** > > >> * Adds a trusted certificate to the user's keystore. > > >> * @return true if the add was successful, false > otherwise. > > >Everything else seems okay to me. > > > > > > > Thanks for reviewing the patch. Ok to commit? > > > > Speaking only for myself and not Andrew, OK from me for HEAD. Okay for me too. Cheers, Andrew > > Cheers, > Deepak > > > Thanks, > > Omair From omajid at icedtea.classpath.org Mon Nov 8 13:38:00 2010 From: omajid at icedtea.classpath.org (omajid at icedtea.classpath.org) Date: Mon, 08 Nov 2010 21:38:00 +0000 Subject: /hg/icedtea-web: integrate multiple keystore support into certif... Message-ID: changeset 9dd09feb371b in /hg/icedtea-web details: http://icedtea.classpath.org/hg/icedtea-web?cmd=changeset;node=9dd09feb371b author: Omair Majid date: Mon Nov 08 16:36:17 2010 -0500 integrate multiple keystore support into certificate viewer 2010-11-04 Omair Majid * netx/net/sourceforge/jnlp/runtime/DeploymentConfiguration.java: Add KEY_USER_TRUSTED_CA_CERTS, KEY_USER_TRUSTED_JSSE_CA_CERTS, KEY_USER_TRUSTED_CERTS, KEY_USER_TRUSTED_JSSE_CERTS, KEY_USER_TRUSTED_CLIENT_CERTS, KEY_SYSTEM_TRUSTED_CA_CERTS, KEY_SYSTEM_TRUSTED_JSSE_CA_CERTS, KEY_SYSTEM_TRUSTED_CERTS, KEY_SYSTEM_TRUSTED_JSSE_CERTS, KEY_SYSTEM_TRUSTED_CLIENT_CERTS (loadDefaultProperties): Use the defined constants. * netx/net/sourceforge/jnlp/security/KeyStores.java: New class. (getPassword): New method. Return the default password used for KeyStores. (getKeyStore(Level,Type)): New method. Returns the appropriate KeyStore. (getKeyStore(Level,Type,String)): Likewise. (getCertKeyStores): New method. Return all the trusted certificate KeyStores. (getCAKeyStores): New method. Return all the trusted CA certificate KeyStores. (getKeyStoreLocation): New method. Return the location of the appropriate KeyStore. (toTranslatableString): New method. Return a string that can be used to create a human-readable name for the KeyStore. (toDisplayableString): New method. Return a human- readable name for the KeyStore. (createKeyStoreFromFile): New method. Creates a new KeyStore object, initializing it from the given file if possible. * netx/net/sourceforge/jnlp/security/viewer/CertificatePane.java (CertificatePane): Create two JTables. Populate the tables when done creating the user interface. (initializeKeyStore): Use the correct keystore. (addComponents): Do not read KeyStore. Create more interface elements to show the new possible KeyStores. Mark some buttons to be disabled when needed. (repopulateTable): Renamed to... (repopulateTables): New method. Read KeyStore and use the contents to create the user and system tables. (CertificateType): New class. (CertificateTypeListener): New class. Listens to JComboBox change events. (TabChangeListener): New class. Listens to new tab selections. (ImportButtonListener): Import certificates to the appropriate KeyStore. (ExportButtonListener): Find the certificate from the right table. (RemoveButtonListener): Find the certificate from the right table and right the KeyStore. (DetailsButtonListener): Find the certificate from the right table. * netx/net/sourceforge/jnlp/security/viewer/CertificateViewer.java (showCertficaiteViewer): Initialize the JNLPRuntime so the configuration gets loaded. * netx/net/sourceforge/jnlp/tools/KeyTool.java (addToKeyStore(File,KeyStore)): New method. Adds certificate from the file to the KeyStore. (addToKeyStore(X509Certificate,KeyStore)): New method. Adds a certificate to a KeyStore. diffstat: 6 files changed, 637 insertions(+), 42 deletions(-) ChangeLog | 56 + netx/net/sourceforge/jnlp/runtime/DeploymentConfiguration.java | 32 netx/net/sourceforge/jnlp/security/KeyStores.java | 337 ++++++++++ netx/net/sourceforge/jnlp/security/viewer/CertificatePane.java | 212 +++++- netx/net/sourceforge/jnlp/security/viewer/CertificateViewer.java | 3 netx/net/sourceforge/jnlp/tools/KeyTool.java | 39 + diffs (truncated from 902 to 500 lines): diff -r 8e66d9386273 -r 9dd09feb371b ChangeLog --- a/ChangeLog Thu Nov 04 16:44:27 2010 -0700 +++ b/ChangeLog Mon Nov 08 16:36:17 2010 -0500 @@ -1,3 +1,59 @@ 2010-11-04 Deepak Bhole + + * netx/net/sourceforge/jnlp/runtime/DeploymentConfiguration.java: + Add KEY_USER_TRUSTED_CA_CERTS, KEY_USER_TRUSTED_JSSE_CA_CERTS, + KEY_USER_TRUSTED_CERTS, KEY_USER_TRUSTED_JSSE_CERTS, + KEY_USER_TRUSTED_CLIENT_CERTS, KEY_SYSTEM_TRUSTED_CA_CERTS, + KEY_SYSTEM_TRUSTED_JSSE_CA_CERTS, KEY_SYSTEM_TRUSTED_CERTS, + KEY_SYSTEM_TRUSTED_JSSE_CERTS, KEY_SYSTEM_TRUSTED_CLIENT_CERTS + (loadDefaultProperties): Use the defined constants. + * netx/net/sourceforge/jnlp/security/KeyStores.java: New class. + (getPassword): New method. Return the default password used for + KeyStores. + (getKeyStore(Level,Type)): New method. Returns the appropriate + KeyStore. + (getKeyStore(Level,Type,String)): Likewise. + (getCertKeyStores): New method. Return all the trusted certificate + KeyStores. + (getCAKeyStores): New method. Return all the trusted CA certificate + KeyStores. + (getKeyStoreLocation): New method. Return the location of the + appropriate KeyStore. + (toTranslatableString): New method. Return a string that can be + used to create a human-readable name for the KeyStore. + (toDisplayableString): New method. Return a human-readable name + for the KeyStore. + (createKeyStoreFromFile): New method. Creates a new KeyStore object, + initializing it from the given file if possible. + * netx/net/sourceforge/jnlp/security/viewer/CertificatePane.java + (CertificatePane): Create two JTables. Populate the tables when + done creating the user interface. + (initializeKeyStore): Use the correct keystore. + (addComponents): Do not read KeyStore. Create more interface + elements to show the new possible KeyStores. Mark some buttons to + be disabled when needed. + (repopulateTable): Renamed to... + (repopulateTables): New method. Read KeyStore and use the contents + to create the user and system tables. + (CertificateType): New class. + (CertificateTypeListener): New class. Listens to JComboBox change + events. + (TabChangeListener): New class. Listens to new tab selections. + (ImportButtonListener): Import certificates to the appropriate + KeyStore. + (ExportButtonListener): Find the certificate from the right table. + (RemoveButtonListener): Find the certificate from the right table + and right the KeyStore. + (DetailsButtonListener): Find the certificate from the right table. + * netx/net/sourceforge/jnlp/security/viewer/CertificateViewer.java + (showCertficaiteViewer): Initialize the JNLPRuntime so the + configuration gets loaded. + * netx/net/sourceforge/jnlp/tools/KeyTool.java + (addToKeyStore(File,KeyStore)): New method. Adds certificate from + the file to the KeyStore. + (addToKeyStore(X509Certificate,KeyStore)): New method. Adds a + certificate to a KeyStore. + 2010-11-04 Deepak Bhole * plugin/icedteanp/java/sun/applet/PluginAppletViewer.java (update): diff -r 8e66d9386273 -r 9dd09feb371b netx/net/sourceforge/jnlp/runtime/DeploymentConfiguration.java --- a/netx/net/sourceforge/jnlp/runtime/DeploymentConfiguration.java Thu Nov 04 16:44:27 2010 -0700 +++ b/netx/net/sourceforge/jnlp/runtime/DeploymentConfiguration.java Mon Nov 08 16:36:17 2010 -0500 @@ -141,6 +141,18 @@ public final class DeploymentConfigurati * are not running */ public static final String KEY_USER_NETX_RUNNING_FILE = "deployment.user.runningfile"; + + public static final String KEY_USER_TRUSTED_CA_CERTS = "deployment.user.security.trusted.cacerts"; + public static final String KEY_USER_TRUSTED_JSSE_CA_CERTS = "deployment.user.security.trusted.jssecacerts"; + public static final String KEY_USER_TRUSTED_CERTS = "deployment.user.security.trusted.certs"; + public static final String KEY_USER_TRUSTED_JSSE_CERTS = "deployment.user.security.trusted.jssecerts"; + public static final String KEY_USER_TRUSTED_CLIENT_CERTS = "deployment.user.security.trusted.clientauthcerts"; + + public static final String KEY_SYSTEM_TRUSTED_CA_CERTS = "deployment.system.security.cacerts"; + public static final String KEY_SYSTEM_TRUSTED_JSSE_CA_CERTS = "deployment.system.security.jssecacerts"; + public static final String KEY_SYSTEM_TRUSTED_CERTS = "deployment.system.security.trusted.certs"; + public static final String KEY_SYSTEM_TRUSTED_JSSE_CERTS = "deployment.system.security.trusted.jssecerts"; + public static final String KEY_SYSTEM_TRUSTED_CLIENT_CERTS = "deployment.system.security.trusted.clientautcerts"; public enum ConfigType { System, User @@ -315,17 +327,17 @@ public final class DeploymentConfigurati { KEY_USER_NETX_RUNNING_FILE, LOCKS_DIR + File.separator + "netx_running" }, /* certificates and policy files */ { "deployment.user.security.policy", "file://" + USER_SECURITY + File.separator + "java.policy" }, - { "deployment.user.security.trusted.cacerts", USER_SECURITY + File.separator + "trusted.cacerts" }, - { "deployment.user.security.trusted.jssecacerts", USER_SECURITY + File.separator + "trusted.jssecacerts" }, - { "deployment.user.security.trusted.certs", USER_SECURITY + File.separator + "trusted.certs" }, - { "deployment.user.security.trusted.jssecerts", USER_SECURITY + File.separator + "trusted.jssecerts"}, - { "deployment.user.security.trusted.clientauthcerts", USER_SECURITY + File.separator + "trusted.clientcerts" }, + { KEY_USER_TRUSTED_CA_CERTS, USER_SECURITY + File.separator + "trusted.cacerts" }, + { KEY_USER_TRUSTED_JSSE_CA_CERTS, USER_SECURITY + File.separator + "trusted.jssecacerts" }, + { KEY_USER_TRUSTED_CERTS, USER_SECURITY + File.separator + "trusted.certs" }, + { KEY_USER_TRUSTED_JSSE_CERTS, USER_SECURITY + File.separator + "trusted.jssecerts"}, + { KEY_USER_TRUSTED_CLIENT_CERTS, USER_SECURITY + File.separator + "trusted.clientcerts" }, { "deployment.system.security.policy", null }, - { "deployment.system.security.cacerts", SYSTEM_SECURITY + File.separator + "cacerts" }, - { "deployment.system.security.jssecacerts", SYSTEM_SECURITY + File.separator + "jssecacerts" }, - { "deployment.system.security.trusted.certs", SYSTEM_SECURITY + File.separator + "trusted.certs" }, - { "deployment.system.security.trusted.jssecerts", SYSTEM_SECURITY + File.separator + "trusted.jssecerts" }, - { "deployment.system.security.trusted.clientautcerts", SYSTEM_SECURITY + File.separator + "trusted.clientcerts" }, + { KEY_SYSTEM_TRUSTED_CA_CERTS , SYSTEM_SECURITY + File.separator + "cacerts" }, + { KEY_SYSTEM_TRUSTED_JSSE_CA_CERTS, SYSTEM_SECURITY + File.separator + "jssecacerts" }, + { KEY_SYSTEM_TRUSTED_CERTS, SYSTEM_SECURITY + File.separator + "trusted.certs" }, + { KEY_SYSTEM_TRUSTED_JSSE_CERTS, SYSTEM_SECURITY + File.separator + "trusted.jssecerts" }, + { KEY_SYSTEM_TRUSTED_CLIENT_CERTS, SYSTEM_SECURITY + File.separator + "trusted.clientcerts" }, /* security access and control */ { "deployment.security.askgrantdialog.show", String.valueOf(true) }, { "deployment.security.askgrantdialog.notinca", String.valueOf(true) }, diff -r 8e66d9386273 -r 9dd09feb371b netx/net/sourceforge/jnlp/security/KeyStores.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/netx/net/sourceforge/jnlp/security/KeyStores.java Mon Nov 08 16:36:17 2010 -0500 @@ -0,0 +1,337 @@ +/* KeyStores.java + Copyright (C) 2010 Red Hat, Inc. + +This file is part of IcedTea. + +IcedTea is free software; you can redistribute it and/or +modify it under the terms of the GNU General Public License as published by +the Free Software Foundation, version 2. + +IcedTea is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +General Public License for more details. + +You should have received a copy of the GNU General Public License +along with IcedTea; see the file COPYING. If not, write to +the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA +02110-1301 USA. + +Linking this library statically or dynamically with other modules is +making a combined work based on this library. Thus, the terms and +conditions of the GNU General Public License cover the whole +combination. + +As a special exception, the copyright holders of this library give you +permission to link this library with independent modules to produce an +executable, regardless of the license terms of these independent +modules, and to copy and distribute the resulting executable under +terms of your choice, provided that you also meet, for each linked +independent module, the terms and conditions of the license of that +module. An independent module is a module which is not derived from +or based on this library. If you modify this library, you may extend +this exception to your version of the library, but you are not +obligated to do so. If you do not wish to do so, delete this +exception statement from your version. +*/ + +package net.sourceforge.jnlp.security; + +import java.io.File; +import java.io.FileInputStream; +import java.io.FileOutputStream; +import java.io.IOException; +import java.security.KeyStore; +import java.security.KeyStoreException; +import java.security.NoSuchAlgorithmException; +import java.security.cert.CertificateException; +import java.util.ArrayList; +import java.util.List; +import java.util.StringTokenizer; + +import net.sourceforge.jnlp.runtime.DeploymentConfiguration; +import net.sourceforge.jnlp.runtime.JNLPRuntime; +import net.sourceforge.jnlp.runtime.Translator; + +/** + * The KeyStores class allows easily accessing the various KeyStores + * used. + */ +public final class KeyStores { + + /* this gets turned into user-readable strings, see toUserReadableString */ + + public enum Level { + USER, + SYSTEM, + } + + public enum Type { + CERTS, + JSSE_CERTS, + CA_CERTS, + JSSE_CA_CERTS, + CLIENT_CERTS, + } + + private static final String KEYSTORE_TYPE = "JKS"; + /** the default password used to protect the KeyStores */ + private static final String DEFAULT_PASSWORD = "changeit"; + + public static final char[] getPassword() { + return DEFAULT_PASSWORD.toCharArray(); + } + + /** + * Returns a KeyStore corresponding to the appropriate level level (user or + * system) and type. + * + * @param level whether the KeyStore desired is a user-level or system-level + * KeyStore + * @param type the type of KeyStore desired + * @return a KeyStore containing certificates from the appropriate + */ + public static final KeyStore getKeyStore(Level level, Type type) { + boolean create = false; + if (level == Level.USER) { + create = true; + } else { + create = false; + } + return getKeyStore(level, type, create); + } + + /** + * Returns a KeyStore corresponding to the appropriate level level (user or + * system) and type. + * + * @param level whether the KeyStore desired is a user-level or system-level + * KeyStore + * @param type the type of KeyStore desired + * @return a KeyStore containing certificates from the appropriate + */ + public static final KeyStore getKeyStore(Level level, Type type, boolean create) { + String location = getKeyStoreLocation(level, type); + KeyStore ks = null; + try { + ks = createKeyStoreFromFile(new File(location), create, DEFAULT_PASSWORD); + } catch (Exception e) { + e.printStackTrace(); + } + return ks; + } + + /** + * Returns an array of KeyStore that contain certificates that are trusted. + * The KeyStores contain certificates from different sources. + * + * @return an array of KeyStore containing trusted Certificates + */ + public static final KeyStore[] getCertKeyStores() { + List result = new ArrayList(10); + KeyStore ks = null; + + /* System-level JSSE certificates */ + ks = getKeyStore(Level.SYSTEM, Type.JSSE_CERTS); + if (ks != null) { + result.add(ks); + } + /* System-level certificates */ + ks = getKeyStore(Level.SYSTEM, Type.CERTS); + if (ks != null) { + result.add(ks); + } + /* User-level JSSE certificates */ + ks = getKeyStore(Level.USER, Type.JSSE_CERTS); + if (ks != null) { + result.add(ks); + } + /* User-level certificates */ + ks = getKeyStore(Level.USER, Type.CERTS); + if (ks != null) { + result.add(ks); + } + + return result.toArray(new KeyStore[result.size()]); + } + + /** + * Returns an array of KeyStore that contain trusted CA certificates. + * + * @return an array of KeyStore containing trusted CA certificates + */ + public static final KeyStore[] getCAKeyStores() { + List result = new ArrayList(10); + KeyStore ks = null; + + /* System-level JSSE CA certificates */ + ks = getKeyStore(Level.SYSTEM, Type.JSSE_CA_CERTS); + if (ks != null) { + result.add(ks); + } + /* System-level CA certificates */ + ks = getKeyStore(Level.SYSTEM, Type.CA_CERTS); + if (ks != null) { + result.add(ks); + } + /* User-level JSSE CA certificates */ + ks = getKeyStore(Level.USER, Type.JSSE_CA_CERTS); + if (ks != null) { + result.add(ks); + } + /* User-level CA certificates */ + ks = getKeyStore(Level.USER, Type.CA_CERTS); + if (ks != null) { + result.add(ks); + } + + return result.toArray(new KeyStore[result.size()]); + } + + /** + * Returns the location of a KeyStore corresponding to the given level and type. + * @param level + * @param type + * @return + */ + public static final String getKeyStoreLocation(Level level, Type type) { + String configKey = null; + switch (level) { + case SYSTEM: + switch (type) { + case JSSE_CA_CERTS: + configKey = DeploymentConfiguration.KEY_SYSTEM_TRUSTED_JSSE_CA_CERTS; + break; + case CA_CERTS: + configKey = DeploymentConfiguration.KEY_SYSTEM_TRUSTED_CA_CERTS; + break; + case JSSE_CERTS: + configKey = DeploymentConfiguration.KEY_SYSTEM_TRUSTED_JSSE_CERTS; + break; + case CERTS: + configKey = DeploymentConfiguration.KEY_SYSTEM_TRUSTED_CERTS; + break; + case CLIENT_CERTS: + configKey = DeploymentConfiguration.KEY_SYSTEM_TRUSTED_CLIENT_CERTS; + break; + } + break; + case USER: + switch (type) { + case JSSE_CA_CERTS: + configKey = DeploymentConfiguration.KEY_USER_TRUSTED_JSSE_CA_CERTS; + break; + case CA_CERTS: + configKey = DeploymentConfiguration.KEY_USER_TRUSTED_CA_CERTS; + break; + case JSSE_CERTS: + configKey = DeploymentConfiguration.KEY_USER_TRUSTED_JSSE_CERTS; + break; + case CERTS: + configKey = DeploymentConfiguration.KEY_USER_TRUSTED_CERTS; + break; + case CLIENT_CERTS: + configKey = DeploymentConfiguration.KEY_SYSTEM_TRUSTED_CLIENT_CERTS; + break; + } + break; + } + + if (configKey == null) { + throw new RuntimeException("Unspported"); + } + + return JNLPRuntime.getConfiguration().getProperty(configKey); + } + + /** + * Returns a String that can be used as a translation key to create a + * user-visible representation of this KeyStore. Creates a string by + * concatenating a level and type, converting everything to Title Case and + * removing the _'s. (USER,CA_CERTS) becomes UserCaCerts. + * + * @param level + * @param type + * @return + */ + public static final String toTranslatableString(Level level, Type type) { + StringBuilder response = new StringBuilder(); + + if (level != null) { + String levelString = level.toString(); + response.append(levelString.substring(0, 1).toUpperCase()); + response.append(levelString.substring(1).toLowerCase()); + } + + if (type != null) { + String typeString = type.toString(); + StringTokenizer tokenizer = new StringTokenizer(typeString, "_"); + while (tokenizer.hasMoreTokens()) { + String token = tokenizer.nextToken(); + response.append(token.substring(0, 1).toUpperCase()); + response.append(token.substring(1).toLowerCase()); + } + } + + return response.toString(); + } + + /** + * Returns a human readable name for this KeyStore + * + * @param level the level of the KeyStore + * @param type the type of KeyStore + * @return a localized name for this KeyStore + */ + public static String toDisplayableString(Level level, Type type) { + return Translator.R(toTranslatableString(level, type)); + } + + /** + * Reads the file (using the password) and uses it to create a new + * {@link KeyStore}. If the file does not exist and should not be created, + * it returns an empty but initialized KeyStore + * + * @param file the file to load information from + * @param password the password to unlock the KeyStore file. + * @return a KeyStore containing data from the file + */ + private static final KeyStore createKeyStoreFromFile(File file, boolean createIfNotFound, + String password) throws IOException, KeyStoreException, NoSuchAlgorithmException, + CertificateException { + FileInputStream fis = null; + KeyStore ks = null; + + try { + if (createIfNotFound && !file.exists()) { + File parent = file.getParentFile(); + if (!parent.isDirectory() && !parent.mkdirs()) { + throw new IOException("unable to create " + parent); + } + ks = KeyStore.getInstance(KEYSTORE_TYPE); + ks.load(null, password.toCharArray()); + FileOutputStream fos = new FileOutputStream(file); + ks.store(fos, password.toCharArray()); + fos.close(); + } + + // TODO catch exception when password is incorrect and prompt user + + if (file.exists()) { + fis = new FileInputStream(file); + ks = KeyStore.getInstance(KEYSTORE_TYPE); + ks.load(fis, password.toCharArray()); + } else { + ks = KeyStore.getInstance(KEYSTORE_TYPE); + ks.load(null, password.toCharArray()); + } + } finally { + if (fis != null) { + fis.close(); + } + } + + return ks; + } + +} diff -r 8e66d9386273 -r 9dd09feb371b netx/net/sourceforge/jnlp/security/viewer/CertificatePane.java --- a/netx/net/sourceforge/jnlp/security/viewer/CertificatePane.java Thu Nov 04 16:44:27 2010 -0700 +++ b/netx/net/sourceforge/jnlp/security/viewer/CertificatePane.java Mon Nov 08 16:36:17 2010 -0500 @@ -44,35 +44,45 @@ import java.awt.event.ActionListener; import java.awt.event.ActionListener; import java.awt.event.KeyEvent; import java.io.FileOutputStream; +import java.io.OutputStream; import java.io.PrintStream; import java.security.KeyStore; import java.security.cert.Certificate; import java.security.cert.X509Certificate; import java.util.ArrayList; import java.util.Enumeration; +import java.util.List; import javax.swing.BorderFactory; import javax.swing.JButton; +import javax.swing.JComboBox; import javax.swing.JComponent; import javax.swing.JDialog; import javax.swing.JFileChooser; +import javax.swing.JLabel; import javax.swing.JOptionPane; import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.JTabbedPane; import javax.swing.JTable; +import javax.swing.event.ChangeEvent; +import javax.swing.event.ChangeListener; import javax.swing.table.DefaultTableModel; +import net.sourceforge.jnlp.security.KeyStores; import net.sourceforge.jnlp.security.SecurityUtil; import net.sourceforge.jnlp.security.SecurityWarningDialog; +import net.sourceforge.jnlp.security.KeyStores.Level; import net.sourceforge.jnlp.tools.KeyTool; public class CertificatePane extends JPanel { /** - * The certificates stored in the user's trusted.certs file. + * The certificates stored in the certificates file. */ private ArrayList certs = null; + From omajid at redhat.com Mon Nov 8 13:39:37 2010 From: omajid at redhat.com (Omair Majid) Date: Mon, 08 Nov 2010 16:39:37 -0500 Subject: [icedtea-web] RFC: integrate multiple KeyStore support into CertificateViewer In-Reply-To: <1767549457.280101289251166985.JavaMail.root@zmail01.collab.prod.int.phx2.redhat.com> References: <1767549457.280101289251166985.JavaMail.root@zmail01.collab.prod.int.phx2.redhat.com> Message-ID: <4CD86E19.9060803@redhat.com> On 11/08/2010 04:19 PM, Andrew Su wrote: > > ----- "Deepak Bhole" wrote: > >> From: "Deepak Bhole" >> To: "Omair Majid" >> Cc: "Andrew Su", "IcedTea" >> Sent: Monday, November 8, 2010 3:57:58 PM GMT -05:00 US/Canada Eastern >> Subject: Re: [icedtea-web] RFC: integrate multiple KeyStore support into CertificateViewer >> >> * Omair Majid [2010-11-08 15:36]: >>> Hi Andrew, >>> >>> On 11/08/2010 03:15 PM, Andrew Su wrote: >>>> Hi, >>>> >>>> On 11/04/2010 04:15 PM, Omair Majid wrote: >>>>> Hi, >>>>> >>>>> The attached patch starts integrating some of the security >> certificate >>>>> configuration into Netx. >>>>> >>>>> It adds a new class KeyStores that is used to access the >> different >>>>> types of KeyStore that Netx supports - per user and per system >>>>> variants of trusted CA KeyStore, trusted certificate store, JSSE >> CA >>>>> store, and JSSE certificates store. >>>>> >>>>> It also fixes up the certificate viewer (javaws -viewer) to use >> these >>>>> multiple certificate stores. >>>>> >>>>> ChangeLog >>>>> 2010-11-04 Omair Majid >>>>> >>>>> * netx/net/sourceforge/jnlp/runtime/DeploymentConfiguration.java: >>>>> Add KEY_USER_TRUSTED_CA_CERTS, KEY_USER_TRUSTED_JSSE_CA_CERTS, >>>>> KEY_USER_TRUSTED_CERTS, KEY_USER_TRUSTED_JSSE_CERTS, >>>>> KEY_USER_TRUSTED_CLIENT_CERTS, KEY_SYSTEM_TRUSTED_CA_CERTS, >>>>> KEY_SYSTEM_TRUSTED_JSSE_CA_CERTS, KEY_SYSTEM_TRUSTED_CERTS, >>>>> KEY_SYSTEM_TRUSTED_JSSE_CERTS, KEY_SYSTEM_TRUSTED_CLIENT_CERTS >>>>> (loadDefaultProperties): Use the defined constants. >>>>> * netx/net/sourceforge/jnlp/security/KeyStores.java: New class. >>>>> (getPassword): New method. Return the default password used for >>>>> KeyStores. >>>>> (getKeyStore(Level,Type)): New method. Returns the appropriate >>>>> KeyStore. >>>>> (getKeyStore(Level,Type,String)): Likewise. >>>>> (getCertKeyStores): New method. Return all the trusted >> certificate >>>>> KeyStores. >>>>> (getCAKeyStores): New method. Return all the trusted CA >> certificate >>>>> KeyStores. >>>>> (getKeyStoreLocation): New method. Return the location of the >>>>> appropriate KeyStore. >>>>> (toTranslatableString): New method. Return a string that can be >>>>> used to create a human-readable name for the KeyStore. >>>>> (toDisplayableString): New method. Return a human-readable name >>>>> for the KeyStore. >>>>> (createKeyStoreFromFile): New method. Creates a new KeyStore >> object, >>>>> initializing it from the given file if possible. >>>>> * netx/net/sourceforge/jnlp/security/viewer/CertificatePane.java >>>>> (CertificatePane): Create two JTables. Populate the tables when >>>>> done creating the user interface. >>>>> (initializeKeyStore): Use the correct keystore. >>>>> (addComponents): Do not read KeyStore. Create more interface >>>>> elements to show the new possible KeyStores. Mark some buttons to >>>>> be disabled when needed. >>>>> (repopulateTable): Renamed to... >>>>> (repopulateTables): New method. Read KeyStore and use the >> contents >>>>> to create the user and system tables. >>>>> (CertificateType): New class. >>>>> (CertificateTypeListener): New class. Listens to JComboBox change >>>>> events. >>>>> (TabChangeListener): New class. Listens to new tab selections. >>>>> (ImportButtonListener): Import certificates to the appropriate >>>>> KeyStore. >>>>> (ExportButtonListener): Find the certificate from the right >> table. >>>>> (RemoveButtonListener): Find the certificate from the right table >>>>> and right the KeyStore. >>>>> (DetailsButtonListener): Find the certificate from the right >> table. >>>>> * >> netx/net/sourceforge/jnlp/security/viewer/CertificateViewer.java >>>>> (showCertficaiteViewer): Initialize the JNLPRuntime so the >>>>> configuration gets loaded. >>>>> * netx/net/sourceforge/jnlp/tools/KeyTool.java >>>>> (addToKeyStore(File,KeyStore)): New method. Adds certificate from >>>>> the file to the KeyStore. >>>>> (addToKeyStore(X509Certificate,KeyStore)): New method. Adds a >>>>> certificate to a KeyStore. >>>>> >>>>> >>>>> Any thoughts or comments? >>>>> >>>>> Thanks, >>>>> Omair >>>>> icedtea-web-integrate-configuration-security-files-05.patch >>>>> >>>>> >>>>> diff -r 2405cef22921 >> netx/net/sourceforge/jnlp/runtime/DeploymentConfiguration.java >>>>> --- >> a/netx/net/sourceforge/jnlp/runtime/DeploymentConfiguration.java Wed >> Nov 03 23:06:23 2010 +0000 >>>>> +++ >> b/netx/net/sourceforge/jnlp/runtime/DeploymentConfiguration.java Thu >> Nov 04 15:57:40 2010 -0400 >>>>> @@ -142,6 +142,18 @@ >>>>> */ >>>>> public static final String KEY_USER_NETX_RUNNING_FILE = >> "deployment.user.runningfile"; >>>>> >>>>> + public static final String KEY_USER_TRUSTED_CA_CERTS = >> "deployment.user.security.trusted.cacerts"; >>>>> + public static final String KEY_USER_TRUSTED_JSSE_CA_CERTS = >> "deployment.user.security.trusted.jssecacerts"; >>>>> + public static final String KEY_USER_TRUSTED_CERTS = >> "deployment.user.security.trusted.certs"; >>>>> + public static final String KEY_USER_TRUSTED_JSSE_CERTS = >> "deployment.user.security.trusted.jssecerts"; >>>>> + public static final String KEY_USER_TRUSTED_CLIENT_CERTS = >> "deployment.user.security.trusted.clientauthcerts"; >>>>> + >>>>> + public static final String KEY_SYSTEM_TRUSTED_CA_CERTS = >> "deployment.system.security.cacerts"; >>>>> + public static final String KEY_SYSTEM_TRUSTED_JSSE_CA_CERTS = >> "deployment.system.security.jssecacerts"; >>>>> + public static final String KEY_SYSTEM_TRUSTED_CERTS = >> "deployment.system.security.trusted.certs"; >>>>> + public static final String KEY_SYSTEM_TRUSTED_JSSE_CERTS = >> "deployment.system.security.trusted.jssecerts"; >>>>> + public static final String KEY_SYSTEM_TRUSTED_CLIENT_CERTS = >> "deployment.system.security.trusted.clientautcerts"; >>>>> + >>>>> public enum ConfigType { >>>>> System, User >>>>> } >>>>> @@ -315,17 +327,17 @@ >>>>> { KEY_USER_NETX_RUNNING_FILE, LOCKS_DIR + >> File.separator + "netx_running" }, >>>>> /* certificates and policy files */ >>>>> { "deployment.user.security.policy","file://" + >> USER_SECURITY + File.separator + "java.policy" }, >>>>> - { "deployment.user.security.trusted.cacerts", >> USER_SECURITY + File.separator + "trusted.cacerts" }, >>>>> - { "deployment.user.security.trusted.jssecacerts", >> USER_SECURITY + File.separator + "trusted.jssecacerts" }, >>>>> - { "deployment.user.security.trusted.certs", >> USER_SECURITY + File.separator + "trusted.certs" }, >>>>> - { "deployment.user.security.trusted.jssecerts", >> USER_SECURITY + File.separator + "trusted.jssecerts"}, >>>>> - { "deployment.user.security.trusted.clientauthcerts", >> USER_SECURITY + File.separator + "trusted.clientcerts" }, >>>>> + { KEY_USER_TRUSTED_CA_CERTS, USER_SECURITY + >> File.separator + "trusted.cacerts" }, >>>>> + { KEY_USER_TRUSTED_JSSE_CA_CERTS, USER_SECURITY + >> File.separator + "trusted.jssecacerts" }, >>>>> + { KEY_USER_TRUSTED_CERTS, USER_SECURITY + >> File.separator + "trusted.certs" }, >>>>> + { KEY_USER_TRUSTED_JSSE_CERTS, USER_SECURITY + >> File.separator + "trusted.jssecerts"}, >>>>> + { KEY_USER_TRUSTED_CLIENT_CERTS, USER_SECURITY + >> File.separator + "trusted.clientcerts" }, >>>>> { "deployment.system.security.policy", null }, >>>>> - { "deployment.system.security.cacerts", >> SYSTEM_SECURITY + File.separator + "cacerts" }, >>>>> - { "deployment.system.security.jssecacerts", >> SYSTEM_SECURITY + File.separator + "jssecacerts" }, >>>>> - { "deployment.system.security.trusted.certs", >> SYSTEM_SECURITY + File.separator + "trusted.certs" }, >>>>> - { "deployment.system.security.trusted.jssecerts", >> SYSTEM_SECURITY + File.separator + "trusted.jssecerts" }, >>>>> - { >> "deployment.system.security.trusted.clientautcerts", SYSTEM_SECURITY + >> File.separator + "trusted.clientcerts" }, >>>>> + { KEY_SYSTEM_TRUSTED_CA_CERTS , SYSTEM_SECURITY + >> File.separator + "cacerts" }, >>>>> + { KEY_SYSTEM_TRUSTED_JSSE_CA_CERTS, SYSTEM_SECURITY + >> File.separator + "jssecacerts" }, >>>>> + { KEY_SYSTEM_TRUSTED_CERTS, SYSTEM_SECURITY + >> File.separator + "trusted.certs" }, >>>>> + { KEY_SYSTEM_TRUSTED_JSSE_CERTS, SYSTEM_SECURITY + >> File.separator + "trusted.jssecerts" }, >>>>> + { KEY_SYSTEM_TRUSTED_CLIENT_CERTS, SYSTEM_SECURITY + >> File.separator + "trusted.clientcerts" }, >>>>> /* security access and control */ >>>>> { "deployment.security.askgrantdialog.show", >> String.valueOf(true) }, >>>>> { "deployment.security.askgrantdialog.notinca", >> String.valueOf(true) }, >>>>> diff -r 2405cef22921 >> netx/net/sourceforge/jnlp/security/KeyStores.java >>>>> --- /dev/null Thu Jan 01 00:00:00 1970 +0000 >>>>> +++ b/netx/net/sourceforge/jnlp/security/KeyStores.java Thu Nov 04 >> 15:57:40 2010 -0400 >>>>> @@ -0,0 +1,300 @@ >>>>> +package net.sourceforge.jnlp.security; >>>>> + >>>>> +import java.io.File; >>>>> +import java.io.FileInputStream; >>>>> +import java.io.FileOutputStream; >>>>> +import java.io.IOException; >>>>> +import java.security.KeyStore; >>>>> +import java.security.KeyStoreException; >>>>> +import java.security.NoSuchAlgorithmException; >>>>> +import java.security.cert.CertificateException; >>>>> +import java.util.ArrayList; >>>>> +import java.util.List; >>>>> +import java.util.StringTokenizer; >>>>> + >>>>> +import net.sourceforge.jnlp.runtime.DeploymentConfiguration; >>>>> +import net.sourceforge.jnlp.runtime.JNLPRuntime; >>>>> +import net.sourceforge.jnlp.runtime.Translator; >>>>> + >>>>> +/** >>>>> + * TheKeyStores class allows easily accessing the >> various KeyStores >>>>> + * used. >>>>> + */ >>>>> +public final class KeyStores { >>>>> + >>>>> + /* this gets turned into user-readable strings, see >> toUserReadableString */ >>>>> + >>>>> + public enum Level { >>>>> + USER, >>>>> + SYSTEM, >>>>> + } >>>>> + >>>>> + public enum Type { >>>>> + CERTS, >>>>> + JSSE_CERTS, >>>>> + CA_CERTS, >>>>> + JSSE_CA_CERTS, >>>>> + CLIENT_CERTS, >>>>> + } >>>>> + >>>>> + private static final String KEYSTORE_TYPE = "JKS"; >>>>> + /** the default password used to protect the KeyStores */ >>>>> + private static final String DEFAULT_PASSWORD = "changeit"; >>>>> + >>>>> + public static final char[] getPassword() { >>>>> + return DEFAULT_PASSWORD.toCharArray(); >>>>> + } >>>>> + >>>>> + /** >>>>> + * Returns a KeyStore corresponding to the appropriate level >> level (user or >>>>> + * system) and type. >>>>> + * >>>>> + * @param level whether the KeyStore desired is a user-level >> or system-level >>>>> + * KeyStore >>>>> + * @param type the type of KeyStore desired >>>>> + * @return a KeyStore containing certificates from the >> appropriate >>>>> + */ >>>>> + public static final KeyStore getKeyStore(Level level, Type >> type) { >>>>> + boolean create = false; >>>>> + if (level == Level.USER) { >>>>> + create = true; >>>>> + } else { >>>>> + create = false; >>>>> + } >>>>> + return getKeyStore(level, type, create); >>>>> + } >>>>> + >>>>> + /** >>>>> + * Returns a KeyStore corresponding to the appropriate level >> level (user or >>>>> + * system) and type. >>>>> + * >>>>> + * @param level whether the KeyStore desired is a user-level >> or system-level >>>>> + * KeyStore >>>>> + * @param type the type of KeyStore desired >>>>> + * @return a KeyStore containing certificates from the >> appropriate >>>>> + */ >>>>> + public static final KeyStore getKeyStore(Level level, Type >> type, boolean create) { >>>>> + String location = getKeyStoreLocation(level, type); >>>>> + KeyStore ks = null; >>>>> + try { >>>>> + ks = createKeyStoreFromFile(new File(location), >> create, DEFAULT_PASSWORD); >>>>> + } catch (Exception e) { >>>>> + e.printStackTrace(); >>>>> + } >>>>> + return ks; >>>>> + } >>>>> + >>>>> + /** >>>>> + * Returns an array of KeyStore that contain certificates >> that are trusted. >>>>> + * The KeyStores contain certificates from different >> sources. >>>>> + * >>>>> + * @return an array of KeyStore containing trusted >> Certificates >>>>> + */ >>>>> + public static final KeyStore[] getCertKeyStores() { >>>>> + List result = new ArrayList(10); >>>>> + KeyStore ks = null; >>>>> + >>>>> + /* System-level JSSE certificates */ >>>>> + ks = getKeyStore(Level.SYSTEM, Type.JSSE_CERTS); >>>>> + if (ks != null) { >>>>> + result.add(ks); >>>>> + } >>>>> + /* System-level certificates */ >>>>> + ks = getKeyStore(Level.SYSTEM, Type.CERTS); >>>>> + if (ks != null) { >>>>> + result.add(ks); >>>>> + } >>>>> + /* User-level JSSE certificates */ >>>>> + ks = getKeyStore(Level.USER, Type.JSSE_CERTS); >>>>> + if (ks != null) { >>>>> + result.add(ks); >>>>> + } >>>>> + /* User-level certificates */ >>>>> + ks = getKeyStore(Level.USER, Type.CERTS); >>>>> + if (ks != null) { >>>>> + result.add(ks); >>>>> + } >>>>> + >>>>> + return result.toArray(new KeyStore[result.size()]); >>>>> + } >>>>> + >>>>> + /** >>>>> + * Returns an array of KeyStore that contain trusted CA >> certificates. >>>>> + * >>>>> + * @return an array of KeyStore containing trusted CA >> certificates >>>>> + */ >>>>> + public static final KeyStore[] getCAKeyStores() { >>>>> + List result = new ArrayList(10); >>>>> + KeyStore ks = null; >>>>> + >>>>> + /* System-level JSSE CA certificates */ >>>>> + ks = getKeyStore(Level.SYSTEM, Type.JSSE_CA_CERTS); >>>>> + if (ks != null) { >>>>> + result.add(ks); >>>>> + } >>>>> + /* System-level CA certificates */ >>>>> + ks = getKeyStore(Level.SYSTEM, Type.CA_CERTS); >>>>> + if (ks != null) { >>>>> + result.add(ks); >>>>> + } >>>>> + /* User-level JSSE CA certificates */ >>>>> + ks = getKeyStore(Level.USER, Type.JSSE_CA_CERTS); >>>>> + if (ks != null) { >>>>> + result.add(ks); >>>>> + } >>>>> + /* User-level CA certificates */ >>>>> + ks = getKeyStore(Level.USER, Type.CA_CERTS); >>>>> + if (ks != null) { >>>>> + result.add(ks); >>>>> + } >>>>> + >>>>> + return result.toArray(new KeyStore[result.size()]); >>>>> + } >>>>> + >>>>> + /** >>>>> + * Returns the location of a KeyStore corresponding to the >> given level and type. >>>>> + * @param level >>>>> + * @param type >>>>> + * @return >>>>> + */ >>>>> + public static final String getKeyStoreLocation(Level level, >> Type type) { >>>>> + String configKey = null; >>>>> + switch (level) { >>>>> + case SYSTEM: >>>>> + switch (type) { >>>>> + case JSSE_CA_CERTS: >>>>> + configKey = >> DeploymentConfiguration.KEY_SYSTEM_TRUSTED_JSSE_CA_CERTS; >>>>> + break; >>>>> + case CA_CERTS: >>>>> + configKey = >> DeploymentConfiguration.KEY_SYSTEM_TRUSTED_CA_CERTS; >>>>> + break; >>>>> + case JSSE_CERTS: >>>>> + configKey = >> DeploymentConfiguration.KEY_SYSTEM_TRUSTED_JSSE_CERTS; >>>>> + break; >>>>> + case CERTS: >>>>> + configKey = >> DeploymentConfiguration.KEY_SYSTEM_TRUSTED_CERTS; >>>>> + break; >>>>> + case CLIENT_CERTS: >>>>> + configKey = >> DeploymentConfiguration.KEY_SYSTEM_TRUSTED_CLIENT_CERTS; >>>>> + break; >>>>> + } >>>>> + break; >>>>> + case USER: >>>>> + switch (type) { >>>>> + case JSSE_CA_CERTS: >>>>> + configKey = >> DeploymentConfiguration.KEY_USER_TRUSTED_JSSE_CA_CERTS; >>>>> + break; >>>>> + case CA_CERTS: >>>>> + configKey = >> DeploymentConfiguration.KEY_USER_TRUSTED_CA_CERTS; >>>>> + break; >>>>> + case JSSE_CERTS: >>>>> + configKey = >> DeploymentConfiguration.KEY_USER_TRUSTED_JSSE_CERTS; >>>>> + break; >>>>> + case CERTS: >>>>> + configKey = >> DeploymentConfiguration.KEY_USER_TRUSTED_CERTS; >>>>> + break; >>>>> + case CLIENT_CERTS: >>>>> + configKey = >> DeploymentConfiguration.KEY_SYSTEM_TRUSTED_CLIENT_CERTS; >>>>> + break; >>>>> + } >>>>> + break; >>>>> + } >>>>> + >>>>> + if (configKey == null) { >>>>> + throw new RuntimeException("Unspported"); >>>>> + } >>>>> + >>>>> + return >> JNLPRuntime.getConfiguration().getProperty(configKey); >>>>> + } >>>>> + >>>>> + /** >>>>> + * Returns a String that can be used as a translation key to >> create a >>>>> + * user-visible representation of this KeyStore. Creates a >> string by >>>>> + * concatenating a level and type, converting everything to >> Title Case and >>>>> + * removing the _'s. (USER,CA_CERTS) becomes UserCaCerts. >>>>> + * >>>>> + * @param level >>>>> + * @param type >>>>> + * @return >>>>> + */ >>>>> + public static final String toTranslatableString(Level level, >> Type type) { >>>>> + StringBuilder response = new StringBuilder(); >>>>> + >>>>> + if (level != null) { >>>>> + String levelString = level.toString(); >>>>> + response.append(levelString.substring(0, >> 1).toUpperCase()); >>>>> + >> response.append(levelString.substring(1).toLowerCase()); >>>>> + } >>>>> + >>>>> + if (type != null) { >>>>> + String typeString = type.toString(); >>>>> + StringTokenizer tokenizer = new >> StringTokenizer(typeString, "_"); >>>>> + while (tokenizer.hasMoreTokens()) { >>>>> + String token = tokenizer.nextToken(); >>>>> + response.append(token.substring(0, >> 1).toUpperCase()); >>>>> + >> response.append(token.substring(1).toLowerCase()); >>>>> + } >>>>> + } >>>>> + >>>>> + return response.toString(); >>>>> + } >>>>> + >>>>> + /** >>>>> + * Returns a human readable name for this KeyStore >>>>> + * >>>>> + * @param level the level of the KeyStore >>>>> + * @param type the type of KeyStore >>>>> + * @return a localized name for this KeyStore >>>>> + */ >>>>> + public static String toDisplayableString(Level level, Type >> type) { >>>>> + return Translator.R(toTranslatableString(level, type)); >>>>> + } >>>>> + >>>>> + /** >>>>> + * Reads the file (using the password) and uses it to create >> a new >>>>> + * {@link KeyStore}. If the file does not exist and should >> not be created, >>>>> + * it returns an empty but initialized KeyStore >>>>> + * >>>>> + * @param file the file to load information from >>>>> + * @param password the password to unlock the KeyStore file. >>>>> + * @return a KeyStore containing data from the file >>>>> + */ >>>>> + private static final KeyStore createKeyStoreFromFile(File >> file, boolean createIfNotFound, >>>>> + String password) throws IOException, >> KeyStoreException, NoSuchAlgorithmException, >>>>> + CertificateException { >>>>> + FileInputStream fis = null; >>>>> + KeyStore ks = null; >>>>> + >>>>> + try { >>>>> + if (createIfNotFound&& !file.exists()) { >>>>> + File parent = file.getParentFile(); >>>>> + if (!parent.isDirectory()&& !parent.mkdirs()) { >>>> According to mkdirs() some of the parent directories may get >> created. >>>> Maybe clean up if attempt failed. >>> >>> The problem is that we dont know which directories were created. We >>> could keep track of all the parent directories which did not exist >>> and try deleting them, but IMHO the cleanup is unnecessary. >>> >>>>> + throw new IOException("unable to create " + >> parent); >>>>> + } >>>>> + ks = KeyStore.getInstance(KEYSTORE_TYPE); >>>>> + ks.load(null, password.toCharArray()); >>>>> + FileOutputStream fos = new >> FileOutputStream(file); >>>>> + ks.store(fos, password.toCharArray()); >>>>> + fos.close(); >>>>> + } >>>>> + >>>>> + // TODO catch exception when password is incorrect >> and prompt user >>>>> + >>>>> + if (file.exists()) { >>>>> + fis = new FileInputStream(file); >>>>> + ks = KeyStore.getInstance(KEYSTORE_TYPE); >>>>> + ks.load(fis, password.toCharArray()); >>>>> + } else { >>>>> + ks = KeyStore.getInstance(KEYSTORE_TYPE); >>>>> + ks.load(null, password.toCharArray()); >>>>> + } >>>>> + } finally { >>>>> + if (fis != null) { >>>>> + fis.close(); >>>>> + } >>>>> + } >>>>> + >>>>> + return ks; >>>>> + } >>>>> + >>>>> +} >>>>> diff -r 2405cef22921 >> netx/net/sourceforge/jnlp/security/viewer/CertificatePane.java >>>>> --- >> a/netx/net/sourceforge/jnlp/security/viewer/CertificatePane.java Wed >> Nov 03 23:06:23 2010 +0000 >>>>> +++ >> b/netx/net/sourceforge/jnlp/security/viewer/CertificatePane.java Thu >> Nov 04 15:57:40 2010 -0400 >>>>> @@ -44,93 +44,153 @@ >>>>> import java.awt.event.ActionListener; >>>>> import java.awt.event.KeyEvent; >>>>> import java.io.FileOutputStream; >>>>> +import java.io.OutputStream; >>>>> import java.io.PrintStream; >>>>> import java.security.KeyStore; >>>>> import java.security.cert.Certificate; >>>>> import java.security.cert.X509Certificate; >>>>> import java.util.ArrayList; >>>>> import java.util.Enumeration; >>>>> +import java.util.List; >>>>> >>>>> import javax.swing.BorderFactory; >>>>> import javax.swing.JButton; >>>>> +import javax.swing.JComboBox; >>>>> import javax.swing.JComponent; >>>>> import javax.swing.JDialog; >>>>> import javax.swing.JFileChooser; >>>>> +import javax.swing.JLabel; >>>>> import javax.swing.JOptionPane; >>>>> import javax.swing.JPanel; >>>>> import javax.swing.JScrollPane; >>>>> import javax.swing.JTabbedPane; >>>>> import javax.swing.JTable; >>>>> +import javax.swing.event.ChangeEvent; >>>>> +import javax.swing.event.ChangeListener; >>>>> import javax.swing.table.DefaultTableModel; >>>>> >>>>> +import net.sourceforge.jnlp.security.KeyStores; >>>>> import net.sourceforge.jnlp.security.SecurityUtil; >>>>> import net.sourceforge.jnlp.security.SecurityWarningDialog; >>>>> +import net.sourceforge.jnlp.security.KeyStores.Level; >>>>> import net.sourceforge.jnlp.tools.KeyTool; >>>>> >>>>> public class CertificatePane extends JPanel { >>>>> >>>>> /** >>>>> - * The certificates stored in the user's trusted.certs >> file. >>>>> + * The certificates stored in the certificates file. >>>>> */ >>>>> private ArrayList certs = null; >>>>> >>>>> + private static final Dimension TABLE_DIMENSION = new >> Dimension(500,200); >>>>> + >>>>> /** >>>>> * "Issued To" and "Issued By" string pairs for certs. >>>>> */ >>>>> private String[][] issuedToAndBy = null; >>>>> private final String[] columnNames = { "Issued To", >> "Issued By" }; >>>>> >>>>> - private JTable table; >>>>> + private final CertificateType[] certificateTypes = new >> CertificateType[] { >>>>> + new CertificateType(KeyStores.Type.CA_CERTS), >>>>> + new CertificateType(KeyStores.Type.JSSE_CA_CERTS), >>>>> + new CertificateType(KeyStores.Type.CERTS), >>>>> + new CertificateType(KeyStores.Type.JSSE_CERTS), >>>>> + }; >>>>> + >>>>> + JTabbedPane tabbedPane; >>>>> + private final JTable userTable; >>>>> + private final JTable systemTable; >>>>> + private JComboBox certificateTypeCombo; >>>>> + private KeyStores.Type currentKeyStoreType; >>>>> + private KeyStores.Level currentKeyStoreLevel; >>>>> + >>>>> + /** JComponents that should be disbled for system store >> */ >>>>> + private final List disableForSystem; >>>>> >>>>> private JDialog parent; >>>>> - >>>>> private JComponent defaultFocusComponent = null; >>>>> >>>>> /** >>>>> - * The KeyStore associated with the user's trusted.certs >> file. >>>>> + * The Current KeyStore. Only one table/tab is visible >> for interaction to >>>>> + * the user. This KeyStore corresponds to that. >>>>> */ >>>>> private KeyStore keyStore = null; >>>>> >>>>> public CertificatePane(JDialog parent) { >>>>> super(); >>>>> this.parent = parent; >>>>> - initializeKeyStore(); >>>>> + >>>>> + userTable = new JTable(null); >>>>> + systemTable = new JTable(null); >>>>> + disableForSystem = new ArrayList(); >>>>> + >>>>> addComponents(); >>>>> + >>>>> + currentKeyStoreType = >> ((CertificateType)(certificateTypeCombo.getSelectedItem())).getType(); >>>>> + if (tabbedPane.getSelectedIndex() == 0) { >>>>> + currentKeyStoreLevel = Level.USER; >>>>> + } else { >>>>> + currentKeyStoreLevel = Level.SYSTEM; >>>>> + } >>>>> + >>>>> + repopulateTables(); >>>>> } >>>>> >>>>> /** >>>>> * Reads the user's trusted.cacerts keystore. >>>>> */ >>>>> private void initializeKeyStore() { >>>>> - try { >>>>> - keyStore = >> SecurityUtil.getUserKeyStore(); >>>>> - } catch (Exception e) { >>>>> - // TODO Auto-generated catch block >>>>> - e.printStackTrace(); >>>>> - } >>>>> + try { >>>>> + keyStore = >> KeyStores.getKeyStore(currentKeyStoreLevel, currentKeyStoreType); >>>>> + } catch (Exception e) { >>>>> + e.printStackTrace(); >>>>> + } >>>>> } >>>>> >>>>> //create the GUI here. >>>>> protected void addComponents() { >>>>> - readKeyStore(); >>>>> >>>>> JPanel main = new JPanel(new BorderLayout()); >>>>> >>>>> + JPanel certificateTypePanel = new JPanel(new >> BorderLayout()); >>>>> + >> certificateTypePanel.setBorder(BorderFactory.createEmptyBorder(5,5,5,5)); >>>>> + >>>>> + JLabel certificateTypeLabel = new >> JLabel("Certificate Type:"); >>>>> + >>>>> + certificateTypeCombo = new >> JComboBox(certificateTypes); >>>>> + certificateTypeCombo.addActionListener(new >> CertificateTypeListener()); >>>>> + >>>>> + certificateTypePanel.add(certificateTypeLabel, >> BorderLayout.LINE_START); >>>>> + certificateTypePanel.add(certificateTypeCombo, >> BorderLayout.CENTER); >>>>> + >>>>> JPanel tablePanel = new JPanel(new >> BorderLayout()); >>>>> >>>>> - //Table >>>>> - DefaultTableModel tableModel >>>>> + // User Table >>>>> + DefaultTableModel userTableModel >>>>> = new DefaultTableModel(issuedToAndBy, >> columnNames); >>>>> - table = new JTable(tableModel); >>>>> - >> table.getTableHeader().setReorderingAllowed(false); >>>>> - table.setFillsViewportHeight(true); >>>>> - JScrollPane tablePane = new JScrollPane(table); >>>>> - tablePane.setPreferredSize(new >> Dimension(500,200)); >>>>> - tablePane.setSize(new Dimension(500,200)); >>>>> - >> tablePane.setBorder(BorderFactory.createEmptyBorder(10,10,10,10)); >>>>> + userTable.setModel(userTableModel); >>>>> + >> userTable.getTableHeader().setReorderingAllowed(false); >>>>> + userTable.setFillsViewportHeight(true); >>>>> + JScrollPane userTablePane = new >> JScrollPane(userTable); >>>>> + userTablePane.setPreferredSize(TABLE_DIMENSION); >>>>> + userTablePane.setSize(TABLE_DIMENSION); >>>>> + >> userTablePane.setBorder(BorderFactory.createEmptyBorder(10,10,10,10)); >>>>> >>>>> - JTabbedPane tabbedPane = new JTabbedPane(); >>>>> - tabbedPane.addTab("User", tablePane); >>>>> + // System Table >>>>> + DefaultTableModel systemTableModel = new >> DefaultTableModel(issuedToAndBy, columnNames); >>>>> + systemTable.setModel(systemTableModel); >>>>> + >> systemTable.getTableHeader().setReorderingAllowed(false); >>>>> + systemTable.setFillsViewportHeight(true); >>>>> + JScrollPane systemTablePane = new >> JScrollPane(systemTable); >>>>> + >> systemTablePane.setPreferredSize(TABLE_DIMENSION); >>>>> + systemTablePane.setSize(TABLE_DIMENSION); >>>>> + >> systemTablePane.setBorder(BorderFactory.createEmptyBorder(10,10,10,10)); >>>>> + >>>>> + tabbedPane = new JTabbedPane(); >>>>> + tabbedPane.addTab("User", userTablePane); >>>>> + tabbedPane.addTab("System", systemTablePane); >>>>> + tabbedPane.addChangeListener(new >> TabChangeListener()); >>>>> + >>>>> JPanel buttonPanel = new JPanel(new >> FlowLayout()); >>>>> >>>>> String[] buttonNames = {"Import", "Export", >> "Remove", "Details"}; >>>>> @@ -156,6 +216,10 @@ >>>>> button.setMnemonic(buttonMnemonics[i]); >>>>> button.addActionListener(listeners[i]); >>>>> button.setSize(maxWidth, >> button.getSize().height); >>>>> + // import and remove buttons >>>>> + if (i == 0 || i == 2) { >>>>> + disableForSystem.add(button); >>>>> + } >>>>> buttonPanel.add(button); >>>>> } >>>>> >>>>> @@ -169,6 +233,7 @@ >>>>> defaultFocusComponent = closeButton; >>>>> closePanel.add(closeButton, BorderLayout.EAST); >>>>> >>>>> + main.add(certificateTypePanel, >> BorderLayout.NORTH); >>>>> main.add(tablePanel, BorderLayout.CENTER); >>>>> main.add(closePanel, BorderLayout.SOUTH); >>>>> >>>>> @@ -204,6 +269,7 @@ >>>>> } >>>>> } catch (Exception e) { >>>>> //TODO >>>>> + e.printStackTrace(); >>>>> } >>>>> } >>>>> >>>>> @@ -211,14 +277,16 @@ >>>>> * Re-reads the certs file and repopulates the JTable. >> This is typically >>>>> * called after a certificate was deleted from the >> keystore. >>>>> */ >>>>> - private void repopulateTable() { >>>>> + private void repopulateTables() { >>>>> initializeKeyStore(); >>>>> readKeyStore(); >>>>> DefaultTableModel tableModel >>>>> = new DefaultTableModel(issuedToAndBy, >> columnNames); >>>>> >>>>> - table.setModel(tableModel); >>>>> - repaint(); >>>>> + userTable.setModel(tableModel); >>>>> + >>>>> + tableModel = new DefaultTableModel(issuedToAndBy, >> columnNames); >>>>> + systemTable.setModel(tableModel); >>>>> } >>>>> >>>>> public void focusOnDefaultButton() { >>>>> @@ -227,6 +295,61 @@ >>>>> } >>>>> } >>>>> >>>>> + /** Allows storing KeyStores.Types in a JComponent */ >>>>> + private class CertificateType { >>>>> + private final KeyStores.Type type; >>>>> + >>>>> + public CertificateType(KeyStores.Type type) { >>>>> + this.type = type; >>>>> + } >>>>> + >>>>> + public KeyStores.Type getType() { >>>>> + return type; >>>>> + } >>>>> + >>>>> + public String toString() { >>>>> + return KeyStores.toTranslatableString(null, type); >>>>> + } >>>>> + } >>>>> + >>>>> + /** Invoked when a user selects a different certificate type >> */ >>>>> + private class CertificateTypeListener implements >> ActionListener { >>>>> + @Override >>>>> + public void actionPerformed(ActionEvent e) { >>>>> + JComboBox source = (JComboBox) e.getSource(); >>>>> + CertificateType type = (CertificateType) >> source.getSelectedItem(); >>>>> + currentKeyStoreType = type.getType(); >>>>> + repopulateTables(); >>>>> + } >>>>> + } >>>>> + >>>>> + /** >>>>> + * Invoked when a user selects a different tab (switches from >> user to system >>>>> + * or vice versa). Changes the currentKeyStore Enables or >> disables buttons. >>>>> + */ >>>>> + private class TabChangeListener implements ChangeListener { >>>>> + @Override >>>>> + public void stateChanged(ChangeEvent e) { >>>>> + JTabbedPane source = (JTabbedPane) e.getSource(); >>>>> + switch (source.getSelectedIndex()) { >>>>> + case 0: >>>>> + currentKeyStoreLevel = Level.USER; >>>>> + for (JComponent component : disableForSystem) >> { >>>>> + component.setEnabled(true); >>>>> + } >>>>> + break; >>>>> + case 1: >>>>> + currentKeyStoreLevel = Level.SYSTEM; >>>>> + for (JComponent component : disableForSystem) >> { >>>>> + component.setEnabled(false); >>>>> + } >>>>> + break; >>>>> + } >>>>> + repopulateTables(); >>>>> + >>>>> + } >>>>> + } >>>>> + >>>>> private class ImportButtonListener implements >> ActionListener { >>>>> public void actionPerformed(ActionEvent e) { >>>>> >>>>> @@ -235,8 +358,12 @@ >>>>> if(returnVal == JFileChooser.APPROVE_OPTION) { >>>>> try { >>>>> KeyTool kt = new KeyTool(); >>>>> - >> kt.importCert(chooser.getSelectedFile()); >>>>> - repopulateTable(); >>>>> + KeyStore ks = keyStore; >>>>> + >> kt.addToKeyStore(chooser.getSelectedFile(), ks); >>>>> + OutputStream os = new >> FileOutputStream( >>>>> + >> KeyStores.getKeyStoreLocation(currentKeyStoreLevel, >> currentKeyStoreType)); >>>>> + ks.store(os, >> KeyStores.getPassword()); >>>>> + repopulateTables(); >>>>> } catch (Exception ex) { >>>>> // TODO: handle exception >>>>> ex.printStackTrace(); >>>>> @@ -247,6 +374,14 @@ >>>>> >>>>> private class ExportButtonListener implements >> ActionListener { >>>>> public void actionPerformed(ActionEvent e) { >>>>> + >>>>> + JTable table = null; >>>>> + if (currentKeyStoreLevel == Level.USER) { >>>>> + table = userTable; >>>>> + } else { >>>>> + table = systemTable; >>>>> + } >>>>> + >>>>> //For now, let's just export in -rfc >> mode as keytool does. >>>>> //we'll write to a file the exported >> certificate. >>>>> >>>>> @@ -263,7 +398,7 @@ >>>>> Certificate c = >> keyStore.getCertificate(alias); >>>>> PrintStream ps = >> new PrintStream(chooser.getSelectedFile().getAbsolutePath()); >>>>> >> KeyTool.dumpCert(c, ps); >>>>> - >> repopulateTable(); >>>>> + >> repopulateTables(); >>>>> } >>>>> } >>>>> } >>>>> @@ -281,6 +416,12 @@ >>>>> */ >>>>> public void actionPerformed(ActionEvent e) { >>>>> >>>>> + JTable table = null; >>>>> + if (currentKeyStoreLevel == Level.USER) { >>>>> + table = userTable; >>>>> + } else { >>>>> + table = systemTable; >>>>> + } >>>>> try { >>>>> int selectedRow = >> table.getSelectedRow(); >>>>> >>>>> @@ -295,12 +436,12 @@ >>>>> if (i == 0) { >>>>> >> keyStore.deleteEntry(alias); >>>>> FileOutputStream >> fos = new FileOutputStream( >>>>> - >> SecurityUtil.getTrustedCertsFilename()); >>>>> - >> keyStore.store(fos, SecurityUtil.getTrustedCertsPassword()); >>>>> + >> KeyStores.getKeyStoreLocation(currentKeyStoreLevel, >> currentKeyStoreType)); >>>>> + >> keyStore.store(fos, KeyStores.getPassword()); >>>>> fos.close(); >>>>> } >>>>> } >>>>> - repopulateTable(); >>>>> + repopulateTables(); >>>>> } >>>>> } catch (Exception ex) { >>>>> // TODO >>>>> @@ -317,6 +458,13 @@ >>>>> */ >>>>> public void actionPerformed(ActionEvent e) { >>>>> >>>>> + JTable table = null; >>>>> + if (currentKeyStoreLevel == Level.USER) { >>>>> + table = userTable; >>>>> + } else { >>>>> + table = systemTable; >>>>> + } >>>>> + >>>>> int selectedRow = table.getSelectedRow(); >>>>> if (selectedRow != -1&& selectedRow>= 0) { >>>>> X509Certificate c = >> certs.get(selectedRow); >>>>> diff -r 2405cef22921 >> netx/net/sourceforge/jnlp/security/viewer/CertificateViewer.java >>>>> --- >> a/netx/net/sourceforge/jnlp/security/viewer/CertificateViewer.java Wed >> Nov 03 23:06:23 2010 +0000 >>>>> +++ >> b/netx/net/sourceforge/jnlp/security/viewer/CertificateViewer.java Thu >> Nov 04 15:57:40 2010 -0400 >>>>> @@ -48,6 +48,8 @@ >>>>> import javax.swing.JDialog; >>>>> import javax.swing.UIManager; >>>>> >>>>> +import net.sourceforge.jnlp.runtime.JNLPRuntime; >>>>> + >>>>> public class CertificateViewer extends JDialog { >>>>> >>>>> private boolean initialized = false; >>>>> @@ -97,6 +99,7 @@ >>>>> >>>>> >>>>> public static void showCertificateViewer() throws >> Exception { >>>>> + JNLPRuntime.initialize(true); >>>>> setSystemLookAndFeel(); >>>>> >>>>> CertificateViewer cv = new CertificateViewer(); >>>>> diff -r 2405cef22921 netx/net/sourceforge/jnlp/tools/KeyTool.java >>>>> --- a/netx/net/sourceforge/jnlp/tools/KeyTool.java Wed Nov 03 >> 23:06:23 2010 +0000 >>>>> +++ b/netx/net/sourceforge/jnlp/tools/KeyTool.java Thu Nov 04 >> 15:57:40 2010 -0400 >>>>> @@ -32,7 +32,9 @@ >>>>> import java.io.IOException; >>>>> import java.io.InputStream; >>>>> import java.io.PrintStream; >>>>> +import java.math.BigInteger; >>>>> import java.security.KeyStore; >>>>> +import java.security.KeyStoreException; >>>>> import java.security.MessageDigest; >>>>> import java.security.PublicKey; >>>>> import java.security.cert.Certificate; >>>>> @@ -117,6 +119,47 @@ >>>>> return importCert((Certificate)cert); >>>>> } >>>>> >>>>> + /** >>>>> + * Adds the X509Certficate in the file to the KeyStore >>>>> + */ >>>>> + public final void addToKeyStore(File file, KeyStore ks) >> throws CertificateException, >>>>> + IOException, KeyStoreException { >>>>> + BufferedInputStream bis = new BufferedInputStream(new >> FileInputStream(file)); >>>>> + CertificateFactory cf = >> CertificateFactory.getInstance("X509"); >>>>> + X509Certificate cert = null; >>>>> + >>>>> + try { >>>>> + cert = (X509Certificate) >> cf.generateCertificate(bis); >>>>> + } catch (ClassCastException cce) { >>>>> + throw new CertificateException("Input file is not an >> X509 Certificate", cce); >>>>> + } >>>>> + >>>>> + addToKeyStore(cert, ks); >>>>> + >>>>> + } >>>>> + >>>>> + /** >>>>> + * Adds an X509Certificate to the KeyStore >>>>> + */ >>>>> + public final void addToKeyStore(X509Certificate cert, >> KeyStore ks) throws KeyStoreException { >>>>> + String alias = null; >>>>> + Random random = new Random(); >>>>> + alias = ks.getCertificateAlias(cert); >>>>> + // already in keystore; done >>>>> + if (alias != null) { >>>>> + return; >>>>> + } >>>>> + >>>>> + boolean aliasFound = false; >>>>> + do { >>>>> + alias = new BigInteger(20, random).toString(); >>>>> + if (ks.getCertificate(alias) == null) { >>>>> + aliasFound = true; >>>>> + } >>>>> + } while (!aliasFound); >>>>> + ks.setCertificateEntry(alias, cert); >>>> aliasFound is a bit confusing for name. >>>> >>>> this can be changed to: >>>> >>>> do{ >>>> alias = new BigInteger(20, random).toString(); >>>> } while (ks.getCertificate(alias) != null); >>>> >>>> to avoid using aliasFound. >>>> >>> >>> Fixed. >>> >>>>> + } >>>>> + >>>>> /** >>>>> * Adds a trusted certificate to the user's keystore. >>>>> * @return true if the add was successful, false >> otherwise. >>>> Everything else seems okay to me. >>>> >>> >>> Thanks for reviewing the patch. Ok to commit? >>> >> >> Speaking only for myself and not Andrew, OK from me for HEAD. > Okay for me too. > Thanks for the review! Cheers, Omair From omajid at icedtea.classpath.org Mon Nov 8 13:49:12 2010 From: omajid at icedtea.classpath.org (omajid at icedtea.classpath.org) Date: Mon, 08 Nov 2010 21:49:12 +0000 Subject: /hg/icedtea-web: set the JDK_UPDATE_VERSION for the plugin Message-ID: changeset f089abbcf019 in /hg/icedtea-web details: http://icedtea.classpath.org/hg/icedtea-web?cmd=changeset;node=f089abbcf019 author: Omair Majid date: Mon Nov 08 16:48:38 2010 -0500 set the JDK_UPDATE_VERSION for the plugin 2010-11-08 Omair Majid * Makefile.am (JDK_UPDATE_VERSION): Define variable. diffstat: 2 files changed, 6 insertions(+) ChangeLog | 4 ++++ Makefile.am | 2 ++ diffs (23 lines): diff -r 9dd09feb371b -r f089abbcf019 ChangeLog --- a/ChangeLog Mon Nov 08 16:36:17 2010 -0500 +++ b/ChangeLog Mon Nov 08 16:48:38 2010 -0500 @@ -1,3 +1,7 @@ 2010-11-04 Omair Majid + + * Makefile.am (JDK_UPDATE_VERSION): Define variable. + 2010-11-04 Omair Majid * netx/net/sourceforge/jnlp/runtime/DeploymentConfiguration.java: diff -r 9dd09feb371b -r f089abbcf019 Makefile.am --- a/Makefile.am Mon Nov 08 16:36:17 2010 -0500 +++ b/Makefile.am Mon Nov 08 16:48:38 2010 -0500 @@ -16,6 +16,8 @@ IT_LANGUAGE_SOURCE_VERSION=6 IT_LANGUAGE_SOURCE_VERSION=6 IT_CLASS_TARGET_VERSION=6 IT_JAVACFLAGS=$(IT_JAVAC_SETTINGS) -source $(IT_LANGUAGE_SOURCE_VERSION) -target $(IT_CLASS_TARGET_VERSION) + +JDK_UPDATE_VERSION=50 # Sources list From omajid at redhat.com Mon Nov 8 13:49:38 2010 From: omajid at redhat.com (Omair Majid) Date: Mon, 08 Nov 2010 16:49:38 -0500 Subject: [icedtea-web] RFC: use an actual number as the JDK_UPDATE_VERSION for plugin In-Reply-To: <20101108211845.GA4558@redhat.com> References: <4CD86884.1090009@redhat.com> <20101108211845.GA4558@redhat.com> Message-ID: <4CD87072.20903@redhat.com> On 11/08/2010 04:18 PM, Deepak Bhole wrote: > * Omair Majid [2010-11-08 16:16]: >> Hi, >> >> The IcedTea builds used to pass in a value for JDK_UPDATE_VERSION >> when building the plugin, which was left out when IcedTea-Web was >> created. This patch defines this variable and sets it to an >> arbitrary value. >> >> Without this patch, about:plugins in firefox shows that the plugin >> supports the mime type >> "application/x-java-applet;jpi-version=1.6.0_". This seems to cause >> issues with the deployJava.js script - the users get redirected to >> the Java download page. Adding any value after the _ is enough to >> make applets using deployJava.js work with the plugin. >> >> The following web page can be used as a reproducer: >> http://download.oracle.com/javase/tutorial/deployment/applet/examples/dist/applet_Draggable/AppletPage.html >> >> ChangeLog: >> 2010-11-08 Omair Majid >> >> * Makefile.am (JDKJDK_UPDATE_VERSION): Define variable. >> > > Minor typo up there. > > Looks fine otherwise. Ok for HEAD. > Doh. Fixed and pushed. Thanks, Omair From liuqi at icedtea.classpath.org Mon Nov 8 22:30:03 2010 From: liuqi at icedtea.classpath.org (liuqi at icedtea.classpath.org) Date: Tue, 09 Nov 2010 06:30:03 +0000 Subject: /hg/openjdk6-mips: Add information in README and env.sh; added a... Message-ID: changeset 82bf91673f25 in /hg/openjdk6-mips details: http://icedtea.classpath.org/hg/openjdk6-mips?cmd=changeset;node=82bf91673f25 author: Ao Qi date: Tue Nov 09 13:21:20 2010 +0800 Add information in README and env.sh; added a missing file to make the completed build. diffstat: 5 files changed, 91 insertions(+), 52 deletions(-) README | 32 ++++++++++++++++++++++++++++-- env.sh | 23 +++++++++++++++++++++ env_debug.sh | 27 ------------------------- env_product.sh | 23 --------------------- jdk/src/solaris/bin/mips64/jvm.cfg | 38 ++++++++++++++++++++++++++++++++++++ diffs (181 lines): diff -r 8ef762f87d0e -r 82bf91673f25 README --- a/README Mon Nov 08 19:53:05 2010 +0800 +++ b/README Tue Nov 09 13:21:20 2010 +0800 @@ -6,20 +6,48 @@ README: "corba", "jaxws" and "jaxp". See http://openjdk.java.net/ for more information about the OpenJDK. + See http://icedtea.classpath.org/wiki/MIPSPort for more information about the OpenJDK MIPS Port. Simple Build Instructions: 1. Download and install a JDK 6 from http://java.sun.com/javase/downloads/index.jsp Set the environment variable ALT_BOOTDIR to the location of this JDK 6. + If using Debian: + apt-get install openjdk-6-jdk + export ALT_BOOTDIR=/usr/lib/jvm/java-6-openjdk - 2. Check the sanity of doing a build with the current machine: + 2. Download Binary Plugs, go to the OpenJDK site and select the "Bundles(6)" link and download + the binaryplugs. The file downloaded is a jar file that must be extracted by running the jar + file with: + java -jar jdk-6-ea-plug-bnn-os-arch-dd_month_year.jar + Set the environment variable ALT_BINARY_PLUGS_PATH to the root of this installation. + + 3. Set other environment variables. If using Debian: + source env.sh + Check the sanity of doing a build with the current machine: gnumake sanity See README-builds.html if you run into problems. - 3. Do a complete build of the jdk: + 4. Do a complete build of the jdk: gnumake all + When building jaxp, it seems a bug that jdk6-jaxp-2009_10_13.zip cannot be downloaded. + The workaround is to download it by "wget ", and set ALT_DROPS_DIR to the dir where the zip is: + export ALT_DROPS_DIR=~/zip_dir The resulting JDK image should be found in build/*/j2sdk-image + + 5. By setting the environment variables below, components can be built separately. + For example: + export BUILD_HOTSPOT=true + export BUILD_LANGTOOLS=false + export BUILD_CORBA=false + export BUILD_JAXP=false + export BUILD_JAXWS=false + export BUILD_JDK=false + export BUILD_DEPLOY=false + + 6. The default hotspot-build is all_product. Set DEBUG_NAME would change the target: + export DEBUG_NAME=debug where gnumake is GNU make 3.78.1 or newer, /usr/bin/make on Linux and /usr/sfw/bin/gmake or /opt/sfw/bin/gmake on Solaris. diff -r 8ef762f87d0e -r 82bf91673f25 env.sh --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/env.sh Tue Nov 09 13:21:20 2010 +0800 @@ -0,0 +1,23 @@ +export LANG=C +export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/lib/jvm/java-6-openjdk/bin +export ALT_BOOTDIR=/usr/lib/jvm/java-6-openjdk +export ALT_BINARY_PLUGS_PATH=~/openjdk-binary-plugs +export ARCH_DATA_MODEL=32 + +unset CLASSPATH +unset JAVA_HOME + +#The default hotspot-build is all_product. Setting DEBUG_NAME would change the target. +#export DEBUG_NAME=debug + +# By setting the environment variables below, components can be built separately. +#export BUILD_LANGTOOLS=false +#export BUILD_CORBA=false +#export BUILD_JAXP=false +#export BUILD_JAXWS=false +#export BUILD_JDK=false +#export BUILD_DEPLOY=false + +# When building jaxp, it seems a bug that jdk6-jaxp-2009_10_13.zip cannot be downloaded. +# The workaround is to download it by "wget ", and set ALT_DROPS_DIR to the dir where the zip is. +#export ALT_DROPS_DIR=~/zip_dir diff -r 8ef762f87d0e -r 82bf91673f25 env_debug.sh --- a/env_debug.sh Mon Nov 08 19:53:05 2010 +0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,27 +0,0 @@ -export LANG=C -export LC_ALL=C -export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/lib/jvm/java-6-openjdk/bin -export ALT_BOOTDIR=/usr/lib/jvm/java-6-openjdk -#export ALT_BOOTDIR=/home/loongson/java/j2sdk-gs2 -export ALT_BINARY_PLUGS_PATH=/opt/java/openjdk-binary-plugs -#export ALT_JDK_IMPORT_PATH=/usr/lib/jvm/java-6-openjdk -export ARCH_DATA_MODEL=32 - -#The default hotspot-build is all_product. Setting DEBUG_NAME would change the target. -export DEBUG_NAME=debug - -# If want to build entire JDK, set all envs below true. -export BUILD_LANGTOOLS=false -export BUILD_CORBA=false -export BUILD_JAXP=false -export BUILD_JAXWS=false -# When building jaxp, it seems a bug that jdk6-jaxp-2009_10_13.zip cannot be downloaded. -# The workaround is to download it by "wget ", and set ALT_DROPS_DIR to the dir where the zip is. -#export ALT_DROPS_DIR=~/zip_dir - -export BUILD_MOTIF=false -export BUILD_JDK=false -export BUILD_DEPLOY=false - -unset CLASSPATH -unset JAVA_HOME diff -r 8ef762f87d0e -r 82bf91673f25 env_product.sh --- a/env_product.sh Mon Nov 08 19:53:05 2010 +0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,23 +0,0 @@ -export LC_ALL=C -export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/lib/jvm/java-6-openjdk/bin -export ALT_BOOTDIR=/usr/lib/jvm/java-6-openjdk -export ALT_BINARY_PLUGS_PATH=/opt/java/openjdk-binary-plugs -export ARCH_DATA_MODEL=32 - -#The default hotspot-build is all_product. Setting DEBUG_NAME would change the target. - -# If want to build entire JDK, set all envs below true. -export BUILD_LANGTOOLS=false -export BUILD_CORBA=false -export BUILD_JAXP=false -export BUILD_JAXWS=false -# When building jaxp, it seems a bug that jdk6-jaxp-2009_10_13.zip cannot be downloaded. -# The workaround is to download it by "wget ", and set ALT_DROPS_DIR to the dir where the zip is. -#export ALT_DROPS_DIR=~/zip_dir - -export BUILD_MOTIF=false -export BUILD_JDK=false -export BUILD_DEPLOY=false - -unset CLASSPATH -unset JAVA_HOME diff -r 8ef762f87d0e -r 82bf91673f25 jdk/src/solaris/bin/mips64/jvm.cfg --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/jdk/src/solaris/bin/mips64/jvm.cfg Tue Nov 09 13:21:20 2010 +0800 @@ -0,0 +1,38 @@ +# Copyright 2001-2003 Sun Microsystems, Inc. All Rights Reserved. +# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +# +# This code is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License version 2 only, as +# published by the Free Software Foundation. Sun designates this +# particular file as subject to the "Classpath" exception as provided +# by Sun in the LICENSE file that accompanied this code. +# +# This code is distributed in the hope that it will be useful, but WITHOUT +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +# version 2 for more details (a copy is included in the LICENSE file that +# accompanied this code). +# +# You should have received a copy of the GNU General Public License version +# 2 along with this work; if not, write to the Free Software Foundation, +# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. +# +# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, +# CA 95054 USA or visit www.sun.com if you need additional information or +# have any questions. +# +# List of JVMs that can be used as an option to java, javac, etc. +# Order is important -- first in this list is the default JVM. +# NOTE that this both this file and its format are UNSUPPORTED and +# WILL GO AWAY in a future release. +# +# You may also select a JVM in an arbitrary location with the +# "-XXaltjvm=" option, but that too is unsupported +# and may not be available in a future release. +# +-client IF_SERVER_CLASS -server +-server KNOWN +-hotspot ALIASED_TO -client +-classic WARN +-native ERROR +-green ERROR From mark at klomp.org Tue Nov 9 01:46:27 2010 From: mark at klomp.org (Mark Wielaard) Date: Tue, 09 Nov 2010 10:46:27 +0100 Subject: Where did jaf, jaxp and jaxws go? Message-ID: <1289295987.2775.85.camel@springer.wildebeest.org> Hi, Apparently java.net moved stuff around again: http://blogs.sun.com/theaquarium/entry/first_wave_of_java_net But the new location doesn't provide jaxp source drop bundles: http://java.net/projects/jaxp/downloads So IcedTea builds will currently fail. Does anybody know where they went? The icedtea autobuilder still has caches of the old sources if needed: http://builder.wildebeest.org/icedtea/icedtea6/src/drops/ I can put those somewhere more permanent on icedtea.classpath.org if we want to use those for the normal builds. Thanks, Mark From ptisnovs at redhat.com Tue Nov 9 01:51:03 2010 From: ptisnovs at redhat.com (Pavel Tisnovsky) Date: Tue, 09 Nov 2010 10:51:03 +0100 Subject: Building of IcedTea6 failed due to problems downloading JAXP Message-ID: <4CD91987.1010800@redhat.com> Probably something were changed on .java.net side? /usr/bin/sha256sum: drops/jdk6-jaxp-b20.zip: No such file or directory drops/jdk6-jaxp-b20.zip: FAILED open or read /usr/bin/sha256sum: WARNING: 1 of 1 listed file could not be read --2010-11-09 09:54:48-- https://jaxp.dev.java.net/files/documents/913/150648/jdk6-jaxp-b20.zip Resolving jaxp.dev.java.net... 192.9.164.103 Connecting to jaxp.dev.java.net|192.9.164.103|:443... connected. ERROR: certificate common name `www.java.net' doesn't match requested host name `jaxp.dev.java.net'. To connect to jaxp.dev.java.net insecurely, use `--no-check-certificate'. Unable to establish SSL connection. drops/jdk6-jaxp-b20.zip: FAILED /usr/bin/sha256sum: WARNING: 1 of 1 computed checksum did NOT match ERROR: Bad download of jaxp drop zip make: *** [stamps/download-jaxp-drop.stamp] Error 1 From bugzilla-daemon at icedtea.classpath.org Tue Nov 9 05:50:54 2010 From: bugzilla-daemon at icedtea.classpath.org (bugzilla-daemon at icedtea.classpath.org) Date: Tue, 09 Nov 2010 13:50:54 +0000 Subject: [Bug 587] IcedTea6 1.8.2 (HotSpot Server VM) crash when playing Freecol game Message-ID: http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=587 xerxes at zafena.se changed: What |Removed |Added ---------------------------------------------------------------------------- Status|NEW |RESOLVED Resolution| |WORKSFORME ------- Comment #7 from xerxes at zafena.se 2010-11-09 13:50 ------- Thank you Damien for verifying that this game works using the current icedtea6 1.9.1 release. Feel free to reopen this bug if you start to experience this type of crash again using the latest icedtea6 release. -- Configure bugmail: http://icedtea.classpath.org/bugzilla/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are the assignee for the bug, or are watching the assignee. From ahughes at redhat.com Tue Nov 9 05:52:25 2010 From: ahughes at redhat.com (Dr Andrew John Hughes) Date: Tue, 9 Nov 2010 13:52:25 +0000 Subject: [icedtea-web] RFC: use an actual number as the JDK_UPDATE_VERSION for plugin In-Reply-To: <20101108211845.GA4558@redhat.com> References: <4CD86884.1090009@redhat.com> <20101108211845.GA4558@redhat.com> Message-ID: <20101109135225.GA7776@rivendell.middle-earth.co.uk> On 16:18 Mon 08 Nov , Deepak Bhole wrote: > * Omair Majid [2010-11-08 16:16]: > > Hi, > > > > The IcedTea builds used to pass in a value for JDK_UPDATE_VERSION > > when building the plugin, which was left out when IcedTea-Web was > > created. This patch defines this variable and sets it to an > > arbitrary value. > > > > Without this patch, about:plugins in firefox shows that the plugin > > supports the mime type > > "application/x-java-applet;jpi-version=1.6.0_". This seems to cause > > issues with the deployJava.js script - the users get redirected to > > the Java download page. Adding any value after the _ is enough to > > make applets using deployJava.js work with the plugin. > > > > The following web page can be used as a reproducer: > > http://download.oracle.com/javase/tutorial/deployment/applet/examples/dist/applet_Draggable/AppletPage.html > > > > ChangeLog: > > 2010-11-08 Omair Majid > > > > * Makefile.am (JDKJDK_UPDATE_VERSION): Define variable. > > > > Minor typo up there. > > Looks fine otherwise. Ok for HEAD. > > Deepak > > > Any thoughts or comments? > > > > Thanks, > > Omair > > > diff -r 8e66d9386273 Makefile.am > > --- a/Makefile.am Thu Nov 04 16:44:27 2010 -0700 > > +++ b/Makefile.am Mon Nov 08 15:51:36 2010 -0500 > > @@ -17,6 +17,8 @@ > > IT_CLASS_TARGET_VERSION=6 > > IT_JAVACFLAGS=$(IT_JAVAC_SETTINGS) -source $(IT_LANGUAGE_SOURCE_VERSION) -target $(IT_CLASS_TARGET_VERSION) > > > > +JDK_UPDATE_VERSION=50 > > + > > # Sources list > > > > PLUGIN_TEST_SRCS = $(abs_top_srcdir)/plugin/tests/LiveConnect/*.java > Fine for me, though I wonder why you went for 50 and not just 99 :-) -- Andrew :) Free Java Software Engineer Red Hat, Inc. (http://www.redhat.com) Support Free Java! Contribute to GNU Classpath and the OpenJDK http://www.gnu.org/software/classpath http://openjdk.java.net PGP Key: 94EFD9D8 (http://subkeys.pgp.net) Fingerprint = F8EF F1EA 401E 2E60 15FA 7927 142C 2591 94EF D9D8 From ahughes at redhat.com Tue Nov 9 06:00:08 2010 From: ahughes at redhat.com (Dr Andrew John Hughes) Date: Tue, 9 Nov 2010 14:00:08 +0000 Subject: /hg/openjdk6-mips: Add information in README and env.sh; added a... In-Reply-To: References: Message-ID: <20101109140008.GC7776@rivendell.middle-earth.co.uk> On 06:30 Tue 09 Nov , liuqi at icedtea.classpath.org wrote: > changeset 82bf91673f25 in /hg/openjdk6-mips > details: http://icedtea.classpath.org/hg/openjdk6-mips?cmd=changeset;node=82bf91673f25 > author: Ao Qi > date: Tue Nov 09 13:21:20 2010 +0800 > > Add information in README and env.sh; added a missing file to make > the completed build. > Why have you added back the information about binary plugs? These haven't been required for years. > > diffstat: > > 5 files changed, 91 insertions(+), 52 deletions(-) > README | 32 ++++++++++++++++++++++++++++-- > env.sh | 23 +++++++++++++++++++++ > env_debug.sh | 27 ------------------------- > env_product.sh | 23 --------------------- > jdk/src/solaris/bin/mips64/jvm.cfg | 38 ++++++++++++++++++++++++++++++++++++ > > diffs (181 lines): > > diff -r 8ef762f87d0e -r 82bf91673f25 README > --- a/README Mon Nov 08 19:53:05 2010 +0800 > +++ b/README Tue Nov 09 13:21:20 2010 +0800 > @@ -6,20 +6,48 @@ README: > "corba", "jaxws" and "jaxp". > > See http://openjdk.java.net/ for more information about the OpenJDK. > + See http://icedtea.classpath.org/wiki/MIPSPort for more information about the OpenJDK MIPS Port. > > Simple Build Instructions: > > 1. Download and install a JDK 6 from > http://java.sun.com/javase/downloads/index.jsp > Set the environment variable ALT_BOOTDIR to the location of this JDK 6. > + If using Debian: > + apt-get install openjdk-6-jdk > + export ALT_BOOTDIR=/usr/lib/jvm/java-6-openjdk > > - 2. Check the sanity of doing a build with the current machine: > + 2. Download Binary Plugs, go to the OpenJDK site and select the "Bundles(6)" link and download > + the binaryplugs. The file downloaded is a jar file that must be extracted by running the jar > + file with: > + java -jar jdk-6-ea-plug-bnn-os-arch-dd_month_year.jar > + Set the environment variable ALT_BINARY_PLUGS_PATH to the root of this installation. > + > + 3. Set other environment variables. If using Debian: > + source env.sh > + Check the sanity of doing a build with the current machine: > gnumake sanity > See README-builds.html if you run into problems. > > - 3. Do a complete build of the jdk: > + 4. Do a complete build of the jdk: > gnumake all > + When building jaxp, it seems a bug that jdk6-jaxp-2009_10_13.zip cannot be downloaded. > + The workaround is to download it by "wget ", and set ALT_DROPS_DIR to the dir where the zip is: > + export ALT_DROPS_DIR=~/zip_dir > The resulting JDK image should be found in build/*/j2sdk-image > + > + 5. By setting the environment variables below, components can be built separately. > + For example: > + export BUILD_HOTSPOT=true > + export BUILD_LANGTOOLS=false > + export BUILD_CORBA=false > + export BUILD_JAXP=false > + export BUILD_JAXWS=false > + export BUILD_JDK=false > + export BUILD_DEPLOY=false > + > + 6. The default hotspot-build is all_product. Set DEBUG_NAME would change the target: > + export DEBUG_NAME=debug > > where gnumake is GNU make 3.78.1 or newer, /usr/bin/make on Linux and > /usr/sfw/bin/gmake or /opt/sfw/bin/gmake on Solaris. > diff -r 8ef762f87d0e -r 82bf91673f25 env.sh > --- /dev/null Thu Jan 01 00:00:00 1970 +0000 > +++ b/env.sh Tue Nov 09 13:21:20 2010 +0800 > @@ -0,0 +1,23 @@ > +export LANG=C > +export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/lib/jvm/java-6-openjdk/bin > +export ALT_BOOTDIR=/usr/lib/jvm/java-6-openjdk > +export ALT_BINARY_PLUGS_PATH=~/openjdk-binary-plugs > +export ARCH_DATA_MODEL=32 > + > +unset CLASSPATH > +unset JAVA_HOME > + > +#The default hotspot-build is all_product. Setting DEBUG_NAME would change the target. > +#export DEBUG_NAME=debug > + > +# By setting the environment variables below, components can be built separately. > +#export BUILD_LANGTOOLS=false > +#export BUILD_CORBA=false > +#export BUILD_JAXP=false > +#export BUILD_JAXWS=false > +#export BUILD_JDK=false > +#export BUILD_DEPLOY=false > + > +# When building jaxp, it seems a bug that jdk6-jaxp-2009_10_13.zip cannot be downloaded. > +# The workaround is to download it by "wget ", and set ALT_DROPS_DIR to the dir where the zip is. > +#export ALT_DROPS_DIR=~/zip_dir > diff -r 8ef762f87d0e -r 82bf91673f25 env_debug.sh > --- a/env_debug.sh Mon Nov 08 19:53:05 2010 +0800 > +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 > @@ -1,27 +0,0 @@ > -export LANG=C > -export LC_ALL=C > -export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/lib/jvm/java-6-openjdk/bin > -export ALT_BOOTDIR=/usr/lib/jvm/java-6-openjdk > -#export ALT_BOOTDIR=/home/loongson/java/j2sdk-gs2 > -export ALT_BINARY_PLUGS_PATH=/opt/java/openjdk-binary-plugs > -#export ALT_JDK_IMPORT_PATH=/usr/lib/jvm/java-6-openjdk > -export ARCH_DATA_MODEL=32 > - > -#The default hotspot-build is all_product. Setting DEBUG_NAME would change the target. > -export DEBUG_NAME=debug > - > -# If want to build entire JDK, set all envs below true. > -export BUILD_LANGTOOLS=false > -export BUILD_CORBA=false > -export BUILD_JAXP=false > -export BUILD_JAXWS=false > -# When building jaxp, it seems a bug that jdk6-jaxp-2009_10_13.zip cannot be downloaded. > -# The workaround is to download it by "wget ", and set ALT_DROPS_DIR to the dir where the zip is. > -#export ALT_DROPS_DIR=~/zip_dir > - > -export BUILD_MOTIF=false > -export BUILD_JDK=false > -export BUILD_DEPLOY=false > - > -unset CLASSPATH > -unset JAVA_HOME > diff -r 8ef762f87d0e -r 82bf91673f25 env_product.sh > --- a/env_product.sh Mon Nov 08 19:53:05 2010 +0800 > +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 > @@ -1,23 +0,0 @@ > -export LC_ALL=C > -export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/lib/jvm/java-6-openjdk/bin > -export ALT_BOOTDIR=/usr/lib/jvm/java-6-openjdk > -export ALT_BINARY_PLUGS_PATH=/opt/java/openjdk-binary-plugs > -export ARCH_DATA_MODEL=32 > - > -#The default hotspot-build is all_product. Setting DEBUG_NAME would change the target. > - > -# If want to build entire JDK, set all envs below true. > -export BUILD_LANGTOOLS=false > -export BUILD_CORBA=false > -export BUILD_JAXP=false > -export BUILD_JAXWS=false > -# When building jaxp, it seems a bug that jdk6-jaxp-2009_10_13.zip cannot be downloaded. > -# The workaround is to download it by "wget ", and set ALT_DROPS_DIR to the dir where the zip is. > -#export ALT_DROPS_DIR=~/zip_dir > - > -export BUILD_MOTIF=false > -export BUILD_JDK=false > -export BUILD_DEPLOY=false > - > -unset CLASSPATH > -unset JAVA_HOME > diff -r 8ef762f87d0e -r 82bf91673f25 jdk/src/solaris/bin/mips64/jvm.cfg > --- /dev/null Thu Jan 01 00:00:00 1970 +0000 > +++ b/jdk/src/solaris/bin/mips64/jvm.cfg Tue Nov 09 13:21:20 2010 +0800 > @@ -0,0 +1,38 @@ > +# Copyright 2001-2003 Sun Microsystems, Inc. All Rights Reserved. > +# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. > +# > +# This code is free software; you can redistribute it and/or modify it > +# under the terms of the GNU General Public License version 2 only, as > +# published by the Free Software Foundation. Sun designates this > +# particular file as subject to the "Classpath" exception as provided > +# by Sun in the LICENSE file that accompanied this code. > +# > +# This code is distributed in the hope that it will be useful, but WITHOUT > +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or > +# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License > +# version 2 for more details (a copy is included in the LICENSE file that > +# accompanied this code). > +# > +# You should have received a copy of the GNU General Public License version > +# 2 along with this work; if not, write to the Free Software Foundation, > +# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. > +# > +# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, > +# CA 95054 USA or visit www.sun.com if you need additional information or > +# have any questions. > +# > +# List of JVMs that can be used as an option to java, javac, etc. > +# Order is important -- first in this list is the default JVM. > +# NOTE that this both this file and its format are UNSUPPORTED and > +# WILL GO AWAY in a future release. > +# > +# You may also select a JVM in an arbitrary location with the > +# "-XXaltjvm=" option, but that too is unsupported > +# and may not be available in a future release. > +# > +-client IF_SERVER_CLASS -server > +-server KNOWN > +-hotspot ALIASED_TO -client > +-classic WARN > +-native ERROR > +-green ERROR -- Andrew :) Free Java Software Engineer Red Hat, Inc. (http://www.redhat.com) Support Free Java! Contribute to GNU Classpath and the OpenJDK http://www.gnu.org/software/classpath http://openjdk.java.net PGP Key: 94EFD9D8 (http://subkeys.pgp.net) Fingerprint = F8EF F1EA 401E 2E60 15FA 7927 142C 2591 94EF D9D8 From ahughes at redhat.com Tue Nov 9 06:05:18 2010 From: ahughes at redhat.com (Dr Andrew John Hughes) Date: Tue, 9 Nov 2010 14:05:18 +0000 Subject: Where did jaf, jaxp and jaxws go? In-Reply-To: <1289295987.2775.85.camel@springer.wildebeest.org> References: <1289295987.2775.85.camel@springer.wildebeest.org> Message-ID: <20101109140517.GD7776@rivendell.middle-earth.co.uk> On 10:46 Tue 09 Nov , Mark Wielaard wrote: > Hi, > > Apparently java.net moved stuff around again: > http://blogs.sun.com/theaquarium/entry/first_wave_of_java_net > But the new location doesn't provide jaxp source drop bundles: > http://java.net/projects/jaxp/downloads > > So IcedTea builds will currently fail. > Does anybody know where they went? > > The icedtea autobuilder still has caches of the old sources if needed: > http://builder.wildebeest.org/icedtea/icedtea6/src/drops/ > > I can put those somewhere more permanent on icedtea.classpath.org if we > want to use those for the normal builds. > > Thanks, > > Mark > I can upload the others I have too and we'll switch to the IcedTea servers for the time being, if you don't mind the load. It would also simplify the number of URLs we have to deal with for the drops. -- Andrew :) Free Java Software Engineer Red Hat, Inc. (http://www.redhat.com) Support Free Java! Contribute to GNU Classpath and the OpenJDK http://www.gnu.org/software/classpath http://openjdk.java.net PGP Key: 94EFD9D8 (http://subkeys.pgp.net) Fingerprint = F8EF F1EA 401E 2E60 15FA 7927 142C 2591 94EF D9D8 From mark at klomp.org Tue Nov 9 06:09:34 2010 From: mark at klomp.org (Mark Wielaard) Date: Tue, 09 Nov 2010 15:09:34 +0100 Subject: Where did jaf, jaxp and jaxws go? In-Reply-To: <20101109140517.GD7776@rivendell.middle-earth.co.uk> References: <1289295987.2775.85.camel@springer.wildebeest.org> <20101109140517.GD7776@rivendell.middle-earth.co.uk> Message-ID: <1289311774.2775.358.camel@springer.wildebeest.org> On Tue, 2010-11-09 at 14:05 +0000, Dr Andrew John Hughes wrote: > > The icedtea autobuilder still has caches of the old sources if needed: > > http://builder.wildebeest.org/icedtea/icedtea6/src/drops/ > > > > I can put those somewhere more permanent on icedtea.classpath.org if we > > want to use those for the normal builds. > > > I can upload the others I have too and we'll switch to the IcedTea servers for the > time being, if you don't mind the load. > > It would also simplify the number of URLs we have to deal with for the drops. I think that should be fine. Best would be to have them all available under a new directory http://icedtea.classpath.org/download/drops/ Cheers, Mark From andrew at icedtea.classpath.org Tue Nov 9 06:53:38 2010 From: andrew at icedtea.classpath.org (andrew at icedtea.classpath.org) Date: Tue, 09 Nov 2010 14:53:38 +0000 Subject: /hg/icedtea6: 2 new changesets Message-ID: changeset 92361970fdc1 in /hg/icedtea6 details: http://icedtea.classpath.org/hg/icedtea6?cmd=changeset;node=92361970fdc1 author: Andrew John Hughes date: Tue Nov 09 14:51:54 2010 +0000 Switch to the IcedTea server for JAXP, JAF and JAXWS. 2010-11-09 Andrew John Hughes * Makefile.am: (JAXWS_DROP_URL): Switch to IcedTea server. (JAXP_DROP_URL): Likewise. (JAF_DROP_URL): Likewise. changeset 72de51f0a744 in /hg/icedtea6 details: http://icedtea.classpath.org/hg/icedtea6?cmd=changeset;node=72de51f0a744 author: Andrew John Hughes date: Tue Nov 09 14:53:31 2010 +0000 Merge diffstat: 6 files changed, 6128 insertions(+), 6080 deletions(-) ChangeLog | 22 Makefile.am | 9 NEWS | 4 patches/icedtea-pisces.patch | 6076 ----------------- patches/openjdk/6967436-6976265-6967434-pisces.patch | 6076 +++++++++++++++++ patches/openjdk/6997495-test_correction_6857159.patch | 21 diffs (truncated from 12258 to 500 lines): diff -r f935004da674 -r 72de51f0a744 ChangeLog --- a/ChangeLog Fri Nov 05 18:31:07 2010 +0000 +++ b/ChangeLog Tue Nov 09 14:53:31 2010 +0000 @@ -1,3 +1,25 @@ 2010-11-05 Andrew John Hughes + + * Makefile.am: + (JAXWS_DROP_URL): Switch to IcedTea server. + (JAXP_DROP_URL): Likewise. + (JAF_DROP_URL): Likewise. + +2010-11-08 Pavel Tisnovsky + + * Makefile.am: Add patch. + * patches/openjdk/6997495-test_correction_6857159.patch: + Testcase correction, now the regression test Test6857159 should + not timeout on most machines. + +2010-11-05 Denis Lila + + * Makefile.am: + Apply backported patch. + * patches/openjdk/6967436-6976265-6967434-pisces.patch: + Backport of the openjdk7 rendering engine, which fixes + various bugs and includes performance improvements. + 2010-11-05 Andrew John Hughes * hotspot.map: diff -r f935004da674 -r 72de51f0a744 Makefile.am --- a/Makefile.am Fri Nov 05 18:31:07 2010 +0000 +++ b/Makefile.am Tue Nov 09 14:53:31 2010 +0000 @@ -11,13 +11,13 @@ CACAO_URL = $(CACAO_BASE_URL)/hg/cacao/a CACAO_URL = $(CACAO_BASE_URL)/hg/cacao/archive/$(CACAO_VERSION).tar.bz2 CACAO_SRC_ZIP = cacao-$(CACAO_VERSION).tar.bz2 -JAXWS_DROP_URL = https://jax-ws.dev.java.net/files/documents/4202/150724 +JAXWS_DROP_URL = http://icedtea.classpath.org/download/drops JAXWS_DROP_ZIP = jdk6-jaxws-b20.zip JAXWS_DROP_SHA256SUM = 0c460583898b968a58bf88eb53f90a0e34369e2562d65fb3a143512dfcaeb3eb -JAF_DROP_URL = https://jax-ws.dev.java.net/files/documents/4202/150725 +JAF_DROP_URL = http://icedtea.classpath.org/download/drops JAF_DROP_ZIP = jdk6-jaf-b20.zip JAF_DROP_SHA256SUM = 78c7b5c9d6271e88ee46abadd018a61f1e9645f8936cc8df1617e5f4f5074012 -JAXP_DROP_URL = https://jaxp.dev.java.net/files/documents/913/150648 +JAXP_DROP_URL = http://icedtea.classpath.org/download/drops JAXP_DROP_ZIP = jdk6-jaxp-b20.zip JAXP_DROP_SHA256SUM = d097627d4059d488c5a09d4e33cec275a193d4d8bc0fea8ef4f1337170904156 @@ -294,7 +294,8 @@ ICEDTEA_PATCHES = \ patches/openjdk/6853592-badwindow-warning-fix.patch \ patches/6703377-freetypescaler.patch \ patches/icedtea-jtreg-international-fonts.patch \ - patches/icedtea-pisces.patch + patches/openjdk/6967436-6976265-6967434-pisces.patch \ + patches/openjdk/6997495-test_correction_6857159.patch if WITH_ALT_HSBUILD ICEDTEA_PATCHES += \ diff -r f935004da674 -r 72de51f0a744 NEWS --- a/NEWS Fri Nov 05 18:31:07 2010 +0000 +++ b/NEWS Tue Nov 09 14:53:31 2010 +0000 @@ -43,6 +43,10 @@ New in release 1.10 (2010-XX-XX): - S6638712: Inference with wildcard types causes selection of inapplicable method - S6650759: Inference of formal type parameter (unused in formal parameters) is not performed - S6991430, PR579: Zero PowerPC fix. + - S6967436, RH597227: lines longer than 2^15 can fill window. + - S6967433: dashed lines broken when using scaling transforms. + - S6976265: No STROKE_CONTROL + - S6967434, PR450, RH530642: Round joins/caps of scaled up lines have poor quality. * NetX - A new man page for javaws. - Add a new option -Xclearcache diff -r f935004da674 -r 72de51f0a744 patches/icedtea-pisces.patch --- a/patches/icedtea-pisces.patch Fri Nov 05 18:31:07 2010 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,6076 +0,0 @@ -diff -Nru openjdk.orig/jdk/src/share/classes/sun/java2d/pisces/Curve.java openjdk/jdk/src/share/classes/sun/java2d/pisces/Curve.java ---- openjdk.orig/jdk/src/share/classes/sun/java2d/pisces/Curve.java 1969-12-31 19:00:00.000000000 -0500 -+++ openjdk/jdk/src/share/classes/sun/java2d/pisces/Curve.java 2010-11-04 09:55:16.830085236 -0400 -@@ -0,0 +1,294 @@ -+/* -+ * Copyright (c) 2007, Oracle and/or its affiliates. All rights reserved. -+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. -+ * -+ * This code is free software; you can redistribute it and/or modify it -+ * under the terms of the GNU General Public License version 2 only, as -+ * published by the Free Software Foundation. Oracle designates this -+ * particular file as subject to the "Classpath" exception as provided -+ * by Oracle in the LICENSE file that accompanied this code. -+ * -+ * This code is distributed in the hope that it will be useful, but WITHOUT -+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -+ * version 2 for more details (a copy is included in the LICENSE file that -+ * accompanied this code). -+ * -+ * You should have received a copy of the GNU General Public License version -+ * 2 along with this work; if not, write to the Free Software Foundation, -+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. -+ * -+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA -+ * or visit www.oracle.com if you need additional information or have any -+ * questions. -+ */ -+ -+package sun.java2d.pisces; -+ -+import java.util.Iterator; -+ -+class Curve { -+ -+ float ax, ay, bx, by, cx, cy, dx, dy; -+ float dax, day, dbx, dby; -+ -+ Curve() { -+ } -+ -+ void set(float[] points, int type) { -+ switch(type) { -+ case 8: -+ set(points[0], points[1], -+ points[2], points[3], -+ points[4], points[5], -+ points[6], points[7]); -+ break; -+ case 6: -+ set(points[0], points[1], -+ points[2], points[3], -+ points[4], points[5]); -+ break; -+ default: -+ throw new InternalError("Curves can only be cubic or quadratic"); -+ } -+ } -+ -+ void set(float x1, float y1, -+ float x2, float y2, -+ float x3, float y3, -+ float x4, float y4) -+ { -+ ax = 3 * (x2 - x3) + x4 - x1; -+ ay = 3 * (y2 - y3) + y4 - y1; -+ bx = 3 * (x1 - 2 * x2 + x3); -+ by = 3 * (y1 - 2 * y2 + y3); -+ cx = 3 * (x2 - x1); -+ cy = 3 * (y2 - y1); -+ dx = x1; -+ dy = y1; -+ dax = 3 * ax; day = 3 * ay; -+ dbx = 2 * bx; dby = 2 * by; -+ } -+ -+ void set(float x1, float y1, -+ float x2, float y2, -+ float x3, float y3) -+ { -+ ax = ay = 0f; -+ -+ bx = x1 - 2 * x2 + x3; -+ by = y1 - 2 * y2 + y3; -+ cx = 2 * (x2 - x1); -+ cy = 2 * (y2 - y1); -+ dx = x1; -+ dy = y1; -+ dax = 0; day = 0; -+ dbx = 2 * bx; dby = 2 * by; -+ } -+ -+ float xat(float t) { -+ return t * (t * (t * ax + bx) + cx) + dx; -+ } -+ float yat(float t) { -+ return t * (t * (t * ay + by) + cy) + dy; -+ } -+ -+ float dxat(float t) { -+ return t * (t * dax + dbx) + cx; -+ } -+ -+ float dyat(float t) { -+ return t * (t * day + dby) + cy; -+ } -+ -+ private float ddxat(float t) { -+ return 2 * dax * t + dbx; -+ } -+ -+ private float ddyat(float t) { -+ return 2 * day * t + dby; -+ } -+ -+ int dxRoots(float[] roots, int off) { -+ return Helpers.quadraticRoots(dax, dbx, cx, roots, off); -+ } -+ -+ int dyRoots(float[] roots, int off) { -+ return Helpers.quadraticRoots(day, dby, cy, roots, off); -+ } -+ -+ int infPoints(float[] pts, int off) { -+ // inflection point at t if -f'(t)x*f''(t)y + f'(t)y*f''(t)x == 0 -+ // Fortunately, this turns out to be quadratic, so there are at -+ // most 2 inflection points. -+ final float a = dax * dby - dbx * day; -+ final float b = 2 * (cy * dax - day * cx); -+ final float c = cy * dbx - cx * dby; -+ -+ return Helpers.quadraticRoots(a, b, c, pts, off); -+ } -+ -+ // finds points where the first and second derivative are -+ // perpendicular. This happens when g(t) = f'(t)*f''(t) == 0 (where -+ // * is a dot product). Unfortunately, we have to solve a cubic. -+ private int perpendiculardfddf(float[] pts, int off, final float err) { -+ assert pts.length >= off + 4; -+ -+ // these are the coefficients of g(t): -+ final float a = 2*(dax*dax + day*day); -+ final float b = 3*(dax*dbx + day*dby); -+ final float c = 2*(dax*cx + day*cy) + dbx*dbx + dby*dby; -+ final float d = dbx*cx + dby*cy; -+ // TODO: We might want to divide the polynomial by a to make the -+ // coefficients smaller. This won't change the roots. -+ return Helpers.cubicRootsInAB(a, b, c, d, pts, off, err, 0f, 1f); -+ } -+ -+ // Tries to find the roots of the function ROC(t)-w in [0, 1). It uses -+ // a variant of the false position algorithm to find the roots. False -+ // position requires that 2 initial values x0,x1 be given, and that the -+ // function must have opposite signs at those values. To find such -+ // values, we need the local extrema of the ROC function, for which we -+ // need the roots of its derivative; however, it's harder to find the -+ // roots of the derivative in this case than it is to find the roots -+ // of the original function. So, we find all points where this curve's -+ // first and second derivative are perpendicular, and we pretend these -+ // are our local extrema. There are at most 3 of these, so we will check -+ // at most 4 sub-intervals of (0,1). ROC has asymptotes at inflection -+ // points, so roc-w can have at least 6 roots. This shouldn't be a -+ // problem for what we're trying to do (draw a nice looking curve). -+ int rootsOfROCMinusW(float[] roots, int off, final float w, final float err) { -+ // no OOB exception, because by now off<=6, and roots.length >= 10 -+ assert off <= 6 && roots.length >= 10; -+ int ret = off; -+ int numPerpdfddf = perpendiculardfddf(roots, off, err); -+ float t0 = 0, ft0 = ROCsq(t0) - w*w; -+ roots[off + numPerpdfddf] = 1f; // always check interval end points -+ numPerpdfddf++; -+ for (int i = off; i < off + numPerpdfddf; i++) { -+ float t1 = roots[i], ft1 = ROCsq(t1) - w*w; -+ if (ft0 == 0f) { -+ roots[ret++] = t0; -+ } else if (ft1 * ft0 < 0f) { // have opposite signs -+ // (ROC(t)^2 == w^2) == (ROC(t) == w) is true because -+ // ROC(t) >= 0 for all t. -+ roots[ret++] = falsePositionROCsqMinusX(t0, t1, w*w, err); -+ } -+ t0 = t1; -+ ft0 = ft1; -+ } -+ -+ return ret - off; -+ } -+ -+ private static float eliminateInf(float x) { -+ return (x == Float.POSITIVE_INFINITY ? Float.MAX_VALUE : -+ (x == Float.NEGATIVE_INFINITY ? Float.MIN_VALUE : x)); -+ } -+ -+ // A slight modification of the false position algorithm on wikipedia. -+ // This only works for the ROCsq-x functions. It might be nice to have -+ // the function as an argument, but that would be awkward in java6. -+ // It is something to consider for java7, depending on how closures -+ // and function objects turn out. Same goes for the newton's method -+ // algorithm in Helpers.java -+ private float falsePositionROCsqMinusX(float x0, float x1, -+ final float x, final float err) -+ { -+ final int iterLimit = 100; -+ int side = 0; -+ float t = x1, ft = eliminateInf(ROCsq(t) - x); -+ float s = x0, fs = eliminateInf(ROCsq(s) - x); -+ float r = s, fr; -+ for (int i = 0; i < iterLimit && Math.abs(t - s) > err * Math.abs(t + s); i++) { -+ r = (fs * t - ft * s) / (fs - ft); -+ fr = ROCsq(r) - x; -+ if (fr * ft > 0) {// have the same sign -+ ft = fr; t = r; -+ if (side < 0) { -+ fs /= (1 << (-side)); -+ side--; -+ } else { -+ side = -1; -+ } -+ } else if (fr * fs > 0) { -+ fs = fr; s = r; -+ if (side > 0) { -+ ft /= (1 << side); -+ side++; -+ } else { -+ side = 1; -+ } -+ } else { -+ break; -+ } -+ } -+ return r; -+ } -+ -+ // returns the radius of curvature squared at t of this curve -+ // see http://en.wikipedia.org/wiki/Radius_of_curvature_(applications) -+ private float ROCsq(final float t) { -+ final float dx = dxat(t); -+ final float dy = dyat(t); -+ final float ddx = ddxat(t); -+ final float ddy = ddyat(t); -+ final float dx2dy2 = dx*dx + dy*dy; -+ final float ddx2ddy2 = ddx*ddx + ddy*ddy; -+ final float ddxdxddydy = ddx*dx + ddy*dy; -+ float ret = ((dx2dy2*dx2dy2) / (dx2dy2 * ddx2ddy2 - ddxdxddydy*ddxdxddydy))*dx2dy2; -+ return ret; -+ } -+ -+ // curve to be broken should be in pts[0] -+ // this will change the contents of both pts and Ts -+ // TODO: There's no reason for Ts to be an array. All we need is a sequence -+ // of t values at which to subdivide. An array statisfies this condition, -+ // but is unnecessarily restrictive. Ts should be an Iterator instead. -+ // Doing this will also make dashing easier, since we could easily make -+ // LengthIterator an Iterator and feed it to this function to simplify -+ // the loop in Dasher.somethingTo. -+ static Iterator breakPtsAtTs(final float[][] pts, final int type, -+ final float[] Ts, final int numTs) -+ { -+ assert pts.length >= 2 && pts[0].length >= 8 && numTs <= Ts.length; -+ return new Iterator() { -+ int nextIdx = 0; -+ int nextCurveIdx = 0; -+ float prevT = 0; -+ -+ public boolean hasNext() { -+ return nextCurveIdx < numTs + 1; -+ } -+ -+ public float[] next() { -+ float[] ret; -+ if (nextCurveIdx < numTs) { -+ float curT = Ts[nextCurveIdx]; -+ float splitT = (curT - prevT) / (1 - prevT); -+ Helpers.subdivideAt(splitT, -+ pts[nextIdx], 0, -+ pts[nextIdx], 0, -+ pts[1-nextIdx], 0, type); -+ updateTs(Ts, Ts[nextCurveIdx], nextCurveIdx + 1, numTs - nextCurveIdx - 1); -+ ret = pts[nextIdx]; -+ nextIdx = 1 - nextIdx; -+ } else { -+ ret = pts[nextIdx]; -+ } -+ nextCurveIdx++; -+ return ret; -+ } -+ -+ public void remove() {} -+ }; -+ } -+ -+ // precondition: ts[off]...ts[off+len-1] must all be greater than t. -+ private static void updateTs(float[] ts, final float t, final int off, final int len) { -+ for (int i = off; i < off + len; i++) { -+ ts[i] = (ts[i] - t) / (1 - t); -+ } -+ } -+} -+ -diff -Nru openjdk.orig/jdk/src/share/classes/sun/java2d/pisces/Dasher.java openjdk/jdk/src/share/classes/sun/java2d/pisces/Dasher.java ---- openjdk.orig/jdk/src/share/classes/sun/java2d/pisces/Dasher.java 2010-11-04 09:55:54.074209905 -0400 -+++ openjdk/jdk/src/share/classes/sun/java2d/pisces/Dasher.java 2010-11-04 09:55:16.830085236 -0400 -@@ -25,6 +25,8 @@ - - package sun.java2d.pisces; - -+import sun.awt.geom.PathConsumer2D; -+ - /** - * The Dasher class takes a series of linear commands - * (moveTo, lineTo, close and -@@ -36,118 +38,68 @@ - * semantics are unclear. - * - */ --public class Dasher extends LineSink { -- -- LineSink output; -- int[] dash; -- int startPhase; -- boolean startDashOn; -- int startIdx; -- -- int idx; -- boolean dashOn; -- int phase; -- -- int sx, sy; -- int x0, y0; -- -- int m00, m01; -- int m10, m11; -- -- Transform4 transform; -+public class Dasher implements sun.awt.geom.PathConsumer2D { - -- boolean symmetric; -- long ldet; -+ private final PathConsumer2D out; -+ private final float[] dash; -+ private final float startPhase; -+ private final boolean startDashOn; -+ private final int startIdx; -+ -+ private boolean starting; -+ private boolean needsMoveTo; -+ -+ private int idx; -+ private boolean dashOn; -+ private float phase; - -- boolean firstDashOn; -- boolean starting; -- int sx1, sy1; -+ private float sx, sy; -+ private float x0, y0; - -- /** -- * Empty constructor. setOutput and -- * setParameters must be called prior to calling any -- * other methods. -- */ -- public Dasher() {} -+ // temporary storage for the current curve -+ private float[] curCurvepts; - - /** - * Constructs a Dasher. - * -- * @param output an output LineSink. -- * @param dash an array of ints containing the dash -- * pattern in S15.16 format. -- * @param phase an int containing the dash phase in -- * S15.16 format. -- * @param transform a Transform4 object indicating -- * the transform that has been previously applied to all incoming -- * coordinates. This is required in order to compute dash lengths -- * properly. -+ * @param out an output PathConsumer2D. -+ * @param dash an array of floats containing the dash pattern -+ * @param phase a float containing the dash phase - */ -- public Dasher(LineSink output, -- int[] dash, int phase, -- Transform4 transform) { -- setOutput(output); -- setParameters(dash, phase, transform); -- } -- -- /** -- * Sets the output LineSink of this -- * Dasher. -- * -- * @param output an output LineSink. -- */ -- public void setOutput(LineSink output) { -- this.output = output; -- } -- -- /** -- * Sets the parameters of this Dasher. -- * -- * @param dash an array of ints containing the dash -- * pattern in S15.16 format. -- * @param phase an int containing the dash phase in -- * S15.16 format. -- * @param transform a Transform4 object indicating -- * the transform that has been previously applied to all incoming -- * coordinates. This is required in order to compute dash lengths -- * properly. -- */ -- public void setParameters(int[] dash, int phase, -- Transform4 transform) { -+ public Dasher(PathConsumer2D out, float[] dash, float phase) { - if (phase < 0) { - throw new IllegalArgumentException("phase < 0 !"); - } - -+ this.out = out; -+ - // Normalize so 0 <= phase < dash[0] - int idx = 0; - dashOn = true; -- int d; From jvanek at redhat.com Tue Nov 9 07:23:58 2010 From: jvanek at redhat.com (Jiri Vanek) Date: Tue, 09 Nov 2010 16:23:58 +0100 Subject: request commit for asians fonts config patches for fedoras In-Reply-To: <1289311774.2775.358.camel@springer.wildebeest.org> References: <1289295987.2775.85.camel@springer.wildebeest.org> <20101109140517.GD7776@rivendell.middle-earth.co.uk> <1289311774.2775.358.camel@springer.wildebeest.org> Message-ID: <4CD9678E.8030103@redhat.com> # HG changeset patch # User Jiri Vanek # Date 1289314961 -3600 # Node ID f5a924055ba3a42622c68abcbe8e965c498b25f5 # Parent c06d558f7684615065180c613e44025d84694373 Updated font configurations for Fedora 9-14 diff -r c06d558f7684 -r f5a924055ba3 ChangeLog --- a/ChangeLog Mon Nov 08 12:28:36 2010 +0100 +++ b/ChangeLog Tue Nov 09 16:02:41 2010 +0100 @@ -1,3 +1,14 @@ +2010-11-09 Jiri Vanek + + * Makefile.am: + * patches/fontconfig-Fedora-11-14-changes.patch + * patches/Makefile-copy-fontconfig.Fedora.patch + Updated font configurations for Fedora 9-14 + * Makefile.am: + added cloning of fontconfig.Fedora to Fedora.12,11,10,9 + * openjdk/jdk/make/sun/awt/Makefile: + added notifications about above mentioned fontconfig files + 2010-11-08 Pavel Tisnovsky * Makefile.am: diff -r c06d558f7684 -r f5a924055ba3 Makefile.am --- a/Makefile.am Mon Nov 08 12:28:36 2010 +0100 +++ b/Makefile.am Tue Nov 09 16:02:41 2010 +0100 @@ -295,7 +295,9 @@ patches/6703377-freetypescaler.patch \ patches/icedtea-jtreg-international-fonts.patch \ patches/openjdk/6967436-6976265-6967434-pisces.patch \ - patches/openjdk/6997495-test_correction_6857159.patch + patches/openjdk/6997495-test_correction_6857159.patch \ + patches/f14-fonts.patch \ + patches/fontconfig-Fedora-11-14-changes.patch if WITH_ALT_HSBUILD ICEDTEA_PATCHES += \ @@ -836,6 +838,11 @@ endif mkdir -p stamps touch stamps/extract-openjdk.stamp +#clone fedoras fontconfigs + cp $(abs_top_srcdir)/openjdk/jdk/src/solaris/classes/sun/awt/fontconfigs/linux.fontconfig.Fedora.properties $(abs_top_srcdir)/openjdk/jdk/src/solaris/classes/sun/awt/fontconfigs/linux.fontconfig.Fedora.9.properties + cp $(abs_top_srcdir)/openjdk/jdk/src/solaris/classes/sun/awt/fontconfigs/linux.fontconfig.Fedora.properties $(abs_top_srcdir)/openjdk/jdk/src/solaris/classes/sun/awt/fontconfigs/linux.fontconfig.Fedora.10.properties + cp $(abs_top_srcdir)/openjdk/jdk/src/solaris/classes/sun/awt/fontconfigs/linux.fontconfig.Fedora.properties $(abs_top_srcdir)/openjdk/jdk/src/solaris/classes/sun/awt/fontconfigs/linux.fontconfig.Fedora.11.properties + cp $(abs_top_srcdir)/openjdk/jdk/src/solaris/classes/sun/awt/fontconfigs/linux.fontconfig.Fedora.properties $(abs_top_srcdir)/openjdk/jdk/src/solaris/classes/sun/awt/fontconfigs/linux.fontconfig.Fedora.12.properties clean-extract-openjdk: rm -rf openjdk diff -r c06d558f7684 -r f5a924055ba3 patches/f14-fonts.patch --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/patches/f14-fonts.patch Tue Nov 09 16:02:41 2010 +0100 @@ -0,0 +1,13 @@ +--- openjdk/jdk/make/sun/awt/Makefile 2010-11-04 09:52:49.583434000 +0100 ++++ openjdk/jdk/make/sun/awt/Makefile 2010-11-04 16:50:14.091688769 +0100 +@@ -387,6 +387,10 @@ + fontconfig.SuSE.properties \ + fontconfig.Ubuntu.properties \ + fontconfig.Fedora.properties \ ++ fontconfig.Fedora.9.properties \ ++ fontconfig.Fedora.10.properties \ ++ fontconfig.Fedora.11.properties \ ++ fontconfig.Fedora.12.properties \ + fontconfig.RedHat.6.0.properties \ + fontconfig.Gentoo.properties + else diff -r c06d558f7684 -r f5a924055ba3 patches/fontconfig-Fedora-11-14-changes.patch --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/patches/fontconfig-Fedora-11-14-changes.patch Tue Nov 09 16:02:41 2010 +0100 @@ -0,0 +1,663 @@ +--- openjdk/jdk/src/solaris/classes/sun/awt/fontconfigs/linux.fontconfig.Fedora.11.properties 2010-11-04 11:06:26.695428114 +0100 ++++ openjdk/jdk/src/solaris/classes/sun/awt/fontconfigs/linux.fontconfig.Fedora.11.properties 2010-11-04 11:19:45.133587953 +0100 +@@ -35,6 +35,8 @@ + dialog.plain.korean=Baekmuk Gulim + dialog.plain.chinese-big5=AR PL ShanHeiSun Uni + dialog.plain.chinese-gb18030=AR PL ShanHeiSun Uni ++dialog.plain.assamese=Lohit Assamese ++dialog.plain.devanagari=Lohit Devanagari + dialog.plain.bengali=Lohit Bengali + dialog.plain.gujarati=Lohit Gujarati + dialog.plain.hindi=Lohit Hindi +@@ -50,6 +52,8 @@ + dialog.bold.korean=Baekmuk Gulim + dialog.bold.chinese-big5=AR PL ShanHeiSun Uni + dialog.bold.chinese-gb18030=AR PL ShanHeiSun Uni ++dialog.bold.assamese=Lohit Assamese ++dialog.bold.devanagari=Lohit Devanagari + dialog.bold.bengali=Lohit Bengali + dialog.bold.gujarati=Lohit Gujarati + dialog.bold.hindi=Lohit Hindi +@@ -65,6 +69,8 @@ + dialog.italic.korean=Baekmuk Gulim + dialog.italic.chinese-big5=AR PL ShanHeiSun Uni + dialog.italic.chinese-gb18030=AR PL ShanHeiSun Uni ++dialog.italic.assamese=Lohit Assamese ++dialog.italic.devanagari=Lohit Devanagari + dialog.italic.bengali=Lohit Bengali + dialog.italic.gujarati=Lohit Gujarati + dialog.italic.hindi=Lohit Hindi +@@ -80,6 +86,8 @@ + dialog.bolditalic.korean=Baekmuk Gulim + dialog.bolditalic.chinese-big5=AR PL ShanHeiSun Uni + dialog.bolditalic.chinese-gb18030=AR PL ShanHeiSun Uni ++dialog.bolditalic.assamese=Lohit Assamese ++dialog.bolditalic.devanagari=Lohit Devanagari + dialog.bolditalic.bengali=Lohit Bengali + dialog.bolditalic.gujarati=Lohit Gujarati + dialog.bolditalic.hindi=Lohit Hindi +@@ -95,6 +103,8 @@ + sansserif.plain.korean=Baekmuk Gulim + sansserif.plain.chinese-big5=AR PL ShanHeiSun Uni + sansserif.plain.chinese-gb18030=AR PL ShanHeiSun Uni ++sansserif.plain.assamese=Lohit Assamese ++sansserif.plain.devanagari=Lohit Devanagari + sansserif.plain.bengali=Lohit Bengali + sansserif.plain.gujarati=Lohit Gujarati + sansserif.plain.hindi=Lohit Hindi +@@ -110,6 +120,8 @@ + sansserif.bold.korean=Baekmuk Gulim + sansserif.bold.chinese-big5=AR PL ShanHeiSun Uni + sansserif.bold.chinese-gb18030=AR PL ShanHeiSun Uni ++sansserif.bold.assamese=Lohit Assamese ++sansserif.bold.devanagari=Lohit Devanagari + sansserif.bold.bengali=Lohit Bengali + sansserif.bold.gujarati=Lohit Gujarati + sansserif.bold.hindi=Lohit Hindi +@@ -125,6 +137,8 @@ + sansserif.italic.korean=Baekmuk Gulim + sansserif.italic.chinese-big5=AR PL ShanHeiSun Uni + sansserif.italic.chinese-gb18030=AR PL ShanHeiSun Uni ++sansserif.italic.assamese=Lohit Assamese ++sansserif.italic.devanagari=Lohit Devanagari + sansserif.italic.bengali=Lohit Bengali + sansserif.italic.gujarati=Lohit Gujarati + sansserif.italic.hindi=Lohit Hindi +@@ -140,6 +154,8 @@ + sansserif.bolditalic.korean=Baekmuk Gulim + sansserif.bolditalic.chinese-big5=AR PL ShanHeiSun Uni + sansserif.bolditalic.chinese-gb18030=AR PL ShanHeiSun Uni ++sansserif.bolditalic.assamese=Lohit Assamese ++sansserif.bolditalic.devanagari=Lohit Devanagari + sansserif.bolditalic.bengali=Lohit Bengali + sansserif.bolditalic.gujarati=Lohit Gujarati + sansserif.bolditalic.hindi=Lohit Hindi +@@ -155,6 +171,8 @@ + serif.plain.korean=Baekmuk Batang + serif.plain.chinese-big5=AR PL ZenKai Uni + serif.plain.chinese-gb18030=AR PL ZenKai Uni ++serif.plain.assamese=Lohit Assamese ++serif.plain.devanagari=Lohit Devanagari + serif.plain.bengali=Lohit Bengali + serif.plain.gujarati=Lohit Gujarati + serif.plain.hindi=Lohit Hindi +@@ -170,6 +188,8 @@ + serif.bold.korean=Baekmuk Batang + serif.bold.chinese-big5=AR PL ZenKai Uni + serif.bold.chinese-gb18030=AR PL ZenKai Uni ++serif.bold.assamese=Lohit Assamese ++serif.bold.devanagari=Lohit Devanagari + serif.bold.bengali=Lohit Bengali + serif.bold.gujarati=Lohit Gujarati + serif.bold.hindi=Lohit Hindi +@@ -185,6 +205,8 @@ + serif.italic.korean=Baekmuk Batang + serif.italic.chinese-big5=AR PL ZenKai Uni + serif.italic.chinese-gb18030=AR PL ZenKai Uni ++serif.italic.assamese=Lohit Assamese ++serif.italic.devanagari=Lohit Devanagari + serif.italic.bengali=Lohit Bengali + serif.italic.gujarati=Lohit Gujarati + serif.italic.hindi=Lohit Hindi +@@ -200,6 +222,8 @@ + serif.bolditalic.korean=Baekmuk Batang + serif.bolditalic.chinese-big5=AR PL ZenKai Uni + serif.bolditalic.chinese-gb18030=AR PL ZenKai Uni ++serif.bolditalic.assamese=Lohit Assamese ++serif.bolditalic.devanagari=Lohit Devanagari + serif.bolditalic.bengali=Lohit Bengali + serif.bolditalic.gujarati=Lohit Gujarati + serif.bolditalic.hindi=Lohit Hindi +@@ -215,6 +239,8 @@ + monospaced.plain.korean=Baekmuk Gulim + monospaced.plain.chinese-big5=AR PL ShanHeiSun Uni + monospaced.plain.chinese-gb18030=AR PL ShanHeiSun Uni ++monospaced.plain.assamese=Lohit Assamese ++monospaced.plain.devanagari=Lohit Devanagari + monospaced.plain.bengali=Lohit Bengali + monospaced.plain.gujarati=Lohit Gujarati + monospaced.plain.hindi=Lohit Hindi +@@ -230,6 +256,8 @@ + monospaced.bold.korean=Baekmuk Gulim + monospaced.bold.chinese-big5=AR PL ShanHeiSun Uni + monospaced.bold.chinese-gb18030=AR PL ShanHeiSun Uni ++monospaced.bold.assamese=Lohit Assamese ++monospaced.bold.devanagari=Lohit Devanagari + monospaced.bold.bengali=Lohit Bengali + monospaced.bold.gujarati=Lohit Gujarati + monospaced.bold.hindi=Lohit Hindi +@@ -245,6 +273,8 @@ + monospaced.italic.korean=Baekmuk Gulim + monospaced.italic.chinese-big5=AR PL ShanHeiSun Uni + monospaced.italic.chinese-gb18030=AR PL ShanHeiSun Uni ++monospaced.italic.assamese=Lohit Assamese ++monospaced.italic.devanagari=Lohit Devanagari + monospaced.italic.bengali=Lohit Bengali + monospaced.italic.gujarati=Lohit Gujarati + monospaced.italic.hindi=Lohit Hindi +@@ -260,6 +290,8 @@ + monospaced.bolditalic.korean=Baekmuk Gulim + monospaced.bolditalic.chinese-big5=AR PL ShanHeiSun Uni + monospaced.bolditalic.chinese-gb18030=AR PL ShanHeiSun Uni ++monospaced.bolditalic.assamese=Lohit Assamese ++monospaced.bolditalic.devanagari=Lohit Devanagari + monospaced.bolditalic.bengali=Lohit Bengali + monospaced.bolditalic.gujarati=Lohit Gujarati + monospaced.bolditalic.hindi=Lohit Hindi +@@ -275,6 +307,8 @@ + dialoginput.plain.korean=Baekmuk Gulim + dialoginput.plain.chinese-big5=AR PL ShanHeiSun Uni + dialoginput.plain.chinese-gb18030=AR PL ShanHeiSun Uni ++dialoginput.plain.assamese=Lohit Assamese ++dialoginput.plain.devanagari=Lohit Devanagari + dialoginput.plain.bengali=Lohit Bengali + dialoginput.plain.gujarati=Lohit Gujarati + dialoginput.plain.hindi=Lohit Hindi +@@ -290,6 +324,8 @@ + dialoginput.bold.korean=Baekmuk Gulim + dialoginput.bold.chinese-big5=AR PL ShanHeiSun Uni + dialoginput.bold.chinese-gb18030=AR PL ShanHeiSun Uni ++dialoginput.bold.assamese=Lohit Assamese ++dialoginput.bold.devanagari=Lohit Devanagari + dialoginput.bold.bengali=Lohit Bengali + dialoginput.bold.gujarati=Lohit Gujarati + dialoginput.bold.hindi=Lohit Hindi +@@ -305,6 +341,8 @@ + dialoginput.italic.korean=Baekmuk Gulim + dialoginput.italic.chinese-big5=AR PL ShanHeiSun Uni + dialoginput.italic.chinese-gb18030=AR PL ShanHeiSun Uni ++dialoginput.italic.assamese=Lohit Assamese ++dialoginput.italic.devanagari=Lohit Devanagari + dialoginput.italic.bengali=Lohit Bengali + dialoginput.italic.gujarati=Lohit Gujarati + dialoginput.italic.hindi=Lohit Hindi +@@ -320,6 +358,8 @@ + dialoginput.bolditalic.korean=Baekmuk Gulim + dialoginput.bolditalic.chinese-big5=AR PL ShanHeiSun Uni + dialoginput.bolditalic.chinese-gb18030=AR PL ShanHeiSun Uni ++dialoginput.bolditalic.assamese=Lohit Assamese ++dialoginput.bolditalic.devanagari=Lohit Devanagari + dialoginput.bolditalic.bengali=Lohit Bengali + dialoginput.bolditalic.gujarati=Lohit Gujarati + dialoginput.bolditalic.hindi=Lohit Hindi +@@ -356,21 +396,24 @@ + filename.DejaVu_Serif_Oblique=/usr/share/fonts/dejavu/DejaVuSerif-Oblique.ttf + filename.DejaVu_Serif_Bold_Oblique=/usr/share/fonts/dejavu/DejaVuSerif-BoldOblique.ttf + +-filename.Sazanami_Gothic=/usr/share/fonts/sazanami-fonts-gothic/sazanami-gothic.ttf +-filename.Sazanami_Mincho=/usr/share/fonts/sazanami-fonts-mincho/sazanami-mincho.ttf ++filename.Sazanami_Gothic=/usr/share/fonts/sazanami/gothic/sazanami-gothic.ttf ++filename.Sazanami_Mincho=/usr/share/fonts/sazanami/mincho/sazanami-mincho.ttf + filename.AR_PL_ShanHeiSun_Uni=/usr/share/fonts/cjkunifonts-uming/uming.ttc + filename.AR_PL_ZenKai_Uni=/usr/share/fonts/cjkunifonts-ukai/ukai.ttc +-filename.Baekmuk_Gulim=/usr/share/fonts/baekmuk-ttf-gulim/gulim.ttf +-filename.Baekmuk_Batang=/usr/share/fonts/baekmuk-ttf-batang/batang.ttf ++filename.Baekmuk_Gulim=/usr/share/fonts/baekmuk-ttf/gulim.ttf ++filename.Baekmuk_Batang=/usr/share/fonts/baekmuk-ttf/batang.ttf ++ ++filename.Lohit_Assamese=/usr/share/fonts/lohit-assamese/Lohit-Assamese.ttf ++filename.Lohit_Devanagari=/usr/share/fonts/lohit-devanagari/Lohit-Devanagari.ttf ++filename.Lohit_Bengali=/usr/share/fonts/lohit-bengali/Lohit-Bengali.ttf ++filename.Lohit_Gujarati=/usr/share/fonts/lohit-gujarati/Lohit-Gujarati.ttf ++filename.Lohit_Hindi=/usr/share/fonts/lohit-hindi/Lohit-Hindi.ttf ++filename.Lohit_Kannda=/usr/share/fonts/lohit-kannada/Lohit-Kannada.ttf ++filename.Lohit_Malayalam=/usr/share/fonts/lohit-malayalam/Lohit-Malayalam.ttf ++filename.Lohit_Oriya=/usr/share/fonts/lohit-oriya/Lohit-Oriya.ttf ++filename.Lohit_Punjabi=/usr/share/fonts/lohit-punjabi/Lohit-Punjabi.ttf ++filename.Lohit_Tamil=/usr/share/fonts/lohit-tamil/Lohit-Tamil.ttf ++filename.Lohit_Telugu=/usr/share/fonts/lohit-telugu/Lohit-Telugu.ttf + +-filename.Lohit_Bengali=/usr/share/fonts/lohit-bengali/lohit_bn.ttf +-filename.Lohit_Gujarati=/usr/share/fonts/lohit-gujarati/lohit_gu.ttf +-filename.Lohit_Hindi=/usr/share/fonts/lohit-hindi/lohit_hi.ttf +-filename.Lohit_Kannda=/usr/share/fonts/lohit-kannada/lohit_kn.ttf +-filename.Lohit_Malayalam=/usr/share/fonts/lohit-malayalam/lohit_ml.ttf +-filename.Lohit_Oriya=/usr/share/fonts/lohit-oriya/lohit_or.ttf +-filename.Lohit_Punjabi=/usr/share/fonts/lohit-punjabi/lohit_pa.ttf +-filename.Lohit_Tamil=/usr/share/fonts/lohit-tamil/lohit_ta.ttf +-filename.Lohit_Telugu=/usr/share/fonts/lohit-telugu/lohit_te.ttf + filename.LKLUG=/usr/share/fonts/lklug/lklug.ttf + + +--- openjdk/jdk/src/solaris/classes/sun/awt/fontconfigs/linux.fontconfig.Fedora.12.properties 2010-11-04 11:06:26.695428114 +0100 ++++ openjdk/jdk/src/solaris/classes/sun/awt/fontconfigs/linux.fontconfig.Fedora.12.properties 2010-11-04 11:19:45.133587953 +0100 +@@ -35,6 +35,8 @@ + dialog.plain.korean=Baekmuk Gulim + dialog.plain.chinese-big5=AR PL ShanHeiSun Uni + dialog.plain.chinese-gb18030=AR PL ShanHeiSun Uni ++dialog.plain.assamese=Lohit Assamese ++dialog.plain.devanagari=Lohit Devanagari + dialog.plain.bengali=Lohit Bengali + dialog.plain.gujarati=Lohit Gujarati + dialog.plain.hindi=Lohit Hindi +@@ -50,6 +52,8 @@ + dialog.bold.korean=Baekmuk Gulim + dialog.bold.chinese-big5=AR PL ShanHeiSun Uni + dialog.bold.chinese-gb18030=AR PL ShanHeiSun Uni ++dialog.bold.assamese=Lohit Assamese ++dialog.bold.devanagari=Lohit Devanagari + dialog.bold.bengali=Lohit Bengali + dialog.bold.gujarati=Lohit Gujarati + dialog.bold.hindi=Lohit Hindi +@@ -65,6 +69,8 @@ + dialog.italic.korean=Baekmuk Gulim + dialog.italic.chinese-big5=AR PL ShanHeiSun Uni + dialog.italic.chinese-gb18030=AR PL ShanHeiSun Uni ++dialog.italic.assamese=Lohit Assamese ++dialog.italic.devanagari=Lohit Devanagari + dialog.italic.bengali=Lohit Bengali + dialog.italic.gujarati=Lohit Gujarati + dialog.italic.hindi=Lohit Hindi +@@ -80,6 +86,8 @@ + dialog.bolditalic.korean=Baekmuk Gulim + dialog.bolditalic.chinese-big5=AR PL ShanHeiSun Uni + dialog.bolditalic.chinese-gb18030=AR PL ShanHeiSun Uni ++dialog.bolditalic.assamese=Lohit Assamese ++dialog.bolditalic.devanagari=Lohit Devanagari + dialog.bolditalic.bengali=Lohit Bengali + dialog.bolditalic.gujarati=Lohit Gujarati + dialog.bolditalic.hindi=Lohit Hindi +@@ -95,6 +103,8 @@ + sansserif.plain.korean=Baekmuk Gulim + sansserif.plain.chinese-big5=AR PL ShanHeiSun Uni + sansserif.plain.chinese-gb18030=AR PL ShanHeiSun Uni ++sansserif.plain.assamese=Lohit Assamese ++sansserif.plain.devanagari=Lohit Devanagari + sansserif.plain.bengali=Lohit Bengali + sansserif.plain.gujarati=Lohit Gujarati + sansserif.plain.hindi=Lohit Hindi +@@ -110,6 +120,8 @@ + sansserif.bold.korean=Baekmuk Gulim + sansserif.bold.chinese-big5=AR PL ShanHeiSun Uni + sansserif.bold.chinese-gb18030=AR PL ShanHeiSun Uni ++sansserif.bold.assamese=Lohit Assamese ++sansserif.bold.devanagari=Lohit Devanagari + sansserif.bold.bengali=Lohit Bengali + sansserif.bold.gujarati=Lohit Gujarati + sansserif.bold.hindi=Lohit Hindi +@@ -125,6 +137,8 @@ + sansserif.italic.korean=Baekmuk Gulim + sansserif.italic.chinese-big5=AR PL ShanHeiSun Uni + sansserif.italic.chinese-gb18030=AR PL ShanHeiSun Uni ++sansserif.italic.assamese=Lohit Assamese ++sansserif.italic.devanagari=Lohit Devanagari + sansserif.italic.bengali=Lohit Bengali + sansserif.italic.gujarati=Lohit Gujarati + sansserif.italic.hindi=Lohit Hindi +@@ -140,6 +154,8 @@ + sansserif.bolditalic.korean=Baekmuk Gulim + sansserif.bolditalic.chinese-big5=AR PL ShanHeiSun Uni + sansserif.bolditalic.chinese-gb18030=AR PL ShanHeiSun Uni ++sansserif.bolditalic.assamese=Lohit Assamese ++sansserif.bolditalic.devanagari=Lohit Devanagari + sansserif.bolditalic.bengali=Lohit Bengali + sansserif.bolditalic.gujarati=Lohit Gujarati + sansserif.bolditalic.hindi=Lohit Hindi +@@ -155,6 +171,8 @@ + serif.plain.korean=Baekmuk Batang + serif.plain.chinese-big5=AR PL ZenKai Uni + serif.plain.chinese-gb18030=AR PL ZenKai Uni ++serif.plain.assamese=Lohit Assamese ++serif.plain.devanagari=Lohit Devanagari + serif.plain.bengali=Lohit Bengali + serif.plain.gujarati=Lohit Gujarati + serif.plain.hindi=Lohit Hindi +@@ -170,6 +188,8 @@ + serif.bold.korean=Baekmuk Batang + serif.bold.chinese-big5=AR PL ZenKai Uni + serif.bold.chinese-gb18030=AR PL ZenKai Uni ++serif.bold.assamese=Lohit Assamese ++serif.bold.devanagari=Lohit Devanagari + serif.bold.bengali=Lohit Bengali + serif.bold.gujarati=Lohit Gujarati + serif.bold.hindi=Lohit Hindi +@@ -185,6 +205,8 @@ + serif.italic.korean=Baekmuk Batang + serif.italic.chinese-big5=AR PL ZenKai Uni + serif.italic.chinese-gb18030=AR PL ZenKai Uni ++serif.italic.assamese=Lohit Assamese ++serif.italic.devanagari=Lohit Devanagari + serif.italic.bengali=Lohit Bengali + serif.italic.gujarati=Lohit Gujarati + serif.italic.hindi=Lohit Hindi +@@ -200,6 +222,8 @@ + serif.bolditalic.korean=Baekmuk Batang + serif.bolditalic.chinese-big5=AR PL ZenKai Uni + serif.bolditalic.chinese-gb18030=AR PL ZenKai Uni ++serif.bolditalic.assamese=Lohit Assamese ++serif.bolditalic.devanagari=Lohit Devanagari + serif.bolditalic.bengali=Lohit Bengali + serif.bolditalic.gujarati=Lohit Gujarati + serif.bolditalic.hindi=Lohit Hindi +@@ -215,6 +239,8 @@ + monospaced.plain.korean=Baekmuk Gulim + monospaced.plain.chinese-big5=AR PL ShanHeiSun Uni + monospaced.plain.chinese-gb18030=AR PL ShanHeiSun Uni ++monospaced.plain.assamese=Lohit Assamese ++monospaced.plain.devanagari=Lohit Devanagari + monospaced.plain.bengali=Lohit Bengali + monospaced.plain.gujarati=Lohit Gujarati + monospaced.plain.hindi=Lohit Hindi +@@ -230,6 +256,8 @@ + monospaced.bold.korean=Baekmuk Gulim + monospaced.bold.chinese-big5=AR PL ShanHeiSun Uni + monospaced.bold.chinese-gb18030=AR PL ShanHeiSun Uni ++monospaced.bold.assamese=Lohit Assamese ++monospaced.bold.devanagari=Lohit Devanagari + monospaced.bold.bengali=Lohit Bengali + monospaced.bold.gujarati=Lohit Gujarati + monospaced.bold.hindi=Lohit Hindi +@@ -245,6 +273,8 @@ + monospaced.italic.korean=Baekmuk Gulim + monospaced.italic.chinese-big5=AR PL ShanHeiSun Uni + monospaced.italic.chinese-gb18030=AR PL ShanHeiSun Uni ++monospaced.italic.assamese=Lohit Assamese ++monospaced.italic.devanagari=Lohit Devanagari + monospaced.italic.bengali=Lohit Bengali + monospaced.italic.gujarati=Lohit Gujarati + monospaced.italic.hindi=Lohit Hindi +@@ -260,6 +290,8 @@ + monospaced.bolditalic.korean=Baekmuk Gulim + monospaced.bolditalic.chinese-big5=AR PL ShanHeiSun Uni + monospaced.bolditalic.chinese-gb18030=AR PL ShanHeiSun Uni ++monospaced.bolditalic.assamese=Lohit Assamese ++monospaced.bolditalic.devanagari=Lohit Devanagari + monospaced.bolditalic.bengali=Lohit Bengali + monospaced.bolditalic.gujarati=Lohit Gujarati + monospaced.bolditalic.hindi=Lohit Hindi +@@ -275,6 +307,8 @@ + dialoginput.plain.korean=Baekmuk Gulim + dialoginput.plain.chinese-big5=AR PL ShanHeiSun Uni + dialoginput.plain.chinese-gb18030=AR PL ShanHeiSun Uni ++dialoginput.plain.assamese=Lohit Assamese ++dialoginput.plain.devanagari=Lohit Devanagari + dialoginput.plain.bengali=Lohit Bengali + dialoginput.plain.gujarati=Lohit Gujarati + dialoginput.plain.hindi=Lohit Hindi +@@ -290,6 +324,8 @@ + dialoginput.bold.korean=Baekmuk Gulim + dialoginput.bold.chinese-big5=AR PL ShanHeiSun Uni + dialoginput.bold.chinese-gb18030=AR PL ShanHeiSun Uni ++dialoginput.bold.assamese=Lohit Assamese ++dialoginput.bold.devanagari=Lohit Devanagari + dialoginput.bold.bengali=Lohit Bengali + dialoginput.bold.gujarati=Lohit Gujarati + dialoginput.bold.hindi=Lohit Hindi +@@ -305,6 +341,8 @@ + dialoginput.italic.korean=Baekmuk Gulim + dialoginput.italic.chinese-big5=AR PL ShanHeiSun Uni + dialoginput.italic.chinese-gb18030=AR PL ShanHeiSun Uni ++dialoginput.italic.assamese=Lohit Assamese ++dialoginput.italic.devanagari=Lohit Devanagari + dialoginput.italic.bengali=Lohit Bengali + dialoginput.italic.gujarati=Lohit Gujarati + dialoginput.italic.hindi=Lohit Hindi +@@ -320,6 +358,8 @@ + dialoginput.bolditalic.korean=Baekmuk Gulim + dialoginput.bolditalic.chinese-big5=AR PL ShanHeiSun Uni + dialoginput.bolditalic.chinese-gb18030=AR PL ShanHeiSun Uni ++dialoginput.bolditalic.assamese=Lohit Assamese ++dialoginput.bolditalic.devanagari=Lohit Devanagari + dialoginput.bolditalic.bengali=Lohit Bengali + dialoginput.bolditalic.gujarati=Lohit Gujarati + dialoginput.bolditalic.hindi=Lohit Hindi +@@ -356,21 +396,24 @@ + filename.DejaVu_Serif_Oblique=/usr/share/fonts/dejavu/DejaVuSerif-Oblique.ttf + filename.DejaVu_Serif_Bold_Oblique=/usr/share/fonts/dejavu/DejaVuSerif-BoldOblique.ttf + +-filename.Sazanami_Gothic=/usr/share/fonts/sazanami-fonts-gothic/sazanami-gothic.ttf +-filename.Sazanami_Mincho=/usr/share/fonts/sazanami-fonts-mincho/sazanami-mincho.ttf ++filename.Sazanami_Gothic=/usr/share/fonts/sazanami/gothic/sazanami-gothic.ttf ++filename.Sazanami_Mincho=/usr/share/fonts/sazanami/mincho/sazanami-mincho.ttf + filename.AR_PL_ShanHeiSun_Uni=/usr/share/fonts/cjkunifonts-uming/uming.ttc + filename.AR_PL_ZenKai_Uni=/usr/share/fonts/cjkunifonts-ukai/ukai.ttc +-filename.Baekmuk_Gulim=/usr/share/fonts/baekmuk-ttf-gulim/gulim.ttf +-filename.Baekmuk_Batang=/usr/share/fonts/baekmuk-ttf-batang/batang.ttf ++filename.Baekmuk_Gulim=/usr/share/fonts/baekmuk-ttf/gulim.ttf ++filename.Baekmuk_Batang=/usr/share/fonts/baekmuk-ttf/batang.ttf ++ ++filename.Lohit_Assamese=/usr/share/fonts/lohit-assamese/Lohit-Assamese.ttf ++filename.Lohit_Devanagari=/usr/share/fonts/lohit-devanagari/Lohit-Devanagari.ttf ++filename.Lohit_Bengali=/usr/share/fonts/lohit-bengali/Lohit-Bengali.ttf ++filename.Lohit_Gujarati=/usr/share/fonts/lohit-gujarati/Lohit-Gujarati.ttf ++filename.Lohit_Hindi=/usr/share/fonts/lohit-hindi/Lohit-Hindi.ttf ++filename.Lohit_Kannda=/usr/share/fonts/lohit-kannada/Lohit-Kannada.ttf ++filename.Lohit_Malayalam=/usr/share/fonts/lohit-malayalam/Lohit-Malayalam.ttf ++filename.Lohit_Oriya=/usr/share/fonts/lohit-oriya/Lohit-Oriya.ttf ++filename.Lohit_Punjabi=/usr/share/fonts/lohit-punjabi/Lohit-Punjabi.ttf ++filename.Lohit_Tamil=/usr/share/fonts/lohit-tamil/Lohit-Tamil.ttf ++filename.Lohit_Telugu=/usr/share/fonts/lohit-telugu/Lohit-Telugu.ttf + +-filename.Lohit_Bengali=/usr/share/fonts/lohit-bengali/lohit_bn.ttf +-filename.Lohit_Gujarati=/usr/share/fonts/lohit-gujarati/lohit_gu.ttf +-filename.Lohit_Hindi=/usr/share/fonts/lohit-hindi/lohit_hi.ttf +-filename.Lohit_Kannda=/usr/share/fonts/lohit-kannada/lohit_kn.ttf +-filename.Lohit_Malayalam=/usr/share/fonts/lohit-malayalam/lohit_ml.ttf +-filename.Lohit_Oriya=/usr/share/fonts/lohit-oriya/lohit_or.ttf +-filename.Lohit_Punjabi=/usr/share/fonts/lohit-punjabi/lohit_pa.ttf +-filename.Lohit_Tamil=/usr/share/fonts/lohit-tamil/lohit_ta.ttf +-filename.Lohit_Telugu=/usr/share/fonts/lohit-telugu/lohit_te.ttf + filename.LKLUG=/usr/share/fonts/lklug/lklug.ttf + +--- openjdk/jdk/src/solaris/classes/sun/awt/fontconfigs/linux.fontconfig.Fedora.properties 2010-11-04 11:06:26.695428114 +0100 ++++ openjdk/jdk/src/solaris/classes/sun/awt/fontconfigs/linux.fontconfig.Fedora.properties 2010-11-04 11:06:25.602455633 +0100 +@@ -35,6 +35,8 @@ + dialog.plain.korean=Baekmuk Gulim + dialog.plain.chinese-big5=AR PL ShanHeiSun Uni + dialog.plain.chinese-gb18030=AR PL ShanHeiSun Uni ++dialog.plain.assamese=Lohit Assamese ++dialog.plain.devanagari=Lohit Devanagari + dialog.plain.bengali=Lohit Bengali + dialog.plain.gujarati=Lohit Gujarati + dialog.plain.hindi=Lohit Hindi +@@ -50,6 +52,8 @@ + dialog.bold.korean=Baekmuk Gulim + dialog.bold.chinese-big5=AR PL ShanHeiSun Uni + dialog.bold.chinese-gb18030=AR PL ShanHeiSun Uni ++dialog.bold.assamese=Lohit Assamese ++dialog.bold.devanagari=Lohit Devanagari + dialog.bold.bengali=Lohit Bengali + dialog.bold.gujarati=Lohit Gujarati + dialog.bold.hindi=Lohit Hindi +@@ -65,6 +69,8 @@ + dialog.italic.korean=Baekmuk Gulim + dialog.italic.chinese-big5=AR PL ShanHeiSun Uni + dialog.italic.chinese-gb18030=AR PL ShanHeiSun Uni ++dialog.italic.assamese=Lohit Assamese ++dialog.italic.devanagari=Lohit Devanagari + dialog.italic.bengali=Lohit Bengali + dialog.italic.gujarati=Lohit Gujarati + dialog.italic.hindi=Lohit Hindi +@@ -80,6 +86,8 @@ + dialog.bolditalic.korean=Baekmuk Gulim + dialog.bolditalic.chinese-big5=AR PL ShanHeiSun Uni + dialog.bolditalic.chinese-gb18030=AR PL ShanHeiSun Uni ++dialog.bolditalic.assamese=Lohit Assamese ++dialog.bolditalic.devanagari=Lohit Devanagari + dialog.bolditalic.bengali=Lohit Bengali + dialog.bolditalic.gujarati=Lohit Gujarati + dialog.bolditalic.hindi=Lohit Hindi +@@ -95,6 +103,8 @@ + sansserif.plain.korean=Baekmuk Gulim + sansserif.plain.chinese-big5=AR PL ShanHeiSun Uni + sansserif.plain.chinese-gb18030=AR PL ShanHeiSun Uni ++sansserif.plain.assamese=Lohit Assamese ++sansserif.plain.devanagari=Lohit Devanagari + sansserif.plain.bengali=Lohit Bengali + sansserif.plain.gujarati=Lohit Gujarati + sansserif.plain.hindi=Lohit Hindi +@@ -110,6 +120,8 @@ + sansserif.bold.korean=Baekmuk Gulim + sansserif.bold.chinese-big5=AR PL ShanHeiSun Uni + sansserif.bold.chinese-gb18030=AR PL ShanHeiSun Uni ++sansserif.bold.assamese=Lohit Assamese ++sansserif.bold.devanagari=Lohit Devanagari + sansserif.bold.bengali=Lohit Bengali + sansserif.bold.gujarati=Lohit Gujarati + sansserif.bold.hindi=Lohit Hindi +@@ -125,6 +137,8 @@ + sansserif.italic.korean=Baekmuk Gulim + sansserif.italic.chinese-big5=AR PL ShanHeiSun Uni + sansserif.italic.chinese-gb18030=AR PL ShanHeiSun Uni ++sansserif.italic.assamese=Lohit Assamese ++sansserif.italic.devanagari=Lohit Devanagari + sansserif.italic.bengali=Lohit Bengali + sansserif.italic.gujarati=Lohit Gujarati + sansserif.italic.hindi=Lohit Hindi +@@ -140,6 +154,8 @@ + sansserif.bolditalic.korean=Baekmuk Gulim + sansserif.bolditalic.chinese-big5=AR PL ShanHeiSun Uni + sansserif.bolditalic.chinese-gb18030=AR PL ShanHeiSun Uni ++sansserif.bolditalic.assamese=Lohit Assamese ++sansserif.bolditalic.devanagari=Lohit Devanagari + sansserif.bolditalic.bengali=Lohit Bengali + sansserif.bolditalic.gujarati=Lohit Gujarati + sansserif.bolditalic.hindi=Lohit Hindi +@@ -155,6 +171,8 @@ + serif.plain.korean=Baekmuk Batang + serif.plain.chinese-big5=AR PL ZenKai Uni + serif.plain.chinese-gb18030=AR PL ZenKai Uni ++serif.plain.assamese=Lohit Assamese ++serif.plain.devanagari=Lohit Devanagari + serif.plain.bengali=Lohit Bengali + serif.plain.gujarati=Lohit Gujarati + serif.plain.hindi=Lohit Hindi +@@ -170,6 +188,8 @@ + serif.bold.korean=Baekmuk Batang + serif.bold.chinese-big5=AR PL ZenKai Uni + serif.bold.chinese-gb18030=AR PL ZenKai Uni ++serif.bold.assamese=Lohit Assamese ++serif.bold.devanagari=Lohit Devanagari + serif.bold.bengali=Lohit Bengali + serif.bold.gujarati=Lohit Gujarati + serif.bold.hindi=Lohit Hindi +@@ -185,6 +205,8 @@ + serif.italic.korean=Baekmuk Batang + serif.italic.chinese-big5=AR PL ZenKai Uni + serif.italic.chinese-gb18030=AR PL ZenKai Uni ++serif.italic.assamese=Lohit Assamese ++serif.italic.devanagari=Lohit Devanagari + serif.italic.bengali=Lohit Bengali + serif.italic.gujarati=Lohit Gujarati + serif.italic.hindi=Lohit Hindi +@@ -200,6 +222,8 @@ + serif.bolditalic.korean=Baekmuk Batang + serif.bolditalic.chinese-big5=AR PL ZenKai Uni + serif.bolditalic.chinese-gb18030=AR PL ZenKai Uni ++serif.bolditalic.assamese=Lohit Assamese ++serif.bolditalic.devanagari=Lohit Devanagari + serif.bolditalic.bengali=Lohit Bengali + serif.bolditalic.gujarati=Lohit Gujarati + serif.bolditalic.hindi=Lohit Hindi +@@ -215,6 +239,8 @@ + monospaced.plain.korean=Baekmuk Gulim + monospaced.plain.chinese-big5=AR PL ShanHeiSun Uni + monospaced.plain.chinese-gb18030=AR PL ShanHeiSun Uni ++monospaced.plain.assamese=Lohit Assamese ++monospaced.plain.devanagari=Lohit Devanagari + monospaced.plain.bengali=Lohit Bengali + monospaced.plain.gujarati=Lohit Gujarati + monospaced.plain.hindi=Lohit Hindi +@@ -230,6 +256,8 @@ + monospaced.bold.korean=Baekmuk Gulim + monospaced.bold.chinese-big5=AR PL ShanHeiSun Uni + monospaced.bold.chinese-gb18030=AR PL ShanHeiSun Uni ++monospaced.bold.assamese=Lohit Assamese ++monospaced.bold.devanagari=Lohit Devanagari + monospaced.bold.bengali=Lohit Bengali + monospaced.bold.gujarati=Lohit Gujarati + monospaced.bold.hindi=Lohit Hindi +@@ -245,6 +273,8 @@ + monospaced.italic.korean=Baekmuk Gulim + monospaced.italic.chinese-big5=AR PL ShanHeiSun Uni + monospaced.italic.chinese-gb18030=AR PL ShanHeiSun Uni ++monospaced.italic.assamese=Lohit Assamese ++monospaced.italic.devanagari=Lohit Devanagari + monospaced.italic.bengali=Lohit Bengali + monospaced.italic.gujarati=Lohit Gujarati + monospaced.italic.hindi=Lohit Hindi +@@ -260,6 +290,8 @@ + monospaced.bolditalic.korean=Baekmuk Gulim + monospaced.bolditalic.chinese-big5=AR PL ShanHeiSun Uni + monospaced.bolditalic.chinese-gb18030=AR PL ShanHeiSun Uni ++monospaced.bolditalic.assamese=Lohit Assamese ++monospaced.bolditalic.devanagari=Lohit Devanagari + monospaced.bolditalic.bengali=Lohit Bengali + monospaced.bolditalic.gujarati=Lohit Gujarati + monospaced.bolditalic.hindi=Lohit Hindi +@@ -275,6 +307,8 @@ + dialoginput.plain.korean=Baekmuk Gulim + dialoginput.plain.chinese-big5=AR PL ShanHeiSun Uni + dialoginput.plain.chinese-gb18030=AR PL ShanHeiSun Uni ++dialoginput.plain.assamese=Lohit Assamese ++dialoginput.plain.devanagari=Lohit Devanagari + dialoginput.plain.bengali=Lohit Bengali + dialoginput.plain.gujarati=Lohit Gujarati + dialoginput.plain.hindi=Lohit Hindi +@@ -290,6 +324,8 @@ + dialoginput.bold.korean=Baekmuk Gulim + dialoginput.bold.chinese-big5=AR PL ShanHeiSun Uni + dialoginput.bold.chinese-gb18030=AR PL ShanHeiSun Uni ++dialoginput.bold.assamese=Lohit Assamese ++dialoginput.bold.devanagari=Lohit Devanagari + dialoginput.bold.bengali=Lohit Bengali + dialoginput.bold.gujarati=Lohit Gujarati + dialoginput.bold.hindi=Lohit Hindi +@@ -305,6 +341,8 @@ + dialoginput.italic.korean=Baekmuk Gulim + dialoginput.italic.chinese-big5=AR PL ShanHeiSun Uni + dialoginput.italic.chinese-gb18030=AR PL ShanHeiSun Uni ++dialoginput.italic.assamese=Lohit Assamese ++dialoginput.italic.devanagari=Lohit Devanagari + dialoginput.italic.bengali=Lohit Bengali + dialoginput.italic.gujarati=Lohit Gujarati + dialoginput.italic.hindi=Lohit Hindi +@@ -320,6 +358,8 @@ + dialoginput.bolditalic.korean=Baekmuk Gulim + dialoginput.bolditalic.chinese-big5=AR PL ShanHeiSun Uni + dialoginput.bolditalic.chinese-gb18030=AR PL ShanHeiSun Uni ++dialoginput.bolditalic.assamese=Lohit Assamese ++dialoginput.bolditalic.devanagari=Lohit Devanagari + dialoginput.bolditalic.bengali=Lohit Bengali + dialoginput.bolditalic.gujarati=Lohit Gujarati + dialoginput.bolditalic.hindi=Lohit Hindi +@@ -356,21 +396,24 @@ + filename.DejaVu_Serif_Oblique=/usr/share/fonts/dejavu/DejaVuSerif-Oblique.ttf + filename.DejaVu_Serif_Bold_Oblique=/usr/share/fonts/dejavu/DejaVuSerif-BoldOblique.ttf + +-filename.Sazanami_Gothic=/usr/share/fonts/sazanami-fonts-gothic/sazanami-gothic.ttf +-filename.Sazanami_Mincho=/usr/share/fonts/sazanami-fonts-mincho/sazanami-mincho.ttf +-filename.AR_PL_ShanHeiSun_Uni=/usr/share/fonts/cjkunifonts-uming/uming.ttc +-filename.AR_PL_ZenKai_Uni=/usr/share/fonts/cjkunifonts-ukai/ukai.ttc +-filename.Baekmuk_Gulim=/usr/share/fonts/baekmuk-ttf-gulim/gulim.ttf +-filename.Baekmuk_Batang=/usr/share/fonts/baekmuk-ttf-batang/batang.ttf ++filename.Sazanami_Gothic=/usr/share/fonts/sazanami/gothic/sazanami-gothic.ttf ++filename.Sazanami_Mincho=/usr/share/fonts/sazanami/mincho/sazanami-mincho.ttf ++filename.AR_PL_ShanHeiSun_Uni=/usr/share/fonts/cjkuni-uming/uming.ttc ++filename.AR_PL_ZenKai_Uni=/usr/share/fonts/cjkuni-ukai/ukai.ttc ++filename.Baekmuk_Gulim=/usr/share/fonts/baekmuk-ttf/gulim.ttf ++filename.Baekmuk_Batang=/usr/share/fonts/baekmuk-ttf/batang.ttf ++ ++filename.Lohit_Assamese=/usr/share/fonts/lohit-assamese/Lohit-Assamese.ttf ++filename.Lohit_Devanagari=/usr/share/fonts/lohit-devanagari/Lohit-Devanagari.ttf ++filename.Lohit_Bengali=/usr/share/fonts/lohit-bengali/Lohit-Bengali.ttf ++filename.Lohit_Gujarati=/usr/share/fonts/lohit-gujarati/Lohit-Gujarati.ttf ++filename.Lohit_Hindi=/usr/share/fonts/lohit-devanagari/Lohit-Devanagari.ttf ++filename.Lohit_Kannda=/usr/share/fonts/lohit-kannada/Lohit-Kannada.ttf ++filename.Lohit_Malayalam=/usr/share/fonts/lohit-malayalam/Lohit-Malayalam.ttf ++filename.Lohit_Oriya=/usr/share/fonts/lohit-oriya/Lohit-Oriya.ttf ++filename.Lohit_Punjabi=/usr/share/fonts/lohit-punjabi/Lohit-Punjabi.ttf ++filename.Lohit_Tamil=/usr/share/fonts/lohit-tamil/Lohit-Tamil.ttf ++filename.Lohit_Telugu=/usr/share/fonts/lohit-telugu/Lohit-Telugu.ttf + +-filename.Lohit_Bengali=/usr/share/fonts/lohit-bengali/lohit_bn.ttf +-filename.Lohit_Gujarati=/usr/share/fonts/lohit-gujarati/lohit_gu.ttf +-filename.Lohit_Hindi=/usr/share/fonts/lohit-hindi/lohit_hi.ttf +-filename.Lohit_Kannda=/usr/share/fonts/lohit-kannada/lohit_kn.ttf +-filename.Lohit_Malayalam=/usr/share/fonts/lohit-malayalam/lohit_ml.ttf +-filename.Lohit_Oriya=/usr/share/fonts/lohit-oriya/lohit_or.ttf +-filename.Lohit_Punjabi=/usr/share/fonts/lohit-punjabi/lohit_pa.ttf +-filename.Lohit_Tamil=/usr/share/fonts/lohit-tamil/lohit_ta.ttf +-filename.Lohit_Telugu=/usr/share/fonts/lohit-telugu/lohit_te.ttf + filename.LKLUG=/usr/share/fonts/lklug/lklug.ttf + From ahughes at redhat.com Tue Nov 9 07:44:57 2010 From: ahughes at redhat.com (Dr Andrew John Hughes) Date: Tue, 9 Nov 2010 15:44:57 +0000 Subject: request commit for asians fonts config patches for fedoras In-Reply-To: <4CD9678E.8030103@redhat.com> References: <1289295987.2775.85.camel@springer.wildebeest.org> <20101109140517.GD7776@rivendell.middle-earth.co.uk> <1289311774.2775.358.camel@springer.wildebeest.org> <4CD9678E.8030103@redhat.com> Message-ID: <20101109154457.GE7776@rivendell.middle-earth.co.uk> Your ChangeLog doesn't match the patch. The patch contains: Makefile.am | 6 +++++- b/patches/f14-fonts.patch | 13 +++++++++++++ b/patches/fontconfig-Fedora-11-14-changes.patch | 1 + Also you still haven't explained why the f11-f13 versions are being altered. I thought the need to copy them first was so they didn't get these changes? Please explain. On 16:23 Tue 09 Nov , Jiri Vanek wrote: > # HG changeset patch > # User Jiri Vanek > # Date 1289314961 -3600 > # Node ID f5a924055ba3a42622c68abcbe8e965c498b25f5 > # Parent c06d558f7684615065180c613e44025d84694373 > Updated font configurations for Fedora 9-14 > > diff -r c06d558f7684 -r f5a924055ba3 ChangeLog > --- a/ChangeLog Mon Nov 08 12:28:36 2010 +0100 > +++ b/ChangeLog Tue Nov 09 16:02:41 2010 +0100 > @@ -1,3 +1,14 @@ > +2010-11-09 Jiri Vanek > + > + * Makefile.am: > + * patches/fontconfig-Fedora-11-14-changes.patch > + * patches/Makefile-copy-fontconfig.Fedora.patch > + Updated font configurations for Fedora 9-14 > + * Makefile.am: > + added cloning of fontconfig.Fedora to Fedora.12,11,10,9 > + * openjdk/jdk/make/sun/awt/Makefile: > + added notifications about above mentioned fontconfig files > + > 2010-11-08 Pavel Tisnovsky > > * Makefile.am: > diff -r c06d558f7684 -r f5a924055ba3 Makefile.am > --- a/Makefile.am Mon Nov 08 12:28:36 2010 +0100 > +++ b/Makefile.am Tue Nov 09 16:02:41 2010 +0100 > @@ -295,7 +295,9 @@ > patches/6703377-freetypescaler.patch \ > patches/icedtea-jtreg-international-fonts.patch \ > patches/openjdk/6967436-6976265-6967434-pisces.patch \ > - patches/openjdk/6997495-test_correction_6857159.patch > + patches/openjdk/6997495-test_correction_6857159.patch \ > + patches/f14-fonts.patch \ > + patches/fontconfig-Fedora-11-14-changes.patch > > if WITH_ALT_HSBUILD > ICEDTEA_PATCHES += \ > @@ -836,6 +838,11 @@ > endif > mkdir -p stamps > touch stamps/extract-openjdk.stamp > +#clone fedoras fontconfigs > + cp > $(abs_top_srcdir)/openjdk/jdk/src/solaris/classes/sun/awt/fontconfigs/linux.fontconfig.Fedora.properties > > $(abs_top_srcdir)/openjdk/jdk/src/solaris/classes/sun/awt/fontconfigs/linux.fontconfig.Fedora.9.properties > + cp > $(abs_top_srcdir)/openjdk/jdk/src/solaris/classes/sun/awt/fontconfigs/linux.fontconfig.Fedora.properties > > $(abs_top_srcdir)/openjdk/jdk/src/solaris/classes/sun/awt/fontconfigs/linux.fontconfig.Fedora.10.properties > + cp > $(abs_top_srcdir)/openjdk/jdk/src/solaris/classes/sun/awt/fontconfigs/linux.fontconfig.Fedora.properties > > $(abs_top_srcdir)/openjdk/jdk/src/solaris/classes/sun/awt/fontconfigs/linux.fontconfig.Fedora.11.properties > + cp > $(abs_top_srcdir)/openjdk/jdk/src/solaris/classes/sun/awt/fontconfigs/linux.fontconfig.Fedora.properties > > $(abs_top_srcdir)/openjdk/jdk/src/solaris/classes/sun/awt/fontconfigs/linux.fontconfig.Fedora.12.properties > > clean-extract-openjdk: > rm -rf openjdk > diff -r c06d558f7684 -r f5a924055ba3 patches/f14-fonts.patch > --- /dev/null Thu Jan 01 00:00:00 1970 +0000 > +++ b/patches/f14-fonts.patch Tue Nov 09 16:02:41 2010 +0100 > @@ -0,0 +1,13 @@ > +--- openjdk/jdk/make/sun/awt/Makefile 2010-11-04 09:52:49.583434000 +0100 > ++++ openjdk/jdk/make/sun/awt/Makefile 2010-11-04 16:50:14.091688769 +0100 > +@@ -387,6 +387,10 @@ > + fontconfig.SuSE.properties \ > + fontconfig.Ubuntu.properties \ > + fontconfig.Fedora.properties \ > ++ fontconfig.Fedora.9.properties \ > ++ fontconfig.Fedora.10.properties \ > ++ fontconfig.Fedora.11.properties \ > ++ fontconfig.Fedora.12.properties \ > + fontconfig.RedHat.6.0.properties \ > + fontconfig.Gentoo.properties > + else > diff -r c06d558f7684 -r f5a924055ba3 > patches/fontconfig-Fedora-11-14-changes.patch > --- /dev/null Thu Jan 01 00:00:00 1970 +0000 > +++ b/patches/fontconfig-Fedora-11-14-changes.patch Tue Nov 09 16:02:41 > 2010 +0100 > @@ -0,0 +1,663 @@ > +--- > openjdk/jdk/src/solaris/classes/sun/awt/fontconfigs/linux.fontconfig.Fedora.11.properties > 2010-11-04 11:06:26.695428114 +0100 > ++++ > openjdk/jdk/src/solaris/classes/sun/awt/fontconfigs/linux.fontconfig.Fedora.11.properties > 2010-11-04 11:19:45.133587953 +0100 > +@@ -35,6 +35,8 @@ > + dialog.plain.korean=Baekmuk Gulim > + dialog.plain.chinese-big5=AR PL ShanHeiSun Uni > + dialog.plain.chinese-gb18030=AR PL ShanHeiSun Uni > ++dialog.plain.assamese=Lohit Assamese > ++dialog.plain.devanagari=Lohit Devanagari > + dialog.plain.bengali=Lohit Bengali > + dialog.plain.gujarati=Lohit Gujarati > + dialog.plain.hindi=Lohit Hindi > +@@ -50,6 +52,8 @@ > + dialog.bold.korean=Baekmuk Gulim > + dialog.bold.chinese-big5=AR PL ShanHeiSun Uni > + dialog.bold.chinese-gb18030=AR PL ShanHeiSun Uni > ++dialog.bold.assamese=Lohit Assamese > ++dialog.bold.devanagari=Lohit Devanagari > + dialog.bold.bengali=Lohit Bengali > + dialog.bold.gujarati=Lohit Gujarati > + dialog.bold.hindi=Lohit Hindi > +@@ -65,6 +69,8 @@ > + dialog.italic.korean=Baekmuk Gulim > + dialog.italic.chinese-big5=AR PL ShanHeiSun Uni > + dialog.italic.chinese-gb18030=AR PL ShanHeiSun Uni > ++dialog.italic.assamese=Lohit Assamese > ++dialog.italic.devanagari=Lohit Devanagari > + dialog.italic.bengali=Lohit Bengali > + dialog.italic.gujarati=Lohit Gujarati > + dialog.italic.hindi=Lohit Hindi > +@@ -80,6 +86,8 @@ > + dialog.bolditalic.korean=Baekmuk Gulim > + dialog.bolditalic.chinese-big5=AR PL ShanHeiSun Uni > + dialog.bolditalic.chinese-gb18030=AR PL ShanHeiSun Uni > ++dialog.bolditalic.assamese=Lohit Assamese > ++dialog.bolditalic.devanagari=Lohit Devanagari > + dialog.bolditalic.bengali=Lohit Bengali > + dialog.bolditalic.gujarati=Lohit Gujarati > + dialog.bolditalic.hindi=Lohit Hindi > +@@ -95,6 +103,8 @@ > + sansserif.plain.korean=Baekmuk Gulim > + sansserif.plain.chinese-big5=AR PL ShanHeiSun Uni > + sansserif.plain.chinese-gb18030=AR PL ShanHeiSun Uni > ++sansserif.plain.assamese=Lohit Assamese > ++sansserif.plain.devanagari=Lohit Devanagari > + sansserif.plain.bengali=Lohit Bengali > + sansserif.plain.gujarati=Lohit Gujarati > + sansserif.plain.hindi=Lohit Hindi > +@@ -110,6 +120,8 @@ > + sansserif.bold.korean=Baekmuk Gulim > + sansserif.bold.chinese-big5=AR PL ShanHeiSun Uni > + sansserif.bold.chinese-gb18030=AR PL ShanHeiSun Uni > ++sansserif.bold.assamese=Lohit Assamese > ++sansserif.bold.devanagari=Lohit Devanagari > + sansserif.bold.bengali=Lohit Bengali > + sansserif.bold.gujarati=Lohit Gujarati > + sansserif.bold.hindi=Lohit Hindi > +@@ -125,6 +137,8 @@ > + sansserif.italic.korean=Baekmuk Gulim > + sansserif.italic.chinese-big5=AR PL ShanHeiSun Uni > + sansserif.italic.chinese-gb18030=AR PL ShanHeiSun Uni > ++sansserif.italic.assamese=Lohit Assamese > ++sansserif.italic.devanagari=Lohit Devanagari > + sansserif.italic.bengali=Lohit Bengali > + sansserif.italic.gujarati=Lohit Gujarati > + sansserif.italic.hindi=Lohit Hindi > +@@ -140,6 +154,8 @@ > + sansserif.bolditalic.korean=Baekmuk Gulim > + sansserif.bolditalic.chinese-big5=AR PL ShanHeiSun Uni > + sansserif.bolditalic.chinese-gb18030=AR PL ShanHeiSun Uni > ++sansserif.bolditalic.assamese=Lohit Assamese > ++sansserif.bolditalic.devanagari=Lohit Devanagari > + sansserif.bolditalic.bengali=Lohit Bengali > + sansserif.bolditalic.gujarati=Lohit Gujarati > + sansserif.bolditalic.hindi=Lohit Hindi > +@@ -155,6 +171,8 @@ > + serif.plain.korean=Baekmuk Batang > + serif.plain.chinese-big5=AR PL ZenKai Uni > + serif.plain.chinese-gb18030=AR PL ZenKai Uni > ++serif.plain.assamese=Lohit Assamese > ++serif.plain.devanagari=Lohit Devanagari > + serif.plain.bengali=Lohit Bengali > + serif.plain.gujarati=Lohit Gujarati > + serif.plain.hindi=Lohit Hindi > +@@ -170,6 +188,8 @@ > + serif.bold.korean=Baekmuk Batang > + serif.bold.chinese-big5=AR PL ZenKai Uni > + serif.bold.chinese-gb18030=AR PL ZenKai Uni > ++serif.bold.assamese=Lohit Assamese > ++serif.bold.devanagari=Lohit Devanagari > + serif.bold.bengali=Lohit Bengali > + serif.bold.gujarati=Lohit Gujarati > + serif.bold.hindi=Lohit Hindi > +@@ -185,6 +205,8 @@ > + serif.italic.korean=Baekmuk Batang > + serif.italic.chinese-big5=AR PL ZenKai Uni > + serif.italic.chinese-gb18030=AR PL ZenKai Uni > ++serif.italic.assamese=Lohit Assamese > ++serif.italic.devanagari=Lohit Devanagari > + serif.italic.bengali=Lohit Bengali > + serif.italic.gujarati=Lohit Gujarati > + serif.italic.hindi=Lohit Hindi > +@@ -200,6 +222,8 @@ > + serif.bolditalic.korean=Baekmuk Batang > + serif.bolditalic.chinese-big5=AR PL ZenKai Uni > + serif.bolditalic.chinese-gb18030=AR PL ZenKai Uni > ++serif.bolditalic.assamese=Lohit Assamese > ++serif.bolditalic.devanagari=Lohit Devanagari > + serif.bolditalic.bengali=Lohit Bengali > + serif.bolditalic.gujarati=Lohit Gujarati > + serif.bolditalic.hindi=Lohit Hindi > +@@ -215,6 +239,8 @@ > + monospaced.plain.korean=Baekmuk Gulim > + monospaced.plain.chinese-big5=AR PL ShanHeiSun Uni > + monospaced.plain.chinese-gb18030=AR PL ShanHeiSun Uni > ++monospaced.plain.assamese=Lohit Assamese > ++monospaced.plain.devanagari=Lohit Devanagari > + monospaced.plain.bengali=Lohit Bengali > + monospaced.plain.gujarati=Lohit Gujarati > + monospaced.plain.hindi=Lohit Hindi > +@@ -230,6 +256,8 @@ > + monospaced.bold.korean=Baekmuk Gulim > + monospaced.bold.chinese-big5=AR PL ShanHeiSun Uni > + monospaced.bold.chinese-gb18030=AR PL ShanHeiSun Uni > ++monospaced.bold.assamese=Lohit Assamese > ++monospaced.bold.devanagari=Lohit Devanagari > + monospaced.bold.bengali=Lohit Bengali > + monospaced.bold.gujarati=Lohit Gujarati > + monospaced.bold.hindi=Lohit Hindi > +@@ -245,6 +273,8 @@ > + monospaced.italic.korean=Baekmuk Gulim > + monospaced.italic.chinese-big5=AR PL ShanHeiSun Uni > + monospaced.italic.chinese-gb18030=AR PL ShanHeiSun Uni > ++monospaced.italic.assamese=Lohit Assamese > ++monospaced.italic.devanagari=Lohit Devanagari > + monospaced.italic.bengali=Lohit Bengali > + monospaced.italic.gujarati=Lohit Gujarati > + monospaced.italic.hindi=Lohit Hindi > +@@ -260,6 +290,8 @@ > + monospaced.bolditalic.korean=Baekmuk Gulim > + monospaced.bolditalic.chinese-big5=AR PL ShanHeiSun Uni > + monospaced.bolditalic.chinese-gb18030=AR PL ShanHeiSun Uni > ++monospaced.bolditalic.assamese=Lohit Assamese > ++monospaced.bolditalic.devanagari=Lohit Devanagari > + monospaced.bolditalic.bengali=Lohit Bengali > + monospaced.bolditalic.gujarati=Lohit Gujarati > + monospaced.bolditalic.hindi=Lohit Hindi > +@@ -275,6 +307,8 @@ > + dialoginput.plain.korean=Baekmuk Gulim > + dialoginput.plain.chinese-big5=AR PL ShanHeiSun Uni > + dialoginput.plain.chinese-gb18030=AR PL ShanHeiSun Uni > ++dialoginput.plain.assamese=Lohit Assamese > ++dialoginput.plain.devanagari=Lohit Devanagari > + dialoginput.plain.bengali=Lohit Bengali > + dialoginput.plain.gujarati=Lohit Gujarati > + dialoginput.plain.hindi=Lohit Hindi > +@@ -290,6 +324,8 @@ > + dialoginput.bold.korean=Baekmuk Gulim > + dialoginput.bold.chinese-big5=AR PL ShanHeiSun Uni > + dialoginput.bold.chinese-gb18030=AR PL ShanHeiSun Uni > ++dialoginput.bold.assamese=Lohit Assamese > ++dialoginput.bold.devanagari=Lohit Devanagari > + dialoginput.bold.bengali=Lohit Bengali > + dialoginput.bold.gujarati=Lohit Gujarati > + dialoginput.bold.hindi=Lohit Hindi > +@@ -305,6 +341,8 @@ > + dialoginput.italic.korean=Baekmuk Gulim > + dialoginput.italic.chinese-big5=AR PL ShanHeiSun Uni > + dialoginput.italic.chinese-gb18030=AR PL ShanHeiSun Uni > ++dialoginput.italic.assamese=Lohit Assamese > ++dialoginput.italic.devanagari=Lohit Devanagari > + dialoginput.italic.bengali=Lohit Bengali > + dialoginput.italic.gujarati=Lohit Gujarati > + dialoginput.italic.hindi=Lohit Hindi > +@@ -320,6 +358,8 @@ > + dialoginput.bolditalic.korean=Baekmuk Gulim > + dialoginput.bolditalic.chinese-big5=AR PL ShanHeiSun Uni > + dialoginput.bolditalic.chinese-gb18030=AR PL ShanHeiSun Uni > ++dialoginput.bolditalic.assamese=Lohit Assamese > ++dialoginput.bolditalic.devanagari=Lohit Devanagari > + dialoginput.bolditalic.bengali=Lohit Bengali > + dialoginput.bolditalic.gujarati=Lohit Gujarati > + dialoginput.bolditalic.hindi=Lohit Hindi > +@@ -356,21 +396,24 @@ > + > filename.DejaVu_Serif_Oblique=/usr/share/fonts/dejavu/DejaVuSerif-Oblique.ttf > + > filename.DejaVu_Serif_Bold_Oblique=/usr/share/fonts/dejavu/DejaVuSerif-BoldOblique.ttf > + > +-filename.Sazanami_Gothic=/usr/share/fonts/sazanami-fonts-gothic/sazanami-gothic.ttf > +-filename.Sazanami_Mincho=/usr/share/fonts/sazanami-fonts-mincho/sazanami-mincho.ttf > ++filename.Sazanami_Gothic=/usr/share/fonts/sazanami/gothic/sazanami-gothic.ttf > ++filename.Sazanami_Mincho=/usr/share/fonts/sazanami/mincho/sazanami-mincho.ttf > + filename.AR_PL_ShanHeiSun_Uni=/usr/share/fonts/cjkunifonts-uming/uming.ttc > + filename.AR_PL_ZenKai_Uni=/usr/share/fonts/cjkunifonts-ukai/ukai.ttc > +-filename.Baekmuk_Gulim=/usr/share/fonts/baekmuk-ttf-gulim/gulim.ttf > +-filename.Baekmuk_Batang=/usr/share/fonts/baekmuk-ttf-batang/batang.ttf > ++filename.Baekmuk_Gulim=/usr/share/fonts/baekmuk-ttf/gulim.ttf > ++filename.Baekmuk_Batang=/usr/share/fonts/baekmuk-ttf/batang.ttf > ++ > ++filename.Lohit_Assamese=/usr/share/fonts/lohit-assamese/Lohit-Assamese.ttf > ++filename.Lohit_Devanagari=/usr/share/fonts/lohit-devanagari/Lohit-Devanagari.ttf > ++filename.Lohit_Bengali=/usr/share/fonts/lohit-bengali/Lohit-Bengali.ttf > ++filename.Lohit_Gujarati=/usr/share/fonts/lohit-gujarati/Lohit-Gujarati.ttf > ++filename.Lohit_Hindi=/usr/share/fonts/lohit-hindi/Lohit-Hindi.ttf > ++filename.Lohit_Kannda=/usr/share/fonts/lohit-kannada/Lohit-Kannada.ttf > ++filename.Lohit_Malayalam=/usr/share/fonts/lohit-malayalam/Lohit-Malayalam.ttf > ++filename.Lohit_Oriya=/usr/share/fonts/lohit-oriya/Lohit-Oriya.ttf > ++filename.Lohit_Punjabi=/usr/share/fonts/lohit-punjabi/Lohit-Punjabi.ttf > ++filename.Lohit_Tamil=/usr/share/fonts/lohit-tamil/Lohit-Tamil.ttf > ++filename.Lohit_Telugu=/usr/share/fonts/lohit-telugu/Lohit-Telugu.ttf > + > +-filename.Lohit_Bengali=/usr/share/fonts/lohit-bengali/lohit_bn.ttf > +-filename.Lohit_Gujarati=/usr/share/fonts/lohit-gujarati/lohit_gu.ttf > +-filename.Lohit_Hindi=/usr/share/fonts/lohit-hindi/lohit_hi.ttf > +-filename.Lohit_Kannda=/usr/share/fonts/lohit-kannada/lohit_kn.ttf > +-filename.Lohit_Malayalam=/usr/share/fonts/lohit-malayalam/lohit_ml.ttf > +-filename.Lohit_Oriya=/usr/share/fonts/lohit-oriya/lohit_or.ttf > +-filename.Lohit_Punjabi=/usr/share/fonts/lohit-punjabi/lohit_pa.ttf > +-filename.Lohit_Tamil=/usr/share/fonts/lohit-tamil/lohit_ta.ttf > +-filename.Lohit_Telugu=/usr/share/fonts/lohit-telugu/lohit_te.ttf > + filename.LKLUG=/usr/share/fonts/lklug/lklug.ttf > + > + > +--- > openjdk/jdk/src/solaris/classes/sun/awt/fontconfigs/linux.fontconfig.Fedora.12.properties > 2010-11-04 11:06:26.695428114 +0100 > ++++ > openjdk/jdk/src/solaris/classes/sun/awt/fontconfigs/linux.fontconfig.Fedora.12.properties > 2010-11-04 11:19:45.133587953 +0100 > +@@ -35,6 +35,8 @@ > + dialog.plain.korean=Baekmuk Gulim > + dialog.plain.chinese-big5=AR PL ShanHeiSun Uni > + dialog.plain.chinese-gb18030=AR PL ShanHeiSun Uni > ++dialog.plain.assamese=Lohit Assamese > ++dialog.plain.devanagari=Lohit Devanagari > + dialog.plain.bengali=Lohit Bengali > + dialog.plain.gujarati=Lohit Gujarati > + dialog.plain.hindi=Lohit Hindi > +@@ -50,6 +52,8 @@ > + dialog.bold.korean=Baekmuk Gulim > + dialog.bold.chinese-big5=AR PL ShanHeiSun Uni > + dialog.bold.chinese-gb18030=AR PL ShanHeiSun Uni > ++dialog.bold.assamese=Lohit Assamese > ++dialog.bold.devanagari=Lohit Devanagari > + dialog.bold.bengali=Lohit Bengali > + dialog.bold.gujarati=Lohit Gujarati > + dialog.bold.hindi=Lohit Hindi > +@@ -65,6 +69,8 @@ > + dialog.italic.korean=Baekmuk Gulim > + dialog.italic.chinese-big5=AR PL ShanHeiSun Uni > + dialog.italic.chinese-gb18030=AR PL ShanHeiSun Uni > ++dialog.italic.assamese=Lohit Assamese > ++dialog.italic.devanagari=Lohit Devanagari > + dialog.italic.bengali=Lohit Bengali > + dialog.italic.gujarati=Lohit Gujarati > + dialog.italic.hindi=Lohit Hindi > +@@ -80,6 +86,8 @@ > + dialog.bolditalic.korean=Baekmuk Gulim > + dialog.bolditalic.chinese-big5=AR PL ShanHeiSun Uni > + dialog.bolditalic.chinese-gb18030=AR PL ShanHeiSun Uni > ++dialog.bolditalic.assamese=Lohit Assamese > ++dialog.bolditalic.devanagari=Lohit Devanagari > + dialog.bolditalic.bengali=Lohit Bengali > + dialog.bolditalic.gujarati=Lohit Gujarati > + dialog.bolditalic.hindi=Lohit Hindi > +@@ -95,6 +103,8 @@ > + sansserif.plain.korean=Baekmuk Gulim > + sansserif.plain.chinese-big5=AR PL ShanHeiSun Uni > + sansserif.plain.chinese-gb18030=AR PL ShanHeiSun Uni > ++sansserif.plain.assamese=Lohit Assamese > ++sansserif.plain.devanagari=Lohit Devanagari > + sansserif.plain.bengali=Lohit Bengali > + sansserif.plain.gujarati=Lohit Gujarati > + sansserif.plain.hindi=Lohit Hindi > +@@ -110,6 +120,8 @@ > + sansserif.bold.korean=Baekmuk Gulim > + sansserif.bold.chinese-big5=AR PL ShanHeiSun Uni > + sansserif.bold.chinese-gb18030=AR PL ShanHeiSun Uni > ++sansserif.bold.assamese=Lohit Assamese > ++sansserif.bold.devanagari=Lohit Devanagari > + sansserif.bold.bengali=Lohit Bengali > + sansserif.bold.gujarati=Lohit Gujarati > + sansserif.bold.hindi=Lohit Hindi > +@@ -125,6 +137,8 @@ > + sansserif.italic.korean=Baekmuk Gulim > + sansserif.italic.chinese-big5=AR PL ShanHeiSun Uni > + sansserif.italic.chinese-gb18030=AR PL ShanHeiSun Uni > ++sansserif.italic.assamese=Lohit Assamese > ++sansserif.italic.devanagari=Lohit Devanagari > + sansserif.italic.bengali=Lohit Bengali > + sansserif.italic.gujarati=Lohit Gujarati > + sansserif.italic.hindi=Lohit Hindi > +@@ -140,6 +154,8 @@ > + sansserif.bolditalic.korean=Baekmuk Gulim > + sansserif.bolditalic.chinese-big5=AR PL ShanHeiSun Uni > + sansserif.bolditalic.chinese-gb18030=AR PL ShanHeiSun Uni > ++sansserif.bolditalic.assamese=Lohit Assamese > ++sansserif.bolditalic.devanagari=Lohit Devanagari > + sansserif.bolditalic.bengali=Lohit Bengali > + sansserif.bolditalic.gujarati=Lohit Gujarati > + sansserif.bolditalic.hindi=Lohit Hindi > +@@ -155,6 +171,8 @@ > + serif.plain.korean=Baekmuk Batang > + serif.plain.chinese-big5=AR PL ZenKai Uni > + serif.plain.chinese-gb18030=AR PL ZenKai Uni > ++serif.plain.assamese=Lohit Assamese > ++serif.plain.devanagari=Lohit Devanagari > + serif.plain.bengali=Lohit Bengali > + serif.plain.gujarati=Lohit Gujarati > + serif.plain.hindi=Lohit Hindi > +@@ -170,6 +188,8 @@ > + serif.bold.korean=Baekmuk Batang > + serif.bold.chinese-big5=AR PL ZenKai Uni > + serif.bold.chinese-gb18030=AR PL ZenKai Uni > ++serif.bold.assamese=Lohit Assamese > ++serif.bold.devanagari=Lohit Devanagari > + serif.bold.bengali=Lohit Bengali > + serif.bold.gujarati=Lohit Gujarati > + serif.bold.hindi=Lohit Hindi > +@@ -185,6 +205,8 @@ > + serif.italic.korean=Baekmuk Batang > + serif.italic.chinese-big5=AR PL ZenKai Uni > + serif.italic.chinese-gb18030=AR PL ZenKai Uni > ++serif.italic.assamese=Lohit Assamese > ++serif.italic.devanagari=Lohit Devanagari > + serif.italic.bengali=Lohit Bengali > + serif.italic.gujarati=Lohit Gujarati > + serif.italic.hindi=Lohit Hindi > +@@ -200,6 +222,8 @@ > + serif.bolditalic.korean=Baekmuk Batang > + serif.bolditalic.chinese-big5=AR PL ZenKai Uni > + serif.bolditalic.chinese-gb18030=AR PL ZenKai Uni > ++serif.bolditalic.assamese=Lohit Assamese > ++serif.bolditalic.devanagari=Lohit Devanagari > + serif.bolditalic.bengali=Lohit Bengali > + serif.bolditalic.gujarati=Lohit Gujarati > + serif.bolditalic.hindi=Lohit Hindi > +@@ -215,6 +239,8 @@ > + monospaced.plain.korean=Baekmuk Gulim > + monospaced.plain.chinese-big5=AR PL ShanHeiSun Uni > + monospaced.plain.chinese-gb18030=AR PL ShanHeiSun Uni > ++monospaced.plain.assamese=Lohit Assamese > ++monospaced.plain.devanagari=Lohit Devanagari > + monospaced.plain.bengali=Lohit Bengali > + monospaced.plain.gujarati=Lohit Gujarati > + monospaced.plain.hindi=Lohit Hindi > +@@ -230,6 +256,8 @@ > + monospaced.bold.korean=Baekmuk Gulim > + monospaced.bold.chinese-big5=AR PL ShanHeiSun Uni > + monospaced.bold.chinese-gb18030=AR PL ShanHeiSun Uni > ++monospaced.bold.assamese=Lohit Assamese > ++monospaced.bold.devanagari=Lohit Devanagari > + monospaced.bold.bengali=Lohit Bengali > + monospaced.bold.gujarati=Lohit Gujarati > + monospaced.bold.hindi=Lohit Hindi > +@@ -245,6 +273,8 @@ > + monospaced.italic.korean=Baekmuk Gulim > + monospaced.italic.chinese-big5=AR PL ShanHeiSun Uni > + monospaced.italic.chinese-gb18030=AR PL ShanHeiSun Uni > ++monospaced.italic.assamese=Lohit Assamese > ++monospaced.italic.devanagari=Lohit Devanagari > + monospaced.italic.bengali=Lohit Bengali > + monospaced.italic.gujarati=Lohit Gujarati > + monospaced.italic.hindi=Lohit Hindi > +@@ -260,6 +290,8 @@ > + monospaced.bolditalic.korean=Baekmuk Gulim > + monospaced.bolditalic.chinese-big5=AR PL ShanHeiSun Uni > + monospaced.bolditalic.chinese-gb18030=AR PL ShanHeiSun Uni > ++monospaced.bolditalic.assamese=Lohit Assamese > ++monospaced.bolditalic.devanagari=Lohit Devanagari > + monospaced.bolditalic.bengali=Lohit Bengali > + monospaced.bolditalic.gujarati=Lohit Gujarati > + monospaced.bolditalic.hindi=Lohit Hindi > +@@ -275,6 +307,8 @@ > + dialoginput.plain.korean=Baekmuk Gulim > + dialoginput.plain.chinese-big5=AR PL ShanHeiSun Uni > + dialoginput.plain.chinese-gb18030=AR PL ShanHeiSun Uni > ++dialoginput.plain.assamese=Lohit Assamese > ++dialoginput.plain.devanagari=Lohit Devanagari > + dialoginput.plain.bengali=Lohit Bengali > + dialoginput.plain.gujarati=Lohit Gujarati > + dialoginput.plain.hindi=Lohit Hindi > +@@ -290,6 +324,8 @@ > + dialoginput.bold.korean=Baekmuk Gulim > + dialoginput.bold.chinese-big5=AR PL ShanHeiSun Uni > + dialoginput.bold.chinese-gb18030=AR PL ShanHeiSun Uni > ++dialoginput.bold.assamese=Lohit Assamese > ++dialoginput.bold.devanagari=Lohit Devanagari > + dialoginput.bold.bengali=Lohit Bengali > + dialoginput.bold.gujarati=Lohit Gujarati > + dialoginput.bold.hindi=Lohit Hindi > +@@ -305,6 +341,8 @@ > + dialoginput.italic.korean=Baekmuk Gulim > + dialoginput.italic.chinese-big5=AR PL ShanHeiSun Uni > + dialoginput.italic.chinese-gb18030=AR PL ShanHeiSun Uni > ++dialoginput.italic.assamese=Lohit Assamese > ++dialoginput.italic.devanagari=Lohit Devanagari > + dialoginput.italic.bengali=Lohit Bengali > + dialoginput.italic.gujarati=Lohit Gujarati > + dialoginput.italic.hindi=Lohit Hindi > +@@ -320,6 +358,8 @@ > + dialoginput.bolditalic.korean=Baekmuk Gulim > + dialoginput.bolditalic.chinese-big5=AR PL ShanHeiSun Uni > + dialoginput.bolditalic.chinese-gb18030=AR PL ShanHeiSun Uni > ++dialoginput.bolditalic.assamese=Lohit Assamese > ++dialoginput.bolditalic.devanagari=Lohit Devanagari > + dialoginput.bolditalic.bengali=Lohit Bengali > + dialoginput.bolditalic.gujarati=Lohit Gujarati > + dialoginput.bolditalic.hindi=Lohit Hindi > +@@ -356,21 +396,24 @@ > + > filename.DejaVu_Serif_Oblique=/usr/share/fonts/dejavu/DejaVuSerif-Oblique.ttf > + > filename.DejaVu_Serif_Bold_Oblique=/usr/share/fonts/dejavu/DejaVuSerif-BoldOblique.ttf > + > +-filename.Sazanami_Gothic=/usr/share/fonts/sazanami-fonts-gothic/sazanami-gothic.ttf > +-filename.Sazanami_Mincho=/usr/share/fonts/sazanami-fonts-mincho/sazanami-mincho.ttf > ++filename.Sazanami_Gothic=/usr/share/fonts/sazanami/gothic/sazanami-gothic.ttf > ++filename.Sazanami_Mincho=/usr/share/fonts/sazanami/mincho/sazanami-mincho.ttf > + filename.AR_PL_ShanHeiSun_Uni=/usr/share/fonts/cjkunifonts-uming/uming.ttc > + filename.AR_PL_ZenKai_Uni=/usr/share/fonts/cjkunifonts-ukai/ukai.ttc > +-filename.Baekmuk_Gulim=/usr/share/fonts/baekmuk-ttf-gulim/gulim.ttf > +-filename.Baekmuk_Batang=/usr/share/fonts/baekmuk-ttf-batang/batang.ttf > ++filename.Baekmuk_Gulim=/usr/share/fonts/baekmuk-ttf/gulim.ttf > ++filename.Baekmuk_Batang=/usr/share/fonts/baekmuk-ttf/batang.ttf > ++ > ++filename.Lohit_Assamese=/usr/share/fonts/lohit-assamese/Lohit-Assamese.ttf > ++filename.Lohit_Devanagari=/usr/share/fonts/lohit-devanagari/Lohit-Devanagari.ttf > ++filename.Lohit_Bengali=/usr/share/fonts/lohit-bengali/Lohit-Bengali.ttf > ++filename.Lohit_Gujarati=/usr/share/fonts/lohit-gujarati/Lohit-Gujarati.ttf > ++filename.Lohit_Hindi=/usr/share/fonts/lohit-hindi/Lohit-Hindi.ttf > ++filename.Lohit_Kannda=/usr/share/fonts/lohit-kannada/Lohit-Kannada.ttf > ++filename.Lohit_Malayalam=/usr/share/fonts/lohit-malayalam/Lohit-Malayalam.ttf > ++filename.Lohit_Oriya=/usr/share/fonts/lohit-oriya/Lohit-Oriya.ttf > ++filename.Lohit_Punjabi=/usr/share/fonts/lohit-punjabi/Lohit-Punjabi.ttf > ++filename.Lohit_Tamil=/usr/share/fonts/lohit-tamil/Lohit-Tamil.ttf > ++filename.Lohit_Telugu=/usr/share/fonts/lohit-telugu/Lohit-Telugu.ttf > + > +-filename.Lohit_Bengali=/usr/share/fonts/lohit-bengali/lohit_bn.ttf > +-filename.Lohit_Gujarati=/usr/share/fonts/lohit-gujarati/lohit_gu.ttf > +-filename.Lohit_Hindi=/usr/share/fonts/lohit-hindi/lohit_hi.ttf > +-filename.Lohit_Kannda=/usr/share/fonts/lohit-kannada/lohit_kn.ttf > +-filename.Lohit_Malayalam=/usr/share/fonts/lohit-malayalam/lohit_ml.ttf > +-filename.Lohit_Oriya=/usr/share/fonts/lohit-oriya/lohit_or.ttf > +-filename.Lohit_Punjabi=/usr/share/fonts/lohit-punjabi/lohit_pa.ttf > +-filename.Lohit_Tamil=/usr/share/fonts/lohit-tamil/lohit_ta.ttf > +-filename.Lohit_Telugu=/usr/share/fonts/lohit-telugu/lohit_te.ttf > + filename.LKLUG=/usr/share/fonts/lklug/lklug.ttf > + > +--- > openjdk/jdk/src/solaris/classes/sun/awt/fontconfigs/linux.fontconfig.Fedora.properties > 2010-11-04 11:06:26.695428114 +0100 > ++++ > openjdk/jdk/src/solaris/classes/sun/awt/fontconfigs/linux.fontconfig.Fedora.properties > 2010-11-04 11:06:25.602455633 +0100 > +@@ -35,6 +35,8 @@ > + dialog.plain.korean=Baekmuk Gulim > + dialog.plain.chinese-big5=AR PL ShanHeiSun Uni > + dialog.plain.chinese-gb18030=AR PL ShanHeiSun Uni > ++dialog.plain.assamese=Lohit Assamese > ++dialog.plain.devanagari=Lohit Devanagari > + dialog.plain.bengali=Lohit Bengali > + dialog.plain.gujarati=Lohit Gujarati > + dialog.plain.hindi=Lohit Hindi > +@@ -50,6 +52,8 @@ > + dialog.bold.korean=Baekmuk Gulim > + dialog.bold.chinese-big5=AR PL ShanHeiSun Uni > + dialog.bold.chinese-gb18030=AR PL ShanHeiSun Uni > ++dialog.bold.assamese=Lohit Assamese > ++dialog.bold.devanagari=Lohit Devanagari > + dialog.bold.bengali=Lohit Bengali > + dialog.bold.gujarati=Lohit Gujarati > + dialog.bold.hindi=Lohit Hindi > +@@ -65,6 +69,8 @@ > + dialog.italic.korean=Baekmuk Gulim > + dialog.italic.chinese-big5=AR PL ShanHeiSun Uni > + dialog.italic.chinese-gb18030=AR PL ShanHeiSun Uni > ++dialog.italic.assamese=Lohit Assamese > ++dialog.italic.devanagari=Lohit Devanagari > + dialog.italic.bengali=Lohit Bengali > + dialog.italic.gujarati=Lohit Gujarati > + dialog.italic.hindi=Lohit Hindi > +@@ -80,6 +86,8 @@ > + dialog.bolditalic.korean=Baekmuk Gulim > + dialog.bolditalic.chinese-big5=AR PL ShanHeiSun Uni > + dialog.bolditalic.chinese-gb18030=AR PL ShanHeiSun Uni > ++dialog.bolditalic.assamese=Lohit Assamese > ++dialog.bolditalic.devanagari=Lohit Devanagari > + dialog.bolditalic.bengali=Lohit Bengali > + dialog.bolditalic.gujarati=Lohit Gujarati > + dialog.bolditalic.hindi=Lohit Hindi > +@@ -95,6 +103,8 @@ > + sansserif.plain.korean=Baekmuk Gulim > + sansserif.plain.chinese-big5=AR PL ShanHeiSun Uni > + sansserif.plain.chinese-gb18030=AR PL ShanHeiSun Uni > ++sansserif.plain.assamese=Lohit Assamese > ++sansserif.plain.devanagari=Lohit Devanagari > + sansserif.plain.bengali=Lohit Bengali > + sansserif.plain.gujarati=Lohit Gujarati > + sansserif.plain.hindi=Lohit Hindi > +@@ -110,6 +120,8 @@ > + sansserif.bold.korean=Baekmuk Gulim > + sansserif.bold.chinese-big5=AR PL ShanHeiSun Uni > + sansserif.bold.chinese-gb18030=AR PL ShanHeiSun Uni > ++sansserif.bold.assamese=Lohit Assamese > ++sansserif.bold.devanagari=Lohit Devanagari > + sansserif.bold.bengali=Lohit Bengali > + sansserif.bold.gujarati=Lohit Gujarati > + sansserif.bold.hindi=Lohit Hindi > +@@ -125,6 +137,8 @@ > + sansserif.italic.korean=Baekmuk Gulim > + sansserif.italic.chinese-big5=AR PL ShanHeiSun Uni > + sansserif.italic.chinese-gb18030=AR PL ShanHeiSun Uni > ++sansserif.italic.assamese=Lohit Assamese > ++sansserif.italic.devanagari=Lohit Devanagari > + sansserif.italic.bengali=Lohit Bengali > + sansserif.italic.gujarati=Lohit Gujarati > + sansserif.italic.hindi=Lohit Hindi > +@@ -140,6 +154,8 @@ > + sansserif.bolditalic.korean=Baekmuk Gulim > + sansserif.bolditalic.chinese-big5=AR PL ShanHeiSun Uni > + sansserif.bolditalic.chinese-gb18030=AR PL ShanHeiSun Uni > ++sansserif.bolditalic.assamese=Lohit Assamese > ++sansserif.bolditalic.devanagari=Lohit Devanagari > + sansserif.bolditalic.bengali=Lohit Bengali > + sansserif.bolditalic.gujarati=Lohit Gujarati > + sansserif.bolditalic.hindi=Lohit Hindi > +@@ -155,6 +171,8 @@ > + serif.plain.korean=Baekmuk Batang > + serif.plain.chinese-big5=AR PL ZenKai Uni > + serif.plain.chinese-gb18030=AR PL ZenKai Uni > ++serif.plain.assamese=Lohit Assamese > ++serif.plain.devanagari=Lohit Devanagari > + serif.plain.bengali=Lohit Bengali > + serif.plain.gujarati=Lohit Gujarati > + serif.plain.hindi=Lohit Hindi > +@@ -170,6 +188,8 @@ > + serif.bold.korean=Baekmuk Batang > + serif.bold.chinese-big5=AR PL ZenKai Uni > + serif.bold.chinese-gb18030=AR PL ZenKai Uni > ++serif.bold.assamese=Lohit Assamese > ++serif.bold.devanagari=Lohit Devanagari > + serif.bold.bengali=Lohit Bengali > + serif.bold.gujarati=Lohit Gujarati > + serif.bold.hindi=Lohit Hindi > +@@ -185,6 +205,8 @@ > + serif.italic.korean=Baekmuk Batang > + serif.italic.chinese-big5=AR PL ZenKai Uni > + serif.italic.chinese-gb18030=AR PL ZenKai Uni > ++serif.italic.assamese=Lohit Assamese > ++serif.italic.devanagari=Lohit Devanagari > + serif.italic.bengali=Lohit Bengali > + serif.italic.gujarati=Lohit Gujarati > + serif.italic.hindi=Lohit Hindi > +@@ -200,6 +222,8 @@ > + serif.bolditalic.korean=Baekmuk Batang > + serif.bolditalic.chinese-big5=AR PL ZenKai Uni > + serif.bolditalic.chinese-gb18030=AR PL ZenKai Uni > ++serif.bolditalic.assamese=Lohit Assamese > ++serif.bolditalic.devanagari=Lohit Devanagari > + serif.bolditalic.bengali=Lohit Bengali > + serif.bolditalic.gujarati=Lohit Gujarati > + serif.bolditalic.hindi=Lohit Hindi > +@@ -215,6 +239,8 @@ > + monospaced.plain.korean=Baekmuk Gulim > + monospaced.plain.chinese-big5=AR PL ShanHeiSun Uni > + monospaced.plain.chinese-gb18030=AR PL ShanHeiSun Uni > ++monospaced.plain.assamese=Lohit Assamese > ++monospaced.plain.devanagari=Lohit Devanagari > + monospaced.plain.bengali=Lohit Bengali > + monospaced.plain.gujarati=Lohit Gujarati > + monospaced.plain.hindi=Lohit Hindi > +@@ -230,6 +256,8 @@ > + monospaced.bold.korean=Baekmuk Gulim > + monospaced.bold.chinese-big5=AR PL ShanHeiSun Uni > + monospaced.bold.chinese-gb18030=AR PL ShanHeiSun Uni > ++monospaced.bold.assamese=Lohit Assamese > ++monospaced.bold.devanagari=Lohit Devanagari > + monospaced.bold.bengali=Lohit Bengali > + monospaced.bold.gujarati=Lohit Gujarati > + monospaced.bold.hindi=Lohit Hindi > +@@ -245,6 +273,8 @@ > + monospaced.italic.korean=Baekmuk Gulim > + monospaced.italic.chinese-big5=AR PL ShanHeiSun Uni > + monospaced.italic.chinese-gb18030=AR PL ShanHeiSun Uni > ++monospaced.italic.assamese=Lohit Assamese > ++monospaced.italic.devanagari=Lohit Devanagari > + monospaced.italic.bengali=Lohit Bengali > + monospaced.italic.gujarati=Lohit Gujarati > + monospaced.italic.hindi=Lohit Hindi > +@@ -260,6 +290,8 @@ > + monospaced.bolditalic.korean=Baekmuk Gulim > + monospaced.bolditalic.chinese-big5=AR PL ShanHeiSun Uni > + monospaced.bolditalic.chinese-gb18030=AR PL ShanHeiSun Uni > ++monospaced.bolditalic.assamese=Lohit Assamese > ++monospaced.bolditalic.devanagari=Lohit Devanagari > + monospaced.bolditalic.bengali=Lohit Bengali > + monospaced.bolditalic.gujarati=Lohit Gujarati > + monospaced.bolditalic.hindi=Lohit Hindi > +@@ -275,6 +307,8 @@ > + dialoginput.plain.korean=Baekmuk Gulim > + dialoginput.plain.chinese-big5=AR PL ShanHeiSun Uni > + dialoginput.plain.chinese-gb18030=AR PL ShanHeiSun Uni > ++dialoginput.plain.assamese=Lohit Assamese > ++dialoginput.plain.devanagari=Lohit Devanagari > + dialoginput.plain.bengali=Lohit Bengali > + dialoginput.plain.gujarati=Lohit Gujarati > + dialoginput.plain.hindi=Lohit Hindi > +@@ -290,6 +324,8 @@ > + dialoginput.bold.korean=Baekmuk Gulim > + dialoginput.bold.chinese-big5=AR PL ShanHeiSun Uni > + dialoginput.bold.chinese-gb18030=AR PL ShanHeiSun Uni > ++dialoginput.bold.assamese=Lohit Assamese > ++dialoginput.bold.devanagari=Lohit Devanagari > + dialoginput.bold.bengali=Lohit Bengali > + dialoginput.bold.gujarati=Lohit Gujarati > + dialoginput.bold.hindi=Lohit Hindi > +@@ -305,6 +341,8 @@ > + dialoginput.italic.korean=Baekmuk Gulim > + dialoginput.italic.chinese-big5=AR PL ShanHeiSun Uni > + dialoginput.italic.chinese-gb18030=AR PL ShanHeiSun Uni > ++dialoginput.italic.assamese=Lohit Assamese > ++dialoginput.italic.devanagari=Lohit Devanagari > + dialoginput.italic.bengali=Lohit Bengali > + dialoginput.italic.gujarati=Lohit Gujarati > + dialoginput.italic.hindi=Lohit Hindi > +@@ -320,6 +358,8 @@ > + dialoginput.bolditalic.korean=Baekmuk Gulim > + dialoginput.bolditalic.chinese-big5=AR PL ShanHeiSun Uni > + dialoginput.bolditalic.chinese-gb18030=AR PL ShanHeiSun Uni > ++dialoginput.bolditalic.assamese=Lohit Assamese > ++dialoginput.bolditalic.devanagari=Lohit Devanagari > + dialoginput.bolditalic.bengali=Lohit Bengali > + dialoginput.bolditalic.gujarati=Lohit Gujarati > + dialoginput.bolditalic.hindi=Lohit Hindi > +@@ -356,21 +396,24 @@ > + > filename.DejaVu_Serif_Oblique=/usr/share/fonts/dejavu/DejaVuSerif-Oblique.ttf > + > filename.DejaVu_Serif_Bold_Oblique=/usr/share/fonts/dejavu/DejaVuSerif-BoldOblique.ttf > + > +-filename.Sazanami_Gothic=/usr/share/fonts/sazanami-fonts-gothic/sazanami-gothic.ttf > +-filename.Sazanami_Mincho=/usr/share/fonts/sazanami-fonts-mincho/sazanami-mincho.ttf > +-filename.AR_PL_ShanHeiSun_Uni=/usr/share/fonts/cjkunifonts-uming/uming.ttc > +-filename.AR_PL_ZenKai_Uni=/usr/share/fonts/cjkunifonts-ukai/ukai.ttc > +-filename.Baekmuk_Gulim=/usr/share/fonts/baekmuk-ttf-gulim/gulim.ttf > +-filename.Baekmuk_Batang=/usr/share/fonts/baekmuk-ttf-batang/batang.ttf > ++filename.Sazanami_Gothic=/usr/share/fonts/sazanami/gothic/sazanami-gothic.ttf > ++filename.Sazanami_Mincho=/usr/share/fonts/sazanami/mincho/sazanami-mincho.ttf > ++filename.AR_PL_ShanHeiSun_Uni=/usr/share/fonts/cjkuni-uming/uming.ttc > ++filename.AR_PL_ZenKai_Uni=/usr/share/fonts/cjkuni-ukai/ukai.ttc > ++filename.Baekmuk_Gulim=/usr/share/fonts/baekmuk-ttf/gulim.ttf > ++filename.Baekmuk_Batang=/usr/share/fonts/baekmuk-ttf/batang.ttf > ++ > ++filename.Lohit_Assamese=/usr/share/fonts/lohit-assamese/Lohit-Assamese.ttf > ++filename.Lohit_Devanagari=/usr/share/fonts/lohit-devanagari/Lohit-Devanagari.ttf > ++filename.Lohit_Bengali=/usr/share/fonts/lohit-bengali/Lohit-Bengali.ttf > ++filename.Lohit_Gujarati=/usr/share/fonts/lohit-gujarati/Lohit-Gujarati.ttf > ++filename.Lohit_Hindi=/usr/share/fonts/lohit-devanagari/Lohit-Devanagari.ttf > ++filename.Lohit_Kannda=/usr/share/fonts/lohit-kannada/Lohit-Kannada.ttf > ++filename.Lohit_Malayalam=/usr/share/fonts/lohit-malayalam/Lohit-Malayalam.ttf > ++filename.Lohit_Oriya=/usr/share/fonts/lohit-oriya/Lohit-Oriya.ttf > ++filename.Lohit_Punjabi=/usr/share/fonts/lohit-punjabi/Lohit-Punjabi.ttf > ++filename.Lohit_Tamil=/usr/share/fonts/lohit-tamil/Lohit-Tamil.ttf > ++filename.Lohit_Telugu=/usr/share/fonts/lohit-telugu/Lohit-Telugu.ttf > + > +-filename.Lohit_Bengali=/usr/share/fonts/lohit-bengali/lohit_bn.ttf > +-filename.Lohit_Gujarati=/usr/share/fonts/lohit-gujarati/lohit_gu.ttf > +-filename.Lohit_Hindi=/usr/share/fonts/lohit-hindi/lohit_hi.ttf > +-filename.Lohit_Kannda=/usr/share/fonts/lohit-kannada/lohit_kn.ttf > +-filename.Lohit_Malayalam=/usr/share/fonts/lohit-malayalam/lohit_ml.ttf > +-filename.Lohit_Oriya=/usr/share/fonts/lohit-oriya/lohit_or.ttf > +-filename.Lohit_Punjabi=/usr/share/fonts/lohit-punjabi/lohit_pa.ttf > +-filename.Lohit_Tamil=/usr/share/fonts/lohit-tamil/lohit_ta.ttf > +-filename.Lohit_Telugu=/usr/share/fonts/lohit-telugu/lohit_te.ttf > + filename.LKLUG=/usr/share/fonts/lklug/lklug.ttf > + -- Andrew :) Free Java Software Engineer Red Hat, Inc. (http://www.redhat.com) Support Free Java! Contribute to GNU Classpath and the OpenJDK http://www.gnu.org/software/classpath http://openjdk.java.net PGP Key: 94EFD9D8 (http://subkeys.pgp.net) Fingerprint = F8EF F1EA 401E 2E60 15FA 7927 142C 2591 94EF D9D8 From jvanek at redhat.com Tue Nov 9 08:16:30 2010 From: jvanek at redhat.com (Jiri Vanek) Date: Tue, 09 Nov 2010 17:16:30 +0100 Subject: request commit for asians fonts config patches for fedoras In-Reply-To: <20101109154457.GE7776@rivendell.middle-earth.co.uk> References: <1289295987.2775.85.camel@springer.wildebeest.org> <20101109140517.GD7776@rivendell.middle-earth.co.uk> <1289311774.2775.358.camel@springer.wildebeest.org> <4CD9678E.8030103@redhat.com> <20101109154457.GE7776@rivendell.middle-earth.co.uk> Message-ID: <4CD973DE.9010604@redhat.com> On 11/09/2010 04:44 PM, Dr Andrew John Hughes wrote: > Your ChangeLog doesn't match the patch. The patch contains: > > Makefile.am | 6 +++++- > b/patches/f14-fonts.patch | 13 +++++++++++++ > b/patches/fontconfig-Fedora-11-14-changes.patch | 1 + > sorry for typo in changelog > Also you still haven't explained why the f11-f13 versions are being > altered. I thought the need to copy them first was so they didn't > get th ese changes? Please explain. > f14 - brought new guidelines, so all used fonts have changed theyr names and install paths. f13 have backported all the changes f12 have not backported changes for cjkuni fonts f11 have not backported cjkuni and only some of lohit changes - only renaming conventions, but not gathering of hindy under devangari f9 and d10 are just copyed. All mantainers were to lazy to backport som echanges here;) I have digged those informations from koji and verified with their' maintainers. # HG changeset patch # User Jiri Vanek # Date 1289318694 -3600 # Node ID 95daa16ce9565945442b8b7e6b45807e64e6cc78 # Parent 72de51f0a744bc38ed2f56a1ffb848b4aeaf0875 Updated font configurations for Fedora 9-14 diff -r 72de51f0a744 -r 95daa16ce956 ChangeLog --- a/ChangeLog Tue Nov 09 14:53:31 2010 +0000 +++ b/ChangeLog Tue Nov 09 17:04:54 2010 +0100 @@ -1,3 +1,14 @@ +2010-11-09 Jiri Vanek + + * Makefile.am: + * patches/fontconfig-Fedora-11-14-changes.patch + * patches/f14-fonts.patch + Updated font configurations for Fedora 9-14 + * Makefile.am: + added cloning of fontconfig.Fedora to Fedora.12,11,10,9 + * openjdk/jdk/make/sun/awt/Makefile: + added notifications about above mentioned fontconfig files + 2010-11-09 Andrew John Hughes * Makefile.am: diff -r 72de51f0a744 -r 95daa16ce956 Makefile.am --- a/Makefile.am Tue Nov 09 14:53:31 2010 +0000 +++ b/Makefile.am Tue Nov 09 17:04:54 2010 +0100 @@ -295,7 +295,9 @@ patches/6703377-freetypescaler.patch \ patches/icedtea-jtreg-international-fonts.patch \ patches/openjdk/6967436-6976265-6967434-pisces.patch \ - patches/openjdk/6997495-test_correction_6857159.patch + patches/openjdk/6997495-test_correction_6857159.patch \ + patches/f14-fonts.patch \ + patches/fontconfig-Fedora-11-14-changes.patch if WITH_ALT_HSBUILD ICEDTEA_PATCHES += \ @@ -836,6 +838,11 @@ endif mkdir -p stamps touch stamps/extract-openjdk.stamp +#clone fedoras fontconfigs + cp $(abs_top_srcdir)/openjdk/jdk/src/solaris/classes/sun/awt/fontconfigs/linux.fontconfig.Fedora.properties $(abs_top_srcdir)/openjdk/jdk/src/solaris/classes/sun/awt/fontconfigs/linux.fontconfig.Fedora.9.properties + cp $(abs_top_srcdir)/openjdk/jdk/src/solaris/classes/sun/awt/fontconfigs/linux.fontconfig.Fedora.properties $(abs_top_srcdir)/openjdk/jdk/src/solaris/classes/sun/awt/fontconfigs/linux.fontconfig.Fedora.10.properties + cp $(abs_top_srcdir)/openjdk/jdk/src/solaris/classes/sun/awt/fontconfigs/linux.fontconfig.Fedora.properties $(abs_top_srcdir)/openjdk/jdk/src/solaris/classes/sun/awt/fontconfigs/linux.fontconfig.Fedora.11.properties + cp $(abs_top_srcdir)/openjdk/jdk/src/solaris/classes/sun/awt/fontconfigs/linux.fontconfig.Fedora.properties $(abs_top_srcdir)/openjdk/jdk/src/solaris/classes/sun/awt/fontconfigs/linux.fontconfig.Fedora.12.properties clean-extract-openjdk: rm -rf openjdk diff -r 72de51f0a744 -r 95daa16ce956 patches/f14-fonts.patch --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/patches/f14-fonts.patch Tue Nov 09 17:04:54 2010 +0100 @@ -0,0 +1,13 @@ +--- openjdk/jdk/make/sun/awt/Makefile 2010-11-04 09:52:49.583434000 +0100 ++++ openjdk/jdk/make/sun/awt/Makefile 2010-11-04 16:50:14.091688769 +0100 +@@ -387,6 +387,10 @@ + fontconfig.SuSE.properties \ + fontconfig.Ubuntu.properties \ + fontconfig.Fedora.properties \ ++ fontconfig.Fedora.9.properties \ ++ fontconfig.Fedora.10.properties \ ++ fontconfig.Fedora.11.properties \ ++ fontconfig.Fedora.12.properties \ + fontconfig.RedHat.6.0.properties \ + fontconfig.Gentoo.properties + else diff -r 72de51f0a744 -r 95daa16ce956 patches/fontconfig-Fedora-11-14-changes.patch --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/patches/fontconfig-Fedora-11-14-changes.patch Tue Nov 09 17:04:54 2010 +0100 @@ -0,0 +1,663 @@ +--- openjdk/jdk/src/solaris/classes/sun/awt/fontconfigs/linux.fontconfig.Fedora.11.properties 2010-11-04 11:06:26.695428114 +0100 ++++ openjdk/jdk/src/solaris/classes/sun/awt/fontconfigs/linux.fontconfig.Fedora.11.properties 2010-11-04 11:19:45.133587953 +0100 +@@ -35,6 +35,8 @@ + dialog.plain.korean=Baekmuk Gulim + dialog.plain.chinese-big5=AR PL ShanHeiSun Uni + dialog.plain.chinese-gb18030=AR PL ShanHeiSun Uni ++dialog.plain.assamese=Lohit Assamese ++dialog.plain.devanagari=Lohit Devanagari + dialog.plain.bengali=Lohit Bengali + dialog.plain.gujarati=Lohit Gujarati + dialog.plain.hindi=Lohit Hindi +@@ -50,6 +52,8 @@ + dialog.bold.korean=Baekmuk Gulim + dialog.bold.chinese-big5=AR PL ShanHeiSun Uni + dialog.bold.chinese-gb18030=AR PL ShanHeiSun Uni ++dialog.bold.assamese=Lohit Assamese ++dialog.bold.devanagari=Lohit Devanagari + dialog.bold.bengali=Lohit Bengali + dialog.bold.gujarati=Lohit Gujarati + dialog.bold.hindi=Lohit Hindi +@@ -65,6 +69,8 @@ + dialog.italic.korean=Baekmuk Gulim + dialog.italic.chinese-big5=AR PL ShanHeiSun Uni + dialog.italic.chinese-gb18030=AR PL ShanHeiSun Uni ++dialog.italic.assamese=Lohit Assamese ++dialog.italic.devanagari=Lohit Devanagari + dialog.italic.bengali=Lohit Bengali + dialog.italic.gujarati=Lohit Gujarati + dialog.italic.hindi=Lohit Hindi +@@ -80,6 +86,8 @@ + dialog.bolditalic.korean=Baekmuk Gulim + dialog.bolditalic.chinese-big5=AR PL ShanHeiSun Uni + dialog.bolditalic.chinese-gb18030=AR PL ShanHeiSun Uni ++dialog.bolditalic.assamese=Lohit Assamese ++dialog.bolditalic.devanagari=Lohit Devanagari + dialog.bolditalic.bengali=Lohit Bengali + dialog.bolditalic.gujarati=Lohit Gujarati + dialog.bolditalic.hindi=Lohit Hindi +@@ -95,6 +103,8 @@ + sansserif.plain.korean=Baekmuk Gulim + sansserif.plain.chinese-big5=AR PL ShanHeiSun Uni + sansserif.plain.chinese-gb18030=AR PL ShanHeiSun Uni ++sansserif.plain.assamese=Lohit Assamese ++sansserif.plain.devanagari=Lohit Devanagari + sansserif.plain.bengali=Lohit Bengali + sansserif.plain.gujarati=Lohit Gujarati + sansserif.plain.hindi=Lohit Hindi +@@ -110,6 +120,8 @@ + sansserif.bold.korean=Baekmuk Gulim + sansserif.bold.chinese-big5=AR PL ShanHeiSun Uni + sansserif.bold.chinese-gb18030=AR PL ShanHeiSun Uni ++sansserif.bold.assamese=Lohit Assamese ++sansserif.bold.devanagari=Lohit Devanagari + sansserif.bold.bengali=Lohit Bengali + sansserif.bold.gujarati=Lohit Gujarati + sansserif.bold.hindi=Lohit Hindi +@@ -125,6 +137,8 @@ + sansserif.italic.korean=Baekmuk Gulim + sansserif.italic.chinese-big5=AR PL ShanHeiSun Uni + sansserif.italic.chinese-gb18030=AR PL ShanHeiSun Uni ++sansserif.italic.assamese=Lohit Assamese ++sansserif.italic.devanagari=Lohit Devanagari + sansserif.italic.bengali=Lohit Bengali + sansserif.italic.gujarati=Lohit Gujarati + sansserif.italic.hindi=Lohit Hindi +@@ -140,6 +154,8 @@ + sansserif.bolditalic.korean=Baekmuk Gulim + sansserif.bolditalic.chinese-big5=AR PL ShanHeiSun Uni + sansserif.bolditalic.chinese-gb18030=AR PL ShanHeiSun Uni ++sansserif.bolditalic.assamese=Lohit Assamese ++sansserif.bolditalic.devanagari=Lohit Devanagari + sansserif.bolditalic.bengali=Lohit Bengali + sansserif.bolditalic.gujarati=Lohit Gujarati + sansserif.bolditalic.hindi=Lohit Hindi +@@ -155,6 +171,8 @@ + serif.plain.korean=Baekmuk Batang + serif.plain.chinese-big5=AR PL ZenKai Uni + serif.plain.chinese-gb18030=AR PL ZenKai Uni ++serif.plain.assamese=Lohit Assamese ++serif.plain.devanagari=Lohit Devanagari + serif.plain.bengali=Lohit Bengali + serif.plain.gujarati=Lohit Gujarati + serif.plain.hindi=Lohit Hindi +@@ -170,6 +188,8 @@ + serif.bold.korean=Baekmuk Batang + serif.bold.chinese-big5=AR PL ZenKai Uni + serif.bold.chinese-gb18030=AR PL ZenKai Uni ++serif.bold.assamese=Lohit Assamese ++serif.bold.devanagari=Lohit Devanagari + serif.bold.bengali=Lohit Bengali + serif.bold.gujarati=Lohit Gujarati + serif.bold.hindi=Lohit Hindi +@@ -185,6 +205,8 @@ + serif.italic.korean=Baekmuk Batang + serif.italic.chinese-big5=AR PL ZenKai Uni + serif.italic.chinese-gb18030=AR PL ZenKai Uni ++serif.italic.assamese=Lohit Assamese ++serif.italic.devanagari=Lohit Devanagari + serif.italic.bengali=Lohit Bengali + serif.italic.gujarati=Lohit Gujarati + serif.italic.hindi=Lohit Hindi +@@ -200,6 +222,8 @@ + serif.bolditalic.korean=Baekmuk Batang + serif.bolditalic.chinese-big5=AR PL ZenKai Uni + serif.bolditalic.chinese-gb18030=AR PL ZenKai Uni ++serif.bolditalic.assamese=Lohit Assamese ++serif.bolditalic.devanagari=Lohit Devanagari + serif.bolditalic.bengali=Lohit Bengali + serif.bolditalic.gujarati=Lohit Gujarati + serif.bolditalic.hindi=Lohit Hindi +@@ -215,6 +239,8 @@ + monospaced.plain.korean=Baekmuk Gulim + monospaced.plain.chinese-big5=AR PL ShanHeiSun Uni + monospaced.plain.chinese-gb18030=AR PL ShanHeiSun Uni ++monospaced.plain.assamese=Lohit Assamese ++monospaced.plain.devanagari=Lohit Devanagari + monospaced.plain.bengali=Lohit Bengali + monospaced.plain.gujarati=Lohit Gujarati + monospaced.plain.hindi=Lohit Hindi +@@ -230,6 +256,8 @@ + monospaced.bold.korean=Baekmuk Gulim + monospaced.bold.chinese-big5=AR PL ShanHeiSun Uni + monospaced.bold.chinese-gb18030=AR PL ShanHeiSun Uni ++monospaced.bold.assamese=Lohit Assamese ++monospaced.bold.devanagari=Lohit Devanagari + monospaced.bold.bengali=Lohit Bengali + monospaced.bold.gujarati=Lohit Gujarati + monospaced.bold.hindi=Lohit Hindi +@@ -245,6 +273,8 @@ + monospaced.italic.korean=Baekmuk Gulim + monospaced.italic.chinese-big5=AR PL ShanHeiSun Uni + monospaced.italic.chinese-gb18030=AR PL ShanHeiSun Uni ++monospaced.italic.assamese=Lohit Assamese ++monospaced.italic.devanagari=Lohit Devanagari + monospaced.italic.bengali=Lohit Bengali + monospaced.italic.gujarati=Lohit Gujarati + monospaced.italic.hindi=Lohit Hindi +@@ -260,6 +290,8 @@ + monospaced.bolditalic.korean=Baekmuk Gulim + monospaced.bolditalic.chinese-big5=AR PL ShanHeiSun Uni + monospaced.bolditalic.chinese-gb18030=AR PL ShanHeiSun Uni ++monospaced.bolditalic.assamese=Lohit Assamese ++monospaced.bolditalic.devanagari=Lohit Devanagari + monospaced.bolditalic.bengali=Lohit Bengali + monospaced.bolditalic.gujarati=Lohit Gujarati + monospaced.bolditalic.hindi=Lohit Hindi +@@ -275,6 +307,8 @@ + dialoginput.plain.korean=Baekmuk Gulim + dialoginput.plain.chinese-big5=AR PL ShanHeiSun Uni + dialoginput.plain.chinese-gb18030=AR PL ShanHeiSun Uni ++dialoginput.plain.assamese=Lohit Assamese ++dialoginput.plain.devanagari=Lohit Devanagari + dialoginput.plain.bengali=Lohit Bengali + dialoginput.plain.gujarati=Lohit Gujarati + dialoginput.plain.hindi=Lohit Hindi +@@ -290,6 +324,8 @@ + dialoginput.bold.korean=Baekmuk Gulim + dialoginput.bold.chinese-big5=AR PL ShanHeiSun Uni + dialoginput.bold.chinese-gb18030=AR PL ShanHeiSun Uni ++dialoginput.bold.assamese=Lohit Assamese ++dialoginput.bold.devanagari=Lohit Devanagari + dialoginput.bold.bengali=Lohit Bengali + dialoginput.bold.gujarati=Lohit Gujarati + dialoginput.bold.hindi=Lohit Hindi +@@ -305,6 +341,8 @@ + dialoginput.italic.korean=Baekmuk Gulim + dialoginput.italic.chinese-big5=AR PL ShanHeiSun Uni + dialoginput.italic.chinese-gb18030=AR PL ShanHeiSun Uni ++dialoginput.italic.assamese=Lohit Assamese ++dialoginput.italic.devanagari=Lohit Devanagari + dialoginput.italic.bengali=Lohit Bengali + dialoginput.italic.gujarati=Lohit Gujarati + dialoginput.italic.hindi=Lohit Hindi +@@ -320,6 +358,8 @@ + dialoginput.bolditalic.korean=Baekmuk Gulim + dialoginput.bolditalic.chinese-big5=AR PL ShanHeiSun Uni + dialoginput.bolditalic.chinese-gb18030=AR PL ShanHeiSun Uni ++dialoginput.bolditalic.assamese=Lohit Assamese ++dialoginput.bolditalic.devanagari=Lohit Devanagari + dialoginput.bolditalic.bengali=Lohit Bengali + dialoginput.bolditalic.gujarati=Lohit Gujarati + dialoginput.bolditalic.hindi=Lohit Hindi +@@ -356,21 +396,24 @@ + filename.DejaVu_Serif_Oblique=/usr/share/fonts/dejavu/DejaVuSerif-Oblique.ttf + filename.DejaVu_Serif_Bold_Oblique=/usr/share/fonts/dejavu/DejaVuSerif-BoldOblique.ttf + +-filename.Sazanami_Gothic=/usr/share/fonts/sazanami-fonts-gothic/sazanami-gothic.ttf +-filename.Sazanami_Mincho=/usr/share/fonts/sazanami-fonts-mincho/sazanami-mincho.ttf ++filename.Sazanami_Gothic=/usr/share/fonts/sazanami/gothic/sazanami-gothic.ttf ++filename.Sazanami_Mincho=/usr/share/fonts/sazanami/mincho/sazanami-mincho.ttf + filename.AR_PL_ShanHeiSun_Uni=/usr/share/fonts/cjkunifonts-uming/uming.ttc + filename.AR_PL_ZenKai_Uni=/usr/share/fonts/cjkunifonts-ukai/ukai.ttc +-filename.Baekmuk_Gulim=/usr/share/fonts/baekmuk-ttf-gulim/gulim.ttf +-filename.Baekmuk_Batang=/usr/share/fonts/baekmuk-ttf-batang/batang.ttf ++filename.Baekmuk_Gulim=/usr/share/fonts/baekmuk-ttf/gulim.ttf ++filename.Baekmuk_Batang=/usr/share/fonts/baekmuk-ttf/batang.ttf ++ ++filename.Lohit_Assamese=/usr/share/fonts/lohit-assamese/Lohit-Assamese.ttf ++filename.Lohit_Devanagari=/usr/share/fonts/lohit-devanagari/Lohit-Devanagari.ttf ++filename.Lohit_Bengali=/usr/share/fonts/lohit-bengali/Lohit-Bengali.ttf ++filename.Lohit_Gujarati=/usr/share/fonts/lohit-gujarati/Lohit-Gujarati.ttf ++filename.Lohit_Hindi=/usr/share/fonts/lohit-hindi/Lohit-Hindi.ttf ++filename.Lohit_Kannda=/usr/share/fonts/lohit-kannada/Lohit-Kannada.ttf ++filename.Lohit_Malayalam=/usr/share/fonts/lohit-malayalam/Lohit-Malayalam.ttf ++filename.Lohit_Oriya=/usr/share/fonts/lohit-oriya/Lohit-Oriya.ttf ++filename.Lohit_Punjabi=/usr/share/fonts/lohit-punjabi/Lohit-Punjabi.ttf ++filename.Lohit_Tamil=/usr/share/fonts/lohit-tamil/Lohit-Tamil.ttf ++filename.Lohit_Telugu=/usr/share/fonts/lohit-telugu/Lohit-Telugu.ttf + +-filename.Lohit_Bengali=/usr/share/fonts/lohit-bengali/lohit_bn.ttf +-filename.Lohit_Gujarati=/usr/share/fonts/lohit-gujarati/lohit_gu.ttf +-filename.Lohit_Hindi=/usr/share/fonts/lohit-hindi/lohit_hi.ttf +-filename.Lohit_Kannda=/usr/share/fonts/lohit-kannada/lohit_kn.ttf +-filename.Lohit_Malayalam=/usr/share/fonts/lohit-malayalam/lohit_ml.ttf +-filename.Lohit_Oriya=/usr/share/fonts/lohit-oriya/lohit_or.ttf +-filename.Lohit_Punjabi=/usr/share/fonts/lohit-punjabi/lohit_pa.ttf +-filename.Lohit_Tamil=/usr/share/fonts/lohit-tamil/lohit_ta.ttf +-filename.Lohit_Telugu=/usr/share/fonts/lohit-telugu/lohit_te.ttf + filename.LKLUG=/usr/share/fonts/lklug/lklug.ttf + + +--- openjdk/jdk/src/solaris/classes/sun/awt/fontconfigs/linux.fontconfig.Fedora.12.properties 2010-11-04 11:06:26.695428114 +0100 ++++ openjdk/jdk/src/solaris/classes/sun/awt/fontconfigs/linux.fontconfig.Fedora.12.properties 2010-11-04 11:19:45.133587953 +0100 +@@ -35,6 +35,8 @@ + dialog.plain.korean=Baekmuk Gulim + dialog.plain.chinese-big5=AR PL ShanHeiSun Uni + dialog.plain.chinese-gb18030=AR PL ShanHeiSun Uni ++dialog.plain.assamese=Lohit Assamese ++dialog.plain.devanagari=Lohit Devanagari + dialog.plain.bengali=Lohit Bengali + dialog.plain.gujarati=Lohit Gujarati + dialog.plain.hindi=Lohit Hindi +@@ -50,6 +52,8 @@ + dialog.bold.korean=Baekmuk Gulim + dialog.bold.chinese-big5=AR PL ShanHeiSun Uni + dialog.bold.chinese-gb18030=AR PL ShanHeiSun Uni ++dialog.bold.assamese=Lohit Assamese ++dialog.bold.devanagari=Lohit Devanagari + dialog.bold.bengali=Lohit Bengali + dialog.bold.gujarati=Lohit Gujarati + dialog.bold.hindi=Lohit Hindi +@@ -65,6 +69,8 @@ + dialog.italic.korean=Baekmuk Gulim + dialog.italic.chinese-big5=AR PL ShanHeiSun Uni + dialog.italic.chinese-gb18030=AR PL ShanHeiSun Uni ++dialog.italic.assamese=Lohit Assamese ++dialog.italic.devanagari=Lohit Devanagari + dialog.italic.bengali=Lohit Bengali + dialog.italic.gujarati=Lohit Gujarati + dialog.italic.hindi=Lohit Hindi +@@ -80,6 +86,8 @@ + dialog.bolditalic.korean=Baekmuk Gulim + dialog.bolditalic.chinese-big5=AR PL ShanHeiSun Uni + dialog.bolditalic.chinese-gb18030=AR PL ShanHeiSun Uni ++dialog.bolditalic.assamese=Lohit Assamese ++dialog.bolditalic.devanagari=Lohit Devanagari + dialog.bolditalic.bengali=Lohit Bengali + dialog.bolditalic.gujarati=Lohit Gujarati + dialog.bolditalic.hindi=Lohit Hindi +@@ -95,6 +103,8 @@ + sansserif.plain.korean=Baekmuk Gulim + sansserif.plain.chinese-big5=AR PL ShanHeiSun Uni + sansserif.plain.chinese-gb18030=AR PL ShanHeiSun Uni ++sansserif.plain.assamese=Lohit Assamese ++sansserif.plain.devanagari=Lohit Devanagari + sansserif.plain.bengali=Lohit Bengali + sansserif.plain.gujarati=Lohit Gujarati + sansserif.plain.hindi=Lohit Hindi +@@ -110,6 +120,8 @@ + sansserif.bold.korean=Baekmuk Gulim + sansserif.bold.chinese-big5=AR PL ShanHeiSun Uni + sansserif.bold.chinese-gb18030=AR PL ShanHeiSun Uni ++sansserif.bold.assamese=Lohit Assamese ++sansserif.bold.devanagari=Lohit Devanagari + sansserif.bold.bengali=Lohit Bengali + sansserif.bold.gujarati=Lohit Gujarati + sansserif.bold.hindi=Lohit Hindi +@@ -125,6 +137,8 @@ + sansserif.italic.korean=Baekmuk Gulim + sansserif.italic.chinese-big5=AR PL ShanHeiSun Uni + sansserif.italic.chinese-gb18030=AR PL ShanHeiSun Uni ++sansserif.italic.assamese=Lohit Assamese ++sansserif.italic.devanagari=Lohit Devanagari + sansserif.italic.bengali=Lohit Bengali + sansserif.italic.gujarati=Lohit Gujarati + sansserif.italic.hindi=Lohit Hindi +@@ -140,6 +154,8 @@ + sansserif.bolditalic.korean=Baekmuk Gulim + sansserif.bolditalic.chinese-big5=AR PL ShanHeiSun Uni + sansserif.bolditalic.chinese-gb18030=AR PL ShanHeiSun Uni ++sansserif.bolditalic.assamese=Lohit Assamese ++sansserif.bolditalic.devanagari=Lohit Devanagari + sansserif.bolditalic.bengali=Lohit Bengali + sansserif.bolditalic.gujarati=Lohit Gujarati + sansserif.bolditalic.hindi=Lohit Hindi +@@ -155,6 +171,8 @@ + serif.plain.korean=Baekmuk Batang + serif.plain.chinese-big5=AR PL ZenKai Uni + serif.plain.chinese-gb18030=AR PL ZenKai Uni ++serif.plain.assamese=Lohit Assamese ++serif.plain.devanagari=Lohit Devanagari + serif.plain.bengali=Lohit Bengali + serif.plain.gujarati=Lohit Gujarati + serif.plain.hindi=Lohit Hindi +@@ -170,6 +188,8 @@ + serif.bold.korean=Baekmuk Batang + serif.bold.chinese-big5=AR PL ZenKai Uni + serif.bold.chinese-gb18030=AR PL ZenKai Uni ++serif.bold.assamese=Lohit Assamese ++serif.bold.devanagari=Lohit Devanagari + serif.bold.bengali=Lohit Bengali + serif.bold.gujarati=Lohit Gujarati + serif.bold.hindi=Lohit Hindi +@@ -185,6 +205,8 @@ + serif.italic.korean=Baekmuk Batang + serif.italic.chinese-big5=AR PL ZenKai Uni + serif.italic.chinese-gb18030=AR PL ZenKai Uni ++serif.italic.assamese=Lohit Assamese ++serif.italic.devanagari=Lohit Devanagari + serif.italic.bengali=Lohit Bengali + serif.italic.gujarati=Lohit Gujarati + serif.italic.hindi=Lohit Hindi +@@ -200,6 +222,8 @@ + serif.bolditalic.korean=Baekmuk Batang + serif.bolditalic.chinese-big5=AR PL ZenKai Uni + serif.bolditalic.chinese-gb18030=AR PL ZenKai Uni ++serif.bolditalic.assamese=Lohit Assamese ++serif.bolditalic.devanagari=Lohit Devanagari + serif.bolditalic.bengali=Lohit Bengali + serif.bolditalic.gujarati=Lohit Gujarati + serif.bolditalic.hindi=Lohit Hindi +@@ -215,6 +239,8 @@ + monospaced.plain.korean=Baekmuk Gulim + monospaced.plain.chinese-big5=AR PL ShanHeiSun Uni + monospaced.plain.chinese-gb18030=AR PL ShanHeiSun Uni ++monospaced.plain.assamese=Lohit Assamese ++monospaced.plain.devanagari=Lohit Devanagari + monospaced.plain.bengali=Lohit Bengali + monospaced.plain.gujarati=Lohit Gujarati + monospaced.plain.hindi=Lohit Hindi +@@ -230,6 +256,8 @@ + monospaced.bold.korean=Baekmuk Gulim + monospaced.bold.chinese-big5=AR PL ShanHeiSun Uni + monospaced.bold.chinese-gb18030=AR PL ShanHeiSun Uni ++monospaced.bold.assamese=Lohit Assamese ++monospaced.bold.devanagari=Lohit Devanagari + monospaced.bold.bengali=Lohit Bengali + monospaced.bold.gujarati=Lohit Gujarati + monospaced.bold.hindi=Lohit Hindi +@@ -245,6 +273,8 @@ + monospaced.italic.korean=Baekmuk Gulim + monospaced.italic.chinese-big5=AR PL ShanHeiSun Uni + monospaced.italic.chinese-gb18030=AR PL ShanHeiSun Uni ++monospaced.italic.assamese=Lohit Assamese ++monospaced.italic.devanagari=Lohit Devanagari + monospaced.italic.bengali=Lohit Bengali + monospaced.italic.gujarati=Lohit Gujarati + monospaced.italic.hindi=Lohit Hindi +@@ -260,6 +290,8 @@ + monospaced.bolditalic.korean=Baekmuk Gulim + monospaced.bolditalic.chinese-big5=AR PL ShanHeiSun Uni + monospaced.bolditalic.chinese-gb18030=AR PL ShanHeiSun Uni ++monospaced.bolditalic.assamese=Lohit Assamese ++monospaced.bolditalic.devanagari=Lohit Devanagari + monospaced.bolditalic.bengali=Lohit Bengali + monospaced.bolditalic.gujarati=Lohit Gujarati + monospaced.bolditalic.hindi=Lohit Hindi +@@ -275,6 +307,8 @@ + dialoginput.plain.korean=Baekmuk Gulim + dialoginput.plain.chinese-big5=AR PL ShanHeiSun Uni + dialoginput.plain.chinese-gb18030=AR PL ShanHeiSun Uni ++dialoginput.plain.assamese=Lohit Assamese ++dialoginput.plain.devanagari=Lohit Devanagari + dialoginput.plain.bengali=Lohit Bengali + dialoginput.plain.gujarati=Lohit Gujarati + dialoginput.plain.hindi=Lohit Hindi +@@ -290,6 +324,8 @@ + dialoginput.bold.korean=Baekmuk Gulim + dialoginput.bold.chinese-big5=AR PL ShanHeiSun Uni + dialoginput.bold.chinese-gb18030=AR PL ShanHeiSun Uni ++dialoginput.bold.assamese=Lohit Assamese ++dialoginput.bold.devanagari=Lohit Devanagari + dialoginput.bold.bengali=Lohit Bengali + dialoginput.bold.gujarati=Lohit Gujarati + dialoginput.bold.hindi=Lohit Hindi +@@ -305,6 +341,8 @@ + dialoginput.italic.korean=Baekmuk Gulim + dialoginput.italic.chinese-big5=AR PL ShanHeiSun Uni + dialoginput.italic.chinese-gb18030=AR PL ShanHeiSun Uni ++dialoginput.italic.assamese=Lohit Assamese ++dialoginput.italic.devanagari=Lohit Devanagari + dialoginput.italic.bengali=Lohit Bengali + dialoginput.italic.gujarati=Lohit Gujarati + dialoginput.italic.hindi=Lohit Hindi +@@ -320,6 +358,8 @@ + dialoginput.bolditalic.korean=Baekmuk Gulim + dialoginput.bolditalic.chinese-big5=AR PL ShanHeiSun Uni + dialoginput.bolditalic.chinese-gb18030=AR PL ShanHeiSun Uni ++dialoginput.bolditalic.assamese=Lohit Assamese ++dialoginput.bolditalic.devanagari=Lohit Devanagari + dialoginput.bolditalic.bengali=Lohit Bengali + dialoginput.bolditalic.gujarati=Lohit Gujarati + dialoginput.bolditalic.hindi=Lohit Hindi +@@ -356,21 +396,24 @@ + filename.DejaVu_Serif_Oblique=/usr/share/fonts/dejavu/DejaVuSerif-Oblique.ttf + filename.DejaVu_Serif_Bold_Oblique=/usr/share/fonts/dejavu/DejaVuSerif-BoldOblique.ttf + +-filename.Sazanami_Gothic=/usr/share/fonts/sazanami-fonts-gothic/sazanami-gothic.ttf +-filename.Sazanami_Mincho=/usr/share/fonts/sazanami-fonts-mincho/sazanami-mincho.ttf ++filename.Sazanami_Gothic=/usr/share/fonts/sazanami/gothic/sazanami-gothic.ttf ++filename.Sazanami_Mincho=/usr/share/fonts/sazanami/mincho/sazanami-mincho.ttf + filename.AR_PL_ShanHeiSun_Uni=/usr/share/fonts/cjkunifonts-uming/uming.ttc + filename.AR_PL_ZenKai_Uni=/usr/share/fonts/cjkunifonts-ukai/ukai.ttc +-filename.Baekmuk_Gulim=/usr/share/fonts/baekmuk-ttf-gulim/gulim.ttf +-filename.Baekmuk_Batang=/usr/share/fonts/baekmuk-ttf-batang/batang.ttf ++filename.Baekmuk_Gulim=/usr/share/fonts/baekmuk-ttf/gulim.ttf ++filename.Baekmuk_Batang=/usr/share/fonts/baekmuk-ttf/batang.ttf ++ ++filename.Lohit_Assamese=/usr/share/fonts/lohit-assamese/Lohit-Assamese.ttf ++filename.Lohit_Devanagari=/usr/share/fonts/lohit-devanagari/Lohit-Devanagari.ttf ++filename.Lohit_Bengali=/usr/share/fonts/lohit-bengali/Lohit-Bengali.ttf ++filename.Lohit_Gujarati=/usr/share/fonts/lohit-gujarati/Lohit-Gujarati.ttf ++filename.Lohit_Hindi=/usr/share/fonts/lohit-hindi/Lohit-Hindi.ttf ++filename.Lohit_Kannda=/usr/share/fonts/lohit-kannada/Lohit-Kannada.ttf ++filename.Lohit_Malayalam=/usr/share/fonts/lohit-malayalam/Lohit-Malayalam.ttf ++filename.Lohit_Oriya=/usr/share/fonts/lohit-oriya/Lohit-Oriya.ttf ++filename.Lohit_Punjabi=/usr/share/fonts/lohit-punjabi/Lohit-Punjabi.ttf ++filename.Lohit_Tamil=/usr/share/fonts/lohit-tamil/Lohit-Tamil.ttf ++filename.Lohit_Telugu=/usr/share/fonts/lohit-telugu/Lohit-Telugu.ttf + +-filename.Lohit_Bengali=/usr/share/fonts/lohit-bengali/lohit_bn.ttf +-filename.Lohit_Gujarati=/usr/share/fonts/lohit-gujarati/lohit_gu.ttf +-filename.Lohit_Hindi=/usr/share/fonts/lohit-hindi/lohit_hi.ttf +-filename.Lohit_Kannda=/usr/share/fonts/lohit-kannada/lohit_kn.ttf +-filename.Lohit_Malayalam=/usr/share/fonts/lohit-malayalam/lohit_ml.ttf +-filename.Lohit_Oriya=/usr/share/fonts/lohit-oriya/lohit_or.ttf +-filename.Lohit_Punjabi=/usr/share/fonts/lohit-punjabi/lohit_pa.ttf +-filename.Lohit_Tamil=/usr/share/fonts/lohit-tamil/lohit_ta.ttf +-filename.Lohit_Telugu=/usr/share/fonts/lohit-telugu/lohit_te.ttf + filename.LKLUG=/usr/share/fonts/lklug/lklug.ttf + +--- openjdk/jdk/src/solaris/classes/sun/awt/fontconfigs/linux.fontconfig.Fedora.properties 2010-11-04 11:06:26.695428114 +0100 ++++ openjdk/jdk/src/solaris/classes/sun/awt/fontconfigs/linux.fontconfig.Fedora.properties 2010-11-04 11:06:25.602455633 +0100 +@@ -35,6 +35,8 @@ + dialog.plain.korean=Baekmuk Gulim + dialog.plain.chinese-big5=AR PL ShanHeiSun Uni + dialog.plain.chinese-gb18030=AR PL ShanHeiSun Uni ++dialog.plain.assamese=Lohit Assamese ++dialog.plain.devanagari=Lohit Devanagari + dialog.plain.bengali=Lohit Bengali + dialog.plain.gujarati=Lohit Gujarati + dialog.plain.hindi=Lohit Hindi +@@ -50,6 +52,8 @@ + dialog.bold.korean=Baekmuk Gulim + dialog.bold.chinese-big5=AR PL ShanHeiSun Uni + dialog.bold.chinese-gb18030=AR PL ShanHeiSun Uni ++dialog.bold.assamese=Lohit Assamese ++dialog.bold.devanagari=Lohit Devanagari + dialog.bold.bengali=Lohit Bengali + dialog.bold.gujarati=Lohit Gujarati + dialog.bold.hindi=Lohit Hindi +@@ -65,6 +69,8 @@ + dialog.italic.korean=Baekmuk Gulim + dialog.italic.chinese-big5=AR PL ShanHeiSun Uni + dialog.italic.chinese-gb18030=AR PL ShanHeiSun Uni ++dialog.italic.assamese=Lohit Assamese ++dialog.italic.devanagari=Lohit Devanagari + dialog.italic.bengali=Lohit Bengali + dialog.italic.gujarati=Lohit Gujarati + dialog.italic.hindi=Lohit Hindi +@@ -80,6 +86,8 @@ + dialog.bolditalic.korean=Baekmuk Gulim + dialog.bolditalic.chinese-big5=AR PL ShanHeiSun Uni + dialog.bolditalic.chinese-gb18030=AR PL ShanHeiSun Uni ++dialog.bolditalic.assamese=Lohit Assamese ++dialog.bolditalic.devanagari=Lohit Devanagari + dialog.bolditalic.bengali=Lohit Bengali + dialog.bolditalic.gujarati=Lohit Gujarati + dialog.bolditalic.hindi=Lohit Hindi +@@ -95,6 +103,8 @@ + sansserif.plain.korean=Baekmuk Gulim + sansserif.plain.chinese-big5=AR PL ShanHeiSun Uni + sansserif.plain.chinese-gb18030=AR PL ShanHeiSun Uni ++sansserif.plain.assamese=Lohit Assamese ++sansserif.plain.devanagari=Lohit Devanagari + sansserif.plain.bengali=Lohit Bengali + sansserif.plain.gujarati=Lohit Gujarati + sansserif.plain.hindi=Lohit Hindi +@@ -110,6 +120,8 @@ + sansserif.bold.korean=Baekmuk Gulim + sansserif.bold.chinese-big5=AR PL ShanHeiSun Uni + sansserif.bold.chinese-gb18030=AR PL ShanHeiSun Uni ++sansserif.bold.assamese=Lohit Assamese ++sansserif.bold.devanagari=Lohit Devanagari + sansserif.bold.bengali=Lohit Bengali + sansserif.bold.gujarati=Lohit Gujarati + sansserif.bold.hindi=Lohit Hindi +@@ -125,6 +137,8 @@ + sansserif.italic.korean=Baekmuk Gulim + sansserif.italic.chinese-big5=AR PL ShanHeiSun Uni + sansserif.italic.chinese-gb18030=AR PL ShanHeiSun Uni ++sansserif.italic.assamese=Lohit Assamese ++sansserif.italic.devanagari=Lohit Devanagari + sansserif.italic.bengali=Lohit Bengali + sansserif.italic.gujarati=Lohit Gujarati + sansserif.italic.hindi=Lohit Hindi +@@ -140,6 +154,8 @@ + sansserif.bolditalic.korean=Baekmuk Gulim + sansserif.bolditalic.chinese-big5=AR PL ShanHeiSun Uni + sansserif.bolditalic.chinese-gb18030=AR PL ShanHeiSun Uni ++sansserif.bolditalic.assamese=Lohit Assamese ++sansserif.bolditalic.devanagari=Lohit Devanagari + sansserif.bolditalic.bengali=Lohit Bengali + sansserif.bolditalic.gujarati=Lohit Gujarati + sansserif.bolditalic.hindi=Lohit Hindi +@@ -155,6 +171,8 @@ + serif.plain.korean=Baekmuk Batang + serif.plain.chinese-big5=AR PL ZenKai Uni + serif.plain.chinese-gb18030=AR PL ZenKai Uni ++serif.plain.assamese=Lohit Assamese ++serif.plain.devanagari=Lohit Devanagari + serif.plain.bengali=Lohit Bengali + serif.plain.gujarati=Lohit Gujarati + serif.plain.hindi=Lohit Hindi +@@ -170,6 +188,8 @@ + serif.bold.korean=Baekmuk Batang + serif.bold.chinese-big5=AR PL ZenKai Uni + serif.bold.chinese-gb18030=AR PL ZenKai Uni ++serif.bold.assamese=Lohit Assamese ++serif.bold.devanagari=Lohit Devanagari + serif.bold.bengali=Lohit Bengali + serif.bold.gujarati=Lohit Gujarati + serif.bold.hindi=Lohit Hindi +@@ -185,6 +205,8 @@ + serif.italic.korean=Baekmuk Batang + serif.italic.chinese-big5=AR PL ZenKai Uni + serif.italic.chinese-gb18030=AR PL ZenKai Uni ++serif.italic.assamese=Lohit Assamese ++serif.italic.devanagari=Lohit Devanagari + serif.italic.bengali=Lohit Bengali + serif.italic.gujarati=Lohit Gujarati + serif.italic.hindi=Lohit Hindi +@@ -200,6 +222,8 @@ + serif.bolditalic.korean=Baekmuk Batang + serif.bolditalic.chinese-big5=AR PL ZenKai Uni + serif.bolditalic.chinese-gb18030=AR PL ZenKai Uni ++serif.bolditalic.assamese=Lohit Assamese ++serif.bolditalic.devanagari=Lohit Devanagari + serif.bolditalic.bengali=Lohit Bengali + serif.bolditalic.gujarati=Lohit Gujarati + serif.bolditalic.hindi=Lohit Hindi +@@ -215,6 +239,8 @@ + monospaced.plain.korean=Baekmuk Gulim + monospaced.plain.chinese-big5=AR PL ShanHeiSun Uni + monospaced.plain.chinese-gb18030=AR PL ShanHeiSun Uni ++monospaced.plain.assamese=Lohit Assamese ++monospaced.plain.devanagari=Lohit Devanagari + monospaced.plain.bengali=Lohit Bengali + monospaced.plain.gujarati=Lohit Gujarati + monospaced.plain.hindi=Lohit Hindi +@@ -230,6 +256,8 @@ + monospaced.bold.korean=Baekmuk Gulim + monospaced.bold.chinese-big5=AR PL ShanHeiSun Uni + monospaced.bold.chinese-gb18030=AR PL ShanHeiSun Uni ++monospaced.bold.assamese=Lohit Assamese ++monospaced.bold.devanagari=Lohit Devanagari + monospaced.bold.bengali=Lohit Bengali + monospaced.bold.gujarati=Lohit Gujarati + monospaced.bold.hindi=Lohit Hindi +@@ -245,6 +273,8 @@ + monospaced.italic.korean=Baekmuk Gulim + monospaced.italic.chinese-big5=AR PL ShanHeiSun Uni + monospaced.italic.chinese-gb18030=AR PL ShanHeiSun Uni ++monospaced.italic.assamese=Lohit Assamese ++monospaced.italic.devanagari=Lohit Devanagari + monospaced.italic.bengali=Lohit Bengali + monospaced.italic.gujarati=Lohit Gujarati + monospaced.italic.hindi=Lohit Hindi +@@ -260,6 +290,8 @@ + monospaced.bolditalic.korean=Baekmuk Gulim + monospaced.bolditalic.chinese-big5=AR PL ShanHeiSun Uni + monospaced.bolditalic.chinese-gb18030=AR PL ShanHeiSun Uni ++monospaced.bolditalic.assamese=Lohit Assamese ++monospaced.bolditalic.devanagari=Lohit Devanagari + monospaced.bolditalic.bengali=Lohit Bengali + monospaced.bolditalic.gujarati=Lohit Gujarati + monospaced.bolditalic.hindi=Lohit Hindi +@@ -275,6 +307,8 @@ + dialoginput.plain.korean=Baekmuk Gulim + dialoginput.plain.chinese-big5=AR PL ShanHeiSun Uni + dialoginput.plain.chinese-gb18030=AR PL ShanHeiSun Uni ++dialoginput.plain.assamese=Lohit Assamese ++dialoginput.plain.devanagari=Lohit Devanagari + dialoginput.plain.bengali=Lohit Bengali + dialoginput.plain.gujarati=Lohit Gujarati + dialoginput.plain.hindi=Lohit Hindi +@@ -290,6 +324,8 @@ + dialoginput.bold.korean=Baekmuk Gulim + dialoginput.bold.chinese-big5=AR PL ShanHeiSun Uni + dialoginput.bold.chinese-gb18030=AR PL ShanHeiSun Uni ++dialoginput.bold.assamese=Lohit Assamese ++dialoginput.bold.devanagari=Lohit Devanagari + dialoginput.bold.bengali=Lohit Bengali + dialoginput.bold.gujarati=Lohit Gujarati + dialoginput.bold.hindi=Lohit Hindi +@@ -305,6 +341,8 @@ + dialoginput.italic.korean=Baekmuk Gulim + dialoginput.italic.chinese-big5=AR PL ShanHeiSun Uni + dialoginput.italic.chinese-gb18030=AR PL ShanHeiSun Uni ++dialoginput.italic.assamese=Lohit Assamese ++dialoginput.italic.devanagari=Lohit Devanagari + dialoginput.italic.bengali=Lohit Bengali + dialoginput.italic.gujarati=Lohit Gujarati + dialoginput.italic.hindi=Lohit Hindi +@@ -320,6 +358,8 @@ + dialoginput.bolditalic.korean=Baekmuk Gulim + dialoginput.bolditalic.chinese-big5=AR PL ShanHeiSun Uni + dialoginput.bolditalic.chinese-gb18030=AR PL ShanHeiSun Uni ++dialoginput.bolditalic.assamese=Lohit Assamese ++dialoginput.bolditalic.devanagari=Lohit Devanagari + dialoginput.bolditalic.bengali=Lohit Bengali + dialoginput.bolditalic.gujarati=Lohit Gujarati + dialoginput.bolditalic.hindi=Lohit Hindi +@@ -356,21 +396,24 @@ + filename.DejaVu_Serif_Oblique=/usr/share/fonts/dejavu/DejaVuSerif-Oblique.ttf + filename.DejaVu_Serif_Bold_Oblique=/usr/share/fonts/dejavu/DejaVuSerif-BoldOblique.ttf + +-filename.Sazanami_Gothic=/usr/share/fonts/sazanami-fonts-gothic/sazanami-gothic.ttf +-filename.Sazanami_Mincho=/usr/share/fonts/sazanami-fonts-mincho/sazanami-mincho.ttf +-filename.AR_PL_ShanHeiSun_Uni=/usr/share/fonts/cjkunifonts-uming/uming.ttc +-filename.AR_PL_ZenKai_Uni=/usr/share/fonts/cjkunifonts-ukai/ukai.ttc +-filename.Baekmuk_Gulim=/usr/share/fonts/baekmuk-ttf-gulim/gulim.ttf +-filename.Baekmuk_Batang=/usr/share/fonts/baekmuk-ttf-batang/batang.ttf ++filename.Sazanami_Gothic=/usr/share/fonts/sazanami/gothic/sazanami-gothic.ttf ++filename.Sazanami_Mincho=/usr/share/fonts/sazanami/mincho/sazanami-mincho.ttf ++filename.AR_PL_ShanHeiSun_Uni=/usr/share/fonts/cjkuni-uming/uming.ttc ++filename.AR_PL_ZenKai_Uni=/usr/share/fonts/cjkuni-ukai/ukai.ttc ++filename.Baekmuk_Gulim=/usr/share/fonts/baekmuk-ttf/gulim.ttf ++filename.Baekmuk_Batang=/usr/share/fonts/baekmuk-ttf/batang.ttf ++ ++filename.Lohit_Assamese=/usr/share/fonts/lohit-assamese/Lohit-Assamese.ttf ++filename.Lohit_Devanagari=/usr/share/fonts/lohit-devanagari/Lohit-Devanagari.ttf ++filename.Lohit_Bengali=/usr/share/fonts/lohit-bengali/Lohit-Bengali.ttf ++filename.Lohit_Gujarati=/usr/share/fonts/lohit-gujarati/Lohit-Gujarati.ttf ++filename.Lohit_Hindi=/usr/share/fonts/lohit-devanagari/Lohit-Devanagari.ttf ++filename.Lohit_Kannda=/usr/share/fonts/lohit-kannada/Lohit-Kannada.ttf ++filename.Lohit_Malayalam=/usr/share/fonts/lohit-malayalam/Lohit-Malayalam.ttf ++filename.Lohit_Oriya=/usr/share/fonts/lohit-oriya/Lohit-Oriya.ttf ++filename.Lohit_Punjabi=/usr/share/fonts/lohit-punjabi/Lohit-Punjabi.ttf ++filename.Lohit_Tamil=/usr/share/fonts/lohit-tamil/Lohit-Tamil.ttf ++filename.Lohit_Telugu=/usr/share/fonts/lohit-telugu/Lohit-Telugu.ttf + +-filename.Lohit_Bengali=/usr/share/fonts/lohit-bengali/lohit_bn.ttf +-filename.Lohit_Gujarati=/usr/share/fonts/lohit-gujarati/lohit_gu.ttf +-filename.Lohit_Hindi=/usr/share/fonts/lohit-hindi/lohit_hi.ttf +-filename.Lohit_Kannda=/usr/share/fonts/lohit-kannada/lohit_kn.ttf +-filename.Lohit_Malayalam=/usr/share/fonts/lohit-malayalam/lohit_ml.ttf +-filename.Lohit_Oriya=/usr/share/fonts/lohit-oriya/lohit_or.ttf +-filename.Lohit_Punjabi=/usr/share/fonts/lohit-punjabi/lohit_pa.ttf +-filename.Lohit_Tamil=/usr/share/fonts/lohit-tamil/lohit_ta.ttf +-filename.Lohit_Telugu=/usr/share/fonts/lohit-telugu/lohit_te.ttf + filename.LKLUG=/usr/share/fonts/lklug/lklug.ttf + From bugzilla-daemon at icedtea.classpath.org Tue Nov 9 09:01:21 2010 From: bugzilla-daemon at icedtea.classpath.org (bugzilla-daemon at icedtea.classpath.org) Date: Tue, 09 Nov 2010 17:01:21 +0000 Subject: [Bug 589] New: icedtea6/1.8.2-3 on Maemo5 PR1.3: TV-Browser app crashes Message-ID: http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=589 Summary: icedtea6/1.8.2-3 on Maemo5 PR1.3: TV-Browser app crashes Product: IcedTea Version: unspecified Platform: arm OS/Version: Linux Status: NEW Severity: normal Priority: P2 Component: IcedTea6 AssignedTo: unassigned at icedtea.classpath.org ReportedBy: klausdguenther at gmail.com I have tried to install several Java apps on my Nokia N900 mobile phone using icedtea6, but they all would crash sooner or later. So icedtea6 appears to be virtually unusable at the moment. Example: Download the Linux version of TV-Browser from http://sourceforge.net/projects/tvbrowser/files/TV-Browser%20(Java%205%20and%20higher)/tvbrowser-2.7.5.tar.gz (home page: www.tvbrowser.org) to your N900, unpack it, cd to the tvbrowser-2.7.5 directory and execute "java -jar tvbrowser.jar. Then follow the instructions of the setup assistant (click "weiter" several times): A crash will occur sooner or later (not always at the same time). I have kept I corresponding bug log file, but unfortunately I cannot submit it here. -- Configure bugmail: http://icedtea.classpath.org/bugzilla/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are the assignee for the bug, or are watching the assignee. From ahughes at redhat.com Tue Nov 9 09:07:20 2010 From: ahughes at redhat.com (Dr Andrew John Hughes) Date: Tue, 9 Nov 2010 17:07:20 +0000 Subject: request commit for asians fonts config patches for fedoras In-Reply-To: <4CD973DE.9010604@redhat.com> References: <1289295987.2775.85.camel@springer.wildebeest.org> <20101109140517.GD7776@rivendell.middle-earth.co.uk> <1289311774.2775.358.camel@springer.wildebeest.org> <4CD9678E.8030103@redhat.com> <20101109154457.GE7776@rivendell.middle-earth.co.uk> <4CD973DE.9010604@redhat.com> Message-ID: <20101109170720.GH7776@rivendell.middle-earth.co.uk> On 17:16 Tue 09 Nov , Jiri Vanek wrote: > On 11/09/2010 04:44 PM, Dr Andrew John Hughes wrote: > > Your ChangeLog doesn't match the patch. The patch contains: > > > > Makefile.am | 6 +++++- > > b/patches/f14-fonts.patch | 13 +++++++++++++ > > b/patches/fontconfig-Fedora-11-14-changes.patch | 1 + > > > sorry for typo in changelog > + * openjdk/jdk/make/sun/awt/Makefile: + added notifications about above mentioned fontconfig files is still wrong as this is the content of f14-fonts.patch, not part of the change. This: + * patches/fontconfig-Fedora-11-14-changes.patch + Updated font configurations for Fedora 9-14 + * patches/f14-fonts.patch + Add additional fontconfig files to Makefile. would be better, though I don't see why these patches are separate. Can't it all just go in f14-fonts.patch? > > Also you still haven't explained why the f11-f13 versions are being > > altered. I thought the need to copy them first was so they didn't > > get th > ese changes? Please explain. > > > f14 - brought new guidelines, so all used fonts have changed theyr names > and install paths. > f13 have backported all the changes Ok so these changes now actually begin with f13. > f12 have not backported changes for cjkuni fonts > f11 have not backported cjkuni and only some of lohit changes - only > renaming conventions, but not gathering of hindy under devangari Ok, it makes sense now. > f9 and d10 are just copyed. All mantainers were to lazy to backport som > echanges here;) > copied ;-) > I have digged those informations from koji and verified with their' > maintainers. > Thanks. Forgot to mention before; the Makefile.am changes should be in a new target. You also currently have the path wrong; the files are in $(abs_top_builddir) not $(abs_top_srcdir). I'd suggest adding: FONTCONFIG_PATH = openjdk/jdk/src/solaris/classes/sun/awt/fontconfigs in the source directories section near the top, then: stamps/fonts.stamp: stamps/generated.stamp cp $(FONTCONFIG_PATH)/linux.fontconfig.Fedora.properties \ $(FONTCONFIG_PATH)/linux.fontconfig.Fedora.9.properties cp $(FONTCONFIG_PATH)/linux.fontconfig.Fedora.properties \ $(FONTCONFIG_PATH)/linux.fontconfig.Fedora.10.properties cp $(FONTCONFIG_PATH)/linux.fontconfig.Fedora.properties \ $(FONTCONFIG_PATH)/linux.fontconfig.Fedora.11.properties cp $(FONTCONFIG_PATH)/linux.fontconfig.Fedora.properties \ $(FONTCONFIG_PATH)/linux.fontconfig.Fedora.12.properties mkdir -p stamps touch stamps/fonts.stamp after the clean-generated target. stamps/patch-fsg.stamp will need to depend on stamps/fonts.stamp rather than stamps/generated.stamp. > > # HG changeset patch > # User Jiri Vanek > # Date 1289318694 -3600 > # Node ID 95daa16ce9565945442b8b7e6b45807e64e6cc78 > # Parent 72de51f0a744bc38ed2f56a1ffb848b4aeaf0875 > Updated font configurations for Fedora 9-14 > > diff -r 72de51f0a744 -r 95daa16ce956 ChangeLog > --- a/ChangeLog Tue Nov 09 14:53:31 2010 +0000 > +++ b/ChangeLog Tue Nov 09 17:04:54 2010 +0100 > @@ -1,3 +1,14 @@ > +2010-11-09 Jiri Vanek > + > + * Makefile.am: > + * patches/fontconfig-Fedora-11-14-changes.patch > + * patches/f14-fonts.patch > + Updated font configurations for Fedora 9-14 > + * Makefile.am: > + added cloning of fontconfig.Fedora to Fedora.12,11,10,9 > + * openjdk/jdk/make/sun/awt/Makefile: > + added notifications about above mentioned fontconfig files > + > 2010-11-09 Andrew John Hughes > > * Makefile.am: > diff -r 72de51f0a744 -r 95daa16ce956 Makefile.am > --- a/Makefile.am Tue Nov 09 14:53:31 2010 +0000 > +++ b/Makefile.am Tue Nov 09 17:04:54 2010 +0100 > @@ -295,7 +295,9 @@ > patches/6703377-freetypescaler.patch \ > patches/icedtea-jtreg-international-fonts.patch \ > patches/openjdk/6967436-6976265-6967434-pisces.patch \ > - patches/openjdk/6997495-test_correction_6857159.patch > + patches/openjdk/6997495-test_correction_6857159.patch \ > + patches/f14-fonts.patch \ > + patches/fontconfig-Fedora-11-14-changes.patch > > if WITH_ALT_HSBUILD > ICEDTEA_PATCHES += \ > @@ -836,6 +838,11 @@ > endif > mkdir -p stamps > touch stamps/extract-openjdk.stamp > +#clone fedoras fontconfigs > + cp > $(abs_top_srcdir)/openjdk/jdk/src/solaris/classes/sun/awt/fontconfigs/linux.fontconfig.Fedora.properties > > $(abs_top_srcdir)/openjdk/jdk/src/solaris/classes/sun/awt/fontconfigs/linux.fontconfig.Fedora.9.properties > + cp > $(abs_top_srcdir)/openjdk/jdk/src/solaris/classes/sun/awt/fontconfigs/linux.fontconfig.Fedora.properties > > $(abs_top_srcdir)/openjdk/jdk/src/solaris/classes/sun/awt/fontconfigs/linux.fontconfig.Fedora.10.properties > + cp > $(abs_top_srcdir)/openjdk/jdk/src/solaris/classes/sun/awt/fontconfigs/linux.fontconfig.Fedora.properties > > $(abs_top_srcdir)/openjdk/jdk/src/solaris/classes/sun/awt/fontconfigs/linux.fontconfig.Fedora.11.properties > + cp > $(abs_top_srcdir)/openjdk/jdk/src/solaris/classes/sun/awt/fontconfigs/linux.fontconfig.Fedora.properties > > $(abs_top_srcdir)/openjdk/jdk/src/solaris/classes/sun/awt/fontconfigs/linux.fontconfig.Fedora.12.properties > > clean-extract-openjdk: > rm -rf openjdk > diff -r 72de51f0a744 -r 95daa16ce956 patches/f14-fonts.patch > --- /dev/null Thu Jan 01 00:00:00 1970 +0000 > +++ b/patches/f14-fonts.patch Tue Nov 09 17:04:54 2010 +0100 > @@ -0,0 +1,13 @@ > +--- openjdk/jdk/make/sun/awt/Makefile 2010-11-04 09:52:49.583434000 +0100 > ++++ openjdk/jdk/make/sun/awt/Makefile 2010-11-04 16:50:14.091688769 +0100 > +@@ -387,6 +387,10 @@ > + fontconfig.SuSE.properties \ > + fontconfig.Ubuntu.properties \ > + fontconfig.Fedora.properties \ > ++ fontconfig.Fedora.9.properties \ > ++ fontconfig.Fedora.10.properties \ > ++ fontconfig.Fedora.11.properties \ > ++ fontconfig.Fedora.12.properties \ > + fontconfig.RedHat.6.0.properties \ > + fontconfig.Gentoo.properties > + else > diff -r 72de51f0a744 -r 95daa16ce956 > patches/fontconfig-Fedora-11-14-changes.patch > --- /dev/null Thu Jan 01 00:00:00 1970 +0000 > +++ b/patches/fontconfig-Fedora-11-14-changes.patch Tue Nov 09 17:04:54 > 2010 +0100 > @@ -0,0 +1,663 @@ > +--- > openjdk/jdk/src/solaris/classes/sun/awt/fontconfigs/linux.fontconfig.Fedora.11.properties > 2010-11-04 11:06:26.695428114 +0100 > ++++ > openjdk/jdk/src/solaris/classes/sun/awt/fontconfigs/linux.fontconfig.Fedora.11.properties > 2010-11-04 11:19:45.133587953 +0100 > +@@ -35,6 +35,8 @@ > + dialog.plain.korean=Baekmuk Gulim > + dialog.plain.chinese-big5=AR PL ShanHeiSun Uni > + dialog.plain.chinese-gb18030=AR PL ShanHeiSun Uni > ++dialog.plain.assamese=Lohit Assamese > ++dialog.plain.devanagari=Lohit Devanagari > + dialog.plain.bengali=Lohit Bengali > + dialog.plain.gujarati=Lohit Gujarati > + dialog.plain.hindi=Lohit Hindi > +@@ -50,6 +52,8 @@ > + dialog.bold.korean=Baekmuk Gulim > + dialog.bold.chinese-big5=AR PL ShanHeiSun Uni > + dialog.bold.chinese-gb18030=AR PL ShanHeiSun Uni > ++dialog.bold.assamese=Lohit Assamese > ++dialog.bold.devanagari=Lohit Devanagari > + dialog.bold.bengali=Lohit Bengali > + dialog.bold.gujarati=Lohit Gujarati > + dialog.bold.hindi=Lohit Hindi > +@@ -65,6 +69,8 @@ > + dialog.italic.korean=Baekmuk Gulim > + dialog.italic.chinese-big5=AR PL ShanHeiSun Uni > + dialog.italic.chinese-gb18030=AR PL ShanHeiSun Uni > ++dialog.italic.assamese=Lohit Assamese > ++dialog.italic.devanagari=Lohit Devanagari > + dialog.italic.bengali=Lohit Bengali > + dialog.italic.gujarati=Lohit Gujarati > + dialog.italic.hindi=Lohit Hindi > +@@ -80,6 +86,8 @@ > + dialog.bolditalic.korean=Baekmuk Gulim > + dialog.bolditalic.chinese-big5=AR PL ShanHeiSun Uni > + dialog.bolditalic.chinese-gb18030=AR PL ShanHeiSun Uni > ++dialog.bolditalic.assamese=Lohit Assamese > ++dialog.bolditalic.devanagari=Lohit Devanagari > + dialog.bolditalic.bengali=Lohit Bengali > + dialog.bolditalic.gujarati=Lohit Gujarati > + dialog.bolditalic.hindi=Lohit Hindi > +@@ -95,6 +103,8 @@ > + sansserif.plain.korean=Baekmuk Gulim > + sansserif.plain.chinese-big5=AR PL ShanHeiSun Uni > + sansserif.plain.chinese-gb18030=AR PL ShanHeiSun Uni > ++sansserif.plain.assamese=Lohit Assamese > ++sansserif.plain.devanagari=Lohit Devanagari > + sansserif.plain.bengali=Lohit Bengali > + sansserif.plain.gujarati=Lohit Gujarati > + sansserif.plain.hindi=Lohit Hindi > +@@ -110,6 +120,8 @@ > + sansserif.bold.korean=Baekmuk Gulim > + sansserif.bold.chinese-big5=AR PL ShanHeiSun Uni > + sansserif.bold.chinese-gb18030=AR PL ShanHeiSun Uni > ++sansserif.bold.assamese=Lohit Assamese > ++sansserif.bold.devanagari=Lohit Devanagari > + sansserif.bold.bengali=Lohit Bengali > + sansserif.bold.gujarati=Lohit Gujarati > + sansserif.bold.hindi=Lohit Hindi > +@@ -125,6 +137,8 @@ > + sansserif.italic.korean=Baekmuk Gulim > + sansserif.italic.chinese-big5=AR PL ShanHeiSun Uni > + sansserif.italic.chinese-gb18030=AR PL ShanHeiSun Uni > ++sansserif.italic.assamese=Lohit Assamese > ++sansserif.italic.devanagari=Lohit Devanagari > + sansserif.italic.bengali=Lohit Bengali > + sansserif.italic.gujarati=Lohit Gujarati > + sansserif.italic.hindi=Lohit Hindi > +@@ -140,6 +154,8 @@ > + sansserif.bolditalic.korean=Baekmuk Gulim > + sansserif.bolditalic.chinese-big5=AR PL ShanHeiSun Uni > + sansserif.bolditalic.chinese-gb18030=AR PL ShanHeiSun Uni > ++sansserif.bolditalic.assamese=Lohit Assamese > ++sansserif.bolditalic.devanagari=Lohit Devanagari > + sansserif.bolditalic.bengali=Lohit Bengali > + sansserif.bolditalic.gujarati=Lohit Gujarati > + sansserif.bolditalic.hindi=Lohit Hindi > +@@ -155,6 +171,8 @@ > + serif.plain.korean=Baekmuk Batang > + serif.plain.chinese-big5=AR PL ZenKai Uni > + serif.plain.chinese-gb18030=AR PL ZenKai Uni > ++serif.plain.assamese=Lohit Assamese > ++serif.plain.devanagari=Lohit Devanagari > + serif.plain.bengali=Lohit Bengali > + serif.plain.gujarati=Lohit Gujarati > + serif.plain.hindi=Lohit Hindi > +@@ -170,6 +188,8 @@ > + serif.bold.korean=Baekmuk Batang > + serif.bold.chinese-big5=AR PL ZenKai Uni > + serif.bold.chinese-gb18030=AR PL ZenKai Uni > ++serif.bold.assamese=Lohit Assamese > ++serif.bold.devanagari=Lohit Devanagari > + serif.bold.bengali=Lohit Bengali > + serif.bold.gujarati=Lohit Gujarati > + serif.bold.hindi=Lohit Hindi > +@@ -185,6 +205,8 @@ > + serif.italic.korean=Baekmuk Batang > + serif.italic.chinese-big5=AR PL ZenKai Uni > + serif.italic.chinese-gb18030=AR PL ZenKai Uni > ++serif.italic.assamese=Lohit Assamese > ++serif.italic.devanagari=Lohit Devanagari > + serif.italic.bengali=Lohit Bengali > + serif.italic.gujarati=Lohit Gujarati > + serif.italic.hindi=Lohit Hindi > +@@ -200,6 +222,8 @@ > + serif.bolditalic.korean=Baekmuk Batang > + serif.bolditalic.chinese-big5=AR PL ZenKai Uni > + serif.bolditalic.chinese-gb18030=AR PL ZenKai Uni > ++serif.bolditalic.assamese=Lohit Assamese > ++serif.bolditalic.devanagari=Lohit Devanagari > + serif.bolditalic.bengali=Lohit Bengali > + serif.bolditalic.gujarati=Lohit Gujarati > + serif.bolditalic.hindi=Lohit Hindi > +@@ -215,6 +239,8 @@ > + monospaced.plain.korean=Baekmuk Gulim > + monospaced.plain.chinese-big5=AR PL ShanHeiSun Uni > + monospaced.plain.chinese-gb18030=AR PL ShanHeiSun Uni > ++monospaced.plain.assamese=Lohit Assamese > ++monospaced.plain.devanagari=Lohit Devanagari > + monospaced.plain.bengali=Lohit Bengali > + monospaced.plain.gujarati=Lohit Gujarati > + monospaced.plain.hindi=Lohit Hindi > +@@ -230,6 +256,8 @@ > + monospaced.bold.korean=Baekmuk Gulim > + monospaced.bold.chinese-big5=AR PL ShanHeiSun Uni > + monospaced.bold.chinese-gb18030=AR PL ShanHeiSun Uni > ++monospaced.bold.assamese=Lohit Assamese > ++monospaced.bold.devanagari=Lohit Devanagari > + monospaced.bold.bengali=Lohit Bengali > + monospaced.bold.gujarati=Lohit Gujarati > + monospaced.bold.hindi=Lohit Hindi > +@@ -245,6 +273,8 @@ > + monospaced.italic.korean=Baekmuk Gulim > + monospaced.italic.chinese-big5=AR PL ShanHeiSun Uni > + monospaced.italic.chinese-gb18030=AR PL ShanHeiSun Uni > ++monospaced.italic.assamese=Lohit Assamese > ++monospaced.italic.devanagari=Lohit Devanagari > + monospaced.italic.bengali=Lohit Bengali > + monospaced.italic.gujarati=Lohit Gujarati > + monospaced.italic.hindi=Lohit Hindi > +@@ -260,6 +290,8 @@ > + monospaced.bolditalic.korean=Baekmuk Gulim > + monospaced.bolditalic.chinese-big5=AR PL ShanHeiSun Uni > + monospaced.bolditalic.chinese-gb18030=AR PL ShanHeiSun Uni > ++monospaced.bolditalic.assamese=Lohit Assamese > ++monospaced.bolditalic.devanagari=Lohit Devanagari > + monospaced.bolditalic.bengali=Lohit Bengali > + monospaced.bolditalic.gujarati=Lohit Gujarati > + monospaced.bolditalic.hindi=Lohit Hindi > +@@ -275,6 +307,8 @@ > + dialoginput.plain.korean=Baekmuk Gulim > + dialoginput.plain.chinese-big5=AR PL ShanHeiSun Uni > + dialoginput.plain.chinese-gb18030=AR PL ShanHeiSun Uni > ++dialoginput.plain.assamese=Lohit Assamese > ++dialoginput.plain.devanagari=Lohit Devanagari > + dialoginput.plain.bengali=Lohit Bengali > + dialoginput.plain.gujarati=Lohit Gujarati > + dialoginput.plain.hindi=Lohit Hindi > +@@ -290,6 +324,8 @@ > + dialoginput.bold.korean=Baekmuk Gulim > + dialoginput.bold.chinese-big5=AR PL ShanHeiSun Uni > + dialoginput.bold.chinese-gb18030=AR PL ShanHeiSun Uni > ++dialoginput.bold.assamese=Lohit Assamese > ++dialoginput.bold.devanagari=Lohit Devanagari > + dialoginput.bold.bengali=Lohit Bengali > + dialoginput.bold.gujarati=Lohit Gujarati > + dialoginput.bold.hindi=Lohit Hindi > +@@ -305,6 +341,8 @@ > + dialoginput.italic.korean=Baekmuk Gulim > + dialoginput.italic.chinese-big5=AR PL ShanHeiSun Uni > + dialoginput.italic.chinese-gb18030=AR PL ShanHeiSun Uni > ++dialoginput.italic.assamese=Lohit Assamese > ++dialoginput.italic.devanagari=Lohit Devanagari > + dialoginput.italic.bengali=Lohit Bengali > + dialoginput.italic.gujarati=Lohit Gujarati > + dialoginput.italic.hindi=Lohit Hindi > +@@ -320,6 +358,8 @@ > + dialoginput.bolditalic.korean=Baekmuk Gulim > + dialoginput.bolditalic.chinese-big5=AR PL ShanHeiSun Uni > + dialoginput.bolditalic.chinese-gb18030=AR PL ShanHeiSun Uni > ++dialoginput.bolditalic.assamese=Lohit Assamese > ++dialoginput.bolditalic.devanagari=Lohit Devanagari > + dialoginput.bolditalic.bengali=Lohit Bengali > + dialoginput.bolditalic.gujarati=Lohit Gujarati > + dialoginput.bolditalic.hindi=Lohit Hindi > +@@ -356,21 +396,24 @@ > + > filename.DejaVu_Serif_Oblique=/usr/share/fonts/dejavu/DejaVuSerif-Oblique.ttf > + > filename.DejaVu_Serif_Bold_Oblique=/usr/share/fonts/dejavu/DejaVuSerif-BoldOblique.ttf > + > +-filename.Sazanami_Gothic=/usr/share/fonts/sazanami-fonts-gothic/sazanami-gothic.ttf > +-filename.Sazanami_Mincho=/usr/share/fonts/sazanami-fonts-mincho/sazanami-mincho.ttf > ++filename.Sazanami_Gothic=/usr/share/fonts/sazanami/gothic/sazanami-gothic.ttf > ++filename.Sazanami_Mincho=/usr/share/fonts/sazanami/mincho/sazanami-mincho.ttf > + filename.AR_PL_ShanHeiSun_Uni=/usr/share/fonts/cjkunifonts-uming/uming.ttc > + filename.AR_PL_ZenKai_Uni=/usr/share/fonts/cjkunifonts-ukai/ukai.ttc > +-filename.Baekmuk_Gulim=/usr/share/fonts/baekmuk-ttf-gulim/gulim.ttf > +-filename.Baekmuk_Batang=/usr/share/fonts/baekmuk-ttf-batang/batang.ttf > ++filename.Baekmuk_Gulim=/usr/share/fonts/baekmuk-ttf/gulim.ttf > ++filename.Baekmuk_Batang=/usr/share/fonts/baekmuk-ttf/batang.ttf > ++ > ++filename.Lohit_Assamese=/usr/share/fonts/lohit-assamese/Lohit-Assamese.ttf > ++filename.Lohit_Devanagari=/usr/share/fonts/lohit-devanagari/Lohit-Devanagari.ttf > ++filename.Lohit_Bengali=/usr/share/fonts/lohit-bengali/Lohit-Bengali.ttf > ++filename.Lohit_Gujarati=/usr/share/fonts/lohit-gujarati/Lohit-Gujarati.ttf > ++filename.Lohit_Hindi=/usr/share/fonts/lohit-hindi/Lohit-Hindi.ttf > ++filename.Lohit_Kannda=/usr/share/fonts/lohit-kannada/Lohit-Kannada.ttf > ++filename.Lohit_Malayalam=/usr/share/fonts/lohit-malayalam/Lohit-Malayalam.ttf > ++filename.Lohit_Oriya=/usr/share/fonts/lohit-oriya/Lohit-Oriya.ttf > ++filename.Lohit_Punjabi=/usr/share/fonts/lohit-punjabi/Lohit-Punjabi.ttf > ++filename.Lohit_Tamil=/usr/share/fonts/lohit-tamil/Lohit-Tamil.ttf > ++filename.Lohit_Telugu=/usr/share/fonts/lohit-telugu/Lohit-Telugu.ttf > + > +-filename.Lohit_Bengali=/usr/share/fonts/lohit-bengali/lohit_bn.ttf > +-filename.Lohit_Gujarati=/usr/share/fonts/lohit-gujarati/lohit_gu.ttf > +-filename.Lohit_Hindi=/usr/share/fonts/lohit-hindi/lohit_hi.ttf > +-filename.Lohit_Kannda=/usr/share/fonts/lohit-kannada/lohit_kn.ttf > +-filename.Lohit_Malayalam=/usr/share/fonts/lohit-malayalam/lohit_ml.ttf > +-filename.Lohit_Oriya=/usr/share/fonts/lohit-oriya/lohit_or.ttf > +-filename.Lohit_Punjabi=/usr/share/fonts/lohit-punjabi/lohit_pa.ttf > +-filename.Lohit_Tamil=/usr/share/fonts/lohit-tamil/lohit_ta.ttf > +-filename.Lohit_Telugu=/usr/share/fonts/lohit-telugu/lohit_te.ttf > + filename.LKLUG=/usr/share/fonts/lklug/lklug.ttf > + > + > +--- > openjdk/jdk/src/solaris/classes/sun/awt/fontconfigs/linux.fontconfig.Fedora.12.properties > 2010-11-04 11:06:26.695428114 +0100 > ++++ > openjdk/jdk/src/solaris/classes/sun/awt/fontconfigs/linux.fontconfig.Fedora.12.properties > 2010-11-04 11:19:45.133587953 +0100 > +@@ -35,6 +35,8 @@ > + dialog.plain.korean=Baekmuk Gulim > + dialog.plain.chinese-big5=AR PL ShanHeiSun Uni > + dialog.plain.chinese-gb18030=AR PL ShanHeiSun Uni > ++dialog.plain.assamese=Lohit Assamese > ++dialog.plain.devanagari=Lohit Devanagari > + dialog.plain.bengali=Lohit Bengali > + dialog.plain.gujarati=Lohit Gujarati > + dialog.plain.hindi=Lohit Hindi > +@@ -50,6 +52,8 @@ > + dialog.bold.korean=Baekmuk Gulim > + dialog.bold.chinese-big5=AR PL ShanHeiSun Uni > + dialog.bold.chinese-gb18030=AR PL ShanHeiSun Uni > ++dialog.bold.assamese=Lohit Assamese > ++dialog.bold.devanagari=Lohit Devanagari > + dialog.bold.bengali=Lohit Bengali > + dialog.bold.gujarati=Lohit Gujarati > + dialog.bold.hindi=Lohit Hindi > +@@ -65,6 +69,8 @@ > + dialog.italic.korean=Baekmuk Gulim > + dialog.italic.chinese-big5=AR PL ShanHeiSun Uni > + dialog.italic.chinese-gb18030=AR PL ShanHeiSun Uni > ++dialog.italic.assamese=Lohit Assamese > ++dialog.italic.devanagari=Lohit Devanagari > + dialog.italic.bengali=Lohit Bengali > + dialog.italic.gujarati=Lohit Gujarati > + dialog.italic.hindi=Lohit Hindi > +@@ -80,6 +86,8 @@ > + dialog.bolditalic.korean=Baekmuk Gulim > + dialog.bolditalic.chinese-big5=AR PL ShanHeiSun Uni > + dialog.bolditalic.chinese-gb18030=AR PL ShanHeiSun Uni > ++dialog.bolditalic.assamese=Lohit Assamese > ++dialog.bolditalic.devanagari=Lohit Devanagari > + dialog.bolditalic.bengali=Lohit Bengali > + dialog.bolditalic.gujarati=Lohit Gujarati > + dialog.bolditalic.hindi=Lohit Hindi > +@@ -95,6 +103,8 @@ > + sansserif.plain.korean=Baekmuk Gulim > + sansserif.plain.chinese-big5=AR PL ShanHeiSun Uni > + sansserif.plain.chinese-gb18030=AR PL ShanHeiSun Uni > ++sansserif.plain.assamese=Lohit Assamese > ++sansserif.plain.devanagari=Lohit Devanagari > + sansserif.plain.bengali=Lohit Bengali > + sansserif.plain.gujarati=Lohit Gujarati > + sansserif.plain.hindi=Lohit Hindi > +@@ -110,6 +120,8 @@ > + sansserif.bold.korean=Baekmuk Gulim > + sansserif.bold.chinese-big5=AR PL ShanHeiSun Uni > + sansserif.bold.chinese-gb18030=AR PL ShanHeiSun Uni > ++sansserif.bold.assamese=Lohit Assamese > ++sansserif.bold.devanagari=Lohit Devanagari > + sansserif.bold.bengali=Lohit Bengali > + sansserif.bold.gujarati=Lohit Gujarati > + sansserif.bold.hindi=Lohit Hindi > +@@ -125,6 +137,8 @@ > + sansserif.italic.korean=Baekmuk Gulim > + sansserif.italic.chinese-big5=AR PL ShanHeiSun Uni > + sansserif.italic.chinese-gb18030=AR PL ShanHeiSun Uni > ++sansserif.italic.assamese=Lohit Assamese > ++sansserif.italic.devanagari=Lohit Devanagari > + sansserif.italic.bengali=Lohit Bengali > + sansserif.italic.gujarati=Lohit Gujarati > + sansserif.italic.hindi=Lohit Hindi > +@@ -140,6 +154,8 @@ > + sansserif.bolditalic.korean=Baekmuk Gulim > + sansserif.bolditalic.chinese-big5=AR PL ShanHeiSun Uni > + sansserif.bolditalic.chinese-gb18030=AR PL ShanHeiSun Uni > ++sansserif.bolditalic.assamese=Lohit Assamese > ++sansserif.bolditalic.devanagari=Lohit Devanagari > + sansserif.bolditalic.bengali=Lohit Bengali > + sansserif.bolditalic.gujarati=Lohit Gujarati > + sansserif.bolditalic.hindi=Lohit Hindi > +@@ -155,6 +171,8 @@ > + serif.plain.korean=Baekmuk Batang > + serif.plain.chinese-big5=AR PL ZenKai Uni > + serif.plain.chinese-gb18030=AR PL ZenKai Uni > ++serif.plain.assamese=Lohit Assamese > ++serif.plain.devanagari=Lohit Devanagari > + serif.plain.bengali=Lohit Bengali > + serif.plain.gujarati=Lohit Gujarati > + serif.plain.hindi=Lohit Hindi > +@@ -170,6 +188,8 @@ > + serif.bold.korean=Baekmuk Batang > + serif.bold.chinese-big5=AR PL ZenKai Uni > + serif.bold.chinese-gb18030=AR PL ZenKai Uni > ++serif.bold.assamese=Lohit Assamese > ++serif.bold.devanagari=Lohit Devanagari > + serif.bold.bengali=Lohit Bengali > + serif.bold.gujarati=Lohit Gujarati > + serif.bold.hindi=Lohit Hindi > +@@ -185,6 +205,8 @@ > + serif.italic.korean=Baekmuk Batang > + serif.italic.chinese-big5=AR PL ZenKai Uni > + serif.italic.chinese-gb18030=AR PL ZenKai Uni > ++serif.italic.assamese=Lohit Assamese > ++serif.italic.devanagari=Lohit Devanagari > + serif.italic.bengali=Lohit Bengali > + serif.italic.gujarati=Lohit Gujarati > + serif.italic.hindi=Lohit Hindi > +@@ -200,6 +222,8 @@ > + serif.bolditalic.korean=Baekmuk Batang > + serif.bolditalic.chinese-big5=AR PL ZenKai Uni > + serif.bolditalic.chinese-gb18030=AR PL ZenKai Uni > ++serif.bolditalic.assamese=Lohit Assamese > ++serif.bolditalic.devanagari=Lohit Devanagari > + serif.bolditalic.bengali=Lohit Bengali > + serif.bolditalic.gujarati=Lohit Gujarati > + serif.bolditalic.hindi=Lohit Hindi > +@@ -215,6 +239,8 @@ > + monospaced.plain.korean=Baekmuk Gulim > + monospaced.plain.chinese-big5=AR PL ShanHeiSun Uni > + monospaced.plain.chinese-gb18030=AR PL ShanHeiSun Uni > ++monospaced.plain.assamese=Lohit Assamese > ++monospaced.plain.devanagari=Lohit Devanagari > + monospaced.plain.bengali=Lohit Bengali > + monospaced.plain.gujarati=Lohit Gujarati > + monospaced.plain.hindi=Lohit Hindi > +@@ -230,6 +256,8 @@ > + monospaced.bold.korean=Baekmuk Gulim > + monospaced.bold.chinese-big5=AR PL ShanHeiSun Uni > + monospaced.bold.chinese-gb18030=AR PL ShanHeiSun Uni > ++monospaced.bold.assamese=Lohit Assamese > ++monospaced.bold.devanagari=Lohit Devanagari > + monospaced.bold.bengali=Lohit Bengali > + monospaced.bold.gujarati=Lohit Gujarati > + monospaced.bold.hindi=Lohit Hindi > +@@ -245,6 +273,8 @@ > + monospaced.italic.korean=Baekmuk Gulim > + monospaced.italic.chinese-big5=AR PL ShanHeiSun Uni > + monospaced.italic.chinese-gb18030=AR PL ShanHeiSun Uni > ++monospaced.italic.assamese=Lohit Assamese > ++monospaced.italic.devanagari=Lohit Devanagari > + monospaced.italic.bengali=Lohit Bengali > + monospaced.italic.gujarati=Lohit Gujarati > + monospaced.italic.hindi=Lohit Hindi > +@@ -260,6 +290,8 @@ > + monospaced.bolditalic.korean=Baekmuk Gulim > + monospaced.bolditalic.chinese-big5=AR PL ShanHeiSun Uni > + monospaced.bolditalic.chinese-gb18030=AR PL ShanHeiSun Uni > ++monospaced.bolditalic.assamese=Lohit Assamese > ++monospaced.bolditalic.devanagari=Lohit Devanagari > + monospaced.bolditalic.bengali=Lohit Bengali > + monospaced.bolditalic.gujarati=Lohit Gujarati > + monospaced.bolditalic.hindi=Lohit Hindi > +@@ -275,6 +307,8 @@ > + dialoginput.plain.korean=Baekmuk Gulim > + dialoginput.plain.chinese-big5=AR PL ShanHeiSun Uni > + dialoginput.plain.chinese-gb18030=AR PL ShanHeiSun Uni > ++dialoginput.plain.assamese=Lohit Assamese > ++dialoginput.plain.devanagari=Lohit Devanagari > + dialoginput.plain.bengali=Lohit Bengali > + dialoginput.plain.gujarati=Lohit Gujarati > + dialoginput.plain.hindi=Lohit Hindi > +@@ -290,6 +324,8 @@ > + dialoginput.bold.korean=Baekmuk Gulim > + dialoginput.bold.chinese-big5=AR PL ShanHeiSun Uni > + dialoginput.bold.chinese-gb18030=AR PL ShanHeiSun Uni > ++dialoginput.bold.assamese=Lohit Assamese > ++dialoginput.bold.devanagari=Lohit Devanagari > + dialoginput.bold.bengali=Lohit Bengali > + dialoginput.bold.gujarati=Lohit Gujarati > + dialoginput.bold.hindi=Lohit Hindi > +@@ -305,6 +341,8 @@ > + dialoginput.italic.korean=Baekmuk Gulim > + dialoginput.italic.chinese-big5=AR PL ShanHeiSun Uni > + dialoginput.italic.chinese-gb18030=AR PL ShanHeiSun Uni > ++dialoginput.italic.assamese=Lohit Assamese > ++dialoginput.italic.devanagari=Lohit Devanagari > + dialoginput.italic.bengali=Lohit Bengali > + dialoginput.italic.gujarati=Lohit Gujarati > + dialoginput.italic.hindi=Lohit Hindi > +@@ -320,6 +358,8 @@ > + dialoginput.bolditalic.korean=Baekmuk Gulim > + dialoginput.bolditalic.chinese-big5=AR PL ShanHeiSun Uni > + dialoginput.bolditalic.chinese-gb18030=AR PL ShanHeiSun Uni > ++dialoginput.bolditalic.assamese=Lohit Assamese > ++dialoginput.bolditalic.devanagari=Lohit Devanagari > + dialoginput.bolditalic.bengali=Lohit Bengali > + dialoginput.bolditalic.gujarati=Lohit Gujarati > + dialoginput.bolditalic.hindi=Lohit Hindi > +@@ -356,21 +396,24 @@ > + > filename.DejaVu_Serif_Oblique=/usr/share/fonts/dejavu/DejaVuSerif-Oblique.ttf > + > filename.DejaVu_Serif_Bold_Oblique=/usr/share/fonts/dejavu/DejaVuSerif-BoldOblique.ttf > + > +-filename.Sazanami_Gothic=/usr/share/fonts/sazanami-fonts-gothic/sazanami-gothic.ttf > +-filename.Sazanami_Mincho=/usr/share/fonts/sazanami-fonts-mincho/sazanami-mincho.ttf > ++filename.Sazanami_Gothic=/usr/share/fonts/sazanami/gothic/sazanami-gothic.ttf > ++filename.Sazanami_Mincho=/usr/share/fonts/sazanami/mincho/sazanami-mincho.ttf > + filename.AR_PL_ShanHeiSun_Uni=/usr/share/fonts/cjkunifonts-uming/uming.ttc > + filename.AR_PL_ZenKai_Uni=/usr/share/fonts/cjkunifonts-ukai/ukai.ttc > +-filename.Baekmuk_Gulim=/usr/share/fonts/baekmuk-ttf-gulim/gulim.ttf > +-filename.Baekmuk_Batang=/usr/share/fonts/baekmuk-ttf-batang/batang.ttf > ++filename.Baekmuk_Gulim=/usr/share/fonts/baekmuk-ttf/gulim.ttf > ++filename.Baekmuk_Batang=/usr/share/fonts/baekmuk-ttf/batang.ttf > ++ > ++filename.Lohit_Assamese=/usr/share/fonts/lohit-assamese/Lohit-Assamese.ttf > ++filename.Lohit_Devanagari=/usr/share/fonts/lohit-devanagari/Lohit-Devanagari.ttf > ++filename.Lohit_Bengali=/usr/share/fonts/lohit-bengali/Lohit-Bengali.ttf > ++filename.Lohit_Gujarati=/usr/share/fonts/lohit-gujarati/Lohit-Gujarati.ttf > ++filename.Lohit_Hindi=/usr/share/fonts/lohit-hindi/Lohit-Hindi.ttf > ++filename.Lohit_Kannda=/usr/share/fonts/lohit-kannada/Lohit-Kannada.ttf > ++filename.Lohit_Malayalam=/usr/share/fonts/lohit-malayalam/Lohit-Malayalam.ttf > ++filename.Lohit_Oriya=/usr/share/fonts/lohit-oriya/Lohit-Oriya.ttf > ++filename.Lohit_Punjabi=/usr/share/fonts/lohit-punjabi/Lohit-Punjabi.ttf > ++filename.Lohit_Tamil=/usr/share/fonts/lohit-tamil/Lohit-Tamil.ttf > ++filename.Lohit_Telugu=/usr/share/fonts/lohit-telugu/Lohit-Telugu.ttf > + > +-filename.Lohit_Bengali=/usr/share/fonts/lohit-bengali/lohit_bn.ttf > +-filename.Lohit_Gujarati=/usr/share/fonts/lohit-gujarati/lohit_gu.ttf > +-filename.Lohit_Hindi=/usr/share/fonts/lohit-hindi/lohit_hi.ttf > +-filename.Lohit_Kannda=/usr/share/fonts/lohit-kannada/lohit_kn.ttf > +-filename.Lohit_Malayalam=/usr/share/fonts/lohit-malayalam/lohit_ml.ttf > +-filename.Lohit_Oriya=/usr/share/fonts/lohit-oriya/lohit_or.ttf > +-filename.Lohit_Punjabi=/usr/share/fonts/lohit-punjabi/lohit_pa.ttf > +-filename.Lohit_Tamil=/usr/share/fonts/lohit-tamil/lohit_ta.ttf > +-filename.Lohit_Telugu=/usr/share/fonts/lohit-telugu/lohit_te.ttf > + filename.LKLUG=/usr/share/fonts/lklug/lklug.ttf > + > +--- > openjdk/jdk/src/solaris/classes/sun/awt/fontconfigs/linux.fontconfig.Fedora.properties > 2010-11-04 11:06:26.695428114 +0100 > ++++ > openjdk/jdk/src/solaris/classes/sun/awt/fontconfigs/linux.fontconfig.Fedora.properties > 2010-11-04 11:06:25.602455633 +0100 > +@@ -35,6 +35,8 @@ > + dialog.plain.korean=Baekmuk Gulim > + dialog.plain.chinese-big5=AR PL ShanHeiSun Uni > + dialog.plain.chinese-gb18030=AR PL ShanHeiSun Uni > ++dialog.plain.assamese=Lohit Assamese > ++dialog.plain.devanagari=Lohit Devanagari > + dialog.plain.bengali=Lohit Bengali > + dialog.plain.gujarati=Lohit Gujarati > + dialog.plain.hindi=Lohit Hindi > +@@ -50,6 +52,8 @@ > + dialog.bold.korean=Baekmuk Gulim > + dialog.bold.chinese-big5=AR PL ShanHeiSun Uni > + dialog.bold.chinese-gb18030=AR PL ShanHeiSun Uni > ++dialog.bold.assamese=Lohit Assamese > ++dialog.bold.devanagari=Lohit Devanagari > + dialog.bold.bengali=Lohit Bengali > + dialog.bold.gujarati=Lohit Gujarati > + dialog.bold.hindi=Lohit Hindi > +@@ -65,6 +69,8 @@ > + dialog.italic.korean=Baekmuk Gulim > + dialog.italic.chinese-big5=AR PL ShanHeiSun Uni > + dialog.italic.chinese-gb18030=AR PL ShanHeiSun Uni > ++dialog.italic.assamese=Lohit Assamese > ++dialog.italic.devanagari=Lohit Devanagari > + dialog.italic.bengali=Lohit Bengali > + dialog.italic.gujarati=Lohit Gujarati > + dialog.italic.hindi=Lohit Hindi > +@@ -80,6 +86,8 @@ > + dialog.bolditalic.korean=Baekmuk Gulim > + dialog.bolditalic.chinese-big5=AR PL ShanHeiSun Uni > + dialog.bolditalic.chinese-gb18030=AR PL ShanHeiSun Uni > ++dialog.bolditalic.assamese=Lohit Assamese > ++dialog.bolditalic.devanagari=Lohit Devanagari > + dialog.bolditalic.bengali=Lohit Bengali > + dialog.bolditalic.gujarati=Lohit Gujarati > + dialog.bolditalic.hindi=Lohit Hindi > +@@ -95,6 +103,8 @@ > + sansserif.plain.korean=Baekmuk Gulim > + sansserif.plain.chinese-big5=AR PL ShanHeiSun Uni > + sansserif.plain.chinese-gb18030=AR PL ShanHeiSun Uni > ++sansserif.plain.assamese=Lohit Assamese > ++sansserif.plain.devanagari=Lohit Devanagari > + sansserif.plain.bengali=Lohit Bengali > + sansserif.plain.gujarati=Lohit Gujarati > + sansserif.plain.hindi=Lohit Hindi > +@@ -110,6 +120,8 @@ > + sansserif.bold.korean=Baekmuk Gulim > + sansserif.bold.chinese-big5=AR PL ShanHeiSun Uni > + sansserif.bold.chinese-gb18030=AR PL ShanHeiSun Uni > ++sansserif.bold.assamese=Lohit Assamese > ++sansserif.bold.devanagari=Lohit Devanagari > + sansserif.bold.bengali=Lohit Bengali > + sansserif.bold.gujarati=Lohit Gujarati > + sansserif.bold.hindi=Lohit Hindi > +@@ -125,6 +137,8 @@ > + sansserif.italic.korean=Baekmuk Gulim > + sansserif.italic.chinese-big5=AR PL ShanHeiSun Uni > + sansserif.italic.chinese-gb18030=AR PL ShanHeiSun Uni > ++sansserif.italic.assamese=Lohit Assamese > ++sansserif.italic.devanagari=Lohit Devanagari > + sansserif.italic.bengali=Lohit Bengali > + sansserif.italic.gujarati=Lohit Gujarati > + sansserif.italic.hindi=Lohit Hindi > +@@ -140,6 +154,8 @@ > + sansserif.bolditalic.korean=Baekmuk Gulim > + sansserif.bolditalic.chinese-big5=AR PL ShanHeiSun Uni > + sansserif.bolditalic.chinese-gb18030=AR PL ShanHeiSun Uni > ++sansserif.bolditalic.assamese=Lohit Assamese > ++sansserif.bolditalic.devanagari=Lohit Devanagari > + sansserif.bolditalic.bengali=Lohit Bengali > + sansserif.bolditalic.gujarati=Lohit Gujarati > + sansserif.bolditalic.hindi=Lohit Hindi > +@@ -155,6 +171,8 @@ > + serif.plain.korean=Baekmuk Batang > + serif.plain.chinese-big5=AR PL ZenKai Uni > + serif.plain.chinese-gb18030=AR PL ZenKai Uni > ++serif.plain.assamese=Lohit Assamese > ++serif.plain.devanagari=Lohit Devanagari > + serif.plain.bengali=Lohit Bengali > + serif.plain.gujarati=Lohit Gujarati > + serif.plain.hindi=Lohit Hindi > +@@ -170,6 +188,8 @@ > + serif.bold.korean=Baekmuk Batang > + serif.bold.chinese-big5=AR PL ZenKai Uni > + serif.bold.chinese-gb18030=AR PL ZenKai Uni > ++serif.bold.assamese=Lohit Assamese > ++serif.bold.devanagari=Lohit Devanagari > + serif.bold.bengali=Lohit Bengali > + serif.bold.gujarati=Lohit Gujarati > + serif.bold.hindi=Lohit Hindi > +@@ -185,6 +205,8 @@ > + serif.italic.korean=Baekmuk Batang > + serif.italic.chinese-big5=AR PL ZenKai Uni > + serif.italic.chinese-gb18030=AR PL ZenKai Uni > ++serif.italic.assamese=Lohit Assamese > ++serif.italic.devanagari=Lohit Devanagari > + serif.italic.bengali=Lohit Bengali > + serif.italic.gujarati=Lohit Gujarati > + serif.italic.hindi=Lohit Hindi > +@@ -200,6 +222,8 @@ > + serif.bolditalic.korean=Baekmuk Batang > + serif.bolditalic.chinese-big5=AR PL ZenKai Uni > + serif.bolditalic.chinese-gb18030=AR PL ZenKai Uni > ++serif.bolditalic.assamese=Lohit Assamese > ++serif.bolditalic.devanagari=Lohit Devanagari > + serif.bolditalic.bengali=Lohit Bengali > + serif.bolditalic.gujarati=Lohit Gujarati > + serif.bolditalic.hindi=Lohit Hindi > +@@ -215,6 +239,8 @@ > + monospaced.plain.korean=Baekmuk Gulim > + monospaced.plain.chinese-big5=AR PL ShanHeiSun Uni > + monospaced.plain.chinese-gb18030=AR PL ShanHeiSun Uni > ++monospaced.plain.assamese=Lohit Assamese > ++monospaced.plain.devanagari=Lohit Devanagari > + monospaced.plain.bengali=Lohit Bengali > + monospaced.plain.gujarati=Lohit Gujarati > + monospaced.plain.hindi=Lohit Hindi > +@@ -230,6 +256,8 @@ > + monospaced.bold.korean=Baekmuk Gulim > + monospaced.bold.chinese-big5=AR PL ShanHeiSun Uni > + monospaced.bold.chinese-gb18030=AR PL ShanHeiSun Uni > ++monospaced.bold.assamese=Lohit Assamese > ++monospaced.bold.devanagari=Lohit Devanagari > + monospaced.bold.bengali=Lohit Bengali > + monospaced.bold.gujarati=Lohit Gujarati > + monospaced.bold.hindi=Lohit Hindi > +@@ -245,6 +273,8 @@ > + monospaced.italic.korean=Baekmuk Gulim > + monospaced.italic.chinese-big5=AR PL ShanHeiSun Uni > + monospaced.italic.chinese-gb18030=AR PL ShanHeiSun Uni > ++monospaced.italic.assamese=Lohit Assamese > ++monospaced.italic.devanagari=Lohit Devanagari > + monospaced.italic.bengali=Lohit Bengali > + monospaced.italic.gujarati=Lohit Gujarati > + monospaced.italic.hindi=Lohit Hindi > +@@ -260,6 +290,8 @@ > + monospaced.bolditalic.korean=Baekmuk Gulim > + monospaced.bolditalic.chinese-big5=AR PL ShanHeiSun Uni > + monospaced.bolditalic.chinese-gb18030=AR PL ShanHeiSun Uni > ++monospaced.bolditalic.assamese=Lohit Assamese > ++monospaced.bolditalic.devanagari=Lohit Devanagari > + monospaced.bolditalic.bengali=Lohit Bengali > + monospaced.bolditalic.gujarati=Lohit Gujarati > + monospaced.bolditalic.hindi=Lohit Hindi > +@@ -275,6 +307,8 @@ > + dialoginput.plain.korean=Baekmuk Gulim > + dialoginput.plain.chinese-big5=AR PL ShanHeiSun Uni > + dialoginput.plain.chinese-gb18030=AR PL ShanHeiSun Uni > ++dialoginput.plain.assamese=Lohit Assamese > ++dialoginput.plain.devanagari=Lohit Devanagari > + dialoginput.plain.bengali=Lohit Bengali > + dialoginput.plain.gujarati=Lohit Gujarati > + dialoginput.plain.hindi=Lohit Hindi > +@@ -290,6 +324,8 @@ > + dialoginput.bold.korean=Baekmuk Gulim > + dialoginput.bold.chinese-big5=AR PL ShanHeiSun Uni > + dialoginput.bold.chinese-gb18030=AR PL ShanHeiSun Uni > ++dialoginput.bold.assamese=Lohit Assamese > ++dialoginput.bold.devanagari=Lohit Devanagari > + dialoginput.bold.bengali=Lohit Bengali > + dialoginput.bold.gujarati=Lohit Gujarati > + dialoginput.bold.hindi=Lohit Hindi > +@@ -305,6 +341,8 @@ > + dialoginput.italic.korean=Baekmuk Gulim > + dialoginput.italic.chinese-big5=AR PL ShanHeiSun Uni > + dialoginput.italic.chinese-gb18030=AR PL ShanHeiSun Uni > ++dialoginput.italic.assamese=Lohit Assamese > ++dialoginput.italic.devanagari=Lohit Devanagari > + dialoginput.italic.bengali=Lohit Bengali > + dialoginput.italic.gujarati=Lohit Gujarati > + dialoginput.italic.hindi=Lohit Hindi > +@@ -320,6 +358,8 @@ > + dialoginput.bolditalic.korean=Baekmuk Gulim > + dialoginput.bolditalic.chinese-big5=AR PL ShanHeiSun Uni > + dialoginput.bolditalic.chinese-gb18030=AR PL ShanHeiSun Uni > ++dialoginput.bolditalic.assamese=Lohit Assamese > ++dialoginput.bolditalic.devanagari=Lohit Devanagari > + dialoginput.bolditalic.bengali=Lohit Bengali > + dialoginput.bolditalic.gujarati=Lohit Gujarati > + dialoginput.bolditalic.hindi=Lohit Hindi > +@@ -356,21 +396,24 @@ > + > filename.DejaVu_Serif_Oblique=/usr/share/fonts/dejavu/DejaVuSerif-Oblique.ttf > + > filename.DejaVu_Serif_Bold_Oblique=/usr/share/fonts/dejavu/DejaVuSerif-BoldOblique.ttf > + > +-filename.Sazanami_Gothic=/usr/share/fonts/sazanami-fonts-gothic/sazanami-gothic.ttf > +-filename.Sazanami_Mincho=/usr/share/fonts/sazanami-fonts-mincho/sazanami-mincho.ttf > +-filename.AR_PL_ShanHeiSun_Uni=/usr/share/fonts/cjkunifonts-uming/uming.ttc > +-filename.AR_PL_ZenKai_Uni=/usr/share/fonts/cjkunifonts-ukai/ukai.ttc > +-filename.Baekmuk_Gulim=/usr/share/fonts/baekmuk-ttf-gulim/gulim.ttf > +-filename.Baekmuk_Batang=/usr/share/fonts/baekmuk-ttf-batang/batang.ttf > ++filename.Sazanami_Gothic=/usr/share/fonts/sazanami/gothic/sazanami-gothic.ttf > ++filename.Sazanami_Mincho=/usr/share/fonts/sazanami/mincho/sazanami-mincho.ttf > ++filename.AR_PL_ShanHeiSun_Uni=/usr/share/fonts/cjkuni-uming/uming.ttc > ++filename.AR_PL_ZenKai_Uni=/usr/share/fonts/cjkuni-ukai/ukai.ttc > ++filename.Baekmuk_Gulim=/usr/share/fonts/baekmuk-ttf/gulim.ttf > ++filename.Baekmuk_Batang=/usr/share/fonts/baekmuk-ttf/batang.ttf > ++ > ++filename.Lohit_Assamese=/usr/share/fonts/lohit-assamese/Lohit-Assamese.ttf > ++filename.Lohit_Devanagari=/usr/share/fonts/lohit-devanagari/Lohit-Devanagari.ttf > ++filename.Lohit_Bengali=/usr/share/fonts/lohit-bengali/Lohit-Bengali.ttf > ++filename.Lohit_Gujarati=/usr/share/fonts/lohit-gujarati/Lohit-Gujarati.ttf > ++filename.Lohit_Hindi=/usr/share/fonts/lohit-devanagari/Lohit-Devanagari.ttf > ++filename.Lohit_Kannda=/usr/share/fonts/lohit-kannada/Lohit-Kannada.ttf > ++filename.Lohit_Malayalam=/usr/share/fonts/lohit-malayalam/Lohit-Malayalam.ttf > ++filename.Lohit_Oriya=/usr/share/fonts/lohit-oriya/Lohit-Oriya.ttf > ++filename.Lohit_Punjabi=/usr/share/fonts/lohit-punjabi/Lohit-Punjabi.ttf > ++filename.Lohit_Tamil=/usr/share/fonts/lohit-tamil/Lohit-Tamil.ttf > ++filename.Lohit_Telugu=/usr/share/fonts/lohit-telugu/Lohit-Telugu.ttf > + > +-filename.Lohit_Bengali=/usr/share/fonts/lohit-bengali/lohit_bn.ttf > +-filename.Lohit_Gujarati=/usr/share/fonts/lohit-gujarati/lohit_gu.ttf > +-filename.Lohit_Hindi=/usr/share/fonts/lohit-hindi/lohit_hi.ttf > +-filename.Lohit_Kannda=/usr/share/fonts/lohit-kannada/lohit_kn.ttf > +-filename.Lohit_Malayalam=/usr/share/fonts/lohit-malayalam/lohit_ml.ttf > +-filename.Lohit_Oriya=/usr/share/fonts/lohit-oriya/lohit_or.ttf > +-filename.Lohit_Punjabi=/usr/share/fonts/lohit-punjabi/lohit_pa.ttf > +-filename.Lohit_Tamil=/usr/share/fonts/lohit-tamil/lohit_ta.ttf > +-filename.Lohit_Telugu=/usr/share/fonts/lohit-telugu/lohit_te.ttf > + filename.LKLUG=/usr/share/fonts/lklug/lklug.ttf > + -- Andrew :) Free Java Software Engineer Red Hat, Inc. (http://www.redhat.com) Support Free Java! Contribute to GNU Classpath and the OpenJDK http://www.gnu.org/software/classpath http://openjdk.java.net PGP Key: 94EFD9D8 (http://subkeys.pgp.net) Fingerprint = F8EF F1EA 401E 2E60 15FA 7927 142C 2591 94EF D9D8 From dbhole at redhat.com Tue Nov 9 10:53:28 2010 From: dbhole at redhat.com (Deepak Bhole) Date: Tue, 9 Nov 2010 13:53:28 -0500 Subject: [icedtea-web] RFC: Integrate desktop shortcut creation with configuration In-Reply-To: <4CD4151E.8080802@redhat.com> References: <4CD4151E.8080802@redhat.com> Message-ID: <20101109185327.GB22355@redhat.com> * Omair Majid [2010-11-05 12:13]: > Hi, > > The attached patch allows using the new configuration to select > whether the user should be prompted for desktop shortcut/launcher > creation. > Looks fine to me. Okay for HEAD. Deepak > ChangeLog: > 2010-11-05 Omair Majid > > * netx/net/sourceforge/jnlp/ShortcutDesc.java: Change prefixes from > SHORTCUT_ to CREATE_. > * netx/net/sourceforge/jnlp/runtime/ApplicationInstance.java > (addMenuAndDesktopEntries): Call shouldCreateShortcut to find out > if shortcut should be created. Remove call to checkAccess which > does nothing as the entire stack contains trusted classes. > (shouldCreateShortcut): New method. Use the configuration to find > out if a shorcut should be created, and possibly prompt the user. > * netx/net/sourceforge/jnlp/runtime/DeploymentConfiguration.java: > Add KEY_CREATE_DESKTOP_SHORTCUT. > (loadDefaultProperties): Use KEY_CREATE_DESKTOP_SHORTCUT. > > Any thoughts or comments? > > Thanks, > Omair > diff -r 8e66d9386273 netx/net/sourceforge/jnlp/ShortcutDesc.java > --- a/netx/net/sourceforge/jnlp/ShortcutDesc.java Thu Nov 04 16:44:27 2010 -0700 > +++ b/netx/net/sourceforge/jnlp/ShortcutDesc.java Fri Nov 05 10:17:49 2010 -0400 > @@ -19,16 +19,15 @@ > public final class ShortcutDesc { > > /** Never create a shortcut */ > - public static final String SHORTCUT_NEVER = "NEVER"; > + public static final String CREATE_NEVER = "NEVER"; > /** Always create a shortcut */ > - public static final String SHORTCUT_ALWAYS = "ALWAYS"; > + public static final String CREATE_ALWAYS = "ALWAYS"; > /** Always ask user whether to create a shortcut */ > - public static final String SHORTCUT_ASK_USER = "ASK_USER"; > + public static final String CREATE_ASK_USER = "ASK_USER"; > /** Ask user whether to create a shortcut but only if jnlp file asks for it */ > - public static final String SHORTCUT_ASK_USER_IF_HINTED = "ASK_IF_HINTED"; > + public static final String CREATE_ASK_USER_IF_HINTED = "ASK_IF_HINTED"; > /** Create a desktop shortcut without prompting if the jnlp asks for it */ > - public static final String SHORTCUT_ALWAYS_IF_HINTED = "ALWAYS_IF_HINTED"; > - public static final String SHORTCUT_DEFAULT = SHORTCUT_ASK_USER_IF_HINTED; > + public static final String CREATE_ALWAYS_IF_HINTED = "ALWAYS_IF_HINTED"; > > /** the application wants to be placed on the desktop */ > private boolean onDesktop = false; > diff -r 8e66d9386273 netx/net/sourceforge/jnlp/runtime/ApplicationInstance.java > --- a/netx/net/sourceforge/jnlp/runtime/ApplicationInstance.java Thu Nov 04 16:44:27 2010 -0700 > +++ b/netx/net/sourceforge/jnlp/runtime/ApplicationInstance.java Fri Nov 05 10:17:49 2010 -0400 > @@ -35,6 +35,7 @@ > import net.sourceforge.jnlp.ShortcutDesc; > import net.sourceforge.jnlp.event.ApplicationEvent; > import net.sourceforge.jnlp.event.ApplicationListener; > +import net.sourceforge.jnlp.security.SecurityWarning; > import net.sourceforge.jnlp.security.SecurityWarning.AccessType; > import net.sourceforge.jnlp.services.ServiceUtil; > import net.sourceforge.jnlp.util.WeakList; > @@ -148,10 +149,8 @@ > XDesktopEntry entry = new XDesktopEntry(file); > ShortcutDesc sd = file.getInformation().getShortcut(); > > - if (sd != null && sd.onDesktop()) { > - if (ServiceUtil.checkAccess(this, AccessType.CREATE_DESTKOP_SHORTCUT)) { > - entry.createDesktopShortcut(); > - } > + if (shouldCreateShortcut(sd)) { > + entry.createDesktopShortcut(); > } > > if (sd != null && sd.getMenu() != null) { > @@ -167,6 +166,45 @@ > } > > /** > + * Indicates whether a desktop launcher/shortcut should be created for this > + * application instance > + * > + * @param sd the ShortcutDesc element from the JNLP file > + * @return true if a desktop shortcut should be created > + */ > + private boolean shouldCreateShortcut(ShortcutDesc sd) { > + String currentSetting = JNLPRuntime.getConfiguration() > + .getProperty(DeploymentConfiguration.KEY_CREATE_DESKTOP_SHORTCUT); > + boolean createShortcut = false; > + > + /* > + * check configuration and possibly prompt user to find out if a > + * shortcut should be created or not > + */ > + if (currentSetting.equals(ShortcutDesc.CREATE_NEVER)) { > + createShortcut = false; > + } else if (currentSetting.equals(ShortcutDesc.CREATE_ALWAYS)) { > + createShortcut = true; > + } else if (currentSetting.equals(ShortcutDesc.CREATE_ASK_USER)) { > + if (SecurityWarning.showAccessWarningDialog(AccessType.CREATE_DESTKOP_SHORTCUT, file)) { > + createShortcut = true; > + } > + } else if (currentSetting.equals(ShortcutDesc.CREATE_ASK_USER_IF_HINTED)) { > + if (sd != null && sd.onDesktop()) { > + if (SecurityWarning.showAccessWarningDialog(AccessType.CREATE_DESTKOP_SHORTCUT, file)) { > + createShortcut = true; > + } > + } > + } else if (currentSetting.equals(ShortcutDesc.CREATE_ALWAYS_IF_HINTED)) { > + if (sd != null && sd.onDesktop()) { > + createShortcut = true; > + } > + } > + > + return createShortcut; > + } > + > + /** > * Releases the application's resources before it is collected. > * Only collectable if classloader and thread group are > * also collectable so basically is almost never called (an > diff -r 8e66d9386273 netx/net/sourceforge/jnlp/runtime/DeploymentConfiguration.java > --- a/netx/net/sourceforge/jnlp/runtime/DeploymentConfiguration.java Thu Nov 04 16:44:27 2010 -0700 > +++ b/netx/net/sourceforge/jnlp/runtime/DeploymentConfiguration.java Fri Nov 05 10:17:49 2010 -0400 > @@ -142,6 +142,8 @@ > */ > public static final String KEY_USER_NETX_RUNNING_FILE = "deployment.user.runningfile"; > > + public static final String KEY_CREATE_DESKTOP_SHORTCUT = "deployment.javaws.shortcut"; > + > public enum ConfigType { > System, User > } > @@ -363,7 +365,7 @@ > /* JNLP association */ > { "deployment.javaws.associations", String.valueOf(JNLP_ASSOCIATION_ASK_USER) }, > /* desktop integration */ > - { "deployment.javaws.shortcut", ShortcutDesc.SHORTCUT_ASK_USER_IF_HINTED}, > + { KEY_CREATE_DESKTOP_SHORTCUT, ShortcutDesc.CREATE_ASK_USER_IF_HINTED}, > /* jre selection */ > { "deployment.javaws.installURL", null }, > /* jre management */ From bugzilla-daemon at icedtea.classpath.org Tue Nov 9 14:37:16 2010 From: bugzilla-daemon at icedtea.classpath.org (bugzilla-daemon at icedtea.classpath.org) Date: Tue, 09 Nov 2010 22:37:16 +0000 Subject: [Bug 589] icedtea6/1.8.2-3 on Maemo5 PR1.3: TV-Browser app crashes Message-ID: http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=589 ------- Comment #1 from gnu_andrew at member.fsf.org 2010-11-09 22:37 ------- How are you configuring IcedTea6? Why are you using such an old version? 1.9.1 is the latest release. -- Configure bugmail: http://icedtea.classpath.org/bugzilla/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are the assignee for the bug, or are watching the assignee. From bugzilla-daemon at icedtea.classpath.org Tue Nov 9 14:52:29 2010 From: bugzilla-daemon at icedtea.classpath.org (bugzilla-daemon at icedtea.classpath.org) Date: Tue, 09 Nov 2010 22:52:29 +0000 Subject: [Bug 545] eclipse 3.5 - 4.0 crash on startup when using icedtea with cacao Message-ID: http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=545 stefan at complang.tuwien.ac.at changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |stefan at complang.tuwien.ac.at ------- Comment #3 from stefan at complang.tuwien.ac.at 2010-11-09 22:52 ------- I suspect that this is an instance of CACAO PR82 - . It?s a known verifier bug because the author of the verifier had a wrong understanding of INVOKEINTERFACE. There is a switch in CACAO for disabling the verifier. I will try to find out if it?s also accessible to the OpenJDK build. Using -noverify, we could confirm my suspicion. -- Configure bugmail: http://icedtea.classpath.org/bugzilla/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are the assignee for the bug, or are watching the assignee. From bugzilla-daemon at icedtea.classpath.org Wed Nov 10 01:41:09 2010 From: bugzilla-daemon at icedtea.classpath.org (bugzilla-daemon at icedtea.classpath.org) Date: Wed, 10 Nov 2010 09:41:09 +0000 Subject: [Bug 589] icedtea6/1.8.2-3 on Maemo5 PR1.3: TV-Browser app crashes Message-ID: http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=589 ------- Comment #2 from klausdguenther at gmail.com 2010-11-10 09:41 ------- The most recent release in the Maemo extras repository is 1.8.2-2 and has appeared there yesterday. I had successfully used the preceding release for several months (except for occasional crashes). The present releases in Maemo extras, extras-testing, extras-devel seem to be more or less unstable/unusable. Where can I get a binary version of release 1.9.1 for N900/Maemo 5? -- Configure bugmail: http://icedtea.classpath.org/bugzilla/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are the assignee for the bug, or are watching the assignee. From jvanek at redhat.com Wed Nov 10 02:36:17 2010 From: jvanek at redhat.com (Jiri Vanek) Date: Wed, 10 Nov 2010 11:36:17 +0100 Subject: request commit for asians fonts config patches for fedoras In-Reply-To: <20101109170720.GH7776@rivendell.middle-earth.co.uk> References: <1289295987.2775.85.camel@springer.wildebeest.org> <20101109140517.GD7776@rivendell.middle-earth.co.uk> <1289311774.2775.358.camel@springer.wildebeest.org> <4CD9678E.8030103@redhat.com> <20101109154457.GE7776@rivendell.middle-earth.co.uk> <4CD973DE.9010604@redhat.com> <20101109170720.GH7776@rivendell.middle-earth.co.uk> Message-ID: <4CDA75A1.9030506@redhat.com> # HG changeset patch # User Jiri Vanek # Date 1289385214 -3600 # Node ID f74b1d491ccc0aaba37abb789b11f43736c502fe # Parent 72de51f0a744bc38ed2f56a1ffb848b4aeaf0875 Updated font's configurations for Fedora 9-14 diff -r 72de51f0a744 -r f74b1d491ccc ChangeLog --- a/ChangeLog Tue Nov 09 14:53:31 2010 +0000 +++ b/ChangeLog Wed Nov 10 11:33:34 2010 +0100 @@ -1,3 +1,14 @@ +2010-11-09 Jiri Vanek + + * Makefile.am: + * patches/f14-fonts.patch + Updated font configurations for Fedora 9-14 + added cloning of fontconfig.Fedora to Fedora.12,11,10,9 + * patches/f14-fonts.patch + Add additional fontconfig files to Makefile. + Updated font configurations for Fedora 9-14 + + 2010-11-09 Andrew John Hughes * Makefile.am: diff -r 72de51f0a744 -r f74b1d491ccc Makefile.am --- a/Makefile.am Tue Nov 09 14:53:31 2010 +0000 +++ b/Makefile.am Wed Nov 10 11:33:34 2010 +0100 @@ -40,6 +40,8 @@ SERVER_DIR = hotspot/import/jre/lib/$(INSTALL_ARCH_DIR)/server BUILD_JRE_ARCH_DIR = $(BUILD_OUTPUT_DIR)/j2sdk-image/jre/lib/$(INSTALL_ARCH_DIR) BUILD_DEBUG_JRE_ARCH_DIR = $(DEBUG_BUILD_OUTPUT_DIR)/j2sdk-image/jre/lib/$(INSTALL_ARCH_DIR) +FONTCONFIG_PATH = openjdk/jdk/src/solaris/classes/sun/awt/fontconfigs + # Source directories @@ -295,7 +297,8 @@ patches/6703377-freetypescaler.patch \ patches/icedtea-jtreg-international-fonts.patch \ patches/openjdk/6967436-6976265-6967434-pisces.patch \ - patches/openjdk/6997495-test_correction_6857159.patch + patches/openjdk/6997495-test_correction_6857159.patch \ + patches/f14-fonts.patch if WITH_ALT_HSBUILD ICEDTEA_PATCHES += \ @@ -950,7 +953,16 @@ fi rm -f stamps/generated.stamp -stamps/patch-fsg.stamp: stamps/generated.stamp +stamps/fonts.stamp: stamps/generated.stamp + cp $(FONTCONFIG_PATH)/linux.fontconfig.Fedora.properties $(FONTCONFIG_PATH)/linux.fontconfig.Fedora.9.properties + cp $(FONTCONFIG_PATH)/linux.fontconfig.Fedora.properties $(FONTCONFIG_PATH)/linux.fontconfig.Fedora.10.properties + cp $(FONTCONFIG_PATH)/linux.fontconfig.Fedora.properties $(FONTCONFIG_PATH)/linux.fontconfig.Fedora.11.properties + cp $(FONTCONFIG_PATH)/linux.fontconfig.Fedora.properties $(FONTCONFIG_PATH)/linux.fontconfig.Fedora.12.properties + mkdir -p stamps + touch stamps/fonts.stamp + + +stamps/patch-fsg.stamp: stamps/fonts.stamp mkdir -p stamps ; \ rm -f stamps/patch-fsg.stamp.tmp ; \ touch stamps/patch-fsg.stamp.tmp ; \ diff -r 72de51f0a744 -r f74b1d491ccc patches/f14-fonts.patch --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/patches/f14-fonts.patch Wed Nov 10 11:33:34 2010 +0100 @@ -0,0 +1,677 @@ +--- openjdk/jdk/make/sun/awt/Makefile 2010-11-04 09:52:49.583434000 +0100 ++++ openjdk/jdk/make/sun/awt/Makefile 2010-11-04 16:50:14.091688769 +0100 +@@ -387,6 +387,10 @@ + fontconfig.SuSE.properties \ + fontconfig.Ubuntu.properties \ + fontconfig.Fedora.properties \ ++ fontconfig.Fedora.9.properties \ ++ fontconfig.Fedora.10.properties \ ++ fontconfig.Fedora.11.properties \ ++ fontconfig.Fedora.12.properties \ + fontconfig.RedHat.6.0.properties \ + fontconfig.Gentoo.properties + else + +--- openjdk/jdk/src/solaris/classes/sun/awt/fontconfigs/linux.fontconfig.Fedora.11.properties 2010-11-04 11:06:26.695428114 +0100 ++++ openjdk/jdk/src/solaris/classes/sun/awt/fontconfigs/linux.fontconfig.Fedora.11.properties 2010-11-04 11:19:45.133587953 +0100 +@@ -35,6 +35,8 @@ + dialog.plain.korean=Baekmuk Gulim + dialog.plain.chinese-big5=AR PL ShanHeiSun Uni + dialog.plain.chinese-gb18030=AR PL ShanHeiSun Uni ++dialog.plain.assamese=Lohit Assamese ++dialog.plain.devanagari=Lohit Devanagari + dialog.plain.bengali=Lohit Bengali + dialog.plain.gujarati=Lohit Gujarati + dialog.plain.hindi=Lohit Hindi +@@ -50,6 +52,8 @@ + dialog.bold.korean=Baekmuk Gulim + dialog.bold.chinese-big5=AR PL ShanHeiSun Uni + dialog.bold.chinese-gb18030=AR PL ShanHeiSun Uni ++dialog.bold.assamese=Lohit Assamese ++dialog.bold.devanagari=Lohit Devanagari + dialog.bold.bengali=Lohit Bengali + dialog.bold.gujarati=Lohit Gujarati + dialog.bold.hindi=Lohit Hindi +@@ -65,6 +69,8 @@ + dialog.italic.korean=Baekmuk Gulim + dialog.italic.chinese-big5=AR PL ShanHeiSun Uni + dialog.italic.chinese-gb18030=AR PL ShanHeiSun Uni ++dialog.italic.assamese=Lohit Assamese ++dialog.italic.devanagari=Lohit Devanagari + dialog.italic.bengali=Lohit Bengali + dialog.italic.gujarati=Lohit Gujarati + dialog.italic.hindi=Lohit Hindi +@@ -80,6 +86,8 @@ + dialog.bolditalic.korean=Baekmuk Gulim + dialog.bolditalic.chinese-big5=AR PL ShanHeiSun Uni + dialog.bolditalic.chinese-gb18030=AR PL ShanHeiSun Uni ++dialog.bolditalic.assamese=Lohit Assamese ++dialog.bolditalic.devanagari=Lohit Devanagari + dialog.bolditalic.bengali=Lohit Bengali + dialog.bolditalic.gujarati=Lohit Gujarati + dialog.bolditalic.hindi=Lohit Hindi +@@ -95,6 +103,8 @@ + sansserif.plain.korean=Baekmuk Gulim + sansserif.plain.chinese-big5=AR PL ShanHeiSun Uni + sansserif.plain.chinese-gb18030=AR PL ShanHeiSun Uni ++sansserif.plain.assamese=Lohit Assamese ++sansserif.plain.devanagari=Lohit Devanagari + sansserif.plain.bengali=Lohit Bengali + sansserif.plain.gujarati=Lohit Gujarati + sansserif.plain.hindi=Lohit Hindi +@@ -110,6 +120,8 @@ + sansserif.bold.korean=Baekmuk Gulim + sansserif.bold.chinese-big5=AR PL ShanHeiSun Uni + sansserif.bold.chinese-gb18030=AR PL ShanHeiSun Uni ++sansserif.bold.assamese=Lohit Assamese ++sansserif.bold.devanagari=Lohit Devanagari + sansserif.bold.bengali=Lohit Bengali + sansserif.bold.gujarati=Lohit Gujarati + sansserif.bold.hindi=Lohit Hindi +@@ -125,6 +137,8 @@ + sansserif.italic.korean=Baekmuk Gulim + sansserif.italic.chinese-big5=AR PL ShanHeiSun Uni + sansserif.italic.chinese-gb18030=AR PL ShanHeiSun Uni ++sansserif.italic.assamese=Lohit Assamese ++sansserif.italic.devanagari=Lohit Devanagari + sansserif.italic.bengali=Lohit Bengali + sansserif.italic.gujarati=Lohit Gujarati + sansserif.italic.hindi=Lohit Hindi +@@ -140,6 +154,8 @@ + sansserif.bolditalic.korean=Baekmuk Gulim + sansserif.bolditalic.chinese-big5=AR PL ShanHeiSun Uni + sansserif.bolditalic.chinese-gb18030=AR PL ShanHeiSun Uni ++sansserif.bolditalic.assamese=Lohit Assamese ++sansserif.bolditalic.devanagari=Lohit Devanagari + sansserif.bolditalic.bengali=Lohit Bengali + sansserif.bolditalic.gujarati=Lohit Gujarati + sansserif.bolditalic.hindi=Lohit Hindi +@@ -155,6 +171,8 @@ + serif.plain.korean=Baekmuk Batang + serif.plain.chinese-big5=AR PL ZenKai Uni + serif.plain.chinese-gb18030=AR PL ZenKai Uni ++serif.plain.assamese=Lohit Assamese ++serif.plain.devanagari=Lohit Devanagari + serif.plain.bengali=Lohit Bengali + serif.plain.gujarati=Lohit Gujarati + serif.plain.hindi=Lohit Hindi +@@ -170,6 +188,8 @@ + serif.bold.korean=Baekmuk Batang + serif.bold.chinese-big5=AR PL ZenKai Uni + serif.bold.chinese-gb18030=AR PL ZenKai Uni ++serif.bold.assamese=Lohit Assamese ++serif.bold.devanagari=Lohit Devanagari + serif.bold.bengali=Lohit Bengali + serif.bold.gujarati=Lohit Gujarati + serif.bold.hindi=Lohit Hindi +@@ -185,6 +205,8 @@ + serif.italic.korean=Baekmuk Batang + serif.italic.chinese-big5=AR PL ZenKai Uni + serif.italic.chinese-gb18030=AR PL ZenKai Uni ++serif.italic.assamese=Lohit Assamese ++serif.italic.devanagari=Lohit Devanagari + serif.italic.bengali=Lohit Bengali + serif.italic.gujarati=Lohit Gujarati + serif.italic.hindi=Lohit Hindi +@@ -200,6 +222,8 @@ + serif.bolditalic.korean=Baekmuk Batang + serif.bolditalic.chinese-big5=AR PL ZenKai Uni + serif.bolditalic.chinese-gb18030=AR PL ZenKai Uni ++serif.bolditalic.assamese=Lohit Assamese ++serif.bolditalic.devanagari=Lohit Devanagari + serif.bolditalic.bengali=Lohit Bengali + serif.bolditalic.gujarati=Lohit Gujarati + serif.bolditalic.hindi=Lohit Hindi +@@ -215,6 +239,8 @@ + monospaced.plain.korean=Baekmuk Gulim + monospaced.plain.chinese-big5=AR PL ShanHeiSun Uni + monospaced.plain.chinese-gb18030=AR PL ShanHeiSun Uni ++monospaced.plain.assamese=Lohit Assamese ++monospaced.plain.devanagari=Lohit Devanagari + monospaced.plain.bengali=Lohit Bengali + monospaced.plain.gujarati=Lohit Gujarati + monospaced.plain.hindi=Lohit Hindi +@@ -230,6 +256,8 @@ + monospaced.bold.korean=Baekmuk Gulim + monospaced.bold.chinese-big5=AR PL ShanHeiSun Uni + monospaced.bold.chinese-gb18030=AR PL ShanHeiSun Uni ++monospaced.bold.assamese=Lohit Assamese ++monospaced.bold.devanagari=Lohit Devanagari + monospaced.bold.bengali=Lohit Bengali + monospaced.bold.gujarati=Lohit Gujarati + monospaced.bold.hindi=Lohit Hindi +@@ -245,6 +273,8 @@ + monospaced.italic.korean=Baekmuk Gulim + monospaced.italic.chinese-big5=AR PL ShanHeiSun Uni + monospaced.italic.chinese-gb18030=AR PL ShanHeiSun Uni ++monospaced.italic.assamese=Lohit Assamese ++monospaced.italic.devanagari=Lohit Devanagari + monospaced.italic.bengali=Lohit Bengali + monospaced.italic.gujarati=Lohit Gujarati + monospaced.italic.hindi=Lohit Hindi +@@ -260,6 +290,8 @@ + monospaced.bolditalic.korean=Baekmuk Gulim + monospaced.bolditalic.chinese-big5=AR PL ShanHeiSun Uni + monospaced.bolditalic.chinese-gb18030=AR PL ShanHeiSun Uni ++monospaced.bolditalic.assamese=Lohit Assamese ++monospaced.bolditalic.devanagari=Lohit Devanagari + monospaced.bolditalic.bengali=Lohit Bengali + monospaced.bolditalic.gujarati=Lohit Gujarati + monospaced.bolditalic.hindi=Lohit Hindi +@@ -275,6 +307,8 @@ + dialoginput.plain.korean=Baekmuk Gulim + dialoginput.plain.chinese-big5=AR PL ShanHeiSun Uni + dialoginput.plain.chinese-gb18030=AR PL ShanHeiSun Uni ++dialoginput.plain.assamese=Lohit Assamese ++dialoginput.plain.devanagari=Lohit Devanagari + dialoginput.plain.bengali=Lohit Bengali + dialoginput.plain.gujarati=Lohit Gujarati + dialoginput.plain.hindi=Lohit Hindi +@@ -290,6 +324,8 @@ + dialoginput.bold.korean=Baekmuk Gulim + dialoginput.bold.chinese-big5=AR PL ShanHeiSun Uni + dialoginput.bold.chinese-gb18030=AR PL ShanHeiSun Uni ++dialoginput.bold.assamese=Lohit Assamese ++dialoginput.bold.devanagari=Lohit Devanagari + dialoginput.bold.bengali=Lohit Bengali + dialoginput.bold.gujarati=Lohit Gujarati + dialoginput.bold.hindi=Lohit Hindi +@@ -305,6 +341,8 @@ + dialoginput.italic.korean=Baekmuk Gulim + dialoginput.italic.chinese-big5=AR PL ShanHeiSun Uni + dialoginput.italic.chinese-gb18030=AR PL ShanHeiSun Uni ++dialoginput.italic.assamese=Lohit Assamese ++dialoginput.italic.devanagari=Lohit Devanagari + dialoginput.italic.bengali=Lohit Bengali + dialoginput.italic.gujarati=Lohit Gujarati + dialoginput.italic.hindi=Lohit Hindi +@@ -320,6 +358,8 @@ + dialoginput.bolditalic.korean=Baekmuk Gulim + dialoginput.bolditalic.chinese-big5=AR PL ShanHeiSun Uni + dialoginput.bolditalic.chinese-gb18030=AR PL ShanHeiSun Uni ++dialoginput.bolditalic.assamese=Lohit Assamese ++dialoginput.bolditalic.devanagari=Lohit Devanagari + dialoginput.bolditalic.bengali=Lohit Bengali + dialoginput.bolditalic.gujarati=Lohit Gujarati + dialoginput.bolditalic.hindi=Lohit Hindi +@@ -356,21 +396,24 @@ + filename.DejaVu_Serif_Oblique=/usr/share/fonts/dejavu/DejaVuSerif-Oblique.ttf + filename.DejaVu_Serif_Bold_Oblique=/usr/share/fonts/dejavu/DejaVuSerif-BoldOblique.ttf + +-filename.Sazanami_Gothic=/usr/share/fonts/sazanami-fonts-gothic/sazanami-gothic.ttf +-filename.Sazanami_Mincho=/usr/share/fonts/sazanami-fonts-mincho/sazanami-mincho.ttf ++filename.Sazanami_Gothic=/usr/share/fonts/sazanami/gothic/sazanami-gothic.ttf ++filename.Sazanami_Mincho=/usr/share/fonts/sazanami/mincho/sazanami-mincho.ttf + filename.AR_PL_ShanHeiSun_Uni=/usr/share/fonts/cjkunifonts-uming/uming.ttc + filename.AR_PL_ZenKai_Uni=/usr/share/fonts/cjkunifonts-ukai/ukai.ttc +-filename.Baekmuk_Gulim=/usr/share/fonts/baekmuk-ttf-gulim/gulim.ttf +-filename.Baekmuk_Batang=/usr/share/fonts/baekmuk-ttf-batang/batang.ttf ++filename.Baekmuk_Gulim=/usr/share/fonts/baekmuk-ttf/gulim.ttf ++filename.Baekmuk_Batang=/usr/share/fonts/baekmuk-ttf/batang.ttf ++ ++filename.Lohit_Assamese=/usr/share/fonts/lohit-assamese/Lohit-Assamese.ttf ++filename.Lohit_Devanagari=/usr/share/fonts/lohit-devanagari/Lohit-Devanagari.ttf ++filename.Lohit_Bengali=/usr/share/fonts/lohit-bengali/Lohit-Bengali.ttf ++filename.Lohit_Gujarati=/usr/share/fonts/lohit-gujarati/Lohit-Gujarati.ttf ++filename.Lohit_Hindi=/usr/share/fonts/lohit-hindi/Lohit-Hindi.ttf ++filename.Lohit_Kannda=/usr/share/fonts/lohit-kannada/Lohit-Kannada.ttf ++filename.Lohit_Malayalam=/usr/share/fonts/lohit-malayalam/Lohit-Malayalam.ttf ++filename.Lohit_Oriya=/usr/share/fonts/lohit-oriya/Lohit-Oriya.ttf ++filename.Lohit_Punjabi=/usr/share/fonts/lohit-punjabi/Lohit-Punjabi.ttf ++filename.Lohit_Tamil=/usr/share/fonts/lohit-tamil/Lohit-Tamil.ttf ++filename.Lohit_Telugu=/usr/share/fonts/lohit-telugu/Lohit-Telugu.ttf + +-filename.Lohit_Bengali=/usr/share/fonts/lohit-bengali/lohit_bn.ttf +-filename.Lohit_Gujarati=/usr/share/fonts/lohit-gujarati/lohit_gu.ttf +-filename.Lohit_Hindi=/usr/share/fonts/lohit-hindi/lohit_hi.ttf +-filename.Lohit_Kannda=/usr/share/fonts/lohit-kannada/lohit_kn.ttf +-filename.Lohit_Malayalam=/usr/share/fonts/lohit-malayalam/lohit_ml.ttf +-filename.Lohit_Oriya=/usr/share/fonts/lohit-oriya/lohit_or.ttf +-filename.Lohit_Punjabi=/usr/share/fonts/lohit-punjabi/lohit_pa.ttf +-filename.Lohit_Tamil=/usr/share/fonts/lohit-tamil/lohit_ta.ttf +-filename.Lohit_Telugu=/usr/share/fonts/lohit-telugu/lohit_te.ttf + filename.LKLUG=/usr/share/fonts/lklug/lklug.ttf + + +--- openjdk/jdk/src/solaris/classes/sun/awt/fontconfigs/linux.fontconfig.Fedora.12.properties 2010-11-04 11:06:26.695428114 +0100 ++++ openjdk/jdk/src/solaris/classes/sun/awt/fontconfigs/linux.fontconfig.Fedora.12.properties 2010-11-04 11:19:45.133587953 +0100 +@@ -35,6 +35,8 @@ + dialog.plain.korean=Baekmuk Gulim + dialog.plain.chinese-big5=AR PL ShanHeiSun Uni + dialog.plain.chinese-gb18030=AR PL ShanHeiSun Uni ++dialog.plain.assamese=Lohit Assamese ++dialog.plain.devanagari=Lohit Devanagari + dialog.plain.bengali=Lohit Bengali + dialog.plain.gujarati=Lohit Gujarati + dialog.plain.hindi=Lohit Hindi +@@ -50,6 +52,8 @@ + dialog.bold.korean=Baekmuk Gulim + dialog.bold.chinese-big5=AR PL ShanHeiSun Uni + dialog.bold.chinese-gb18030=AR PL ShanHeiSun Uni ++dialog.bold.assamese=Lohit Assamese ++dialog.bold.devanagari=Lohit Devanagari + dialog.bold.bengali=Lohit Bengali + dialog.bold.gujarati=Lohit Gujarati + dialog.bold.hindi=Lohit Hindi +@@ -65,6 +69,8 @@ + dialog.italic.korean=Baekmuk Gulim + dialog.italic.chinese-big5=AR PL ShanHeiSun Uni + dialog.italic.chinese-gb18030=AR PL ShanHeiSun Uni ++dialog.italic.assamese=Lohit Assamese ++dialog.italic.devanagari=Lohit Devanagari + dialog.italic.bengali=Lohit Bengali + dialog.italic.gujarati=Lohit Gujarati + dialog.italic.hindi=Lohit Hindi +@@ -80,6 +86,8 @@ + dialog.bolditalic.korean=Baekmuk Gulim + dialog.bolditalic.chinese-big5=AR PL ShanHeiSun Uni + dialog.bolditalic.chinese-gb18030=AR PL ShanHeiSun Uni ++dialog.bolditalic.assamese=Lohit Assamese ++dialog.bolditalic.devanagari=Lohit Devanagari + dialog.bolditalic.bengali=Lohit Bengali + dialog.bolditalic.gujarati=Lohit Gujarati + dialog.bolditalic.hindi=Lohit Hindi +@@ -95,6 +103,8 @@ + sansserif.plain.korean=Baekmuk Gulim + sansserif.plain.chinese-big5=AR PL ShanHeiSun Uni + sansserif.plain.chinese-gb18030=AR PL ShanHeiSun Uni ++sansserif.plain.assamese=Lohit Assamese ++sansserif.plain.devanagari=Lohit Devanagari + sansserif.plain.bengali=Lohit Bengali + sansserif.plain.gujarati=Lohit Gujarati + sansserif.plain.hindi=Lohit Hindi +@@ -110,6 +120,8 @@ + sansserif.bold.korean=Baekmuk Gulim + sansserif.bold.chinese-big5=AR PL ShanHeiSun Uni + sansserif.bold.chinese-gb18030=AR PL ShanHeiSun Uni ++sansserif.bold.assamese=Lohit Assamese ++sansserif.bold.devanagari=Lohit Devanagari + sansserif.bold.bengali=Lohit Bengali + sansserif.bold.gujarati=Lohit Gujarati + sansserif.bold.hindi=Lohit Hindi +@@ -125,6 +137,8 @@ + sansserif.italic.korean=Baekmuk Gulim + sansserif.italic.chinese-big5=AR PL ShanHeiSun Uni + sansserif.italic.chinese-gb18030=AR PL ShanHeiSun Uni ++sansserif.italic.assamese=Lohit Assamese ++sansserif.italic.devanagari=Lohit Devanagari + sansserif.italic.bengali=Lohit Bengali + sansserif.italic.gujarati=Lohit Gujarati + sansserif.italic.hindi=Lohit Hindi +@@ -140,6 +154,8 @@ + sansserif.bolditalic.korean=Baekmuk Gulim + sansserif.bolditalic.chinese-big5=AR PL ShanHeiSun Uni + sansserif.bolditalic.chinese-gb18030=AR PL ShanHeiSun Uni ++sansserif.bolditalic.assamese=Lohit Assamese ++sansserif.bolditalic.devanagari=Lohit Devanagari + sansserif.bolditalic.bengali=Lohit Bengali + sansserif.bolditalic.gujarati=Lohit Gujarati + sansserif.bolditalic.hindi=Lohit Hindi +@@ -155,6 +171,8 @@ + serif.plain.korean=Baekmuk Batang + serif.plain.chinese-big5=AR PL ZenKai Uni + serif.plain.chinese-gb18030=AR PL ZenKai Uni ++serif.plain.assamese=Lohit Assamese ++serif.plain.devanagari=Lohit Devanagari + serif.plain.bengali=Lohit Bengali + serif.plain.gujarati=Lohit Gujarati + serif.plain.hindi=Lohit Hindi +@@ -170,6 +188,8 @@ + serif.bold.korean=Baekmuk Batang + serif.bold.chinese-big5=AR PL ZenKai Uni + serif.bold.chinese-gb18030=AR PL ZenKai Uni ++serif.bold.assamese=Lohit Assamese ++serif.bold.devanagari=Lohit Devanagari + serif.bold.bengali=Lohit Bengali + serif.bold.gujarati=Lohit Gujarati + serif.bold.hindi=Lohit Hindi +@@ -185,6 +205,8 @@ + serif.italic.korean=Baekmuk Batang + serif.italic.chinese-big5=AR PL ZenKai Uni + serif.italic.chinese-gb18030=AR PL ZenKai Uni ++serif.italic.assamese=Lohit Assamese ++serif.italic.devanagari=Lohit Devanagari + serif.italic.bengali=Lohit Bengali + serif.italic.gujarati=Lohit Gujarati + serif.italic.hindi=Lohit Hindi +@@ -200,6 +222,8 @@ + serif.bolditalic.korean=Baekmuk Batang + serif.bolditalic.chinese-big5=AR PL ZenKai Uni + serif.bolditalic.chinese-gb18030=AR PL ZenKai Uni ++serif.bolditalic.assamese=Lohit Assamese ++serif.bolditalic.devanagari=Lohit Devanagari + serif.bolditalic.bengali=Lohit Bengali + serif.bolditalic.gujarati=Lohit Gujarati + serif.bolditalic.hindi=Lohit Hindi +@@ -215,6 +239,8 @@ + monospaced.plain.korean=Baekmuk Gulim + monospaced.plain.chinese-big5=AR PL ShanHeiSun Uni + monospaced.plain.chinese-gb18030=AR PL ShanHeiSun Uni ++monospaced.plain.assamese=Lohit Assamese ++monospaced.plain.devanagari=Lohit Devanagari + monospaced.plain.bengali=Lohit Bengali + monospaced.plain.gujarati=Lohit Gujarati + monospaced.plain.hindi=Lohit Hindi +@@ -230,6 +256,8 @@ + monospaced.bold.korean=Baekmuk Gulim + monospaced.bold.chinese-big5=AR PL ShanHeiSun Uni + monospaced.bold.chinese-gb18030=AR PL ShanHeiSun Uni ++monospaced.bold.assamese=Lohit Assamese ++monospaced.bold.devanagari=Lohit Devanagari + monospaced.bold.bengali=Lohit Bengali + monospaced.bold.gujarati=Lohit Gujarati + monospaced.bold.hindi=Lohit Hindi +@@ -245,6 +273,8 @@ + monospaced.italic.korean=Baekmuk Gulim + monospaced.italic.chinese-big5=AR PL ShanHeiSun Uni + monospaced.italic.chinese-gb18030=AR PL ShanHeiSun Uni ++monospaced.italic.assamese=Lohit Assamese ++monospaced.italic.devanagari=Lohit Devanagari + monospaced.italic.bengali=Lohit Bengali + monospaced.italic.gujarati=Lohit Gujarati + monospaced.italic.hindi=Lohit Hindi +@@ -260,6 +290,8 @@ + monospaced.bolditalic.korean=Baekmuk Gulim + monospaced.bolditalic.chinese-big5=AR PL ShanHeiSun Uni + monospaced.bolditalic.chinese-gb18030=AR PL ShanHeiSun Uni ++monospaced.bolditalic.assamese=Lohit Assamese ++monospaced.bolditalic.devanagari=Lohit Devanagari + monospaced.bolditalic.bengali=Lohit Bengali + monospaced.bolditalic.gujarati=Lohit Gujarati + monospaced.bolditalic.hindi=Lohit Hindi +@@ -275,6 +307,8 @@ + dialoginput.plain.korean=Baekmuk Gulim + dialoginput.plain.chinese-big5=AR PL ShanHeiSun Uni + dialoginput.plain.chinese-gb18030=AR PL ShanHeiSun Uni ++dialoginput.plain.assamese=Lohit Assamese ++dialoginput.plain.devanagari=Lohit Devanagari + dialoginput.plain.bengali=Lohit Bengali + dialoginput.plain.gujarati=Lohit Gujarati + dialoginput.plain.hindi=Lohit Hindi +@@ -290,6 +324,8 @@ + dialoginput.bold.korean=Baekmuk Gulim + dialoginput.bold.chinese-big5=AR PL ShanHeiSun Uni + dialoginput.bold.chinese-gb18030=AR PL ShanHeiSun Uni ++dialoginput.bold.assamese=Lohit Assamese ++dialoginput.bold.devanagari=Lohit Devanagari + dialoginput.bold.bengali=Lohit Bengali + dialoginput.bold.gujarati=Lohit Gujarati + dialoginput.bold.hindi=Lohit Hindi +@@ -305,6 +341,8 @@ + dialoginput.italic.korean=Baekmuk Gulim + dialoginput.italic.chinese-big5=AR PL ShanHeiSun Uni + dialoginput.italic.chinese-gb18030=AR PL ShanHeiSun Uni ++dialoginput.italic.assamese=Lohit Assamese ++dialoginput.italic.devanagari=Lohit Devanagari + dialoginput.italic.bengali=Lohit Bengali + dialoginput.italic.gujarati=Lohit Gujarati + dialoginput.italic.hindi=Lohit Hindi +@@ -320,6 +358,8 @@ + dialoginput.bolditalic.korean=Baekmuk Gulim + dialoginput.bolditalic.chinese-big5=AR PL ShanHeiSun Uni + dialoginput.bolditalic.chinese-gb18030=AR PL ShanHeiSun Uni ++dialoginput.bolditalic.assamese=Lohit Assamese ++dialoginput.bolditalic.devanagari=Lohit Devanagari + dialoginput.bolditalic.bengali=Lohit Bengali + dialoginput.bolditalic.gujarati=Lohit Gujarati + dialoginput.bolditalic.hindi=Lohit Hindi +@@ -356,21 +396,24 @@ + filename.DejaVu_Serif_Oblique=/usr/share/fonts/dejavu/DejaVuSerif-Oblique.ttf + filename.DejaVu_Serif_Bold_Oblique=/usr/share/fonts/dejavu/DejaVuSerif-BoldOblique.ttf + +-filename.Sazanami_Gothic=/usr/share/fonts/sazanami-fonts-gothic/sazanami-gothic.ttf +-filename.Sazanami_Mincho=/usr/share/fonts/sazanami-fonts-mincho/sazanami-mincho.ttf ++filename.Sazanami_Gothic=/usr/share/fonts/sazanami/gothic/sazanami-gothic.ttf ++filename.Sazanami_Mincho=/usr/share/fonts/sazanami/mincho/sazanami-mincho.ttf + filename.AR_PL_ShanHeiSun_Uni=/usr/share/fonts/cjkunifonts-uming/uming.ttc + filename.AR_PL_ZenKai_Uni=/usr/share/fonts/cjkunifonts-ukai/ukai.ttc +-filename.Baekmuk_Gulim=/usr/share/fonts/baekmuk-ttf-gulim/gulim.ttf +-filename.Baekmuk_Batang=/usr/share/fonts/baekmuk-ttf-batang/batang.ttf ++filename.Baekmuk_Gulim=/usr/share/fonts/baekmuk-ttf/gulim.ttf ++filename.Baekmuk_Batang=/usr/share/fonts/baekmuk-ttf/batang.ttf ++ ++filename.Lohit_Assamese=/usr/share/fonts/lohit-assamese/Lohit-Assamese.ttf ++filename.Lohit_Devanagari=/usr/share/fonts/lohit-devanagari/Lohit-Devanagari.ttf ++filename.Lohit_Bengali=/usr/share/fonts/lohit-bengali/Lohit-Bengali.ttf ++filename.Lohit_Gujarati=/usr/share/fonts/lohit-gujarati/Lohit-Gujarati.ttf ++filename.Lohit_Hindi=/usr/share/fonts/lohit-devanagari/Lohit-Devanagari.ttf ++filename.Lohit_Kannda=/usr/share/fonts/lohit-kannada/Lohit-Kannada.ttf ++filename.Lohit_Malayalam=/usr/share/fonts/lohit-malayalam/Lohit-Malayalam.ttf ++filename.Lohit_Oriya=/usr/share/fonts/lohit-oriya/Lohit-Oriya.ttf ++filename.Lohit_Punjabi=/usr/share/fonts/lohit-punjabi/Lohit-Punjabi.ttf ++filename.Lohit_Tamil=/usr/share/fonts/lohit-tamil/Lohit-Tamil.ttf ++filename.Lohit_Telugu=/usr/share/fonts/lohit-telugu/Lohit-Telugu.ttf + +-filename.Lohit_Bengali=/usr/share/fonts/lohit-bengali/lohit_bn.ttf +-filename.Lohit_Gujarati=/usr/share/fonts/lohit-gujarati/lohit_gu.ttf +-filename.Lohit_Hindi=/usr/share/fonts/lohit-hindi/lohit_hi.ttf +-filename.Lohit_Kannda=/usr/share/fonts/lohit-kannada/lohit_kn.ttf +-filename.Lohit_Malayalam=/usr/share/fonts/lohit-malayalam/lohit_ml.ttf +-filename.Lohit_Oriya=/usr/share/fonts/lohit-oriya/lohit_or.ttf +-filename.Lohit_Punjabi=/usr/share/fonts/lohit-punjabi/lohit_pa.ttf +-filename.Lohit_Tamil=/usr/share/fonts/lohit-tamil/lohit_ta.ttf +-filename.Lohit_Telugu=/usr/share/fonts/lohit-telugu/lohit_te.ttf + filename.LKLUG=/usr/share/fonts/lklug/lklug.ttf + +--- openjdk/jdk/src/solaris/classes/sun/awt/fontconfigs/linux.fontconfig.Fedora.properties 2010-11-04 11:06:26.695428114 +0100 ++++ openjdk/jdk/src/solaris/classes/sun/awt/fontconfigs/linux.fontconfig.Fedora.properties 2010-11-04 11:06:25.602455633 +0100 +@@ -35,6 +35,8 @@ + dialog.plain.korean=Baekmuk Gulim + dialog.plain.chinese-big5=AR PL ShanHeiSun Uni + dialog.plain.chinese-gb18030=AR PL ShanHeiSun Uni ++dialog.plain.assamese=Lohit Assamese ++dialog.plain.devanagari=Lohit Devanagari + dialog.plain.bengali=Lohit Bengali + dialog.plain.gujarati=Lohit Gujarati + dialog.plain.hindi=Lohit Hindi +@@ -50,6 +52,8 @@ + dialog.bold.korean=Baekmuk Gulim + dialog.bold.chinese-big5=AR PL ShanHeiSun Uni + dialog.bold.chinese-gb18030=AR PL ShanHeiSun Uni ++dialog.bold.assamese=Lohit Assamese ++dialog.bold.devanagari=Lohit Devanagari + dialog.bold.bengali=Lohit Bengali + dialog.bold.gujarati=Lohit Gujarati + dialog.bold.hindi=Lohit Hindi +@@ -65,6 +69,8 @@ + dialog.italic.korean=Baekmuk Gulim + dialog.italic.chinese-big5=AR PL ShanHeiSun Uni + dialog.italic.chinese-gb18030=AR PL ShanHeiSun Uni ++dialog.italic.assamese=Lohit Assamese ++dialog.italic.devanagari=Lohit Devanagari + dialog.italic.bengali=Lohit Bengali + dialog.italic.gujarati=Lohit Gujarati + dialog.italic.hindi=Lohit Hindi +@@ -80,6 +86,8 @@ + dialog.bolditalic.korean=Baekmuk Gulim + dialog.bolditalic.chinese-big5=AR PL ShanHeiSun Uni + dialog.bolditalic.chinese-gb18030=AR PL ShanHeiSun Uni ++dialog.bolditalic.assamese=Lohit Assamese ++dialog.bolditalic.devanagari=Lohit Devanagari + dialog.bolditalic.bengali=Lohit Bengali + dialog.bolditalic.gujarati=Lohit Gujarati + dialog.bolditalic.hindi=Lohit Hindi +@@ -95,6 +103,8 @@ + sansserif.plain.korean=Baekmuk Gulim + sansserif.plain.chinese-big5=AR PL ShanHeiSun Uni + sansserif.plain.chinese-gb18030=AR PL ShanHeiSun Uni ++sansserif.plain.assamese=Lohit Assamese ++sansserif.plain.devanagari=Lohit Devanagari + sansserif.plain.bengali=Lohit Bengali + sansserif.plain.gujarati=Lohit Gujarati + sansserif.plain.hindi=Lohit Hindi +@@ -110,6 +120,8 @@ + sansserif.bold.korean=Baekmuk Gulim + sansserif.bold.chinese-big5=AR PL ShanHeiSun Uni + sansserif.bold.chinese-gb18030=AR PL ShanHeiSun Uni ++sansserif.bold.assamese=Lohit Assamese ++sansserif.bold.devanagari=Lohit Devanagari + sansserif.bold.bengali=Lohit Bengali + sansserif.bold.gujarati=Lohit Gujarati + sansserif.bold.hindi=Lohit Hindi +@@ -125,6 +137,8 @@ + sansserif.italic.korean=Baekmuk Gulim + sansserif.italic.chinese-big5=AR PL ShanHeiSun Uni + sansserif.italic.chinese-gb18030=AR PL ShanHeiSun Uni ++sansserif.italic.assamese=Lohit Assamese ++sansserif.italic.devanagari=Lohit Devanagari + sansserif.italic.bengali=Lohit Bengali + sansserif.italic.gujarati=Lohit Gujarati + sansserif.italic.hindi=Lohit Hindi +@@ -140,6 +154,8 @@ + sansserif.bolditalic.korean=Baekmuk Gulim + sansserif.bolditalic.chinese-big5=AR PL ShanHeiSun Uni + sansserif.bolditalic.chinese-gb18030=AR PL ShanHeiSun Uni ++sansserif.bolditalic.assamese=Lohit Assamese ++sansserif.bolditalic.devanagari=Lohit Devanagari + sansserif.bolditalic.bengali=Lohit Bengali + sansserif.bolditalic.gujarati=Lohit Gujarati + sansserif.bolditalic.hindi=Lohit Hindi +@@ -155,6 +171,8 @@ + serif.plain.korean=Baekmuk Batang + serif.plain.chinese-big5=AR PL ZenKai Uni + serif.plain.chinese-gb18030=AR PL ZenKai Uni ++serif.plain.assamese=Lohit Assamese ++serif.plain.devanagari=Lohit Devanagari + serif.plain.bengali=Lohit Bengali + serif.plain.gujarati=Lohit Gujarati + serif.plain.hindi=Lohit Hindi +@@ -170,6 +188,8 @@ + serif.bold.korean=Baekmuk Batang + serif.bold.chinese-big5=AR PL ZenKai Uni + serif.bold.chinese-gb18030=AR PL ZenKai Uni ++serif.bold.assamese=Lohit Assamese ++serif.bold.devanagari=Lohit Devanagari + serif.bold.bengali=Lohit Bengali + serif.bold.gujarati=Lohit Gujarati + serif.bold.hindi=Lohit Hindi +@@ -185,6 +205,8 @@ + serif.italic.korean=Baekmuk Batang + serif.italic.chinese-big5=AR PL ZenKai Uni + serif.italic.chinese-gb18030=AR PL ZenKai Uni ++serif.italic.assamese=Lohit Assamese ++serif.italic.devanagari=Lohit Devanagari + serif.italic.bengali=Lohit Bengali + serif.italic.gujarati=Lohit Gujarati + serif.italic.hindi=Lohit Hindi +@@ -200,6 +222,8 @@ + serif.bolditalic.korean=Baekmuk Batang + serif.bolditalic.chinese-big5=AR PL ZenKai Uni + serif.bolditalic.chinese-gb18030=AR PL ZenKai Uni ++serif.bolditalic.assamese=Lohit Assamese ++serif.bolditalic.devanagari=Lohit Devanagari + serif.bolditalic.bengali=Lohit Bengali + serif.bolditalic.gujarati=Lohit Gujarati + serif.bolditalic.hindi=Lohit Hindi +@@ -215,6 +239,8 @@ + monospaced.plain.korean=Baekmuk Gulim + monospaced.plain.chinese-big5=AR PL ShanHeiSun Uni + monospaced.plain.chinese-gb18030=AR PL ShanHeiSun Uni ++monospaced.plain.assamese=Lohit Assamese ++monospaced.plain.devanagari=Lohit Devanagari + monospaced.plain.bengali=Lohit Bengali + monospaced.plain.gujarati=Lohit Gujarati + monospaced.plain.hindi=Lohit Hindi +@@ -230,6 +256,8 @@ + monospaced.bold.korean=Baekmuk Gulim + monospaced.bold.chinese-big5=AR PL ShanHeiSun Uni + monospaced.bold.chinese-gb18030=AR PL ShanHeiSun Uni ++monospaced.bold.assamese=Lohit Assamese ++monospaced.bold.devanagari=Lohit Devanagari + monospaced.bold.bengali=Lohit Bengali + monospaced.bold.gujarati=Lohit Gujarati + monospaced.bold.hindi=Lohit Hindi +@@ -245,6 +273,8 @@ + monospaced.italic.korean=Baekmuk Gulim + monospaced.italic.chinese-big5=AR PL ShanHeiSun Uni + monospaced.italic.chinese-gb18030=AR PL ShanHeiSun Uni ++monospaced.italic.assamese=Lohit Assamese ++monospaced.italic.devanagari=Lohit Devanagari + monospaced.italic.bengali=Lohit Bengali + monospaced.italic.gujarati=Lohit Gujarati + monospaced.italic.hindi=Lohit Hindi +@@ -260,6 +290,8 @@ + monospaced.bolditalic.korean=Baekmuk Gulim + monospaced.bolditalic.chinese-big5=AR PL ShanHeiSun Uni + monospaced.bolditalic.chinese-gb18030=AR PL ShanHeiSun Uni ++monospaced.bolditalic.assamese=Lohit Assamese ++monospaced.bolditalic.devanagari=Lohit Devanagari + monospaced.bolditalic.bengali=Lohit Bengali + monospaced.bolditalic.gujarati=Lohit Gujarati + monospaced.bolditalic.hindi=Lohit Hindi +@@ -275,6 +307,8 @@ + dialoginput.plain.korean=Baekmuk Gulim + dialoginput.plain.chinese-big5=AR PL ShanHeiSun Uni + dialoginput.plain.chinese-gb18030=AR PL ShanHeiSun Uni ++dialoginput.plain.assamese=Lohit Assamese ++dialoginput.plain.devanagari=Lohit Devanagari + dialoginput.plain.bengali=Lohit Bengali + dialoginput.plain.gujarati=Lohit Gujarati + dialoginput.plain.hindi=Lohit Hindi +@@ -290,6 +324,8 @@ + dialoginput.bold.korean=Baekmuk Gulim + dialoginput.bold.chinese-big5=AR PL ShanHeiSun Uni + dialoginput.bold.chinese-gb18030=AR PL ShanHeiSun Uni ++dialoginput.bold.assamese=Lohit Assamese ++dialoginput.bold.devanagari=Lohit Devanagari + dialoginput.bold.bengali=Lohit Bengali + dialoginput.bold.gujarati=Lohit Gujarati + dialoginput.bold.hindi=Lohit Hindi +@@ -305,6 +341,8 @@ + dialoginput.italic.korean=Baekmuk Gulim + dialoginput.italic.chinese-big5=AR PL ShanHeiSun Uni + dialoginput.italic.chinese-gb18030=AR PL ShanHeiSun Uni ++dialoginput.italic.assamese=Lohit Assamese ++dialoginput.italic.devanagari=Lohit Devanagari + dialoginput.italic.bengali=Lohit Bengali + dialoginput.italic.gujarati=Lohit Gujarati + dialoginput.italic.hindi=Lohit Hindi +@@ -320,6 +358,8 @@ + dialoginput.bolditalic.korean=Baekmuk Gulim + dialoginput.bolditalic.chinese-big5=AR PL ShanHeiSun Uni + dialoginput.bolditalic.chinese-gb18030=AR PL ShanHeiSun Uni ++dialoginput.bolditalic.assamese=Lohit Assamese ++dialoginput.bolditalic.devanagari=Lohit Devanagari + dialoginput.bolditalic.bengali=Lohit Bengali + dialoginput.bolditalic.gujarati=Lohit Gujarati + dialoginput.bolditalic.hindi=Lohit Hindi +@@ -356,21 +396,24 @@ + filename.DejaVu_Serif_Oblique=/usr/share/fonts/dejavu/DejaVuSerif-Oblique.ttf + filename.DejaVu_Serif_Bold_Oblique=/usr/share/fonts/dejavu/DejaVuSerif-BoldOblique.ttf + +-filename.Sazanami_Gothic=/usr/share/fonts/sazanami-fonts-gothic/sazanami-gothic.ttf +-filename.Sazanami_Mincho=/usr/share/fonts/sazanami-fonts-mincho/sazanami-mincho.ttf +-filename.AR_PL_ShanHeiSun_Uni=/usr/share/fonts/cjkunifonts-uming/uming.ttc +-filename.AR_PL_ZenKai_Uni=/usr/share/fonts/cjkunifonts-ukai/ukai.ttc +-filename.Baekmuk_Gulim=/usr/share/fonts/baekmuk-ttf-gulim/gulim.ttf +-filename.Baekmuk_Batang=/usr/share/fonts/baekmuk-ttf-batang/batang.ttf ++filename.Sazanami_Gothic=/usr/share/fonts/sazanami/gothic/sazanami-gothic.ttf ++filename.Sazanami_Mincho=/usr/share/fonts/sazanami/mincho/sazanami-mincho.ttf ++filename.AR_PL_ShanHeiSun_Uni=/usr/share/fonts/cjkuni-uming/uming.ttc ++filename.AR_PL_ZenKai_Uni=/usr/share/fonts/cjkuni-ukai/ukai.ttc ++filename.Baekmuk_Gulim=/usr/share/fonts/baekmuk-ttf/gulim.ttf ++filename.Baekmuk_Batang=/usr/share/fonts/baekmuk-ttf/batang.ttf ++ ++filename.Lohit_Assamese=/usr/share/fonts/lohit-assamese/Lohit-Assamese.ttf ++filename.Lohit_Devanagari=/usr/share/fonts/lohit-devanagari/Lohit-Devanagari.ttf ++filename.Lohit_Bengali=/usr/share/fonts/lohit-bengali/Lohit-Bengali.ttf ++filename.Lohit_Gujarati=/usr/share/fonts/lohit-gujarati/Lohit-Gujarati.ttf ++filename.Lohit_Hindi=/usr/share/fonts/lohit-devanagari/Lohit-Devanagari.ttf ++filename.Lohit_Kannda=/usr/share/fonts/lohit-kannada/Lohit-Kannada.ttf ++filename.Lohit_Malayalam=/usr/share/fonts/lohit-malayalam/Lohit-Malayalam.ttf ++filename.Lohit_Oriya=/usr/share/fonts/lohit-oriya/Lohit-Oriya.ttf ++filename.Lohit_Punjabi=/usr/share/fonts/lohit-punjabi/Lohit-Punjabi.ttf ++filename.Lohit_Tamil=/usr/share/fonts/lohit-tamil/Lohit-Tamil.ttf ++filename.Lohit_Telugu=/usr/share/fonts/lohit-telugu/Lohit-Telugu.ttf + +-filename.Lohit_Bengali=/usr/share/fonts/lohit-bengali/lohit_bn.ttf +-filename.Lohit_Gujarati=/usr/share/fonts/lohit-gujarati/lohit_gu.ttf +-filename.Lohit_Hindi=/usr/share/fonts/lohit-hindi/lohit_hi.ttf +-filename.Lohit_Kannda=/usr/share/fonts/lohit-kannada/lohit_kn.ttf +-filename.Lohit_Malayalam=/usr/share/fonts/lohit-malayalam/lohit_ml.ttf +-filename.Lohit_Oriya=/usr/share/fonts/lohit-oriya/lohit_or.ttf +-filename.Lohit_Punjabi=/usr/share/fonts/lohit-punjabi/lohit_pa.ttf +-filename.Lohit_Tamil=/usr/share/fonts/lohit-tamil/lohit_ta.ttf +-filename.Lohit_Telugu=/usr/share/fonts/lohit-telugu/lohit_te.ttf + filename.LKLUG=/usr/share/fonts/lklug/lklug.ttf + From aoqi at loongson.cn Wed Nov 10 04:38:19 2010 From: aoqi at loongson.cn (=?gb2312?Q?=B0=BD=E7=F7?=) Date: Wed, 10 Nov 2010 20:38:19 +0800 (CST) Subject: [Java] [ahughes@redhat.com: Re: /hg/openjdk6-mips: Add information in README and env.sh; added a...] In-Reply-To: <20101109140533.GA26522@loongson.cn> References: <20101109140533.GA26522@loongson.cn> Message-ID: > aoqi: > ??????distro-pkg-dev at openjdk.java.net??????????????Andrew?????????? > > > ----- Forwarded message from Dr Andrew John Hughes > ----- > > Date: Tue, 9 Nov 2010 14:00:08 +0000 > From: Dr Andrew John Hughes > To: liuqi at icedtea.classpath.org > Cc: distro-pkg-dev at openjdk.java.net > Subject: Re: /hg/openjdk6-mips: Add information in README and env.sh; > added > a... > User-Agent: Mutt/1.5.21 (2010-09-15) > > On 06:30 Tue 09 Nov , liuqi at icedtea.classpath.org wrote: >> changeset 82bf91673f25 in /hg/openjdk6-mips >> details: >> http://icedtea.classpath.org/hg/openjdk6-mips?cmd=changeset;node=82bf91673f25 >> author: Ao Qi >> date: Tue Nov 09 13:21:20 2010 +0800 >> >> Add information in README and env.sh; added a missing file to make >> the completed build. >> > > Why have you added back the information about binary plugs? These haven't > been required for years. Our port is based on OpenJDK6_b18, so the binary plugs are needed during building jdk. > >> >> diffstat: >> >> 5 files changed, 91 insertions(+), 52 deletions(-) >> README | 32 ++++++++++++++++++++++++++++-- >> env.sh | 23 +++++++++++++++++++++ >> env_debug.sh | 27 ------------------------- >> env_product.sh | 23 --------------------- >> jdk/src/solaris/bin/mips64/jvm.cfg | 38 >> ++++++++++++++++++++++++++++++++++++ >> >> diffs (181 lines): >> >> diff -r 8ef762f87d0e -r 82bf91673f25 README >> --- a/README Mon Nov 08 19:53:05 2010 +0800 >> +++ b/README Tue Nov 09 13:21:20 2010 +0800 >> @@ -6,20 +6,48 @@ README: >> "corba", "jaxws" and "jaxp". >> >> See http://openjdk.java.net/ for more information about the OpenJDK. >> + See http://icedtea.classpath.org/wiki/MIPSPort for more information >> about the OpenJDK MIPS Port. >> >> Simple Build Instructions: >> >> 1. Download and install a JDK 6 from >> http://java.sun.com/javase/downloads/index.jsp >> Set the environment variable ALT_BOOTDIR to the location of this >> JDK 6. >> + If using Debian: >> + apt-get install openjdk-6-jdk >> + export ALT_BOOTDIR=/usr/lib/jvm/java-6-openjdk >> >> - 2. Check the sanity of doing a build with the current machine: >> + 2. Download Binary Plugs, go to the OpenJDK site and select the >> "Bundles(6)" link and download >> + the binaryplugs. The file downloaded is a jar file that must be >> extracted by running the jar >> + file with: >> + java -jar jdk-6-ea-plug-bnn-os-arch-dd_month_year.jar >> + Set the environment variable ALT_BINARY_PLUGS_PATH to the root of >> this installation. >> + >> + 3. Set other environment variables. If using Debian: >> + source env.sh >> + Check the sanity of doing a build with the current machine: >> gnumake sanity >> See README-builds.html if you run into problems. >> >> - 3. Do a complete build of the jdk: >> + 4. Do a complete build of the jdk: >> gnumake all >> + When building jaxp, it seems a bug that jdk6-jaxp-2009_10_13.zip >> cannot be downloaded. >> + The workaround is to download it by "wget ", and set ALT_DROPS_DIR >> to the dir where the zip is: >> + export ALT_DROPS_DIR=~/zip_dir >> The resulting JDK image should be found in build/*/j2sdk-image >> + >> + 5. By setting the environment variables below, components can be >> built separately. >> + For example: >> + export BUILD_HOTSPOT=true >> + export BUILD_LANGTOOLS=false >> + export BUILD_CORBA=false >> + export BUILD_JAXP=false >> + export BUILD_JAXWS=false >> + export BUILD_JDK=false >> + export BUILD_DEPLOY=false >> + >> + 6. The default hotspot-build is all_product. Set DEBUG_NAME would >> change the target: >> + export DEBUG_NAME=debug >> >> where gnumake is GNU make 3.78.1 or newer, /usr/bin/make on Linux and >> /usr/sfw/bin/gmake or /opt/sfw/bin/gmake on Solaris. >> diff -r 8ef762f87d0e -r 82bf91673f25 env.sh >> --- /dev/null Thu Jan 01 00:00:00 1970 +0000 >> +++ b/env.sh Tue Nov 09 13:21:20 2010 +0800 >> @@ -0,0 +1,23 @@ >> +export LANG=C >> +export >> PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/lib/jvm/java-6-openjdk/bin >> +export ALT_BOOTDIR=/usr/lib/jvm/java-6-openjdk >> +export ALT_BINARY_PLUGS_PATH=~/openjdk-binary-plugs >> +export ARCH_DATA_MODEL=32 >> + >> +unset CLASSPATH >> +unset JAVA_HOME >> + >> +#The default hotspot-build is all_product. Setting DEBUG_NAME would >> change the target. >> +#export DEBUG_NAME=debug >> + >> +# By setting the environment variables below, components can be built >> separately. >> +#export BUILD_LANGTOOLS=false >> +#export BUILD_CORBA=false >> +#export BUILD_JAXP=false >> +#export BUILD_JAXWS=false >> +#export BUILD_JDK=false >> +#export BUILD_DEPLOY=false >> + >> +# When building jaxp, it seems a bug that jdk6-jaxp-2009_10_13.zip >> cannot be downloaded. >> +# The workaround is to download it by "wget ", and set ALT_DROPS_DIR to >> the dir where the zip is. >> +#export ALT_DROPS_DIR=~/zip_dir >> diff -r 8ef762f87d0e -r 82bf91673f25 env_debug.sh >> --- a/env_debug.sh Mon Nov 08 19:53:05 2010 +0800 >> +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 >> @@ -1,27 +0,0 @@ >> -export LANG=C >> -export LC_ALL=C >> -export >> PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/lib/jvm/java-6-openjdk/bin >> -export ALT_BOOTDIR=/usr/lib/jvm/java-6-openjdk >> -#export ALT_BOOTDIR=/home/loongson/java/j2sdk-gs2 >> -export ALT_BINARY_PLUGS_PATH=/opt/java/openjdk-binary-plugs >> -#export ALT_JDK_IMPORT_PATH=/usr/lib/jvm/java-6-openjdk >> -export ARCH_DATA_MODEL=32 >> - >> -#The default hotspot-build is all_product. Setting DEBUG_NAME would >> change the target. >> -export DEBUG_NAME=debug >> - >> -# If want to build entire JDK, set all envs below true. >> -export BUILD_LANGTOOLS=false >> -export BUILD_CORBA=false >> -export BUILD_JAXP=false >> -export BUILD_JAXWS=false >> -# When building jaxp, it seems a bug that jdk6-jaxp-2009_10_13.zip >> cannot be downloaded. >> -# The workaround is to download it by "wget ", and set ALT_DROPS_DIR to >> the dir where the zip is. >> -#export ALT_DROPS_DIR=~/zip_dir >> - >> -export BUILD_MOTIF=false >> -export BUILD_JDK=false >> -export BUILD_DEPLOY=false >> - >> -unset CLASSPATH >> -unset JAVA_HOME >> diff -r 8ef762f87d0e -r 82bf91673f25 env_product.sh >> --- a/env_product.sh Mon Nov 08 19:53:05 2010 +0800 >> +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 >> @@ -1,23 +0,0 @@ >> -export LC_ALL=C >> -export >> PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/lib/jvm/java-6-openjdk/bin >> -export ALT_BOOTDIR=/usr/lib/jvm/java-6-openjdk >> -export ALT_BINARY_PLUGS_PATH=/opt/java/openjdk-binary-plugs >> -export ARCH_DATA_MODEL=32 >> - >> -#The default hotspot-build is all_product. Setting DEBUG_NAME would >> change the target. >> - >> -# If want to build entire JDK, set all envs below true. >> -export BUILD_LANGTOOLS=false >> -export BUILD_CORBA=false >> -export BUILD_JAXP=false >> -export BUILD_JAXWS=false >> -# When building jaxp, it seems a bug that jdk6-jaxp-2009_10_13.zip >> cannot be downloaded. >> -# The workaround is to download it by "wget ", and set ALT_DROPS_DIR to >> the dir where the zip is. >> -#export ALT_DROPS_DIR=~/zip_dir >> - >> -export BUILD_MOTIF=false >> -export BUILD_JDK=false >> -export BUILD_DEPLOY=false >> - >> -unset CLASSPATH >> -unset JAVA_HOME >> diff -r 8ef762f87d0e -r 82bf91673f25 jdk/src/solaris/bin/mips64/jvm.cfg >> --- /dev/null Thu Jan 01 00:00:00 1970 +0000 >> +++ b/jdk/src/solaris/bin/mips64/jvm.cfg Tue Nov 09 13:21:20 2010 +0800 >> @@ -0,0 +1,38 @@ >> +# Copyright 2001-2003 Sun Microsystems, Inc. All Rights Reserved. >> +# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. >> +# >> +# This code is free software; you can redistribute it and/or modify it >> +# under the terms of the GNU General Public License version 2 only, as >> +# published by the Free Software Foundation. Sun designates this >> +# particular file as subject to the "Classpath" exception as provided >> +# by Sun in the LICENSE file that accompanied this code. >> +# >> +# This code is distributed in the hope that it will be useful, but >> WITHOUT >> +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or >> +# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License >> +# version 2 for more details (a copy is included in the LICENSE file >> that >> +# accompanied this code). >> +# >> +# You should have received a copy of the GNU General Public License >> version >> +# 2 along with this work; if not, write to the Free Software >> Foundation, >> +# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. >> +# >> +# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa >> Clara, >> +# CA 95054 USA or visit www.sun.com if you need additional information >> or >> +# have any questions. >> +# >> +# List of JVMs that can be used as an option to java, javac, etc. >> +# Order is important -- first in this list is the default JVM. >> +# NOTE that this both this file and its format are UNSUPPORTED and >> +# WILL GO AWAY in a future release. >> +# >> +# You may also select a JVM in an arbitrary location with the >> +# "-XXaltjvm=" option, but that too is unsupported >> +# and may not be available in a future release. >> +# >> +-client IF_SERVER_CLASS -server >> +-server KNOWN >> +-hotspot ALIASED_TO -client >> +-classic WARN >> +-native ERROR >> +-green ERROR > > -- > Andrew :) > > Free Java Software Engineer > Red Hat, Inc. (http://www.redhat.com) > > Support Free Java! > Contribute to GNU Classpath and the OpenJDK > http://www.gnu.org/software/classpath > http://openjdk.java.net > PGP Key: 94EFD9D8 (http://subkeys.pgp.net) > Fingerprint = F8EF F1EA 401E 2E60 15FA 7927 142C 2591 94EF D9D8 > > ----- End forwarded message ----- > > -- > LIU Qi > > liuqi at loongson.cn > liuqi82 at gmail.com > > Loongson Technology Co. Ltd. > > PGP Key fingerprint: > 3D29 FDFD AFB3 225D B744 > 7FAB 51C7 4820 63BA 272F > _______________________________________________ > Java mailing list > Java at lists.loongson.cn > http://lists.loongson.cn/cgi-bin/mailman/listinfo/java > From andrew at icedtea.classpath.org Wed Nov 10 04:50:18 2010 From: andrew at icedtea.classpath.org (andrew at icedtea.classpath.org) Date: Wed, 10 Nov 2010 12:50:18 +0000 Subject: /hg/icedtea6-hg: 16 new changesets Message-ID: changeset 2210c22d3fff in /hg/icedtea6-hg details: http://icedtea.classpath.org/hg/icedtea6-hg?cmd=changeset;node=2210c22d3fff author: ptisnovs date: Tue Nov 02 10:44:52 2010 +0100 Added new regression test for check if all non-Latin fonts are installed and properly configured. changeset 13734765e6dd in /hg/icedtea6-hg details: http://icedtea.classpath.org/hg/icedtea6-hg?cmd=changeset;node=13734765e6dd author: Andrew John Hughes date: Fri Oct 22 12:43:16 2010 +0100 Cleanup ecj.jar detection. 2010-10-22 Andrew John Hughes * acinclude.m4: (FIND_JAVAC): Don't fail if $JAVAC is empty, ecj.jar can be used. (FIND_ECJ_JAR): Check additional Gentoo locations. Fail only if both $JAVAC is empty and ECJ_JAR is no. changeset e8f1ae620c8e in /hg/icedtea6-hg details: http://icedtea.classpath.org/hg/icedtea6-hg?cmd=changeset;node=e8f1ae620c8e author: Andrew John Hughes date: Tue Nov 02 23:26:57 2010 +0000 Fix hs19 on ppc machines. 2010-10-22 Andrew John Hughes * Makefile.am: Add new patch for hs19 builds only. * NEWS: Mention fix. * patches/openjdk/6994130-ppc_fix.patch: Fix build on PPC machines (thanks to Gary Benson). changeset 119d733ccf0a in /hg/icedtea6-hg details: http://icedtea.classpath.org/hg/icedtea6-hg?cmd=changeset;node=119d733ccf0a author: Andrew John Hughes date: Tue Nov 02 23:28:02 2010 +0000 Merge changeset ef8a301ba119 in /hg/icedtea6-hg details: http://icedtea.classpath.org/hg/icedtea6-hg?cmd=changeset;node=ef8a301ba119 author: Andrew John Hughes date: Wed Nov 03 10:52:50 2010 +0000 Bump to latest revision of hs19 (b09). 2010-11-02 Andrew John Hughes * Makefile.am: (replace-hotspot): Don't hardcode 'master' as the top-level directory, extract it from the url. * hotspot.map: Move to latest hs19 (currently only on baseline tree) changeset 51aa61578bf2 in /hg/icedtea6-hg details: http://icedtea.classpath.org/hg/icedtea6-hg?cmd=changeset;node=51aa61578bf2 author: Andrew John Hughes date: Wed Nov 03 10:54:08 2010 +0000 Update md5sum of hs19 tarball. 2010-11-02 Andrew John Hughes * hotspot.map: Update md5sum for new HotSpot. changeset a4bd79afa729 in /hg/icedtea6-hg details: http://icedtea.classpath.org/hg/icedtea6-hg?cmd=changeset;node=a4bd79afa729 author: Andrew John Hughes date: Wed Nov 03 18:26:48 2010 +0000 Additional S390 size_t fixes. 2010-11-03 Dan Hor?k * patches/hotspot/hs19/params-cast-size_t.patch: Add additional fixes for S390. changeset 3d4097e0baa9 in /hg/icedtea6-hg details: http://icedtea.classpath.org/hg/icedtea6-hg?cmd=changeset;node=3d4097e0baa9 author: Denis Lila date: Fri Nov 05 14:28:04 2010 -0400 Temporary icedtea6 backport of the openjdk7 rendering engine. changeset d7a53bef488a in /hg/icedtea6-hg details: http://icedtea.classpath.org/hg/icedtea6-hg?cmd=changeset;node=d7a53bef488a author: Andrew John Hughes date: Fri Nov 05 18:28:04 2010 +0000 Switch back to master tree for hs19. 2010-11-05 Andrew John Hughes * hotspot.map: Switch back to master now changes have been pushed through (same content, different tree). changeset f935004da674 in /hg/icedtea6-hg details: http://icedtea.classpath.org/hg/icedtea6-hg?cmd=changeset;node=f935004da674 author: Andrew John Hughes date: Fri Nov 05 18:31:07 2010 +0000 Merge changeset f7334fbff599 in /hg/icedtea6-hg details: http://icedtea.classpath.org/hg/icedtea6-hg?cmd=changeset;node=f7334fbff599 author: Denis Lila date: Fri Nov 05 16:50:59 2010 -0400 Added changelog entry for my previous changeset and put the patch file in patches/openjdk. changeset c06d558f7684 in /hg/icedtea6-hg details: http://icedtea.classpath.org/hg/icedtea6-hg?cmd=changeset;node=c06d558f7684 author: ptisnovs date: Mon Nov 08 12:28:36 2010 +0100 Testcase correction, now the regression test Test6857159 should not timeout on most machines changeset 92361970fdc1 in /hg/icedtea6-hg details: http://icedtea.classpath.org/hg/icedtea6-hg?cmd=changeset;node=92361970fdc1 author: Andrew John Hughes date: Tue Nov 09 14:51:54 2010 +0000 Switch to the IcedTea server for JAXP, JAF and JAXWS. 2010-11-09 Andrew John Hughes * Makefile.am: (JAXWS_DROP_URL): Switch to IcedTea server. (JAXP_DROP_URL): Likewise. (JAF_DROP_URL): Likewise. changeset 72de51f0a744 in /hg/icedtea6-hg details: http://icedtea.classpath.org/hg/icedtea6-hg?cmd=changeset;node=72de51f0a744 author: Andrew John Hughes date: Tue Nov 09 14:53:31 2010 +0000 Merge changeset 74298fcf2df8 in /hg/icedtea6-hg details: http://icedtea.classpath.org/hg/icedtea6-hg?cmd=changeset;node=74298fcf2df8 author: Andrew John Hughes date: Wed Nov 10 00:24:07 2010 +0000 Merge changeset 20166bbb476b in /hg/icedtea6-hg details: http://icedtea.classpath.org/hg/icedtea6-hg?cmd=changeset;node=20166bbb476b author: Andrew John Hughes date: Wed Nov 10 12:47:47 2010 +0000 Drop upstreamed patches. 2010-11-09 Andrew John Hughes * patches/6703377-freetypescaler.patch, * patches/openjdk/6853592-badwindow-warning-fix.patch: Drop patches applied upstream. * Makefile.am: Drop above patches. diffstat: 103 files changed, 6985 insertions(+), 20305 deletions(-) ChangeLog | 238 Makefile.am | 102 NEWS | 9 acinclude.m4 | 15 hotspot.map | 1 patches/6703377-freetypescaler.patch | 11 patches/alpha-fixes.patch | 21 patches/gcc-suffix.patch | 31 patches/hotspot/hs19/alpha-fixes.patch | 21 patches/hotspot/hs19/gcc-suffix.patch | 31 patches/hotspot/hs19/params-cast-size_t.patch | 264 patches/hotspot/hs19/print_lsb_release.patch | 49 patches/hotspot/hs19/update-bootclasspath.patch | 13 patches/hotspot/original/alpha-fixes.patch | 31 patches/hotspot/original/gcc-suffix.patch | 25 patches/hotspot/original/params-cast-size_t.patch | 274 patches/hotspot/original/print_lsb_release.patch | 48 patches/hotspot/original/update-bootclasspath.patch | 13 patches/icedtea-jtreg-international-fonts.patch | 195 patches/icedtea-jtreg-jrunscript.patch | 12 patches/icedtea-lcms.patch | 25 patches/icedtea-shark-build.patch | 16 patches/openjdk/4356282-opentype.patch | 227 patches/openjdk/6438179-systray_check.patch | 92 patches/openjdk/6678385-window_movement_crasher.patch | 1241 --- patches/openjdk/6721088-awt_window_size.patch | 67 patches/openjdk/6795060-icu_crash.patch | 95 patches/openjdk/6853592-badwindow-warning-fix.patch | 16 patches/openjdk/6951319-sparc_build_fixes.patch | 24 patches/openjdk/6954424-opentype_javadoc.patch | 23 patches/openjdk/6961732-negative_leading.patch | 45 patches/openjdk/6967436-6976265-6967434-pisces.patch | 6076 +++++++++++++++ patches/openjdk/6969395-net_bugs.patch | 461 - patches/openjdk/6985992-test_6933784.patch | 43 patches/openjdk/6994130-ppc_fix.patch | 11 patches/openjdk/6997495-test_correction_6857159.patch | 21 patches/params-cast-size_t.patch | 284 patches/print_lsb_release.patch | 49 patches/security/20101012/6559775.patch | 317 patches/security/20101012/6622002.patch | 64 patches/security/20101012/6623943.patch | 138 patches/security/20101012/6891766.patch | 1147 -- patches/security/20101012/6914943.patch | 2129 ----- patches/security/20101012/6925710.patch | 198 patches/security/20101012/6938813.patch | 196 patches/security/20101012/6952017.patch | 50 patches/security/20101012/6952603.patch | 38 patches/security/20101012/6957564.patch | 77 patches/security/20101012/6958060.patch | 15 patches/security/20101012/6961084.patch | 325 patches/security/20101012/6963023.patch | 95 patches/security/20101012/6963285.patch | 20 patches/security/20101012/6963489.patch | 31 patches/security/20101012/6966692.patch | 91 patches/security/20101012/6981426.patch | 24 patches/security/20101012/6990437.patch | 116 patches/update-bootclasspath.patch | 13 shark/hotspot/make/linux/makefiles/shark.make | 32 shark/hotspot/src/cpu/zero/vm/shark_globals_zero.hpp | 62 shark/hotspot/src/share/vm/includeDB_shark | 369 shark/hotspot/src/share/vm/shark/llvmHeaders.hpp | 82 shark/hotspot/src/share/vm/shark/llvmValue.hpp | 62 shark/hotspot/src/share/vm/shark/sharkBlock.cpp | 1260 --- shark/hotspot/src/share/vm/shark/sharkBlock.hpp | 281 shark/hotspot/src/share/vm/shark/sharkBuilder.cpp | 591 - shark/hotspot/src/share/vm/shark/sharkBuilder.hpp | 209 shark/hotspot/src/share/vm/shark/sharkCacheDecache.cpp | 259 shark/hotspot/src/share/vm/shark/sharkCacheDecache.hpp | 417 - shark/hotspot/src/share/vm/shark/sharkCodeBuffer.hpp | 87 shark/hotspot/src/share/vm/shark/sharkCompiler.cpp | 340 shark/hotspot/src/share/vm/shark/sharkCompiler.hpp | 119 shark/hotspot/src/share/vm/shark/sharkConstant.cpp | 128 shark/hotspot/src/share/vm/shark/sharkConstant.hpp | 64 shark/hotspot/src/share/vm/shark/sharkContext.cpp | 180 shark/hotspot/src/share/vm/shark/sharkContext.hpp | 187 shark/hotspot/src/share/vm/shark/sharkEntry.hpp | 58 shark/hotspot/src/share/vm/shark/sharkFunction.cpp | 188 shark/hotspot/src/share/vm/shark/sharkFunction.hpp | 111 shark/hotspot/src/share/vm/shark/sharkInliner.cpp | 749 - shark/hotspot/src/share/vm/shark/sharkInliner.hpp | 32 shark/hotspot/src/share/vm/shark/sharkIntrinsics.cpp | 277 shark/hotspot/src/share/vm/shark/sharkIntrinsics.hpp | 54 shark/hotspot/src/share/vm/shark/sharkInvariants.cpp | 37 shark/hotspot/src/share/vm/shark/sharkInvariants.hpp | 167 shark/hotspot/src/share/vm/shark/sharkMemoryManager.cpp | 116 shark/hotspot/src/share/vm/shark/sharkMemoryManager.hpp | 88 shark/hotspot/src/share/vm/shark/sharkNativeWrapper.cpp | 352 shark/hotspot/src/share/vm/shark/sharkNativeWrapper.hpp | 182 shark/hotspot/src/share/vm/shark/sharkRuntime.cpp | 251 shark/hotspot/src/share/vm/shark/sharkRuntime.hpp | 83 shark/hotspot/src/share/vm/shark/sharkStack.cpp | 263 shark/hotspot/src/share/vm/shark/sharkStack.hpp | 290 shark/hotspot/src/share/vm/shark/sharkState.cpp | 389 shark/hotspot/src/share/vm/shark/sharkState.hpp | 188 shark/hotspot/src/share/vm/shark/sharkStateScanner.cpp | 99 shark/hotspot/src/share/vm/shark/sharkStateScanner.hpp | 75 shark/hotspot/src/share/vm/shark/sharkTopLevelBlock.cpp | 1991 ---- shark/hotspot/src/share/vm/shark/sharkTopLevelBlock.hpp | 430 - shark/hotspot/src/share/vm/shark/sharkType.hpp | 112 shark/hotspot/src/share/vm/shark/sharkValue.cpp | 260 shark/hotspot/src/share/vm/shark/sharkValue.hpp | 332 shark/hotspot/src/share/vm/shark/shark_globals.cpp | 29 shark/hotspot/src/share/vm/shark/shark_globals.hpp | 54 diffs (truncated from 27972 to 500 lines): diff -r 0bfb4898c039 -r 20166bbb476b ChangeLog --- a/ChangeLog Wed Oct 20 14:45:55 2010 +0100 +++ b/ChangeLog Wed Nov 10 12:47:47 2010 +0000 @@ -1,4 +1,84 @@ 2010-10-19 Andrew John Hughes +2010-11-09 Andrew John Hughes + + * patches/6703377-freetypescaler.patch, + * patches/openjdk/6853592-badwindow-warning-fix.patch: + Drop patches applied upstream. + * Makefile.am: Drop above patches. + +2010-11-09 Andrew John Hughes + + * Makefile.am: + (JAXWS_DROP_URL): Switch to IcedTea server. + (JAXP_DROP_URL): Likewise. + (JAF_DROP_URL): Likewise. + +2010-11-08 Pavel Tisnovsky + + * Makefile.am: Add patch. + * patches/openjdk/6997495-test_correction_6857159.patch: + Testcase correction, now the regression test Test6857159 should + not timeout on most machines. + +2010-11-05 Denis Lila + + * Makefile.am: + Apply backported patch. + * patches/openjdk/6967436-6976265-6967434-pisces.patch: + Backport of the openjdk7 rendering engine, which fixes + various bugs and includes performance improvements. + +2010-11-05 Andrew John Hughes + + * hotspot.map: + Switch back to master now changes have been + pushed through (same content, different tree). + +2010-11-03 Dan Hor??k + + * patches/hotspot/hs19/params-cast-size_t.patch: + Add additional fixes for S390. + +2010-11-02 Andrew John Hughes + + * hotspot.map: Update md5sum for new + HotSpot. + +2010-11-02 Andrew John Hughes + + * Makefile.am: + (replace-hotspot): Don't hardcode 'master' + as the top-level directory, extract it + from the url. + * hotspot.map: Move to latest hs19 (currently + only on baseline tree) + +2010-11-02 Pavel Tisnovsky + + * Makefile.am: + * patches/icedtea-jtreg-international-fonts.patch: + Added new regression test + patches/icedtea-jtreg-international-fonts.patch + for checking if all non-Latin fonts are installed + and properly configured. + +2010-10-22 Andrew John Hughes + + * Makefile.am: Add new patch for hs19 + builds only. + * NEWS: Mention fix. + * patches/openjdk/6994130-ppc_fix.patch: + Fix build on PPC machines (thanks to Gary + Benson). + +2010-10-22 Andrew John Hughes + + * acinclude.m4: + (FIND_JAVAC): Don't fail if $JAVAC is empty, + ecj.jar can be used. + (FIND_ECJ_JAR): Check additional Gentoo locations. + Fail only if both $JAVAC is empty and ECJ_JAR is no. + +2010-10-20 Andrew John Hughes * INSTALL: Clarify HotSpot build documentation. * acinclude.m4: @@ -8,6 +88,110 @@ 2010-10-19 Andrew John Hughes + + * patches/security/20101012/6559775.patch, + * patches/security/20101012/6622002.patch, + * patches/security/20101012/6891766.patch, + * patches/security/20101012/6914943.patch, + * patches/security/20101012/6925710.patch, + * patches/security/20101012/6938813.patch, + * patches/security/20101012/6952017.patch, + * patches/security/20101012/6952603.patch, + * patches/security/20101012/6957564.patch, + * patches/security/20101012/6958060.patch, + * patches/security/20101012/6961084.patch, + * patches/security/20101012/6963023.patch, + * patches/security/20101012/6963285.patch, + * patches/security/20101012/6963489.patch, + * patches/security/20101012/6966692.patch, + * patches/security/20101012/6981426.patch, + * patches/security/20101012/6990437.patch: + Dropped; available upstream. + * Makefile.am: Drop above patches. + * patches/icedtea-lcms.patch: Rejigged against + upstream security patch. + +2010-10-18 Andrew John Hughes + + * patches/hotspot/hs19/alpha-fixes.patch, + * patches/hotspot/hs19/gcc-suffix.patch, + * patches/hotspot/hs19/params-cast-size_t.patch, + * patches/hotspot/hs19/print_lsb_release.patch, + * patches/hotspot/hs19/update-bootclasspath.patch: + Move to patches. hs19 is now the only option. + * patches/hotspot/original/alpha-fixes.patch, + * patches/hotspot/original/gcc-suffix.patch, + * patches/hotspot/original/params-cast-size_t.patch, + * patches/hotspot/original/print_lsb_release.patch, + * patches/hotspot/original/update-bootclasspath.patch: + Dropped; upstream moved from hs17 to hs19. + * patches/icedtea-shark-build.patch: + Applied upstream by Gary Benson. + * patches/security/20101012/6623943.patch: + Applied upstream by Omair Majid. + * shark/hotspot/make/linux/makefiles/shark.make, + * shark/hotspot/src/cpu/zero/vm/shark_globals_zero.hpp, + * shark/hotspot/src/share/vm/includeDB_shark, + * shark/hotspot/src/share/vm/shark/llvmHeaders.hpp, + * shark/hotspot/src/share/vm/shark/llvmValue.hpp, + * shark/hotspot/src/share/vm/shark/sharkBlock.cpp, + * shark/hotspot/src/share/vm/shark/sharkBlock.hpp, + * shark/hotspot/src/share/vm/shark/sharkBuilder.cpp, + * shark/hotspot/src/share/vm/shark/sharkBuilder.hpp, + * shark/hotspot/src/share/vm/shark/sharkCacheDecache.cpp, + * shark/hotspot/src/share/vm/shark/sharkCacheDecache.hpp, + * shark/hotspot/src/share/vm/shark/sharkCodeBuffer.hpp, + * shark/hotspot/src/share/vm/shark/sharkCompiler.cpp, + * shark/hotspot/src/share/vm/shark/sharkCompiler.hpp, + * shark/hotspot/src/share/vm/shark/sharkConstant.cpp, + * shark/hotspot/src/share/vm/shark/sharkConstant.hpp, + * shark/hotspot/src/share/vm/shark/sharkContext.cpp, + * shark/hotspot/src/share/vm/shark/sharkContext.hpp, + * shark/hotspot/src/share/vm/shark/sharkEntry.hpp, + * shark/hotspot/src/share/vm/shark/sharkFunction.cpp, + * shark/hotspot/src/share/vm/shark/sharkFunction.hpp, + * shark/hotspot/src/share/vm/shark/sharkInliner.cpp, + * shark/hotspot/src/share/vm/shark/sharkInliner.hpp, + * shark/hotspot/src/share/vm/shark/sharkIntrinsics.cpp, + * shark/hotspot/src/share/vm/shark/sharkIntrinsics.hpp, + * shark/hotspot/src/share/vm/shark/sharkInvariants.cpp, + * shark/hotspot/src/share/vm/shark/sharkInvariants.hpp, + * shark/hotspot/src/share/vm/shark/sharkMemoryManager.cpp, + * shark/hotspot/src/share/vm/shark/sharkMemoryManager.hpp, + * shark/hotspot/src/share/vm/shark/sharkNativeWrapper.cpp, + * shark/hotspot/src/share/vm/shark/sharkNativeWrapper.hpp, + * shark/hotspot/src/share/vm/shark/sharkRuntime.cpp, + * shark/hotspot/src/share/vm/shark/sharkRuntime.hpp, + * shark/hotspot/src/share/vm/shark/sharkStack.cpp, + * shark/hotspot/src/share/vm/shark/sharkStack.hpp, + * shark/hotspot/src/share/vm/shark/sharkState.cpp, + * shark/hotspot/src/share/vm/shark/sharkState.hpp, + * shark/hotspot/src/share/vm/shark/sharkStateScanner.cpp, + * shark/hotspot/src/share/vm/shark/sharkStateScanner.hpp, + * shark/hotspot/src/share/vm/shark/sharkTopLevelBlock.cpp, + * shark/hotspot/src/share/vm/shark/sharkTopLevelBlock.hpp, + * shark/hotspot/src/share/vm/shark/sharkType.hpp, + * shark/hotspot/src/share/vm/shark/sharkValue.cpp, + * shark/hotspot/src/share/vm/shark/sharkValue.hpp, + * shark/hotspot/src/share/vm/shark/shark_globals.cpp, + * shark/hotspot/src/share/vm/shark/shark_globals.hpp: + Shark is in HotSpot 19. + * Makefile.am: + (ICEDTEA_PATCHES): Remove $(HSBUILD) special casing. + Remove conditional !WITH_ALT_HSBUILD patches. + (ports): Drop !WITH_ALT_HSBUILD block. + (clean-ports): Likewise. + * hotspot.map: Remove hs19. + * patches/alpha-fixes.patch, + * patches/gcc-suffix.patch, + * patches/params-cast-size_t.patch, + * patches/print_lsb_release.patch, + * patches/update-bootclasspath.patch: + The hs19 patches moved above. + * acinclude.m4: + (AC_CHECK_WITH_HOTSPOT_BUILD): Default to original. 2010-10-19 Andrew John Hughes @@ -293,7 +477,6 @@ 2010-10-19 Andrew John Hughes + + * patches/icedtea-awt-window-size.patch, + * patches/openjdk/6969395-net_bugs.patch, + * patches/openjdk/6985992-test_6933784.patch: + Dropped; upstreamed. + * Makefile.am: Remove above patches. 2010-09-23 Andrew John Hughes @@ -895,6 +1086,15 @@ 2010-09-07 Andrew John Hughes + + * patches/openjdk/6438179-systray_check.patch: + Dropped, applied upstream. + * Makefile.am: Drop above patch and those brought + back by merge. Update JAXP tarball. + * patches/openjdk/6951319-sparc_build_fixes.patch: + Remove upstreamed parts. + 2010-09-03 Pavel Tisnovsky * Makefile.am: Fixed indentation, changes spaces to tab. @@ -944,7 +1144,7 @@ 2010-08-27 Deepak Bhole - * Makefile.am: + * Makefile.am: Add patch. * patches/opengl-jni-fix.patch: Fixed missing JNI link to native function OGLContext.getOGLIdString() which causes @@ -1031,6 +1231,22 @@ 2010-08-13 Andrew John Hughes + + * patches/openjdk/4356282-opentype.patch, + * patches/openjdk/6795060-icu_crash.patch, + * patches/openjdk/6954424-opentype_javadoc.patch: + Dropped, applied upstream. + * Makefile.am: + Remove above patches. + +2010-08-12 Andrew John Hughes + + * patches/openjdk/6678385-window_movement_crasher.patch: + Dropped, applied upstream. + * Makefile.am: + Remove above patch. 2010-08-09 Omair Majid @@ -1072,7 +1288,7 @@ 2010-08-09 Deepak Bhole @@ -1384,6 +1600,12 @@ 2010-07-28 Matthias Klose * NEWS: Add 1.8.1 entry. + +2010-07-26 Andrew John Hughes + + * patches/icedtea-jtreg-jrunscript.patch: + Regenerate after 50002bfcff96 from dcubed being + added to OpenJDK6. 2010-07-26 Andrew John Hughes @@ -1833,6 +2055,12 @@ 2010-07-08 Andrew John Hughes + + * patches/openjdk/6961732.patch: + Dropped, applied upstream. + * Makefile.am: Remove above patch. 2010-07-06 Andrew John Hughes @@ -10126,7 +10354,7 @@ 2009-04-07 Omair Majid - * patches/icedtea-jtreg-jrunscript.patch: New patch. Replaces + * patches/icedtea-jtreg-jrunscript.patch: New patch. Replaces jrunscriptTest.sh with a java version that isnt picky about int vs double changes. * Makefile.am (ICEDTEA_PATCHES): Apply the above. diff -r 0bfb4898c039 -r 20166bbb476b Makefile.am --- a/Makefile.am Wed Oct 20 14:45:55 2010 +0100 +++ b/Makefile.am Wed Nov 10 12:47:47 2010 +0000 @@ -11,15 +11,15 @@ CACAO_URL = $(CACAO_BASE_URL)/hg/cacao/a CACAO_URL = $(CACAO_BASE_URL)/hg/cacao/archive/$(CACAO_VERSION).tar.bz2 CACAO_SRC_ZIP = cacao-$(CACAO_VERSION).tar.bz2 -JAXWS_DROP_URL = https://jax-ws.dev.java.net/files/documents/4202/150724 +JAXWS_DROP_URL = http://icedtea.classpath.org/download/drops JAXWS_DROP_ZIP = jdk6-jaxws-b20.zip JAXWS_DROP_SHA256SUM = 0c460583898b968a58bf88eb53f90a0e34369e2562d65fb3a143512dfcaeb3eb -JAF_DROP_URL = https://jax-ws.dev.java.net/files/documents/4202/150725 +JAF_DROP_URL = http://icedtea.classpath.org/download/drops JAF_DROP_ZIP = jdk6-jaf-b20.zip JAF_DROP_SHA256SUM = 78c7b5c9d6271e88ee46abadd018a61f1e9645f8936cc8df1617e5f4f5074012 -JAXP_DROP_URL = https://jaxp.dev.java.net/files/documents/913/150648 -JAXP_DROP_ZIP = jdk6-jaxp-b20.zip -JAXP_DROP_SHA256SUM = d097627d4059d488c5a09d4e33cec275a193d4d8bc0fea8ef4f1337170904156 +JAXP_DROP_URL = http://icedtea.classpath.org/download/drops +JAXP_DROP_ZIP = jaxp-1_4_4.zip +JAXP_DROP_SHA256SUM = 10b203bec5b7d3dd8f515a9e098f80abc316faf977bcc220b56efe3dc6e9e5e9 OPENJDK_HG_URL = http://hg.openjdk.java.net/jdk6/jdk6 @@ -173,27 +173,7 @@ REWRITER_SRCS = $(abs_top_srcdir)/rewrit ICEDTEA_FSG_PATCHES = -BROKEN = - -SECURITY_PATCHES = \ - patches/security/20101012/6891766.patch \ - patches/security/20101012/6925710.patch \ - patches/security/20101012/6938813.patch \ - patches/security/20101012/6957564.patch \ - patches/security/20101012/6958060.patch \ - patches/security/20101012/6963023.patch \ - patches/security/20101012/6963489.patch \ - patches/security/20101012/6966692.patch \ - patches/security/20101012/6914943.patch \ - patches/security/20101012/6559775.patch \ - patches/security/20101012/6622002.patch \ - patches/security/20101012/6623943.patch \ - patches/security/20101012/6952017.patch \ - patches/security/20101012/6952603.patch \ - patches/security/20101012/6961084.patch \ - patches/security/20101012/6963285.patch \ - patches/security/20101012/6981426.patch \ - patches/security/20101012/6990437.patch +SECURITY_PATCHES = ICEDTEA_PATCHES = \ $(SECURITY_PATCHES) \ @@ -210,7 +190,7 @@ ICEDTEA_PATCHES = \ patches/icedtea-headers.patch \ patches/icedtea-headers-hotspot.patch \ patches/icedtea-gcc-suffix.patch \ - patches/hotspot/$(HSBUILD)/gcc-suffix.patch \ + patches/gcc-suffix.patch \ patches/icedtea-bytebuffer-compact.patch \ patches/memory-limits.patch \ patches/icedtea-sunsrc.patch \ @@ -218,18 +198,18 @@ ICEDTEA_PATCHES = \ patches/icedtea-javafiles.patch \ patches/icedtea-jvmtiEnv.patch \ patches/icedtea-lcms.patch \ - patches/hotspot/$(HSBUILD)/print_lsb_release.patch \ + patches/print_lsb_release.patch \ patches/icedtea-jpegclasses.patch \ patches/icedtea-uname.patch \ patches/icedtea-freetypeversion.patch \ patches/icedtea-nomotif-6706121.patch \ patches/icedtea-nomotif.patch \ patches/icedtea-nomotif-mtoolkit.patch \ - patches/hotspot/$(HSBUILD)/alpha-fixes.patch \ + patches/alpha-fixes.patch \ patches/icedtea-alt-jar.patch \ patches/icedtea-jdk-use-ssize_t.patch \ patches/icedtea-use-idx_t.patch \ - patches/hotspot/$(HSBUILD)/params-cast-size_t.patch \ + patches/params-cast-size_t.patch \ patches/icedtea-clean-crypto.patch \ patches/icedtea-arch.patch \ patches/icedtea-lc_ctype.patch \ @@ -245,7 +225,6 @@ ICEDTEA_PATCHES = \ patches/icedtea-sparc-ptracefix.patch \ patches/icedtea-sparc-trapsfix.patch \ patches/icedtea-demo-swingapplet.patch \ - patches/openjdk/6721088-awt_window_size.patch \ patches/icedtea-jtreg-6592792.patch \ patches/icedtea-s390-noinline.patch \ patches/icedtea-jtreg-dnd.patch \ @@ -261,14 +240,12 @@ ICEDTEA_PATCHES = \ patches/icedtea-parisc.patch \ patches/icedtea-sh4-support.patch \ patches/icedtea-policy-evaluation.patch \ - patches/hotspot/$(HSBUILD)/update-bootclasspath.patch \ + patches/update-bootclasspath.patch \ patches/libpng.patch \ patches/extensions/netx.patch \ patches/extensions/netx-umask.patch \ patches/icedtea-jtreg-httpTest.patch \ patches/arm.patch \ - patches/openjdk/6678385-window_movement_crasher.patch \ - patches/openjdk/6961732-negative_leading.patch \ patches/debug-dir.patch \ patches/no-sync.patch \ patches/icedtea-override-redirect-metacity.patch \ @@ -278,32 +255,16 @@ ICEDTEA_PATCHES = \ patches/fonts-rhel.patch \ patches/fonts-gentoo.patch \ patches/ipv4-mapped-ipv6-addresses.patch \ - patches/openjdk/6795060-icu_crash.patch \ - patches/openjdk/4356282-opentype.patch \ - patches/openjdk/6954424-opentype_javadoc.patch \ - patches/openjdk/6438179-systray_check.patch \ patches/icedtea-too-many-args.patch \ patches/icedtea-jtreg-OpenGLContextInit.patch \ - patches/openjdk/6969395-net_bugs.patch \ patches/openjdk/6510892-httpserver_test.patch \ patches/openjdk/6638712-wildcard_types.patch \ patches/openjdk/6650759-missing_inference.patch \ patches/numa_on_early_glibc.patch \ - patches/icedtea-shark-build.patch \ - patches/openjdk/6985992-test_6933784.patch \ - patches/openjdk/6853592-badwindow-warning-fix.patch \ - patches/6703377-freetypescaler.patch - -if !WITH_ALT_HSBUILD -ICEDTEA_PATCHES += \ - patches/shark_do_nothing_on_stub_frame.patch \ - patches/icedtea-shark-build-hotspot.patch \ - patches/shark.patch \ - patches/shark-debug-option.patch \ - patches/icedtea-shark.patch \ - patches/icedtea-linux-separate-debuginfo.patch \ - patches/openjdk/6951319-sparc_build_fixes.patch -endif + patches/icedtea-jtreg-international-fonts.patch \ + patches/openjdk/6967436-6976265-6967434-pisces.patch \ + patches/openjdk/6997495-test_correction_6857159.patch \ + patches/openjdk/6994130-ppc_fix.patch if WITH_RHINO ICEDTEA_PATCHES += \ @@ -869,8 +830,10 @@ if WITH_ALT_HSBUILD if test -e ${HOTSPOT_SRC_ZIP} ; \ then \ $(TAR) xf $(HOTSPOT_SRC_ZIP) ; \ - chmod -R ug+w master-* ; \ - mv master-$$($(AWK) 'version==$$1 {print $$3}' version=$(HSBUILD) \ + dir=$$($(AWK) 'version==$$1 {print gensub(/.*\/([^/]*)$$/,"\\1","g",$$2)}' \ + version=hs19 $(abs_top_srcdir)/hotspot.map) ; \ + chmod -R ug+w $$dir-* ; \ + mv $$dir-$$($(AWK) 'version==$$1 {print $$3}' version=$(HSBUILD) \ $(abs_top_srcdir)/hotspot.map) openjdk/hotspot ; \ fi ; \ fi ; @@ -883,23 +846,6 @@ clean-replace-hotspot: # Copy ports sources into tree stamps/ports.stamp: stamps/replace-hotspot.stamp -if !WITH_ALT_HSBUILD - for target in $(abs_top_srcdir)/shark/hotspot/make/*/makefiles/* \ - $(abs_top_srcdir)/shark/hotspot/src/*cpu/* \ - $(abs_top_srcdir)/shark/hotspot/src/share/vm/*; do \ - link=$$(dirname $$target | sed 's/^.*shark/openjdk/'); \ - cp -rv $$target $$link; \ - done - if ! test "x$(WITH_CACAO)" = "xno" ; then \ - mkdir -p openjdk/jdk/src/solaris/bin/$(BUILD_ARCH_DIR) ; \ - ln -sf $(abs_top_builddir)/jvm.cfg \ - openjdk/jdk/src/solaris/bin/$(BUILD_ARCH_DIR)/jvm.cfg ; \ - fi - if ! test "x$(WITH_CACAO)" = "xno"; then \ - ln -sf $(abs_top_builddir)/ergo.c \ - openjdk/jdk/src/solaris/bin/ergo_$(BUILD_ARCH_DIR).c; \ - fi -endif for target in $(abs_top_srcdir)/arm_port/hotspot/tools \ $(abs_top_srcdir)/arm_port/hotspot/src/*cpu/* ; do \ link=$$(dirname $$target | sed 's/^.*arm_port/openjdk/'); \ @@ -909,16 +855,6 @@ endif touch stamps/ports.stamp From bugzilla-daemon at icedtea.classpath.org Wed Nov 10 05:07:08 2010 From: bugzilla-daemon at icedtea.classpath.org (bugzilla-daemon at icedtea.classpath.org) Date: Wed, 10 Nov 2010 13:07:08 +0000 Subject: [Bug 589] icedtea6/1.8.2-3 on Maemo5 PR1.3: TV-Browser app crashes Message-ID: http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=589 ------- Comment #3 from gnu_andrew at member.fsf.org 2010-11-10 13:07 ------- I think you need to contact whoever is producing the Maemo binaries. IcedTea6 1.9 was released on the 7th of September and so is now over two months old. It was refreshed with security updates on the 13th of October, just under a month ago. With: java version "1.6.0_20" OpenJDK Runtime Environment (IcedTea6 1.9.1) (Gentoo build 1.6.0_20-b20) OpenJDK 64-Bit Server VM (build 19.0-b06, mixed mode) on x86_64, I was able to install TVBrowser and obtain UK TV listings without crashing. I would help if you could supply the hs_err file from the crash. The 1.9 series has a newer version of HotSpot (hs17 or hs19 depending on how it is configured) so you may find the problem is simply fixed there. -- Configure bugmail: http://icedtea.classpath.org/bugzilla/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are the assignee for the bug, or are watching the assignee. From ahughes at redhat.com Wed Nov 10 05:23:15 2010 From: ahughes at redhat.com (Dr Andrew John Hughes) Date: Wed, 10 Nov 2010 13:23:15 +0000 Subject: [Java] [ahughes@redhat.com: Re: /hg/openjdk6-mips: Add information in README and env.sh; added a...] In-Reply-To: References: <20101109140533.GA26522@loongson.cn> Message-ID: <20101110132315.GB30517@rivendell.middle-earth.co.uk> On 20:38 Wed 10 Nov , ?? wrote: > > aoqi: > > ???distro-pkg-dev at openjdk.java.net???????Andrew????? > > > > > > ----- Forwarded message from Dr Andrew John Hughes > > ----- > > > > Date: Tue, 9 Nov 2010 14:00:08 +0000 > > From: Dr Andrew John Hughes > > To: liuqi at icedtea.classpath.org > > Cc: distro-pkg-dev at openjdk.java.net > > Subject: Re: /hg/openjdk6-mips: Add information in README and env.sh; > > added > > a... > > User-Agent: Mutt/1.5.21 (2010-09-15) > > > > On 06:30 Tue 09 Nov , liuqi at icedtea.classpath.org wrote: > >> changeset 82bf91673f25 in /hg/openjdk6-mips > >> details: > >> http://icedtea.classpath.org/hg/openjdk6-mips?cmd=changeset;node=82bf91673f25 > >> author: Ao Qi > >> date: Tue Nov 09 13:21:20 2010 +0800 > >> > >> Add information in README and env.sh; added a missing file to make > >> the completed build. > >> > > > > Why have you added back the information about binary plugs? These haven't > > been required for years. > > Our port is based on OpenJDK6_b18, so the binary plugs are needed during > building jdk. > No, they aren't. That's why the build documentation was updated to begin with: http://hg.openjdk.java.net/jdk6/jdk6/rev/073cdf699427 Even b16 doesn't need binary blobs. Not sure about ones before that. > > > >> > >> diffstat: > >> > >> 5 files changed, 91 insertions(+), 52 deletions(-) > >> README | 32 ++++++++++++++++++++++++++++-- > >> env.sh | 23 +++++++++++++++++++++ > >> env_debug.sh | 27 ------------------------- > >> env_product.sh | 23 --------------------- > >> jdk/src/solaris/bin/mips64/jvm.cfg | 38 > >> ++++++++++++++++++++++++++++++++++++ > >> > >> diffs (181 lines): > >> > >> diff -r 8ef762f87d0e -r 82bf91673f25 README > >> --- a/README Mon Nov 08 19:53:05 2010 +0800 > >> +++ b/README Tue Nov 09 13:21:20 2010 +0800 > >> @@ -6,20 +6,48 @@ README: > >> "corba", "jaxws" and "jaxp". > >> > >> See http://openjdk.java.net/ for more information about the OpenJDK. > >> + See http://icedtea.classpath.org/wiki/MIPSPort for more information > >> about the OpenJDK MIPS Port. > >> > >> Simple Build Instructions: > >> > >> 1. Download and install a JDK 6 from > >> http://java.sun.com/javase/downloads/index.jsp > >> Set the environment variable ALT_BOOTDIR to the location of this > >> JDK 6. > >> + If using Debian: > >> + apt-get install openjdk-6-jdk > >> + export ALT_BOOTDIR=/usr/lib/jvm/java-6-openjdk > >> > >> - 2. Check the sanity of doing a build with the current machine: > >> + 2. Download Binary Plugs, go to the OpenJDK site and select the > >> "Bundles(6)" link and download > >> + the binaryplugs. The file downloaded is a jar file that must be > >> extracted by running the jar > >> + file with: > >> + java -jar jdk-6-ea-plug-bnn-os-arch-dd_month_year.jar > >> + Set the environment variable ALT_BINARY_PLUGS_PATH to the root of > >> this installation. > >> + > >> + 3. Set other environment variables. If using Debian: > >> + source env.sh > >> + Check the sanity of doing a build with the current machine: > >> gnumake sanity > >> See README-builds.html if you run into problems. > >> > >> - 3. Do a complete build of the jdk: > >> + 4. Do a complete build of the jdk: > >> gnumake all > >> + When building jaxp, it seems a bug that jdk6-jaxp-2009_10_13.zip > >> cannot be downloaded. > >> + The workaround is to download it by "wget ", and set ALT_DROPS_DIR > >> to the dir where the zip is: > >> + export ALT_DROPS_DIR=~/zip_dir > >> The resulting JDK image should be found in build/*/j2sdk-image > >> + > >> + 5. By setting the environment variables below, components can be > >> built separately. > >> + For example: > >> + export BUILD_HOTSPOT=true > >> + export BUILD_LANGTOOLS=false > >> + export BUILD_CORBA=false > >> + export BUILD_JAXP=false > >> + export BUILD_JAXWS=false > >> + export BUILD_JDK=false > >> + export BUILD_DEPLOY=false > >> + > >> + 6. The default hotspot-build is all_product. Set DEBUG_NAME would > >> change the target: > >> + export DEBUG_NAME=debug > >> > >> where gnumake is GNU make 3.78.1 or newer, /usr/bin/make on Linux and > >> /usr/sfw/bin/gmake or /opt/sfw/bin/gmake on Solaris. > >> diff -r 8ef762f87d0e -r 82bf91673f25 env.sh > >> --- /dev/null Thu Jan 01 00:00:00 1970 +0000 > >> +++ b/env.sh Tue Nov 09 13:21:20 2010 +0800 > >> @@ -0,0 +1,23 @@ > >> +export LANG=C > >> +export > >> PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/lib/jvm/java-6-openjdk/bin > >> +export ALT_BOOTDIR=/usr/lib/jvm/java-6-openjdk > >> +export ALT_BINARY_PLUGS_PATH=~/openjdk-binary-plugs > >> +export ARCH_DATA_MODEL=32 > >> + > >> +unset CLASSPATH > >> +unset JAVA_HOME > >> + > >> +#The default hotspot-build is all_product. Setting DEBUG_NAME would > >> change the target. > >> +#export DEBUG_NAME=debug > >> + > >> +# By setting the environment variables below, components can be built > >> separately. > >> +#export BUILD_LANGTOOLS=false > >> +#export BUILD_CORBA=false > >> +#export BUILD_JAXP=false > >> +#export BUILD_JAXWS=false > >> +#export BUILD_JDK=false > >> +#export BUILD_DEPLOY=false > >> + > >> +# When building jaxp, it seems a bug that jdk6-jaxp-2009_10_13.zip > >> cannot be downloaded. > >> +# The workaround is to download it by "wget ", and set ALT_DROPS_DIR to > >> the dir where the zip is. > >> +#export ALT_DROPS_DIR=~/zip_dir > >> diff -r 8ef762f87d0e -r 82bf91673f25 env_debug.sh > >> --- a/env_debug.sh Mon Nov 08 19:53:05 2010 +0800 > >> +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 > >> @@ -1,27 +0,0 @@ > >> -export LANG=C > >> -export LC_ALL=C > >> -export > >> PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/lib/jvm/java-6-openjdk/bin > >> -export ALT_BOOTDIR=/usr/lib/jvm/java-6-openjdk > >> -#export ALT_BOOTDIR=/home/loongson/java/j2sdk-gs2 > >> -export ALT_BINARY_PLUGS_PATH=/opt/java/openjdk-binary-plugs > >> -#export ALT_JDK_IMPORT_PATH=/usr/lib/jvm/java-6-openjdk > >> -export ARCH_DATA_MODEL=32 > >> - > >> -#The default hotspot-build is all_product. Setting DEBUG_NAME would > >> change the target. > >> -export DEBUG_NAME=debug > >> - > >> -# If want to build entire JDK, set all envs below true. > >> -export BUILD_LANGTOOLS=false > >> -export BUILD_CORBA=false > >> -export BUILD_JAXP=false > >> -export BUILD_JAXWS=false > >> -# When building jaxp, it seems a bug that jdk6-jaxp-2009_10_13.zip > >> cannot be downloaded. > >> -# The workaround is to download it by "wget ", and set ALT_DROPS_DIR to > >> the dir where the zip is. > >> -#export ALT_DROPS_DIR=~/zip_dir > >> - > >> -export BUILD_MOTIF=false > >> -export BUILD_JDK=false > >> -export BUILD_DEPLOY=false > >> - > >> -unset CLASSPATH > >> -unset JAVA_HOME > >> diff -r 8ef762f87d0e -r 82bf91673f25 env_product.sh > >> --- a/env_product.sh Mon Nov 08 19:53:05 2010 +0800 > >> +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 > >> @@ -1,23 +0,0 @@ > >> -export LC_ALL=C > >> -export > >> PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/lib/jvm/java-6-openjdk/bin > >> -export ALT_BOOTDIR=/usr/lib/jvm/java-6-openjdk > >> -export ALT_BINARY_PLUGS_PATH=/opt/java/openjdk-binary-plugs > >> -export ARCH_DATA_MODEL=32 > >> - > >> -#The default hotspot-build is all_product. Setting DEBUG_NAME would > >> change the target. > >> - > >> -# If want to build entire JDK, set all envs below true. > >> -export BUILD_LANGTOOLS=false > >> -export BUILD_CORBA=false > >> -export BUILD_JAXP=false > >> -export BUILD_JAXWS=false > >> -# When building jaxp, it seems a bug that jdk6-jaxp-2009_10_13.zip > >> cannot be downloaded. > >> -# The workaround is to download it by "wget ", and set ALT_DROPS_DIR to > >> the dir where the zip is. > >> -#export ALT_DROPS_DIR=~/zip_dir > >> - > >> -export BUILD_MOTIF=false > >> -export BUILD_JDK=false > >> -export BUILD_DEPLOY=false > >> - > >> -unset CLASSPATH > >> -unset JAVA_HOME > >> diff -r 8ef762f87d0e -r 82bf91673f25 jdk/src/solaris/bin/mips64/jvm.cfg > >> --- /dev/null Thu Jan 01 00:00:00 1970 +0000 > >> +++ b/jdk/src/solaris/bin/mips64/jvm.cfg Tue Nov 09 13:21:20 2010 +0800 > >> @@ -0,0 +1,38 @@ > >> +# Copyright 2001-2003 Sun Microsystems, Inc. All Rights Reserved. > >> +# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. > >> +# > >> +# This code is free software; you can redistribute it and/or modify it > >> +# under the terms of the GNU General Public License version 2 only, as > >> +# published by the Free Software Foundation. Sun designates this > >> +# particular file as subject to the "Classpath" exception as provided > >> +# by Sun in the LICENSE file that accompanied this code. > >> +# > >> +# This code is distributed in the hope that it will be useful, but > >> WITHOUT > >> +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or > >> +# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License > >> +# version 2 for more details (a copy is included in the LICENSE file > >> that > >> +# accompanied this code). > >> +# > >> +# You should have received a copy of the GNU General Public License > >> version > >> +# 2 along with this work; if not, write to the Free Software > >> Foundation, > >> +# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. > >> +# > >> +# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa > >> Clara, > >> +# CA 95054 USA or visit www.sun.com if you need additional information > >> or > >> +# have any questions. > >> +# > >> +# List of JVMs that can be used as an option to java, javac, etc. > >> +# Order is important -- first in this list is the default JVM. > >> +# NOTE that this both this file and its format are UNSUPPORTED and > >> +# WILL GO AWAY in a future release. > >> +# > >> +# You may also select a JVM in an arbitrary location with the > >> +# "-XXaltjvm=" option, but that too is unsupported > >> +# and may not be available in a future release. > >> +# > >> +-client IF_SERVER_CLASS -server > >> +-server KNOWN > >> +-hotspot ALIASED_TO -client > >> +-classic WARN > >> +-native ERROR > >> +-green ERROR > > > > -- > > Andrew :) > > > > Free Java Software Engineer > > Red Hat, Inc. (http://www.redhat.com) > > > > Support Free Java! > > Contribute to GNU Classpath and the OpenJDK > > http://www.gnu.org/software/classpath > > http://openjdk.java.net > > PGP Key: 94EFD9D8 (http://subkeys.pgp.net) > > Fingerprint = F8EF F1EA 401E 2E60 15FA 7927 142C 2591 94EF D9D8 > > > > ----- End forwarded message ----- > > > > -- > > LIU Qi > > > > liuqi at loongson.cn > > liuqi82 at gmail.com > > > > Loongson Technology Co. Ltd. > > > > PGP Key fingerprint: > > 3D29 FDFD AFB3 225D B744 > > 7FAB 51C7 4820 63BA 272F > > _______________________________________________ > > Java mailing list > > Java at lists.loongson.cn > > http://lists.loongson.cn/cgi-bin/mailman/listinfo/java > > > > -- Andrew :) Free Java Software Engineer Red Hat, Inc. (http://www.redhat.com) Support Free Java! Contribute to GNU Classpath and the OpenJDK http://www.gnu.org/software/classpath http://openjdk.java.net PGP Key: 94EFD9D8 (http://subkeys.pgp.net) Fingerprint = F8EF F1EA 401E 2E60 15FA 7927 142C 2591 94EF D9D8 From aoqi at loongson.cn Wed Nov 10 06:08:43 2010 From: aoqi at loongson.cn (Ao Qi) Date: Wed, 10 Nov 2010 22:08:43 +0800 (CST) Subject: [Java] [ahughes@redhat.com: Re: /hg/openjdk6-mips: Add information in README and env.sh; added a...] In-Reply-To: <20101110132315.GB30517@rivendell.middle-earth.co.uk> References: <20101109140533.GA26522@loongson.cn> <20101110132315.GB30517@rivendell.middle-earth.co.uk> Message-ID: <94c299efeb985f1a9324da8f5b6515aa.squirrel@mail.loongson.cn> > On 20:38 Wed 10 Nov , ?????? wrote: >> > aoqi: >> > ?????????distro-pkg-dev at openjdk.java.net?????????????????????Andrew??????????????� >> > >> > >> > ----- Forwarded message from Dr Andrew John Hughes >> >> > ----- >> > >> > Date: Tue, 9 Nov 2010 14:00:08 +0000 >> > From: Dr Andrew John Hughes >> > To: liuqi at icedtea.classpath.org >> > Cc: distro-pkg-dev at openjdk.java.net >> > Subject: Re: /hg/openjdk6-mips: Add information in README and env.sh; >> > added >> > a... >> > User-Agent: Mutt/1.5.21 (2010-09-15) >> > >> > On 06:30 Tue 09 Nov , liuqi at icedtea.classpath.org wrote: >> >> changeset 82bf91673f25 in /hg/openjdk6-mips >> >> details: >> >> http://icedtea.classpath.org/hg/openjdk6-mips?cmd=changeset;node=82bf91673f25 >> >> author: Ao Qi >> >> date: Tue Nov 09 13:21:20 2010 +0800 >> >> >> >> Add information in README and env.sh; added a missing file to make >> >> the completed build. >> >> >> > >> > Why have you added back the information about binary plugs? These >> haven't >> > been required for years. >> >> Our port is based on OpenJDK6_b18, so the binary plugs are needed during >> building jdk. >> > > No, they aren't. That's why the build documentation was updated to begin > with: > > http://hg.openjdk.java.net/jdk6/jdk6/rev/073cdf699427 > > Even b16 doesn't need binary blobs. Not sure about ones before that. > Thanks a lot for your comments! I will modify it. >> > >> >> >> >> diffstat: >> >> >> >> 5 files changed, 91 insertions(+), 52 deletions(-) >> >> README | 32 >> ++++++++++++++++++++++++++++-- >> >> env.sh | 23 +++++++++++++++++++++ >> >> env_debug.sh | 27 ------------------------- >> >> env_product.sh | 23 --------------------- >> >> jdk/src/solaris/bin/mips64/jvm.cfg | 38 >> >> ++++++++++++++++++++++++++++++++++++ >> >> >> >> diffs (181 lines): >> >> >> >> diff -r 8ef762f87d0e -r 82bf91673f25 README >> >> --- a/README Mon Nov 08 19:53:05 2010 +0800 >> >> +++ b/README Tue Nov 09 13:21:20 2010 +0800 >> >> @@ -6,20 +6,48 @@ README: >> >> "corba", "jaxws" and "jaxp". >> >> >> >> See http://openjdk.java.net/ for more information about the >> OpenJDK. >> >> + See http://icedtea.classpath.org/wiki/MIPSPort for more >> information >> >> about the OpenJDK MIPS Port. >> >> >> >> Simple Build Instructions: >> >> >> >> 1. Download and install a JDK 6 from >> >> http://java.sun.com/javase/downloads/index.jsp >> >> Set the environment variable ALT_BOOTDIR to the location of >> this >> >> JDK 6. >> >> + If using Debian: >> >> + apt-get install openjdk-6-jdk >> >> + export ALT_BOOTDIR=/usr/lib/jvm/java-6-openjdk >> >> >> >> - 2. Check the sanity of doing a build with the current machine: >> >> + 2. Download Binary Plugs, go to the OpenJDK site and select the >> >> "Bundles(6)" link and download >> >> + the binaryplugs. The file downloaded is a jar file that must be >> >> extracted by running the jar >> >> + file with: >> >> + java -jar jdk-6-ea-plug-bnn-os-arch-dd_month_year.jar >> >> + Set the environment variable ALT_BINARY_PLUGS_PATH to the root >> of >> >> this installation. >> >> + >> >> + 3. Set other environment variables. If using Debian: >> >> + source env.sh >> >> + Check the sanity of doing a build with the current machine: >> >> gnumake sanity >> >> See README-builds.html if you run into problems. >> >> >> >> - 3. Do a complete build of the jdk: >> >> + 4. Do a complete build of the jdk: >> >> gnumake all >> >> + When building jaxp, it seems a bug that >> jdk6-jaxp-2009_10_13.zip >> >> cannot be downloaded. >> >> + The workaround is to download it by "wget ", and set >> ALT_DROPS_DIR >> >> to the dir where the zip is: >> >> + export ALT_DROPS_DIR=~/zip_dir >> >> The resulting JDK image should be found in build/*/j2sdk-image >> >> + >> >> + 5. By setting the environment variables below, components can be >> >> built separately. >> >> + For example: >> >> + export BUILD_HOTSPOT=true >> >> + export BUILD_LANGTOOLS=false >> >> + export BUILD_CORBA=false >> >> + export BUILD_JAXP=false >> >> + export BUILD_JAXWS=false >> >> + export BUILD_JDK=false >> >> + export BUILD_DEPLOY=false >> >> + >> >> + 6. The default hotspot-build is all_product. Set DEBUG_NAME would >> >> change the target: >> >> + export DEBUG_NAME=debug >> >> >> >> where gnumake is GNU make 3.78.1 or newer, /usr/bin/make on Linux >> and >> >> /usr/sfw/bin/gmake or /opt/sfw/bin/gmake on Solaris. >> >> diff -r 8ef762f87d0e -r 82bf91673f25 env.sh >> >> --- /dev/null Thu Jan 01 00:00:00 1970 +0000 >> >> +++ b/env.sh Tue Nov 09 13:21:20 2010 +0800 >> >> @@ -0,0 +1,23 @@ >> >> +export LANG=C >> >> +export >> >> PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/lib/jvm/java-6-openjdk/bin >> >> +export ALT_BOOTDIR=/usr/lib/jvm/java-6-openjdk >> >> +export ALT_BINARY_PLUGS_PATH=~/openjdk-binary-plugs >> >> +export ARCH_DATA_MODEL=32 >> >> + >> >> +unset CLASSPATH >> >> +unset JAVA_HOME >> >> + >> >> +#The default hotspot-build is all_product. Setting DEBUG_NAME would >> >> change the target. >> >> +#export DEBUG_NAME=debug >> >> + >> >> +# By setting the environment variables below, components can be >> built >> >> separately. >> >> +#export BUILD_LANGTOOLS=false >> >> +#export BUILD_CORBA=false >> >> +#export BUILD_JAXP=false >> >> +#export BUILD_JAXWS=false >> >> +#export BUILD_JDK=false >> >> +#export BUILD_DEPLOY=false >> >> + >> >> +# When building jaxp, it seems a bug that jdk6-jaxp-2009_10_13.zip >> >> cannot be downloaded. >> >> +# The workaround is to download it by "wget ", and set ALT_DROPS_DIR >> to >> >> the dir where the zip is. >> >> +#export ALT_DROPS_DIR=~/zip_dir >> >> diff -r 8ef762f87d0e -r 82bf91673f25 env_debug.sh >> >> --- a/env_debug.sh Mon Nov 08 19:53:05 2010 +0800 >> >> +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 >> >> @@ -1,27 +0,0 @@ >> >> -export LANG=C >> >> -export LC_ALL=C >> >> -export >> >> PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/lib/jvm/java-6-openjdk/bin >> >> -export ALT_BOOTDIR=/usr/lib/jvm/java-6-openjdk >> >> -#export ALT_BOOTDIR=/home/loongson/java/j2sdk-gs2 >> >> -export ALT_BINARY_PLUGS_PATH=/opt/java/openjdk-binary-plugs >> >> -#export ALT_JDK_IMPORT_PATH=/usr/lib/jvm/java-6-openjdk >> >> -export ARCH_DATA_MODEL=32 >> >> - >> >> -#The default hotspot-build is all_product. Setting DEBUG_NAME would >> >> change the target. >> >> -export DEBUG_NAME=debug >> >> - >> >> -# If want to build entire JDK, set all envs below true. >> >> -export BUILD_LANGTOOLS=false >> >> -export BUILD_CORBA=false >> >> -export BUILD_JAXP=false >> >> -export BUILD_JAXWS=false >> >> -# When building jaxp, it seems a bug that jdk6-jaxp-2009_10_13.zip >> >> cannot be downloaded. >> >> -# The workaround is to download it by "wget ", and set ALT_DROPS_DIR >> to >> >> the dir where the zip is. >> >> -#export ALT_DROPS_DIR=~/zip_dir >> >> - >> >> -export BUILD_MOTIF=false >> >> -export BUILD_JDK=false >> >> -export BUILD_DEPLOY=false >> >> - >> >> -unset CLASSPATH >> >> -unset JAVA_HOME >> >> diff -r 8ef762f87d0e -r 82bf91673f25 env_product.sh >> >> --- a/env_product.sh Mon Nov 08 19:53:05 2010 +0800 >> >> +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 >> >> @@ -1,23 +0,0 @@ >> >> -export LC_ALL=C >> >> -export >> >> PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/lib/jvm/java-6-openjdk/bin >> >> -export ALT_BOOTDIR=/usr/lib/jvm/java-6-openjdk >> >> -export ALT_BINARY_PLUGS_PATH=/opt/java/openjdk-binary-plugs >> >> -export ARCH_DATA_MODEL=32 >> >> - >> >> -#The default hotspot-build is all_product. Setting DEBUG_NAME would >> >> change the target. >> >> - >> >> -# If want to build entire JDK, set all envs below true. >> >> -export BUILD_LANGTOOLS=false >> >> -export BUILD_CORBA=false >> >> -export BUILD_JAXP=false >> >> -export BUILD_JAXWS=false >> >> -# When building jaxp, it seems a bug that jdk6-jaxp-2009_10_13.zip >> >> cannot be downloaded. >> >> -# The workaround is to download it by "wget ", and set ALT_DROPS_DIR >> to >> >> the dir where the zip is. >> >> -#export ALT_DROPS_DIR=~/zip_dir >> >> - >> >> -export BUILD_MOTIF=false >> >> -export BUILD_JDK=false >> >> -export BUILD_DEPLOY=false >> >> - >> >> -unset CLASSPATH >> >> -unset JAVA_HOME >> >> diff -r 8ef762f87d0e -r 82bf91673f25 >> jdk/src/solaris/bin/mips64/jvm.cfg >> >> --- /dev/null Thu Jan 01 00:00:00 1970 +0000 >> >> +++ b/jdk/src/solaris/bin/mips64/jvm.cfg Tue Nov 09 13:21:20 2010 >> +0800 >> >> @@ -0,0 +1,38 @@ >> >> +# Copyright 2001-2003 Sun Microsystems, Inc. All Rights Reserved. >> >> +# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. >> >> +# >> >> +# This code is free software; you can redistribute it and/or modify >> it >> >> +# under the terms of the GNU General Public License version 2 only, >> as >> >> +# published by the Free Software Foundation. Sun designates this >> >> +# particular file as subject to the "Classpath" exception as >> provided >> >> +# by Sun in the LICENSE file that accompanied this code. >> >> +# >> >> +# This code is distributed in the hope that it will be useful, but >> >> WITHOUT >> >> +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY >> or >> >> +# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public >> License >> >> +# version 2 for more details (a copy is included in the LICENSE file >> >> that >> >> +# accompanied this code). >> >> +# >> >> +# You should have received a copy of the GNU General Public License >> >> version >> >> +# 2 along with this work; if not, write to the Free Software >> >> Foundation, >> >> +# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. >> >> +# >> >> +# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa >> >> Clara, >> >> +# CA 95054 USA or visit www.sun.com if you need additional >> information >> >> or >> >> +# have any questions. >> >> +# >> >> +# List of JVMs that can be used as an option to java, javac, etc. >> >> +# Order is important -- first in this list is the default JVM. >> >> +# NOTE that this both this file and its format are UNSUPPORTED and >> >> +# WILL GO AWAY in a future release. >> >> +# >> >> +# You may also select a JVM in an arbitrary location with the >> >> +# "-XXaltjvm=" option, but that too is unsupported >> >> +# and may not be available in a future release. >> >> +# >> >> +-client IF_SERVER_CLASS -server >> >> +-server KNOWN >> >> +-hotspot ALIASED_TO -client >> >> +-classic WARN >> >> +-native ERROR >> >> +-green ERROR >> > >> > -- >> > Andrew :) >> > >> > Free Java Software Engineer >> > Red Hat, Inc. (http://www.redhat.com) >> > >> > Support Free Java! >> > Contribute to GNU Classpath and the OpenJDK >> > http://www.gnu.org/software/classpath >> > http://openjdk.java.net >> > PGP Key: 94EFD9D8 (http://subkeys.pgp.net) >> > Fingerprint = F8EF F1EA 401E 2E60 15FA 7927 142C 2591 94EF D9D8 >> > >> > ----- End forwarded message ----- >> > >> > -- >> > LIU Qi >> > >> > liuqi at loongson.cn >> > liuqi82 at gmail.com >> > >> > Loongson Technology Co. Ltd. >> > >> > PGP Key fingerprint: >> > 3D29 FDFD AFB3 225D B744 >> > 7FAB 51C7 4820 63BA 272F >> > _______________________________________________ >> > Java mailing list >> > Java at lists.loongson.cn >> > http://lists.loongson.cn/cgi-bin/mailman/listinfo/java >> > >> >> > > -- > Andrew :) > > Free Java Software Engineer > Red Hat, Inc. (http://www.redhat.com) > > Support Free Java! > Contribute to GNU Classpath and the OpenJDK > http://www.gnu.org/software/classpath > http://openjdk.java.net > PGP Key: 94EFD9D8 (http://subkeys.pgp.net) > Fingerprint = F8EF F1EA 401E 2E60 15FA 7927 142C 2591 94EF D9D8 > From andrew at icedtea.classpath.org Wed Nov 10 06:13:50 2010 From: andrew at icedtea.classpath.org (andrew at icedtea.classpath.org) Date: Wed, 10 Nov 2010 14:13:50 +0000 Subject: /hg/icedtea6: Backport BigDecimal/Integer performance improvements. Message-ID: changeset 2fafb0bc27f2 in /hg/icedtea6 details: http://icedtea.classpath.org/hg/icedtea6?cmd=changeset;node=2fafb0bc27f2 author: Andrew John Hughes date: Wed Nov 10 14:13:42 2010 +0000 Backport BigDecimal/Integer performance improvements. 2010-11-10 Andrew John Hughes * Makefile.am: Add BigDecimal/Integer performance improvement patches. * patches/openjdk/6622432-bigdecimal_performance.patch, * patches/openjdk/6850606-bigdecimal_regression.patch, * patches/openjdk/6876282-bigdecimal_divide.patch: Added. diffstat: 5 files changed, 4457 insertions(+), 1 deletion(-) ChangeLog | 9 Makefile.am | 5 patches/openjdk/6622432-bigdecimal_performance.patch | 4211 ++++++++++++++++++ patches/openjdk/6850606-bigdecimal_regression.patch | 144 patches/openjdk/6876282-bigdecimal_divide.patch | 89 diffs (truncated from 4487 to 500 lines): diff -r 72de51f0a744 -r 2fafb0bc27f2 ChangeLog --- a/ChangeLog Tue Nov 09 14:53:31 2010 +0000 +++ b/ChangeLog Wed Nov 10 14:13:42 2010 +0000 @@ -1,3 +1,12 @@ 2010-11-09 Andrew John Hughes + + * Makefile.am: Add BigDecimal/Integer performance + improvement patches. + * patches/openjdk/6622432-bigdecimal_performance.patch, + * patches/openjdk/6850606-bigdecimal_regression.patch, + * patches/openjdk/6876282-bigdecimal_divide.patch: + Added. + 2010-11-09 Andrew John Hughes * Makefile.am: diff -r 72de51f0a744 -r 2fafb0bc27f2 Makefile.am --- a/Makefile.am Tue Nov 09 14:53:31 2010 +0000 +++ b/Makefile.am Wed Nov 10 14:13:42 2010 +0000 @@ -295,7 +295,10 @@ ICEDTEA_PATCHES = \ patches/6703377-freetypescaler.patch \ patches/icedtea-jtreg-international-fonts.patch \ patches/openjdk/6967436-6976265-6967434-pisces.patch \ - patches/openjdk/6997495-test_correction_6857159.patch + patches/openjdk/6997495-test_correction_6857159.patch \ + patches/openjdk/6622432-bigdecimal_performance.patch \ + patches/openjdk/6850606-bigdecimal_regression.patch \ + patches/openjdk/6876282-bigdecimal_divide.patch if WITH_ALT_HSBUILD ICEDTEA_PATCHES += \ diff -r 72de51f0a744 -r 2fafb0bc27f2 patches/openjdk/6622432-bigdecimal_performance.patch --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/patches/openjdk/6622432-bigdecimal_performance.patch Wed Nov 10 14:13:42 2010 +0000 @@ -0,0 +1,4211 @@ +# HG changeset patch +# User aph +# Date 1288788231 0 +# Node ID cadc64fc2282d7704a3c80799a5723b502b7d69f +# Parent 2b1a7d4b9ac69c2366f38b5b0e9ebcf61f1e3277 +6622432: RFE: Performance improvements to java.math.BigDecimal +Reviewed-by: darcy + +diff -r 2b1a7d4b9ac6 -r cadc64fc2282 src/share/classes/java/math/BigDecimal.java +--- openjdk.orig/jdk/src/share/classes/java/math/BigDecimal.java Fri Jun 25 11:53:15 2010 -0700 ++++ openjdk/jdk/src/share/classes/java/math/BigDecimal.java Wed Nov 03 12:43:51 2010 +0000 +@@ -29,6 +29,9 @@ + + package java.math; + ++import java.util.Arrays; ++import static java.math.BigInteger.LONG_MASK; ++ + /** + * Immutable, arbitrary-precision signed decimal numbers. A + * {@code BigDecimal} consists of an arbitrary precision integer +@@ -229,8 +232,8 @@ + * @serial + * @see #scale + */ +- private int scale = 0; // Note: this may have any value, so +- // calculations must be done in longs ++ private int scale; // Note: this may have any value, so ++ // calculations must be done in longs + /** + * The number of decimal digits in this BigDecimal, or 0 if the + * number of digits are not known (lookaside information). If +@@ -240,25 +243,25 @@ + * + * @since 1.5 + */ +- private volatile transient int precision = 0; ++ private transient int precision; + + /** + * Used to store the canonical string representation, if computed. + */ +- private volatile transient String stringCache = null; ++ private transient String stringCache; + + /** + * Sentinel value for {@link #intCompact} indicating the + * significand information is only available from {@code intVal}. + */ +- private static final long INFLATED = Long.MIN_VALUE; ++ static final long INFLATED = Long.MIN_VALUE; + + /** + * If the absolute value of the significand of this BigDecimal is + * less than or equal to {@code Long.MAX_VALUE}, the value can be + * compactly stored in this field and used in computations. + */ +- private transient long intCompact = INFLATED; ++ private transient long intCompact; + + // All 18-digit base ten strings fit into a long; not all 19-digit + // strings will +@@ -269,19 +272,47 @@ + /* Appease the serialization gods */ + private static final long serialVersionUID = 6108874887143696463L; + ++ private static final ThreadLocal ++ threadLocalStringBuilderHelper = new ThreadLocal() { ++ @Override ++ protected StringBuilderHelper initialValue() { ++ return new StringBuilderHelper(); ++ } ++ }; ++ + // Cache of common small BigDecimal values. + private static final BigDecimal zeroThroughTen[] = { +- new BigDecimal(BigInteger.ZERO, 0, 0), +- new BigDecimal(BigInteger.ONE, 1, 0), +- new BigDecimal(BigInteger.valueOf(2), 2, 0), +- new BigDecimal(BigInteger.valueOf(3), 3, 0), +- new BigDecimal(BigInteger.valueOf(4), 4, 0), +- new BigDecimal(BigInteger.valueOf(5), 5, 0), +- new BigDecimal(BigInteger.valueOf(6), 6, 0), +- new BigDecimal(BigInteger.valueOf(7), 7, 0), +- new BigDecimal(BigInteger.valueOf(8), 8, 0), +- new BigDecimal(BigInteger.valueOf(9), 9, 0), +- new BigDecimal(BigInteger.TEN, 10, 0), ++ new BigDecimal(BigInteger.ZERO, 0, 0, 1), ++ new BigDecimal(BigInteger.ONE, 1, 0, 1), ++ new BigDecimal(BigInteger.valueOf(2), 2, 0, 1), ++ new BigDecimal(BigInteger.valueOf(3), 3, 0, 1), ++ new BigDecimal(BigInteger.valueOf(4), 4, 0, 1), ++ new BigDecimal(BigInteger.valueOf(5), 5, 0, 1), ++ new BigDecimal(BigInteger.valueOf(6), 6, 0, 1), ++ new BigDecimal(BigInteger.valueOf(7), 7, 0, 1), ++ new BigDecimal(BigInteger.valueOf(8), 8, 0, 1), ++ new BigDecimal(BigInteger.valueOf(9), 9, 0, 1), ++ new BigDecimal(BigInteger.TEN, 10, 0, 2), ++ }; ++ ++ // Cache of zero scaled by 0 - 15 ++ private static final BigDecimal[] ZERO_SCALED_BY = { ++ zeroThroughTen[0], ++ new BigDecimal(BigInteger.ZERO, 0, 1, 1), ++ new BigDecimal(BigInteger.ZERO, 0, 2, 1), ++ new BigDecimal(BigInteger.ZERO, 0, 3, 1), ++ new BigDecimal(BigInteger.ZERO, 0, 4, 1), ++ new BigDecimal(BigInteger.ZERO, 0, 5, 1), ++ new BigDecimal(BigInteger.ZERO, 0, 6, 1), ++ new BigDecimal(BigInteger.ZERO, 0, 7, 1), ++ new BigDecimal(BigInteger.ZERO, 0, 8, 1), ++ new BigDecimal(BigInteger.ZERO, 0, 9, 1), ++ new BigDecimal(BigInteger.ZERO, 0, 10, 1), ++ new BigDecimal(BigInteger.ZERO, 0, 11, 1), ++ new BigDecimal(BigInteger.ZERO, 0, 12, 1), ++ new BigDecimal(BigInteger.ZERO, 0, 13, 1), ++ new BigDecimal(BigInteger.ZERO, 0, 14, 1), ++ new BigDecimal(BigInteger.ZERO, 0, 15, 1), + }; + + // Constants +@@ -312,6 +343,18 @@ + // Constructors + + /** ++ * Trusted package private constructor. ++ * Trusted simply means if val is INFLATED, intVal could not be null and ++ * if intVal is null, val could not be INFLATED. ++ */ ++ BigDecimal(BigInteger intVal, long val, int scale, int prec) { ++ this.scale = scale; ++ this.precision = prec; ++ this.intCompact = val; ++ this.intVal = intVal; ++ } ++ ++ /** + * Translates a character array representation of a + * {@code BigDecimal} into a {@code BigDecimal}, accepting the + * same sequence of characters as the {@link #BigDecimal(String)} +@@ -331,10 +374,19 @@ + * @since 1.5 + */ + public BigDecimal(char[] in, int offset, int len) { ++ // protect against huge length. ++ if (offset+len > in.length || offset < 0) ++ throw new NumberFormatException(); + // This is the primary string to BigDecimal constructor; all + // incoming strings end up here; it uses explicit (inline) + // parsing for speed and generates at most one intermediate +- // (temporary) object (a char[] array). ++ // (temporary) object (a char[] array) for non-compact case. ++ ++ // Use locals for all fields values until completion ++ int prec = 0; // record precision value ++ int scl = 0; // record scale value ++ long rs = 0; // the compact value in long ++ BigInteger rb = null; // the inflated value in BigInteger + + // use array bounds checking to handle too-long, len == 0, + // bad offset, etc. +@@ -351,27 +403,62 @@ + } + + // should now be at numeric part of the significand +- int dotoff = -1; // '.' offset, -1 if none ++ boolean dot = false; // true when there is a '.' + int cfirst = offset; // record start of integer + long exp = 0; // exponent +- if (len > in.length) // protect against huge length +- throw new NumberFormatException(); +- char coeff[] = new char[len]; // integer significand array +- char c; // work ++ char c; // current character ++ ++ boolean isCompact = (len <= MAX_COMPACT_DIGITS); ++ // integer significand array & idx is the index to it. The array ++ // is ONLY used when we can't use a compact representation. ++ char coeff[] = isCompact ? null : new char[len]; ++ int idx = 0; + + for (; len > 0; offset++, len--) { + c = in[offset]; ++ // have digit + if ((c >= '0' && c <= '9') || Character.isDigit(c)) { +- // have digit +- coeff[precision] = c; +- precision++; // count of digits ++ // First compact case, we need not to preserve the character ++ // and we can just compute the value in place. ++ if (isCompact) { ++ int digit = Character.digit(c, 10); ++ if (digit == 0) { ++ if (prec == 0) ++ prec = 1; ++ else if (rs != 0) { ++ rs *= 10; ++ ++prec; ++ } // else digit is a redundant leading zero ++ } else { ++ if (prec != 1 || rs != 0) ++ ++prec; // prec unchanged if preceded by 0s ++ rs = rs * 10 + digit; ++ } ++ } else { // the unscaled value is likely a BigInteger object. ++ if (c == '0' || Character.digit(c, 10) == 0) { ++ if (prec == 0) { ++ coeff[idx] = c; ++ prec = 1; ++ } else if (idx != 0) { ++ coeff[idx++] = c; ++ ++prec; ++ } // else c must be a redundant leading zero ++ } else { ++ if (prec != 1 || idx != 0) ++ ++prec; // prec unchanged if preceded by 0s ++ coeff[idx++] = c; ++ } ++ } ++ if (dot) ++ ++scl; + continue; + } ++ // have dot + if (c == '.') { + // have dot +- if (dotoff >= 0) // two dots ++ if (dot) // two dots + throw new NumberFormatException(); +- dotoff = offset; ++ dot = true; + continue; + } + // exponent expected +@@ -380,10 +467,9 @@ + offset++; + c = in[offset]; + len--; +- boolean negexp = false; ++ boolean negexp = (c == '-'); + // optional sign +- if (c == '-' || c == '+') { +- negexp = (c == '-'); ++ if (negexp || c == '+') { + offset++; + c = in[offset]; + len--; +@@ -392,9 +478,9 @@ + throw new NumberFormatException(); + // skip leading zeros in the exponent + while (len > 10 && Character.digit(c, 10) == 0) { +- offset++; +- c = in[offset]; +- len--; ++ offset++; ++ c = in[offset]; ++ len--; + } + if (len > 10) // too many nonzero exponent digits + throw new NumberFormatException(); +@@ -420,55 +506,46 @@ + if ((int)exp != exp) // overflow + throw new NumberFormatException(); + break; // [saves a test] +- } ++ } + // here when no characters left +- if (precision == 0) // no digits found ++ if (prec == 0) // no digits found + throw new NumberFormatException(); + +- if (dotoff >= 0) { // had dot; set scale +- scale = precision - (dotoff - cfirst); +- // [cannot overflow] +- } ++ // Adjust scale if exp is not zero. + if (exp != 0) { // had significant exponent +- try { +- scale = checkScale(-exp + scale); // adjust +- } catch (ArithmeticException e) { ++ // Can't call checkScale which relies on proper fields value ++ long adjustedScale = scl - exp; ++ if (adjustedScale > Integer.MAX_VALUE || ++ adjustedScale < Integer.MIN_VALUE) + throw new NumberFormatException("Scale out of range."); +- } ++ scl = (int)adjustedScale; + } + + // Remove leading zeros from precision (digits count) +- int first = 0; +- for (; (coeff[first] == '0' || Character.digit(coeff[first], 10) == 0) && +- precision > 1; +- first++) +- precision--; +- +- // Set the significand .. +- // Copy significand to exact-sized array, with sign if +- // negative +- // Later use: BigInteger(coeff, first, precision) for +- // both cases, by allowing an extra char at the front of +- // coeff. +- char quick[]; +- if (!isneg) { +- quick = new char[precision]; +- System.arraycopy(coeff, first, quick, 0, precision); ++ if (isCompact) { ++ rs = isneg ? -rs : rs; + } else { +- quick = new char[precision+1]; +- quick[0] = '-'; +- System.arraycopy(coeff, first, quick, 1, precision); ++ char quick[]; ++ if (!isneg) { ++ quick = (coeff.length != prec) ? ++ Arrays.copyOf(coeff, prec) : coeff; ++ } else { ++ quick = new char[prec + 1]; ++ quick[0] = '-'; ++ System.arraycopy(coeff, 0, quick, 1, prec); ++ } ++ rb = new BigInteger(quick); ++ rs = compactValFor(rb); + } +- if (precision <= MAX_COMPACT_DIGITS) +- intCompact = Long.parseLong(new String(quick)); +- else +- intVal = new BigInteger(quick); +- // System.out.println(" new: " +intVal+" ["+scale+"] "+precision); + } catch (ArrayIndexOutOfBoundsException e) { + throw new NumberFormatException(); + } catch (NegativeArraySizeException e) { + throw new NumberFormatException(); + } ++ this.scale = scl; ++ this.precision = prec; ++ this.intCompact = rs; ++ this.intVal = (rs != INFLATED) ? null : rb; + } + + /** +@@ -754,16 +831,18 @@ + } + + // Calculate intVal and scale +- intVal = BigInteger.valueOf(sign*significand); ++ long s = sign * significand; ++ BigInteger b; + if (exponent < 0) { +- intVal = intVal.multiply(BigInteger.valueOf(5).pow(-exponent)); ++ b = BigInteger.valueOf(5).pow(-exponent).multiply(s); + scale = -exponent; + } else if (exponent > 0) { +- intVal = intVal.multiply(BigInteger.valueOf(2).pow(exponent)); ++ b = BigInteger.valueOf(2).pow(exponent).multiply(s); ++ } else { ++ b = BigInteger.valueOf(s); + } +- if (intVal.bitLength() <= MAX_BIGINT_BITS) { +- intCompact = intVal.longValue(); +- } ++ intCompact = compactValFor(b); ++ intVal = (intCompact != INFLATED) ? null : b; + } + + /** +@@ -798,10 +877,8 @@ + * {@code BigDecimal}. + */ + public BigDecimal(BigInteger val) { +- intVal = val; +- if (val.bitLength() <= MAX_BIGINT_BITS) { +- intCompact = val.longValue(); +- } ++ intCompact = compactValFor(val); ++ intVal = (intCompact != INFLATED) ? null : val; + } + + /** +@@ -817,7 +894,7 @@ + * @since 1.5 + */ + public BigDecimal(BigInteger val, MathContext mc) { +- intVal = val; ++ this(val); + if (mc.precision > 0) + roundThis(mc); + } +@@ -833,11 +910,8 @@ + */ + public BigDecimal(BigInteger unscaledVal, int scale) { + // Negative scales are now allowed +- intVal = unscaledVal; ++ this(unscaledVal); + this.scale = scale; +- if (unscaledVal.bitLength() <= MAX_BIGINT_BITS) { +- intCompact = unscaledVal.longValue(); +- } + } + + /** +@@ -856,7 +930,7 @@ + * @since 1.5 + */ + public BigDecimal(BigInteger unscaledVal, int scale, MathContext mc) { +- intVal = unscaledVal; ++ this(unscaledVal); + this.scale = scale; + if (mc.precision > 0) + roundThis(mc); +@@ -899,10 +973,8 @@ + * @since 1.5 + */ + public BigDecimal(long val) { +- if (compactLong(val)) +- intCompact = val; +- else +- intVal = BigInteger.valueOf(val); ++ this.intCompact = val; ++ this.intVal = (val == INFLATED) ? BigInteger.valueOf(val) : null; + } + + /** +@@ -917,31 +989,11 @@ + * @since 1.5 + */ + public BigDecimal(long val, MathContext mc) { +- if (compactLong(val)) +- intCompact = val; +- else +- intVal = BigInteger.valueOf(val); ++ this(val); + if (mc.precision > 0) + roundThis(mc); + } + +- /** +- * Trusted internal constructor +- */ +- private BigDecimal(long val, int scale) { +- this.intCompact = val; +- this.scale = scale; +- } +- +- /** +- * Trusted internal constructor +- */ +- private BigDecimal(BigInteger intVal, long val, int scale) { +- this.intVal = intVal; +- this.intCompact = val; +- this.scale = scale; +- } +- + // Static Factory Methods + + /** +@@ -957,12 +1009,17 @@ + * (unscaledVal × 10-scale). + */ + public static BigDecimal valueOf(long unscaledVal, int scale) { +- if (scale == 0 && unscaledVal >= 0 && unscaledVal <= 10) { +- return zeroThroughTen[(int)unscaledVal]; ++ if (scale == 0) ++ return valueOf(unscaledVal); ++ else if (unscaledVal == 0) { From ahughes at redhat.com Wed Nov 10 06:16:45 2010 From: ahughes at redhat.com (Dr Andrew John Hughes) Date: Wed, 10 Nov 2010 14:16:45 +0000 Subject: request commit for asians fonts config patches for fedoras In-Reply-To: <4CDA75A1.9030506@redhat.com> References: <1289295987.2775.85.camel@springer.wildebeest.org> <20101109140517.GD7776@rivendell.middle-earth.co.uk> <1289311774.2775.358.camel@springer.wildebeest.org> <4CD9678E.8030103@redhat.com> <20101109154457.GE7776@rivendell.middle-earth.co.uk> <4CD973DE.9010604@redhat.com> <20101109170720.GH7776@rivendell.middle-earth.co.uk> <4CDA75A1.9030506@redhat.com> Message-ID: <20101110141645.GC30517@rivendell.middle-earth.co.uk> This looks okay now, if you fix the ChangeLog. At present, it duplicates f14-fonts.patch. Please use: 2010-11-09 Jiri Vanek * Makefile.am: (FONTCONFIG_PATH): Added path to fontconfig files. (ICEDTEA_PATCHES): Add f14-fonts.patch. (fonts): Added cloning of fontconfig.Fedora to Fedora.12,11,10,9. (patch-fsg): Depend on fonts.stamp. * patches/f14-fonts.patch Updated font configurations for Fedora 9-14 Add additional fontconfig files to Makefile. On 11:36 Wed 10 Nov , Jiri Vanek wrote: > # HG changeset patch > # User Jiri Vanek > # Date 1289385214 -3600 > # Node ID f74b1d491ccc0aaba37abb789b11f43736c502fe > # Parent 72de51f0a744bc38ed2f56a1ffb848b4aeaf0875 > Updated font's configurations for Fedora 9-14 > > diff -r 72de51f0a744 -r f74b1d491ccc ChangeLog > --- a/ChangeLog Tue Nov 09 14:53:31 2010 +0000 > +++ b/ChangeLog Wed Nov 10 11:33:34 2010 +0100 > @@ -1,3 +1,14 @@ > +2010-11-09 Jiri Vanek > + > + * Makefile.am: > + * patches/f14-fonts.patch > + Updated font configurations for Fedora 9-14 > + added cloning of fontconfig.Fedora to Fedora.12,11,10,9 > + * patches/f14-fonts.patch > + Add additional fontconfig files to Makefile. > + Updated font configurations for Fedora 9-14 > + > + > 2010-11-09 Andrew John Hughes > > * Makefile.am: > diff -r 72de51f0a744 -r f74b1d491ccc Makefile.am > --- a/Makefile.am Tue Nov 09 14:53:31 2010 +0000 > +++ b/Makefile.am Wed Nov 10 11:33:34 2010 +0100 > @@ -40,6 +40,8 @@ > SERVER_DIR = hotspot/import/jre/lib/$(INSTALL_ARCH_DIR)/server > BUILD_JRE_ARCH_DIR = > $(BUILD_OUTPUT_DIR)/j2sdk-image/jre/lib/$(INSTALL_ARCH_DIR) > BUILD_DEBUG_JRE_ARCH_DIR = > $(DEBUG_BUILD_OUTPUT_DIR)/j2sdk-image/jre/lib/$(INSTALL_ARCH_DIR) > +FONTCONFIG_PATH = openjdk/jdk/src/solaris/classes/sun/awt/fontconfigs > + > > # Source directories > > @@ -295,7 +297,8 @@ > patches/6703377-freetypescaler.patch \ > patches/icedtea-jtreg-international-fonts.patch \ > patches/openjdk/6967436-6976265-6967434-pisces.patch \ > - patches/openjdk/6997495-test_correction_6857159.patch > + patches/openjdk/6997495-test_correction_6857159.patch \ > + patches/f14-fonts.patch > > if WITH_ALT_HSBUILD > ICEDTEA_PATCHES += \ > @@ -950,7 +953,16 @@ > fi > rm -f stamps/generated.stamp > > -stamps/patch-fsg.stamp: stamps/generated.stamp > +stamps/fonts.stamp: stamps/generated.stamp > + cp $(FONTCONFIG_PATH)/linux.fontconfig.Fedora.properties > $(FONTCONFIG_PATH)/linux.fontconfig.Fedora.9.properties > + cp $(FONTCONFIG_PATH)/linux.fontconfig.Fedora.properties > $(FONTCONFIG_PATH)/linux.fontconfig.Fedora.10.properties > + cp $(FONTCONFIG_PATH)/linux.fontconfig.Fedora.properties > $(FONTCONFIG_PATH)/linux.fontconfig.Fedora.11.properties > + cp $(FONTCONFIG_PATH)/linux.fontconfig.Fedora.properties > $(FONTCONFIG_PATH)/linux.fontconfig.Fedora.12.properties > + mkdir -p stamps > + touch stamps/fonts.stamp > + > + > +stamps/patch-fsg.stamp: stamps/fonts.stamp > mkdir -p stamps ; \ > rm -f stamps/patch-fsg.stamp.tmp ; \ > touch stamps/patch-fsg.stamp.tmp ; \ > diff -r 72de51f0a744 -r f74b1d491ccc patches/f14-fonts.patch > --- /dev/null Thu Jan 01 00:00:00 1970 +0000 > +++ b/patches/f14-fonts.patch Wed Nov 10 11:33:34 2010 +0100 > @@ -0,0 +1,677 @@ > +--- openjdk/jdk/make/sun/awt/Makefile 2010-11-04 09:52:49.583434000 +0100 > ++++ openjdk/jdk/make/sun/awt/Makefile 2010-11-04 16:50:14.091688769 +0100 > +@@ -387,6 +387,10 @@ > + fontconfig.SuSE.properties \ > + fontconfig.Ubuntu.properties \ > + fontconfig.Fedora.properties \ > ++ fontconfig.Fedora.9.properties \ > ++ fontconfig.Fedora.10.properties \ > ++ fontconfig.Fedora.11.properties \ > ++ fontconfig.Fedora.12.properties \ > + fontconfig.RedHat.6.0.properties \ > + fontconfig.Gentoo.properties > + else > + > +--- > openjdk/jdk/src/solaris/classes/sun/awt/fontconfigs/linux.fontconfig.Fedora.11.properties > 2010-11-04 11:06:26.695428114 +0100 > ++++ > openjdk/jdk/src/solaris/classes/sun/awt/fontconfigs/linux.fontconfig.Fedora.11.properties > 2010-11-04 11:19:45.133587953 +0100 > +@@ -35,6 +35,8 @@ > + dialog.plain.korean=Baekmuk Gulim > + dialog.plain.chinese-big5=AR PL ShanHeiSun Uni > + dialog.plain.chinese-gb18030=AR PL ShanHeiSun Uni > ++dialog.plain.assamese=Lohit Assamese > ++dialog.plain.devanagari=Lohit Devanagari > + dialog.plain.bengali=Lohit Bengali > + dialog.plain.gujarati=Lohit Gujarati > + dialog.plain.hindi=Lohit Hindi > +@@ -50,6 +52,8 @@ > + dialog.bold.korean=Baekmuk Gulim > + dialog.bold.chinese-big5=AR PL ShanHeiSun Uni > + dialog.bold.chinese-gb18030=AR PL ShanHeiSun Uni > ++dialog.bold.assamese=Lohit Assamese > ++dialog.bold.devanagari=Lohit Devanagari > + dialog.bold.bengali=Lohit Bengali > + dialog.bold.gujarati=Lohit Gujarati > + dialog.bold.hindi=Lohit Hindi > +@@ -65,6 +69,8 @@ > + dialog.italic.korean=Baekmuk Gulim > + dialog.italic.chinese-big5=AR PL ShanHeiSun Uni > + dialog.italic.chinese-gb18030=AR PL ShanHeiSun Uni > ++dialog.italic.assamese=Lohit Assamese > ++dialog.italic.devanagari=Lohit Devanagari > + dialog.italic.bengali=Lohit Bengali > + dialog.italic.gujarati=Lohit Gujarati > + dialog.italic.hindi=Lohit Hindi > +@@ -80,6 +86,8 @@ > + dialog.bolditalic.korean=Baekmuk Gulim > + dialog.bolditalic.chinese-big5=AR PL ShanHeiSun Uni > + dialog.bolditalic.chinese-gb18030=AR PL ShanHeiSun Uni > ++dialog.bolditalic.assamese=Lohit Assamese > ++dialog.bolditalic.devanagari=Lohit Devanagari > + dialog.bolditalic.bengali=Lohit Bengali > + dialog.bolditalic.gujarati=Lohit Gujarati > + dialog.bolditalic.hindi=Lohit Hindi > +@@ -95,6 +103,8 @@ > + sansserif.plain.korean=Baekmuk Gulim > + sansserif.plain.chinese-big5=AR PL ShanHeiSun Uni > + sansserif.plain.chinese-gb18030=AR PL ShanHeiSun Uni > ++sansserif.plain.assamese=Lohit Assamese > ++sansserif.plain.devanagari=Lohit Devanagari > + sansserif.plain.bengali=Lohit Bengali > + sansserif.plain.gujarati=Lohit Gujarati > + sansserif.plain.hindi=Lohit Hindi > +@@ -110,6 +120,8 @@ > + sansserif.bold.korean=Baekmuk Gulim > + sansserif.bold.chinese-big5=AR PL ShanHeiSun Uni > + sansserif.bold.chinese-gb18030=AR PL ShanHeiSun Uni > ++sansserif.bold.assamese=Lohit Assamese > ++sansserif.bold.devanagari=Lohit Devanagari > + sansserif.bold.bengali=Lohit Bengali > + sansserif.bold.gujarati=Lohit Gujarati > + sansserif.bold.hindi=Lohit Hindi > +@@ -125,6 +137,8 @@ > + sansserif.italic.korean=Baekmuk Gulim > + sansserif.italic.chinese-big5=AR PL ShanHeiSun Uni > + sansserif.italic.chinese-gb18030=AR PL ShanHeiSun Uni > ++sansserif.italic.assamese=Lohit Assamese > ++sansserif.italic.devanagari=Lohit Devanagari > + sansserif.italic.bengali=Lohit Bengali > + sansserif.italic.gujarati=Lohit Gujarati > + sansserif.italic.hindi=Lohit Hindi > +@@ -140,6 +154,8 @@ > + sansserif.bolditalic.korean=Baekmuk Gulim > + sansserif.bolditalic.chinese-big5=AR PL ShanHeiSun Uni > + sansserif.bolditalic.chinese-gb18030=AR PL ShanHeiSun Uni > ++sansserif.bolditalic.assamese=Lohit Assamese > ++sansserif.bolditalic.devanagari=Lohit Devanagari > + sansserif.bolditalic.bengali=Lohit Bengali > + sansserif.bolditalic.gujarati=Lohit Gujarati > + sansserif.bolditalic.hindi=Lohit Hindi > +@@ -155,6 +171,8 @@ > + serif.plain.korean=Baekmuk Batang > + serif.plain.chinese-big5=AR PL ZenKai Uni > + serif.plain.chinese-gb18030=AR PL ZenKai Uni > ++serif.plain.assamese=Lohit Assamese > ++serif.plain.devanagari=Lohit Devanagari > + serif.plain.bengali=Lohit Bengali > + serif.plain.gujarati=Lohit Gujarati > + serif.plain.hindi=Lohit Hindi > +@@ -170,6 +188,8 @@ > + serif.bold.korean=Baekmuk Batang > + serif.bold.chinese-big5=AR PL ZenKai Uni > + serif.bold.chinese-gb18030=AR PL ZenKai Uni > ++serif.bold.assamese=Lohit Assamese > ++serif.bold.devanagari=Lohit Devanagari > + serif.bold.bengali=Lohit Bengali > + serif.bold.gujarati=Lohit Gujarati > + serif.bold.hindi=Lohit Hindi > +@@ -185,6 +205,8 @@ > + serif.italic.korean=Baekmuk Batang > + serif.italic.chinese-big5=AR PL ZenKai Uni > + serif.italic.chinese-gb18030=AR PL ZenKai Uni > ++serif.italic.assamese=Lohit Assamese > ++serif.italic.devanagari=Lohit Devanagari > + serif.italic.bengali=Lohit Bengali > + serif.italic.gujarati=Lohit Gujarati > + serif.italic.hindi=Lohit Hindi > +@@ -200,6 +222,8 @@ > + serif.bolditalic.korean=Baekmuk Batang > + serif.bolditalic.chinese-big5=AR PL ZenKai Uni > + serif.bolditalic.chinese-gb18030=AR PL ZenKai Uni > ++serif.bolditalic.assamese=Lohit Assamese > ++serif.bolditalic.devanagari=Lohit Devanagari > + serif.bolditalic.bengali=Lohit Bengali > + serif.bolditalic.gujarati=Lohit Gujarati > + serif.bolditalic.hindi=Lohit Hindi > +@@ -215,6 +239,8 @@ > + monospaced.plain.korean=Baekmuk Gulim > + monospaced.plain.chinese-big5=AR PL ShanHeiSun Uni > + monospaced.plain.chinese-gb18030=AR PL ShanHeiSun Uni > ++monospaced.plain.assamese=Lohit Assamese > ++monospaced.plain.devanagari=Lohit Devanagari > + monospaced.plain.bengali=Lohit Bengali > + monospaced.plain.gujarati=Lohit Gujarati > + monospaced.plain.hindi=Lohit Hindi > +@@ -230,6 +256,8 @@ > + monospaced.bold.korean=Baekmuk Gulim > + monospaced.bold.chinese-big5=AR PL ShanHeiSun Uni > + monospaced.bold.chinese-gb18030=AR PL ShanHeiSun Uni > ++monospaced.bold.assamese=Lohit Assamese > ++monospaced.bold.devanagari=Lohit Devanagari > + monospaced.bold.bengali=Lohit Bengali > + monospaced.bold.gujarati=Lohit Gujarati > + monospaced.bold.hindi=Lohit Hindi > +@@ -245,6 +273,8 @@ > + monospaced.italic.korean=Baekmuk Gulim > + monospaced.italic.chinese-big5=AR PL ShanHeiSun Uni > + monospaced.italic.chinese-gb18030=AR PL ShanHeiSun Uni > ++monospaced.italic.assamese=Lohit Assamese > ++monospaced.italic.devanagari=Lohit Devanagari > + monospaced.italic.bengali=Lohit Bengali > + monospaced.italic.gujarati=Lohit Gujarati > + monospaced.italic.hindi=Lohit Hindi > +@@ -260,6 +290,8 @@ > + monospaced.bolditalic.korean=Baekmuk Gulim > + monospaced.bolditalic.chinese-big5=AR PL ShanHeiSun Uni > + monospaced.bolditalic.chinese-gb18030=AR PL ShanHeiSun Uni > ++monospaced.bolditalic.assamese=Lohit Assamese > ++monospaced.bolditalic.devanagari=Lohit Devanagari > + monospaced.bolditalic.bengali=Lohit Bengali > + monospaced.bolditalic.gujarati=Lohit Gujarati > + monospaced.bolditalic.hindi=Lohit Hindi > +@@ -275,6 +307,8 @@ > + dialoginput.plain.korean=Baekmuk Gulim > + dialoginput.plain.chinese-big5=AR PL ShanHeiSun Uni > + dialoginput.plain.chinese-gb18030=AR PL ShanHeiSun Uni > ++dialoginput.plain.assamese=Lohit Assamese > ++dialoginput.plain.devanagari=Lohit Devanagari > + dialoginput.plain.bengali=Lohit Bengali > + dialoginput.plain.gujarati=Lohit Gujarati > + dialoginput.plain.hindi=Lohit Hindi > +@@ -290,6 +324,8 @@ > + dialoginput.bold.korean=Baekmuk Gulim > + dialoginput.bold.chinese-big5=AR PL ShanHeiSun Uni > + dialoginput.bold.chinese-gb18030=AR PL ShanHeiSun Uni > ++dialoginput.bold.assamese=Lohit Assamese > ++dialoginput.bold.devanagari=Lohit Devanagari > + dialoginput.bold.bengali=Lohit Bengali > + dialoginput.bold.gujarati=Lohit Gujarati > + dialoginput.bold.hindi=Lohit Hindi > +@@ -305,6 +341,8 @@ > + dialoginput.italic.korean=Baekmuk Gulim > + dialoginput.italic.chinese-big5=AR PL ShanHeiSun Uni > + dialoginput.italic.chinese-gb18030=AR PL ShanHeiSun Uni > ++dialoginput.italic.assamese=Lohit Assamese > ++dialoginput.italic.devanagari=Lohit Devanagari > + dialoginput.italic.bengali=Lohit Bengali > + dialoginput.italic.gujarati=Lohit Gujarati > + dialoginput.italic.hindi=Lohit Hindi > +@@ -320,6 +358,8 @@ > + dialoginput.bolditalic.korean=Baekmuk Gulim > + dialoginput.bolditalic.chinese-big5=AR PL ShanHeiSun Uni > + dialoginput.bolditalic.chinese-gb18030=AR PL ShanHeiSun Uni > ++dialoginput.bolditalic.assamese=Lohit Assamese > ++dialoginput.bolditalic.devanagari=Lohit Devanagari > + dialoginput.bolditalic.bengali=Lohit Bengali > + dialoginput.bolditalic.gujarati=Lohit Gujarati > + dialoginput.bolditalic.hindi=Lohit Hindi > +@@ -356,21 +396,24 @@ > + > filename.DejaVu_Serif_Oblique=/usr/share/fonts/dejavu/DejaVuSerif-Oblique.ttf > + > filename.DejaVu_Serif_Bold_Oblique=/usr/share/fonts/dejavu/DejaVuSerif-BoldOblique.ttf > + > +-filename.Sazanami_Gothic=/usr/share/fonts/sazanami-fonts-gothic/sazanami-gothic.ttf > +-filename.Sazanami_Mincho=/usr/share/fonts/sazanami-fonts-mincho/sazanami-mincho.ttf > ++filename.Sazanami_Gothic=/usr/share/fonts/sazanami/gothic/sazanami-gothic.ttf > ++filename.Sazanami_Mincho=/usr/share/fonts/sazanami/mincho/sazanami-mincho.ttf > + filename.AR_PL_ShanHeiSun_Uni=/usr/share/fonts/cjkunifonts-uming/uming.ttc > + filename.AR_PL_ZenKai_Uni=/usr/share/fonts/cjkunifonts-ukai/ukai.ttc > +-filename.Baekmuk_Gulim=/usr/share/fonts/baekmuk-ttf-gulim/gulim.ttf > +-filename.Baekmuk_Batang=/usr/share/fonts/baekmuk-ttf-batang/batang.ttf > ++filename.Baekmuk_Gulim=/usr/share/fonts/baekmuk-ttf/gulim.ttf > ++filename.Baekmuk_Batang=/usr/share/fonts/baekmuk-ttf/batang.ttf > ++ > ++filename.Lohit_Assamese=/usr/share/fonts/lohit-assamese/Lohit-Assamese.ttf > ++filename.Lohit_Devanagari=/usr/share/fonts/lohit-devanagari/Lohit-Devanagari.ttf > ++filename.Lohit_Bengali=/usr/share/fonts/lohit-bengali/Lohit-Bengali.ttf > ++filename.Lohit_Gujarati=/usr/share/fonts/lohit-gujarati/Lohit-Gujarati.ttf > ++filename.Lohit_Hindi=/usr/share/fonts/lohit-hindi/Lohit-Hindi.ttf > ++filename.Lohit_Kannda=/usr/share/fonts/lohit-kannada/Lohit-Kannada.ttf > ++filename.Lohit_Malayalam=/usr/share/fonts/lohit-malayalam/Lohit-Malayalam.ttf > ++filename.Lohit_Oriya=/usr/share/fonts/lohit-oriya/Lohit-Oriya.ttf > ++filename.Lohit_Punjabi=/usr/share/fonts/lohit-punjabi/Lohit-Punjabi.ttf > ++filename.Lohit_Tamil=/usr/share/fonts/lohit-tamil/Lohit-Tamil.ttf > ++filename.Lohit_Telugu=/usr/share/fonts/lohit-telugu/Lohit-Telugu.ttf > + > +-filename.Lohit_Bengali=/usr/share/fonts/lohit-bengali/lohit_bn.ttf > +-filename.Lohit_Gujarati=/usr/share/fonts/lohit-gujarati/lohit_gu.ttf > +-filename.Lohit_Hindi=/usr/share/fonts/lohit-hindi/lohit_hi.ttf > +-filename.Lohit_Kannda=/usr/share/fonts/lohit-kannada/lohit_kn.ttf > +-filename.Lohit_Malayalam=/usr/share/fonts/lohit-malayalam/lohit_ml.ttf > +-filename.Lohit_Oriya=/usr/share/fonts/lohit-oriya/lohit_or.ttf > +-filename.Lohit_Punjabi=/usr/share/fonts/lohit-punjabi/lohit_pa.ttf > +-filename.Lohit_Tamil=/usr/share/fonts/lohit-tamil/lohit_ta.ttf > +-filename.Lohit_Telugu=/usr/share/fonts/lohit-telugu/lohit_te.ttf > + filename.LKLUG=/usr/share/fonts/lklug/lklug.ttf > + > + > +--- > openjdk/jdk/src/solaris/classes/sun/awt/fontconfigs/linux.fontconfig.Fedora.12.properties > 2010-11-04 11:06:26.695428114 +0100 > ++++ > openjdk/jdk/src/solaris/classes/sun/awt/fontconfigs/linux.fontconfig.Fedora.12.properties > 2010-11-04 11:19:45.133587953 +0100 > +@@ -35,6 +35,8 @@ > + dialog.plain.korean=Baekmuk Gulim > + dialog.plain.chinese-big5=AR PL ShanHeiSun Uni > + dialog.plain.chinese-gb18030=AR PL ShanHeiSun Uni > ++dialog.plain.assamese=Lohit Assamese > ++dialog.plain.devanagari=Lohit Devanagari > + dialog.plain.bengali=Lohit Bengali > + dialog.plain.gujarati=Lohit Gujarati > + dialog.plain.hindi=Lohit Hindi > +@@ -50,6 +52,8 @@ > + dialog.bold.korean=Baekmuk Gulim > + dialog.bold.chinese-big5=AR PL ShanHeiSun Uni > + dialog.bold.chinese-gb18030=AR PL ShanHeiSun Uni > ++dialog.bold.assamese=Lohit Assamese > ++dialog.bold.devanagari=Lohit Devanagari > + dialog.bold.bengali=Lohit Bengali > + dialog.bold.gujarati=Lohit Gujarati > + dialog.bold.hindi=Lohit Hindi > +@@ -65,6 +69,8 @@ > + dialog.italic.korean=Baekmuk Gulim > + dialog.italic.chinese-big5=AR PL ShanHeiSun Uni > + dialog.italic.chinese-gb18030=AR PL ShanHeiSun Uni > ++dialog.italic.assamese=Lohit Assamese > ++dialog.italic.devanagari=Lohit Devanagari > + dialog.italic.bengali=Lohit Bengali > + dialog.italic.gujarati=Lohit Gujarati > + dialog.italic.hindi=Lohit Hindi > +@@ -80,6 +86,8 @@ > + dialog.bolditalic.korean=Baekmuk Gulim > + dialog.bolditalic.chinese-big5=AR PL ShanHeiSun Uni > + dialog.bolditalic.chinese-gb18030=AR PL ShanHeiSun Uni > ++dialog.bolditalic.assamese=Lohit Assamese > ++dialog.bolditalic.devanagari=Lohit Devanagari > + dialog.bolditalic.bengali=Lohit Bengali > + dialog.bolditalic.gujarati=Lohit Gujarati > + dialog.bolditalic.hindi=Lohit Hindi > +@@ -95,6 +103,8 @@ > + sansserif.plain.korean=Baekmuk Gulim > + sansserif.plain.chinese-big5=AR PL ShanHeiSun Uni > + sansserif.plain.chinese-gb18030=AR PL ShanHeiSun Uni > ++sansserif.plain.assamese=Lohit Assamese > ++sansserif.plain.devanagari=Lohit Devanagari > + sansserif.plain.bengali=Lohit Bengali > + sansserif.plain.gujarati=Lohit Gujarati > + sansserif.plain.hindi=Lohit Hindi > +@@ -110,6 +120,8 @@ > + sansserif.bold.korean=Baekmuk Gulim > + sansserif.bold.chinese-big5=AR PL ShanHeiSun Uni > + sansserif.bold.chinese-gb18030=AR PL ShanHeiSun Uni > ++sansserif.bold.assamese=Lohit Assamese > ++sansserif.bold.devanagari=Lohit Devanagari > + sansserif.bold.bengali=Lohit Bengali > + sansserif.bold.gujarati=Lohit Gujarati > + sansserif.bold.hindi=Lohit Hindi > +@@ -125,6 +137,8 @@ > + sansserif.italic.korean=Baekmuk Gulim > + sansserif.italic.chinese-big5=AR PL ShanHeiSun Uni > + sansserif.italic.chinese-gb18030=AR PL ShanHeiSun Uni > ++sansserif.italic.assamese=Lohit Assamese > ++sansserif.italic.devanagari=Lohit Devanagari > + sansserif.italic.bengali=Lohit Bengali > + sansserif.italic.gujarati=Lohit Gujarati > + sansserif.italic.hindi=Lohit Hindi > +@@ -140,6 +154,8 @@ > + sansserif.bolditalic.korean=Baekmuk Gulim > + sansserif.bolditalic.chinese-big5=AR PL ShanHeiSun Uni > + sansserif.bolditalic.chinese-gb18030=AR PL ShanHeiSun Uni > ++sansserif.bolditalic.assamese=Lohit Assamese > ++sansserif.bolditalic.devanagari=Lohit Devanagari > + sansserif.bolditalic.bengali=Lohit Bengali > + sansserif.bolditalic.gujarati=Lohit Gujarati > + sansserif.bolditalic.hindi=Lohit Hindi > +@@ -155,6 +171,8 @@ > + serif.plain.korean=Baekmuk Batang > + serif.plain.chinese-big5=AR PL ZenKai Uni > + serif.plain.chinese-gb18030=AR PL ZenKai Uni > ++serif.plain.assamese=Lohit Assamese > ++serif.plain.devanagari=Lohit Devanagari > + serif.plain.bengali=Lohit Bengali > + serif.plain.gujarati=Lohit Gujarati > + serif.plain.hindi=Lohit Hindi > +@@ -170,6 +188,8 @@ > + serif.bold.korean=Baekmuk Batang > + serif.bold.chinese-big5=AR PL ZenKai Uni > + serif.bold.chinese-gb18030=AR PL ZenKai Uni > ++serif.bold.assamese=Lohit Assamese > ++serif.bold.devanagari=Lohit Devanagari > + serif.bold.bengali=Lohit Bengali > + serif.bold.gujarati=Lohit Gujarati > + serif.bold.hindi=Lohit Hindi > +@@ -185,6 +205,8 @@ > + serif.italic.korean=Baekmuk Batang > + serif.italic.chinese-big5=AR PL ZenKai Uni > + serif.italic.chinese-gb18030=AR PL ZenKai Uni > ++serif.italic.assamese=Lohit Assamese > ++serif.italic.devanagari=Lohit Devanagari > + serif.italic.bengali=Lohit Bengali > + serif.italic.gujarati=Lohit Gujarati > + serif.italic.hindi=Lohit Hindi > +@@ -200,6 +222,8 @@ > + serif.bolditalic.korean=Baekmuk Batang > + serif.bolditalic.chinese-big5=AR PL ZenKai Uni > + serif.bolditalic.chinese-gb18030=AR PL ZenKai Uni > ++serif.bolditalic.assamese=Lohit Assamese > ++serif.bolditalic.devanagari=Lohit Devanagari > + serif.bolditalic.bengali=Lohit Bengali > + serif.bolditalic.gujarati=Lohit Gujarati > + serif.bolditalic.hindi=Lohit Hindi > +@@ -215,6 +239,8 @@ > + monospaced.plain.korean=Baekmuk Gulim > + monospaced.plain.chinese-big5=AR PL ShanHeiSun Uni > + monospaced.plain.chinese-gb18030=AR PL ShanHeiSun Uni > ++monospaced.plain.assamese=Lohit Assamese > ++monospaced.plain.devanagari=Lohit Devanagari > + monospaced.plain.bengali=Lohit Bengali > + monospaced.plain.gujarati=Lohit Gujarati > + monospaced.plain.hindi=Lohit Hindi > +@@ -230,6 +256,8 @@ > + monospaced.bold.korean=Baekmuk Gulim > + monospaced.bold.chinese-big5=AR PL ShanHeiSun Uni > + monospaced.bold.chinese-gb18030=AR PL ShanHeiSun Uni > ++monospaced.bold.assamese=Lohit Assamese > ++monospaced.bold.devanagari=Lohit Devanagari > + monospaced.bold.bengali=Lohit Bengali > + monospaced.bold.gujarati=Lohit Gujarati > + monospaced.bold.hindi=Lohit Hindi > +@@ -245,6 +273,8 @@ > + monospaced.italic.korean=Baekmuk Gulim > + monospaced.italic.chinese-big5=AR PL ShanHeiSun Uni > + monospaced.italic.chinese-gb18030=AR PL ShanHeiSun Uni > ++monospaced.italic.assamese=Lohit Assamese > ++monospaced.italic.devanagari=Lohit Devanagari > + monospaced.italic.bengali=Lohit Bengali > + monospaced.italic.gujarati=Lohit Gujarati > + monospaced.italic.hindi=Lohit Hindi > +@@ -260,6 +290,8 @@ > + monospaced.bolditalic.korean=Baekmuk Gulim > + monospaced.bolditalic.chinese-big5=AR PL ShanHeiSun Uni > + monospaced.bolditalic.chinese-gb18030=AR PL ShanHeiSun Uni > ++monospaced.bolditalic.assamese=Lohit Assamese > ++monospaced.bolditalic.devanagari=Lohit Devanagari > + monospaced.bolditalic.bengali=Lohit Bengali > + monospaced.bolditalic.gujarati=Lohit Gujarati > + monospaced.bolditalic.hindi=Lohit Hindi > +@@ -275,6 +307,8 @@ > + dialoginput.plain.korean=Baekmuk Gulim > + dialoginput.plain.chinese-big5=AR PL ShanHeiSun Uni > + dialoginput.plain.chinese-gb18030=AR PL ShanHeiSun Uni > ++dialoginput.plain.assamese=Lohit Assamese > ++dialoginput.plain.devanagari=Lohit Devanagari > + dialoginput.plain.bengali=Lohit Bengali > + dialoginput.plain.gujarati=Lohit Gujarati > + dialoginput.plain.hindi=Lohit Hindi > +@@ -290,6 +324,8 @@ > + dialoginput.bold.korean=Baekmuk Gulim > + dialoginput.bold.chinese-big5=AR PL ShanHeiSun Uni > + dialoginput.bold.chinese-gb18030=AR PL ShanHeiSun Uni > ++dialoginput.bold.assamese=Lohit Assamese > ++dialoginput.bold.devanagari=Lohit Devanagari > + dialoginput.bold.bengali=Lohit Bengali > + dialoginput.bold.gujarati=Lohit Gujarati > + dialoginput.bold.hindi=Lohit Hindi > +@@ -305,6 +341,8 @@ > + dialoginput.italic.korean=Baekmuk Gulim > + dialoginput.italic.chinese-big5=AR PL ShanHeiSun Uni > + dialoginput.italic.chinese-gb18030=AR PL ShanHeiSun Uni > ++dialoginput.italic.assamese=Lohit Assamese > ++dialoginput.italic.devanagari=Lohit Devanagari > + dialoginput.italic.bengali=Lohit Bengali > + dialoginput.italic.gujarati=Lohit Gujarati > + dialoginput.italic.hindi=Lohit Hindi > +@@ -320,6 +358,8 @@ > + dialoginput.bolditalic.korean=Baekmuk Gulim > + dialoginput.bolditalic.chinese-big5=AR PL ShanHeiSun Uni > + dialoginput.bolditalic.chinese-gb18030=AR PL ShanHeiSun Uni > ++dialoginput.bolditalic.assamese=Lohit Assamese > ++dialoginput.bolditalic.devanagari=Lohit Devanagari > + dialoginput.bolditalic.bengali=Lohit Bengali > + dialoginput.bolditalic.gujarati=Lohit Gujarati > + dialoginput.bolditalic.hindi=Lohit Hindi > +@@ -356,21 +396,24 @@ > + > filename.DejaVu_Serif_Oblique=/usr/share/fonts/dejavu/DejaVuSerif-Oblique.ttf > + > filename.DejaVu_Serif_Bold_Oblique=/usr/share/fonts/dejavu/DejaVuSerif-BoldOblique.ttf > + > +-filename.Sazanami_Gothic=/usr/share/fonts/sazanami-fonts-gothic/sazanami-gothic.ttf > +-filename.Sazanami_Mincho=/usr/share/fonts/sazanami-fonts-mincho/sazanami-mincho.ttf > ++filename.Sazanami_Gothic=/usr/share/fonts/sazanami/gothic/sazanami-gothic.ttf > ++filename.Sazanami_Mincho=/usr/share/fonts/sazanami/mincho/sazanami-mincho.ttf > + filename.AR_PL_ShanHeiSun_Uni=/usr/share/fonts/cjkunifonts-uming/uming.ttc > + filename.AR_PL_ZenKai_Uni=/usr/share/fonts/cjkunifonts-ukai/ukai.ttc > +-filename.Baekmuk_Gulim=/usr/share/fonts/baekmuk-ttf-gulim/gulim.ttf > +-filename.Baekmuk_Batang=/usr/share/fonts/baekmuk-ttf-batang/batang.ttf > ++filename.Baekmuk_Gulim=/usr/share/fonts/baekmuk-ttf/gulim.ttf > ++filename.Baekmuk_Batang=/usr/share/fonts/baekmuk-ttf/batang.ttf > ++ > ++filename.Lohit_Assamese=/usr/share/fonts/lohit-assamese/Lohit-Assamese.ttf > ++filename.Lohit_Devanagari=/usr/share/fonts/lohit-devanagari/Lohit-Devanagari.ttf > ++filename.Lohit_Bengali=/usr/share/fonts/lohit-bengali/Lohit-Bengali.ttf > ++filename.Lohit_Gujarati=/usr/share/fonts/lohit-gujarati/Lohit-Gujarati.ttf > ++filename.Lohit_Hindi=/usr/share/fonts/lohit-devanagari/Lohit-Devanagari.ttf > ++filename.Lohit_Kannda=/usr/share/fonts/lohit-kannada/Lohit-Kannada.ttf > ++filename.Lohit_Malayalam=/usr/share/fonts/lohit-malayalam/Lohit-Malayalam.ttf > ++filename.Lohit_Oriya=/usr/share/fonts/lohit-oriya/Lohit-Oriya.ttf > ++filename.Lohit_Punjabi=/usr/share/fonts/lohit-punjabi/Lohit-Punjabi.ttf > ++filename.Lohit_Tamil=/usr/share/fonts/lohit-tamil/Lohit-Tamil.ttf > ++filename.Lohit_Telugu=/usr/share/fonts/lohit-telugu/Lohit-Telugu.ttf > + > +-filename.Lohit_Bengali=/usr/share/fonts/lohit-bengali/lohit_bn.ttf > +-filename.Lohit_Gujarati=/usr/share/fonts/lohit-gujarati/lohit_gu.ttf > +-filename.Lohit_Hindi=/usr/share/fonts/lohit-hindi/lohit_hi.ttf > +-filename.Lohit_Kannda=/usr/share/fonts/lohit-kannada/lohit_kn.ttf > +-filename.Lohit_Malayalam=/usr/share/fonts/lohit-malayalam/lohit_ml.ttf > +-filename.Lohit_Oriya=/usr/share/fonts/lohit-oriya/lohit_or.ttf > +-filename.Lohit_Punjabi=/usr/share/fonts/lohit-punjabi/lohit_pa.ttf > +-filename.Lohit_Tamil=/usr/share/fonts/lohit-tamil/lohit_ta.ttf > +-filename.Lohit_Telugu=/usr/share/fonts/lohit-telugu/lohit_te.ttf > + filename.LKLUG=/usr/share/fonts/lklug/lklug.ttf > + > +--- > openjdk/jdk/src/solaris/classes/sun/awt/fontconfigs/linux.fontconfig.Fedora.properties > 2010-11-04 11:06:26.695428114 +0100 > ++++ > openjdk/jdk/src/solaris/classes/sun/awt/fontconfigs/linux.fontconfig.Fedora.properties > 2010-11-04 11:06:25.602455633 +0100 > +@@ -35,6 +35,8 @@ > + dialog.plain.korean=Baekmuk Gulim > + dialog.plain.chinese-big5=AR PL ShanHeiSun Uni > + dialog.plain.chinese-gb18030=AR PL ShanHeiSun Uni > ++dialog.plain.assamese=Lohit Assamese > ++dialog.plain.devanagari=Lohit Devanagari > + dialog.plain.bengali=Lohit Bengali > + dialog.plain.gujarati=Lohit Gujarati > + dialog.plain.hindi=Lohit Hindi > +@@ -50,6 +52,8 @@ > + dialog.bold.korean=Baekmuk Gulim > + dialog.bold.chinese-big5=AR PL ShanHeiSun Uni > + dialog.bold.chinese-gb18030=AR PL ShanHeiSun Uni > ++dialog.bold.assamese=Lohit Assamese > ++dialog.bold.devanagari=Lohit Devanagari > + dialog.bold.bengali=Lohit Bengali > + dialog.bold.gujarati=Lohit Gujarati > + dialog.bold.hindi=Lohit Hindi > +@@ -65,6 +69,8 @@ > + dialog.italic.korean=Baekmuk Gulim > + dialog.italic.chinese-big5=AR PL ShanHeiSun Uni > + dialog.italic.chinese-gb18030=AR PL ShanHeiSun Uni > ++dialog.italic.assamese=Lohit Assamese > ++dialog.italic.devanagari=Lohit Devanagari > + dialog.italic.bengali=Lohit Bengali > + dialog.italic.gujarati=Lohit Gujarati > + dialog.italic.hindi=Lohit Hindi > +@@ -80,6 +86,8 @@ > + dialog.bolditalic.korean=Baekmuk Gulim > + dialog.bolditalic.chinese-big5=AR PL ShanHeiSun Uni > + dialog.bolditalic.chinese-gb18030=AR PL ShanHeiSun Uni > ++dialog.bolditalic.assamese=Lohit Assamese > ++dialog.bolditalic.devanagari=Lohit Devanagari > + dialog.bolditalic.bengali=Lohit Bengali > + dialog.bolditalic.gujarati=Lohit Gujarati > + dialog.bolditalic.hindi=Lohit Hindi > +@@ -95,6 +103,8 @@ > + sansserif.plain.korean=Baekmuk Gulim > + sansserif.plain.chinese-big5=AR PL ShanHeiSun Uni > + sansserif.plain.chinese-gb18030=AR PL ShanHeiSun Uni > ++sansserif.plain.assamese=Lohit Assamese > ++sansserif.plain.devanagari=Lohit Devanagari > + sansserif.plain.bengali=Lohit Bengali > + sansserif.plain.gujarati=Lohit Gujarati > + sansserif.plain.hindi=Lohit Hindi > +@@ -110,6 +120,8 @@ > + sansserif.bold.korean=Baekmuk Gulim > + sansserif.bold.chinese-big5=AR PL ShanHeiSun Uni > + sansserif.bold.chinese-gb18030=AR PL ShanHeiSun Uni > ++sansserif.bold.assamese=Lohit Assamese > ++sansserif.bold.devanagari=Lohit Devanagari > + sansserif.bold.bengali=Lohit Bengali > + sansserif.bold.gujarati=Lohit Gujarati > + sansserif.bold.hindi=Lohit Hindi > +@@ -125,6 +137,8 @@ > + sansserif.italic.korean=Baekmuk Gulim > + sansserif.italic.chinese-big5=AR PL ShanHeiSun Uni > + sansserif.italic.chinese-gb18030=AR PL ShanHeiSun Uni > ++sansserif.italic.assamese=Lohit Assamese > ++sansserif.italic.devanagari=Lohit Devanagari > + sansserif.italic.bengali=Lohit Bengali > + sansserif.italic.gujarati=Lohit Gujarati > + sansserif.italic.hindi=Lohit Hindi > +@@ -140,6 +154,8 @@ > + sansserif.bolditalic.korean=Baekmuk Gulim > + sansserif.bolditalic.chinese-big5=AR PL ShanHeiSun Uni > + sansserif.bolditalic.chinese-gb18030=AR PL ShanHeiSun Uni > ++sansserif.bolditalic.assamese=Lohit Assamese > ++sansserif.bolditalic.devanagari=Lohit Devanagari > + sansserif.bolditalic.bengali=Lohit Bengali > + sansserif.bolditalic.gujarati=Lohit Gujarati > + sansserif.bolditalic.hindi=Lohit Hindi > +@@ -155,6 +171,8 @@ > + serif.plain.korean=Baekmuk Batang > + serif.plain.chinese-big5=AR PL ZenKai Uni > + serif.plain.chinese-gb18030=AR PL ZenKai Uni > ++serif.plain.assamese=Lohit Assamese > ++serif.plain.devanagari=Lohit Devanagari > + serif.plain.bengali=Lohit Bengali > + serif.plain.gujarati=Lohit Gujarati > + serif.plain.hindi=Lohit Hindi > +@@ -170,6 +188,8 @@ > + serif.bold.korean=Baekmuk Batang > + serif.bold.chinese-big5=AR PL ZenKai Uni > + serif.bold.chinese-gb18030=AR PL ZenKai Uni > ++serif.bold.assamese=Lohit Assamese > ++serif.bold.devanagari=Lohit Devanagari > + serif.bold.bengali=Lohit Bengali > + serif.bold.gujarati=Lohit Gujarati > + serif.bold.hindi=Lohit Hindi > +@@ -185,6 +205,8 @@ > + serif.italic.korean=Baekmuk Batang > + serif.italic.chinese-big5=AR PL ZenKai Uni > + serif.italic.chinese-gb18030=AR PL ZenKai Uni > ++serif.italic.assamese=Lohit Assamese > ++serif.italic.devanagari=Lohit Devanagari > + serif.italic.bengali=Lohit Bengali > + serif.italic.gujarati=Lohit Gujarati > + serif.italic.hindi=Lohit Hindi > +@@ -200,6 +222,8 @@ > + serif.bolditalic.korean=Baekmuk Batang > + serif.bolditalic.chinese-big5=AR PL ZenKai Uni > + serif.bolditalic.chinese-gb18030=AR PL ZenKai Uni > ++serif.bolditalic.assamese=Lohit Assamese > ++serif.bolditalic.devanagari=Lohit Devanagari > + serif.bolditalic.bengali=Lohit Bengali > + serif.bolditalic.gujarati=Lohit Gujarati > + serif.bolditalic.hindi=Lohit Hindi > +@@ -215,6 +239,8 @@ > + monospaced.plain.korean=Baekmuk Gulim > + monospaced.plain.chinese-big5=AR PL ShanHeiSun Uni > + monospaced.plain.chinese-gb18030=AR PL ShanHeiSun Uni > ++monospaced.plain.assamese=Lohit Assamese > ++monospaced.plain.devanagari=Lohit Devanagari > + monospaced.plain.bengali=Lohit Bengali > + monospaced.plain.gujarati=Lohit Gujarati > + monospaced.plain.hindi=Lohit Hindi > +@@ -230,6 +256,8 @@ > + monospaced.bold.korean=Baekmuk Gulim > + monospaced.bold.chinese-big5=AR PL ShanHeiSun Uni > + monospaced.bold.chinese-gb18030=AR PL ShanHeiSun Uni > ++monospaced.bold.assamese=Lohit Assamese > ++monospaced.bold.devanagari=Lohit Devanagari > + monospaced.bold.bengali=Lohit Bengali > + monospaced.bold.gujarati=Lohit Gujarati > + monospaced.bold.hindi=Lohit Hindi > +@@ -245,6 +273,8 @@ > + monospaced.italic.korean=Baekmuk Gulim > + monospaced.italic.chinese-big5=AR PL ShanHeiSun Uni > + monospaced.italic.chinese-gb18030=AR PL ShanHeiSun Uni > ++monospaced.italic.assamese=Lohit Assamese > ++monospaced.italic.devanagari=Lohit Devanagari > + monospaced.italic.bengali=Lohit Bengali > + monospaced.italic.gujarati=Lohit Gujarati > + monospaced.italic.hindi=Lohit Hindi > +@@ -260,6 +290,8 @@ > + monospaced.bolditalic.korean=Baekmuk Gulim > + monospaced.bolditalic.chinese-big5=AR PL ShanHeiSun Uni > + monospaced.bolditalic.chinese-gb18030=AR PL ShanHeiSun Uni > ++monospaced.bolditalic.assamese=Lohit Assamese > ++monospaced.bolditalic.devanagari=Lohit Devanagari > + monospaced.bolditalic.bengali=Lohit Bengali > + monospaced.bolditalic.gujarati=Lohit Gujarati > + monospaced.bolditalic.hindi=Lohit Hindi > +@@ -275,6 +307,8 @@ > + dialoginput.plain.korean=Baekmuk Gulim > + dialoginput.plain.chinese-big5=AR PL ShanHeiSun Uni > + dialoginput.plain.chinese-gb18030=AR PL ShanHeiSun Uni > ++dialoginput.plain.assamese=Lohit Assamese > ++dialoginput.plain.devanagari=Lohit Devanagari > + dialoginput.plain.bengali=Lohit Bengali > + dialoginput.plain.gujarati=Lohit Gujarati > + dialoginput.plain.hindi=Lohit Hindi > +@@ -290,6 +324,8 @@ > + dialoginput.bold.korean=Baekmuk Gulim > + dialoginput.bold.chinese-big5=AR PL ShanHeiSun Uni > + dialoginput.bold.chinese-gb18030=AR PL ShanHeiSun Uni > ++dialoginput.bold.assamese=Lohit Assamese > ++dialoginput.bold.devanagari=Lohit Devanagari > + dialoginput.bold.bengali=Lohit Bengali > + dialoginput.bold.gujarati=Lohit Gujarati > + dialoginput.bold.hindi=Lohit Hindi > +@@ -305,6 +341,8 @@ > + dialoginput.italic.korean=Baekmuk Gulim > + dialoginput.italic.chinese-big5=AR PL ShanHeiSun Uni > + dialoginput.italic.chinese-gb18030=AR PL ShanHeiSun Uni > ++dialoginput.italic.assamese=Lohit Assamese > ++dialoginput.italic.devanagari=Lohit Devanagari > + dialoginput.italic.bengali=Lohit Bengali > + dialoginput.italic.gujarati=Lohit Gujarati > + dialoginput.italic.hindi=Lohit Hindi > +@@ -320,6 +358,8 @@ > + dialoginput.bolditalic.korean=Baekmuk Gulim > + dialoginput.bolditalic.chinese-big5=AR PL ShanHeiSun Uni > + dialoginput.bolditalic.chinese-gb18030=AR PL ShanHeiSun Uni > ++dialoginput.bolditalic.assamese=Lohit Assamese > ++dialoginput.bolditalic.devanagari=Lohit Devanagari > + dialoginput.bolditalic.bengali=Lohit Bengali > + dialoginput.bolditalic.gujarati=Lohit Gujarati > + dialoginput.bolditalic.hindi=Lohit Hindi > +@@ -356,21 +396,24 @@ > + > filename.DejaVu_Serif_Oblique=/usr/share/fonts/dejavu/DejaVuSerif-Oblique.ttf > + > filename.DejaVu_Serif_Bold_Oblique=/usr/share/fonts/dejavu/DejaVuSerif-BoldOblique.ttf > + > +-filename.Sazanami_Gothic=/usr/share/fonts/sazanami-fonts-gothic/sazanami-gothic.ttf > +-filename.Sazanami_Mincho=/usr/share/fonts/sazanami-fonts-mincho/sazanami-mincho.ttf > +-filename.AR_PL_ShanHeiSun_Uni=/usr/share/fonts/cjkunifonts-uming/uming.ttc > +-filename.AR_PL_ZenKai_Uni=/usr/share/fonts/cjkunifonts-ukai/ukai.ttc > +-filename.Baekmuk_Gulim=/usr/share/fonts/baekmuk-ttf-gulim/gulim.ttf > +-filename.Baekmuk_Batang=/usr/share/fonts/baekmuk-ttf-batang/batang.ttf > ++filename.Sazanami_Gothic=/usr/share/fonts/sazanami/gothic/sazanami-gothic.ttf > ++filename.Sazanami_Mincho=/usr/share/fonts/sazanami/mincho/sazanami-mincho.ttf > ++filename.AR_PL_ShanHeiSun_Uni=/usr/share/fonts/cjkuni-uming/uming.ttc > ++filename.AR_PL_ZenKai_Uni=/usr/share/fonts/cjkuni-ukai/ukai.ttc > ++filename.Baekmuk_Gulim=/usr/share/fonts/baekmuk-ttf/gulim.ttf > ++filename.Baekmuk_Batang=/usr/share/fonts/baekmuk-ttf/batang.ttf > ++ > ++filename.Lohit_Assamese=/usr/share/fonts/lohit-assamese/Lohit-Assamese.ttf > ++filename.Lohit_Devanagari=/usr/share/fonts/lohit-devanagari/Lohit-Devanagari.ttf > ++filename.Lohit_Bengali=/usr/share/fonts/lohit-bengali/Lohit-Bengali.ttf > ++filename.Lohit_Gujarati=/usr/share/fonts/lohit-gujarati/Lohit-Gujarati.ttf > ++filename.Lohit_Hindi=/usr/share/fonts/lohit-devanagari/Lohit-Devanagari.ttf > ++filename.Lohit_Kannda=/usr/share/fonts/lohit-kannada/Lohit-Kannada.ttf > ++filename.Lohit_Malayalam=/usr/share/fonts/lohit-malayalam/Lohit-Malayalam.ttf > ++filename.Lohit_Oriya=/usr/share/fonts/lohit-oriya/Lohit-Oriya.ttf > ++filename.Lohit_Punjabi=/usr/share/fonts/lohit-punjabi/Lohit-Punjabi.ttf > ++filename.Lohit_Tamil=/usr/share/fonts/lohit-tamil/Lohit-Tamil.ttf > ++filename.Lohit_Telugu=/usr/share/fonts/lohit-telugu/Lohit-Telugu.ttf > + > +-filename.Lohit_Bengali=/usr/share/fonts/lohit-bengali/lohit_bn.ttf > +-filename.Lohit_Gujarati=/usr/share/fonts/lohit-gujarati/lohit_gu.ttf > +-filename.Lohit_Hindi=/usr/share/fonts/lohit-hindi/lohit_hi.ttf > +-filename.Lohit_Kannda=/usr/share/fonts/lohit-kannada/lohit_kn.ttf > +-filename.Lohit_Malayalam=/usr/share/fonts/lohit-malayalam/lohit_ml.ttf > +-filename.Lohit_Oriya=/usr/share/fonts/lohit-oriya/lohit_or.ttf > +-filename.Lohit_Punjabi=/usr/share/fonts/lohit-punjabi/lohit_pa.ttf > +-filename.Lohit_Tamil=/usr/share/fonts/lohit-tamil/lohit_ta.ttf > +-filename.Lohit_Telugu=/usr/share/fonts/lohit-telugu/lohit_te.ttf > + filename.LKLUG=/usr/share/fonts/lklug/lklug.ttf > + -- Andrew :) Free Java Software Engineer Red Hat, Inc. (http://www.redhat.com) Support Free Java! Contribute to GNU Classpath and the OpenJDK http://www.gnu.org/software/classpath http://openjdk.java.net PGP Key: 94EFD9D8 (http://subkeys.pgp.net) Fingerprint = F8EF F1EA 401E 2E60 15FA 7927 142C 2591 94EF D9D8 From jvanek at icedtea.classpath.org Wed Nov 10 07:56:55 2010 From: jvanek at icedtea.classpath.org (jvanek at icedtea.classpath.org) Date: Wed, 10 Nov 2010 15:56:55 +0000 Subject: /hg/icedtea6: Updating fontconfig files for Fedoras 9-14 Message-ID: changeset ede1628338ab in /hg/icedtea6 details: http://icedtea.classpath.org/hg/icedtea6?cmd=changeset;node=ede1628338ab author: Jiri Vanek date: Wed Nov 10 16:28:47 2010 +0100 Updating fontconfig files for Fedoras 9-14 diffstat: 3 files changed, 703 insertions(+), 2 deletions(-) ChangeLog | 12 Makefile.am | 16 - patches/f14-fonts.patch | 677 +++++++++++++++++++++++++++++++++++++++++++++++ diffs (truncated from 740 to 500 lines): diff -r 2fafb0bc27f2 -r ede1628338ab ChangeLog --- a/ChangeLog Wed Nov 10 14:13:42 2010 +0000 +++ b/ChangeLog Wed Nov 10 16:28:47 2010 +0100 @@ -1,3 +1,15 @@ 2010-11-10 Andrew John Hughes + + * Makefile.am: + (FONTCONFIG_PATH): Added path to fontconfig files. + (ICEDTEA_PATCHES): Add f14-fonts.patch. + (fonts): Added cloning of fontconfig.Fedora + to Fedora.12,11,10,9. + (patch-fsg): Depend on fonts.stamp. + * patches/f14-fonts.patch + Updated font configurations for Fedora 9-14 + Add additional fontconfig files to Makefile. + 2010-11-10 Andrew John Hughes * Makefile.am: Add BigDecimal/Integer performance diff -r 2fafb0bc27f2 -r ede1628338ab Makefile.am --- a/Makefile.am Wed Nov 10 14:13:42 2010 +0000 +++ b/Makefile.am Wed Nov 10 16:28:47 2010 +0100 @@ -40,6 +40,8 @@ SERVER_DIR = hotspot/import/jre/lib/$(IN SERVER_DIR = hotspot/import/jre/lib/$(INSTALL_ARCH_DIR)/server BUILD_JRE_ARCH_DIR = $(BUILD_OUTPUT_DIR)/j2sdk-image/jre/lib/$(INSTALL_ARCH_DIR) BUILD_DEBUG_JRE_ARCH_DIR = $(DEBUG_BUILD_OUTPUT_DIR)/j2sdk-image/jre/lib/$(INSTALL_ARCH_DIR) +FONTCONFIG_PATH = openjdk/jdk/src/solaris/classes/sun/awt/fontconfigs + # Source directories @@ -298,7 +300,8 @@ ICEDTEA_PATCHES = \ patches/openjdk/6997495-test_correction_6857159.patch \ patches/openjdk/6622432-bigdecimal_performance.patch \ patches/openjdk/6850606-bigdecimal_regression.patch \ - patches/openjdk/6876282-bigdecimal_divide.patch + patches/openjdk/6876282-bigdecimal_divide.patch \ + patches/f14-fonts.patch if WITH_ALT_HSBUILD ICEDTEA_PATCHES += \ @@ -953,7 +956,16 @@ clean-generated: fi rm -f stamps/generated.stamp -stamps/patch-fsg.stamp: stamps/generated.stamp +stamps/fonts.stamp: stamps/generated.stamp + cp $(FONTCONFIG_PATH)/linux.fontconfig.Fedora.properties $(FONTCONFIG_PATH)/linux.fontconfig.Fedora.9.properties + cp $(FONTCONFIG_PATH)/linux.fontconfig.Fedora.properties $(FONTCONFIG_PATH)/linux.fontconfig.Fedora.10.properties + cp $(FONTCONFIG_PATH)/linux.fontconfig.Fedora.properties $(FONTCONFIG_PATH)/linux.fontconfig.Fedora.11.properties + cp $(FONTCONFIG_PATH)/linux.fontconfig.Fedora.properties $(FONTCONFIG_PATH)/linux.fontconfig.Fedora.12.properties + mkdir -p stamps + touch stamps/fonts.stamp + + +stamps/patch-fsg.stamp: stamps/fonts.stamp mkdir -p stamps ; \ rm -f stamps/patch-fsg.stamp.tmp ; \ touch stamps/patch-fsg.stamp.tmp ; \ diff -r 2fafb0bc27f2 -r ede1628338ab patches/f14-fonts.patch --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/patches/f14-fonts.patch Wed Nov 10 16:28:47 2010 +0100 @@ -0,0 +1,677 @@ +--- openjdk/jdk/make/sun/awt/Makefile 2010-11-04 09:52:49.583434000 +0100 ++++ openjdk/jdk/make/sun/awt/Makefile 2010-11-04 16:50:14.091688769 +0100 +@@ -387,6 +387,10 @@ + fontconfig.SuSE.properties \ + fontconfig.Ubuntu.properties \ + fontconfig.Fedora.properties \ ++ fontconfig.Fedora.9.properties \ ++ fontconfig.Fedora.10.properties \ ++ fontconfig.Fedora.11.properties \ ++ fontconfig.Fedora.12.properties \ + fontconfig.RedHat.6.0.properties \ + fontconfig.Gentoo.properties + else + +--- openjdk/jdk/src/solaris/classes/sun/awt/fontconfigs/linux.fontconfig.Fedora.11.properties 2010-11-04 11:06:26.695428114 +0100 ++++ openjdk/jdk/src/solaris/classes/sun/awt/fontconfigs/linux.fontconfig.Fedora.11.properties 2010-11-04 11:19:45.133587953 +0100 +@@ -35,6 +35,8 @@ + dialog.plain.korean=Baekmuk Gulim + dialog.plain.chinese-big5=AR PL ShanHeiSun Uni + dialog.plain.chinese-gb18030=AR PL ShanHeiSun Uni ++dialog.plain.assamese=Lohit Assamese ++dialog.plain.devanagari=Lohit Devanagari + dialog.plain.bengali=Lohit Bengali + dialog.plain.gujarati=Lohit Gujarati + dialog.plain.hindi=Lohit Hindi +@@ -50,6 +52,8 @@ + dialog.bold.korean=Baekmuk Gulim + dialog.bold.chinese-big5=AR PL ShanHeiSun Uni + dialog.bold.chinese-gb18030=AR PL ShanHeiSun Uni ++dialog.bold.assamese=Lohit Assamese ++dialog.bold.devanagari=Lohit Devanagari + dialog.bold.bengali=Lohit Bengali + dialog.bold.gujarati=Lohit Gujarati + dialog.bold.hindi=Lohit Hindi +@@ -65,6 +69,8 @@ + dialog.italic.korean=Baekmuk Gulim + dialog.italic.chinese-big5=AR PL ShanHeiSun Uni + dialog.italic.chinese-gb18030=AR PL ShanHeiSun Uni ++dialog.italic.assamese=Lohit Assamese ++dialog.italic.devanagari=Lohit Devanagari + dialog.italic.bengali=Lohit Bengali + dialog.italic.gujarati=Lohit Gujarati + dialog.italic.hindi=Lohit Hindi +@@ -80,6 +86,8 @@ + dialog.bolditalic.korean=Baekmuk Gulim + dialog.bolditalic.chinese-big5=AR PL ShanHeiSun Uni + dialog.bolditalic.chinese-gb18030=AR PL ShanHeiSun Uni ++dialog.bolditalic.assamese=Lohit Assamese ++dialog.bolditalic.devanagari=Lohit Devanagari + dialog.bolditalic.bengali=Lohit Bengali + dialog.bolditalic.gujarati=Lohit Gujarati + dialog.bolditalic.hindi=Lohit Hindi +@@ -95,6 +103,8 @@ + sansserif.plain.korean=Baekmuk Gulim + sansserif.plain.chinese-big5=AR PL ShanHeiSun Uni + sansserif.plain.chinese-gb18030=AR PL ShanHeiSun Uni ++sansserif.plain.assamese=Lohit Assamese ++sansserif.plain.devanagari=Lohit Devanagari + sansserif.plain.bengali=Lohit Bengali + sansserif.plain.gujarati=Lohit Gujarati + sansserif.plain.hindi=Lohit Hindi +@@ -110,6 +120,8 @@ + sansserif.bold.korean=Baekmuk Gulim + sansserif.bold.chinese-big5=AR PL ShanHeiSun Uni + sansserif.bold.chinese-gb18030=AR PL ShanHeiSun Uni ++sansserif.bold.assamese=Lohit Assamese ++sansserif.bold.devanagari=Lohit Devanagari + sansserif.bold.bengali=Lohit Bengali + sansserif.bold.gujarati=Lohit Gujarati + sansserif.bold.hindi=Lohit Hindi +@@ -125,6 +137,8 @@ + sansserif.italic.korean=Baekmuk Gulim + sansserif.italic.chinese-big5=AR PL ShanHeiSun Uni + sansserif.italic.chinese-gb18030=AR PL ShanHeiSun Uni ++sansserif.italic.assamese=Lohit Assamese ++sansserif.italic.devanagari=Lohit Devanagari + sansserif.italic.bengali=Lohit Bengali + sansserif.italic.gujarati=Lohit Gujarati + sansserif.italic.hindi=Lohit Hindi +@@ -140,6 +154,8 @@ + sansserif.bolditalic.korean=Baekmuk Gulim + sansserif.bolditalic.chinese-big5=AR PL ShanHeiSun Uni + sansserif.bolditalic.chinese-gb18030=AR PL ShanHeiSun Uni ++sansserif.bolditalic.assamese=Lohit Assamese ++sansserif.bolditalic.devanagari=Lohit Devanagari + sansserif.bolditalic.bengali=Lohit Bengali + sansserif.bolditalic.gujarati=Lohit Gujarati + sansserif.bolditalic.hindi=Lohit Hindi +@@ -155,6 +171,8 @@ + serif.plain.korean=Baekmuk Batang + serif.plain.chinese-big5=AR PL ZenKai Uni + serif.plain.chinese-gb18030=AR PL ZenKai Uni ++serif.plain.assamese=Lohit Assamese ++serif.plain.devanagari=Lohit Devanagari + serif.plain.bengali=Lohit Bengali + serif.plain.gujarati=Lohit Gujarati + serif.plain.hindi=Lohit Hindi +@@ -170,6 +188,8 @@ + serif.bold.korean=Baekmuk Batang + serif.bold.chinese-big5=AR PL ZenKai Uni + serif.bold.chinese-gb18030=AR PL ZenKai Uni ++serif.bold.assamese=Lohit Assamese ++serif.bold.devanagari=Lohit Devanagari + serif.bold.bengali=Lohit Bengali + serif.bold.gujarati=Lohit Gujarati + serif.bold.hindi=Lohit Hindi +@@ -185,6 +205,8 @@ + serif.italic.korean=Baekmuk Batang + serif.italic.chinese-big5=AR PL ZenKai Uni + serif.italic.chinese-gb18030=AR PL ZenKai Uni ++serif.italic.assamese=Lohit Assamese ++serif.italic.devanagari=Lohit Devanagari + serif.italic.bengali=Lohit Bengali + serif.italic.gujarati=Lohit Gujarati + serif.italic.hindi=Lohit Hindi +@@ -200,6 +222,8 @@ + serif.bolditalic.korean=Baekmuk Batang + serif.bolditalic.chinese-big5=AR PL ZenKai Uni + serif.bolditalic.chinese-gb18030=AR PL ZenKai Uni ++serif.bolditalic.assamese=Lohit Assamese ++serif.bolditalic.devanagari=Lohit Devanagari + serif.bolditalic.bengali=Lohit Bengali + serif.bolditalic.gujarati=Lohit Gujarati + serif.bolditalic.hindi=Lohit Hindi +@@ -215,6 +239,8 @@ + monospaced.plain.korean=Baekmuk Gulim + monospaced.plain.chinese-big5=AR PL ShanHeiSun Uni + monospaced.plain.chinese-gb18030=AR PL ShanHeiSun Uni ++monospaced.plain.assamese=Lohit Assamese ++monospaced.plain.devanagari=Lohit Devanagari + monospaced.plain.bengali=Lohit Bengali + monospaced.plain.gujarati=Lohit Gujarati + monospaced.plain.hindi=Lohit Hindi +@@ -230,6 +256,8 @@ + monospaced.bold.korean=Baekmuk Gulim + monospaced.bold.chinese-big5=AR PL ShanHeiSun Uni + monospaced.bold.chinese-gb18030=AR PL ShanHeiSun Uni ++monospaced.bold.assamese=Lohit Assamese ++monospaced.bold.devanagari=Lohit Devanagari + monospaced.bold.bengali=Lohit Bengali + monospaced.bold.gujarati=Lohit Gujarati + monospaced.bold.hindi=Lohit Hindi +@@ -245,6 +273,8 @@ + monospaced.italic.korean=Baekmuk Gulim + monospaced.italic.chinese-big5=AR PL ShanHeiSun Uni + monospaced.italic.chinese-gb18030=AR PL ShanHeiSun Uni ++monospaced.italic.assamese=Lohit Assamese ++monospaced.italic.devanagari=Lohit Devanagari + monospaced.italic.bengali=Lohit Bengali + monospaced.italic.gujarati=Lohit Gujarati + monospaced.italic.hindi=Lohit Hindi +@@ -260,6 +290,8 @@ + monospaced.bolditalic.korean=Baekmuk Gulim + monospaced.bolditalic.chinese-big5=AR PL ShanHeiSun Uni + monospaced.bolditalic.chinese-gb18030=AR PL ShanHeiSun Uni ++monospaced.bolditalic.assamese=Lohit Assamese ++monospaced.bolditalic.devanagari=Lohit Devanagari + monospaced.bolditalic.bengali=Lohit Bengali + monospaced.bolditalic.gujarati=Lohit Gujarati + monospaced.bolditalic.hindi=Lohit Hindi +@@ -275,6 +307,8 @@ + dialoginput.plain.korean=Baekmuk Gulim + dialoginput.plain.chinese-big5=AR PL ShanHeiSun Uni + dialoginput.plain.chinese-gb18030=AR PL ShanHeiSun Uni ++dialoginput.plain.assamese=Lohit Assamese ++dialoginput.plain.devanagari=Lohit Devanagari + dialoginput.plain.bengali=Lohit Bengali + dialoginput.plain.gujarati=Lohit Gujarati + dialoginput.plain.hindi=Lohit Hindi +@@ -290,6 +324,8 @@ + dialoginput.bold.korean=Baekmuk Gulim + dialoginput.bold.chinese-big5=AR PL ShanHeiSun Uni + dialoginput.bold.chinese-gb18030=AR PL ShanHeiSun Uni ++dialoginput.bold.assamese=Lohit Assamese ++dialoginput.bold.devanagari=Lohit Devanagari + dialoginput.bold.bengali=Lohit Bengali + dialoginput.bold.gujarati=Lohit Gujarati + dialoginput.bold.hindi=Lohit Hindi +@@ -305,6 +341,8 @@ + dialoginput.italic.korean=Baekmuk Gulim + dialoginput.italic.chinese-big5=AR PL ShanHeiSun Uni + dialoginput.italic.chinese-gb18030=AR PL ShanHeiSun Uni ++dialoginput.italic.assamese=Lohit Assamese ++dialoginput.italic.devanagari=Lohit Devanagari + dialoginput.italic.bengali=Lohit Bengali + dialoginput.italic.gujarati=Lohit Gujarati + dialoginput.italic.hindi=Lohit Hindi +@@ -320,6 +358,8 @@ + dialoginput.bolditalic.korean=Baekmuk Gulim + dialoginput.bolditalic.chinese-big5=AR PL ShanHeiSun Uni + dialoginput.bolditalic.chinese-gb18030=AR PL ShanHeiSun Uni ++dialoginput.bolditalic.assamese=Lohit Assamese ++dialoginput.bolditalic.devanagari=Lohit Devanagari + dialoginput.bolditalic.bengali=Lohit Bengali + dialoginput.bolditalic.gujarati=Lohit Gujarati + dialoginput.bolditalic.hindi=Lohit Hindi +@@ -356,21 +396,24 @@ + filename.DejaVu_Serif_Oblique=/usr/share/fonts/dejavu/DejaVuSerif-Oblique.ttf + filename.DejaVu_Serif_Bold_Oblique=/usr/share/fonts/dejavu/DejaVuSerif-BoldOblique.ttf + +-filename.Sazanami_Gothic=/usr/share/fonts/sazanami-fonts-gothic/sazanami-gothic.ttf +-filename.Sazanami_Mincho=/usr/share/fonts/sazanami-fonts-mincho/sazanami-mincho.ttf ++filename.Sazanami_Gothic=/usr/share/fonts/sazanami/gothic/sazanami-gothic.ttf ++filename.Sazanami_Mincho=/usr/share/fonts/sazanami/mincho/sazanami-mincho.ttf + filename.AR_PL_ShanHeiSun_Uni=/usr/share/fonts/cjkunifonts-uming/uming.ttc + filename.AR_PL_ZenKai_Uni=/usr/share/fonts/cjkunifonts-ukai/ukai.ttc +-filename.Baekmuk_Gulim=/usr/share/fonts/baekmuk-ttf-gulim/gulim.ttf +-filename.Baekmuk_Batang=/usr/share/fonts/baekmuk-ttf-batang/batang.ttf ++filename.Baekmuk_Gulim=/usr/share/fonts/baekmuk-ttf/gulim.ttf ++filename.Baekmuk_Batang=/usr/share/fonts/baekmuk-ttf/batang.ttf ++ ++filename.Lohit_Assamese=/usr/share/fonts/lohit-assamese/Lohit-Assamese.ttf ++filename.Lohit_Devanagari=/usr/share/fonts/lohit-devanagari/Lohit-Devanagari.ttf ++filename.Lohit_Bengali=/usr/share/fonts/lohit-bengali/Lohit-Bengali.ttf ++filename.Lohit_Gujarati=/usr/share/fonts/lohit-gujarati/Lohit-Gujarati.ttf ++filename.Lohit_Hindi=/usr/share/fonts/lohit-hindi/Lohit-Hindi.ttf ++filename.Lohit_Kannda=/usr/share/fonts/lohit-kannada/Lohit-Kannada.ttf ++filename.Lohit_Malayalam=/usr/share/fonts/lohit-malayalam/Lohit-Malayalam.ttf ++filename.Lohit_Oriya=/usr/share/fonts/lohit-oriya/Lohit-Oriya.ttf ++filename.Lohit_Punjabi=/usr/share/fonts/lohit-punjabi/Lohit-Punjabi.ttf ++filename.Lohit_Tamil=/usr/share/fonts/lohit-tamil/Lohit-Tamil.ttf ++filename.Lohit_Telugu=/usr/share/fonts/lohit-telugu/Lohit-Telugu.ttf + +-filename.Lohit_Bengali=/usr/share/fonts/lohit-bengali/lohit_bn.ttf +-filename.Lohit_Gujarati=/usr/share/fonts/lohit-gujarati/lohit_gu.ttf +-filename.Lohit_Hindi=/usr/share/fonts/lohit-hindi/lohit_hi.ttf +-filename.Lohit_Kannda=/usr/share/fonts/lohit-kannada/lohit_kn.ttf +-filename.Lohit_Malayalam=/usr/share/fonts/lohit-malayalam/lohit_ml.ttf +-filename.Lohit_Oriya=/usr/share/fonts/lohit-oriya/lohit_or.ttf +-filename.Lohit_Punjabi=/usr/share/fonts/lohit-punjabi/lohit_pa.ttf +-filename.Lohit_Tamil=/usr/share/fonts/lohit-tamil/lohit_ta.ttf +-filename.Lohit_Telugu=/usr/share/fonts/lohit-telugu/lohit_te.ttf + filename.LKLUG=/usr/share/fonts/lklug/lklug.ttf + + +--- openjdk/jdk/src/solaris/classes/sun/awt/fontconfigs/linux.fontconfig.Fedora.12.properties 2010-11-04 11:06:26.695428114 +0100 ++++ openjdk/jdk/src/solaris/classes/sun/awt/fontconfigs/linux.fontconfig.Fedora.12.properties 2010-11-04 11:19:45.133587953 +0100 +@@ -35,6 +35,8 @@ + dialog.plain.korean=Baekmuk Gulim + dialog.plain.chinese-big5=AR PL ShanHeiSun Uni + dialog.plain.chinese-gb18030=AR PL ShanHeiSun Uni ++dialog.plain.assamese=Lohit Assamese ++dialog.plain.devanagari=Lohit Devanagari + dialog.plain.bengali=Lohit Bengali + dialog.plain.gujarati=Lohit Gujarati + dialog.plain.hindi=Lohit Hindi +@@ -50,6 +52,8 @@ + dialog.bold.korean=Baekmuk Gulim + dialog.bold.chinese-big5=AR PL ShanHeiSun Uni + dialog.bold.chinese-gb18030=AR PL ShanHeiSun Uni ++dialog.bold.assamese=Lohit Assamese ++dialog.bold.devanagari=Lohit Devanagari + dialog.bold.bengali=Lohit Bengali + dialog.bold.gujarati=Lohit Gujarati + dialog.bold.hindi=Lohit Hindi +@@ -65,6 +69,8 @@ + dialog.italic.korean=Baekmuk Gulim + dialog.italic.chinese-big5=AR PL ShanHeiSun Uni + dialog.italic.chinese-gb18030=AR PL ShanHeiSun Uni ++dialog.italic.assamese=Lohit Assamese ++dialog.italic.devanagari=Lohit Devanagari + dialog.italic.bengali=Lohit Bengali + dialog.italic.gujarati=Lohit Gujarati + dialog.italic.hindi=Lohit Hindi +@@ -80,6 +86,8 @@ + dialog.bolditalic.korean=Baekmuk Gulim + dialog.bolditalic.chinese-big5=AR PL ShanHeiSun Uni + dialog.bolditalic.chinese-gb18030=AR PL ShanHeiSun Uni ++dialog.bolditalic.assamese=Lohit Assamese ++dialog.bolditalic.devanagari=Lohit Devanagari + dialog.bolditalic.bengali=Lohit Bengali + dialog.bolditalic.gujarati=Lohit Gujarati + dialog.bolditalic.hindi=Lohit Hindi +@@ -95,6 +103,8 @@ + sansserif.plain.korean=Baekmuk Gulim + sansserif.plain.chinese-big5=AR PL ShanHeiSun Uni + sansserif.plain.chinese-gb18030=AR PL ShanHeiSun Uni ++sansserif.plain.assamese=Lohit Assamese ++sansserif.plain.devanagari=Lohit Devanagari + sansserif.plain.bengali=Lohit Bengali + sansserif.plain.gujarati=Lohit Gujarati + sansserif.plain.hindi=Lohit Hindi +@@ -110,6 +120,8 @@ + sansserif.bold.korean=Baekmuk Gulim + sansserif.bold.chinese-big5=AR PL ShanHeiSun Uni + sansserif.bold.chinese-gb18030=AR PL ShanHeiSun Uni ++sansserif.bold.assamese=Lohit Assamese ++sansserif.bold.devanagari=Lohit Devanagari + sansserif.bold.bengali=Lohit Bengali + sansserif.bold.gujarati=Lohit Gujarati + sansserif.bold.hindi=Lohit Hindi +@@ -125,6 +137,8 @@ + sansserif.italic.korean=Baekmuk Gulim + sansserif.italic.chinese-big5=AR PL ShanHeiSun Uni + sansserif.italic.chinese-gb18030=AR PL ShanHeiSun Uni ++sansserif.italic.assamese=Lohit Assamese ++sansserif.italic.devanagari=Lohit Devanagari + sansserif.italic.bengali=Lohit Bengali + sansserif.italic.gujarati=Lohit Gujarati + sansserif.italic.hindi=Lohit Hindi +@@ -140,6 +154,8 @@ + sansserif.bolditalic.korean=Baekmuk Gulim + sansserif.bolditalic.chinese-big5=AR PL ShanHeiSun Uni + sansserif.bolditalic.chinese-gb18030=AR PL ShanHeiSun Uni ++sansserif.bolditalic.assamese=Lohit Assamese ++sansserif.bolditalic.devanagari=Lohit Devanagari + sansserif.bolditalic.bengali=Lohit Bengali + sansserif.bolditalic.gujarati=Lohit Gujarati + sansserif.bolditalic.hindi=Lohit Hindi +@@ -155,6 +171,8 @@ + serif.plain.korean=Baekmuk Batang + serif.plain.chinese-big5=AR PL ZenKai Uni + serif.plain.chinese-gb18030=AR PL ZenKai Uni ++serif.plain.assamese=Lohit Assamese ++serif.plain.devanagari=Lohit Devanagari + serif.plain.bengali=Lohit Bengali + serif.plain.gujarati=Lohit Gujarati + serif.plain.hindi=Lohit Hindi +@@ -170,6 +188,8 @@ + serif.bold.korean=Baekmuk Batang + serif.bold.chinese-big5=AR PL ZenKai Uni + serif.bold.chinese-gb18030=AR PL ZenKai Uni ++serif.bold.assamese=Lohit Assamese ++serif.bold.devanagari=Lohit Devanagari + serif.bold.bengali=Lohit Bengali + serif.bold.gujarati=Lohit Gujarati + serif.bold.hindi=Lohit Hindi +@@ -185,6 +205,8 @@ + serif.italic.korean=Baekmuk Batang + serif.italic.chinese-big5=AR PL ZenKai Uni + serif.italic.chinese-gb18030=AR PL ZenKai Uni ++serif.italic.assamese=Lohit Assamese ++serif.italic.devanagari=Lohit Devanagari + serif.italic.bengali=Lohit Bengali + serif.italic.gujarati=Lohit Gujarati + serif.italic.hindi=Lohit Hindi +@@ -200,6 +222,8 @@ + serif.bolditalic.korean=Baekmuk Batang + serif.bolditalic.chinese-big5=AR PL ZenKai Uni + serif.bolditalic.chinese-gb18030=AR PL ZenKai Uni ++serif.bolditalic.assamese=Lohit Assamese ++serif.bolditalic.devanagari=Lohit Devanagari + serif.bolditalic.bengali=Lohit Bengali + serif.bolditalic.gujarati=Lohit Gujarati + serif.bolditalic.hindi=Lohit Hindi +@@ -215,6 +239,8 @@ + monospaced.plain.korean=Baekmuk Gulim + monospaced.plain.chinese-big5=AR PL ShanHeiSun Uni + monospaced.plain.chinese-gb18030=AR PL ShanHeiSun Uni ++monospaced.plain.assamese=Lohit Assamese ++monospaced.plain.devanagari=Lohit Devanagari + monospaced.plain.bengali=Lohit Bengali + monospaced.plain.gujarati=Lohit Gujarati + monospaced.plain.hindi=Lohit Hindi +@@ -230,6 +256,8 @@ + monospaced.bold.korean=Baekmuk Gulim + monospaced.bold.chinese-big5=AR PL ShanHeiSun Uni + monospaced.bold.chinese-gb18030=AR PL ShanHeiSun Uni ++monospaced.bold.assamese=Lohit Assamese ++monospaced.bold.devanagari=Lohit Devanagari + monospaced.bold.bengali=Lohit Bengali + monospaced.bold.gujarati=Lohit Gujarati + monospaced.bold.hindi=Lohit Hindi +@@ -245,6 +273,8 @@ + monospaced.italic.korean=Baekmuk Gulim + monospaced.italic.chinese-big5=AR PL ShanHeiSun Uni + monospaced.italic.chinese-gb18030=AR PL ShanHeiSun Uni ++monospaced.italic.assamese=Lohit Assamese ++monospaced.italic.devanagari=Lohit Devanagari + monospaced.italic.bengali=Lohit Bengali + monospaced.italic.gujarati=Lohit Gujarati + monospaced.italic.hindi=Lohit Hindi +@@ -260,6 +290,8 @@ + monospaced.bolditalic.korean=Baekmuk Gulim + monospaced.bolditalic.chinese-big5=AR PL ShanHeiSun Uni + monospaced.bolditalic.chinese-gb18030=AR PL ShanHeiSun Uni ++monospaced.bolditalic.assamese=Lohit Assamese ++monospaced.bolditalic.devanagari=Lohit Devanagari + monospaced.bolditalic.bengali=Lohit Bengali + monospaced.bolditalic.gujarati=Lohit Gujarati + monospaced.bolditalic.hindi=Lohit Hindi +@@ -275,6 +307,8 @@ + dialoginput.plain.korean=Baekmuk Gulim + dialoginput.plain.chinese-big5=AR PL ShanHeiSun Uni + dialoginput.plain.chinese-gb18030=AR PL ShanHeiSun Uni ++dialoginput.plain.assamese=Lohit Assamese ++dialoginput.plain.devanagari=Lohit Devanagari + dialoginput.plain.bengali=Lohit Bengali + dialoginput.plain.gujarati=Lohit Gujarati + dialoginput.plain.hindi=Lohit Hindi +@@ -290,6 +324,8 @@ + dialoginput.bold.korean=Baekmuk Gulim + dialoginput.bold.chinese-big5=AR PL ShanHeiSun Uni + dialoginput.bold.chinese-gb18030=AR PL ShanHeiSun Uni ++dialoginput.bold.assamese=Lohit Assamese ++dialoginput.bold.devanagari=Lohit Devanagari + dialoginput.bold.bengali=Lohit Bengali + dialoginput.bold.gujarati=Lohit Gujarati + dialoginput.bold.hindi=Lohit Hindi +@@ -305,6 +341,8 @@ + dialoginput.italic.korean=Baekmuk Gulim + dialoginput.italic.chinese-big5=AR PL ShanHeiSun Uni + dialoginput.italic.chinese-gb18030=AR PL ShanHeiSun Uni ++dialoginput.italic.assamese=Lohit Assamese ++dialoginput.italic.devanagari=Lohit Devanagari + dialoginput.italic.bengali=Lohit Bengali + dialoginput.italic.gujarati=Lohit Gujarati + dialoginput.italic.hindi=Lohit Hindi +@@ -320,6 +358,8 @@ + dialoginput.bolditalic.korean=Baekmuk Gulim + dialoginput.bolditalic.chinese-big5=AR PL ShanHeiSun Uni + dialoginput.bolditalic.chinese-gb18030=AR PL ShanHeiSun Uni ++dialoginput.bolditalic.assamese=Lohit Assamese ++dialoginput.bolditalic.devanagari=Lohit Devanagari + dialoginput.bolditalic.bengali=Lohit Bengali + dialoginput.bolditalic.gujarati=Lohit Gujarati + dialoginput.bolditalic.hindi=Lohit Hindi +@@ -356,21 +396,24 @@ + filename.DejaVu_Serif_Oblique=/usr/share/fonts/dejavu/DejaVuSerif-Oblique.ttf + filename.DejaVu_Serif_Bold_Oblique=/usr/share/fonts/dejavu/DejaVuSerif-BoldOblique.ttf + +-filename.Sazanami_Gothic=/usr/share/fonts/sazanami-fonts-gothic/sazanami-gothic.ttf +-filename.Sazanami_Mincho=/usr/share/fonts/sazanami-fonts-mincho/sazanami-mincho.ttf ++filename.Sazanami_Gothic=/usr/share/fonts/sazanami/gothic/sazanami-gothic.ttf ++filename.Sazanami_Mincho=/usr/share/fonts/sazanami/mincho/sazanami-mincho.ttf + filename.AR_PL_ShanHeiSun_Uni=/usr/share/fonts/cjkunifonts-uming/uming.ttc + filename.AR_PL_ZenKai_Uni=/usr/share/fonts/cjkunifonts-ukai/ukai.ttc +-filename.Baekmuk_Gulim=/usr/share/fonts/baekmuk-ttf-gulim/gulim.ttf +-filename.Baekmuk_Batang=/usr/share/fonts/baekmuk-ttf-batang/batang.ttf ++filename.Baekmuk_Gulim=/usr/share/fonts/baekmuk-ttf/gulim.ttf ++filename.Baekmuk_Batang=/usr/share/fonts/baekmuk-ttf/batang.ttf ++ ++filename.Lohit_Assamese=/usr/share/fonts/lohit-assamese/Lohit-Assamese.ttf ++filename.Lohit_Devanagari=/usr/share/fonts/lohit-devanagari/Lohit-Devanagari.ttf ++filename.Lohit_Bengali=/usr/share/fonts/lohit-bengali/Lohit-Bengali.ttf ++filename.Lohit_Gujarati=/usr/share/fonts/lohit-gujarati/Lohit-Gujarati.ttf ++filename.Lohit_Hindi=/usr/share/fonts/lohit-devanagari/Lohit-Devanagari.ttf From andrew at icedtea.classpath.org Wed Nov 10 08:07:06 2010 From: andrew at icedtea.classpath.org (andrew at icedtea.classpath.org) Date: Wed, 10 Nov 2010 16:07:06 +0000 Subject: /hg/icedtea6: 2 new changesets Message-ID: changeset 58e325d961e2 in /hg/icedtea6 details: http://icedtea.classpath.org/hg/icedtea6?cmd=changeset;node=58e325d961e2 author: Andrew John Hughes date: Wed Nov 10 16:05:51 2010 +0000 RH647737: Disable compressed oops in hs19 to avoid Eclipse failures. 2010-11-10 Andrew John Hughes RH647737 Disable compressed oops in hs19. * Makefile.am: Add new patch. * patches/disable-default-compoops.patch: New patch to turn off compressed oops by default. changeset 3b0958812397 in /hg/icedtea6 details: http://icedtea.classpath.org/hg/icedtea6?cmd=changeset;node=3b0958812397 author: Andrew John Hughes date: Wed Nov 10 16:07:00 2010 +0000 Merge diffstat: 4 files changed, 725 insertions(+), 3 deletions(-) ChangeLog | 20 Makefile.am | 19 patches/disable-default-compoops.patch | 12 patches/f14-fonts.patch | 677 ++++++++++++++++++++++++++++++++ diffs (truncated from 770 to 500 lines): diff -r 2fafb0bc27f2 -r 3b0958812397 ChangeLog --- a/ChangeLog Wed Nov 10 14:13:42 2010 +0000 +++ b/ChangeLog Wed Nov 10 16:07:00 2010 +0000 @@ -1,3 +1,23 @@ 2010-11-10 Andrew John Hughes + + RH647737 + Disable compressed oops in hs19. + * Makefile.am: Add new patch. + * patches/disable-default-compoops.patch: + New patch to turn off compressed oops by default. + +2010-11-10 Jiri Vanek + + * Makefile.am: + (FONTCONFIG_PATH): Added path to fontconfig files. + (ICEDTEA_PATCHES): Add f14-fonts.patch. + (fonts): Added cloning of fontconfig.Fedora + to Fedora.12,11,10,9. + (patch-fsg): Depend on fonts.stamp. + * patches/f14-fonts.patch + Updated font configurations for Fedora 9-14 + Add additional fontconfig files to Makefile. + 2010-11-10 Andrew John Hughes * Makefile.am: Add BigDecimal/Integer performance diff -r 2fafb0bc27f2 -r 3b0958812397 Makefile.am --- a/Makefile.am Wed Nov 10 14:13:42 2010 +0000 +++ b/Makefile.am Wed Nov 10 16:07:00 2010 +0000 @@ -40,6 +40,8 @@ SERVER_DIR = hotspot/import/jre/lib/$(IN SERVER_DIR = hotspot/import/jre/lib/$(INSTALL_ARCH_DIR)/server BUILD_JRE_ARCH_DIR = $(BUILD_OUTPUT_DIR)/j2sdk-image/jre/lib/$(INSTALL_ARCH_DIR) BUILD_DEBUG_JRE_ARCH_DIR = $(DEBUG_BUILD_OUTPUT_DIR)/j2sdk-image/jre/lib/$(INSTALL_ARCH_DIR) +FONTCONFIG_PATH = openjdk/jdk/src/solaris/classes/sun/awt/fontconfigs + # Source directories @@ -298,11 +300,13 @@ ICEDTEA_PATCHES = \ patches/openjdk/6997495-test_correction_6857159.patch \ patches/openjdk/6622432-bigdecimal_performance.patch \ patches/openjdk/6850606-bigdecimal_regression.patch \ - patches/openjdk/6876282-bigdecimal_divide.patch + patches/openjdk/6876282-bigdecimal_divide.patch \ + patches/f14-fonts.patch if WITH_ALT_HSBUILD ICEDTEA_PATCHES += \ - patches/openjdk/6994130-ppc_fix.patch + patches/openjdk/6994130-ppc_fix.patch \ + patches/disable-default-compoops.patch else ICEDTEA_PATCHES += \ patches/shark_do_nothing_on_stub_frame.patch \ @@ -953,7 +957,16 @@ clean-generated: fi rm -f stamps/generated.stamp -stamps/patch-fsg.stamp: stamps/generated.stamp +stamps/fonts.stamp: stamps/generated.stamp + cp $(FONTCONFIG_PATH)/linux.fontconfig.Fedora.properties $(FONTCONFIG_PATH)/linux.fontconfig.Fedora.9.properties + cp $(FONTCONFIG_PATH)/linux.fontconfig.Fedora.properties $(FONTCONFIG_PATH)/linux.fontconfig.Fedora.10.properties + cp $(FONTCONFIG_PATH)/linux.fontconfig.Fedora.properties $(FONTCONFIG_PATH)/linux.fontconfig.Fedora.11.properties + cp $(FONTCONFIG_PATH)/linux.fontconfig.Fedora.properties $(FONTCONFIG_PATH)/linux.fontconfig.Fedora.12.properties + mkdir -p stamps + touch stamps/fonts.stamp + + +stamps/patch-fsg.stamp: stamps/fonts.stamp mkdir -p stamps ; \ rm -f stamps/patch-fsg.stamp.tmp ; \ touch stamps/patch-fsg.stamp.tmp ; \ diff -r 2fafb0bc27f2 -r 3b0958812397 patches/disable-default-compoops.patch --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/patches/disable-default-compoops.patch Wed Nov 10 16:07:00 2010 +0000 @@ -0,0 +1,12 @@ +--- openjdk.orig/hotspot/src/share/vm/runtime/arguments.cpp 2010-11-08 23:50:59.000000000 -0500 ++++ openjdk/hotspot/src/share/vm/runtime/arguments.cpp 2010-11-08 23:52:53.000000000 -0500 +@@ -1301,7 +1301,8 @@ void Arguments::set_ergonomics_flags() { + if (MaxHeapSize <= max_heap_for_compressed_oops()) { + #ifndef COMPILER1 + if (FLAG_IS_DEFAULT(UseCompressedOops) && !UseG1GC) { +- FLAG_SET_ERGO(bool, UseCompressedOops, true); ++ // Temporarily fix rhbz#647737 -- disable compressed oops by default ++ //FLAG_SET_ERGO(bool, UseCompressedOops, true); + } + #endif + #ifdef _WIN64 diff -r 2fafb0bc27f2 -r 3b0958812397 patches/f14-fonts.patch --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/patches/f14-fonts.patch Wed Nov 10 16:07:00 2010 +0000 @@ -0,0 +1,677 @@ +--- openjdk/jdk/make/sun/awt/Makefile 2010-11-04 09:52:49.583434000 +0100 ++++ openjdk/jdk/make/sun/awt/Makefile 2010-11-04 16:50:14.091688769 +0100 +@@ -387,6 +387,10 @@ + fontconfig.SuSE.properties \ + fontconfig.Ubuntu.properties \ + fontconfig.Fedora.properties \ ++ fontconfig.Fedora.9.properties \ ++ fontconfig.Fedora.10.properties \ ++ fontconfig.Fedora.11.properties \ ++ fontconfig.Fedora.12.properties \ + fontconfig.RedHat.6.0.properties \ + fontconfig.Gentoo.properties + else + +--- openjdk/jdk/src/solaris/classes/sun/awt/fontconfigs/linux.fontconfig.Fedora.11.properties 2010-11-04 11:06:26.695428114 +0100 ++++ openjdk/jdk/src/solaris/classes/sun/awt/fontconfigs/linux.fontconfig.Fedora.11.properties 2010-11-04 11:19:45.133587953 +0100 +@@ -35,6 +35,8 @@ + dialog.plain.korean=Baekmuk Gulim + dialog.plain.chinese-big5=AR PL ShanHeiSun Uni + dialog.plain.chinese-gb18030=AR PL ShanHeiSun Uni ++dialog.plain.assamese=Lohit Assamese ++dialog.plain.devanagari=Lohit Devanagari + dialog.plain.bengali=Lohit Bengali + dialog.plain.gujarati=Lohit Gujarati + dialog.plain.hindi=Lohit Hindi +@@ -50,6 +52,8 @@ + dialog.bold.korean=Baekmuk Gulim + dialog.bold.chinese-big5=AR PL ShanHeiSun Uni + dialog.bold.chinese-gb18030=AR PL ShanHeiSun Uni ++dialog.bold.assamese=Lohit Assamese ++dialog.bold.devanagari=Lohit Devanagari + dialog.bold.bengali=Lohit Bengali + dialog.bold.gujarati=Lohit Gujarati + dialog.bold.hindi=Lohit Hindi +@@ -65,6 +69,8 @@ + dialog.italic.korean=Baekmuk Gulim + dialog.italic.chinese-big5=AR PL ShanHeiSun Uni + dialog.italic.chinese-gb18030=AR PL ShanHeiSun Uni ++dialog.italic.assamese=Lohit Assamese ++dialog.italic.devanagari=Lohit Devanagari + dialog.italic.bengali=Lohit Bengali + dialog.italic.gujarati=Lohit Gujarati + dialog.italic.hindi=Lohit Hindi +@@ -80,6 +86,8 @@ + dialog.bolditalic.korean=Baekmuk Gulim + dialog.bolditalic.chinese-big5=AR PL ShanHeiSun Uni + dialog.bolditalic.chinese-gb18030=AR PL ShanHeiSun Uni ++dialog.bolditalic.assamese=Lohit Assamese ++dialog.bolditalic.devanagari=Lohit Devanagari + dialog.bolditalic.bengali=Lohit Bengali + dialog.bolditalic.gujarati=Lohit Gujarati + dialog.bolditalic.hindi=Lohit Hindi +@@ -95,6 +103,8 @@ + sansserif.plain.korean=Baekmuk Gulim + sansserif.plain.chinese-big5=AR PL ShanHeiSun Uni + sansserif.plain.chinese-gb18030=AR PL ShanHeiSun Uni ++sansserif.plain.assamese=Lohit Assamese ++sansserif.plain.devanagari=Lohit Devanagari + sansserif.plain.bengali=Lohit Bengali + sansserif.plain.gujarati=Lohit Gujarati + sansserif.plain.hindi=Lohit Hindi +@@ -110,6 +120,8 @@ + sansserif.bold.korean=Baekmuk Gulim + sansserif.bold.chinese-big5=AR PL ShanHeiSun Uni + sansserif.bold.chinese-gb18030=AR PL ShanHeiSun Uni ++sansserif.bold.assamese=Lohit Assamese ++sansserif.bold.devanagari=Lohit Devanagari + sansserif.bold.bengali=Lohit Bengali + sansserif.bold.gujarati=Lohit Gujarati + sansserif.bold.hindi=Lohit Hindi +@@ -125,6 +137,8 @@ + sansserif.italic.korean=Baekmuk Gulim + sansserif.italic.chinese-big5=AR PL ShanHeiSun Uni + sansserif.italic.chinese-gb18030=AR PL ShanHeiSun Uni ++sansserif.italic.assamese=Lohit Assamese ++sansserif.italic.devanagari=Lohit Devanagari + sansserif.italic.bengali=Lohit Bengali + sansserif.italic.gujarati=Lohit Gujarati + sansserif.italic.hindi=Lohit Hindi +@@ -140,6 +154,8 @@ + sansserif.bolditalic.korean=Baekmuk Gulim + sansserif.bolditalic.chinese-big5=AR PL ShanHeiSun Uni + sansserif.bolditalic.chinese-gb18030=AR PL ShanHeiSun Uni ++sansserif.bolditalic.assamese=Lohit Assamese ++sansserif.bolditalic.devanagari=Lohit Devanagari + sansserif.bolditalic.bengali=Lohit Bengali + sansserif.bolditalic.gujarati=Lohit Gujarati + sansserif.bolditalic.hindi=Lohit Hindi +@@ -155,6 +171,8 @@ + serif.plain.korean=Baekmuk Batang + serif.plain.chinese-big5=AR PL ZenKai Uni + serif.plain.chinese-gb18030=AR PL ZenKai Uni ++serif.plain.assamese=Lohit Assamese ++serif.plain.devanagari=Lohit Devanagari + serif.plain.bengali=Lohit Bengali + serif.plain.gujarati=Lohit Gujarati + serif.plain.hindi=Lohit Hindi +@@ -170,6 +188,8 @@ + serif.bold.korean=Baekmuk Batang + serif.bold.chinese-big5=AR PL ZenKai Uni + serif.bold.chinese-gb18030=AR PL ZenKai Uni ++serif.bold.assamese=Lohit Assamese ++serif.bold.devanagari=Lohit Devanagari + serif.bold.bengali=Lohit Bengali + serif.bold.gujarati=Lohit Gujarati + serif.bold.hindi=Lohit Hindi +@@ -185,6 +205,8 @@ + serif.italic.korean=Baekmuk Batang + serif.italic.chinese-big5=AR PL ZenKai Uni + serif.italic.chinese-gb18030=AR PL ZenKai Uni ++serif.italic.assamese=Lohit Assamese ++serif.italic.devanagari=Lohit Devanagari + serif.italic.bengali=Lohit Bengali + serif.italic.gujarati=Lohit Gujarati + serif.italic.hindi=Lohit Hindi +@@ -200,6 +222,8 @@ + serif.bolditalic.korean=Baekmuk Batang + serif.bolditalic.chinese-big5=AR PL ZenKai Uni + serif.bolditalic.chinese-gb18030=AR PL ZenKai Uni ++serif.bolditalic.assamese=Lohit Assamese ++serif.bolditalic.devanagari=Lohit Devanagari + serif.bolditalic.bengali=Lohit Bengali + serif.bolditalic.gujarati=Lohit Gujarati + serif.bolditalic.hindi=Lohit Hindi +@@ -215,6 +239,8 @@ + monospaced.plain.korean=Baekmuk Gulim + monospaced.plain.chinese-big5=AR PL ShanHeiSun Uni + monospaced.plain.chinese-gb18030=AR PL ShanHeiSun Uni ++monospaced.plain.assamese=Lohit Assamese ++monospaced.plain.devanagari=Lohit Devanagari + monospaced.plain.bengali=Lohit Bengali + monospaced.plain.gujarati=Lohit Gujarati + monospaced.plain.hindi=Lohit Hindi +@@ -230,6 +256,8 @@ + monospaced.bold.korean=Baekmuk Gulim + monospaced.bold.chinese-big5=AR PL ShanHeiSun Uni + monospaced.bold.chinese-gb18030=AR PL ShanHeiSun Uni ++monospaced.bold.assamese=Lohit Assamese ++monospaced.bold.devanagari=Lohit Devanagari + monospaced.bold.bengali=Lohit Bengali + monospaced.bold.gujarati=Lohit Gujarati + monospaced.bold.hindi=Lohit Hindi +@@ -245,6 +273,8 @@ + monospaced.italic.korean=Baekmuk Gulim + monospaced.italic.chinese-big5=AR PL ShanHeiSun Uni + monospaced.italic.chinese-gb18030=AR PL ShanHeiSun Uni ++monospaced.italic.assamese=Lohit Assamese ++monospaced.italic.devanagari=Lohit Devanagari + monospaced.italic.bengali=Lohit Bengali + monospaced.italic.gujarati=Lohit Gujarati + monospaced.italic.hindi=Lohit Hindi +@@ -260,6 +290,8 @@ + monospaced.bolditalic.korean=Baekmuk Gulim + monospaced.bolditalic.chinese-big5=AR PL ShanHeiSun Uni + monospaced.bolditalic.chinese-gb18030=AR PL ShanHeiSun Uni ++monospaced.bolditalic.assamese=Lohit Assamese ++monospaced.bolditalic.devanagari=Lohit Devanagari + monospaced.bolditalic.bengali=Lohit Bengali + monospaced.bolditalic.gujarati=Lohit Gujarati + monospaced.bolditalic.hindi=Lohit Hindi +@@ -275,6 +307,8 @@ + dialoginput.plain.korean=Baekmuk Gulim + dialoginput.plain.chinese-big5=AR PL ShanHeiSun Uni + dialoginput.plain.chinese-gb18030=AR PL ShanHeiSun Uni ++dialoginput.plain.assamese=Lohit Assamese ++dialoginput.plain.devanagari=Lohit Devanagari + dialoginput.plain.bengali=Lohit Bengali + dialoginput.plain.gujarati=Lohit Gujarati + dialoginput.plain.hindi=Lohit Hindi +@@ -290,6 +324,8 @@ + dialoginput.bold.korean=Baekmuk Gulim + dialoginput.bold.chinese-big5=AR PL ShanHeiSun Uni + dialoginput.bold.chinese-gb18030=AR PL ShanHeiSun Uni ++dialoginput.bold.assamese=Lohit Assamese ++dialoginput.bold.devanagari=Lohit Devanagari + dialoginput.bold.bengali=Lohit Bengali + dialoginput.bold.gujarati=Lohit Gujarati + dialoginput.bold.hindi=Lohit Hindi +@@ -305,6 +341,8 @@ + dialoginput.italic.korean=Baekmuk Gulim + dialoginput.italic.chinese-big5=AR PL ShanHeiSun Uni + dialoginput.italic.chinese-gb18030=AR PL ShanHeiSun Uni ++dialoginput.italic.assamese=Lohit Assamese ++dialoginput.italic.devanagari=Lohit Devanagari + dialoginput.italic.bengali=Lohit Bengali + dialoginput.italic.gujarati=Lohit Gujarati + dialoginput.italic.hindi=Lohit Hindi +@@ -320,6 +358,8 @@ + dialoginput.bolditalic.korean=Baekmuk Gulim + dialoginput.bolditalic.chinese-big5=AR PL ShanHeiSun Uni + dialoginput.bolditalic.chinese-gb18030=AR PL ShanHeiSun Uni ++dialoginput.bolditalic.assamese=Lohit Assamese ++dialoginput.bolditalic.devanagari=Lohit Devanagari + dialoginput.bolditalic.bengali=Lohit Bengali + dialoginput.bolditalic.gujarati=Lohit Gujarati + dialoginput.bolditalic.hindi=Lohit Hindi +@@ -356,21 +396,24 @@ + filename.DejaVu_Serif_Oblique=/usr/share/fonts/dejavu/DejaVuSerif-Oblique.ttf + filename.DejaVu_Serif_Bold_Oblique=/usr/share/fonts/dejavu/DejaVuSerif-BoldOblique.ttf + +-filename.Sazanami_Gothic=/usr/share/fonts/sazanami-fonts-gothic/sazanami-gothic.ttf +-filename.Sazanami_Mincho=/usr/share/fonts/sazanami-fonts-mincho/sazanami-mincho.ttf ++filename.Sazanami_Gothic=/usr/share/fonts/sazanami/gothic/sazanami-gothic.ttf ++filename.Sazanami_Mincho=/usr/share/fonts/sazanami/mincho/sazanami-mincho.ttf + filename.AR_PL_ShanHeiSun_Uni=/usr/share/fonts/cjkunifonts-uming/uming.ttc + filename.AR_PL_ZenKai_Uni=/usr/share/fonts/cjkunifonts-ukai/ukai.ttc +-filename.Baekmuk_Gulim=/usr/share/fonts/baekmuk-ttf-gulim/gulim.ttf +-filename.Baekmuk_Batang=/usr/share/fonts/baekmuk-ttf-batang/batang.ttf ++filename.Baekmuk_Gulim=/usr/share/fonts/baekmuk-ttf/gulim.ttf ++filename.Baekmuk_Batang=/usr/share/fonts/baekmuk-ttf/batang.ttf ++ ++filename.Lohit_Assamese=/usr/share/fonts/lohit-assamese/Lohit-Assamese.ttf ++filename.Lohit_Devanagari=/usr/share/fonts/lohit-devanagari/Lohit-Devanagari.ttf ++filename.Lohit_Bengali=/usr/share/fonts/lohit-bengali/Lohit-Bengali.ttf ++filename.Lohit_Gujarati=/usr/share/fonts/lohit-gujarati/Lohit-Gujarati.ttf ++filename.Lohit_Hindi=/usr/share/fonts/lohit-hindi/Lohit-Hindi.ttf ++filename.Lohit_Kannda=/usr/share/fonts/lohit-kannada/Lohit-Kannada.ttf ++filename.Lohit_Malayalam=/usr/share/fonts/lohit-malayalam/Lohit-Malayalam.ttf ++filename.Lohit_Oriya=/usr/share/fonts/lohit-oriya/Lohit-Oriya.ttf ++filename.Lohit_Punjabi=/usr/share/fonts/lohit-punjabi/Lohit-Punjabi.ttf ++filename.Lohit_Tamil=/usr/share/fonts/lohit-tamil/Lohit-Tamil.ttf ++filename.Lohit_Telugu=/usr/share/fonts/lohit-telugu/Lohit-Telugu.ttf + +-filename.Lohit_Bengali=/usr/share/fonts/lohit-bengali/lohit_bn.ttf +-filename.Lohit_Gujarati=/usr/share/fonts/lohit-gujarati/lohit_gu.ttf +-filename.Lohit_Hindi=/usr/share/fonts/lohit-hindi/lohit_hi.ttf +-filename.Lohit_Kannda=/usr/share/fonts/lohit-kannada/lohit_kn.ttf +-filename.Lohit_Malayalam=/usr/share/fonts/lohit-malayalam/lohit_ml.ttf +-filename.Lohit_Oriya=/usr/share/fonts/lohit-oriya/lohit_or.ttf +-filename.Lohit_Punjabi=/usr/share/fonts/lohit-punjabi/lohit_pa.ttf +-filename.Lohit_Tamil=/usr/share/fonts/lohit-tamil/lohit_ta.ttf +-filename.Lohit_Telugu=/usr/share/fonts/lohit-telugu/lohit_te.ttf + filename.LKLUG=/usr/share/fonts/lklug/lklug.ttf + + +--- openjdk/jdk/src/solaris/classes/sun/awt/fontconfigs/linux.fontconfig.Fedora.12.properties 2010-11-04 11:06:26.695428114 +0100 ++++ openjdk/jdk/src/solaris/classes/sun/awt/fontconfigs/linux.fontconfig.Fedora.12.properties 2010-11-04 11:19:45.133587953 +0100 +@@ -35,6 +35,8 @@ + dialog.plain.korean=Baekmuk Gulim + dialog.plain.chinese-big5=AR PL ShanHeiSun Uni + dialog.plain.chinese-gb18030=AR PL ShanHeiSun Uni ++dialog.plain.assamese=Lohit Assamese ++dialog.plain.devanagari=Lohit Devanagari + dialog.plain.bengali=Lohit Bengali + dialog.plain.gujarati=Lohit Gujarati + dialog.plain.hindi=Lohit Hindi +@@ -50,6 +52,8 @@ + dialog.bold.korean=Baekmuk Gulim + dialog.bold.chinese-big5=AR PL ShanHeiSun Uni + dialog.bold.chinese-gb18030=AR PL ShanHeiSun Uni ++dialog.bold.assamese=Lohit Assamese ++dialog.bold.devanagari=Lohit Devanagari + dialog.bold.bengali=Lohit Bengali + dialog.bold.gujarati=Lohit Gujarati + dialog.bold.hindi=Lohit Hindi +@@ -65,6 +69,8 @@ + dialog.italic.korean=Baekmuk Gulim + dialog.italic.chinese-big5=AR PL ShanHeiSun Uni + dialog.italic.chinese-gb18030=AR PL ShanHeiSun Uni ++dialog.italic.assamese=Lohit Assamese ++dialog.italic.devanagari=Lohit Devanagari + dialog.italic.bengali=Lohit Bengali + dialog.italic.gujarati=Lohit Gujarati + dialog.italic.hindi=Lohit Hindi +@@ -80,6 +86,8 @@ + dialog.bolditalic.korean=Baekmuk Gulim + dialog.bolditalic.chinese-big5=AR PL ShanHeiSun Uni + dialog.bolditalic.chinese-gb18030=AR PL ShanHeiSun Uni ++dialog.bolditalic.assamese=Lohit Assamese ++dialog.bolditalic.devanagari=Lohit Devanagari + dialog.bolditalic.bengali=Lohit Bengali + dialog.bolditalic.gujarati=Lohit Gujarati + dialog.bolditalic.hindi=Lohit Hindi +@@ -95,6 +103,8 @@ + sansserif.plain.korean=Baekmuk Gulim + sansserif.plain.chinese-big5=AR PL ShanHeiSun Uni + sansserif.plain.chinese-gb18030=AR PL ShanHeiSun Uni ++sansserif.plain.assamese=Lohit Assamese ++sansserif.plain.devanagari=Lohit Devanagari + sansserif.plain.bengali=Lohit Bengali + sansserif.plain.gujarati=Lohit Gujarati + sansserif.plain.hindi=Lohit Hindi +@@ -110,6 +120,8 @@ + sansserif.bold.korean=Baekmuk Gulim + sansserif.bold.chinese-big5=AR PL ShanHeiSun Uni + sansserif.bold.chinese-gb18030=AR PL ShanHeiSun Uni ++sansserif.bold.assamese=Lohit Assamese ++sansserif.bold.devanagari=Lohit Devanagari + sansserif.bold.bengali=Lohit Bengali + sansserif.bold.gujarati=Lohit Gujarati + sansserif.bold.hindi=Lohit Hindi +@@ -125,6 +137,8 @@ + sansserif.italic.korean=Baekmuk Gulim + sansserif.italic.chinese-big5=AR PL ShanHeiSun Uni + sansserif.italic.chinese-gb18030=AR PL ShanHeiSun Uni ++sansserif.italic.assamese=Lohit Assamese ++sansserif.italic.devanagari=Lohit Devanagari + sansserif.italic.bengali=Lohit Bengali + sansserif.italic.gujarati=Lohit Gujarati + sansserif.italic.hindi=Lohit Hindi +@@ -140,6 +154,8 @@ + sansserif.bolditalic.korean=Baekmuk Gulim + sansserif.bolditalic.chinese-big5=AR PL ShanHeiSun Uni + sansserif.bolditalic.chinese-gb18030=AR PL ShanHeiSun Uni ++sansserif.bolditalic.assamese=Lohit Assamese ++sansserif.bolditalic.devanagari=Lohit Devanagari + sansserif.bolditalic.bengali=Lohit Bengali + sansserif.bolditalic.gujarati=Lohit Gujarati + sansserif.bolditalic.hindi=Lohit Hindi +@@ -155,6 +171,8 @@ + serif.plain.korean=Baekmuk Batang + serif.plain.chinese-big5=AR PL ZenKai Uni + serif.plain.chinese-gb18030=AR PL ZenKai Uni ++serif.plain.assamese=Lohit Assamese ++serif.plain.devanagari=Lohit Devanagari + serif.plain.bengali=Lohit Bengali + serif.plain.gujarati=Lohit Gujarati + serif.plain.hindi=Lohit Hindi +@@ -170,6 +188,8 @@ + serif.bold.korean=Baekmuk Batang + serif.bold.chinese-big5=AR PL ZenKai Uni + serif.bold.chinese-gb18030=AR PL ZenKai Uni ++serif.bold.assamese=Lohit Assamese ++serif.bold.devanagari=Lohit Devanagari + serif.bold.bengali=Lohit Bengali + serif.bold.gujarati=Lohit Gujarati + serif.bold.hindi=Lohit Hindi +@@ -185,6 +205,8 @@ + serif.italic.korean=Baekmuk Batang + serif.italic.chinese-big5=AR PL ZenKai Uni + serif.italic.chinese-gb18030=AR PL ZenKai Uni ++serif.italic.assamese=Lohit Assamese ++serif.italic.devanagari=Lohit Devanagari + serif.italic.bengali=Lohit Bengali + serif.italic.gujarati=Lohit Gujarati + serif.italic.hindi=Lohit Hindi +@@ -200,6 +222,8 @@ + serif.bolditalic.korean=Baekmuk Batang + serif.bolditalic.chinese-big5=AR PL ZenKai Uni + serif.bolditalic.chinese-gb18030=AR PL ZenKai Uni ++serif.bolditalic.assamese=Lohit Assamese ++serif.bolditalic.devanagari=Lohit Devanagari + serif.bolditalic.bengali=Lohit Bengali + serif.bolditalic.gujarati=Lohit Gujarati + serif.bolditalic.hindi=Lohit Hindi +@@ -215,6 +239,8 @@ + monospaced.plain.korean=Baekmuk Gulim + monospaced.plain.chinese-big5=AR PL ShanHeiSun Uni + monospaced.plain.chinese-gb18030=AR PL ShanHeiSun Uni ++monospaced.plain.assamese=Lohit Assamese ++monospaced.plain.devanagari=Lohit Devanagari + monospaced.plain.bengali=Lohit Bengali + monospaced.plain.gujarati=Lohit Gujarati + monospaced.plain.hindi=Lohit Hindi +@@ -230,6 +256,8 @@ + monospaced.bold.korean=Baekmuk Gulim + monospaced.bold.chinese-big5=AR PL ShanHeiSun Uni + monospaced.bold.chinese-gb18030=AR PL ShanHeiSun Uni ++monospaced.bold.assamese=Lohit Assamese ++monospaced.bold.devanagari=Lohit Devanagari + monospaced.bold.bengali=Lohit Bengali + monospaced.bold.gujarati=Lohit Gujarati + monospaced.bold.hindi=Lohit Hindi +@@ -245,6 +273,8 @@ + monospaced.italic.korean=Baekmuk Gulim + monospaced.italic.chinese-big5=AR PL ShanHeiSun Uni + monospaced.italic.chinese-gb18030=AR PL ShanHeiSun Uni ++monospaced.italic.assamese=Lohit Assamese ++monospaced.italic.devanagari=Lohit Devanagari + monospaced.italic.bengali=Lohit Bengali + monospaced.italic.gujarati=Lohit Gujarati + monospaced.italic.hindi=Lohit Hindi +@@ -260,6 +290,8 @@ + monospaced.bolditalic.korean=Baekmuk Gulim + monospaced.bolditalic.chinese-big5=AR PL ShanHeiSun Uni + monospaced.bolditalic.chinese-gb18030=AR PL ShanHeiSun Uni ++monospaced.bolditalic.assamese=Lohit Assamese ++monospaced.bolditalic.devanagari=Lohit Devanagari + monospaced.bolditalic.bengali=Lohit Bengali + monospaced.bolditalic.gujarati=Lohit Gujarati + monospaced.bolditalic.hindi=Lohit Hindi +@@ -275,6 +307,8 @@ + dialoginput.plain.korean=Baekmuk Gulim + dialoginput.plain.chinese-big5=AR PL ShanHeiSun Uni + dialoginput.plain.chinese-gb18030=AR PL ShanHeiSun Uni ++dialoginput.plain.assamese=Lohit Assamese ++dialoginput.plain.devanagari=Lohit Devanagari + dialoginput.plain.bengali=Lohit Bengali + dialoginput.plain.gujarati=Lohit Gujarati + dialoginput.plain.hindi=Lohit Hindi +@@ -290,6 +324,8 @@ + dialoginput.bold.korean=Baekmuk Gulim + dialoginput.bold.chinese-big5=AR PL ShanHeiSun Uni + dialoginput.bold.chinese-gb18030=AR PL ShanHeiSun Uni ++dialoginput.bold.assamese=Lohit Assamese ++dialoginput.bold.devanagari=Lohit Devanagari + dialoginput.bold.bengali=Lohit Bengali + dialoginput.bold.gujarati=Lohit Gujarati + dialoginput.bold.hindi=Lohit Hindi +@@ -305,6 +341,8 @@ + dialoginput.italic.korean=Baekmuk Gulim + dialoginput.italic.chinese-big5=AR PL ShanHeiSun Uni + dialoginput.italic.chinese-gb18030=AR PL ShanHeiSun Uni ++dialoginput.italic.assamese=Lohit Assamese ++dialoginput.italic.devanagari=Lohit Devanagari + dialoginput.italic.bengali=Lohit Bengali + dialoginput.italic.gujarati=Lohit Gujarati From ahughes at redhat.com Wed Nov 10 08:18:04 2010 From: ahughes at redhat.com (Dr Andrew John Hughes) Date: Wed, 10 Nov 2010 16:18:04 +0000 Subject: 1.9 Backports Message-ID: <20101110161804.GF30517@rivendell.middle-earth.co.uk> I'd like to backport the following to 1.9 for an imminent 1.9.2 update: changeset: 2308:ef8a301ba119 user: Andrew John Hughes date: Wed Nov 03 10:52:50 2010 +0000 summary: Bump to latest revision of hs19 (b09). changeset: 2309:51aa61578bf2 user: Andrew John Hughes date: Wed Nov 03 10:54:08 2010 +0000 summary: Update md5sum of hs19 tarball. changeset: 2310:a4bd79afa729 user: Andrew John Hughes date: Wed Nov 03 18:26:48 2010 +0000 summary: Additional S390 size_t fixes. changeset: 2311:d7a53bef488a user: Andrew John Hughes date: Fri Nov 05 18:28:04 2010 +0000 summary: Switch back to master tree for hs19. changeset: 2314:92361970fdc1 user: Andrew John Hughes date: Tue Nov 09 14:51:54 2010 +0000 summary: Switch to the IcedTea server for JAXP, JAF and JAXWS. changeset: 2318:2fafb0bc27f2 user: Andrew John Hughes date: Wed Nov 10 14:13:42 2010 +0000 summary: Backport BigDecimal/Integer performance improvements. changeset: 2319:58e325d961e2 user: Andrew John Hughes date: Wed Nov 10 16:05:51 2010 +0000 summary: RH647737: Disable compressed oops in hs19 to avoid Eclipse failures. changeset: 2320:ede1628338ab parent: 2318:2fafb0bc27f2 user: Jiri Vanek date: Wed Nov 10 16:28:47 2010 +0100 summary: Updating fontconfig files for Fedoras 9-14 In short, * HotSpot 19 update * Disable compressed oops in hs19 to workaround https://bugzilla.redhat.com/show_bug.cgi?id=647737 * Use the IcedTea mirror of the JAXP/JAXWS/JAF tarballs to avoid current issues. * Performance improvements in BigDecimal/BigInteger. * Fontconfig update * S390 fix. Does this sound ok? Is there anything else people want to see in this update? -- Andrew :) Free Java Software Engineer Red Hat, Inc. (http://www.redhat.com) Support Free Java! Contribute to GNU Classpath and the OpenJDK http://www.gnu.org/software/classpath http://openjdk.java.net PGP Key: 94EFD9D8 (http://subkeys.pgp.net) Fingerprint = F8EF F1EA 401E 2E60 15FA 7927 142C 2591 94EF D9D8 From joe.darcy at oracle.com Wed Nov 10 09:34:44 2010 From: joe.darcy at oracle.com (Joe Darcy) Date: Wed, 10 Nov 2010 09:34:44 -0800 Subject: [Java] [ahughes@redhat.com: Re: /hg/openjdk6-mips: Add information in README and env.sh; added a...] In-Reply-To: <20101110132315.GB30517@rivendell.middle-earth.co.uk> References: <20101109140533.GA26522@loongson.cn> <20101110132315.GB30517@rivendell.middle-earth.co.uk> Message-ID: <4CDAD7B4.8060406@oracle.com> Dr Andrew John Hughes wrote: > On 20:38 Wed 10 Nov , ?? wrote: > >>> aoqi: >>> ???distro-pkg-dev at openjdk.java.net???????Andrew????? >>> >>> >>> ----- Forwarded message from Dr Andrew John Hughes >>> ----- >>> >>> Date: Tue, 9 Nov 2010 14:00:08 +0000 >>> From: Dr Andrew John Hughes >>> To: liuqi at icedtea.classpath.org >>> Cc: distro-pkg-dev at openjdk.java.net >>> Subject: Re: /hg/openjdk6-mips: Add information in README and env.sh; >>> added >>> a... >>> User-Agent: Mutt/1.5.21 (2010-09-15) >>> >>> On 06:30 Tue 09 Nov , liuqi at icedtea.classpath.org wrote: >>> >>>> changeset 82bf91673f25 in /hg/openjdk6-mips >>>> details: >>>> http://icedtea.classpath.org/hg/openjdk6-mips?cmd=changeset;node=82bf91673f25 >>>> author: Ao Qi >>>> date: Tue Nov 09 13:21:20 2010 +0800 >>>> >>>> Add information in README and env.sh; added a missing file to make >>>> the completed build. >>>> >>>> >>> Why have you added back the information about binary plugs? These haven't >>> been required for years. >>> >> Our port is based on OpenJDK6_b18, so the binary plugs are needed during >> building jdk. >> >> > > No, they aren't. That's why the build documentation was updated to begin with: > > http://hg.openjdk.java.net/jdk6/jdk6/rev/073cdf699427 > > Even b16 doesn't need binary blobs. Not sure about ones before that. > Binary plugs haven't been needed to build OpenJDK 6 since b07: http://blogs.sun.com/darcy/entry/openjdk_6_sources_for_b07 -Joe From omajid at redhat.com Wed Nov 10 10:46:36 2010 From: omajid at redhat.com (Omair Majid) Date: Wed, 10 Nov 2010 13:46:36 -0500 Subject: [icedtea-web] RFC: move a number of translatable strings into Messages.properties In-Reply-To: <4CCF14B1.7080904@redhat.com> References: <4CCF14B1.7080904@redhat.com> Message-ID: <4CDAE88C.7000602@redhat.com> On 11/01/2010 03:27 PM, Omair Majid wrote: > Hi, > > The attached patch moves a number of user-visible strings to > Messages.properties file. There should be no user-visible strings left > in any class in the package net.sourceforge.jnlp.security.*. The only > exception is AppletWarningPane which I have not modified as it is > currently unused. > Updated patch attached. This works with the updated certificate viewer. 2010-11-09 Omair Majid * netx/net/sourceforge/jnlp/resources/Messages.properties: Add ButAllow, ButClose, ButCopy, ButMoreInformation, ButProceed, ButRun, AlwaysAllowAction, Continue, Field, From, Name, Publisher, Value, Version, SNoAssociatedCertificate, SAlwaysTrustPublisher, SHttpsUnverified, SNotAllSignedSummary, SNotAllSignedDetail, SNotAllSignedQuestion, SCertificateDetails, SIssuer, SSerial, SMD5Fingerprint, SSHA1Fingerprint, SSignature, SSignatureAlgorithm, SSubject, SValidity, CVCertificateViewer, CVDetails, CVIssuedTo, CVExport, CVImport, CVIssuedBy, IssuedTo, CVRemove, CVRemoveConfirmMessage,CVRemoveConfirmTitle, CVUser, CVSystem, KS, KSCerts, KSJsseCerts, KSCaCerts, KSJsseCaCerts, and KSClientCerts. * netx/net/sourceforge/jnlp/security/AccessWarningPane.java (addComponents): Use localized strings. * netx/net/sourceforge/jnlp/security/CertWarningPane.java (addComponents): Likewise. * netx/net/sourceforge/jnlp/security/CertsInfoPane.java (parseCert): Likewise. (addComponents): Likewise. * netx/net/sourceforge/jnlp/security/MoreInfoPane.java (addComponents): Likewise. * netx/net/sourceforge/jnlp/security/NotAllSignedWarningPane.java (addComponents): Likewise. * netx/net/sourceforge/jnlp/security/viewer/CertificatePane.java: Likewise. (addComponents): Likewise. (CertificateType.toString): Likewise. (RemoveButtonListener.actionPerformed): Likewise. Any comments? Thanks, Omair -------------- next part -------------- A non-text attachment was scrubbed... Name: icedtea-web-move-translatable-strings-to-messages-01.patch Type: text/x-patch Size: 19606 bytes Desc: not available Url : http://mail.openjdk.java.net/pipermail/distro-pkg-dev/attachments/20101110/a7b514d5/icedtea-web-move-translatable-strings-to-messages-01.patch From dbhole at redhat.com Wed Nov 10 10:53:07 2010 From: dbhole at redhat.com (Deepak Bhole) Date: Wed, 10 Nov 2010 13:53:07 -0500 Subject: 1.9 Backports In-Reply-To: <20101110161804.GF30517@rivendell.middle-earth.co.uk> References: <20101110161804.GF30517@rivendell.middle-earth.co.uk> Message-ID: <20101110185306.GC6386@redhat.com> * Dr Andrew John Hughes [2010-11-10 11:23]: > I'd like to backport the following to 1.9 for an imminent 1.9.2 update: > > changeset: 2308:ef8a301ba119 > user: Andrew John Hughes > date: Wed Nov 03 10:52:50 2010 +0000 > summary: Bump to latest revision of hs19 (b09). > > changeset: 2309:51aa61578bf2 > user: Andrew John Hughes > date: Wed Nov 03 10:54:08 2010 +0000 > summary: Update md5sum of hs19 tarball. > > changeset: 2310:a4bd79afa729 > user: Andrew John Hughes > date: Wed Nov 03 18:26:48 2010 +0000 > summary: Additional S390 size_t fixes. > > changeset: 2311:d7a53bef488a > user: Andrew John Hughes > date: Fri Nov 05 18:28:04 2010 +0000 > summary: Switch back to master tree for hs19. > > changeset: 2314:92361970fdc1 > user: Andrew John Hughes > date: Tue Nov 09 14:51:54 2010 +0000 > summary: Switch to the IcedTea server for JAXP, JAF and JAXWS. > > changeset: 2318:2fafb0bc27f2 > user: Andrew John Hughes > date: Wed Nov 10 14:13:42 2010 +0000 > summary: Backport BigDecimal/Integer performance improvements. > > changeset: 2319:58e325d961e2 > user: Andrew John Hughes > date: Wed Nov 10 16:05:51 2010 +0000 > summary: RH647737: Disable compressed oops in hs19 to avoid Eclipse failures. > > changeset: 2320:ede1628338ab > parent: 2318:2fafb0bc27f2 > user: Jiri Vanek > date: Wed Nov 10 16:28:47 2010 +0100 > summary: Updating fontconfig files for Fedoras 9-14 > > In short, > > * HotSpot 19 update > * Disable compressed oops in hs19 to workaround https://bugzilla.redhat.com/show_bug.cgi?id=647737 > * Use the IcedTea mirror of the JAXP/JAXWS/JAF tarballs to avoid current issues. > * Performance improvements in BigDecimal/BigInteger. > * Fontconfig update > * S390 fix. > > Does this sound ok? Is there anything else people want to see in this update? Sounds good to me! We should hold off icedtea-web going in until 1.9.3, as it will take a little bit longer for it to be 1.0 ready. Cheers, Deepak > -- > Andrew :) > > Free Java Software Engineer > Red Hat, Inc. (http://www.redhat.com) > > Support Free Java! > Contribute to GNU Classpath and the OpenJDK > http://www.gnu.org/software/classpath > http://openjdk.java.net > PGP Key: 94EFD9D8 (http://subkeys.pgp.net) > Fingerprint = F8EF F1EA 401E 2E60 15FA 7927 142C 2591 94EF D9D8 From ahughes at redhat.com Wed Nov 10 10:59:34 2010 From: ahughes at redhat.com (Dr Andrew John Hughes) Date: Wed, 10 Nov 2010 18:59:34 +0000 Subject: 1.9 Backports In-Reply-To: <20101110185306.GC6386@redhat.com> References: <20101110161804.GF30517@rivendell.middle-earth.co.uk> <20101110185306.GC6386@redhat.com> Message-ID: <20101110185934.GK30517@rivendell.middle-earth.co.uk> On 13:53 Wed 10 Nov , Deepak Bhole wrote: > * Dr Andrew John Hughes [2010-11-10 11:23]: > > I'd like to backport the following to 1.9 for an imminent 1.9.2 update: > > > > changeset: 2308:ef8a301ba119 > > user: Andrew John Hughes > > date: Wed Nov 03 10:52:50 2010 +0000 > > summary: Bump to latest revision of hs19 (b09). > > > > changeset: 2309:51aa61578bf2 > > user: Andrew John Hughes > > date: Wed Nov 03 10:54:08 2010 +0000 > > summary: Update md5sum of hs19 tarball. > > > > changeset: 2310:a4bd79afa729 > > user: Andrew John Hughes > > date: Wed Nov 03 18:26:48 2010 +0000 > > summary: Additional S390 size_t fixes. > > > > changeset: 2311:d7a53bef488a > > user: Andrew John Hughes > > date: Fri Nov 05 18:28:04 2010 +0000 > > summary: Switch back to master tree for hs19. > > > > changeset: 2314:92361970fdc1 > > user: Andrew John Hughes > > date: Tue Nov 09 14:51:54 2010 +0000 > > summary: Switch to the IcedTea server for JAXP, JAF and JAXWS. > > > > changeset: 2318:2fafb0bc27f2 > > user: Andrew John Hughes > > date: Wed Nov 10 14:13:42 2010 +0000 > > summary: Backport BigDecimal/Integer performance improvements. > > > > changeset: 2319:58e325d961e2 > > user: Andrew John Hughes > > date: Wed Nov 10 16:05:51 2010 +0000 > > summary: RH647737: Disable compressed oops in hs19 to avoid Eclipse failures. > > > > changeset: 2320:ede1628338ab > > parent: 2318:2fafb0bc27f2 > > user: Jiri Vanek > > date: Wed Nov 10 16:28:47 2010 +0100 > > summary: Updating fontconfig files for Fedoras 9-14 > > > > In short, > > > > * HotSpot 19 update > > * Disable compressed oops in hs19 to workaround https://bugzilla.redhat.com/show_bug.cgi?id=647737 > > * Use the IcedTea mirror of the JAXP/JAXWS/JAF tarballs to avoid current issues. > > * Performance improvements in BigDecimal/BigInteger. > > * Fontconfig update > > * S390 fix. > > > > Does this sound ok? Is there anything else people want to see in this update? > > Sounds good to me! We should hold off icedtea-web going in until 1.9.3, > as it will take a little bit longer for it to be 1.0 ready. > Well, it doesn't 'go in' anyway. The effect would just be that we turn off the plugin & netx by default and point people at IcedTea-Web (ITW) if they turn it on (i.e. deprecate the in-tree code in favour of ITW). I do plan to patch 1.8 & 1.9 with the option to disable netx. This will allow anyone to start using IcedTea-Web with the next releases from these branches. > Cheers, > Deepak > > > -- > > Andrew :) > > > > Free Java Software Engineer > > Red Hat, Inc. (http://www.redhat.com) > > > > Support Free Java! > > Contribute to GNU Classpath and the OpenJDK > > http://www.gnu.org/software/classpath > > http://openjdk.java.net > > PGP Key: 94EFD9D8 (http://subkeys.pgp.net) > > Fingerprint = F8EF F1EA 401E 2E60 15FA 7927 142C 2591 94EF D9D8 -- Andrew :) Free Java Software Engineer Red Hat, Inc. (http://www.redhat.com) Support Free Java! Contribute to GNU Classpath and the OpenJDK http://www.gnu.org/software/classpath http://openjdk.java.net PGP Key: 94EFD9D8 (http://subkeys.pgp.net) Fingerprint = F8EF F1EA 401E 2E60 15FA 7927 142C 2591 94EF D9D8 From huizhe.wang at oracle.com Wed Nov 10 10:42:46 2010 From: huizhe.wang at oracle.com (Joe Wang) Date: Wed, 10 Nov 2010 10:42:46 -0800 Subject: Where did jaf, jaxp and jaxws go? In-Reply-To: <20101109140517.GD7776@rivendell.middle-earth.co.uk> References: <1289295987.2775.85.camel@springer.wildebeest.org> <20101109140517.GD7776@rivendell.middle-earth.co.uk> Message-ID: <4CDAE7A6.3050108@oracle.com> Sorry for the inconvenience. We're talking to the migration team to see if they could set up url redirects for these artifacts. I'll keep you updated once I know more. Joe On 11/9/2010 6:05 AM, Dr Andrew John Hughes wrote: > On 10:46 Tue 09 Nov , Mark Wielaard wrote: > >> Hi, >> >> Apparently java.net moved stuff around again: >> http://blogs.sun.com/theaquarium/entry/first_wave_of_java_net >> But the new location doesn't provide jaxp source drop bundles: >> http://java.net/projects/jaxp/downloads >> >> So IcedTea builds will currently fail. >> Does anybody know where they went? >> >> The icedtea autobuilder still has caches of the old sources if needed: >> http://builder.wildebeest.org/icedtea/icedtea6/src/drops/ >> >> I can put those somewhere more permanent on icedtea.classpath.org if we >> want to use those for the normal builds. >> >> Thanks, >> >> Mark >> >> > > I can upload the others I have too and we'll switch to the IcedTea servers for the > time being, if you don't mind the load. > > It would also simplify the number of URLs we have to deal with for the drops. > -------------- next part -------------- An HTML attachment was scrubbed... URL: http://mail.openjdk.java.net/pipermail/distro-pkg-dev/attachments/20101110/2c8dfe14/attachment.html From bugzilla-daemon at icedtea.classpath.org Wed Nov 10 11:46:18 2010 From: bugzilla-daemon at icedtea.classpath.org (bugzilla-daemon at icedtea.classpath.org) Date: Wed, 10 Nov 2010 19:46:18 +0000 Subject: [Bug 589] icedtea6/1.8.2-3 on Maemo5 PR1.3: TV-Browser app crashes Message-ID: http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=589 ------- Comment #4 from klausdguenther at gmail.com 2010-11-10 19:46 ------- Created an attachment (id=438) --> (http://icedtea.classpath.org/bugzilla/attachment.cgi?id=438&action=view) hs_err file The requested hs_err file. -- Configure bugmail: http://icedtea.classpath.org/bugzilla/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are the assignee for the bug, or are watching the assignee. From omajid at redhat.com Wed Nov 10 12:54:11 2010 From: omajid at redhat.com (Omair Majid) Date: Wed, 10 Nov 2010 15:54:11 -0500 Subject: [icedtea-web] RFC: use browser path from configuration In-Reply-To: <4CD409F2.5000908@redhat.com> References: <4CD409F2.5000908@redhat.com> Message-ID: <4CDB0673.4020808@redhat.com> On 11/05/2010 09:43 AM, Omair Majid wrote: > Hi, > > The attached patch integrates the browser path selection and usage into > the netx DeploymentConfiguration. > > ChangeLog: > 2010-11-05 Omair Majid > > * netx/net/sourceforge/jnlp/runtime/DeploymentConfiguration.java: > Add KEY_BROWSER_PATH. > (loadDefaultProperties): Use KEY_BROWSER_PATH. > * netx/net/sourceforge/jnlp/services/XBasicService.java > (initialize): Use the browser command from the configuration. > Save updates to configuration as well. > > Any thoughts or comments? > Ok to commit? Cheers, Omair From omajid at redhat.com Wed Nov 10 12:56:21 2010 From: omajid at redhat.com (Omair Majid) Date: Wed, 10 Nov 2010 15:56:21 -0500 Subject: [icedtea-web] RFC: add configuration support for user prompts (and other access control options) In-Reply-To: <4CD4355C.6050000@redhat.com> References: <4CD4355C.6050000@redhat.com> Message-ID: <4CDB06F5.40509@redhat.com> On 11/05/2010 12:48 PM, Omair Majid wrote: > Hi, > > The attached patch adds support in netx for part of the 'security access > and control' set of configuration options. The patch allows disabling > user prompts for security warnings and denying permissions, as well as > not installing custom authenticator and not granting permissions to hide > window warnings. > > ChangeLog > 2010-11-05 Omair Majid > > * netx/net/sourceforge/jnlp/SecurityDesc.java: Remove window banner > permissions from sandboxPermissions and j2eePermissions. > (getSandBoxPermissions): Dynamically add window banner permissions > if allowed by configuration. > * netx/net/sourceforge/jnlp/runtime/DeploymentConfiguration.java: > Add KEY_SECURITY_PROMPT_USER, > KEY_SECURITY_ALLOW_HIDE_WINDOW_WARNING, > KEY_SECURITY_PROMPT_USER_FOR_JNLP, and > KEY_SECURITY_INSTALL_AUTHENTICATOR. > (loadDefaultProperties): Use the new constants. > * netx/net/sourceforge/jnlp/security/SecurityWarning.java > (showAccessWarningDialog): Check if the user should be prompted > before prompting the user. > (showNotAllSignedWarningDialog): Likewise. > (showCertWarningDialog): Likewise. > (showAppletWarning): Likewise. > (shouldPromptUser): New method. Check if configuration allows > showing user prompts. > * netx/net/sourceforge/jnlp/services/ServiceUtil.java > (checkAccess(AccessType,Object...)): Clarify javadocs. > (checkAccess(ApplicationInstance,AccessType,Object...)): Clarify > javadocs. Only prompt the user if showing JNLP prompts is ok. > (shouldPromptUser): New method. Returns true if configuration allows > for showing JNLP api prompts. > * plugin/icedteanp/java/sun/applet/PluginMain.java > (init): Only install custom authenticator if allowed by > configuration. > > Any thoughts or comments? > Ping. Anyone? Cheers, Omair From dbhole at redhat.com Wed Nov 10 12:57:48 2010 From: dbhole at redhat.com (Deepak Bhole) Date: Wed, 10 Nov 2010 15:57:48 -0500 Subject: [icedtea-web] RFC: use browser path from configuration In-Reply-To: <4CD409F2.5000908@redhat.com> References: <4CD409F2.5000908@redhat.com> Message-ID: <20101110205747.GA8213@redhat.com> * Omair Majid [2010-11-05 12:12]: > Hi, > > The attached patch integrates the browser path selection and usage > into the netx DeploymentConfiguration. > > ChangeLog: > 2010-11-05 Omair Majid > > * netx/net/sourceforge/jnlp/runtime/DeploymentConfiguration.java: > Add KEY_BROWSER_PATH. > (loadDefaultProperties): Use KEY_BROWSER_PATH. > * netx/net/sourceforge/jnlp/services/XBasicService.java > (initialize): Use the browser command from the configuration. > Save updates to configuration as well. > > Any thoughts or comments? > Looks fine to me. Ok for HEAD. Deepak > Thanks, > Omair > diff -r 8e66d9386273 netx/net/sourceforge/jnlp/runtime/DeploymentConfiguration.java > --- a/netx/net/sourceforge/jnlp/runtime/DeploymentConfiguration.java Thu Nov 04 16:44:27 2010 -0700 > +++ b/netx/net/sourceforge/jnlp/runtime/DeploymentConfiguration.java Fri Nov 05 08:39:44 2010 -0400 > @@ -142,6 +142,8 @@ > */ > public static final String KEY_USER_NETX_RUNNING_FILE = "deployment.user.runningfile"; > > + public static final String KEY_BROWSER_PATH = "deployment.browser.path"; > + > public enum ConfigType { > System, User > } > @@ -369,7 +371,7 @@ > /* jre management */ > { "deployment.javaws.autodownload", null }, > /* browser selection */ > - { "deployment.browser.path", null }, > + { KEY_BROWSER_PATH, null }, > /* check for update timeout */ > { "deployment.javaws.update.timeout", String.valueOf(500) } > }; > diff -r 8e66d9386273 netx/net/sourceforge/jnlp/services/XBasicService.java > --- a/netx/net/sourceforge/jnlp/services/XBasicService.java Thu Nov 04 16:44:27 2010 -0700 > +++ b/netx/net/sourceforge/jnlp/services/XBasicService.java Fri Nov 05 08:39:44 2010 -0400 > @@ -30,6 +30,7 @@ > import net.sourceforge.jnlp.JNLPFile; > import net.sourceforge.jnlp.Launcher; > import net.sourceforge.jnlp.runtime.ApplicationInstance; > +import net.sourceforge.jnlp.runtime.DeploymentConfiguration; > import net.sourceforge.jnlp.runtime.JNLPRuntime; > import net.sourceforge.jnlp.util.PropertiesFile; > > @@ -199,15 +200,19 @@ > command = "rundll32 url.dll,FileProtocolHandler "; > } > else { > - PropertiesFile props = JNLPRuntime.getProperties(); > - command = props.getProperty("browser.command"); > + DeploymentConfiguration config = JNLPRuntime.getConfiguration(); > + command = config.getProperty(DeploymentConfiguration.KEY_BROWSER_PATH); > > if(command == null) { // prompt & store > command = promptForCommand(null); > > if(command != null) { > - props.setProperty("browser.command", command); > - props.store(); > + config.setProperty(DeploymentConfiguration.KEY_BROWSER_PATH, command); > + try { > + config.save(); > + } catch (IOException e) { > + e.printStackTrace(); > + } > } > } > } From dbhole at redhat.com Wed Nov 10 13:02:20 2010 From: dbhole at redhat.com (Deepak Bhole) Date: Wed, 10 Nov 2010 16:02:20 -0500 Subject: [icedtea-web] RFC: add configuration support for user prompts (and other access control options) In-Reply-To: <4CD4355C.6050000@redhat.com> References: <4CD4355C.6050000@redhat.com> Message-ID: <20101110210220.GB8213@redhat.com> * Omair Majid [2010-11-05 15:14]: > Hi, > > The attached patch adds support in netx for part of the 'security > access and control' set of configuration options. The patch allows > disabling user prompts for security warnings and denying > permissions, as well as not installing custom authenticator and not > granting permissions to hide window warnings. > > ChangeLog > 2010-11-05 Omair Majid > > * netx/net/sourceforge/jnlp/SecurityDesc.java: Remove window banner > permissions from sandboxPermissions and j2eePermissions. > (getSandBoxPermissions): Dynamically add window banner permissions > if allowed by configuration. > * netx/net/sourceforge/jnlp/runtime/DeploymentConfiguration.java: > Add KEY_SECURITY_PROMPT_USER, > KEY_SECURITY_ALLOW_HIDE_WINDOW_WARNING, > KEY_SECURITY_PROMPT_USER_FOR_JNLP, and > KEY_SECURITY_INSTALL_AUTHENTICATOR. > (loadDefaultProperties): Use the new constants. > * netx/net/sourceforge/jnlp/security/SecurityWarning.java > (showAccessWarningDialog): Check if the user should be prompted > before prompting the user. > (showNotAllSignedWarningDialog): Likewise. > (showCertWarningDialog): Likewise. > (showAppletWarning): Likewise. > (shouldPromptUser): New method. Check if configuration allows > showing user prompts. > * netx/net/sourceforge/jnlp/services/ServiceUtil.java > (checkAccess(AccessType,Object...)): Clarify javadocs. > (checkAccess(ApplicationInstance,AccessType,Object...)): Clarify > javadocs. Only prompt the user if showing JNLP prompts is ok. > (shouldPromptUser): New method. Returns true if configuration allows > for showing JNLP api prompts. > * plugin/icedteanp/java/sun/applet/PluginMain.java > (init): Only install custom authenticator if allowed by > configuration. > > Any thoughts or comments? > > Thanks, > Omair > diff -r 8e66d9386273 netx/net/sourceforge/jnlp/SecurityDesc.java > --- a/netx/net/sourceforge/jnlp/SecurityDesc.java Thu Nov 04 16:44:27 2010 -0700 > +++ b/netx/net/sourceforge/jnlp/SecurityDesc.java Fri Nov 05 12:23:29 2010 -0400 > @@ -23,6 +23,9 @@ > import java.security.*; > import java.awt.AWTPermission; > > +import net.sourceforge.jnlp.runtime.DeploymentConfiguration; > +import net.sourceforge.jnlp.runtime.JNLPRuntime; > + > /** > * The security element. > * > @@ -67,7 +70,6 @@ > // queues, or even prevent access to security dialog queues. > // > // new AWTPermission("accessEventQueue"), > - new AWTPermission("showWindowWithoutWarningBanner"), > new RuntimePermission("exitVM"), > new RuntimePermission("loadLibrary"), > new RuntimePermission("queuePrintJob"), > @@ -105,7 +107,6 @@ > new PropertyPermission("javaws.*", "read,write"), > new RuntimePermission("exitVM"), > new RuntimePermission("stopThread"), > - new AWTPermission("showWindowWithoutWarningBanner"), > // disabled because we can't at this time prevent an > // application from accessing other applications' event > // queues, or even prevent access to security dialog queues. > @@ -187,6 +188,11 @@ > for (int i=0; i < sandboxPermissions.length; i++) > permissions.add(sandboxPermissions[i]); > > + String key = DeploymentConfiguration.KEY_SECURITY_ALLOW_HIDE_WINDOW_WARNING; > + if (Boolean.valueOf(JNLPRuntime.getConfiguration().getProperty(key)) == Boolean.TRUE) { > + permissions.add(new AWTPermission("showWindowWithoutWarningBanner")); > + } > + > if (file.isApplication()) > for (int i=0; i < jnlpRIAPermissions.length; i++) > permissions.add(jnlpRIAPermissions[i]); > diff -r 8e66d9386273 netx/net/sourceforge/jnlp/runtime/DeploymentConfiguration.java > --- a/netx/net/sourceforge/jnlp/runtime/DeploymentConfiguration.java Thu Nov 04 16:44:27 2010 -0700 > +++ b/netx/net/sourceforge/jnlp/runtime/DeploymentConfiguration.java Fri Nov 05 12:23:29 2010 -0400 > @@ -17,6 +17,7 @@ > > package net.sourceforge.jnlp.runtime; > > +import java.awt.AWTPermission; > import java.io.BufferedOutputStream; > import java.io.BufferedReader; > import java.io.File; > @@ -142,6 +143,15 @@ > */ > public static final String KEY_USER_NETX_RUNNING_FILE = "deployment.user.runningfile"; > > + /** Boolean. Only show security prompts to user if true */ > + public static final String KEY_SECURITY_PROMPT_USER = "deployment.security.askgrantdialog.show"; > + /** Boolean. Only give AWTPermission("showWindowWithoutWarningBanner") if true */ > + public static final String KEY_SECURITY_ALLOW_HIDE_WINDOW_WARNING = "deployment.security.sandbox.awtwarningwindow"; > + /** Boolean. Only prompt user for granting any JNLP permissions if true */ > + public static final String KEY_SECURITY_PROMPT_USER_FOR_JNLP = "deployment.security.sandbox.jnlp.enhanced"; > + /** Boolean. Only install the custom authenticator if true */ > + public static final String KEY_SECURITY_INSTALL_AUTHENTICATOR = "deployment.security.authenticator"; > + Minor nitpick.. can you please add spaces between each of the common/decl. combo above? Would make it a bit easier to read in viewers that don't highlight.. > public enum ConfigType { > System, User > } > @@ -327,15 +337,15 @@ > { "deployment.system.security.trusted.jssecerts", SYSTEM_SECURITY + File.separator + "trusted.jssecerts" }, > { "deployment.system.security.trusted.clientautcerts", SYSTEM_SECURITY + File.separator + "trusted.clientcerts" }, > /* security access and control */ > - { "deployment.security.askgrantdialog.show", String.valueOf(true) }, > + { KEY_SECURITY_PROMPT_USER, String.valueOf(true) }, > { "deployment.security.askgrantdialog.notinca", String.valueOf(true) }, > { "deployment.security.notinca.warning", String.valueOf(true) }, > { "deployment.security.expired.warning", String.valueOf(true) }, > { "deployment.security.jsse.hostmismatch.warning", String.valueOf(true) }, > { "deployment.security.trusted.policy", null }, > - { "deployment.security.sandbox.awtwarningwindow", String.valueOf(true) }, > - { "deployment.security.sandbox.jnlp.enhanced", String.valueOf(true) }, > - { "deployment.security.authenticator", String.valueOf(true) }, > + { KEY_SECURITY_ALLOW_HIDE_WINDOW_WARNING, String.valueOf(true) }, > + { KEY_SECURITY_PROMPT_USER_FOR_JNLP, String.valueOf(true) }, > + { KEY_SECURITY_INSTALL_AUTHENTICATOR, String.valueOf(true) }, > /* networking */ > { "deployment.proxy.type", String.valueOf(PROXY_TYPE_BROWSER) }, > { "deployment.proxy.same", String.valueOf(false) }, > diff -r 8e66d9386273 netx/net/sourceforge/jnlp/security/SecurityWarning.java > --- a/netx/net/sourceforge/jnlp/security/SecurityWarning.java Thu Nov 04 16:44:27 2010 -0700 > +++ b/netx/net/sourceforge/jnlp/security/SecurityWarning.java Fri Nov 05 12:23:29 2010 -0400 > @@ -49,6 +49,7 @@ > import javax.swing.SwingUtilities; > > import net.sourceforge.jnlp.JNLPFile; > +import net.sourceforge.jnlp.runtime.DeploymentConfiguration; > import net.sourceforge.jnlp.runtime.JNLPRuntime; > > /** > @@ -111,6 +112,11 @@ > */ > public static boolean showAccessWarningDialog(final AccessType accessType, > final JNLPFile file, final Object[] extras) { > + > + if (!shouldPromptUser()) { > + return false; > + } > + > final SecurityDialogMessage message = new SecurityDialogMessage(); > > message.dialogType = DialogType.ACCESS_WARNING; > @@ -140,6 +146,10 @@ > */ > public static boolean showNotAllSignedWarningDialog(JNLPFile file) { > > + if (!shouldPromptUser()) { > + return false; > + } > + > final SecurityDialogMessage message = new SecurityDialogMessage(); > message.dialogType = DialogType.NOTALLSIGNED_WARNING; > message.accessType = AccessType.NOTALLSIGNED; > @@ -174,6 +184,10 @@ > public static boolean showCertWarningDialog(AccessType accessType, > JNLPFile file, CertVerifier jarSigner) { > > + if (!shouldPromptUser()) { > + return false; > + } > + > final SecurityDialogMessage message = new SecurityDialogMessage(); > message.dialogType = DialogType.CERT_WARNING; > message.accessType = accessType; > @@ -200,6 +214,10 @@ > */ > public static int showAppletWarning() { > > + if (!shouldPromptUser()) { > + return 2; > + } > + That seems like a magic number.. what does 2 represent? > SecurityDialogMessage message = new SecurityDialogMessage(); > message.dialogType = DialogType.APPLET_WARNING; > > @@ -295,4 +313,18 @@ > return message.userResponse; > } > > + /** > + * Returns whether the current runtime configuration allows prompting user > + * for security warnings. > + * > + * @return true if security warnings should be shown to the user. > + */ > + private static boolean shouldPromptUser() { > + boolean allowed = Boolean.valueOf(JNLPRuntime.getConfiguration() > + .getProperty(DeploymentConfiguration.KEY_SECURITY_PROMPT_USER)); > + > + return allowed; > + > + } > + You can just return Boolean.valueOf(...) instead of creating an additional var and returning that. > } > diff -r 8e66d9386273 netx/net/sourceforge/jnlp/services/ServiceUtil.java > --- a/netx/net/sourceforge/jnlp/services/ServiceUtil.java Thu Nov 04 16:44:27 2010 -0700 > +++ b/netx/net/sourceforge/jnlp/services/ServiceUtil.java Fri Nov 05 12:23:29 2010 -0400 > @@ -39,6 +39,7 @@ > > import net.sourceforge.jnlp.JNLPFile; > import net.sourceforge.jnlp.runtime.ApplicationInstance; > +import net.sourceforge.jnlp.runtime.DeploymentConfiguration; > import net.sourceforge.jnlp.runtime.JNLPRuntime; > import net.sourceforge.jnlp.security.SecurityWarning; > import net.sourceforge.jnlp.security.SecurityWarning.AccessType; > @@ -208,9 +209,10 @@ > }; > > /** > - * Returns whether the app requesting a service is signed. If the app is > - * unsigned, the user is prompted with a dialog asking if the action > - * should be allowed. > + * Returns whether the app requesting a JNLP service has the right permissions. > + * If it doesn't, user is prompted for permissions. This method should only be > + * used for JNLP API related permissions. > + * > * @param type the type of access being requested > * @param extras extra Strings (usually) that are passed to the dialog for > * message formatting. > @@ -221,8 +223,9 @@ > } > > /** > - * Returns whether the app requesting a service has the right permissions. > - * If it doesn't, user is prompted for permissions. > + * Returns whether the app requesting a JNLP service has the right permissions. > + * If it doesn't, user is prompted for permissions. This method should only be > + * used for JNLP API related permissions. > * > * @param app the application which is requesting the check. If null, the current > * application is used. > @@ -265,6 +268,11 @@ > } > > if (!codeTrusted) { > + > + if (!shouldPromptUser()) { > + return false; > + } > + > final AccessType tmpType = type; > final Object[] tmpExtras = extras; > final ApplicationInstance tmpApp = app; > @@ -285,4 +293,17 @@ > > return true; //allow > } > + > + /** > + * Returns whether the current runtime configuration allows prompting the > + * user for JNLP permissions. > + * > + * @return true if the user should be prompted for JNLP API related permissions. > + */ > + private static boolean shouldPromptUser() { > + boolean allowed = Boolean.valueOf(JNLPRuntime.getConfiguration() > + .getProperty(DeploymentConfiguration.KEY_SECURITY_PROMPT_USER_FOR_JNLP)); > + return allowed; > + } > + > } Same as above.. no need for the 'allowed' var. > diff -r 8e66d9386273 plugin/icedteanp/java/sun/applet/PluginMain.java > --- a/plugin/icedteanp/java/sun/applet/PluginMain.java Thu Nov 04 16:44:27 2010 -0700 > +++ b/plugin/icedteanp/java/sun/applet/PluginMain.java Fri Nov 05 12:23:29 2010 -0400 > @@ -230,7 +230,11 @@ > } > > // plug in a custom authenticator and proxy selector > - Authenticator.setDefault(new CustomAuthenticator()); > + boolean installAuthenticator = Boolean.valueOf(JNLPRuntime.getConfiguration() > + .getProperty(DeploymentConfiguration.KEY_SECURITY_INSTALL_AUTHENTICATOR)); > + if (installAuthenticator) { > + Authenticator.setDefault(new CustomAuthenticator()); > + } > ProxySelector.setDefault(new PluginProxySelector()); > > CookieManager ckManager = new PluginCookieManager(); Rest looks fine to me! Cheers, Deepak From omajid at icedtea.classpath.org Wed Nov 10 13:07:29 2010 From: omajid at icedtea.classpath.org (omajid at icedtea.classpath.org) Date: Wed, 10 Nov 2010 21:07:29 +0000 Subject: /hg/icedtea-web: integrate desktop shortcut creation with config... Message-ID: changeset 5537145cde35 in /hg/icedtea-web details: http://icedtea.classpath.org/hg/icedtea-web?cmd=changeset;node=5537145cde35 author: Omair Majid date: Wed Nov 10 16:07:06 2010 -0500 integrate desktop shortcut creation with configuration 2010-11-05 Omair Majid * netx/net/sourceforge/jnlp/ShortcutDesc.java: Change prefixes from SHORTCUT_ to CREATE_. * netx/net/sourceforge/jnlp/runtime/ApplicationInstance.java (addMenuAndDesktopEntries): Call shouldCreateShortcut to find out if shortcut should be created. Remove call to checkAccess which does nothing as the entire stack contains trusted classes. (shouldCreateShortcut): New method. Use the configuration to find out if a shorcut should be created, and possibly prompt the user. * netx/net/sourceforge/jnlp/runtime/DeploymentConfiguration.java: Add KEY_CREATE_DESKTOP_SHORTCUT. (loadDefaultProperties): Use KEY_CREATE_DESKTOP_SHORTCUT. diffstat: 4 files changed, 64 insertions(+), 11 deletions(-) ChangeLog | 14 +++ netx/net/sourceforge/jnlp/ShortcutDesc.java | 11 +- netx/net/sourceforge/jnlp/runtime/ApplicationInstance.java | 46 +++++++++- netx/net/sourceforge/jnlp/runtime/DeploymentConfiguration.java | 4 diffs (137 lines): diff -r f089abbcf019 -r 5537145cde35 ChangeLog --- a/ChangeLog Mon Nov 08 16:48:38 2010 -0500 +++ b/ChangeLog Wed Nov 10 16:07:06 2010 -0500 @@ -1,3 +1,17 @@ 2010-11-08 Omair Majid + + * netx/net/sourceforge/jnlp/ShortcutDesc.java: Change prefixes from + SHORTCUT_ to CREATE_. + * netx/net/sourceforge/jnlp/runtime/ApplicationInstance.java + (addMenuAndDesktopEntries): Call shouldCreateShortcut to find out + if shortcut should be created. Remove call to checkAccess which + does nothing as the entire stack contains trusted classes. + (shouldCreateShortcut): New method. Use the configuration to find + out if a shorcut should be created, and possibly prompt the user. + * netx/net/sourceforge/jnlp/runtime/DeploymentConfiguration.java: + Add KEY_CREATE_DESKTOP_SHORTCUT. + (loadDefaultProperties): Use KEY_CREATE_DESKTOP_SHORTCUT. + 2010-11-08 Omair Majid * Makefile.am (JDK_UPDATE_VERSION): Define variable. diff -r f089abbcf019 -r 5537145cde35 netx/net/sourceforge/jnlp/ShortcutDesc.java --- a/netx/net/sourceforge/jnlp/ShortcutDesc.java Mon Nov 08 16:48:38 2010 -0500 +++ b/netx/net/sourceforge/jnlp/ShortcutDesc.java Wed Nov 10 16:07:06 2010 -0500 @@ -19,16 +19,15 @@ public final class ShortcutDesc { public final class ShortcutDesc { /** Never create a shortcut */ - public static final String SHORTCUT_NEVER = "NEVER"; + public static final String CREATE_NEVER = "NEVER"; /** Always create a shortcut */ - public static final String SHORTCUT_ALWAYS = "ALWAYS"; + public static final String CREATE_ALWAYS = "ALWAYS"; /** Always ask user whether to create a shortcut */ - public static final String SHORTCUT_ASK_USER = "ASK_USER"; + public static final String CREATE_ASK_USER = "ASK_USER"; /** Ask user whether to create a shortcut but only if jnlp file asks for it */ - public static final String SHORTCUT_ASK_USER_IF_HINTED = "ASK_IF_HINTED"; + public static final String CREATE_ASK_USER_IF_HINTED = "ASK_IF_HINTED"; /** Create a desktop shortcut without prompting if the jnlp asks for it */ - public static final String SHORTCUT_ALWAYS_IF_HINTED = "ALWAYS_IF_HINTED"; - public static final String SHORTCUT_DEFAULT = SHORTCUT_ASK_USER_IF_HINTED; + public static final String CREATE_ALWAYS_IF_HINTED = "ALWAYS_IF_HINTED"; /** the application wants to be placed on the desktop */ private boolean onDesktop = false; diff -r f089abbcf019 -r 5537145cde35 netx/net/sourceforge/jnlp/runtime/ApplicationInstance.java --- a/netx/net/sourceforge/jnlp/runtime/ApplicationInstance.java Mon Nov 08 16:48:38 2010 -0500 +++ b/netx/net/sourceforge/jnlp/runtime/ApplicationInstance.java Wed Nov 10 16:07:06 2010 -0500 @@ -35,6 +35,7 @@ import net.sourceforge.jnlp.ShortcutDesc import net.sourceforge.jnlp.ShortcutDesc; import net.sourceforge.jnlp.event.ApplicationEvent; import net.sourceforge.jnlp.event.ApplicationListener; +import net.sourceforge.jnlp.security.SecurityWarning; import net.sourceforge.jnlp.security.SecurityWarning.AccessType; import net.sourceforge.jnlp.services.ServiceUtil; import net.sourceforge.jnlp.util.WeakList; @@ -148,10 +149,8 @@ public class ApplicationInstance { XDesktopEntry entry = new XDesktopEntry(file); ShortcutDesc sd = file.getInformation().getShortcut(); - if (sd != null && sd.onDesktop()) { - if (ServiceUtil.checkAccess(this, AccessType.CREATE_DESTKOP_SHORTCUT)) { - entry.createDesktopShortcut(); - } + if (shouldCreateShortcut(sd)) { + entry.createDesktopShortcut(); } if (sd != null && sd.getMenu() != null) { @@ -164,6 +163,45 @@ public class ApplicationInstance { } } + } + + /** + * Indicates whether a desktop launcher/shortcut should be created for this + * application instance + * + * @param sd the ShortcutDesc element from the JNLP file + * @return true if a desktop shortcut should be created + */ + private boolean shouldCreateShortcut(ShortcutDesc sd) { + String currentSetting = JNLPRuntime.getConfiguration() + .getProperty(DeploymentConfiguration.KEY_CREATE_DESKTOP_SHORTCUT); + boolean createShortcut = false; + + /* + * check configuration and possibly prompt user to find out if a + * shortcut should be created or not + */ + if (currentSetting.equals(ShortcutDesc.CREATE_NEVER)) { + createShortcut = false; + } else if (currentSetting.equals(ShortcutDesc.CREATE_ALWAYS)) { + createShortcut = true; + } else if (currentSetting.equals(ShortcutDesc.CREATE_ASK_USER)) { + if (SecurityWarning.showAccessWarningDialog(AccessType.CREATE_DESTKOP_SHORTCUT, file)) { + createShortcut = true; + } + } else if (currentSetting.equals(ShortcutDesc.CREATE_ASK_USER_IF_HINTED)) { + if (sd != null && sd.onDesktop()) { + if (SecurityWarning.showAccessWarningDialog(AccessType.CREATE_DESTKOP_SHORTCUT, file)) { + createShortcut = true; + } + } + } else if (currentSetting.equals(ShortcutDesc.CREATE_ALWAYS_IF_HINTED)) { + if (sd != null && sd.onDesktop()) { + createShortcut = true; + } + } + + return createShortcut; } /** diff -r f089abbcf019 -r 5537145cde35 netx/net/sourceforge/jnlp/runtime/DeploymentConfiguration.java --- a/netx/net/sourceforge/jnlp/runtime/DeploymentConfiguration.java Mon Nov 08 16:48:38 2010 -0500 +++ b/netx/net/sourceforge/jnlp/runtime/DeploymentConfiguration.java Wed Nov 10 16:07:06 2010 -0500 @@ -153,6 +153,8 @@ public final class DeploymentConfigurati public static final String KEY_SYSTEM_TRUSTED_CERTS = "deployment.system.security.trusted.certs"; public static final String KEY_SYSTEM_TRUSTED_JSSE_CERTS = "deployment.system.security.trusted.jssecerts"; public static final String KEY_SYSTEM_TRUSTED_CLIENT_CERTS = "deployment.system.security.trusted.clientautcerts"; + + public static final String KEY_CREATE_DESKTOP_SHORTCUT = "deployment.javaws.shortcut"; public enum ConfigType { System, User @@ -375,7 +377,7 @@ public final class DeploymentConfigurati /* JNLP association */ { "deployment.javaws.associations", String.valueOf(JNLP_ASSOCIATION_ASK_USER) }, /* desktop integration */ - { "deployment.javaws.shortcut", ShortcutDesc.SHORTCUT_ASK_USER_IF_HINTED}, + { KEY_CREATE_DESKTOP_SHORTCUT, ShortcutDesc.CREATE_ASK_USER_IF_HINTED}, /* jre selection */ { "deployment.javaws.installURL", null }, /* jre management */ From omajid at redhat.com Wed Nov 10 13:09:47 2010 From: omajid at redhat.com (Omair Majid) Date: Wed, 10 Nov 2010 16:09:47 -0500 Subject: [icedtea-web] RFC: Integrate desktop shortcut creation with configuration In-Reply-To: <20101109185327.GB22355@redhat.com> References: <4CD4151E.8080802@redhat.com> <20101109185327.GB22355@redhat.com> Message-ID: <4CDB0A1B.80504@redhat.com> On 11/09/2010 01:53 PM, Deepak Bhole wrote: > * Omair Majid [2010-11-05 12:13]: >> Hi, >> >> The attached patch allows using the new configuration to select >> whether the user should be prompted for desktop shortcut/launcher >> creation. >> > > Looks fine to me. Okay for HEAD. > > Deepak Thanks for the review Deepak. I have pushed the change. Cheers, Omair From asu at redhat.com Wed Nov 10 13:14:04 2010 From: asu at redhat.com (Andrew Su) Date: Wed, 10 Nov 2010 16:14:04 -0500 (EST) Subject: [icedtea-web] RFC: move a number of translatable strings into Messages.properties In-Reply-To: <28092884.588411289423415226.JavaMail.root@zmail01.collab.prod.int.phx2.redhat.com> Message-ID: <91230438.588611289423644513.JavaMail.root@zmail01.collab.prod.int.phx2.redhat.com> ----- "Omair Majid" wrote: > From: "Omair Majid" > To: "IcedTea" > Sent: Wednesday, November 10, 2010 1:46:36 PM GMT -05:00 US/Canada Eastern > Subject: Re: [icedtea-web] RFC: move a number of translatable strings into Messages.properties > > On 11/01/2010 03:27 PM, Omair Majid wrote: > > Hi, > > > > The attached patch moves a number of user-visible strings to > > Messages.properties file. There should be no user-visible strings > left > > in any class in the package net.sourceforge.jnlp.security.*. The > only > > exception is AppletWarningPane which I have not modified as it is > > currently unused. > > > > Updated patch attached. This works with the updated certificate > viewer. > > 2010-11-09 Omair Majid > > * netx/net/sourceforge/jnlp/resources/Messages.properties: Add > ButAllow, ButClose, ButCopy, ButMoreInformation, ButProceed, > ButRun, AlwaysAllowAction, Continue, Field, From, Name, > Publisher, > Value, Version, SNoAssociatedCertificate, > SAlwaysTrustPublisher, > SHttpsUnverified, SNotAllSignedSummary, SNotAllSignedDetail, > SNotAllSignedQuestion, SCertificateDetails, SIssuer, SSerial, > SMD5Fingerprint, SSHA1Fingerprint, SSignature, > SSignatureAlgorithm, > SSubject, SValidity, CVCertificateViewer, CVDetails, > CVIssuedTo, > CVExport, CVImport, CVIssuedBy, IssuedTo, CVRemove, > CVRemoveConfirmMessage,CVRemoveConfirmTitle, CVUser, CVSystem, > KS, KSCerts, KSJsseCerts, KSCaCerts, KSJsseCaCerts, and > KSClientCerts. > * netx/net/sourceforge/jnlp/security/AccessWarningPane.java > (addComponents): Use localized strings. > * netx/net/sourceforge/jnlp/security/CertWarningPane.java > (addComponents): Likewise. > * netx/net/sourceforge/jnlp/security/CertsInfoPane.java > (parseCert): Likewise. > (addComponents): Likewise. > * netx/net/sourceforge/jnlp/security/MoreInfoPane.java > (addComponents): Likewise. > * > netx/net/sourceforge/jnlp/security/NotAllSignedWarningPane.java > (addComponents): Likewise. > * > netx/net/sourceforge/jnlp/security/viewer/CertificatePane.java: > Likewise. > (addComponents): Likewise. > (CertificateType.toString): Likewise. > (RemoveButtonListener.actionPerformed): Likewise. > > > Any comments? Hello, These changes look good to me, ok to commit. Cheers, Andrew > > Thanks, > Omair From omajid at icedtea.classpath.org Wed Nov 10 13:25:06 2010 From: omajid at icedtea.classpath.org (omajid at icedtea.classpath.org) Date: Wed, 10 Nov 2010 21:25:06 +0000 Subject: /hg/icedtea-web: 2 new changesets Message-ID: changeset 3cac6a3232e6 in /hg/icedtea-web details: http://icedtea.classpath.org/hg/icedtea-web?cmd=changeset;node=3cac6a3232e6 author: Omair Majid date: Wed Nov 10 16:20:51 2010 -0500 use browser path from configuration 2010-11-05 Omair Majid * netx/net/sourceforge/jnlp/runtime/DeploymentConfiguration.java: Add KEY_BROWSER_PATH. (loadDefaultProperties): Use KEY_BROWSER_PATH. * netx/net/sourceforge/jnlp/services/XBasicService.java (initialize): Use the browser command from the configuration. Save updates to configuration as well. changeset 44d47c366e5f in /hg/icedtea-web details: http://icedtea.classpath.org/hg/icedtea-web?cmd=changeset;node=44d47c366e5f author: Omair Majid date: Wed Nov 10 16:24:53 2010 -0500 move a number of translatable string from code into Messages.properties 2010-11-09 Omair Majid * netx/net/sourceforge/jnlp/resources/Messages.properties: Add ButAllow, ButClose, ButCopy, ButMoreInformation, ButProceed, ButRun, AlwaysAllowAction, Continue, Field, From, Name, Publisher, Value, Version, SNoAssociatedCertificate, SAlwaysTrustPublisher, SHttpsUnverified, SNotAllSignedSummary, SNotAllSignedDetail, SNotAllSignedQuestion, SCertificateDetails, SIssuer, SSerial, SMD5Fingerprint, SSHA1Fingerprint, SSignature, SSignatureAlgorithm, SSubject, SValidity, CVCertificateViewer, CVDetails, CVIssuedTo, CVExport, CVImport, CVIssuedBy, IssuedTo, CVRemove, CVRemoveConfirmMessage,CVRemoveConfirmTitle, CVUser, CVSystem, KS, KSCerts, KSJsseCerts, KSCaCerts, KSJsseCaCerts, and KSClientCerts. * netx/net/sourceforge/jnlp/security/AccessWarningPane.java (addComponents): Use localized strings. * netx/net/sourceforge/jnlp/security/CertWarningPane.java (addComponents): Likewise. * netx/net/sourceforge/jnlp/security/CertsInfoPane.java (parseCert): Likewise. (addComponents): Likewise. * netx/net/sourceforge/jnlp/security/MoreInfoPane.java (addComponents): Likewise. * netx/net/sourceforge/jnlp/security/NotAllSignedWarningPane.java (addComponents): Likewise. * netx/net/sourceforge/jnlp/security/viewer/CertificatePane.java: Likewise. (addComponents): Likewise. (CertificateType.toString): Likewise. (RemoveButtonListener.actionPerformed): Likewise. diffstat: 12 files changed, 160 insertions(+), 57 deletions(-) ChangeLog | 40 +++++++ netx/net/sourceforge/jnlp/resources/Messages.properties | 55 +++++++++- netx/net/sourceforge/jnlp/runtime/DeploymentConfiguration.java | 4 netx/net/sourceforge/jnlp/security/AccessWarningPane.java | 16 +- netx/net/sourceforge/jnlp/security/CertWarningPane.java | 19 +-- netx/net/sourceforge/jnlp/security/CertsInfoPane.java | 26 ++-- netx/net/sourceforge/jnlp/security/KeyStores.java | 2 netx/net/sourceforge/jnlp/security/MoreInfoPane.java | 4 netx/net/sourceforge/jnlp/security/NotAllSignedWarningPane.java | 16 +- netx/net/sourceforge/jnlp/security/viewer/CertificatePane.java | 18 +-- netx/net/sourceforge/jnlp/security/viewer/CertificateViewer.java | 4 netx/net/sourceforge/jnlp/services/XBasicService.java | 13 +- diffs (498 lines): diff -r 5537145cde35 -r 44d47c366e5f ChangeLog --- a/ChangeLog Wed Nov 10 16:07:06 2010 -0500 +++ b/ChangeLog Wed Nov 10 16:24:53 2010 -0500 @@ -1,3 +1,43 @@ 2010-11-05 Omair Majid + + * netx/net/sourceforge/jnlp/resources/Messages.properties: Add + ButAllow, ButClose, ButCopy, ButMoreInformation, ButProceed, + ButRun, AlwaysAllowAction, Continue, Field, From, Name, Publisher, + Value, Version, SNoAssociatedCertificate, SAlwaysTrustPublisher, + SHttpsUnverified, SNotAllSignedSummary, SNotAllSignedDetail, + SNotAllSignedQuestion, SCertificateDetails, SIssuer, SSerial, + SMD5Fingerprint, SSHA1Fingerprint, SSignature, SSignatureAlgorithm, + SSubject, SValidity, CVCertificateViewer, CVDetails, CVIssuedTo, + CVExport, CVImport, CVIssuedBy, IssuedTo, CVRemove, + CVRemoveConfirmMessage,CVRemoveConfirmTitle, CVUser, CVSystem, + KS, KSCerts, KSJsseCerts, KSCaCerts, KSJsseCaCerts, and + KSClientCerts. + * netx/net/sourceforge/jnlp/security/AccessWarningPane.java + (addComponents): Use localized strings. + * netx/net/sourceforge/jnlp/security/CertWarningPane.java + (addComponents): Likewise. + * netx/net/sourceforge/jnlp/security/CertsInfoPane.java + (parseCert): Likewise. + (addComponents): Likewise. + * netx/net/sourceforge/jnlp/security/MoreInfoPane.java + (addComponents): Likewise. + * netx/net/sourceforge/jnlp/security/NotAllSignedWarningPane.java + (addComponents): Likewise. + * netx/net/sourceforge/jnlp/security/viewer/CertificatePane.java: + Likewise. + (addComponents): Likewise. + (CertificateType.toString): Likewise. + (RemoveButtonListener.actionPerformed): Likewise. + +2010-11-05 Omair Majid + + * netx/net/sourceforge/jnlp/runtime/DeploymentConfiguration.java: + Add KEY_BROWSER_PATH. + (loadDefaultProperties): Use KEY_BROWSER_PATH. + * netx/net/sourceforge/jnlp/services/XBasicService.java + (initialize): Use the browser command from the configuration. + Save updates to configuration as well. + 2010-11-05 Omair Majid * netx/net/sourceforge/jnlp/ShortcutDesc.java: Change prefixes from diff -r 5537145cde35 -r 44d47c366e5f netx/net/sourceforge/jnlp/resources/Messages.properties --- a/netx/net/sourceforge/jnlp/resources/Messages.properties Wed Nov 10 16:07:06 2010 -0500 +++ b/netx/net/sourceforge/jnlp/resources/Messages.properties Wed Nov 10 16:24:53 2010 -0500 @@ -3,10 +3,25 @@ # # General NullParameter=Null parameter +ButAllow=Allow +ButBrowse=Browse... +ButCancel=\ Cancel\ +ButClose=Close +ButCopy=Copy to Clipboard +ButMoreInformation=More Information... ButOk=OK -ButCancel=\ Cancel\ -ButBrowse=Browse... +ButProceed=Proceed +ButRun=Run AFileOnTheMachine=a file on the machine +AlwaysAllowAction=Always allow this action + +Continue=Do you want to continue? +Field=Field +From=From +Name=Name +Publisher=Publisher +Value=Value +Version=Version # LS - Severity LSMinor=Minor @@ -166,6 +181,12 @@ SClipboardWriteAccess=The application ha SClipboardWriteAccess=The application has requested write-only access to the system clipboard. Do you want to allow this action? SPrinterAccess=The application has requested printer access. Do you want to allow this action? SNetworkAccess=The application has requested permission to establish connections to {0}. Do you want to allow this action? +SNoAssociatedCertificate= +SAlwaysTrustPublisher=Always trust content from this publisher +SHttpsUnverified=The website's certificate cannot be verified. +SNotAllSignedSummary=Only parts of this application code are signed. +SNotAllSignedDetail=This application contains both signed and unsigned code. While signed code is safe if you trust the provider, unsigned code may imply code outside of the trusted provider's control. +SNotAllSignedQuestion=Do you wish to proceed and run this application anyway? # Security - used for the More Information dialog SBadKeyUsage=Resources contain entries whose signer certificate's KeyUsage extension doesn't allow code signing. @@ -179,5 +200,35 @@ STrustedCertificate=The digital signatur STrustedCertificate=The digital signature was generated with a trusted certificate. SCNMisMatch=The expected hostname for this certificate is: "{0}"
The address being connected to is: "{1}" SRunWithoutRestrictions=This application will be run without the security restrictions normally provided by java. +SCertificateDetails=Certificate Details +# Security - certificate information +SIssuer=Issuer +SSerial=Serial +SMD5Fingerprint=MD5 Fingerprint +SSHA1Fingerprint=SHA1 Fingerprint +SSignature=Signature +SSignatureAlgorithm=Signature Algorithm +SSubject=Subject +SValidity=Validity +# Certificate Viewer +CVCertificateViewer=Certificates +CVDetails=Details +CVExport=Export +CVImport=Import +CVIssuedBy=Issued By +CVIssuedTo=Issued To +CVRemove=Remove +CVRemoveConfirmMessage=Are you sure you want to remove the selected certificate? +CVRemoveConfirmTitle=Confirmation - Remove Certificate? +CVUser=User +CVSystem=System + +#KeyStores: see KeyStores.java +KS=KeyStore +KSCerts=Trusted Certificates +KSJsseCerts=Trusted JSSE Certificates +KSCaCerts=Trusted Root CA Certificates +KSJsseCaCerts=Trusted JSSE Root CA Certificates, +KSClientCerts=Client Authentication Certificates \ No newline at end of file diff -r 5537145cde35 -r 44d47c366e5f netx/net/sourceforge/jnlp/runtime/DeploymentConfiguration.java --- a/netx/net/sourceforge/jnlp/runtime/DeploymentConfiguration.java Wed Nov 10 16:07:06 2010 -0500 +++ b/netx/net/sourceforge/jnlp/runtime/DeploymentConfiguration.java Wed Nov 10 16:24:53 2010 -0500 @@ -155,6 +155,8 @@ public final class DeploymentConfigurati public static final String KEY_SYSTEM_TRUSTED_CLIENT_CERTS = "deployment.system.security.trusted.clientautcerts"; public static final String KEY_CREATE_DESKTOP_SHORTCUT = "deployment.javaws.shortcut"; + + public static final String KEY_BROWSER_PATH = "deployment.browser.path"; public enum ConfigType { System, User @@ -383,7 +385,7 @@ public final class DeploymentConfigurati /* jre management */ { "deployment.javaws.autodownload", null }, /* browser selection */ - { "deployment.browser.path", null }, + { KEY_BROWSER_PATH, null }, /* check for update timeout */ { "deployment.javaws.update.timeout", String.valueOf(500) } }; diff -r 5537145cde35 -r 44d47c366e5f netx/net/sourceforge/jnlp/security/AccessWarningPane.java --- a/netx/net/sourceforge/jnlp/security/AccessWarningPane.java Wed Nov 10 16:07:06 2010 -0500 +++ b/netx/net/sourceforge/jnlp/security/AccessWarningPane.java Wed Nov 10 16:24:53 2010 -0500 @@ -99,12 +99,12 @@ public class AccessWarningPane extends S //We don't worry about exceptions when trying to fill in //these strings -- we just want to fill in as many as possible. try { - name = file.getInformation().getTitle() != null ? file.getInformation().getTitle() : ""; + name = file.getInformation().getTitle() != null ? file.getInformation().getTitle() : R("SNoAssociatedCertificate"); } catch (Exception e) { } try { - publisher = file.getInformation().getVendor() != null ? file.getInformation().getVendor() : ""; + publisher = file.getInformation().getVendor() != null ? file.getInformation().getVendor() : R("SNoAssociatedCertificate"); } catch (Exception e) { } @@ -161,14 +161,14 @@ public class AccessWarningPane extends S topPanel.setBorder(BorderFactory.createEmptyBorder(10,10,10,10)); //application info - JLabel nameLabel = new JLabel("Name: " + name); + JLabel nameLabel = new JLabel(R("Name") + ": " + name); nameLabel.setBorder(BorderFactory.createEmptyBorder(5,5,5,5)); - JLabel publisherLabel = new JLabel("Publisher: " + publisher); + JLabel publisherLabel = new JLabel(R("Publisher") + ": " + publisher); publisherLabel.setBorder(BorderFactory.createEmptyBorder(5,5,5,5)); - JLabel fromLabel = new JLabel("From: " + from); + JLabel fromLabel = new JLabel(R("From") + ": " + from); fromLabel.setBorder(BorderFactory.createEmptyBorder(5,5,5,5)); - alwaysAllow = new JCheckBox("Always allow this action"); + alwaysAllow = new JCheckBox(R("AlwaysAllowAction")); alwaysAllow.setEnabled(false); JPanel infoPanel = new JPanel(new GridLayout(4,1)); @@ -181,8 +181,8 @@ public class AccessWarningPane extends S //run and cancel buttons JPanel buttonPanel = new JPanel(new FlowLayout(FlowLayout.RIGHT)); - JButton run = new JButton("Allow"); - JButton cancel = new JButton("Cancel"); + JButton run = new JButton(R("ButAllow")); + JButton cancel = new JButton(R("ButCancel")); run.addActionListener(createSetValueListener(parent,0)); run.addActionListener(new CheckBoxListener()); cancel.addActionListener(createSetValueListener(parent, 1)); diff -r 5537145cde35 -r 44d47c366e5f netx/net/sourceforge/jnlp/security/CertWarningPane.java --- a/netx/net/sourceforge/jnlp/security/CertWarningPane.java Wed Nov 10 16:07:06 2010 -0500 +++ b/netx/net/sourceforge/jnlp/security/CertWarningPane.java Wed Nov 10 16:24:53 2010 -0500 @@ -131,8 +131,8 @@ public class CertWarningPane extends Sec String propertyName = ""; if (certVerifier instanceof HttpsCertVerifier) { - topLabelText = "The website's certificate cannot be verified. " + - "Do you want to continue?"; + topLabelText = R("SHttpsUnverified") + " " + + R("Continue"); propertyName = "OptionPane.warningIcon"; } else @@ -162,15 +162,14 @@ public class CertWarningPane extends Sec topPanel.setBorder(BorderFactory.createEmptyBorder(10,10,10,10)); //application info - JLabel nameLabel = new JLabel("Name: " + name); + JLabel nameLabel = new JLabel(R("Name") + ": " + name); nameLabel.setBorder(BorderFactory.createEmptyBorder(5,5,5,5)); - JLabel publisherLabel = new JLabel("Publisher: " + publisher); + JLabel publisherLabel = new JLabel(R("Publisher") + ": " + publisher); publisherLabel.setBorder(BorderFactory.createEmptyBorder(5,5,5,5)); - JLabel fromLabel = new JLabel("From: " + from); + JLabel fromLabel = new JLabel(R("From") + ": " + from); fromLabel.setBorder(BorderFactory.createEmptyBorder(5,5,5,5)); - alwaysTrust = new JCheckBox( - "Always trust content from this publisher"); + alwaysTrust = new JCheckBox(R("SAlwaysTrustPublisher")); alwaysTrust.setEnabled(true); JPanel infoPanel = new JPanel(new GridLayout(4,1)); @@ -185,8 +184,8 @@ public class CertWarningPane extends Sec //run and cancel buttons JPanel buttonPanel = new JPanel(new FlowLayout(FlowLayout.RIGHT)); - JButton run = new JButton("Run"); - JButton cancel = new JButton("Cancel"); + JButton run = new JButton(R("ButRun")); + JButton cancel = new JButton(R("ButCancel")); int buttonWidth = Math.max(run.getMinimumSize().width, cancel.getMinimumSize().width); int buttonHeight = run.getMinimumSize().height; @@ -208,7 +207,7 @@ public class CertWarningPane extends Sec add(buttonPanel); JLabel bottomLabel; - JButton moreInfo = new JButton("More information..."); + JButton moreInfo = new JButton(R("ButMoreInformation")); moreInfo.addActionListener(new MoreInfoButtonListener()); if (parent.getJarSigner().getRootInCacerts()) diff -r 5537145cde35 -r 44d47c366e5f netx/net/sourceforge/jnlp/security/CertsInfoPane.java --- a/netx/net/sourceforge/jnlp/security/CertsInfoPane.java Wed Nov 10 16:07:06 2010 -0500 +++ b/netx/net/sourceforge/jnlp/security/CertsInfoPane.java Wed Nov 10 16:24:53 2010 -0500 @@ -37,6 +37,8 @@ exception statement from your version. package net.sourceforge.jnlp.security; +import static net.sourceforge.jnlp.runtime.Translator.R; + import java.util.ArrayList; import java.util.Date; import java.security.cert.CertPath; @@ -73,7 +75,7 @@ public class CertsInfoPane extends Secur private ListSelectionModel listSelectionModel; private ListSelectionModel tableSelectionModel; protected String[] certNames; - private String[] columnNames = { "Field", "Value" }; + private String[] columnNames = { R("Field"), R("Value") }; protected ArrayList certsData; public CertsInfoPane(SecurityWarningDialog x, CertVerifier certVerifier) { @@ -163,15 +165,15 @@ public class CertsInfoPane extends Secur //fail quietly } - String[][] cert = { {"Version", version}, - {"Serial", serialNumber}, - {"Signature Algorithm", signatureAlg}, - {"Issuer", issuer}, - {"Validity", validity}, - {"Subject", subject}, - {"Signature", signature}, - {"MD5 Fingerprint", md5Hash}, - {"SHA1 Fingerprint", sha1Hash} + String[][] cert = { {R("Version"), version}, + {R("SSerial"), serialNumber}, + {R("SSignatureAlgorithm"), signatureAlg}, + {R("SIssuer"), issuer}, + {R("SValidity"), validity}, + {R("SSubject"), subject}, + {R("SSignature"), signature}, + {R("SMD5Fingerprint"), md5Hash}, + {R("SSHA1Fingerprint"), sha1Hash} }; return cert; } @@ -223,8 +225,8 @@ public class CertsInfoPane extends Secur mainPane.setResizeWeight(0.30); JPanel buttonPane = new JPanel(new BorderLayout()); - JButton close = new JButton("Close"); - JButton copyToClipboard = new JButton("Copy to Clipboard"); + JButton close = new JButton(R("ButClose")); + JButton copyToClipboard = new JButton(R("ButCopy")); close.addActionListener(createSetValueListener(parent, 0)); copyToClipboard.addActionListener(new CopyToClipboardHandler()); buttonPane.add(close, BorderLayout.EAST); diff -r 5537145cde35 -r 44d47c366e5f netx/net/sourceforge/jnlp/security/KeyStores.java --- a/netx/net/sourceforge/jnlp/security/KeyStores.java Wed Nov 10 16:07:06 2010 -0500 +++ b/netx/net/sourceforge/jnlp/security/KeyStores.java Wed Nov 10 16:24:53 2010 -0500 @@ -257,6 +257,8 @@ public final class KeyStores { public static final String toTranslatableString(Level level, Type type) { StringBuilder response = new StringBuilder(); + response.append("KS"); + if (level != null) { String levelString = level.toString(); response.append(levelString.substring(0, 1).toUpperCase()); diff -r 5537145cde35 -r 44d47c366e5f netx/net/sourceforge/jnlp/security/MoreInfoPane.java --- a/netx/net/sourceforge/jnlp/security/MoreInfoPane.java Wed Nov 10 16:07:06 2010 -0500 +++ b/netx/net/sourceforge/jnlp/security/MoreInfoPane.java Wed Nov 10 16:24:53 2010 -0500 @@ -90,9 +90,9 @@ public class MoreInfoPane extends Securi } JPanel buttonsPanel = new JPanel(new BorderLayout()); - JButton certDetails = new JButton("Certificate Details"); + JButton certDetails = new JButton(R("SCertificateDetails")); certDetails.addActionListener(new CertInfoButtonListener()); - JButton close = new JButton("Close"); + JButton close = new JButton(R("ButClose")); close.addActionListener(createSetValueListener(parent, 0)); buttonsPanel.add(certDetails, BorderLayout.WEST); buttonsPanel.add(close, BorderLayout.EAST); diff -r 5537145cde35 -r 44d47c366e5f netx/net/sourceforge/jnlp/security/NotAllSignedWarningPane.java --- a/netx/net/sourceforge/jnlp/security/NotAllSignedWarningPane.java Wed Nov 10 16:07:06 2010 -0500 +++ b/netx/net/sourceforge/jnlp/security/NotAllSignedWarningPane.java Wed Nov 10 16:24:53 2010 -0500 @@ -37,6 +37,8 @@ exception statement from your version. package net.sourceforge.jnlp.security; +import static net.sourceforge.jnlp.runtime.Translator.R; + import java.awt.BorderLayout; import java.awt.Color; import java.awt.Dimension; @@ -67,13 +69,9 @@ public class NotAllSignedWarningPane ext private void addComponents() { JNLPFile file = parent.getFile(); - String topLabelText = "Only parts of this application code are signed."; - String infoLabelText = "This application contains both signed and" + - " unsigned code. While signed code is safe if you trust the " + - "provider, unsigned code may imply code outside of the trusted " + - "provider's control."; - String questionLabelText = "Do you wish to proceed and run this " + - "application anyway?"; + String topLabelText = R("SNotAllSignedSummary"); + String infoLabelText = R("SNotAllSignedDetail"); + String questionLabelText = R("SNotAllSignedQuestion"); ImageIcon icon = new ImageIcon((new sun.misc.Launcher()).getClassLoader().getResource("net/sourceforge/jnlp/resources/warning.png")); JLabel topLabel = new JLabel(htmlWrap(topLabelText), icon, SwingConstants.LEFT); @@ -100,8 +98,8 @@ public class NotAllSignedWarningPane ext //run and cancel buttons JPanel buttonPanel = new JPanel(new FlowLayout(FlowLayout.RIGHT)); - JButton run = new JButton("Proceed"); - JButton cancel = new JButton("Cancel"); + JButton run = new JButton(R("ButProceed")); + JButton cancel = new JButton(R("ButCancel")); run.addActionListener(createSetValueListener(parent,0)); cancel.addActionListener(createSetValueListener(parent, 1)); initialFocusComponent = cancel; diff -r 5537145cde35 -r 44d47c366e5f netx/net/sourceforge/jnlp/security/viewer/CertificatePane.java --- a/netx/net/sourceforge/jnlp/security/viewer/CertificatePane.java Wed Nov 10 16:07:06 2010 -0500 +++ b/netx/net/sourceforge/jnlp/security/viewer/CertificatePane.java Wed Nov 10 16:24:53 2010 -0500 @@ -36,6 +36,8 @@ exception statement from your version. */ package net.sourceforge.jnlp.security.viewer; + +import static net.sourceforge.jnlp.runtime.Translator.R; import java.awt.BorderLayout; import java.awt.Dimension; @@ -88,7 +90,7 @@ public class CertificatePane extends JPa * "Issued To" and "Issued By" string pairs for certs. */ private String[][] issuedToAndBy = null; - private final String[] columnNames = { "Issued To", "Issued By" }; + private final String[] columnNames = { R("CVIssuedTo"), R("CVIssuedBy") }; private final CertificateType[] certificateTypes = new CertificateType[] { new CertificateType(KeyStores.Type.CA_CERTS), @@ -187,13 +189,13 @@ public class CertificatePane extends JPa systemTablePane.setBorder(BorderFactory.createEmptyBorder(10,10,10,10)); tabbedPane = new JTabbedPane(); - tabbedPane.addTab("User", userTablePane); - tabbedPane.addTab("System", systemTablePane); + tabbedPane.addTab(R("CVUser"), userTablePane); + tabbedPane.addTab(R("CVSystem"), systemTablePane); tabbedPane.addChangeListener(new TabChangeListener()); JPanel buttonPanel = new JPanel(new FlowLayout()); - String[] buttonNames = {"Import", "Export", "Remove", "Details"}; + String[] buttonNames = {R("CVImport"), R("CVExport"), R("CVRemove"), R("CVDetails")}; char[] buttonMnemonics = { KeyEvent.VK_I, KeyEvent.VK_E, KeyEvent.VK_M, @@ -228,7 +230,7 @@ public class CertificatePane extends JPa JPanel closePanel = new JPanel(new BorderLayout()); closePanel.setBorder(BorderFactory.createEmptyBorder(7,7,7,7)); - JButton closeButton = new JButton("Close"); + JButton closeButton = new JButton(R("ButClose")); closeButton.addActionListener(new CloseButtonListener()); defaultFocusComponent = closeButton; closePanel.add(closeButton, BorderLayout.EAST); @@ -308,7 +310,7 @@ public class CertificatePane extends JPa } public String toString() { - return KeyStores.toTranslatableString(null, type); + return KeyStores.toDisplayableString(null, type); } } @@ -430,8 +432,8 @@ public class CertificatePane extends JPa if (alias != null) { int i = JOptionPane.showConfirmDialog(parent, - "Are you sure you want to remove the selected certificate?", - "Confirmation - Remove Certificate?", + R("CVRemoveConfirmMessage"), + R("CVRemoveConfirmTitle"), JOptionPane.YES_NO_OPTION); if (i == 0) { keyStore.deleteEntry(alias); diff -r 5537145cde35 -r 44d47c366e5f netx/net/sourceforge/jnlp/security/viewer/CertificateViewer.java --- a/netx/net/sourceforge/jnlp/security/viewer/CertificateViewer.java Wed Nov 10 16:07:06 2010 -0500 +++ b/netx/net/sourceforge/jnlp/security/viewer/CertificateViewer.java Wed Nov 10 16:24:53 2010 -0500 @@ -37,6 +37,8 @@ exception statement from your version. package net.sourceforge.jnlp.security.viewer; +import static net.sourceforge.jnlp.runtime.Translator.R; + import java.awt.BorderLayout; import java.awt.Container; import java.awt.Dimension; @@ -53,7 +55,7 @@ public class CertificateViewer extends J public class CertificateViewer extends JDialog { private boolean initialized = false; - private static final String dialogTitle = "Certificates"; + private static final String dialogTitle = R("CVCertificateViewer"); CertificatePane panel; diff -r 5537145cde35 -r 44d47c366e5f netx/net/sourceforge/jnlp/services/XBasicService.java --- a/netx/net/sourceforge/jnlp/services/XBasicService.java Wed Nov 10 16:07:06 2010 -0500 +++ b/netx/net/sourceforge/jnlp/services/XBasicService.java Wed Nov 10 16:24:53 2010 -0500 @@ -30,6 +30,7 @@ import net.sourceforge.jnlp.JNLPFile; import net.sourceforge.jnlp.JNLPFile; import net.sourceforge.jnlp.Launcher; import net.sourceforge.jnlp.runtime.ApplicationInstance; +import net.sourceforge.jnlp.runtime.DeploymentConfiguration; import net.sourceforge.jnlp.runtime.JNLPRuntime; import net.sourceforge.jnlp.util.PropertiesFile; @@ -199,15 +200,19 @@ class XBasicService implements BasicServ command = "rundll32 url.dll,FileProtocolHandler "; } else { - PropertiesFile props = JNLPRuntime.getProperties(); - command = props.getProperty("browser.command"); + DeploymentConfiguration config = JNLPRuntime.getConfiguration(); + command = config.getProperty(DeploymentConfiguration.KEY_BROWSER_PATH); if(command == null) { // prompt & store command = promptForCommand(null); if(command != null) { - props.setProperty("browser.command", command); - props.store(); + config.setProperty(DeploymentConfiguration.KEY_BROWSER_PATH, command); + try { + config.save(); + } catch (IOException e) { + e.printStackTrace(); + } } } } From omajid at redhat.com Wed Nov 10 13:26:50 2010 From: omajid at redhat.com (Omair Majid) Date: Wed, 10 Nov 2010 16:26:50 -0500 Subject: [icedtea-web] RFC: move a number of translatable strings into Messages.properties In-Reply-To: <91230438.588611289423644513.JavaMail.root@zmail01.collab.prod.int.phx2.redhat.com> References: <91230438.588611289423644513.JavaMail.root@zmail01.collab.prod.int.phx2.redhat.com> Message-ID: <4CDB0E1A.1010501@redhat.com> On 11/10/2010 04:14 PM, Andrew Su wrote: > > ----- "Omair Majid" wrote: > >> From: "Omair Majid" >> To: "IcedTea" >> Sent: Wednesday, November 10, 2010 1:46:36 PM GMT -05:00 US/Canada Eastern >> Subject: Re: [icedtea-web] RFC: move a number of translatable strings into Messages.properties >> >> On 11/01/2010 03:27 PM, Omair Majid wrote: >>> Hi, >>> >>> The attached patch moves a number of user-visible strings to >>> Messages.properties file. There should be no user-visible strings >> left >>> in any class in the package net.sourceforge.jnlp.security.*. The >> only >>> exception is AppletWarningPane which I have not modified as it is >>> currently unused. >>> >> >> Updated patch attached. This works with the updated certificate >> viewer. >> >> 2010-11-09 Omair Majid >> >> * netx/net/sourceforge/jnlp/resources/Messages.properties: Add >> ButAllow, ButClose, ButCopy, ButMoreInformation, ButProceed, >> ButRun, AlwaysAllowAction, Continue, Field, From, Name, >> Publisher, >> Value, Version, SNoAssociatedCertificate, >> SAlwaysTrustPublisher, >> SHttpsUnverified, SNotAllSignedSummary, SNotAllSignedDetail, >> SNotAllSignedQuestion, SCertificateDetails, SIssuer, SSerial, >> SMD5Fingerprint, SSHA1Fingerprint, SSignature, >> SSignatureAlgorithm, >> SSubject, SValidity, CVCertificateViewer, CVDetails, >> CVIssuedTo, >> CVExport, CVImport, CVIssuedBy, IssuedTo, CVRemove, >> CVRemoveConfirmMessage,CVRemoveConfirmTitle, CVUser, CVSystem, >> KS, KSCerts, KSJsseCerts, KSCaCerts, KSJsseCaCerts, and >> KSClientCerts. >> * netx/net/sourceforge/jnlp/security/AccessWarningPane.java >> (addComponents): Use localized strings. >> * netx/net/sourceforge/jnlp/security/CertWarningPane.java >> (addComponents): Likewise. >> * netx/net/sourceforge/jnlp/security/CertsInfoPane.java >> (parseCert): Likewise. >> (addComponents): Likewise. >> * netx/net/sourceforge/jnlp/security/MoreInfoPane.java >> (addComponents): Likewise. >> * >> netx/net/sourceforge/jnlp/security/NotAllSignedWarningPane.java >> (addComponents): Likewise. >> * >> netx/net/sourceforge/jnlp/security/viewer/CertificatePane.java: >> Likewise. >> (addComponents): Likewise. >> (CertificateType.toString): Likewise. >> (RemoveButtonListener.actionPerformed): Likewise. >> >> >> Any comments? > > Hello, > > These changes look good to me, ok to commit. > Thanks for the review Andrew! I have pushed the changes. I suppose the next logical thing to do would be to announce that we are looking for translations. Cheers, Omair From omajid at redhat.com Wed Nov 10 13:27:21 2010 From: omajid at redhat.com (Omair Majid) Date: Wed, 10 Nov 2010 16:27:21 -0500 Subject: [icedtea-web] RFC: use browser path from configuration In-Reply-To: <20101110205747.GA8213@redhat.com> References: <4CD409F2.5000908@redhat.com> <20101110205747.GA8213@redhat.com> Message-ID: <4CDB0E39.9030608@redhat.com> On 11/10/2010 03:57 PM, Deepak Bhole wrote: > * Omair Majid [2010-11-05 12:12]: >> Hi, >> >> The attached patch integrates the browser path selection and usage >> into the netx DeploymentConfiguration. >> >> ChangeLog: >> 2010-11-05 Omair Majid >> >> * netx/net/sourceforge/jnlp/runtime/DeploymentConfiguration.java: >> Add KEY_BROWSER_PATH. >> (loadDefaultProperties): Use KEY_BROWSER_PATH. >> * netx/net/sourceforge/jnlp/services/XBasicService.java >> (initialize): Use the browser command from the configuration. >> Save updates to configuration as well. >> >> Any thoughts or comments? >> > > Looks fine to me. Ok for HEAD. > > Deepak > Thanks for the review Deepak. I have pushed the changes. Cheers, Omair From dbhole at redhat.com Wed Nov 10 13:27:29 2010 From: dbhole at redhat.com (Deepak Bhole) Date: Wed, 10 Nov 2010 16:27:29 -0500 Subject: [icedtea-web] RFC: move a number of translatable strings into Messages.properties In-Reply-To: <91230438.588611289423644513.JavaMail.root@zmail01.collab.prod.int.phx2.redhat.com> References: <28092884.588411289423415226.JavaMail.root@zmail01.collab.prod.int.phx2.redhat.com> <91230438.588611289423644513.JavaMail.root@zmail01.collab.prod.int.phx2.redhat.com> Message-ID: <20101110212719.GA9030@redhat.com> * Andrew Su [2010-11-10 16:23]: > > ----- "Omair Majid" wrote: > > > From: "Omair Majid" > > To: "IcedTea" > > Sent: Wednesday, November 10, 2010 1:46:36 PM GMT -05:00 US/Canada Eastern > > Subject: Re: [icedtea-web] RFC: move a number of translatable strings into Messages.properties > > > > On 11/01/2010 03:27 PM, Omair Majid wrote: > > > Hi, > > > > > > The attached patch moves a number of user-visible strings to > > > Messages.properties file. There should be no user-visible strings > > left > > > in any class in the package net.sourceforge.jnlp.security.*. The > > only > > > exception is AppletWarningPane which I have not modified as it is > > > currently unused. > > > > > > > Updated patch attached. This works with the updated certificate > > viewer. > > > > 2010-11-09 Omair Majid > > > > * netx/net/sourceforge/jnlp/resources/Messages.properties: Add > > ButAllow, ButClose, ButCopy, ButMoreInformation, ButProceed, > > ButRun, AlwaysAllowAction, Continue, Field, From, Name, > > Publisher, > > Value, Version, SNoAssociatedCertificate, > > SAlwaysTrustPublisher, > > SHttpsUnverified, SNotAllSignedSummary, SNotAllSignedDetail, > > SNotAllSignedQuestion, SCertificateDetails, SIssuer, SSerial, > > SMD5Fingerprint, SSHA1Fingerprint, SSignature, > > SSignatureAlgorithm, > > SSubject, SValidity, CVCertificateViewer, CVDetails, > > CVIssuedTo, > > CVExport, CVImport, CVIssuedBy, IssuedTo, CVRemove, > > CVRemoveConfirmMessage,CVRemoveConfirmTitle, CVUser, CVSystem, > > KS, KSCerts, KSJsseCerts, KSCaCerts, KSJsseCaCerts, and > > KSClientCerts. > > * netx/net/sourceforge/jnlp/security/AccessWarningPane.java > > (addComponents): Use localized strings. > > * netx/net/sourceforge/jnlp/security/CertWarningPane.java > > (addComponents): Likewise. > > * netx/net/sourceforge/jnlp/security/CertsInfoPane.java > > (parseCert): Likewise. > > (addComponents): Likewise. > > * netx/net/sourceforge/jnlp/security/MoreInfoPane.java > > (addComponents): Likewise. > > * > > netx/net/sourceforge/jnlp/security/NotAllSignedWarningPane.java > > (addComponents): Likewise. > > * > > netx/net/sourceforge/jnlp/security/viewer/CertificatePane.java: > > Likewise. > > (addComponents): Likewise. > > (CertificateType.toString): Likewise. > > (RemoveButtonListener.actionPerformed): Likewise. > > > > > > Any comments? > > Hello, > > These changes look good to me, ok to commit. > Thanks for the review Andrew. Changes look fine to me. Ok for HEAD from me as well. Cheers, Deepak > Cheers, > Andrew > > > > > Thanks, > > Omair From andrew at icedtea.classpath.org Wed Nov 10 13:44:38 2010 From: andrew at icedtea.classpath.org (andrew at icedtea.classpath.org) Date: Wed, 10 Nov 2010 21:44:38 +0000 Subject: /hg/release/icedtea6-1.9: 10 new changesets Message-ID: changeset 057f66ea35f5 in /hg/release/icedtea6-1.9 details: http://icedtea.classpath.org/hg/release/icedtea6-1.9?cmd=changeset;node=057f66ea35f5 author: Andrew John Hughes date: Wed Nov 03 10:52:50 2010 +0000 Bump to latest revision of hs19 (b09). 2010-11-02 Andrew John Hughes * Makefile.am: (replace-hotspot): Don't hardcode 'master' as the top-level directory, extract it from the url. * hotspot.map: Move to latest hs19 (currently only on baseline tree) changeset 5a6f16947db2 in /hg/release/icedtea6-1.9 details: http://icedtea.classpath.org/hg/release/icedtea6-1.9?cmd=changeset;node=5a6f16947db2 author: Andrew John Hughes date: Wed Nov 03 10:54:08 2010 +0000 Update md5sum of hs19 tarball. 2010-11-02 Andrew John Hughes * hotspot.map: Update md5sum for new HotSpot. changeset bb3389e47862 in /hg/release/icedtea6-1.9 details: http://icedtea.classpath.org/hg/release/icedtea6-1.9?cmd=changeset;node=bb3389e47862 author: Andrew John Hughes date: Wed Nov 03 18:26:48 2010 +0000 Additional S390 size_t fixes. 2010-11-03 Dan Hor?k * patches/hotspot/hs19/params-cast-size_t.patch: Add additional fixes for S390. changeset bb3540c689ab in /hg/release/icedtea6-1.9 details: http://icedtea.classpath.org/hg/release/icedtea6-1.9?cmd=changeset;node=bb3540c689ab author: Andrew John Hughes date: Fri Nov 05 18:28:04 2010 +0000 Switch back to master tree for hs19. 2010-11-05 Andrew John Hughes * hotspot.map: Switch back to master now changes have been pushed through (same content, different tree). changeset 621a87c458c5 in /hg/release/icedtea6-1.9 details: http://icedtea.classpath.org/hg/release/icedtea6-1.9?cmd=changeset;node=621a87c458c5 author: Andrew John Hughes date: Tue Nov 09 14:51:54 2010 +0000 Switch to the IcedTea server for JAXP, JAF and JAXWS. 2010-11-09 Andrew John Hughes * Makefile.am: (JAXWS_DROP_URL): Switch to IcedTea server. (JAXP_DROP_URL): Likewise. (JAF_DROP_URL): Likewise. changeset 99255f8dcacd in /hg/release/icedtea6-1.9 details: http://icedtea.classpath.org/hg/release/icedtea6-1.9?cmd=changeset;node=99255f8dcacd author: Andrew John Hughes date: Wed Nov 10 19:17:09 2010 +0000 Backport BigDecimal/Integer performance improvements. 2010-11-10 Andrew John Hughes * Makefile.am: Add BigDecimal/Integer performance improvement patches. * patches/openjdk/6622432-bigdecimal_performance.patch, * patches/openjdk/6850606-bigdecimal_regression.patch, * patches/openjdk/6876282-bigdecimal_divide.patch: Added. changeset aa23fe60637f in /hg/release/icedtea6-1.9 details: http://icedtea.classpath.org/hg/release/icedtea6-1.9?cmd=changeset;node=aa23fe60637f author: Andrew John Hughes date: Wed Nov 10 19:19:50 2010 +0000 Fix hs19 on ppc machines. 2010-10-22 Andrew John Hughes * Makefile.am: Add new patch for hs19 builds only. * NEWS: Mention fix. * patches/openjdk/6994130-ppc_fix.patch: Fix build on PPC machines (thanks to Gary Benson). changeset 4b9b1ece4ede in /hg/release/icedtea6-1.9 details: http://icedtea.classpath.org/hg/release/icedtea6-1.9?cmd=changeset;node=4b9b1ece4ede author: Andrew John Hughes date: Wed Nov 10 16:05:51 2010 +0000 RH647737: Disable compressed oops in hs19 to avoid Eclipse failures. 2010-11-10 Andrew John Hughes RH647737 Disable compressed oops in hs19. * Makefile.am: Add new patch. * patches/disable-default-compoops.patch: New patch to turn off compressed oops by default. changeset 41d310123556 in /hg/release/icedtea6-1.9 details: http://icedtea.classpath.org/hg/release/icedtea6-1.9?cmd=changeset;node=41d310123556 author: Jiri Vanek date: Wed Nov 10 16:28:47 2010 +0100 Updating fontconfig files for Fedoras 9-14 changeset 17c34c4c6fae in /hg/release/icedtea6-1.9 details: http://icedtea.classpath.org/hg/release/icedtea6-1.9?cmd=changeset;node=17c34c4c6fae author: Andrew John Hughes date: Wed Nov 10 16:30:08 2010 +0000 Remove additional whitespace introduced in Makefile.am. 2010-11-10 Andrew John Hughes * Makefile.am: Remove additional whitespace. diffstat: 11 files changed, 5272 insertions(+), 10 deletions(-) ChangeLog | 74 Makefile.am | 36 NEWS | 5 hotspot.map | 3 patches/disable-default-compoops.patch | 12 patches/f14-fonts.patch | 677 ++ patches/hotspot/hs19/params-cast-size_t.patch | 20 patches/openjdk/6622432-bigdecimal_performance.patch | 4211 ++++++++++++++++++ patches/openjdk/6850606-bigdecimal_regression.patch | 144 patches/openjdk/6876282-bigdecimal_divide.patch | 89 patches/openjdk/6994130-ppc_fix.patch | 11 diffs (truncated from 5378 to 500 lines): diff -r 69b7e0c0a5c3 -r 17c34c4c6fae ChangeLog --- a/ChangeLog Mon Oct 18 12:36:39 2010 -0400 +++ b/ChangeLog Wed Nov 10 16:30:08 2010 +0000 @@ -1,3 +1,77 @@ 2010-10-18 Omair Majid + + * Makefile.am: Remove additional whitespace. + +2010-11-10 Jiri Vanek + + * Makefile.am: + (FONTCONFIG_PATH): Added path to fontconfig files. + (ICEDTEA_PATCHES): Add f14-fonts.patch. + (fonts): Added cloning of fontconfig.Fedora + to Fedora.12,11,10,9. + (patch-fsg): Depend on fonts.stamp. + * patches/f14-fonts.patch + Updated font configurations for Fedora 9-14 + Add additional fontconfig files to Makefile. + +2010-11-10 Andrew John Hughes + + RH647737 + Disable compressed oops in hs19. + * Makefile.am: Add new patch. + * patches/disable-default-compoops.patch: + New patch to turn off compressed oops by default. + +2010-10-22 Andrew John Hughes + + * Makefile.am: Add new patch for hs19 + builds only. + * NEWS: Mention fix. + * patches/openjdk/6994130-ppc_fix.patch: + Fix build on PPC machines (thanks to Gary + Benson). + +2010-11-10 Andrew John Hughes + + * Makefile.am: Add BigDecimal/Integer performance + improvement patches. + * patches/openjdk/6622432-bigdecimal_performance.patch, + * patches/openjdk/6850606-bigdecimal_regression.patch, + * patches/openjdk/6876282-bigdecimal_divide.patch: + Added. + +2010-11-09 Andrew John Hughes + + * Makefile.am: + (JAXWS_DROP_URL): Switch to IcedTea server. + (JAXP_DROP_URL): Likewise. + (JAF_DROP_URL): Likewise. + +2010-11-05 Andrew John Hughes + + * hotspot.map: + Switch back to master now changes have been + pushed through (same content, different tree). + +2010-11-03 Dan Hor??k + + * patches/hotspot/hs19/params-cast-size_t.patch: + Add additional fixes for S390. + +2010-11-02 Andrew John Hughes + + * hotspot.map: Update md5sum for new + HotSpot. + +2010-11-02 Andrew John Hughes + + * Makefile.am: + (replace-hotspot): Don't hardcode 'master' + as the top-level directory, extract it + from the url. + * hotspot.map: Move to latest hs19 (currently + only on baseline tree) + 2010-10-18 Omair Majid * netx/net/sourceforge/jnlp/security/VariableX509TrustManager.java: diff -r 69b7e0c0a5c3 -r 17c34c4c6fae Makefile.am --- a/Makefile.am Mon Oct 18 12:36:39 2010 -0400 +++ b/Makefile.am Wed Nov 10 16:30:08 2010 +0000 @@ -11,13 +11,13 @@ CACAO_URL = $(CACAO_BASE_URL)/hg/cacao/a CACAO_URL = $(CACAO_BASE_URL)/hg/cacao/archive/$(CACAO_VERSION).tar.bz2 CACAO_SRC_ZIP = cacao-$(CACAO_VERSION).tar.bz2 -JAXWS_DROP_URL = https://jax-ws.dev.java.net/files/documents/4202/150724 +JAXWS_DROP_URL = http://icedtea.classpath.org/download/drops JAXWS_DROP_ZIP = jdk6-jaxws-b20.zip JAXWS_DROP_SHA256SUM = 0c460583898b968a58bf88eb53f90a0e34369e2562d65fb3a143512dfcaeb3eb -JAF_DROP_URL = https://jax-ws.dev.java.net/files/documents/4202/150725 +JAF_DROP_URL = http://icedtea.classpath.org/download/drops JAF_DROP_ZIP = jdk6-jaf-b20.zip JAF_DROP_SHA256SUM = 78c7b5c9d6271e88ee46abadd018a61f1e9645f8936cc8df1617e5f4f5074012 -JAXP_DROP_URL = https://jaxp.dev.java.net/files/documents/913/150648 +JAXP_DROP_URL = http://icedtea.classpath.org/download/drops JAXP_DROP_ZIP = jdk6-jaxp-b20.zip JAXP_DROP_SHA256SUM = d097627d4059d488c5a09d4e33cec275a193d4d8bc0fea8ef4f1337170904156 @@ -41,6 +41,7 @@ SERVER_DIR = hotspot/import/jre/lib/$(IN SERVER_DIR = hotspot/import/jre/lib/$(INSTALL_ARCH_DIR)/server BUILD_JRE_ARCH_DIR = $(BUILD_OUTPUT_DIR)/j2sdk-image/jre/lib/$(INSTALL_ARCH_DIR) BUILD_DEBUG_JRE_ARCH_DIR = $(DEBUG_BUILD_OUTPUT_DIR)/j2sdk-image/jre/lib/$(INSTALL_ARCH_DIR) +FONTCONFIG_PATH = openjdk/jdk/src/solaris/classes/sun/awt/fontconfigs # Source directories @@ -312,10 +313,17 @@ ICEDTEA_PATCHES = \ patches/openjdk/6650759-missing_inference.patch \ patches/numa_on_early_glibc.patch \ patches/openjdk/6853592-badwindow-warning-fix.patch \ - patches/6703377-freetypescaler.patch + patches/6703377-freetypescaler.patch \ + patches/openjdk/6622432-bigdecimal_performance.patch \ + patches/openjdk/6850606-bigdecimal_regression.patch \ + patches/openjdk/6876282-bigdecimal_divide.patch \ + patches/f14-fonts.patch - -if !WITH_ALT_HSBUILD +if WITH_ALT_HSBUILD +ICEDTEA_PATCHES += \ + patches/openjdk/6994130-ppc_fix.patch \ + patches/disable-default-compoops.patch +else ICEDTEA_PATCHES += \ patches/shark_do_nothing_on_stub_frame.patch \ patches/icedtea-shark-build-hotspot.patch \ @@ -884,8 +892,10 @@ if WITH_ALT_HSBUILD if test -e ${HOTSPOT_SRC_ZIP} ; \ then \ $(TAR) xf $(HOTSPOT_SRC_ZIP) ; \ - chmod -R ug+w master-* ; \ - mv master-$$($(AWK) 'version==$$1 {print $$3}' version=$(HSBUILD) \ + dir=$$($(AWK) 'version==$$1 {print gensub(/.*\/([^/]*)$$/,"\\1","g",$$2)}' \ + version=hs19 $(abs_top_srcdir)/hotspot.map) ; \ + chmod -R ug+w $$dir-* ; \ + mv $$dir-$$($(AWK) 'version==$$1 {print $$3}' version=$(HSBUILD) \ $(abs_top_srcdir)/hotspot.map) openjdk/hotspot ; \ fi ; \ fi ; @@ -957,7 +967,15 @@ clean-generated: fi rm -f stamps/generated.stamp -stamps/patch-fsg.stamp: stamps/generated.stamp +stamps/fonts.stamp: stamps/generated.stamp + cp $(FONTCONFIG_PATH)/linux.fontconfig.Fedora.properties $(FONTCONFIG_PATH)/linux.fontconfig.Fedora.9.properties + cp $(FONTCONFIG_PATH)/linux.fontconfig.Fedora.properties $(FONTCONFIG_PATH)/linux.fontconfig.Fedora.10.properties + cp $(FONTCONFIG_PATH)/linux.fontconfig.Fedora.properties $(FONTCONFIG_PATH)/linux.fontconfig.Fedora.11.properties + cp $(FONTCONFIG_PATH)/linux.fontconfig.Fedora.properties $(FONTCONFIG_PATH)/linux.fontconfig.Fedora.12.properties + mkdir -p stamps + touch stamps/fonts.stamp + +stamps/patch-fsg.stamp: stamps/fonts.stamp mkdir -p stamps ; \ rm -f stamps/patch-fsg.stamp.tmp ; \ touch stamps/patch-fsg.stamp.tmp ; \ diff -r 69b7e0c0a5c3 -r 17c34c4c6fae NEWS --- a/NEWS Mon Oct 18 12:36:39 2010 -0400 +++ b/NEWS Wed Nov 10 16:30:08 2010 +0000 @@ -7,6 +7,11 @@ GX - http://bugs.gentoo.org/show_bug.cg GX - http://bugs.gentoo.org/show_bug.cgi?id=X CVE-XXXX-YYYY: http://www.cve.mitre.org/cgi-bin/cvename.cgi?name=XXXX-YYYY + +New in release 1.9.2 (2010-11-XX): + +* Backports + - S6991430, PR579: Zero PowerPC fix. New in release 1.9.1 (2010-10-13): diff -r 69b7e0c0a5c3 -r 17c34c4c6fae hotspot.map --- a/hotspot.map Mon Oct 18 12:36:39 2010 -0400 +++ b/hotspot.map Wed Nov 10 16:30:08 2010 +0000 @@ -1,2 +1,3 @@ # version url changeset md5sum -hs19 http://hg.openjdk.java.net/hsx/hsx19/master 0803c0f69b51 f174d20d004c5e1ad08929895dbee21c +hs19 http://hg.openjdk.java.net/hsx/hsx19/master 13edc857b967 3171888f17698d8e9348f8b3e813d20d + diff -r 69b7e0c0a5c3 -r 17c34c4c6fae patches/disable-default-compoops.patch --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/patches/disable-default-compoops.patch Wed Nov 10 16:30:08 2010 +0000 @@ -0,0 +1,12 @@ +--- openjdk.orig/hotspot/src/share/vm/runtime/arguments.cpp 2010-11-08 23:50:59.000000000 -0500 ++++ openjdk/hotspot/src/share/vm/runtime/arguments.cpp 2010-11-08 23:52:53.000000000 -0500 +@@ -1301,7 +1301,8 @@ void Arguments::set_ergonomics_flags() { + if (MaxHeapSize <= max_heap_for_compressed_oops()) { + #ifndef COMPILER1 + if (FLAG_IS_DEFAULT(UseCompressedOops) && !UseG1GC) { +- FLAG_SET_ERGO(bool, UseCompressedOops, true); ++ // Temporarily fix rhbz#647737 -- disable compressed oops by default ++ //FLAG_SET_ERGO(bool, UseCompressedOops, true); + } + #endif + #ifdef _WIN64 diff -r 69b7e0c0a5c3 -r 17c34c4c6fae patches/f14-fonts.patch --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/patches/f14-fonts.patch Wed Nov 10 16:30:08 2010 +0000 @@ -0,0 +1,677 @@ +--- openjdk/jdk/make/sun/awt/Makefile 2010-11-04 09:52:49.583434000 +0100 ++++ openjdk/jdk/make/sun/awt/Makefile 2010-11-04 16:50:14.091688769 +0100 +@@ -387,6 +387,10 @@ + fontconfig.SuSE.properties \ + fontconfig.Ubuntu.properties \ + fontconfig.Fedora.properties \ ++ fontconfig.Fedora.9.properties \ ++ fontconfig.Fedora.10.properties \ ++ fontconfig.Fedora.11.properties \ ++ fontconfig.Fedora.12.properties \ + fontconfig.RedHat.6.0.properties \ + fontconfig.Gentoo.properties + else + +--- openjdk/jdk/src/solaris/classes/sun/awt/fontconfigs/linux.fontconfig.Fedora.11.properties 2010-11-04 11:06:26.695428114 +0100 ++++ openjdk/jdk/src/solaris/classes/sun/awt/fontconfigs/linux.fontconfig.Fedora.11.properties 2010-11-04 11:19:45.133587953 +0100 +@@ -35,6 +35,8 @@ + dialog.plain.korean=Baekmuk Gulim + dialog.plain.chinese-big5=AR PL ShanHeiSun Uni + dialog.plain.chinese-gb18030=AR PL ShanHeiSun Uni ++dialog.plain.assamese=Lohit Assamese ++dialog.plain.devanagari=Lohit Devanagari + dialog.plain.bengali=Lohit Bengali + dialog.plain.gujarati=Lohit Gujarati + dialog.plain.hindi=Lohit Hindi +@@ -50,6 +52,8 @@ + dialog.bold.korean=Baekmuk Gulim + dialog.bold.chinese-big5=AR PL ShanHeiSun Uni + dialog.bold.chinese-gb18030=AR PL ShanHeiSun Uni ++dialog.bold.assamese=Lohit Assamese ++dialog.bold.devanagari=Lohit Devanagari + dialog.bold.bengali=Lohit Bengali + dialog.bold.gujarati=Lohit Gujarati + dialog.bold.hindi=Lohit Hindi +@@ -65,6 +69,8 @@ + dialog.italic.korean=Baekmuk Gulim + dialog.italic.chinese-big5=AR PL ShanHeiSun Uni + dialog.italic.chinese-gb18030=AR PL ShanHeiSun Uni ++dialog.italic.assamese=Lohit Assamese ++dialog.italic.devanagari=Lohit Devanagari + dialog.italic.bengali=Lohit Bengali + dialog.italic.gujarati=Lohit Gujarati + dialog.italic.hindi=Lohit Hindi +@@ -80,6 +86,8 @@ + dialog.bolditalic.korean=Baekmuk Gulim + dialog.bolditalic.chinese-big5=AR PL ShanHeiSun Uni + dialog.bolditalic.chinese-gb18030=AR PL ShanHeiSun Uni ++dialog.bolditalic.assamese=Lohit Assamese ++dialog.bolditalic.devanagari=Lohit Devanagari + dialog.bolditalic.bengali=Lohit Bengali + dialog.bolditalic.gujarati=Lohit Gujarati + dialog.bolditalic.hindi=Lohit Hindi +@@ -95,6 +103,8 @@ + sansserif.plain.korean=Baekmuk Gulim + sansserif.plain.chinese-big5=AR PL ShanHeiSun Uni + sansserif.plain.chinese-gb18030=AR PL ShanHeiSun Uni ++sansserif.plain.assamese=Lohit Assamese ++sansserif.plain.devanagari=Lohit Devanagari + sansserif.plain.bengali=Lohit Bengali + sansserif.plain.gujarati=Lohit Gujarati + sansserif.plain.hindi=Lohit Hindi +@@ -110,6 +120,8 @@ + sansserif.bold.korean=Baekmuk Gulim + sansserif.bold.chinese-big5=AR PL ShanHeiSun Uni + sansserif.bold.chinese-gb18030=AR PL ShanHeiSun Uni ++sansserif.bold.assamese=Lohit Assamese ++sansserif.bold.devanagari=Lohit Devanagari + sansserif.bold.bengali=Lohit Bengali + sansserif.bold.gujarati=Lohit Gujarati + sansserif.bold.hindi=Lohit Hindi +@@ -125,6 +137,8 @@ + sansserif.italic.korean=Baekmuk Gulim + sansserif.italic.chinese-big5=AR PL ShanHeiSun Uni + sansserif.italic.chinese-gb18030=AR PL ShanHeiSun Uni ++sansserif.italic.assamese=Lohit Assamese ++sansserif.italic.devanagari=Lohit Devanagari + sansserif.italic.bengali=Lohit Bengali + sansserif.italic.gujarati=Lohit Gujarati + sansserif.italic.hindi=Lohit Hindi +@@ -140,6 +154,8 @@ + sansserif.bolditalic.korean=Baekmuk Gulim + sansserif.bolditalic.chinese-big5=AR PL ShanHeiSun Uni + sansserif.bolditalic.chinese-gb18030=AR PL ShanHeiSun Uni ++sansserif.bolditalic.assamese=Lohit Assamese ++sansserif.bolditalic.devanagari=Lohit Devanagari + sansserif.bolditalic.bengali=Lohit Bengali + sansserif.bolditalic.gujarati=Lohit Gujarati + sansserif.bolditalic.hindi=Lohit Hindi +@@ -155,6 +171,8 @@ + serif.plain.korean=Baekmuk Batang + serif.plain.chinese-big5=AR PL ZenKai Uni + serif.plain.chinese-gb18030=AR PL ZenKai Uni ++serif.plain.assamese=Lohit Assamese ++serif.plain.devanagari=Lohit Devanagari + serif.plain.bengali=Lohit Bengali + serif.plain.gujarati=Lohit Gujarati + serif.plain.hindi=Lohit Hindi +@@ -170,6 +188,8 @@ + serif.bold.korean=Baekmuk Batang + serif.bold.chinese-big5=AR PL ZenKai Uni + serif.bold.chinese-gb18030=AR PL ZenKai Uni ++serif.bold.assamese=Lohit Assamese ++serif.bold.devanagari=Lohit Devanagari + serif.bold.bengali=Lohit Bengali + serif.bold.gujarati=Lohit Gujarati + serif.bold.hindi=Lohit Hindi +@@ -185,6 +205,8 @@ + serif.italic.korean=Baekmuk Batang + serif.italic.chinese-big5=AR PL ZenKai Uni + serif.italic.chinese-gb18030=AR PL ZenKai Uni ++serif.italic.assamese=Lohit Assamese ++serif.italic.devanagari=Lohit Devanagari + serif.italic.bengali=Lohit Bengali + serif.italic.gujarati=Lohit Gujarati + serif.italic.hindi=Lohit Hindi +@@ -200,6 +222,8 @@ + serif.bolditalic.korean=Baekmuk Batang + serif.bolditalic.chinese-big5=AR PL ZenKai Uni + serif.bolditalic.chinese-gb18030=AR PL ZenKai Uni ++serif.bolditalic.assamese=Lohit Assamese ++serif.bolditalic.devanagari=Lohit Devanagari + serif.bolditalic.bengali=Lohit Bengali + serif.bolditalic.gujarati=Lohit Gujarati + serif.bolditalic.hindi=Lohit Hindi +@@ -215,6 +239,8 @@ + monospaced.plain.korean=Baekmuk Gulim + monospaced.plain.chinese-big5=AR PL ShanHeiSun Uni + monospaced.plain.chinese-gb18030=AR PL ShanHeiSun Uni ++monospaced.plain.assamese=Lohit Assamese ++monospaced.plain.devanagari=Lohit Devanagari + monospaced.plain.bengali=Lohit Bengali + monospaced.plain.gujarati=Lohit Gujarati + monospaced.plain.hindi=Lohit Hindi +@@ -230,6 +256,8 @@ + monospaced.bold.korean=Baekmuk Gulim + monospaced.bold.chinese-big5=AR PL ShanHeiSun Uni + monospaced.bold.chinese-gb18030=AR PL ShanHeiSun Uni ++monospaced.bold.assamese=Lohit Assamese ++monospaced.bold.devanagari=Lohit Devanagari + monospaced.bold.bengali=Lohit Bengali + monospaced.bold.gujarati=Lohit Gujarati + monospaced.bold.hindi=Lohit Hindi +@@ -245,6 +273,8 @@ + monospaced.italic.korean=Baekmuk Gulim + monospaced.italic.chinese-big5=AR PL ShanHeiSun Uni + monospaced.italic.chinese-gb18030=AR PL ShanHeiSun Uni ++monospaced.italic.assamese=Lohit Assamese ++monospaced.italic.devanagari=Lohit Devanagari + monospaced.italic.bengali=Lohit Bengali + monospaced.italic.gujarati=Lohit Gujarati + monospaced.italic.hindi=Lohit Hindi +@@ -260,6 +290,8 @@ + monospaced.bolditalic.korean=Baekmuk Gulim + monospaced.bolditalic.chinese-big5=AR PL ShanHeiSun Uni + monospaced.bolditalic.chinese-gb18030=AR PL ShanHeiSun Uni ++monospaced.bolditalic.assamese=Lohit Assamese ++monospaced.bolditalic.devanagari=Lohit Devanagari + monospaced.bolditalic.bengali=Lohit Bengali + monospaced.bolditalic.gujarati=Lohit Gujarati + monospaced.bolditalic.hindi=Lohit Hindi +@@ -275,6 +307,8 @@ + dialoginput.plain.korean=Baekmuk Gulim + dialoginput.plain.chinese-big5=AR PL ShanHeiSun Uni + dialoginput.plain.chinese-gb18030=AR PL ShanHeiSun Uni ++dialoginput.plain.assamese=Lohit Assamese ++dialoginput.plain.devanagari=Lohit Devanagari + dialoginput.plain.bengali=Lohit Bengali + dialoginput.plain.gujarati=Lohit Gujarati + dialoginput.plain.hindi=Lohit Hindi +@@ -290,6 +324,8 @@ + dialoginput.bold.korean=Baekmuk Gulim + dialoginput.bold.chinese-big5=AR PL ShanHeiSun Uni + dialoginput.bold.chinese-gb18030=AR PL ShanHeiSun Uni ++dialoginput.bold.assamese=Lohit Assamese ++dialoginput.bold.devanagari=Lohit Devanagari + dialoginput.bold.bengali=Lohit Bengali + dialoginput.bold.gujarati=Lohit Gujarati + dialoginput.bold.hindi=Lohit Hindi +@@ -305,6 +341,8 @@ + dialoginput.italic.korean=Baekmuk Gulim + dialoginput.italic.chinese-big5=AR PL ShanHeiSun Uni + dialoginput.italic.chinese-gb18030=AR PL ShanHeiSun Uni ++dialoginput.italic.assamese=Lohit Assamese ++dialoginput.italic.devanagari=Lohit Devanagari + dialoginput.italic.bengali=Lohit Bengali + dialoginput.italic.gujarati=Lohit Gujarati + dialoginput.italic.hindi=Lohit Hindi +@@ -320,6 +358,8 @@ + dialoginput.bolditalic.korean=Baekmuk Gulim + dialoginput.bolditalic.chinese-big5=AR PL ShanHeiSun Uni + dialoginput.bolditalic.chinese-gb18030=AR PL ShanHeiSun Uni ++dialoginput.bolditalic.assamese=Lohit Assamese ++dialoginput.bolditalic.devanagari=Lohit Devanagari + dialoginput.bolditalic.bengali=Lohit Bengali + dialoginput.bolditalic.gujarati=Lohit Gujarati + dialoginput.bolditalic.hindi=Lohit Hindi +@@ -356,21 +396,24 @@ + filename.DejaVu_Serif_Oblique=/usr/share/fonts/dejavu/DejaVuSerif-Oblique.ttf + filename.DejaVu_Serif_Bold_Oblique=/usr/share/fonts/dejavu/DejaVuSerif-BoldOblique.ttf + +-filename.Sazanami_Gothic=/usr/share/fonts/sazanami-fonts-gothic/sazanami-gothic.ttf +-filename.Sazanami_Mincho=/usr/share/fonts/sazanami-fonts-mincho/sazanami-mincho.ttf ++filename.Sazanami_Gothic=/usr/share/fonts/sazanami/gothic/sazanami-gothic.ttf ++filename.Sazanami_Mincho=/usr/share/fonts/sazanami/mincho/sazanami-mincho.ttf + filename.AR_PL_ShanHeiSun_Uni=/usr/share/fonts/cjkunifonts-uming/uming.ttc + filename.AR_PL_ZenKai_Uni=/usr/share/fonts/cjkunifonts-ukai/ukai.ttc +-filename.Baekmuk_Gulim=/usr/share/fonts/baekmuk-ttf-gulim/gulim.ttf +-filename.Baekmuk_Batang=/usr/share/fonts/baekmuk-ttf-batang/batang.ttf ++filename.Baekmuk_Gulim=/usr/share/fonts/baekmuk-ttf/gulim.ttf ++filename.Baekmuk_Batang=/usr/share/fonts/baekmuk-ttf/batang.ttf ++ ++filename.Lohit_Assamese=/usr/share/fonts/lohit-assamese/Lohit-Assamese.ttf ++filename.Lohit_Devanagari=/usr/share/fonts/lohit-devanagari/Lohit-Devanagari.ttf ++filename.Lohit_Bengali=/usr/share/fonts/lohit-bengali/Lohit-Bengali.ttf ++filename.Lohit_Gujarati=/usr/share/fonts/lohit-gujarati/Lohit-Gujarati.ttf ++filename.Lohit_Hindi=/usr/share/fonts/lohit-hindi/Lohit-Hindi.ttf ++filename.Lohit_Kannda=/usr/share/fonts/lohit-kannada/Lohit-Kannada.ttf ++filename.Lohit_Malayalam=/usr/share/fonts/lohit-malayalam/Lohit-Malayalam.ttf ++filename.Lohit_Oriya=/usr/share/fonts/lohit-oriya/Lohit-Oriya.ttf ++filename.Lohit_Punjabi=/usr/share/fonts/lohit-punjabi/Lohit-Punjabi.ttf ++filename.Lohit_Tamil=/usr/share/fonts/lohit-tamil/Lohit-Tamil.ttf ++filename.Lohit_Telugu=/usr/share/fonts/lohit-telugu/Lohit-Telugu.ttf + +-filename.Lohit_Bengali=/usr/share/fonts/lohit-bengali/lohit_bn.ttf +-filename.Lohit_Gujarati=/usr/share/fonts/lohit-gujarati/lohit_gu.ttf +-filename.Lohit_Hindi=/usr/share/fonts/lohit-hindi/lohit_hi.ttf +-filename.Lohit_Kannda=/usr/share/fonts/lohit-kannada/lohit_kn.ttf +-filename.Lohit_Malayalam=/usr/share/fonts/lohit-malayalam/lohit_ml.ttf +-filename.Lohit_Oriya=/usr/share/fonts/lohit-oriya/lohit_or.ttf +-filename.Lohit_Punjabi=/usr/share/fonts/lohit-punjabi/lohit_pa.ttf +-filename.Lohit_Tamil=/usr/share/fonts/lohit-tamil/lohit_ta.ttf +-filename.Lohit_Telugu=/usr/share/fonts/lohit-telugu/lohit_te.ttf + filename.LKLUG=/usr/share/fonts/lklug/lklug.ttf + + +--- openjdk/jdk/src/solaris/classes/sun/awt/fontconfigs/linux.fontconfig.Fedora.12.properties 2010-11-04 11:06:26.695428114 +0100 ++++ openjdk/jdk/src/solaris/classes/sun/awt/fontconfigs/linux.fontconfig.Fedora.12.properties 2010-11-04 11:19:45.133587953 +0100 +@@ -35,6 +35,8 @@ + dialog.plain.korean=Baekmuk Gulim + dialog.plain.chinese-big5=AR PL ShanHeiSun Uni + dialog.plain.chinese-gb18030=AR PL ShanHeiSun Uni ++dialog.plain.assamese=Lohit Assamese ++dialog.plain.devanagari=Lohit Devanagari + dialog.plain.bengali=Lohit Bengali + dialog.plain.gujarati=Lohit Gujarati + dialog.plain.hindi=Lohit Hindi +@@ -50,6 +52,8 @@ + dialog.bold.korean=Baekmuk Gulim + dialog.bold.chinese-big5=AR PL ShanHeiSun Uni + dialog.bold.chinese-gb18030=AR PL ShanHeiSun Uni ++dialog.bold.assamese=Lohit Assamese ++dialog.bold.devanagari=Lohit Devanagari + dialog.bold.bengali=Lohit Bengali + dialog.bold.gujarati=Lohit Gujarati + dialog.bold.hindi=Lohit Hindi +@@ -65,6 +69,8 @@ + dialog.italic.korean=Baekmuk Gulim + dialog.italic.chinese-big5=AR PL ShanHeiSun Uni + dialog.italic.chinese-gb18030=AR PL ShanHeiSun Uni ++dialog.italic.assamese=Lohit Assamese ++dialog.italic.devanagari=Lohit Devanagari + dialog.italic.bengali=Lohit Bengali + dialog.italic.gujarati=Lohit Gujarati + dialog.italic.hindi=Lohit Hindi +@@ -80,6 +86,8 @@ + dialog.bolditalic.korean=Baekmuk Gulim + dialog.bolditalic.chinese-big5=AR PL ShanHeiSun Uni + dialog.bolditalic.chinese-gb18030=AR PL ShanHeiSun Uni ++dialog.bolditalic.assamese=Lohit Assamese ++dialog.bolditalic.devanagari=Lohit Devanagari + dialog.bolditalic.bengali=Lohit Bengali + dialog.bolditalic.gujarati=Lohit Gujarati + dialog.bolditalic.hindi=Lohit Hindi +@@ -95,6 +103,8 @@ + sansserif.plain.korean=Baekmuk Gulim + sansserif.plain.chinese-big5=AR PL ShanHeiSun Uni + sansserif.plain.chinese-gb18030=AR PL ShanHeiSun Uni ++sansserif.plain.assamese=Lohit Assamese ++sansserif.plain.devanagari=Lohit Devanagari + sansserif.plain.bengali=Lohit Bengali + sansserif.plain.gujarati=Lohit Gujarati + sansserif.plain.hindi=Lohit Hindi +@@ -110,6 +120,8 @@ + sansserif.bold.korean=Baekmuk Gulim + sansserif.bold.chinese-big5=AR PL ShanHeiSun Uni + sansserif.bold.chinese-gb18030=AR PL ShanHeiSun Uni ++sansserif.bold.assamese=Lohit Assamese ++sansserif.bold.devanagari=Lohit Devanagari + sansserif.bold.bengali=Lohit Bengali + sansserif.bold.gujarati=Lohit Gujarati + sansserif.bold.hindi=Lohit Hindi +@@ -125,6 +137,8 @@ + sansserif.italic.korean=Baekmuk Gulim + sansserif.italic.chinese-big5=AR PL ShanHeiSun Uni + sansserif.italic.chinese-gb18030=AR PL ShanHeiSun Uni ++sansserif.italic.assamese=Lohit Assamese ++sansserif.italic.devanagari=Lohit Devanagari From omajid at redhat.com Wed Nov 10 14:26:03 2010 From: omajid at redhat.com (Omair Majid) Date: Wed, 10 Nov 2010 17:26:03 -0500 Subject: [icedtea-web] RFC: integrate support for multiple KeyStores into the various validators Message-ID: <4CDB1BFB.5030704@redhat.com> Hi, The attached patch makes the various parts of netx that determine which certificates are trusted use the multiple keystores are that are now available. The patch modifies VariableX509TrustManager, HTTPSCertVerfier, and JarSigner to use these certificate stores. The KeyTool class is almost completely unused after this patch. I would like to remove it at some point in the future. ChangeLog: 2010-11-09 Omair Majid * netx/net/sourceforge/jnlp/runtime/Boot.java (main): Move trust manager initialization code into JNLPRuntime.initialize. * plugin/icedteanp/java/sun/applet/PluginMain.java (init): Likewise. * netx/net/sourceforge/jnlp/runtime/JNLPRuntime.java (initialize): Set the default SSL TrustManager here. * netx/net/sourceforge/jnlp/security/CertWarningPane.java (CheckBoxListener.actionPerformed): Add this certificate into user's trusted certificate store. * netx/net/sourceforge/jnlp/tools/KeyTool.java (addToKeyStore(File,KeyStore)): Move to CertificateUtils. (addToKeyStore(X509Certificate,KeyStore)): Likewise. (dumpCert): Likewise. * netx/net/sourceforge/jnlp/security/CertificateUtils.java: New class. (addToKeyStore(File,KeyStore)): Moved from KeyTool. (addToKeyStore(X509Certificate,KeyStore)): Likewise. (dumpCert): Likewise. (inKeyStores): New method. * netx/net/sourceforge/jnlp/security/HttpsCertVerifier.java (getRootInCacerts): Check all available CA store to check if root is in CA certificates. * netx/net/sourceforge/jnlp/security/KeyStores.java (getClientKeyStores): New method. * netx/net/sourceforge/jnlp/security/VariableX509TrustManager.java (VariableX509TrustManager): Initialize multiple CA, certificate and client trust managers. (checkClientTrusted): Check all the client TrustManagers if certificate is trusted. (checkAllManagers): Check multiple CA certificates and trusted certificates to determine if the certificate chain can be trusted. (isExplicitlyTrusted): Check with multiple TrustManagers. (getAcceptedIssuers): Gather results from multiple TrustManagers. * netx/net/sourceforge/jnlp/security/viewer/CertificatePane.java (ImportButtonListener): Use CertificateUtils instead of KeyTool. * netx/net/sourceforge/jnlp/tools/JarSigner.java (checkTrustedCerts): Use multiple key stores to check if certificate is directly trusted and if the root is trusted. Any thoughts or comments? Cheers, Omair -------------- next part -------------- A non-text attachment was scrubbed... Name: icedtea-web-variablex509trustmanager-mutilple-keystores-02.patch Type: text/x-patch Size: 31711 bytes Desc: not available Url : http://mail.openjdk.java.net/pipermail/distro-pkg-dev/attachments/20101110/c3401d93/icedtea-web-variablex509trustmanager-mutilple-keystores-02.patch From omajid at redhat.com Wed Nov 10 14:51:11 2010 From: omajid at redhat.com (Omair Majid) Date: Wed, 10 Nov 2010 17:51:11 -0500 Subject: [icedtea-web] RFC: add configuration support for user prompts (and other access control options) In-Reply-To: <20101110210220.GB8213@redhat.com> References: <4CD4355C.6050000@redhat.com> <20101110210220.GB8213@redhat.com> Message-ID: <4CDB21DF.5030805@redhat.com> Hi Deepak, Thanks for reviewing the patch. I have attached an updated version. On 11/10/2010 04:02 PM, Deepak Bhole wrote: > * Omair Majid [2010-11-05 15:14]: >> Hi, >> >> The attached patch adds support in netx for part of the 'security >> access and control' set of configuration options. The patch allows >> disabling user prompts for security warnings and denying >> permissions, as well as not installing custom authenticator and not >> granting permissions to hide window warnings. >> >> ChangeLog >> 2010-11-05 Omair Majid >> >> * netx/net/sourceforge/jnlp/SecurityDesc.java: Remove window banner >> permissions from sandboxPermissions and j2eePermissions. >> (getSandBoxPermissions): Dynamically add window banner permissions >> if allowed by configuration. >> * netx/net/sourceforge/jnlp/runtime/DeploymentConfiguration.java: >> Add KEY_SECURITY_PROMPT_USER, >> KEY_SECURITY_ALLOW_HIDE_WINDOW_WARNING, >> KEY_SECURITY_PROMPT_USER_FOR_JNLP, and >> KEY_SECURITY_INSTALL_AUTHENTICATOR. >> (loadDefaultProperties): Use the new constants. >> * netx/net/sourceforge/jnlp/security/SecurityWarning.java >> (showAccessWarningDialog): Check if the user should be prompted >> before prompting the user. >> (showNotAllSignedWarningDialog): Likewise. >> (showCertWarningDialog): Likewise. >> (showAppletWarning): Likewise. >> (shouldPromptUser): New method. Check if configuration allows >> showing user prompts. >> * netx/net/sourceforge/jnlp/services/ServiceUtil.java >> (checkAccess(AccessType,Object...)): Clarify javadocs. >> (checkAccess(ApplicationInstance,AccessType,Object...)): Clarify >> javadocs. Only prompt the user if showing JNLP prompts is ok. >> (shouldPromptUser): New method. Returns true if configuration allows >> for showing JNLP api prompts. >> * plugin/icedteanp/java/sun/applet/PluginMain.java >> (init): Only install custom authenticator if allowed by >> configuration. >> >> Any thoughts or comments? >> >> Thanks, >> Omair > >> diff -r 8e66d9386273 netx/net/sourceforge/jnlp/SecurityDesc.java >> --- a/netx/net/sourceforge/jnlp/SecurityDesc.java Thu Nov 04 16:44:27 2010 -0700 >> +++ b/netx/net/sourceforge/jnlp/SecurityDesc.java Fri Nov 05 12:23:29 2010 -0400 >> @@ -23,6 +23,9 @@ >> import java.security.*; >> import java.awt.AWTPermission; >> >> +import net.sourceforge.jnlp.runtime.DeploymentConfiguration; >> +import net.sourceforge.jnlp.runtime.JNLPRuntime; >> + >> /** >> * The security element. >> * >> @@ -67,7 +70,6 @@ >> // queues, or even prevent access to security dialog queues. >> // >> // new AWTPermission("accessEventQueue"), >> - new AWTPermission("showWindowWithoutWarningBanner"), >> new RuntimePermission("exitVM"), >> new RuntimePermission("loadLibrary"), >> new RuntimePermission("queuePrintJob"), >> @@ -105,7 +107,6 @@ >> new PropertyPermission("javaws.*", "read,write"), >> new RuntimePermission("exitVM"), >> new RuntimePermission("stopThread"), >> - new AWTPermission("showWindowWithoutWarningBanner"), >> // disabled because we can't at this time prevent an >> // application from accessing other applications' event >> // queues, or even prevent access to security dialog queues. >> @@ -187,6 +188,11 @@ >> for (int i=0; i< sandboxPermissions.length; i++) >> permissions.add(sandboxPermissions[i]); >> >> + String key = DeploymentConfiguration.KEY_SECURITY_ALLOW_HIDE_WINDOW_WARNING; >> + if (Boolean.valueOf(JNLPRuntime.getConfiguration().getProperty(key)) == Boolean.TRUE) { >> + permissions.add(new AWTPermission("showWindowWithoutWarningBanner")); >> + } >> + >> if (file.isApplication()) >> for (int i=0; i< jnlpRIAPermissions.length; i++) >> permissions.add(jnlpRIAPermissions[i]); >> diff -r 8e66d9386273 netx/net/sourceforge/jnlp/runtime/DeploymentConfiguration.java >> --- a/netx/net/sourceforge/jnlp/runtime/DeploymentConfiguration.java Thu Nov 04 16:44:27 2010 -0700 >> +++ b/netx/net/sourceforge/jnlp/runtime/DeploymentConfiguration.java Fri Nov 05 12:23:29 2010 -0400 >> @@ -17,6 +17,7 @@ >> >> package net.sourceforge.jnlp.runtime; >> >> +import java.awt.AWTPermission; >> import java.io.BufferedOutputStream; >> import java.io.BufferedReader; >> import java.io.File; >> @@ -142,6 +143,15 @@ >> */ >> public static final String KEY_USER_NETX_RUNNING_FILE = "deployment.user.runningfile"; >> >> + /** Boolean. Only show security prompts to user if true */ >> + public static final String KEY_SECURITY_PROMPT_USER = "deployment.security.askgrantdialog.show"; >> + /** Boolean. Only give AWTPermission("showWindowWithoutWarningBanner") if true */ >> + public static final String KEY_SECURITY_ALLOW_HIDE_WINDOW_WARNING = "deployment.security.sandbox.awtwarningwindow"; >> + /** Boolean. Only prompt user for granting any JNLP permissions if true */ >> + public static final String KEY_SECURITY_PROMPT_USER_FOR_JNLP = "deployment.security.sandbox.jnlp.enhanced"; >> + /** Boolean. Only install the custom authenticator if true */ >> + public static final String KEY_SECURITY_INSTALL_AUTHENTICATOR = "deployment.security.authenticator"; >> + > > Minor nitpick.. can you please add spaces between each of the > common/decl. combo above? Would make it a bit easier to read in viewers > that don't highlight.. > Sure. Does the code in the updated patch look ok? >> public enum ConfigType { >> System, User >> } >> @@ -327,15 +337,15 @@ >> { "deployment.system.security.trusted.jssecerts", SYSTEM_SECURITY + File.separator + "trusted.jssecerts" }, >> { "deployment.system.security.trusted.clientautcerts", SYSTEM_SECURITY + File.separator + "trusted.clientcerts" }, >> /* security access and control */ >> - { "deployment.security.askgrantdialog.show", String.valueOf(true) }, >> + { KEY_SECURITY_PROMPT_USER, String.valueOf(true) }, >> { "deployment.security.askgrantdialog.notinca", String.valueOf(true) }, >> { "deployment.security.notinca.warning", String.valueOf(true) }, >> { "deployment.security.expired.warning", String.valueOf(true) }, >> { "deployment.security.jsse.hostmismatch.warning", String.valueOf(true) }, >> { "deployment.security.trusted.policy", null }, >> - { "deployment.security.sandbox.awtwarningwindow", String.valueOf(true) }, >> - { "deployment.security.sandbox.jnlp.enhanced", String.valueOf(true) }, >> - { "deployment.security.authenticator", String.valueOf(true) }, >> + { KEY_SECURITY_ALLOW_HIDE_WINDOW_WARNING, String.valueOf(true) }, >> + { KEY_SECURITY_PROMPT_USER_FOR_JNLP, String.valueOf(true) }, >> + { KEY_SECURITY_INSTALL_AUTHENTICATOR, String.valueOf(true) }, >> /* networking */ >> { "deployment.proxy.type", String.valueOf(PROXY_TYPE_BROWSER) }, >> { "deployment.proxy.same", String.valueOf(false) }, >> diff -r 8e66d9386273 netx/net/sourceforge/jnlp/security/SecurityWarning.java >> --- a/netx/net/sourceforge/jnlp/security/SecurityWarning.java Thu Nov 04 16:44:27 2010 -0700 >> +++ b/netx/net/sourceforge/jnlp/security/SecurityWarning.java Fri Nov 05 12:23:29 2010 -0400 >> @@ -49,6 +49,7 @@ >> import javax.swing.SwingUtilities; >> >> import net.sourceforge.jnlp.JNLPFile; >> +import net.sourceforge.jnlp.runtime.DeploymentConfiguration; >> import net.sourceforge.jnlp.runtime.JNLPRuntime; >> >> /** >> @@ -111,6 +112,11 @@ >> */ >> public static boolean showAccessWarningDialog(final AccessType accessType, >> final JNLPFile file, final Object[] extras) { >> + >> + if (!shouldPromptUser()) { >> + return false; >> + } >> + >> final SecurityDialogMessage message = new SecurityDialogMessage(); >> >> message.dialogType = DialogType.ACCESS_WARNING; >> @@ -140,6 +146,10 @@ >> */ >> public static boolean showNotAllSignedWarningDialog(JNLPFile file) { >> >> + if (!shouldPromptUser()) { >> + return false; >> + } >> + >> final SecurityDialogMessage message = new SecurityDialogMessage(); >> message.dialogType = DialogType.NOTALLSIGNED_WARNING; >> message.accessType = AccessType.NOTALLSIGNED; >> @@ -174,6 +184,10 @@ >> public static boolean showCertWarningDialog(AccessType accessType, >> JNLPFile file, CertVerifier jarSigner) { >> >> + if (!shouldPromptUser()) { >> + return false; >> + } >> + >> final SecurityDialogMessage message = new SecurityDialogMessage(); >> message.dialogType = DialogType.CERT_WARNING; >> message.accessType = accessType; >> @@ -200,6 +214,10 @@ >> */ >> public static int showAppletWarning() { >> >> + if (!shouldPromptUser()) { >> + return 2; >> + } >> + > > That seems like a magic number.. what does 2 represent? > Yes, it does seems like a magic number. showAppletWarning returns an integer; the comment just above the return block describes it: // result 0 = Yes, 1 = No, 2 = Cancel And the method itself returns 2 if selected value is not set. That said, this method is currently unused. I dont know of any place in Netx or the plugin that calls this method. In fact, I would like to remove it at some point (see the FIXME in the javadoc for this method). >> SecurityDialogMessage message = new SecurityDialogMessage(); >> message.dialogType = DialogType.APPLET_WARNING; >> >> @@ -295,4 +313,18 @@ >> return message.userResponse; >> } >> >> + /** >> + * Returns whether the current runtime configuration allows prompting user >> + * for security warnings. >> + * >> + * @return true if security warnings should be shown to the user. >> + */ >> + private static boolean shouldPromptUser() { >> + boolean allowed = Boolean.valueOf(JNLPRuntime.getConfiguration() >> + .getProperty(DeploymentConfiguration.KEY_SECURITY_PROMPT_USER)); >> + >> + return allowed; >> + >> + } >> + > > You can just return Boolean.valueOf(...) instead of creating an > additional var and returning that. > Done. I had some code to print debugging messages between "allowed = ..." and "return allowed;" lines which I eventually removed. The result is the strange-looking code above. Fixed in the updated patch. >> } >> diff -r 8e66d9386273 netx/net/sourceforge/jnlp/services/ServiceUtil.java >> --- a/netx/net/sourceforge/jnlp/services/ServiceUtil.java Thu Nov 04 16:44:27 2010 -0700 >> +++ b/netx/net/sourceforge/jnlp/services/ServiceUtil.java Fri Nov 05 12:23:29 2010 -0400 >> @@ -39,6 +39,7 @@ >> >> import net.sourceforge.jnlp.JNLPFile; >> import net.sourceforge.jnlp.runtime.ApplicationInstance; >> +import net.sourceforge.jnlp.runtime.DeploymentConfiguration; >> import net.sourceforge.jnlp.runtime.JNLPRuntime; >> import net.sourceforge.jnlp.security.SecurityWarning; >> import net.sourceforge.jnlp.security.SecurityWarning.AccessType; >> @@ -208,9 +209,10 @@ >> }; >> >> /** >> - * Returns whether the app requesting a service is signed. If the app is >> - * unsigned, the user is prompted with a dialog asking if the action >> - * should be allowed. >> + * Returns whether the app requesting a JNLP service has the right permissions. >> + * If it doesn't, user is prompted for permissions. This method should only be >> + * used for JNLP API related permissions. >> + * >> * @param type the type of access being requested >> * @param extras extra Strings (usually) that are passed to the dialog for >> * message formatting. >> @@ -221,8 +223,9 @@ >> } >> >> /** >> - * Returns whether the app requesting a service has the right permissions. >> - * If it doesn't, user is prompted for permissions. >> + * Returns whether the app requesting a JNLP service has the right permissions. >> + * If it doesn't, user is prompted for permissions. This method should only be >> + * used for JNLP API related permissions. >> * >> * @param app the application which is requesting the check. If null, the current >> * application is used. >> @@ -265,6 +268,11 @@ >> } >> >> if (!codeTrusted) { >> + >> + if (!shouldPromptUser()) { >> + return false; >> + } >> + >> final AccessType tmpType = type; >> final Object[] tmpExtras = extras; >> final ApplicationInstance tmpApp = app; >> @@ -285,4 +293,17 @@ >> >> return true; //allow >> } >> + >> + /** >> + * Returns whether the current runtime configuration allows prompting the >> + * user for JNLP permissions. >> + * >> + * @return true if the user should be prompted for JNLP API related permissions. >> + */ >> + private static boolean shouldPromptUser() { >> + boolean allowed = Boolean.valueOf(JNLPRuntime.getConfiguration() >> + .getProperty(DeploymentConfiguration.KEY_SECURITY_PROMPT_USER_FOR_JNLP)); >> + return allowed; >> + } >> + >> } > > Same as above.. no need for the 'allowed' var. > Fixed. >> diff -r 8e66d9386273 plugin/icedteanp/java/sun/applet/PluginMain.java >> --- a/plugin/icedteanp/java/sun/applet/PluginMain.java Thu Nov 04 16:44:27 2010 -0700 >> +++ b/plugin/icedteanp/java/sun/applet/PluginMain.java Fri Nov 05 12:23:29 2010 -0400 >> @@ -230,7 +230,11 @@ >> } >> >> // plug in a custom authenticator and proxy selector >> - Authenticator.setDefault(new CustomAuthenticator()); >> + boolean installAuthenticator = Boolean.valueOf(JNLPRuntime.getConfiguration() >> + .getProperty(DeploymentConfiguration.KEY_SECURITY_INSTALL_AUTHENTICATOR)); >> + if (installAuthenticator) { >> + Authenticator.setDefault(new CustomAuthenticator()); >> + } >> ProxySelector.setDefault(new PluginProxySelector()); >> >> CookieManager ckManager = new PluginCookieManager(); > > Rest looks fine to me! > Thanks for the review! Ok to commit the updated patch? Cheers, Omair -------------- next part -------------- A non-text attachment was scrubbed... Name: icedtea-web-integrate-configuration-prompts-02.patch Type: text/x-patch Size: 10734 bytes Desc: not available Url : http://mail.openjdk.java.net/pipermail/distro-pkg-dev/attachments/20101110/1eae89e1/icedtea-web-integrate-configuration-prompts-02.patch From liuqi at icedtea.classpath.org Thu Nov 11 05:03:57 2010 From: liuqi at icedtea.classpath.org (liuqi at icedtea.classpath.org) Date: Thu, 11 Nov 2010 13:03:57 +0000 Subject: /hg/openjdk6-mips: 2 new changesets Message-ID: changeset b7ec29b378c9 in /hg/openjdk6-mips details: http://icedtea.classpath.org/hg/openjdk6-mips?cmd=changeset;node=b7ec29b378c9 author: Ao Qi date: Thu Nov 11 19:59:55 2010 +0800 Update codes to support deoptimization. changeset f4c60f770c45 in /hg/openjdk6-mips details: http://icedtea.classpath.org/hg/openjdk6-mips?cmd=changeset;node=f4c60f770c45 author: Ao Qi date: Thu Nov 11 19:35:44 2010 +0800 Update README and env.sh to remove the binary plugins information. diffstat: 10 files changed, 179 insertions(+), 184 deletions(-) README | 10 env.sh | 1 hotspot/src/cpu/mips/vm/assembler_mips.cpp | 41 +++ hotspot/src/cpu/mips/vm/assembler_mips.hpp | 3 hotspot/src/cpu/mips/vm/c1_LIRAssembler_mips.cpp | 7 hotspot/src/cpu/mips/vm/c1_LIRAssembler_mips.hpp | 2 hotspot/src/cpu/mips/vm/frame_mips.cpp | 25 +- hotspot/src/cpu/mips/vm/sharedRuntime_mips.cpp | 270 ++++++++-------------- hotspot/src/share/vm/runtime/deoptimization.cpp | 2 hotspot/src/share/vm/runtime/sharedRuntime.cpp | 2 diffs (truncated from 639 to 500 lines): diff -r 82bf91673f25 -r f4c60f770c45 README --- a/README Tue Nov 09 13:21:20 2010 +0800 +++ b/README Thu Nov 11 19:35:44 2010 +0800 @@ -17,19 +17,13 @@ Simple Build Instructions: apt-get install openjdk-6-jdk export ALT_BOOTDIR=/usr/lib/jvm/java-6-openjdk - 2. Download Binary Plugs, go to the OpenJDK site and select the "Bundles(6)" link and download - the binaryplugs. The file downloaded is a jar file that must be extracted by running the jar - file with: - java -jar jdk-6-ea-plug-bnn-os-arch-dd_month_year.jar - Set the environment variable ALT_BINARY_PLUGS_PATH to the root of this installation. - - 3. Set other environment variables. If using Debian: + 2. Set other environment variables. If using Debian: source env.sh Check the sanity of doing a build with the current machine: gnumake sanity See README-builds.html if you run into problems. - 4. Do a complete build of the jdk: + 3. Do a complete build of the jdk: gnumake all When building jaxp, it seems a bug that jdk6-jaxp-2009_10_13.zip cannot be downloaded. The workaround is to download it by "wget ", and set ALT_DROPS_DIR to the dir where the zip is: diff -r 82bf91673f25 -r f4c60f770c45 env.sh --- a/env.sh Tue Nov 09 13:21:20 2010 +0800 +++ b/env.sh Thu Nov 11 19:35:44 2010 +0800 @@ -1,7 +1,6 @@ export LANG=C export LANG=C export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/lib/jvm/java-6-openjdk/bin export ALT_BOOTDIR=/usr/lib/jvm/java-6-openjdk -export ALT_BINARY_PLUGS_PATH=~/openjdk-binary-plugs export ARCH_DATA_MODEL=32 unset CLASSPATH diff -r 82bf91673f25 -r f4c60f770c45 hotspot/src/cpu/mips/vm/assembler_mips.cpp --- a/hotspot/src/cpu/mips/vm/assembler_mips.cpp Tue Nov 09 13:21:20 2010 +0800 +++ b/hotspot/src/cpu/mips/vm/assembler_mips.cpp Thu Nov 11 19:35:44 2010 +0800 @@ -1063,7 +1063,9 @@ void MacroAssembler::warn(const char* ms pop_CPU_state(); */ - save_registers(this); + //save_registers(this); + pushad(); + addi(SP, SP, -4); sw(A0, SP, -1 * wordSize); move(A0, (int)msg); addi(SP, SP, -1 * wordSize); @@ -1071,8 +1073,43 @@ void MacroAssembler::warn(const char* ms delayed()->nop(); addi(SP, SP, 1 * wordSize); lw(A0, SP, -1 * wordSize); - restore_registers(this); + addi(SP, SP, 4); + popad(); + //restore_registers(this); } + +#ifndef PRODUCT +//FIXME cannot print sp +void MacroAssembler::print_reg(Register reg) { + pushad(); + push(FP); + char* a = new char[50]; + sprintf(a, "%s: 0x",reg->name()); + move(A0, (int)a); + call(CAST_FROM_FN_PTR(address, SharedRuntime::print_str),relocInfo::runtime_call_type); + delayed()->nop(); + pop(FP); + popad(); + + pushad(); + push(FP); + move(A0, reg); + call(CAST_FROM_FN_PTR(address, SharedRuntime::print_int),relocInfo::runtime_call_type); + delayed()->nop(); + pop(FP); + popad(); + + pushad(); + push(FP); + char* b = new char[50]; + sprintf(b, " pc: %p\n",pc()); + move(A0, (int)b); + call(CAST_FROM_FN_PTR(address, SharedRuntime::print_str),relocInfo::runtime_call_type); + delayed()->nop(); + pop(FP); + popad(); +} +#endif void MacroAssembler::increment(Register reg, int imm) { if (!imm) return; diff -r 82bf91673f25 -r f4c60f770c45 hotspot/src/cpu/mips/vm/assembler_mips.hpp --- a/hotspot/src/cpu/mips/vm/assembler_mips.hpp Tue Nov 09 13:21:20 2010 +0800 +++ b/hotspot/src/cpu/mips/vm/assembler_mips.hpp Thu Nov 11 19:35:44 2010 +0800 @@ -1365,6 +1365,9 @@ static void restore_registers(MacroAssem static void debug32(int rdi, int rsi, int rbp, int rsp, int rbx, int rdx, int rcx, int rax, int eip, char* msg); static void debug64(char* msg, int64_t pc, int64_t regs[]); +#ifndef PRODUCT + void print_reg(Register reg); +#endif //void os_breakpoint(); void untested() { stop("untested"); } diff -r 82bf91673f25 -r f4c60f770c45 hotspot/src/cpu/mips/vm/c1_LIRAssembler_mips.cpp --- a/hotspot/src/cpu/mips/vm/c1_LIRAssembler_mips.cpp Tue Nov 09 13:21:20 2010 +0800 +++ b/hotspot/src/cpu/mips/vm/c1_LIRAssembler_mips.cpp Thu Nov 11 19:35:44 2010 +0800 @@ -433,10 +433,9 @@ void LIR_Assembler::emit_deopt_handler() compilation()->offsets()->set_value(CodeOffsets::Deopt, code_offset()); - InternalAddress here(__ pc()); - //FIXE:: may be wrong, Address_Literal - __ lw(AT, __ as_Address(here) ); - __ push(AT); + __ jmp(SharedRuntime::deopt_blob()->unpack()); + __ delayed()->nop(); + assert(code_offset() - offset <= deopt_handler_size, "overflow"); __ end_a_stub(); diff -r 82bf91673f25 -r f4c60f770c45 hotspot/src/cpu/mips/vm/c1_LIRAssembler_mips.hpp --- a/hotspot/src/cpu/mips/vm/c1_LIRAssembler_mips.hpp Tue Nov 09 13:21:20 2010 +0800 +++ b/hotspot/src/cpu/mips/vm/c1_LIRAssembler_mips.hpp Thu Nov 11 19:35:44 2010 +0800 @@ -51,5 +51,5 @@ public: enum { call_stub_size = NOT_LP64(24) LP64_ONLY(28), exception_handler_size = DEBUG_ONLY(1*K) NOT_DEBUG(175), - deopt_handler_size = NOT_LP64(12) LP64_ONLY(17) + deopt_handler_size = NOT_LP64(16) LP64_ONLY(17) }; diff -r 82bf91673f25 -r f4c60f770c45 hotspot/src/cpu/mips/vm/frame_mips.cpp --- a/hotspot/src/cpu/mips/vm/frame_mips.cpp Tue Nov 09 13:21:20 2010 +0800 +++ b/hotspot/src/cpu/mips/vm/frame_mips.cpp Thu Nov 11 19:35:44 2010 +0800 @@ -82,7 +82,30 @@ void frame::patch_pc(Thread* thread, add if (TracePcPatching) { tty->print_cr("patch_pc at address 0x%x [0x%x -> 0x%x] ", &((address *)_sp)[-1], ((address *)_sp)[-1], pc); } - ((address *)_sp)[-1] = _pc = pc; + + RegisterMap map((JavaThread *)thread, false); + frame check = ((JavaThread *)thread)->last_frame(); + if (id() != check.id()) + { + while (id() != check.sender(&map).id()) { + check = check.sender(&map); + } + if (check.is_interpreted_frame()) + *(check.fp() + 1) = (int)pc; + else + ((address *)_sp)[-1] = pc; + } + + _cb = CodeCache::find_blob(pc); + if (_cb != NULL && _cb->is_nmethod() && ((nmethod*)_cb)->is_deopt_pc(_pc)) { + address orig = (((nmethod*)_cb)->get_original_pc(this)); + assert(orig == _pc, "expected original to be stored before patching"); + _deopt_state = is_deoptimized; + // leave _pc as is + } else { + _deopt_state = not_deoptimized; + _pc = pc; + } } bool frame::is_interpreted_frame() const { diff -r 82bf91673f25 -r f4c60f770c45 hotspot/src/cpu/mips/vm/sharedRuntime_mips.cpp --- a/hotspot/src/cpu/mips/vm/sharedRuntime_mips.cpp Tue Nov 09 13:21:20 2010 +0800 +++ b/hotspot/src/cpu/mips/vm/sharedRuntime_mips.cpp Thu Nov 11 19:35:44 2010 +0800 @@ -3212,64 +3212,59 @@ void SharedRuntime::generate_deopt_blob( // allocate space for the code ResourceMark rm; // setup code generation tools - //int pad = VerifyThread ? 512 : 0;// Extra slop space for more verify code - // CodeBuffer* buffer = new CodeBuffer(2048+pad, 512, 0, 0, 0, false); CodeBuffer buffer ("deopt_blob", 2048, 2048); MacroAssembler* masm = new MacroAssembler( & buffer); -//int frame_size, exception_offset, reexecute_offset; int frame_size_in_words; OopMap* map = NULL; - // Account for the extra args we place on the stack - // by the time we call fetch_unroll_info - const int additional_words = 2; // deopt kind, thread - OopMapSet *oop_maps = new OopMapSet(); + // Account for the extra args we place on the stack + // by the time we call fetch_unroll_info + const int additional_words = 2; // deopt kind, thread + + OopMapSet *oop_maps = new OopMapSet(); + address start = __ pc(); Label cont; - // we use S3 for DeOpt reason register - Register reason = S3; - // use S1 for thread register - Register thread = TREG; - // use S7 for fetch_unroll_info returned UnrollBlock - Register unroll = S7; + // we use S3 for DeOpt reason register + Register reason = S3; + // use S1 for thread register + Register thread = TREG; + // use S7 for fetch_unroll_info returned UnrollBlock + Register unroll = S7; // Prolog for non exception case! - // Correct the return address we were given. - //FIXME, return address is on the tos or Ra? - __ addi(RA, RA, - (NativeCall::return_address_offset)); -// Save everything in sight. + // Correct the return address we were given. + //FIXME, return address is on the tos or Ra? + __ lw(RA, FP, (-1) * wordSize); + // Save everything in sight. map = RegisterSaver::save_live_registers(masm, additional_words, &frame_size_in_words); - __ move(AT, Deoptimization::Unpack_deopt); - __ push(AT); + // Normal deoptimization + __ move(reason, Deoptimization::Unpack_deopt); __ b(cont); __ delayed()->nop(); int reexecute_offset = __ pc() - start; + // Reexecute case // return address is the pc describes what bci to do re-execute at + // No need to update map as each call to save_live_registers will produce identical oopmap - (void) RegisterSaver::save_live_registers(masm, additional_words, &frame_size_in_words); - // __ pushl(Deoptimization::Unpack_reexecute); - // __ jmp(cont); - __ move(AT, Deoptimization::Unpack_reexecute); - __ push(AT); - __ b(cont); - __ delayed()->nop(); - -int exception_offset = __ pc() - start; - // Prolog for exception case + __ move(reason, Deoptimization::Unpack_reexecute); + __ b(cont); + __ delayed()->nop(); + + int exception_offset = __ pc() - start; + // Prolog for exception case // all registers are dead at this entry point, except for eax and // edx which contain the exception oop and exception pc // respectively. Set them in TLS and fall thru to the // unpack_with_exception_in_tls entry point. - //__ get_thread(edi); + __ get_thread(thread); - //__ movl(Address(edi, JavaThread::exception_pc_offset()), edx); __ sw(V1, thread, in_bytes(JavaThread::exception_pc_offset())); - // __ movl(Address(edi, JavaThread::exception_oop_offset()), eax); __ sw(V0, thread, in_bytes(JavaThread::exception_oop_offset())); int exception_in_tls_offset = __ pc() - start; -// new implementation because exception oop is now passed in JavaThread + // new implementation because exception oop is now passed in JavaThread // Prolog for exception case // All registers must be preserved because they might be used by LinearScan @@ -3281,47 +3276,36 @@ int exception_offset = __ pc() - start // It will be patched later with the throwing pc. The correct value is not // available now because loading it from memory would destroy registers. //__ pushl(0); - //It is no need here, because in save_live_register, we saved the return address(RA) - //FIXME here, do mips need patch the return address on stack? - // __ push(ZERO); - // Save everything in sight. + //It is no need here, because in save_live_register, we saved the return address(RA) + //FIXME here, do mips need patch the return address on stack? + // __ push(ZERO); + // Save everything in sight. // No need to update map as each call to save_live_registers will produce identical oopmap (void) RegisterSaver::save_live_registers(masm, additional_words, &frame_size_in_words); // Now it is safe to overwrite any register // store the correct deoptimization type - // __ pushl(Deoptimization::Unpack_exception); - __ move(AT, Deoptimization::Unpack_exception); - __ push(AT); - // load throwing pc from JavaThread and patch it as the return address + __ move(reason, Deoptimization::Unpack_exception); + // load throwing pc from JavaThread and patch it as the return address // of the current frame. Then clear the field in JavaThread - // __ get_thread(edi); __ get_thread(thread); -// __ movl(edx, Address(edi, JavaThread::exception_pc_offset())); __ lw(V1, thread, in_bytes(JavaThread::exception_pc_offset())); -//we should save on the stack or register? - // __ movl(Address(ebp, wordSize), edx); - __ move(RA, V1); - // __ movl(Address(edi, JavaThread::exception_pc_offset()), NULL_WORD); - __ sw(ZERO, thread, in_bytes(JavaThread::exception_pc_offset())); + //we should save on the stack or register? + __ move(RA, V1); + __ sw(ZERO, thread, in_bytes(JavaThread::exception_pc_offset())); - + #ifdef ASSERT // verify that there is really an exception oop in JavaThread - // __ movl(eax, Address(edi, JavaThread::exception_oop_offset())); - __ lw(AT, thread, in_bytes(JavaThread::exception_oop_offset())); - //__ verify_oop(eax); - __ verify_oop(AT); + __ lw(AT, thread, in_bytes(JavaThread::exception_oop_offset())); + __ verify_oop(AT); // verify that there is no pending exception Label no_pending_exception; -// __ movl(eax, Address(edi, Thread::pending_exception_offset())); __ lw(AT, thread, in_bytes(Thread::pending_exception_offset())); - //__ testl(eax, eax); - //__ jcc(Assembler::zero, no_pending_exception); - __ beq(AT, ZERO, no_pending_exception); - __ delayed()->nop(); - __ stop("must not have pending exception here"); - __ bind(no_pending_exception); + __ beq(AT, ZERO, no_pending_exception); + __ delayed()->nop(); + __ stop("must not have pending exception here"); + __ bind(no_pending_exception); #endif __ bind(cont); // Compiled code leaves the floating point stack dirty, empty it. @@ -3330,28 +3314,17 @@ int exception_offset = __ pc() - start // Call C code. Need thread and this frame, but NOT official VM entry // crud. We cannot block on this call, no GC can happen. - - - - // All callee save registers or return value registers are saved at this poin - // Compiled code may leave the floating point stack dirty, empty it. +#ifndef OPT_THREAD + __ get_thread(thread); +#endif + __ move(A0, thread); + __ addiu(SP, SP, -2 * wordSize); + + __ set_last_Java_frame(thread, NOREG, NOREG, NULL); // Call fetch_unroll_info(). Need thread and this frame, but NOT official VM entry - cannot block on // this call, no GC can happen. Call should capture return values. -#ifndef OPT_THREAD - __ get_thread(thread); -#endif - __ set_last_Java_frame(thread, NOREG, NOREG, NULL); - - __ sw(SP, thread, in_bytes(JavaThread::last_Java_sp_offset())); - // push the one argument (relative to the oopmap) - // __ addiu(SP, SP, - 2*wordSize); - __ addiu(SP, SP, - wordSize); - __ move(AT, -8); - __ andr(SP, SP, AT); - __ move(A0, thread); - __ relocate(relocInfo::internal_pc_type); { int save_pc = (int)__ pc() + 12 + NativeCall::return_address_offset; @@ -3365,20 +3338,19 @@ int exception_offset = __ pc() - start __ jalr(T9); __ delayed()->nop(); oop_maps->add_gc_map(__ pc() - start, map); - // pop the arg so now frame offsets (slots) don't include any arg. - __ lw(SP, thread, in_bytes(JavaThread::last_Java_sp_offset())); + __ addiu(SP, SP, 2 * wordSize); + __ get_thread(thread); __ reset_last_Java_frame(thread, false, true); // Load UnrollBlock into S7 __ move(unroll, V0); - // Store frame locals in registers or memory // Move the unpack kind to a safe place in the UnrollBlock because // we are very short of registers Address unpack_kind(unroll, Deoptimization::UnrollBlock::unpack_kind_offset_in_bytes()); - __ pop(reason); + //__ pop(reason); __ sw(reason, unpack_kind); // save the unpack_kind value // Retrieve the possible live values (return values) @@ -3397,35 +3369,29 @@ int exception_offset = __ pc() - start __ verify_oop(V0); // Overwrite the result registers with the exception results. - //__ movl(Address(esp, RegisterSaver::eaxOffset()*wordSize), eax); __ sw(V0, SP, RegisterSaver::v0Offset()*wordSize); -// __ movl(Address(esp, RegisterSaver::edxOffset()*wordSize), edx); __ sw(V1, SP, RegisterSaver::v1Offset()*wordSize); __ bind(noException); -// __ lw(V0, SP, V0_off * wordSize); -// __ lw(V1, SP, V1_off * wordSize); - //__ lwc1(F0, SP, F0_off * wordSize); - //__ lwc1(F1, SP, (F0_off + 1) * wordSize); // Stack is back to only having register save data on the stack. // Now restore the result registers. Everything else is either dead or captured // in the vframeArray. RegisterSaver::restore_result_registers(masm); - // All of the register save area has been popped of the stack. Only the + // All of the register save area has been popped of the stack. Only the // return address remains. // Pop all the frames we must move/replace. - // Frame picture (youngest to oldest) + // Frame picture (youngest to oldest) // 1: self-frame (no frame link) // 2: deopting frame (no frame link) // 3: caller of deopting frame (could be compiled/interpreted). - // + // // Note: by leaving the return address of self-frame on the stack // and using the size of frame 2 to adjust the stack // when we are done the return to frame 3 will still be on the stack. - + // register for the sender's sp Register sender_sp = T5; // register for frame pcs @@ -3436,66 +3402,56 @@ int exception_offset = __ pc() - start Register count = T3; // Pop deoptimized frame - //__ addl(esp,Address(edi,Deoptimization::UnrollBlock::size_of_deoptimized_frame_offset_in_bytes())); __ lw(AT, unroll, Deoptimization::UnrollBlock::size_of_deoptimized_frame_offset_in_bytes()); __ add(SP, SP, AT); // sp should be pointing at the return address to the caller (3) - // Load array of frame pcs into ECX - //__ movl(ecx,Address(edi,Deoptimization::UnrollBlock::frame_pcs_offset_in_bytes())); - // Load array of frame pcs into T5 + + // Load array of frame pcs into T4 __ lw(pcs, unroll, Deoptimization::UnrollBlock::frame_pcs_offset_in_bytes()); - //__ popl(esi); // trash the old pc - //FIXME , do mips need trach the old pc - __ addi(SP, SP, wordSize); - // Load array of frame sizes into ESI -// __ movl(esi,Address(edi,Deoptimization::UnrollBlock::frame_sizes_offset_in_bytes())); - // Load array of frame sizes into T6 + __ addi(SP, SP, wordSize); // trash the old pc + // Load array of frame sizes into T6 __ lw(sizes, unroll, Deoptimization::UnrollBlock::frame_sizes_offset_in_bytes()); - - Address counter(unroll, Deoptimization::UnrollBlock::counter_temp_offset_in_bytes()); - //__ movl(ebx, Address(edi, Deoptimization::UnrollBlock::number_of_frames_offset_in_bytes())); - //__ movl(counter, ebx); - // Load count of frams into T3 + + // Load count of frams into T3 __ lw(count, unroll, Deoptimization::UnrollBlock::number_of_frames_offset_in_bytes()); - __ sw(count, counter); // Pick up the initial fp we should save - // __ movl(ebp, Address(edi, Deoptimization::UnrollBlock::initial_fp_offset_in_bytes())); __ lw(FP, unroll, Deoptimization::UnrollBlock::initial_fp_offset_in_bytes()); // Now adjust the caller's stack to make up for the extra locals // but record the original sp so that we can save it in the skeletal interpreter // frame and the stack walking of interpreter_sender will get the unextended sp // value and not the "real" sp value. - __ move(sender_sp, SP); + __ move(sender_sp, SP); __ lw(AT, unroll, Deoptimization::UnrollBlock::caller_adjustment_offset_in_bytes()); __ sub(SP, SP, AT); - + // Push interpreter frames in a loop Label loop; - __ bind(loop); - __ lw(T2, sizes, 0); // Load frame size - __ lw(AT, pcs, 0); // save return address - __ sw(AT, SP, (-1) * wordSize); - __ sw(FP, SP, (-2) * wordSize); - __ addi(FP, SP, (-2) * wordSize); // save old & set new FP - __ sub(SP, SP, T2); // Prolog! + __ bind(loop); + __ lw(T2, sizes, 0); // Load frame size + __ lw(AT, pcs, 0); // save return address + __ addi(T2, T2, -2*wordSize); // we'll push pc and rbp, by hand + __ push2(AT, FP); + __ move(FP, SP); + __ sub(SP, SP, T2); // Prolog! // This value is corrected by layout_activation_impl - __ sw(ZERO, FP, frame::interpreter_frame_last_sp_offset * wordSize); - __ sw(sender_sp, FP, frame::interpreter_frame_sender_sp_offset * wordSize);// Make it walkable - __ move(sender_sp, SP); // pass to next frame - __ addi(count, count, -1); // decrement counter - __ addi(sizes, sizes, 4); // Bump array pointer (sizes) - __ bne(count, ZERO, loop); From dbhole at redhat.com Thu Nov 11 05:42:26 2010 From: dbhole at redhat.com (Deepak Bhole) Date: Thu, 11 Nov 2010 08:42:26 -0500 Subject: [icedtea-web] RFC: integrate support for multiple KeyStores into the various validators In-Reply-To: <4CDB1BFB.5030704@redhat.com> References: <4CDB1BFB.5030704@redhat.com> Message-ID: <20101111134226.GA6888@redhat.com> * Omair Majid [2010-11-10 17:26]: > Hi, > > The attached patch makes the various parts of netx that determine > which certificates are trusted use the multiple keystores are that > are now available. > > The patch modifies VariableX509TrustManager, HTTPSCertVerfier, and > JarSigner to use these certificate stores. > > The KeyTool class is almost completely unused after this patch. I > would like to remove it at some point in the future. > > ChangeLog: > 2010-11-09 Omair Majid > > * netx/net/sourceforge/jnlp/runtime/Boot.java (main): Move trust > manager initialization code into JNLPRuntime.initialize. > * plugin/icedteanp/java/sun/applet/PluginMain.java > (init): Likewise. > * netx/net/sourceforge/jnlp/runtime/JNLPRuntime.java (initialize): > Set the default SSL TrustManager here. > * netx/net/sourceforge/jnlp/security/CertWarningPane.java > (CheckBoxListener.actionPerformed): Add this certificate into > user's trusted certificate store. > * netx/net/sourceforge/jnlp/tools/KeyTool.java > (addToKeyStore(File,KeyStore)): Move to CertificateUtils. > (addToKeyStore(X509Certificate,KeyStore)): Likewise. > (dumpCert): Likewise. > * netx/net/sourceforge/jnlp/security/CertificateUtils.java: New > class. > (addToKeyStore(File,KeyStore)): Moved from KeyTool. > (addToKeyStore(X509Certificate,KeyStore)): Likewise. > (dumpCert): Likewise. > (inKeyStores): New method. > * netx/net/sourceforge/jnlp/security/HttpsCertVerifier.java > (getRootInCacerts): Check all available CA store to check if > root is in CA certificates. > * netx/net/sourceforge/jnlp/security/KeyStores.java > (getClientKeyStores): New method. > * netx/net/sourceforge/jnlp/security/VariableX509TrustManager.java > (VariableX509TrustManager): Initialize multiple CA, certificate and > client trust managers. > (checkClientTrusted): Check all the client TrustManagers if > certificate is trusted. > (checkAllManagers): Check multiple CA certificates and trusted > certificates to determine if the certificate chain can be trusted. > (isExplicitlyTrusted): Check with multiple TrustManagers. > (getAcceptedIssuers): Gather results from multiple TrustManagers. > * netx/net/sourceforge/jnlp/security/viewer/CertificatePane.java > (ImportButtonListener): Use CertificateUtils instead of KeyTool. > * netx/net/sourceforge/jnlp/tools/JarSigner.java > (checkTrustedCerts): Use multiple key stores to check if certificate > is directly trusted and if the root is trusted. > > Any thoughts or comments? > > Cheers, > Omair > diff -r f089abbcf019 netx/net/sourceforge/jnlp/runtime/Boot.java > --- a/netx/net/sourceforge/jnlp/runtime/Boot.java Mon Nov 08 16:48:38 2010 -0500 > +++ b/netx/net/sourceforge/jnlp/runtime/Boot.java Tue Nov 09 09:18:48 2010 -0500 > @@ -172,20 +172,6 @@ > JNLPRuntime.setForksAllowed(false); > } > > - // wire in custom authenticator > - try { > - SSLSocketFactory sslSocketFactory; > - SSLContext context = SSLContext.getInstance("SSL"); > - TrustManager[] trust = new TrustManager[] { VariableX509TrustManager.getInstance() }; > - context.init(null, trust, null); > - sslSocketFactory = context.getSocketFactory(); > - > - HttpsURLConnection.setDefaultSSLSocketFactory(sslSocketFactory); > - } catch (Exception e) { > - System.err.println("Unable to set SSLSocketfactory (may _prevent_ access to sites that should be trusted)! Continuing anyway..."); > - e.printStackTrace(); > - } > - > JNLPRuntime.setInitialArgments(Arrays.asList(argsIn)); > > // do in a privileged action to clear the security context of > diff -r f089abbcf019 netx/net/sourceforge/jnlp/runtime/JNLPRuntime.java > --- a/netx/net/sourceforge/jnlp/runtime/JNLPRuntime.java Mon Nov 08 16:48:38 2010 -0500 > +++ b/netx/net/sourceforge/jnlp/runtime/JNLPRuntime.java Tue Nov 09 09:18:48 2010 -0500 > @@ -26,12 +26,17 @@ > import java.security.*; > import javax.jnlp.*; > import javax.naming.ConfigurationException; > +import javax.net.ssl.HttpsURLConnection; > +import javax.net.ssl.SSLContext; > +import javax.net.ssl.SSLSocketFactory; > +import javax.net.ssl.TrustManager; > import javax.swing.UIManager; > import javax.swing.text.html.parser.ParserDelegator; > > import net.sourceforge.jnlp.*; > import net.sourceforge.jnlp.cache.*; > import net.sourceforge.jnlp.security.SecurityDialogMessageHandler; > +import net.sourceforge.jnlp.security.VariableX509TrustManager; > import net.sourceforge.jnlp.services.*; > import net.sourceforge.jnlp.util.*; > > @@ -223,6 +228,20 @@ > > securityDialogMessageHandler = startSecurityThreads(); > > + // wire in custom authenticator > + try { > + SSLSocketFactory sslSocketFactory; > + SSLContext context = SSLContext.getInstance("SSL"); > + TrustManager[] trust = new TrustManager[] { VariableX509TrustManager.getInstance() }; > + context.init(null, trust, null); > + sslSocketFactory = context.getSocketFactory(); > + > + HttpsURLConnection.setDefaultSSLSocketFactory(sslSocketFactory); > + } catch (Exception e) { > + System.err.println("Unable to set SSLSocketfactory (may _prevent_ access to sites that should be trusted)! Continuing anyway..."); > + e.printStackTrace(); > + } > + > initialized = true; > > } > diff -r f089abbcf019 netx/net/sourceforge/jnlp/security/CertWarningPane.java > --- a/netx/net/sourceforge/jnlp/security/CertWarningPane.java Mon Nov 08 16:48:38 2010 -0500 > +++ b/netx/net/sourceforge/jnlp/security/CertWarningPane.java Tue Nov 09 09:18:48 2010 -0500 > @@ -47,6 +47,9 @@ > import java.awt.GridLayout; > import java.awt.event.ActionEvent; > import java.awt.event.ActionListener; > +import java.io.FileOutputStream; > +import java.io.OutputStream; > +import java.security.KeyStore; > import java.security.cert.Certificate; > import java.security.cert.X509Certificate; > > @@ -62,6 +65,8 @@ > import net.sourceforge.jnlp.JNLPFile; > import net.sourceforge.jnlp.PluginBridge; > import net.sourceforge.jnlp.runtime.JNLPRuntime; > +import net.sourceforge.jnlp.security.KeyStores.Level; > +import net.sourceforge.jnlp.security.KeyStores.Type; > import net.sourceforge.jnlp.security.SecurityWarning.AccessType; > import net.sourceforge.jnlp.tools.KeyTool; > > @@ -233,25 +238,28 @@ > } > } > > - /** > - * Updates the user's KeyStore of trusted Certificates. > - */ > - private class CheckBoxListener implements ActionListener { > - public void actionPerformed(ActionEvent e) { > - if (alwaysTrust != null && alwaysTrust.isSelected()) { > - try { > - KeyTool kt = new KeyTool(); > - Certificate c = parent.getJarSigner().getPublisher(); > - kt.importCert(c); > - if (JNLPRuntime.isDebug()) { > - System.out.println("certificate is now permanently trusted"); > - } > - } catch (Exception ex) { > - //TODO: Let NetX show a dialog here notifying user > - //about being unable to add cert to keystore > - } > - } > + /** > + * Updates the user's KeyStore of trusted Certificates. > + */ > + private class CheckBoxListener implements ActionListener { > + public void actionPerformed(ActionEvent e) { > + if (alwaysTrust != null && alwaysTrust.isSelected()) { > + try { > + KeyStore ks = KeyStores.getKeyStore(Level.USER, Type.CERTS); > + X509Certificate c = (X509Certificate) parent.getJarSigner().getPublisher(); > + CertificateUtils.addToKeyStore(c, ks); > + OutputStream os = new FileOutputStream(KeyStores.getKeyStoreLocation(Level.USER, Type.CERTS)); > + ks.store(os, KeyStores.getPassword()); > + if (JNLPRuntime.isDebug()) { > + System.out.println("certificate is now permanently trusted"); > + } > + } catch (Exception ex) { > + // TODO: Let NetX show a dialog here notifying user > + // about being unable to add cert to keystore > + ex.printStackTrace(); > } > + } > } > + } > > } > diff -r f089abbcf019 netx/net/sourceforge/jnlp/security/CertificateUtils.java > --- /dev/null Thu Jan 01 00:00:00 1970 +0000 > +++ b/netx/net/sourceforge/jnlp/security/CertificateUtils.java Tue Nov 09 09:18:48 2010 -0500 > @@ -0,0 +1,145 @@ > +/* CertificateUtils.java > + Copyright (C) 2010 Red Hat, Inc. > + > +This file is part of IcedTea. > + > +IcedTea is free software; you can redistribute it and/or > +modify it under the terms of the GNU General Public License as published by > +the Free Software Foundation, version 2. > + > +IcedTea is distributed in the hope that it will be useful, > +but WITHOUT ANY WARRANTY; without even the implied warranty of > +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU > +General Public License for more details. > + > +You should have received a copy of the GNU General Public License > +along with IcedTea; see the file COPYING. If not, write to > +the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA > +02110-1301 USA. > + > +Linking this library statically or dynamically with other modules is > +making a combined work based on this library. Thus, the terms and > +conditions of the GNU General Public License cover the whole > +combination. > + > +As a special exception, the copyright holders of this library give you > +permission to link this library with independent modules to produce an > +executable, regardless of the license terms of these independent > +modules, and to copy and distribute the resulting executable under > +terms of your choice, provided that you also meet, for each linked > +independent module, the terms and conditions of the license of that > +module. An independent module is a module which is not derived from > +or based on this library. If you modify this library, you may extend > +this exception to your version of the library, but you are not > +obligated to do so. If you do not wish to do so, delete this > +exception statement from your version. > +*/ > + > +package net.sourceforge.jnlp.security; > + > +import java.io.BufferedInputStream; > +import java.io.File; > +import java.io.FileInputStream; > +import java.io.IOException; > +import java.io.PrintStream; > +import java.math.BigInteger; > +import java.security.KeyStore; > +import java.security.KeyStoreException; > +import java.security.cert.Certificate; > +import java.security.cert.CertificateException; > +import java.security.cert.CertificateFactory; > +import java.security.cert.X509Certificate; > +import java.util.Random; > + > +import net.sourceforge.jnlp.runtime.JNLPRuntime; > + > +import sun.misc.BASE64Encoder; > +import sun.security.provider.X509Factory; > + > +public class CertificateUtils { > + /** > + * Adds the X509Certficate in the file to the KeyStore. Note that it does > + * not update the copy of the KeyStore on disk. > + */ > + public static final void addToKeyStore(File file, KeyStore ks) throws CertificateException, > + IOException, KeyStoreException { > + if (JNLPRuntime.isDebug()) { > + System.out.println("Importing certificate from " + file + " into " + ks); > + } > + > + BufferedInputStream bis = new BufferedInputStream(new FileInputStream(file)); > + CertificateFactory cf = CertificateFactory.getInstance("X509"); > + X509Certificate cert = null; > + > + try { > + cert = (X509Certificate) cf.generateCertificate(bis); > + } catch (ClassCastException cce) { > + throw new CertificateException("Input file is not an X509 Certificate", cce); > + } > + > + addToKeyStore(cert, ks); > + } > + > + /** > + * Adds an X509Certificate to the KeyStore. Note that it does not update the > + * copy of the KeyStore on disk. > + */ > + public static final void addToKeyStore(X509Certificate cert, KeyStore ks) > + throws KeyStoreException { > + if (JNLPRuntime.isDebug()) { > + System.out.println("Importing " + cert.getSubjectX500Principal().getName()); > + } > + > + String alias = null; > + Random random = new Random(); > + alias = ks.getCertificateAlias(cert); > + if (alias != null) { > + return; > + } > + > + do { > + alias = new BigInteger(20, random).toString(); > + } while (ks.getCertificate(alias) != null); > + ks.setCertificateEntry(alias, cert); > + } > + I don't understand what is happening in the code above.. if I am not mistaken, isn't it searching for a random string alias and will continue to loop until something (random?) is found? Also, those methods should not be public static as untrusted apps could access them. The keystores shouldn't be either (if they are, either now or from before). > + /** > + * Checks whether an X509Certificate is already in one of the keystores > + * @param c the certificate > + * @param keyStores the KeyStores to check in > + * @return true if the certificate is present in one of the keystores, false otherwise > + */ > + public static final boolean inKeyStores(X509Certificate c, KeyStore[] keyStores) { > + for (int i = 0; i < keyStores.length; i++) { > + try { > + if (keyStores[i].getCertificateAlias(c) != null) { > + if (JNLPRuntime.isDebug()) { > + System.out.println(c.getSubjectX500Principal().getName() + " found in cacerts"); > + } > + return true; > + } > + } catch (KeyStoreException e) { > + e.printStackTrace(); > + // continue > + } > + } > + return false; > + } > + > + /** > + * Writes the certificate in base64 encoded from to the print stream > + */ > + public static void dump(Certificate cert, PrintStream out) throws IOException, > + CertificateException { > + > + boolean printRfc = true; > + if (printRfc) { > + BASE64Encoder encoder = new BASE64Encoder(); > + out.println(X509Factory.BEGIN_CERT); > + encoder.encodeBuffer(cert.getEncoded(), out); > + out.println(X509Factory.END_CERT); > + } else { > + out.write(cert.getEncoded()); // binary > + } > + } > +} What does printRfc represent? And if it's always true, why the else? > diff -r f089abbcf019 netx/net/sourceforge/jnlp/security/HttpsCertVerifier.java > --- a/netx/net/sourceforge/jnlp/security/HttpsCertVerifier.java Mon Nov 08 16:48:38 2010 -0500 > +++ b/netx/net/sourceforge/jnlp/security/HttpsCertVerifier.java Tue Nov 09 09:18:48 2010 -0500 > @@ -40,6 +40,7 @@ > import static net.sourceforge.jnlp.runtime.Translator.R; > > import java.io.IOException; > +import java.security.KeyStore; > import java.security.cert.CertPath; > import java.security.cert.Certificate; > import java.security.cert.CertificateException; > @@ -213,8 +214,8 @@ > > public boolean getRootInCacerts() { > try { > - KeyTool kt = new KeyTool(); > - return kt.checkCacertsForCertificate(getRoot()); > + KeyStore[] caCertsKeyStores = KeyStores.getCAKeyStores(); > + return CertificateUtils.inKeyStores((X509Certificate)getRoot(), caCertsKeyStores); > } catch (Exception e) { > } > return false; > diff -r f089abbcf019 netx/net/sourceforge/jnlp/security/KeyStores.java > --- a/netx/net/sourceforge/jnlp/security/KeyStores.java Mon Nov 08 16:48:38 2010 -0500 > +++ b/netx/net/sourceforge/jnlp/security/KeyStores.java Tue Nov 09 09:18:48 2010 -0500 > @@ -189,6 +189,29 @@ > } > > /** > + * Returns KeyStores containing trusted client certificates > + * > + * @return an array of KeyStore objects that can be used to check client > + * authentication certificates > + */ > + public static KeyStore[] getClientKeyStores() { > + List result = new ArrayList(); > + KeyStore ks = null; > + > + ks = getKeyStore(Level.SYSTEM, Type.CLIENT_CERTS); > + if (ks != null) { > + result.add(ks); > + } > + > + ks = getKeyStore(Level.USER, Type.CLIENT_CERTS); > + if (ks != null) { > + result.add(ks); > + } > + > + return result.toArray(new KeyStore[result.size()]); > + } > + Should something like this be public static? Untrusted apps will be able to access it and modify it... > + /** > * Returns the location of a KeyStore corresponding to the given level and type. > * @param level > * @param type > @@ -334,4 +357,5 @@ > return ks; > } > > + > } > diff -r f089abbcf019 netx/net/sourceforge/jnlp/security/VariableX509TrustManager.java > --- a/netx/net/sourceforge/jnlp/security/VariableX509TrustManager.java Mon Nov 08 16:48:38 2010 -0500 > +++ b/netx/net/sourceforge/jnlp/security/VariableX509TrustManager.java Tue Nov 09 09:18:48 2010 -0500 > @@ -42,6 +42,8 @@ > import java.security.cert.CertificateException; > import java.security.cert.X509Certificate; > import java.util.ArrayList; > +import java.util.Arrays; > +import java.util.List; > > import javax.net.ssl.TrustManager; > import javax.net.ssl.TrustManagerFactory; > @@ -60,59 +62,96 @@ > * different certificates that are not in the keystore. > */ > > -public class VariableX509TrustManager extends X509ExtendedTrustManager { > +final public class VariableX509TrustManager extends X509ExtendedTrustManager { > > - KeyStore userKeyStore = null; > - KeyStore caKeyStore = null; > + /** TrustManagers containing trusted CAs */ > + private X509TrustManager[] caTrustManagers = null; > + /** TrustManagers containing trusted certificates */ > + private X509TrustManager[] certTrustManagers = null; > + /** TrustManagers containing trusted client certificates */ > + private X509TrustManager[] clientTrustManagers = null; > New lines between decl, as with before please :) > - X509TrustManager userTrustManager = null; > - X509TrustManager caTrustManager = null; > + private ArrayList temporarilyTrusted = new ArrayList(); > + private ArrayList temporarilyUntrusted = new ArrayList(); > > - ArrayList temporarilyTrusted = new ArrayList(); > - ArrayList temporarilyUntrusted = new ArrayList(); > - > - static VariableX509TrustManager instance = null; > + private static VariableX509TrustManager instance = null; > > /** > * Constructor initializes the system, user and custom stores > */ > public VariableX509TrustManager() { > > + /* > + * Load TrustManagers for trusted certificates > + */ > try { > - userKeyStore = SecurityUtil.getUserKeyStore(); > - TrustManagerFactory tmFactory = TrustManagerFactory.getInstance("SunX509", "SunJSSE"); > - tmFactory.init(userKeyStore); > + /** KeyStores containing trusted certificates */ > + KeyStore[] trustedCertKeyStores = KeyStores.getCertKeyStores(); > + certTrustManagers = new X509TrustManager[trustedCertKeyStores.length]; > > - // tm factory initialized, now get the managers so we can assign the X509 one > - TrustManager[] trustManagers = tmFactory.getTrustManagers(); > + for (int j = 0; j < trustedCertKeyStores.length; j++) { > + TrustManagerFactory tmFactory = TrustManagerFactory.getInstance("SunX509", "SunJSSE"); > + tmFactory.init(trustedCertKeyStores[j]); > > - for (int i=0; i < trustManagers.length; i++) { > - if (trustManagers[i] instanceof X509TrustManager) { > - userTrustManager = (X509TrustManager) trustManagers[i]; > + // tm factory initialized, now get the managers so we can assign the X509 one > + TrustManager[] trustManagers = tmFactory.getTrustManagers(); > + > + for (int i = 0; i < trustManagers.length; i++) { > + if (trustManagers[i] instanceof X509TrustManager) { > + certTrustManagers[j] = (X509TrustManager) trustManagers[i]; > + } > } > } > - > } catch (Exception e) { > - // TODO Auto-generated catch block > e.printStackTrace(); > } > > + /* > + * Load TrustManagers for trusted CAs > + */ > try { > - caKeyStore = SecurityUtil.getCacertsKeyStore(); > - TrustManagerFactory tmFactory = TrustManagerFactory.getInstance("SunX509", "SunJSSE"); > - tmFactory.init(caKeyStore); > + /** KeyStores containing trusted CAs */ > + KeyStore[] trustedCAKeyStores = KeyStores.getCAKeyStores(); > + caTrustManagers = new X509TrustManager[trustedCAKeyStores.length]; > > - // tm factory initialized, now get the managers so we can extract the X509 one > - TrustManager[] trustManagers = tmFactory.getTrustManagers(); > + for (int j = 0; j < caTrustManagers.length; j++) { > + TrustManagerFactory tmFactory = TrustManagerFactory.getInstance("SunX509", "SunJSSE"); > + tmFactory.init(trustedCAKeyStores[j]); > > - for (int i=0; i < trustManagers.length; i++) { > - if (trustManagers[i] instanceof X509TrustManager) { > - caTrustManager = (X509TrustManager) trustManagers[i]; > + // tm factory initialized, now get the managers so we can extract the X509 one > + TrustManager[] trustManagers = tmFactory.getTrustManagers(); > + > + for (int i=0; i < trustManagers.length; i++) { > + if (trustManagers[i] instanceof X509TrustManager) { > + caTrustManagers[j] = (X509TrustManager) trustManagers[i]; > + } > } > } > + } catch (Exception e) { > + e.printStackTrace(); > + } > > + /* > + * Load TrustManagers for trusted clients certificates > + */ > + try { > + KeyStore[] clientKeyStores = KeyStores.getClientKeyStores(); > + clientTrustManagers = new X509TrustManager[clientKeyStores.length]; > + > + for (int j = 0; j < clientTrustManagers.length; j++) { > + TrustManagerFactory tmFactory = TrustManagerFactory.getInstance("SunX509", "SunJSSE"); > + tmFactory.init(clientKeyStores[j]); > + > + // tm factory initialized, now get the managers so we can extract the X509 one > + TrustManager[] trustManagers = tmFactory.getTrustManagers(); > + > + for (int i=0; i < trustManagers.length; i++) { > + if (trustManagers[i] instanceof X509TrustManager) { > + clientTrustManagers[j] = (X509TrustManager) trustManagers[i]; > + } > + } > + } > } catch (Exception e) { > - // TODO Auto-generated catch block > e.printStackTrace(); > } > } > @@ -123,18 +162,23 @@ > public void checkClientTrusted(X509Certificate[] chain, String authType, > String hostName, String algorithm) > throws CertificateException { > - // First try catrustmanager, then try usertrustmanager > - try { > - caTrustManager.checkClientTrusted(chain, authType); > - } catch (Exception caex) { > + > + boolean trusted = false; > + ValidatorException savedException = null; > + for (int i = 0; i < clientTrustManagers.length; i++) { > try { > - userTrustManager.checkClientTrusted(chain, authType); > - } catch (Exception userex) { > - // Do nothing here. This trust manager is intended to be used > - // only in the plugin instance vm, which does not act as a > - // server > + clientTrustManagers[i].checkClientTrusted(chain, authType); > + trusted = true; > + break; > + } catch (ValidatorException caex) { > + savedException = caex; > } > } > + if (trusted) { > + return; > + } > + > + throw savedException; > } > > public void checkClientTrusted(X509Certificate[] chain, String authType) > @@ -214,17 +258,45 @@ > * Check system, user and custom trust manager > */ > private void checkAllManagers(X509Certificate[] chain, String authType) throws CertificateException { > - // First try catrustmanager, then try usertrustmanager, and finally, check temp trusted certs > - try { > - caTrustManager.checkServerTrusted(chain, authType); > - } catch (ValidatorException caex) { > + // first try CA TrustManagers > + boolean trusted = false; > + ValidatorException savedException = null; > + for (int i = 0; i < caTrustManagers.length; i++) { > try { > - userTrustManager.checkServerTrusted(chain, authType); > - } catch (ValidatorException uex) { > - if (!temporarilyTrusted.contains(chain[0])) > - throw (CertificateException) uex; > + caTrustManagers[i].checkServerTrusted(chain, authType); > + trusted = true; > + break; > + } catch (ValidatorException caex) { > + savedException = caex; > } > } > + if (trusted) { > + return; > + } > + > + // then try certificate TrustManagers > + for (int i = 0; i < certTrustManagers.length; i++) { > + try { > + certTrustManagers[i].checkServerTrusted(chain, authType); > + trusted = true; > + break; > + } catch (ValidatorException caex) { > + savedException = caex; > + } > + } > + if (trusted) { > + return; > + } > + > + // finally check temp trusted certs > + if (!temporarilyTrusted.contains(chain[0])) { > + if (savedException == null) { > + // System.out.println("IMPOSSIBLE!"); > + throw new ValidatorException(ValidatorException.T_SIGNATURE_ERROR, chain[0]); > + } > + throw savedException; > + } > + > } > > /** > @@ -233,23 +305,32 @@ > private boolean isExplicitlyTrusted(X509Certificate[] chain, String authType) { > boolean explicitlyTrusted = false; > > - try { > - userTrustManager.checkServerTrusted(chain, authType); > - explicitlyTrusted = true; > - } catch (ValidatorException uex) { > - if (temporarilyTrusted.contains(chain[0])) > + for (int i = 0; i < certTrustManagers.length; i++) { > + try { > + certTrustManagers[i].checkServerTrusted(chain, authType); > explicitlyTrusted = true; > - } catch (CertificateException ce) { > - // do nothing, this means that the cert is not explicitly trusted > + break; > + } catch (ValidatorException uex) { > + if (temporarilyTrusted.contains(chain[0])) { > + explicitlyTrusted = true; > + break; > + } > + } catch (CertificateException ce) { > + // not explicitly trusted > + } > } > > return explicitlyTrusted; > - > } > > public X509Certificate[] getAcceptedIssuers() { > - // delegate to default > - return caTrustManager.getAcceptedIssuers(); > + List issuers = new ArrayList(); > + > + for (int i = 0; i < caTrustManagers.length; i++) { > + issuers.addAll(Arrays.asList(caTrustManagers[i].getAcceptedIssuers())); > + } > + > + return issuers.toArray(new X509Certificate[issuers.size()]); > } > > /** > diff -r f089abbcf019 netx/net/sourceforge/jnlp/security/viewer/CertificatePane.java > --- a/netx/net/sourceforge/jnlp/security/viewer/CertificatePane.java Mon Nov 08 16:48:38 2010 -0500 > +++ b/netx/net/sourceforge/jnlp/security/viewer/CertificatePane.java Tue Nov 09 09:18:48 2010 -0500 > @@ -69,6 +69,7 @@ > import javax.swing.event.ChangeListener; > import javax.swing.table.DefaultTableModel; > > +import net.sourceforge.jnlp.security.CertificateUtils; > import net.sourceforge.jnlp.security.KeyStores; > import net.sourceforge.jnlp.security.SecurityUtil; > import net.sourceforge.jnlp.security.SecurityWarningDialog; > @@ -357,9 +358,8 @@ > int returnVal = chooser.showOpenDialog(parent); > if(returnVal == JFileChooser.APPROVE_OPTION) { > try { > - KeyTool kt = new KeyTool(); > KeyStore ks = keyStore; > - kt.addToKeyStore(chooser.getSelectedFile(), ks); > + CertificateUtils.addToKeyStore(chooser.getSelectedFile(), ks); > OutputStream os = new FileOutputStream( > KeyStores.getKeyStoreLocation(currentKeyStoreLevel, currentKeyStoreType)); > ks.store(os, KeyStores.getPassword()); > @@ -397,7 +397,7 @@ > if (alias != null) { > Certificate c = keyStore.getCertificate(alias); > PrintStream ps = new PrintStream(chooser.getSelectedFile().getAbsolutePath()); > - KeyTool.dumpCert(c, ps); > + CertificateUtils.dump(c, ps); > repopulateTables(); > } > } > diff -r f089abbcf019 netx/net/sourceforge/jnlp/tools/JarSigner.java > --- a/netx/net/sourceforge/jnlp/tools/JarSigner.java Mon Nov 08 16:48:38 2010 -0500 > +++ b/netx/net/sourceforge/jnlp/tools/JarSigner.java Tue Nov 09 09:18:48 2010 -0500 > @@ -371,9 +371,12 @@ > private void checkTrustedCerts() throws Exception { > if (certPath != null) { > try { > - KeyTool kt = new KeyTool(); > - alreadyTrustPublisher = kt.isTrusted(getPublisher()); > - rootInCacerts = kt.checkCacertsForCertificate(getRoot()); > + X509Certificate publisher = (X509Certificate) getPublisher(); > + KeyStore[] certKeyStores = KeyStores.getCertKeyStores(); > + alreadyTrustPublisher = CertificateUtils.inKeyStores(publisher, certKeyStores); > + X509Certificate root = (X509Certificate) getRoot(); > + KeyStore[] caKeyStores = KeyStores.getCAKeyStores(); > + rootInCacerts = CertificateUtils.inKeyStores(root, caKeyStores); > } catch (Exception e) { > // TODO: Warn user about not being able to > // look through their cacerts/trusted.certs > diff -r f089abbcf019 netx/net/sourceforge/jnlp/tools/KeyTool.java > --- a/netx/net/sourceforge/jnlp/tools/KeyTool.java Mon Nov 08 16:48:38 2010 -0500 > +++ b/netx/net/sourceforge/jnlp/tools/KeyTool.java Tue Nov 09 09:18:48 2010 -0500 > @@ -119,43 +119,6 @@ > return importCert((Certificate)cert); > } > > - /** > - * Adds the X509Certficate in the file to the KeyStore > - */ > - public final void addToKeyStore(File file, KeyStore ks) throws CertificateException, > - IOException, KeyStoreException { > - BufferedInputStream bis = new BufferedInputStream(new FileInputStream(file)); > - CertificateFactory cf = CertificateFactory.getInstance("X509"); > - X509Certificate cert = null; > - > - try { > - cert = (X509Certificate) cf.generateCertificate(bis); > - } catch (ClassCastException cce) { > - throw new CertificateException("Input file is not an X509 Certificate", cce); > - } > - > - addToKeyStore(cert, ks); > - > - } > - > - /** > - * Adds an X509Certificate to the KeyStore > - */ > - public final void addToKeyStore(X509Certificate cert, KeyStore ks) throws KeyStoreException { > - String alias = null; > - Random random = new Random(); > - alias = ks.getCertificateAlias(cert); > - // already in keystore; done > - if (alias != null) { > - return; > - } > - > - do { > - alias = new BigInteger(20, random).toString(); > - } while (ks.getCertificate(alias) != null); > - ks.setCertificateEntry(alias, cert); > - } > - > /** > * Adds a trusted certificate to the user's keystore. > * @return true if the add was successful, false otherwise. > @@ -479,20 +442,6 @@ > return false; > } > > - public static void dumpCert(Certificate cert, PrintStream out) > - throws IOException, CertificateException { > - > - boolean printRfc = true; > - if (printRfc) { > - BASE64Encoder encoder = new BASE64Encoder(); > - out.println(X509Factory.BEGIN_CERT); > - encoder.encodeBuffer(cert.getEncoded(), out); > - out.println(X509Factory.END_CERT); > - } else { > - out.write(cert.getEncoded()); // binary > - } > - } > - > public static void main(String[] args) throws Exception { > KeyTool kt = new KeyTool(); > kt.doPrintEntries(System.out); > diff -r f089abbcf019 plugin/icedteanp/java/sun/applet/PluginMain.java > --- a/plugin/icedteanp/java/sun/applet/PluginMain.java Mon Nov 08 16:48:38 2010 -0500 > +++ b/plugin/icedteanp/java/sun/applet/PluginMain.java Tue Nov 09 09:18:48 2010 -0500 > @@ -215,20 +215,6 @@ > // INSTALL THE PROPERTY LIST > System.setProperties(avProps); > > - > - try { > - SSLSocketFactory sslSocketFactory; > - SSLContext context = SSLContext.getInstance("SSL"); > - TrustManager[] trust = new TrustManager[] { VariableX509TrustManager.getInstance() }; > - context.init(null, trust, null); > - sslSocketFactory = context.getSocketFactory(); > - > - HttpsURLConnection.setDefaultSSLSocketFactory(sslSocketFactory); > - } catch (Exception e) { > - System.err.println("Unable to set SSLSocketfactory (may _prevent_ access to sites that should be trusted)! Continuing anyway..."); > - e.printStackTrace(); > - } > - > // plug in a custom authenticator and proxy selector > Authenticator.setDefault(new CustomAuthenticator()); > ProxySelector.setDefault(new PluginProxySelector()); Rest looks fine to me. Cheers, Deepak From ahughes at redhat.com Thu Nov 11 06:07:09 2010 From: ahughes at redhat.com (Dr Andrew John Hughes) Date: Thu, 11 Nov 2010 14:07:09 +0000 Subject: [1.9] RFC: Allow NetX to be disabled Message-ID: <20101111140709.GA9134@rivendell.middle-earth.co.uk> Ok for 1.9 tree? 2010-11-11 Andrew John Hughes * Makefile.am: (clean-local): Add clean-about. (.PHONY): Likewise. (add-netx): Depend on about.stamp. Add ENABLE_NETX conditional. (add-netx-debug): Likewise. (netx): Add ENABLE_NETX conditional. (netx-dist): Likewise. (extra-class-files): Likewise. (about): New target (from extra-lib/about.jar). Add ENABLE_NETX conditional. (clean-about): New target to remove about.jar. * acinclude.m4: (IT_CHECK_PLUGIN): Require IT_CHECK_NETX. Disable if NetX is turned off. (IT_CHECK_NETX): Add --disable-webstart option. -- Andrew :) Free Java Software Engineer Red Hat, Inc. (http://www.redhat.com) Support Free Java! Contribute to GNU Classpath and the OpenJDK http://www.gnu.org/software/classpath http://openjdk.java.net PGP Key: 94EFD9D8 (http://subkeys.pgp.net) Fingerprint = F8EF F1EA 401E 2E60 15FA 7927 142C 2591 94EF D9D8 -------------- next part -------------- diff -r 17c34c4c6fae Makefile.am --- a/Makefile.am Wed Nov 10 16:30:08 2010 +0000 +++ b/Makefile.am Thu Nov 11 13:20:31 2010 +0000 @@ -579,7 +579,7 @@ clean-icedtea-against-icedtea clean-icedtea-debug-against-icedtea \ clean-icedtea-against-ecj clean-extract-ecj clean-generated clean-replace-hotspot \ clean-rewriter clean-rewrite-rhino clean-extra clean-rt clean-bootstrap-directory \ - clean-bootstrap-directory-ecj clean-bootstrap-directory-symlink \ + clean-bootstrap-directory-ecj clean-bootstrap-directory-symlink clean-about \ clean-bootstrap-directory-symlink-ecj if [ -e bootstrap ]; then \ rmdir bootstrap ; \ @@ -613,7 +613,7 @@ clean-ports clean-overlay clean-extract-ecj clean-extract clean-extract-openjdk \ clean-replace-hotspot clean-generated clean-download clean-hgforest clean-download-openjdk \ clean-rewriter clean-rewrite-rhino clean-add-netx clean-add-netx-debug \ - clean-add-plugin clean-add-plugin-debug + clean-add-plugin clean-add-plugin-debug clean-about env: @echo 'unset JAVA_HOME' @@ -1469,7 +1469,8 @@ rm -f $(DEBUG_BUILD_OUTPUT_DIR)/j2re-image/lib/plugin.jar rm -f stamps/add-plugin-debug.stamp -stamps/add-netx.stamp: stamps/netx-dist.stamp extra-lib/about.jar +stamps/add-netx.stamp: stamps/netx-dist.stamp stamps/about.stamp +if ENABLE_NETX cp -pPRf $(abs_top_builddir)/netx.build/lib/classes.jar \ $(BUILD_OUTPUT_DIR)/j2sdk-image/jre/lib/netx.jar cp -pPRf $(abs_top_builddir)/netx.build/lib/classes.jar \ @@ -1486,6 +1487,7 @@ cp $(NETX_SRCDIR)/javaws.1 \ $(BUILD_OUTPUT_DIR)/j2re-image/man/man1 ; \ fi +endif touch stamps/add-netx.stamp clean-add-netx: @@ -1499,7 +1501,7 @@ rm -f $(BUILD_OUTPUT_DIR)/j2re-image/man/man1/javaws.1 rm -f stamps/add-netx.stamp -stamps/add-netx-debug.stamp: stamps/netx-dist.stamp extra-lib/about.jar +stamps/add-netx-debug.stamp: stamps/netx-dist.stamp stamps/about.stamp cp -pPRf $(abs_top_builddir)/netx.build/lib/classes.jar \ $(DEBUG_BUILD_OUTPUT_DIR)/j2sdk-image/jre/lib/netx.jar cp -pPRf $(abs_top_builddir)/netx.build/lib/classes.jar \ @@ -1693,6 +1695,7 @@ find $(NETX_SRCDIR) -name '*.java' | sort > $@ stamps/netx.stamp: netx-source-files.txt stamps/rt-class-files.stamp +if ENABLE_NETX mkdir -p $(abs_top_builddir)/netx.build $(BOOT_DIR)/bin/javac $(IT_JAVACFLAGS) \ -d $(abs_top_builddir)/netx.build \ @@ -1700,10 +1703,12 @@ -classpath $(RUNTIME) -bootclasspath \'\' \ @netx-source-files.txt cp -r $(NETX_RESOURCE_DIR) $(abs_top_builddir)/netx.build/net/sourceforge/jnlp +endif mkdir -p stamps touch $@ stamps/netx-dist.stamp: stamps/netx.stamp +if ENABLE_NETX (cd $(abs_top_builddir)/netx.build ; \ mkdir -p lib ; \ $(BOOT_DIR)/bin/jar cf lib/classes.jar javax/jnlp net ; \ @@ -1713,6 +1718,7 @@ $(BOOT_DIR)/bin/jar uf $(abs_top_builddir)/netx.build/lib/classes.jar \ `find . -type f -not -name '*.java'` ; \ $(ZIP) -qr $(abs_top_builddir)/netx.build/lib/src.zip javax net ) +endif mkdir -p stamps touch $@ @@ -1728,11 +1734,13 @@ stamps/extra-class-files.stamp: $(INITIAL_BOOTSTRAP_LINK_STAMP) \ extra-source-files.txt stamps/netx.stamp +if ENABLE_NETX mkdir -p extra-lib $(BOOT_DIR)/bin/javac $(IT_JAVACFLAGS) -d extra-lib \ -sourcepath extra -cp netx.build \ -bootclasspath $(RUNTIME) @extra-source-files.txt cp -r $(NETX_EXTRA_DIR) extra-lib/net/sourceforge/jnlp/about +endif mkdir -p stamps touch $@ @@ -1741,8 +1749,16 @@ rm -f stamps/extra-class-files.stamp rm -f extra-source-files.txt -extra-lib/about.jar: stamps/extra-class-files.stamp - $(BOOT_DIR)/bin/jar cf $@ -C extra-lib net ; +stamps/about.stamp: stamps/extra-class-files.stamp +if ENABLE_NETX + $(BOOT_DIR)/bin/jar cf extra-lib/about.jar -C extra-lib net +endif + mkdir -p stamps + touch $@ + +clean-about: + rm -f extra-lib/about.jar + rm -f stamps/about.stamp # PulseAudio based mixer # (pulse-java) diff -r 17c34c4c6fae acinclude.m4 --- a/acinclude.m4 Wed Nov 10 16:30:08 2010 +0000 +++ b/acinclude.m4 Thu Nov 11 13:20:31 2010 +0000 @@ -1459,12 +1459,17 @@ AC_DEFUN_ONCE([IT_CHECK_PLUGIN], [ +AC_REQUIRE([IT_CHECK_NETX]) AC_MSG_CHECKING([whether to build the browser plugin]) AC_ARG_ENABLE([plugin], [AS_HELP_STRING([--disable-plugin], [Disable compilation of browser plugin])], [enable_plugin="${enableval}"], [enable_plugin="yes"]) AC_MSG_RESULT(${enable_plugin}) +if test "x${enable_netx}" = "xno" ; then + AC_MSG_WARN([Plugin can not be built without NetX; disabling plugin]) + enable_plugin=no; +fi ]) AC_DEFUN_ONCE([IT_CHECK_PLUGIN_DEPENDENCIES], @@ -1556,3 +1561,14 @@ AM_CONDITIONAL([HAS_PAX], test x"${it_cv_pax}" = "xyes") AC_PROVIDE([$0])dnl ]) + +AC_DEFUN_ONCE([IT_CHECK_NETX], +[ +AC_MSG_CHECKING([whether to build NetX]) +AC_ARG_ENABLE([webstart], + [AS_HELP_STRING([--disable-webstart], + [Disable compilation of Web Start support])], + [enable_netx="${enableval}"], [enable_netx="yes"]) +AC_MSG_RESULT(${enable_netx}) +AM_CONDITIONAL(ENABLE_NETX, test "x${enable_netx}" = "xyes") +]) From jvanek at redhat.com Thu Nov 11 06:13:28 2010 From: jvanek at redhat.com (Jiri Vanek) Date: Thu, 11 Nov 2010 15:13:28 +0100 Subject: request commit for asians fonts config patches for fedoras In-Reply-To: <20101110141645.GC30517@rivendell.middle-earth.co.uk> References: <1289295987.2775.85.camel@springer.wildebeest.org> <20101109140517.GD7776@rivendell.middle-earth.co.uk> <1289311774.2775.358.camel@springer.wildebeest.org> <4CD9678E.8030103@redhat.com> <20101109154457.GE7776@rivendell.middle-earth.co.uk> <4CD973DE.9010604@redhat.com> <20101109170720.GH7776@rivendell.middle-earth.co.uk> <4CDA75A1.9030506@redhat.com> <20101110141645.GC30517@rivendell.middle-earth.co.uk> Message-ID: <4CDBFA08.2080002@redhat.com> Is it ok to backport for 1.8? On 11/10/2010 03:16 PM, Dr Andrew John Hughes wrote: > This looks okay now, if you fix the ChangeLog. At present, > it duplicates f14-fonts.patch. Please use: > > 2010-11-09 Jiri Vanek > > * Makefile.am: > (FONTCONFIG_PATH): Added path to fontconfig files. > (ICEDTEA_PATCHES): Add f14-fonts.patch. > (fonts): Added cloning of fontconfig.Fedora > to Fedora.12,11,10,9. > (patch-fsg): Depend on fonts.stamp. > * patches/f14-fonts.patch > Updated font configurations for Fedora 9-14 > Add additional fontconfig files to Makefile. > > On 11:36 Wed 10 Nov , Jiri Vanek wrote: >> # HG changeset patch >> # User Jiri Vanek >> # Date 1289385214 -3600 >> # Node ID f74b1d491ccc0aaba37abb789b11f43736c502fe >> # Parent 72de51f0a744bc38ed2f56a1ffb848b4aeaf0875 >> Updated font's configurations for Fedora 9-14 >> >> diff -r 72de51f0a744 -r f74b1d491ccc ChangeLog >> --- a/ChangeLog Tue Nov 09 14:53:31 2010 +0000 >> +++ b/ChangeLog Wed Nov 10 11:33:34 2010 +0100 >> @@ -1,3 +1,14 @@ >> +2010-11-09 Jiri Vanek >> + >> + * Makefile.am: >> + * patches/f14-fonts.patch >> + Updated font configurations for Fedora 9-14 >> + added cloning of fontconfig.Fedora to Fedora.12,11,10,9 >> + * patches/f14-fonts.patch >> + Add additional fontconfig files to Makefile. >> + Updated font configurations for Fedora 9-14 >> + >> + >> 2010-11-09 Andrew John Hughes >> >> * Makefile.am: >> diff -r 72de51f0a744 -r f74b1d491ccc Makefile.am >> --- a/Makefile.am Tue Nov 09 14:53:31 2010 +0000 >> +++ b/Makefile.am Wed Nov 10 11:33:34 2010 +0100 >> @@ -40,6 +40,8 @@ >> SERVER_DIR = hotspot/import/jre/lib/$(INSTALL_ARCH_DIR)/server >> BUILD_JRE_ARCH_DIR = >> $(BUILD_OUTPUT_DIR)/j2sdk-image/jre/lib/$(INSTALL_ARCH_DIR) >> BUILD_DEBUG_JRE_ARCH_DIR = >> $(DEBUG_BUILD_OUTPUT_DIR)/j2sdk-image/jre/lib/$(INSTALL_ARCH_DIR) >> +FONTCONFIG_PATH = openjdk/jdk/src/solaris/classes/sun/awt/fontconfigs >> + >> >> # Source directories >> >> @@ -295,7 +297,8 @@ >> patches/6703377-freetypescaler.patch \ >> patches/icedtea-jtreg-international-fonts.patch \ >> patches/openjdk/6967436-6976265-6967434-pisces.patch \ >> - patches/openjdk/6997495-test_correction_6857159.patch >> + patches/openjdk/6997495-test_correction_6857159.patch \ >> + patches/f14-fonts.patch >> >> if WITH_ALT_HSBUILD >> ICEDTEA_PATCHES += \ >> @@ -950,7 +953,16 @@ >> fi >> rm -f stamps/generated.stamp >> >> -stamps/patch-fsg.stamp: stamps/generated.stamp >> +stamps/fonts.stamp: stamps/generated.stamp >> + cp $(FONTCONFIG_PATH)/linux.fontconfig.Fedora.properties >> $(FONTCONFIG_PATH)/linux.fontconfig.Fedora.9.properties >> + cp $(FONTCONFIG_PATH)/linux.fontconfig.Fedora.properties >> $(FONTCONFIG_PATH)/linux.fontconfig.Fedora.10.properties >> + cp $(FONTCONFIG_PATH)/linux.fontconfig.Fedora.properties >> $(FONTCONFIG_PATH)/linux.fontconfig.Fedora.11.properties >> + cp $(FONTCONFIG_PATH)/linux.fontconfig.Fedora.properties >> $(FONTCONFIG_PATH)/linux.fontconfig.Fedora.12.properties >> + mkdir -p stamps >> + touch stamps/fonts.stamp >> + >> + >> +stamps/patch-fsg.stamp: stamps/fonts.stamp >> mkdir -p stamps ; \ >> rm -f stamps/patch-fsg.stamp.tmp ; \ >> touch stamps/patch-fsg.stamp.tmp ; \ >> diff -r 72de51f0a744 -r f74b1d491ccc patches/f14-fonts.patch >> --- /dev/null Thu Jan 01 00:00:00 1970 +0000 >> +++ b/patches/f14-fonts.patch Wed Nov 10 11:33:34 2010 +0100 >> @@ -0,0 +1,677 @@ >> +--- openjdk/jdk/make/sun/awt/Makefile 2010-11-04 09:52:49.583434000 +0100 >> ++++ openjdk/jdk/make/sun/awt/Makefile 2010-11-04 16:50:14.091688769 +0100 >> +@@ -387,6 +387,10 @@ >> + fontconfig.SuSE.properties \ >> + fontconfig.Ubuntu.properties \ >> + fontconfig.Fedora.properties \ >> ++ fontconfig.Fedora.9.properties \ >> ++ fontconfig.Fedora.10.properties \ >> ++ fontconfig.Fedora.11.properties \ >> ++ fontconfig.Fedora.12.properties \ >> + fontconfig.RedHat.6.0.properties \ >> + fontconfig.Gentoo.properties >> + else >> + >> +--- >> openjdk/jdk/src/solaris/classes/sun/awt/fontconfigs/linux.fontconfig.Fedora.11.properties >> 2010-11-04 11:06:26.695428114 +0100 >> ++++ >> openjdk/jdk/src/solaris/classes/sun/awt/fontconfigs/linux.fontconfig.Fedora.11.properties >> 2010-11-04 11:19:45.133587953 +0100 >> +@@ -35,6 +35,8 @@ >> + dialog.plain.korean=Baekmuk Gulim >> + dialog.plain.chinese-big5=AR PL ShanHeiSun Uni >> + dialog.plain.chinese-gb18030=AR PL ShanHeiSun Uni >> ++dialog.plain.assamese=Lohit Assamese >> ++dialog.plain.devanagari=Lohit Devanagari >> + dialog.plain.bengali=Lohit Bengali >> + dialog.plain.gujarati=Lohit Gujarati >> + dialog.plain.hindi=Lohit Hindi >> +@@ -50,6 +52,8 @@ >> + dialog.bold.korean=Baekmuk Gulim >> + dialog.bold.chinese-big5=AR PL ShanHeiSun Uni >> + dialog.bold.chinese-gb18030=AR PL ShanHeiSun Uni >> ++dialog.bold.assamese=Lohit Assamese >> ++dialog.bold.devanagari=Lohit Devanagari >> + dialog.bold.bengali=Lohit Bengali >> + dialog.bold.gujarati=Lohit Gujarati >> + dialog.bold.hindi=Lohit Hindi >> +@@ -65,6 +69,8 @@ >> + dialog.italic.korean=Baekmuk Gulim >> + dialog.italic.chinese-big5=AR PL ShanHeiSun Uni >> + dialog.italic.chinese-gb18030=AR PL ShanHeiSun Uni >> ++dialog.italic.assamese=Lohit Assamese >> ++dialog.italic.devanagari=Lohit Devanagari >> + dialog.italic.bengali=Lohit Bengali >> + dialog.italic.gujarati=Lohit Gujarati >> + dialog.italic.hindi=Lohit Hindi >> +@@ -80,6 +86,8 @@ >> + dialog.bolditalic.korean=Baekmuk Gulim >> + dialog.bolditalic.chinese-big5=AR PL ShanHeiSun Uni >> + dialog.bolditalic.chinese-gb18030=AR PL ShanHeiSun Uni >> ++dialog.bolditalic.assamese=Lohit Assamese >> ++dialog.bolditalic.devanagari=Lohit Devanagari >> + dialog.bolditalic.bengali=Lohit Bengali >> + dialog.bolditalic.gujarati=Lohit Gujarati >> + dialog.bolditalic.hindi=Lohit Hindi >> +@@ -95,6 +103,8 @@ >> + sansserif.plain.korean=Baekmuk Gulim >> + sansserif.plain.chinese-big5=AR PL ShanHeiSun Uni >> + sansserif.plain.chinese-gb18030=AR PL ShanHeiSun Uni >> ++sansserif.plain.assamese=Lohit Assamese >> ++sansserif.plain.devanagari=Lohit Devanagari >> + sansserif.plain.bengali=Lohit Bengali >> + sansserif.plain.gujarati=Lohit Gujarati >> + sansserif.plain.hindi=Lohit Hindi >> +@@ -110,6 +120,8 @@ >> + sansserif.bold.korean=Baekmuk Gulim >> + sansserif.bold.chinese-big5=AR PL ShanHeiSun Uni >> + sansserif.bold.chinese-gb18030=AR PL ShanHeiSun Uni >> ++sansserif.bold.assamese=Lohit Assamese >> ++sansserif.bold.devanagari=Lohit Devanagari >> + sansserif.bold.bengali=Lohit Bengali >> + sansserif.bold.gujarati=Lohit Gujarati >> + sansserif.bold.hindi=Lohit Hindi >> +@@ -125,6 +137,8 @@ >> + sansserif.italic.korean=Baekmuk Gulim >> + sansserif.italic.chinese-big5=AR PL ShanHeiSun Uni >> + sansserif.italic.chinese-gb18030=AR PL ShanHeiSun Uni >> ++sansserif.italic.assamese=Lohit Assamese >> ++sansserif.italic.devanagari=Lohit Devanagari >> + sansserif.italic.bengali=Lohit Bengali >> + sansserif.italic.gujarati=Lohit Gujarati >> + sansserif.italic.hindi=Lohit Hindi >> +@@ -140,6 +154,8 @@ >> + sansserif.bolditalic.korean=Baekmuk Gulim >> + sansserif.bolditalic.chinese-big5=AR PL ShanHeiSun Uni >> + sansserif.bolditalic.chinese-gb18030=AR PL ShanHeiSun Uni >> ++sansserif.bolditalic.assamese=Lohit Assamese >> ++sansserif.bolditalic.devanagari=Lohit Devanagari >> + sansserif.bolditalic.bengali=Lohit Bengali >> + sansserif.bolditalic.gujarati=Lohit Gujarati >> + sansserif.bolditalic.hindi=Lohit Hindi >> +@@ -155,6 +171,8 @@ >> + serif.plain.korean=Baekmuk Batang >> + serif.plain.chinese-big5=AR PL ZenKai Uni >> + serif.plain.chinese-gb18030=AR PL ZenKai Uni >> ++serif.plain.assamese=Lohit Assamese >> ++serif.plain.devanagari=Lohit Devanagari >> + serif.plain.bengali=Lohit Bengali >> + serif.plain.gujarati=Lohit Gujarati >> + serif.plain.hindi=Lohit Hindi >> +@@ -170,6 +188,8 @@ >> + serif.bold.korean=Baekmuk Batang >> + serif.bold.chinese-big5=AR PL ZenKai Uni >> + serif.bold.chinese-gb18030=AR PL ZenKai Uni >> ++serif.bold.assamese=Lohit Assamese >> ++serif.bold.devanagari=Lohit Devanagari >> + serif.bold.bengali=Lohit Bengali >> + serif.bold.gujarati=Lohit Gujarati >> + serif.bold.hindi=Lohit Hindi >> +@@ -185,6 +205,8 @@ >> + serif.italic.korean=Baekmuk Batang >> + serif.italic.chinese-big5=AR PL ZenKai Uni >> + serif.italic.chinese-gb18030=AR PL ZenKai Uni >> ++serif.italic.assamese=Lohit Assamese >> ++serif.italic.devanagari=Lohit Devanagari >> + serif.italic.bengali=Lohit Bengali >> + serif.italic.gujarati=Lohit Gujarati >> + serif.italic.hindi=Lohit Hindi >> +@@ -200,6 +222,8 @@ >> + serif.bolditalic.korean=Baekmuk Batang >> + serif.bolditalic.chinese-big5=AR PL ZenKai Uni >> + serif.bolditalic.chinese-gb18030=AR PL ZenKai Uni >> ++serif.bolditalic.assamese=Lohit Assamese >> ++serif.bolditalic.devanagari=Lohit Devanagari >> + serif.bolditalic.bengali=Lohit Bengali >> + serif.bolditalic.gujarati=Lohit Gujarati >> + serif.bolditalic.hindi=Lohit Hindi >> +@@ -215,6 +239,8 @@ >> + monospaced.plain.korean=Baekmuk Gulim >> + monospaced.plain.chinese-big5=AR PL ShanHeiSun Uni >> + monospaced.plain.chinese-gb18030=AR PL ShanHeiSun Uni >> ++monospaced.plain.assamese=Lohit Assamese >> ++monospaced.plain.devanagari=Lohit Devanagari >> + monospaced.plain.bengali=Lohit Bengali >> + monospaced.plain.gujarati=Lohit Gujarati >> + monospaced.plain.hindi=Lohit Hindi >> +@@ -230,6 +256,8 @@ >> + monospaced.bold.korean=Baekmuk Gulim >> + monospaced.bold.chinese-big5=AR PL ShanHeiSun Uni >> + monospaced.bold.chinese-gb18030=AR PL ShanHeiSun Uni >> ++monospaced.bold.assamese=Lohit Assamese >> ++monospaced.bold.devanagari=Lohit Devanagari >> + monospaced.bold.bengali=Lohit Bengali >> + monospaced.bold.gujarati=Lohit Gujarati >> + monospaced.bold.hindi=Lohit Hindi >> +@@ -245,6 +273,8 @@ >> + monospaced.italic.korean=Baekmuk Gulim >> + monospaced.italic.chinese-big5=AR PL ShanHeiSun Uni >> + monospaced.italic.chinese-gb18030=AR PL ShanHeiSun Uni >> ++monospaced.italic.assamese=Lohit Assamese >> ++monospaced.italic.devanagari=Lohit Devanagari >> + monospaced.italic.bengali=Lohit Bengali >> + monospaced.italic.gujarati=Lohit Gujarati >> + monospaced.italic.hindi=Lohit Hindi >> +@@ -260,6 +290,8 @@ >> + monospaced.bolditalic.korean=Baekmuk Gulim >> + monospaced.bolditalic.chinese-big5=AR PL ShanHeiSun Uni >> + monospaced.bolditalic.chinese-gb18030=AR PL ShanHeiSun Uni >> ++monospaced.bolditalic.assamese=Lohit Assamese >> ++monospaced.bolditalic.devanagari=Lohit Devanagari >> + monospaced.bolditalic.bengali=Lohit Bengali >> + monospaced.bolditalic.gujarati=Lohit Gujarati >> + monospaced.bolditalic.hindi=Lohit Hindi >> +@@ -275,6 +307,8 @@ >> + dialoginput.plain.korean=Baekmuk Gulim >> + dialoginput.plain.chinese-big5=AR PL ShanHeiSun Uni >> + dialoginput.plain.chinese-gb18030=AR PL ShanHeiSun Uni >> ++dialoginput.plain.assamese=Lohit Assamese >> ++dialoginput.plain.devanagari=Lohit Devanagari >> + dialoginput.plain.bengali=Lohit Bengali >> + dialoginput.plain.gujarati=Lohit Gujarati >> + dialoginput.plain.hindi=Lohit Hindi >> +@@ -290,6 +324,8 @@ >> + dialoginput.bold.korean=Baekmuk Gulim >> + dialoginput.bold.chinese-big5=AR PL ShanHeiSun Uni >> + dialoginput.bold.chinese-gb18030=AR PL ShanHeiSun Uni >> ++dialoginput.bold.assamese=Lohit Assamese >> ++dialoginput.bold.devanagari=Lohit Devanagari >> + dialoginput.bold.bengali=Lohit Bengali >> + dialoginput.bold.gujarati=Lohit Gujarati >> + dialoginput.bold.hindi=Lohit Hindi >> +@@ -305,6 +341,8 @@ >> + dialoginput.italic.korean=Baekmuk Gulim >> + dialoginput.italic.chinese-big5=AR PL ShanHeiSun Uni >> + dialoginput.italic.chinese-gb18030=AR PL ShanHeiSun Uni >> ++dialoginput.italic.assamese=Lohit Assamese >> ++dialoginput.italic.devanagari=Lohit Devanagari >> + dialoginput.italic.bengali=Lohit Bengali >> + dialoginput.italic.gujarati=Lohit Gujarati >> + dialoginput.italic.hindi=Lohit Hindi >> +@@ -320,6 +358,8 @@ >> + dialoginput.bolditalic.korean=Baekmuk Gulim >> + dialoginput.bolditalic.chinese-big5=AR PL ShanHeiSun Uni >> + dialoginput.bolditalic.chinese-gb18030=AR PL ShanHeiSun Uni >> ++dialoginput.bolditalic.assamese=Lohit Assamese >> ++dialoginput.bolditalic.devanagari=Lohit Devanagari >> + dialoginput.bolditalic.bengali=Lohit Bengali >> + dialoginput.bolditalic.gujarati=Lohit Gujarati >> + dialoginput.bolditalic.hindi=Lohit Hindi >> +@@ -356,21 +396,24 @@ >> + >> filename.DejaVu_Serif_Oblique=/usr/share/fonts/dejavu/DejaVuSerif-Oblique.ttf >> + >> filename.DejaVu_Serif_Bold_Oblique=/usr/share/fonts/dejavu/DejaVuSerif-BoldOblique.ttf >> + >> +-filename.Sazanami_Gothic=/usr/share/fonts/sazanami-fonts-gothic/sazanami-gothic.ttf >> +-filename.Sazanami_Mincho=/usr/share/fonts/sazanami-fonts-mincho/sazanami-mincho.ttf >> ++filename.Sazanami_Gothic=/usr/share/fonts/sazanami/gothic/sazanami-gothic.ttf >> ++filename.Sazanami_Mincho=/usr/share/fonts/sazanami/mincho/sazanami-mincho.ttf >> + filename.AR_PL_ShanHeiSun_Uni=/usr/share/fonts/cjkunifonts-uming/uming.ttc >> + filename.AR_PL_ZenKai_Uni=/usr/share/fonts/cjkunifonts-ukai/ukai.ttc >> +-filename.Baekmuk_Gulim=/usr/share/fonts/baekmuk-ttf-gulim/gulim.ttf >> +-filename.Baekmuk_Batang=/usr/share/fonts/baekmuk-ttf-batang/batang.ttf >> ++filename.Baekmuk_Gulim=/usr/share/fonts/baekmuk-ttf/gulim.ttf >> ++filename.Baekmuk_Batang=/usr/share/fonts/baekmuk-ttf/batang.ttf >> ++ >> ++filename.Lohit_Assamese=/usr/share/fonts/lohit-assamese/Lohit-Assamese.ttf >> ++filename.Lohit_Devanagari=/usr/share/fonts/lohit-devanagari/Lohit-Devanagari.ttf >> ++filename.Lohit_Bengali=/usr/share/fonts/lohit-bengali/Lohit-Bengali.ttf >> ++filename.Lohit_Gujarati=/usr/share/fonts/lohit-gujarati/Lohit-Gujarati.ttf >> ++filename.Lohit_Hindi=/usr/share/fonts/lohit-hindi/Lohit-Hindi.ttf >> ++filename.Lohit_Kannda=/usr/share/fonts/lohit-kannada/Lohit-Kannada.ttf >> ++filename.Lohit_Malayalam=/usr/share/fonts/lohit-malayalam/Lohit-Malayalam.ttf >> ++filename.Lohit_Oriya=/usr/share/fonts/lohit-oriya/Lohit-Oriya.ttf >> ++filename.Lohit_Punjabi=/usr/share/fonts/lohit-punjabi/Lohit-Punjabi.ttf >> ++filename.Lohit_Tamil=/usr/share/fonts/lohit-tamil/Lohit-Tamil.ttf >> ++filename.Lohit_Telugu=/usr/share/fonts/lohit-telugu/Lohit-Telugu.ttf >> + >> +-filename.Lohit_Bengali=/usr/share/fonts/lohit-bengali/lohit_bn.ttf >> +-filename.Lohit_Gujarati=/usr/share/fonts/lohit-gujarati/lohit_gu.ttf >> +-filename.Lohit_Hindi=/usr/share/fonts/lohit-hindi/lohit_hi.ttf >> +-filename.Lohit_Kannda=/usr/share/fonts/lohit-kannada/lohit_kn.ttf >> +-filename.Lohit_Malayalam=/usr/share/fonts/lohit-malayalam/lohit_ml.ttf >> +-filename.Lohit_Oriya=/usr/share/fonts/lohit-oriya/lohit_or.ttf >> +-filename.Lohit_Punjabi=/usr/share/fonts/lohit-punjabi/lohit_pa.ttf >> +-filename.Lohit_Tamil=/usr/share/fonts/lohit-tamil/lohit_ta.ttf >> +-filename.Lohit_Telugu=/usr/share/fonts/lohit-telugu/lohit_te.ttf >> + filename.LKLUG=/usr/share/fonts/lklug/lklug.ttf >> + >> + >> +--- >> openjdk/jdk/src/solaris/classes/sun/awt/fontconfigs/linux.fontconfig.Fedora.12.properties >> 2010-11-04 11:06:26.695428114 +0100 >> ++++ >> openjdk/jdk/src/solaris/classes/sun/awt/fontconfigs/linux.fontconfig.Fedora.12.properties >> 2010-11-04 11:19:45.133587953 +0100 >> +@@ -35,6 +35,8 @@ >> + dialog.plain.korean=Baekmuk Gulim >> + dialog.plain.chinese-big5=AR PL ShanHeiSun Uni >> + dialog.plain.chinese-gb18030=AR PL ShanHeiSun Uni >> ++dialog.plain.assamese=Lohit Assamese >> ++dialog.plain.devanagari=Lohit Devanagari >> + dialog.plain.bengali=Lohit Bengali >> + dialog.plain.gujarati=Lohit Gujarati >> + dialog.plain.hindi=Lohit Hindi >> +@@ -50,6 +52,8 @@ >> + dialog.bold.korean=Baekmuk Gulim >> + dialog.bold.chinese-big5=AR PL ShanHeiSun Uni >> + dialog.bold.chinese-gb18030=AR PL ShanHeiSun Uni >> ++dialog.bold.assamese=Lohit Assamese >> ++dialog.bold.devanagari=Lohit Devanagari >> + dialog.bold.bengali=Lohit Bengali >> + dialog.bold.gujarati=Lohit Gujarati >> + dialog.bold.hindi=Lohit Hindi >> +@@ -65,6 +69,8 @@ >> + dialog.italic.korean=Baekmuk Gulim >> + dialog.italic.chinese-big5=AR PL ShanHeiSun Uni >> + dialog.italic.chinese-gb18030=AR PL ShanHeiSun Uni >> ++dialog.italic.assamese=Lohit Assamese >> ++dialog.italic.devanagari=Lohit Devanagari >> + dialog.italic.bengali=Lohit Bengali >> + dialog.italic.gujarati=Lohit Gujarati >> + dialog.italic.hindi=Lohit Hindi >> +@@ -80,6 +86,8 @@ >> + dialog.bolditalic.korean=Baekmuk Gulim >> + dialog.bolditalic.chinese-big5=AR PL ShanHeiSun Uni >> + dialog.bolditalic.chinese-gb18030=AR PL ShanHeiSun Uni >> ++dialog.bolditalic.assamese=Lohit Assamese >> ++dialog.bolditalic.devanagari=Lohit Devanagari >> + dialog.bolditalic.bengali=Lohit Bengali >> + dialog.bolditalic.gujarati=Lohit Gujarati >> + dialog.bolditalic.hindi=Lohit Hindi >> +@@ -95,6 +103,8 @@ >> + sansserif.plain.korean=Baekmuk Gulim >> + sansserif.plain.chinese-big5=AR PL ShanHeiSun Uni >> + sansserif.plain.chinese-gb18030=AR PL ShanHeiSun Uni >> ++sansserif.plain.assamese=Lohit Assamese >> ++sansserif.plain.devanagari=Lohit Devanagari >> + sansserif.plain.bengali=Lohit Bengali >> + sansserif.plain.gujarati=Lohit Gujarati >> + sansserif.plain.hindi=Lohit Hindi >> +@@ -110,6 +120,8 @@ >> + sansserif.bold.korean=Baekmuk Gulim >> + sansserif.bold.chinese-big5=AR PL ShanHeiSun Uni >> + sansserif.bold.chinese-gb18030=AR PL ShanHeiSun Uni >> ++sansserif.bold.assamese=Lohit Assamese >> ++sansserif.bold.devanagari=Lohit Devanagari >> + sansserif.bold.bengali=Lohit Bengali >> + sansserif.bold.gujarati=Lohit Gujarati >> + sansserif.bold.hindi=Lohit Hindi >> +@@ -125,6 +137,8 @@ >> + sansserif.italic.korean=Baekmuk Gulim >> + sansserif.italic.chinese-big5=AR PL ShanHeiSun Uni >> + sansserif.italic.chinese-gb18030=AR PL ShanHeiSun Uni >> ++sansserif.italic.assamese=Lohit Assamese >> ++sansserif.italic.devanagari=Lohit Devanagari >> + sansserif.italic.bengali=Lohit Bengali >> + sansserif.italic.gujarati=Lohit Gujarati >> + sansserif.italic.hindi=Lohit Hindi >> +@@ -140,6 +154,8 @@ >> + sansserif.bolditalic.korean=Baekmuk Gulim >> + sansserif.bolditalic.chinese-big5=AR PL ShanHeiSun Uni >> + sansserif.bolditalic.chinese-gb18030=AR PL ShanHeiSun Uni >> ++sansserif.bolditalic.assamese=Lohit Assamese >> ++sansserif.bolditalic.devanagari=Lohit Devanagari >> + sansserif.bolditalic.bengali=Lohit Bengali >> + sansserif.bolditalic.gujarati=Lohit Gujarati >> + sansserif.bolditalic.hindi=Lohit Hindi >> +@@ -155,6 +171,8 @@ >> + serif.plain.korean=Baekmuk Batang >> + serif.plain.chinese-big5=AR PL ZenKai Uni >> + serif.plain.chinese-gb18030=AR PL ZenKai Uni >> ++serif.plain.assamese=Lohit Assamese >> ++serif.plain.devanagari=Lohit Devanagari >> + serif.plain.bengali=Lohit Bengali >> + serif.plain.gujarati=Lohit Gujarati >> + serif.plain.hindi=Lohit Hindi >> +@@ -170,6 +188,8 @@ >> + serif.bold.korean=Baekmuk Batang >> + serif.bold.chinese-big5=AR PL ZenKai Uni >> + serif.bold.chinese-gb18030=AR PL ZenKai Uni >> ++serif.bold.assamese=Lohit Assamese >> ++serif.bold.devanagari=Lohit Devanagari >> + serif.bold.bengali=Lohit Bengali >> + serif.bold.gujarati=Lohit Gujarati >> + serif.bold.hindi=Lohit Hindi >> +@@ -185,6 +205,8 @@ >> + serif.italic.korean=Baekmuk Batang >> + serif.italic.chinese-big5=AR PL ZenKai Uni >> + serif.italic.chinese-gb18030=AR PL ZenKai Uni >> ++serif.italic.assamese=Lohit Assamese >> ++serif.italic.devanagari=Lohit Devanagari >> + serif.italic.bengali=Lohit Bengali >> + serif.italic.gujarati=Lohit Gujarati >> + serif.italic.hindi=Lohit Hindi >> +@@ -200,6 +222,8 @@ >> + serif.bolditalic.korean=Baekmuk Batang >> + serif.bolditalic.chinese-big5=AR PL ZenKai Uni >> + serif.bolditalic.chinese-gb18030=AR PL ZenKai Uni >> ++serif.bolditalic.assamese=Lohit Assamese >> ++serif.bolditalic.devanagari=Lohit Devanagari >> + serif.bolditalic.bengali=Lohit Bengali >> + serif.bolditalic.gujarati=Lohit Gujarati >> + serif.bolditalic.hindi=Lohit Hindi >> +@@ -215,6 +239,8 @@ >> + monospaced.plain.korean=Baekmuk Gulim >> + monospaced.plain.chinese-big5=AR PL ShanHeiSun Uni >> + monospaced.plain.chinese-gb18030=AR PL ShanHeiSun Uni >> ++monospaced.plain.assamese=Lohit Assamese >> ++monospaced.plain.devanagari=Lohit Devanagari >> + monospaced.plain.bengali=Lohit Bengali >> + monospaced.plain.gujarati=Lohit Gujarati >> + monospaced.plain.hindi=Lohit Hindi >> +@@ -230,6 +256,8 @@ >> + monospaced.bold.korean=Baekmuk Gulim >> + monospaced.bold.chinese-big5=AR PL ShanHeiSun Uni >> + monospaced.bold.chinese-gb18030=AR PL ShanHeiSun Uni >> ++monospaced.bold.assamese=Lohit Assamese >> ++monospaced.bold.devanagari=Lohit Devanagari >> + monospaced.bold.bengali=Lohit Bengali >> + monospaced.bold.gujarati=Lohit Gujarati >> + monospaced.bold.hindi=Lohit Hindi >> +@@ -245,6 +273,8 @@ >> + monospaced.italic.korean=Baekmuk Gulim >> + monospaced.italic.chinese-big5=AR PL ShanHeiSun Uni >> + monospaced.italic.chinese-gb18030=AR PL ShanHeiSun Uni >> ++monospaced.italic.assamese=Lohit Assamese >> ++monospaced.italic.devanagari=Lohit Devanagari >> + monospaced.italic.bengali=Lohit Bengali >> + monospaced.italic.gujarati=Lohit Gujarati >> + monospaced.italic.hindi=Lohit Hindi >> +@@ -260,6 +290,8 @@ >> + monospaced.bolditalic.korean=Baekmuk Gulim >> + monospaced.bolditalic.chinese-big5=AR PL ShanHeiSun Uni >> + monospaced.bolditalic.chinese-gb18030=AR PL ShanHeiSun Uni >> ++monospaced.bolditalic.assamese=Lohit Assamese >> ++monospaced.bolditalic.devanagari=Lohit Devanagari >> + monospaced.bolditalic.bengali=Lohit Bengali >> + monospaced.bolditalic.gujarati=Lohit Gujarati >> + monospaced.bolditalic.hindi=Lohit Hindi >> +@@ -275,6 +307,8 @@ >> + dialoginput.plain.korean=Baekmuk Gulim >> + dialoginput.plain.chinese-big5=AR PL ShanHeiSun Uni >> + dialoginput.plain.chinese-gb18030=AR PL ShanHeiSun Uni >> ++dialoginput.plain.assamese=Lohit Assamese >> ++dialoginput.plain.devanagari=Lohit Devanagari >> + dialoginput.plain.bengali=Lohit Bengali >> + dialoginput.plain.gujarati=Lohit Gujarati >> + dialoginput.plain.hindi=Lohit Hindi >> +@@ -290,6 +324,8 @@ >> + dialoginput.bold.korean=Baekmuk Gulim >> + dialoginput.bold.chinese-big5=AR PL ShanHeiSun Uni >> + dialoginput.bold.chinese-gb18030=AR PL ShanHeiSun Uni >> ++dialoginput.bold.assamese=Lohit Assamese >> ++dialoginput.bold.devanagari=Lohit Devanagari >> + dialoginput.bold.bengali=Lohit Bengali >> + dialoginput.bold.gujarati=Lohit Gujarati >> + dialoginput.bold.hindi=Lohit Hindi >> +@@ -305,6 +341,8 @@ >> + dialoginput.italic.korean=Baekmuk Gulim >> + dialoginput.italic.chinese-big5=AR PL ShanHeiSun Uni >> + dialoginput.italic.chinese-gb18030=AR PL ShanHeiSun Uni >> ++dialoginput.italic.assamese=Lohit Assamese >> ++dialoginput.italic.devanagari=Lohit Devanagari >> + dialoginput.italic.bengali=Lohit Bengali >> + dialoginput.italic.gujarati=Lohit Gujarati >> + dialoginput.italic.hindi=Lohit Hindi >> +@@ -320,6 +358,8 @@ >> + dialoginput.bolditalic.korean=Baekmuk Gulim >> + dialoginput.bolditalic.chinese-big5=AR PL ShanHeiSun Uni >> + dialoginput.bolditalic.chinese-gb18030=AR PL ShanHeiSun Uni >> ++dialoginput.bolditalic.assamese=Lohit Assamese >> ++dialoginput.bolditalic.devanagari=Lohit Devanagari >> + dialoginput.bolditalic.bengali=Lohit Bengali >> + dialoginput.bolditalic.gujarati=Lohit Gujarati >> + dialoginput.bolditalic.hindi=Lohit Hindi >> +@@ -356,21 +396,24 @@ >> + >> filename.DejaVu_Serif_Oblique=/usr/share/fonts/dejavu/DejaVuSerif-Oblique.ttf >> + >> filename.DejaVu_Serif_Bold_Oblique=/usr/share/fonts/dejavu/DejaVuSerif-BoldOblique.ttf >> + >> +-filename.Sazanami_Gothic=/usr/share/fonts/sazanami-fonts-gothic/sazanami-gothic.ttf >> +-filename.Sazanami_Mincho=/usr/share/fonts/sazanami-fonts-mincho/sazanami-mincho.ttf >> ++filename.Sazanami_Gothic=/usr/share/fonts/sazanami/gothic/sazanami-gothic.ttf >> ++filename.Sazanami_Mincho=/usr/share/fonts/sazanami/mincho/sazanami-mincho.ttf >> + filename.AR_PL_ShanHeiSun_Uni=/usr/share/fonts/cjkunifonts-uming/uming.ttc >> + filename.AR_PL_ZenKai_Uni=/usr/share/fonts/cjkunifonts-ukai/ukai.ttc >> +-filename.Baekmuk_Gulim=/usr/share/fonts/baekmuk-ttf-gulim/gulim.ttf >> +-filename.Baekmuk_Batang=/usr/share/fonts/baekmuk-ttf-batang/batang.ttf >> ++filename.Baekmuk_Gulim=/usr/share/fonts/baekmuk-ttf/gulim.ttf >> ++filename.Baekmuk_Batang=/usr/share/fonts/baekmuk-ttf/batang.ttf >> ++ >> ++filename.Lohit_Assamese=/usr/share/fonts/lohit-assamese/Lohit-Assamese.ttf >> ++filename.Lohit_Devanagari=/usr/share/fonts/lohit-devanagari/Lohit-Devanagari.ttf >> ++filename.Lohit_Bengali=/usr/share/fonts/lohit-bengali/Lohit-Bengali.ttf >> ++filename.Lohit_Gujarati=/usr/share/fonts/lohit-gujarati/Lohit-Gujarati.ttf >> ++filename.Lohit_Hindi=/usr/share/fonts/lohit-devanagari/Lohit-Devanagari.ttf >> ++filename.Lohit_Kannda=/usr/share/fonts/lohit-kannada/Lohit-Kannada.ttf >> ++filename.Lohit_Malayalam=/usr/share/fonts/lohit-malayalam/Lohit-Malayalam.ttf >> ++filename.Lohit_Oriya=/usr/share/fonts/lohit-oriya/Lohit-Oriya.ttf >> ++filename.Lohit_Punjabi=/usr/share/fonts/lohit-punjabi/Lohit-Punjabi.ttf >> ++filename.Lohit_Tamil=/usr/share/fonts/lohit-tamil/Lohit-Tamil.ttf >> ++filename.Lohit_Telugu=/usr/share/fonts/lohit-telugu/Lohit-Telugu.ttf >> + >> +-filename.Lohit_Bengali=/usr/share/fonts/lohit-bengali/lohit_bn.ttf >> +-filename.Lohit_Gujarati=/usr/share/fonts/lohit-gujarati/lohit_gu.ttf >> +-filename.Lohit_Hindi=/usr/share/fonts/lohit-hindi/lohit_hi.ttf >> +-filename.Lohit_Kannda=/usr/share/fonts/lohit-kannada/lohit_kn.ttf >> +-filename.Lohit_Malayalam=/usr/share/fonts/lohit-malayalam/lohit_ml.ttf >> +-filename.Lohit_Oriya=/usr/share/fonts/lohit-oriya/lohit_or.ttf >> +-filename.Lohit_Punjabi=/usr/share/fonts/lohit-punjabi/lohit_pa.ttf >> +-filename.Lohit_Tamil=/usr/share/fonts/lohit-tamil/lohit_ta.ttf >> +-filename.Lohit_Telugu=/usr/share/fonts/lohit-telugu/lohit_te.ttf >> + filename.LKLUG=/usr/share/fonts/lklug/lklug.ttf >> + >> +--- >> openjdk/jdk/src/solaris/classes/sun/awt/fontconfigs/linux.fontconfig.Fedora.properties >> 2010-11-04 11:06:26.695428114 +0100 >> ++++ >> openjdk/jdk/src/solaris/classes/sun/awt/fontconfigs/linux.fontconfig.Fedora.properties >> 2010-11-04 11:06:25.602455633 +0100 >> +@@ -35,6 +35,8 @@ >> + dialog.plain.korean=Baekmuk Gulim >> + dialog.plain.chinese-big5=AR PL ShanHeiSun Uni >> + dialog.plain.chinese-gb18030=AR PL ShanHeiSun Uni >> ++dialog.plain.assamese=Lohit Assamese >> ++dialog.plain.devanagari=Lohit Devanagari >> + dialog.plain.bengali=Lohit Bengali >> + dialog.plain.gujarati=Lohit Gujarati >> + dialog.plain.hindi=Lohit Hindi >> +@@ -50,6 +52,8 @@ >> + dialog.bold.korean=Baekmuk Gulim >> + dialog.bold.chinese-big5=AR PL ShanHeiSun Uni >> + dialog.bold.chinese-gb18030=AR PL ShanHeiSun Uni >> ++dialog.bold.assamese=Lohit Assamese >> ++dialog.bold.devanagari=Lohit Devanagari >> + dialog.bold.bengali=Lohit Bengali >> + dialog.bold.gujarati=Lohit Gujarati >> + dialog.bold.hindi=Lohit Hindi >> +@@ -65,6 +69,8 @@ >> + dialog.italic.korean=Baekmuk Gulim >> + dialog.italic.chinese-big5=AR PL ShanHeiSun Uni >> + dialog.italic.chinese-gb18030=AR PL ShanHeiSun Uni >> ++dialog.italic.assamese=Lohit Assamese >> ++dialog.italic.devanagari=Lohit Devanagari >> + dialog.italic.bengali=Lohit Bengali >> + dialog.italic.gujarati=Lohit Gujarati >> + dialog.italic.hindi=Lohit Hindi >> +@@ -80,6 +86,8 @@ >> + dialog.bolditalic.korean=Baekmuk Gulim >> + dialog.bolditalic.chinese-big5=AR PL ShanHeiSun Uni >> + dialog.bolditalic.chinese-gb18030=AR PL ShanHeiSun Uni >> ++dialog.bolditalic.assamese=Lohit Assamese >> ++dialog.bolditalic.devanagari=Lohit Devanagari >> + dialog.bolditalic.bengali=Lohit Bengali >> + dialog.bolditalic.gujarati=Lohit Gujarati >> + dialog.bolditalic.hindi=Lohit Hindi >> +@@ -95,6 +103,8 @@ >> + sansserif.plain.korean=Baekmuk Gulim >> + sansserif.plain.chinese-big5=AR PL ShanHeiSun Uni >> + sansserif.plain.chinese-gb18030=AR PL ShanHeiSun Uni >> ++sansserif.plain.assamese=Lohit Assamese >> ++sansserif.plain.devanagari=Lohit Devanagari >> + sansserif.plain.bengali=Lohit Bengali >> + sansserif.plain.gujarati=Lohit Gujarati >> + sansserif.plain.hindi=Lohit Hindi >> +@@ -110,6 +120,8 @@ >> + sansserif.bold.korean=Baekmuk Gulim >> + sansserif.bold.chinese-big5=AR PL ShanHeiSun Uni >> + sansserif.bold.chinese-gb18030=AR PL ShanHeiSun Uni >> ++sansserif.bold.assamese=Lohit Assamese >> ++sansserif.bold.devanagari=Lohit Devanagari >> + sansserif.bold.bengali=Lohit Bengali >> + sansserif.bold.gujarati=Lohit Gujarati >> + sansserif.bold.hindi=Lohit Hindi >> +@@ -125,6 +137,8 @@ >> + sansserif.italic.korean=Baekmuk Gulim >> + sansserif.italic.chinese-big5=AR PL ShanHeiSun Uni >> + sansserif.italic.chinese-gb18030=AR PL ShanHeiSun Uni >> ++sansserif.italic.assamese=Lohit Assamese >> ++sansserif.italic.devanagari=Lohit Devanagari >> + sansserif.italic.bengali=Lohit Bengali >> + sansserif.italic.gujarati=Lohit Gujarati >> + sansserif.italic.hindi=Lohit Hindi >> +@@ -140,6 +154,8 @@ >> + sansserif.bolditalic.korean=Baekmuk Gulim >> + sansserif.bolditalic.chinese-big5=AR PL ShanHeiSun Uni >> + sansserif.bolditalic.chinese-gb18030=AR PL ShanHeiSun Uni >> ++sansserif.bolditalic.assamese=Lohit Assamese >> ++sansserif.bolditalic.devanagari=Lohit Devanagari >> + sansserif.bolditalic.bengali=Lohit Bengali >> + sansserif.bolditalic.gujarati=Lohit Gujarati >> + sansserif.bolditalic.hindi=Lohit Hindi >> +@@ -155,6 +171,8 @@ >> + serif.plain.korean=Baekmuk Batang >> + serif.plain.chinese-big5=AR PL ZenKai Uni >> + serif.plain.chinese-gb18030=AR PL ZenKai Uni >> ++serif.plain.assamese=Lohit Assamese >> ++serif.plain.devanagari=Lohit Devanagari >> + serif.plain.bengali=Lohit Bengali >> + serif.plain.gujarati=Lohit Gujarati >> + serif.plain.hindi=Lohit Hindi >> +@@ -170,6 +188,8 @@ >> + serif.bold.korean=Baekmuk Batang >> + serif.bold.chinese-big5=AR PL ZenKai Uni >> + serif.bold.chinese-gb18030=AR PL ZenKai Uni >> ++serif.bold.assamese=Lohit Assamese >> ++serif.bold.devanagari=Lohit Devanagari >> + serif.bold.bengali=Lohit Bengali >> + serif.bold.gujarati=Lohit Gujarati >> + serif.bold.hindi=Lohit Hindi >> +@@ -185,6 +205,8 @@ >> + serif.italic.korean=Baekmuk Batang >> + serif.italic.chinese-big5=AR PL ZenKai Uni >> + serif.italic.chinese-gb18030=AR PL ZenKai Uni >> ++serif.italic.assamese=Lohit Assamese >> ++serif.italic.devanagari=Lohit Devanagari >> + serif.italic.bengali=Lohit Bengali >> + serif.italic.gujarati=Lohit Gujarati >> + serif.italic.hindi=Lohit Hindi >> +@@ -200,6 +222,8 @@ >> + serif.bolditalic.korean=Baekmuk Batang >> + serif.bolditalic.chinese-big5=AR PL ZenKai Uni >> + serif.bolditalic.chinese-gb18030=AR PL ZenKai Uni >> ++serif.bolditalic.assamese=Lohit Assamese >> ++serif.bolditalic.devanagari=Lohit Devanagari >> + serif.bolditalic.bengali=Lohit Bengali >> + serif.bolditalic.gujarati=Lohit Gujarati >> + serif.bolditalic.hindi=Lohit Hindi >> +@@ -215,6 +239,8 @@ >> + monospaced.plain.korean=Baekmuk Gulim >> + monospaced.plain.chinese-big5=AR PL ShanHeiSun Uni >> + monospaced.plain.chinese-gb18030=AR PL ShanHeiSun Uni >> ++monospaced.plain.assamese=Lohit Assamese >> ++monospaced.plain.devanagari=Lohit Devanagari >> + monospaced.plain.bengali=Lohit Bengali >> + monospaced.plain.gujarati=Lohit Gujarati >> + monospaced.plain.hindi=Lohit Hindi >> +@@ -230,6 +256,8 @@ >> + monospaced.bold.korean=Baekmuk Gulim >> + monospaced.bold.chinese-big5=AR PL ShanHeiSun Uni >> + monospaced.bold.chinese-gb18030=AR PL ShanHeiSun Uni >> ++monospaced.bold.assamese=Lohit Assamese >> ++monospaced.bold.devanagari=Lohit Devanagari >> + monospaced.bold.bengali=Lohit Bengali >> + monospaced.bold.gujarati=Lohit Gujarati >> + monospaced.bold.hindi=Lohit Hindi >> +@@ -245,6 +273,8 @@ >> + monospaced.italic.korean=Baekmuk Gulim >> + monospaced.italic.chinese-big5=AR PL ShanHeiSun Uni >> + monospaced.italic.chinese-gb18030=AR PL ShanHeiSun Uni >> ++monospaced.italic.assamese=Lohit Assamese >> ++monospaced.italic.devanagari=Lohit Devanagari >> + monospaced.italic.bengali=Lohit Bengali >> + monospaced.italic.gujarati=Lohit Gujarati >> + monospaced.italic.hindi=Lohit Hindi >> +@@ -260,6 +290,8 @@ >> + monospaced.bolditalic.korean=Baekmuk Gulim >> + monospaced.bolditalic.chinese-big5=AR PL ShanHeiSun Uni >> + monospaced.bolditalic.chinese-gb18030=AR PL ShanHeiSun Uni >> ++monospaced.bolditalic.assamese=Lohit Assamese >> ++monospaced.bolditalic.devanagari=Lohit Devanagari >> + monospaced.bolditalic.bengali=Lohit Bengali >> + monospaced.bolditalic.gujarati=Lohit Gujarati >> + monospaced.bolditalic.hindi=Lohit Hindi >> +@@ -275,6 +307,8 @@ >> + dialoginput.plain.korean=Baekmuk Gulim >> + dialoginput.plain.chinese-big5=AR PL ShanHeiSun Uni >> + dialoginput.plain.chinese-gb18030=AR PL ShanHeiSun Uni >> ++dialoginput.plain.assamese=Lohit Assamese >> ++dialoginput.plain.devanagari=Lohit Devanagari >> + dialoginput.plain.bengali=Lohit Bengali >> + dialoginput.plain.gujarati=Lohit Gujarati >> + dialoginput.plain.hindi=Lohit Hindi >> +@@ -290,6 +324,8 @@ >> + dialoginput.bold.korean=Baekmuk Gulim >> + dialoginput.bold.chinese-big5=AR PL ShanHeiSun Uni >> + dialoginput.bold.chinese-gb18030=AR PL ShanHeiSun Uni >> ++dialoginput.bold.assamese=Lohit Assamese >> ++dialoginput.bold.devanagari=Lohit Devanagari >> + dialoginput.bold.bengali=Lohit Bengali >> + dialoginput.bold.gujarati=Lohit Gujarati >> + dialoginput.bold.hindi=Lohit Hindi >> +@@ -305,6 +341,8 @@ >> + dialoginput.italic.korean=Baekmuk Gulim >> + dialoginput.italic.chinese-big5=AR PL ShanHeiSun Uni >> + dialoginput.italic.chinese-gb18030=AR PL ShanHeiSun Uni >> ++dialoginput.italic.assamese=Lohit Assamese >> ++dialoginput.italic.devanagari=Lohit Devanagari >> + dialoginput.italic.bengali=Lohit Bengali >> + dialoginput.italic.gujarati=Lohit Gujarati >> + dialoginput.italic.hindi=Lohit Hindi >> +@@ -320,6 +358,8 @@ >> + dialoginput.bolditalic.korean=Baekmuk Gulim >> + dialoginput.bolditalic.chinese-big5=AR PL ShanHeiSun Uni >> + dialoginput.bolditalic.chinese-gb18030=AR PL ShanHeiSun Uni >> ++dialoginput.bolditalic.assamese=Lohit Assamese >> ++dialoginput.bolditalic.devanagari=Lohit Devanagari >> + dialoginput.bolditalic.bengali=Lohit Bengali >> + dialoginput.bolditalic.gujarati=Lohit Gujarati >> + dialoginput.bolditalic.hindi=Lohit Hindi >> +@@ -356,21 +396,24 @@ >> + >> filename.DejaVu_Serif_Oblique=/usr/share/fonts/dejavu/DejaVuSerif-Oblique.ttf >> + >> filename.DejaVu_Serif_Bold_Oblique=/usr/share/fonts/dejavu/DejaVuSerif-BoldOblique.ttf >> + >> +-filename.Sazanami_Gothic=/usr/share/fonts/sazanami-fonts-gothic/sazanami-gothic.ttf >> +-filename.Sazanami_Mincho=/usr/share/fonts/sazanami-fonts-mincho/sazanami-mincho.ttf >> +-filename.AR_PL_ShanHeiSun_Uni=/usr/share/fonts/cjkunifonts-uming/uming.ttc >> +-filename.AR_PL_ZenKai_Uni=/usr/share/fonts/cjkunifonts-ukai/ukai.ttc >> +-filename.Baekmuk_Gulim=/usr/share/fonts/baekmuk-ttf-gulim/gulim.ttf >> +-filename.Baekmuk_Batang=/usr/share/fonts/baekmuk-ttf-batang/batang.ttf >> ++filename.Sazanami_Gothic=/usr/share/fonts/sazanami/gothic/sazanami-gothic.ttf >> ++filename.Sazanami_Mincho=/usr/share/fonts/sazanami/mincho/sazanami-mincho.ttf >> ++filename.AR_PL_ShanHeiSun_Uni=/usr/share/fonts/cjkuni-uming/uming.ttc >> ++filename.AR_PL_ZenKai_Uni=/usr/share/fonts/cjkuni-ukai/ukai.ttc >> ++filename.Baekmuk_Gulim=/usr/share/fonts/baekmuk-ttf/gulim.ttf >> ++filename.Baekmuk_Batang=/usr/share/fonts/baekmuk-ttf/batang.ttf >> ++ >> ++filename.Lohit_Assamese=/usr/share/fonts/lohit-assamese/Lohit-Assamese.ttf >> ++filename.Lohit_Devanagari=/usr/share/fonts/lohit-devanagari/Lohit-Devanagari.ttf >> ++filename.Lohit_Bengali=/usr/share/fonts/lohit-bengali/Lohit-Bengali.ttf >> ++filename.Lohit_Gujarati=/usr/share/fonts/lohit-gujarati/Lohit-Gujarati.ttf >> ++filename.Lohit_Hindi=/usr/share/fonts/lohit-devanagari/Lohit-Devanagari.ttf >> ++filename.Lohit_Kannda=/usr/share/fonts/lohit-kannada/Lohit-Kannada.ttf >> ++filename.Lohit_Malayalam=/usr/share/fonts/lohit-malayalam/Lohit-Malayalam.ttf >> ++filename.Lohit_Oriya=/usr/share/fonts/lohit-oriya/Lohit-Oriya.ttf >> ++filename.Lohit_Punjabi=/usr/share/fonts/lohit-punjabi/Lohit-Punjabi.ttf >> ++filename.Lohit_Tamil=/usr/share/fonts/lohit-tamil/Lohit-Tamil.ttf >> ++filename.Lohit_Telugu=/usr/share/fonts/lohit-telugu/Lohit-Telugu.ttf >> + >> +-filename.Lohit_Bengali=/usr/share/fonts/lohit-bengali/lohit_bn.ttf >> +-filename.Lohit_Gujarati=/usr/share/fonts/lohit-gujarati/lohit_gu.ttf >> +-filename.Lohit_Hindi=/usr/share/fonts/lohit-hindi/lohit_hi.ttf >> +-filename.Lohit_Kannda=/usr/share/fonts/lohit-kannada/lohit_kn.ttf >> +-filename.Lohit_Malayalam=/usr/share/fonts/lohit-malayalam/lohit_ml.ttf >> +-filename.Lohit_Oriya=/usr/share/fonts/lohit-oriya/lohit_or.ttf >> +-filename.Lohit_Punjabi=/usr/share/fonts/lohit-punjabi/lohit_pa.ttf >> +-filename.Lohit_Tamil=/usr/share/fonts/lohit-tamil/lohit_ta.ttf >> +-filename.Lohit_Telugu=/usr/share/fonts/lohit-telugu/lohit_te.ttf >> + filename.LKLUG=/usr/share/fonts/lklug/lklug.ttf >> + > From ahughes at redhat.com Thu Nov 11 06:18:00 2010 From: ahughes at redhat.com (Dr Andrew John Hughes) Date: Thu, 11 Nov 2010 14:18:00 +0000 Subject: [1.9] RFC: Allow NetX to be disabled In-Reply-To: <20101111140709.GA9134@rivendell.middle-earth.co.uk> References: <20101111140709.GA9134@rivendell.middle-earth.co.uk> Message-ID: <20101111141800.GB9134@rivendell.middle-earth.co.uk> On 14:07 Thu 11 Nov , Dr Andrew John Hughes wrote: > Ok for 1.9 tree? > > 2010-11-11 Andrew John Hughes > > * Makefile.am: > (clean-local): Add clean-about. > (.PHONY): Likewise. > (add-netx): Depend on about.stamp. Add > ENABLE_NETX conditional. > (add-netx-debug): Likewise. > (netx): Add ENABLE_NETX conditional. > (netx-dist): Likewise. > (extra-class-files): Likewise. > (about): New target (from extra-lib/about.jar). > Add ENABLE_NETX conditional. > (clean-about): New target to remove about.jar. > * acinclude.m4: > (IT_CHECK_PLUGIN): Require IT_CHECK_NETX. > Disable if NetX is turned off. > (IT_CHECK_NETX): Add --disable-webstart option. > > -- > Andrew :) > > Free Java Software Engineer > Red Hat, Inc. (http://www.redhat.com) > > Support Free Java! > Contribute to GNU Classpath and the OpenJDK > http://www.gnu.org/software/classpath > http://openjdk.java.net > PGP Key: 94EFD9D8 (http://subkeys.pgp.net) > Fingerprint = F8EF F1EA 401E 2E60 15FA 7927 142C 2591 94EF D9D8 > diff -r 17c34c4c6fae Makefile.am > --- a/Makefile.am Wed Nov 10 16:30:08 2010 +0000 > +++ b/Makefile.am Thu Nov 11 13:20:31 2010 +0000 > @@ -579,7 +579,7 @@ > clean-icedtea-against-icedtea clean-icedtea-debug-against-icedtea \ > clean-icedtea-against-ecj clean-extract-ecj clean-generated clean-replace-hotspot \ > clean-rewriter clean-rewrite-rhino clean-extra clean-rt clean-bootstrap-directory \ > - clean-bootstrap-directory-ecj clean-bootstrap-directory-symlink \ > + clean-bootstrap-directory-ecj clean-bootstrap-directory-symlink clean-about \ > clean-bootstrap-directory-symlink-ecj > if [ -e bootstrap ]; then \ > rmdir bootstrap ; \ > @@ -613,7 +613,7 @@ > clean-ports clean-overlay clean-extract-ecj clean-extract clean-extract-openjdk \ > clean-replace-hotspot clean-generated clean-download clean-hgforest clean-download-openjdk \ > clean-rewriter clean-rewrite-rhino clean-add-netx clean-add-netx-debug \ > - clean-add-plugin clean-add-plugin-debug > + clean-add-plugin clean-add-plugin-debug clean-about > > env: > @echo 'unset JAVA_HOME' > @@ -1469,7 +1469,8 @@ > rm -f $(DEBUG_BUILD_OUTPUT_DIR)/j2re-image/lib/plugin.jar > rm -f stamps/add-plugin-debug.stamp > > -stamps/add-netx.stamp: stamps/netx-dist.stamp extra-lib/about.jar > +stamps/add-netx.stamp: stamps/netx-dist.stamp stamps/about.stamp > +if ENABLE_NETX > cp -pPRf $(abs_top_builddir)/netx.build/lib/classes.jar \ > $(BUILD_OUTPUT_DIR)/j2sdk-image/jre/lib/netx.jar > cp -pPRf $(abs_top_builddir)/netx.build/lib/classes.jar \ > @@ -1486,6 +1487,7 @@ > cp $(NETX_SRCDIR)/javaws.1 \ > $(BUILD_OUTPUT_DIR)/j2re-image/man/man1 ; \ > fi > +endif > touch stamps/add-netx.stamp > > clean-add-netx: > @@ -1499,7 +1501,7 @@ > rm -f $(BUILD_OUTPUT_DIR)/j2re-image/man/man1/javaws.1 > rm -f stamps/add-netx.stamp > > -stamps/add-netx-debug.stamp: stamps/netx-dist.stamp extra-lib/about.jar > +stamps/add-netx-debug.stamp: stamps/netx-dist.stamp stamps/about.stamp > cp -pPRf $(abs_top_builddir)/netx.build/lib/classes.jar \ > $(DEBUG_BUILD_OUTPUT_DIR)/j2sdk-image/jre/lib/netx.jar > cp -pPRf $(abs_top_builddir)/netx.build/lib/classes.jar \ > @@ -1693,6 +1695,7 @@ > find $(NETX_SRCDIR) -name '*.java' | sort > $@ > > stamps/netx.stamp: netx-source-files.txt stamps/rt-class-files.stamp > +if ENABLE_NETX > mkdir -p $(abs_top_builddir)/netx.build > $(BOOT_DIR)/bin/javac $(IT_JAVACFLAGS) \ > -d $(abs_top_builddir)/netx.build \ > @@ -1700,10 +1703,12 @@ > -classpath $(RUNTIME) -bootclasspath \'\' \ > @netx-source-files.txt > cp -r $(NETX_RESOURCE_DIR) $(abs_top_builddir)/netx.build/net/sourceforge/jnlp > +endif > mkdir -p stamps > touch $@ > > stamps/netx-dist.stamp: stamps/netx.stamp > +if ENABLE_NETX > (cd $(abs_top_builddir)/netx.build ; \ > mkdir -p lib ; \ > $(BOOT_DIR)/bin/jar cf lib/classes.jar javax/jnlp net ; \ > @@ -1713,6 +1718,7 @@ > $(BOOT_DIR)/bin/jar uf $(abs_top_builddir)/netx.build/lib/classes.jar \ > `find . -type f -not -name '*.java'` ; \ > $(ZIP) -qr $(abs_top_builddir)/netx.build/lib/src.zip javax net ) > +endif > mkdir -p stamps > touch $@ > > @@ -1728,11 +1734,13 @@ > > stamps/extra-class-files.stamp: $(INITIAL_BOOTSTRAP_LINK_STAMP) \ > extra-source-files.txt stamps/netx.stamp > +if ENABLE_NETX > mkdir -p extra-lib > $(BOOT_DIR)/bin/javac $(IT_JAVACFLAGS) -d extra-lib \ > -sourcepath extra -cp netx.build \ > -bootclasspath $(RUNTIME) @extra-source-files.txt > cp -r $(NETX_EXTRA_DIR) extra-lib/net/sourceforge/jnlp/about > +endif > mkdir -p stamps > touch $@ > > @@ -1741,8 +1749,16 @@ > rm -f stamps/extra-class-files.stamp > rm -f extra-source-files.txt > > -extra-lib/about.jar: stamps/extra-class-files.stamp > - $(BOOT_DIR)/bin/jar cf $@ -C extra-lib net ; > +stamps/about.stamp: stamps/extra-class-files.stamp > +if ENABLE_NETX > + $(BOOT_DIR)/bin/jar cf extra-lib/about.jar -C extra-lib net > +endif > + mkdir -p stamps > + touch $@ > + > +clean-about: > + rm -f extra-lib/about.jar > + rm -f stamps/about.stamp > > # PulseAudio based mixer > # (pulse-java) > diff -r 17c34c4c6fae acinclude.m4 > --- a/acinclude.m4 Wed Nov 10 16:30:08 2010 +0000 > +++ b/acinclude.m4 Thu Nov 11 13:20:31 2010 +0000 > @@ -1459,12 +1459,17 @@ > > AC_DEFUN_ONCE([IT_CHECK_PLUGIN], > [ > +AC_REQUIRE([IT_CHECK_NETX]) > AC_MSG_CHECKING([whether to build the browser plugin]) > AC_ARG_ENABLE([plugin], > [AS_HELP_STRING([--disable-plugin], > [Disable compilation of browser plugin])], > [enable_plugin="${enableval}"], [enable_plugin="yes"]) > AC_MSG_RESULT(${enable_plugin}) > +if test "x${enable_netx}" = "xno" ; then > + AC_MSG_WARN([Plugin can not be built without NetX; disabling plugin]) > + enable_plugin=no; > +fi > ]) > > AC_DEFUN_ONCE([IT_CHECK_PLUGIN_DEPENDENCIES], > @@ -1556,3 +1561,14 @@ > AM_CONDITIONAL([HAS_PAX], test x"${it_cv_pax}" = "xyes") > AC_PROVIDE([$0])dnl > ]) > + > +AC_DEFUN_ONCE([IT_CHECK_NETX], > +[ > +AC_MSG_CHECKING([whether to build NetX]) > +AC_ARG_ENABLE([webstart], > + [AS_HELP_STRING([--disable-webstart], > + [Disable compilation of Web Start support])], > + [enable_netx="${enableval}"], [enable_netx="yes"]) > +AC_MSG_RESULT(${enable_netx}) > +AM_CONDITIONAL(ENABLE_NETX, test "x${enable_netx}" = "xyes") > +]) New version; turns out I missed the -debug target... :-( -- Andrew :) Free Java Software Engineer Red Hat, Inc. (http://www.redhat.com) Support Free Java! Contribute to GNU Classpath and the OpenJDK http://www.gnu.org/software/classpath http://openjdk.java.net PGP Key: 94EFD9D8 (http://subkeys.pgp.net) Fingerprint = F8EF F1EA 401E 2E60 15FA 7927 142C 2591 94EF D9D8 -------------- next part -------------- diff -r 17c34c4c6fae Makefile.am --- a/Makefile.am Wed Nov 10 16:30:08 2010 +0000 +++ b/Makefile.am Thu Nov 11 14:17:18 2010 +0000 @@ -579,7 +579,7 @@ clean-icedtea-against-icedtea clean-icedtea-debug-against-icedtea \ clean-icedtea-against-ecj clean-extract-ecj clean-generated clean-replace-hotspot \ clean-rewriter clean-rewrite-rhino clean-extra clean-rt clean-bootstrap-directory \ - clean-bootstrap-directory-ecj clean-bootstrap-directory-symlink \ + clean-bootstrap-directory-ecj clean-bootstrap-directory-symlink clean-about \ clean-bootstrap-directory-symlink-ecj if [ -e bootstrap ]; then \ rmdir bootstrap ; \ @@ -613,7 +613,7 @@ clean-ports clean-overlay clean-extract-ecj clean-extract clean-extract-openjdk \ clean-replace-hotspot clean-generated clean-download clean-hgforest clean-download-openjdk \ clean-rewriter clean-rewrite-rhino clean-add-netx clean-add-netx-debug \ - clean-add-plugin clean-add-plugin-debug + clean-add-plugin clean-add-plugin-debug clean-about env: @echo 'unset JAVA_HOME' @@ -1469,7 +1469,8 @@ rm -f $(DEBUG_BUILD_OUTPUT_DIR)/j2re-image/lib/plugin.jar rm -f stamps/add-plugin-debug.stamp -stamps/add-netx.stamp: stamps/netx-dist.stamp extra-lib/about.jar +stamps/add-netx.stamp: stamps/netx-dist.stamp stamps/about.stamp +if ENABLE_NETX cp -pPRf $(abs_top_builddir)/netx.build/lib/classes.jar \ $(BUILD_OUTPUT_DIR)/j2sdk-image/jre/lib/netx.jar cp -pPRf $(abs_top_builddir)/netx.build/lib/classes.jar \ @@ -1486,6 +1487,7 @@ cp $(NETX_SRCDIR)/javaws.1 \ $(BUILD_OUTPUT_DIR)/j2re-image/man/man1 ; \ fi +endif touch stamps/add-netx.stamp clean-add-netx: @@ -1499,7 +1501,8 @@ rm -f $(BUILD_OUTPUT_DIR)/j2re-image/man/man1/javaws.1 rm -f stamps/add-netx.stamp -stamps/add-netx-debug.stamp: stamps/netx-dist.stamp extra-lib/about.jar +stamps/add-netx-debug.stamp: stamps/netx-dist.stamp stamps/about.stamp +if ENABLE_NETX cp -pPRf $(abs_top_builddir)/netx.build/lib/classes.jar \ $(DEBUG_BUILD_OUTPUT_DIR)/j2sdk-image/jre/lib/netx.jar cp -pPRf $(abs_top_builddir)/netx.build/lib/classes.jar \ @@ -1516,6 +1519,7 @@ cp $(NETX_SRCDIR)/javaws.1 \ $(DEBUG_BUILD_OUTPUT_DIR)/j2re-image/man/man1 ; \ fi +endif touch stamps/add-netx-debug.stamp clean-add-netx-debug: @@ -1693,6 +1697,7 @@ find $(NETX_SRCDIR) -name '*.java' | sort > $@ stamps/netx.stamp: netx-source-files.txt stamps/rt-class-files.stamp +if ENABLE_NETX mkdir -p $(abs_top_builddir)/netx.build $(BOOT_DIR)/bin/javac $(IT_JAVACFLAGS) \ -d $(abs_top_builddir)/netx.build \ @@ -1700,10 +1705,12 @@ -classpath $(RUNTIME) -bootclasspath \'\' \ @netx-source-files.txt cp -r $(NETX_RESOURCE_DIR) $(abs_top_builddir)/netx.build/net/sourceforge/jnlp +endif mkdir -p stamps touch $@ stamps/netx-dist.stamp: stamps/netx.stamp +if ENABLE_NETX (cd $(abs_top_builddir)/netx.build ; \ mkdir -p lib ; \ $(BOOT_DIR)/bin/jar cf lib/classes.jar javax/jnlp net ; \ @@ -1713,6 +1720,7 @@ $(BOOT_DIR)/bin/jar uf $(abs_top_builddir)/netx.build/lib/classes.jar \ `find . -type f -not -name '*.java'` ; \ $(ZIP) -qr $(abs_top_builddir)/netx.build/lib/src.zip javax net ) +endif mkdir -p stamps touch $@ @@ -1728,11 +1736,13 @@ stamps/extra-class-files.stamp: $(INITIAL_BOOTSTRAP_LINK_STAMP) \ extra-source-files.txt stamps/netx.stamp +if ENABLE_NETX mkdir -p extra-lib $(BOOT_DIR)/bin/javac $(IT_JAVACFLAGS) -d extra-lib \ -sourcepath extra -cp netx.build \ -bootclasspath $(RUNTIME) @extra-source-files.txt cp -r $(NETX_EXTRA_DIR) extra-lib/net/sourceforge/jnlp/about +endif mkdir -p stamps touch $@ @@ -1741,8 +1751,16 @@ rm -f stamps/extra-class-files.stamp rm -f extra-source-files.txt -extra-lib/about.jar: stamps/extra-class-files.stamp - $(BOOT_DIR)/bin/jar cf $@ -C extra-lib net ; +stamps/about.stamp: stamps/extra-class-files.stamp +if ENABLE_NETX + $(BOOT_DIR)/bin/jar cf extra-lib/about.jar -C extra-lib net +endif + mkdir -p stamps + touch $@ + +clean-about: + rm -f extra-lib/about.jar + rm -f stamps/about.stamp # PulseAudio based mixer # (pulse-java) diff -r 17c34c4c6fae acinclude.m4 --- a/acinclude.m4 Wed Nov 10 16:30:08 2010 +0000 +++ b/acinclude.m4 Thu Nov 11 14:17:18 2010 +0000 @@ -1459,12 +1459,17 @@ AC_DEFUN_ONCE([IT_CHECK_PLUGIN], [ +AC_REQUIRE([IT_CHECK_NETX]) AC_MSG_CHECKING([whether to build the browser plugin]) AC_ARG_ENABLE([plugin], [AS_HELP_STRING([--disable-plugin], [Disable compilation of browser plugin])], [enable_plugin="${enableval}"], [enable_plugin="yes"]) AC_MSG_RESULT(${enable_plugin}) +if test "x${enable_netx}" = "xno" ; then + AC_MSG_WARN([Plugin can not be built without NetX; disabling plugin]) + enable_plugin=no; +fi ]) AC_DEFUN_ONCE([IT_CHECK_PLUGIN_DEPENDENCIES], @@ -1556,3 +1561,14 @@ AM_CONDITIONAL([HAS_PAX], test x"${it_cv_pax}" = "xyes") AC_PROVIDE([$0])dnl ]) + +AC_DEFUN_ONCE([IT_CHECK_NETX], +[ +AC_MSG_CHECKING([whether to build NetX]) +AC_ARG_ENABLE([webstart], + [AS_HELP_STRING([--disable-webstart], + [Disable compilation of Web Start support])], + [enable_netx="${enableval}"], [enable_netx="yes"]) +AC_MSG_RESULT(${enable_netx}) +AM_CONDITIONAL(ENABLE_NETX, test "x${enable_netx}" = "xyes") +]) From dbhole at redhat.com Thu Nov 11 06:49:25 2010 From: dbhole at redhat.com (Deepak Bhole) Date: Thu, 11 Nov 2010 09:49:25 -0500 Subject: [1.9] RFC: Allow NetX to be disabled In-Reply-To: <20101111141800.GB9134@rivendell.middle-earth.co.uk> References: <20101111140709.GA9134@rivendell.middle-earth.co.uk> <20101111141800.GB9134@rivendell.middle-earth.co.uk> Message-ID: <20101111144925.GC6888@redhat.com> * Dr Andrew John Hughes [2010-11-11 09:21]: > > +]) > > New version; turns out I missed the -debug target... :-( Just tried building with --disable-webstart. The classes are not built, however javaws still is. javaws shouldn't get built with --disable-webstart as it'd be unusable without the classes. Cheers, Deepak From omajid at redhat.com Thu Nov 11 06:53:14 2010 From: omajid at redhat.com (Omair Majid) Date: Thu, 11 Nov 2010 09:53:14 -0500 Subject: [icedtea-web] RFC: integrate support for multiple KeyStores into the various validators In-Reply-To: <20101111134226.GA6888@redhat.com> References: <4CDB1BFB.5030704@redhat.com> <20101111134226.GA6888@redhat.com> Message-ID: <4CDC035A.605@redhat.com> On 11/11/2010 08:42 AM, Deepak Bhole wrote: > * Omair Majid [2010-11-10 17:26]: >> Hi, >> >> The attached patch makes the various parts of netx that determine >> which certificates are trusted use the multiple keystores are that >> are now available. >> >> The patch modifies VariableX509TrustManager, HTTPSCertVerfier, and >> JarSigner to use these certificate stores. >> >> The KeyTool class is almost completely unused after this patch. I >> would like to remove it at some point in the future. >> >> ChangeLog: >> 2010-11-09 Omair Majid >> >> * netx/net/sourceforge/jnlp/runtime/Boot.java (main): Move trust >> manager initialization code into JNLPRuntime.initialize. >> * plugin/icedteanp/java/sun/applet/PluginMain.java >> (init): Likewise. >> * netx/net/sourceforge/jnlp/runtime/JNLPRuntime.java (initialize): >> Set the default SSL TrustManager here. >> * netx/net/sourceforge/jnlp/security/CertWarningPane.java >> (CheckBoxListener.actionPerformed): Add this certificate into >> user's trusted certificate store. >> * netx/net/sourceforge/jnlp/tools/KeyTool.java >> (addToKeyStore(File,KeyStore)): Move to CertificateUtils. >> (addToKeyStore(X509Certificate,KeyStore)): Likewise. >> (dumpCert): Likewise. >> * netx/net/sourceforge/jnlp/security/CertificateUtils.java: New >> class. >> (addToKeyStore(File,KeyStore)): Moved from KeyTool. >> (addToKeyStore(X509Certificate,KeyStore)): Likewise. >> (dumpCert): Likewise. >> (inKeyStores): New method. >> * netx/net/sourceforge/jnlp/security/HttpsCertVerifier.java >> (getRootInCacerts): Check all available CA store to check if >> root is in CA certificates. >> * netx/net/sourceforge/jnlp/security/KeyStores.java >> (getClientKeyStores): New method. >> * netx/net/sourceforge/jnlp/security/VariableX509TrustManager.java >> (VariableX509TrustManager): Initialize multiple CA, certificate and >> client trust managers. >> (checkClientTrusted): Check all the client TrustManagers if >> certificate is trusted. >> (checkAllManagers): Check multiple CA certificates and trusted >> certificates to determine if the certificate chain can be trusted. >> (isExplicitlyTrusted): Check with multiple TrustManagers. >> (getAcceptedIssuers): Gather results from multiple TrustManagers. >> * netx/net/sourceforge/jnlp/security/viewer/CertificatePane.java >> (ImportButtonListener): Use CertificateUtils instead of KeyTool. >> * netx/net/sourceforge/jnlp/tools/JarSigner.java >> (checkTrustedCerts): Use multiple key stores to check if certificate >> is directly trusted and if the root is trusted. >> >> Any thoughts or comments? >> >> Cheers, >> Omair > >> diff -r f089abbcf019 netx/net/sourceforge/jnlp/runtime/Boot.java >> --- a/netx/net/sourceforge/jnlp/runtime/Boot.java Mon Nov 08 16:48:38 2010 -0500 >> +++ b/netx/net/sourceforge/jnlp/runtime/Boot.java Tue Nov 09 09:18:48 2010 -0500 >> @@ -172,20 +172,6 @@ >> JNLPRuntime.setForksAllowed(false); >> } >> >> - // wire in custom authenticator >> - try { >> - SSLSocketFactory sslSocketFactory; >> - SSLContext context = SSLContext.getInstance("SSL"); >> - TrustManager[] trust = new TrustManager[] { VariableX509TrustManager.getInstance() }; >> - context.init(null, trust, null); >> - sslSocketFactory = context.getSocketFactory(); >> - >> - HttpsURLConnection.setDefaultSSLSocketFactory(sslSocketFactory); >> - } catch (Exception e) { >> - System.err.println("Unable to set SSLSocketfactory (may _prevent_ access to sites that should be trusted)! Continuing anyway..."); >> - e.printStackTrace(); >> - } >> - >> JNLPRuntime.setInitialArgments(Arrays.asList(argsIn)); >> >> // do in a privileged action to clear the security context of >> diff -r f089abbcf019 netx/net/sourceforge/jnlp/runtime/JNLPRuntime.java >> --- a/netx/net/sourceforge/jnlp/runtime/JNLPRuntime.java Mon Nov 08 16:48:38 2010 -0500 >> +++ b/netx/net/sourceforge/jnlp/runtime/JNLPRuntime.java Tue Nov 09 09:18:48 2010 -0500 >> @@ -26,12 +26,17 @@ >> import java.security.*; >> import javax.jnlp.*; >> import javax.naming.ConfigurationException; >> +import javax.net.ssl.HttpsURLConnection; >> +import javax.net.ssl.SSLContext; >> +import javax.net.ssl.SSLSocketFactory; >> +import javax.net.ssl.TrustManager; >> import javax.swing.UIManager; >> import javax.swing.text.html.parser.ParserDelegator; >> >> import net.sourceforge.jnlp.*; >> import net.sourceforge.jnlp.cache.*; >> import net.sourceforge.jnlp.security.SecurityDialogMessageHandler; >> +import net.sourceforge.jnlp.security.VariableX509TrustManager; >> import net.sourceforge.jnlp.services.*; >> import net.sourceforge.jnlp.util.*; >> >> @@ -223,6 +228,20 @@ >> >> securityDialogMessageHandler = startSecurityThreads(); >> >> + // wire in custom authenticator >> + try { >> + SSLSocketFactory sslSocketFactory; >> + SSLContext context = SSLContext.getInstance("SSL"); >> + TrustManager[] trust = new TrustManager[] { VariableX509TrustManager.getInstance() }; >> + context.init(null, trust, null); >> + sslSocketFactory = context.getSocketFactory(); >> + >> + HttpsURLConnection.setDefaultSSLSocketFactory(sslSocketFactory); >> + } catch (Exception e) { >> + System.err.println("Unable to set SSLSocketfactory (may _prevent_ access to sites that should be trusted)! Continuing anyway..."); >> + e.printStackTrace(); >> + } >> + >> initialized = true; >> >> } >> diff -r f089abbcf019 netx/net/sourceforge/jnlp/security/CertWarningPane.java >> --- a/netx/net/sourceforge/jnlp/security/CertWarningPane.java Mon Nov 08 16:48:38 2010 -0500 >> +++ b/netx/net/sourceforge/jnlp/security/CertWarningPane.java Tue Nov 09 09:18:48 2010 -0500 >> @@ -47,6 +47,9 @@ >> import java.awt.GridLayout; >> import java.awt.event.ActionEvent; >> import java.awt.event.ActionListener; >> +import java.io.FileOutputStream; >> +import java.io.OutputStream; >> +import java.security.KeyStore; >> import java.security.cert.Certificate; >> import java.security.cert.X509Certificate; >> >> @@ -62,6 +65,8 @@ >> import net.sourceforge.jnlp.JNLPFile; >> import net.sourceforge.jnlp.PluginBridge; >> import net.sourceforge.jnlp.runtime.JNLPRuntime; >> +import net.sourceforge.jnlp.security.KeyStores.Level; >> +import net.sourceforge.jnlp.security.KeyStores.Type; >> import net.sourceforge.jnlp.security.SecurityWarning.AccessType; >> import net.sourceforge.jnlp.tools.KeyTool; >> >> @@ -233,25 +238,28 @@ >> } >> } >> >> - /** >> - * Updates the user's KeyStore of trusted Certificates. >> - */ >> - private class CheckBoxListener implements ActionListener { >> - public void actionPerformed(ActionEvent e) { >> - if (alwaysTrust != null&& alwaysTrust.isSelected()) { >> - try { >> - KeyTool kt = new KeyTool(); >> - Certificate c = parent.getJarSigner().getPublisher(); >> - kt.importCert(c); >> - if (JNLPRuntime.isDebug()) { >> - System.out.println("certificate is now permanently trusted"); >> - } >> - } catch (Exception ex) { >> - //TODO: Let NetX show a dialog here notifying user >> - //about being unable to add cert to keystore >> - } >> - } >> + /** >> + * Updates the user's KeyStore of trusted Certificates. >> + */ >> + private class CheckBoxListener implements ActionListener { >> + public void actionPerformed(ActionEvent e) { >> + if (alwaysTrust != null&& alwaysTrust.isSelected()) { >> + try { >> + KeyStore ks = KeyStores.getKeyStore(Level.USER, Type.CERTS); >> + X509Certificate c = (X509Certificate) parent.getJarSigner().getPublisher(); >> + CertificateUtils.addToKeyStore(c, ks); >> + OutputStream os = new FileOutputStream(KeyStores.getKeyStoreLocation(Level.USER, Type.CERTS)); >> + ks.store(os, KeyStores.getPassword()); >> + if (JNLPRuntime.isDebug()) { >> + System.out.println("certificate is now permanently trusted"); >> + } >> + } catch (Exception ex) { >> + // TODO: Let NetX show a dialog here notifying user >> + // about being unable to add cert to keystore >> + ex.printStackTrace(); >> } >> + } >> } >> + } >> >> } >> diff -r f089abbcf019 netx/net/sourceforge/jnlp/security/CertificateUtils.java >> --- /dev/null Thu Jan 01 00:00:00 1970 +0000 >> +++ b/netx/net/sourceforge/jnlp/security/CertificateUtils.java Tue Nov 09 09:18:48 2010 -0500 >> @@ -0,0 +1,145 @@ >> +/* CertificateUtils.java >> + Copyright (C) 2010 Red Hat, Inc. >> + >> +This file is part of IcedTea. >> + >> +IcedTea is free software; you can redistribute it and/or >> +modify it under the terms of the GNU General Public License as published by >> +the Free Software Foundation, version 2. >> + >> +IcedTea is distributed in the hope that it will be useful, >> +but WITHOUT ANY WARRANTY; without even the implied warranty of >> +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU >> +General Public License for more details. >> + >> +You should have received a copy of the GNU General Public License >> +along with IcedTea; see the file COPYING. If not, write to >> +the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA >> +02110-1301 USA. >> + >> +Linking this library statically or dynamically with other modules is >> +making a combined work based on this library. Thus, the terms and >> +conditions of the GNU General Public License cover the whole >> +combination. >> + >> +As a special exception, the copyright holders of this library give you >> +permission to link this library with independent modules to produce an >> +executable, regardless of the license terms of these independent >> +modules, and to copy and distribute the resulting executable under >> +terms of your choice, provided that you also meet, for each linked >> +independent module, the terms and conditions of the license of that >> +module. An independent module is a module which is not derived from >> +or based on this library. If you modify this library, you may extend >> +this exception to your version of the library, but you are not >> +obligated to do so. If you do not wish to do so, delete this >> +exception statement from your version. >> +*/ >> + >> +package net.sourceforge.jnlp.security; >> + >> +import java.io.BufferedInputStream; >> +import java.io.File; >> +import java.io.FileInputStream; >> +import java.io.IOException; >> +import java.io.PrintStream; >> +import java.math.BigInteger; >> +import java.security.KeyStore; >> +import java.security.KeyStoreException; >> +import java.security.cert.Certificate; >> +import java.security.cert.CertificateException; >> +import java.security.cert.CertificateFactory; >> +import java.security.cert.X509Certificate; >> +import java.util.Random; >> + >> +import net.sourceforge.jnlp.runtime.JNLPRuntime; >> + >> +import sun.misc.BASE64Encoder; >> +import sun.security.provider.X509Factory; >> + >> +public class CertificateUtils { >> + /** >> + * Adds the X509Certficate in the file to the KeyStore. Note that it does >> + * not update the copy of the KeyStore on disk. >> + */ >> + public static final void addToKeyStore(File file, KeyStore ks) throws CertificateException, >> + IOException, KeyStoreException { >> + if (JNLPRuntime.isDebug()) { >> + System.out.println("Importing certificate from " + file + " into " + ks); >> + } >> + >> + BufferedInputStream bis = new BufferedInputStream(new FileInputStream(file)); >> + CertificateFactory cf = CertificateFactory.getInstance("X509"); >> + X509Certificate cert = null; >> + >> + try { >> + cert = (X509Certificate) cf.generateCertificate(bis); >> + } catch (ClassCastException cce) { >> + throw new CertificateException("Input file is not an X509 Certificate", cce); >> + } >> + >> + addToKeyStore(cert, ks); >> + } >> + >> + /** >> + * Adds an X509Certificate to the KeyStore. Note that it does not update the >> + * copy of the KeyStore on disk. >> + */ >> + public static final void addToKeyStore(X509Certificate cert, KeyStore ks) >> + throws KeyStoreException { >> + if (JNLPRuntime.isDebug()) { >> + System.out.println("Importing " + cert.getSubjectX500Principal().getName()); >> + } >> + >> + String alias = null; >> + Random random = new Random(); >> + alias = ks.getCertificateAlias(cert); >> + if (alias != null) { >> + return; >> + } >> + >> + do { >> + alias = new BigInteger(20, random).toString(); >> + } while (ks.getCertificate(alias) != null); >> + ks.setCertificateEntry(alias, cert); >> + } >> + > > > I don't understand what is happening in the code above.. if I am not > mistaken, isn't it searching for a random string alias and will continue to > loop until something (random?) is found? > I based this code off code in KeyTool, and yes, it is slightly confusing. A KeyStore can be considered a HashMap: it maps a String, the alias, to a Certificate. The code first checks if the certificate already exists by trying to find an alias for the given certificate. If an alias is found, we know the certificate is in the KeyStore already. If the certificate is not in the KeyStore, we want to add a new entry to the HashMap, but we do not want to overwrite an existing certificate. So we create random aliases until we get an alias which has no mapping in the HashMap. > Also, those methods should not be public static as untrusted apps could > access them. The keystores shouldn't be either (if they are, either now > or from before). > I dont think this will be a problem. For one, every time it is called, it reads the configuration (which untrusted apps are not allowed to do) and then it reads the keystore from the disk (which untrusted apps are not allowed to do). Making it non-public would mean it can not be used by classes in other packages (for example, JarSigner is in net.sourceforge.jnlp.tools and it uses this class). Please let me know if this is not enough; I will see what else I can do. >> + /** >> + * Checks whether an X509Certificate is already in one of the keystores >> + * @param c the certificate >> + * @param keyStores the KeyStores to check in >> + * @return true if the certificate is present in one of the keystores, false otherwise >> + */ >> + public static final boolean inKeyStores(X509Certificate c, KeyStore[] keyStores) { >> + for (int i = 0; i< keyStores.length; i++) { >> + try { >> + if (keyStores[i].getCertificateAlias(c) != null) { >> + if (JNLPRuntime.isDebug()) { >> + System.out.println(c.getSubjectX500Principal().getName() + " found in cacerts"); >> + } >> + return true; >> + } >> + } catch (KeyStoreException e) { >> + e.printStackTrace(); >> + // continue >> + } >> + } >> + return false; >> + } >> + >> + /** >> + * Writes the certificate in base64 encoded from to the print stream >> + */ >> + public static void dump(Certificate cert, PrintStream out) throws IOException, >> + CertificateException { >> + >> + boolean printRfc = true; >> + if (printRfc) { >> + BASE64Encoder encoder = new BASE64Encoder(); >> + out.println(X509Factory.BEGIN_CERT); >> + encoder.encodeBuffer(cert.getEncoded(), out); >> + out.println(X509Factory.END_CERT); >> + } else { >> + out.write(cert.getEncoded()); // binary >> + } >> + } >> +} > > > What does printRfc represent? And if it's always true, why the else? > This code was originally from net.sourceforge.jnlp.tools.KeyTool and was moved over to CertificateUtils. n.s.j.t.KeyTool was adapted from sun.security.tools.KeyTool which allows dumping certificate in more than one format. printRfc indicates that the certifcate should be dumped in the RFC 4945 format (http://tools.ietf.org/html/rfc4945#section-6.1). Since this is the only option we support, I have removed that if condition; it is fixed in the updated patch. >> diff -r f089abbcf019 netx/net/sourceforge/jnlp/security/HttpsCertVerifier.java >> --- a/netx/net/sourceforge/jnlp/security/HttpsCertVerifier.java Mon Nov 08 16:48:38 2010 -0500 >> +++ b/netx/net/sourceforge/jnlp/security/HttpsCertVerifier.java Tue Nov 09 09:18:48 2010 -0500 >> @@ -40,6 +40,7 @@ >> import static net.sourceforge.jnlp.runtime.Translator.R; >> >> import java.io.IOException; >> +import java.security.KeyStore; >> import java.security.cert.CertPath; >> import java.security.cert.Certificate; >> import java.security.cert.CertificateException; >> @@ -213,8 +214,8 @@ >> >> public boolean getRootInCacerts() { >> try { >> - KeyTool kt = new KeyTool(); >> - return kt.checkCacertsForCertificate(getRoot()); >> + KeyStore[] caCertsKeyStores = KeyStores.getCAKeyStores(); >> + return CertificateUtils.inKeyStores((X509Certificate)getRoot(), caCertsKeyStores); >> } catch (Exception e) { >> } >> return false; >> diff -r f089abbcf019 netx/net/sourceforge/jnlp/security/KeyStores.java >> --- a/netx/net/sourceforge/jnlp/security/KeyStores.java Mon Nov 08 16:48:38 2010 -0500 >> +++ b/netx/net/sourceforge/jnlp/security/KeyStores.java Tue Nov 09 09:18:48 2010 -0500 >> @@ -189,6 +189,29 @@ >> } >> >> /** >> + * Returns KeyStores containing trusted client certificates >> + * >> + * @return an array of KeyStore objects that can be used to check client >> + * authentication certificates >> + */ >> + public static KeyStore[] getClientKeyStores() { >> + List result = new ArrayList(); >> + KeyStore ks = null; >> + >> + ks = getKeyStore(Level.SYSTEM, Type.CLIENT_CERTS); >> + if (ks != null) { >> + result.add(ks); >> + } >> + >> + ks = getKeyStore(Level.USER, Type.CLIENT_CERTS); >> + if (ks != null) { >> + result.add(ks); >> + } >> + >> + return result.toArray(new KeyStore[result.size()]); >> + } >> + > > Should something like this be public static? Untrusted apps will be able > to access it and modify it... > I dont think this is a problem. getClientKeyStores() calls getKeyStore() which reads the configuration (which untrusted apps are not allowed to do) and then reads the acutal keystore from disk (which untrusted apps are again not allowed to do). So I dont think untrusted apps can actually get access to these keystores. If untrusted apps call getClientKeyStores (or the related methods getCAKeyStores or getCertKeyStores), they should get a SecurityException from DeploymentConfiguration. A KeyStore is an in-memory version of a keystore file on disk. Even if untrusted apps were somehow able to access it, saving the contents to disk would require permissions to write to disk. >> + /** >> * Returns the location of a KeyStore corresponding to the given level and type. >> * @param level >> * @param type >> @@ -334,4 +357,5 @@ >> return ks; >> } >> >> + >> } >> diff -r f089abbcf019 netx/net/sourceforge/jnlp/security/VariableX509TrustManager.java >> --- a/netx/net/sourceforge/jnlp/security/VariableX509TrustManager.java Mon Nov 08 16:48:38 2010 -0500 >> +++ b/netx/net/sourceforge/jnlp/security/VariableX509TrustManager.java Tue Nov 09 09:18:48 2010 -0500 >> @@ -42,6 +42,8 @@ >> import java.security.cert.CertificateException; >> import java.security.cert.X509Certificate; >> import java.util.ArrayList; >> +import java.util.Arrays; >> +import java.util.List; >> >> import javax.net.ssl.TrustManager; >> import javax.net.ssl.TrustManagerFactory; >> @@ -60,59 +62,96 @@ >> * different certificates that are not in the keystore. >> */ >> >> -public class VariableX509TrustManager extends X509ExtendedTrustManager { >> +final public class VariableX509TrustManager extends X509ExtendedTrustManager { >> >> - KeyStore userKeyStore = null; >> - KeyStore caKeyStore = null; >> + /** TrustManagers containing trusted CAs */ >> + private X509TrustManager[] caTrustManagers = null; >> + /** TrustManagers containing trusted certificates */ >> + private X509TrustManager[] certTrustManagers = null; >> + /** TrustManagers containing trusted client certificates */ >> + private X509TrustManager[] clientTrustManagers = null; >> > > New lines between decl, as with before please :) > Whoops. Sorry about that. Fixed. >> - X509TrustManager userTrustManager = null; >> - X509TrustManager caTrustManager = null; >> + private ArrayList temporarilyTrusted = new ArrayList(); >> + private ArrayList temporarilyUntrusted = new ArrayList(); >> >> - ArrayList temporarilyTrusted = new ArrayList(); >> - ArrayList temporarilyUntrusted = new ArrayList(); >> - >> - static VariableX509TrustManager instance = null; >> + private static VariableX509TrustManager instance = null; >> >> /** >> * Constructor initializes the system, user and custom stores >> */ >> public VariableX509TrustManager() { >> >> + /* >> + * Load TrustManagers for trusted certificates >> + */ >> try { >> - userKeyStore = SecurityUtil.getUserKeyStore(); >> - TrustManagerFactory tmFactory = TrustManagerFactory.getInstance("SunX509", "SunJSSE"); >> - tmFactory.init(userKeyStore); >> + /** KeyStores containing trusted certificates */ >> + KeyStore[] trustedCertKeyStores = KeyStores.getCertKeyStores(); >> + certTrustManagers = new X509TrustManager[trustedCertKeyStores.length]; >> >> - // tm factory initialized, now get the managers so we can assign the X509 one >> - TrustManager[] trustManagers = tmFactory.getTrustManagers(); >> + for (int j = 0; j< trustedCertKeyStores.length; j++) { >> + TrustManagerFactory tmFactory = TrustManagerFactory.getInstance("SunX509", "SunJSSE"); >> + tmFactory.init(trustedCertKeyStores[j]); >> >> - for (int i=0; i< trustManagers.length; i++) { >> - if (trustManagers[i] instanceof X509TrustManager) { >> - userTrustManager = (X509TrustManager) trustManagers[i]; >> + // tm factory initialized, now get the managers so we can assign the X509 one >> + TrustManager[] trustManagers = tmFactory.getTrustManagers(); >> + >> + for (int i = 0; i< trustManagers.length; i++) { >> + if (trustManagers[i] instanceof X509TrustManager) { >> + certTrustManagers[j] = (X509TrustManager) trustManagers[i]; >> + } >> } >> } >> - >> } catch (Exception e) { >> - // TODO Auto-generated catch block >> e.printStackTrace(); >> } >> >> + /* >> + * Load TrustManagers for trusted CAs >> + */ >> try { >> - caKeyStore = SecurityUtil.getCacertsKeyStore(); >> - TrustManagerFactory tmFactory = TrustManagerFactory.getInstance("SunX509", "SunJSSE"); >> - tmFactory.init(caKeyStore); >> + /** KeyStores containing trusted CAs */ >> + KeyStore[] trustedCAKeyStores = KeyStores.getCAKeyStores(); >> + caTrustManagers = new X509TrustManager[trustedCAKeyStores.length]; >> >> - // tm factory initialized, now get the managers so we can extract the X509 one >> - TrustManager[] trustManagers = tmFactory.getTrustManagers(); >> + for (int j = 0; j< caTrustManagers.length; j++) { >> + TrustManagerFactory tmFactory = TrustManagerFactory.getInstance("SunX509", "SunJSSE"); >> + tmFactory.init(trustedCAKeyStores[j]); >> >> - for (int i=0; i< trustManagers.length; i++) { >> - if (trustManagers[i] instanceof X509TrustManager) { >> - caTrustManager = (X509TrustManager) trustManagers[i]; >> + // tm factory initialized, now get the managers so we can extract the X509 one >> + TrustManager[] trustManagers = tmFactory.getTrustManagers(); >> + >> + for (int i=0; i< trustManagers.length; i++) { >> + if (trustManagers[i] instanceof X509TrustManager) { >> + caTrustManagers[j] = (X509TrustManager) trustManagers[i]; >> + } >> } >> } >> + } catch (Exception e) { >> + e.printStackTrace(); >> + } >> >> + /* >> + * Load TrustManagers for trusted clients certificates >> + */ >> + try { >> + KeyStore[] clientKeyStores = KeyStores.getClientKeyStores(); >> + clientTrustManagers = new X509TrustManager[clientKeyStores.length]; >> + >> + for (int j = 0; j< clientTrustManagers.length; j++) { >> + TrustManagerFactory tmFactory = TrustManagerFactory.getInstance("SunX509", "SunJSSE"); >> + tmFactory.init(clientKeyStores[j]); >> + >> + // tm factory initialized, now get the managers so we can extract the X509 one >> + TrustManager[] trustManagers = tmFactory.getTrustManagers(); >> + >> + for (int i=0; i< trustManagers.length; i++) { >> + if (trustManagers[i] instanceof X509TrustManager) { >> + clientTrustManagers[j] = (X509TrustManager) trustManagers[i]; >> + } >> + } >> + } >> } catch (Exception e) { >> - // TODO Auto-generated catch block >> e.printStackTrace(); >> } >> } >> @@ -123,18 +162,23 @@ >> public void checkClientTrusted(X509Certificate[] chain, String authType, >> String hostName, String algorithm) >> throws CertificateException { >> - // First try catrustmanager, then try usertrustmanager >> - try { >> - caTrustManager.checkClientTrusted(chain, authType); >> - } catch (Exception caex) { >> + >> + boolean trusted = false; >> + ValidatorException savedException = null; >> + for (int i = 0; i< clientTrustManagers.length; i++) { >> try { >> - userTrustManager.checkClientTrusted(chain, authType); >> - } catch (Exception userex) { >> - // Do nothing here. This trust manager is intended to be used >> - // only in the plugin instance vm, which does not act as a >> - // server >> + clientTrustManagers[i].checkClientTrusted(chain, authType); >> + trusted = true; >> + break; >> + } catch (ValidatorException caex) { >> + savedException = caex; >> } >> } >> + if (trusted) { >> + return; >> + } >> + >> + throw savedException; >> } >> >> public void checkClientTrusted(X509Certificate[] chain, String authType) >> @@ -214,17 +258,45 @@ >> * Check system, user and custom trust manager >> */ >> private void checkAllManagers(X509Certificate[] chain, String authType) throws CertificateException { >> - // First try catrustmanager, then try usertrustmanager, and finally, check temp trusted certs >> - try { >> - caTrustManager.checkServerTrusted(chain, authType); >> - } catch (ValidatorException caex) { >> + // first try CA TrustManagers >> + boolean trusted = false; >> + ValidatorException savedException = null; >> + for (int i = 0; i< caTrustManagers.length; i++) { >> try { >> - userTrustManager.checkServerTrusted(chain, authType); >> - } catch (ValidatorException uex) { >> - if (!temporarilyTrusted.contains(chain[0])) >> - throw (CertificateException) uex; >> + caTrustManagers[i].checkServerTrusted(chain, authType); >> + trusted = true; >> + break; >> + } catch (ValidatorException caex) { >> + savedException = caex; >> } >> } >> + if (trusted) { >> + return; >> + } >> + >> + // then try certificate TrustManagers >> + for (int i = 0; i< certTrustManagers.length; i++) { >> + try { >> + certTrustManagers[i].checkServerTrusted(chain, authType); >> + trusted = true; >> + break; >> + } catch (ValidatorException caex) { >> + savedException = caex; >> + } >> + } >> + if (trusted) { >> + return; >> + } >> + >> + // finally check temp trusted certs >> + if (!temporarilyTrusted.contains(chain[0])) { >> + if (savedException == null) { >> + // System.out.println("IMPOSSIBLE!"); >> + throw new ValidatorException(ValidatorException.T_SIGNATURE_ERROR, chain[0]); >> + } >> + throw savedException; >> + } >> + >> } >> >> /** >> @@ -233,23 +305,32 @@ >> private boolean isExplicitlyTrusted(X509Certificate[] chain, String authType) { >> boolean explicitlyTrusted = false; >> >> - try { >> - userTrustManager.checkServerTrusted(chain, authType); >> - explicitlyTrusted = true; >> - } catch (ValidatorException uex) { >> - if (temporarilyTrusted.contains(chain[0])) >> + for (int i = 0; i< certTrustManagers.length; i++) { >> + try { >> + certTrustManagers[i].checkServerTrusted(chain, authType); >> explicitlyTrusted = true; >> - } catch (CertificateException ce) { >> - // do nothing, this means that the cert is not explicitly trusted >> + break; >> + } catch (ValidatorException uex) { >> + if (temporarilyTrusted.contains(chain[0])) { >> + explicitlyTrusted = true; >> + break; >> + } >> + } catch (CertificateException ce) { >> + // not explicitly trusted >> + } >> } >> >> return explicitlyTrusted; >> - >> } >> >> public X509Certificate[] getAcceptedIssuers() { >> - // delegate to default >> - return caTrustManager.getAcceptedIssuers(); >> + List issuers = new ArrayList(); >> + >> + for (int i = 0; i< caTrustManagers.length; i++) { >> + issuers.addAll(Arrays.asList(caTrustManagers[i].getAcceptedIssuers())); >> + } >> + >> + return issuers.toArray(new X509Certificate[issuers.size()]); >> } >> >> /** >> diff -r f089abbcf019 netx/net/sourceforge/jnlp/security/viewer/CertificatePane.java >> --- a/netx/net/sourceforge/jnlp/security/viewer/CertificatePane.java Mon Nov 08 16:48:38 2010 -0500 >> +++ b/netx/net/sourceforge/jnlp/security/viewer/CertificatePane.java Tue Nov 09 09:18:48 2010 -0500 >> @@ -69,6 +69,7 @@ >> import javax.swing.event.ChangeListener; >> import javax.swing.table.DefaultTableModel; >> >> +import net.sourceforge.jnlp.security.CertificateUtils; >> import net.sourceforge.jnlp.security.KeyStores; >> import net.sourceforge.jnlp.security.SecurityUtil; >> import net.sourceforge.jnlp.security.SecurityWarningDialog; >> @@ -357,9 +358,8 @@ >> int returnVal = chooser.showOpenDialog(parent); >> if(returnVal == JFileChooser.APPROVE_OPTION) { >> try { >> - KeyTool kt = new KeyTool(); >> KeyStore ks = keyStore; >> - kt.addToKeyStore(chooser.getSelectedFile(), ks); >> + CertificateUtils.addToKeyStore(chooser.getSelectedFile(), ks); >> OutputStream os = new FileOutputStream( >> KeyStores.getKeyStoreLocation(currentKeyStoreLevel, currentKeyStoreType)); >> ks.store(os, KeyStores.getPassword()); >> @@ -397,7 +397,7 @@ >> if (alias != null) { >> Certificate c = keyStore.getCertificate(alias); >> PrintStream ps = new PrintStream(chooser.getSelectedFile().getAbsolutePath()); >> - KeyTool.dumpCert(c, ps); >> + CertificateUtils.dump(c, ps); >> repopulateTables(); >> } >> } >> diff -r f089abbcf019 netx/net/sourceforge/jnlp/tools/JarSigner.java >> --- a/netx/net/sourceforge/jnlp/tools/JarSigner.java Mon Nov 08 16:48:38 2010 -0500 >> +++ b/netx/net/sourceforge/jnlp/tools/JarSigner.java Tue Nov 09 09:18:48 2010 -0500 >> @@ -371,9 +371,12 @@ >> private void checkTrustedCerts() throws Exception { >> if (certPath != null) { >> try { >> - KeyTool kt = new KeyTool(); >> - alreadyTrustPublisher = kt.isTrusted(getPublisher()); >> - rootInCacerts = kt.checkCacertsForCertificate(getRoot()); >> + X509Certificate publisher = (X509Certificate) getPublisher(); >> + KeyStore[] certKeyStores = KeyStores.getCertKeyStores(); >> + alreadyTrustPublisher = CertificateUtils.inKeyStores(publisher, certKeyStores); >> + X509Certificate root = (X509Certificate) getRoot(); >> + KeyStore[] caKeyStores = KeyStores.getCAKeyStores(); >> + rootInCacerts = CertificateUtils.inKeyStores(root, caKeyStores); >> } catch (Exception e) { >> // TODO: Warn user about not being able to >> // look through their cacerts/trusted.certs >> diff -r f089abbcf019 netx/net/sourceforge/jnlp/tools/KeyTool.java >> --- a/netx/net/sourceforge/jnlp/tools/KeyTool.java Mon Nov 08 16:48:38 2010 -0500 >> +++ b/netx/net/sourceforge/jnlp/tools/KeyTool.java Tue Nov 09 09:18:48 2010 -0500 >> @@ -119,43 +119,6 @@ >> return importCert((Certificate)cert); >> } >> >> - /** >> - * Adds the X509Certficate in the file to the KeyStore >> - */ >> - public final void addToKeyStore(File file, KeyStore ks) throws CertificateException, >> - IOException, KeyStoreException { >> - BufferedInputStream bis = new BufferedInputStream(new FileInputStream(file)); >> - CertificateFactory cf = CertificateFactory.getInstance("X509"); >> - X509Certificate cert = null; >> - >> - try { >> - cert = (X509Certificate) cf.generateCertificate(bis); >> - } catch (ClassCastException cce) { >> - throw new CertificateException("Input file is not an X509 Certificate", cce); >> - } >> - >> - addToKeyStore(cert, ks); >> - >> - } >> - >> - /** >> - * Adds an X509Certificate to the KeyStore >> - */ >> - public final void addToKeyStore(X509Certificate cert, KeyStore ks) throws KeyStoreException { >> - String alias = null; >> - Random random = new Random(); >> - alias = ks.getCertificateAlias(cert); >> - // already in keystore; done >> - if (alias != null) { >> - return; >> - } >> - >> - do { >> - alias = new BigInteger(20, random).toString(); >> - } while (ks.getCertificate(alias) != null); >> - ks.setCertificateEntry(alias, cert); >> - } >> - >> /** >> * Adds a trusted certificate to the user's keystore. >> * @return true if the add was successful, false otherwise. >> @@ -479,20 +442,6 @@ >> return false; >> } >> >> - public static void dumpCert(Certificate cert, PrintStream out) >> - throws IOException, CertificateException { >> - >> - boolean printRfc = true; >> - if (printRfc) { >> - BASE64Encoder encoder = new BASE64Encoder(); >> - out.println(X509Factory.BEGIN_CERT); >> - encoder.encodeBuffer(cert.getEncoded(), out); >> - out.println(X509Factory.END_CERT); >> - } else { >> - out.write(cert.getEncoded()); // binary >> - } >> - } >> - >> public static void main(String[] args) throws Exception { >> KeyTool kt = new KeyTool(); >> kt.doPrintEntries(System.out); >> diff -r f089abbcf019 plugin/icedteanp/java/sun/applet/PluginMain.java >> --- a/plugin/icedteanp/java/sun/applet/PluginMain.java Mon Nov 08 16:48:38 2010 -0500 >> +++ b/plugin/icedteanp/java/sun/applet/PluginMain.java Tue Nov 09 09:18:48 2010 -0500 >> @@ -215,20 +215,6 @@ >> // INSTALL THE PROPERTY LIST >> System.setProperties(avProps); >> >> - >> - try { >> - SSLSocketFactory sslSocketFactory; >> - SSLContext context = SSLContext.getInstance("SSL"); >> - TrustManager[] trust = new TrustManager[] { VariableX509TrustManager.getInstance() }; >> - context.init(null, trust, null); >> - sslSocketFactory = context.getSocketFactory(); >> - >> - HttpsURLConnection.setDefaultSSLSocketFactory(sslSocketFactory); >> - } catch (Exception e) { >> - System.err.println("Unable to set SSLSocketfactory (may _prevent_ access to sites that should be trusted)! Continuing anyway..."); >> - e.printStackTrace(); >> - } >> - >> // plug in a custom authenticator and proxy selector >> Authenticator.setDefault(new CustomAuthenticator()); >> ProxySelector.setDefault(new PluginProxySelector()); > > Rest looks fine to me. > Oh, and just to clarify something which might not have been obvious from the patch - in general, netx does not cache KeyStores. When it needs to make a security decision related to certificates, it will create appropriate KeyStore objects, do whatever operation it needs to and then discard the KeyStore. This is not true for VariableX509TrustManager, but it is true for JarSigner, Certificate Viewer and the various security prompts. Thanks for the review. Cheers, Omair -------------- next part -------------- A non-text attachment was scrubbed... Name: icedtea-web-variablex509trustmanager-mutilple-keystores-03.patch Type: text/x-patch Size: 31556 bytes Desc: not available Url : http://mail.openjdk.java.net/pipermail/distro-pkg-dev/attachments/20101111/8f2f60a6/icedtea-web-variablex509trustmanager-mutilple-keystores-03.patch From dbhole at redhat.com Thu Nov 11 07:02:55 2010 From: dbhole at redhat.com (Deepak Bhole) Date: Thu, 11 Nov 2010 10:02:55 -0500 Subject: [icedtea-web] RFC: integrate support for multiple KeyStores into the various validators In-Reply-To: <4CDC035A.605@redhat.com> References: <4CDB1BFB.5030704@redhat.com> <20101111134226.GA6888@redhat.com> <4CDC035A.605@redhat.com> Message-ID: <20101111150255.GD6888@redhat.com> * Omair Majid [2010-11-11 09:53]: > On 11/11/2010 08:42 AM, Deepak Bhole wrote: > ... > I based this code off code in KeyTool, and yes, it is slightly > confusing. A KeyStore can be considered a HashMap: it maps a String, > the alias, to a Certificate. The code first checks if the > certificate already exists by trying to find an alias for the given > certificate. If an alias is found, we know the certificate is in the > KeyStore already. If the certificate is not in the KeyStore, we want > to add a new entry to the HashMap, but we do not want to overwrite > an existing certificate. So we create random aliases until we get an > alias which has no mapping in the HashMap. > Ah okay then. > >Also, those methods should not be public static as untrusted apps could > >access them. The keystores shouldn't be either (if they are, either now > >or from before). > > > > I dont think this will be a problem. For one, every time it is > called, it reads the configuration (which untrusted apps are not > allowed to do) and then it reads the keystore from the disk (which > untrusted apps are not allowed to do). Making it non-public would > mean it can not be used by classes in other packages (for example, > JarSigner is in net.sourceforge.jnlp.tools and it uses this class). > Please let me know if this is not enough; I will see what else I can > do. > Reliance on other methods to do security is bad imo. There is no guarantee that the design will stay the same, If it changes and another way to do those functions is implemented, security may be compromised. It is fine to keep them public for other class usage, but please add an AllPermission check in that case. > >>+ /** > >>+ * Checks whether an X509Certificate is already in one of the keystores > >>+ * @param c the certificate > >>+ * @param keyStores the KeyStores to check in > >>+ * @return true if the certificate is present in one of the keystores, false otherwise > >>+ */ > >>+ public static final boolean inKeyStores(X509Certificate c, KeyStore[] keyStores) { > >>+ for (int i = 0; i< keyStores.length; i++) { ... > > > > > >What does printRfc represent? And if it's always true, why the else? > > > > This code was originally from net.sourceforge.jnlp.tools.KeyTool and > was moved over to CertificateUtils. n.s.j.t.KeyTool was adapted from > sun.security.tools.KeyTool which allows dumping certificate in more > than one format. printRfc indicates that the certifcate should be > dumped in the RFC 4945 format > (http://tools.ietf.org/html/rfc4945#section-6.1). Since this is the > only option we support, I have removed that if condition; it is > fixed in the updated patch. > Great! ... ... > > > >Should something like this be public static? Untrusted apps will be able > >to access it and modify it... > > > > I dont think this is a problem. getClientKeyStores() calls > getKeyStore() which reads the configuration (which untrusted apps > are not allowed to do) and then reads the acutal keystore from disk > (which untrusted apps are again not allowed to do). So I dont think > untrusted apps can actually get access to these keystores. If > untrusted apps call getClientKeyStores (or the related methods > getCAKeyStores or getCertKeyStores), they should get a > SecurityException from DeploymentConfiguration. > > A KeyStore is an in-memory version of a keystore file on disk. Even > if untrusted apps were somehow able to access it, saving the > contents to disk would require permissions to write to disk. > Same as with above. An AllPermission check in that case.. > >>+ /** > >> * Returns the location of a KeyStore corresponding to the given level and type. > >> * @param level > >> * @param type > >>@@ -334,4 +357,5 @@ > >> return ks; > >> } > >> > >>+ > >> } > >Rest looks fine to me. > > > > Oh, and just to clarify something which might not have been obvious > from the patch - in general, netx does not cache KeyStores. When it > needs to make a security decision related to certificates, it will > create appropriate KeyStore objects, do whatever operation it needs > to and then discard the KeyStore. This is not true for > VariableX509TrustManager, but it is true for JarSigner, Certificate > Viewer and the various security prompts. > That is fine. Normally I am all for optimizing by reducing disk access, but in this case I think the decision is valid. Other apps may update the keystore while one is running, in which case the running one should have the latest information (especially if another app deleted a cert). Perhaps VariableX509 should be changed to do the same? Also, are the trust store files locked when write happens? If not, they should be. Cheers, Deepak From ahughes at redhat.com Thu Nov 11 07:12:58 2010 From: ahughes at redhat.com (Dr Andrew John Hughes) Date: Thu, 11 Nov 2010 15:12:58 +0000 Subject: [1.9] RFC: Allow NetX to be disabled In-Reply-To: <20101111144925.GC6888@redhat.com> References: <20101111140709.GA9134@rivendell.middle-earth.co.uk> <20101111141800.GB9134@rivendell.middle-earth.co.uk> <20101111144925.GC6888@redhat.com> Message-ID: <20101111151258.GC9134@rivendell.middle-earth.co.uk> On 09:49 Thu 11 Nov , Deepak Bhole wrote: > * Dr Andrew John Hughes [2010-11-11 09:21]: > > > +]) > > > > New version; turns out I missed the -debug target... :-( > > Just tried building with --disable-webstart. The classes are not built, > however javaws still is. javaws shouldn't get built with > --disable-webstart as it'd be unusable without the classes. > Yeah just spotted that; it's because it's added by netx.patch and produced by the OpenJDK build, not our makefiles. Testing a new version. > Cheers, > Deepak -- Andrew :) Free Java Software Engineer Red Hat, Inc. (http://www.redhat.com) Support Free Java! Contribute to GNU Classpath and the OpenJDK http://www.gnu.org/software/classpath http://openjdk.java.net PGP Key: 94EFD9D8 (http://subkeys.pgp.net) Fingerprint = F8EF F1EA 401E 2E60 15FA 7927 142C 2591 94EF D9D8 From ptisnovs at redhat.com Thu Nov 11 07:39:41 2010 From: ptisnovs at redhat.com (Pavel Tisnovsky) Date: Thu, 11 Nov 2010 16:39:41 +0100 Subject: Reviewer needed - really simple correction of regression test hotspot/test/gc/6581734/Test6581734 Message-ID: <4CDC0E3D.6020008@redhat.com> Hi, can anyone please review patch containing really simple correction of regression test hotspot/test/gc/6581734/Test6581734? (as you can see, only right bracket is added to the proper place - one extra character generated by patch of size 828 bytes ;-) diffstat produced against IcedTea6 HEAD is stored in attachment Thank you in advance Pavel T. -------------- next part -------------- An embedded and charset-unspecified text was scrubbed... Name: hg_export Url: http://mail.openjdk.java.net/pipermail/distro-pkg-dev/attachments/20101111/3fcbff23/hg_export.ksh From omajid at redhat.com Thu Nov 11 07:39:01 2010 From: omajid at redhat.com (Omair Majid) Date: Thu, 11 Nov 2010 10:39:01 -0500 Subject: [icedtea-web] RFC: integrate support for multiple KeyStores into the various validators In-Reply-To: <20101111150255.GD6888@redhat.com> References: <4CDB1BFB.5030704@redhat.com> <20101111134226.GA6888@redhat.com> <4CDC035A.605@redhat.com> <20101111150255.GD6888@redhat.com> Message-ID: <4CDC0E15.1000009@redhat.com> On 11/11/2010 10:02 AM, Deepak Bhole wrote: > * Omair Majid [2010-11-11 09:53]: >> On 11/11/2010 08:42 AM, Deepak Bhole wrote: >> > ... >> I based this code off code in KeyTool, and yes, it is slightly >> confusing. A KeyStore can be considered a HashMap: it maps a String, >> the alias, to a Certificate. The code first checks if the >> certificate already exists by trying to find an alias for the given >> certificate. If an alias is found, we know the certificate is in the >> KeyStore already. If the certificate is not in the KeyStore, we want >> to add a new entry to the HashMap, but we do not want to overwrite >> an existing certificate. So we create random aliases until we get an >> alias which has no mapping in the HashMap. >> > > > Ah okay then. > >>> Also, those methods should not be public static as untrusted apps could >>> access them. The keystores shouldn't be either (if they are, either now >>> or from before). >>> >> >> I dont think this will be a problem. For one, every time it is >> called, it reads the configuration (which untrusted apps are not >> allowed to do) and then it reads the keystore from the disk (which >> untrusted apps are not allowed to do). Making it non-public would >> mean it can not be used by classes in other packages (for example, >> JarSigner is in net.sourceforge.jnlp.tools and it uses this class). >> Please let me know if this is not enough; I will see what else I can >> do. >> > > Reliance on other methods to do security is bad imo. There is no > guarantee that the design will stay the same, If it changes and another > way to do those functions is implemented, security may be compromised. > It is fine to keep them public for other class usage, but please add an > AllPermission check in that case. > That's true. On further consideration, I dont think any methods in CertificateUtils need security checks though. They all operate on generic Certificate or KeyStore objects. There is nothing here that is netx specific or that an untrusted application could not do by itself. The actual action of obtaining the netx-specific KeyStores to operate on is the responsibility of KeyStores (see comment below for more about that). Do you think I should add checks anyway? >>>> + /** >>>> + * Checks whether an X509Certificate is already in one of the keystores >>>> + * @param c the certificate >>>> + * @param keyStores the KeyStores to check in >>>> + * @return true if the certificate is present in one of the keystores, false otherwise >>>> + */ >>>> + public static final boolean inKeyStores(X509Certificate c, KeyStore[] keyStores) { >>>> + for (int i = 0; i< keyStores.length; i++) { > ... >>> >>> >>> What does printRfc represent? And if it's always true, why the else? >>> >> >> This code was originally from net.sourceforge.jnlp.tools.KeyTool and >> was moved over to CertificateUtils. n.s.j.t.KeyTool was adapted from >> sun.security.tools.KeyTool which allows dumping certificate in more >> than one format. printRfc indicates that the certifcate should be >> dumped in the RFC 4945 format >> (http://tools.ietf.org/html/rfc4945#section-6.1). Since this is the >> only option we support, I have removed that if condition; it is >> fixed in the updated patch. >> > > Great! > > ... > ... >>> >>> Should something like this be public static? Untrusted apps will be able >>> to access it and modify it... >>> >> >> I dont think this is a problem. getClientKeyStores() calls >> getKeyStore() which reads the configuration (which untrusted apps >> are not allowed to do) and then reads the acutal keystore from disk >> (which untrusted apps are again not allowed to do). So I dont think >> untrusted apps can actually get access to these keystores. If >> untrusted apps call getClientKeyStores (or the related methods >> getCAKeyStores or getCertKeyStores), they should get a >> SecurityException from DeploymentConfiguration. >> >> A KeyStore is an in-memory version of a keystore file on disk. Even >> if untrusted apps were somehow able to access it, saving the >> contents to disk would require permissions to write to disk. >> > > Same as with above. An AllPermission check in that case.. > Yes, that's a good point. Thanks for pointing it out. I have added an AllPermission check in getKeyStore(Level,Type,boolean) which almost all public methods end up calling to access the KeyStores. The only public methods that dont call this check are getKeyStoreLocation (which is supposed to query the configuration object) and toTranslatableString and toDisplayableString (which are translation methods). Do you see any problems with this scheme? >>>> + /** >>>> * Returns the location of a KeyStore corresponding to the given level and type. >>>> * @param level >>>> * @param type >>>> @@ -334,4 +357,5 @@ >>>> return ks; >>>> } >>>> >>>> + >>>> } >>> Rest looks fine to me. >>> >> >> Oh, and just to clarify something which might not have been obvious >> from the patch - in general, netx does not cache KeyStores. When it >> needs to make a security decision related to certificates, it will >> create appropriate KeyStore objects, do whatever operation it needs >> to and then discard the KeyStore. This is not true for >> VariableX509TrustManager, but it is true for JarSigner, Certificate >> Viewer and the various security prompts. >> > > That is fine. Normally I am all for optimizing by reducing disk access, > but in this case I think the decision is valid. Other apps may update > the keystore while one is running, in which case the running one should > have the latest information (especially if another app deleted a cert). > Perhaps VariableX509 should be changed to do the same? > That's a good point. I would like to do that in a separate patch if possible - this patch keeps the semantics of KeyStore caching as they were before. > Also, are the trust store files locked when write happens? If not, they > should be. > They are not locked right now. I will take a look at this and post a patch for this separately. Omair, Omair -------------- next part -------------- A non-text attachment was scrubbed... Name: icedtea-web-variablex509trustmanager-mutilple-keystores-04.patch Type: text/x-patch Size: 32276 bytes Desc: not available Url : http://mail.openjdk.java.net/pipermail/distro-pkg-dev/attachments/20101111/58c7f658/icedtea-web-variablex509trustmanager-mutilple-keystores-04.patch From dbhole at redhat.com Thu Nov 11 07:42:21 2010 From: dbhole at redhat.com (Deepak Bhole) Date: Thu, 11 Nov 2010 10:42:21 -0500 Subject: [icedtea-web] RFC: integrate support for multiple KeyStores into the various validators In-Reply-To: <4CDC0E15.1000009@redhat.com> References: <4CDB1BFB.5030704@redhat.com> <20101111134226.GA6888@redhat.com> <4CDC035A.605@redhat.com> <20101111150255.GD6888@redhat.com> <4CDC0E15.1000009@redhat.com> Message-ID: <20101111154220.GE6888@redhat.com> * Omair Majid [2010-11-11 10:39]: > On 11/11/2010 10:02 AM, Deepak Bhole wrote: > >* Omair Majid [2010-11-11 09:53]: > >>On 11/11/2010 08:42 AM, Deepak Bhole wrote: > >> > >... > >>I based this code off code in KeyTool, and yes, it is slightly > >>confusing. A KeyStore can be considered a HashMap: it maps a String, > >>the alias, to a Certificate. The code first checks if the > >>certificate already exists by trying to find an alias for the given > >>certificate. If an alias is found, we know the certificate is in the > >>KeyStore already. If the certificate is not in the KeyStore, we want > >>to add a new entry to the HashMap, but we do not want to overwrite > >>an existing certificate. So we create random aliases until we get an > >>alias which has no mapping in the HashMap. > >> > > > > > >Ah okay then. > > > >>>Also, those methods should not be public static as untrusted apps could > >>>access them. The keystores shouldn't be either (if they are, either now > >>>or from before). > >>> > >> > >>I dont think this will be a problem. For one, every time it is > >>called, it reads the configuration (which untrusted apps are not > >>allowed to do) and then it reads the keystore from the disk (which > >>untrusted apps are not allowed to do). Making it non-public would > >>mean it can not be used by classes in other packages (for example, > >>JarSigner is in net.sourceforge.jnlp.tools and it uses this class). > >>Please let me know if this is not enough; I will see what else I can > >>do. > >> > > > >Reliance on other methods to do security is bad imo. There is no > >guarantee that the design will stay the same, If it changes and another > >way to do those functions is implemented, security may be compromised. > >It is fine to keep them public for other class usage, but please add an > >AllPermission check in that case. > > > > That's true. On further consideration, I dont think any methods in > CertificateUtils need security checks though. They all operate on > generic Certificate or KeyStore objects. There is nothing here that > is netx specific or that an untrusted application could not do by > itself. The actual action of obtaining the netx-specific KeyStores > to operate on is the responsibility of KeyStores (see comment below > for more about that). Do you think I should add checks anyway? > Ah okay. Nope, in that case no security checks are needed for those functions! > >>>>+ /** > >>>>+ * Checks whether an X509Certificate is already in one of the keystores > >>>>+ * @param c the certificate > >>>>+ * @param keyStores the KeyStores to check in > >>>>+ * @return true if the certificate is present in one of the keystores, false otherwise > >>>>+ */ > >>>>+ public static final boolean inKeyStores(X509Certificate c, KeyStore[] keyStores) { > >>>>+ for (int i = 0; i< keyStores.length; i++) { > >... > >>> > >>> > >>>What does printRfc represent? And if it's always true, why the else? > >>> > >> > >>This code was originally from net.sourceforge.jnlp.tools.KeyTool and > >>was moved over to CertificateUtils. n.s.j.t.KeyTool was adapted from > >>sun.security.tools.KeyTool which allows dumping certificate in more > >>than one format. printRfc indicates that the certifcate should be > >>dumped in the RFC 4945 format > >>(http://tools.ietf.org/html/rfc4945#section-6.1). Since this is the > >>only option we support, I have removed that if condition; it is > >>fixed in the updated patch. > >> > > > >Great! > > > >... > >... > >>> > >>>Should something like this be public static? Untrusted apps will be able > >>>to access it and modify it... > >>> > >> > >>I dont think this is a problem. getClientKeyStores() calls > >>getKeyStore() which reads the configuration (which untrusted apps > >>are not allowed to do) and then reads the acutal keystore from disk > >>(which untrusted apps are again not allowed to do). So I dont think > >>untrusted apps can actually get access to these keystores. If > >>untrusted apps call getClientKeyStores (or the related methods > >>getCAKeyStores or getCertKeyStores), they should get a > >>SecurityException from DeploymentConfiguration. > >> > >>A KeyStore is an in-memory version of a keystore file on disk. Even > >>if untrusted apps were somehow able to access it, saving the > >>contents to disk would require permissions to write to disk. > >> > > > >Same as with above. An AllPermission check in that case.. > > > > Yes, that's a good point. Thanks for pointing it out. I have added > an AllPermission check in getKeyStore(Level,Type,boolean) which > almost all public methods end up calling to access the KeyStores. > The only public methods that dont call this check are > getKeyStoreLocation (which is supposed to query the configuration > object) and toTranslatableString and toDisplayableString (which are > translation methods). Do you see any problems with this scheme? > Translation methods don't need a check. But getKeyStoreLocation... can that me made to return a location in user.home/* ? If so, it provides access to user.home indirectly and needs a check. > >>>>+ /** > >>>> * Returns the location of a KeyStore corresponding to the given level and type. > >>>> * @param level > >>>> * @param type > >>>>@@ -334,4 +357,5 @@ > >>>> return ks; > >>>> } > >>>> > >>>>+ > >>>> } > >>>Rest looks fine to me. > >>> > >> > >>Oh, and just to clarify something which might not have been obvious > >>from the patch - in general, netx does not cache KeyStores. When it > >>needs to make a security decision related to certificates, it will > >>create appropriate KeyStore objects, do whatever operation it needs > >>to and then discard the KeyStore. This is not true for > >>VariableX509TrustManager, but it is true for JarSigner, Certificate > >>Viewer and the various security prompts. > >> > > > >That is fine. Normally I am all for optimizing by reducing disk access, > >but in this case I think the decision is valid. Other apps may update > >the keystore while one is running, in which case the running one should > >have the latest information (especially if another app deleted a cert). > >Perhaps VariableX509 should be changed to do the same? > > > > That's a good point. I would like to do that in a separate patch if > possible - this patch keeps the semantics of KeyStore caching as > they were before. > Sure! It should definitely be in a separate patch/ > >Also, are the trust store files locked when write happens? If not, they > >should be. > > > > They are not locked right now. I will take a look at this and post a > patch for this separately. > Awesome, thanks! Cheers, Deepak > Omair, > Omair > diff -r 44d47c366e5f netx/net/sourceforge/jnlp/runtime/Boot.java > --- a/netx/net/sourceforge/jnlp/runtime/Boot.java Wed Nov 10 16:24:53 2010 -0500 > +++ b/netx/net/sourceforge/jnlp/runtime/Boot.java Thu Nov 11 10:36:55 2010 -0500 > @@ -172,20 +172,6 @@ > JNLPRuntime.setForksAllowed(false); > } > > - // wire in custom authenticator > - try { > - SSLSocketFactory sslSocketFactory; > - SSLContext context = SSLContext.getInstance("SSL"); > - TrustManager[] trust = new TrustManager[] { VariableX509TrustManager.getInstance() }; > - context.init(null, trust, null); > - sslSocketFactory = context.getSocketFactory(); > - > - HttpsURLConnection.setDefaultSSLSocketFactory(sslSocketFactory); > - } catch (Exception e) { > - System.err.println("Unable to set SSLSocketfactory (may _prevent_ access to sites that should be trusted)! Continuing anyway..."); > - e.printStackTrace(); > - } > - > JNLPRuntime.setInitialArgments(Arrays.asList(argsIn)); > > // do in a privileged action to clear the security context of > diff -r 44d47c366e5f netx/net/sourceforge/jnlp/runtime/JNLPRuntime.java > --- a/netx/net/sourceforge/jnlp/runtime/JNLPRuntime.java Wed Nov 10 16:24:53 2010 -0500 > +++ b/netx/net/sourceforge/jnlp/runtime/JNLPRuntime.java Thu Nov 11 10:36:55 2010 -0500 > @@ -26,12 +26,17 @@ > import java.security.*; > import javax.jnlp.*; > import javax.naming.ConfigurationException; > +import javax.net.ssl.HttpsURLConnection; > +import javax.net.ssl.SSLContext; > +import javax.net.ssl.SSLSocketFactory; > +import javax.net.ssl.TrustManager; > import javax.swing.UIManager; > import javax.swing.text.html.parser.ParserDelegator; > > import net.sourceforge.jnlp.*; > import net.sourceforge.jnlp.cache.*; > import net.sourceforge.jnlp.security.SecurityDialogMessageHandler; > +import net.sourceforge.jnlp.security.VariableX509TrustManager; > import net.sourceforge.jnlp.services.*; > import net.sourceforge.jnlp.util.*; > > @@ -223,6 +228,20 @@ > > securityDialogMessageHandler = startSecurityThreads(); > > + // wire in custom authenticator > + try { > + SSLSocketFactory sslSocketFactory; > + SSLContext context = SSLContext.getInstance("SSL"); > + TrustManager[] trust = new TrustManager[] { VariableX509TrustManager.getInstance() }; > + context.init(null, trust, null); > + sslSocketFactory = context.getSocketFactory(); > + > + HttpsURLConnection.setDefaultSSLSocketFactory(sslSocketFactory); > + } catch (Exception e) { > + System.err.println("Unable to set SSLSocketfactory (may _prevent_ access to sites that should be trusted)! Continuing anyway..."); > + e.printStackTrace(); > + } > + > initialized = true; > > } > diff -r 44d47c366e5f netx/net/sourceforge/jnlp/security/CertWarningPane.java > --- a/netx/net/sourceforge/jnlp/security/CertWarningPane.java Wed Nov 10 16:24:53 2010 -0500 > +++ b/netx/net/sourceforge/jnlp/security/CertWarningPane.java Thu Nov 11 10:36:55 2010 -0500 > @@ -47,6 +47,9 @@ > import java.awt.GridLayout; > import java.awt.event.ActionEvent; > import java.awt.event.ActionListener; > +import java.io.FileOutputStream; > +import java.io.OutputStream; > +import java.security.KeyStore; > import java.security.cert.Certificate; > import java.security.cert.X509Certificate; > > @@ -62,6 +65,8 @@ > import net.sourceforge.jnlp.JNLPFile; > import net.sourceforge.jnlp.PluginBridge; > import net.sourceforge.jnlp.runtime.JNLPRuntime; > +import net.sourceforge.jnlp.security.KeyStores.Level; > +import net.sourceforge.jnlp.security.KeyStores.Type; > import net.sourceforge.jnlp.security.SecurityWarning.AccessType; > import net.sourceforge.jnlp.tools.KeyTool; > > @@ -232,25 +237,28 @@ > } > } > > - /** > - * Updates the user's KeyStore of trusted Certificates. > - */ > - private class CheckBoxListener implements ActionListener { > - public void actionPerformed(ActionEvent e) { > - if (alwaysTrust != null && alwaysTrust.isSelected()) { > - try { > - KeyTool kt = new KeyTool(); > - Certificate c = parent.getJarSigner().getPublisher(); > - kt.importCert(c); > - if (JNLPRuntime.isDebug()) { > - System.out.println("certificate is now permanently trusted"); > - } > - } catch (Exception ex) { > - //TODO: Let NetX show a dialog here notifying user > - //about being unable to add cert to keystore > - } > - } > + /** > + * Updates the user's KeyStore of trusted Certificates. > + */ > + private class CheckBoxListener implements ActionListener { > + public void actionPerformed(ActionEvent e) { > + if (alwaysTrust != null && alwaysTrust.isSelected()) { > + try { > + KeyStore ks = KeyStores.getKeyStore(Level.USER, Type.CERTS); > + X509Certificate c = (X509Certificate) parent.getJarSigner().getPublisher(); > + CertificateUtils.addToKeyStore(c, ks); > + OutputStream os = new FileOutputStream(KeyStores.getKeyStoreLocation(Level.USER, Type.CERTS)); > + ks.store(os, KeyStores.getPassword()); > + if (JNLPRuntime.isDebug()) { > + System.out.println("certificate is now permanently trusted"); > + } > + } catch (Exception ex) { > + // TODO: Let NetX show a dialog here notifying user > + // about being unable to add cert to keystore > + ex.printStackTrace(); > } > + } > } > + } > > } > diff -r 44d47c366e5f netx/net/sourceforge/jnlp/security/CertificateUtils.java > --- /dev/null Thu Jan 01 00:00:00 1970 +0000 > +++ b/netx/net/sourceforge/jnlp/security/CertificateUtils.java Thu Nov 11 10:36:55 2010 -0500 > @@ -0,0 +1,140 @@ > +/* CertificateUtils.java > + Copyright (C) 2010 Red Hat, Inc. > + > +This file is part of IcedTea. > + > +IcedTea is free software; you can redistribute it and/or > +modify it under the terms of the GNU General Public License as published by > +the Free Software Foundation, version 2. > + > +IcedTea is distributed in the hope that it will be useful, > +but WITHOUT ANY WARRANTY; without even the implied warranty of > +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU > +General Public License for more details. > + > +You should have received a copy of the GNU General Public License > +along with IcedTea; see the file COPYING. If not, write to > +the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA > +02110-1301 USA. > + > +Linking this library statically or dynamically with other modules is > +making a combined work based on this library. Thus, the terms and > +conditions of the GNU General Public License cover the whole > +combination. > + > +As a special exception, the copyright holders of this library give you > +permission to link this library with independent modules to produce an > +executable, regardless of the license terms of these independent > +modules, and to copy and distribute the resulting executable under > +terms of your choice, provided that you also meet, for each linked > +independent module, the terms and conditions of the license of that > +module. An independent module is a module which is not derived from > +or based on this library. If you modify this library, you may extend > +this exception to your version of the library, but you are not > +obligated to do so. If you do not wish to do so, delete this > +exception statement from your version. > +*/ > + > +package net.sourceforge.jnlp.security; > + > +import java.io.BufferedInputStream; > +import java.io.File; > +import java.io.FileInputStream; > +import java.io.IOException; > +import java.io.PrintStream; > +import java.math.BigInteger; > +import java.security.KeyStore; > +import java.security.KeyStoreException; > +import java.security.cert.Certificate; > +import java.security.cert.CertificateException; > +import java.security.cert.CertificateFactory; > +import java.security.cert.X509Certificate; > +import java.util.Random; > + > +import net.sourceforge.jnlp.runtime.JNLPRuntime; > + > +import sun.misc.BASE64Encoder; > +import sun.security.provider.X509Factory; > + > +public class CertificateUtils { > + /** > + * Adds the X509Certficate in the file to the KeyStore. Note that it does > + * not update the copy of the KeyStore on disk. > + */ > + public static final void addToKeyStore(File file, KeyStore ks) throws CertificateException, > + IOException, KeyStoreException { > + if (JNLPRuntime.isDebug()) { > + System.out.println("Importing certificate from " + file + " into " + ks); > + } > + > + BufferedInputStream bis = new BufferedInputStream(new FileInputStream(file)); > + CertificateFactory cf = CertificateFactory.getInstance("X509"); > + X509Certificate cert = null; > + > + try { > + cert = (X509Certificate) cf.generateCertificate(bis); > + } catch (ClassCastException cce) { > + throw new CertificateException("Input file is not an X509 Certificate", cce); > + } > + > + addToKeyStore(cert, ks); > + } > + > + /** > + * Adds an X509Certificate to the KeyStore. Note that it does not update the > + * copy of the KeyStore on disk. > + */ > + public static final void addToKeyStore(X509Certificate cert, KeyStore ks) > + throws KeyStoreException { > + if (JNLPRuntime.isDebug()) { > + System.out.println("Importing " + cert.getSubjectX500Principal().getName()); > + } > + > + String alias = null; > + Random random = new Random(); > + alias = ks.getCertificateAlias(cert); > + if (alias != null) { > + return; > + } > + > + do { > + alias = new BigInteger(20, random).toString(); > + } while (ks.getCertificate(alias) != null); > + ks.setCertificateEntry(alias, cert); > + } > + > + /** > + * Checks whether an X509Certificate is already in one of the keystores > + * @param c the certificate > + * @param keyStores the KeyStores to check in > + * @return true if the certificate is present in one of the keystores, false otherwise > + */ > + public static final boolean inKeyStores(X509Certificate c, KeyStore[] keyStores) { > + for (int i = 0; i < keyStores.length; i++) { > + try { > + if (keyStores[i].getCertificateAlias(c) != null) { > + if (JNLPRuntime.isDebug()) { > + System.out.println(c.getSubjectX500Principal().getName() + " found in cacerts"); > + } > + return true; > + } > + } catch (KeyStoreException e) { > + e.printStackTrace(); > + // continue > + } > + } > + return false; > + } > + > + /** > + * Writes the certificate in base64 encoded from to the print stream > + */ > + public static void dump(Certificate cert, PrintStream out) throws IOException, > + CertificateException { > + > + BASE64Encoder encoder = new BASE64Encoder(); > + out.println(X509Factory.BEGIN_CERT); > + encoder.encodeBuffer(cert.getEncoded(), out); > + out.println(X509Factory.END_CERT); > + } > +} > diff -r 44d47c366e5f netx/net/sourceforge/jnlp/security/HttpsCertVerifier.java > --- a/netx/net/sourceforge/jnlp/security/HttpsCertVerifier.java Wed Nov 10 16:24:53 2010 -0500 > +++ b/netx/net/sourceforge/jnlp/security/HttpsCertVerifier.java Thu Nov 11 10:36:55 2010 -0500 > @@ -40,6 +40,7 @@ > import static net.sourceforge.jnlp.runtime.Translator.R; > > import java.io.IOException; > +import java.security.KeyStore; > import java.security.cert.CertPath; > import java.security.cert.Certificate; > import java.security.cert.CertificateException; > @@ -213,8 +214,8 @@ > > public boolean getRootInCacerts() { > try { > - KeyTool kt = new KeyTool(); > - return kt.checkCacertsForCertificate(getRoot()); > + KeyStore[] caCertsKeyStores = KeyStores.getCAKeyStores(); > + return CertificateUtils.inKeyStores((X509Certificate)getRoot(), caCertsKeyStores); > } catch (Exception e) { > } > return false; > diff -r 44d47c366e5f netx/net/sourceforge/jnlp/security/KeyStores.java > --- a/netx/net/sourceforge/jnlp/security/KeyStores.java Wed Nov 10 16:24:53 2010 -0500 > +++ b/netx/net/sourceforge/jnlp/security/KeyStores.java Thu Nov 11 10:36:55 2010 -0500 > @@ -41,6 +41,7 @@ > import java.io.FileInputStream; > import java.io.FileOutputStream; > import java.io.IOException; > +import java.security.AllPermission; > import java.security.KeyStore; > import java.security.KeyStoreException; > import java.security.NoSuchAlgorithmException; > @@ -111,6 +112,11 @@ > * @return a KeyStore containing certificates from the appropriate > */ > public static final KeyStore getKeyStore(Level level, Type type, boolean create) { > + SecurityManager sm = System.getSecurityManager(); > + if (sm != null) { > + sm.checkPermission(new AllPermission()); > + } > + > String location = getKeyStoreLocation(level, type); > KeyStore ks = null; > try { > @@ -189,6 +195,29 @@ > } > > /** > + * Returns KeyStores containing trusted client certificates > + * > + * @return an array of KeyStore objects that can be used to check client > + * authentication certificates > + */ > + public static KeyStore[] getClientKeyStores() { > + List result = new ArrayList(); > + KeyStore ks = null; > + > + ks = getKeyStore(Level.SYSTEM, Type.CLIENT_CERTS); > + if (ks != null) { > + result.add(ks); > + } > + > + ks = getKeyStore(Level.USER, Type.CLIENT_CERTS); > + if (ks != null) { > + result.add(ks); > + } > + > + return result.toArray(new KeyStore[result.size()]); > + } > + > + /** > * Returns the location of a KeyStore corresponding to the given level and type. > * @param level > * @param type > @@ -336,4 +365,5 @@ > return ks; > } > > + > } > diff -r 44d47c366e5f netx/net/sourceforge/jnlp/security/VariableX509TrustManager.java > --- a/netx/net/sourceforge/jnlp/security/VariableX509TrustManager.java Wed Nov 10 16:24:53 2010 -0500 > +++ b/netx/net/sourceforge/jnlp/security/VariableX509TrustManager.java Thu Nov 11 10:36:55 2010 -0500 > @@ -42,6 +42,8 @@ > import java.security.cert.CertificateException; > import java.security.cert.X509Certificate; > import java.util.ArrayList; > +import java.util.Arrays; > +import java.util.List; > > import javax.net.ssl.TrustManager; > import javax.net.ssl.TrustManagerFactory; > @@ -60,59 +62,98 @@ > * different certificates that are not in the keystore. > */ > > -public class VariableX509TrustManager extends X509ExtendedTrustManager { > +final public class VariableX509TrustManager extends X509ExtendedTrustManager { > > - KeyStore userKeyStore = null; > - KeyStore caKeyStore = null; > + /** TrustManagers containing trusted CAs */ > + private X509TrustManager[] caTrustManagers = null; > > - X509TrustManager userTrustManager = null; > - X509TrustManager caTrustManager = null; > + /** TrustManagers containing trusted certificates */ > + private X509TrustManager[] certTrustManagers = null; > > - ArrayList temporarilyTrusted = new ArrayList(); > - ArrayList temporarilyUntrusted = new ArrayList(); > + /** TrustManagers containing trusted client certificates */ > + private X509TrustManager[] clientTrustManagers = null; > > - static VariableX509TrustManager instance = null; > + private ArrayList temporarilyTrusted = new ArrayList(); > + private ArrayList temporarilyUntrusted = new ArrayList(); > + > + private static VariableX509TrustManager instance = null; > > /** > * Constructor initializes the system, user and custom stores > */ > public VariableX509TrustManager() { > > + /* > + * Load TrustManagers for trusted certificates > + */ > try { > - userKeyStore = SecurityUtil.getUserKeyStore(); > - TrustManagerFactory tmFactory = TrustManagerFactory.getInstance("SunX509", "SunJSSE"); > - tmFactory.init(userKeyStore); > + /** KeyStores containing trusted certificates */ > + KeyStore[] trustedCertKeyStores = KeyStores.getCertKeyStores(); > + certTrustManagers = new X509TrustManager[trustedCertKeyStores.length]; > > - // tm factory initialized, now get the managers so we can assign the X509 one > - TrustManager[] trustManagers = tmFactory.getTrustManagers(); > + for (int j = 0; j < trustedCertKeyStores.length; j++) { > + TrustManagerFactory tmFactory = TrustManagerFactory.getInstance("SunX509", "SunJSSE"); > + tmFactory.init(trustedCertKeyStores[j]); > > - for (int i=0; i < trustManagers.length; i++) { > - if (trustManagers[i] instanceof X509TrustManager) { > - userTrustManager = (X509TrustManager) trustManagers[i]; > + // tm factory initialized, now get the managers so we can assign the X509 one > + TrustManager[] trustManagers = tmFactory.getTrustManagers(); > + > + for (int i = 0; i < trustManagers.length; i++) { > + if (trustManagers[i] instanceof X509TrustManager) { > + certTrustManagers[j] = (X509TrustManager) trustManagers[i]; > + } > } > } > - > } catch (Exception e) { > - // TODO Auto-generated catch block > e.printStackTrace(); > } > > + /* > + * Load TrustManagers for trusted CAs > + */ > try { > - caKeyStore = SecurityUtil.getCacertsKeyStore(); > - TrustManagerFactory tmFactory = TrustManagerFactory.getInstance("SunX509", "SunJSSE"); > - tmFactory.init(caKeyStore); > + /** KeyStores containing trusted CAs */ > + KeyStore[] trustedCAKeyStores = KeyStores.getCAKeyStores(); > + caTrustManagers = new X509TrustManager[trustedCAKeyStores.length]; > > - // tm factory initialized, now get the managers so we can extract the X509 one > - TrustManager[] trustManagers = tmFactory.getTrustManagers(); > + for (int j = 0; j < caTrustManagers.length; j++) { > + TrustManagerFactory tmFactory = TrustManagerFactory.getInstance("SunX509", "SunJSSE"); > + tmFactory.init(trustedCAKeyStores[j]); > > - for (int i=0; i < trustManagers.length; i++) { > - if (trustManagers[i] instanceof X509TrustManager) { > - caTrustManager = (X509TrustManager) trustManagers[i]; > + // tm factory initialized, now get the managers so we can extract the X509 one > + TrustManager[] trustManagers = tmFactory.getTrustManagers(); > + > + for (int i=0; i < trustManagers.length; i++) { > + if (trustManagers[i] instanceof X509TrustManager) { > + caTrustManagers[j] = (X509TrustManager) trustManagers[i]; > + } > } > } > + } catch (Exception e) { > + e.printStackTrace(); > + } > > + /* > + * Load TrustManagers for trusted clients certificates > + */ > + try { > + KeyStore[] clientKeyStores = KeyStores.getClientKeyStores(); > + clientTrustManagers = new X509TrustManager[clientKeyStores.length]; > + > + for (int j = 0; j < clientTrustManagers.length; j++) { > + TrustManagerFactory tmFactory = TrustManagerFactory.getInstance("SunX509", "SunJSSE"); > + tmFactory.init(clientKeyStores[j]); > + > + // tm factory initialized, now get the managers so we can extract the X509 one > + TrustManager[] trustManagers = tmFactory.getTrustManagers(); > + > + for (int i=0; i < trustManagers.length; i++) { > + if (trustManagers[i] instanceof X509TrustManager) { > + clientTrustManagers[j] = (X509TrustManager) trustManagers[i]; > + } > + } > + } > } catch (Exception e) { > - // TODO Auto-generated catch block > e.printStackTrace(); > } > } > @@ -123,18 +164,23 @@ > public void checkClientTrusted(X509Certificate[] chain, String authType, > String hostName, String algorithm) > throws CertificateException { > - // First try catrustmanager, then try usertrustmanager > - try { > - caTrustManager.checkClientTrusted(chain, authType); > - } catch (Exception caex) { > + > + boolean trusted = false; > + ValidatorException savedException = null; > + for (int i = 0; i < clientTrustManagers.length; i++) { > try { > - userTrustManager.checkClientTrusted(chain, authType); > - } catch (Exception userex) { > - // Do nothing here. This trust manager is intended to be used > - // only in the plugin instance vm, which does not act as a > - // server > + clientTrustManagers[i].checkClientTrusted(chain, authType); > + trusted = true; > + break; > + } catch (ValidatorException caex) { > + savedException = caex; > } > } > + if (trusted) { > + return; > + } > + > + throw savedException; > } > > public void checkClientTrusted(X509Certificate[] chain, String authType) > @@ -214,17 +260,45 @@ > * Check system, user and custom trust manager > */ > private void checkAllManagers(X509Certificate[] chain, String authType) throws CertificateException { > - // First try catrustmanager, then try usertrustmanager, and finally, check temp trusted certs > - try { > - caTrustManager.checkServerTrusted(chain, authType); > - } catch (ValidatorException caex) { > + // first try CA TrustManagers > + boolean trusted = false; > + ValidatorException savedException = null; > + for (int i = 0; i < caTrustManagers.length; i++) { > try { > - userTrustManager.checkServerTrusted(chain, authType); > - } catch (ValidatorException uex) { > - if (!temporarilyTrusted.contains(chain[0])) > - throw (CertificateException) uex; > + caTrustManagers[i].checkServerTrusted(chain, authType); > + trusted = true; > + break; > + } catch (ValidatorException caex) { > + savedException = caex; > } > } > + if (trusted) { > + return; > + } > + > + // then try certificate TrustManagers > + for (int i = 0; i < certTrustManagers.length; i++) { > + try { > + certTrustManagers[i].checkServerTrusted(chain, authType); > + trusted = true; > + break; > + } catch (ValidatorException caex) { > + savedException = caex; > + } > + } > + if (trusted) { > + return; > + } > + > + // finally check temp trusted certs > + if (!temporarilyTrusted.contains(chain[0])) { > + if (savedException == null) { > + // System.out.println("IMPOSSIBLE!"); > + throw new ValidatorException(ValidatorException.T_SIGNATURE_ERROR, chain[0]); > + } > + throw savedException; > + } > + > } > > /** > @@ -233,23 +307,32 @@ > private boolean isExplicitlyTrusted(X509Certificate[] chain, String authType) { > boolean explicitlyTrusted = false; > > - try { > - userTrustManager.checkServerTrusted(chain, authType); > - explicitlyTrusted = true; > - } catch (ValidatorException uex) { > - if (temporarilyTrusted.contains(chain[0])) > + for (int i = 0; i < certTrustManagers.length; i++) { > + try { > + certTrustManagers[i].checkServerTrusted(chain, authType); > explicitlyTrusted = true; > - } catch (CertificateException ce) { > - // do nothing, this means that the cert is not explicitly trusted > + break; > + } catch (ValidatorException uex) { > + if (temporarilyTrusted.contains(chain[0])) { > + explicitlyTrusted = true; > + break; > + } > + } catch (CertificateException ce) { > + // not explicitly trusted > + } > } > > return explicitlyTrusted; > - > } > > public X509Certificate[] getAcceptedIssuers() { > - // delegate to default > - return caTrustManager.getAcceptedIssuers(); > + List issuers = new ArrayList(); > + > + for (int i = 0; i < caTrustManagers.length; i++) { > + issuers.addAll(Arrays.asList(caTrustManagers[i].getAcceptedIssuers())); > + } > + > + return issuers.toArray(new X509Certificate[issuers.size()]); > } > > /** > diff -r 44d47c366e5f netx/net/sourceforge/jnlp/security/viewer/CertificatePane.java > --- a/netx/net/sourceforge/jnlp/security/viewer/CertificatePane.java Wed Nov 10 16:24:53 2010 -0500 > +++ b/netx/net/sourceforge/jnlp/security/viewer/CertificatePane.java Thu Nov 11 10:36:55 2010 -0500 > @@ -71,6 +71,7 @@ > import javax.swing.event.ChangeListener; > import javax.swing.table.DefaultTableModel; > > +import net.sourceforge.jnlp.security.CertificateUtils; > import net.sourceforge.jnlp.security.KeyStores; > import net.sourceforge.jnlp.security.SecurityUtil; > import net.sourceforge.jnlp.security.SecurityWarningDialog; > @@ -359,9 +360,8 @@ > int returnVal = chooser.showOpenDialog(parent); > if(returnVal == JFileChooser.APPROVE_OPTION) { > try { > - KeyTool kt = new KeyTool(); > KeyStore ks = keyStore; > - kt.addToKeyStore(chooser.getSelectedFile(), ks); > + CertificateUtils.addToKeyStore(chooser.getSelectedFile(), ks); > OutputStream os = new FileOutputStream( > KeyStores.getKeyStoreLocation(currentKeyStoreLevel, currentKeyStoreType)); > ks.store(os, KeyStores.getPassword()); > @@ -399,7 +399,7 @@ > if (alias != null) { > Certificate c = keyStore.getCertificate(alias); > PrintStream ps = new PrintStream(chooser.getSelectedFile().getAbsolutePath()); > - KeyTool.dumpCert(c, ps); > + CertificateUtils.dump(c, ps); > repopulateTables(); > } > } > diff -r 44d47c366e5f netx/net/sourceforge/jnlp/tools/JarSigner.java > --- a/netx/net/sourceforge/jnlp/tools/JarSigner.java Wed Nov 10 16:24:53 2010 -0500 > +++ b/netx/net/sourceforge/jnlp/tools/JarSigner.java Thu Nov 11 10:36:55 2010 -0500 > @@ -371,9 +371,12 @@ > private void checkTrustedCerts() throws Exception { > if (certPath != null) { > try { > - KeyTool kt = new KeyTool(); > - alreadyTrustPublisher = kt.isTrusted(getPublisher()); > - rootInCacerts = kt.checkCacertsForCertificate(getRoot()); > + X509Certificate publisher = (X509Certificate) getPublisher(); > + KeyStore[] certKeyStores = KeyStores.getCertKeyStores(); > + alreadyTrustPublisher = CertificateUtils.inKeyStores(publisher, certKeyStores); > + X509Certificate root = (X509Certificate) getRoot(); > + KeyStore[] caKeyStores = KeyStores.getCAKeyStores(); > + rootInCacerts = CertificateUtils.inKeyStores(root, caKeyStores); > } catch (Exception e) { > // TODO: Warn user about not being able to > // look through their cacerts/trusted.certs > diff -r 44d47c366e5f netx/net/sourceforge/jnlp/tools/KeyTool.java > --- a/netx/net/sourceforge/jnlp/tools/KeyTool.java Wed Nov 10 16:24:53 2010 -0500 > +++ b/netx/net/sourceforge/jnlp/tools/KeyTool.java Thu Nov 11 10:36:55 2010 -0500 > @@ -119,43 +119,6 @@ > return importCert((Certificate)cert); > } > > - /** > - * Adds the X509Certficate in the file to the KeyStore > - */ > - public final void addToKeyStore(File file, KeyStore ks) throws CertificateException, > - IOException, KeyStoreException { > - BufferedInputStream bis = new BufferedInputStream(new FileInputStream(file)); > - CertificateFactory cf = CertificateFactory.getInstance("X509"); > - X509Certificate cert = null; > - > - try { > - cert = (X509Certificate) cf.generateCertificate(bis); > - } catch (ClassCastException cce) { > - throw new CertificateException("Input file is not an X509 Certificate", cce); > - } > - > - addToKeyStore(cert, ks); > - > - } > - > - /** > - * Adds an X509Certificate to the KeyStore > - */ > - public final void addToKeyStore(X509Certificate cert, KeyStore ks) throws KeyStoreException { > - String alias = null; > - Random random = new Random(); > - alias = ks.getCertificateAlias(cert); > - // already in keystore; done > - if (alias != null) { > - return; > - } > - > - do { > - alias = new BigInteger(20, random).toString(); > - } while (ks.getCertificate(alias) != null); > - ks.setCertificateEntry(alias, cert); > - } > - > /** > * Adds a trusted certificate to the user's keystore. > * @return true if the add was successful, false otherwise. > @@ -479,20 +442,6 @@ > return false; > } > > - public static void dumpCert(Certificate cert, PrintStream out) > - throws IOException, CertificateException { > - > - boolean printRfc = true; > - if (printRfc) { > - BASE64Encoder encoder = new BASE64Encoder(); > - out.println(X509Factory.BEGIN_CERT); > - encoder.encodeBuffer(cert.getEncoded(), out); > - out.println(X509Factory.END_CERT); > - } else { > - out.write(cert.getEncoded()); // binary > - } > - } > - > public static void main(String[] args) throws Exception { > KeyTool kt = new KeyTool(); > kt.doPrintEntries(System.out); > diff -r 44d47c366e5f plugin/icedteanp/java/sun/applet/PluginMain.java > --- a/plugin/icedteanp/java/sun/applet/PluginMain.java Wed Nov 10 16:24:53 2010 -0500 > +++ b/plugin/icedteanp/java/sun/applet/PluginMain.java Thu Nov 11 10:36:55 2010 -0500 > @@ -215,20 +215,6 @@ > // INSTALL THE PROPERTY LIST > System.setProperties(avProps); > > - > - try { > - SSLSocketFactory sslSocketFactory; > - SSLContext context = SSLContext.getInstance("SSL"); > - TrustManager[] trust = new TrustManager[] { VariableX509TrustManager.getInstance() }; > - context.init(null, trust, null); > - sslSocketFactory = context.getSocketFactory(); > - > - HttpsURLConnection.setDefaultSSLSocketFactory(sslSocketFactory); > - } catch (Exception e) { > - System.err.println("Unable to set SSLSocketfactory (may _prevent_ access to sites that should be trusted)! Continuing anyway..."); > - e.printStackTrace(); > - } > - > // plug in a custom authenticator and proxy selector > Authenticator.setDefault(new CustomAuthenticator()); > ProxySelector.setDefault(new PluginProxySelector()); From ahughes at redhat.com Thu Nov 11 07:56:29 2010 From: ahughes at redhat.com (Dr Andrew John Hughes) Date: Thu, 11 Nov 2010 15:56:29 +0000 Subject: [1.9] RFC: Allow NetX to be disabled In-Reply-To: <20101111151258.GC9134@rivendell.middle-earth.co.uk> References: <20101111140709.GA9134@rivendell.middle-earth.co.uk> <20101111141800.GB9134@rivendell.middle-earth.co.uk> <20101111144925.GC6888@redhat.com> <20101111151258.GC9134@rivendell.middle-earth.co.uk> Message-ID: <20101111155628.GD9134@rivendell.middle-earth.co.uk> On 15:12 Thu 11 Nov , Dr Andrew John Hughes wrote: > On 09:49 Thu 11 Nov , Deepak Bhole wrote: > > * Dr Andrew John Hughes [2010-11-11 09:21]: > > > > +]) > > > > > > New version; turns out I missed the -debug target... :-( > > > > Just tried building with --disable-webstart. The classes are not built, > > however javaws still is. javaws shouldn't get built with > > --disable-webstart as it'd be unusable without the classes. > > > > Yeah just spotted that; it's because it's added by netx.patch and produced > by the OpenJDK build, not our makefiles. Testing a new version. > > > Cheers, > > Deepak > > -- > Andrew :) > > Free Java Software Engineer > Red Hat, Inc. (http://www.redhat.com) > > Support Free Java! > Contribute to GNU Classpath and the OpenJDK > http://www.gnu.org/software/classpath > http://openjdk.java.net > PGP Key: 94EFD9D8 (http://subkeys.pgp.net) > Fingerprint = F8EF F1EA 401E 2E60 15FA 7927 142C 2591 94EF D9D8 New version attached. -- Andrew :) Free Java Software Engineer Red Hat, Inc. (http://www.redhat.com) Support Free Java! Contribute to GNU Classpath and the OpenJDK http://www.gnu.org/software/classpath http://openjdk.java.net PGP Key: 94EFD9D8 (http://subkeys.pgp.net) Fingerprint = F8EF F1EA 401E 2E60 15FA 7927 142C 2591 94EF D9D8 -------------- next part -------------- diff -r 17c34c4c6fae Makefile.am --- a/Makefile.am Wed Nov 10 16:30:08 2010 +0000 +++ b/Makefile.am Thu Nov 11 15:55:47 2010 +0000 @@ -288,8 +288,6 @@ patches/icedtea-policy-evaluation.patch \ patches/hotspot/$(HSBUILD)/update-bootclasspath.patch \ patches/libpng.patch \ - patches/extensions/netx.patch \ - patches/extensions/netx-umask.patch \ patches/icedtea-jtreg-httpTest.patch \ patches/arm.patch \ patches/openjdk/6678385-window_movement_crasher.patch \ @@ -339,6 +337,12 @@ patches/icedtea-rhino.patch endif +if ENABLE_NETX +ICEDTEA_PATCHES += \ + patches/extensions/netx.patch \ + patches/extensions/netx-umask.patch +endif + if ENABLE_PLUGIN ICEDTEA_PATCHES += \ patches/extensions/liveconnect.patch @@ -579,7 +583,7 @@ clean-icedtea-against-icedtea clean-icedtea-debug-against-icedtea \ clean-icedtea-against-ecj clean-extract-ecj clean-generated clean-replace-hotspot \ clean-rewriter clean-rewrite-rhino clean-extra clean-rt clean-bootstrap-directory \ - clean-bootstrap-directory-ecj clean-bootstrap-directory-symlink \ + clean-bootstrap-directory-ecj clean-bootstrap-directory-symlink clean-about \ clean-bootstrap-directory-symlink-ecj if [ -e bootstrap ]; then \ rmdir bootstrap ; \ @@ -613,7 +617,7 @@ clean-ports clean-overlay clean-extract-ecj clean-extract clean-extract-openjdk \ clean-replace-hotspot clean-generated clean-download clean-hgforest clean-download-openjdk \ clean-rewriter clean-rewrite-rhino clean-add-netx clean-add-netx-debug \ - clean-add-plugin clean-add-plugin-debug + clean-add-plugin clean-add-plugin-debug clean-about env: @echo 'unset JAVA_HOME' @@ -1469,7 +1473,8 @@ rm -f $(DEBUG_BUILD_OUTPUT_DIR)/j2re-image/lib/plugin.jar rm -f stamps/add-plugin-debug.stamp -stamps/add-netx.stamp: stamps/netx-dist.stamp extra-lib/about.jar +stamps/add-netx.stamp: stamps/netx-dist.stamp stamps/about.stamp +if ENABLE_NETX cp -pPRf $(abs_top_builddir)/netx.build/lib/classes.jar \ $(BUILD_OUTPUT_DIR)/j2sdk-image/jre/lib/netx.jar cp -pPRf $(abs_top_builddir)/netx.build/lib/classes.jar \ @@ -1486,6 +1491,7 @@ cp $(NETX_SRCDIR)/javaws.1 \ $(BUILD_OUTPUT_DIR)/j2re-image/man/man1 ; \ fi +endif touch stamps/add-netx.stamp clean-add-netx: @@ -1499,7 +1505,8 @@ rm -f $(BUILD_OUTPUT_DIR)/j2re-image/man/man1/javaws.1 rm -f stamps/add-netx.stamp -stamps/add-netx-debug.stamp: stamps/netx-dist.stamp extra-lib/about.jar +stamps/add-netx-debug.stamp: stamps/netx-dist.stamp stamps/about.stamp +if ENABLE_NETX cp -pPRf $(abs_top_builddir)/netx.build/lib/classes.jar \ $(DEBUG_BUILD_OUTPUT_DIR)/j2sdk-image/jre/lib/netx.jar cp -pPRf $(abs_top_builddir)/netx.build/lib/classes.jar \ @@ -1516,6 +1523,7 @@ cp $(NETX_SRCDIR)/javaws.1 \ $(DEBUG_BUILD_OUTPUT_DIR)/j2re-image/man/man1 ; \ fi +endif touch stamps/add-netx-debug.stamp clean-add-netx-debug: @@ -1693,6 +1701,7 @@ find $(NETX_SRCDIR) -name '*.java' | sort > $@ stamps/netx.stamp: netx-source-files.txt stamps/rt-class-files.stamp +if ENABLE_NETX mkdir -p $(abs_top_builddir)/netx.build $(BOOT_DIR)/bin/javac $(IT_JAVACFLAGS) \ -d $(abs_top_builddir)/netx.build \ @@ -1700,10 +1709,12 @@ -classpath $(RUNTIME) -bootclasspath \'\' \ @netx-source-files.txt cp -r $(NETX_RESOURCE_DIR) $(abs_top_builddir)/netx.build/net/sourceforge/jnlp +endif mkdir -p stamps touch $@ stamps/netx-dist.stamp: stamps/netx.stamp +if ENABLE_NETX (cd $(abs_top_builddir)/netx.build ; \ mkdir -p lib ; \ $(BOOT_DIR)/bin/jar cf lib/classes.jar javax/jnlp net ; \ @@ -1713,6 +1724,7 @@ $(BOOT_DIR)/bin/jar uf $(abs_top_builddir)/netx.build/lib/classes.jar \ `find . -type f -not -name '*.java'` ; \ $(ZIP) -qr $(abs_top_builddir)/netx.build/lib/src.zip javax net ) +endif mkdir -p stamps touch $@ @@ -1728,11 +1740,13 @@ stamps/extra-class-files.stamp: $(INITIAL_BOOTSTRAP_LINK_STAMP) \ extra-source-files.txt stamps/netx.stamp +if ENABLE_NETX mkdir -p extra-lib $(BOOT_DIR)/bin/javac $(IT_JAVACFLAGS) -d extra-lib \ -sourcepath extra -cp netx.build \ -bootclasspath $(RUNTIME) @extra-source-files.txt cp -r $(NETX_EXTRA_DIR) extra-lib/net/sourceforge/jnlp/about +endif mkdir -p stamps touch $@ @@ -1741,8 +1755,16 @@ rm -f stamps/extra-class-files.stamp rm -f extra-source-files.txt -extra-lib/about.jar: stamps/extra-class-files.stamp - $(BOOT_DIR)/bin/jar cf $@ -C extra-lib net ; +stamps/about.stamp: stamps/extra-class-files.stamp +if ENABLE_NETX + $(BOOT_DIR)/bin/jar cf extra-lib/about.jar -C extra-lib net +endif + mkdir -p stamps + touch $@ + +clean-about: + rm -f extra-lib/about.jar + rm -f stamps/about.stamp # PulseAudio based mixer # (pulse-java) diff -r 17c34c4c6fae acinclude.m4 --- a/acinclude.m4 Wed Nov 10 16:30:08 2010 +0000 +++ b/acinclude.m4 Thu Nov 11 15:55:47 2010 +0000 @@ -1459,12 +1459,17 @@ AC_DEFUN_ONCE([IT_CHECK_PLUGIN], [ +AC_REQUIRE([IT_CHECK_NETX]) AC_MSG_CHECKING([whether to build the browser plugin]) AC_ARG_ENABLE([plugin], [AS_HELP_STRING([--disable-plugin], [Disable compilation of browser plugin])], [enable_plugin="${enableval}"], [enable_plugin="yes"]) AC_MSG_RESULT(${enable_plugin}) +if test "x${enable_netx}" = "xno" ; then + AC_MSG_WARN([Plugin can not be built without NetX; disabling plugin]) + enable_plugin=no; +fi ]) AC_DEFUN_ONCE([IT_CHECK_PLUGIN_DEPENDENCIES], @@ -1556,3 +1561,14 @@ AM_CONDITIONAL([HAS_PAX], test x"${it_cv_pax}" = "xyes") AC_PROVIDE([$0])dnl ]) + +AC_DEFUN_ONCE([IT_CHECK_NETX], +[ +AC_MSG_CHECKING([whether to build NetX]) +AC_ARG_ENABLE([webstart], + [AS_HELP_STRING([--disable-webstart], + [Disable compilation of Web Start support])], + [enable_netx="${enableval}"], [enable_netx="yes"]) +AC_MSG_RESULT(${enable_netx}) +AM_CONDITIONAL(ENABLE_NETX, test "x${enable_netx}" = "xyes") +]) From ahughes at redhat.com Thu Nov 11 07:59:39 2010 From: ahughes at redhat.com (Dr Andrew John Hughes) Date: Thu, 11 Nov 2010 15:59:39 +0000 Subject: Reviewer needed - really simple correction of regression test hotspot/test/gc/6581734/Test6581734 In-Reply-To: <4CDC0E3D.6020008@redhat.com> References: <4CDC0E3D.6020008@redhat.com> Message-ID: <20101111155939.GE9134@rivendell.middle-earth.co.uk> On 16:39 Thu 11 Nov , Pavel Tisnovsky wrote: > Hi, > > can anyone please review patch containing really simple correction of > regression test > hotspot/test/gc/6581734/Test6581734? > > (as you can see, only right bracket is added to the proper place - one > extra character generated by patch of size 828 bytes ;-) > > diffstat produced against IcedTea6 HEAD is stored in attachment > > > Thank you in advance > Pavel T. Approved. Please commit. It's probably worth asking for the backport to go into OpenJDK6 too. > # HG changeset patch > # User ptisnovs > # Date 1289489057 -3600 > # Node ID 92aee772112bffe05772845b59cc9ebdf184f983 > # Parent 3b0958812397b60d1c172a6cfe44d7b4e072cf1c > Testcase correction - added missing right bracket. > > diff -r 3b0958812397 -r 92aee772112b ChangeLog > --- a/ChangeLog Wed Nov 10 16:07:00 2010 +0000 > +++ b/ChangeLog Thu Nov 11 16:24:17 2010 +0100 > @@ -1,3 +1,9 @@ > +2010-11-11 Pavel Tisnovsky > + > + * Makefile.am: Add new patch. > + * patches/openjdk/6980392-fix_test6581734.patch: > + Testcase correction - added missing right bracket. > + > 2010-11-10 Andrew John Hughes > > RH647737 > diff -r 3b0958812397 -r 92aee772112b Makefile.am > --- a/Makefile.am Wed Nov 10 16:07:00 2010 +0000 > +++ b/Makefile.am Thu Nov 11 16:24:17 2010 +0100 > @@ -306,7 +306,8 @@ > if WITH_ALT_HSBUILD > ICEDTEA_PATCHES += \ > patches/openjdk/6994130-ppc_fix.patch \ > - patches/disable-default-compoops.patch > + patches/disable-default-compoops.patch \ > + patches/openjdk/6980392-fix_test6581734.patch > else > ICEDTEA_PATCHES += \ > patches/shark_do_nothing_on_stub_frame.patch \ > diff -r 3b0958812397 -r 92aee772112b patches/openjdk/6980392-fix_test6581734.patch > --- /dev/null Thu Jan 01 00:00:00 1970 +0000 > +++ b/patches/openjdk/6980392-fix_test6581734.patch Thu Nov 11 16:24:17 2010 +0100 > @@ -0,0 +1,21 @@ > +# HG changeset patch > +# User kevinw > +# Date 1282924624 -3600 > +# Node ID 21c29458b334f7b1f05a185442ab37ab8de1ea7b > +# Parent 8e5955ddf8e491a54b7e9446424fdee02e6950c8 > +6980392: TEST_BUG: gc/6581734/Test6581734.java has typo > +Summary: simple correction in testcase > +Reviewed-by: mchung > + > +diff -r 8e5955ddf8e4 -r 21c29458b334 test/gc/6581734/Test6581734.java > +--- openjdk.old/hotspot/test/gc/6581734/Test6581734.java 2010-10-08 22:29:24.000000000 +0200 > ++++ openjdk/hotspot/test/gc/6581734/Test6581734.java 2010-11-11 15:47:15.000000000 +0100 > +@@ -121,7 +121,7 @@ > + } > + > + if (collectorsWithTime +- throw new RuntimeException("collectors found with zero time"; > ++ throw new RuntimeException("collectors found with zero time"); > + } > + System.out.println("Test passed."); > + } -- Andrew :) Free Java Software Engineer Red Hat, Inc. (http://www.redhat.com) Support Free Java! Contribute to GNU Classpath and the OpenJDK http://www.gnu.org/software/classpath http://openjdk.java.net PGP Key: 94EFD9D8 (http://subkeys.pgp.net) Fingerprint = F8EF F1EA 401E 2E60 15FA 7927 142C 2591 94EF D9D8 From ptisnovs at redhat.com Thu Nov 11 08:07:26 2010 From: ptisnovs at redhat.com (Pavel Tisnovsky) Date: Thu, 11 Nov 2010 17:07:26 +0100 Subject: Reviewer needed - really simple correction of regression test hotspot/test/gc/6581734/Test6581734 In-Reply-To: <20101111155939.GE9134@rivendell.middle-earth.co.uk> References: <4CDC0E3D.6020008@redhat.com> <20101111155939.GE9134@rivendell.middle-earth.co.uk> Message-ID: <4CDC14BE.2010401@redhat.com> Dr Andrew John Hughes wrote: > On 16:39 Thu 11 Nov , Pavel Tisnovsky wrote: >> Hi, >> >> can anyone please review patch containing really simple correction of >> regression test >> hotspot/test/gc/6581734/Test6581734? >> >> (as you can see, only right bracket is added to the proper place - one >> extra character generated by patch of size 828 bytes ;-) >> >> diffstat produced against IcedTea6 HEAD is stored in attachment >> >> >> Thank you in advance >> Pavel T. > > Approved. Please commit. Thank you. > > It's probably worth asking for the backport to go into OpenJDK6 too. Yes, I already asked for the backport two days ago, but nobody responded yet: http://mail.openjdk.java.net/pipermail/jdk6-dev/2010-November/002104.html > >> # HG changeset patch >> # User ptisnovs >> # Date 1289489057 -3600 >> # Node ID 92aee772112bffe05772845b59cc9ebdf184f983 >> # Parent 3b0958812397b60d1c172a6cfe44d7b4e072cf1c >> Testcase correction - added missing right bracket. >> >> diff -r 3b0958812397 -r 92aee772112b ChangeLog >> --- a/ChangeLog Wed Nov 10 16:07:00 2010 +0000 >> +++ b/ChangeLog Thu Nov 11 16:24:17 2010 +0100 >> @@ -1,3 +1,9 @@ >> +2010-11-11 Pavel Tisnovsky >> + >> + * Makefile.am: Add new patch. >> + * patches/openjdk/6980392-fix_test6581734.patch: >> + Testcase correction - added missing right bracket. >> + >> 2010-11-10 Andrew John Hughes >> >> RH647737 >> diff -r 3b0958812397 -r 92aee772112b Makefile.am >> --- a/Makefile.am Wed Nov 10 16:07:00 2010 +0000 >> +++ b/Makefile.am Thu Nov 11 16:24:17 2010 +0100 >> @@ -306,7 +306,8 @@ >> if WITH_ALT_HSBUILD >> ICEDTEA_PATCHES += \ >> patches/openjdk/6994130-ppc_fix.patch \ >> - patches/disable-default-compoops.patch >> + patches/disable-default-compoops.patch \ >> + patches/openjdk/6980392-fix_test6581734.patch >> else >> ICEDTEA_PATCHES += \ >> patches/shark_do_nothing_on_stub_frame.patch \ >> diff -r 3b0958812397 -r 92aee772112b patches/openjdk/6980392-fix_test6581734.patch >> --- /dev/null Thu Jan 01 00:00:00 1970 +0000 >> +++ b/patches/openjdk/6980392-fix_test6581734.patch Thu Nov 11 16:24:17 2010 +0100 >> @@ -0,0 +1,21 @@ >> +# HG changeset patch >> +# User kevinw >> +# Date 1282924624 -3600 >> +# Node ID 21c29458b334f7b1f05a185442ab37ab8de1ea7b >> +# Parent 8e5955ddf8e491a54b7e9446424fdee02e6950c8 >> +6980392: TEST_BUG: gc/6581734/Test6581734.java has typo >> +Summary: simple correction in testcase >> +Reviewed-by: mchung >> + >> +diff -r 8e5955ddf8e4 -r 21c29458b334 test/gc/6581734/Test6581734.java >> +--- openjdk.old/hotspot/test/gc/6581734/Test6581734.java 2010-10-08 22:29:24.000000000 +0200 >> ++++ openjdk/hotspot/test/gc/6581734/Test6581734.java 2010-11-11 15:47:15.000000000 +0100 >> +@@ -121,7 +121,7 @@ >> + } >> + >> + if (collectorsWithTime> +- throw new RuntimeException("collectors found with zero time"; >> ++ throw new RuntimeException("collectors found with zero time"); >> + } >> + System.out.println("Test passed."); >> + } > > From omajid at redhat.com Thu Nov 11 08:07:42 2010 From: omajid at redhat.com (Omair Majid) Date: Thu, 11 Nov 2010 11:07:42 -0500 Subject: [icedtea-web] RFC: integrate support for multiple KeyStores into the various validators In-Reply-To: <20101111154220.GE6888@redhat.com> References: <4CDB1BFB.5030704@redhat.com> <20101111134226.GA6888@redhat.com> <4CDC035A.605@redhat.com> <20101111150255.GD6888@redhat.com> <4CDC0E15.1000009@redhat.com> <20101111154220.GE6888@redhat.com> Message-ID: <4CDC14CE.5070705@redhat.com> On 11/11/2010 10:42 AM, Deepak Bhole wrote: > * Omair Majid [2010-11-11 10:39]: >> On 11/11/2010 10:02 AM, Deepak Bhole wrote: >>> * Omair Majid [2010-11-11 09:53]: >>>> On 11/11/2010 08:42 AM, Deepak Bhole wrote: >>>> >>> ... >>>> I based this code off code in KeyTool, and yes, it is slightly >>>> confusing. A KeyStore can be considered a HashMap: it maps a String, >>>> the alias, to a Certificate. The code first checks if the >>>> certificate already exists by trying to find an alias for the given >>>> certificate. If an alias is found, we know the certificate is in the >>>> KeyStore already. If the certificate is not in the KeyStore, we want >>>> to add a new entry to the HashMap, but we do not want to overwrite >>>> an existing certificate. So we create random aliases until we get an >>>> alias which has no mapping in the HashMap. >>>> >>> >>> >>> Ah okay then. >>> >>>>> Also, those methods should not be public static as untrusted apps could >>>>> access them. The keystores shouldn't be either (if they are, either now >>>>> or from before). >>>>> >>>> >>>> I dont think this will be a problem. For one, every time it is >>>> called, it reads the configuration (which untrusted apps are not >>>> allowed to do) and then it reads the keystore from the disk (which >>>> untrusted apps are not allowed to do). Making it non-public would >>>> mean it can not be used by classes in other packages (for example, >>>> JarSigner is in net.sourceforge.jnlp.tools and it uses this class). >>>> Please let me know if this is not enough; I will see what else I can >>>> do. >>>> >>> >>> Reliance on other methods to do security is bad imo. There is no >>> guarantee that the design will stay the same, If it changes and another >>> way to do those functions is implemented, security may be compromised. >>> It is fine to keep them public for other class usage, but please add an >>> AllPermission check in that case. >>> >> >> That's true. On further consideration, I dont think any methods in >> CertificateUtils need security checks though. They all operate on >> generic Certificate or KeyStore objects. There is nothing here that >> is netx specific or that an untrusted application could not do by >> itself. The actual action of obtaining the netx-specific KeyStores >> to operate on is the responsibility of KeyStores (see comment below >> for more about that). Do you think I should add checks anyway? >> > > Ah okay. Nope, in that case no security checks are needed for those > functions! > >>>>>> + /** >>>>>> + * Checks whether an X509Certificate is already in one of the keystores >>>>>> + * @param c the certificate >>>>>> + * @param keyStores the KeyStores to check in >>>>>> + * @return true if the certificate is present in one of the keystores, false otherwise >>>>>> + */ >>>>>> + public static final boolean inKeyStores(X509Certificate c, KeyStore[] keyStores) { >>>>>> + for (int i = 0; i< keyStores.length; i++) { >>> ... >>>>> >>>>> >>>>> What does printRfc represent? And if it's always true, why the else? >>>>> >>>> >>>> This code was originally from net.sourceforge.jnlp.tools.KeyTool and >>>> was moved over to CertificateUtils. n.s.j.t.KeyTool was adapted from >>>> sun.security.tools.KeyTool which allows dumping certificate in more >>>> than one format. printRfc indicates that the certifcate should be >>>> dumped in the RFC 4945 format >>>> (http://tools.ietf.org/html/rfc4945#section-6.1). Since this is the >>>> only option we support, I have removed that if condition; it is >>>> fixed in the updated patch. >>>> >>> >>> Great! >>> >>> ... >>> ... >>>>> >>>>> Should something like this be public static? Untrusted apps will be able >>>>> to access it and modify it... >>>>> >>>> >>>> I dont think this is a problem. getClientKeyStores() calls >>>> getKeyStore() which reads the configuration (which untrusted apps >>>> are not allowed to do) and then reads the acutal keystore from disk >>>> (which untrusted apps are again not allowed to do). So I dont think >>>> untrusted apps can actually get access to these keystores. If >>>> untrusted apps call getClientKeyStores (or the related methods >>>> getCAKeyStores or getCertKeyStores), they should get a >>>> SecurityException from DeploymentConfiguration. >>>> >>>> A KeyStore is an in-memory version of a keystore file on disk. Even >>>> if untrusted apps were somehow able to access it, saving the >>>> contents to disk would require permissions to write to disk. >>>> >>> >>> Same as with above. An AllPermission check in that case.. >>> >> >> Yes, that's a good point. Thanks for pointing it out. I have added >> an AllPermission check in getKeyStore(Level,Type,boolean) which >> almost all public methods end up calling to access the KeyStores. >> The only public methods that dont call this check are >> getKeyStoreLocation (which is supposed to query the configuration >> object) and toTranslatableString and toDisplayableString (which are >> translation methods). Do you see any problems with this scheme? >> > > Translation methods don't need a check. But getKeyStoreLocation... can > that me made to return a location in user.home/* ? If so, it provides > access to user.home indirectly and needs a check. > getKeyStoreLocation is essentially a wrapper around JNLPRuntime.getConfiguration().getProperty(String). The only thing it does is find the appropriate String argument to use with getProperty(String). As such, I think it is OK in this one case to trust security to DeploymentConfiguration. But if you want, I can add a check here anyway. >>>>>> + /** >>>>>> * Returns the location of a KeyStore corresponding to the given level and type. >>>>>> * @param level >>>>>> * @param type >>>>>> @@ -334,4 +357,5 @@ >>>>>> return ks; >>>>>> } >>>>>> >>>>>> + >>>>>> } >>>>> Rest looks fine to me. >>>>> >>>> >>>> Oh, and just to clarify something which might not have been obvious >>> >from the patch - in general, netx does not cache KeyStores. When it >>>> needs to make a security decision related to certificates, it will >>>> create appropriate KeyStore objects, do whatever operation it needs >>>> to and then discard the KeyStore. This is not true for >>>> VariableX509TrustManager, but it is true for JarSigner, Certificate >>>> Viewer and the various security prompts. >>>> >>> >>> That is fine. Normally I am all for optimizing by reducing disk access, >>> but in this case I think the decision is valid. Other apps may update >>> the keystore while one is running, in which case the running one should >>> have the latest information (especially if another app deleted a cert). >>> Perhaps VariableX509 should be changed to do the same? >>> >> >> That's a good point. I would like to do that in a separate patch if >> possible - this patch keeps the semantics of KeyStore caching as >> they were before. >> > > Sure! It should definitely be in a separate patch/ > Ok, I will add it to my TODO list. >>> Also, are the trust store files locked when write happens? If not, they >>> should be. >>> >> >> They are not locked right now. I will take a look at this and post a >> patch for this separately. >> > > > Awesome, thanks! > Thank _you_ for the extensive reviews. Cheers, Omair > >> diff -r 44d47c366e5f netx/net/sourceforge/jnlp/runtime/Boot.java >> --- a/netx/net/sourceforge/jnlp/runtime/Boot.java Wed Nov 10 16:24:53 2010 -0500 >> +++ b/netx/net/sourceforge/jnlp/runtime/Boot.java Thu Nov 11 10:36:55 2010 -0500 >> @@ -172,20 +172,6 @@ >> JNLPRuntime.setForksAllowed(false); >> } >> >> - // wire in custom authenticator >> - try { >> - SSLSocketFactory sslSocketFactory; >> - SSLContext context = SSLContext.getInstance("SSL"); >> - TrustManager[] trust = new TrustManager[] { VariableX509TrustManager.getInstance() }; >> - context.init(null, trust, null); >> - sslSocketFactory = context.getSocketFactory(); >> - >> - HttpsURLConnection.setDefaultSSLSocketFactory(sslSocketFactory); >> - } catch (Exception e) { >> - System.err.println("Unable to set SSLSocketfactory (may _prevent_ access to sites that should be trusted)! Continuing anyway..."); >> - e.printStackTrace(); >> - } >> - >> JNLPRuntime.setInitialArgments(Arrays.asList(argsIn)); >> >> // do in a privileged action to clear the security context of >> diff -r 44d47c366e5f netx/net/sourceforge/jnlp/runtime/JNLPRuntime.java >> --- a/netx/net/sourceforge/jnlp/runtime/JNLPRuntime.java Wed Nov 10 16:24:53 2010 -0500 >> +++ b/netx/net/sourceforge/jnlp/runtime/JNLPRuntime.java Thu Nov 11 10:36:55 2010 -0500 >> @@ -26,12 +26,17 @@ >> import java.security.*; >> import javax.jnlp.*; >> import javax.naming.ConfigurationException; >> +import javax.net.ssl.HttpsURLConnection; >> +import javax.net.ssl.SSLContext; >> +import javax.net.ssl.SSLSocketFactory; >> +import javax.net.ssl.TrustManager; >> import javax.swing.UIManager; >> import javax.swing.text.html.parser.ParserDelegator; >> >> import net.sourceforge.jnlp.*; >> import net.sourceforge.jnlp.cache.*; >> import net.sourceforge.jnlp.security.SecurityDialogMessageHandler; >> +import net.sourceforge.jnlp.security.VariableX509TrustManager; >> import net.sourceforge.jnlp.services.*; >> import net.sourceforge.jnlp.util.*; >> >> @@ -223,6 +228,20 @@ >> >> securityDialogMessageHandler = startSecurityThreads(); >> >> + // wire in custom authenticator >> + try { >> + SSLSocketFactory sslSocketFactory; >> + SSLContext context = SSLContext.getInstance("SSL"); >> + TrustManager[] trust = new TrustManager[] { VariableX509TrustManager.getInstance() }; >> + context.init(null, trust, null); >> + sslSocketFactory = context.getSocketFactory(); >> + >> + HttpsURLConnection.setDefaultSSLSocketFactory(sslSocketFactory); >> + } catch (Exception e) { >> + System.err.println("Unable to set SSLSocketfactory (may _prevent_ access to sites that should be trusted)! Continuing anyway..."); >> + e.printStackTrace(); >> + } >> + >> initialized = true; >> >> } >> diff -r 44d47c366e5f netx/net/sourceforge/jnlp/security/CertWarningPane.java >> --- a/netx/net/sourceforge/jnlp/security/CertWarningPane.java Wed Nov 10 16:24:53 2010 -0500 >> +++ b/netx/net/sourceforge/jnlp/security/CertWarningPane.java Thu Nov 11 10:36:55 2010 -0500 >> @@ -47,6 +47,9 @@ >> import java.awt.GridLayout; >> import java.awt.event.ActionEvent; >> import java.awt.event.ActionListener; >> +import java.io.FileOutputStream; >> +import java.io.OutputStream; >> +import java.security.KeyStore; >> import java.security.cert.Certificate; >> import java.security.cert.X509Certificate; >> >> @@ -62,6 +65,8 @@ >> import net.sourceforge.jnlp.JNLPFile; >> import net.sourceforge.jnlp.PluginBridge; >> import net.sourceforge.jnlp.runtime.JNLPRuntime; >> +import net.sourceforge.jnlp.security.KeyStores.Level; >> +import net.sourceforge.jnlp.security.KeyStores.Type; >> import net.sourceforge.jnlp.security.SecurityWarning.AccessType; >> import net.sourceforge.jnlp.tools.KeyTool; >> >> @@ -232,25 +237,28 @@ >> } >> } >> >> - /** >> - * Updates the user's KeyStore of trusted Certificates. >> - */ >> - private class CheckBoxListener implements ActionListener { >> - public void actionPerformed(ActionEvent e) { >> - if (alwaysTrust != null&& alwaysTrust.isSelected()) { >> - try { >> - KeyTool kt = new KeyTool(); >> - Certificate c = parent.getJarSigner().getPublisher(); >> - kt.importCert(c); >> - if (JNLPRuntime.isDebug()) { >> - System.out.println("certificate is now permanently trusted"); >> - } >> - } catch (Exception ex) { >> - //TODO: Let NetX show a dialog here notifying user >> - //about being unable to add cert to keystore >> - } >> - } >> + /** >> + * Updates the user's KeyStore of trusted Certificates. >> + */ >> + private class CheckBoxListener implements ActionListener { >> + public void actionPerformed(ActionEvent e) { >> + if (alwaysTrust != null&& alwaysTrust.isSelected()) { >> + try { >> + KeyStore ks = KeyStores.getKeyStore(Level.USER, Type.CERTS); >> + X509Certificate c = (X509Certificate) parent.getJarSigner().getPublisher(); >> + CertificateUtils.addToKeyStore(c, ks); >> + OutputStream os = new FileOutputStream(KeyStores.getKeyStoreLocation(Level.USER, Type.CERTS)); >> + ks.store(os, KeyStores.getPassword()); >> + if (JNLPRuntime.isDebug()) { >> + System.out.println("certificate is now permanently trusted"); >> + } >> + } catch (Exception ex) { >> + // TODO: Let NetX show a dialog here notifying user >> + // about being unable to add cert to keystore >> + ex.printStackTrace(); >> } >> + } >> } >> + } >> >> } >> diff -r 44d47c366e5f netx/net/sourceforge/jnlp/security/CertificateUtils.java >> --- /dev/null Thu Jan 01 00:00:00 1970 +0000 >> +++ b/netx/net/sourceforge/jnlp/security/CertificateUtils.java Thu Nov 11 10:36:55 2010 -0500 >> @@ -0,0 +1,140 @@ >> +/* CertificateUtils.java >> + Copyright (C) 2010 Red Hat, Inc. >> + >> +This file is part of IcedTea. >> + >> +IcedTea is free software; you can redistribute it and/or >> +modify it under the terms of the GNU General Public License as published by >> +the Free Software Foundation, version 2. >> + >> +IcedTea is distributed in the hope that it will be useful, >> +but WITHOUT ANY WARRANTY; without even the implied warranty of >> +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU >> +General Public License for more details. >> + >> +You should have received a copy of the GNU General Public License >> +along with IcedTea; see the file COPYING. If not, write to >> +the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA >> +02110-1301 USA. >> + >> +Linking this library statically or dynamically with other modules is >> +making a combined work based on this library. Thus, the terms and >> +conditions of the GNU General Public License cover the whole >> +combination. >> + >> +As a special exception, the copyright holders of this library give you >> +permission to link this library with independent modules to produce an >> +executable, regardless of the license terms of these independent >> +modules, and to copy and distribute the resulting executable under >> +terms of your choice, provided that you also meet, for each linked >> +independent module, the terms and conditions of the license of that >> +module. An independent module is a module which is not derived from >> +or based on this library. If you modify this library, you may extend >> +this exception to your version of the library, but you are not >> +obligated to do so. If you do not wish to do so, delete this >> +exception statement from your version. >> +*/ >> + >> +package net.sourceforge.jnlp.security; >> + >> +import java.io.BufferedInputStream; >> +import java.io.File; >> +import java.io.FileInputStream; >> +import java.io.IOException; >> +import java.io.PrintStream; >> +import java.math.BigInteger; >> +import java.security.KeyStore; >> +import java.security.KeyStoreException; >> +import java.security.cert.Certificate; >> +import java.security.cert.CertificateException; >> +import java.security.cert.CertificateFactory; >> +import java.security.cert.X509Certificate; >> +import java.util.Random; >> + >> +import net.sourceforge.jnlp.runtime.JNLPRuntime; >> + >> +import sun.misc.BASE64Encoder; >> +import sun.security.provider.X509Factory; >> + >> +public class CertificateUtils { >> + /** >> + * Adds the X509Certficate in the file to the KeyStore. Note that it does >> + * not update the copy of the KeyStore on disk. >> + */ >> + public static final void addToKeyStore(File file, KeyStore ks) throws CertificateException, >> + IOException, KeyStoreException { >> + if (JNLPRuntime.isDebug()) { >> + System.out.println("Importing certificate from " + file + " into " + ks); >> + } >> + >> + BufferedInputStream bis = new BufferedInputStream(new FileInputStream(file)); >> + CertificateFactory cf = CertificateFactory.getInstance("X509"); >> + X509Certificate cert = null; >> + >> + try { >> + cert = (X509Certificate) cf.generateCertificate(bis); >> + } catch (ClassCastException cce) { >> + throw new CertificateException("Input file is not an X509 Certificate", cce); >> + } >> + >> + addToKeyStore(cert, ks); >> + } >> + >> + /** >> + * Adds an X509Certificate to the KeyStore. Note that it does not update the >> + * copy of the KeyStore on disk. >> + */ >> + public static final void addToKeyStore(X509Certificate cert, KeyStore ks) >> + throws KeyStoreException { >> + if (JNLPRuntime.isDebug()) { >> + System.out.println("Importing " + cert.getSubjectX500Principal().getName()); >> + } >> + >> + String alias = null; >> + Random random = new Random(); >> + alias = ks.getCertificateAlias(cert); >> + if (alias != null) { >> + return; >> + } >> + >> + do { >> + alias = new BigInteger(20, random).toString(); >> + } while (ks.getCertificate(alias) != null); >> + ks.setCertificateEntry(alias, cert); >> + } >> + >> + /** >> + * Checks whether an X509Certificate is already in one of the keystores >> + * @param c the certificate >> + * @param keyStores the KeyStores to check in >> + * @return true if the certificate is present in one of the keystores, false otherwise >> + */ >> + public static final boolean inKeyStores(X509Certificate c, KeyStore[] keyStores) { >> + for (int i = 0; i< keyStores.length; i++) { >> + try { >> + if (keyStores[i].getCertificateAlias(c) != null) { >> + if (JNLPRuntime.isDebug()) { >> + System.out.println(c.getSubjectX500Principal().getName() + " found in cacerts"); >> + } >> + return true; >> + } >> + } catch (KeyStoreException e) { >> + e.printStackTrace(); >> + // continue >> + } >> + } >> + return false; >> + } >> + >> + /** >> + * Writes the certificate in base64 encoded from to the print stream >> + */ >> + public static void dump(Certificate cert, PrintStream out) throws IOException, >> + CertificateException { >> + >> + BASE64Encoder encoder = new BASE64Encoder(); >> + out.println(X509Factory.BEGIN_CERT); >> + encoder.encodeBuffer(cert.getEncoded(), out); >> + out.println(X509Factory.END_CERT); >> + } >> +} >> diff -r 44d47c366e5f netx/net/sourceforge/jnlp/security/HttpsCertVerifier.java >> --- a/netx/net/sourceforge/jnlp/security/HttpsCertVerifier.java Wed Nov 10 16:24:53 2010 -0500 >> +++ b/netx/net/sourceforge/jnlp/security/HttpsCertVerifier.java Thu Nov 11 10:36:55 2010 -0500 >> @@ -40,6 +40,7 @@ >> import static net.sourceforge.jnlp.runtime.Translator.R; >> >> import java.io.IOException; >> +import java.security.KeyStore; >> import java.security.cert.CertPath; >> import java.security.cert.Certificate; >> import java.security.cert.CertificateException; >> @@ -213,8 +214,8 @@ >> >> public boolean getRootInCacerts() { >> try { >> - KeyTool kt = new KeyTool(); >> - return kt.checkCacertsForCertificate(getRoot()); >> + KeyStore[] caCertsKeyStores = KeyStores.getCAKeyStores(); >> + return CertificateUtils.inKeyStores((X509Certificate)getRoot(), caCertsKeyStores); >> } catch (Exception e) { >> } >> return false; >> diff -r 44d47c366e5f netx/net/sourceforge/jnlp/security/KeyStores.java >> --- a/netx/net/sourceforge/jnlp/security/KeyStores.java Wed Nov 10 16:24:53 2010 -0500 >> +++ b/netx/net/sourceforge/jnlp/security/KeyStores.java Thu Nov 11 10:36:55 2010 -0500 >> @@ -41,6 +41,7 @@ >> import java.io.FileInputStream; >> import java.io.FileOutputStream; >> import java.io.IOException; >> +import java.security.AllPermission; >> import java.security.KeyStore; >> import java.security.KeyStoreException; >> import java.security.NoSuchAlgorithmException; >> @@ -111,6 +112,11 @@ >> * @return a KeyStore containing certificates from the appropriate >> */ >> public static final KeyStore getKeyStore(Level level, Type type, boolean create) { >> + SecurityManager sm = System.getSecurityManager(); >> + if (sm != null) { >> + sm.checkPermission(new AllPermission()); >> + } >> + >> String location = getKeyStoreLocation(level, type); >> KeyStore ks = null; >> try { >> @@ -189,6 +195,29 @@ >> } >> >> /** >> + * Returns KeyStores containing trusted client certificates >> + * >> + * @return an array of KeyStore objects that can be used to check client >> + * authentication certificates >> + */ >> + public static KeyStore[] getClientKeyStores() { >> + List result = new ArrayList(); >> + KeyStore ks = null; >> + >> + ks = getKeyStore(Level.SYSTEM, Type.CLIENT_CERTS); >> + if (ks != null) { >> + result.add(ks); >> + } >> + >> + ks = getKeyStore(Level.USER, Type.CLIENT_CERTS); >> + if (ks != null) { >> + result.add(ks); >> + } >> + >> + return result.toArray(new KeyStore[result.size()]); >> + } >> + >> + /** >> * Returns the location of a KeyStore corresponding to the given level and type. >> * @param level >> * @param type >> @@ -336,4 +365,5 @@ >> return ks; >> } >> >> + >> } >> diff -r 44d47c366e5f netx/net/sourceforge/jnlp/security/VariableX509TrustManager.java >> --- a/netx/net/sourceforge/jnlp/security/VariableX509TrustManager.java Wed Nov 10 16:24:53 2010 -0500 >> +++ b/netx/net/sourceforge/jnlp/security/VariableX509TrustManager.java Thu Nov 11 10:36:55 2010 -0500 >> @@ -42,6 +42,8 @@ >> import java.security.cert.CertificateException; >> import java.security.cert.X509Certificate; >> import java.util.ArrayList; >> +import java.util.Arrays; >> +import java.util.List; >> >> import javax.net.ssl.TrustManager; >> import javax.net.ssl.TrustManagerFactory; >> @@ -60,59 +62,98 @@ >> * different certificates that are not in the keystore. >> */ >> >> -public class VariableX509TrustManager extends X509ExtendedTrustManager { >> +final public class VariableX509TrustManager extends X509ExtendedTrustManager { >> >> - KeyStore userKeyStore = null; >> - KeyStore caKeyStore = null; >> + /** TrustManagers containing trusted CAs */ >> + private X509TrustManager[] caTrustManagers = null; >> >> - X509TrustManager userTrustManager = null; >> - X509TrustManager caTrustManager = null; >> + /** TrustManagers containing trusted certificates */ >> + private X509TrustManager[] certTrustManagers = null; >> >> - ArrayList temporarilyTrusted = new ArrayList(); >> - ArrayList temporarilyUntrusted = new ArrayList(); >> + /** TrustManagers containing trusted client certificates */ >> + private X509TrustManager[] clientTrustManagers = null; >> >> - static VariableX509TrustManager instance = null; >> + private ArrayList temporarilyTrusted = new ArrayList(); >> + private ArrayList temporarilyUntrusted = new ArrayList(); >> + >> + private static VariableX509TrustManager instance = null; >> >> /** >> * Constructor initializes the system, user and custom stores >> */ >> public VariableX509TrustManager() { >> >> + /* >> + * Load TrustManagers for trusted certificates >> + */ >> try { >> - userKeyStore = SecurityUtil.getUserKeyStore(); >> - TrustManagerFactory tmFactory = TrustManagerFactory.getInstance("SunX509", "SunJSSE"); >> - tmFactory.init(userKeyStore); >> + /** KeyStores containing trusted certificates */ >> + KeyStore[] trustedCertKeyStores = KeyStores.getCertKeyStores(); >> + certTrustManagers = new X509TrustManager[trustedCertKeyStores.length]; >> >> - // tm factory initialized, now get the managers so we can assign the X509 one >> - TrustManager[] trustManagers = tmFactory.getTrustManagers(); >> + for (int j = 0; j< trustedCertKeyStores.length; j++) { >> + TrustManagerFactory tmFactory = TrustManagerFactory.getInstance("SunX509", "SunJSSE"); >> + tmFactory.init(trustedCertKeyStores[j]); >> >> - for (int i=0; i< trustManagers.length; i++) { >> - if (trustManagers[i] instanceof X509TrustManager) { >> - userTrustManager = (X509TrustManager) trustManagers[i]; >> + // tm factory initialized, now get the managers so we can assign the X509 one >> + TrustManager[] trustManagers = tmFactory.getTrustManagers(); >> + >> + for (int i = 0; i< trustManagers.length; i++) { >> + if (trustManagers[i] instanceof X509TrustManager) { >> + certTrustManagers[j] = (X509TrustManager) trustManagers[i]; >> + } >> } >> } >> - >> } catch (Exception e) { >> - // TODO Auto-generated catch block >> e.printStackTrace(); >> } >> >> + /* >> + * Load TrustManagers for trusted CAs >> + */ >> try { >> - caKeyStore = SecurityUtil.getCacertsKeyStore(); >> - TrustManagerFactory tmFactory = TrustManagerFactory.getInstance("SunX509", "SunJSSE"); >> - tmFactory.init(caKeyStore); >> + /** KeyStores containing trusted CAs */ >> + KeyStore[] trustedCAKeyStores = KeyStores.getCAKeyStores(); >> + caTrustManagers = new X509TrustManager[trustedCAKeyStores.length]; >> >> - // tm factory initialized, now get the managers so we can extract the X509 one >> - TrustManager[] trustManagers = tmFactory.getTrustManagers(); >> + for (int j = 0; j< caTrustManagers.length; j++) { >> + TrustManagerFactory tmFactory = TrustManagerFactory.getInstance("SunX509", "SunJSSE"); >> + tmFactory.init(trustedCAKeyStores[j]); >> >> - for (int i=0; i< trustManagers.length; i++) { >> - if (trustManagers[i] instanceof X509TrustManager) { >> - caTrustManager = (X509TrustManager) trustManagers[i]; >> + // tm factory initialized, now get the managers so we can extract the X509 one >> + TrustManager[] trustManagers = tmFactory.getTrustManagers(); >> + >> + for (int i=0; i< trustManagers.length; i++) { >> + if (trustManagers[i] instanceof X509TrustManager) { >> + caTrustManagers[j] = (X509TrustManager) trustManagers[i]; >> + } >> } >> } >> + } catch (Exception e) { >> + e.printStackTrace(); >> + } >> >> + /* >> + * Load TrustManagers for trusted clients certificates >> + */ >> + try { >> + KeyStore[] clientKeyStores = KeyStores.getClientKeyStores(); >> + clientTrustManagers = new X509TrustManager[clientKeyStores.length]; >> + >> + for (int j = 0; j< clientTrustManagers.length; j++) { >> + TrustManagerFactory tmFactory = TrustManagerFactory.getInstance("SunX509", "SunJSSE"); >> + tmFactory.init(clientKeyStores[j]); >> + >> + // tm factory initialized, now get the managers so we can extract the X509 one >> + TrustManager[] trustManagers = tmFactory.getTrustManagers(); >> + >> + for (int i=0; i< trustManagers.length; i++) { >> + if (trustManagers[i] instanceof X509TrustManager) { >> + clientTrustManagers[j] = (X509TrustManager) trustManagers[i]; >> + } >> + } >> + } >> } catch (Exception e) { >> - // TODO Auto-generated catch block >> e.printStackTrace(); >> } >> } >> @@ -123,18 +164,23 @@ >> public void checkClientTrusted(X509Certificate[] chain, String authType, >> String hostName, String algorithm) >> throws CertificateException { >> - // First try catrustmanager, then try usertrustmanager >> - try { >> - caTrustManager.checkClientTrusted(chain, authType); >> - } catch (Exception caex) { >> + >> + boolean trusted = false; >> + ValidatorException savedException = null; >> + for (int i = 0; i< clientTrustManagers.length; i++) { >> try { >> - userTrustManager.checkClientTrusted(chain, authType); >> - } catch (Exception userex) { >> - // Do nothing here. This trust manager is intended to be used >> - // only in the plugin instance vm, which does not act as a >> - // server >> + clientTrustManagers[i].checkClientTrusted(chain, authType); >> + trusted = true; >> + break; >> + } catch (ValidatorException caex) { >> + savedException = caex; >> } >> } >> + if (trusted) { >> + return; >> + } >> + >> + throw savedException; >> } >> >> public void checkClientTrusted(X509Certificate[] chain, String authType) >> @@ -214,17 +260,45 @@ >> * Check system, user and custom trust manager >> */ >> private void checkAllManagers(X509Certificate[] chain, String authType) throws CertificateException { >> - // First try catrustmanager, then try usertrustmanager, and finally, check temp trusted certs >> - try { >> - caTrustManager.checkServerTrusted(chain, authType); >> - } catch (ValidatorException caex) { >> + // first try CA TrustManagers >> + boolean trusted = false; >> + ValidatorException savedException = null; >> + for (int i = 0; i< caTrustManagers.length; i++) { >> try { >> - userTrustManager.checkServerTrusted(chain, authType); >> - } catch (ValidatorException uex) { >> - if (!temporarilyTrusted.contains(chain[0])) >> - throw (CertificateException) uex; >> + caTrustManagers[i].checkServerTrusted(chain, authType); >> + trusted = true; >> + break; >> + } catch (ValidatorException caex) { >> + savedException = caex; >> } >> } >> + if (trusted) { >> + return; >> + } >> + >> + // then try certificate TrustManagers >> + for (int i = 0; i< certTrustManagers.length; i++) { >> + try { >> + certTrustManagers[i].checkServerTrusted(chain, authType); >> + trusted = true; >> + break; >> + } catch (ValidatorException caex) { >> + savedException = caex; >> + } >> + } >> + if (trusted) { >> + return; >> + } >> + >> + // finally check temp trusted certs >> + if (!temporarilyTrusted.contains(chain[0])) { >> + if (savedException == null) { >> + // System.out.println("IMPOSSIBLE!"); >> + throw new ValidatorException(ValidatorException.T_SIGNATURE_ERROR, chain[0]); >> + } >> + throw savedException; >> + } >> + >> } >> >> /** >> @@ -233,23 +307,32 @@ >> private boolean isExplicitlyTrusted(X509Certificate[] chain, String authType) { >> boolean explicitlyTrusted = false; >> >> - try { >> - userTrustManager.checkServerTrusted(chain, authType); >> - explicitlyTrusted = true; >> - } catch (ValidatorException uex) { >> - if (temporarilyTrusted.contains(chain[0])) >> + for (int i = 0; i< certTrustManagers.length; i++) { >> + try { >> + certTrustManagers[i].checkServerTrusted(chain, authType); >> explicitlyTrusted = true; >> - } catch (CertificateException ce) { >> - // do nothing, this means that the cert is not explicitly trusted >> + break; >> + } catch (ValidatorException uex) { >> + if (temporarilyTrusted.contains(chain[0])) { >> + explicitlyTrusted = true; >> + break; >> + } >> + } catch (CertificateException ce) { >> + // not explicitly trusted >> + } >> } >> >> return explicitlyTrusted; >> - >> } >> >> public X509Certificate[] getAcceptedIssuers() { >> - // delegate to default >> - return caTrustManager.getAcceptedIssuers(); >> + List issuers = new ArrayList(); >> + >> + for (int i = 0; i< caTrustManagers.length; i++) { >> + issuers.addAll(Arrays.asList(caTrustManagers[i].getAcceptedIssuers())); >> + } >> + >> + return issuers.toArray(new X509Certificate[issuers.size()]); >> } >> >> /** >> diff -r 44d47c366e5f netx/net/sourceforge/jnlp/security/viewer/CertificatePane.java >> --- a/netx/net/sourceforge/jnlp/security/viewer/CertificatePane.java Wed Nov 10 16:24:53 2010 -0500 >> +++ b/netx/net/sourceforge/jnlp/security/viewer/CertificatePane.java Thu Nov 11 10:36:55 2010 -0500 >> @@ -71,6 +71,7 @@ >> import javax.swing.event.ChangeListener; >> import javax.swing.table.DefaultTableModel; >> >> +import net.sourceforge.jnlp.security.CertificateUtils; >> import net.sourceforge.jnlp.security.KeyStores; >> import net.sourceforge.jnlp.security.SecurityUtil; >> import net.sourceforge.jnlp.security.SecurityWarningDialog; >> @@ -359,9 +360,8 @@ >> int returnVal = chooser.showOpenDialog(parent); >> if(returnVal == JFileChooser.APPROVE_OPTION) { >> try { >> - KeyTool kt = new KeyTool(); >> KeyStore ks = keyStore; >> - kt.addToKeyStore(chooser.getSelectedFile(), ks); >> + CertificateUtils.addToKeyStore(chooser.getSelectedFile(), ks); >> OutputStream os = new FileOutputStream( >> KeyStores.getKeyStoreLocation(currentKeyStoreLevel, currentKeyStoreType)); >> ks.store(os, KeyStores.getPassword()); >> @@ -399,7 +399,7 @@ >> if (alias != null) { >> Certificate c = keyStore.getCertificate(alias); >> PrintStream ps = new PrintStream(chooser.getSelectedFile().getAbsolutePath()); >> - KeyTool.dumpCert(c, ps); >> + CertificateUtils.dump(c, ps); >> repopulateTables(); >> } >> } >> diff -r 44d47c366e5f netx/net/sourceforge/jnlp/tools/JarSigner.java >> --- a/netx/net/sourceforge/jnlp/tools/JarSigner.java Wed Nov 10 16:24:53 2010 -0500 >> +++ b/netx/net/sourceforge/jnlp/tools/JarSigner.java Thu Nov 11 10:36:55 2010 -0500 >> @@ -371,9 +371,12 @@ >> private void checkTrustedCerts() throws Exception { >> if (certPath != null) { >> try { >> - KeyTool kt = new KeyTool(); >> - alreadyTrustPublisher = kt.isTrusted(getPublisher()); >> - rootInCacerts = kt.checkCacertsForCertificate(getRoot()); >> + X509Certificate publisher = (X509Certificate) getPublisher(); >> + KeyStore[] certKeyStores = KeyStores.getCertKeyStores(); >> + alreadyTrustPublisher = CertificateUtils.inKeyStores(publisher, certKeyStores); >> + X509Certificate root = (X509Certificate) getRoot(); >> + KeyStore[] caKeyStores = KeyStores.getCAKeyStores(); >> + rootInCacerts = CertificateUtils.inKeyStores(root, caKeyStores); >> } catch (Exception e) { >> // TODO: Warn user about not being able to >> // look through their cacerts/trusted.certs >> diff -r 44d47c366e5f netx/net/sourceforge/jnlp/tools/KeyTool.java >> --- a/netx/net/sourceforge/jnlp/tools/KeyTool.java Wed Nov 10 16:24:53 2010 -0500 >> +++ b/netx/net/sourceforge/jnlp/tools/KeyTool.java Thu Nov 11 10:36:55 2010 -0500 >> @@ -119,43 +119,6 @@ >> return importCert((Certificate)cert); >> } >> >> - /** >> - * Adds the X509Certficate in the file to the KeyStore >> - */ >> - public final void addToKeyStore(File file, KeyStore ks) throws CertificateException, >> - IOException, KeyStoreException { >> - BufferedInputStream bis = new BufferedInputStream(new FileInputStream(file)); >> - CertificateFactory cf = CertificateFactory.getInstance("X509"); >> - X509Certificate cert = null; >> - >> - try { >> - cert = (X509Certificate) cf.generateCertificate(bis); >> - } catch (ClassCastException cce) { >> - throw new CertificateException("Input file is not an X509 Certificate", cce); >> - } >> - >> - addToKeyStore(cert, ks); >> - >> - } >> - >> - /** >> - * Adds an X509Certificate to the KeyStore >> - */ >> - public final void addToKeyStore(X509Certificate cert, KeyStore ks) throws KeyStoreException { >> - String alias = null; >> - Random random = new Random(); >> - alias = ks.getCertificateAlias(cert); >> - // already in keystore; done >> - if (alias != null) { >> - return; >> - } >> - >> - do { >> - alias = new BigInteger(20, random).toString(); >> - } while (ks.getCertificate(alias) != null); >> - ks.setCertificateEntry(alias, cert); >> - } >> - >> /** >> * Adds a trusted certificate to the user's keystore. >> * @return true if the add was successful, false otherwise. >> @@ -479,20 +442,6 @@ >> return false; >> } >> >> - public static void dumpCert(Certificate cert, PrintStream out) >> - throws IOException, CertificateException { >> - >> - boolean printRfc = true; >> - if (printRfc) { >> - BASE64Encoder encoder = new BASE64Encoder(); >> - out.println(X509Factory.BEGIN_CERT); >> - encoder.encodeBuffer(cert.getEncoded(), out); >> - out.println(X509Factory.END_CERT); >> - } else { >> - out.write(cert.getEncoded()); // binary >> - } >> - } >> - >> public static void main(String[] args) throws Exception { >> KeyTool kt = new KeyTool(); >> kt.doPrintEntries(System.out); >> diff -r 44d47c366e5f plugin/icedteanp/java/sun/applet/PluginMain.java >> --- a/plugin/icedteanp/java/sun/applet/PluginMain.java Wed Nov 10 16:24:53 2010 -0500 >> +++ b/plugin/icedteanp/java/sun/applet/PluginMain.java Thu Nov 11 10:36:55 2010 -0500 >> @@ -215,20 +215,6 @@ >> // INSTALL THE PROPERTY LIST >> System.setProperties(avProps); >> >> - >> - try { >> - SSLSocketFactory sslSocketFactory; >> - SSLContext context = SSLContext.getInstance("SSL"); >> - TrustManager[] trust = new TrustManager[] { VariableX509TrustManager.getInstance() }; >> - context.init(null, trust, null); >> - sslSocketFactory = context.getSocketFactory(); >> - >> - HttpsURLConnection.setDefaultSSLSocketFactory(sslSocketFactory); >> - } catch (Exception e) { >> - System.err.println("Unable to set SSLSocketfactory (may _prevent_ access to sites that should be trusted)! Continuing anyway..."); >> - e.printStackTrace(); >> - } >> - >> // plug in a custom authenticator and proxy selector >> Authenticator.setDefault(new CustomAuthenticator()); >> ProxySelector.setDefault(new PluginProxySelector()); > From dbhole at redhat.com Thu Nov 11 08:10:16 2010 From: dbhole at redhat.com (Deepak Bhole) Date: Thu, 11 Nov 2010 11:10:16 -0500 Subject: [icedtea-web] RFC: integrate support for multiple KeyStores into the various validators In-Reply-To: <4CDC14CE.5070705@redhat.com> References: <4CDB1BFB.5030704@redhat.com> <20101111134226.GA6888@redhat.com> <4CDC035A.605@redhat.com> <20101111150255.GD6888@redhat.com> <4CDC0E15.1000009@redhat.com> <20101111154220.GE6888@redhat.com> <4CDC14CE.5070705@redhat.com> Message-ID: <20101111161016.GF6888@redhat.com> * Omair Majid [2010-11-11 11:07]: > On 11/11/2010 10:42 AM, Deepak Bhole wrote: > >* Omair Majid [2010-11-11 10:39]: > >>On 11/11/2010 10:02 AM, Deepak Bhole wrote: > >>>* Omair Majid [2010-11-11 09:53]: > >>>>On 11/11/2010 08:42 AM, Deepak Bhole wrote: > >>>> > >>>... > >>>>I based this code off code in KeyTool, and yes, it is slightly > >>>>confusing. A KeyStore can be considered a HashMap: it maps a String, > >>>>the alias, to a Certificate. The code first checks if the > >>>>certificate already exists by trying to find an alias for the given > >>>>certificate. If an alias is found, we know the certificate is in the > >>>>KeyStore already. If the certificate is not in the KeyStore, we want > >>>>to add a new entry to the HashMap, but we do not want to overwrite > >>>>an existing certificate. So we create random aliases until we get an > >>>>alias which has no mapping in the HashMap. > >>>> > >>> > >>> > >>>Ah okay then. > >>> > >>>>>Also, those methods should not be public static as untrusted apps could > >>>>>access them. The keystores shouldn't be either (if they are, either now > >>>>>or from before). > >>>>> > >>>> > >>>>I dont think this will be a problem. For one, every time it is > >>>>called, it reads the configuration (which untrusted apps are not > >>>>allowed to do) and then it reads the keystore from the disk (which > >>>>untrusted apps are not allowed to do). Making it non-public would > >>>>mean it can not be used by classes in other packages (for example, > >>>>JarSigner is in net.sourceforge.jnlp.tools and it uses this class). > >>>>Please let me know if this is not enough; I will see what else I can > >>>>do. > >>>> > >>> > >>>Reliance on other methods to do security is bad imo. There is no > >>>guarantee that the design will stay the same, If it changes and another > >>>way to do those functions is implemented, security may be compromised. > >>>It is fine to keep them public for other class usage, but please add an > >>>AllPermission check in that case. > >>> > >> > >>That's true. On further consideration, I dont think any methods in > >>CertificateUtils need security checks though. They all operate on > >>generic Certificate or KeyStore objects. There is nothing here that > >>is netx specific or that an untrusted application could not do by > >>itself. The actual action of obtaining the netx-specific KeyStores > >>to operate on is the responsibility of KeyStores (see comment below > >>for more about that). Do you think I should add checks anyway? > >> > > > >Ah okay. Nope, in that case no security checks are needed for those > >functions! > > > >>>>>>+ /** > >>>>>>+ * Checks whether an X509Certificate is already in one of the keystores > >>>>>>+ * @param c the certificate > >>>>>>+ * @param keyStores the KeyStores to check in > >>>>>>+ * @return true if the certificate is present in one of the keystores, false otherwise > >>>>>>+ */ > >>>>>>+ public static final boolean inKeyStores(X509Certificate c, KeyStore[] keyStores) { > >>>>>>+ for (int i = 0; i< keyStores.length; i++) { > >>>... > >>>>> > >>>>> > >>>>>What does printRfc represent? And if it's always true, why the else? > >>>>> > >>>> > >>>>This code was originally from net.sourceforge.jnlp.tools.KeyTool and > >>>>was moved over to CertificateUtils. n.s.j.t.KeyTool was adapted from > >>>>sun.security.tools.KeyTool which allows dumping certificate in more > >>>>than one format. printRfc indicates that the certifcate should be > >>>>dumped in the RFC 4945 format > >>>>(http://tools.ietf.org/html/rfc4945#section-6.1). Since this is the > >>>>only option we support, I have removed that if condition; it is > >>>>fixed in the updated patch. > >>>> > >>> > >>>Great! > >>> > >>>... > >>>... > >>>>> > >>>>>Should something like this be public static? Untrusted apps will be able > >>>>>to access it and modify it... > >>>>> > >>>> > >>>>I dont think this is a problem. getClientKeyStores() calls > >>>>getKeyStore() which reads the configuration (which untrusted apps > >>>>are not allowed to do) and then reads the acutal keystore from disk > >>>>(which untrusted apps are again not allowed to do). So I dont think > >>>>untrusted apps can actually get access to these keystores. If > >>>>untrusted apps call getClientKeyStores (or the related methods > >>>>getCAKeyStores or getCertKeyStores), they should get a > >>>>SecurityException from DeploymentConfiguration. > >>>> > >>>>A KeyStore is an in-memory version of a keystore file on disk. Even > >>>>if untrusted apps were somehow able to access it, saving the > >>>>contents to disk would require permissions to write to disk. > >>>> > >>> > >>>Same as with above. An AllPermission check in that case.. > >>> > >> > >>Yes, that's a good point. Thanks for pointing it out. I have added > >>an AllPermission check in getKeyStore(Level,Type,boolean) which > >>almost all public methods end up calling to access the KeyStores. > >>The only public methods that dont call this check are > >>getKeyStoreLocation (which is supposed to query the configuration > >>object) and toTranslatableString and toDisplayableString (which are > >>translation methods). Do you see any problems with this scheme? > >> > > > >Translation methods don't need a check. But getKeyStoreLocation... can > >that me made to return a location in user.home/* ? If so, it provides > >access to user.home indirectly and needs a check. > > > > getKeyStoreLocation is essentially a wrapper around > JNLPRuntime.getConfiguration().getProperty(String). The only thing > it does is find the appropriate String argument to use with > getProperty(String). As such, I think it is OK in this one case to > trust security to DeploymentConfiguration. But if you want, I can > add a check here anyway. > Nope, not necessary in that case. Just wanted to make sure user.home was protected. Okay I have no other issues with the patch. Ok for HEAD. Cheers, Deepak > >>>>>>+ /** > >>>>>> * Returns the location of a KeyStore corresponding to the given level and type. > >>>>>> * @param level > >>>>>> * @param type > >>>>>>@@ -334,4 +357,5 @@ > >>>>>> return ks; > >>>>>> } > >>>>>> > >>>>>>+ > >>>>>> } > >>>>>Rest looks fine to me. > >>>>> > >>>> > >>>>Oh, and just to clarify something which might not have been obvious > >>>>from the patch - in general, netx does not cache KeyStores. When it > >>>>needs to make a security decision related to certificates, it will > >>>>create appropriate KeyStore objects, do whatever operation it needs > >>>>to and then discard the KeyStore. This is not true for > >>>>VariableX509TrustManager, but it is true for JarSigner, Certificate > >>>>Viewer and the various security prompts. > >>>> > >>> > >>>That is fine. Normally I am all for optimizing by reducing disk access, > >>>but in this case I think the decision is valid. Other apps may update > >>>the keystore while one is running, in which case the running one should > >>>have the latest information (especially if another app deleted a cert). > >>>Perhaps VariableX509 should be changed to do the same? > >>> > >> > >>That's a good point. I would like to do that in a separate patch if > >>possible - this patch keeps the semantics of KeyStore caching as > >>they were before. > >> > > > >Sure! It should definitely be in a separate patch/ > > > > Ok, I will add it to my TODO list. > > >>>Also, are the trust store files locked when write happens? If not, they > >>>should be. > >>> > >> > >>They are not locked right now. I will take a look at this and post a > >>patch for this separately. > >> > > > > > >Awesome, thanks! > > > > Thank _you_ for the extensive reviews. > > Cheers, > Omair > > > > >>diff -r 44d47c366e5f netx/net/sourceforge/jnlp/runtime/Boot.java > >>--- a/netx/net/sourceforge/jnlp/runtime/Boot.java Wed Nov 10 16:24:53 2010 -0500 > >>+++ b/netx/net/sourceforge/jnlp/runtime/Boot.java Thu Nov 11 10:36:55 2010 -0500 > >>@@ -172,20 +172,6 @@ > >> JNLPRuntime.setForksAllowed(false); > >> } > >> > >>- // wire in custom authenticator > >>- try { > >>- SSLSocketFactory sslSocketFactory; > >>- SSLContext context = SSLContext.getInstance("SSL"); > >>- TrustManager[] trust = new TrustManager[] { VariableX509TrustManager.getInstance() }; > >>- context.init(null, trust, null); > >>- sslSocketFactory = context.getSocketFactory(); > >>- > >>- HttpsURLConnection.setDefaultSSLSocketFactory(sslSocketFactory); > >>- } catch (Exception e) { > >>- System.err.println("Unable to set SSLSocketfactory (may _prevent_ access to sites that should be trusted)! Continuing anyway..."); > >>- e.printStackTrace(); > >>- } > >>- > >> JNLPRuntime.setInitialArgments(Arrays.asList(argsIn)); > >> > >> // do in a privileged action to clear the security context of > >>diff -r 44d47c366e5f netx/net/sourceforge/jnlp/runtime/JNLPRuntime.java > >>--- a/netx/net/sourceforge/jnlp/runtime/JNLPRuntime.java Wed Nov 10 16:24:53 2010 -0500 > >>+++ b/netx/net/sourceforge/jnlp/runtime/JNLPRuntime.java Thu Nov 11 10:36:55 2010 -0500 > >>@@ -26,12 +26,17 @@ > >> import java.security.*; > >> import javax.jnlp.*; > >> import javax.naming.ConfigurationException; > >>+import javax.net.ssl.HttpsURLConnection; > >>+import javax.net.ssl.SSLContext; > >>+import javax.net.ssl.SSLSocketFactory; > >>+import javax.net.ssl.TrustManager; > >> import javax.swing.UIManager; > >> import javax.swing.text.html.parser.ParserDelegator; > >> > >> import net.sourceforge.jnlp.*; > >> import net.sourceforge.jnlp.cache.*; > >> import net.sourceforge.jnlp.security.SecurityDialogMessageHandler; > >>+import net.sourceforge.jnlp.security.VariableX509TrustManager; > >> import net.sourceforge.jnlp.services.*; > >> import net.sourceforge.jnlp.util.*; > >> > >>@@ -223,6 +228,20 @@ > >> > >> securityDialogMessageHandler = startSecurityThreads(); > >> > >>+ // wire in custom authenticator > >>+ try { > >>+ SSLSocketFactory sslSocketFactory; > >>+ SSLContext context = SSLContext.getInstance("SSL"); > >>+ TrustManager[] trust = new TrustManager[] { VariableX509TrustManager.getInstance() }; > >>+ context.init(null, trust, null); > >>+ sslSocketFactory = context.getSocketFactory(); > >>+ > >>+ HttpsURLConnection.setDefaultSSLSocketFactory(sslSocketFactory); > >>+ } catch (Exception e) { > >>+ System.err.println("Unable to set SSLSocketfactory (may _prevent_ access to sites that should be trusted)! Continuing anyway..."); > >>+ e.printStackTrace(); > >>+ } > >>+ > >> initialized = true; > >> > >> } > >>diff -r 44d47c366e5f netx/net/sourceforge/jnlp/security/CertWarningPane.java > >>--- a/netx/net/sourceforge/jnlp/security/CertWarningPane.java Wed Nov 10 16:24:53 2010 -0500 > >>+++ b/netx/net/sourceforge/jnlp/security/CertWarningPane.java Thu Nov 11 10:36:55 2010 -0500 > >>@@ -47,6 +47,9 @@ > >> import java.awt.GridLayout; > >> import java.awt.event.ActionEvent; > >> import java.awt.event.ActionListener; > >>+import java.io.FileOutputStream; > >>+import java.io.OutputStream; > >>+import java.security.KeyStore; > >> import java.security.cert.Certificate; > >> import java.security.cert.X509Certificate; > >> > >>@@ -62,6 +65,8 @@ > >> import net.sourceforge.jnlp.JNLPFile; > >> import net.sourceforge.jnlp.PluginBridge; > >> import net.sourceforge.jnlp.runtime.JNLPRuntime; > >>+import net.sourceforge.jnlp.security.KeyStores.Level; > >>+import net.sourceforge.jnlp.security.KeyStores.Type; > >> import net.sourceforge.jnlp.security.SecurityWarning.AccessType; > >> import net.sourceforge.jnlp.tools.KeyTool; > >> > >>@@ -232,25 +237,28 @@ > >> } > >> } > >> > >>- /** > >>- * Updates the user's KeyStore of trusted Certificates. > >>- */ > >>- private class CheckBoxListener implements ActionListener { > >>- public void actionPerformed(ActionEvent e) { > >>- if (alwaysTrust != null&& alwaysTrust.isSelected()) { > >>- try { > >>- KeyTool kt = new KeyTool(); > >>- Certificate c = parent.getJarSigner().getPublisher(); > >>- kt.importCert(c); > >>- if (JNLPRuntime.isDebug()) { > >>- System.out.println("certificate is now permanently trusted"); > >>- } > >>- } catch (Exception ex) { > >>- //TODO: Let NetX show a dialog here notifying user > >>- //about being unable to add cert to keystore > >>- } > >>- } > >>+ /** > >>+ * Updates the user's KeyStore of trusted Certificates. > >>+ */ > >>+ private class CheckBoxListener implements ActionListener { > >>+ public void actionPerformed(ActionEvent e) { > >>+ if (alwaysTrust != null&& alwaysTrust.isSelected()) { > >>+ try { > >>+ KeyStore ks = KeyStores.getKeyStore(Level.USER, Type.CERTS); > >>+ X509Certificate c = (X509Certificate) parent.getJarSigner().getPublisher(); > >>+ CertificateUtils.addToKeyStore(c, ks); > >>+ OutputStream os = new FileOutputStream(KeyStores.getKeyStoreLocation(Level.USER, Type.CERTS)); > >>+ ks.store(os, KeyStores.getPassword()); > >>+ if (JNLPRuntime.isDebug()) { > >>+ System.out.println("certificate is now permanently trusted"); > >>+ } > >>+ } catch (Exception ex) { > >>+ // TODO: Let NetX show a dialog here notifying user > >>+ // about being unable to add cert to keystore > >>+ ex.printStackTrace(); > >> } > >>+ } > >> } > >>+ } > >> > >> } > >>diff -r 44d47c366e5f netx/net/sourceforge/jnlp/security/CertificateUtils.java > >>--- /dev/null Thu Jan 01 00:00:00 1970 +0000 > >>+++ b/netx/net/sourceforge/jnlp/security/CertificateUtils.java Thu Nov 11 10:36:55 2010 -0500 > >>@@ -0,0 +1,140 @@ > >>+/* CertificateUtils.java > >>+ Copyright (C) 2010 Red Hat, Inc. > >>+ > >>+This file is part of IcedTea. > >>+ > >>+IcedTea is free software; you can redistribute it and/or > >>+modify it under the terms of the GNU General Public License as published by > >>+the Free Software Foundation, version 2. > >>+ > >>+IcedTea is distributed in the hope that it will be useful, > >>+but WITHOUT ANY WARRANTY; without even the implied warranty of > >>+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU > >>+General Public License for more details. > >>+ > >>+You should have received a copy of the GNU General Public License > >>+along with IcedTea; see the file COPYING. If not, write to > >>+the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA > >>+02110-1301 USA. > >>+ > >>+Linking this library statically or dynamically with other modules is > >>+making a combined work based on this library. Thus, the terms and > >>+conditions of the GNU General Public License cover the whole > >>+combination. > >>+ > >>+As a special exception, the copyright holders of this library give you > >>+permission to link this library with independent modules to produce an > >>+executable, regardless of the license terms of these independent > >>+modules, and to copy and distribute the resulting executable under > >>+terms of your choice, provided that you also meet, for each linked > >>+independent module, the terms and conditions of the license of that > >>+module. An independent module is a module which is not derived from > >>+or based on this library. If you modify this library, you may extend > >>+this exception to your version of the library, but you are not > >>+obligated to do so. If you do not wish to do so, delete this > >>+exception statement from your version. > >>+*/ > >>+ > >>+package net.sourceforge.jnlp.security; > >>+ > >>+import java.io.BufferedInputStream; > >>+import java.io.File; > >>+import java.io.FileInputStream; > >>+import java.io.IOException; > >>+import java.io.PrintStream; > >>+import java.math.BigInteger; > >>+import java.security.KeyStore; > >>+import java.security.KeyStoreException; > >>+import java.security.cert.Certificate; > >>+import java.security.cert.CertificateException; > >>+import java.security.cert.CertificateFactory; > >>+import java.security.cert.X509Certificate; > >>+import java.util.Random; > >>+ > >>+import net.sourceforge.jnlp.runtime.JNLPRuntime; > >>+ > >>+import sun.misc.BASE64Encoder; > >>+import sun.security.provider.X509Factory; > >>+ > >>+public class CertificateUtils { > >>+ /** > >>+ * Adds the X509Certficate in the file to the KeyStore. Note that it does > >>+ * not update the copy of the KeyStore on disk. > >>+ */ > >>+ public static final void addToKeyStore(File file, KeyStore ks) throws CertificateException, > >>+ IOException, KeyStoreException { > >>+ if (JNLPRuntime.isDebug()) { > >>+ System.out.println("Importing certificate from " + file + " into " + ks); > >>+ } > >>+ > >>+ BufferedInputStream bis = new BufferedInputStream(new FileInputStream(file)); > >>+ CertificateFactory cf = CertificateFactory.getInstance("X509"); > >>+ X509Certificate cert = null; > >>+ > >>+ try { > >>+ cert = (X509Certificate) cf.generateCertificate(bis); > >>+ } catch (ClassCastException cce) { > >>+ throw new CertificateException("Input file is not an X509 Certificate", cce); > >>+ } > >>+ > >>+ addToKeyStore(cert, ks); > >>+ } > >>+ > >>+ /** > >>+ * Adds an X509Certificate to the KeyStore. Note that it does not update the > >>+ * copy of the KeyStore on disk. > >>+ */ > >>+ public static final void addToKeyStore(X509Certificate cert, KeyStore ks) > >>+ throws KeyStoreException { > >>+ if (JNLPRuntime.isDebug()) { > >>+ System.out.println("Importing " + cert.getSubjectX500Principal().getName()); > >>+ } > >>+ > >>+ String alias = null; > >>+ Random random = new Random(); > >>+ alias = ks.getCertificateAlias(cert); > >>+ if (alias != null) { > >>+ return; > >>+ } > >>+ > >>+ do { > >>+ alias = new BigInteger(20, random).toString(); > >>+ } while (ks.getCertificate(alias) != null); > >>+ ks.setCertificateEntry(alias, cert); > >>+ } > >>+ > >>+ /** > >>+ * Checks whether an X509Certificate is already in one of the keystores > >>+ * @param c the certificate > >>+ * @param keyStores the KeyStores to check in > >>+ * @return true if the certificate is present in one of the keystores, false otherwise > >>+ */ > >>+ public static final boolean inKeyStores(X509Certificate c, KeyStore[] keyStores) { > >>+ for (int i = 0; i< keyStores.length; i++) { > >>+ try { > >>+ if (keyStores[i].getCertificateAlias(c) != null) { > >>+ if (JNLPRuntime.isDebug()) { > >>+ System.out.println(c.getSubjectX500Principal().getName() + " found in cacerts"); > >>+ } > >>+ return true; > >>+ } > >>+ } catch (KeyStoreException e) { > >>+ e.printStackTrace(); > >>+ // continue > >>+ } > >>+ } > >>+ return false; > >>+ } > >>+ > >>+ /** > >>+ * Writes the certificate in base64 encoded from to the print stream > >>+ */ > >>+ public static void dump(Certificate cert, PrintStream out) throws IOException, > >>+ CertificateException { > >>+ > >>+ BASE64Encoder encoder = new BASE64Encoder(); > >>+ out.println(X509Factory.BEGIN_CERT); > >>+ encoder.encodeBuffer(cert.getEncoded(), out); > >>+ out.println(X509Factory.END_CERT); > >>+ } > >>+} > >>diff -r 44d47c366e5f netx/net/sourceforge/jnlp/security/HttpsCertVerifier.java > >>--- a/netx/net/sourceforge/jnlp/security/HttpsCertVerifier.java Wed Nov 10 16:24:53 2010 -0500 > >>+++ b/netx/net/sourceforge/jnlp/security/HttpsCertVerifier.java Thu Nov 11 10:36:55 2010 -0500 > >>@@ -40,6 +40,7 @@ > >> import static net.sourceforge.jnlp.runtime.Translator.R; > >> > >> import java.io.IOException; > >>+import java.security.KeyStore; > >> import java.security.cert.CertPath; > >> import java.security.cert.Certificate; > >> import java.security.cert.CertificateException; > >>@@ -213,8 +214,8 @@ > >> > >> public boolean getRootInCacerts() { > >> try { > >>- KeyTool kt = new KeyTool(); > >>- return kt.checkCacertsForCertificate(getRoot()); > >>+ KeyStore[] caCertsKeyStores = KeyStores.getCAKeyStores(); > >>+ return CertificateUtils.inKeyStores((X509Certificate)getRoot(), caCertsKeyStores); > >> } catch (Exception e) { > >> } > >> return false; > >>diff -r 44d47c366e5f netx/net/sourceforge/jnlp/security/KeyStores.java > >>--- a/netx/net/sourceforge/jnlp/security/KeyStores.java Wed Nov 10 16:24:53 2010 -0500 > >>+++ b/netx/net/sourceforge/jnlp/security/KeyStores.java Thu Nov 11 10:36:55 2010 -0500 > >>@@ -41,6 +41,7 @@ > >> import java.io.FileInputStream; > >> import java.io.FileOutputStream; > >> import java.io.IOException; > >>+import java.security.AllPermission; > >> import java.security.KeyStore; > >> import java.security.KeyStoreException; > >> import java.security.NoSuchAlgorithmException; > >>@@ -111,6 +112,11 @@ > >> * @return a KeyStore containing certificates from the appropriate > >> */ > >> public static final KeyStore getKeyStore(Level level, Type type, boolean create) { > >>+ SecurityManager sm = System.getSecurityManager(); > >>+ if (sm != null) { > >>+ sm.checkPermission(new AllPermission()); > >>+ } > >>+ > >> String location = getKeyStoreLocation(level, type); > >> KeyStore ks = null; > >> try { > >>@@ -189,6 +195,29 @@ > >> } > >> > >> /** > >>+ * Returns KeyStores containing trusted client certificates > >>+ * > >>+ * @return an array of KeyStore objects that can be used to check client > >>+ * authentication certificates > >>+ */ > >>+ public static KeyStore[] getClientKeyStores() { > >>+ List result = new ArrayList(); > >>+ KeyStore ks = null; > >>+ > >>+ ks = getKeyStore(Level.SYSTEM, Type.CLIENT_CERTS); > >>+ if (ks != null) { > >>+ result.add(ks); > >>+ } > >>+ > >>+ ks = getKeyStore(Level.USER, Type.CLIENT_CERTS); > >>+ if (ks != null) { > >>+ result.add(ks); > >>+ } > >>+ > >>+ return result.toArray(new KeyStore[result.size()]); > >>+ } > >>+ > >>+ /** > >> * Returns the location of a KeyStore corresponding to the given level and type. > >> * @param level > >> * @param type > >>@@ -336,4 +365,5 @@ > >> return ks; > >> } > >> > >>+ > >> } > >>diff -r 44d47c366e5f netx/net/sourceforge/jnlp/security/VariableX509TrustManager.java > >>--- a/netx/net/sourceforge/jnlp/security/VariableX509TrustManager.java Wed Nov 10 16:24:53 2010 -0500 > >>+++ b/netx/net/sourceforge/jnlp/security/VariableX509TrustManager.java Thu Nov 11 10:36:55 2010 -0500 > >>@@ -42,6 +42,8 @@ > >> import java.security.cert.CertificateException; > >> import java.security.cert.X509Certificate; > >> import java.util.ArrayList; > >>+import java.util.Arrays; > >>+import java.util.List; > >> > >> import javax.net.ssl.TrustManager; > >> import javax.net.ssl.TrustManagerFactory; > >>@@ -60,59 +62,98 @@ > >> * different certificates that are not in the keystore. > >> */ > >> > >>-public class VariableX509TrustManager extends X509ExtendedTrustManager { > >>+final public class VariableX509TrustManager extends X509ExtendedTrustManager { > >> > >>- KeyStore userKeyStore = null; > >>- KeyStore caKeyStore = null; > >>+ /** TrustManagers containing trusted CAs */ > >>+ private X509TrustManager[] caTrustManagers = null; > >> > >>- X509TrustManager userTrustManager = null; > >>- X509TrustManager caTrustManager = null; > >>+ /** TrustManagers containing trusted certificates */ > >>+ private X509TrustManager[] certTrustManagers = null; > >> > >>- ArrayList temporarilyTrusted = new ArrayList(); > >>- ArrayList temporarilyUntrusted = new ArrayList(); > >>+ /** TrustManagers containing trusted client certificates */ > >>+ private X509TrustManager[] clientTrustManagers = null; > >> > >>- static VariableX509TrustManager instance = null; > >>+ private ArrayList temporarilyTrusted = new ArrayList(); > >>+ private ArrayList temporarilyUntrusted = new ArrayList(); > >>+ > >>+ private static VariableX509TrustManager instance = null; > >> > >> /** > >> * Constructor initializes the system, user and custom stores > >> */ > >> public VariableX509TrustManager() { > >> > >>+ /* > >>+ * Load TrustManagers for trusted certificates > >>+ */ > >> try { > >>- userKeyStore = SecurityUtil.getUserKeyStore(); > >>- TrustManagerFactory tmFactory = TrustManagerFactory.getInstance("SunX509", "SunJSSE"); > >>- tmFactory.init(userKeyStore); > >>+ /** KeyStores containing trusted certificates */ > >>+ KeyStore[] trustedCertKeyStores = KeyStores.getCertKeyStores(); > >>+ certTrustManagers = new X509TrustManager[trustedCertKeyStores.length]; > >> > >>- // tm factory initialized, now get the managers so we can assign the X509 one > >>- TrustManager[] trustManagers = tmFactory.getTrustManagers(); > >>+ for (int j = 0; j< trustedCertKeyStores.length; j++) { > >>+ TrustManagerFactory tmFactory = TrustManagerFactory.getInstance("SunX509", "SunJSSE"); > >>+ tmFactory.init(trustedCertKeyStores[j]); > >> > >>- for (int i=0; i< trustManagers.length; i++) { > >>- if (trustManagers[i] instanceof X509TrustManager) { > >>- userTrustManager = (X509TrustManager) trustManagers[i]; > >>+ // tm factory initialized, now get the managers so we can assign the X509 one > >>+ TrustManager[] trustManagers = tmFactory.getTrustManagers(); > >>+ > >>+ for (int i = 0; i< trustManagers.length; i++) { > >>+ if (trustManagers[i] instanceof X509TrustManager) { > >>+ certTrustManagers[j] = (X509TrustManager) trustManagers[i]; > >>+ } > >> } > >> } > >>- > >> } catch (Exception e) { > >>- // TODO Auto-generated catch block > >> e.printStackTrace(); > >> } > >> > >>+ /* > >>+ * Load TrustManagers for trusted CAs > >>+ */ > >> try { > >>- caKeyStore = SecurityUtil.getCacertsKeyStore(); > >>- TrustManagerFactory tmFactory = TrustManagerFactory.getInstance("SunX509", "SunJSSE"); > >>- tmFactory.init(caKeyStore); > >>+ /** KeyStores containing trusted CAs */ > >>+ KeyStore[] trustedCAKeyStores = KeyStores.getCAKeyStores(); > >>+ caTrustManagers = new X509TrustManager[trustedCAKeyStores.length]; > >> > >>- // tm factory initialized, now get the managers so we can extract the X509 one > >>- TrustManager[] trustManagers = tmFactory.getTrustManagers(); > >>+ for (int j = 0; j< caTrustManagers.length; j++) { > >>+ TrustManagerFactory tmFactory = TrustManagerFactory.getInstance("SunX509", "SunJSSE"); > >>+ tmFactory.init(trustedCAKeyStores[j]); > >> > >>- for (int i=0; i< trustManagers.length; i++) { > >>- if (trustManagers[i] instanceof X509TrustManager) { > >>- caTrustManager = (X509TrustManager) trustManagers[i]; > >>+ // tm factory initialized, now get the managers so we can extract the X509 one > >>+ TrustManager[] trustManagers = tmFactory.getTrustManagers(); > >>+ > >>+ for (int i=0; i< trustManagers.length; i++) { > >>+ if (trustManagers[i] instanceof X509TrustManager) { > >>+ caTrustManagers[j] = (X509TrustManager) trustManagers[i]; > >>+ } > >> } > >> } > >>+ } catch (Exception e) { > >>+ e.printStackTrace(); > >>+ } > >> > >>+ /* > >>+ * Load TrustManagers for trusted clients certificates > >>+ */ > >>+ try { > >>+ KeyStore[] clientKeyStores = KeyStores.getClientKeyStores(); > >>+ clientTrustManagers = new X509TrustManager[clientKeyStores.length]; > >>+ > >>+ for (int j = 0; j< clientTrustManagers.length; j++) { > >>+ TrustManagerFactory tmFactory = TrustManagerFactory.getInstance("SunX509", "SunJSSE"); > >>+ tmFactory.init(clientKeyStores[j]); > >>+ > >>+ // tm factory initialized, now get the managers so we can extract the X509 one > >>+ TrustManager[] trustManagers = tmFactory.getTrustManagers(); > >>+ > >>+ for (int i=0; i< trustManagers.length; i++) { > >>+ if (trustManagers[i] instanceof X509TrustManager) { > >>+ clientTrustManagers[j] = (X509TrustManager) trustManagers[i]; > >>+ } > >>+ } > >>+ } > >> } catch (Exception e) { > >>- // TODO Auto-generated catch block > >> e.printStackTrace(); > >> } > >> } > >>@@ -123,18 +164,23 @@ > >> public void checkClientTrusted(X509Certificate[] chain, String authType, > >> String hostName, String algorithm) > >> throws CertificateException { > >>- // First try catrustmanager, then try usertrustmanager > >>- try { > >>- caTrustManager.checkClientTrusted(chain, authType); > >>- } catch (Exception caex) { > >>+ > >>+ boolean trusted = false; > >>+ ValidatorException savedException = null; > >>+ for (int i = 0; i< clientTrustManagers.length; i++) { > >> try { > >>- userTrustManager.checkClientTrusted(chain, authType); > >>- } catch (Exception userex) { > >>- // Do nothing here. This trust manager is intended to be used > >>- // only in the plugin instance vm, which does not act as a > >>- // server > >>+ clientTrustManagers[i].checkClientTrusted(chain, authType); > >>+ trusted = true; > >>+ break; > >>+ } catch (ValidatorException caex) { > >>+ savedException = caex; > >> } > >> } > >>+ if (trusted) { > >>+ return; > >>+ } > >>+ > >>+ throw savedException; > >> } > >> > >> public void checkClientTrusted(X509Certificate[] chain, String authType) > >>@@ -214,17 +260,45 @@ > >> * Check system, user and custom trust manager > >> */ > >> private void checkAllManagers(X509Certificate[] chain, String authType) throws CertificateException { > >>- // First try catrustmanager, then try usertrustmanager, and finally, check temp trusted certs > >>- try { > >>- caTrustManager.checkServerTrusted(chain, authType); > >>- } catch (ValidatorException caex) { > >>+ // first try CA TrustManagers > >>+ boolean trusted = false; > >>+ ValidatorException savedException = null; > >>+ for (int i = 0; i< caTrustManagers.length; i++) { > >> try { > >>- userTrustManager.checkServerTrusted(chain, authType); > >>- } catch (ValidatorException uex) { > >>- if (!temporarilyTrusted.contains(chain[0])) > >>- throw (CertificateException) uex; > >>+ caTrustManagers[i].checkServerTrusted(chain, authType); > >>+ trusted = true; > >>+ break; > >>+ } catch (ValidatorException caex) { > >>+ savedException = caex; > >> } > >> } > >>+ if (trusted) { > >>+ return; > >>+ } > >>+ > >>+ // then try certificate TrustManagers > >>+ for (int i = 0; i< certTrustManagers.length; i++) { > >>+ try { > >>+ certTrustManagers[i].checkServerTrusted(chain, authType); > >>+ trusted = true; > >>+ break; > >>+ } catch (ValidatorException caex) { > >>+ savedException = caex; > >>+ } > >>+ } > >>+ if (trusted) { > >>+ return; > >>+ } > >>+ > >>+ // finally check temp trusted certs > >>+ if (!temporarilyTrusted.contains(chain[0])) { > >>+ if (savedException == null) { > >>+ // System.out.println("IMPOSSIBLE!"); > >>+ throw new ValidatorException(ValidatorException.T_SIGNATURE_ERROR, chain[0]); > >>+ } > >>+ throw savedException; > >>+ } > >>+ > >> } > >> > >> /** > >>@@ -233,23 +307,32 @@ > >> private boolean isExplicitlyTrusted(X509Certificate[] chain, String authType) { > >> boolean explicitlyTrusted = false; > >> > >>- try { > >>- userTrustManager.checkServerTrusted(chain, authType); > >>- explicitlyTrusted = true; > >>- } catch (ValidatorException uex) { > >>- if (temporarilyTrusted.contains(chain[0])) > >>+ for (int i = 0; i< certTrustManagers.length; i++) { > >>+ try { > >>+ certTrustManagers[i].checkServerTrusted(chain, authType); > >> explicitlyTrusted = true; > >>- } catch (CertificateException ce) { > >>- // do nothing, this means that the cert is not explicitly trusted > >>+ break; > >>+ } catch (ValidatorException uex) { > >>+ if (temporarilyTrusted.contains(chain[0])) { > >>+ explicitlyTrusted = true; > >>+ break; > >>+ } > >>+ } catch (CertificateException ce) { > >>+ // not explicitly trusted > >>+ } > >> } > >> > >> return explicitlyTrusted; > >>- > >> } > >> > >> public X509Certificate[] getAcceptedIssuers() { > >>- // delegate to default > >>- return caTrustManager.getAcceptedIssuers(); > >>+ List issuers = new ArrayList(); > >>+ > >>+ for (int i = 0; i< caTrustManagers.length; i++) { > >>+ issuers.addAll(Arrays.asList(caTrustManagers[i].getAcceptedIssuers())); > >>+ } > >>+ > >>+ return issuers.toArray(new X509Certificate[issuers.size()]); > >> } > >> > >> /** > >>diff -r 44d47c366e5f netx/net/sourceforge/jnlp/security/viewer/CertificatePane.java > >>--- a/netx/net/sourceforge/jnlp/security/viewer/CertificatePane.java Wed Nov 10 16:24:53 2010 -0500 > >>+++ b/netx/net/sourceforge/jnlp/security/viewer/CertificatePane.java Thu Nov 11 10:36:55 2010 -0500 > >>@@ -71,6 +71,7 @@ > >> import javax.swing.event.ChangeListener; > >> import javax.swing.table.DefaultTableModel; > >> > >>+import net.sourceforge.jnlp.security.CertificateUtils; > >> import net.sourceforge.jnlp.security.KeyStores; > >> import net.sourceforge.jnlp.security.SecurityUtil; > >> import net.sourceforge.jnlp.security.SecurityWarningDialog; > >>@@ -359,9 +360,8 @@ > >> int returnVal = chooser.showOpenDialog(parent); > >> if(returnVal == JFileChooser.APPROVE_OPTION) { > >> try { > >>- KeyTool kt = new KeyTool(); > >> KeyStore ks = keyStore; > >>- kt.addToKeyStore(chooser.getSelectedFile(), ks); > >>+ CertificateUtils.addToKeyStore(chooser.getSelectedFile(), ks); > >> OutputStream os = new FileOutputStream( > >> KeyStores.getKeyStoreLocation(currentKeyStoreLevel, currentKeyStoreType)); > >> ks.store(os, KeyStores.getPassword()); > >>@@ -399,7 +399,7 @@ > >> if (alias != null) { > >> Certificate c = keyStore.getCertificate(alias); > >> PrintStream ps = new PrintStream(chooser.getSelectedFile().getAbsolutePath()); > >>- KeyTool.dumpCert(c, ps); > >>+ CertificateUtils.dump(c, ps); > >> repopulateTables(); > >> } > >> } > >>diff -r 44d47c366e5f netx/net/sourceforge/jnlp/tools/JarSigner.java > >>--- a/netx/net/sourceforge/jnlp/tools/JarSigner.java Wed Nov 10 16:24:53 2010 -0500 > >>+++ b/netx/net/sourceforge/jnlp/tools/JarSigner.java Thu Nov 11 10:36:55 2010 -0500 > >>@@ -371,9 +371,12 @@ > >> private void checkTrustedCerts() throws Exception { > >> if (certPath != null) { > >> try { > >>- KeyTool kt = new KeyTool(); > >>- alreadyTrustPublisher = kt.isTrusted(getPublisher()); > >>- rootInCacerts = kt.checkCacertsForCertificate(getRoot()); > >>+ X509Certificate publisher = (X509Certificate) getPublisher(); > >>+ KeyStore[] certKeyStores = KeyStores.getCertKeyStores(); > >>+ alreadyTrustPublisher = CertificateUtils.inKeyStores(publisher, certKeyStores); > >>+ X509Certificate root = (X509Certificate) getRoot(); > >>+ KeyStore[] caKeyStores = KeyStores.getCAKeyStores(); > >>+ rootInCacerts = CertificateUtils.inKeyStores(root, caKeyStores); > >> } catch (Exception e) { > >> // TODO: Warn user about not being able to > >> // look through their cacerts/trusted.certs > >>diff -r 44d47c366e5f netx/net/sourceforge/jnlp/tools/KeyTool.java > >>--- a/netx/net/sourceforge/jnlp/tools/KeyTool.java Wed Nov 10 16:24:53 2010 -0500 > >>+++ b/netx/net/sourceforge/jnlp/tools/KeyTool.java Thu Nov 11 10:36:55 2010 -0500 > >>@@ -119,43 +119,6 @@ > >> return importCert((Certificate)cert); > >> } > >> > >>- /** > >>- * Adds the X509Certficate in the file to the KeyStore > >>- */ > >>- public final void addToKeyStore(File file, KeyStore ks) throws CertificateException, > >>- IOException, KeyStoreException { > >>- BufferedInputStream bis = new BufferedInputStream(new FileInputStream(file)); > >>- CertificateFactory cf = CertificateFactory.getInstance("X509"); > >>- X509Certificate cert = null; > >>- > >>- try { > >>- cert = (X509Certificate) cf.generateCertificate(bis); > >>- } catch (ClassCastException cce) { > >>- throw new CertificateException("Input file is not an X509 Certificate", cce); > >>- } > >>- > >>- addToKeyStore(cert, ks); > >>- > >>- } > >>- > >>- /** > >>- * Adds an X509Certificate to the KeyStore > >>- */ > >>- public final void addToKeyStore(X509Certificate cert, KeyStore ks) throws KeyStoreException { > >>- String alias = null; > >>- Random random = new Random(); > >>- alias = ks.getCertificateAlias(cert); > >>- // already in keystore; done > >>- if (alias != null) { > >>- return; > >>- } > >>- > >>- do { > >>- alias = new BigInteger(20, random).toString(); > >>- } while (ks.getCertificate(alias) != null); > >>- ks.setCertificateEntry(alias, cert); > >>- } > >>- > >> /** > >> * Adds a trusted certificate to the user's keystore. > >> * @return true if the add was successful, false otherwise. > >>@@ -479,20 +442,6 @@ > >> return false; > >> } > >> > >>- public static void dumpCert(Certificate cert, PrintStream out) > >>- throws IOException, CertificateException { > >>- > >>- boolean printRfc = true; > >>- if (printRfc) { > >>- BASE64Encoder encoder = new BASE64Encoder(); > >>- out.println(X509Factory.BEGIN_CERT); > >>- encoder.encodeBuffer(cert.getEncoded(), out); > >>- out.println(X509Factory.END_CERT); > >>- } else { > >>- out.write(cert.getEncoded()); // binary > >>- } > >>- } > >>- > >> public static void main(String[] args) throws Exception { > >> KeyTool kt = new KeyTool(); > >> kt.doPrintEntries(System.out); > >>diff -r 44d47c366e5f plugin/icedteanp/java/sun/applet/PluginMain.java > >>--- a/plugin/icedteanp/java/sun/applet/PluginMain.java Wed Nov 10 16:24:53 2010 -0500 > >>+++ b/plugin/icedteanp/java/sun/applet/PluginMain.java Thu Nov 11 10:36:55 2010 -0500 > >>@@ -215,20 +215,6 @@ > >> // INSTALL THE PROPERTY LIST > >> System.setProperties(avProps); > >> > >>- > >>- try { > >>- SSLSocketFactory sslSocketFactory; > >>- SSLContext context = SSLContext.getInstance("SSL"); > >>- TrustManager[] trust = new TrustManager[] { VariableX509TrustManager.getInstance() }; > >>- context.init(null, trust, null); > >>- sslSocketFactory = context.getSocketFactory(); > >>- > >>- HttpsURLConnection.setDefaultSSLSocketFactory(sslSocketFactory); > >>- } catch (Exception e) { > >>- System.err.println("Unable to set SSLSocketfactory (may _prevent_ access to sites that should be trusted)! Continuing anyway..."); > >>- e.printStackTrace(); > >>- } > >>- > >> // plug in a custom authenticator and proxy selector > >> Authenticator.setDefault(new CustomAuthenticator()); > >> ProxySelector.setDefault(new PluginProxySelector()); > > > From ptisnovs at icedtea.classpath.org Thu Nov 11 08:23:39 2010 From: ptisnovs at icedtea.classpath.org (ptisnovs at icedtea.classpath.org) Date: Thu, 11 Nov 2010 16:23:39 +0000 Subject: /hg/icedtea6: Patch which corrects regression test hotspot/test/... Message-ID: changeset 16a6d3db365a in /hg/icedtea6 details: http://icedtea.classpath.org/hg/icedtea6?cmd=changeset;node=16a6d3db365a author: ptisnovs date: Thu Nov 11 17:23:11 2010 +0100 Patch which corrects regression test hotspot/test/gc/6581734/Test6581734. diffstat: 3 files changed, 29 insertions(+), 1 deletion(-) ChangeLog | 6 ++++++ Makefile.am | 3 ++- patches/openjdk/6980392-fix_test6581734.patch | 21 +++++++++++++++++++++ diffs (51 lines): diff -r 3b0958812397 -r 16a6d3db365a ChangeLog --- a/ChangeLog Wed Nov 10 16:07:00 2010 +0000 +++ b/ChangeLog Thu Nov 11 17:23:11 2010 +0100 @@ -1,3 +1,9 @@ 2010-11-10 Andrew John Hughes + + * Makefile.am: Add new patch. + * patches/openjdk/6980392-fix_test6581734.patch: + Testcase correction - added missing right bracket. + 2010-11-10 Andrew John Hughes RH647737 diff -r 3b0958812397 -r 16a6d3db365a Makefile.am --- a/Makefile.am Wed Nov 10 16:07:00 2010 +0000 +++ b/Makefile.am Thu Nov 11 17:23:11 2010 +0100 @@ -306,7 +306,8 @@ if WITH_ALT_HSBUILD if WITH_ALT_HSBUILD ICEDTEA_PATCHES += \ patches/openjdk/6994130-ppc_fix.patch \ - patches/disable-default-compoops.patch + patches/disable-default-compoops.patch \ + patches/openjdk/6980392-fix_test6581734.patch else ICEDTEA_PATCHES += \ patches/shark_do_nothing_on_stub_frame.patch \ diff -r 3b0958812397 -r 16a6d3db365a patches/openjdk/6980392-fix_test6581734.patch --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/patches/openjdk/6980392-fix_test6581734.patch Thu Nov 11 17:23:11 2010 +0100 @@ -0,0 +1,21 @@ +# HG changeset patch +# User kevinw +# Date 1282924624 -3600 +# Node ID 21c29458b334f7b1f05a185442ab37ab8de1ea7b +# Parent 8e5955ddf8e491a54b7e9446424fdee02e6950c8 +6980392: TEST_BUG: gc/6581734/Test6581734.java has typo +Summary: simple correction in testcase +Reviewed-by: mchung + +diff -r 8e5955ddf8e4 -r 21c29458b334 test/gc/6581734/Test6581734.java +--- openjdk.old/hotspot/test/gc/6581734/Test6581734_.java 2010-10-08 22:29:24.000000000 +0200 ++++ openjdk/hotspot/test/gc/6581734/Test6581734.java 2010-11-11 15:47:15.000000000 +0100 +@@ -121,7 +121,7 @@ + } + + if (collectorsWithTime changeset e82455c47f08 in /hg/icedtea-web details: http://icedtea.classpath.org/hg/icedtea-web?cmd=changeset;node=e82455c47f08 author: Omair Majid date: Thu Nov 11 11:43:13 2010 -0500 integrate support for multiple KeyStores into the various validators 2010-11-11 Omair Majid * netx/net/sourceforge/jnlp/runtime/Boot.java (main): Move trust manager initialization code into JNLPRuntime.initialize. * plugin/icedteanp/java/sun/applet/PluginMain.java (init): Likewise. * netx/net/sourceforge/jnlp/runtime/JNLPRuntime.java (initialize): Set the default SSL TrustManager here. * netx/net/sourceforge/jnlp/security/CertWarningPane.java (CheckBoxListener.actionPerformed): Add this certificate into user's trusted certificate store. * netx/net/sourceforge/jnlp/tools/KeyTool.java (addToKeyStore(File,KeyStore)): Move to CertificateUtils. (addToKeyStore(X509Certificate,KeyStore)): Likewise. (dumpCert): Likewise. * netx/net/sourceforge/jnlp/security/CertificateUtils.java: New class. (addToKeyStore(File,KeyStore)): Moved from KeyTool. (addToKeyStore(X509Certificate,KeyStore)): Likewise. (dumpCert): Likewise. (inKeyStores): New method. * netx/net/sourceforge/jnlp/security/HttpsCertVerifier.java (getRootInCacerts): Check all available CA store to check if root is in CA certificates. * netx/net/sourceforge/jnlp/security/KeyStores.java (getKeyStore(Level,Type,boolean)): Add security check. (getClientKeyStores): New method. * netx/net/sourceforge/jnlp/security/VariableX509TrustManager.java (VariableX509TrustManager): Initialize multiple CA, certificate and client trust managers. (checkClientTrusted): Check all the client TrustManagers if certificate is trusted. (checkAllManagers): Check multiple CA certificates and trusted certificates to determine if the certificate chain can be trusted. (isExplicitlyTrusted): Check with multiple TrustManagers. (getAcceptedIssuers): Gather results from multiple TrustManagers. * netx/net/sourceforge/jnlp/security/viewer/CertificatePane.java (ImportButtonListener): Use CertificateUtils instead of KeyTool. * netx/net/sourceforge/jnlp/tools/JarSigner.java (checkTrustedCerts): Use multiple key stores to check if certificate is directly trusted and if the root is trusted. diffstat: 12 files changed, 417 insertions(+), 186 deletions(-) ChangeLog | 42 ++ netx/net/sourceforge/jnlp/runtime/Boot.java | 20 - netx/net/sourceforge/jnlp/runtime/JNLPRuntime.java | 19 netx/net/sourceforge/jnlp/security/CertWarningPane.java | 45 +- netx/net/sourceforge/jnlp/security/CertificateUtils.java | 151 +++++++ netx/net/sourceforge/jnlp/security/HttpsCertVerifier.java | 6 netx/net/sourceforge/jnlp/security/KeyStores.java | 30 + netx/net/sourceforge/jnlp/security/VariableX509TrustManager.java | 191 +++++++--- netx/net/sourceforge/jnlp/security/viewer/CertificatePane.java | 7 netx/net/sourceforge/jnlp/tools/JarSigner.java | 9 netx/net/sourceforge/jnlp/tools/KeyTool.java | 63 --- plugin/icedteanp/java/sun/applet/PluginMain.java | 20 - diffs (truncated from 915 to 500 lines): diff -r 44d47c366e5f -r e82455c47f08 ChangeLog --- a/ChangeLog Wed Nov 10 16:24:53 2010 -0500 +++ b/ChangeLog Thu Nov 11 11:43:13 2010 -0500 @@ -1,3 +1,45 @@ 2010-11-09 Omair Majid + + * netx/net/sourceforge/jnlp/runtime/Boot.java (main): Move trust + manager initialization code into JNLPRuntime.initialize. + * plugin/icedteanp/java/sun/applet/PluginMain.java + (init): Likewise. + * netx/net/sourceforge/jnlp/runtime/JNLPRuntime.java (initialize): + Set the default SSL TrustManager here. + * netx/net/sourceforge/jnlp/security/CertWarningPane.java + (CheckBoxListener.actionPerformed): Add this certificate into + user's trusted certificate store. + * netx/net/sourceforge/jnlp/tools/KeyTool.java + (addToKeyStore(File,KeyStore)): Move to CertificateUtils. + (addToKeyStore(X509Certificate,KeyStore)): Likewise. + (dumpCert): Likewise. + * netx/net/sourceforge/jnlp/security/CertificateUtils.java: New + class. + (addToKeyStore(File,KeyStore)): Moved from KeyTool. + (addToKeyStore(X509Certificate,KeyStore)): Likewise. + (dumpCert): Likewise. + (inKeyStores): New method. + * netx/net/sourceforge/jnlp/security/HttpsCertVerifier.java + (getRootInCacerts): Check all available CA store to check if + root is in CA certificates. + * netx/net/sourceforge/jnlp/security/KeyStores.java + (getKeyStore(Level,Type,boolean)): Add security check. + (getClientKeyStores): New method. + * netx/net/sourceforge/jnlp/security/VariableX509TrustManager.java + (VariableX509TrustManager): Initialize multiple CA, certificate and + client trust managers. + (checkClientTrusted): Check all the client TrustManagers if + certificate is trusted. + (checkAllManagers): Check multiple CA certificates and trusted + certificates to determine if the certificate chain can be trusted. + (isExplicitlyTrusted): Check with multiple TrustManagers. + (getAcceptedIssuers): Gather results from multiple TrustManagers. + * netx/net/sourceforge/jnlp/security/viewer/CertificatePane.java + (ImportButtonListener): Use CertificateUtils instead of KeyTool. + * netx/net/sourceforge/jnlp/tools/JarSigner.java + (checkTrustedCerts): Use multiple key stores to check if certificate + is directly trusted and if the root is trusted. + 2010-11-09 Omair Majid * netx/net/sourceforge/jnlp/resources/Messages.properties: Add diff -r 44d47c366e5f -r e82455c47f08 netx/net/sourceforge/jnlp/runtime/Boot.java --- a/netx/net/sourceforge/jnlp/runtime/Boot.java Wed Nov 10 16:24:53 2010 -0500 +++ b/netx/net/sourceforge/jnlp/runtime/Boot.java Thu Nov 11 11:43:13 2010 -0500 @@ -29,11 +29,6 @@ import java.util.Arrays; import java.util.Arrays; import java.util.List; -import javax.net.ssl.HttpsURLConnection; -import javax.net.ssl.SSLContext; -import javax.net.ssl.SSLSocketFactory; -import javax.net.ssl.TrustManager; - import net.sourceforge.jnlp.AppletDesc; import net.sourceforge.jnlp.ApplicationDesc; import net.sourceforge.jnlp.JNLPFile; @@ -44,7 +39,6 @@ import net.sourceforge.jnlp.ResourcesDes import net.sourceforge.jnlp.ResourcesDesc; import net.sourceforge.jnlp.cache.CacheUtil; import net.sourceforge.jnlp.cache.UpdatePolicy; -import net.sourceforge.jnlp.security.VariableX509TrustManager; import net.sourceforge.jnlp.security.viewer.CertificateViewer; import net.sourceforge.jnlp.services.ServiceUtil; @@ -170,20 +164,6 @@ public final class Boot implements Privi if (null != getOption("-Xnofork")) { JNLPRuntime.setForksAllowed(false); - } - - // wire in custom authenticator - try { - SSLSocketFactory sslSocketFactory; - SSLContext context = SSLContext.getInstance("SSL"); - TrustManager[] trust = new TrustManager[] { VariableX509TrustManager.getInstance() }; - context.init(null, trust, null); - sslSocketFactory = context.getSocketFactory(); - - HttpsURLConnection.setDefaultSSLSocketFactory(sslSocketFactory); - } catch (Exception e) { - System.err.println("Unable to set SSLSocketfactory (may _prevent_ access to sites that should be trusted)! Continuing anyway..."); - e.printStackTrace(); } JNLPRuntime.setInitialArgments(Arrays.asList(argsIn)); diff -r 44d47c366e5f -r e82455c47f08 netx/net/sourceforge/jnlp/runtime/JNLPRuntime.java --- a/netx/net/sourceforge/jnlp/runtime/JNLPRuntime.java Wed Nov 10 16:24:53 2010 -0500 +++ b/netx/net/sourceforge/jnlp/runtime/JNLPRuntime.java Thu Nov 11 11:43:13 2010 -0500 @@ -26,12 +26,17 @@ import java.security.*; import java.security.*; import javax.jnlp.*; import javax.naming.ConfigurationException; +import javax.net.ssl.HttpsURLConnection; +import javax.net.ssl.SSLContext; +import javax.net.ssl.SSLSocketFactory; +import javax.net.ssl.TrustManager; import javax.swing.UIManager; import javax.swing.text.html.parser.ParserDelegator; import net.sourceforge.jnlp.*; import net.sourceforge.jnlp.cache.*; import net.sourceforge.jnlp.security.SecurityDialogMessageHandler; +import net.sourceforge.jnlp.security.VariableX509TrustManager; import net.sourceforge.jnlp.services.*; import net.sourceforge.jnlp.util.*; @@ -222,6 +227,20 @@ public class JNLPRuntime { } securityDialogMessageHandler = startSecurityThreads(); + + // wire in custom authenticator for SSL connections + try { + SSLSocketFactory sslSocketFactory; + SSLContext context = SSLContext.getInstance("SSL"); + TrustManager[] trust = new TrustManager[] { VariableX509TrustManager.getInstance() }; + context.init(null, trust, null); + sslSocketFactory = context.getSocketFactory(); + + HttpsURLConnection.setDefaultSSLSocketFactory(sslSocketFactory); + } catch (Exception e) { + System.err.println("Unable to set SSLSocketfactory (may _prevent_ access to sites that should be trusted)! Continuing anyway..."); + e.printStackTrace(); + } initialized = true; diff -r 44d47c366e5f -r e82455c47f08 netx/net/sourceforge/jnlp/security/CertWarningPane.java --- a/netx/net/sourceforge/jnlp/security/CertWarningPane.java Wed Nov 10 16:24:53 2010 -0500 +++ b/netx/net/sourceforge/jnlp/security/CertWarningPane.java Thu Nov 11 11:43:13 2010 -0500 @@ -47,6 +47,9 @@ import java.awt.GridLayout; import java.awt.GridLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; +import java.io.FileOutputStream; +import java.io.OutputStream; +import java.security.KeyStore; import java.security.cert.Certificate; import java.security.cert.X509Certificate; @@ -62,8 +65,9 @@ import net.sourceforge.jnlp.JNLPFile; import net.sourceforge.jnlp.JNLPFile; import net.sourceforge.jnlp.PluginBridge; import net.sourceforge.jnlp.runtime.JNLPRuntime; +import net.sourceforge.jnlp.security.KeyStores.Level; +import net.sourceforge.jnlp.security.KeyStores.Type; import net.sourceforge.jnlp.security.SecurityWarning.AccessType; -import net.sourceforge.jnlp.tools.KeyTool; /** * Provides the panel for using inside a SecurityWarningDialog. These dialogs are @@ -232,25 +236,28 @@ public class CertWarningPane extends Sec } } - /** - * Updates the user's KeyStore of trusted Certificates. - */ - private class CheckBoxListener implements ActionListener { - public void actionPerformed(ActionEvent e) { - if (alwaysTrust != null && alwaysTrust.isSelected()) { - try { - KeyTool kt = new KeyTool(); - Certificate c = parent.getJarSigner().getPublisher(); - kt.importCert(c); - if (JNLPRuntime.isDebug()) { - System.out.println("certificate is now permanently trusted"); - } - } catch (Exception ex) { - //TODO: Let NetX show a dialog here notifying user - //about being unable to add cert to keystore - } - } + /** + * Updates the user's KeyStore of trusted Certificates. + */ + private class CheckBoxListener implements ActionListener { + public void actionPerformed(ActionEvent e) { + if (alwaysTrust != null && alwaysTrust.isSelected()) { + try { + KeyStore ks = KeyStores.getKeyStore(Level.USER, Type.CERTS); + X509Certificate c = (X509Certificate) parent.getJarSigner().getPublisher(); + CertificateUtils.addToKeyStore(c, ks); + OutputStream os = new FileOutputStream(KeyStores.getKeyStoreLocation(Level.USER, Type.CERTS)); + ks.store(os, KeyStores.getPassword()); + if (JNLPRuntime.isDebug()) { + System.out.println("certificate is now permanently trusted"); + } + } catch (Exception ex) { + // TODO: Let NetX show a dialog here notifying user + // about being unable to add cert to keystore + ex.printStackTrace(); } + } } + } } diff -r 44d47c366e5f -r e82455c47f08 netx/net/sourceforge/jnlp/security/CertificateUtils.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/netx/net/sourceforge/jnlp/security/CertificateUtils.java Thu Nov 11 11:43:13 2010 -0500 @@ -0,0 +1,151 @@ +/* CertificateUtils.java + Copyright (C) 2010 Red Hat, Inc. + +This file is part of IcedTea. + +IcedTea is free software; you can redistribute it and/or +modify it under the terms of the GNU General Public License as published by +the Free Software Foundation, version 2. + +IcedTea is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +General Public License for more details. + +You should have received a copy of the GNU General Public License +along with IcedTea; see the file COPYING. If not, write to +the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA +02110-1301 USA. + +Linking this library statically or dynamically with other modules is +making a combined work based on this library. Thus, the terms and +conditions of the GNU General Public License cover the whole +combination. + +As a special exception, the copyright holders of this library give you +permission to link this library with independent modules to produce an +executable, regardless of the license terms of these independent +modules, and to copy and distribute the resulting executable under +terms of your choice, provided that you also meet, for each linked +independent module, the terms and conditions of the license of that +module. An independent module is a module which is not derived from +or based on this library. If you modify this library, you may extend +this exception to your version of the library, but you are not +obligated to do so. If you do not wish to do so, delete this +exception statement from your version. +*/ + +package net.sourceforge.jnlp.security; + +import java.io.BufferedInputStream; +import java.io.File; +import java.io.FileInputStream; +import java.io.IOException; +import java.io.PrintStream; +import java.math.BigInteger; +import java.security.KeyStore; +import java.security.KeyStoreException; +import java.security.cert.Certificate; +import java.security.cert.CertificateException; +import java.security.cert.CertificateFactory; +import java.security.cert.X509Certificate; +import java.util.Random; + +import net.sourceforge.jnlp.runtime.JNLPRuntime; + +import sun.misc.BASE64Encoder; +import sun.security.provider.X509Factory; + +/** + * Common utilities to manipulate certificates. Provides methods to add + * Certificates to a KeyStores, check if certificates already exist in a + * KeyStore and printing certificates. + */ +public class CertificateUtils { + + /** + * Adds the X509Certficate in the file to the KeyStore. Note that it does + * not update the copy of the KeyStore on disk. + */ + public static final void addToKeyStore(File file, KeyStore ks) throws CertificateException, + IOException, KeyStoreException { + if (JNLPRuntime.isDebug()) { + System.out.println("Importing certificate from " + file + " into " + ks); + } + + BufferedInputStream bis = new BufferedInputStream(new FileInputStream(file)); + CertificateFactory cf = CertificateFactory.getInstance("X509"); + X509Certificate cert = null; + + try { + cert = (X509Certificate) cf.generateCertificate(bis); + } catch (ClassCastException cce) { + throw new CertificateException("Input file is not an X509 Certificate", cce); + } + + addToKeyStore(cert, ks); + } + + /** + * Adds an X509Certificate to the KeyStore. Note that it does not update the + * copy of the KeyStore on disk. + */ + public static final void addToKeyStore(X509Certificate cert, KeyStore ks) + throws KeyStoreException { + if (JNLPRuntime.isDebug()) { + System.out.println("Importing " + cert.getSubjectX500Principal().getName()); + } + + String alias = null; + + // does this certificate already exist? + alias = ks.getCertificateAlias(cert); + if (alias != null) { + return; + } + + // create a unique alias for this new certificate + Random random = new Random(); + do { + alias = new BigInteger(20, random).toString(); + } while (ks.getCertificate(alias) != null); + + ks.setCertificateEntry(alias, cert); + } + + /** + * Checks whether an X509Certificate is already in one of the keystores + * @param c the certificate + * @param keyStores the KeyStores to check in + * @return true if the certificate is present in one of the keystores, false otherwise + */ + public static final boolean inKeyStores(X509Certificate c, KeyStore[] keyStores) { + for (int i = 0; i < keyStores.length; i++) { + try { + if (keyStores[i].getCertificateAlias(c) != null) { + if (JNLPRuntime.isDebug()) { + System.out.println(c.getSubjectX500Principal().getName() + " found in cacerts"); + } + return true; + } + } catch (KeyStoreException e) { + e.printStackTrace(); + // continue + } + } + return false; + } + + /** + * Writes the certificate in base64 encoded from to the print stream. + * See http://tools.ietf.org/html/rfc4945#section-6.1 for more information + */ + public static void dump(Certificate cert, PrintStream out) throws IOException, + CertificateException { + + BASE64Encoder encoder = new BASE64Encoder(); + out.println(X509Factory.BEGIN_CERT); + encoder.encodeBuffer(cert.getEncoded(), out); + out.println(X509Factory.END_CERT); + } +} diff -r 44d47c366e5f -r e82455c47f08 netx/net/sourceforge/jnlp/security/HttpsCertVerifier.java --- a/netx/net/sourceforge/jnlp/security/HttpsCertVerifier.java Wed Nov 10 16:24:53 2010 -0500 +++ b/netx/net/sourceforge/jnlp/security/HttpsCertVerifier.java Thu Nov 11 11:43:13 2010 -0500 @@ -40,6 +40,7 @@ import static net.sourceforge.jnlp.runti import static net.sourceforge.jnlp.runtime.Translator.R; import java.io.IOException; +import java.security.KeyStore; import java.security.cert.CertPath; import java.security.cert.Certificate; import java.security.cert.CertificateException; @@ -52,7 +53,6 @@ import java.util.Collection; import java.util.Collection; import java.util.List; -import net.sourceforge.jnlp.tools.KeyTool; import sun.security.util.DerValue; import sun.security.util.HostnameChecker; import sun.security.x509.X500Name; @@ -213,8 +213,8 @@ public class HttpsCertVerifier implement public boolean getRootInCacerts() { try { - KeyTool kt = new KeyTool(); - return kt.checkCacertsForCertificate(getRoot()); + KeyStore[] caCertsKeyStores = KeyStores.getCAKeyStores(); + return CertificateUtils.inKeyStores((X509Certificate)getRoot(), caCertsKeyStores); } catch (Exception e) { } return false; diff -r 44d47c366e5f -r e82455c47f08 netx/net/sourceforge/jnlp/security/KeyStores.java --- a/netx/net/sourceforge/jnlp/security/KeyStores.java Wed Nov 10 16:24:53 2010 -0500 +++ b/netx/net/sourceforge/jnlp/security/KeyStores.java Thu Nov 11 11:43:13 2010 -0500 @@ -41,6 +41,7 @@ import java.io.FileInputStream; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; +import java.security.AllPermission; import java.security.KeyStore; import java.security.KeyStoreException; import java.security.NoSuchAlgorithmException; @@ -111,6 +112,11 @@ public final class KeyStores { * @return a KeyStore containing certificates from the appropriate */ public static final KeyStore getKeyStore(Level level, Type type, boolean create) { + SecurityManager sm = System.getSecurityManager(); + if (sm != null) { + sm.checkPermission(new AllPermission()); + } + String location = getKeyStoreLocation(level, type); KeyStore ks = null; try { @@ -181,6 +187,29 @@ public final class KeyStores { } /* User-level CA certificates */ ks = getKeyStore(Level.USER, Type.CA_CERTS); + if (ks != null) { + result.add(ks); + } + + return result.toArray(new KeyStore[result.size()]); + } + + /** + * Returns KeyStores containing trusted client certificates + * + * @return an array of KeyStore objects that can be used to check client + * authentication certificates + */ + public static KeyStore[] getClientKeyStores() { + List result = new ArrayList(); + KeyStore ks = null; + + ks = getKeyStore(Level.SYSTEM, Type.CLIENT_CERTS); + if (ks != null) { + result.add(ks); + } + + ks = getKeyStore(Level.USER, Type.CLIENT_CERTS); if (ks != null) { result.add(ks); } @@ -336,4 +365,5 @@ public final class KeyStores { return ks; } + } diff -r 44d47c366e5f -r e82455c47f08 netx/net/sourceforge/jnlp/security/VariableX509TrustManager.java --- a/netx/net/sourceforge/jnlp/security/VariableX509TrustManager.java Wed Nov 10 16:24:53 2010 -0500 +++ b/netx/net/sourceforge/jnlp/security/VariableX509TrustManager.java Thu Nov 11 11:43:13 2010 -0500 @@ -42,6 +42,8 @@ import java.security.cert.CertificateExc import java.security.cert.CertificateException; import java.security.cert.X509Certificate; import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; import javax.net.ssl.TrustManager; import javax.net.ssl.TrustManagerFactory; @@ -60,59 +62,98 @@ import net.sourceforge.jnlp.security.Sec * different certificates that are not in the keystore. */ -public class VariableX509TrustManager extends X509ExtendedTrustManager { +final public class VariableX509TrustManager extends X509ExtendedTrustManager { - KeyStore userKeyStore = null; - KeyStore caKeyStore = null; + /** TrustManagers containing trusted CAs */ + private X509TrustManager[] caTrustManagers = null; - X509TrustManager userTrustManager = null; - X509TrustManager caTrustManager = null; + /** TrustManagers containing trusted certificates */ + private X509TrustManager[] certTrustManagers = null; - ArrayList temporarilyTrusted = new ArrayList(); - ArrayList temporarilyUntrusted = new ArrayList(); + /** TrustManagers containing trusted client certificates */ + private X509TrustManager[] clientTrustManagers = null; - static VariableX509TrustManager instance = null; + private ArrayList temporarilyTrusted = new ArrayList(); + private ArrayList temporarilyUntrusted = new ArrayList(); + + private static VariableX509TrustManager instance = null; /** * Constructor initializes the system, user and custom stores */ public VariableX509TrustManager() { + /* + * Load TrustManagers for trusted certificates + */ try { - userKeyStore = SecurityUtil.getUserKeyStore(); From omajid at redhat.com Thu Nov 11 08:47:09 2010 From: omajid at redhat.com (Omair Majid) Date: Thu, 11 Nov 2010 11:47:09 -0500 Subject: [icedtea-web] RFC: integrate support for multiple KeyStores into the various validators In-Reply-To: <20101111161016.GF6888@redhat.com> References: <4CDB1BFB.5030704@redhat.com> <20101111134226.GA6888@redhat.com> <4CDC035A.605@redhat.com> <20101111150255.GD6888@redhat.com> <4CDC0E15.1000009@redhat.com> <20101111154220.GE6888@redhat.com> <4CDC14CE.5070705@redhat.com> <20101111161016.GF6888@redhat.com> Message-ID: <4CDC1E0D.5040600@redhat.com> On 11/11/2010 11:10 AM, Deepak Bhole wrote: > * Omair Majid [2010-11-11 11:07]: >> On 11/11/2010 10:42 AM, Deepak Bhole wrote: >>> * Omair Majid [2010-11-11 10:39]: >>>> On 11/11/2010 10:02 AM, Deepak Bhole wrote: >>>>> * Omair Majid [2010-11-11 09:53]: >>>>>> On 11/11/2010 08:42 AM, Deepak Bhole wrote: >>>>>> >>>>> ... >>>>>> I based this code off code in KeyTool, and yes, it is slightly >>>>>> confusing. A KeyStore can be considered a HashMap: it maps a String, >>>>>> the alias, to a Certificate. The code first checks if the >>>>>> certificate already exists by trying to find an alias for the given >>>>>> certificate. If an alias is found, we know the certificate is in the >>>>>> KeyStore already. If the certificate is not in the KeyStore, we want >>>>>> to add a new entry to the HashMap, but we do not want to overwrite >>>>>> an existing certificate. So we create random aliases until we get an >>>>>> alias which has no mapping in the HashMap. >>>>>> >>>>> >>>>> >>>>> Ah okay then. >>>>> >>>>>>> Also, those methods should not be public static as untrusted apps could >>>>>>> access them. The keystores shouldn't be either (if they are, either now >>>>>>> or from before). >>>>>>> >>>>>> >>>>>> I dont think this will be a problem. For one, every time it is >>>>>> called, it reads the configuration (which untrusted apps are not >>>>>> allowed to do) and then it reads the keystore from the disk (which >>>>>> untrusted apps are not allowed to do). Making it non-public would >>>>>> mean it can not be used by classes in other packages (for example, >>>>>> JarSigner is in net.sourceforge.jnlp.tools and it uses this class). >>>>>> Please let me know if this is not enough; I will see what else I can >>>>>> do. >>>>>> >>>>> >>>>> Reliance on other methods to do security is bad imo. There is no >>>>> guarantee that the design will stay the same, If it changes and another >>>>> way to do those functions is implemented, security may be compromised. >>>>> It is fine to keep them public for other class usage, but please add an >>>>> AllPermission check in that case. >>>>> >>>> >>>> That's true. On further consideration, I dont think any methods in >>>> CertificateUtils need security checks though. They all operate on >>>> generic Certificate or KeyStore objects. There is nothing here that >>>> is netx specific or that an untrusted application could not do by >>>> itself. The actual action of obtaining the netx-specific KeyStores >>>> to operate on is the responsibility of KeyStores (see comment below >>>> for more about that). Do you think I should add checks anyway? >>>> >>> >>> Ah okay. Nope, in that case no security checks are needed for those >>> functions! >>> >>>>>>>> + /** >>>>>>>> + * Checks whether an X509Certificate is already in one of the keystores >>>>>>>> + * @param c the certificate >>>>>>>> + * @param keyStores the KeyStores to check in >>>>>>>> + * @return true if the certificate is present in one of the keystores, false otherwise >>>>>>>> + */ >>>>>>>> + public static final boolean inKeyStores(X509Certificate c, KeyStore[] keyStores) { >>>>>>>> + for (int i = 0; i< keyStores.length; i++) { >>>>> ... >>>>>>> >>>>>>> >>>>>>> What does printRfc represent? And if it's always true, why the else? >>>>>>> >>>>>> >>>>>> This code was originally from net.sourceforge.jnlp.tools.KeyTool and >>>>>> was moved over to CertificateUtils. n.s.j.t.KeyTool was adapted from >>>>>> sun.security.tools.KeyTool which allows dumping certificate in more >>>>>> than one format. printRfc indicates that the certifcate should be >>>>>> dumped in the RFC 4945 format >>>>>> (http://tools.ietf.org/html/rfc4945#section-6.1). Since this is the >>>>>> only option we support, I have removed that if condition; it is >>>>>> fixed in the updated patch. >>>>>> >>>>> >>>>> Great! >>>>> >>>>> ... >>>>> ... >>>>>>> >>>>>>> Should something like this be public static? Untrusted apps will be able >>>>>>> to access it and modify it... >>>>>>> >>>>>> >>>>>> I dont think this is a problem. getClientKeyStores() calls >>>>>> getKeyStore() which reads the configuration (which untrusted apps >>>>>> are not allowed to do) and then reads the acutal keystore from disk >>>>>> (which untrusted apps are again not allowed to do). So I dont think >>>>>> untrusted apps can actually get access to these keystores. If >>>>>> untrusted apps call getClientKeyStores (or the related methods >>>>>> getCAKeyStores or getCertKeyStores), they should get a >>>>>> SecurityException from DeploymentConfiguration. >>>>>> >>>>>> A KeyStore is an in-memory version of a keystore file on disk. Even >>>>>> if untrusted apps were somehow able to access it, saving the >>>>>> contents to disk would require permissions to write to disk. >>>>>> >>>>> >>>>> Same as with above. An AllPermission check in that case.. >>>>> >>>> >>>> Yes, that's a good point. Thanks for pointing it out. I have added >>>> an AllPermission check in getKeyStore(Level,Type,boolean) which >>>> almost all public methods end up calling to access the KeyStores. >>>> The only public methods that dont call this check are >>>> getKeyStoreLocation (which is supposed to query the configuration >>>> object) and toTranslatableString and toDisplayableString (which are >>>> translation methods). Do you see any problems with this scheme? >>>> >>> >>> Translation methods don't need a check. But getKeyStoreLocation... can >>> that me made to return a location in user.home/* ? If so, it provides >>> access to user.home indirectly and needs a check. >>> >> >> getKeyStoreLocation is essentially a wrapper around >> JNLPRuntime.getConfiguration().getProperty(String). The only thing >> it does is find the appropriate String argument to use with >> getProperty(String). As such, I think it is OK in this one case to >> trust security to DeploymentConfiguration. But if you want, I can >> add a check here anyway. >> > > Nope, not necessary in that case. Just wanted to make sure user.home was > protected. > > > Okay I have no other issues with the patch. Ok for HEAD. > Thanks for the extensive reviews! I have pushed the change. Cheers, Omair From dbhole at redhat.com Thu Nov 11 12:10:54 2010 From: dbhole at redhat.com (Deepak Bhole) Date: Thu, 11 Nov 2010 15:10:54 -0500 Subject: [1.9] RFC: Allow NetX to be disabled In-Reply-To: <20101111155628.GD9134@rivendell.middle-earth.co.uk> References: <20101111140709.GA9134@rivendell.middle-earth.co.uk> <20101111141800.GB9134@rivendell.middle-earth.co.uk> <20101111144925.GC6888@redhat.com> <20101111151258.GC9134@rivendell.middle-earth.co.uk> <20101111155628.GD9134@rivendell.middle-earth.co.uk> Message-ID: <20101111201053.GC3282@redhat.com> * Dr Andrew John Hughes [2010-11-11 10:56]: > On 15:12 Thu 11 Nov , Dr Andrew John Hughes wrote: > > On 09:49 Thu 11 Nov , Deepak Bhole wrote: > > > * Dr Andrew John Hughes [2010-11-11 09:21]: > > > > > +]) > > > > > > > > New version; turns out I missed the -debug target... :-( > > > > > > Just tried building with --disable-webstart. The classes are not built, > > > however javaws still is. javaws shouldn't get built with > > > --disable-webstart as it'd be unusable without the classes. > > > > > > > Yeah just spotted that; it's because it's added by netx.patch and produced > > by the OpenJDK build, not our makefiles. Testing a new version. > > > > > Cheers, > > > Deepak > > > > -- > > Andrew :) > > > > Free Java Software Engineer > > Red Hat, Inc. (http://www.redhat.com) > > > > Support Free Java! > > Contribute to GNU Classpath and the OpenJDK > > http://www.gnu.org/software/classpath > > http://openjdk.java.net > > PGP Key: 94EFD9D8 (http://subkeys.pgp.net) > > Fingerprint = F8EF F1EA 401E 2E60 15FA 7927 142C 2591 94EF D9D8 > > New version attached. Built it with and without webstart. Without webstart is as expected now -- no related files/classes. With webstart enabled, javaws builds and works. I was unable to configure+make by just reconfiguring without the --disable-webstart.... make ran into error with missing classes and what not. It worked fine after a make clean though. Is this expected? Cheers, Deepak > -- > Andrew :) > > Free Java Software Engineer > Red Hat, Inc. (http://www.redhat.com) > > Support Free Java! > Contribute to GNU Classpath and the OpenJDK > http://www.gnu.org/software/classpath > http://openjdk.java.net > PGP Key: 94EFD9D8 (http://subkeys.pgp.net) > Fingerprint = F8EF F1EA 401E 2E60 15FA 7927 142C 2591 94EF D9D8 > diff -r 17c34c4c6fae Makefile.am > --- a/Makefile.am Wed Nov 10 16:30:08 2010 +0000 > +++ b/Makefile.am Thu Nov 11 15:55:47 2010 +0000 > @@ -288,8 +288,6 @@ > patches/icedtea-policy-evaluation.patch \ > patches/hotspot/$(HSBUILD)/update-bootclasspath.patch \ > patches/libpng.patch \ > - patches/extensions/netx.patch \ > - patches/extensions/netx-umask.patch \ > patches/icedtea-jtreg-httpTest.patch \ > patches/arm.patch \ > patches/openjdk/6678385-window_movement_crasher.patch \ > @@ -339,6 +337,12 @@ > patches/icedtea-rhino.patch > endif > > +if ENABLE_NETX > +ICEDTEA_PATCHES += \ > + patches/extensions/netx.patch \ > + patches/extensions/netx-umask.patch > +endif > + > if ENABLE_PLUGIN > ICEDTEA_PATCHES += \ > patches/extensions/liveconnect.patch > @@ -579,7 +583,7 @@ > clean-icedtea-against-icedtea clean-icedtea-debug-against-icedtea \ > clean-icedtea-against-ecj clean-extract-ecj clean-generated clean-replace-hotspot \ > clean-rewriter clean-rewrite-rhino clean-extra clean-rt clean-bootstrap-directory \ > - clean-bootstrap-directory-ecj clean-bootstrap-directory-symlink \ > + clean-bootstrap-directory-ecj clean-bootstrap-directory-symlink clean-about \ > clean-bootstrap-directory-symlink-ecj > if [ -e bootstrap ]; then \ > rmdir bootstrap ; \ > @@ -613,7 +617,7 @@ > clean-ports clean-overlay clean-extract-ecj clean-extract clean-extract-openjdk \ > clean-replace-hotspot clean-generated clean-download clean-hgforest clean-download-openjdk \ > clean-rewriter clean-rewrite-rhino clean-add-netx clean-add-netx-debug \ > - clean-add-plugin clean-add-plugin-debug > + clean-add-plugin clean-add-plugin-debug clean-about > > env: > @echo 'unset JAVA_HOME' > @@ -1469,7 +1473,8 @@ > rm -f $(DEBUG_BUILD_OUTPUT_DIR)/j2re-image/lib/plugin.jar > rm -f stamps/add-plugin-debug.stamp > > -stamps/add-netx.stamp: stamps/netx-dist.stamp extra-lib/about.jar > +stamps/add-netx.stamp: stamps/netx-dist.stamp stamps/about.stamp > +if ENABLE_NETX > cp -pPRf $(abs_top_builddir)/netx.build/lib/classes.jar \ > $(BUILD_OUTPUT_DIR)/j2sdk-image/jre/lib/netx.jar > cp -pPRf $(abs_top_builddir)/netx.build/lib/classes.jar \ > @@ -1486,6 +1491,7 @@ > cp $(NETX_SRCDIR)/javaws.1 \ > $(BUILD_OUTPUT_DIR)/j2re-image/man/man1 ; \ > fi > +endif > touch stamps/add-netx.stamp > > clean-add-netx: > @@ -1499,7 +1505,8 @@ > rm -f $(BUILD_OUTPUT_DIR)/j2re-image/man/man1/javaws.1 > rm -f stamps/add-netx.stamp > > -stamps/add-netx-debug.stamp: stamps/netx-dist.stamp extra-lib/about.jar > +stamps/add-netx-debug.stamp: stamps/netx-dist.stamp stamps/about.stamp > +if ENABLE_NETX > cp -pPRf $(abs_top_builddir)/netx.build/lib/classes.jar \ > $(DEBUG_BUILD_OUTPUT_DIR)/j2sdk-image/jre/lib/netx.jar > cp -pPRf $(abs_top_builddir)/netx.build/lib/classes.jar \ > @@ -1516,6 +1523,7 @@ > cp $(NETX_SRCDIR)/javaws.1 \ > $(DEBUG_BUILD_OUTPUT_DIR)/j2re-image/man/man1 ; \ > fi > +endif > touch stamps/add-netx-debug.stamp > > clean-add-netx-debug: > @@ -1693,6 +1701,7 @@ > find $(NETX_SRCDIR) -name '*.java' | sort > $@ > > stamps/netx.stamp: netx-source-files.txt stamps/rt-class-files.stamp > +if ENABLE_NETX > mkdir -p $(abs_top_builddir)/netx.build > $(BOOT_DIR)/bin/javac $(IT_JAVACFLAGS) \ > -d $(abs_top_builddir)/netx.build \ > @@ -1700,10 +1709,12 @@ > -classpath $(RUNTIME) -bootclasspath \'\' \ > @netx-source-files.txt > cp -r $(NETX_RESOURCE_DIR) $(abs_top_builddir)/netx.build/net/sourceforge/jnlp > +endif > mkdir -p stamps > touch $@ > > stamps/netx-dist.stamp: stamps/netx.stamp > +if ENABLE_NETX > (cd $(abs_top_builddir)/netx.build ; \ > mkdir -p lib ; \ > $(BOOT_DIR)/bin/jar cf lib/classes.jar javax/jnlp net ; \ > @@ -1713,6 +1724,7 @@ > $(BOOT_DIR)/bin/jar uf $(abs_top_builddir)/netx.build/lib/classes.jar \ > `find . -type f -not -name '*.java'` ; \ > $(ZIP) -qr $(abs_top_builddir)/netx.build/lib/src.zip javax net ) > +endif > mkdir -p stamps > touch $@ > > @@ -1728,11 +1740,13 @@ > > stamps/extra-class-files.stamp: $(INITIAL_BOOTSTRAP_LINK_STAMP) \ > extra-source-files.txt stamps/netx.stamp > +if ENABLE_NETX > mkdir -p extra-lib > $(BOOT_DIR)/bin/javac $(IT_JAVACFLAGS) -d extra-lib \ > -sourcepath extra -cp netx.build \ > -bootclasspath $(RUNTIME) @extra-source-files.txt > cp -r $(NETX_EXTRA_DIR) extra-lib/net/sourceforge/jnlp/about > +endif > mkdir -p stamps > touch $@ > > @@ -1741,8 +1755,16 @@ > rm -f stamps/extra-class-files.stamp > rm -f extra-source-files.txt > > -extra-lib/about.jar: stamps/extra-class-files.stamp > - $(BOOT_DIR)/bin/jar cf $@ -C extra-lib net ; > +stamps/about.stamp: stamps/extra-class-files.stamp > +if ENABLE_NETX > + $(BOOT_DIR)/bin/jar cf extra-lib/about.jar -C extra-lib net > +endif > + mkdir -p stamps > + touch $@ > + > +clean-about: > + rm -f extra-lib/about.jar > + rm -f stamps/about.stamp > > # PulseAudio based mixer > # (pulse-java) > diff -r 17c34c4c6fae acinclude.m4 > --- a/acinclude.m4 Wed Nov 10 16:30:08 2010 +0000 > +++ b/acinclude.m4 Thu Nov 11 15:55:47 2010 +0000 > @@ -1459,12 +1459,17 @@ > > AC_DEFUN_ONCE([IT_CHECK_PLUGIN], > [ > +AC_REQUIRE([IT_CHECK_NETX]) > AC_MSG_CHECKING([whether to build the browser plugin]) > AC_ARG_ENABLE([plugin], > [AS_HELP_STRING([--disable-plugin], > [Disable compilation of browser plugin])], > [enable_plugin="${enableval}"], [enable_plugin="yes"]) > AC_MSG_RESULT(${enable_plugin}) > +if test "x${enable_netx}" = "xno" ; then > + AC_MSG_WARN([Plugin can not be built without NetX; disabling plugin]) > + enable_plugin=no; > +fi > ]) > > AC_DEFUN_ONCE([IT_CHECK_PLUGIN_DEPENDENCIES], > @@ -1556,3 +1561,14 @@ > AM_CONDITIONAL([HAS_PAX], test x"${it_cv_pax}" = "xyes") > AC_PROVIDE([$0])dnl > ]) > + > +AC_DEFUN_ONCE([IT_CHECK_NETX], > +[ > +AC_MSG_CHECKING([whether to build NetX]) > +AC_ARG_ENABLE([webstart], > + [AS_HELP_STRING([--disable-webstart], > + [Disable compilation of Web Start support])], > + [enable_netx="${enableval}"], [enable_netx="yes"]) > +AC_MSG_RESULT(${enable_netx}) > +AM_CONDITIONAL(ENABLE_NETX, test "x${enable_netx}" = "xyes") > +]) From ahughes at redhat.com Thu Nov 11 13:10:37 2010 From: ahughes at redhat.com (Dr Andrew John Hughes) Date: Thu, 11 Nov 2010 21:10:37 +0000 Subject: [1.9] RFC: Allow NetX to be disabled In-Reply-To: <20101111201053.GC3282@redhat.com> References: <20101111140709.GA9134@rivendell.middle-earth.co.uk> <20101111141800.GB9134@rivendell.middle-earth.co.uk> <20101111144925.GC6888@redhat.com> <20101111151258.GC9134@rivendell.middle-earth.co.uk> <20101111155628.GD9134@rivendell.middle-earth.co.uk> <20101111201053.GC3282@redhat.com> Message-ID: <20101111211037.GA5773@rivendell.middle-earth.co.uk> On 15:10 Thu 11 Nov , Deepak Bhole wrote: > * Dr Andrew John Hughes [2010-11-11 10:56]: > > On 15:12 Thu 11 Nov , Dr Andrew John Hughes wrote: > > > On 09:49 Thu 11 Nov , Deepak Bhole wrote: > > > > * Dr Andrew John Hughes [2010-11-11 09:21]: > > > > > > +]) > > > > > > > > > > New version; turns out I missed the -debug target... :-( > > > > > > > > Just tried building with --disable-webstart. The classes are not built, > > > > however javaws still is. javaws shouldn't get built with > > > > --disable-webstart as it'd be unusable without the classes. > > > > > > > > > > Yeah just spotted that; it's because it's added by netx.patch and produced > > > by the OpenJDK build, not our makefiles. Testing a new version. > > > > > > > Cheers, > > > > Deepak > > > > > > -- > > > Andrew :) > > > > > > Free Java Software Engineer > > > Red Hat, Inc. (http://www.redhat.com) > > > > > > Support Free Java! > > > Contribute to GNU Classpath and the OpenJDK > > > http://www.gnu.org/software/classpath > > > http://openjdk.java.net > > > PGP Key: 94EFD9D8 (http://subkeys.pgp.net) > > > Fingerprint = F8EF F1EA 401E 2E60 15FA 7927 142C 2591 94EF D9D8 > > > > New version attached. > > Built it with and without webstart. Without webstart is as expected now > -- no related files/classes. With webstart enabled, javaws builds and > works. > Good. > I was unable to configure+make by just reconfiguring without the > --disable-webstart.... make ran into error with missing classes and what > not. It worked fine after a make clean though. Is this expected? > Not sure. Can you provide more details on exactly what you tried? > Cheers, > Deepak > > > -- > > Andrew :) > > > > Free Java Software Engineer > > Red Hat, Inc. (http://www.redhat.com) > > > > Support Free Java! > > Contribute to GNU Classpath and the OpenJDK > > http://www.gnu.org/software/classpath > > http://openjdk.java.net > > PGP Key: 94EFD9D8 (http://subkeys.pgp.net) > > Fingerprint = F8EF F1EA 401E 2E60 15FA 7927 142C 2591 94EF D9D8 > > > diff -r 17c34c4c6fae Makefile.am > > --- a/Makefile.am Wed Nov 10 16:30:08 2010 +0000 > > +++ b/Makefile.am Thu Nov 11 15:55:47 2010 +0000 > > @@ -288,8 +288,6 @@ > > patches/icedtea-policy-evaluation.patch \ > > patches/hotspot/$(HSBUILD)/update-bootclasspath.patch \ > > patches/libpng.patch \ > > - patches/extensions/netx.patch \ > > - patches/extensions/netx-umask.patch \ > > patches/icedtea-jtreg-httpTest.patch \ > > patches/arm.patch \ > > patches/openjdk/6678385-window_movement_crasher.patch \ > > @@ -339,6 +337,12 @@ > > patches/icedtea-rhino.patch > > endif > > > > +if ENABLE_NETX > > +ICEDTEA_PATCHES += \ > > + patches/extensions/netx.patch \ > > + patches/extensions/netx-umask.patch > > +endif > > + > > if ENABLE_PLUGIN > > ICEDTEA_PATCHES += \ > > patches/extensions/liveconnect.patch > > @@ -579,7 +583,7 @@ > > clean-icedtea-against-icedtea clean-icedtea-debug-against-icedtea \ > > clean-icedtea-against-ecj clean-extract-ecj clean-generated clean-replace-hotspot \ > > clean-rewriter clean-rewrite-rhino clean-extra clean-rt clean-bootstrap-directory \ > > - clean-bootstrap-directory-ecj clean-bootstrap-directory-symlink \ > > + clean-bootstrap-directory-ecj clean-bootstrap-directory-symlink clean-about \ > > clean-bootstrap-directory-symlink-ecj > > if [ -e bootstrap ]; then \ > > rmdir bootstrap ; \ > > @@ -613,7 +617,7 @@ > > clean-ports clean-overlay clean-extract-ecj clean-extract clean-extract-openjdk \ > > clean-replace-hotspot clean-generated clean-download clean-hgforest clean-download-openjdk \ > > clean-rewriter clean-rewrite-rhino clean-add-netx clean-add-netx-debug \ > > - clean-add-plugin clean-add-plugin-debug > > + clean-add-plugin clean-add-plugin-debug clean-about > > > > env: > > @echo 'unset JAVA_HOME' > > @@ -1469,7 +1473,8 @@ > > rm -f $(DEBUG_BUILD_OUTPUT_DIR)/j2re-image/lib/plugin.jar > > rm -f stamps/add-plugin-debug.stamp > > > > -stamps/add-netx.stamp: stamps/netx-dist.stamp extra-lib/about.jar > > +stamps/add-netx.stamp: stamps/netx-dist.stamp stamps/about.stamp > > +if ENABLE_NETX > > cp -pPRf $(abs_top_builddir)/netx.build/lib/classes.jar \ > > $(BUILD_OUTPUT_DIR)/j2sdk-image/jre/lib/netx.jar > > cp -pPRf $(abs_top_builddir)/netx.build/lib/classes.jar \ > > @@ -1486,6 +1491,7 @@ > > cp $(NETX_SRCDIR)/javaws.1 \ > > $(BUILD_OUTPUT_DIR)/j2re-image/man/man1 ; \ > > fi > > +endif > > touch stamps/add-netx.stamp > > > > clean-add-netx: > > @@ -1499,7 +1505,8 @@ > > rm -f $(BUILD_OUTPUT_DIR)/j2re-image/man/man1/javaws.1 > > rm -f stamps/add-netx.stamp > > > > -stamps/add-netx-debug.stamp: stamps/netx-dist.stamp extra-lib/about.jar > > +stamps/add-netx-debug.stamp: stamps/netx-dist.stamp stamps/about.stamp > > +if ENABLE_NETX > > cp -pPRf $(abs_top_builddir)/netx.build/lib/classes.jar \ > > $(DEBUG_BUILD_OUTPUT_DIR)/j2sdk-image/jre/lib/netx.jar > > cp -pPRf $(abs_top_builddir)/netx.build/lib/classes.jar \ > > @@ -1516,6 +1523,7 @@ > > cp $(NETX_SRCDIR)/javaws.1 \ > > $(DEBUG_BUILD_OUTPUT_DIR)/j2re-image/man/man1 ; \ > > fi > > +endif > > touch stamps/add-netx-debug.stamp > > > > clean-add-netx-debug: > > @@ -1693,6 +1701,7 @@ > > find $(NETX_SRCDIR) -name '*.java' | sort > $@ > > > > stamps/netx.stamp: netx-source-files.txt stamps/rt-class-files.stamp > > +if ENABLE_NETX > > mkdir -p $(abs_top_builddir)/netx.build > > $(BOOT_DIR)/bin/javac $(IT_JAVACFLAGS) \ > > -d $(abs_top_builddir)/netx.build \ > > @@ -1700,10 +1709,12 @@ > > -classpath $(RUNTIME) -bootclasspath \'\' \ > > @netx-source-files.txt > > cp -r $(NETX_RESOURCE_DIR) $(abs_top_builddir)/netx.build/net/sourceforge/jnlp > > +endif > > mkdir -p stamps > > touch $@ > > > > stamps/netx-dist.stamp: stamps/netx.stamp > > +if ENABLE_NETX > > (cd $(abs_top_builddir)/netx.build ; \ > > mkdir -p lib ; \ > > $(BOOT_DIR)/bin/jar cf lib/classes.jar javax/jnlp net ; \ > > @@ -1713,6 +1724,7 @@ > > $(BOOT_DIR)/bin/jar uf $(abs_top_builddir)/netx.build/lib/classes.jar \ > > `find . -type f -not -name '*.java'` ; \ > > $(ZIP) -qr $(abs_top_builddir)/netx.build/lib/src.zip javax net ) > > +endif > > mkdir -p stamps > > touch $@ > > > > @@ -1728,11 +1740,13 @@ > > > > stamps/extra-class-files.stamp: $(INITIAL_BOOTSTRAP_LINK_STAMP) \ > > extra-source-files.txt stamps/netx.stamp > > +if ENABLE_NETX > > mkdir -p extra-lib > > $(BOOT_DIR)/bin/javac $(IT_JAVACFLAGS) -d extra-lib \ > > -sourcepath extra -cp netx.build \ > > -bootclasspath $(RUNTIME) @extra-source-files.txt > > cp -r $(NETX_EXTRA_DIR) extra-lib/net/sourceforge/jnlp/about > > +endif > > mkdir -p stamps > > touch $@ > > > > @@ -1741,8 +1755,16 @@ > > rm -f stamps/extra-class-files.stamp > > rm -f extra-source-files.txt > > > > -extra-lib/about.jar: stamps/extra-class-files.stamp > > - $(BOOT_DIR)/bin/jar cf $@ -C extra-lib net ; > > +stamps/about.stamp: stamps/extra-class-files.stamp > > +if ENABLE_NETX > > + $(BOOT_DIR)/bin/jar cf extra-lib/about.jar -C extra-lib net > > +endif > > + mkdir -p stamps > > + touch $@ > > + > > +clean-about: > > + rm -f extra-lib/about.jar > > + rm -f stamps/about.stamp > > > > # PulseAudio based mixer > > # (pulse-java) > > diff -r 17c34c4c6fae acinclude.m4 > > --- a/acinclude.m4 Wed Nov 10 16:30:08 2010 +0000 > > +++ b/acinclude.m4 Thu Nov 11 15:55:47 2010 +0000 > > @@ -1459,12 +1459,17 @@ > > > > AC_DEFUN_ONCE([IT_CHECK_PLUGIN], > > [ > > +AC_REQUIRE([IT_CHECK_NETX]) > > AC_MSG_CHECKING([whether to build the browser plugin]) > > AC_ARG_ENABLE([plugin], > > [AS_HELP_STRING([--disable-plugin], > > [Disable compilation of browser plugin])], > > [enable_plugin="${enableval}"], [enable_plugin="yes"]) > > AC_MSG_RESULT(${enable_plugin}) > > +if test "x${enable_netx}" = "xno" ; then > > + AC_MSG_WARN([Plugin can not be built without NetX; disabling plugin]) > > + enable_plugin=no; > > +fi > > ]) > > > > AC_DEFUN_ONCE([IT_CHECK_PLUGIN_DEPENDENCIES], > > @@ -1556,3 +1561,14 @@ > > AM_CONDITIONAL([HAS_PAX], test x"${it_cv_pax}" = "xyes") > > AC_PROVIDE([$0])dnl > > ]) > > + > > +AC_DEFUN_ONCE([IT_CHECK_NETX], > > +[ > > +AC_MSG_CHECKING([whether to build NetX]) > > +AC_ARG_ENABLE([webstart], > > + [AS_HELP_STRING([--disable-webstart], > > + [Disable compilation of Web Start support])], > > + [enable_netx="${enableval}"], [enable_netx="yes"]) > > +AC_MSG_RESULT(${enable_netx}) > > +AM_CONDITIONAL(ENABLE_NETX, test "x${enable_netx}" = "xyes") > > +]) > -- Andrew :) Free Java Software Engineer Red Hat, Inc. (http://www.redhat.com) Support Free Java! Contribute to GNU Classpath and the OpenJDK http://www.gnu.org/software/classpath http://openjdk.java.net PGP Key: 94EFD9D8 (http://subkeys.pgp.net) Fingerprint = F8EF F1EA 401E 2E60 15FA 7927 142C 2591 94EF D9D8 From dbhole at redhat.com Thu Nov 11 13:13:43 2010 From: dbhole at redhat.com (Deepak Bhole) Date: Thu, 11 Nov 2010 16:13:43 -0500 Subject: [1.9] RFC: Allow NetX to be disabled In-Reply-To: <20101111211037.GA5773@rivendell.middle-earth.co.uk> References: <20101111140709.GA9134@rivendell.middle-earth.co.uk> <20101111141800.GB9134@rivendell.middle-earth.co.uk> <20101111144925.GC6888@redhat.com> <20101111151258.GC9134@rivendell.middle-earth.co.uk> <20101111155628.GD9134@rivendell.middle-earth.co.uk> <20101111201053.GC3282@redhat.com> <20101111211037.GA5773@rivendell.middle-earth.co.uk> Message-ID: <20101111211343.GA3047@redhat.com> * Dr Andrew John Hughes [2010-11-11 16:10]: > On 15:10 Thu 11 Nov , Deepak Bhole wrote: > > * Dr Andrew John Hughes [2010-11-11 10:56]: > > > On 15:12 Thu 11 Nov , Dr Andrew John Hughes wrote: > > > > On 09:49 Thu 11 Nov , Deepak Bhole wrote: > > > > > * Dr Andrew John Hughes [2010-11-11 09:21]: > > > > > > > +]) > > > > > > > > > > > > New version; turns out I missed the -debug target... :-( > > > > > > > > > > Just tried building with --disable-webstart. The classes are not built, > > > > > however javaws still is. javaws shouldn't get built with > > > > > --disable-webstart as it'd be unusable without the classes. > > > > > > > > > > > > > Yeah just spotted that; it's because it's added by netx.patch and produced > > > > by the OpenJDK build, not our makefiles. Testing a new version. > > > > > > > > > Cheers, > > > > > Deepak > > > > > > > > -- > > > > Andrew :) > > > > > > > > Free Java Software Engineer > > > > Red Hat, Inc. (http://www.redhat.com) > > > > > > > > Support Free Java! > > > > Contribute to GNU Classpath and the OpenJDK > > > > http://www.gnu.org/software/classpath > > > > http://openjdk.java.net > > > > PGP Key: 94EFD9D8 (http://subkeys.pgp.net) > > > > Fingerprint = F8EF F1EA 401E 2E60 15FA 7927 142C 2591 94EF D9D8 > > > > > > New version attached. > > > > Built it with and without webstart. Without webstart is as expected now > > -- no related files/classes. With webstart enabled, javaws builds and > > works. > > > > Good. > > > I was unable to configure+make by just reconfiguring without the > > --disable-webstart.... make ran into error with missing classes and what > > not. It worked fine after a make clean though. Is this expected? > > > > Not sure. Can you provide more details on exactly what you tried? > I hg up -C'd, applied the patch. Then: ./autogen.sh [.../]configure --disable-docs --with-openjdk --with-parallel-jobs=4 --disable-webstart make Things built fine, nothing from webstart in build tree. Then, from the same dir, I did: [.../]configure --disable-docs --with-openjdk --with-parallel-jobs=4 make It tried to build it and failed due to a bunch of classes not being found. Deepak > > Cheers, > > Deepak > > > > > -- > > > Andrew :) > > > > > > Free Java Software Engineer > > > Red Hat, Inc. (http://www.redhat.com) > > > > > > Support Free Java! > > > Contribute to GNU Classpath and the OpenJDK > > > http://www.gnu.org/software/classpath > > > http://openjdk.java.net > > > PGP Key: 94EFD9D8 (http://subkeys.pgp.net) > > > Fingerprint = F8EF F1EA 401E 2E60 15FA 7927 142C 2591 94EF D9D8 > > > > > diff -r 17c34c4c6fae Makefile.am > > > --- a/Makefile.am Wed Nov 10 16:30:08 2010 +0000 > > > +++ b/Makefile.am Thu Nov 11 15:55:47 2010 +0000 > > > @@ -288,8 +288,6 @@ > > > patches/icedtea-policy-evaluation.patch \ > > > patches/hotspot/$(HSBUILD)/update-bootclasspath.patch \ > > > patches/libpng.patch \ > > > - patches/extensions/netx.patch \ > > > - patches/extensions/netx-umask.patch \ > > > patches/icedtea-jtreg-httpTest.patch \ > > > patches/arm.patch \ > > > patches/openjdk/6678385-window_movement_crasher.patch \ > > > @@ -339,6 +337,12 @@ > > > patches/icedtea-rhino.patch > > > endif > > > > > > +if ENABLE_NETX > > > +ICEDTEA_PATCHES += \ > > > + patches/extensions/netx.patch \ > > > + patches/extensions/netx-umask.patch > > > +endif > > > + > > > if ENABLE_PLUGIN > > > ICEDTEA_PATCHES += \ > > > patches/extensions/liveconnect.patch > > > @@ -579,7 +583,7 @@ > > > clean-icedtea-against-icedtea clean-icedtea-debug-against-icedtea \ > > > clean-icedtea-against-ecj clean-extract-ecj clean-generated clean-replace-hotspot \ > > > clean-rewriter clean-rewrite-rhino clean-extra clean-rt clean-bootstrap-directory \ > > > - clean-bootstrap-directory-ecj clean-bootstrap-directory-symlink \ > > > + clean-bootstrap-directory-ecj clean-bootstrap-directory-symlink clean-about \ > > > clean-bootstrap-directory-symlink-ecj > > > if [ -e bootstrap ]; then \ > > > rmdir bootstrap ; \ > > > @@ -613,7 +617,7 @@ > > > clean-ports clean-overlay clean-extract-ecj clean-extract clean-extract-openjdk \ > > > clean-replace-hotspot clean-generated clean-download clean-hgforest clean-download-openjdk \ > > > clean-rewriter clean-rewrite-rhino clean-add-netx clean-add-netx-debug \ > > > - clean-add-plugin clean-add-plugin-debug > > > + clean-add-plugin clean-add-plugin-debug clean-about > > > > > > env: > > > @echo 'unset JAVA_HOME' > > > @@ -1469,7 +1473,8 @@ > > > rm -f $(DEBUG_BUILD_OUTPUT_DIR)/j2re-image/lib/plugin.jar > > > rm -f stamps/add-plugin-debug.stamp > > > > > > -stamps/add-netx.stamp: stamps/netx-dist.stamp extra-lib/about.jar > > > +stamps/add-netx.stamp: stamps/netx-dist.stamp stamps/about.stamp > > > +if ENABLE_NETX > > > cp -pPRf $(abs_top_builddir)/netx.build/lib/classes.jar \ > > > $(BUILD_OUTPUT_DIR)/j2sdk-image/jre/lib/netx.jar > > > cp -pPRf $(abs_top_builddir)/netx.build/lib/classes.jar \ > > > @@ -1486,6 +1491,7 @@ > > > cp $(NETX_SRCDIR)/javaws.1 \ > > > $(BUILD_OUTPUT_DIR)/j2re-image/man/man1 ; \ > > > fi > > > +endif > > > touch stamps/add-netx.stamp > > > > > > clean-add-netx: > > > @@ -1499,7 +1505,8 @@ > > > rm -f $(BUILD_OUTPUT_DIR)/j2re-image/man/man1/javaws.1 > > > rm -f stamps/add-netx.stamp > > > > > > -stamps/add-netx-debug.stamp: stamps/netx-dist.stamp extra-lib/about.jar > > > +stamps/add-netx-debug.stamp: stamps/netx-dist.stamp stamps/about.stamp > > > +if ENABLE_NETX > > > cp -pPRf $(abs_top_builddir)/netx.build/lib/classes.jar \ > > > $(DEBUG_BUILD_OUTPUT_DIR)/j2sdk-image/jre/lib/netx.jar > > > cp -pPRf $(abs_top_builddir)/netx.build/lib/classes.jar \ > > > @@ -1516,6 +1523,7 @@ > > > cp $(NETX_SRCDIR)/javaws.1 \ > > > $(DEBUG_BUILD_OUTPUT_DIR)/j2re-image/man/man1 ; \ > > > fi > > > +endif > > > touch stamps/add-netx-debug.stamp > > > > > > clean-add-netx-debug: > > > @@ -1693,6 +1701,7 @@ > > > find $(NETX_SRCDIR) -name '*.java' | sort > $@ > > > > > > stamps/netx.stamp: netx-source-files.txt stamps/rt-class-files.stamp > > > +if ENABLE_NETX > > > mkdir -p $(abs_top_builddir)/netx.build > > > $(BOOT_DIR)/bin/javac $(IT_JAVACFLAGS) \ > > > -d $(abs_top_builddir)/netx.build \ > > > @@ -1700,10 +1709,12 @@ > > > -classpath $(RUNTIME) -bootclasspath \'\' \ > > > @netx-source-files.txt > > > cp -r $(NETX_RESOURCE_DIR) $(abs_top_builddir)/netx.build/net/sourceforge/jnlp > > > +endif > > > mkdir -p stamps > > > touch $@ > > > > > > stamps/netx-dist.stamp: stamps/netx.stamp > > > +if ENABLE_NETX > > > (cd $(abs_top_builddir)/netx.build ; \ > > > mkdir -p lib ; \ > > > $(BOOT_DIR)/bin/jar cf lib/classes.jar javax/jnlp net ; \ > > > @@ -1713,6 +1724,7 @@ > > > $(BOOT_DIR)/bin/jar uf $(abs_top_builddir)/netx.build/lib/classes.jar \ > > > `find . -type f -not -name '*.java'` ; \ > > > $(ZIP) -qr $(abs_top_builddir)/netx.build/lib/src.zip javax net ) > > > +endif > > > mkdir -p stamps > > > touch $@ > > > > > > @@ -1728,11 +1740,13 @@ > > > > > > stamps/extra-class-files.stamp: $(INITIAL_BOOTSTRAP_LINK_STAMP) \ > > > extra-source-files.txt stamps/netx.stamp > > > +if ENABLE_NETX > > > mkdir -p extra-lib > > > $(BOOT_DIR)/bin/javac $(IT_JAVACFLAGS) -d extra-lib \ > > > -sourcepath extra -cp netx.build \ > > > -bootclasspath $(RUNTIME) @extra-source-files.txt > > > cp -r $(NETX_EXTRA_DIR) extra-lib/net/sourceforge/jnlp/about > > > +endif > > > mkdir -p stamps > > > touch $@ > > > > > > @@ -1741,8 +1755,16 @@ > > > rm -f stamps/extra-class-files.stamp > > > rm -f extra-source-files.txt > > > > > > -extra-lib/about.jar: stamps/extra-class-files.stamp > > > - $(BOOT_DIR)/bin/jar cf $@ -C extra-lib net ; > > > +stamps/about.stamp: stamps/extra-class-files.stamp > > > +if ENABLE_NETX > > > + $(BOOT_DIR)/bin/jar cf extra-lib/about.jar -C extra-lib net > > > +endif > > > + mkdir -p stamps > > > + touch $@ > > > + > > > +clean-about: > > > + rm -f extra-lib/about.jar > > > + rm -f stamps/about.stamp > > > > > > # PulseAudio based mixer > > > # (pulse-java) > > > diff -r 17c34c4c6fae acinclude.m4 > > > --- a/acinclude.m4 Wed Nov 10 16:30:08 2010 +0000 > > > +++ b/acinclude.m4 Thu Nov 11 15:55:47 2010 +0000 > > > @@ -1459,12 +1459,17 @@ > > > > > > AC_DEFUN_ONCE([IT_CHECK_PLUGIN], > > > [ > > > +AC_REQUIRE([IT_CHECK_NETX]) > > > AC_MSG_CHECKING([whether to build the browser plugin]) > > > AC_ARG_ENABLE([plugin], > > > [AS_HELP_STRING([--disable-plugin], > > > [Disable compilation of browser plugin])], > > > [enable_plugin="${enableval}"], [enable_plugin="yes"]) > > > AC_MSG_RESULT(${enable_plugin}) > > > +if test "x${enable_netx}" = "xno" ; then > > > + AC_MSG_WARN([Plugin can not be built without NetX; disabling plugin]) > > > + enable_plugin=no; > > > +fi > > > ]) > > > > > > AC_DEFUN_ONCE([IT_CHECK_PLUGIN_DEPENDENCIES], > > > @@ -1556,3 +1561,14 @@ > > > AM_CONDITIONAL([HAS_PAX], test x"${it_cv_pax}" = "xyes") > > > AC_PROVIDE([$0])dnl > > > ]) > > > + > > > +AC_DEFUN_ONCE([IT_CHECK_NETX], > > > +[ > > > +AC_MSG_CHECKING([whether to build NetX]) > > > +AC_ARG_ENABLE([webstart], > > > + [AS_HELP_STRING([--disable-webstart], > > > + [Disable compilation of Web Start support])], > > > + [enable_netx="${enableval}"], [enable_netx="yes"]) > > > +AC_MSG_RESULT(${enable_netx}) > > > +AM_CONDITIONAL(ENABLE_NETX, test "x${enable_netx}" = "xyes") > > > +]) > > > > -- > Andrew :) > > Free Java Software Engineer > Red Hat, Inc. (http://www.redhat.com) > > Support Free Java! > Contribute to GNU Classpath and the OpenJDK > http://www.gnu.org/software/classpath > http://openjdk.java.net > PGP Key: 94EFD9D8 (http://subkeys.pgp.net) > Fingerprint = F8EF F1EA 401E 2E60 15FA 7927 142C 2591 94EF D9D8 From andrew at icedtea.classpath.org Thu Nov 11 13:15:29 2010 From: andrew at icedtea.classpath.org (andrew at icedtea.classpath.org) Date: Thu, 11 Nov 2010 21:15:29 +0000 Subject: /hg/icedtea6: 2 new changesets Message-ID: changeset 799d1eebe117 in /hg/icedtea6 details: http://icedtea.classpath.org/hg/icedtea6?cmd=changeset;node=799d1eebe117 author: Andrew John Hughes date: Wed Nov 10 16:30:08 2010 +0000 Remove additional whitespace introduced in Makefile.am. 2010-11-10 Andrew John Hughes * Makefile.am: Remove additional whitespace. changeset cb572d31894b in /hg/icedtea6 details: http://icedtea.classpath.org/hg/icedtea6?cmd=changeset;node=cb572d31894b author: Andrew John Hughes date: Thu Nov 11 21:15:23 2010 +0000 Merge diffstat: 3 files changed, 33 insertions(+), 3 deletions(-) ChangeLog | 10 ++++++++++ Makefile.am | 5 ++--- patches/openjdk/6980392-fix_test6581734.patch | 21 +++++++++++++++++++++ diffs (71 lines): diff -r 3b0958812397 -r cb572d31894b ChangeLog --- a/ChangeLog Wed Nov 10 16:07:00 2010 +0000 +++ b/ChangeLog Thu Nov 11 21:15:23 2010 +0000 @@ -1,3 +1,13 @@ 2010-11-10 Andrew John Hughes + + * Makefile.am: Add new patch. + * patches/openjdk/6980392-fix_test6581734.patch: + Testcase correction - added missing right bracket. + +2010-11-10 Andrew John Hughes + + * Makefile.am: Remove additional whitespace. + 2010-11-10 Andrew John Hughes RH647737 diff -r 3b0958812397 -r cb572d31894b Makefile.am --- a/Makefile.am Wed Nov 10 16:07:00 2010 +0000 +++ b/Makefile.am Thu Nov 11 21:15:23 2010 +0000 @@ -41,7 +41,6 @@ BUILD_JRE_ARCH_DIR = $(BUILD_OUTPUT_DIR) BUILD_JRE_ARCH_DIR = $(BUILD_OUTPUT_DIR)/j2sdk-image/jre/lib/$(INSTALL_ARCH_DIR) BUILD_DEBUG_JRE_ARCH_DIR = $(DEBUG_BUILD_OUTPUT_DIR)/j2sdk-image/jre/lib/$(INSTALL_ARCH_DIR) FONTCONFIG_PATH = openjdk/jdk/src/solaris/classes/sun/awt/fontconfigs - # Source directories @@ -306,7 +305,8 @@ if WITH_ALT_HSBUILD if WITH_ALT_HSBUILD ICEDTEA_PATCHES += \ patches/openjdk/6994130-ppc_fix.patch \ - patches/disable-default-compoops.patch + patches/disable-default-compoops.patch \ + patches/openjdk/6980392-fix_test6581734.patch else ICEDTEA_PATCHES += \ patches/shark_do_nothing_on_stub_frame.patch \ @@ -964,7 +964,6 @@ stamps/fonts.stamp: stamps/generated.sta cp $(FONTCONFIG_PATH)/linux.fontconfig.Fedora.properties $(FONTCONFIG_PATH)/linux.fontconfig.Fedora.12.properties mkdir -p stamps touch stamps/fonts.stamp - stamps/patch-fsg.stamp: stamps/fonts.stamp mkdir -p stamps ; \ diff -r 3b0958812397 -r cb572d31894b patches/openjdk/6980392-fix_test6581734.patch --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/patches/openjdk/6980392-fix_test6581734.patch Thu Nov 11 21:15:23 2010 +0000 @@ -0,0 +1,21 @@ +# HG changeset patch +# User kevinw +# Date 1282924624 -3600 +# Node ID 21c29458b334f7b1f05a185442ab37ab8de1ea7b +# Parent 8e5955ddf8e491a54b7e9446424fdee02e6950c8 +6980392: TEST_BUG: gc/6581734/Test6581734.java has typo +Summary: simple correction in testcase +Reviewed-by: mchung + +diff -r 8e5955ddf8e4 -r 21c29458b334 test/gc/6581734/Test6581734.java +--- openjdk.old/hotspot/test/gc/6581734/Test6581734_.java 2010-10-08 22:29:24.000000000 +0200 ++++ openjdk/hotspot/test/gc/6581734/Test6581734.java 2010-11-11 15:47:15.000000000 +0100 +@@ -121,7 +121,7 @@ + } + + if (collectorsWithTime References: <20101111140709.GA9134@rivendell.middle-earth.co.uk> <20101111141800.GB9134@rivendell.middle-earth.co.uk> <20101111144925.GC6888@redhat.com> <20101111151258.GC9134@rivendell.middle-earth.co.uk> <20101111155628.GD9134@rivendell.middle-earth.co.uk> <20101111201053.GC3282@redhat.com> <20101111211037.GA5773@rivendell.middle-earth.co.uk> <20101111211343.GA3047@redhat.com> Message-ID: <20101111213410.GB5773@rivendell.middle-earth.co.uk> On 16:13 Thu 11 Nov , Deepak Bhole wrote: > * Dr Andrew John Hughes [2010-11-11 16:10]: > > On 15:10 Thu 11 Nov , Deepak Bhole wrote: > > > * Dr Andrew John Hughes [2010-11-11 10:56]: > > > > On 15:12 Thu 11 Nov , Dr Andrew John Hughes wrote: > > > > > On 09:49 Thu 11 Nov , Deepak Bhole wrote: > > > > > > * Dr Andrew John Hughes [2010-11-11 09:21]: > > > > > > > > +]) > > > > > > > > > > > > > > New version; turns out I missed the -debug target... :-( > > > > > > > > > > > > Just tried building with --disable-webstart. The classes are not built, > > > > > > however javaws still is. javaws shouldn't get built with > > > > > > --disable-webstart as it'd be unusable without the classes. > > > > > > > > > > > > > > > > Yeah just spotted that; it's because it's added by netx.patch and produced > > > > > by the OpenJDK build, not our makefiles. Testing a new version. > > > > > > > > > > > Cheers, > > > > > > Deepak > > > > > > > > > > -- > > > > > Andrew :) > > > > > > > > > > Free Java Software Engineer > > > > > Red Hat, Inc. (http://www.redhat.com) > > > > > > > > > > Support Free Java! > > > > > Contribute to GNU Classpath and the OpenJDK > > > > > http://www.gnu.org/software/classpath > > > > > http://openjdk.java.net > > > > > PGP Key: 94EFD9D8 (http://subkeys.pgp.net) > > > > > Fingerprint = F8EF F1EA 401E 2E60 15FA 7927 142C 2591 94EF D9D8 > > > > > > > > New version attached. > > > > > > Built it with and without webstart. Without webstart is as expected now > > > -- no related files/classes. With webstart enabled, javaws builds and > > > works. > > > > > > > Good. > > > > > I was unable to configure+make by just reconfiguring without the > > > --disable-webstart.... make ran into error with missing classes and what > > > not. It worked fine after a make clean though. Is this expected? > > > > > > > Not sure. Can you provide more details on exactly what you tried? > > > > I hg up -C'd, applied the patch. > Interesting, I've never used -C. Never want to discard stuff :-) > Then: > ./autogen.sh > > [.../]configure --disable-docs --with-openjdk --with-parallel-jobs=4 > --disable-webstart > make > Ok so you did a non-bootstrap build which is good. Mine are always full builds. > Things built fine, nothing from webstart in build tree. Then, from the > same dir, I did: > > [.../]configure --disable-docs --with-openjdk --with-parallel-jobs=4 > make > > It tried to build it and failed due to a bunch of classes not being > found. > Can you provide the output from this? Are you building in-tree or out-of-tree? My guess is that if you don't do a clean inbetween, it will think some of the targets have been performed e.g. netx.stamp will exist so the netx classes won't be compiled. IMHO, that seems perfectly valid behaviour. If you reconfigure, you should clean. Same happens if you e.g. turn on the cacao build. > Deepak > > > > Cheers, > > > Deepak > > > > > > > -- > > > > Andrew :) > > > > > > > > Free Java Software Engineer > > > > Red Hat, Inc. (http://www.redhat.com) > > > > > > > > Support Free Java! > > > > Contribute to GNU Classpath and the OpenJDK > > > > http://www.gnu.org/software/classpath > > > > http://openjdk.java.net > > > > PGP Key: 94EFD9D8 (http://subkeys.pgp.net) > > > > Fingerprint = F8EF F1EA 401E 2E60 15FA 7927 142C 2591 94EF D9D8 > > > > > > > diff -r 17c34c4c6fae Makefile.am > > > > --- a/Makefile.am Wed Nov 10 16:30:08 2010 +0000 > > > > +++ b/Makefile.am Thu Nov 11 15:55:47 2010 +0000 > > > > @@ -288,8 +288,6 @@ > > > > patches/icedtea-policy-evaluation.patch \ > > > > patches/hotspot/$(HSBUILD)/update-bootclasspath.patch \ > > > > patches/libpng.patch \ > > > > - patches/extensions/netx.patch \ > > > > - patches/extensions/netx-umask.patch \ > > > > patches/icedtea-jtreg-httpTest.patch \ > > > > patches/arm.patch \ > > > > patches/openjdk/6678385-window_movement_crasher.patch \ > > > > @@ -339,6 +337,12 @@ > > > > patches/icedtea-rhino.patch > > > > endif > > > > > > > > +if ENABLE_NETX > > > > +ICEDTEA_PATCHES += \ > > > > + patches/extensions/netx.patch \ > > > > + patches/extensions/netx-umask.patch > > > > +endif > > > > + > > > > if ENABLE_PLUGIN > > > > ICEDTEA_PATCHES += \ > > > > patches/extensions/liveconnect.patch > > > > @@ -579,7 +583,7 @@ > > > > clean-icedtea-against-icedtea clean-icedtea-debug-against-icedtea \ > > > > clean-icedtea-against-ecj clean-extract-ecj clean-generated clean-replace-hotspot \ > > > > clean-rewriter clean-rewrite-rhino clean-extra clean-rt clean-bootstrap-directory \ > > > > - clean-bootstrap-directory-ecj clean-bootstrap-directory-symlink \ > > > > + clean-bootstrap-directory-ecj clean-bootstrap-directory-symlink clean-about \ > > > > clean-bootstrap-directory-symlink-ecj > > > > if [ -e bootstrap ]; then \ > > > > rmdir bootstrap ; \ > > > > @@ -613,7 +617,7 @@ > > > > clean-ports clean-overlay clean-extract-ecj clean-extract clean-extract-openjdk \ > > > > clean-replace-hotspot clean-generated clean-download clean-hgforest clean-download-openjdk \ > > > > clean-rewriter clean-rewrite-rhino clean-add-netx clean-add-netx-debug \ > > > > - clean-add-plugin clean-add-plugin-debug > > > > + clean-add-plugin clean-add-plugin-debug clean-about > > > > > > > > env: > > > > @echo 'unset JAVA_HOME' > > > > @@ -1469,7 +1473,8 @@ > > > > rm -f $(DEBUG_BUILD_OUTPUT_DIR)/j2re-image/lib/plugin.jar > > > > rm -f stamps/add-plugin-debug.stamp > > > > > > > > -stamps/add-netx.stamp: stamps/netx-dist.stamp extra-lib/about.jar > > > > +stamps/add-netx.stamp: stamps/netx-dist.stamp stamps/about.stamp > > > > +if ENABLE_NETX > > > > cp -pPRf $(abs_top_builddir)/netx.build/lib/classes.jar \ > > > > $(BUILD_OUTPUT_DIR)/j2sdk-image/jre/lib/netx.jar > > > > cp -pPRf $(abs_top_builddir)/netx.build/lib/classes.jar \ > > > > @@ -1486,6 +1491,7 @@ > > > > cp $(NETX_SRCDIR)/javaws.1 \ > > > > $(BUILD_OUTPUT_DIR)/j2re-image/man/man1 ; \ > > > > fi > > > > +endif > > > > touch stamps/add-netx.stamp > > > > > > > > clean-add-netx: > > > > @@ -1499,7 +1505,8 @@ > > > > rm -f $(BUILD_OUTPUT_DIR)/j2re-image/man/man1/javaws.1 > > > > rm -f stamps/add-netx.stamp > > > > > > > > -stamps/add-netx-debug.stamp: stamps/netx-dist.stamp extra-lib/about.jar > > > > +stamps/add-netx-debug.stamp: stamps/netx-dist.stamp stamps/about.stamp > > > > +if ENABLE_NETX > > > > cp -pPRf $(abs_top_builddir)/netx.build/lib/classes.jar \ > > > > $(DEBUG_BUILD_OUTPUT_DIR)/j2sdk-image/jre/lib/netx.jar > > > > cp -pPRf $(abs_top_builddir)/netx.build/lib/classes.jar \ > > > > @@ -1516,6 +1523,7 @@ > > > > cp $(NETX_SRCDIR)/javaws.1 \ > > > > $(DEBUG_BUILD_OUTPUT_DIR)/j2re-image/man/man1 ; \ > > > > fi > > > > +endif > > > > touch stamps/add-netx-debug.stamp > > > > > > > > clean-add-netx-debug: > > > > @@ -1693,6 +1701,7 @@ > > > > find $(NETX_SRCDIR) -name '*.java' | sort > $@ > > > > > > > > stamps/netx.stamp: netx-source-files.txt stamps/rt-class-files.stamp > > > > +if ENABLE_NETX > > > > mkdir -p $(abs_top_builddir)/netx.build > > > > $(BOOT_DIR)/bin/javac $(IT_JAVACFLAGS) \ > > > > -d $(abs_top_builddir)/netx.build \ > > > > @@ -1700,10 +1709,12 @@ > > > > -classpath $(RUNTIME) -bootclasspath \'\' \ > > > > @netx-source-files.txt > > > > cp -r $(NETX_RESOURCE_DIR) $(abs_top_builddir)/netx.build/net/sourceforge/jnlp > > > > +endif > > > > mkdir -p stamps > > > > touch $@ > > > > > > > > stamps/netx-dist.stamp: stamps/netx.stamp > > > > +if ENABLE_NETX > > > > (cd $(abs_top_builddir)/netx.build ; \ > > > > mkdir -p lib ; \ > > > > $(BOOT_DIR)/bin/jar cf lib/classes.jar javax/jnlp net ; \ > > > > @@ -1713,6 +1724,7 @@ > > > > $(BOOT_DIR)/bin/jar uf $(abs_top_builddir)/netx.build/lib/classes.jar \ > > > > `find . -type f -not -name '*.java'` ; \ > > > > $(ZIP) -qr $(abs_top_builddir)/netx.build/lib/src.zip javax net ) > > > > +endif > > > > mkdir -p stamps > > > > touch $@ > > > > > > > > @@ -1728,11 +1740,13 @@ > > > > > > > > stamps/extra-class-files.stamp: $(INITIAL_BOOTSTRAP_LINK_STAMP) \ > > > > extra-source-files.txt stamps/netx.stamp > > > > +if ENABLE_NETX > > > > mkdir -p extra-lib > > > > $(BOOT_DIR)/bin/javac $(IT_JAVACFLAGS) -d extra-lib \ > > > > -sourcepath extra -cp netx.build \ > > > > -bootclasspath $(RUNTIME) @extra-source-files.txt > > > > cp -r $(NETX_EXTRA_DIR) extra-lib/net/sourceforge/jnlp/about > > > > +endif > > > > mkdir -p stamps > > > > touch $@ > > > > > > > > @@ -1741,8 +1755,16 @@ > > > > rm -f stamps/extra-class-files.stamp > > > > rm -f extra-source-files.txt > > > > > > > > -extra-lib/about.jar: stamps/extra-class-files.stamp > > > > - $(BOOT_DIR)/bin/jar cf $@ -C extra-lib net ; > > > > +stamps/about.stamp: stamps/extra-class-files.stamp > > > > +if ENABLE_NETX > > > > + $(BOOT_DIR)/bin/jar cf extra-lib/about.jar -C extra-lib net > > > > +endif > > > > + mkdir -p stamps > > > > + touch $@ > > > > + > > > > +clean-about: > > > > + rm -f extra-lib/about.jar > > > > + rm -f stamps/about.stamp > > > > > > > > # PulseAudio based mixer > > > > # (pulse-java) > > > > diff -r 17c34c4c6fae acinclude.m4 > > > > --- a/acinclude.m4 Wed Nov 10 16:30:08 2010 +0000 > > > > +++ b/acinclude.m4 Thu Nov 11 15:55:47 2010 +0000 > > > > @@ -1459,12 +1459,17 @@ > > > > > > > > AC_DEFUN_ONCE([IT_CHECK_PLUGIN], > > > > [ > > > > +AC_REQUIRE([IT_CHECK_NETX]) > > > > AC_MSG_CHECKING([whether to build the browser plugin]) > > > > AC_ARG_ENABLE([plugin], > > > > [AS_HELP_STRING([--disable-plugin], > > > > [Disable compilation of browser plugin])], > > > > [enable_plugin="${enableval}"], [enable_plugin="yes"]) > > > > AC_MSG_RESULT(${enable_plugin}) > > > > +if test "x${enable_netx}" = "xno" ; then > > > > + AC_MSG_WARN([Plugin can not be built without NetX; disabling plugin]) > > > > + enable_plugin=no; > > > > +fi > > > > ]) > > > > > > > > AC_DEFUN_ONCE([IT_CHECK_PLUGIN_DEPENDENCIES], > > > > @@ -1556,3 +1561,14 @@ > > > > AM_CONDITIONAL([HAS_PAX], test x"${it_cv_pax}" = "xyes") > > > > AC_PROVIDE([$0])dnl > > > > ]) > > > > + > > > > +AC_DEFUN_ONCE([IT_CHECK_NETX], > > > > +[ > > > > +AC_MSG_CHECKING([whether to build NetX]) > > > > +AC_ARG_ENABLE([webstart], > > > > + [AS_HELP_STRING([--disable-webstart], > > > > + [Disable compilation of Web Start support])], > > > > + [enable_netx="${enableval}"], [enable_netx="yes"]) > > > > +AC_MSG_RESULT(${enable_netx}) > > > > +AM_CONDITIONAL(ENABLE_NETX, test "x${enable_netx}" = "xyes") > > > > +]) > > > > > > > -- > > Andrew :) > > > > Free Java Software Engineer > > Red Hat, Inc. (http://www.redhat.com) > > > > Support Free Java! > > Contribute to GNU Classpath and the OpenJDK > > http://www.gnu.org/software/classpath > > http://openjdk.java.net > > PGP Key: 94EFD9D8 (http://subkeys.pgp.net) > > Fingerprint = F8EF F1EA 401E 2E60 15FA 7927 142C 2591 94EF D9D8 -- Andrew :) Free Java Software Engineer Red Hat, Inc. (http://www.redhat.com) Support Free Java! Contribute to GNU Classpath and the OpenJDK http://www.gnu.org/software/classpath http://openjdk.java.net PGP Key: 94EFD9D8 (http://subkeys.pgp.net) Fingerprint = F8EF F1EA 401E 2E60 15FA 7927 142C 2591 94EF D9D8 From dbhole at redhat.com Thu Nov 11 13:49:57 2010 From: dbhole at redhat.com (Deepak Bhole) Date: Thu, 11 Nov 2010 16:49:57 -0500 Subject: [1.9] RFC: Allow NetX to be disabled In-Reply-To: <20101111213410.GB5773@rivendell.middle-earth.co.uk> References: <20101111140709.GA9134@rivendell.middle-earth.co.uk> <20101111141800.GB9134@rivendell.middle-earth.co.uk> <20101111144925.GC6888@redhat.com> <20101111151258.GC9134@rivendell.middle-earth.co.uk> <20101111155628.GD9134@rivendell.middle-earth.co.uk> <20101111201053.GC3282@redhat.com> <20101111211037.GA5773@rivendell.middle-earth.co.uk> <20101111211343.GA3047@redhat.com> <20101111213410.GB5773@rivendell.middle-earth.co.uk> Message-ID: <20101111214956.GB3047@redhat.com> * Dr Andrew John Hughes [2010-11-11 16:34]: > On 16:13 Thu 11 Nov , Deepak Bhole wrote: > > * Dr Andrew John Hughes [2010-11-11 16:10]: > > > On 15:10 Thu 11 Nov , Deepak Bhole wrote: > > > > * Dr Andrew John Hughes [2010-11-11 10:56]: > > > > > On 15:12 Thu 11 Nov , Dr Andrew John Hughes wrote: > > > > > > On 09:49 Thu 11 Nov , Deepak Bhole wrote: > > > > > > > * Dr Andrew John Hughes [2010-11-11 09:21]: > > > > > > > > > +]) > > > > > > > > > > > > > > > > New version; turns out I missed the -debug target... :-( > > > > > > > > > > > > > > Just tried building with --disable-webstart. The classes are not built, > > > > > > > however javaws still is. javaws shouldn't get built with > > > > > > > --disable-webstart as it'd be unusable without the classes. > > > > > > > > > > > > > > > > > > > Yeah just spotted that; it's because it's added by netx.patch and produced > > > > > > by the OpenJDK build, not our makefiles. Testing a new version. > > > > > > > > > > > > > Cheers, > > > > > > > Deepak > > > > > > > > > > > > -- > > > > > > Andrew :) > > > > > > > > > > > > Free Java Software Engineer > > > > > > Red Hat, Inc. (http://www.redhat.com) > > > > > > > > > > > > Support Free Java! > > > > > > Contribute to GNU Classpath and the OpenJDK > > > > > > http://www.gnu.org/software/classpath > > > > > > http://openjdk.java.net > > > > > > PGP Key: 94EFD9D8 (http://subkeys.pgp.net) > > > > > > Fingerprint = F8EF F1EA 401E 2E60 15FA 7927 142C 2591 94EF D9D8 > > > > > > > > > > New version attached. > > > > > > > > Built it with and without webstart. Without webstart is as expected now > > > > -- no related files/classes. With webstart enabled, javaws builds and > > > > works. > > > > > > > > > > Good. > > > > > > > I was unable to configure+make by just reconfiguring without the > > > > --disable-webstart.... make ran into error with missing classes and what > > > > not. It worked fine after a make clean though. Is this expected? > > > > > > > > > > Not sure. Can you provide more details on exactly what you tried? > > > > > > > I hg up -C'd, applied the patch. > > > > Interesting, I've never used -C. Never want to discard stuff :-) > I usually avoid it too. But I keep a separate copy of a 'non-commit' tree that I use only for testing. hg -C is very useful there to clean stuff :) > > Then: > > ./autogen.sh > > > > [.../]configure --disable-docs --with-openjdk --with-parallel-jobs=4 > > --disable-webstart > > make > > > > Ok so you did a non-bootstrap build which is good. Mine are always full builds. > Right, both with and without webstart were non-bootstrap. > > Things built fine, nothing from webstart in build tree. Then, from the > > same dir, I did: > > > > [.../]configure --disable-docs --with-openjdk --with-parallel-jobs=4 > > make > > > > It tried to build it and failed due to a bunch of classes not being > > found. > > > > Can you provide the output from this? > I will have to start another build. Will do it now... > Are you building in-tree or out-of-tree? > out of tree. > My guess is that if you don't do a clean inbetween, it will think some of the > targets have been performed e.g. netx.stamp will exist so the netx classes > won't be compiled. IMHO, that seems perfectly valid behaviour. If you > reconfigure, you should clean. Same happens if you e.g. turn on the cacao > build. > That is exactly what seems to be happening.. if we are okay without having to require a clean after reconfigure, I think this is acceptable. OK for commit in that case. Cheers, Deepak > > Deepak > > > > > > Cheers, > > > > Deepak > > > > > > > > > -- > > > > > Andrew :) > > > > > > > > > > Free Java Software Engineer > > > > > Red Hat, Inc. (http://www.redhat.com) > > > > > > > > > > Support Free Java! > > > > > Contribute to GNU Classpath and the OpenJDK > > > > > http://www.gnu.org/software/classpath > > > > > http://openjdk.java.net > > > > > PGP Key: 94EFD9D8 (http://subkeys.pgp.net) > > > > > Fingerprint = F8EF F1EA 401E 2E60 15FA 7927 142C 2591 94EF D9D8 > > > > > > > > > diff -r 17c34c4c6fae Makefile.am > > > > > --- a/Makefile.am Wed Nov 10 16:30:08 2010 +0000 > > > > > +++ b/Makefile.am Thu Nov 11 15:55:47 2010 +0000 > > > > > @@ -288,8 +288,6 @@ > > > > > patches/icedtea-policy-evaluation.patch \ > > > > > patches/hotspot/$(HSBUILD)/update-bootclasspath.patch \ > > > > > patches/libpng.patch \ > > > > > - patches/extensions/netx.patch \ > > > > > - patches/extensions/netx-umask.patch \ > > > > > patches/icedtea-jtreg-httpTest.patch \ > > > > > patches/arm.patch \ > > > > > patches/openjdk/6678385-window_movement_crasher.patch \ > > > > > @@ -339,6 +337,12 @@ > > > > > patches/icedtea-rhino.patch > > > > > endif > > > > > > > > > > +if ENABLE_NETX > > > > > +ICEDTEA_PATCHES += \ > > > > > + patches/extensions/netx.patch \ > > > > > + patches/extensions/netx-umask.patch > > > > > +endif > > > > > + > > > > > if ENABLE_PLUGIN > > > > > ICEDTEA_PATCHES += \ > > > > > patches/extensions/liveconnect.patch > > > > > @@ -579,7 +583,7 @@ > > > > > clean-icedtea-against-icedtea clean-icedtea-debug-against-icedtea \ > > > > > clean-icedtea-against-ecj clean-extract-ecj clean-generated clean-replace-hotspot \ > > > > > clean-rewriter clean-rewrite-rhino clean-extra clean-rt clean-bootstrap-directory \ > > > > > - clean-bootstrap-directory-ecj clean-bootstrap-directory-symlink \ > > > > > + clean-bootstrap-directory-ecj clean-bootstrap-directory-symlink clean-about \ > > > > > clean-bootstrap-directory-symlink-ecj > > > > > if [ -e bootstrap ]; then \ > > > > > rmdir bootstrap ; \ > > > > > @@ -613,7 +617,7 @@ > > > > > clean-ports clean-overlay clean-extract-ecj clean-extract clean-extract-openjdk \ > > > > > clean-replace-hotspot clean-generated clean-download clean-hgforest clean-download-openjdk \ > > > > > clean-rewriter clean-rewrite-rhino clean-add-netx clean-add-netx-debug \ > > > > > - clean-add-plugin clean-add-plugin-debug > > > > > + clean-add-plugin clean-add-plugin-debug clean-about > > > > > > > > > > env: > > > > > @echo 'unset JAVA_HOME' > > > > > @@ -1469,7 +1473,8 @@ > > > > > rm -f $(DEBUG_BUILD_OUTPUT_DIR)/j2re-image/lib/plugin.jar > > > > > rm -f stamps/add-plugin-debug.stamp > > > > > > > > > > -stamps/add-netx.stamp: stamps/netx-dist.stamp extra-lib/about.jar > > > > > +stamps/add-netx.stamp: stamps/netx-dist.stamp stamps/about.stamp > > > > > +if ENABLE_NETX > > > > > cp -pPRf $(abs_top_builddir)/netx.build/lib/classes.jar \ > > > > > $(BUILD_OUTPUT_DIR)/j2sdk-image/jre/lib/netx.jar > > > > > cp -pPRf $(abs_top_builddir)/netx.build/lib/classes.jar \ > > > > > @@ -1486,6 +1491,7 @@ > > > > > cp $(NETX_SRCDIR)/javaws.1 \ > > > > > $(BUILD_OUTPUT_DIR)/j2re-image/man/man1 ; \ > > > > > fi > > > > > +endif > > > > > touch stamps/add-netx.stamp > > > > > > > > > > clean-add-netx: > > > > > @@ -1499,7 +1505,8 @@ > > > > > rm -f $(BUILD_OUTPUT_DIR)/j2re-image/man/man1/javaws.1 > > > > > rm -f stamps/add-netx.stamp > > > > > > > > > > -stamps/add-netx-debug.stamp: stamps/netx-dist.stamp extra-lib/about.jar > > > > > +stamps/add-netx-debug.stamp: stamps/netx-dist.stamp stamps/about.stamp > > > > > +if ENABLE_NETX > > > > > cp -pPRf $(abs_top_builddir)/netx.build/lib/classes.jar \ > > > > > $(DEBUG_BUILD_OUTPUT_DIR)/j2sdk-image/jre/lib/netx.jar > > > > > cp -pPRf $(abs_top_builddir)/netx.build/lib/classes.jar \ > > > > > @@ -1516,6 +1523,7 @@ > > > > > cp $(NETX_SRCDIR)/javaws.1 \ > > > > > $(DEBUG_BUILD_OUTPUT_DIR)/j2re-image/man/man1 ; \ > > > > > fi > > > > > +endif > > > > > touch stamps/add-netx-debug.stamp > > > > > > > > > > clean-add-netx-debug: > > > > > @@ -1693,6 +1701,7 @@ > > > > > find $(NETX_SRCDIR) -name '*.java' | sort > $@ > > > > > > > > > > stamps/netx.stamp: netx-source-files.txt stamps/rt-class-files.stamp > > > > > +if ENABLE_NETX > > > > > mkdir -p $(abs_top_builddir)/netx.build > > > > > $(BOOT_DIR)/bin/javac $(IT_JAVACFLAGS) \ > > > > > -d $(abs_top_builddir)/netx.build \ > > > > > @@ -1700,10 +1709,12 @@ > > > > > -classpath $(RUNTIME) -bootclasspath \'\' \ > > > > > @netx-source-files.txt > > > > > cp -r $(NETX_RESOURCE_DIR) $(abs_top_builddir)/netx.build/net/sourceforge/jnlp > > > > > +endif > > > > > mkdir -p stamps > > > > > touch $@ > > > > > > > > > > stamps/netx-dist.stamp: stamps/netx.stamp > > > > > +if ENABLE_NETX > > > > > (cd $(abs_top_builddir)/netx.build ; \ > > > > > mkdir -p lib ; \ > > > > > $(BOOT_DIR)/bin/jar cf lib/classes.jar javax/jnlp net ; \ > > > > > @@ -1713,6 +1724,7 @@ > > > > > $(BOOT_DIR)/bin/jar uf $(abs_top_builddir)/netx.build/lib/classes.jar \ > > > > > `find . -type f -not -name '*.java'` ; \ > > > > > $(ZIP) -qr $(abs_top_builddir)/netx.build/lib/src.zip javax net ) > > > > > +endif > > > > > mkdir -p stamps > > > > > touch $@ > > > > > > > > > > @@ -1728,11 +1740,13 @@ > > > > > > > > > > stamps/extra-class-files.stamp: $(INITIAL_BOOTSTRAP_LINK_STAMP) \ > > > > > extra-source-files.txt stamps/netx.stamp > > > > > +if ENABLE_NETX > > > > > mkdir -p extra-lib > > > > > $(BOOT_DIR)/bin/javac $(IT_JAVACFLAGS) -d extra-lib \ > > > > > -sourcepath extra -cp netx.build \ > > > > > -bootclasspath $(RUNTIME) @extra-source-files.txt > > > > > cp -r $(NETX_EXTRA_DIR) extra-lib/net/sourceforge/jnlp/about > > > > > +endif > > > > > mkdir -p stamps > > > > > touch $@ > > > > > > > > > > @@ -1741,8 +1755,16 @@ > > > > > rm -f stamps/extra-class-files.stamp > > > > > rm -f extra-source-files.txt > > > > > > > > > > -extra-lib/about.jar: stamps/extra-class-files.stamp > > > > > - $(BOOT_DIR)/bin/jar cf $@ -C extra-lib net ; > > > > > +stamps/about.stamp: stamps/extra-class-files.stamp > > > > > +if ENABLE_NETX > > > > > + $(BOOT_DIR)/bin/jar cf extra-lib/about.jar -C extra-lib net > > > > > +endif > > > > > + mkdir -p stamps > > > > > + touch $@ > > > > > + > > > > > +clean-about: > > > > > + rm -f extra-lib/about.jar > > > > > + rm -f stamps/about.stamp > > > > > > > > > > # PulseAudio based mixer > > > > > # (pulse-java) > > > > > diff -r 17c34c4c6fae acinclude.m4 > > > > > --- a/acinclude.m4 Wed Nov 10 16:30:08 2010 +0000 > > > > > +++ b/acinclude.m4 Thu Nov 11 15:55:47 2010 +0000 > > > > > @@ -1459,12 +1459,17 @@ > > > > > > > > > > AC_DEFUN_ONCE([IT_CHECK_PLUGIN], > > > > > [ > > > > > +AC_REQUIRE([IT_CHECK_NETX]) > > > > > AC_MSG_CHECKING([whether to build the browser plugin]) > > > > > AC_ARG_ENABLE([plugin], > > > > > [AS_HELP_STRING([--disable-plugin], > > > > > [Disable compilation of browser plugin])], > > > > > [enable_plugin="${enableval}"], [enable_plugin="yes"]) > > > > > AC_MSG_RESULT(${enable_plugin}) > > > > > +if test "x${enable_netx}" = "xno" ; then > > > > > + AC_MSG_WARN([Plugin can not be built without NetX; disabling plugin]) > > > > > + enable_plugin=no; > > > > > +fi > > > > > ]) > > > > > > > > > > AC_DEFUN_ONCE([IT_CHECK_PLUGIN_DEPENDENCIES], > > > > > @@ -1556,3 +1561,14 @@ > > > > > AM_CONDITIONAL([HAS_PAX], test x"${it_cv_pax}" = "xyes") > > > > > AC_PROVIDE([$0])dnl > > > > > ]) > > > > > + > > > > > +AC_DEFUN_ONCE([IT_CHECK_NETX], > > > > > +[ > > > > > +AC_MSG_CHECKING([whether to build NetX]) > > > > > +AC_ARG_ENABLE([webstart], > > > > > + [AS_HELP_STRING([--disable-webstart], > > > > > + [Disable compilation of Web Start support])], > > > > > + [enable_netx="${enableval}"], [enable_netx="yes"]) > > > > > +AC_MSG_RESULT(${enable_netx}) > > > > > +AM_CONDITIONAL(ENABLE_NETX, test "x${enable_netx}" = "xyes") > > > > > +]) > > > > > > > > > > -- > > > Andrew :) > > > > > > Free Java Software Engineer > > > Red Hat, Inc. (http://www.redhat.com) > > > > > > Support Free Java! > > > Contribute to GNU Classpath and the OpenJDK > > > http://www.gnu.org/software/classpath > > > http://openjdk.java.net > > > PGP Key: 94EFD9D8 (http://subkeys.pgp.net) > > > Fingerprint = F8EF F1EA 401E 2E60 15FA 7927 142C 2591 94EF D9D8 > > -- > Andrew :) > > Free Java Software Engineer > Red Hat, Inc. (http://www.redhat.com) > > Support Free Java! > Contribute to GNU Classpath and the OpenJDK > http://www.gnu.org/software/classpath > http://openjdk.java.net > PGP Key: 94EFD9D8 (http://subkeys.pgp.net) > Fingerprint = F8EF F1EA 401E 2E60 15FA 7927 142C 2591 94EF D9D8 From ahughes at redhat.com Thu Nov 11 14:21:14 2010 From: ahughes at redhat.com (Dr Andrew John Hughes) Date: Thu, 11 Nov 2010 22:21:14 +0000 Subject: [1.9] RFC: Allow NetX to be disabled In-Reply-To: <20101111214956.GB3047@redhat.com> References: <20101111140709.GA9134@rivendell.middle-earth.co.uk> <20101111141800.GB9134@rivendell.middle-earth.co.uk> <20101111144925.GC6888@redhat.com> <20101111151258.GC9134@rivendell.middle-earth.co.uk> <20101111155628.GD9134@rivendell.middle-earth.co.uk> <20101111201053.GC3282@redhat.com> <20101111211037.GA5773@rivendell.middle-earth.co.uk> <20101111211343.GA3047@redhat.com> <20101111213410.GB5773@rivendell.middle-earth.co.uk> <20101111214956.GB3047@redhat.com> Message-ID: <20101111222114.GC5773@rivendell.middle-earth.co.uk> On 16:49 Thu 11 Nov , Deepak Bhole wrote: > * Dr Andrew John Hughes [2010-11-11 16:34]: > > On 16:13 Thu 11 Nov , Deepak Bhole wrote: > > > * Dr Andrew John Hughes [2010-11-11 16:10]: > > > > On 15:10 Thu 11 Nov , Deepak Bhole wrote: > > > > > * Dr Andrew John Hughes [2010-11-11 10:56]: > > > > > > On 15:12 Thu 11 Nov , Dr Andrew John Hughes wrote: > > > > > > > On 09:49 Thu 11 Nov , Deepak Bhole wrote: > > > > > > > > * Dr Andrew John Hughes [2010-11-11 09:21]: > > > > > > > > > > +]) > > > > > > > > > > > > > > > > > > New version; turns out I missed the -debug target... :-( > > > > > > > > > > > > > > > > Just tried building with --disable-webstart. The classes are not built, > > > > > > > > however javaws still is. javaws shouldn't get built with > > > > > > > > --disable-webstart as it'd be unusable without the classes. > > > > > > > > > > > > > > > > > > > > > > Yeah just spotted that; it's because it's added by netx.patch and produced > > > > > > > by the OpenJDK build, not our makefiles. Testing a new version. > > > > > > > > > > > > > > > Cheers, > > > > > > > > Deepak > > > > > > > > > > > > > > -- > > > > > > > Andrew :) > > > > > > > > > > > > > > Free Java Software Engineer > > > > > > > Red Hat, Inc. (http://www.redhat.com) > > > > > > > > > > > > > > Support Free Java! > > > > > > > Contribute to GNU Classpath and the OpenJDK > > > > > > > http://www.gnu.org/software/classpath > > > > > > > http://openjdk.java.net > > > > > > > PGP Key: 94EFD9D8 (http://subkeys.pgp.net) > > > > > > > Fingerprint = F8EF F1EA 401E 2E60 15FA 7927 142C 2591 94EF D9D8 > > > > > > > > > > > > New version attached. > > > > > > > > > > Built it with and without webstart. Without webstart is as expected now > > > > > -- no related files/classes. With webstart enabled, javaws builds and > > > > > works. > > > > > > > > > > > > > Good. > > > > > > > > > I was unable to configure+make by just reconfiguring without the > > > > > --disable-webstart.... make ran into error with missing classes and what > > > > > not. It worked fine after a make clean though. Is this expected? > > > > > > > > > > > > > Not sure. Can you provide more details on exactly what you tried? > > > > > > > > > > I hg up -C'd, applied the patch. > > > > > > > Interesting, I've never used -C. Never want to discard stuff :-) > > > > I usually avoid it too. But I keep a separate copy of a 'non-commit' > tree that I use only for testing. hg -C is very useful there to clean > stuff :) > > > > Then: > > > ./autogen.sh > > > > > > [.../]configure --disable-docs --with-openjdk --with-parallel-jobs=4 > > > --disable-webstart > > > make > > > > > > > Ok so you did a non-bootstrap build which is good. Mine are always full builds. > > > > Right, both with and without webstart were non-bootstrap. > > > > Things built fine, nothing from webstart in build tree. Then, from the > > > same dir, I did: > > > > > > [.../]configure --disable-docs --with-openjdk --with-parallel-jobs=4 > > > make > > > > > > It tried to build it and failed due to a bunch of classes not being > > > found. > > > > > > > Can you provide the output from this? > > > > I will have to start another build. Will do it now... > > > Are you building in-tree or out-of-tree? > > > > out of tree. > > > My guess is that if you don't do a clean inbetween, it will think some of the > > targets have been performed e.g. netx.stamp will exist so the netx classes > > won't be compiled. IMHO, that seems perfectly valid behaviour. If you > > reconfigure, you should clean. Same happens if you e.g. turn on the cacao > > build. > > > > That is exactly what seems to be happening.. if we are okay without > having to require a clean after reconfigure, I think this is acceptable. > I assume you mean 'with'. I don't see any easy way of changing this and this wouldn't be the only case. Certainly not something we want to do on a release branch... :-D > OK for commit in that case. > > Cheers, > Deepak > > > > Deepak > > > > > > > > Cheers, > > > > > Deepak > > > > > > > > > > > -- > > > > > > Andrew :) > > > > > > > > > > > > Free Java Software Engineer > > > > > > Red Hat, Inc. (http://www.redhat.com) > > > > > > > > > > > > Support Free Java! > > > > > > Contribute to GNU Classpath and the OpenJDK > > > > > > http://www.gnu.org/software/classpath > > > > > > http://openjdk.java.net > > > > > > PGP Key: 94EFD9D8 (http://subkeys.pgp.net) > > > > > > Fingerprint = F8EF F1EA 401E 2E60 15FA 7927 142C 2591 94EF D9D8 > > > > > > > > > > > diff -r 17c34c4c6fae Makefile.am > > > > > > --- a/Makefile.am Wed Nov 10 16:30:08 2010 +0000 > > > > > > +++ b/Makefile.am Thu Nov 11 15:55:47 2010 +0000 > > > > > > @@ -288,8 +288,6 @@ > > > > > > patches/icedtea-policy-evaluation.patch \ > > > > > > patches/hotspot/$(HSBUILD)/update-bootclasspath.patch \ > > > > > > patches/libpng.patch \ > > > > > > - patches/extensions/netx.patch \ > > > > > > - patches/extensions/netx-umask.patch \ > > > > > > patches/icedtea-jtreg-httpTest.patch \ > > > > > > patches/arm.patch \ > > > > > > patches/openjdk/6678385-window_movement_crasher.patch \ > > > > > > @@ -339,6 +337,12 @@ > > > > > > patches/icedtea-rhino.patch > > > > > > endif > > > > > > > > > > > > +if ENABLE_NETX > > > > > > +ICEDTEA_PATCHES += \ > > > > > > + patches/extensions/netx.patch \ > > > > > > + patches/extensions/netx-umask.patch > > > > > > +endif > > > > > > + > > > > > > if ENABLE_PLUGIN > > > > > > ICEDTEA_PATCHES += \ > > > > > > patches/extensions/liveconnect.patch > > > > > > @@ -579,7 +583,7 @@ > > > > > > clean-icedtea-against-icedtea clean-icedtea-debug-against-icedtea \ > > > > > > clean-icedtea-against-ecj clean-extract-ecj clean-generated clean-replace-hotspot \ > > > > > > clean-rewriter clean-rewrite-rhino clean-extra clean-rt clean-bootstrap-directory \ > > > > > > - clean-bootstrap-directory-ecj clean-bootstrap-directory-symlink \ > > > > > > + clean-bootstrap-directory-ecj clean-bootstrap-directory-symlink clean-about \ > > > > > > clean-bootstrap-directory-symlink-ecj > > > > > > if [ -e bootstrap ]; then \ > > > > > > rmdir bootstrap ; \ > > > > > > @@ -613,7 +617,7 @@ > > > > > > clean-ports clean-overlay clean-extract-ecj clean-extract clean-extract-openjdk \ > > > > > > clean-replace-hotspot clean-generated clean-download clean-hgforest clean-download-openjdk \ > > > > > > clean-rewriter clean-rewrite-rhino clean-add-netx clean-add-netx-debug \ > > > > > > - clean-add-plugin clean-add-plugin-debug > > > > > > + clean-add-plugin clean-add-plugin-debug clean-about > > > > > > > > > > > > env: > > > > > > @echo 'unset JAVA_HOME' > > > > > > @@ -1469,7 +1473,8 @@ > > > > > > rm -f $(DEBUG_BUILD_OUTPUT_DIR)/j2re-image/lib/plugin.jar > > > > > > rm -f stamps/add-plugin-debug.stamp > > > > > > > > > > > > -stamps/add-netx.stamp: stamps/netx-dist.stamp extra-lib/about.jar > > > > > > +stamps/add-netx.stamp: stamps/netx-dist.stamp stamps/about.stamp > > > > > > +if ENABLE_NETX > > > > > > cp -pPRf $(abs_top_builddir)/netx.build/lib/classes.jar \ > > > > > > $(BUILD_OUTPUT_DIR)/j2sdk-image/jre/lib/netx.jar > > > > > > cp -pPRf $(abs_top_builddir)/netx.build/lib/classes.jar \ > > > > > > @@ -1486,6 +1491,7 @@ > > > > > > cp $(NETX_SRCDIR)/javaws.1 \ > > > > > > $(BUILD_OUTPUT_DIR)/j2re-image/man/man1 ; \ > > > > > > fi > > > > > > +endif > > > > > > touch stamps/add-netx.stamp > > > > > > > > > > > > clean-add-netx: > > > > > > @@ -1499,7 +1505,8 @@ > > > > > > rm -f $(BUILD_OUTPUT_DIR)/j2re-image/man/man1/javaws.1 > > > > > > rm -f stamps/add-netx.stamp > > > > > > > > > > > > -stamps/add-netx-debug.stamp: stamps/netx-dist.stamp extra-lib/about.jar > > > > > > +stamps/add-netx-debug.stamp: stamps/netx-dist.stamp stamps/about.stamp > > > > > > +if ENABLE_NETX > > > > > > cp -pPRf $(abs_top_builddir)/netx.build/lib/classes.jar \ > > > > > > $(DEBUG_BUILD_OUTPUT_DIR)/j2sdk-image/jre/lib/netx.jar > > > > > > cp -pPRf $(abs_top_builddir)/netx.build/lib/classes.jar \ > > > > > > @@ -1516,6 +1523,7 @@ > > > > > > cp $(NETX_SRCDIR)/javaws.1 \ > > > > > > $(DEBUG_BUILD_OUTPUT_DIR)/j2re-image/man/man1 ; \ > > > > > > fi > > > > > > +endif > > > > > > touch stamps/add-netx-debug.stamp > > > > > > > > > > > > clean-add-netx-debug: > > > > > > @@ -1693,6 +1701,7 @@ > > > > > > find $(NETX_SRCDIR) -name '*.java' | sort > $@ > > > > > > > > > > > > stamps/netx.stamp: netx-source-files.txt stamps/rt-class-files.stamp > > > > > > +if ENABLE_NETX > > > > > > mkdir -p $(abs_top_builddir)/netx.build > > > > > > $(BOOT_DIR)/bin/javac $(IT_JAVACFLAGS) \ > > > > > > -d $(abs_top_builddir)/netx.build \ > > > > > > @@ -1700,10 +1709,12 @@ > > > > > > -classpath $(RUNTIME) -bootclasspath \'\' \ > > > > > > @netx-source-files.txt > > > > > > cp -r $(NETX_RESOURCE_DIR) $(abs_top_builddir)/netx.build/net/sourceforge/jnlp > > > > > > +endif > > > > > > mkdir -p stamps > > > > > > touch $@ > > > > > > > > > > > > stamps/netx-dist.stamp: stamps/netx.stamp > > > > > > +if ENABLE_NETX > > > > > > (cd $(abs_top_builddir)/netx.build ; \ > > > > > > mkdir -p lib ; \ > > > > > > $(BOOT_DIR)/bin/jar cf lib/classes.jar javax/jnlp net ; \ > > > > > > @@ -1713,6 +1724,7 @@ > > > > > > $(BOOT_DIR)/bin/jar uf $(abs_top_builddir)/netx.build/lib/classes.jar \ > > > > > > `find . -type f -not -name '*.java'` ; \ > > > > > > $(ZIP) -qr $(abs_top_builddir)/netx.build/lib/src.zip javax net ) > > > > > > +endif > > > > > > mkdir -p stamps > > > > > > touch $@ > > > > > > > > > > > > @@ -1728,11 +1740,13 @@ > > > > > > > > > > > > stamps/extra-class-files.stamp: $(INITIAL_BOOTSTRAP_LINK_STAMP) \ > > > > > > extra-source-files.txt stamps/netx.stamp > > > > > > +if ENABLE_NETX > > > > > > mkdir -p extra-lib > > > > > > $(BOOT_DIR)/bin/javac $(IT_JAVACFLAGS) -d extra-lib \ > > > > > > -sourcepath extra -cp netx.build \ > > > > > > -bootclasspath $(RUNTIME) @extra-source-files.txt > > > > > > cp -r $(NETX_EXTRA_DIR) extra-lib/net/sourceforge/jnlp/about > > > > > > +endif > > > > > > mkdir -p stamps > > > > > > touch $@ > > > > > > > > > > > > @@ -1741,8 +1755,16 @@ > > > > > > rm -f stamps/extra-class-files.stamp > > > > > > rm -f extra-source-files.txt > > > > > > > > > > > > -extra-lib/about.jar: stamps/extra-class-files.stamp > > > > > > - $(BOOT_DIR)/bin/jar cf $@ -C extra-lib net ; > > > > > > +stamps/about.stamp: stamps/extra-class-files.stamp > > > > > > +if ENABLE_NETX > > > > > > + $(BOOT_DIR)/bin/jar cf extra-lib/about.jar -C extra-lib net > > > > > > +endif > > > > > > + mkdir -p stamps > > > > > > + touch $@ > > > > > > + > > > > > > +clean-about: > > > > > > + rm -f extra-lib/about.jar > > > > > > + rm -f stamps/about.stamp > > > > > > > > > > > > # PulseAudio based mixer > > > > > > # (pulse-java) > > > > > > diff -r 17c34c4c6fae acinclude.m4 > > > > > > --- a/acinclude.m4 Wed Nov 10 16:30:08 2010 +0000 > > > > > > +++ b/acinclude.m4 Thu Nov 11 15:55:47 2010 +0000 > > > > > > @@ -1459,12 +1459,17 @@ > > > > > > > > > > > > AC_DEFUN_ONCE([IT_CHECK_PLUGIN], > > > > > > [ > > > > > > +AC_REQUIRE([IT_CHECK_NETX]) > > > > > > AC_MSG_CHECKING([whether to build the browser plugin]) > > > > > > AC_ARG_ENABLE([plugin], > > > > > > [AS_HELP_STRING([--disable-plugin], > > > > > > [Disable compilation of browser plugin])], > > > > > > [enable_plugin="${enableval}"], [enable_plugin="yes"]) > > > > > > AC_MSG_RESULT(${enable_plugin}) > > > > > > +if test "x${enable_netx}" = "xno" ; then > > > > > > + AC_MSG_WARN([Plugin can not be built without NetX; disabling plugin]) > > > > > > + enable_plugin=no; > > > > > > +fi > > > > > > ]) > > > > > > > > > > > > AC_DEFUN_ONCE([IT_CHECK_PLUGIN_DEPENDENCIES], > > > > > > @@ -1556,3 +1561,14 @@ > > > > > > AM_CONDITIONAL([HAS_PAX], test x"${it_cv_pax}" = "xyes") > > > > > > AC_PROVIDE([$0])dnl > > > > > > ]) > > > > > > + > > > > > > +AC_DEFUN_ONCE([IT_CHECK_NETX], > > > > > > +[ > > > > > > +AC_MSG_CHECKING([whether to build NetX]) > > > > > > +AC_ARG_ENABLE([webstart], > > > > > > + [AS_HELP_STRING([--disable-webstart], > > > > > > + [Disable compilation of Web Start support])], > > > > > > + [enable_netx="${enableval}"], [enable_netx="yes"]) > > > > > > +AC_MSG_RESULT(${enable_netx}) > > > > > > +AM_CONDITIONAL(ENABLE_NETX, test "x${enable_netx}" = "xyes") > > > > > > +]) > > > > > > > > > > > > > -- > > > > Andrew :) > > > > > > > > Free Java Software Engineer > > > > Red Hat, Inc. (http://www.redhat.com) > > > > > > > > Support Free Java! > > > > Contribute to GNU Classpath and the OpenJDK > > > > http://www.gnu.org/software/classpath > > > > http://openjdk.java.net > > > > PGP Key: 94EFD9D8 (http://subkeys.pgp.net) > > > > Fingerprint = F8EF F1EA 401E 2E60 15FA 7927 142C 2591 94EF D9D8 > > > > -- > > Andrew :) > > > > Free Java Software Engineer > > Red Hat, Inc. (http://www.redhat.com) > > > > Support Free Java! > > Contribute to GNU Classpath and the OpenJDK > > http://www.gnu.org/software/classpath > > http://openjdk.java.net > > PGP Key: 94EFD9D8 (http://subkeys.pgp.net) > > Fingerprint = F8EF F1EA 401E 2E60 15FA 7927 142C 2591 94EF D9D8 -- Andrew :) Free Java Software Engineer Red Hat, Inc. (http://www.redhat.com) Support Free Java! Contribute to GNU Classpath and the OpenJDK http://www.gnu.org/software/classpath http://openjdk.java.net PGP Key: 94EFD9D8 (http://subkeys.pgp.net) Fingerprint = F8EF F1EA 401E 2E60 15FA 7927 142C 2591 94EF D9D8 From andrew at icedtea.classpath.org Thu Nov 11 14:36:04 2010 From: andrew at icedtea.classpath.org (andrew at icedtea.classpath.org) Date: Thu, 11 Nov 2010 22:36:04 +0000 Subject: /hg/icedtea6: 2 new changesets Message-ID: changeset 9560facaefcc in /hg/icedtea6 details: http://icedtea.classpath.org/hg/icedtea6?cmd=changeset;node=9560facaefcc author: Stefan Ring date: Thu Nov 11 21:25:15 2010 +0000 CACAO: adapted arm-arch-defines.patch 2010-11-06 Stefan Ring * patches/cacao/arm-arch-defines.patch: Adapted to new Boehm GC version. changeset 5772aff6fc53 in /hg/icedtea6 details: http://icedtea.classpath.org/hg/icedtea6?cmd=changeset;node=5772aff6fc53 author: Stefan Ring date: Thu Nov 11 21:01:13 2010 +0100 * Makefile.am: Upgrade CACAO version, use .tar.gz archive diffstat: 3 files changed, 13 insertions(+), 22 deletions(-) ChangeLog | 9 +++++++++ Makefile.am | 8 ++++---- patches/cacao/arm-arch-defines.patch | 18 ------------------ diffs (60 lines): diff -r cb572d31894b -r 5772aff6fc53 ChangeLog --- a/ChangeLog Thu Nov 11 21:15:23 2010 +0000 +++ b/ChangeLog Thu Nov 11 21:01:13 2010 +0100 @@ -1,3 +1,12 @@ 2010-11-11 Pavel Tisnovsky + + * Makefile.am: Upgrade CACAO version, use .tar.gz archive + +2010-11-11 Stefan Ring + + * patches/cacao/arm-arch-defines.patch: + Adapted to new Boehm GC version. + 2010-11-11 Pavel Tisnovsky * Makefile.am: Add new patch. diff -r cb572d31894b -r 5772aff6fc53 Makefile.am --- a/Makefile.am Thu Nov 11 21:15:23 2010 +0000 +++ b/Makefile.am Thu Nov 11 21:01:13 2010 +0100 @@ -5,11 +5,11 @@ OPENJDK_VERSION = b20 OPENJDK_VERSION = b20 OPENJDK_URL = http://download.java.net/openjdk/jdk6/promoted/$(OPENJDK_VERSION)/ -CACAO_VERSION = e321b101a9ee -CACAO_SHA256SUM = 46bc5b6212c199dc4a3dbebe6386fe15a8248625a5dffa17115aab394a298444 +CACAO_VERSION = 6a5eda011e49 +CACAO_SHA256SUM = 57f3abd73688cb8861875e2f21be9ec8a0c7c234e1e694489e3efa4436e9228c CACAO_BASE_URL = http://mips.complang.tuwien.ac.at -CACAO_URL = $(CACAO_BASE_URL)/hg/cacao/archive/$(CACAO_VERSION).tar.bz2 -CACAO_SRC_ZIP = cacao-$(CACAO_VERSION).tar.bz2 +CACAO_URL = $(CACAO_BASE_URL)/hg/cacao/archive/$(CACAO_VERSION).tar.gz +CACAO_SRC_ZIP = cacao-$(CACAO_VERSION).tar.gz JAXWS_DROP_URL = http://icedtea.classpath.org/download/drops JAXWS_DROP_ZIP = jdk6-jaxws-b20.zip diff -r cb572d31894b -r 5772aff6fc53 patches/cacao/arm-arch-defines.patch --- a/patches/cacao/arm-arch-defines.patch Thu Nov 11 21:15:23 2010 +0000 +++ b/patches/cacao/arm-arch-defines.patch Thu Nov 11 21:01:13 2010 +0100 @@ -1,21 +1,3 @@ diff -Nru cacao.orig/cacao/src/mm/boehm- -diff -Nru cacao.orig/cacao/src/mm/boehm-gc/libatomic_ops-1.2/src/atomic_ops/sysdeps/gcc/arm.h cacao/cacao/src/mm/boehm-gc/libatomic_ops-1.2/src/atomic_ops/sysdeps/gcc/arm.h ---- cacao.orig/cacao/src/mm/boehm-gc/libatomic_ops-1.2/src/atomic_ops/sysdeps/gcc/arm.h 2010-05-19 12:14:46.000000000 +0100 -+++ cacao/cacao/src/mm/boehm-gc/libatomic_ops-1.2/src/atomic_ops/sysdeps/gcc/arm.h 2010-06-21 18:35:53.000000000 +0100 -@@ -33,7 +33,13 @@ - - /* NEC LE-IT: gcc has no way to easily check the arm architecture - * but defines only one of __ARM_ARCH_x__ to be true */ --#if defined(__ARM_ARCH_6__) || defined(__ARM_ARCH_6K__) || defined(__ARM_ARCH_7__) -+#if defined(__ARM_ARCH_6__) || defined(__ARM_ARCH_6J__) \ -+ || defined(__ARM_ARCH_6K__) || defined(__ARM_ARCH_6Z__) \ -+ || defined(__ARM_ARCH_6ZK__) || defined(__ARM_ARCH_6T2__) \ -+ || defined(__ARM_ARCH_6M__) \ -+ || defined(__ARM_ARCH_7__) || defined(__ARM_ARCH_7A__) \ -+ || defined(__ARM_ARCH_7R__) || defined(__ARM_ARCH_7M__) -+ - AO_INLINE void - AO_nop_full() - { diff -Nru cacao.orig/cacao/src/vm/jit/arm/md-atomic.hpp cacao/cacao/src/vm/jit/arm/md-atomic.hpp --- cacao.orig/cacao/src/vm/jit/arm/md-atomic.hpp 2010-05-19 12:14:46.000000000 +0100 +++ cacao/cacao/src/vm/jit/arm/md-atomic.hpp 2010-06-21 18:35:53.000000000 +0100 From andrew at icedtea.classpath.org Thu Nov 11 14:37:44 2010 From: andrew at icedtea.classpath.org (andrew at icedtea.classpath.org) Date: Thu, 11 Nov 2010 22:37:44 +0000 Subject: /hg/release/icedtea6-1.9: Allow NetX to be disabled. Message-ID: changeset caaf70f3a98f in /hg/release/icedtea6-1.9 details: http://icedtea.classpath.org/hg/release/icedtea6-1.9?cmd=changeset;node=caaf70f3a98f author: Andrew John Hughes date: Thu Nov 11 22:37:38 2010 +0000 Allow NetX to be disabled. 2010-11-11 Andrew John Hughes * Makefile.am: (clean-local): Add clean-about. (.PHONY): Likewise. (ICEDTEA_PATCHES): Only apply netx.patch and netx-umask.patch if NetX is enabled. (add-netx): Depend on about.stamp. Add ENABLE_NETX conditional. (add-netx-debug): Likewise. (netx): Add ENABLE_NETX conditional. (netx-dist): Likewise. (extra-class- files): Likewise. (about): New target (from extra- lib/about.jar). Add ENABLE_NETX conditional. (clean- about): New target to remove about.jar. * acinclude.m4: (IT_CHECK_PLUGIN): Require IT_CHECK_NETX. Disable if NetX is turned off. (IT_CHECK_NETX): Add --disable-webstart option. diffstat: 3 files changed, 67 insertions(+), 8 deletions(-) ChangeLog | 21 +++++++++++++++++++++ Makefile.am | 38 ++++++++++++++++++++++++++++++-------- acinclude.m4 | 16 ++++++++++++++++ diffs (205 lines): diff -r 17c34c4c6fae -r caaf70f3a98f ChangeLog --- a/ChangeLog Wed Nov 10 16:30:08 2010 +0000 +++ b/ChangeLog Thu Nov 11 22:37:38 2010 +0000 @@ -1,3 +1,24 @@ 2010-11-10 Andrew John Hughes + + * Makefile.am: + (clean-local): Add clean-about. + (.PHONY): Likewise. + (ICEDTEA_PATCHES): Only apply netx.patch and + netx-umask.patch if NetX is enabled. + (add-netx): Depend on about.stamp. Add + ENABLE_NETX conditional. + (add-netx-debug): Likewise. + (netx): Add ENABLE_NETX conditional. + (netx-dist): Likewise. + (extra-class-files): Likewise. + (about): New target (from extra-lib/about.jar). + Add ENABLE_NETX conditional. + (clean-about): New target to remove about.jar. + * acinclude.m4: + (IT_CHECK_PLUGIN): Require IT_CHECK_NETX. + Disable if NetX is turned off. + (IT_CHECK_NETX): Add --disable-webstart option. + 2010-11-10 Andrew John Hughes * Makefile.am: Remove additional whitespace. diff -r 17c34c4c6fae -r caaf70f3a98f Makefile.am --- a/Makefile.am Wed Nov 10 16:30:08 2010 +0000 +++ b/Makefile.am Thu Nov 11 22:37:38 2010 +0000 @@ -288,8 +288,6 @@ ICEDTEA_PATCHES = \ patches/icedtea-policy-evaluation.patch \ patches/hotspot/$(HSBUILD)/update-bootclasspath.patch \ patches/libpng.patch \ - patches/extensions/netx.patch \ - patches/extensions/netx-umask.patch \ patches/icedtea-jtreg-httpTest.patch \ patches/arm.patch \ patches/openjdk/6678385-window_movement_crasher.patch \ @@ -337,6 +335,12 @@ if WITH_RHINO if WITH_RHINO ICEDTEA_PATCHES += \ patches/icedtea-rhino.patch +endif + +if ENABLE_NETX +ICEDTEA_PATCHES += \ + patches/extensions/netx.patch \ + patches/extensions/netx-umask.patch endif if ENABLE_PLUGIN @@ -579,7 +583,7 @@ clean-local: clean-jtreg clean-jtreg-rep clean-icedtea-against-icedtea clean-icedtea-debug-against-icedtea \ clean-icedtea-against-ecj clean-extract-ecj clean-generated clean-replace-hotspot \ clean-rewriter clean-rewrite-rhino clean-extra clean-rt clean-bootstrap-directory \ - clean-bootstrap-directory-ecj clean-bootstrap-directory-symlink \ + clean-bootstrap-directory-ecj clean-bootstrap-directory-symlink clean-about \ clean-bootstrap-directory-symlink-ecj if [ -e bootstrap ]; then \ rmdir bootstrap ; \ @@ -613,7 +617,7 @@ install: clean-ports clean-overlay clean-extract-ecj clean-extract clean-extract-openjdk \ clean-replace-hotspot clean-generated clean-download clean-hgforest clean-download-openjdk \ clean-rewriter clean-rewrite-rhino clean-add-netx clean-add-netx-debug \ - clean-add-plugin clean-add-plugin-debug + clean-add-plugin clean-add-plugin-debug clean-about env: @echo 'unset JAVA_HOME' @@ -1469,7 +1473,8 @@ clean-add-plugin-debug: rm -f $(DEBUG_BUILD_OUTPUT_DIR)/j2re-image/lib/plugin.jar rm -f stamps/add-plugin-debug.stamp -stamps/add-netx.stamp: stamps/netx-dist.stamp extra-lib/about.jar +stamps/add-netx.stamp: stamps/netx-dist.stamp stamps/about.stamp +if ENABLE_NETX cp -pPRf $(abs_top_builddir)/netx.build/lib/classes.jar \ $(BUILD_OUTPUT_DIR)/j2sdk-image/jre/lib/netx.jar cp -pPRf $(abs_top_builddir)/netx.build/lib/classes.jar \ @@ -1486,6 +1491,7 @@ stamps/add-netx.stamp: stamps/netx-dist. cp $(NETX_SRCDIR)/javaws.1 \ $(BUILD_OUTPUT_DIR)/j2re-image/man/man1 ; \ fi +endif touch stamps/add-netx.stamp clean-add-netx: @@ -1499,7 +1505,8 @@ clean-add-netx: rm -f $(BUILD_OUTPUT_DIR)/j2re-image/man/man1/javaws.1 rm -f stamps/add-netx.stamp -stamps/add-netx-debug.stamp: stamps/netx-dist.stamp extra-lib/about.jar +stamps/add-netx-debug.stamp: stamps/netx-dist.stamp stamps/about.stamp +if ENABLE_NETX cp -pPRf $(abs_top_builddir)/netx.build/lib/classes.jar \ $(DEBUG_BUILD_OUTPUT_DIR)/j2sdk-image/jre/lib/netx.jar cp -pPRf $(abs_top_builddir)/netx.build/lib/classes.jar \ @@ -1516,6 +1523,7 @@ stamps/add-netx-debug.stamp: stamps/netx cp $(NETX_SRCDIR)/javaws.1 \ $(DEBUG_BUILD_OUTPUT_DIR)/j2re-image/man/man1 ; \ fi +endif touch stamps/add-netx-debug.stamp clean-add-netx-debug: @@ -1693,6 +1701,7 @@ netx-source-files.txt: find $(NETX_SRCDIR) -name '*.java' | sort > $@ stamps/netx.stamp: netx-source-files.txt stamps/rt-class-files.stamp +if ENABLE_NETX mkdir -p $(abs_top_builddir)/netx.build $(BOOT_DIR)/bin/javac $(IT_JAVACFLAGS) \ -d $(abs_top_builddir)/netx.build \ @@ -1700,10 +1709,12 @@ stamps/netx.stamp: netx-source-files.txt -classpath $(RUNTIME) -bootclasspath \'\' \ @netx-source-files.txt cp -r $(NETX_RESOURCE_DIR) $(abs_top_builddir)/netx.build/net/sourceforge/jnlp +endif mkdir -p stamps touch $@ stamps/netx-dist.stamp: stamps/netx.stamp +if ENABLE_NETX (cd $(abs_top_builddir)/netx.build ; \ mkdir -p lib ; \ $(BOOT_DIR)/bin/jar cf lib/classes.jar javax/jnlp net ; \ @@ -1713,6 +1724,7 @@ stamps/netx-dist.stamp: stamps/netx.stam $(BOOT_DIR)/bin/jar uf $(abs_top_builddir)/netx.build/lib/classes.jar \ `find . -type f -not -name '*.java'` ; \ $(ZIP) -qr $(abs_top_builddir)/netx.build/lib/src.zip javax net ) +endif mkdir -p stamps touch $@ @@ -1728,11 +1740,13 @@ extra-source-files.txt: stamps/extra-class-files.stamp: $(INITIAL_BOOTSTRAP_LINK_STAMP) \ extra-source-files.txt stamps/netx.stamp +if ENABLE_NETX mkdir -p extra-lib $(BOOT_DIR)/bin/javac $(IT_JAVACFLAGS) -d extra-lib \ -sourcepath extra -cp netx.build \ -bootclasspath $(RUNTIME) @extra-source-files.txt cp -r $(NETX_EXTRA_DIR) extra-lib/net/sourceforge/jnlp/about +endif mkdir -p stamps touch $@ @@ -1741,8 +1755,16 @@ clean-extra: rm -f stamps/extra-class-files.stamp rm -f extra-source-files.txt -extra-lib/about.jar: stamps/extra-class-files.stamp - $(BOOT_DIR)/bin/jar cf $@ -C extra-lib net ; +stamps/about.stamp: stamps/extra-class-files.stamp +if ENABLE_NETX + $(BOOT_DIR)/bin/jar cf extra-lib/about.jar -C extra-lib net +endif + mkdir -p stamps + touch $@ + +clean-about: + rm -f extra-lib/about.jar + rm -f stamps/about.stamp # PulseAudio based mixer # (pulse-java) diff -r 17c34c4c6fae -r caaf70f3a98f acinclude.m4 --- a/acinclude.m4 Wed Nov 10 16:30:08 2010 +0000 +++ b/acinclude.m4 Thu Nov 11 22:37:38 2010 +0000 @@ -1459,12 +1459,17 @@ AC_DEFUN_ONCE([IT_OBTAIN_HG_REVISIONS], AC_DEFUN_ONCE([IT_CHECK_PLUGIN], [ +AC_REQUIRE([IT_CHECK_NETX]) AC_MSG_CHECKING([whether to build the browser plugin]) AC_ARG_ENABLE([plugin], [AS_HELP_STRING([--disable-plugin], [Disable compilation of browser plugin])], [enable_plugin="${enableval}"], [enable_plugin="yes"]) AC_MSG_RESULT(${enable_plugin}) +if test "x${enable_netx}" = "xno" ; then + AC_MSG_WARN([Plugin can not be built without NetX; disabling plugin]) + enable_plugin=no; +fi ]) AC_DEFUN_ONCE([IT_CHECK_PLUGIN_DEPENDENCIES], @@ -1556,3 +1561,14 @@ AM_CONDITIONAL([HAS_PAX], test x"${it_cv AM_CONDITIONAL([HAS_PAX], test x"${it_cv_pax}" = "xyes") AC_PROVIDE([$0])dnl ]) + +AC_DEFUN_ONCE([IT_CHECK_NETX], +[ +AC_MSG_CHECKING([whether to build NetX]) +AC_ARG_ENABLE([webstart], + [AS_HELP_STRING([--disable-webstart], + [Disable compilation of Web Start support])], + [enable_netx="${enableval}"], [enable_netx="yes"]) +AC_MSG_RESULT(${enable_netx}) +AM_CONDITIONAL(ENABLE_NETX, test "x${enable_netx}" = "xyes") +]) From omajid at redhat.com Thu Nov 11 14:38:31 2010 From: omajid at redhat.com (Omair Majid) Date: Thu, 11 Nov 2010 17:38:31 -0500 Subject: [icedtea-web] RFC: integrate logging into netx and plugin Message-ID: <4CDC7067.4070702@redhat.com> Hi, The attached patch integrates the logging option from the deployment configuration into netx and plugin. Both plugin and netx will now log (if logging is enabled) their stdout/stderr to the java.stdout and java.stderr files under the logging directory. Running the plugin with the environment variable ICEDTEAPLUGIN_DEBUG=true will force stdout and stderr to be redirected to the logging files. ChangeLog: 2010-11-11 Omair Majid * netx/net/sourceforge/jnlp/runtime/DeploymentConfiguration.java: Add KEY_ENABLE_LOGGING. (loadDefaultProperties): Use KEY_ENABLE_LOGGING. * netx/net/sourceforge/jnlp/runtime/JNLPRuntime.java: Add redirectStreams, STDERR_FILE and STDOUT_FILE. (initialize): Call initializeStreams. (initializeStreams): New method. Redirects or duplicates stdout and stderr to the logging files as required. (setRedirectStreams): New method. Sets whether stdout/stderr streams should be redirected. * plugin/icedteanp/java/sun/applet/PluginMain.java: (PluginMain): Move code for creating logging files into JNLPRuntime. Call JNLPRuntime.setRedirectStreams to redirect streams. (TeeOutputStream): Move to its own class. * netx/net/sourceforge/jnlp/util/TeeOutputStream.java: Moved from PluginMain into this new class. Any thoughts or comments? Cheers, Omair -------------- next part -------------- A non-text attachment was scrubbed... Name: icedtea-web-logging-01.patch Type: text/x-patch Size: 10610 bytes Desc: not available Url : http://mail.openjdk.java.net/pipermail/distro-pkg-dev/attachments/20101111/46f2b55a/icedtea-web-logging-01.patch From ahughes at redhat.com Thu Nov 11 16:17:52 2010 From: ahughes at redhat.com (Dr Andrew John Hughes) Date: Fri, 12 Nov 2010 00:17:52 +0000 Subject: [1.8] RFC: Allow NetX to be disabled Message-ID: <20101112001752.GD5773@rivendell.middle-earth.co.uk> Same again for 1.8: 2010-11-11 Andrew John Hughes * Makefile.am: (ICEDTEA_PATCHES): Only apply netx.patch and netx-umask.patch if NetX is enabled. (distclean-local): Add clean-about. (.PHONY): Likewise. (icedtea): Depend on about.stamp. Add ENABLE_NETX conditional. (icedtea-debug): Likewise. (netx): Add ENABLE_NETX conditional. (netx-dist): Likewise. (extra-class-files): Likewise. (about): New target (from extra-lib/about.jar). Add ENABLE_NETX conditional. (clean-about): New target to remove about.jar. * acinclude.m4: (IT_CHECK_PLUGIN): Require IT_CHECK_NETX. Disable if NetX is turned off. (IT_CHECK_NETX): Add --disable-webstart option. -- Andrew :) Free Java Software Engineer Red Hat, Inc. (http://www.redhat.com) Support Free Java! Contribute to GNU Classpath and the OpenJDK http://www.gnu.org/software/classpath http://openjdk.java.net PGP Key: 94EFD9D8 (http://subkeys.pgp.net) Fingerprint = F8EF F1EA 401E 2E60 15FA 7927 142C 2591 94EF D9D8 -------------- next part -------------- diff -r 78de2d8168d8 Makefile.am --- a/Makefile.am Mon Oct 18 12:47:36 2010 -0400 +++ b/Makefile.am Fri Nov 12 00:01:20 2010 +0000 @@ -341,9 +341,6 @@ patches/icedtea-sh4-support.patch \ patches/icedtea-policy-evaluation.patch \ patches/libpng.patch \ - patches/extensions/netx.patch \ - patches/extensions/netx-dist.patch \ - patches/extensions/netx-umask.patch \ patches/icedtea-jtreg-httpTest.patch \ patches/ant-1.8.0.patch \ patches/icedtea-nss-6763530.patch \ @@ -377,6 +374,13 @@ patches/icedtea-rhino.patch endif +if ENABLE_NETX +ICEDTEA_PATCHES += \ + patches/extensions/netx.patch \ + patches/extensions/netx-dist.patch \ + patches/extensions/netx-umask.patch +endif + if ENABLE_PLUGIN ICEDTEA_PATCHES += \ patches/extensions/liveconnect.patch \ @@ -614,7 +618,7 @@ #FIXME (clean): Should become clean-local. distclean-local: clean-copy clean-jtreg clean-jtreg-reports $(PULSE_JAVA_CLEAN_TARGET) \ - clean-netx clean-plugin clean-liveconnect + clean-netx clean-plugin clean-liveconnect clean-about rm -rf stamps rm -f rt-source-files.txt \ extra-source-files.txt @@ -646,7 +650,8 @@ clean-icedtea icedtea-against-icedtea clean-icedtea-ecj \ clean-tools-jar clean-visualvm clean-nbplatform \ clean-copy clean-rt $(ICEDTEAPLUGIN_CLEAN) hotspot \ - hotspot-helper clean-extra clean-jtreg clean-jtreg-reports + hotspot-helper clean-extra clean-jtreg clean-jtreg-reports \ + clean-about env: @echo 'unset JAVA_HOME' @@ -1303,7 +1308,7 @@ # you change it in the icedtea-debug target as well. stamps/icedtea.stamp: stamps/bootstrap-directory-symlink.stamp \ stamps/netx-dist.stamp $(OPENJDK_TREE) stamps/plugin.stamp \ - extra-lib/about.jar stamps/cacao.stamp \ + stamps/about.stamp stamps/cacao.stamp \ stamps/visualvm.stamp $(PULSE_JAVA_TARGET) stamps/rewrite-rhino.stamp $(ARCH_PREFIX) $(MAKE) \ $(ICEDTEA_ENV) \ @@ -1349,6 +1354,7 @@ cp -r netbeans/nbbuild/netbeans_visualvm/profiler3 \ $(BUILD_OUTPUT_DIR)/j2sdk-image/lib/visualvm endif +if ENABLE_NETX cp $(NETX_RESOURCE_DIR)/about.jnlp extra-lib/about.jar \ $(BUILD_OUTPUT_DIR)/j2re-image/lib ; \ cp $(NETX_RESOURCE_DIR)/about.jnlp extra-lib/about.jar \ @@ -1361,6 +1367,7 @@ cp $(NETX_SRCDIR)/javaws.1 \ $(BUILD_OUTPUT_DIR)/j2re-image/man/man1 ; \ fi +endif if ZERO_BUILD printf -- '-zero ALIASED_TO -server\n' >> $(BUILD_JRE_ARCH_DIR)/jvm.cfg endif @@ -1401,7 +1408,7 @@ stamps/icedtea-debug.stamp: stamps/bootstrap-directory-symlink.stamp \ stamps/netx-dist.stamp $(OPENJDK_TREE) stamps/plugin.stamp \ - extra-lib/about.jar stamps/cacao.stamp \ + stamps/about.stamp stamps/cacao.stamp \ stamps/visualvm.stamp $(PULSE_JAVA_TARGET) stamps/rewrite-rhino.stamp $(ARCH_PREFIX) $(MAKE) \ $(ICEDTEA_ENV) \ @@ -1447,6 +1454,7 @@ cp -r netbeans/nbbuild/netbeans_visualvm/profiler3 \ $(BUILD_OUTPUT_DIR)/j2sdk-image/lib/visualvm endif +if ENABLE_NETX cp $(NETX_RESOURCE_DIR)/default.jnlp extra-lib/about.jar \ $(BUILD_OUTPUT_DIR)-debug/j2re-image/lib ; \ cp $(NETX_RESOURCE_DIR)/default.jnlp extra-lib/about.jar \ @@ -1459,6 +1467,7 @@ cp $(NETX_SRCDIR)/javaws.1 \ $(DEBUG_BUILD_OUTPUT_DIR)/j2re-image/man/man1 ; \ fi +endif if ZERO_BUILD printf -- '-zero ALIASED_TO -server\n' >> $(BUILD_DEBUG_JRE_ARCH_DIR)/jvm.cfg endif @@ -1663,6 +1672,7 @@ find $(NETX_SRCDIR) -name '*.java' | sort > $@ stamps/netx.stamp: netx-source-files.txt stamps/rt-class-files.stamp +if ENABLE_NETX mkdir -p $(abs_top_builddir)/netx.build $(ICEDTEA_BOOT_DIR)/bin/javac $(IT_JAVACFLAGS) \ -d $(abs_top_builddir)/netx.build \ @@ -1671,10 +1681,12 @@ -bootclasspath \'\' \ @netx-source-files.txt cp -r $(NETX_RESOURCE_DIR) $(abs_top_builddir)/netx.build/net/sourceforge/jnlp +endif mkdir -p stamps touch $@ stamps/netx-dist.stamp: stamps/netx.stamp +if ENABLE_NETX (cd $(abs_top_builddir)/netx.build ; \ mkdir -p lib ; \ $(ICEDTEA_BOOT_DIR)/bin/jar cf lib/classes.jar javax/jnlp net ; \ @@ -1684,6 +1696,7 @@ $(ICEDTEA_BOOT_DIR)/bin/jar uf $(abs_top_builddir)/netx.build/lib/classes.jar \ `find . -type f -not -name '*.java'` ; \ $(ZIP) -qr $(abs_top_builddir)/netx.build/lib/src.zip javax net ) +endif mkdir -p stamps touch $@ @@ -1699,12 +1712,14 @@ stamps/extra-class-files.stamp: $(INITIAL_BOOTSTRAP_LINK_STAMP) \ extra-source-files.txt stamps/netx.stamp +if ENABLE_NETX mkdir -p extra-lib $(ICEDTEA_BOOT_DIR)/bin/javac $(MEMORY_LIMIT) -g -d extra-lib \ -source 1.5 \ -sourcepath extra -cp netx.build:$(ICEDTEA_RT) \ -bootclasspath \'\' @extra-source-files.txt cp -r $(NETX_EXTRA_DIR) extra-lib/net/sourceforge/jnlp/about +endif mkdir -p stamps touch $@ @@ -1713,13 +1728,21 @@ rm -f stamps/extra-class-files.stamp rm -f extra-source-files.txt -extra-lib/about.jar: stamps/extra-class-files.stamp +stamps/about.stamp: stamps/extra-class-files.stamp +if ENABLE_NETX if ! test -d $(ICEDTEA_BOOT_DIR) ; \ then \ $(JAR) cf $@ -C extra-lib net ; \ else \ $(ICEDTEA_BOOT_DIR)/bin/jar cf $@ -C extra-lib net ; \ fi +endif + mkdir -p stamps + touch $@ + +clean-about: + rm -f extra-lib/about.jar + rm -f stamps/about.stamp # PulseAudio based mixer # (pulse-java) diff -r 78de2d8168d8 acinclude.m4 --- a/acinclude.m4 Mon Oct 18 12:47:36 2010 -0400 +++ b/acinclude.m4 Fri Nov 12 00:01:20 2010 +0000 @@ -1440,12 +1440,17 @@ AC_DEFUN_ONCE([IT_CHECK_PLUGIN], [ +AC_REQUIRE([IT_CHECK_NETX]) AC_MSG_CHECKING([whether to build the browser plugin]) AC_ARG_ENABLE([plugin], [AS_HELP_STRING([--disable-plugin], [Disable compilation of browser plugin])], [enable_plugin="${enableval}"], [enable_plugin="yes"]) AC_MSG_RESULT(${enable_plugin}) +if test "x${enable_netx}" = "xno" ; then + AC_MSG_WARN([Plugin can not be built without NetX; disabling plugin]) + enable_plugin=no; +fi ]) AC_DEFUN_ONCE([IT_CHECK_PLUGIN_DEPENDENCIES], @@ -1536,3 +1541,14 @@ AC_SUBST(NSS_LIBDIR) AC_CONFIG_FILES([nss.cfg]) ]) + +AC_DEFUN_ONCE([IT_CHECK_NETX], +[ +AC_MSG_CHECKING([whether to build NetX]) +AC_ARG_ENABLE([webstart], + [AS_HELP_STRING([--disable-webstart], + [Disable compilation of Web Start support])], + [enable_netx="${enableval}"], [enable_netx="yes"]) +AC_MSG_RESULT(${enable_netx}) +AM_CONDITIONAL(ENABLE_NETX, test "x${enable_netx}" = "xyes") +]) From andrew at icedtea.classpath.org Thu Nov 11 16:28:33 2010 From: andrew at icedtea.classpath.org (andrew at icedtea.classpath.org) Date: Fri, 12 Nov 2010 00:28:33 +0000 Subject: /hg/release/icedtea6-1.9: 2 new changesets Message-ID: changeset 619cb29138b3 in /hg/release/icedtea6-1.9 details: http://icedtea.classpath.org/hg/release/icedtea6-1.9?cmd=changeset;node=619cb29138b3 author: Andrew John Hughes date: Fri Nov 12 00:27:05 2010 +0000 Update NEWS. 2010-11-11 Andrew John Hughes * NEWS: Updated. changeset 1c9dabc8729f in /hg/release/icedtea6-1.9 details: http://icedtea.classpath.org/hg/release/icedtea6-1.9?cmd=changeset;node=1c9dabc8729f author: Andrew John Hughes date: Fri Nov 12 00:28:26 2010 +0000 Update to 1.9.2pre. 2010-11-11 Andrew John Hughes * configure.ac: Update to 1.9.2pre. diffstat: 3 files changed, 24 insertions(+), 1 deletion(-) ChangeLog | 8 ++++++++ NEWS | 15 +++++++++++++++ configure.ac | 2 +- diffs (51 lines): diff -r caaf70f3a98f -r 1c9dabc8729f ChangeLog --- a/ChangeLog Thu Nov 11 22:37:38 2010 +0000 +++ b/ChangeLog Fri Nov 12 00:28:26 2010 +0000 @@ -1,3 +1,11 @@ 2010-11-11 Andrew John Hughes + + * configure.ac: Update to 1.9.2pre. + +2010-11-11 Andrew John Hughes + + * NEWS: Updated. + 2010-11-11 Andrew John Hughes * Makefile.am: diff -r caaf70f3a98f -r 1c9dabc8729f NEWS --- a/NEWS Thu Nov 11 22:37:38 2010 +0000 +++ b/NEWS Fri Nov 12 00:28:26 2010 +0000 @@ -10,8 +10,23 @@ CVE-XXXX-YYYY: http://www.cve.mitre.org/ New in release 1.9.2 (2010-11-XX): +* Upgrade to latest revision of hs19 (b09). +* Allow the building of NetX to be disabled. +* Additional S390 size_t fixes. +* Switch to the IcedTea server for JAXP, JAF and JAXWS tarballs. * Backports + - S6622432: RFE: Performance improvements to java.math.BigDecimal + - S6850606: Regression from JDK 1.6.0_12 + - S6876282: BigDecimal's divide(BigDecimal bd, RoundingFormat r) produces incorrect result - S6991430, PR579: Zero PowerPC fix. + - S6703377: freetype: glyph vector outline is not translated correctly + - S6853592: VM test nsk.regression.b4261880 fails with "X Error of failed request: BadWindow" + inconsistently. +* Bug fixes + - RH647737: Disable compressed oops in hs19 to avoid Eclipse failures. + - RH643674: Update fontconfig files for Fedora 11, 12, 13 and 14. +* NetX + - Do not prompt user multiple times for the same certificate. New in release 1.9.1 (2010-10-13): diff -r caaf70f3a98f -r 1c9dabc8729f configure.ac --- a/configure.ac Thu Nov 11 22:37:38 2010 +0000 +++ b/configure.ac Fri Nov 12 00:28:26 2010 +0000 @@ -1,4 +1,4 @@ AC_INIT([icedtea6],[1.9.1],[distro-pkg-d -AC_INIT([icedtea6],[1.9.1],[distro-pkg-dev at openjdk.java.net]) +AC_INIT([icedtea6],[1.9.2pre],[distro-pkg-dev at openjdk.java.net]) AM_INIT_AUTOMAKE([1.9 tar-pax foreign]) AC_CONFIG_FILES([Makefile]) From omajid at redhat.com Thu Nov 11 17:14:39 2010 From: omajid at redhat.com (Omair Majid) Date: Thu, 11 Nov 2010 20:14:39 -0500 Subject: [icedtea-web] RFC: reduce permissions on created files Message-ID: <4CDC94FF.50701@redhat.com> Hi, The attached patch tries to make files created by netx/plugin more secure by removing unnecessary permissions. IcedTea6 used to carry a patch to change the umask used by the javaws process which IcedTea-Web does not. This patch tries to make netx/plugin behave like they would in the presence of such a patch. This patch does not change the file permissions on files that are cached (mostly because I dont see why they should be protected), but does change permissions on KeyStores, native directories created under /tmp/, lock files, files created through the JNLP api and log files. ChangeLog: 2010-11-11 Omair Majid * netx/net/sourceforge/jnlp/util/FileUtils.java (restrictFile): New method. Removes extra permissions on a file. * netx/net/sourceforge/jnlp/Launcher.java (markNetxRunning): Do not grant unnecessary file permissions. * netx/net/sourceforge/jnlp/security/viewer/CertificatePane.java (ImportButtonListener.actionPerformed): Likewise. (RemoveButtonListener.actionPerformed): Likewise. * netx/net/sourceforge/jnlp/services/SingleInstanceLock.java (createWithPort): Likewise. (getLockFile): Likewise. * netx/net/sourceforge/jnlp/services/XExtendedService.java (openFile): Likewise. * netx/net/sourceforge/jnlp/services/XFileSaveService.java (writeToFile): Likewise. * netx/net/sourceforge/jnlp/services/XPersistenceService.java (create): Likewise. * netx/net/sourceforge/jnlp/util/XDesktopEntry.java (installDesktopLauncher): Likewise. * plugin/icedteanp/java/sun/applet/PluginMain.java (PluginMain): Likewise. Any thoughts or comments? Cheers, Omair -------------- next part -------------- A non-text attachment was scrubbed... Name: icedtea-web-reduce-file-permissions.patch Type: text/x-patch Size: 13966 bytes Desc: not available Url : http://mail.openjdk.java.net/pipermail/distro-pkg-dev/attachments/20101111/266629ee/icedtea-web-reduce-file-permissions.patch From liuqi at icedtea.classpath.org Fri Nov 12 00:30:36 2010 From: liuqi at icedtea.classpath.org (liuqi at icedtea.classpath.org) Date: Fri, 12 Nov 2010 08:30:36 +0000 Subject: /hg/openjdk6-mips: Fix the bug related to SP adjusting in genera... Message-ID: changeset 87db8957684e in /hg/openjdk6-mips details: http://icedtea.classpath.org/hg/openjdk6-mips?cmd=changeset;node=87db8957684e author: LIN Chuanwen date: Fri Nov 12 15:27:30 2010 +0800 Fix the bug related to SP adjusting in generate_deopt_blob. Before jump to interpreter, the SP must be adjusted to the end of the interpreter frame. diffstat: 1 file changed, 1 insertion(+), 4 deletions(-) hotspot/src/cpu/mips/vm/sharedRuntime_mips.cpp | 5 +---- diffs (15 lines): diff -r f4c60f770c45 -r 87db8957684e hotspot/src/cpu/mips/vm/sharedRuntime_mips.cpp --- a/hotspot/src/cpu/mips/vm/sharedRuntime_mips.cpp Thu Nov 11 19:35:44 2010 +0800 +++ b/hotspot/src/cpu/mips/vm/sharedRuntime_mips.cpp Fri Nov 12 15:27:30 2010 +0800 @@ -3497,10 +3497,7 @@ void SharedRuntime::generate_deopt_blob( __ empty_FPU_stack(); //FIXME, we should consider about float and double // Push a float or double return value if necessary. - //__ leave(); - __ move(SP, FP); - __ lw(RA, SP, 1 * wordSize); - __ lw(FP, SP, 0 * wordSize); + __ leave(); // Jump to interpreter __ jr(RA); From dbhole at redhat.com Fri Nov 12 03:50:26 2010 From: dbhole at redhat.com (Deepak Bhole) Date: Fri, 12 Nov 2010 06:50:26 -0500 Subject: [1.9] RFC: Allow NetX to be disabled In-Reply-To: <20101111222114.GC5773@rivendell.middle-earth.co.uk> References: <20101111141800.GB9134@rivendell.middle-earth.co.uk> <20101111144925.GC6888@redhat.com> <20101111151258.GC9134@rivendell.middle-earth.co.uk> <20101111155628.GD9134@rivendell.middle-earth.co.uk> <20101111201053.GC3282@redhat.com> <20101111211037.GA5773@rivendell.middle-earth.co.uk> <20101111211343.GA3047@redhat.com> <20101111213410.GB5773@rivendell.middle-earth.co.uk> <20101111214956.GB3047@redhat.com> <20101111222114.GC5773@rivendell.middle-earth.co.uk> Message-ID: <20101112115025.GA6117@redhat.com> * Dr Andrew John Hughes [2010-11-11 17:21]: > On 16:49 Thu 11 Nov , Deepak Bhole wrote: > > * Dr Andrew John Hughes [2010-11-11 16:34]: > > > On 16:13 Thu 11 Nov , Deepak Bhole wrote: > > > > * Dr Andrew John Hughes [2010-11-11 16:10]: > > > > > On 15:10 Thu 11 Nov , Deepak Bhole wrote: > > > > > > * Dr Andrew John Hughes [2010-11-11 10:56]: > > > > > > > On 15:12 Thu 11 Nov , Dr Andrew John Hughes wrote: > > > > > > > > On 09:49 Thu 11 Nov , Deepak Bhole wrote: > > > > > > > > > * Dr Andrew John Hughes [2010-11-11 09:21]: > > > > > > > > > > > +]) > > > > > > > > > > > > > > > > > > > > New version; turns out I missed the -debug target... :-( > > > > > > > > > > > > > > > > > > Just tried building with --disable-webstart. The classes are not built, > > > > > > > > > however javaws still is. javaws shouldn't get built with > > > > > > > > > --disable-webstart as it'd be unusable without the classes. > > > > > > > > > > > > > > > > > > > > > > > > > Yeah just spotted that; it's because it's added by netx.patch and produced > > > > > > > > by the OpenJDK build, not our makefiles. Testing a new version. > > > > > > > > > > > > > > > > > Cheers, > > > > > > > > > Deepak > > > > > > > > > > > > > > > > -- > > > > > > > > Andrew :) > > > > > > > > > > > > > > > > Free Java Software Engineer > > > > > > > > Red Hat, Inc. (http://www.redhat.com) > > > > > > > > > > > > > > > > Support Free Java! > > > > > > > > Contribute to GNU Classpath and the OpenJDK > > > > > > > > http://www.gnu.org/software/classpath > > > > > > > > http://openjdk.java.net > > > > > > > > PGP Key: 94EFD9D8 (http://subkeys.pgp.net) > > > > > > > > Fingerprint = F8EF F1EA 401E 2E60 15FA 7927 142C 2591 94EF D9D8 > > > > > > > > > > > > > > New version attached. > > > > > > > > > > > > Built it with and without webstart. Without webstart is as expected now > > > > > > -- no related files/classes. With webstart enabled, javaws builds and > > > > > > works. > > > > > > > > > > > > > > > > Good. > > > > > > > > > > > I was unable to configure+make by just reconfiguring without the > > > > > > --disable-webstart.... make ran into error with missing classes and what > > > > > > not. It worked fine after a make clean though. Is this expected? > > > > > > > > > > > > > > > > Not sure. Can you provide more details on exactly what you tried? > > > > > > > > > > > > > I hg up -C'd, applied the patch. > > > > > > > > > > Interesting, I've never used -C. Never want to discard stuff :-) > > > > > > > I usually avoid it too. But I keep a separate copy of a 'non-commit' > > tree that I use only for testing. hg -C is very useful there to clean > > stuff :) > > > > > > Then: > > > > ./autogen.sh > > > > > > > > [.../]configure --disable-docs --with-openjdk --with-parallel-jobs=4 > > > > --disable-webstart > > > > make > > > > > > > > > > Ok so you did a non-bootstrap build which is good. Mine are always full builds. > > > > > > > Right, both with and without webstart were non-bootstrap. > > > > > > Things built fine, nothing from webstart in build tree. Then, from the > > > > same dir, I did: > > > > > > > > [.../]configure --disable-docs --with-openjdk --with-parallel-jobs=4 > > > > make > > > > > > > > It tried to build it and failed due to a bunch of classes not being > > > > found. > > > > > > > > > > Can you provide the output from this? > > > > > > > I will have to start another build. Will do it now... > > > > > Are you building in-tree or out-of-tree? > > > > > > > out of tree. > > > > > My guess is that if you don't do a clean inbetween, it will think some of the > > > targets have been performed e.g. netx.stamp will exist so the netx classes > > > won't be compiled. IMHO, that seems perfectly valid behaviour. If you > > > reconfigure, you should clean. Same happens if you e.g. turn on the cacao > > > build. > > > > > > > That is exactly what seems to be happening.. if we are okay without > > having to require a clean after reconfigure, I think this is acceptable. > > > > I assume you mean 'with'. I don't see any easy way of changing this and this wouldn't > be the only case. Certainly not something we want to do on a release branch... :-D > Doh! Yes, without I meant :) OK for commit. Cheers, Deepak > > OK for commit in that case. > > > > Cheers, > > Deepak > > > > > > Deepak > > > > > > > > > > Cheers, > > > > > > Deepak > > > > > > > > > > > > > -- > > > > > > > Andrew :) > > > > > > > > > > > > > > Free Java Software Engineer > > > > > > > Red Hat, Inc. (http://www.redhat.com) > > > > > > > > > > > > > > Support Free Java! > > > > > > > Contribute to GNU Classpath and the OpenJDK > > > > > > > http://www.gnu.org/software/classpath > > > > > > > http://openjdk.java.net > > > > > > > PGP Key: 94EFD9D8 (http://subkeys.pgp.net) > > > > > > > Fingerprint = F8EF F1EA 401E 2E60 15FA 7927 142C 2591 94EF D9D8 > > > > > > > > > > > > > diff -r 17c34c4c6fae Makefile.am > > > > > > > --- a/Makefile.am Wed Nov 10 16:30:08 2010 +0000 > > > > > > > +++ b/Makefile.am Thu Nov 11 15:55:47 2010 +0000 > > > > > > > @@ -288,8 +288,6 @@ > > > > > > > patches/icedtea-policy-evaluation.patch \ > > > > > > > patches/hotspot/$(HSBUILD)/update-bootclasspath.patch \ > > > > > > > patches/libpng.patch \ > > > > > > > - patches/extensions/netx.patch \ > > > > > > > - patches/extensions/netx-umask.patch \ > > > > > > > patches/icedtea-jtreg-httpTest.patch \ > > > > > > > patches/arm.patch \ > > > > > > > patches/openjdk/6678385-window_movement_crasher.patch \ > > > > > > > @@ -339,6 +337,12 @@ > > > > > > > patches/icedtea-rhino.patch > > > > > > > endif > > > > > > > > > > > > > > +if ENABLE_NETX > > > > > > > +ICEDTEA_PATCHES += \ > > > > > > > + patches/extensions/netx.patch \ > > > > > > > + patches/extensions/netx-umask.patch > > > > > > > +endif > > > > > > > + > > > > > > > if ENABLE_PLUGIN > > > > > > > ICEDTEA_PATCHES += \ > > > > > > > patches/extensions/liveconnect.patch > > > > > > > @@ -579,7 +583,7 @@ > > > > > > > clean-icedtea-against-icedtea clean-icedtea-debug-against-icedtea \ > > > > > > > clean-icedtea-against-ecj clean-extract-ecj clean-generated clean-replace-hotspot \ > > > > > > > clean-rewriter clean-rewrite-rhino clean-extra clean-rt clean-bootstrap-directory \ > > > > > > > - clean-bootstrap-directory-ecj clean-bootstrap-directory-symlink \ > > > > > > > + clean-bootstrap-directory-ecj clean-bootstrap-directory-symlink clean-about \ > > > > > > > clean-bootstrap-directory-symlink-ecj > > > > > > > if [ -e bootstrap ]; then \ > > > > > > > rmdir bootstrap ; \ > > > > > > > @@ -613,7 +617,7 @@ > > > > > > > clean-ports clean-overlay clean-extract-ecj clean-extract clean-extract-openjdk \ > > > > > > > clean-replace-hotspot clean-generated clean-download clean-hgforest clean-download-openjdk \ > > > > > > > clean-rewriter clean-rewrite-rhino clean-add-netx clean-add-netx-debug \ > > > > > > > - clean-add-plugin clean-add-plugin-debug > > > > > > > + clean-add-plugin clean-add-plugin-debug clean-about > > > > > > > > > > > > > > env: > > > > > > > @echo 'unset JAVA_HOME' > > > > > > > @@ -1469,7 +1473,8 @@ > > > > > > > rm -f $(DEBUG_BUILD_OUTPUT_DIR)/j2re-image/lib/plugin.jar > > > > > > > rm -f stamps/add-plugin-debug.stamp > > > > > > > > > > > > > > -stamps/add-netx.stamp: stamps/netx-dist.stamp extra-lib/about.jar > > > > > > > +stamps/add-netx.stamp: stamps/netx-dist.stamp stamps/about.stamp > > > > > > > +if ENABLE_NETX > > > > > > > cp -pPRf $(abs_top_builddir)/netx.build/lib/classes.jar \ > > > > > > > $(BUILD_OUTPUT_DIR)/j2sdk-image/jre/lib/netx.jar > > > > > > > cp -pPRf $(abs_top_builddir)/netx.build/lib/classes.jar \ > > > > > > > @@ -1486,6 +1491,7 @@ > > > > > > > cp $(NETX_SRCDIR)/javaws.1 \ > > > > > > > $(BUILD_OUTPUT_DIR)/j2re-image/man/man1 ; \ > > > > > > > fi > > > > > > > +endif > > > > > > > touch stamps/add-netx.stamp > > > > > > > > > > > > > > clean-add-netx: > > > > > > > @@ -1499,7 +1505,8 @@ > > > > > > > rm -f $(BUILD_OUTPUT_DIR)/j2re-image/man/man1/javaws.1 > > > > > > > rm -f stamps/add-netx.stamp > > > > > > > > > > > > > > -stamps/add-netx-debug.stamp: stamps/netx-dist.stamp extra-lib/about.jar > > > > > > > +stamps/add-netx-debug.stamp: stamps/netx-dist.stamp stamps/about.stamp > > > > > > > +if ENABLE_NETX > > > > > > > cp -pPRf $(abs_top_builddir)/netx.build/lib/classes.jar \ > > > > > > > $(DEBUG_BUILD_OUTPUT_DIR)/j2sdk-image/jre/lib/netx.jar > > > > > > > cp -pPRf $(abs_top_builddir)/netx.build/lib/classes.jar \ > > > > > > > @@ -1516,6 +1523,7 @@ > > > > > > > cp $(NETX_SRCDIR)/javaws.1 \ > > > > > > > $(DEBUG_BUILD_OUTPUT_DIR)/j2re-image/man/man1 ; \ > > > > > > > fi > > > > > > > +endif > > > > > > > touch stamps/add-netx-debug.stamp > > > > > > > > > > > > > > clean-add-netx-debug: > > > > > > > @@ -1693,6 +1701,7 @@ > > > > > > > find $(NETX_SRCDIR) -name '*.java' | sort > $@ > > > > > > > > > > > > > > stamps/netx.stamp: netx-source-files.txt stamps/rt-class-files.stamp > > > > > > > +if ENABLE_NETX > > > > > > > mkdir -p $(abs_top_builddir)/netx.build > > > > > > > $(BOOT_DIR)/bin/javac $(IT_JAVACFLAGS) \ > > > > > > > -d $(abs_top_builddir)/netx.build \ > > > > > > > @@ -1700,10 +1709,12 @@ > > > > > > > -classpath $(RUNTIME) -bootclasspath \'\' \ > > > > > > > @netx-source-files.txt > > > > > > > cp -r $(NETX_RESOURCE_DIR) $(abs_top_builddir)/netx.build/net/sourceforge/jnlp > > > > > > > +endif > > > > > > > mkdir -p stamps > > > > > > > touch $@ > > > > > > > > > > > > > > stamps/netx-dist.stamp: stamps/netx.stamp > > > > > > > +if ENABLE_NETX > > > > > > > (cd $(abs_top_builddir)/netx.build ; \ > > > > > > > mkdir -p lib ; \ > > > > > > > $(BOOT_DIR)/bin/jar cf lib/classes.jar javax/jnlp net ; \ > > > > > > > @@ -1713,6 +1724,7 @@ > > > > > > > $(BOOT_DIR)/bin/jar uf $(abs_top_builddir)/netx.build/lib/classes.jar \ > > > > > > > `find . -type f -not -name '*.java'` ; \ > > > > > > > $(ZIP) -qr $(abs_top_builddir)/netx.build/lib/src.zip javax net ) > > > > > > > +endif > > > > > > > mkdir -p stamps > > > > > > > touch $@ > > > > > > > > > > > > > > @@ -1728,11 +1740,13 @@ > > > > > > > > > > > > > > stamps/extra-class-files.stamp: $(INITIAL_BOOTSTRAP_LINK_STAMP) \ > > > > > > > extra-source-files.txt stamps/netx.stamp > > > > > > > +if ENABLE_NETX > > > > > > > mkdir -p extra-lib > > > > > > > $(BOOT_DIR)/bin/javac $(IT_JAVACFLAGS) -d extra-lib \ > > > > > > > -sourcepath extra -cp netx.build \ > > > > > > > -bootclasspath $(RUNTIME) @extra-source-files.txt > > > > > > > cp -r $(NETX_EXTRA_DIR) extra-lib/net/sourceforge/jnlp/about > > > > > > > +endif > > > > > > > mkdir -p stamps > > > > > > > touch $@ > > > > > > > > > > > > > > @@ -1741,8 +1755,16 @@ > > > > > > > rm -f stamps/extra-class-files.stamp > > > > > > > rm -f extra-source-files.txt > > > > > > > > > > > > > > -extra-lib/about.jar: stamps/extra-class-files.stamp > > > > > > > - $(BOOT_DIR)/bin/jar cf $@ -C extra-lib net ; > > > > > > > +stamps/about.stamp: stamps/extra-class-files.stamp > > > > > > > +if ENABLE_NETX > > > > > > > + $(BOOT_DIR)/bin/jar cf extra-lib/about.jar -C extra-lib net > > > > > > > +endif > > > > > > > + mkdir -p stamps > > > > > > > + touch $@ > > > > > > > + > > > > > > > +clean-about: > > > > > > > + rm -f extra-lib/about.jar > > > > > > > + rm -f stamps/about.stamp > > > > > > > > > > > > > > # PulseAudio based mixer > > > > > > > # (pulse-java) > > > > > > > diff -r 17c34c4c6fae acinclude.m4 > > > > > > > --- a/acinclude.m4 Wed Nov 10 16:30:08 2010 +0000 > > > > > > > +++ b/acinclude.m4 Thu Nov 11 15:55:47 2010 +0000 > > > > > > > @@ -1459,12 +1459,17 @@ > > > > > > > > > > > > > > AC_DEFUN_ONCE([IT_CHECK_PLUGIN], > > > > > > > [ > > > > > > > +AC_REQUIRE([IT_CHECK_NETX]) > > > > > > > AC_MSG_CHECKING([whether to build the browser plugin]) > > > > > > > AC_ARG_ENABLE([plugin], > > > > > > > [AS_HELP_STRING([--disable-plugin], > > > > > > > [Disable compilation of browser plugin])], > > > > > > > [enable_plugin="${enableval}"], [enable_plugin="yes"]) > > > > > > > AC_MSG_RESULT(${enable_plugin}) > > > > > > > +if test "x${enable_netx}" = "xno" ; then > > > > > > > + AC_MSG_WARN([Plugin can not be built without NetX; disabling plugin]) > > > > > > > + enable_plugin=no; > > > > > > > +fi > > > > > > > ]) > > > > > > > > > > > > > > AC_DEFUN_ONCE([IT_CHECK_PLUGIN_DEPENDENCIES], > > > > > > > @@ -1556,3 +1561,14 @@ > > > > > > > AM_CONDITIONAL([HAS_PAX], test x"${it_cv_pax}" = "xyes") > > > > > > > AC_PROVIDE([$0])dnl > > > > > > > ]) > > > > > > > + > > > > > > > +AC_DEFUN_ONCE([IT_CHECK_NETX], > > > > > > > +[ > > > > > > > +AC_MSG_CHECKING([whether to build NetX]) > > > > > > > +AC_ARG_ENABLE([webstart], > > > > > > > + [AS_HELP_STRING([--disable-webstart], > > > > > > > + [Disable compilation of Web Start support])], > > > > > > > + [enable_netx="${enableval}"], [enable_netx="yes"]) > > > > > > > +AC_MSG_RESULT(${enable_netx}) > > > > > > > +AM_CONDITIONAL(ENABLE_NETX, test "x${enable_netx}" = "xyes") > > > > > > > +]) > > > > > > > > > > > > > > > > -- > > > > > Andrew :) > > > > > > > > > > Free Java Software Engineer > > > > > Red Hat, Inc. (http://www.redhat.com) > > > > > > > > > > Support Free Java! > > > > > Contribute to GNU Classpath and the OpenJDK > > > > > http://www.gnu.org/software/classpath > > > > > http://openjdk.java.net > > > > > PGP Key: 94EFD9D8 (http://subkeys.pgp.net) > > > > > Fingerprint = F8EF F1EA 401E 2E60 15FA 7927 142C 2591 94EF D9D8 > > > > > > -- > > > Andrew :) > > > > > > Free Java Software Engineer > > > Red Hat, Inc. (http://www.redhat.com) > > > > > > Support Free Java! > > > Contribute to GNU Classpath and the OpenJDK > > > http://www.gnu.org/software/classpath > > > http://openjdk.java.net > > > PGP Key: 94EFD9D8 (http://subkeys.pgp.net) > > > Fingerprint = F8EF F1EA 401E 2E60 15FA 7927 142C 2591 94EF D9D8 > > -- > Andrew :) > > Free Java Software Engineer > Red Hat, Inc. (http://www.redhat.com) > > Support Free Java! > Contribute to GNU Classpath and the OpenJDK > http://www.gnu.org/software/classpath > http://openjdk.java.net > PGP Key: 94EFD9D8 (http://subkeys.pgp.net) > Fingerprint = F8EF F1EA 401E 2E60 15FA 7927 142C 2591 94EF D9D8 From ahughes at redhat.com Fri Nov 12 03:54:18 2010 From: ahughes at redhat.com (Dr Andrew John Hughes) Date: Fri, 12 Nov 2010 11:54:18 +0000 Subject: [icedtea-web] RFC: reduce permissions on created files In-Reply-To: <4CDC94FF.50701@redhat.com> References: <4CDC94FF.50701@redhat.com> Message-ID: <20101112115418.GE5773@rivendell.middle-earth.co.uk> On 20:14 Thu 11 Nov , Omair Majid wrote: > Hi, > > The attached patch tries to make files created by netx/plugin more > secure by removing unnecessary permissions. IcedTea6 used to carry a > patch to change the umask used by the javaws process which IcedTea-Web > does not. This patch tries to make netx/plugin behave like they would in > the presence of such a patch. > > This patch does not change the file permissions on files that are cached > (mostly because I dont see why they should be protected), but does > change permissions on KeyStores, native directories created under /tmp/, > lock files, files created through the JNLP api and log files. > I think this is a better approach, though we should be aware that the permissions are now changed after the file has been created, whereas before (I presume) they were created with the correct permissions to begin with. > ChangeLog: > 2010-11-11 Omair Majid > > * netx/net/sourceforge/jnlp/util/FileUtils.java > (restrictFile): New method. Removes extra permissions on a file. > * netx/net/sourceforge/jnlp/Launcher.java > (markNetxRunning): Do not grant unnecessary file permissions. > * netx/net/sourceforge/jnlp/security/viewer/CertificatePane.java > (ImportButtonListener.actionPerformed): Likewise. > (RemoveButtonListener.actionPerformed): Likewise. > * netx/net/sourceforge/jnlp/services/SingleInstanceLock.java > (createWithPort): Likewise. > (getLockFile): Likewise. > * netx/net/sourceforge/jnlp/services/XExtendedService.java > (openFile): Likewise. > * netx/net/sourceforge/jnlp/services/XFileSaveService.java > (writeToFile): Likewise. > * netx/net/sourceforge/jnlp/services/XPersistenceService.java > (create): Likewise. > * netx/net/sourceforge/jnlp/util/XDesktopEntry.java > (installDesktopLauncher): Likewise. > * plugin/icedteanp/java/sun/applet/PluginMain.java > (PluginMain): Likewise. > > Any thoughts or comments? > > Cheers, > Omair > diff -r e82455c47f08 netx/net/sourceforge/jnlp/Launcher.java > --- a/netx/net/sourceforge/jnlp/Launcher.java Thu Nov 11 11:43:13 2010 -0500 > +++ b/netx/net/sourceforge/jnlp/Launcher.java Thu Nov 11 19:56:02 2010 -0500 > @@ -48,6 +48,7 @@ > import net.sourceforge.jnlp.runtime.JNLPRuntime; > import net.sourceforge.jnlp.services.InstanceExistsException; > import net.sourceforge.jnlp.services.ServiceUtil; > +import net.sourceforge.jnlp.util.FileUtils; > import net.sourceforge.jnlp.util.Reflect; > > import javax.swing.SwingUtilities; > @@ -729,6 +730,7 @@ > .getProperty(DeploymentConfiguration.KEY_USER_NETX_RUNNING_FILE)); > netxRunningFile.getParentFile().mkdirs(); > if (netxRunningFile.createNewFile()) { > + FileUtils.restrictFile(netxRunningFile, true); > FileOutputStream fos = new FileOutputStream(netxRunningFile); > try { > fos.write(message.getBytes()); > diff -r e82455c47f08 netx/net/sourceforge/jnlp/runtime/JNLPClassLoader.java > --- a/netx/net/sourceforge/jnlp/runtime/JNLPClassLoader.java Thu Nov 11 11:43:13 2010 -0500 > +++ b/netx/net/sourceforge/jnlp/runtime/JNLPClassLoader.java Thu Nov 11 19:56:02 2010 -0500 > @@ -815,7 +815,10 @@ > nativeDir = getNativeDir(); > > File outFile = new File(nativeDir, name); > - > + if (!outFile.isFile() && !outFile.createNewFile()) { > + throw new IOException("unable to create " + outFile); > + } > + FileUtils.restrictFile(outFile, true); > CacheUtil.streamCopy(jarFile.getInputStream(e), > new FileOutputStream(outFile)); > > @@ -842,6 +845,7 @@ > else { > // add this new native directory to the search path > addNativeDirectory(nativeDir); > + FileUtils.restrictFile(nativeDir, true); > return nativeDir; > } > } > diff -r e82455c47f08 netx/net/sourceforge/jnlp/security/CertWarningPane.java > --- a/netx/net/sourceforge/jnlp/security/CertWarningPane.java Thu Nov 11 11:43:13 2010 -0500 > +++ b/netx/net/sourceforge/jnlp/security/CertWarningPane.java Thu Nov 11 19:56:02 2010 -0500 > @@ -47,6 +47,7 @@ > import java.awt.GridLayout; > import java.awt.event.ActionEvent; > import java.awt.event.ActionListener; > +import java.io.File; > import java.io.FileOutputStream; > import java.io.OutputStream; > import java.security.KeyStore; > @@ -68,6 +69,7 @@ > import net.sourceforge.jnlp.security.KeyStores.Level; > import net.sourceforge.jnlp.security.KeyStores.Type; > import net.sourceforge.jnlp.security.SecurityWarning.AccessType; > +import net.sourceforge.jnlp.util.FileUtils; > > /** > * Provides the panel for using inside a SecurityWarningDialog. These dialogs are > @@ -246,7 +248,13 @@ > KeyStore ks = KeyStores.getKeyStore(Level.USER, Type.CERTS); > X509Certificate c = (X509Certificate) parent.getJarSigner().getPublisher(); > CertificateUtils.addToKeyStore(c, ks); > - OutputStream os = new FileOutputStream(KeyStores.getKeyStoreLocation(Level.USER, Type.CERTS)); > + File keyStoreFile = new File(KeyStores.getKeyStoreLocation(Level.USER, Type.CERTS)); > + if (!keyStoreFile.isFile()) { > + keyStoreFile.createNewFile(); > + } > + FileUtils.restrictFile(keyStoreFile, true); > + > + OutputStream os = new FileOutputStream(keyStoreFile); > ks.store(os, KeyStores.getPassword()); > if (JNLPRuntime.isDebug()) { > System.out.println("certificate is now permanently trusted"); > diff -r e82455c47f08 netx/net/sourceforge/jnlp/security/KeyStores.java > --- a/netx/net/sourceforge/jnlp/security/KeyStores.java Thu Nov 11 11:43:13 2010 -0500 > +++ b/netx/net/sourceforge/jnlp/security/KeyStores.java Thu Nov 11 19:56:02 2010 -0500 > @@ -53,6 +53,7 @@ > import net.sourceforge.jnlp.runtime.DeploymentConfiguration; > import net.sourceforge.jnlp.runtime.JNLPRuntime; > import net.sourceforge.jnlp.runtime.Translator; > +import net.sourceforge.jnlp.util.FileUtils; > > /** > * The KeyStores class allows easily accessing the various KeyStores > @@ -344,6 +345,8 @@ > FileOutputStream fos = new FileOutputStream(file); > ks.store(fos, password.toCharArray()); > fos.close(); > + > + FileUtils.restrictFile(file, true); > } > > // TODO catch exception when password is incorrect and prompt user > diff -r e82455c47f08 netx/net/sourceforge/jnlp/security/viewer/CertificatePane.java > --- a/netx/net/sourceforge/jnlp/security/viewer/CertificatePane.java Thu Nov 11 11:43:13 2010 -0500 > +++ b/netx/net/sourceforge/jnlp/security/viewer/CertificatePane.java Thu Nov 11 19:56:02 2010 -0500 > @@ -45,6 +45,7 @@ > import java.awt.event.ActionEvent; > import java.awt.event.ActionListener; > import java.awt.event.KeyEvent; > +import java.io.File; > import java.io.FileOutputStream; > import java.io.OutputStream; > import java.io.PrintStream; > @@ -76,6 +77,7 @@ > import net.sourceforge.jnlp.security.SecurityUtil; > import net.sourceforge.jnlp.security.SecurityWarningDialog; > import net.sourceforge.jnlp.security.KeyStores.Level; > +import net.sourceforge.jnlp.util.FileUtils; > > public class CertificatePane extends JPanel { > > @@ -361,8 +363,13 @@ > try { > KeyStore ks = keyStore; > CertificateUtils.addToKeyStore(chooser.getSelectedFile(), ks); > - OutputStream os = new FileOutputStream( > - KeyStores.getKeyStoreLocation(currentKeyStoreLevel, currentKeyStoreType)); > + File keyStoreFile = new File(KeyStores > + .getKeyStoreLocation(currentKeyStoreLevel, currentKeyStoreType)); > + if (!keyStoreFile.isFile()) { > + keyStoreFile.createNewFile(); > + } > + FileUtils.restrictFile(keyStoreFile, true); > + OutputStream os = new FileOutputStream(keyStoreFile); > ks.store(os, KeyStores.getPassword()); > repopulateTables(); > } catch (Exception ex) { > @@ -436,8 +443,14 @@ > JOptionPane.YES_NO_OPTION); > if (i == 0) { > keyStore.deleteEntry(alias); > - FileOutputStream fos = new FileOutputStream( > - KeyStores.getKeyStoreLocation(currentKeyStoreLevel, currentKeyStoreType)); > + File keyStoreFile = new File(KeyStores > + .getKeyStoreLocation(currentKeyStoreLevel, currentKeyStoreType)); > + if (!keyStoreFile.isFile()) { > + keyStoreFile.createNewFile(); > + } > + FileUtils.restrictFile(keyStoreFile, true); > + > + FileOutputStream fos = new FileOutputStream(keyStoreFile); > keyStore.store(fos, KeyStores.getPassword()); > fos.close(); > } > diff -r e82455c47f08 netx/net/sourceforge/jnlp/services/SingleInstanceLock.java > --- a/netx/net/sourceforge/jnlp/services/SingleInstanceLock.java Thu Nov 11 11:43:13 2010 -0500 > +++ b/netx/net/sourceforge/jnlp/services/SingleInstanceLock.java Thu Nov 11 19:56:02 2010 -0500 > @@ -67,6 +67,8 @@ > */ > public void createWithPort(int localPort) throws IOException { > > + lockFile.createNewFile(); > + FileUtils.restrictFile(lockFile, true); > BufferedWriter lockFileWriter = new BufferedWriter(new FileWriter(lockFile, false)); > lockFileWriter.write(String.valueOf(localPort)); > lockFileWriter.newLine(); > @@ -135,6 +137,9 @@ > if (!baseDir.isDirectory() && !baseDir.mkdirs()) { > throw new RuntimeException(R("RNoLockDir", baseDir)); > } > + > + FileUtils.restrictFile(baseDir, true); > + > String lockFileName = getLockFileName(); > File applicationLockFile = new File(baseDir, lockFileName); > return applicationLockFile; > diff -r e82455c47f08 netx/net/sourceforge/jnlp/services/XExtendedService.java > --- a/netx/net/sourceforge/jnlp/services/XExtendedService.java Thu Nov 11 11:43:13 2010 -0500 > +++ b/netx/net/sourceforge/jnlp/services/XExtendedService.java Thu Nov 11 19:56:02 2010 -0500 > @@ -23,6 +23,7 @@ > import javax.jnlp.FileContents; > > import net.sourceforge.jnlp.security.SecurityWarning.AccessType; > +import net.sourceforge.jnlp.util.FileUtils; > > /** > * Implementation of ExtendedService > @@ -36,6 +37,7 @@ > > /* FIXME: this opens a file with read/write mode, not just read or write */ > if (ServiceUtil.checkAccess(AccessType.READ_FILE, new Object[]{ file.getAbsolutePath() })) { > + FileUtils.restrictFile(file, true); > return (FileContents) ServiceUtil.createPrivilegedProxy(FileContents.class, > new XFileContents(file)); > } else { > diff -r e82455c47f08 netx/net/sourceforge/jnlp/services/XFileSaveService.java > --- a/netx/net/sourceforge/jnlp/services/XFileSaveService.java Thu Nov 11 11:43:13 2010 -0500 > +++ b/netx/net/sourceforge/jnlp/services/XFileSaveService.java Thu Nov 11 19:56:02 2010 -0500 > @@ -44,6 +44,7 @@ > import javax.jnlp.*; > > import net.sourceforge.jnlp.security.SecurityWarning.AccessType; > +import net.sourceforge.jnlp.util.FileUtils; > > import javax.swing.JFileChooser; > import javax.swing.JOptionPane; > @@ -123,6 +124,7 @@ > } else { > file.createNewFile(); > } > + FileUtils.restrictFile(file, true); > > if (file.canWrite()) { > FileOutputStream out = new FileOutputStream(file); > diff -r e82455c47f08 netx/net/sourceforge/jnlp/services/XPersistenceService.java > --- a/netx/net/sourceforge/jnlp/services/XPersistenceService.java Thu Nov 11 11:43:13 2010 -0500 > +++ b/netx/net/sourceforge/jnlp/services/XPersistenceService.java Thu Nov 11 19:56:02 2010 -0500 > @@ -26,6 +26,7 @@ > import net.sourceforge.jnlp.*; > import net.sourceforge.jnlp.cache.*; > import net.sourceforge.jnlp.runtime.*; > +import net.sourceforge.jnlp.util.FileUtils; > > /** > * The BasicService JNLP service. > @@ -99,6 +100,8 @@ > if (!file.createNewFile()) > throw new IOException("File already exists."); > > + FileUtils.restrictFile(file, true); > + > return maxsize; > } > > diff -r e82455c47f08 netx/net/sourceforge/jnlp/util/FileUtils.java > --- a/netx/net/sourceforge/jnlp/util/FileUtils.java Thu Nov 11 11:43:13 2010 -0500 > +++ b/netx/net/sourceforge/jnlp/util/FileUtils.java Thu Nov 11 19:56:02 2010 -0500 > @@ -72,6 +72,30 @@ > } > > /** > + * Sets the file permissions on a file such that it is not readable or > + * writable by anyone other than the owner. If writeableByOnwer is false, > + * even the owner can not write to it. The file must exist before this > + * method is called. > + */ > + public static void restrictFile(File file, boolean writableByOwner) { > + > + file.setExecutable(false, false); > + file.setReadable(false, false); > + file.setWritable(false, false); > + > + file.setReadable(true, true); > + > + if (writableByOwner) { > + file.setWritable(true, true); > + } > + > + if (file.isDirectory()) { > + file.setExecutable(true, true); > + } > + > + } > + > + /** > * Returns a String that is suitable for using in GUI elements for > * displaying (long) paths to users. > * > diff -r e82455c47f08 netx/net/sourceforge/jnlp/util/XDesktopEntry.java > --- a/netx/net/sourceforge/jnlp/util/XDesktopEntry.java Thu Nov 11 11:43:13 2010 -0500 > +++ b/netx/net/sourceforge/jnlp/util/XDesktopEntry.java Thu Nov 11 19:56:02 2010 -0500 > @@ -142,6 +142,10 @@ > if (!shortcutFile.getParentFile().isDirectory() && !shortcutFile.getParentFile().mkdirs()) { > throw new IOException(shortcutFile.getParentFile().toString()); > } > + > + shortcutFile.createNewFile(); > + FileUtils.restrictFile(shortcutFile, true); > + > /* > * Write out a Java String (UTF-16) as a UTF-8 file > */ > diff -r e82455c47f08 plugin/icedteanp/java/sun/applet/PluginMain.java > --- a/plugin/icedteanp/java/sun/applet/PluginMain.java Thu Nov 11 11:43:13 2010 -0500 > +++ b/plugin/icedteanp/java/sun/applet/PluginMain.java Thu Nov 11 19:56:02 2010 -0500 > @@ -77,6 +77,7 @@ > > import net.sourceforge.jnlp.runtime.DeploymentConfiguration; > import net.sourceforge.jnlp.runtime.JNLPRuntime; > +import net.sourceforge.jnlp.util.FileUtils; > > /** > * The main entry point into PluginAppletViewer. > @@ -130,8 +131,12 @@ > try { > File errFile = new File(logDir, PLUGIN_STDERR_FILE); > errFile.getParentFile().mkdirs(); > + errFile.createNewFile(); > + FileUtils.restrictFile(errFile, true); > File outFile = new File(logDir, PLUGIN_STDOUT_FILE); > outFile.getParentFile().mkdirs(); > + outFile.createNewFile(); > + FileUtils.restrictFile(outFile, true); > > System.setErr(new TeeOutputStream(new FileOutputStream(errFile), System.err)); > System.setOut(new TeeOutputStream(new FileOutputStream(outFile), System.out)); -- Andrew :) Free Java Software Engineer Red Hat, Inc. (http://www.redhat.com) Support Free Java! Contribute to GNU Classpath and the OpenJDK http://www.gnu.org/software/classpath http://openjdk.java.net PGP Key: 94EFD9D8 (http://subkeys.pgp.net) Fingerprint = F8EF F1EA 401E 2E60 15FA 7927 142C 2591 94EF D9D8 From omajid at redhat.com Fri Nov 12 06:44:38 2010 From: omajid at redhat.com (Omair Majid) Date: Fri, 12 Nov 2010 09:44:38 -0500 Subject: [icedtea-web] RFC: reduce permissions on created files In-Reply-To: <20101112115418.GE5773@rivendell.middle-earth.co.uk> References: <4CDC94FF.50701@redhat.com> <20101112115418.GE5773@rivendell.middle-earth.co.uk> Message-ID: <4CDD52D6.9020306@redhat.com> On 11/12/2010 06:54 AM, Dr Andrew John Hughes wrote: > On 20:14 Thu 11 Nov , Omair Majid wrote: >> Hi, >> >> The attached patch tries to make files created by netx/plugin more >> secure by removing unnecessary permissions. IcedTea6 used to carry a >> patch to change the umask used by the javaws process which IcedTea-Web >> does not. This patch tries to make netx/plugin behave like they would in >> the presence of such a patch. >> >> This patch does not change the file permissions on files that are cached >> (mostly because I dont see why they should be protected), but does >> change permissions on KeyStores, native directories created under /tmp/, >> lock files, files created through the JNLP api and log files. >> > > I think this is a better approach, though we should be aware that the permissions > are now changed after the file has been created, whereas before (I presume) they > were created with the correct permissions to begin with. > Hm... Does creating a new (blank) file, setting appropriate permissions on it and then writing content to it ensure that the content can not be seen by others? This was the original intent with this patch (I have since noticed one mistake in the patch). If creating a blank file, setting permissions on it and then writing actual content does not ensure the confidentiality of the data, then I would like to find another way to accomplish this. Thanks for looking over the patch. Cheers, Omair >> ChangeLog: >> 2010-11-11 Omair Majid >> >> * netx/net/sourceforge/jnlp/util/FileUtils.java >> (restrictFile): New method. Removes extra permissions on a file. >> * netx/net/sourceforge/jnlp/Launcher.java >> (markNetxRunning): Do not grant unnecessary file permissions. >> * netx/net/sourceforge/jnlp/security/viewer/CertificatePane.java >> (ImportButtonListener.actionPerformed): Likewise. >> (RemoveButtonListener.actionPerformed): Likewise. >> * netx/net/sourceforge/jnlp/services/SingleInstanceLock.java >> (createWithPort): Likewise. >> (getLockFile): Likewise. >> * netx/net/sourceforge/jnlp/services/XExtendedService.java >> (openFile): Likewise. >> * netx/net/sourceforge/jnlp/services/XFileSaveService.java >> (writeToFile): Likewise. >> * netx/net/sourceforge/jnlp/services/XPersistenceService.java >> (create): Likewise. >> * netx/net/sourceforge/jnlp/util/XDesktopEntry.java >> (installDesktopLauncher): Likewise. >> * plugin/icedteanp/java/sun/applet/PluginMain.java >> (PluginMain): Likewise. >> >> Any thoughts or comments? >> >> Cheers, >> Omair > >> diff -r e82455c47f08 netx/net/sourceforge/jnlp/Launcher.java >> --- a/netx/net/sourceforge/jnlp/Launcher.java Thu Nov 11 11:43:13 2010 -0500 >> +++ b/netx/net/sourceforge/jnlp/Launcher.java Thu Nov 11 19:56:02 2010 -0500 >> @@ -48,6 +48,7 @@ >> import net.sourceforge.jnlp.runtime.JNLPRuntime; >> import net.sourceforge.jnlp.services.InstanceExistsException; >> import net.sourceforge.jnlp.services.ServiceUtil; >> +import net.sourceforge.jnlp.util.FileUtils; >> import net.sourceforge.jnlp.util.Reflect; >> >> import javax.swing.SwingUtilities; >> @@ -729,6 +730,7 @@ >> .getProperty(DeploymentConfiguration.KEY_USER_NETX_RUNNING_FILE)); >> netxRunningFile.getParentFile().mkdirs(); >> if (netxRunningFile.createNewFile()) { >> + FileUtils.restrictFile(netxRunningFile, true); >> FileOutputStream fos = new FileOutputStream(netxRunningFile); >> try { >> fos.write(message.getBytes()); >> diff -r e82455c47f08 netx/net/sourceforge/jnlp/runtime/JNLPClassLoader.java >> --- a/netx/net/sourceforge/jnlp/runtime/JNLPClassLoader.java Thu Nov 11 11:43:13 2010 -0500 >> +++ b/netx/net/sourceforge/jnlp/runtime/JNLPClassLoader.java Thu Nov 11 19:56:02 2010 -0500 >> @@ -815,7 +815,10 @@ >> nativeDir = getNativeDir(); >> >> File outFile = new File(nativeDir, name); >> - >> + if (!outFile.isFile()&& !outFile.createNewFile()) { >> + throw new IOException("unable to create " + outFile); >> + } >> + FileUtils.restrictFile(outFile, true); >> CacheUtil.streamCopy(jarFile.getInputStream(e), >> new FileOutputStream(outFile)); >> >> @@ -842,6 +845,7 @@ >> else { >> // add this new native directory to the search path >> addNativeDirectory(nativeDir); >> + FileUtils.restrictFile(nativeDir, true); >> return nativeDir; >> } >> } >> diff -r e82455c47f08 netx/net/sourceforge/jnlp/security/CertWarningPane.java >> --- a/netx/net/sourceforge/jnlp/security/CertWarningPane.java Thu Nov 11 11:43:13 2010 -0500 >> +++ b/netx/net/sourceforge/jnlp/security/CertWarningPane.java Thu Nov 11 19:56:02 2010 -0500 >> @@ -47,6 +47,7 @@ >> import java.awt.GridLayout; >> import java.awt.event.ActionEvent; >> import java.awt.event.ActionListener; >> +import java.io.File; >> import java.io.FileOutputStream; >> import java.io.OutputStream; >> import java.security.KeyStore; >> @@ -68,6 +69,7 @@ >> import net.sourceforge.jnlp.security.KeyStores.Level; >> import net.sourceforge.jnlp.security.KeyStores.Type; >> import net.sourceforge.jnlp.security.SecurityWarning.AccessType; >> +import net.sourceforge.jnlp.util.FileUtils; >> >> /** >> * Provides the panel for using inside a SecurityWarningDialog. These dialogs are >> @@ -246,7 +248,13 @@ >> KeyStore ks = KeyStores.getKeyStore(Level.USER, Type.CERTS); >> X509Certificate c = (X509Certificate) parent.getJarSigner().getPublisher(); >> CertificateUtils.addToKeyStore(c, ks); >> - OutputStream os = new FileOutputStream(KeyStores.getKeyStoreLocation(Level.USER, Type.CERTS)); >> + File keyStoreFile = new File(KeyStores.getKeyStoreLocation(Level.USER, Type.CERTS)); >> + if (!keyStoreFile.isFile()) { >> + keyStoreFile.createNewFile(); >> + } >> + FileUtils.restrictFile(keyStoreFile, true); >> + >> + OutputStream os = new FileOutputStream(keyStoreFile); >> ks.store(os, KeyStores.getPassword()); >> if (JNLPRuntime.isDebug()) { >> System.out.println("certificate is now permanently trusted"); >> diff -r e82455c47f08 netx/net/sourceforge/jnlp/security/KeyStores.java >> --- a/netx/net/sourceforge/jnlp/security/KeyStores.java Thu Nov 11 11:43:13 2010 -0500 >> +++ b/netx/net/sourceforge/jnlp/security/KeyStores.java Thu Nov 11 19:56:02 2010 -0500 >> @@ -53,6 +53,7 @@ >> import net.sourceforge.jnlp.runtime.DeploymentConfiguration; >> import net.sourceforge.jnlp.runtime.JNLPRuntime; >> import net.sourceforge.jnlp.runtime.Translator; >> +import net.sourceforge.jnlp.util.FileUtils; >> >> /** >> * TheKeyStores class allows easily accessing the various KeyStores >> @@ -344,6 +345,8 @@ >> FileOutputStream fos = new FileOutputStream(file); >> ks.store(fos, password.toCharArray()); >> fos.close(); >> + >> + FileUtils.restrictFile(file, true); >> } >> >> // TODO catch exception when password is incorrect and prompt user >> diff -r e82455c47f08 netx/net/sourceforge/jnlp/security/viewer/CertificatePane.java >> --- a/netx/net/sourceforge/jnlp/security/viewer/CertificatePane.java Thu Nov 11 11:43:13 2010 -0500 >> +++ b/netx/net/sourceforge/jnlp/security/viewer/CertificatePane.java Thu Nov 11 19:56:02 2010 -0500 >> @@ -45,6 +45,7 @@ >> import java.awt.event.ActionEvent; >> import java.awt.event.ActionListener; >> import java.awt.event.KeyEvent; >> +import java.io.File; >> import java.io.FileOutputStream; >> import java.io.OutputStream; >> import java.io.PrintStream; >> @@ -76,6 +77,7 @@ >> import net.sourceforge.jnlp.security.SecurityUtil; >> import net.sourceforge.jnlp.security.SecurityWarningDialog; >> import net.sourceforge.jnlp.security.KeyStores.Level; >> +import net.sourceforge.jnlp.util.FileUtils; >> >> public class CertificatePane extends JPanel { >> >> @@ -361,8 +363,13 @@ >> try { >> KeyStore ks = keyStore; >> CertificateUtils.addToKeyStore(chooser.getSelectedFile(), ks); >> - OutputStream os = new FileOutputStream( >> - KeyStores.getKeyStoreLocation(currentKeyStoreLevel, currentKeyStoreType)); >> + File keyStoreFile = new File(KeyStores >> + .getKeyStoreLocation(currentKeyStoreLevel, currentKeyStoreType)); >> + if (!keyStoreFile.isFile()) { >> + keyStoreFile.createNewFile(); >> + } >> + FileUtils.restrictFile(keyStoreFile, true); >> + OutputStream os = new FileOutputStream(keyStoreFile); >> ks.store(os, KeyStores.getPassword()); >> repopulateTables(); >> } catch (Exception ex) { >> @@ -436,8 +443,14 @@ >> JOptionPane.YES_NO_OPTION); >> if (i == 0) { >> keyStore.deleteEntry(alias); >> - FileOutputStream fos = new FileOutputStream( >> - KeyStores.getKeyStoreLocation(currentKeyStoreLevel, currentKeyStoreType)); >> + File keyStoreFile = new File(KeyStores >> + .getKeyStoreLocation(currentKeyStoreLevel, currentKeyStoreType)); >> + if (!keyStoreFile.isFile()) { >> + keyStoreFile.createNewFile(); >> + } >> + FileUtils.restrictFile(keyStoreFile, true); >> + >> + FileOutputStream fos = new FileOutputStream(keyStoreFile); >> keyStore.store(fos, KeyStores.getPassword()); >> fos.close(); >> } >> diff -r e82455c47f08 netx/net/sourceforge/jnlp/services/SingleInstanceLock.java >> --- a/netx/net/sourceforge/jnlp/services/SingleInstanceLock.java Thu Nov 11 11:43:13 2010 -0500 >> +++ b/netx/net/sourceforge/jnlp/services/SingleInstanceLock.java Thu Nov 11 19:56:02 2010 -0500 >> @@ -67,6 +67,8 @@ >> */ >> public void createWithPort(int localPort) throws IOException { >> >> + lockFile.createNewFile(); >> + FileUtils.restrictFile(lockFile, true); >> BufferedWriter lockFileWriter = new BufferedWriter(new FileWriter(lockFile, false)); >> lockFileWriter.write(String.valueOf(localPort)); >> lockFileWriter.newLine(); >> @@ -135,6 +137,9 @@ >> if (!baseDir.isDirectory()&& !baseDir.mkdirs()) { >> throw new RuntimeException(R("RNoLockDir", baseDir)); >> } >> + >> + FileUtils.restrictFile(baseDir, true); >> + >> String lockFileName = getLockFileName(); >> File applicationLockFile = new File(baseDir, lockFileName); >> return applicationLockFile; >> diff -r e82455c47f08 netx/net/sourceforge/jnlp/services/XExtendedService.java >> --- a/netx/net/sourceforge/jnlp/services/XExtendedService.java Thu Nov 11 11:43:13 2010 -0500 >> +++ b/netx/net/sourceforge/jnlp/services/XExtendedService.java Thu Nov 11 19:56:02 2010 -0500 >> @@ -23,6 +23,7 @@ >> import javax.jnlp.FileContents; >> >> import net.sourceforge.jnlp.security.SecurityWarning.AccessType; >> +import net.sourceforge.jnlp.util.FileUtils; >> >> /** >> * Implementation of ExtendedService >> @@ -36,6 +37,7 @@ >> >> /* FIXME: this opens a file with read/write mode, not just read or write */ >> if (ServiceUtil.checkAccess(AccessType.READ_FILE, new Object[]{ file.getAbsolutePath() })) { >> + FileUtils.restrictFile(file, true); >> return (FileContents) ServiceUtil.createPrivilegedProxy(FileContents.class, >> new XFileContents(file)); >> } else { >> diff -r e82455c47f08 netx/net/sourceforge/jnlp/services/XFileSaveService.java >> --- a/netx/net/sourceforge/jnlp/services/XFileSaveService.java Thu Nov 11 11:43:13 2010 -0500 >> +++ b/netx/net/sourceforge/jnlp/services/XFileSaveService.java Thu Nov 11 19:56:02 2010 -0500 >> @@ -44,6 +44,7 @@ >> import javax.jnlp.*; >> >> import net.sourceforge.jnlp.security.SecurityWarning.AccessType; >> +import net.sourceforge.jnlp.util.FileUtils; >> >> import javax.swing.JFileChooser; >> import javax.swing.JOptionPane; >> @@ -123,6 +124,7 @@ >> } else { >> file.createNewFile(); >> } >> + FileUtils.restrictFile(file, true); >> >> if (file.canWrite()) { >> FileOutputStream out = new FileOutputStream(file); >> diff -r e82455c47f08 netx/net/sourceforge/jnlp/services/XPersistenceService.java >> --- a/netx/net/sourceforge/jnlp/services/XPersistenceService.java Thu Nov 11 11:43:13 2010 -0500 >> +++ b/netx/net/sourceforge/jnlp/services/XPersistenceService.java Thu Nov 11 19:56:02 2010 -0500 >> @@ -26,6 +26,7 @@ >> import net.sourceforge.jnlp.*; >> import net.sourceforge.jnlp.cache.*; >> import net.sourceforge.jnlp.runtime.*; >> +import net.sourceforge.jnlp.util.FileUtils; >> >> /** >> * The BasicService JNLP service. >> @@ -99,6 +100,8 @@ >> if (!file.createNewFile()) >> throw new IOException("File already exists."); >> >> + FileUtils.restrictFile(file, true); >> + >> return maxsize; >> } >> >> diff -r e82455c47f08 netx/net/sourceforge/jnlp/util/FileUtils.java >> --- a/netx/net/sourceforge/jnlp/util/FileUtils.java Thu Nov 11 11:43:13 2010 -0500 >> +++ b/netx/net/sourceforge/jnlp/util/FileUtils.java Thu Nov 11 19:56:02 2010 -0500 >> @@ -72,6 +72,30 @@ >> } >> >> /** >> + * Sets the file permissions on a file such that it is not readable or >> + * writable by anyone other than the owner. If writeableByOnwer is false, >> + * even the owner can not write to it. The file must exist before this >> + * method is called. >> + */ >> + public static void restrictFile(File file, boolean writableByOwner) { >> + >> + file.setExecutable(false, false); >> + file.setReadable(false, false); >> + file.setWritable(false, false); >> + >> + file.setReadable(true, true); >> + >> + if (writableByOwner) { >> + file.setWritable(true, true); >> + } >> + >> + if (file.isDirectory()) { >> + file.setExecutable(true, true); >> + } >> + >> + } >> + >> + /** >> * Returns a String that is suitable for using in GUI elements for >> * displaying (long) paths to users. >> * >> diff -r e82455c47f08 netx/net/sourceforge/jnlp/util/XDesktopEntry.java >> --- a/netx/net/sourceforge/jnlp/util/XDesktopEntry.java Thu Nov 11 11:43:13 2010 -0500 >> +++ b/netx/net/sourceforge/jnlp/util/XDesktopEntry.java Thu Nov 11 19:56:02 2010 -0500 >> @@ -142,6 +142,10 @@ >> if (!shortcutFile.getParentFile().isDirectory()&& !shortcutFile.getParentFile().mkdirs()) { >> throw new IOException(shortcutFile.getParentFile().toString()); >> } >> + >> + shortcutFile.createNewFile(); >> + FileUtils.restrictFile(shortcutFile, true); >> + >> /* >> * Write out a Java String (UTF-16) as a UTF-8 file >> */ >> diff -r e82455c47f08 plugin/icedteanp/java/sun/applet/PluginMain.java >> --- a/plugin/icedteanp/java/sun/applet/PluginMain.java Thu Nov 11 11:43:13 2010 -0500 >> +++ b/plugin/icedteanp/java/sun/applet/PluginMain.java Thu Nov 11 19:56:02 2010 -0500 >> @@ -77,6 +77,7 @@ >> >> import net.sourceforge.jnlp.runtime.DeploymentConfiguration; >> import net.sourceforge.jnlp.runtime.JNLPRuntime; >> +import net.sourceforge.jnlp.util.FileUtils; >> >> /** >> * The main entry point into PluginAppletViewer. >> @@ -130,8 +131,12 @@ >> try { >> File errFile = new File(logDir, PLUGIN_STDERR_FILE); >> errFile.getParentFile().mkdirs(); >> + errFile.createNewFile(); >> + FileUtils.restrictFile(errFile, true); >> File outFile = new File(logDir, PLUGIN_STDOUT_FILE); >> outFile.getParentFile().mkdirs(); >> + outFile.createNewFile(); >> + FileUtils.restrictFile(outFile, true); >> >> System.setErr(new TeeOutputStream(new FileOutputStream(errFile), System.err)); >> System.setOut(new TeeOutputStream(new FileOutputStream(outFile), System.out)); > > From doko at ubuntu.com Fri Nov 12 07:06:22 2010 From: doko at ubuntu.com (Matthias Klose) Date: Fri, 12 Nov 2010 16:06:22 +0100 Subject: [1.8] RFC: Allow NetX to be disabled In-Reply-To: <20101112001752.GD5773@rivendell.middle-earth.co.uk> References: <20101112001752.GD5773@rivendell.middle-earth.co.uk> Message-ID: <4CDD57EE.5080908@ubuntu.com> should be ok, if it's not changing anything without having --disable-webstart on the configure args, including configurations --with-additional-vms. Matthias On 12.11.2010 01:17, Dr Andrew John Hughes wrote: > Same again for 1.8: > > 2010-11-11 Andrew John Hughes > > * Makefile.am: > (ICEDTEA_PATCHES): Only apply netx.patch and > netx-umask.patch if NetX is enabled. > (distclean-local): Add clean-about. > (.PHONY): Likewise. > (icedtea): Depend on about.stamp. Add > ENABLE_NETX conditional. > (icedtea-debug): Likewise. > (netx): Add ENABLE_NETX conditional. > (netx-dist): Likewise. > (extra-class-files): Likewise. > (about): New target (from extra-lib/about.jar). > Add ENABLE_NETX conditional. > (clean-about): New target to remove about.jar. > * acinclude.m4: > (IT_CHECK_PLUGIN): Require IT_CHECK_NETX. > Disable if NetX is turned off. > (IT_CHECK_NETX): Add --disable-webstart option. > From ahughes at redhat.com Fri Nov 12 07:27:27 2010 From: ahughes at redhat.com (Dr Andrew John Hughes) Date: Fri, 12 Nov 2010 15:27:27 +0000 Subject: [1.8] RFC: Allow NetX to be disabled In-Reply-To: <4CDD57EE.5080908@ubuntu.com> References: <20101112001752.GD5773@rivendell.middle-earth.co.uk> <4CDD57EE.5080908@ubuntu.com> Message-ID: <20101112152726.GL5773@rivendell.middle-earth.co.uk> On 16:06 Fri 12 Nov , Matthias Klose wrote: > should be ok, if it's not changing anything without having --disable-webstart on > the configure args, including configurations --with-additional-vms. > It shouldn't, but please do test and check :-) The reason for this, as explained in the 1.9 discussion, is so that in future you'll be able to couple newer 1.8 releases with IcedTea-Web and take advantage of plugin bug fixes. > Matthias > > On 12.11.2010 01:17, Dr Andrew John Hughes wrote: > > Same again for 1.8: > > > > 2010-11-11 Andrew John Hughes > > > > * Makefile.am: > > (ICEDTEA_PATCHES): Only apply netx.patch and > > netx-umask.patch if NetX is enabled. > > (distclean-local): Add clean-about. > > (.PHONY): Likewise. > > (icedtea): Depend on about.stamp. Add > > ENABLE_NETX conditional. > > (icedtea-debug): Likewise. > > (netx): Add ENABLE_NETX conditional. > > (netx-dist): Likewise. > > (extra-class-files): Likewise. > > (about): New target (from extra-lib/about.jar). > > Add ENABLE_NETX conditional. > > (clean-about): New target to remove about.jar. > > * acinclude.m4: > > (IT_CHECK_PLUGIN): Require IT_CHECK_NETX. > > Disable if NetX is turned off. > > (IT_CHECK_NETX): Add --disable-webstart option. > > > -- Andrew :) Free Java Software Engineer Red Hat, Inc. (http://www.redhat.com) Support Free Java! Contribute to GNU Classpath and the OpenJDK http://www.gnu.org/software/classpath http://openjdk.java.net PGP Key: 94EFD9D8 (http://subkeys.pgp.net) Fingerprint = F8EF F1EA 401E 2E60 15FA 7927 142C 2591 94EF D9D8 From andrew at icedtea.classpath.org Fri Nov 12 08:32:19 2010 From: andrew at icedtea.classpath.org (andrew at icedtea.classpath.org) Date: Fri, 12 Nov 2010 16:32:19 +0000 Subject: /hg/icedtea6-hg: 11 new changesets Message-ID: changeset 2fafb0bc27f2 in /hg/icedtea6-hg details: http://icedtea.classpath.org/hg/icedtea6-hg?cmd=changeset;node=2fafb0bc27f2 author: Andrew John Hughes date: Wed Nov 10 14:13:42 2010 +0000 Backport BigDecimal/Integer performance improvements. 2010-11-10 Andrew John Hughes * Makefile.am: Add BigDecimal/Integer performance improvement patches. * patches/openjdk/6622432-bigdecimal_performance.patch, * patches/openjdk/6850606-bigdecimal_regression.patch, * patches/openjdk/6876282-bigdecimal_divide.patch: Added. changeset ede1628338ab in /hg/icedtea6-hg details: http://icedtea.classpath.org/hg/icedtea6-hg?cmd=changeset;node=ede1628338ab author: Jiri Vanek date: Wed Nov 10 16:28:47 2010 +0100 Updating fontconfig files for Fedoras 9-14 changeset 58e325d961e2 in /hg/icedtea6-hg details: http://icedtea.classpath.org/hg/icedtea6-hg?cmd=changeset;node=58e325d961e2 author: Andrew John Hughes date: Wed Nov 10 16:05:51 2010 +0000 RH647737: Disable compressed oops in hs19 to avoid Eclipse failures. 2010-11-10 Andrew John Hughes RH647737 Disable compressed oops in hs19. * Makefile.am: Add new patch. * patches/disable-default-compoops.patch: New patch to turn off compressed oops by default. changeset 3b0958812397 in /hg/icedtea6-hg details: http://icedtea.classpath.org/hg/icedtea6-hg?cmd=changeset;node=3b0958812397 author: Andrew John Hughes date: Wed Nov 10 16:07:00 2010 +0000 Merge changeset 16a6d3db365a in /hg/icedtea6-hg details: http://icedtea.classpath.org/hg/icedtea6-hg?cmd=changeset;node=16a6d3db365a author: ptisnovs date: Thu Nov 11 17:23:11 2010 +0100 Patch which corrects regression test hotspot/test/gc/6581734/Test6581734. changeset 799d1eebe117 in /hg/icedtea6-hg details: http://icedtea.classpath.org/hg/icedtea6-hg?cmd=changeset;node=799d1eebe117 author: Andrew John Hughes date: Wed Nov 10 16:30:08 2010 +0000 Remove additional whitespace introduced in Makefile.am. 2010-11-10 Andrew John Hughes * Makefile.am: Remove additional whitespace. changeset cb572d31894b in /hg/icedtea6-hg details: http://icedtea.classpath.org/hg/icedtea6-hg?cmd=changeset;node=cb572d31894b author: Andrew John Hughes date: Thu Nov 11 21:15:23 2010 +0000 Merge changeset 9560facaefcc in /hg/icedtea6-hg details: http://icedtea.classpath.org/hg/icedtea6-hg?cmd=changeset;node=9560facaefcc author: Stefan Ring date: Thu Nov 11 21:25:15 2010 +0000 CACAO: adapted arm-arch-defines.patch 2010-11-06 Stefan Ring * patches/cacao/arm-arch-defines.patch: Adapted to new Boehm GC version. changeset 5772aff6fc53 in /hg/icedtea6-hg details: http://icedtea.classpath.org/hg/icedtea6-hg?cmd=changeset;node=5772aff6fc53 author: Stefan Ring date: Thu Nov 11 21:01:13 2010 +0100 * Makefile.am: Upgrade CACAO version, use .tar.gz archive changeset e0a9977e6bf1 in /hg/icedtea6-hg details: http://icedtea.classpath.org/hg/icedtea6-hg?cmd=changeset;node=e0a9977e6bf1 author: Andrew John Hughes date: Fri Nov 12 14:45:50 2010 +0000 Merge changeset 3a9808d594ef in /hg/icedtea6-hg details: http://icedtea.classpath.org/hg/icedtea6-hg?cmd=changeset;node=3a9808d594ef author: Andrew John Hughes date: Fri Nov 12 16:32:05 2010 +0000 Add back freetypescaler patch, remove bigdecimal patches which are upstream. 2010-11-12 Andrew John Hughes * patches/openjdk/6622432-bigdecimal_performance.patch, * patches/openjdk/6850606-bigdecimal_regression.patch, * patches/openjdk/6876282-bigdecimal_divide.patch: Removed, upstream. * Makefile.am: Add patch below. * patches/6703377-freetypescaler.patch: Added back, not upstream (this is NOT 6703377, but an addendum to it). diffstat: 101 files changed, 1373 insertions(+), 20327 deletions(-) ChangeLog | 222 + Makefile.am | 113 acinclude.m4 | 4 hotspot.map | 2 patches/alpha-fixes.patch | 21 patches/cacao/arm-arch-defines.patch | 18 patches/disable-default-compoops.patch | 12 patches/f14-fonts.patch | 677 ++++ patches/gcc-suffix.patch | 31 patches/hotspot/hs19/alpha-fixes.patch | 21 patches/hotspot/hs19/gcc-suffix.patch | 31 patches/hotspot/hs19/params-cast-size_t.patch | 284 -- patches/hotspot/hs19/print_lsb_release.patch | 49 patches/hotspot/hs19/update-bootclasspath.patch | 13 patches/hotspot/original/alpha-fixes.patch | 31 patches/hotspot/original/gcc-suffix.patch | 25 patches/hotspot/original/params-cast-size_t.patch | 274 - patches/hotspot/original/print_lsb_release.patch | 48 patches/hotspot/original/update-bootclasspath.patch | 13 patches/icedtea-jtreg-jrunscript.patch | 12 patches/icedtea-lcms.patch | 25 patches/icedtea-shark-build.patch | 16 patches/openjdk/4356282-opentype.patch | 227 - patches/openjdk/6438179-systray_check.patch | 92 patches/openjdk/6678385-window_movement_crasher.patch | 1241 -------- patches/openjdk/6721088-awt_window_size.patch | 67 patches/openjdk/6795060-icu_crash.patch | 95 patches/openjdk/6853592-badwindow-warning-fix.patch | 16 patches/openjdk/6951319-sparc_build_fixes.patch | 24 patches/openjdk/6954424-opentype_javadoc.patch | 23 patches/openjdk/6961732-negative_leading.patch | 45 patches/openjdk/6969395-net_bugs.patch | 461 --- patches/openjdk/6980392-fix_test6581734.patch | 21 patches/openjdk/6985992-test_6933784.patch | 43 patches/params-cast-size_t.patch | 284 ++ patches/print_lsb_release.patch | 49 patches/security/20101012/6559775.patch | 317 -- patches/security/20101012/6622002.patch | 64 patches/security/20101012/6623943.patch | 138 patches/security/20101012/6891766.patch | 1147 -------- patches/security/20101012/6914943.patch | 2129 --------------- patches/security/20101012/6925710.patch | 198 - patches/security/20101012/6938813.patch | 196 - patches/security/20101012/6952017.patch | 50 patches/security/20101012/6952603.patch | 38 patches/security/20101012/6957564.patch | 77 patches/security/20101012/6958060.patch | 15 patches/security/20101012/6961084.patch | 325 -- patches/security/20101012/6963023.patch | 95 patches/security/20101012/6963285.patch | 20 patches/security/20101012/6963489.patch | 31 patches/security/20101012/6966692.patch | 91 patches/security/20101012/6981426.patch | 24 patches/security/20101012/6990437.patch | 116 patches/update-bootclasspath.patch | 13 shark/hotspot/make/linux/makefiles/shark.make | 32 shark/hotspot/src/cpu/zero/vm/shark_globals_zero.hpp | 62 shark/hotspot/src/share/vm/includeDB_shark | 369 -- shark/hotspot/src/share/vm/shark/llvmHeaders.hpp | 82 shark/hotspot/src/share/vm/shark/llvmValue.hpp | 62 shark/hotspot/src/share/vm/shark/sharkBlock.cpp | 1260 -------- shark/hotspot/src/share/vm/shark/sharkBlock.hpp | 281 - shark/hotspot/src/share/vm/shark/sharkBuilder.cpp | 591 ---- shark/hotspot/src/share/vm/shark/sharkBuilder.hpp | 209 - shark/hotspot/src/share/vm/shark/sharkCacheDecache.cpp | 259 - shark/hotspot/src/share/vm/shark/sharkCacheDecache.hpp | 417 -- shark/hotspot/src/share/vm/shark/sharkCodeBuffer.hpp | 87 shark/hotspot/src/share/vm/shark/sharkCompiler.cpp | 340 -- shark/hotspot/src/share/vm/shark/sharkCompiler.hpp | 119 shark/hotspot/src/share/vm/shark/sharkConstant.cpp | 128 shark/hotspot/src/share/vm/shark/sharkConstant.hpp | 64 shark/hotspot/src/share/vm/shark/sharkContext.cpp | 180 - shark/hotspot/src/share/vm/shark/sharkContext.hpp | 187 - shark/hotspot/src/share/vm/shark/sharkEntry.hpp | 58 shark/hotspot/src/share/vm/shark/sharkFunction.cpp | 188 - shark/hotspot/src/share/vm/shark/sharkFunction.hpp | 111 shark/hotspot/src/share/vm/shark/sharkInliner.cpp | 749 ----- shark/hotspot/src/share/vm/shark/sharkInliner.hpp | 32 shark/hotspot/src/share/vm/shark/sharkIntrinsics.cpp | 277 - shark/hotspot/src/share/vm/shark/sharkIntrinsics.hpp | 54 shark/hotspot/src/share/vm/shark/sharkInvariants.cpp | 37 shark/hotspot/src/share/vm/shark/sharkInvariants.hpp | 167 - shark/hotspot/src/share/vm/shark/sharkMemoryManager.cpp | 116 shark/hotspot/src/share/vm/shark/sharkMemoryManager.hpp | 88 shark/hotspot/src/share/vm/shark/sharkNativeWrapper.cpp | 352 -- shark/hotspot/src/share/vm/shark/sharkNativeWrapper.hpp | 182 - shark/hotspot/src/share/vm/shark/sharkRuntime.cpp | 251 - shark/hotspot/src/share/vm/shark/sharkRuntime.hpp | 83 shark/hotspot/src/share/vm/shark/sharkStack.cpp | 263 - shark/hotspot/src/share/vm/shark/sharkStack.hpp | 290 -- shark/hotspot/src/share/vm/shark/sharkState.cpp | 389 -- shark/hotspot/src/share/vm/shark/sharkState.hpp | 188 - shark/hotspot/src/share/vm/shark/sharkStateScanner.cpp | 99 shark/hotspot/src/share/vm/shark/sharkStateScanner.hpp | 75 shark/hotspot/src/share/vm/shark/sharkTopLevelBlock.cpp | 1991 -------------- shark/hotspot/src/share/vm/shark/sharkTopLevelBlock.hpp | 430 --- shark/hotspot/src/share/vm/shark/sharkType.hpp | 112 shark/hotspot/src/share/vm/shark/sharkValue.cpp | 260 - shark/hotspot/src/share/vm/shark/sharkValue.hpp | 332 -- shark/hotspot/src/share/vm/shark/shark_globals.cpp | 29 shark/hotspot/src/share/vm/shark/shark_globals.hpp | 54 diffs (truncated from 22359 to 500 lines): diff -r 72de51f0a744 -r 3a9808d594ef ChangeLog --- a/ChangeLog Tue Nov 09 14:53:31 2010 +0000 +++ b/ChangeLog Fri Nov 12 16:32:05 2010 +0000 @@ -1,3 +1,69 @@ 2010-11-09 Andrew John Hughes + + * patches/openjdk/6622432-bigdecimal_performance.patch, + * patches/openjdk/6850606-bigdecimal_regression.patch, + * patches/openjdk/6876282-bigdecimal_divide.patch: + Removed, upstream. + * Makefile.am: Add patch below. + * patches/6703377-freetypescaler.patch: + Added back, not upstream (this is NOT 6703377, but + an addendum to it). + +2010-11-11 Stefan Ring + + * Makefile.am: Upgrade CACAO version, use .tar.gz archive + +2010-11-09 Andrew John Hughes + + * patches/6703377-freetypescaler.patch, + * patches/openjdk/6853592-badwindow-warning-fix.patch: + Drop patches applied upstream. + * Makefile.am: Drop above patches. + +2010-11-11 Stefan Ring + + * patches/cacao/arm-arch-defines.patch: + Adapted to new Boehm GC version. + +2010-11-11 Pavel Tisnovsky + + * Makefile.am: Add new patch. + * patches/openjdk/6980392-fix_test6581734.patch: + Testcase correction - added missing right bracket. + +2010-11-10 Andrew John Hughes + + * Makefile.am: Remove additional whitespace. + +2010-11-10 Andrew John Hughes + + RH647737 + Disable compressed oops in hs19. + * Makefile.am: Add new patch. + * patches/disable-default-compoops.patch: + New patch to turn off compressed oops by default. + +2010-11-10 Jiri Vanek + + * Makefile.am: + (FONTCONFIG_PATH): Added path to fontconfig files. + (ICEDTEA_PATCHES): Add f14-fonts.patch. + (fonts): Added cloning of fontconfig.Fedora + to Fedora.12,11,10,9. + (patch-fsg): Depend on fonts.stamp. + * patches/f14-fonts.patch + Updated font configurations for Fedora 9-14 + Add additional fontconfig files to Makefile. + +2010-11-10 Andrew John Hughes + + * Makefile.am: Add BigDecimal/Integer performance + improvement patches. + * patches/openjdk/6622432-bigdecimal_performance.patch, + * patches/openjdk/6850606-bigdecimal_regression.patch, + * patches/openjdk/6876282-bigdecimal_divide.patch: + Added. + 2010-11-09 Andrew John Hughes * Makefile.am: @@ -81,6 +147,110 @@ 2010-10-20 Andrew John Hughes + + * patches/security/20101012/6559775.patch, + * patches/security/20101012/6622002.patch, + * patches/security/20101012/6891766.patch, + * patches/security/20101012/6914943.patch, + * patches/security/20101012/6925710.patch, + * patches/security/20101012/6938813.patch, + * patches/security/20101012/6952017.patch, + * patches/security/20101012/6952603.patch, + * patches/security/20101012/6957564.patch, + * patches/security/20101012/6958060.patch, + * patches/security/20101012/6961084.patch, + * patches/security/20101012/6963023.patch, + * patches/security/20101012/6963285.patch, + * patches/security/20101012/6963489.patch, + * patches/security/20101012/6966692.patch, + * patches/security/20101012/6981426.patch, + * patches/security/20101012/6990437.patch: + Dropped; available upstream. + * Makefile.am: Drop above patches. + * patches/icedtea-lcms.patch: Rejigged against + upstream security patch. + +2010-10-18 Andrew John Hughes + + * patches/hotspot/hs19/alpha-fixes.patch, + * patches/hotspot/hs19/gcc-suffix.patch, + * patches/hotspot/hs19/params-cast-size_t.patch, + * patches/hotspot/hs19/print_lsb_release.patch, + * patches/hotspot/hs19/update-bootclasspath.patch: + Move to patches. hs19 is now the only option. + * patches/hotspot/original/alpha-fixes.patch, + * patches/hotspot/original/gcc-suffix.patch, + * patches/hotspot/original/params-cast-size_t.patch, + * patches/hotspot/original/print_lsb_release.patch, + * patches/hotspot/original/update-bootclasspath.patch: + Dropped; upstream moved from hs17 to hs19. + * patches/icedtea-shark-build.patch: + Applied upstream by Gary Benson. + * patches/security/20101012/6623943.patch: + Applied upstream by Omair Majid. + * shark/hotspot/make/linux/makefiles/shark.make, + * shark/hotspot/src/cpu/zero/vm/shark_globals_zero.hpp, + * shark/hotspot/src/share/vm/includeDB_shark, + * shark/hotspot/src/share/vm/shark/llvmHeaders.hpp, + * shark/hotspot/src/share/vm/shark/llvmValue.hpp, + * shark/hotspot/src/share/vm/shark/sharkBlock.cpp, + * shark/hotspot/src/share/vm/shark/sharkBlock.hpp, + * shark/hotspot/src/share/vm/shark/sharkBuilder.cpp, + * shark/hotspot/src/share/vm/shark/sharkBuilder.hpp, + * shark/hotspot/src/share/vm/shark/sharkCacheDecache.cpp, + * shark/hotspot/src/share/vm/shark/sharkCacheDecache.hpp, + * shark/hotspot/src/share/vm/shark/sharkCodeBuffer.hpp, + * shark/hotspot/src/share/vm/shark/sharkCompiler.cpp, + * shark/hotspot/src/share/vm/shark/sharkCompiler.hpp, + * shark/hotspot/src/share/vm/shark/sharkConstant.cpp, + * shark/hotspot/src/share/vm/shark/sharkConstant.hpp, + * shark/hotspot/src/share/vm/shark/sharkContext.cpp, + * shark/hotspot/src/share/vm/shark/sharkContext.hpp, + * shark/hotspot/src/share/vm/shark/sharkEntry.hpp, + * shark/hotspot/src/share/vm/shark/sharkFunction.cpp, + * shark/hotspot/src/share/vm/shark/sharkFunction.hpp, + * shark/hotspot/src/share/vm/shark/sharkInliner.cpp, + * shark/hotspot/src/share/vm/shark/sharkInliner.hpp, + * shark/hotspot/src/share/vm/shark/sharkIntrinsics.cpp, + * shark/hotspot/src/share/vm/shark/sharkIntrinsics.hpp, + * shark/hotspot/src/share/vm/shark/sharkInvariants.cpp, + * shark/hotspot/src/share/vm/shark/sharkInvariants.hpp, + * shark/hotspot/src/share/vm/shark/sharkMemoryManager.cpp, + * shark/hotspot/src/share/vm/shark/sharkMemoryManager.hpp, + * shark/hotspot/src/share/vm/shark/sharkNativeWrapper.cpp, + * shark/hotspot/src/share/vm/shark/sharkNativeWrapper.hpp, + * shark/hotspot/src/share/vm/shark/sharkRuntime.cpp, + * shark/hotspot/src/share/vm/shark/sharkRuntime.hpp, + * shark/hotspot/src/share/vm/shark/sharkStack.cpp, + * shark/hotspot/src/share/vm/shark/sharkStack.hpp, + * shark/hotspot/src/share/vm/shark/sharkState.cpp, + * shark/hotspot/src/share/vm/shark/sharkState.hpp, + * shark/hotspot/src/share/vm/shark/sharkStateScanner.cpp, + * shark/hotspot/src/share/vm/shark/sharkStateScanner.hpp, + * shark/hotspot/src/share/vm/shark/sharkTopLevelBlock.cpp, + * shark/hotspot/src/share/vm/shark/sharkTopLevelBlock.hpp, + * shark/hotspot/src/share/vm/shark/sharkType.hpp, + * shark/hotspot/src/share/vm/shark/sharkValue.cpp, + * shark/hotspot/src/share/vm/shark/sharkValue.hpp, + * shark/hotspot/src/share/vm/shark/shark_globals.cpp, + * shark/hotspot/src/share/vm/shark/shark_globals.hpp: + Shark is in HotSpot 19. + * Makefile.am: + (ICEDTEA_PATCHES): Remove $(HSBUILD) special casing. + Remove conditional !WITH_ALT_HSBUILD patches. + (ports): Drop !WITH_ALT_HSBUILD block. + (clean-ports): Likewise. + * hotspot.map: Remove hs19. + * patches/alpha-fixes.patch, + * patches/gcc-suffix.patch, + * patches/params-cast-size_t.patch, + * patches/print_lsb_release.patch, + * patches/update-bootclasspath.patch: + The hs19 patches moved above. + * acinclude.m4: + (AC_CHECK_WITH_HOTSPOT_BUILD): Default to original. 2010-10-19 Andrew John Hughes @@ -366,7 +536,6 @@ 2010-10-19 Andrew John Hughes + + * patches/icedtea-awt-window-size.patch, + * patches/openjdk/6969395-net_bugs.patch, + * patches/openjdk/6985992-test_6933784.patch: + Dropped; upstreamed. + * Makefile.am: Remove above patches. 2010-09-23 Andrew John Hughes @@ -968,6 +1145,15 @@ 2010-09-07 Andrew John Hughes + + * patches/openjdk/6438179-systray_check.patch: + Dropped, applied upstream. + * Makefile.am: Drop above patch and those brought + back by merge. Update JAXP tarball. + * patches/openjdk/6951319-sparc_build_fixes.patch: + Remove upstreamed parts. + 2010-09-03 Pavel Tisnovsky * Makefile.am: Fixed indentation, changes spaces to tab. @@ -1017,7 +1203,7 @@ 2010-08-27 Deepak Bhole - * Makefile.am: + * Makefile.am: Add patch. * patches/opengl-jni-fix.patch: Fixed missing JNI link to native function OGLContext.getOGLIdString() which causes @@ -1104,6 +1290,22 @@ 2010-08-13 Andrew John Hughes + + * patches/openjdk/4356282-opentype.patch, + * patches/openjdk/6795060-icu_crash.patch, + * patches/openjdk/6954424-opentype_javadoc.patch: + Dropped, applied upstream. + * Makefile.am: + Remove above patches. + +2010-08-12 Andrew John Hughes + + * patches/openjdk/6678385-window_movement_crasher.patch: + Dropped, applied upstream. + * Makefile.am: + Remove above patch. 2010-08-09 Omair Majid @@ -1145,7 +1347,7 @@ 2010-08-09 Deepak Bhole @@ -1457,6 +1659,12 @@ 2010-07-28 Matthias Klose * NEWS: Add 1.8.1 entry. + +2010-07-26 Andrew John Hughes + + * patches/icedtea-jtreg-jrunscript.patch: + Regenerate after 50002bfcff96 from dcubed being + added to OpenJDK6. 2010-07-26 Andrew John Hughes @@ -1906,6 +2114,12 @@ 2010-07-08 Andrew John Hughes + + * patches/openjdk/6961732.patch: + Dropped, applied upstream. + * Makefile.am: Remove above patch. 2010-07-06 Andrew John Hughes @@ -10199,7 +10413,7 @@ 2009-04-07 Omair Majid - * patches/icedtea-jtreg-jrunscript.patch: New patch. Replaces + * patches/icedtea-jtreg-jrunscript.patch: New patch. Replaces jrunscriptTest.sh with a java version that isnt picky about int vs double changes. * Makefile.am (ICEDTEA_PATCHES): Apply the above. diff -r 72de51f0a744 -r 3a9808d594ef Makefile.am --- a/Makefile.am Tue Nov 09 14:53:31 2010 +0000 +++ b/Makefile.am Fri Nov 12 16:32:05 2010 +0000 @@ -5,11 +5,11 @@ OPENJDK_VERSION = b20 OPENJDK_VERSION = b20 OPENJDK_URL = http://download.java.net/openjdk/jdk6/promoted/$(OPENJDK_VERSION)/ -CACAO_VERSION = e321b101a9ee -CACAO_SHA256SUM = 46bc5b6212c199dc4a3dbebe6386fe15a8248625a5dffa17115aab394a298444 +CACAO_VERSION = 6a5eda011e49 +CACAO_SHA256SUM = 57f3abd73688cb8861875e2f21be9ec8a0c7c234e1e694489e3efa4436e9228c CACAO_BASE_URL = http://mips.complang.tuwien.ac.at -CACAO_URL = $(CACAO_BASE_URL)/hg/cacao/archive/$(CACAO_VERSION).tar.bz2 -CACAO_SRC_ZIP = cacao-$(CACAO_VERSION).tar.bz2 +CACAO_URL = $(CACAO_BASE_URL)/hg/cacao/archive/$(CACAO_VERSION).tar.gz +CACAO_SRC_ZIP = cacao-$(CACAO_VERSION).tar.gz JAXWS_DROP_URL = http://icedtea.classpath.org/download/drops JAXWS_DROP_ZIP = jdk6-jaxws-b20.zip @@ -18,8 +18,8 @@ JAF_DROP_ZIP = jdk6-jaf-b20.zip JAF_DROP_ZIP = jdk6-jaf-b20.zip JAF_DROP_SHA256SUM = 78c7b5c9d6271e88ee46abadd018a61f1e9645f8936cc8df1617e5f4f5074012 JAXP_DROP_URL = http://icedtea.classpath.org/download/drops -JAXP_DROP_ZIP = jdk6-jaxp-b20.zip -JAXP_DROP_SHA256SUM = d097627d4059d488c5a09d4e33cec275a193d4d8bc0fea8ef4f1337170904156 +JAXP_DROP_ZIP = jaxp-1_4_4.zip +JAXP_DROP_SHA256SUM = 10b203bec5b7d3dd8f515a9e098f80abc316faf977bcc220b56efe3dc6e9e5e9 OPENJDK_HG_URL = http://hg.openjdk.java.net/jdk6/jdk6 @@ -40,6 +40,7 @@ SERVER_DIR = hotspot/import/jre/lib/$(IN SERVER_DIR = hotspot/import/jre/lib/$(INSTALL_ARCH_DIR)/server BUILD_JRE_ARCH_DIR = $(BUILD_OUTPUT_DIR)/j2sdk-image/jre/lib/$(INSTALL_ARCH_DIR) BUILD_DEBUG_JRE_ARCH_DIR = $(DEBUG_BUILD_OUTPUT_DIR)/j2sdk-image/jre/lib/$(INSTALL_ARCH_DIR) +FONTCONFIG_PATH = openjdk/jdk/src/solaris/classes/sun/awt/fontconfigs # Source directories @@ -173,27 +174,7 @@ REWRITER_SRCS = $(abs_top_srcdir)/rewrit ICEDTEA_FSG_PATCHES = -BROKEN = - -SECURITY_PATCHES = \ - patches/security/20101012/6891766.patch \ - patches/security/20101012/6925710.patch \ - patches/security/20101012/6938813.patch \ - patches/security/20101012/6957564.patch \ - patches/security/20101012/6958060.patch \ - patches/security/20101012/6963023.patch \ - patches/security/20101012/6963489.patch \ - patches/security/20101012/6966692.patch \ - patches/security/20101012/6914943.patch \ - patches/security/20101012/6559775.patch \ - patches/security/20101012/6622002.patch \ - patches/security/20101012/6623943.patch \ - patches/security/20101012/6952017.patch \ - patches/security/20101012/6952603.patch \ - patches/security/20101012/6961084.patch \ - patches/security/20101012/6963285.patch \ - patches/security/20101012/6981426.patch \ - patches/security/20101012/6990437.patch +SECURITY_PATCHES = ICEDTEA_PATCHES = \ $(SECURITY_PATCHES) \ @@ -210,7 +191,7 @@ ICEDTEA_PATCHES = \ patches/icedtea-headers.patch \ patches/icedtea-headers-hotspot.patch \ patches/icedtea-gcc-suffix.patch \ - patches/hotspot/$(HSBUILD)/gcc-suffix.patch \ + patches/gcc-suffix.patch \ patches/icedtea-bytebuffer-compact.patch \ patches/memory-limits.patch \ patches/icedtea-sunsrc.patch \ @@ -218,18 +199,18 @@ ICEDTEA_PATCHES = \ patches/icedtea-javafiles.patch \ patches/icedtea-jvmtiEnv.patch \ patches/icedtea-lcms.patch \ - patches/hotspot/$(HSBUILD)/print_lsb_release.patch \ + patches/print_lsb_release.patch \ patches/icedtea-jpegclasses.patch \ patches/icedtea-uname.patch \ patches/icedtea-freetypeversion.patch \ patches/icedtea-nomotif-6706121.patch \ patches/icedtea-nomotif.patch \ patches/icedtea-nomotif-mtoolkit.patch \ - patches/hotspot/$(HSBUILD)/alpha-fixes.patch \ + patches/alpha-fixes.patch \ patches/icedtea-alt-jar.patch \ patches/icedtea-jdk-use-ssize_t.patch \ patches/icedtea-use-idx_t.patch \ - patches/hotspot/$(HSBUILD)/params-cast-size_t.patch \ + patches/params-cast-size_t.patch \ patches/icedtea-clean-crypto.patch \ patches/icedtea-arch.patch \ patches/icedtea-lc_ctype.patch \ @@ -245,7 +226,6 @@ ICEDTEA_PATCHES = \ patches/icedtea-sparc-ptracefix.patch \ patches/icedtea-sparc-trapsfix.patch \ patches/icedtea-demo-swingapplet.patch \ - patches/openjdk/6721088-awt_window_size.patch \ patches/icedtea-jtreg-6592792.patch \ patches/icedtea-s390-noinline.patch \ patches/icedtea-jtreg-dnd.patch \ @@ -261,14 +241,12 @@ ICEDTEA_PATCHES = \ patches/icedtea-parisc.patch \ patches/icedtea-sh4-support.patch \ patches/icedtea-policy-evaluation.patch \ - patches/hotspot/$(HSBUILD)/update-bootclasspath.patch \ + patches/update-bootclasspath.patch \ patches/libpng.patch \ patches/extensions/netx.patch \ patches/extensions/netx-umask.patch \ patches/icedtea-jtreg-httpTest.patch \ patches/arm.patch \ - patches/openjdk/6678385-window_movement_crasher.patch \ - patches/openjdk/6961732-negative_leading.patch \ patches/debug-dir.patch \ patches/no-sync.patch \ patches/icedtea-override-redirect-metacity.patch \ @@ -278,38 +256,20 @@ ICEDTEA_PATCHES = \ patches/fonts-rhel.patch \ patches/fonts-gentoo.patch \ patches/ipv4-mapped-ipv6-addresses.patch \ - patches/openjdk/6795060-icu_crash.patch \ - patches/openjdk/4356282-opentype.patch \ - patches/openjdk/6954424-opentype_javadoc.patch \ - patches/openjdk/6438179-systray_check.patch \ patches/icedtea-too-many-args.patch \ patches/icedtea-jtreg-OpenGLContextInit.patch \ - patches/openjdk/6969395-net_bugs.patch \ patches/openjdk/6510892-httpserver_test.patch \ patches/openjdk/6638712-wildcard_types.patch \ patches/openjdk/6650759-missing_inference.patch \ patches/numa_on_early_glibc.patch \ - patches/icedtea-shark-build.patch \ - patches/openjdk/6985992-test_6933784.patch \ - patches/openjdk/6853592-badwindow-warning-fix.patch \ - patches/6703377-freetypescaler.patch \ patches/icedtea-jtreg-international-fonts.patch \ patches/openjdk/6967436-6976265-6967434-pisces.patch \ - patches/openjdk/6997495-test_correction_6857159.patch - -if WITH_ALT_HSBUILD -ICEDTEA_PATCHES += \ + patches/openjdk/6997495-test_correction_6857159.patch \ patches/openjdk/6994130-ppc_fix.patch -else -ICEDTEA_PATCHES += \ - patches/shark_do_nothing_on_stub_frame.patch \ - patches/icedtea-shark-build-hotspot.patch \ - patches/shark.patch \ - patches/shark-debug-option.patch \ - patches/icedtea-shark.patch \ - patches/icedtea-linux-separate-debuginfo.patch \ - patches/openjdk/6951319-sparc_build_fixes.patch -endif + patches/f14-fonts.patch \ + patches/disable-default-compoops.patch \ + patches/openjdk/6980392-fix_test6581734.patch \ + patches/6703377-freetypescaler.patch if WITH_RHINO ICEDTEA_PATCHES += \ @@ -891,23 +851,6 @@ clean-replace-hotspot: # Copy ports sources into tree stamps/ports.stamp: stamps/replace-hotspot.stamp -if !WITH_ALT_HSBUILD - for target in $(abs_top_srcdir)/shark/hotspot/make/*/makefiles/* \ - $(abs_top_srcdir)/shark/hotspot/src/*cpu/* \ - $(abs_top_srcdir)/shark/hotspot/src/share/vm/*; do \ - link=$$(dirname $$target | sed 's/^.*shark/openjdk/'); \ - cp -rv $$target $$link; \ - done - if ! test "x$(WITH_CACAO)" = "xno" ; then \ - mkdir -p openjdk/jdk/src/solaris/bin/$(BUILD_ARCH_DIR) ; \ - ln -sf $(abs_top_builddir)/jvm.cfg \ - openjdk/jdk/src/solaris/bin/$(BUILD_ARCH_DIR)/jvm.cfg ; \ - fi - if ! test "x$(WITH_CACAO)" = "xno"; then \ - ln -sf $(abs_top_builddir)/ergo.c \ - openjdk/jdk/src/solaris/bin/ergo_$(BUILD_ARCH_DIR).c; \ - fi -endif for target in $(abs_top_srcdir)/arm_port/hotspot/tools \ $(abs_top_srcdir)/arm_port/hotspot/src/*cpu/* ; do \ link=$$(dirname $$target | sed 's/^.*arm_port/openjdk/'); \ @@ -917,16 +860,6 @@ endif touch stamps/ports.stamp clean-ports: -if !WITH_ALT_HSBUILD - for target in $(abs_top_srcdir)/shark/hotspot/make/*/makefiles/* \ - $(abs_top_srcdir)/shark/hotspot/src/*cpu/* \ - $(abs_top_srcdir)/shark/hotspot/src/share/vm/*; do \ - link=$$(dirname $$target | sed 's/^.*shark/openjdk/'); \ - rm -rf $$link; \ - done From andrew at icedtea.classpath.org Fri Nov 12 10:17:29 2010 From: andrew at icedtea.classpath.org (andrew at icedtea.classpath.org) Date: Fri, 12 Nov 2010 18:17:29 +0000 Subject: /hg/icedtea6: Cleanup new fonts target. Message-ID: changeset ad1c77031a41 in /hg/icedtea6 details: http://icedtea.classpath.org/hg/icedtea6?cmd=changeset;node=ad1c77031a41 author: Andrew John Hughes date: Fri Nov 12 18:17:22 2010 +0000 Cleanup new fonts target. 2010-11-12 Andrew John Hughes * Makefile.am: (clean-local): Add clean-fonts. (.PHONY): Likewise. (clean-fonts): Remove fonts.stamp. diffstat: 2 files changed, 12 insertions(+), 2 deletions(-) ChangeLog | 7 +++++++ Makefile.am | 7 +++++-- diffs (45 lines): diff -r 5772aff6fc53 -r ad1c77031a41 ChangeLog --- a/ChangeLog Thu Nov 11 21:01:13 2010 +0100 +++ b/ChangeLog Fri Nov 12 18:17:22 2010 +0000 @@ -1,3 +1,10 @@ 2010-11-11 Stefan Ring + + * Makefile.am: + (clean-local): Add clean-fonts. + (.PHONY): Likewise. + (clean-fonts): Remove fonts.stamp. + 2010-11-11 Stefan Ring * Makefile.am: Upgrade CACAO version, use .tar.gz archive diff -r 5772aff6fc53 -r ad1c77031a41 Makefile.am --- a/Makefile.am Thu Nov 11 21:01:13 2010 +0100 +++ b/Makefile.am Fri Nov 12 18:17:22 2010 +0000 @@ -558,7 +558,7 @@ clean-local: clean-jtreg clean-jtreg-rep clean-icedtea-against-ecj clean-extract-ecj clean-generated clean-replace-hotspot \ clean-rewriter clean-rewrite-rhino clean-rt clean-bootstrap-directory \ clean-bootstrap-directory-ecj clean-bootstrap-directory-symlink \ - clean-bootstrap-directory-symlink-ecj + clean-bootstrap-directory-symlink-ecj clean-fonts if [ -e bootstrap ]; then \ rmdir bootstrap ; \ fi @@ -593,7 +593,7 @@ install: clean-rewriter clean-rewrite-rhino clean-add-systemtap clean-add-systemtap-debug \ clean-add-pulseaudio clean-add-pulseaudio-debug clean-add-nss clean-add-nss-debug \ clean-add-tzdata-support clean-add-tzdata-support-debug clean-add-systemtap-ecj \ - clean-add-pulseaudio-ecj clean-add-nss-ecj clean-add-tzdata-support-ecj + clean-add-pulseaudio-ecj clean-add-nss-ecj clean-add-tzdata-support-ecj clean-fonts env: @echo 'unset JAVA_HOME' @@ -964,6 +964,9 @@ stamps/fonts.stamp: stamps/generated.sta cp $(FONTCONFIG_PATH)/linux.fontconfig.Fedora.properties $(FONTCONFIG_PATH)/linux.fontconfig.Fedora.12.properties mkdir -p stamps touch stamps/fonts.stamp + +clean-fonts: + rm -f stamps/fonts.stamp stamps/patch-fsg.stamp: stamps/fonts.stamp mkdir -p stamps ; \ From bugzilla-daemon at icedtea.classpath.org Sat Nov 13 14:30:56 2010 From: bugzilla-daemon at icedtea.classpath.org (bugzilla-daemon at icedtea.classpath.org) Date: Sat, 13 Nov 2010 22:30:56 +0000 Subject: [Bug 590] New: Unable to activate (click) checkboxes in jtable Message-ID: http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=590 Summary: Unable to activate (click) checkboxes in jtable Product: IcedTea Version: 6-1.8.1 Platform: 32-bit OS/Version: Linux Status: NEW Severity: normal Priority: P2 Component: IcedTea6 AssignedTo: unassigned at icedtea.classpath.org ReportedBy: mm at michaelamerz.com Actually, this error is for version 1.8.2 (Java version 1.6.0_18), but this version wasn't available in the selection list. This error is in regard to an applet: Works fine with Java under Windows as well as in IcedTea6 1.7.1, java version "1.6.0_17" We have a jtable with multiple rows and columns. The first column contains checkboxes, which can't be activated. Au revoir :) Michaela -- Configure bugmail: http://icedtea.classpath.org/bugzilla/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are the assignee for the bug, or are watching the assignee. From acrux_it at libero.it Sat Nov 13 17:24:49 2010 From: acrux_it at libero.it (acrux) Date: Sun, 14 Nov 2010 02:24:49 +0100 Subject: icedtea6-1.9.1 Message-ID: <20101114022449.0cc420aa.acrux_it@libero.it> -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 I'm looking to build IcedTea6-1.9.1 Shark VM for ppc32 with JIT from llvm-2.8 . But what about llvm-2.8 on PowerPC? Will it be able to build Shark VM ? I.e. Shark VM + JIT from llvm-2.8 will be able to recompile itself ? Do I need some patch? cheers, - --acrux - -- GNU/Linux on Power Architecture CRUX PPC - http://cruxppc.org/ -----BEGIN PGP SIGNATURE----- Version: GnuPG v2.0.16 (GNU/Linux) iEYEARECAAYFAkzfOmQACgkQxq34tDeO7Lg8rQCfSzopo9go6WJF9cSp9CjsZu6e C0MAnA2mgvw7uv8bXlRTC+UyZJIkUm58 =lrIV -----END PGP SIGNATURE----- From bugzilla-daemon at icedtea.classpath.org Sun Nov 14 05:49:52 2010 From: bugzilla-daemon at icedtea.classpath.org (bugzilla-daemon at icedtea.classpath.org) Date: Sun, 14 Nov 2010 13:49:52 +0000 Subject: [Bug 590] Unable to activate (click) checkboxes in jtable Message-ID: http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=590 gnu_andrew at member.fsf.org changed: What |Removed |Added ---------------------------------------------------------------------------- Version|6-1.8.1 |6-1.8.2 ------- Comment #1 from gnu_andrew at member.fsf.org 2010-11-14 13:49 ------- Sorry for the missing version. It looks like the last round of updates weren't added. Fixed now. Can you please provide a reproducer for this issue? -- Configure bugmail: http://icedtea.classpath.org/bugzilla/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are the assignee for the bug, or are watching the assignee. From andrew at icedtea.classpath.org Sun Nov 14 05:53:45 2010 From: andrew at icedtea.classpath.org (andrew at icedtea.classpath.org) Date: Sun, 14 Nov 2010 13:53:45 +0000 Subject: /hg/icedtea6-hg: 2 new changesets Message-ID: changeset ad1c77031a41 in /hg/icedtea6-hg details: http://icedtea.classpath.org/hg/icedtea6-hg?cmd=changeset;node=ad1c77031a41 author: Andrew John Hughes date: Fri Nov 12 18:17:22 2010 +0000 Cleanup new fonts target. 2010-11-12 Andrew John Hughes * Makefile.am: (clean-local): Add clean-fonts. (.PHONY): Likewise. (clean-fonts): Remove fonts.stamp. changeset 6246db42e88c in /hg/icedtea6-hg details: http://icedtea.classpath.org/hg/icedtea6-hg?cmd=changeset;node=6246db42e88c author: Andrew John Hughes date: Sun Nov 14 13:53:05 2010 +0000 Merge diffstat: 100 files changed, 612 insertions(+), 24755 deletions(-) ChangeLog | 181 Makefile.am | 105 acinclude.m4 | 4 hotspot.map | 2 patches/alpha-fixes.patch | 21 patches/gcc-suffix.patch | 31 patches/hotspot/hs19/alpha-fixes.patch | 21 patches/hotspot/hs19/gcc-suffix.patch | 31 patches/hotspot/hs19/params-cast-size_t.patch | 284 - patches/hotspot/hs19/print_lsb_release.patch | 49 patches/hotspot/hs19/update-bootclasspath.patch | 13 patches/hotspot/original/alpha-fixes.patch | 31 patches/hotspot/original/gcc-suffix.patch | 25 patches/hotspot/original/params-cast-size_t.patch | 274 patches/hotspot/original/print_lsb_release.patch | 48 patches/hotspot/original/update-bootclasspath.patch | 13 patches/icedtea-jtreg-jrunscript.patch | 12 patches/icedtea-lcms.patch | 25 patches/icedtea-shark-build.patch | 16 patches/openjdk/4356282-opentype.patch | 227 patches/openjdk/6438179-systray_check.patch | 92 patches/openjdk/6622432-bigdecimal_performance.patch | 4211 --------------- patches/openjdk/6678385-window_movement_crasher.patch | 1241 ---- patches/openjdk/6721088-awt_window_size.patch | 67 patches/openjdk/6795060-icu_crash.patch | 95 patches/openjdk/6850606-bigdecimal_regression.patch | 144 patches/openjdk/6853592-badwindow-warning-fix.patch | 16 patches/openjdk/6876282-bigdecimal_divide.patch | 89 patches/openjdk/6951319-sparc_build_fixes.patch | 24 patches/openjdk/6954424-opentype_javadoc.patch | 23 patches/openjdk/6961732-negative_leading.patch | 45 patches/openjdk/6969395-net_bugs.patch | 461 - patches/openjdk/6985992-test_6933784.patch | 43 patches/params-cast-size_t.patch | 284 + patches/print_lsb_release.patch | 49 patches/security/20101012/6559775.patch | 317 - patches/security/20101012/6622002.patch | 64 patches/security/20101012/6623943.patch | 138 patches/security/20101012/6891766.patch | 1147 ---- patches/security/20101012/6914943.patch | 2129 ------- patches/security/20101012/6925710.patch | 198 patches/security/20101012/6938813.patch | 196 patches/security/20101012/6952017.patch | 50 patches/security/20101012/6952603.patch | 38 patches/security/20101012/6957564.patch | 77 patches/security/20101012/6958060.patch | 15 patches/security/20101012/6961084.patch | 325 - patches/security/20101012/6963023.patch | 95 patches/security/20101012/6963285.patch | 20 patches/security/20101012/6963489.patch | 31 patches/security/20101012/6966692.patch | 91 patches/security/20101012/6981426.patch | 24 patches/security/20101012/6990437.patch | 116 patches/update-bootclasspath.patch | 13 shark/hotspot/make/linux/makefiles/shark.make | 32 shark/hotspot/src/cpu/zero/vm/shark_globals_zero.hpp | 62 shark/hotspot/src/share/vm/includeDB_shark | 369 - shark/hotspot/src/share/vm/shark/llvmHeaders.hpp | 82 shark/hotspot/src/share/vm/shark/llvmValue.hpp | 62 shark/hotspot/src/share/vm/shark/sharkBlock.cpp | 1260 ---- shark/hotspot/src/share/vm/shark/sharkBlock.hpp | 281 - shark/hotspot/src/share/vm/shark/sharkBuilder.cpp | 591 -- shark/hotspot/src/share/vm/shark/sharkBuilder.hpp | 209 shark/hotspot/src/share/vm/shark/sharkCacheDecache.cpp | 259 shark/hotspot/src/share/vm/shark/sharkCacheDecache.hpp | 417 - shark/hotspot/src/share/vm/shark/sharkCodeBuffer.hpp | 87 shark/hotspot/src/share/vm/shark/sharkCompiler.cpp | 340 - shark/hotspot/src/share/vm/shark/sharkCompiler.hpp | 119 shark/hotspot/src/share/vm/shark/sharkConstant.cpp | 128 shark/hotspot/src/share/vm/shark/sharkConstant.hpp | 64 shark/hotspot/src/share/vm/shark/sharkContext.cpp | 180 shark/hotspot/src/share/vm/shark/sharkContext.hpp | 187 shark/hotspot/src/share/vm/shark/sharkEntry.hpp | 58 shark/hotspot/src/share/vm/shark/sharkFunction.cpp | 188 shark/hotspot/src/share/vm/shark/sharkFunction.hpp | 111 shark/hotspot/src/share/vm/shark/sharkInliner.cpp | 749 -- shark/hotspot/src/share/vm/shark/sharkInliner.hpp | 32 shark/hotspot/src/share/vm/shark/sharkIntrinsics.cpp | 277 shark/hotspot/src/share/vm/shark/sharkIntrinsics.hpp | 54 shark/hotspot/src/share/vm/shark/sharkInvariants.cpp | 37 shark/hotspot/src/share/vm/shark/sharkInvariants.hpp | 167 shark/hotspot/src/share/vm/shark/sharkMemoryManager.cpp | 116 shark/hotspot/src/share/vm/shark/sharkMemoryManager.hpp | 88 shark/hotspot/src/share/vm/shark/sharkNativeWrapper.cpp | 352 - shark/hotspot/src/share/vm/shark/sharkNativeWrapper.hpp | 182 shark/hotspot/src/share/vm/shark/sharkRuntime.cpp | 251 shark/hotspot/src/share/vm/shark/sharkRuntime.hpp | 83 shark/hotspot/src/share/vm/shark/sharkStack.cpp | 263 shark/hotspot/src/share/vm/shark/sharkStack.hpp | 290 - shark/hotspot/src/share/vm/shark/sharkState.cpp | 389 - shark/hotspot/src/share/vm/shark/sharkState.hpp | 188 shark/hotspot/src/share/vm/shark/sharkStateScanner.cpp | 99 shark/hotspot/src/share/vm/shark/sharkStateScanner.hpp | 75 shark/hotspot/src/share/vm/shark/sharkTopLevelBlock.cpp | 1991 ------- shark/hotspot/src/share/vm/shark/sharkTopLevelBlock.hpp | 430 - shark/hotspot/src/share/vm/shark/sharkType.hpp | 112 shark/hotspot/src/share/vm/shark/sharkValue.cpp | 260 shark/hotspot/src/share/vm/shark/sharkValue.hpp | 332 - shark/hotspot/src/share/vm/shark/shark_globals.cpp | 29 shark/hotspot/src/share/vm/shark/shark_globals.hpp | 54 diffs (truncated from 26022 to 500 lines): diff -r 5772aff6fc53 -r 6246db42e88c ChangeLog --- a/ChangeLog Thu Nov 11 21:01:13 2010 +0100 +++ b/ChangeLog Sun Nov 14 13:53:05 2010 +0000 @@ -1,6 +1,31 @@ 2010-11-11 Stefan Ring + + * Makefile.am: + (clean-local): Add clean-fonts. + (.PHONY): Likewise. + (clean-fonts): Remove fonts.stamp. + +2010-11-12 Andrew John Hughes + + * patches/openjdk/6622432-bigdecimal_performance.patch, + * patches/openjdk/6850606-bigdecimal_regression.patch, + * patches/openjdk/6876282-bigdecimal_divide.patch: + Removed, upstream. + * Makefile.am: Add patch below. + * patches/6703377-freetypescaler.patch: + Added back, not upstream (this is NOT 6703377, but + an addendum to it). + 2010-11-11 Stefan Ring * Makefile.am: Upgrade CACAO version, use .tar.gz archive + +2010-11-09 Andrew John Hughes + + * patches/6703377-freetypescaler.patch, + * patches/openjdk/6853592-badwindow-warning-fix.patch: + Drop patches applied upstream. + * Makefile.am: Drop above patches. 2010-11-11 Stefan Ring @@ -129,6 +154,110 @@ 2010-10-20 Andrew John Hughes + + * patches/security/20101012/6559775.patch, + * patches/security/20101012/6622002.patch, + * patches/security/20101012/6891766.patch, + * patches/security/20101012/6914943.patch, + * patches/security/20101012/6925710.patch, + * patches/security/20101012/6938813.patch, + * patches/security/20101012/6952017.patch, + * patches/security/20101012/6952603.patch, + * patches/security/20101012/6957564.patch, + * patches/security/20101012/6958060.patch, + * patches/security/20101012/6961084.patch, + * patches/security/20101012/6963023.patch, + * patches/security/20101012/6963285.patch, + * patches/security/20101012/6963489.patch, + * patches/security/20101012/6966692.patch, + * patches/security/20101012/6981426.patch, + * patches/security/20101012/6990437.patch: + Dropped; available upstream. + * Makefile.am: Drop above patches. + * patches/icedtea-lcms.patch: Rejigged against + upstream security patch. + +2010-10-18 Andrew John Hughes + + * patches/hotspot/hs19/alpha-fixes.patch, + * patches/hotspot/hs19/gcc-suffix.patch, + * patches/hotspot/hs19/params-cast-size_t.patch, + * patches/hotspot/hs19/print_lsb_release.patch, + * patches/hotspot/hs19/update-bootclasspath.patch: + Move to patches. hs19 is now the only option. + * patches/hotspot/original/alpha-fixes.patch, + * patches/hotspot/original/gcc-suffix.patch, + * patches/hotspot/original/params-cast-size_t.patch, + * patches/hotspot/original/print_lsb_release.patch, + * patches/hotspot/original/update-bootclasspath.patch: + Dropped; upstream moved from hs17 to hs19. + * patches/icedtea-shark-build.patch: + Applied upstream by Gary Benson. + * patches/security/20101012/6623943.patch: + Applied upstream by Omair Majid. + * shark/hotspot/make/linux/makefiles/shark.make, + * shark/hotspot/src/cpu/zero/vm/shark_globals_zero.hpp, + * shark/hotspot/src/share/vm/includeDB_shark, + * shark/hotspot/src/share/vm/shark/llvmHeaders.hpp, + * shark/hotspot/src/share/vm/shark/llvmValue.hpp, + * shark/hotspot/src/share/vm/shark/sharkBlock.cpp, + * shark/hotspot/src/share/vm/shark/sharkBlock.hpp, + * shark/hotspot/src/share/vm/shark/sharkBuilder.cpp, + * shark/hotspot/src/share/vm/shark/sharkBuilder.hpp, + * shark/hotspot/src/share/vm/shark/sharkCacheDecache.cpp, + * shark/hotspot/src/share/vm/shark/sharkCacheDecache.hpp, + * shark/hotspot/src/share/vm/shark/sharkCodeBuffer.hpp, + * shark/hotspot/src/share/vm/shark/sharkCompiler.cpp, + * shark/hotspot/src/share/vm/shark/sharkCompiler.hpp, + * shark/hotspot/src/share/vm/shark/sharkConstant.cpp, + * shark/hotspot/src/share/vm/shark/sharkConstant.hpp, + * shark/hotspot/src/share/vm/shark/sharkContext.cpp, + * shark/hotspot/src/share/vm/shark/sharkContext.hpp, + * shark/hotspot/src/share/vm/shark/sharkEntry.hpp, + * shark/hotspot/src/share/vm/shark/sharkFunction.cpp, + * shark/hotspot/src/share/vm/shark/sharkFunction.hpp, + * shark/hotspot/src/share/vm/shark/sharkInliner.cpp, + * shark/hotspot/src/share/vm/shark/sharkInliner.hpp, + * shark/hotspot/src/share/vm/shark/sharkIntrinsics.cpp, + * shark/hotspot/src/share/vm/shark/sharkIntrinsics.hpp, + * shark/hotspot/src/share/vm/shark/sharkInvariants.cpp, + * shark/hotspot/src/share/vm/shark/sharkInvariants.hpp, + * shark/hotspot/src/share/vm/shark/sharkMemoryManager.cpp, + * shark/hotspot/src/share/vm/shark/sharkMemoryManager.hpp, + * shark/hotspot/src/share/vm/shark/sharkNativeWrapper.cpp, + * shark/hotspot/src/share/vm/shark/sharkNativeWrapper.hpp, + * shark/hotspot/src/share/vm/shark/sharkRuntime.cpp, + * shark/hotspot/src/share/vm/shark/sharkRuntime.hpp, + * shark/hotspot/src/share/vm/shark/sharkStack.cpp, + * shark/hotspot/src/share/vm/shark/sharkStack.hpp, + * shark/hotspot/src/share/vm/shark/sharkState.cpp, + * shark/hotspot/src/share/vm/shark/sharkState.hpp, + * shark/hotspot/src/share/vm/shark/sharkStateScanner.cpp, + * shark/hotspot/src/share/vm/shark/sharkStateScanner.hpp, + * shark/hotspot/src/share/vm/shark/sharkTopLevelBlock.cpp, + * shark/hotspot/src/share/vm/shark/sharkTopLevelBlock.hpp, + * shark/hotspot/src/share/vm/shark/sharkType.hpp, + * shark/hotspot/src/share/vm/shark/sharkValue.cpp, + * shark/hotspot/src/share/vm/shark/sharkValue.hpp, + * shark/hotspot/src/share/vm/shark/shark_globals.cpp, + * shark/hotspot/src/share/vm/shark/shark_globals.hpp: + Shark is in HotSpot 19. + * Makefile.am: + (ICEDTEA_PATCHES): Remove $(HSBUILD) special casing. + Remove conditional !WITH_ALT_HSBUILD patches. + (ports): Drop !WITH_ALT_HSBUILD block. + (clean-ports): Likewise. + * hotspot.map: Remove hs19. + * patches/alpha-fixes.patch, + * patches/gcc-suffix.patch, + * patches/params-cast-size_t.patch, + * patches/print_lsb_release.patch, + * patches/update-bootclasspath.patch: + The hs19 patches moved above. + * acinclude.m4: + (AC_CHECK_WITH_HOTSPOT_BUILD): Default to original. 2010-10-19 Andrew John Hughes @@ -414,7 +543,6 @@ 2010-10-19 Andrew John Hughes + + * patches/icedtea-awt-window-size.patch, + * patches/openjdk/6969395-net_bugs.patch, + * patches/openjdk/6985992-test_6933784.patch: + Dropped; upstreamed. + * Makefile.am: Remove above patches. 2010-09-23 Andrew John Hughes @@ -1016,6 +1152,15 @@ 2010-09-07 Andrew John Hughes + + * patches/openjdk/6438179-systray_check.patch: + Dropped, applied upstream. + * Makefile.am: Drop above patch and those brought + back by merge. Update JAXP tarball. + * patches/openjdk/6951319-sparc_build_fixes.patch: + Remove upstreamed parts. + 2010-09-03 Pavel Tisnovsky * Makefile.am: Fixed indentation, changes spaces to tab. @@ -1065,7 +1210,7 @@ 2010-08-27 Deepak Bhole - * Makefile.am: + * Makefile.am: Add patch. * patches/opengl-jni-fix.patch: Fixed missing JNI link to native function OGLContext.getOGLIdString() which causes @@ -1152,6 +1297,22 @@ 2010-08-13 Andrew John Hughes + + * patches/openjdk/4356282-opentype.patch, + * patches/openjdk/6795060-icu_crash.patch, + * patches/openjdk/6954424-opentype_javadoc.patch: + Dropped, applied upstream. + * Makefile.am: + Remove above patches. + +2010-08-12 Andrew John Hughes + + * patches/openjdk/6678385-window_movement_crasher.patch: + Dropped, applied upstream. + * Makefile.am: + Remove above patch. 2010-08-09 Omair Majid @@ -1193,7 +1354,7 @@ 2010-08-09 Deepak Bhole @@ -1505,6 +1666,12 @@ 2010-07-28 Matthias Klose * NEWS: Add 1.8.1 entry. + +2010-07-26 Andrew John Hughes + + * patches/icedtea-jtreg-jrunscript.patch: + Regenerate after 50002bfcff96 from dcubed being + added to OpenJDK6. 2010-07-26 Andrew John Hughes @@ -1954,6 +2121,12 @@ 2010-07-08 Andrew John Hughes + + * patches/openjdk/6961732.patch: + Dropped, applied upstream. + * Makefile.am: Remove above patch. 2010-07-06 Andrew John Hughes @@ -10247,7 +10420,7 @@ 2009-04-07 Omair Majid - * patches/icedtea-jtreg-jrunscript.patch: New patch. Replaces + * patches/icedtea-jtreg-jrunscript.patch: New patch. Replaces jrunscriptTest.sh with a java version that isnt picky about int vs double changes. * Makefile.am (ICEDTEA_PATCHES): Apply the above. diff -r 5772aff6fc53 -r 6246db42e88c Makefile.am --- a/Makefile.am Thu Nov 11 21:01:13 2010 +0100 +++ b/Makefile.am Sun Nov 14 13:53:05 2010 +0000 @@ -18,8 +18,8 @@ JAF_DROP_ZIP = jdk6-jaf-b20.zip JAF_DROP_ZIP = jdk6-jaf-b20.zip JAF_DROP_SHA256SUM = 78c7b5c9d6271e88ee46abadd018a61f1e9645f8936cc8df1617e5f4f5074012 JAXP_DROP_URL = http://icedtea.classpath.org/download/drops -JAXP_DROP_ZIP = jdk6-jaxp-b20.zip -JAXP_DROP_SHA256SUM = d097627d4059d488c5a09d4e33cec275a193d4d8bc0fea8ef4f1337170904156 +JAXP_DROP_ZIP = jaxp-1_4_4.zip +JAXP_DROP_SHA256SUM = 10b203bec5b7d3dd8f515a9e098f80abc316faf977bcc220b56efe3dc6e9e5e9 OPENJDK_HG_URL = http://hg.openjdk.java.net/jdk6/jdk6 @@ -174,27 +174,7 @@ REWRITER_SRCS = $(abs_top_srcdir)/rewrit ICEDTEA_FSG_PATCHES = -BROKEN = - -SECURITY_PATCHES = \ - patches/security/20101012/6891766.patch \ - patches/security/20101012/6925710.patch \ - patches/security/20101012/6938813.patch \ - patches/security/20101012/6957564.patch \ - patches/security/20101012/6958060.patch \ - patches/security/20101012/6963023.patch \ - patches/security/20101012/6963489.patch \ - patches/security/20101012/6966692.patch \ - patches/security/20101012/6914943.patch \ - patches/security/20101012/6559775.patch \ - patches/security/20101012/6622002.patch \ - patches/security/20101012/6623943.patch \ - patches/security/20101012/6952017.patch \ - patches/security/20101012/6952603.patch \ - patches/security/20101012/6961084.patch \ - patches/security/20101012/6963285.patch \ - patches/security/20101012/6981426.patch \ - patches/security/20101012/6990437.patch +SECURITY_PATCHES = ICEDTEA_PATCHES = \ $(SECURITY_PATCHES) \ @@ -211,7 +191,7 @@ ICEDTEA_PATCHES = \ patches/icedtea-headers.patch \ patches/icedtea-headers-hotspot.patch \ patches/icedtea-gcc-suffix.patch \ - patches/hotspot/$(HSBUILD)/gcc-suffix.patch \ + patches/gcc-suffix.patch \ patches/icedtea-bytebuffer-compact.patch \ patches/memory-limits.patch \ patches/icedtea-sunsrc.patch \ @@ -219,18 +199,18 @@ ICEDTEA_PATCHES = \ patches/icedtea-javafiles.patch \ patches/icedtea-jvmtiEnv.patch \ patches/icedtea-lcms.patch \ - patches/hotspot/$(HSBUILD)/print_lsb_release.patch \ + patches/print_lsb_release.patch \ patches/icedtea-jpegclasses.patch \ patches/icedtea-uname.patch \ patches/icedtea-freetypeversion.patch \ patches/icedtea-nomotif-6706121.patch \ patches/icedtea-nomotif.patch \ patches/icedtea-nomotif-mtoolkit.patch \ - patches/hotspot/$(HSBUILD)/alpha-fixes.patch \ + patches/alpha-fixes.patch \ patches/icedtea-alt-jar.patch \ patches/icedtea-jdk-use-ssize_t.patch \ patches/icedtea-use-idx_t.patch \ - patches/hotspot/$(HSBUILD)/params-cast-size_t.patch \ + patches/params-cast-size_t.patch \ patches/icedtea-clean-crypto.patch \ patches/icedtea-arch.patch \ patches/icedtea-lc_ctype.patch \ @@ -246,7 +226,6 @@ ICEDTEA_PATCHES = \ patches/icedtea-sparc-ptracefix.patch \ patches/icedtea-sparc-trapsfix.patch \ patches/icedtea-demo-swingapplet.patch \ - patches/openjdk/6721088-awt_window_size.patch \ patches/icedtea-jtreg-6592792.patch \ patches/icedtea-s390-noinline.patch \ patches/icedtea-jtreg-dnd.patch \ @@ -262,14 +241,12 @@ ICEDTEA_PATCHES = \ patches/icedtea-parisc.patch \ patches/icedtea-sh4-support.patch \ patches/icedtea-policy-evaluation.patch \ - patches/hotspot/$(HSBUILD)/update-bootclasspath.patch \ + patches/update-bootclasspath.patch \ patches/libpng.patch \ patches/extensions/netx.patch \ patches/extensions/netx-umask.patch \ patches/icedtea-jtreg-httpTest.patch \ patches/arm.patch \ - patches/openjdk/6678385-window_movement_crasher.patch \ - patches/openjdk/6961732-negative_leading.patch \ patches/debug-dir.patch \ patches/no-sync.patch \ patches/icedtea-override-redirect-metacity.patch \ @@ -279,44 +256,20 @@ ICEDTEA_PATCHES = \ patches/fonts-rhel.patch \ patches/fonts-gentoo.patch \ patches/ipv4-mapped-ipv6-addresses.patch \ - patches/openjdk/6795060-icu_crash.patch \ - patches/openjdk/4356282-opentype.patch \ - patches/openjdk/6954424-opentype_javadoc.patch \ - patches/openjdk/6438179-systray_check.patch \ patches/icedtea-too-many-args.patch \ patches/icedtea-jtreg-OpenGLContextInit.patch \ - patches/openjdk/6969395-net_bugs.patch \ patches/openjdk/6510892-httpserver_test.patch \ patches/openjdk/6638712-wildcard_types.patch \ patches/openjdk/6650759-missing_inference.patch \ patches/numa_on_early_glibc.patch \ - patches/icedtea-shark-build.patch \ - patches/openjdk/6985992-test_6933784.patch \ - patches/openjdk/6853592-badwindow-warning-fix.patch \ - patches/6703377-freetypescaler.patch \ patches/icedtea-jtreg-international-fonts.patch \ patches/openjdk/6967436-6976265-6967434-pisces.patch \ patches/openjdk/6997495-test_correction_6857159.patch \ - patches/openjdk/6622432-bigdecimal_performance.patch \ - patches/openjdk/6850606-bigdecimal_regression.patch \ - patches/openjdk/6876282-bigdecimal_divide.patch \ - patches/f14-fonts.patch - -if WITH_ALT_HSBUILD -ICEDTEA_PATCHES += \ - patches/openjdk/6994130-ppc_fix.patch \ + patches/openjdk/6994130-ppc_fix.patch + patches/f14-fonts.patch \ patches/disable-default-compoops.patch \ - patches/openjdk/6980392-fix_test6581734.patch -else -ICEDTEA_PATCHES += \ - patches/shark_do_nothing_on_stub_frame.patch \ - patches/icedtea-shark-build-hotspot.patch \ - patches/shark.patch \ - patches/shark-debug-option.patch \ - patches/icedtea-shark.patch \ - patches/icedtea-linux-separate-debuginfo.patch \ - patches/openjdk/6951319-sparc_build_fixes.patch -endif + patches/openjdk/6980392-fix_test6581734.patch \ + patches/6703377-freetypescaler.patch if WITH_RHINO ICEDTEA_PATCHES += \ @@ -558,7 +511,7 @@ clean-local: clean-jtreg clean-jtreg-rep clean-icedtea-against-ecj clean-extract-ecj clean-generated clean-replace-hotspot \ clean-rewriter clean-rewrite-rhino clean-rt clean-bootstrap-directory \ clean-bootstrap-directory-ecj clean-bootstrap-directory-symlink \ - clean-bootstrap-directory-symlink-ecj + clean-bootstrap-directory-symlink-ecj clean-fonts if [ -e bootstrap ]; then \ rmdir bootstrap ; \ fi @@ -593,7 +546,7 @@ install: clean-rewriter clean-rewrite-rhino clean-add-systemtap clean-add-systemtap-debug \ clean-add-pulseaudio clean-add-pulseaudio-debug clean-add-nss clean-add-nss-debug \ clean-add-tzdata-support clean-add-tzdata-support-debug clean-add-systemtap-ecj \ - clean-add-pulseaudio-ecj clean-add-nss-ecj clean-add-tzdata-support-ecj + clean-add-pulseaudio-ecj clean-add-nss-ecj clean-add-tzdata-support-ecj clean-fonts env: @echo 'unset JAVA_HOME' @@ -898,23 +851,6 @@ clean-replace-hotspot: # Copy ports sources into tree stamps/ports.stamp: stamps/replace-hotspot.stamp -if !WITH_ALT_HSBUILD - for target in $(abs_top_srcdir)/shark/hotspot/make/*/makefiles/* \ - $(abs_top_srcdir)/shark/hotspot/src/*cpu/* \ - $(abs_top_srcdir)/shark/hotspot/src/share/vm/*; do \ - link=$$(dirname $$target | sed 's/^.*shark/openjdk/'); \ - cp -rv $$target $$link; \ - done - if ! test "x$(WITH_CACAO)" = "xno" ; then \ - mkdir -p openjdk/jdk/src/solaris/bin/$(BUILD_ARCH_DIR) ; \ - ln -sf $(abs_top_builddir)/jvm.cfg \ - openjdk/jdk/src/solaris/bin/$(BUILD_ARCH_DIR)/jvm.cfg ; \ - fi - if ! test "x$(WITH_CACAO)" = "xno"; then \ - ln -sf $(abs_top_builddir)/ergo.c \ - openjdk/jdk/src/solaris/bin/ergo_$(BUILD_ARCH_DIR).c; \ - fi -endif for target in $(abs_top_srcdir)/arm_port/hotspot/tools \ $(abs_top_srcdir)/arm_port/hotspot/src/*cpu/* ; do \ link=$$(dirname $$target | sed 's/^.*arm_port/openjdk/'); \ @@ -924,16 +860,6 @@ endif touch stamps/ports.stamp clean-ports: -if !WITH_ALT_HSBUILD - for target in $(abs_top_srcdir)/shark/hotspot/make/*/makefiles/* \ - $(abs_top_srcdir)/shark/hotspot/src/*cpu/* \ - $(abs_top_srcdir)/shark/hotspot/src/share/vm/*; do \ - link=$$(dirname $$target | sed 's/^.*shark/openjdk/'); \ - rm -rf $$link; \ - done - rm -f openjdk/jdk/src/solaris/bin/$(BUILD_ARCH_DIR)/jvm.cfg - rm -f openjdk/jdk/src/solaris/bin/ergo_$(BUILD_ARCH_DIR).c -endif for target in $(abs_top_srcdir)/arm_port/hotspot/tools \ $(abs_top_srcdir)/arm_port/hotspot/src/*cpu/* ; do \ link=$$(dirname $$target | sed 's/^.*arm_port/openjdk/'); \ @@ -964,6 +890,9 @@ stamps/fonts.stamp: stamps/generated.sta cp $(FONTCONFIG_PATH)/linux.fontconfig.Fedora.properties $(FONTCONFIG_PATH)/linux.fontconfig.Fedora.12.properties mkdir -p stamps touch stamps/fonts.stamp + +clean-fonts: + rm -f stamps/fonts.stamp stamps/patch-fsg.stamp: stamps/fonts.stamp mkdir -p stamps ; \ diff -r 5772aff6fc53 -r 6246db42e88c acinclude.m4 --- a/acinclude.m4 Thu Nov 11 21:01:13 2010 +0100 +++ b/acinclude.m4 Sun Nov 14 13:53:05 2010 +0000 @@ -917,8 +917,8 @@ AC_DEFUN([AC_CHECK_WITH_HOTSPOT_BUILD], AC_DEFUN([AC_CHECK_WITH_HOTSPOT_BUILD], [ ORIGINAL_BUILD="original" - ALTERNATE_BUILD="hs19" - DEFAULT_BUILD=${ALTERNATE_BUILD} + ALTERNATE_BUILD="original" + DEFAULT_BUILD=${ORIGINAL_BUILD} AC_MSG_CHECKING([which HotSpot build to use]) AC_ARG_WITH([hotspot-build], [AS_HELP_STRING(--with-hotspot-build,the HotSpot build to use (see hotspot.map))], diff -r 5772aff6fc53 -r 6246db42e88c hotspot.map --- a/hotspot.map Thu Nov 11 21:01:13 2010 +0100 +++ b/hotspot.map Sun Nov 14 13:53:05 2010 +0000 @@ -1,3 +1,1 @@ # version url changeset md5sum -hs19 http://hg.openjdk.java.net/hsx/hsx19/master 13edc857b967 3171888f17698d8e9348f8b3e813d20d - diff -r 5772aff6fc53 -r 6246db42e88c patches/alpha-fixes.patch --- /dev/null Thu Jan 01 00:00:00 1970 +0000 From bugzilla-daemon at icedtea.classpath.org Sun Nov 14 23:24:03 2010 From: bugzilla-daemon at icedtea.classpath.org (bugzilla-daemon at icedtea.classpath.org) Date: Mon, 15 Nov 2010 07:24:03 +0000 Subject: [Bug 591] New: Unable to build openjdk/icedtea on Slack 13.1 Message-ID: http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=591 Summary: Unable to build openjdk/icedtea on Slack 13.1 Product: IcedTea Version: 6-1.9.1 Platform: 32-bit OS/Version: Linux Status: NEW Severity: major Priority: P2 Component: IcedTea6 AssignedTo: unassigned at icedtea.classpath.org ReportedBy: robert at linux-source.org Im trying to build icedted using openjdk6-b20 with jaws,jaxp,jaf version b20 and gcc version 4.5.1 on slackware. Everything works until one point when the builder dies with this error: -init-src-dirs: [echo] Using primary.src.dir=/tmp/kng/icedtea6-1.9.1/openjdk.build-ecj/jaxws/drop/jaxws_src/src [echo] Using src.dir.id=/tmp/kng/icedtea6-1.9.1/openjdk.build-ecj/jaxws/drop/jaxws_src/src:/tmp/kng/icedtea6-1.9.1/openjdk.build-ecj/jaxws/drop/jaf_src/src compile: [javac] Compiling 2545 source files to /tmp/kng/icedtea6-1.9.1/openjdk.build-ecj/jaxws/build/classes [javac] ---------- [javac] 1. ERROR in /tmp/kng/icedtea6-1.9.1/openjdk.build-ecj/jaxws/drop/jaxws_src/src/com/sun/xml/internal/fastinfoset/stax/events/AttributeBase.java (at line 111) [javac] public QName getDTDType() { [javac] ^^^^^ [javac] The return type is incompatible with Attribute.getDTDType() [javac] ---------- [javac] 1 problem (1 error) BUILD FAILED /tmp/kng/icedtea6-1.9.1/openjdk-ecj/jaxws/build.xml:135: Compile failed; see the compiler error output for details. Total time: 1 minute 7 seconds make[3]: *** [all] Error 1 make[3]: Leaving directory `/tmp/kng/icedtea6-1.9.1/openjdk-ecj/jaxws/make' make[2]: *** [jaxws-build] Error 2 make[2]: Leaving directory `/tmp/kng/icedtea6-1.9.1/openjdk-ecj' make[1]: *** [build_product_image] Error 2 make[1]: Leaving directory `/tmp/kng/icedtea6-1.9.1/openjdk-ecj' make: *** [stamps/icedtea-ecj.stamp] Error 2 Can anyone tell me whats the issue? -- Configure bugmail: http://icedtea.classpath.org/bugzilla/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are the assignee for the bug, or are watching the assignee. From bugzilla-daemon at icedtea.classpath.org Mon Nov 15 01:02:38 2010 From: bugzilla-daemon at icedtea.classpath.org (bugzilla-daemon at icedtea.classpath.org) Date: Mon, 15 Nov 2010 09:02:38 +0000 Subject: [Bug 591] Unable to build openjdk/icedtea on Slack 13.1 Message-ID: http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=591 ------- Comment #1 from mark at klomp.org 2010-11-15 09:02 ------- There is a configure check for that issue which seems to have misfired in your case. And/Or the javac/ecj that ant uses is different from what the configure script used to do the test. Could you take a look at your config.log and see what it says about "checking if javax.xml.stream.events.Attribute.getDTDType() wrongly returns a QName"? -- Configure bugmail: http://icedtea.classpath.org/bugzilla/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are the assignee for the bug, or are watching the assignee. From bugzilla-daemon at icedtea.classpath.org Mon Nov 15 01:08:09 2010 From: bugzilla-daemon at icedtea.classpath.org (bugzilla-daemon at icedtea.classpath.org) Date: Mon, 15 Nov 2010 09:08:09 +0000 Subject: [Bug 591] Unable to build openjdk/icedtea on Slack 13.1 Message-ID: http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=591 ------- Comment #2 from robert at linux-source.org 2010-11-15 09:08 ------- How exactly can it be different? I mean Im using apache-ant 1.8.1 and like I said gcc/gcj 4.5.1 (apache-ant comes from binary package not source, as it can be downloaded from apache.org) -- Configure bugmail: http://icedtea.classpath.org/bugzilla/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are the assignee for the bug, or are watching the assignee. From bugzilla-daemon at icedtea.classpath.org Mon Nov 15 01:16:54 2010 From: bugzilla-daemon at icedtea.classpath.org (bugzilla-daemon at icedtea.classpath.org) Date: Mon, 15 Nov 2010 09:16:54 +0000 Subject: [Bug 591] Unable to build openjdk/icedtea on Slack 13.1 Message-ID: http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=591 ------- Comment #3 from robert at linux-source.org 2010-11-15 09:16 ------- Here it is the error: configure:11179: checking if sun.awt.SunToolkit is missing ./configure: line 11200: -cp: command not found configure:11211: result: yes configure:11226: checking if javax.xml.stream.events.Attribute.getDTDType() wrongly returns a QName ./configure: line 11287: -cp: command not found -- Configure bugmail: http://icedtea.classpath.org/bugzilla/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are the assignee for the bug, or are watching the assignee. From bugzilla-daemon at icedtea.classpath.org Mon Nov 15 02:35:35 2010 From: bugzilla-daemon at icedtea.classpath.org (bugzilla-daemon at icedtea.classpath.org) Date: Mon, 15 Nov 2010 10:35:35 +0000 Subject: [Bug 584] ARM Zero c++ interpreter freecol crash using -Xincgc Message-ID: http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=584 ------- Comment #1 from gbenson at redhat.com 2010-11-15 10:35 ------- Is this fixed now? -- Configure bugmail: http://icedtea.classpath.org/bugzilla/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are the assignee for the bug, or are watching the assignee. From bugzilla-daemon at icedtea.classpath.org Mon Nov 15 02:46:24 2010 From: bugzilla-daemon at icedtea.classpath.org (bugzilla-daemon at icedtea.classpath.org) Date: Mon, 15 Nov 2010 10:46:24 +0000 Subject: [Bug 584] ARM Zero c++ interpreter freecol crash using -Xincgc Message-ID: http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=584 ------- Comment #2 from xerxes at zafena.se 2010-11-15 10:46 ------- (In reply to comment #1) > Is this fixed now? > Please let me prepare and check this using a icedtea6 pre1.10 build and a 1.9.2 build. as stated in the bugreport, this bug exist using my (IcedTea6 1.9) (6b20-1.9-0ubuntu1) build. -- Configure bugmail: http://icedtea.classpath.org/bugzilla/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are the assignee for the bug, or are watching the assignee. From bugzilla-daemon at icedtea.classpath.org Mon Nov 15 03:09:14 2010 From: bugzilla-daemon at icedtea.classpath.org (bugzilla-daemon at icedtea.classpath.org) Date: Mon, 15 Nov 2010 11:09:14 +0000 Subject: [Bug 591] Unable to build openjdk/icedtea on Slack 13.1 Message-ID: http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=591 ------- Comment #4 from mark at klomp.org 2010-11-15 11:09 ------- Ant has ways to trick us up and picking a different compiler from the one we expect at times. But that isn't your problem here. For some reason configure completely failed to find and java compiler. The errors saying " -cp: command not found" mean that it tries to run "nothing" and gives it as first argument "-cp" which the shell then interprets as the command we want to run. I am not sure how that can happen or why configure didn't just completely fail. Could you attach your full config.log file to the bug report? -- Configure bugmail: http://icedtea.classpath.org/bugzilla/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are the assignee for the bug, or are watching the assignee. From bugzilla-daemon at icedtea.classpath.org Mon Nov 15 03:24:56 2010 From: bugzilla-daemon at icedtea.classpath.org (bugzilla-daemon at icedtea.classpath.org) Date: Mon, 15 Nov 2010 11:24:56 +0000 Subject: [Bug 591] Unable to build openjdk/icedtea on Slack 13.1 Message-ID: http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=591 ------- Comment #5 from robert at linux-source.org 2010-11-15 11:24 ------- OK, I will give you the config.log as soon as I get home... my system is down now :) Damn power outage :( -- Configure bugmail: http://icedtea.classpath.org/bugzilla/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are the assignee for the bug, or are watching the assignee. From bugzilla-daemon at icedtea.classpath.org Mon Nov 15 04:47:19 2010 From: bugzilla-daemon at icedtea.classpath.org (bugzilla-daemon at icedtea.classpath.org) Date: Mon, 15 Nov 2010 12:47:19 +0000 Subject: [Bug 584] ARM Zero c++ interpreter freecol crash using -Xincgc Message-ID: http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=584 ------- Comment #3 from gbenson at redhat.com 2010-11-15 12:47 ------- Ah, I didn't mean for you to spend a lot of time on this. I was just wondering, since there was a generic (non-Zero) -Xincgc bug recently... -- Configure bugmail: http://icedtea.classpath.org/bugzilla/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are the assignee for the bug, or are watching the assignee. From bugzilla-daemon at icedtea.classpath.org Mon Nov 15 04:55:13 2010 From: bugzilla-daemon at icedtea.classpath.org (bugzilla-daemon at icedtea.classpath.org) Date: Mon, 15 Nov 2010 12:55:13 +0000 Subject: [Bug 584] ARM Zero c++ interpreter freecol crash using -Xincgc Message-ID: http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=584 ------- Comment #4 from xerxes at zafena.se 2010-11-15 12:55 ------- (In reply to comment #3) > Ah, I didn't mean for you to spend a lot of time on this. I was just > wondering, since there was a generic (non-Zero) -Xincgc bug recently... > I belive this bug are a different one compared to pr587 pr584 (this bug) crashes with -Xincgc pr587 the other bug crashes when running without -Xincgc (claimed to be fixed now using 1.9.1 and later) the reporter of pr587 mentioned in the bugreport that he had once seen a rare crashes when running with -Xincgc on his system and this rare crash are probably related to this pr584 bug. -- Configure bugmail: http://icedtea.classpath.org/bugzilla/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are the assignee for the bug, or are watching the assignee. From ptisnovs at redhat.com Mon Nov 15 06:04:41 2010 From: ptisnovs at redhat.com (Pavel Tisnovsky) Date: Mon, 15 Nov 2010 15:04:41 +0100 Subject: Reviewer needed - fix for regression test java/awt/FontClass/CreateFont/DeleteFont Message-ID: <4CE13DF9.3020207@redhat.com> Hi all, can anybody please review fix for regression test java/awt/FontClass/CreateFont/DeleteFont? This test check, if the temporary file containing font is properly deleted when JVM finishes. The check is based on counting of files in temporary dir - if temporary font file is not deleted, the number of files before and after running the test differs. BUT JVM also creates hsperfdata_* subdirectory so the check described above always fails (presence of this subdirectory add +1 to number of files in temporary directory). I've added simple filter to resolve this issue. (I also tried to acquire bug ID to push this fix to OpenJDK7, but still without success ;-) Diffstat produced against IcedTea6 HEAD is stored in attachment. Thank you in advance Pavel -------------- next part -------------- An embedded and charset-unspecified text was scrubbed... Name: hg_export Url: http://mail.openjdk.java.net/pipermail/distro-pkg-dev/attachments/20101115/ac3b2abc/hg_export.ksh From bugzilla-daemon at icedtea.classpath.org Mon Nov 15 08:13:12 2010 From: bugzilla-daemon at icedtea.classpath.org (bugzilla-daemon at icedtea.classpath.org) Date: Mon, 15 Nov 2010 16:13:12 +0000 Subject: [Bug 584] ARM Zero c++ interpreter freecol crash using -Xincgc Message-ID: http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=584 ------- Comment #5 from xerxes at zafena.se 2010-11-15 16:13 ------- Created an attachment (id=439) --> (http://icedtea.classpath.org/bugzilla/attachment.cgi?id=439&action=view) 1.9.1 zero arm hs_err_pid24328.log still crashes using latest icedtea6 release 1.9.1 on arm. # Internal Error (os_linux_zero.cpp:236), pid=24328, tid=1411724400 # Error: caught unhandled signal 11 # # JRE version: 6.0_20-b20 # Java VM: OpenJDK Zero VM (17.0-b16 interpreted mode linux-arm ) # Derivative: IcedTea6 1.9.1 # Distribution: Ubuntu 10.10, package 6b20-1.9.1-1ubuntu3 # An error report file with more information is saved as: # /home/xranby/hs_err_pid24328.log -- Configure bugmail: http://icedtea.classpath.org/bugzilla/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are the assignee for the bug, or are watching the assignee. From ahughes at redhat.com Mon Nov 15 08:31:19 2010 From: ahughes at redhat.com (Dr Andrew John Hughes) Date: Mon, 15 Nov 2010 16:31:19 +0000 Subject: [1.8] RFC: Allow NetX to be disabled In-Reply-To: <20101112001752.GD5773@rivendell.middle-earth.co.uk> References: <20101112001752.GD5773@rivendell.middle-earth.co.uk> Message-ID: <20101115163119.GD11013@rivendell.middle-earth.co.uk> On 00:17 Fri 12 Nov , Dr Andrew John Hughes wrote: > Same again for 1.8: > > 2010-11-11 Andrew John Hughes > > * Makefile.am: > (ICEDTEA_PATCHES): Only apply netx.patch and > netx-umask.patch if NetX is enabled. > (distclean-local): Add clean-about. > (.PHONY): Likewise. > (icedtea): Depend on about.stamp. Add > ENABLE_NETX conditional. > (icedtea-debug): Likewise. > (netx): Add ENABLE_NETX conditional. > (netx-dist): Likewise. > (extra-class-files): Likewise. > (about): New target (from extra-lib/about.jar). > Add ENABLE_NETX conditional. > (clean-about): New target to remove about.jar. > * acinclude.m4: > (IT_CHECK_PLUGIN): Require IT_CHECK_NETX. > Disable if NetX is turned off. > (IT_CHECK_NETX): Add --disable-webstart option. > > -- > Andrew :) > > Free Java Software Engineer > Red Hat, Inc. (http://www.redhat.com) > > Support Free Java! > Contribute to GNU Classpath and the OpenJDK > http://www.gnu.org/software/classpath > http://openjdk.java.net > PGP Key: 94EFD9D8 (http://subkeys.pgp.net) > Fingerprint = F8EF F1EA 401E 2E60 15FA 7927 142C 2591 94EF D9D8 > diff -r 78de2d8168d8 Makefile.am > --- a/Makefile.am Mon Oct 18 12:47:36 2010 -0400 > +++ b/Makefile.am Fri Nov 12 00:01:20 2010 +0000 > @@ -341,9 +341,6 @@ > patches/icedtea-sh4-support.patch \ > patches/icedtea-policy-evaluation.patch \ > patches/libpng.patch \ > - patches/extensions/netx.patch \ > - patches/extensions/netx-dist.patch \ > - patches/extensions/netx-umask.patch \ > patches/icedtea-jtreg-httpTest.patch \ > patches/ant-1.8.0.patch \ > patches/icedtea-nss-6763530.patch \ > @@ -377,6 +374,13 @@ > patches/icedtea-rhino.patch > endif > > +if ENABLE_NETX > +ICEDTEA_PATCHES += \ > + patches/extensions/netx.patch \ > + patches/extensions/netx-dist.patch \ > + patches/extensions/netx-umask.patch > +endif > + > if ENABLE_PLUGIN > ICEDTEA_PATCHES += \ > patches/extensions/liveconnect.patch \ > @@ -614,7 +618,7 @@ > > #FIXME (clean): Should become clean-local. > distclean-local: clean-copy clean-jtreg clean-jtreg-reports $(PULSE_JAVA_CLEAN_TARGET) \ > - clean-netx clean-plugin clean-liveconnect > + clean-netx clean-plugin clean-liveconnect clean-about > rm -rf stamps > rm -f rt-source-files.txt \ > extra-source-files.txt > @@ -646,7 +650,8 @@ > clean-icedtea icedtea-against-icedtea clean-icedtea-ecj \ > clean-tools-jar clean-visualvm clean-nbplatform \ > clean-copy clean-rt $(ICEDTEAPLUGIN_CLEAN) hotspot \ > - hotspot-helper clean-extra clean-jtreg clean-jtreg-reports > + hotspot-helper clean-extra clean-jtreg clean-jtreg-reports \ > + clean-about > > env: > @echo 'unset JAVA_HOME' > @@ -1303,7 +1308,7 @@ > # you change it in the icedtea-debug target as well. > stamps/icedtea.stamp: stamps/bootstrap-directory-symlink.stamp \ > stamps/netx-dist.stamp $(OPENJDK_TREE) stamps/plugin.stamp \ > - extra-lib/about.jar stamps/cacao.stamp \ > + stamps/about.stamp stamps/cacao.stamp \ > stamps/visualvm.stamp $(PULSE_JAVA_TARGET) stamps/rewrite-rhino.stamp > $(ARCH_PREFIX) $(MAKE) \ > $(ICEDTEA_ENV) \ > @@ -1349,6 +1354,7 @@ > cp -r netbeans/nbbuild/netbeans_visualvm/profiler3 \ > $(BUILD_OUTPUT_DIR)/j2sdk-image/lib/visualvm > endif > +if ENABLE_NETX > cp $(NETX_RESOURCE_DIR)/about.jnlp extra-lib/about.jar \ > $(BUILD_OUTPUT_DIR)/j2re-image/lib ; \ > cp $(NETX_RESOURCE_DIR)/about.jnlp extra-lib/about.jar \ > @@ -1361,6 +1367,7 @@ > cp $(NETX_SRCDIR)/javaws.1 \ > $(BUILD_OUTPUT_DIR)/j2re-image/man/man1 ; \ > fi > +endif > if ZERO_BUILD > printf -- '-zero ALIASED_TO -server\n' >> $(BUILD_JRE_ARCH_DIR)/jvm.cfg > endif > @@ -1401,7 +1408,7 @@ > > stamps/icedtea-debug.stamp: stamps/bootstrap-directory-symlink.stamp \ > stamps/netx-dist.stamp $(OPENJDK_TREE) stamps/plugin.stamp \ > - extra-lib/about.jar stamps/cacao.stamp \ > + stamps/about.stamp stamps/cacao.stamp \ > stamps/visualvm.stamp $(PULSE_JAVA_TARGET) stamps/rewrite-rhino.stamp > $(ARCH_PREFIX) $(MAKE) \ > $(ICEDTEA_ENV) \ > @@ -1447,6 +1454,7 @@ > cp -r netbeans/nbbuild/netbeans_visualvm/profiler3 \ > $(BUILD_OUTPUT_DIR)/j2sdk-image/lib/visualvm > endif > +if ENABLE_NETX > cp $(NETX_RESOURCE_DIR)/default.jnlp extra-lib/about.jar \ > $(BUILD_OUTPUT_DIR)-debug/j2re-image/lib ; \ > cp $(NETX_RESOURCE_DIR)/default.jnlp extra-lib/about.jar \ > @@ -1459,6 +1467,7 @@ > cp $(NETX_SRCDIR)/javaws.1 \ > $(DEBUG_BUILD_OUTPUT_DIR)/j2re-image/man/man1 ; \ > fi > +endif > if ZERO_BUILD > printf -- '-zero ALIASED_TO -server\n' >> $(BUILD_DEBUG_JRE_ARCH_DIR)/jvm.cfg > endif > @@ -1663,6 +1672,7 @@ > find $(NETX_SRCDIR) -name '*.java' | sort > $@ > > stamps/netx.stamp: netx-source-files.txt stamps/rt-class-files.stamp > +if ENABLE_NETX > mkdir -p $(abs_top_builddir)/netx.build > $(ICEDTEA_BOOT_DIR)/bin/javac $(IT_JAVACFLAGS) \ > -d $(abs_top_builddir)/netx.build \ > @@ -1671,10 +1681,12 @@ > -bootclasspath \'\' \ > @netx-source-files.txt > cp -r $(NETX_RESOURCE_DIR) $(abs_top_builddir)/netx.build/net/sourceforge/jnlp > +endif > mkdir -p stamps > touch $@ > > stamps/netx-dist.stamp: stamps/netx.stamp > +if ENABLE_NETX > (cd $(abs_top_builddir)/netx.build ; \ > mkdir -p lib ; \ > $(ICEDTEA_BOOT_DIR)/bin/jar cf lib/classes.jar javax/jnlp net ; \ > @@ -1684,6 +1696,7 @@ > $(ICEDTEA_BOOT_DIR)/bin/jar uf $(abs_top_builddir)/netx.build/lib/classes.jar \ > `find . -type f -not -name '*.java'` ; \ > $(ZIP) -qr $(abs_top_builddir)/netx.build/lib/src.zip javax net ) > +endif > mkdir -p stamps > touch $@ > > @@ -1699,12 +1712,14 @@ > > stamps/extra-class-files.stamp: $(INITIAL_BOOTSTRAP_LINK_STAMP) \ > extra-source-files.txt stamps/netx.stamp > +if ENABLE_NETX > mkdir -p extra-lib > $(ICEDTEA_BOOT_DIR)/bin/javac $(MEMORY_LIMIT) -g -d extra-lib \ > -source 1.5 \ > -sourcepath extra -cp netx.build:$(ICEDTEA_RT) \ > -bootclasspath \'\' @extra-source-files.txt > cp -r $(NETX_EXTRA_DIR) extra-lib/net/sourceforge/jnlp/about > +endif > mkdir -p stamps > touch $@ > > @@ -1713,13 +1728,21 @@ > rm -f stamps/extra-class-files.stamp > rm -f extra-source-files.txt > > -extra-lib/about.jar: stamps/extra-class-files.stamp > +stamps/about.stamp: stamps/extra-class-files.stamp > +if ENABLE_NETX > if ! test -d $(ICEDTEA_BOOT_DIR) ; \ > then \ > $(JAR) cf $@ -C extra-lib net ; \ > else \ > $(ICEDTEA_BOOT_DIR)/bin/jar cf $@ -C extra-lib net ; \ > fi > +endif > + mkdir -p stamps > + touch $@ > + > +clean-about: > + rm -f extra-lib/about.jar > + rm -f stamps/about.stamp > > # PulseAudio based mixer > # (pulse-java) > diff -r 78de2d8168d8 acinclude.m4 > --- a/acinclude.m4 Mon Oct 18 12:47:36 2010 -0400 > +++ b/acinclude.m4 Fri Nov 12 00:01:20 2010 +0000 > @@ -1440,12 +1440,17 @@ > > AC_DEFUN_ONCE([IT_CHECK_PLUGIN], > [ > +AC_REQUIRE([IT_CHECK_NETX]) > AC_MSG_CHECKING([whether to build the browser plugin]) > AC_ARG_ENABLE([plugin], > [AS_HELP_STRING([--disable-plugin], > [Disable compilation of browser plugin])], > [enable_plugin="${enableval}"], [enable_plugin="yes"]) > AC_MSG_RESULT(${enable_plugin}) > +if test "x${enable_netx}" = "xno" ; then > + AC_MSG_WARN([Plugin can not be built without NetX; disabling plugin]) > + enable_plugin=no; > +fi > ]) > > AC_DEFUN_ONCE([IT_CHECK_PLUGIN_DEPENDENCIES], > @@ -1536,3 +1541,14 @@ > AC_SUBST(NSS_LIBDIR) > AC_CONFIG_FILES([nss.cfg]) > ]) > + > +AC_DEFUN_ONCE([IT_CHECK_NETX], > +[ > +AC_MSG_CHECKING([whether to build NetX]) > +AC_ARG_ENABLE([webstart], > + [AS_HELP_STRING([--disable-webstart], > + [Disable compilation of Web Start support])], > + [enable_netx="${enableval}"], [enable_netx="yes"]) > +AC_MSG_RESULT(${enable_netx}) > +AM_CONDITIONAL(ENABLE_NETX, test "x${enable_netx}" = "xyes") > +]) Revised version thanks to an issue caught by Omair; the extra.stamp target was still using $@ instead of extra-lib/about.jar. -- Andrew :) Free Java Software Engineer Red Hat, Inc. (http://www.redhat.com) Support Free Java! Contribute to GNU Classpath and the OpenJDK http://www.gnu.org/software/classpath http://openjdk.java.net PGP Key: 94EFD9D8 (http://subkeys.pgp.net) Fingerprint = F8EF F1EA 401E 2E60 15FA 7927 142C 2591 94EF D9D8 -------------- next part -------------- diff -r 78de2d8168d8 ChangeLog --- a/ChangeLog Mon Oct 18 12:47:36 2010 -0400 +++ b/ChangeLog Mon Nov 15 16:30:34 2010 +0000 @@ -1,3 +1,24 @@ +2010-11-11 Andrew John Hughes + + * Makefile.am: + (ICEDTEA_PATCHES): Only apply netx.patch and + netx-umask.patch if NetX is enabled. + (distclean-local): Add clean-about. + (.PHONY): Likewise. + (icedtea): Depend on about.stamp. Add + ENABLE_NETX conditional. + (icedtea-debug): Likewise. + (netx): Add ENABLE_NETX conditional. + (netx-dist): Likewise. + (extra-class-files): Likewise. + (about): New target (from extra-lib/about.jar). + Add ENABLE_NETX conditional. + (clean-about): New target to remove about.jar. + * acinclude.m4: + (IT_CHECK_PLUGIN): Require IT_CHECK_NETX. + Disable if NetX is turned off. + (IT_CHECK_NETX): Add --disable-webstart option. + 2010-10-18 Omair Majid * netx/net/sourceforge/jnlp/security/VariableX509TrustManager.java: diff -r 78de2d8168d8 Makefile.am --- a/Makefile.am Mon Oct 18 12:47:36 2010 -0400 +++ b/Makefile.am Mon Nov 15 16:30:34 2010 +0000 @@ -341,9 +341,6 @@ patches/icedtea-sh4-support.patch \ patches/icedtea-policy-evaluation.patch \ patches/libpng.patch \ - patches/extensions/netx.patch \ - patches/extensions/netx-dist.patch \ - patches/extensions/netx-umask.patch \ patches/icedtea-jtreg-httpTest.patch \ patches/ant-1.8.0.patch \ patches/icedtea-nss-6763530.patch \ @@ -377,6 +374,13 @@ patches/icedtea-rhino.patch endif +if ENABLE_NETX +ICEDTEA_PATCHES += \ + patches/extensions/netx.patch \ + patches/extensions/netx-dist.patch \ + patches/extensions/netx-umask.patch +endif + if ENABLE_PLUGIN ICEDTEA_PATCHES += \ patches/extensions/liveconnect.patch \ @@ -614,7 +618,7 @@ #FIXME (clean): Should become clean-local. distclean-local: clean-copy clean-jtreg clean-jtreg-reports $(PULSE_JAVA_CLEAN_TARGET) \ - clean-netx clean-plugin clean-liveconnect + clean-netx clean-plugin clean-liveconnect clean-about rm -rf stamps rm -f rt-source-files.txt \ extra-source-files.txt @@ -646,7 +650,8 @@ clean-icedtea icedtea-against-icedtea clean-icedtea-ecj \ clean-tools-jar clean-visualvm clean-nbplatform \ clean-copy clean-rt $(ICEDTEAPLUGIN_CLEAN) hotspot \ - hotspot-helper clean-extra clean-jtreg clean-jtreg-reports + hotspot-helper clean-extra clean-jtreg clean-jtreg-reports \ + clean-about env: @echo 'unset JAVA_HOME' @@ -1303,7 +1308,7 @@ # you change it in the icedtea-debug target as well. stamps/icedtea.stamp: stamps/bootstrap-directory-symlink.stamp \ stamps/netx-dist.stamp $(OPENJDK_TREE) stamps/plugin.stamp \ - extra-lib/about.jar stamps/cacao.stamp \ + stamps/about.stamp stamps/cacao.stamp \ stamps/visualvm.stamp $(PULSE_JAVA_TARGET) stamps/rewrite-rhino.stamp $(ARCH_PREFIX) $(MAKE) \ $(ICEDTEA_ENV) \ @@ -1349,6 +1354,7 @@ cp -r netbeans/nbbuild/netbeans_visualvm/profiler3 \ $(BUILD_OUTPUT_DIR)/j2sdk-image/lib/visualvm endif +if ENABLE_NETX cp $(NETX_RESOURCE_DIR)/about.jnlp extra-lib/about.jar \ $(BUILD_OUTPUT_DIR)/j2re-image/lib ; \ cp $(NETX_RESOURCE_DIR)/about.jnlp extra-lib/about.jar \ @@ -1361,6 +1367,7 @@ cp $(NETX_SRCDIR)/javaws.1 \ $(BUILD_OUTPUT_DIR)/j2re-image/man/man1 ; \ fi +endif if ZERO_BUILD printf -- '-zero ALIASED_TO -server\n' >> $(BUILD_JRE_ARCH_DIR)/jvm.cfg endif @@ -1401,7 +1408,7 @@ stamps/icedtea-debug.stamp: stamps/bootstrap-directory-symlink.stamp \ stamps/netx-dist.stamp $(OPENJDK_TREE) stamps/plugin.stamp \ - extra-lib/about.jar stamps/cacao.stamp \ + stamps/about.stamp stamps/cacao.stamp \ stamps/visualvm.stamp $(PULSE_JAVA_TARGET) stamps/rewrite-rhino.stamp $(ARCH_PREFIX) $(MAKE) \ $(ICEDTEA_ENV) \ @@ -1447,6 +1454,7 @@ cp -r netbeans/nbbuild/netbeans_visualvm/profiler3 \ $(BUILD_OUTPUT_DIR)/j2sdk-image/lib/visualvm endif +if ENABLE_NETX cp $(NETX_RESOURCE_DIR)/default.jnlp extra-lib/about.jar \ $(BUILD_OUTPUT_DIR)-debug/j2re-image/lib ; \ cp $(NETX_RESOURCE_DIR)/default.jnlp extra-lib/about.jar \ @@ -1459,6 +1467,7 @@ cp $(NETX_SRCDIR)/javaws.1 \ $(DEBUG_BUILD_OUTPUT_DIR)/j2re-image/man/man1 ; \ fi +endif if ZERO_BUILD printf -- '-zero ALIASED_TO -server\n' >> $(BUILD_DEBUG_JRE_ARCH_DIR)/jvm.cfg endif @@ -1663,6 +1672,7 @@ find $(NETX_SRCDIR) -name '*.java' | sort > $@ stamps/netx.stamp: netx-source-files.txt stamps/rt-class-files.stamp +if ENABLE_NETX mkdir -p $(abs_top_builddir)/netx.build $(ICEDTEA_BOOT_DIR)/bin/javac $(IT_JAVACFLAGS) \ -d $(abs_top_builddir)/netx.build \ @@ -1671,10 +1681,12 @@ -bootclasspath \'\' \ @netx-source-files.txt cp -r $(NETX_RESOURCE_DIR) $(abs_top_builddir)/netx.build/net/sourceforge/jnlp +endif mkdir -p stamps touch $@ stamps/netx-dist.stamp: stamps/netx.stamp +if ENABLE_NETX (cd $(abs_top_builddir)/netx.build ; \ mkdir -p lib ; \ $(ICEDTEA_BOOT_DIR)/bin/jar cf lib/classes.jar javax/jnlp net ; \ @@ -1684,6 +1696,7 @@ $(ICEDTEA_BOOT_DIR)/bin/jar uf $(abs_top_builddir)/netx.build/lib/classes.jar \ `find . -type f -not -name '*.java'` ; \ $(ZIP) -qr $(abs_top_builddir)/netx.build/lib/src.zip javax net ) +endif mkdir -p stamps touch $@ @@ -1699,12 +1712,14 @@ stamps/extra-class-files.stamp: $(INITIAL_BOOTSTRAP_LINK_STAMP) \ extra-source-files.txt stamps/netx.stamp +if ENABLE_NETX mkdir -p extra-lib $(ICEDTEA_BOOT_DIR)/bin/javac $(MEMORY_LIMIT) -g -d extra-lib \ -source 1.5 \ -sourcepath extra -cp netx.build:$(ICEDTEA_RT) \ -bootclasspath \'\' @extra-source-files.txt cp -r $(NETX_EXTRA_DIR) extra-lib/net/sourceforge/jnlp/about +endif mkdir -p stamps touch $@ @@ -1713,13 +1728,21 @@ rm -f stamps/extra-class-files.stamp rm -f extra-source-files.txt -extra-lib/about.jar: stamps/extra-class-files.stamp +stamps/about.stamp: stamps/extra-class-files.stamp +if ENABLE_NETX if ! test -d $(ICEDTEA_BOOT_DIR) ; \ then \ - $(JAR) cf $@ -C extra-lib net ; \ + $(JAR) cf extra-lib/about.jar -C extra-lib net ; \ else \ - $(ICEDTEA_BOOT_DIR)/bin/jar cf $@ -C extra-lib net ; \ + $(ICEDTEA_BOOT_DIR)/bin/jar cf extra-lib/about.jar -C extra-lib net ; \ fi +endif + mkdir -p stamps + touch $@ + +clean-about: + rm -f extra-lib/about.jar + rm -f stamps/about.stamp # PulseAudio based mixer # (pulse-java) diff -r 78de2d8168d8 acinclude.m4 --- a/acinclude.m4 Mon Oct 18 12:47:36 2010 -0400 +++ b/acinclude.m4 Mon Nov 15 16:30:34 2010 +0000 @@ -1440,12 +1440,17 @@ AC_DEFUN_ONCE([IT_CHECK_PLUGIN], [ +AC_REQUIRE([IT_CHECK_NETX]) AC_MSG_CHECKING([whether to build the browser plugin]) AC_ARG_ENABLE([plugin], [AS_HELP_STRING([--disable-plugin], [Disable compilation of browser plugin])], [enable_plugin="${enableval}"], [enable_plugin="yes"]) AC_MSG_RESULT(${enable_plugin}) +if test "x${enable_netx}" = "xno" ; then + AC_MSG_WARN([Plugin can not be built without NetX; disabling plugin]) + enable_plugin=no; +fi ]) AC_DEFUN_ONCE([IT_CHECK_PLUGIN_DEPENDENCIES], @@ -1536,3 +1541,14 @@ AC_SUBST(NSS_LIBDIR) AC_CONFIG_FILES([nss.cfg]) ]) + +AC_DEFUN_ONCE([IT_CHECK_NETX], +[ +AC_MSG_CHECKING([whether to build NetX]) +AC_ARG_ENABLE([webstart], + [AS_HELP_STRING([--disable-webstart], + [Disable compilation of Web Start support])], + [enable_netx="${enableval}"], [enable_netx="yes"]) +AC_MSG_RESULT(${enable_netx}) +AM_CONDITIONAL(ENABLE_NETX, test "x${enable_netx}" = "xyes") +]) From omajid at redhat.com Mon Nov 15 09:25:39 2010 From: omajid at redhat.com (Omair Majid) Date: Mon, 15 Nov 2010 12:25:39 -0500 Subject: [icedtea-web] RFC: integrate proxy configuration into netx/plugin Message-ID: <4CE16D13.7090805@redhat.com> Hi, The attached patch integrates proxy configuration into netx/plugin. This will allow users to manually specify proxies to use for netx and plugin. This patch does not add support for allowing netx to use mozilla's configuration to determine proxies. It also does not allow either the plugin or netx to use Proxy Auto Config files. I plan to take care of both of these as separate patches. I have not made any changes to CustomAuthenticator or to PasswordAuthenticationDialog other than renaming the class and moving it from one package to another. ChangeLog 2010-11-15 Omair Majid * netx/net/sourceforge/jnlp/runtime/DeploymentConfiguration.java: Add KEY_PROXY_TYPE, KEY_PROXY_SAME, KEY_PROXY_AUTO_CONFIG_URL, KEY_PROXY_BYPASS_LIST, KEY_PROXY_BYPASS_LOCAL, KEY_PROXY_HTTP_HOST, KEY_PROXY_HTTP_PORT, KEY_PROXY_HTTPS_HOST, KEY_PROXY_HTTPS_PORT, KEY_PROXY_FTP_HOST, KEY_PROXY_FTP_PORT, KEY_PROXY_SOCKS4_HOST, KEY_PROXY_SOCKS4_PORT, and KEY_PROXY_OVERRIDE_HOSTS. (loadDefaultProperties): Use the new constants. * netx/net/sourceforge/jnlp/runtime/JNLPProxySelector.java: New class. (JNLPProxySelector): New method. (parseConfiguration): New method. Initializes this object by querying the configuration. (getHost): New method. (getPort): New method. (connectFailed): New method. (select): New method. Returns a list of appropriate proxies to use for a given uri. (inBypassList): New method. Return true if the host in the URI should be bypassed for proxy purposes. (isLocalHost): New method. (getFromConfiguration): New method. Finds a proxy based on configuration. (getFromPAC): New method. (getFromBrowser): New method. * netx/net/sourceforge/jnlp/runtime/JNLPRuntime.java (initialize): Install proxy selector and authenticator. * plugin/icedteanp/java/sun/applet/PluginMain.java (init): Do not install authenticator. (CustomAuthenticator): Moved to... * netx/net/sourceforge/jnlp/security/JNLPAuthenticator.java: Here. * plugin/icedteanp/java/sun/applet/PasswordAuthenticationDialog.java Moved to... * netx/net/sourceforge/jnlp/security /PasswordAuthenticationDialog.java: Here. * plugin/icedteanp/java/sun/applet/PluginProxySelector.java: Extend JNLPProxySelector. (select): Renamed to... (getFromBrowser): New method. Any thoughts or comments? Cheers, Omair -------------- next part -------------- A non-text attachment was scrubbed... Name: integrate-proxy-03.patch Type: text/x-patch Size: 40667 bytes Desc: not available Url : http://mail.openjdk.java.net/pipermail/distro-pkg-dev/attachments/20101115/2de4e02f/integrate-proxy-03.patch From omajid at redhat.com Mon Nov 15 09:42:37 2010 From: omajid at redhat.com (Omair Majid) Date: Mon, 15 Nov 2010 12:42:37 -0500 Subject: [icedtea-web] RFC: add DownloadService2 and IntegrationService Message-ID: <4CE1710D.1080806@redhat.com> Hi, The attached patch adds the interfaces javax.jnlp.DownloadService2 and javax.jnlp.IntegrationService to icedtea-web. The patch does not implement anything yet. These 2 interfaces have been part of the JNLP API since JDK update 18 (according to the javadocs). Without this patch, applications that import one of these two interfaces will throw a ClassNotFoundException. With this patch applied applications will be able to import the interfaces. JNLP applications still wont be able to use the API provided by these two services as the ServiceManager will not return services of this type. However, it will allow the applications to continue running. ChangeLog: 2010-11-12 Omair Majid * netx/javax/jnlp/DownloadService2.java: New interface. (ResourceSpec): New class. (ResourceSpec.ResourceSpec): New method. (ResourceSpec.getExpirationDate): New method. (ResourceSpec.getLastModified): New method. (ResourceSpec.getSize): New method. (ResourceSpec.getType): New method. (ResourceSpec.getUrl): New method. (ResourceSpec.getVersion): New method. (getCachedResources): New method. (getUpdateAvaiableReosurces): New method. * netx/javax/jnlp/IntegrationService.java: New interface. (hasAssociation): New method. (hasDesktopShortcut): New method. (hasMenuShortcut): New method. (removeAssociation): New method. (removeShortcuts): New method. (requestAssociation): New method. (requestShortcut): New method. Any thoughts or comments? Cheers, Omair -------------- next part -------------- A non-text attachment was scrubbed... Name: add-integrationservice-and-downloadservice2-interfaces.patch Type: text/x-patch Size: 2531 bytes Desc: not available Url : http://mail.openjdk.java.net/pipermail/distro-pkg-dev/attachments/20101115/a668a69a/add-integrationservice-and-downloadservice2-interfaces.patch From ptisnovs at redhat.com Mon Nov 15 09:44:36 2010 From: ptisnovs at redhat.com (Pavel Tisnovsky) Date: Mon, 15 Nov 2010 18:44:36 +0100 Subject: Reviewer needed - fix for regression test hotspot/test/runtime/6929067/Test6929067 Message-ID: <4CE17184.5080105@redhat.com> Hi all, can anybody please review fix for regression test hotspot/test/runtime/6929067/Test6929067 I changed this test in a way that it now correctly works on x86_64 platform, for example (it has to find where libjvm.so is placed instead of using constant path). Tested on RHEL 5 x86_64 but it should works on another systems too. Diffstat produced against IcedTea6 HEAD is stored in attachment. Thank you in advance Pavel -------------- next part -------------- An embedded and charset-unspecified text was scrubbed... Name: hg_export Url: http://mail.openjdk.java.net/pipermail/distro-pkg-dev/attachments/20101115/73522e16/hg_export.ksh From bugzilla-daemon at icedtea.classpath.org Mon Nov 15 13:27:16 2010 From: bugzilla-daemon at icedtea.classpath.org (bugzilla-daemon at icedtea.classpath.org) Date: Mon, 15 Nov 2010 21:27:16 +0000 Subject: [Bug 591] Unable to build openjdk/icedtea on Slack 13.1 Message-ID: http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=591 ------- Comment #6 from robert at linux-source.org 2010-11-15 21:27 ------- Created an attachment (id=440) --> (http://icedtea.classpath.org/bugzilla/attachment.cgi?id=440&action=view) config.log from icedtea build Here is the config.log with the error. Please let me know whats the issue! -- Configure bugmail: http://icedtea.classpath.org/bugzilla/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are the assignee for the bug, or are watching the assignee. From bugzilla-daemon at icedtea.classpath.org Mon Nov 15 13:48:28 2010 From: bugzilla-daemon at icedtea.classpath.org (bugzilla-daemon at icedtea.classpath.org) Date: Mon, 15 Nov 2010 21:48:28 +0000 Subject: [Bug 591] Unable to build openjdk/icedtea on Slack 13.1 Message-ID: http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=591 ------- Comment #7 from mark at klomp.org 2010-11-15 21:48 ------- I don't completely follow the logic of finding a java compiler in the current configure setup. But what happens if you don't add --with-ecj --with-ecj-jar=/root/build/icedtea/build/ecj-3.6.1.jar to your configure invocation? -- Configure bugmail: http://icedtea.classpath.org/bugzilla/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are the assignee for the bug, or are watching the assignee. From bugzilla-daemon at icedtea.classpath.org Mon Nov 15 13:53:50 2010 From: bugzilla-daemon at icedtea.classpath.org (bugzilla-daemon at icedtea.classpath.org) Date: Mon, 15 Nov 2010 21:53:50 +0000 Subject: [Bug 591] Unable to build openjdk/icedtea on Slack 13.1 Message-ID: http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=591 ------- Comment #8 from robert at linux-source.org 2010-11-15 21:53 ------- This happens: checking for distribution package version... none checking build identification... Built on Kongoni GNU/Linux 1.12.3 (Mon Nov 15 22:53:32 CET 2010) checking for a GCJ JDK home directory... /usr/lib/jvm/gcj-jdk checking for gij... /usr/bin/gij checking for ecj... no checking for ecj-3.1... no checking for ecj-3.2... no checking for ecj-3.3... no checking for javac... no configure: error: cannot find javac, try --with-ecj -- Configure bugmail: http://icedtea.classpath.org/bugzilla/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are the assignee for the bug, or are watching the assignee. From omajid at redhat.com Mon Nov 15 14:29:50 2010 From: omajid at redhat.com (Omair Majid) Date: Mon, 15 Nov 2010 17:29:50 -0500 Subject: [1.8] RFC: Allow NetX to be disabled In-Reply-To: <20101115163119.GD11013@rivendell.middle-earth.co.uk> References: <20101112001752.GD5773@rivendell.middle-earth.co.uk> <20101115163119.GD11013@rivendell.middle-earth.co.uk> Message-ID: <4CE1B45E.10609@redhat.com> Hi Andrew, On 11/15/2010 11:31 AM, Dr Andrew John Hughes wrote: > On 00:17 Fri 12 Nov , Dr Andrew John Hughes wrote: >> Same again for 1.8: >> >> 2010-11-11 Andrew John Hughes >> >> * Makefile.am: >> (ICEDTEA_PATCHES): Only apply netx.patch and >> netx-umask.patch if NetX is enabled. >> (distclean-local): Add clean-about. >> (.PHONY): Likewise. >> (icedtea): Depend on about.stamp. Add >> ENABLE_NETX conditional. >> (icedtea-debug): Likewise. >> (netx): Add ENABLE_NETX conditional. >> (netx-dist): Likewise. >> (extra-class-files): Likewise. >> (about): New target (from extra-lib/about.jar). >> Add ENABLE_NETX conditional. >> (clean-about): New target to remove about.jar. >> * acinclude.m4: >> (IT_CHECK_PLUGIN): Require IT_CHECK_NETX. >> Disable if NetX is turned off. >> (IT_CHECK_NETX): Add --disable-webstart option. >> > > Revised version thanks to an issue caught by Omair; the extra.stamp target > was still using $@ instead of extra-lib/about.jar. The updated patch works for me. Cheers, Omair From bugzilla-daemon at icedtea.classpath.org Mon Nov 15 14:30:31 2010 From: bugzilla-daemon at icedtea.classpath.org (bugzilla-daemon at icedtea.classpath.org) Date: Mon, 15 Nov 2010 22:30:31 +0000 Subject: [Bug 591] Unable to build openjdk/icedtea on Slack 13.1 Message-ID: http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=591 ------- Comment #9 from mark at klomp.org 2010-11-15 22:30 ------- On my system ecj looks like: #!/bin/sh CLASSPATH=/usr/share/java/ecj.jar:${CLASSPATH=.} \ java org.eclipse.jdt.internal.compiler.batch.Main "$@" Maybe you could try adding a script like that to your PATH. But clearly the configure script could be more clear. -- Configure bugmail: http://icedtea.classpath.org/bugzilla/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are the assignee for the bug, or are watching the assignee. From bugzilla-daemon at icedtea.classpath.org Mon Nov 15 23:36:57 2010 From: bugzilla-daemon at icedtea.classpath.org (bugzilla-daemon at icedtea.classpath.org) Date: Tue, 16 Nov 2010 07:36:57 +0000 Subject: [Bug 591] Unable to build openjdk/icedtea on Slack 13.1 Message-ID: http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=591 ------- Comment #10 from robert at linux-source.org 2010-11-16 07:36 ------- Tried with classpath and it doesnt work: checking for a GCJ JDK home directory... /usr/lib/jvm/gcj-jdk checking for gij... /usr/bin/gij checking for ecj... no checking for ecj-3.1... no checking for ecj-3.2... no checking for ecj-3.3... no checking for javac... no configure: error: cannot find javac, try --with-ecj -- Configure bugmail: http://icedtea.classpath.org/bugzilla/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are the assignee for the bug, or are watching the assignee. From bugzilla-daemon at icedtea.classpath.org Tue Nov 16 03:10:27 2010 From: bugzilla-daemon at icedtea.classpath.org (bugzilla-daemon at icedtea.classpath.org) Date: Tue, 16 Nov 2010 11:10:27 +0000 Subject: [Bug 591] Unable to build openjdk/icedtea on Slack 13.1 Message-ID: http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=591 gnu_andrew at member.fsf.org changed: What |Removed |Added ---------------------------------------------------------------------------- Severity|major |normal ------- Comment #11 from gnu_andrew at member.fsf.org 2010-11-16 11:10 ------- Well, unsurprisingly configure fails if there is no javac. So specify one e.g. --with-javac=/usr/lib/gcj-jdk/bin/javac if it exists. Alternatively, try with HEAD where most of this has been updated. Drop both --with-gcj=/usr/bin and --with-ecj as they are both unhelpful. -- Configure bugmail: http://icedtea.classpath.org/bugzilla/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are the assignee for the bug, or are watching the assignee. From bugzilla-daemon at icedtea.classpath.org Tue Nov 16 03:37:23 2010 From: bugzilla-daemon at icedtea.classpath.org (bugzilla-daemon at icedtea.classpath.org) Date: Tue, 16 Nov 2010 11:37:23 +0000 Subject: [Bug 591] Unable to build openjdk/icedtea on Slack 13.1 Message-ID: http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=591 ------- Comment #12 from robert at linux-source.org 2010-11-16 11:37 ------- Same error even if I added: with-javac. I will post the script which builds icedtea, maybe Im doing something wrong: if [ "$ARCH" = "i386" ]; then SLKCFLAGS="-O2 -march=i386 -mcpu=i686" elif [ "$ARCH" = "i486" ]; then SLKCFLAGS="-O2 -march=i486 -mtune=i686" elif [ "$ARCH" = "s390" ]; then SLKCFLAGS="-O2" elif [ "$ARCH" = "x86_64" ]; then SLKCFLAGS="-O2" fi if [ -r /etc/profile.d/apache-ant.sh ]; then source /etc/profile.d/apache-ant.sh else ANT_HOME="/usr/share/ant" fi build_gcj() { JVM=$1 BINDIR=/usr/bin rm -fr $JVM mkdir -p $JVM mkdir -p $JVM/bin mkdir -p $JVM/jre/bin mkdir -p $JVM/jre/lib/i386/client mkdir -p $JVM/jre/lib/i386/server mkdir -p $JVM/lib ln -sf $BINDIR/gjar $JVM/bin/jar ln -sf $BINDIR/grmic $JVM/bin/rmic ln -sf $BINDIR/gjavah $JVM/bin/javah ln -sf $BINDIR/jcf-dump $JVM/bin/javap ln -sf $BINDIR/gappletviewer $JVM/bin/appletviewer ln -sf $BINDIR/grmiregistry $JVM/bin/rmiregistry ln -sf $BINDIR/grmiregistry $JVM/jre/bin/rmiregistry ln -sf $BINDIR/gkeytool $JVM/bin/keytool ln -sf $BINDIR/gkeytool $JVM/jre/bin/keytool ln -sf $BINDIR/gij $JVM/bin/java ln -sf $BINDIR/gcj $JVM/bin/javac ln -sf /usr/lib/gcj-4.5.1-11/libjvm.so $JVM/jre/lib/i386/client/libjvm.so ln -sf /usr/lib/gcj-4.5.1-11/libjvm.so $JVM/jre/lib/i386/server/libjvm.so ln -sf /usr/lib/gcj-4.5.1-11/libjawt.so $JVM/jre/lib/i386/libjawt.so ln -sf /usr/share/java/libgcj-4.5.1.jar $JVM/jre/lib/rt.jar ln -sf /usr/share/java/libgcj-tools-4.5.1.jar $JVM/lib/tools.jar ln -sf /usr/include/c++/4.5.1/gnu/java $JVM/include } # Exit on most errors set -e # Setup some temporary variables unset JAVA_HOME unset CLASSPATH _jdkver=b20 _javaver=6 _jvmdir=usr/lib/jvm/java-${_javaver}-openjdk _icedtea=icedtea6-1.9.1 _gcjjvm=/usr/lib/jvm/gcj-jdk rm -rf $PKG mkdir -p $TMP $PKG $OUTPUT cd $TMP tar xvf $CWD/${_icedtea}.tar.gz || exit 1 cd ${_icedtea} chmod -R u+w,go+r-w,a-s . chown -R root:root . build_gcj ${_gcjjvm} ln -sf $CWD/openjdk-${_javaver}-src-${_jdkver}-21_jun_2010.tar.gz . ln -sf $CWD/hotspot.tar.gz . cp -f $CWD/patch/*.diff ./patches/ autoreconf -i #./autogen.sh export DISTRIBUTION_PATCHES="patches/fix_jdk_cmds_path.diff patches/aatext_by_default.diff patches/fontconfig-paths.diff patches/fix_corba_cmds_path.diff patches/nonreparenting-wm.diff" export ALT_PARALLEL_COMPILE_JOBS="${MAKEFLAGS/-j3}" export HOTSPOT_BUILD_JOBS="${ALT_PARALLEL_COMPILE_JOBS}" unset MAKEFLAGS export CFLAGS="$SLKCFLAGS" && export CXXFLAGS="$SLKCFLAGS" && ./configure \ --with-parallel-jobs=${HOTSPOT_BUILD_JOBS} \ --with-ant-home=${ANT_HOME} \ --with-hotspot-src-zip=hotspot.tar.gz \ --with-jaxp-drop-zip=$CWD/jdk6-jaxp-${_jdkver}.zip \ --with-jaxws-drop-zip=$CWD/jdk6-jaxws-${_jdkver}.zip \ --with-jaf-drop-zip=$CWD/jdk6-jaf-${_jdkver}.zip \ --with-javac=${_gcjjvm}/bin/javac \ --with-xalan2-jar=${ANT_HOME}/lib/xalan.jar \ --with-xerces2-jar=${ANT_HOME}/lib/xercesImpl.jar \ --with-rhino=${ANT_HOME}/lib/rhino.jar \ --with-gcj-home=${_gcjjvm} \ --disable-docs \ --build=$ARCH-slackware-linux \ --host=$ARCH-slackware-linux \ --target=$ARCH-slackware-linux # Build export LD_PRELOAD="" make -j3 || make || exit 1 File list: ls |egrep 'tar|zip|jar' ecj-3.6.1.jar hotspot.tar.gz icedtea6-1.9.1.tar.gz jdk6-jaf-b20.zip jdk6-jaxp-b20.zip jdk6-jaxws-b20.zip openjdk-6-src-b20-21_jun_2010.tar.gz Path: ls patch/ aatext_by_default.diff fix_corba_cmds_path.diff fix_jdk_cmds_path.diff fontconfig-paths.diff nonreparenting-wm.diff -- Configure bugmail: http://icedtea.classpath.org/bugzilla/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are the assignee for the bug, or are watching the assignee. From ahughes at redhat.com Tue Nov 16 03:48:28 2010 From: ahughes at redhat.com (Dr Andrew John Hughes) Date: Tue, 16 Nov 2010 11:48:28 +0000 Subject: Reviewer needed - fix for regression test java/awt/FontClass/CreateFont/DeleteFont In-Reply-To: <4CE13DF9.3020207@redhat.com> References: <4CE13DF9.3020207@redhat.com> Message-ID: <20101116114828.GI11013@rivendell.middle-earth.co.uk> On 15:04 Mon 15 Nov , Pavel Tisnovsky wrote: > Hi all, > > can anybody please review fix for regression test > java/awt/FontClass/CreateFont/DeleteFont? > > This test check, if the temporary file containing font is properly > deleted when JVM finishes. The check is based on counting of files in > temporary dir - if temporary font file is not deleted, the number of > files before and after running the test differs. > > BUT JVM also creates hsperfdata_* subdirectory so the check described > above always fails (presence of this subdirectory add +1 to number of > files in temporary directory). I've added simple filter to resolve this > issue. > Do we not just know the name of the temporary font file to check for? Or some part of it? > (I also tried to acquire bug ID to push this fix to OpenJDK7, but still > without success ;-) > > Diffstat produced against IcedTea6 HEAD is stored in attachment. > Ok if you drop the 'icedtea-' prefix on the patch! > Thank you in advance > Pavel > # HG changeset patch > # User ptisnovs > # Date 1289829138 -3600 > # Node ID 553291a55fce4a6ab5730a0e9dae4570766451d0 > # Parent ad1c77031a41739f3a912d27459a23a930ef4b88 > Testcase correction. > > diff -r ad1c77031a41 -r 553291a55fce ChangeLog > --- a/ChangeLog Fri Nov 12 18:17:22 2010 +0000 > +++ b/ChangeLog Mon Nov 15 14:52:18 2010 +0100 > @@ -1,3 +1,9 @@ > +2010-11-15 Pavel Tisnovsky > + > + * Makefile.am: > + * patches/icedtea-jtreg-DeleteFont.patch: > + Testcase correction - the test now ignores directory created by HS. > + > 2010-11-12 Andrew John Hughes > > * Makefile.am: > diff -r ad1c77031a41 -r 553291a55fce Makefile.am > --- a/Makefile.am Fri Nov 12 18:17:22 2010 +0000 > +++ b/Makefile.am Mon Nov 15 14:52:18 2010 +0100 > @@ -300,7 +300,8 @@ > patches/openjdk/6622432-bigdecimal_performance.patch \ > patches/openjdk/6850606-bigdecimal_regression.patch \ > patches/openjdk/6876282-bigdecimal_divide.patch \ > - patches/f14-fonts.patch > + patches/f14-fonts.patch \ > + patches/icedtea-jtreg-DeleteFont.patch > > if WITH_ALT_HSBUILD > ICEDTEA_PATCHES += \ > diff -r ad1c77031a41 -r 553291a55fce patches/icedtea-jtreg-DeleteFont.patch > --- /dev/null Thu Jan 01 00:00:00 1970 +0000 > +++ b/patches/icedtea-jtreg-DeleteFont.patch Mon Nov 15 14:52:18 2010 +0100 > @@ -0,0 +1,20 @@ > +--- openjdk-old/jdk/test/java/awt/FontClass/CreateFont/DeleteFont.sh 2010-06-21 23:15:49.000000000 +0200 > ++++ openjdk/jdk/test/java/awt/FontClass/CreateFont/DeleteFont.sh 2010-11-15 14:13:13.000000000 +0100 > +@@ -46,7 +46,7 @@ > + > + cd ${TESTCLASSES} > + > +-numfiles0=`ls ${TESTCLASSES} | wc -l` > ++numfiles0=`ls ${TESTCLASSES} | grep -v "^hsperfdata*" | wc -l` > + ${TESTJAVA}/bin/java -Djava.io.tmpdir=${TESTCLASSES} DeleteFont > + > + if [ $? -ne 0 ] > +@@ -55,7 +55,7 @@ > + exit 1 > + fi > + > +-numfiles1=`ls ${TESTCLASSES} | wc -l` > ++numfiles1=`ls ${TESTCLASSES} | grep -v "^hsperfdata*" | wc -l` > + > + if [ $numfiles0 -ne $numfiles1 ] > + then -- Andrew :) Free Java Software Engineer Red Hat, Inc. (http://www.redhat.com) Support Free Java! Contribute to GNU Classpath and the OpenJDK http://www.gnu.org/software/classpath http://openjdk.java.net PGP Key: 94EFD9D8 (http://subkeys.pgp.net) Fingerprint = F8EF F1EA 401E 2E60 15FA 7927 142C 2591 94EF D9D8 From andrew at icedtea.classpath.org Tue Nov 16 03:51:43 2010 From: andrew at icedtea.classpath.org (andrew at icedtea.classpath.org) Date: Tue, 16 Nov 2010 11:51:43 +0000 Subject: /hg/release/icedtea6-1.8: Allow NetX to be disabled. Message-ID: changeset ab3d582a5431 in /hg/release/icedtea6-1.8 details: http://icedtea.classpath.org/hg/release/icedtea6-1.8?cmd=changeset;node=ab3d582a5431 author: Andrew John Hughes date: Tue Nov 16 11:50:52 2010 +0000 Allow NetX to be disabled. 2010-11-11 Andrew John Hughes * Makefile.am: (ICEDTEA_PATCHES): Only apply netx.patch and netx-umask.patch if NetX is enabled. (distclean-local): Add clean-about. (.PHONY): Likewise. (icedtea): Depend on about.stamp. Add ENABLE_NETX conditional. (icedtea-debug): Likewise. (netx): Add ENABLE_NETX conditional. (netx-dist): Likewise. (extra-class-files): Likewise. (about): New target (from extra-lib/about.jar). Add ENABLE_NETX conditional. (clean-about): New target to remove about.jar. * acinclude.m4: (IT_CHECK_PLUGIN): Require IT_CHECK_NETX. Disable if NetX is turned off. (IT_CHECK_NETX): Add --disable-webstart option. diffstat: 3 files changed, 70 insertions(+), 10 deletions(-) ChangeLog | 21 +++++++++++++++++++++ Makefile.am | 43 +++++++++++++++++++++++++++++++++---------- acinclude.m4 | 16 ++++++++++++++++ diffs (229 lines): diff -r 78de2d8168d8 -r ab3d582a5431 ChangeLog --- a/ChangeLog Mon Oct 18 12:47:36 2010 -0400 +++ b/ChangeLog Tue Nov 16 11:50:52 2010 +0000 @@ -1,3 +1,24 @@ 2010-10-18 Omair Majid + + * Makefile.am: + (ICEDTEA_PATCHES): Only apply netx.patch and + netx-umask.patch if NetX is enabled. + (distclean-local): Add clean-about. + (.PHONY): Likewise. + (icedtea): Depend on about.stamp. Add + ENABLE_NETX conditional. + (icedtea-debug): Likewise. + (netx): Add ENABLE_NETX conditional. + (netx-dist): Likewise. + (extra-class-files): Likewise. + (about): New target (from extra-lib/about.jar). + Add ENABLE_NETX conditional. + (clean-about): New target to remove about.jar. + * acinclude.m4: + (IT_CHECK_PLUGIN): Require IT_CHECK_NETX. + Disable if NetX is turned off. + (IT_CHECK_NETX): Add --disable-webstart option. + 2010-10-18 Omair Majid * netx/net/sourceforge/jnlp/security/VariableX509TrustManager.java: diff -r 78de2d8168d8 -r ab3d582a5431 Makefile.am --- a/Makefile.am Mon Oct 18 12:47:36 2010 -0400 +++ b/Makefile.am Tue Nov 16 11:50:52 2010 +0000 @@ -341,9 +341,6 @@ ICEDTEA_PATCHES = \ patches/icedtea-sh4-support.patch \ patches/icedtea-policy-evaluation.patch \ patches/libpng.patch \ - patches/extensions/netx.patch \ - patches/extensions/netx-dist.patch \ - patches/extensions/netx-umask.patch \ patches/icedtea-jtreg-httpTest.patch \ patches/ant-1.8.0.patch \ patches/icedtea-nss-6763530.patch \ @@ -375,6 +372,13 @@ if WITH_RHINO if WITH_RHINO ICEDTEA_PATCHES += \ patches/icedtea-rhino.patch +endif + +if ENABLE_NETX +ICEDTEA_PATCHES += \ + patches/extensions/netx.patch \ + patches/extensions/netx-dist.patch \ + patches/extensions/netx-umask.patch endif if ENABLE_PLUGIN @@ -614,7 +618,7 @@ check-local: jtregcheck #FIXME (clean): Should become clean-local. distclean-local: clean-copy clean-jtreg clean-jtreg-reports $(PULSE_JAVA_CLEAN_TARGET) \ - clean-netx clean-plugin clean-liveconnect + clean-netx clean-plugin clean-liveconnect clean-about rm -rf stamps rm -f rt-source-files.txt \ extra-source-files.txt @@ -646,7 +650,8 @@ install: clean-icedtea icedtea-against-icedtea clean-icedtea-ecj \ clean-tools-jar clean-visualvm clean-nbplatform \ clean-copy clean-rt $(ICEDTEAPLUGIN_CLEAN) hotspot \ - hotspot-helper clean-extra clean-jtreg clean-jtreg-reports + hotspot-helper clean-extra clean-jtreg clean-jtreg-reports \ + clean-about env: @echo 'unset JAVA_HOME' @@ -1303,7 +1308,7 @@ clean-bootstrap-directory-symlink: # you change it in the icedtea-debug target as well. stamps/icedtea.stamp: stamps/bootstrap-directory-symlink.stamp \ stamps/netx-dist.stamp $(OPENJDK_TREE) stamps/plugin.stamp \ - extra-lib/about.jar stamps/cacao.stamp \ + stamps/about.stamp stamps/cacao.stamp \ stamps/visualvm.stamp $(PULSE_JAVA_TARGET) stamps/rewrite-rhino.stamp $(ARCH_PREFIX) $(MAKE) \ $(ICEDTEA_ENV) \ @@ -1349,6 +1354,7 @@ if WITH_VISUALVM cp -r netbeans/nbbuild/netbeans_visualvm/profiler3 \ $(BUILD_OUTPUT_DIR)/j2sdk-image/lib/visualvm endif +if ENABLE_NETX cp $(NETX_RESOURCE_DIR)/about.jnlp extra-lib/about.jar \ $(BUILD_OUTPUT_DIR)/j2re-image/lib ; \ cp $(NETX_RESOURCE_DIR)/about.jnlp extra-lib/about.jar \ @@ -1361,6 +1367,7 @@ endif cp $(NETX_SRCDIR)/javaws.1 \ $(BUILD_OUTPUT_DIR)/j2re-image/man/man1 ; \ fi +endif if ZERO_BUILD printf -- '-zero ALIASED_TO -server\n' >> $(BUILD_JRE_ARCH_DIR)/jvm.cfg endif @@ -1401,7 +1408,7 @@ endif stamps/icedtea-debug.stamp: stamps/bootstrap-directory-symlink.stamp \ stamps/netx-dist.stamp $(OPENJDK_TREE) stamps/plugin.stamp \ - extra-lib/about.jar stamps/cacao.stamp \ + stamps/about.stamp stamps/cacao.stamp \ stamps/visualvm.stamp $(PULSE_JAVA_TARGET) stamps/rewrite-rhino.stamp $(ARCH_PREFIX) $(MAKE) \ $(ICEDTEA_ENV) \ @@ -1447,6 +1454,7 @@ if WITH_VISUALVM cp -r netbeans/nbbuild/netbeans_visualvm/profiler3 \ $(BUILD_OUTPUT_DIR)/j2sdk-image/lib/visualvm endif +if ENABLE_NETX cp $(NETX_RESOURCE_DIR)/default.jnlp extra-lib/about.jar \ $(BUILD_OUTPUT_DIR)-debug/j2re-image/lib ; \ cp $(NETX_RESOURCE_DIR)/default.jnlp extra-lib/about.jar \ @@ -1459,6 +1467,7 @@ endif cp $(NETX_SRCDIR)/javaws.1 \ $(DEBUG_BUILD_OUTPUT_DIR)/j2re-image/man/man1 ; \ fi +endif if ZERO_BUILD printf -- '-zero ALIASED_TO -server\n' >> $(BUILD_DEBUG_JRE_ARCH_DIR)/jvm.cfg endif @@ -1663,6 +1672,7 @@ netx-source-files.txt: find $(NETX_SRCDIR) -name '*.java' | sort > $@ stamps/netx.stamp: netx-source-files.txt stamps/rt-class-files.stamp +if ENABLE_NETX mkdir -p $(abs_top_builddir)/netx.build $(ICEDTEA_BOOT_DIR)/bin/javac $(IT_JAVACFLAGS) \ -d $(abs_top_builddir)/netx.build \ @@ -1671,10 +1681,12 @@ stamps/netx.stamp: netx-source-files.txt -bootclasspath \'\' \ @netx-source-files.txt cp -r $(NETX_RESOURCE_DIR) $(abs_top_builddir)/netx.build/net/sourceforge/jnlp +endif mkdir -p stamps touch $@ stamps/netx-dist.stamp: stamps/netx.stamp +if ENABLE_NETX (cd $(abs_top_builddir)/netx.build ; \ mkdir -p lib ; \ $(ICEDTEA_BOOT_DIR)/bin/jar cf lib/classes.jar javax/jnlp net ; \ @@ -1684,6 +1696,7 @@ stamps/netx-dist.stamp: stamps/netx.stam $(ICEDTEA_BOOT_DIR)/bin/jar uf $(abs_top_builddir)/netx.build/lib/classes.jar \ `find . -type f -not -name '*.java'` ; \ $(ZIP) -qr $(abs_top_builddir)/netx.build/lib/src.zip javax net ) +endif mkdir -p stamps touch $@ @@ -1699,12 +1712,14 @@ extra-source-files.txt: stamps/extra-class-files.stamp: $(INITIAL_BOOTSTRAP_LINK_STAMP) \ extra-source-files.txt stamps/netx.stamp +if ENABLE_NETX mkdir -p extra-lib $(ICEDTEA_BOOT_DIR)/bin/javac $(MEMORY_LIMIT) -g -d extra-lib \ -source 1.5 \ -sourcepath extra -cp netx.build:$(ICEDTEA_RT) \ -bootclasspath \'\' @extra-source-files.txt cp -r $(NETX_EXTRA_DIR) extra-lib/net/sourceforge/jnlp/about +endif mkdir -p stamps touch $@ @@ -1713,13 +1728,21 @@ clean-extra: rm -f stamps/extra-class-files.stamp rm -f extra-source-files.txt -extra-lib/about.jar: stamps/extra-class-files.stamp +stamps/about.stamp: stamps/extra-class-files.stamp +if ENABLE_NETX if ! test -d $(ICEDTEA_BOOT_DIR) ; \ then \ - $(JAR) cf $@ -C extra-lib net ; \ + $(JAR) cf extra-lib/about.jar -C extra-lib net ; \ else \ - $(ICEDTEA_BOOT_DIR)/bin/jar cf $@ -C extra-lib net ; \ + $(ICEDTEA_BOOT_DIR)/bin/jar cf extra-lib/about.jar -C extra-lib net ; \ fi +endif + mkdir -p stamps + touch $@ + +clean-about: + rm -f extra-lib/about.jar + rm -f stamps/about.stamp # PulseAudio based mixer # (pulse-java) diff -r 78de2d8168d8 -r ab3d582a5431 acinclude.m4 --- a/acinclude.m4 Mon Oct 18 12:47:36 2010 -0400 +++ b/acinclude.m4 Tue Nov 16 11:50:52 2010 +0000 @@ -1440,12 +1440,17 @@ AC_DEFUN_ONCE([IT_OBTAIN_HG_REVISIONS], AC_DEFUN_ONCE([IT_CHECK_PLUGIN], [ +AC_REQUIRE([IT_CHECK_NETX]) AC_MSG_CHECKING([whether to build the browser plugin]) AC_ARG_ENABLE([plugin], [AS_HELP_STRING([--disable-plugin], [Disable compilation of browser plugin])], [enable_plugin="${enableval}"], [enable_plugin="yes"]) AC_MSG_RESULT(${enable_plugin}) +if test "x${enable_netx}" = "xno" ; then + AC_MSG_WARN([Plugin can not be built without NetX; disabling plugin]) + enable_plugin=no; +fi ]) AC_DEFUN_ONCE([IT_CHECK_PLUGIN_DEPENDENCIES], @@ -1536,3 +1541,14 @@ AC_SUBST(NSS_LIBDIR) AC_SUBST(NSS_LIBDIR) AC_CONFIG_FILES([nss.cfg]) ]) + +AC_DEFUN_ONCE([IT_CHECK_NETX], +[ +AC_MSG_CHECKING([whether to build NetX]) +AC_ARG_ENABLE([webstart], + [AS_HELP_STRING([--disable-webstart], + [Disable compilation of Web Start support])], + [enable_netx="${enableval}"], [enable_netx="yes"]) +AC_MSG_RESULT(${enable_netx}) +AM_CONDITIONAL(ENABLE_NETX, test "x${enable_netx}" = "xyes") +]) From bugzilla-daemon at icedtea.classpath.org Tue Nov 16 04:17:07 2010 From: bugzilla-daemon at icedtea.classpath.org (bugzilla-daemon at icedtea.classpath.org) Date: Tue, 16 Nov 2010 12:17:07 +0000 Subject: [Bug 591] Unable to build openjdk/icedtea on Slack 13.1 Message-ID: http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=591 ------- Comment #13 from mark at klomp.org 2010-11-16 12:17 ------- > ln -sf $BINDIR/gcj $JVM/bin/javac At least this won't work (didn't look much at the rest). gcj invoked directly acts as an AOT compiler, not as a byte code compiler. If you want to use gcj as a traditional JDK environment you should build and configure it with --enable-java-home create a standard JDK-style directory layout in the install tree [default=no] That should do most of what you do in that script for you. See the gcc/libjava/Makefile.am under if CREATE_JAVA_HOME -- Configure bugmail: http://icedtea.classpath.org/bugzilla/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are the assignee for the bug, or are watching the assignee. From bugzilla-daemon at icedtea.classpath.org Tue Nov 16 04:19:59 2010 From: bugzilla-daemon at icedtea.classpath.org (bugzilla-daemon at icedtea.classpath.org) Date: Tue, 16 Nov 2010 12:19:59 +0000 Subject: [Bug 591] Unable to build openjdk/icedtea on Slack 13.1 Message-ID: http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=591 ------- Comment #14 from robert at linux-source.org 2010-11-16 12:19 ------- Well the problem is that I don't wanna rebuild gcc-java. In Slackware gcj is not quite the best setup in the world and thats why I created the build_gjc function. I also tried before with jdk from sun and end-up in the same error. My question is now... if any, how do I build icedtea in Slackware using what Slackware has, besides sun-jdk. I mean everything open source. -- Configure bugmail: http://icedtea.classpath.org/bugzilla/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are the assignee for the bug, or are watching the assignee. From andrew at icedtea.classpath.org Tue Nov 16 04:39:54 2010 From: andrew at icedtea.classpath.org (andrew at icedtea.classpath.org) Date: Tue, 16 Nov 2010 12:39:54 +0000 Subject: /hg/release/icedtea6-1.8: Update NEWS, version and JAXP/JAXWS URLs. Message-ID: changeset 74a5c2ed67d3 in /hg/release/icedtea6-1.8 details: http://icedtea.classpath.org/hg/release/icedtea6-1.8?cmd=changeset;node=74a5c2ed67d3 author: Andrew John Hughes date: Tue Nov 16 12:39:47 2010 +0000 Update NEWS, version and JAXP/JAXWS URLs. 2010-11-16 Andrew John Hughes * Makefile.am: (JAXWS_DROP_URL): Updated to use IcedTea server. (JAXP_DROP_URL): Likewise. * NEWS: Updated. * configure.ac: Bump to 1.8.3pre. diffstat: 4 files changed, 21 insertions(+), 3 deletions(-) ChangeLog | 8 ++++++++ Makefile.am | 4 ++-- NEWS | 10 ++++++++++ configure.ac | 2 +- diffs (62 lines): diff -r ab3d582a5431 -r 74a5c2ed67d3 ChangeLog --- a/ChangeLog Tue Nov 16 11:50:52 2010 +0000 +++ b/ChangeLog Tue Nov 16 12:39:47 2010 +0000 @@ -1,3 +1,11 @@ 2010-11-11 Andrew John Hughes + + * Makefile.am: + (JAXWS_DROP_URL): Updated to use IcedTea server. + (JAXP_DROP_URL): Likewise. + * NEWS: Updated. + * configure.ac: Bump to 1.8.3pre. + 2010-11-11 Andrew John Hughes * Makefile.am: diff -r ab3d582a5431 -r 74a5c2ed67d3 Makefile.am --- a/Makefile.am Tue Nov 16 11:50:52 2010 +0000 +++ b/Makefile.am Tue Nov 16 12:39:47 2010 +0000 @@ -18,12 +18,12 @@ VISUALVM_URL = https://visualvm.dev.java VISUALVM_URL = https://visualvm.dev.java.net/files/documents/7163/127170/ VISUALVM_SRC_ZIP = visualvm-111-src.tar.gz -JAXWS_DROP_URL = http://kenai.com/projects/jdk6-drops/downloads/download +JAXWS_DROP_URL = http://icedtea.classpath.org/download/drops JAXWS_DROP_ZIP = jdk6-jaxws-2009_10_27.zip JAXWS_DROP_SHA256SUM = 155ff3be83c980e197621a2fbf7ee34e8e0f536489351a5865cf0e52206245e2 JAF_DROP_ZIP = jdk6-jaf-2009_10_27.zip JAF_DROP_SHA256SUM = fdc51476fc6bcc69ea1f099f33e84601a126bfa8b11c8fa11c25dc574345aa9f -JAXP_DROP_URL = https://jaxp.dev.java.net/files/documents/913/147329 +JAXP_DROP_URL = http://icedtea.classpath.org/download/drops JAXP_DROP_ZIP = jdk6-jaxp-2009_10_13.zip JAXP_DROP_SHA256SUM = 8714d55de18db48ca9da0ee986202005082f44cf4c215da8683342b70e61792b diff -r ab3d582a5431 -r 74a5c2ed67d3 NEWS --- a/NEWS Tue Nov 16 11:50:52 2010 +0000 +++ b/NEWS Tue Nov 16 12:39:47 2010 +0000 @@ -7,6 +7,16 @@ GX - http://bugs.gentoo.org/show_bug.cg GX - http://bugs.gentoo.org/show_bug.cgi?id=X CVE-XXXX-YYYY: http://www.cve.mitre.org/cgi-bin/cvename.cgi?name=XXXX-YYYY + +New in release 1.8.3 (2010-11-XX): + +* Allow the building of NetX to be disabled. +* Switch to the IcedTea server for JAXP, JAF and JAXWS tarballs. +* Backports + - S6853592: VM test nsk.regression.b4261880 fails with "X Error of failed request: BadWindow" + inconsistently. +* NetX + - Do not prompt user multiple times for the same certificate. New in release 1.8.2 (2010-10-13): diff -r ab3d582a5431 -r 74a5c2ed67d3 configure.ac --- a/configure.ac Tue Nov 16 11:50:52 2010 +0000 +++ b/configure.ac Tue Nov 16 12:39:47 2010 +0000 @@ -1,4 +1,4 @@ AC_INIT([icedtea6],[1.8.2],[distro-pkg-d -AC_INIT([icedtea6],[1.8.2],[distro-pkg-dev at openjdk.java.net]) +AC_INIT([icedtea6],[1.8.3pre],[distro-pkg-dev at openjdk.java.net]) AM_INIT_AUTOMAKE([1.9 tar-pax foreign]) AC_CONFIG_FILES([Makefile]) From ahughes at redhat.com Tue Nov 16 05:22:52 2010 From: ahughes at redhat.com (Dr Andrew John Hughes) Date: Tue, 16 Nov 2010 13:22:52 +0000 Subject: Reviewer needed - fix for regression test hotspot/test/runtime/6929067/Test6929067 In-Reply-To: <4CE17184.5080105@redhat.com> References: <4CE17184.5080105@redhat.com> Message-ID: <20101116132252.GK11013@rivendell.middle-earth.co.uk> On 18:44 Mon 15 Nov , Pavel Tisnovsky wrote: > Hi all, > > can anybody please review fix for regression test > hotspot/test/runtime/6929067/Test6929067 > > I changed this test in a way that it now correctly works on x86_64 > platform, for example (it has to find where libjvm.so is placed instead > of using constant path). Tested on RHEL 5 x86_64 but it should works on > another systems too. > ARCH=$(uname -m) if test "${ARCH}" == "x86_64"; then ARCH=amd64; fi LD_LIBRARY_PATH=.:${TESTJAVA}/jre/lib/${ARCH}/client:${TESTJAVA}/jre/lib/${ARCH}/server:/usr/openwin/lib:/usr/dt/lib:/usr/lib:$LD_LIBRARY_PATH would achieve the same goal without using find. > Diffstat produced against IcedTea6 HEAD is stored in attachment. > Again, no 'icedtea-' prefix. > Thank you in advance > Pavel > # HG changeset patch > # User ptisnovs > # Date 1289843015 -3600 > # Node ID bf47d6f0dd12f7ed7a34d0110d2bbd6361d6616b > # Parent ad1c77031a41739f3a912d27459a23a930ef4b88 > Testcase correction. > > diff -r ad1c77031a41 -r bf47d6f0dd12 ChangeLog > --- a/ChangeLog Fri Nov 12 18:17:22 2010 +0000 > +++ b/ChangeLog Mon Nov 15 18:43:35 2010 +0100 > @@ -1,3 +1,10 @@ > +2010-11-15 Pavel Tisnovsky > + > + * Makefile.am: Add new patch. > + * patches/jtreg-patch-Test6929067.patch: > + Testcase correction - now the test works correctly also on x86_64 and > + other platforms. > + > 2010-11-12 Andrew John Hughes > > * Makefile.am: > diff -r ad1c77031a41 -r bf47d6f0dd12 Makefile.am > --- a/Makefile.am Fri Nov 12 18:17:22 2010 +0000 > +++ b/Makefile.am Mon Nov 15 18:43:35 2010 +0100 > @@ -300,7 +300,8 @@ > patches/openjdk/6622432-bigdecimal_performance.patch \ > patches/openjdk/6850606-bigdecimal_regression.patch \ > patches/openjdk/6876282-bigdecimal_divide.patch \ > - patches/f14-fonts.patch > + patches/f14-fonts.patch \ > + patches/icedtea-jtreg-Test6929067.patch > > if WITH_ALT_HSBUILD > ICEDTEA_PATCHES += \ > diff -r ad1c77031a41 -r bf47d6f0dd12 patches/icedtea-jtreg-Test6929067.patch > --- /dev/null Thu Jan 01 00:00:00 1970 +0000 > +++ b/patches/icedtea-jtreg-Test6929067.patch Mon Nov 15 18:43:35 2010 +0100 > @@ -0,0 +1,23 @@ > +--- openjdk-old/hotspot/test/runtime/6929067/Test6929067.sh 2010-10-08 22:29:24.000000000 +0200 > ++++ openjdk/hotspot/test/runtime/6929067/Test6929067.sh 2010-11-15 12:47:57.000000000 +0100 > +@@ -42,7 +42,11 @@ > + ;; > + esac > + > +-LD_LIBRARY_PATH=.:${TESTJAVA}/jre/lib/i386/client:/usr/openwin/lib:/usr/dt/lib:/usr/lib:$LD_LIBRARY_PATH > ++PATH_TO_LIBJVM=`find ${TESTJAVA}/jre/lib -name libjvm.so | tail -n 1 | sed 's/\(.*\)\(\/libjvm\.so\)/\1/g'` > ++ > ++echo $PATH_TO_LIBJVM > ++ > ++LD_LIBRARY_PATH=.:${PATH_TO_LIBJVM}:/usr/openwin/lib:/usr/dt/lib:/usr/lib:$LD_LIBRARY_PATH > + export LD_LIBRARY_PATH > + > + THIS_DIR=`pwd` > +@@ -55,6 +59,6 @@ > + > + ${TESTJAVA}${FS}bin${FS}javac T.java > + > +-gcc -o invoke -I${TESTJAVA}/include -I${TESTJAVA}/include/linux invoke.c ${TESTJAVA}/jre/lib/i386/client/libjvm.so > ++gcc -o invoke -I${TESTJAVA}/include -I${TESTJAVA}/include/linux invoke.c ${PATH_TO_LIBJVM}/libjvm.so > + ./invoke > + exit $? -- Andrew :) Free Java Software Engineer Red Hat, Inc. (http://www.redhat.com) Support Free Java! Contribute to GNU Classpath and the OpenJDK http://www.gnu.org/software/classpath http://openjdk.java.net PGP Key: 94EFD9D8 (http://subkeys.pgp.net) Fingerprint = F8EF F1EA 401E 2E60 15FA 7927 142C 2591 94EF D9D8 From bugzilla-daemon at icedtea.classpath.org Tue Nov 16 05:29:40 2010 From: bugzilla-daemon at icedtea.classpath.org (bugzilla-daemon at icedtea.classpath.org) Date: Tue, 16 Nov 2010 13:29:40 +0000 Subject: [Bug 591] Unable to build openjdk/icedtea on Slack 13.1 Message-ID: http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=591 ------- Comment #15 from gnu_andrew at member.fsf.org 2010-11-16 13:29 ------- Mark's suggestion won't work anyway as it doesn't provide a javac binary. I believe you have an ecj.jar file. Instead of symlinking javac to gcj, create javac as a text file containing: ${BINDIR}/gij -classpath ${PATH_TO_ECJ_JAR} org.eclipse.jdt.internal.compiler.batch.Main "${@}" Alternatively, you could fix the original issue by manually reverting patches/ecj/icedtea-jaxws-getdtdtype.patch which is being applied due to the failed test assuming yes. What are all the additional patches you are applying? -- Configure bugmail: http://icedtea.classpath.org/bugzilla/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are the assignee for the bug, or are watching the assignee. From bugzilla-daemon at icedtea.classpath.org Tue Nov 16 05:34:01 2010 From: bugzilla-daemon at icedtea.classpath.org (bugzilla-daemon at icedtea.classpath.org) Date: Tue, 16 Nov 2010 13:34:01 +0000 Subject: [Bug 591] Unable to build openjdk/icedtea on Slack 13.1 Message-ID: http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=591 ------- Comment #16 from robert at linux-source.org 2010-11-16 13:34 ------- The patches are taken from ArchLinux as its a Slackware environment also. I can remove them, just to test it and see what happens. -- Configure bugmail: http://icedtea.classpath.org/bugzilla/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are the assignee for the bug, or are watching the assignee. From ptisnovs at redhat.com Tue Nov 16 05:46:26 2010 From: ptisnovs at redhat.com (Pavel Tisnovsky) Date: Tue, 16 Nov 2010 14:46:26 +0100 Subject: Reviewer needed - fix for regression test java/awt/FontClass/CreateFont/DeleteFont In-Reply-To: <20101116114828.GI11013@rivendell.middle-earth.co.uk> References: <4CE13DF9.3020207@redhat.com> <20101116114828.GI11013@rivendell.middle-earth.co.uk> Message-ID: <4CE28B32.90509@redhat.com> Dr Andrew John Hughes wrote: > On 15:04 Mon 15 Nov , Pavel Tisnovsky wrote: >> Hi all, >> >> can anybody please review fix for regression test >> java/awt/FontClass/CreateFont/DeleteFont? >> >> This test check, if the temporary file containing font is properly >> deleted when JVM finishes. The check is based on counting of files in >> temporary dir - if temporary font file is not deleted, the number of >> files before and after running the test differs. >> >> BUT JVM also creates hsperfdata_* subdirectory so the check described >> above always fails (presence of this subdirectory add +1 to number of >> files in temporary directory). I've added simple filter to resolve this >> issue. >> > > Do we not just know the name of the temporary font file to check for? > Or some part of it? The name of temporary file is generated each time the test is started. It looks like: +~JF7534461295183941137.tmp So we know (probably) only the extension. > >> (I also tried to acquire bug ID to push this fix to OpenJDK7, but still >> without success ;-) >> >> Diffstat produced against IcedTea6 HEAD is stored in attachment. >> > > Ok if you drop the 'icedtea-' prefix on the patch! > >> Thank you in advance >> Pavel > >> # HG changeset patch >> # User ptisnovs >> # Date 1289829138 -3600 >> # Node ID 553291a55fce4a6ab5730a0e9dae4570766451d0 >> # Parent ad1c77031a41739f3a912d27459a23a930ef4b88 >> Testcase correction. >> >> diff -r ad1c77031a41 -r 553291a55fce ChangeLog >> --- a/ChangeLog Fri Nov 12 18:17:22 2010 +0000 >> +++ b/ChangeLog Mon Nov 15 14:52:18 2010 +0100 >> @@ -1,3 +1,9 @@ >> +2010-11-15 Pavel Tisnovsky >> + >> + * Makefile.am: >> + * patches/icedtea-jtreg-DeleteFont.patch: >> + Testcase correction - the test now ignores directory created by HS. >> + >> 2010-11-12 Andrew John Hughes >> >> * Makefile.am: >> diff -r ad1c77031a41 -r 553291a55fce Makefile.am >> --- a/Makefile.am Fri Nov 12 18:17:22 2010 +0000 >> +++ b/Makefile.am Mon Nov 15 14:52:18 2010 +0100 >> @@ -300,7 +300,8 @@ >> patches/openjdk/6622432-bigdecimal_performance.patch \ >> patches/openjdk/6850606-bigdecimal_regression.patch \ >> patches/openjdk/6876282-bigdecimal_divide.patch \ >> - patches/f14-fonts.patch >> + patches/f14-fonts.patch \ >> + patches/icedtea-jtreg-DeleteFont.patch >> >> if WITH_ALT_HSBUILD >> ICEDTEA_PATCHES += \ >> diff -r ad1c77031a41 -r 553291a55fce patches/icedtea-jtreg-DeleteFont.patch >> --- /dev/null Thu Jan 01 00:00:00 1970 +0000 >> +++ b/patches/icedtea-jtreg-DeleteFont.patch Mon Nov 15 14:52:18 2010 +0100 >> @@ -0,0 +1,20 @@ >> +--- openjdk-old/jdk/test/java/awt/FontClass/CreateFont/DeleteFont.sh 2010-06-21 23:15:49.000000000 +0200 >> ++++ openjdk/jdk/test/java/awt/FontClass/CreateFont/DeleteFont.sh 2010-11-15 14:13:13.000000000 +0100 >> +@@ -46,7 +46,7 @@ >> + >> + cd ${TESTCLASSES} >> + >> +-numfiles0=`ls ${TESTCLASSES} | wc -l` >> ++numfiles0=`ls ${TESTCLASSES} | grep -v "^hsperfdata*" | wc -l` >> + ${TESTJAVA}/bin/java -Djava.io.tmpdir=${TESTCLASSES} DeleteFont >> + >> + if [ $? -ne 0 ] >> +@@ -55,7 +55,7 @@ >> + exit 1 >> + fi >> + >> +-numfiles1=`ls ${TESTCLASSES} | wc -l` >> ++numfiles1=`ls ${TESTCLASSES} | grep -v "^hsperfdata*" | wc -l` >> + >> + if [ $numfiles0 -ne $numfiles1 ] >> + then > > From ptisnovs at icedtea.classpath.org Tue Nov 16 07:03:10 2010 From: ptisnovs at icedtea.classpath.org (ptisnovs at icedtea.classpath.org) Date: Tue, 16 Nov 2010 15:03:10 +0000 Subject: /hg/icedtea6: Correction of testcase java/awt/FontClass/CreateFo... Message-ID: changeset 31705b7b612c in /hg/icedtea6 details: http://icedtea.classpath.org/hg/icedtea6?cmd=changeset;node=31705b7b612c author: ptisnovs date: Tue Nov 16 16:02:46 2010 +0100 Correction of testcase java/awt/FontClass/CreateFont/DeleteFont. The test now ignores directory created by HS. diffstat: 3 files changed, 28 insertions(+), 1 deletion(-) ChangeLog | 6 ++++++ Makefile.am | 3 ++- patches/jtreg-DeleteFont.patch | 20 ++++++++++++++++++++ diffs (50 lines): diff -r ad1c77031a41 -r 31705b7b612c ChangeLog --- a/ChangeLog Fri Nov 12 18:17:22 2010 +0000 +++ b/ChangeLog Tue Nov 16 16:02:46 2010 +0100 @@ -1,3 +1,9 @@ 2010-11-12 Andrew John Hughes + + * Makefile.am: + * patches/jtreg-DeleteFont.patch: + Testcase correction - the test now ignores directory created by HS. + 2010-11-12 Andrew John Hughes * Makefile.am: diff -r ad1c77031a41 -r 31705b7b612c Makefile.am --- a/Makefile.am Fri Nov 12 18:17:22 2010 +0000 +++ b/Makefile.am Tue Nov 16 16:02:46 2010 +0100 @@ -300,7 +300,8 @@ ICEDTEA_PATCHES = \ patches/openjdk/6622432-bigdecimal_performance.patch \ patches/openjdk/6850606-bigdecimal_regression.patch \ patches/openjdk/6876282-bigdecimal_divide.patch \ - patches/f14-fonts.patch + patches/f14-fonts.patch \ + patches/jtreg-DeleteFont.patch if WITH_ALT_HSBUILD ICEDTEA_PATCHES += \ diff -r ad1c77031a41 -r 31705b7b612c patches/jtreg-DeleteFont.patch --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/patches/jtreg-DeleteFont.patch Tue Nov 16 16:02:46 2010 +0100 @@ -0,0 +1,20 @@ +--- openjdk-old/jdk/test/java/awt/FontClass/CreateFont/DeleteFont.sh 2010-06-21 23:15:49.000000000 +0200 ++++ openjdk/jdk/test/java/awt/FontClass/CreateFont/DeleteFont.sh 2010-11-15 14:13:13.000000000 +0100 +@@ -46,7 +46,7 @@ + + cd ${TESTCLASSES} + +-numfiles0=`ls ${TESTCLASSES} | wc -l` ++numfiles0=`ls ${TESTCLASSES} | grep -v "^hsperfdata*" | wc -l` + ${TESTJAVA}/bin/java -Djava.io.tmpdir=${TESTCLASSES} DeleteFont + + if [ $? -ne 0 ] +@@ -55,7 +55,7 @@ + exit 1 + fi + +-numfiles1=`ls ${TESTCLASSES} | wc -l` ++numfiles1=`ls ${TESTCLASSES} | grep -v "^hsperfdata*" | wc -l` + + if [ $numfiles0 -ne $numfiles1 ] + then From ptisnovs at redhat.com Tue Nov 16 07:14:34 2010 From: ptisnovs at redhat.com (Pavel Tisnovsky) Date: Tue, 16 Nov 2010 16:14:34 +0100 Subject: Reviewer needed - fix for regression test hotspot/test/runtime/6929067/Test6929067 In-Reply-To: <20101116132252.GK11013@rivendell.middle-earth.co.uk> References: <4CE17184.5080105@redhat.com> <20101116132252.GK11013@rivendell.middle-earth.co.uk> Message-ID: <4CE29FDA.3060002@redhat.com> Dr Andrew John Hughes wrote: > On 18:44 Mon 15 Nov , Pavel Tisnovsky wrote: >> Hi all, >> >> can anybody please review fix for regression test >> hotspot/test/runtime/6929067/Test6929067 >> >> I changed this test in a way that it now correctly works on x86_64 >> platform, for example (it has to find where libjvm.so is placed instead >> of using constant path). Tested on RHEL 5 x86_64 but it should works on >> another systems too. >> > > ARCH=$(uname -m) > if test "${ARCH}" == "x86_64"; then > ARCH=amd64; > fi > LD_LIBRARY_PATH=.:${TESTJAVA}/jre/lib/${ARCH}/client:${TESTJAVA}/jre/lib/${ARCH}/server:/usr/openwin/lib:/usr/dt/lib:/usr/lib:$LD_LIBRARY_PATH > > would achieve the same goal without using find. Yeah it nicely solves the first problem, but I'd like to stay on my version because we also have to use the exact path to properly compile "invoke" tool - calling of gcc is located near the end of this script. > >> Diffstat produced against IcedTea6 HEAD is stored in attachment. >> > > Again, no 'icedtea-' prefix. > >> Thank you in advance >> Pavel > >> # HG changeset patch >> # User ptisnovs >> # Date 1289843015 -3600 >> # Node ID bf47d6f0dd12f7ed7a34d0110d2bbd6361d6616b >> # Parent ad1c77031a41739f3a912d27459a23a930ef4b88 >> Testcase correction. >> >> diff -r ad1c77031a41 -r bf47d6f0dd12 ChangeLog >> --- a/ChangeLog Fri Nov 12 18:17:22 2010 +0000 >> +++ b/ChangeLog Mon Nov 15 18:43:35 2010 +0100 >> @@ -1,3 +1,10 @@ >> +2010-11-15 Pavel Tisnovsky >> + >> + * Makefile.am: Add new patch. >> + * patches/jtreg-patch-Test6929067.patch: >> + Testcase correction - now the test works correctly also on x86_64 and >> + other platforms. >> + >> 2010-11-12 Andrew John Hughes >> >> * Makefile.am: >> diff -r ad1c77031a41 -r bf47d6f0dd12 Makefile.am >> --- a/Makefile.am Fri Nov 12 18:17:22 2010 +0000 >> +++ b/Makefile.am Mon Nov 15 18:43:35 2010 +0100 >> @@ -300,7 +300,8 @@ >> patches/openjdk/6622432-bigdecimal_performance.patch \ >> patches/openjdk/6850606-bigdecimal_regression.patch \ >> patches/openjdk/6876282-bigdecimal_divide.patch \ >> - patches/f14-fonts.patch >> + patches/f14-fonts.patch \ >> + patches/icedtea-jtreg-Test6929067.patch >> >> if WITH_ALT_HSBUILD >> ICEDTEA_PATCHES += \ >> diff -r ad1c77031a41 -r bf47d6f0dd12 patches/icedtea-jtreg-Test6929067.patch >> --- /dev/null Thu Jan 01 00:00:00 1970 +0000 >> +++ b/patches/icedtea-jtreg-Test6929067.patch Mon Nov 15 18:43:35 2010 +0100 >> @@ -0,0 +1,23 @@ >> +--- openjdk-old/hotspot/test/runtime/6929067/Test6929067.sh 2010-10-08 22:29:24.000000000 +0200 >> ++++ openjdk/hotspot/test/runtime/6929067/Test6929067.sh 2010-11-15 12:47:57.000000000 +0100 >> +@@ -42,7 +42,11 @@ >> + ;; >> + esac >> + >> +-LD_LIBRARY_PATH=.:${TESTJAVA}/jre/lib/i386/client:/usr/openwin/lib:/usr/dt/lib:/usr/lib:$LD_LIBRARY_PATH >> ++PATH_TO_LIBJVM=`find ${TESTJAVA}/jre/lib -name libjvm.so | tail -n 1 | sed 's/\(.*\)\(\/libjvm\.so\)/\1/g'` >> ++ >> ++echo $PATH_TO_LIBJVM >> ++ >> ++LD_LIBRARY_PATH=.:${PATH_TO_LIBJVM}:/usr/openwin/lib:/usr/dt/lib:/usr/lib:$LD_LIBRARY_PATH >> + export LD_LIBRARY_PATH >> + >> + THIS_DIR=`pwd` >> +@@ -55,6 +59,6 @@ >> + >> + ${TESTJAVA}${FS}bin${FS}javac T.java >> + >> +-gcc -o invoke -I${TESTJAVA}/include -I${TESTJAVA}/include/linux invoke.c ${TESTJAVA}/jre/lib/i386/client/libjvm.so >> ++gcc -o invoke -I${TESTJAVA}/include -I${TESTJAVA}/include/linux invoke.c ${PATH_TO_LIBJVM}/libjvm.so >> + ./invoke >> + exit $? > > From bugzilla-daemon at icedtea.classpath.org Tue Nov 16 07:16:47 2010 From: bugzilla-daemon at icedtea.classpath.org (bugzilla-daemon at icedtea.classpath.org) Date: Tue, 16 Nov 2010 15:16:47 +0000 Subject: [Bug 591] Unable to build openjdk/icedtea on Slack 13.1 Message-ID: http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=591 ------- Comment #17 from gnu_andrew at member.fsf.org 2010-11-16 15:16 ------- You shouldn't need any additional patches. Bad form on the part of the ArchLinux people for not submitting these upstream if they are really needed. -- Configure bugmail: http://icedtea.classpath.org/bugzilla/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are the assignee for the bug, or are watching the assignee. From ahughes at redhat.com Tue Nov 16 07:21:39 2010 From: ahughes at redhat.com (Dr Andrew John Hughes) Date: Tue, 16 Nov 2010 15:21:39 +0000 Subject: Reviewer needed - fix for regression test hotspot/test/runtime/6929067/Test6929067 In-Reply-To: <4CE29FDA.3060002@redhat.com> References: <4CE17184.5080105@redhat.com> <20101116132252.GK11013@rivendell.middle-earth.co.uk> <4CE29FDA.3060002@redhat.com> Message-ID: <20101116152138.GL11013@rivendell.middle-earth.co.uk> On 16:14 Tue 16 Nov , Pavel Tisnovsky wrote: > Dr Andrew John Hughes wrote: > > On 18:44 Mon 15 Nov , Pavel Tisnovsky wrote: > >> Hi all, > >> > >> can anybody please review fix for regression test > >> hotspot/test/runtime/6929067/Test6929067 > >> > >> I changed this test in a way that it now correctly works on x86_64 > >> platform, for example (it has to find where libjvm.so is placed instead > >> of using constant path). Tested on RHEL 5 x86_64 but it should works on > >> another systems too. > >> > > > > ARCH=$(uname -m) > > if test "${ARCH}" == "x86_64"; then > > ARCH=amd64; > > fi > > LD_LIBRARY_PATH=.:${TESTJAVA}/jre/lib/${ARCH}/client:${TESTJAVA}/jre/lib/${ARCH}/server:/usr/openwin/lib:/usr/dt/lib:/usr/lib:$LD_LIBRARY_PATH > > > > would achieve the same goal without using find. > > Yeah it nicely solves the first problem, but I'd like to stay on my > version because we also have to use the exact path to properly compile > "invoke" tool - calling of gcc is located near the end of this script. > The problem with using find is that you don't know what libjvm.so you'll end up with, which makes any future issues hard to diagnose. With the above, we know it's the client vm if available, and the server vm if not. IMHO, the gcc invocation should be using -ljvm. > > > >> Diffstat produced against IcedTea6 HEAD is stored in attachment. > >> > > > > Again, no 'icedtea-' prefix. > > > >> Thank you in advance > >> Pavel > > > >> # HG changeset patch > >> # User ptisnovs > >> # Date 1289843015 -3600 > >> # Node ID bf47d6f0dd12f7ed7a34d0110d2bbd6361d6616b > >> # Parent ad1c77031a41739f3a912d27459a23a930ef4b88 > >> Testcase correction. > >> > >> diff -r ad1c77031a41 -r bf47d6f0dd12 ChangeLog > >> --- a/ChangeLog Fri Nov 12 18:17:22 2010 +0000 > >> +++ b/ChangeLog Mon Nov 15 18:43:35 2010 +0100 > >> @@ -1,3 +1,10 @@ > >> +2010-11-15 Pavel Tisnovsky > >> + > >> + * Makefile.am: Add new patch. > >> + * patches/jtreg-patch-Test6929067.patch: > >> + Testcase correction - now the test works correctly also on x86_64 and > >> + other platforms. > >> + > >> 2010-11-12 Andrew John Hughes > >> > >> * Makefile.am: > >> diff -r ad1c77031a41 -r bf47d6f0dd12 Makefile.am > >> --- a/Makefile.am Fri Nov 12 18:17:22 2010 +0000 > >> +++ b/Makefile.am Mon Nov 15 18:43:35 2010 +0100 > >> @@ -300,7 +300,8 @@ > >> patches/openjdk/6622432-bigdecimal_performance.patch \ > >> patches/openjdk/6850606-bigdecimal_regression.patch \ > >> patches/openjdk/6876282-bigdecimal_divide.patch \ > >> - patches/f14-fonts.patch > >> + patches/f14-fonts.patch \ > >> + patches/icedtea-jtreg-Test6929067.patch > >> > >> if WITH_ALT_HSBUILD > >> ICEDTEA_PATCHES += \ > >> diff -r ad1c77031a41 -r bf47d6f0dd12 patches/icedtea-jtreg-Test6929067.patch > >> --- /dev/null Thu Jan 01 00:00:00 1970 +0000 > >> +++ b/patches/icedtea-jtreg-Test6929067.patch Mon Nov 15 18:43:35 2010 +0100 > >> @@ -0,0 +1,23 @@ > >> +--- openjdk-old/hotspot/test/runtime/6929067/Test6929067.sh 2010-10-08 22:29:24.000000000 +0200 > >> ++++ openjdk/hotspot/test/runtime/6929067/Test6929067.sh 2010-11-15 12:47:57.000000000 +0100 > >> +@@ -42,7 +42,11 @@ > >> + ;; > >> + esac > >> + > >> +-LD_LIBRARY_PATH=.:${TESTJAVA}/jre/lib/i386/client:/usr/openwin/lib:/usr/dt/lib:/usr/lib:$LD_LIBRARY_PATH > >> ++PATH_TO_LIBJVM=`find ${TESTJAVA}/jre/lib -name libjvm.so | tail -n 1 | sed 's/\(.*\)\(\/libjvm\.so\)/\1/g'` > >> ++ > >> ++echo $PATH_TO_LIBJVM > >> ++ > >> ++LD_LIBRARY_PATH=.:${PATH_TO_LIBJVM}:/usr/openwin/lib:/usr/dt/lib:/usr/lib:$LD_LIBRARY_PATH > >> + export LD_LIBRARY_PATH > >> + > >> + THIS_DIR=`pwd` > >> +@@ -55,6 +59,6 @@ > >> + > >> + ${TESTJAVA}${FS}bin${FS}javac T.java > >> + > >> +-gcc -o invoke -I${TESTJAVA}/include -I${TESTJAVA}/include/linux invoke.c ${TESTJAVA}/jre/lib/i386/client/libjvm.so > >> ++gcc -o invoke -I${TESTJAVA}/include -I${TESTJAVA}/include/linux invoke.c ${PATH_TO_LIBJVM}/libjvm.so > >> + ./invoke > >> + exit $? > > > > > -- Andrew :) Free Java Software Engineer Red Hat, Inc. (http://www.redhat.com) Support Free Java! Contribute to GNU Classpath and the OpenJDK http://www.gnu.org/software/classpath http://openjdk.java.net PGP Key: 94EFD9D8 (http://subkeys.pgp.net) Fingerprint = F8EF F1EA 401E 2E60 15FA 7927 142C 2591 94EF D9D8 From ptisnovs at redhat.com Tue Nov 16 08:24:15 2010 From: ptisnovs at redhat.com (Pavel Tisnovsky) Date: Tue, 16 Nov 2010 17:24:15 +0100 Subject: Reviewer needed - fix for regression test hotspot/test/runtime/6929067/Test6929067 In-Reply-To: <20101116152138.GL11013@rivendell.middle-earth.co.uk> References: <4CE17184.5080105@redhat.com> <20101116132252.GK11013@rivendell.middle-earth.co.uk> <4CE29FDA.3060002@redhat.com> <20101116152138.GL11013@rivendell.middle-earth.co.uk> Message-ID: <4CE2B02F.1060706@redhat.com> Dr Andrew John Hughes wrote: > On 16:14 Tue 16 Nov , Pavel Tisnovsky wrote: >> Dr Andrew John Hughes wrote: >>> On 18:44 Mon 15 Nov , Pavel Tisnovsky wrote: >>>> Hi all, >>>> >>>> can anybody please review fix for regression test >>>> hotspot/test/runtime/6929067/Test6929067 >>>> >>>> I changed this test in a way that it now correctly works on x86_64 >>>> platform, for example (it has to find where libjvm.so is placed instead >>>> of using constant path). Tested on RHEL 5 x86_64 but it should works on >>>> another systems too. >>>> >>> ARCH=$(uname -m) >>> if test "${ARCH}" == "x86_64"; then >>> ARCH=amd64; >>> fi >>> LD_LIBRARY_PATH=.:${TESTJAVA}/jre/lib/${ARCH}/client:${TESTJAVA}/jre/lib/${ARCH}/server:/usr/openwin/lib:/usr/dt/lib:/usr/lib:$LD_LIBRARY_PATH >>> >>> would achieve the same goal without using find. >> Yeah it nicely solves the first problem, but I'd like to stay on my >> version because we also have to use the exact path to properly compile >> "invoke" tool - calling of gcc is located near the end of this script. >> > > The problem with using find is that you don't know what libjvm.so you'll > end up with, which makes any future issues hard to diagnose. With the > above, we know it's the client vm if available, and the server vm if not. > > IMHO, the gcc invocation should be using -ljvm. Do you mean this solution or something more simpler? gcc -o invoke -L${TESTJAVA}/jre/lib/${ARCH}/client -L${TESTJAVA}/jre/lib/${ARCH}/server -ljvm -I${TESTJAVA}/include -I${TESTJAVA}/include/linux invoke.c (btw it works only when library paths are set) > >>>> Diffstat produced against IcedTea6 HEAD is stored in attachment. >>>> >>> Again, no 'icedtea-' prefix. >>> >>>> Thank you in advance >>>> Pavel >>>> # HG changeset patch >>>> # User ptisnovs >>>> # Date 1289843015 -3600 >>>> # Node ID bf47d6f0dd12f7ed7a34d0110d2bbd6361d6616b >>>> # Parent ad1c77031a41739f3a912d27459a23a930ef4b88 >>>> Testcase correction. >>>> >>>> diff -r ad1c77031a41 -r bf47d6f0dd12 ChangeLog >>>> --- a/ChangeLog Fri Nov 12 18:17:22 2010 +0000 >>>> +++ b/ChangeLog Mon Nov 15 18:43:35 2010 +0100 >>>> @@ -1,3 +1,10 @@ >>>> +2010-11-15 Pavel Tisnovsky >>>> + >>>> + * Makefile.am: Add new patch. >>>> + * patches/jtreg-patch-Test6929067.patch: >>>> + Testcase correction - now the test works correctly also on x86_64 and >>>> + other platforms. >>>> + >>>> 2010-11-12 Andrew John Hughes >>>> >>>> * Makefile.am: >>>> diff -r ad1c77031a41 -r bf47d6f0dd12 Makefile.am >>>> --- a/Makefile.am Fri Nov 12 18:17:22 2010 +0000 >>>> +++ b/Makefile.am Mon Nov 15 18:43:35 2010 +0100 >>>> @@ -300,7 +300,8 @@ >>>> patches/openjdk/6622432-bigdecimal_performance.patch \ >>>> patches/openjdk/6850606-bigdecimal_regression.patch \ >>>> patches/openjdk/6876282-bigdecimal_divide.patch \ >>>> - patches/f14-fonts.patch >>>> + patches/f14-fonts.patch \ >>>> + patches/icedtea-jtreg-Test6929067.patch >>>> >>>> if WITH_ALT_HSBUILD >>>> ICEDTEA_PATCHES += \ >>>> diff -r ad1c77031a41 -r bf47d6f0dd12 patches/icedtea-jtreg-Test6929067.patch >>>> --- /dev/null Thu Jan 01 00:00:00 1970 +0000 >>>> +++ b/patches/icedtea-jtreg-Test6929067.patch Mon Nov 15 18:43:35 2010 +0100 >>>> @@ -0,0 +1,23 @@ >>>> +--- openjdk-old/hotspot/test/runtime/6929067/Test6929067.sh 2010-10-08 22:29:24.000000000 +0200 >>>> ++++ openjdk/hotspot/test/runtime/6929067/Test6929067.sh 2010-11-15 12:47:57.000000000 +0100 >>>> +@@ -42,7 +42,11 @@ >>>> + ;; >>>> + esac >>>> + >>>> +-LD_LIBRARY_PATH=.:${TESTJAVA}/jre/lib/i386/client:/usr/openwin/lib:/usr/dt/lib:/usr/lib:$LD_LIBRARY_PATH >>>> ++PATH_TO_LIBJVM=`find ${TESTJAVA}/jre/lib -name libjvm.so | tail -n 1 | sed 's/\(.*\)\(\/libjvm\.so\)/\1/g'` >>>> ++ >>>> ++echo $PATH_TO_LIBJVM >>>> ++ >>>> ++LD_LIBRARY_PATH=.:${PATH_TO_LIBJVM}:/usr/openwin/lib:/usr/dt/lib:/usr/lib:$LD_LIBRARY_PATH >>>> + export LD_LIBRARY_PATH >>>> + >>>> + THIS_DIR=`pwd` >>>> +@@ -55,6 +59,6 @@ >>>> + >>>> + ${TESTJAVA}${FS}bin${FS}javac T.java >>>> + >>>> +-gcc -o invoke -I${TESTJAVA}/include -I${TESTJAVA}/include/linux invoke.c ${TESTJAVA}/jre/lib/i386/client/libjvm.so >>>> ++gcc -o invoke -I${TESTJAVA}/include -I${TESTJAVA}/include/linux invoke.c ${PATH_TO_LIBJVM}/libjvm.so >>>> + ./invoke >>>> + exit $? >>> > From asu at redhat.com Tue Nov 16 10:35:13 2010 From: asu at redhat.com (Andrew Su) Date: Tue, 16 Nov 2010 13:35:13 -0500 (EST) Subject: [RFC] icedtea-web:Corrected a typo in DeploymentConfiguration.java In-Reply-To: <805283826.1203011289932470345.JavaMail.root@zmail01.collab.prod.int.phx2.redhat.com> Message-ID: <50730402.1203041289932513864.JavaMail.root@zmail01.collab.prod.int.phx2.redhat.com> Hello, This patch is to fix a minor typo in DeploymentCOnfiguration.java Ok to commit? Thanks, Andrew -------------- next part -------------- A non-text attachment was scrubbed... Name: 20101116_typo_correction.patch Type: text/x-patch Size: 1217 bytes Desc: not available Url : http://mail.openjdk.java.net/pipermail/distro-pkg-dev/attachments/20101116/73711ea9/20101116_typo_correction.patch From omajid at redhat.com Tue Nov 16 10:43:55 2010 From: omajid at redhat.com (Omair Majid) Date: Tue, 16 Nov 2010 13:43:55 -0500 Subject: [RFC] icedtea-web:Corrected a typo in DeploymentConfiguration.java In-Reply-To: <50730402.1203041289932513864.JavaMail.root@zmail01.collab.prod.int.phx2.redhat.com> References: <50730402.1203041289932513864.JavaMail.root@zmail01.collab.prod.int.phx2.redhat.com> Message-ID: <4CE2D0EB.6000308@redhat.com> On 11/16/2010 01:35 PM, Andrew Su wrote: > Hello, > > This patch is to fix a minor typo in DeploymentCOnfiguration.java > > Ok to commit? > Looks good to me. Please go ahead and apply. Thanks, Omair From asu at icedtea.classpath.org Tue Nov 16 10:45:34 2010 From: asu at icedtea.classpath.org (asu at icedtea.classpath.org) Date: Tue, 16 Nov 2010 18:45:34 +0000 Subject: /hg/icedtea-web: Corrected a minor typo in DeploymentConfigurati... Message-ID: changeset 4e288938e2a3 in /hg/icedtea-web details: http://icedtea.classpath.org/hg/icedtea-web?cmd=changeset;node=4e288938e2a3 author: Andrew Su date: Tue Nov 16 13:45:43 2010 -0500 Corrected a minor typo in DeploymentConfiguration.java diffstat: 2 files changed, 6 insertions(+), 1 deletion(-) ChangeLog | 5 +++++ netx/net/sourceforge/jnlp/runtime/DeploymentConfiguration.java | 2 +- diffs (24 lines): diff -r e82455c47f08 -r 4e288938e2a3 ChangeLog --- a/ChangeLog Thu Nov 11 11:43:13 2010 -0500 +++ b/ChangeLog Tue Nov 16 13:45:43 2010 -0500 @@ -1,3 +1,8 @@ 2010-11-11 Omair Majid + + * netx/net/sourceforge/jnlp/runtime/DeploymentConfiguration.java: + Corrected typo in one of the default values. + 2010-11-11 Omair Majid * netx/net/sourceforge/jnlp/runtime/Boot.java (main): Move trust diff -r e82455c47f08 -r 4e288938e2a3 netx/net/sourceforge/jnlp/runtime/DeploymentConfiguration.java --- a/netx/net/sourceforge/jnlp/runtime/DeploymentConfiguration.java Thu Nov 11 11:43:13 2010 -0500 +++ b/netx/net/sourceforge/jnlp/runtime/DeploymentConfiguration.java Tue Nov 16 13:45:43 2010 -0500 @@ -369,7 +369,7 @@ public final class DeploymentConfigurati { "deployment.proxy.override.hosts", null }, /* cache and optional package repository */ { "deployment.cache.max.size", String.valueOf("-1") }, - { "deployment.cache.jarcompresson", String.valueOf(0) }, + { "deployment.cache.jarcompression", String.valueOf(0) }, { "deployment.javapi.cache.enabled", String.valueOf(false) }, /* java console */ { "deployment.console.startup.mode", CONSOLE_HIDE }, From bugzilla-daemon at icedtea.classpath.org Tue Nov 16 14:55:58 2010 From: bugzilla-daemon at icedtea.classpath.org (bugzilla-daemon at icedtea.classpath.org) Date: Tue, 16 Nov 2010 22:55:58 +0000 Subject: [Bug 591] Unable to build openjdk/icedtea on Slack 13.1 Message-ID: http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=591 ------- Comment #18 from robert at linux-source.org 2010-11-16 22:55 ------- Removed the patches, did create the javac little script and it worked, but got another error: rm -f -rf /tmp/kng/icedtea6-1.9.1/openjdk.build/j2sdk-image/jre/man /bin/chmod a+rx `/usr/bin/find /tmp/kng/icedtea6-1.9.1/openjdk.build/j2sdk-image -type d` /bin/mkdir -p /tmp/kng/icedtea6-1.9.1/openjdk.build/j2sdk-image rm -f /tmp/kng/icedtea6-1.9.1/openjdk.build/j2sdk-image/LICENSE /bin/sed 's/$//g' /tmp/kng/icedtea6-1.9.1/openjdk/jdk/LICENSE > /tmp/kng/icedtea6-1.9.1/openjdk.build/j2sdk-image/LICENSE /bin/chmod 444 /tmp/kng/icedtea6-1.9.1/openjdk.build/j2sdk-image/LICENSE /bin/mkdir -p /tmp/kng/icedtea6-1.9.1/openjdk.build/j2sdk-image rm -f /tmp/kng/icedtea6-1.9.1/openjdk.build/j2sdk-image/ASSEMBLY_EXCEPTION /bin/sed 's/$//g' /tmp/kng/icedtea6-1.9.1/openjdk/jdk/ASSEMBLY_EXCEPTION > /tmp/kng/icedtea6-1.9.1/openjdk.build/j2sdk-image/ASSEMBLY_EXCEPTION /bin/chmod 444 /tmp/kng/icedtea6-1.9.1/openjdk.build/j2sdk-image/ASSEMBLY_EXCEPTION /bin/mkdir -p /tmp/kng/icedtea6-1.9.1/openjdk.build/j2sdk-image rm -f /tmp/kng/icedtea6-1.9.1/openjdk.build/j2sdk-image/THIRD_PARTY_README /bin/sed 's/$//g' /tmp/kng/icedtea6-1.9.1/openjdk/jdk/THIRD_PARTY_README > /tmp/kng/icedtea6-1.9.1/openjdk.build/j2sdk-image/THIRD_PARTY_README /bin/chmod 444 /tmp/kng/icedtea6-1.9.1/openjdk.build/j2sdk-image/THIRD_PARTY_README /bin/mkdir /tmp/kng/icedtea6-1.9.1/openjdk.build/j2sdk-image/lib for l in tools.jar jconsole.jar sa-jdi.jar; do \ if [ -r /tmp/kng/icedtea6-1.9.1/openjdk.build/lib/$l ]; then \ /bin/cp /tmp/kng/icedtea6-1.9.1/openjdk.build/lib/$l /tmp/kng/icedtea6-1.9.1/openjdk.build/j2sdk-image/lib; \ fi; \ done (cd /tmp/kng/icedtea6-1.9.1/openjdk.build/bin/.. && /bin/tar cf - \ `/usr/bin/find bin \( -type f -o -type l \) -print `) | \ (cd /tmp/kng/icedtea6-1.9.1/openjdk.build/j2sdk-image && /bin/tar xf -) /bin/touch /tmp/kng/icedtea6-1.9.1/openjdk.build/classes/META-INF/services/com.sun.tools.internal.xjc.Plugin /tmp/kng/icedtea6-1.9.1/bootstrap/jdk1.6.0/bin/jar c0f /tmp/kng/icedtea6-1.9.1/openjdk.build/lib/tools.jar -C /tmp/kng/icedtea6-1.9.1/openjdk.build/classes sun/tools/asm -C /tmp/kng/icedtea6-1.9.1/openjdk.build/classes sun/tools/jar -C /tmp/kng/icedtea6-1.9.1/openjdk.build/classes sun/tools/java -C /tmp/kng/icedtea6-1.9.1/openjdk.build/classes sun/tools/javac -C /tmp/kng/icedtea6-1.9.1/openjdk.build/classes sun/tools/javap -C /tmp/kng/icedtea6-1.9.1/openjdk.build/classes sun/tools/jps -C /tmp/kng/icedtea6-1.9.1/openjdk.build/classes sun/tools/jstat -C /tmp/kng/icedtea6-1.9.1/openjdk.build/classes sun/tools/jstatd -C /tmp/kng/icedtea6-1.9.1/openjdk.build/classes sun/tools/native2ascii -C /tmp/kng/icedtea6-1.9.1/openjdk.build/classes sun/tools/serialver -C /tmp/kng/icedtea6-1.9.1/openjdk.build/classes sun/tools/tree -C /tmp/kng/icedtea6-1.9.1/openjdk.build/classes sun/tools/util -C /tmp/kng/icedtea6-1.9.1/openjdk.build/classes sun/security/tools/JarBASE64Encoder.class -C /tmp/kng/icedtea6-1.9.1/openjdk.build/classes sun/security/tools/JarSigner.class -C /tmp/kng/icedtea6-1.9.1/openjdk.build/classes sun/security/tools/JarSignerParameters.class -C /tmp/kng/icedtea6-1.9.1/openjdk.build/classes sun/security/tools/JarSignerResources.class -C /tmp/kng/icedtea6-1.9.1/openjdk.build/classes sun/security/tools/JarSignerResources_ja.class -C /tmp/kng/icedtea6-1.9.1/openjdk.build/classes sun/security/tools/JarSignerResources_zh_CN.class -C /tmp/kng/icedtea6-1.9.1/openjdk.build/classes sun/security/tools/SignatureFile\$Block.class -C /tmp/kng/icedtea6-1.9.1/openjdk.build/classes sun/security/tools/SignatureFile.class -C /tmp/kng/icedtea6-1.9.1/openjdk.build/classes sun/security/tools/TimestampedSigner.class -C /tmp/kng/icedtea6-1.9.1/openjdk.build/classes sun/rmi/rmic -C /tmp/kng/icedtea6-1.9.1/openjdk.build/classes sun/applet -C /tmp/kng/icedtea6-1.9.1/openjdk.build/classes sun/jvmstat -C /tmp/kng/icedtea6-1.9.1/openjdk.build/classes com/sun/javadoc -C /tmp/kng/icedtea6-1.9.1/openjdk.build/classes com/sun/jdi -C /tmp/kng/icedtea6-1.9.1/openjdk.build/classes com/sun/jarsigner -C /tmp/kng/icedtea6-1.9.1/openjdk.build/classes com/sun/mirror -C /tmp/kng/icedtea6-1.9.1/openjdk.build/classes com/sun/source -C /tmp/kng/icedtea6-1.9.1/openjdk.build/classes com/sun/tools/doclets -C /tmp/kng/icedtea6-1.9.1/openjdk.build/classes com/sun/tools/example/debug/expr -C /tmp/kng/icedtea6-1.9.1/openjdk.build/classes com/sun/tools/example/debug/tty -C /tmp/kng/icedtea6-1.9.1/openjdk.build/classes com/sun/tools/extcheck -C /tmp/kng/icedtea6-1.9.1/openjdk.build/classes com/sun/tools/hat -C /tmp/kng/icedtea6-1.9.1/openjdk.build/classes com/sun/tools/javac -C /tmp/kng/icedtea6-1.9.1/openjdk.build/classes com/sun/tools/javadoc -C /tmp/kng/icedtea6-1.9.1/openjdk.build/classes com/sun/tools/apt -C /tmp/kng/icedtea6-1.9.1/openjdk.build/classes com/sun/tools/javah -C /tmp/kng/icedtea6-1.9.1/openjdk.build/classes com/sun/tools/corba -C /tmp/kng/icedtea6-1.9.1/openjdk.build/classes com/sun/tools/internal/xjc -C /tmp/kng/icedtea6-1.9.1/openjdk.build/classes com/sun/tools/internal/ws -C /tmp/kng/icedtea6-1.9.1/openjdk.build/classes com/sun/istack/internal/tools -C /tmp/kng/icedtea6-1.9.1/openjdk.build/classes com/sun/istack/internal/ws -C /tmp/kng/icedtea6-1.9.1/openjdk.build/classes com/sun/codemodel -C /tmp/kng/icedtea6-1.9.1/openjdk.build/classes com/sun/tools/internal/jxc -C /tmp/kng/icedtea6-1.9.1/openjdk.build/classes com/sun/xml/internal/rngom -C /tmp/kng/icedtea6-1.9.1/openjdk.build/classes com/sun/xml/internal/xsom -C /tmp/kng/icedtea6-1.9.1/openjdk.build/classes org/relaxng/datatype -C /tmp/kng/icedtea6-1.9.1/openjdk.build/classes com/sun/xml/internal/dtdparser -C /tmp/kng/icedtea6-1.9.1/openjdk.build/classes com/sun/tools/jdi -C /tmp/kng/icedtea6-1.9.1/openjdk.build/classes com/sun/tools/script/shell -C /tmp/kng/icedtea6-1.9.1/openjdk.build/classes com/sun/tools/attach -C /tmp/kng/icedtea6-1.9.1/openjdk.build/classes sun/tools/attach -C /tmp/kng/icedtea6-1.9.1/openjdk.build/classes sun/tools/jstack -C /tmp/kng/icedtea6-1.9.1/openjdk.build/classes sun/tools/jinfo -C /tmp/kng/icedtea6-1.9.1/openjdk.build/classes sun/tools/jmap \ -J-client -J-Xmx877m -J-Xms128m -J-XX:PermSize=32m -J-XX:MaxPermSize=160m /bin/cp /tmp/kng/icedtea6-1.9.1/openjdk.build/lib/tools.jar /tmp/kng/icedtea6-1.9.1/openjdk.build/j2sdk-image/lib/tools.jar /bin/mkdir -p /tmp/kng/icedtea6-1.9.1/openjdk.build/symbols/META-INF/sym /tmp/kng/icedtea6-1.9.1/bootstrap/jdk1.6.0/bin/java -client -Xmx877m -Xms128m -XX:PermSize=32m -XX:MaxPermSize=160m "-Xbootclasspath/p:/tmp/kng/icedtea6-1.9.1/openjdk.build/langtools/dist/bootstrap/lib/javac.jar" -jar /tmp/kng/icedtea6-1.9.1/openjdk.build/langtools/dist/bootstrap/lib/javac.jar -g -source 1.5 -target 5 -encoding ascii "-Xbootclasspath:/tmp/kng/icedtea6-1.9.1/openjdk.build/classes" -XDprocess.packages -proc:only \ -processor com.sun.tools.javac.sym.CreateSymbols \ -Acom.sun.tools.javac.sym.Jar=/tmp/kng/icedtea6-1.9.1/openjdk.build/tmp/rt-orig.jar \ -Acom.sun.tools.javac.sym.Dest=/tmp/kng/icedtea6-1.9.1/openjdk.build/symbols/META-INF/sym/rt.jar \ java.applet java.awt java.awt.color java.awt.datatransfer java.awt.dnd java.awt.event java.awt.font java.awt.geom java.awt.im java.awt.im.spi java.awt.image java.awt.image.renderable java.awt.print java.beans java.beans.beancontext java.io java.lang java.lang.annotation java.lang.instrument java.lang.management java.lang.ref java.lang.reflect java.math java.net java.nio java.nio.channels java.nio.channels.spi java.nio.charset java.nio.charset.spi java.rmi java.rmi.activation java.rmi.dgc java.rmi.registry java.rmi.server java.security java.security.acl java.security.cert java.security.interfaces java.security.spec java.sql java.text java.text.spi java.util java.util.concurrent java.util.concurrent.atomic java.util.concurrent.locks java.util.jar java.util.logging java.util.prefs java.util.regex java.util.spi java.util.zip javax.accessibility javax.activation javax.activity javax.annotation javax.annotation.processing javax.crypto javax.crypto.interfaces javax.crypto.spec javax.imageio javax.imageio.event javax.imageio.metadata javax.imageio.plugins.jpeg javax.imageio.plugins.bmp javax.imageio.spi javax.imageio.stream javax.jws javax.jws.soap javax.lang.model javax.lang.model.element javax.lang.model.type javax.lang.model.util javax.management javax.management.loading javax.management.monitor javax.management.relation javax.management.openmbean javax.management.timer javax.management.modelmbean javax.management.remote javax.management.remote.rmi javax.naming javax.naming.directory javax.naming.event javax.naming.ldap javax.naming.spi javax.net javax.net.ssl javax.print javax.print.attribute javax.print.attribute.standard javax.print.event javax.rmi javax.rmi.CORBA javax.rmi.ssl javax.script javax.security.auth javax.security.auth.callback javax.security.auth.kerberos javax.security.auth.login javax.security.auth.spi javax.security.auth.x500 javax.security.cert javax.security.sasl javax.sound.sampled javax.sound.sampled.spi javax.sound.midi javax.sound.midi.spi javax.sql javax.sql.rowset javax.sql.rowset.serial javax.sql.rowset.spi javax.swing javax.swing.border javax.swing.colorchooser javax.swing.filechooser javax.swing.event javax.swing.table javax.swing.text javax.swing.text.html javax.swing.text.html.parser javax.swing.text.rtf javax.swing.tree javax.swing.undo javax.swing.plaf javax.swing.plaf.basic javax.swing.plaf.metal javax.swing.plaf.multi javax.swing.plaf.synth javax.tools javax.transaction javax.transaction.xa javax.xml.parsers javax.xml.bind javax.xml.bind.annotation javax.xml.bind.annotation.adapters javax.xml.bind.attachment javax.xml.bind.helpers javax.xml.bind.util javax.xml.soap javax.xml.ws javax.xml.ws.handler javax.xml.ws.handler.soap javax.xml.ws.http javax.xml.ws.soap javax.xml.ws.spi javax.xml.ws.wsaddressing javax.xml.transform javax.xml.transform.sax javax.xml.transform.dom javax.xml.transform.stax javax.xml.transform.stream javax.xml javax.xml.crypto javax.xml.crypto.dom javax.xml.crypto.dsig javax.xml.crypto.dsig.dom javax.xml.crypto.dsig.keyinfo javax.xml.crypto.dsig.spec javax.xml.datatype javax.xml.validation javax.xml.namespace javax.xml.xpath javax.xml.stream javax.xml.stream.events javax.xml.stream.util org.ietf.jgss org.omg.CORBA org.omg.CORBA.DynAnyPackage org.omg.CORBA.ORBPackage org.omg.CORBA.TypeCodePackage org.omg.stub.java.rmi org.omg.CORBA.portable org.omg.CORBA_2_3 org.omg.CORBA_2_3.portable org.omg.CosNaming org.omg.CosNaming.NamingContextExtPackage org.omg.CosNaming.NamingContextPackage org.omg.SendingContext org.omg.PortableServer org.omg.PortableServer.CurrentPackage org.omg.PortableServer.POAPackage org.omg.PortableServer.POAManagerPackage org.omg.PortableServer.ServantLocatorPackage org.omg.PortableServer.portable org.omg.PortableInterceptor org.omg.PortableInterceptor.ORBInitInfoPackage org.omg.Messaging org.omg.IOP org.omg.IOP.CodecFactoryPackage org.omg.IOP.CodecPackage org.omg.Dynamic org.omg.DynamicAny org.omg.DynamicAny.DynAnyPackage org.omg.DynamicAny.DynAnyFactoryPackage org.w3c.dom org.w3c.dom.events org.w3c.dom.bootstrap org.w3c.dom.ls org.xml.sax org.xml.sax.ext org.xml.sax.helpers com.sun.java.browser.dom org.w3c.dom org.w3c.dom.bootstrap org.w3c.dom.ls org.w3c.dom.ranges org.w3c.dom.traversal org.w3c.dom.html org.w3c.dom.stylesheets org.w3c.dom.css org.w3c.dom.events org.w3c.dom.views com.sun.management com.sun.security.auth com.sun.security.auth.callback com.sun.security.auth.login com.sun.security.auth.module com.sun.security.jgss com.sun.net.ssl com.sun.net.httpserver com.sun.net.httpserver.spi javax.smartcardio javax.jnlp netscape.javascript com.sun.java.swing.plaf com.sun.java.swing.plaf.windows com.sun.java.swing.plaf.motif com.sun.java.swing.plaf.gtk com.sun.java.swing.plaf.nimbus warning: package javax.jnlp does not exist warning: package netscape.javascript does not exist warning: package com.sun.java.swing.plaf does not exist Using boot class path = [/tmp/kng/icedtea6-1.9.1/openjdk.build/tmp/rt-orig.jar, /tmp/kng/icedtea6-1.9.1/openjdk.build/langtools/dist/bootstrap/lib/javac.jar, /tmp/kng/icedtea6-1.9.1/openjdk.build-ecj/j2sdk-image/jre/lib/resources.jar, /tmp/kng/icedtea6-1.9.1/openjdk.build-ecj/j2sdk-image/jre/lib/sunrsasign.jar, /tmp/kng/icedtea6-1.9.1/openjdk.build-ecj/j2sdk-image/jre/lib/jsse.jar, /tmp/kng/icedtea6-1.9.1/openjdk.build-ecj/j2sdk-image/jre/lib/jce.jar, /tmp/kng/icedtea6-1.9.1/openjdk.build-ecj/j2sdk-image/jre/lib/charsets.jar, /tmp/kng/icedtea6-1.9.1/openjdk.build-ecj/j2sdk-image/jre/lib/netx.jar, /tmp/kng/icedtea6-1.9.1/openjdk.build-ecj/j2sdk-image/jre/lib/plugin.jar, /tmp/kng/icedtea6-1.9.1/openjdk.build-ecj/j2sdk-image/jre/lib/rhino.jar, /tmp/kng/icedtea6-1.9.1/openjdk.build-ecj/j2sdk-image/jre/classes, /tmp/kng/icedtea6-1.9.1/openjdk.build-ecj/j2sdk-image/jre/lib/ext/sunpkcs11.jar, /tmp/kng/icedtea6-1.9.1/openjdk.build-ecj/j2sdk-image/jre/lib/ext/localedata.jar, /tmp/kng/icedtea6-1.9.1/openjdk.build-ecj/j2sdk-image/jre/lib/ext/dnsns.jar, /tmp/kng/icedtea6-1.9.1/openjdk.build-ecj/j2sdk-image/jre/lib/ext/sunjce_provider.jar] error: bad class file: com/sun/jmx/remote/security/MBeanServerAccessController.class(com/sun/jmx/remote/security:MBeanServerAccessController.class) bad constant pool tag: 0 at 3948 Please remove or make sure it appears in the correct subdirectory of the classpath. 1 error make[3]: *** [initial-image-jdk] Error 1 make[3]: Leaving directory `/tmp/kng/icedtea6-1.9.1/openjdk/jdk/make' make[2]: *** [jdk-build] Error 2 make[2]: Leaving directory `/tmp/kng/icedtea6-1.9.1/openjdk' make[1]: *** [build_product_image] Error 2 make[1]: Leaving directory `/tmp/kng/icedtea6-1.9.1/openjdk' make: *** [stamps/icedtea.stamp] Error 2 -- Configure bugmail: http://icedtea.classpath.org/bugzilla/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are the assignee for the bug, or are watching the assignee. From ahughes at redhat.com Tue Nov 16 17:23:06 2010 From: ahughes at redhat.com (Dr Andrew John Hughes) Date: Wed, 17 Nov 2010 01:23:06 +0000 Subject: Reviewer needed - fix for regression test java/awt/FontClass/CreateFont/DeleteFont In-Reply-To: <4CE28B32.90509@redhat.com> References: <4CE13DF9.3020207@redhat.com> <20101116114828.GI11013@rivendell.middle-earth.co.uk> <4CE28B32.90509@redhat.com> Message-ID: <20101117012306.GM11013@rivendell.middle-earth.co.uk> On 14:46 Tue 16 Nov , Pavel Tisnovsky wrote: > Dr Andrew John Hughes wrote: > > On 15:04 Mon 15 Nov , Pavel Tisnovsky wrote: > >> Hi all, > >> > >> can anybody please review fix for regression test > >> java/awt/FontClass/CreateFont/DeleteFont? > >> > >> This test check, if the temporary file containing font is properly > >> deleted when JVM finishes. The check is based on counting of files in > >> temporary dir - if temporary font file is not deleted, the number of > >> files before and after running the test differs. > >> > >> BUT JVM also creates hsperfdata_* subdirectory so the check described > >> above always fails (presence of this subdirectory add +1 to number of > >> files in temporary directory). I've added simple filter to resolve this > >> issue. > >> > > > > Do we not just know the name of the temporary font file to check for? > > Or some part of it? > > The name of temporary file is generated each time the test is started. > It looks like: > +~JF7534461295183941137.tmp > > So we know (probably) only the extension. > Ok maybe we could filter on '.tmp$'. Doesn't really matter I guess, unless something else is likely to appear in that directory too and cause the test to fail again. > > > >> (I also tried to acquire bug ID to push this fix to OpenJDK7, but still > >> without success ;-) > >> > >> Diffstat produced against IcedTea6 HEAD is stored in attachment. > >> > > > > Ok if you drop the 'icedtea-' prefix on the patch! > > > >> Thank you in advance > >> Pavel > > > >> # HG changeset patch > >> # User ptisnovs > >> # Date 1289829138 -3600 > >> # Node ID 553291a55fce4a6ab5730a0e9dae4570766451d0 > >> # Parent ad1c77031a41739f3a912d27459a23a930ef4b88 > >> Testcase correction. > >> > >> diff -r ad1c77031a41 -r 553291a55fce ChangeLog > >> --- a/ChangeLog Fri Nov 12 18:17:22 2010 +0000 > >> +++ b/ChangeLog Mon Nov 15 14:52:18 2010 +0100 > >> @@ -1,3 +1,9 @@ > >> +2010-11-15 Pavel Tisnovsky > >> + > >> + * Makefile.am: > >> + * patches/icedtea-jtreg-DeleteFont.patch: > >> + Testcase correction - the test now ignores directory created by HS. > >> + > >> 2010-11-12 Andrew John Hughes > >> > >> * Makefile.am: > >> diff -r ad1c77031a41 -r 553291a55fce Makefile.am > >> --- a/Makefile.am Fri Nov 12 18:17:22 2010 +0000 > >> +++ b/Makefile.am Mon Nov 15 14:52:18 2010 +0100 > >> @@ -300,7 +300,8 @@ > >> patches/openjdk/6622432-bigdecimal_performance.patch \ > >> patches/openjdk/6850606-bigdecimal_regression.patch \ > >> patches/openjdk/6876282-bigdecimal_divide.patch \ > >> - patches/f14-fonts.patch > >> + patches/f14-fonts.patch \ > >> + patches/icedtea-jtreg-DeleteFont.patch > >> > >> if WITH_ALT_HSBUILD > >> ICEDTEA_PATCHES += \ > >> diff -r ad1c77031a41 -r 553291a55fce patches/icedtea-jtreg-DeleteFont.patch > >> --- /dev/null Thu Jan 01 00:00:00 1970 +0000 > >> +++ b/patches/icedtea-jtreg-DeleteFont.patch Mon Nov 15 14:52:18 2010 +0100 > >> @@ -0,0 +1,20 @@ > >> +--- openjdk-old/jdk/test/java/awt/FontClass/CreateFont/DeleteFont.sh 2010-06-21 23:15:49.000000000 +0200 > >> ++++ openjdk/jdk/test/java/awt/FontClass/CreateFont/DeleteFont.sh 2010-11-15 14:13:13.000000000 +0100 > >> +@@ -46,7 +46,7 @@ > >> + > >> + cd ${TESTCLASSES} > >> + > >> +-numfiles0=`ls ${TESTCLASSES} | wc -l` > >> ++numfiles0=`ls ${TESTCLASSES} | grep -v "^hsperfdata*" | wc -l` > >> + ${TESTJAVA}/bin/java -Djava.io.tmpdir=${TESTCLASSES} DeleteFont > >> + > >> + if [ $? -ne 0 ] > >> +@@ -55,7 +55,7 @@ > >> + exit 1 > >> + fi > >> + > >> +-numfiles1=`ls ${TESTCLASSES} | wc -l` > >> ++numfiles1=`ls ${TESTCLASSES} | grep -v "^hsperfdata*" | wc -l` > >> + > >> + if [ $numfiles0 -ne $numfiles1 ] > >> + then > > > > > -- Andrew :) Free Java Software Engineer Red Hat, Inc. (http://www.redhat.com) Support Free Java! Contribute to GNU Classpath and the OpenJDK http://www.gnu.org/software/classpath http://openjdk.java.net PGP Key: 94EFD9D8 (http://subkeys.pgp.net) Fingerprint = F8EF F1EA 401E 2E60 15FA 7927 142C 2591 94EF D9D8 From gbenson at redhat.com Wed Nov 17 01:30:02 2010 From: gbenson at redhat.com (Gary Benson) Date: Wed, 17 Nov 2010 09:30:02 +0000 Subject: no gcj-jdk + no ecj + building openjdk In-Reply-To: References: Message-ID: <20101117093002.GB3460@redhat.com> Hi Ramakanth, It looks like you're using IcedTea, so I'm copying in distro-pkg-dev which is the mailing list most IcedTea stuff is discussed on. It also looks like you're using Fedora 8, which is very old. I'm not saying you won't be able to do a build, but you'll likely run into problems that upgrading would solve. So unless there you have a very compelling reason to stick on Fedora 8 I would suggest upgrading to the latest as your first step. In answer to your question, ecj is the Java compiler from Eclipse, and it's the Java compiler used by jdk-gcj-compat. You do need an existing JDK to build OpenJDK, and jdk-gcj-compat is probably the only free one available for Fedora 8. Cheers, Gary Ramakanth Varala wrote: > Hello all, > > Iam trying to build openjdk for my fedora plat form . > i like to build openjdk without ecj ( i guess this is eclipse related > and eclipse IDE is not needed ) > > Currently iam getting the error as below . > > checking for distribution package version... none > checking build identification... Built on Fedora release 8 (Werewolf) > (Wed Nov 17 12:03:35 IST 2010) > checking for a GCJ JDK home directory... > configure: error: "A GCJ JDK home directory could not be found." > > > can any body help me in this. > > regards -- http://gbenson.net/ From bugzilla-daemon at icedtea.classpath.org Wed Nov 17 03:10:19 2010 From: bugzilla-daemon at icedtea.classpath.org (bugzilla-daemon at icedtea.classpath.org) Date: Wed, 17 Nov 2010 11:10:19 +0000 Subject: [Bug 594] New: OpenJDK crashes on debian sqeeze (64 bit) Message-ID: http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=594 Summary: OpenJDK crashes on debian sqeeze (64 bit) Product: IcedTea Version: unspecified Platform: 64-bit OS/Version: Linux Status: NEW Severity: blocker Priority: P2 Component: IcedTea6 AssignedTo: unassigned at icedtea.classpath.org ReportedBy: stustd at gmail.com # # A fatal error has been detected by the Java Runtime Environment: # # SIGSEGV (0xb) at pc=0x00007f9c6c0cebd2, pid=23397, tid=140309839226640 # # JRE version: 6.0_18-b18 # Java VM: OpenJDK 64-Bit Server VM (16.0-b13 mixed mode linux-amd64 ) # Derivative: IcedTea6 1.8.2 # Distribution: Debian GNU/Linux unstable (sid), package 6b18-1.8.2-4 # Problematic frame: # C [libjava.so+0x18bd2] JNU_CallStaticMethodByName+0x92 # # If you would like to submit a bug report, please include # instructions how to reproduce the bug and visit: # http://icedtea.classpath.org/bugzilla # --------------- T H R E A D --------------- Current thread is native thread siginfo:si_signo=SIGSEGV: si_errno=0, si_code=1 (SEGV_MAPERR), si_addr=0x0000000000000000 Registers: RAX=0x0000000000000029, RBX=0x0000000000000000, RCX=0x00007f9c475b52b6, RDX=0x00007f9c6e20006f RSP=0x00007f9c6e1fff80, RBP=0x00007f9c6e2000a0, RSI=0x0000000000000000, RDI=0x0000000000000000 R8 =0x00007f9c475b52b0, R9 =0x0000000001e02350, R10=0x0000000000000003, R11=0x0000000000000000 R12=0x0000000000000000, R13=0x00007f9c475b52b3, R14=0x00007f9c6e200210, R15=0x00007f9c475b52c9 RIP=0x00007f9c6c0cebd2, EFL=0x0000000000010246, CSGSFS=0x0000000000000033, ERR=0x0000000000000004 TRAPNO=0x000000000000000e Top of Stack: (sp=0x00007f9c6e1fff80) 0x00007f9c6e1fff80: 00007f9c681ada30 0000000000000020 0x00007f9c6e1fff90: 00007f9c68ec75d0 00007f9c475b52b6 0x00007f9c6e1fffa0: 0000000001e4fe84 0000000000000010 0x00007f9c6e1fffb0: 0000000000000020 00007f9c70c01e48 0x00007f9c6e1fffc0: 0000000000000020 00007f9c6e876b21 0x00007f9c6e1fffd0: 0000000000000000 0000000001e4fe10 0x00007f9c6e1fffe0: 00007f9c70c01e40 0000000001e02350 0x00007f9c6e1ffff0: 0000000000000000 0000000000000000 0x00007f9c6e200000: 0000000000000020 00007f9c7091b930 0x00007f9c6e200010: 0000000000000020 0000000001e4fe10 0x00007f9c6e200020: 0000000000000020 0000000002791620 0x00007f9c6e200030: 0000000000000000 00007f9c6e87705a 0x00007f9c6e200040: 00007f9c72d90ba0 00007f9c6e200080 0x00007f9c6e200050: 00007f9c6e200098 00007f9c6791bc50 0x00007f9c6e200060: 0000000001e02350 00007f9c6e2000e0 0x00007f9c6e200070: 00007f9c6e2001d4 0000000001e02350 0x00007f9c6e200080: 00007f9c6e2000e0 00007f9c6e2001d4 0x00007f9c6e200090: 00007f9c6e200210 0000000000000000 0x00007f9c6e2000a0: 00007f9c6e2000d0 00007f9c47588fa4 0x00007f9c6e2000b0: 00007f9c6e2000e0 00007f9c6e200160 0x00007f9c6e2000c0: 0000000002791620 0000000001e02350 0x00007f9c6e2000d0: 0000000002791620 00007f9c6f9c7d0c 0x00007f9c6e2000e0: 0000000000000000 0000000001e02350 0x00007f9c6e2000f0: 00000000054003c9 0000000000002a1f 0x00007f9c6e200100: 0000000001000f03 00007f9c70c01e40 0x00007f9c6e200110: 0000000000002a1e 0000000001e02350 0x00007f9c6e200120: 0000000002791620 0000000000002a1f 0x00007f9c6e200130: 0000000000000000 00007f9c7091b84c 0x00007f9c6e200140: 0000000002a2d280 00007f9c6f9cf164 0x00007f9c6e200150: 00007f9c6e200180 00007f9c6e200178 0x00007f9c6e200160: 00007f9c6e2001c8 0000000001e4fe10 0x00007f9c6e200170: 0100000000000000 0000000000000000 Instructions: (pc=0x00007f9c6c0cebd2) 0x00007f9c6c0cebc2: 74 0e 49 83 c5 01 41 0f b6 45 00 3c 29 90 75 ee 0x00007f9c6c0cebd2: 48 8b 03 45 31 f6 be 03 00 00 00 48 89 df 4c 89 Stack: [0x00007f9c6da02000,0x00007f9c6e203000], sp=0x00007f9c6e1fff80, free space=1ff70000000000000030k Native frames: (J=compiled Java code, j=interpreted, Vv=VM code, C=native code) C [libjava.so+0x18bd2] JNU_CallStaticMethodByName+0x92 C [libmawt.so+0x11fa4] ********************** --------------- S Y S T E M --------------- OS:squeeze/sid uname:Linux 2.6.32-5-amd64 #1 SMP Sat Oct 30 14:18:21 UTC 2010 x86_64 libc:glibc 2.11.2 NPTL 2.11.2 rlimit: STACK 8192k, CORE 0k, NPROC infinity, NOFILE 1024, AS infinity load average:0.08 0.09 0.09 CPU:total 8 (8 cores per cpu, 2 threads per core) family 6 model 30 stepping 5, cmov, cx8, fxsr, mmx, sse, sse2, sse3, ssse3, sse4.1, sse4.2, popcnt, ht Memory: 4k page, physical 8186632k(94320k free), swap 19800072k(19800072k free) vm_info: OpenJDK 64-Bit Server VM (16.0-b13) for linux-amd64 JRE (1.6.0_18-b18), built on Oct 20 2010 12:09:13 by "buildd" with gcc 4.4.5 time: Wed Nov 17 11:59:57 2010 elapsed time: 22 seconds -- Configure bugmail: http://icedtea.classpath.org/bugzilla/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are the assignee for the bug, or are watching the assignee. From bugzilla-daemon at icedtea.classpath.org Wed Nov 17 04:06:44 2010 From: bugzilla-daemon at icedtea.classpath.org (bugzilla-daemon at icedtea.classpath.org) Date: Wed, 17 Nov 2010 12:06:44 +0000 Subject: [Bug 594] OpenJDK crashes on debian sqeeze (64 bit) Message-ID: http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=594 xerxes at zafena.se changed: What |Removed |Added ---------------------------------------------------------------------------- Severity|blocker |normal ------- Comment #1 from xerxes at zafena.se 2010-11-17 12:06 ------- Hello, it would be great if you can explain all steps needed to reproduce this crash. Which java program/application and datafiles are causing this crash? Can you test again when running using the latest icedtea6 1.9.1 release? Thanks Xerxes -- Configure bugmail: http://icedtea.classpath.org/bugzilla/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are the assignee for the bug, or are watching the assignee. From bugzilla-daemon at icedtea.classpath.org Wed Nov 17 05:46:05 2010 From: bugzilla-daemon at icedtea.classpath.org (bugzilla-daemon at icedtea.classpath.org) Date: Wed, 17 Nov 2010 13:46:05 +0000 Subject: [Bug 591] Unable to build openjdk/icedtea on Slack 13.1 Message-ID: http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=591 ------- Comment #19 from gnu_andrew at member.fsf.org 2010-11-17 13:46 ------- Never seen that error before. You got to the second stage of the build so you actually should have a working copy of IcedTea in bootstrap/icedtea. For some reason, it doesn't seem to be able to build the rt.jar file using the just-built IcedTea. Could you attach a full log of the build? -- Configure bugmail: http://icedtea.classpath.org/bugzilla/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are the assignee for the bug, or are watching the assignee. From ahughes at redhat.com Wed Nov 17 05:59:39 2010 From: ahughes at redhat.com (Dr Andrew John Hughes) Date: Wed, 17 Nov 2010 13:59:39 +0000 Subject: no gcj-jdk + no ecj + building openjdk In-Reply-To: <20101117093002.GB3460@redhat.com> References: <20101117093002.GB3460@redhat.com> Message-ID: <20101117135939.GA24703@rivendell.middle-earth.co.uk> On 09:30 Wed 17 Nov , Gary Benson wrote: > Hi Ramakanth, > > It looks like you're using IcedTea, so I'm copying in distro-pkg-dev > which is the mailing list most IcedTea stuff is discussed on. > > It also looks like you're using Fedora 8, which is very old. I'm not > saying you won't be able to do a build, but you'll likely run into > problems that upgrading would solve. So unless there you have a very > compelling reason to stick on Fedora 8 I would suggest upgrading to > the latest as your first step. > > In answer to your question, ecj is the Java compiler from Eclipse, > and it's the Java compiler used by jdk-gcj-compat. You do need an > existing JDK to build OpenJDK, and jdk-gcj-compat is probably the > only free one available for Fedora 8. > > Cheers, > Gary > > Ramakanth Varala wrote: > > Hello all, > > > > Iam trying to build openjdk for my fedora plat form . > > i like to build openjdk without ecj ( i guess this is eclipse related > > and eclipse IDE is not needed ) > > ecj is a java compiler and you need a Java compiler to build IcedTea. It does come from the Eclipse IDE but you don't need any of the IDE installed to use it. It's a command-line tool. On Fedora 8, I believe you should have the option of either installing java-1.5.0-gcj (recommended) or java-1.7.0-icedtea. Using the latter will require building with the --with-openjdk flag. The simplest option, however, is probably just to upgrade to a newer version of Fedora and perform 'yum install java-1.6.0-openjdk'. > > Currently iam getting the error as below . > > > > checking for distribution package version... none > > checking build identification... Built on Fedora release 8 (Werewolf) > > (Wed Nov 17 12:03:35 IST 2010) > > checking for a GCJ JDK home directory... > > configure: error: "A GCJ JDK home directory could not be found." > > > > > > can any body help me in this. > > > > regards > > -- > http://gbenson.net/ -- Andrew :) Free Java Software Engineer Red Hat, Inc. (http://www.redhat.com) Support Free Java! Contribute to GNU Classpath and the OpenJDK http://www.gnu.org/software/classpath http://openjdk.java.net PGP Key: 94EFD9D8 (http://subkeys.pgp.net) Fingerprint = F8EF F1EA 401E 2E60 15FA 7927 142C 2591 94EF D9D8 From bugzilla-daemon at icedtea.classpath.org Wed Nov 17 06:02:43 2010 From: bugzilla-daemon at icedtea.classpath.org (bugzilla-daemon at icedtea.classpath.org) Date: Wed, 17 Nov 2010 14:02:43 +0000 Subject: [Bug 590] Unable to activate (click) checkboxes in jtable Message-ID: http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=590 ------- Comment #2 from mm at michaelamerz.com 2010-11-17 14:02 ------- Created an attachment (id=442) --> (http://icedtea.classpath.org/bugzilla/attachment.cgi?id=442&action=view) Image of list with checkbuttons This image shows the application in regard to the error. It is an applet, cells are not editable (though the error exists even if editable). Checkboxes will not activate on click. -- Configure bugmail: http://icedtea.classpath.org/bugzilla/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are the assignee for the bug, or are watching the assignee. From bugzilla-daemon at icedtea.classpath.org Wed Nov 17 06:04:54 2010 From: bugzilla-daemon at icedtea.classpath.org (bugzilla-daemon at icedtea.classpath.org) Date: Wed, 17 Nov 2010 14:04:54 +0000 Subject: [Bug 590] Unable to activate (click) checkboxes in jtable Message-ID: http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=590 ------- Comment #3 from mm at michaelamerz.com 2010-11-17 14:04 ------- (In reply to comment #1) > Sorry for the missing version. It looks like the last round of updates weren't > added. Fixed now. > > Can you please provide a reproducer for this issue? > The applet in question is currently within a proprietary development. I have a screenshot attached to visualize the problem. -- Configure bugmail: http://icedtea.classpath.org/bugzilla/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are the assignee for the bug, or are watching the assignee. From ahughes at redhat.com Wed Nov 17 06:13:16 2010 From: ahughes at redhat.com (Dr Andrew John Hughes) Date: Wed, 17 Nov 2010 14:13:16 +0000 Subject: [1.7] RFC: Allow NetX to be disabled Message-ID: <20101117141316.GD24703@rivendell.middle-earth.co.uk> And here's the patch for 1.7, the most hideous of the three: 2010-11-11 Andrew John Hughes * Makefile.am: (NETX_DIR): Define only when NetX is enabled and set to syntax for jar (like LIVECONNECT_DIR). (ICEDTEA_PATCHES): Only apply icedtea-webstart.patch, icedtea-copy-plugs.patch and icedtea-webstart-umask.patch if NetX is enabled. (ICEDTEA_ECJ_PATCHES): Drop icedtea-ant.patch, redundant. (ICEDTEA_ENV): Only add IMPORT_BINARY_PLUGS and ALT_BINARY_PLUGS_PATH if NetX is enabled. (distclean-local): Add clean-about. (.PHONY): Likewise. (icedtea): Depend on about.stamp. Add ENABLE_NETX conditional. (icedtea-debug): Likewise. (netx): Add ENABLE_NETX conditional. (netx-dist): Likewise. (extra-class-files): Likewise. (about): New target (from extra-lib/about.jar). Add ENABLE_NETX conditional. (clean-about): New target to remove about.jar. (rt-source-files): Filter out NetX sources if not building NetX. (rt-class-files): Only add NetX resources if building NetX. (rt): Replace '-C lib/rt net' with NETX_DIR so NetX sources are only included if NetX is enabled. * acinclude.m4: (IT_CHECK_OLD_PLUGIN): Remove outdated version warning about old plugin. (IT_CHECK_PLUGIN_DEPENDENCIES): Require IT_CHECK_NETX. Disable both plugins if NetX is turned off. (IT_CHECK_NETX): Add --disable-webstart option. * patches/ecj/icedtea-ant.patch: Dropped. Was wrongly applied to openjdk, not openjdk-ecj and breaks when netx is turned off. * patches/icedtea-copy-plugs.patch: Only include segments related to plug installation and apply only when building NetX. * patches/getannotation-cast.patch, * patches/snmp.patch: New patches broken out from copy-plugs.patch which are always applied. Ok to commit? -- Andrew :) Free Java Software Engineer Red Hat, Inc. (http://www.redhat.com) Support Free Java! Contribute to GNU Classpath and the OpenJDK http://www.gnu.org/software/classpath http://openjdk.java.net PGP Key: 94EFD9D8 (http://subkeys.pgp.net) Fingerprint = F8EF F1EA 401E 2E60 15FA 7927 142C 2591 94EF D9D8 -------------- next part -------------- diff -r fcc8fa217369 Makefile.am --- a/Makefile.am Mon Oct 18 12:52:22 2010 -0400 +++ b/Makefile.am Wed Nov 17 13:36:41 2010 +0000 @@ -138,6 +138,10 @@ endif endif +if ENABLE_NETX +NETX_DIR = -C lib/rt net +endif + if WITH_VISUALVM NB_PLATFORM= $(shell ls /usr/share/netbeans | grep platform | tail -n1) NB_APISUPPORT=$(shell ls /usr/share/netbeans | grep apisupport | tail -n1) @@ -272,12 +276,9 @@ patches/icedtea-lucene-crash.patch \ patches/icedtea-version.patch \ patches/icedtea-version-hotspot.patch \ - patches/icedtea-copy-plugs.patch \ patches/icedtea-text-relocations.patch \ patches/icedtea-ssl.patch \ $(PLUGIN_PATCH) \ - patches/icedtea-webstart.patch \ - patches/icedtea-webstart-umask.patch \ patches/icedtea-rmi_amd64.patch \ patches/icedtea-tools.patch \ patches/icedtea-timezone.patch \ @@ -370,7 +371,9 @@ patches/openjdk/6638712-wildcard_types.patch \ patches/openjdk/6650759-missing_inference.patch \ patches/numa_on_early_glibc.patch \ - patches/openjdk/6853592-badwindow-warning-fix.patch + patches/openjdk/6853592-badwindow-warning-fix.patch \ + patches/snmp.patch \ + patches/getannotation-cast.patch if WITH_ALT_HSBUILD ICEDTEA_PATCHES += patches/hotspot/$(HSBUILD)/openjdk-6886353-ignore_deoptimizealot.patch \ @@ -386,6 +389,13 @@ patches/hotspot/original/6539464-consistent-math.patch endif +if ENABLE_NETX +ICEDTEA_PATCHES += \ + patches/icedtea-webstart.patch \ + patches/icedtea-webstart-umask.patch \ + patches/icedtea-copy-plugs.patch +endif + if WITH_RHINO ICEDTEA_PATCHES += \ patches/icedtea-rhino.patch @@ -440,7 +450,7 @@ # Bootstrapping patches -ICEDTEA_ECJ_PATCHES = patches/ecj/icedtea-ant.patch \ +ICEDTEA_ECJ_PATCHES = \ patches/ecj/icedtea.patch \ patches/ecj/icedtea-hotspot.patch \ patches/ecj/icedtea-spp.patch \ @@ -476,7 +486,6 @@ PLUGIN_VERSION = $(ICEDTEA_NAME) $(PACKAGE_VERSION)$(ICEDTEA_REV)$(ICEDTEA_PKG) ICEDTEA_ENV = \ - IMPORT_BINARY_PLUGS=true \ ALT_JDK_IMPORT_PATH="$(ICEDTEA_BOOT_DIR)" \ ANT="$(ANT)" \ BUILD_NUMBER="$(OPENJDK_VERSION)" \ @@ -486,7 +495,6 @@ LANG="C" \ PATH="$(abs_top_builddir)/bootstrap/jdk1.6.0/bin:$(OS_PATH):$$PATH" \ ALT_BOOTDIR="$(ICEDTEA_BOOT_DIR)" \ - ALT_BINARY_PLUGS_PATH="$(abs_top_builddir)/bootstrap/jdk1.7.0" \ BUILD_ARCH_DIR="$(BUILD_ARCH_DIR)" \ ICEDTEA_RT="$(ICEDTEA_RT)" \ ICEDTEA_BUILD_DIR="$(ICEDTEA_BUILD_DIR)" \ @@ -519,6 +527,12 @@ DEBUG_CLASSFILES="true" \ DEBUG_BINARIES="true" +if ENABLE_NETX +ICEDTEA_ENV += \ + IMPORT_BINARY_PLUGS=true \ + ALT_BINARY_PLUGS_PATH="$(abs_top_builddir)/bootstrap/jdk1.7.0" +endif + if WITH_CACAO ICEDTEA_ENV += \ ALT_HOTSPOT_IMPORT_PATH="$(CACAO_IMPORT_PATH)" @@ -674,7 +688,7 @@ check-local: jtregcheck #FIXME (clean): Should become clean-local. -distclean-local: clean-copy clean-jtreg clean-jtreg-reports clean-pulse-java +distclean-local: clean-copy clean-jtreg clean-jtreg-reports clean-pulse-java clean-about rm -rf stamps rm -f rt-source-files.txt \ hotspot-tools-source-files.txt \ @@ -717,7 +731,7 @@ clean-tools-jar clean-shared-objects clean-visualvm clean-nbplatform \ clean-copy clean-hotspot-tools clean-rt $(ICEDTEAPLUGIN_CLEAN) \ $(ICEDTEANPPLUGIN_CLEAN) hotspot hotspot-helper clean-extra clean-jtreg \ - clean-jtreg-reports + clean-jtreg-reports clean-about env: @echo 'unset JAVA_HOME' @@ -1304,7 +1318,7 @@ stamps/hotspot-tools.stamp stamps/plugs.stamp \ stamps/ports.stamp stamps/patch.stamp stamps/overlay.stamp \ $(ICEDTEAPLUGIN_TARGET) \ - extra-lib/about.jar stamps/cacao.stamp stamps/visualvm.stamp \ + stamps/about.stamp stamps/cacao.stamp stamps/visualvm.stamp \ stamps/pulse-java.stamp stamps/rewrite-rhino.stamp $(ARCH_PREFIX) $(MAKE) \ $(ICEDTEA_ENV) \ @@ -1357,6 +1371,7 @@ cp -r netbeans/nbbuild/netbeans_visualvm/profiler3 \ $(BUILD_OUTPUT_DIR)/j2sdk-image/lib/visualvm endif +if ENABLE_NETX cp $(abs_top_srcdir)/rt/net/sourceforge/jnlp/resources/about.jnlp \ extra-lib/about.jar \ $(BUILD_OUTPUT_DIR)/j2re-image/lib ; \ @@ -1371,6 +1386,7 @@ cp $(NETX_SRCDIR)/javaws.1 \ $(BUILD_OUTPUT_DIR)/j2re-image/man/man1 ; \ fi +endif if ZERO_BUILD printf -- '-zero ALIASED_TO -server\n' >> $(BUILD_JRE_ARCH_DIR)/jvm.cfg endif @@ -1415,7 +1431,7 @@ stamps/hotspot-tools.stamp stamps/plugs.stamp \ stamps/ports.stamp stamps/patch.stamp stamps/overlay.stamp \ $(ICEDTEAPLUGIN_TARGET) \ - extra-lib/about.jar stamps/cacao.stamp stamps/visualvm.stamp \ + stamps/about.stamp stamps/cacao.stamp stamps/visualvm.stamp \ stamps/pulse-java.stamp stamps/rewrite-rhino.stamp $(ARCH_PREFIX) $(MAKE) \ $(ICEDTEA_ENV) \ @@ -1468,6 +1484,7 @@ cp -r netbeans/nbbuild/netbeans_visualvm/profiler3 \ $(BUILD_OUTPUT_DIR)/j2sdk-image/lib/visualvm endif +if ENABLE_NETX cp $(abs_top_srcdir)/rt/net/sourceforge/jnlp/resources/default.jnlp \ extra-lib/about.jar \ $(BUILD_OUTPUT_DIR)-debug/j2re-image/lib ; \ @@ -1482,6 +1499,7 @@ cp $(NETX_SRCDIR)/javaws.1 \ $(DEBUG_BUILD_OUTPUT_DIR)/j2re-image/man/man1 ; \ fi +endif if ZERO_BUILD printf -- '-zero ALIASED_TO -server\n' >> $(BUILD_DEBUG_JRE_ARCH_DIR)/jvm.cfg endif @@ -1685,6 +1703,7 @@ stamps/extra-class-files.stamp: extra-source-files.txt \ bootstrap/jdk1.7.0/jre/lib/rt-closed.jar +if ENABLE_NETX mkdir -p extra-lib if ! test -d $(ICEDTEA_BOOT_DIR) ; \ then \ @@ -1700,6 +1719,7 @@ fi cp -r $(abs_top_srcdir)/extra/net/sourceforge/jnlp/about/resources \ extra-lib/net/sourceforge/jnlp/about +endif mkdir -p stamps touch $@ @@ -1708,13 +1728,21 @@ rm -f stamps/extra-class-files.stamp rm -f extra-source-files.txt -extra-lib/about.jar: stamps/extra-class-files.stamp +stamps/about.stamp: stamps/extra-class-files.stamp +if ENABLE_NETX if ! test -d $(ICEDTEA_BOOT_DIR) ; \ then \ - $(JAR) cf $@ -C extra-lib net ; \ + $(JAR) cf extra-lib/about.jar -C extra-lib net ; \ else \ - $(ICEDTEA_BOOT_DIR)/bin/jar cf $@ -C extra-lib net ; \ + $(ICEDTEA_BOOT_DIR)/bin/jar cf extra-lib/about.jar -C extra-lib net ; \ fi +endif + mkdir -p stamps + touch $@ + +clean-about: + rm -f extra-lib/about.jar + rm -f stamps/about.stamp # PulseAudio based mixer # (pulse-java) @@ -2265,7 +2293,12 @@ # rt-closed.jar class files. rt-source-files.txt: stamps/replace-hotspot.stamp stamps/copy-source-files.stamp find $(abs_top_srcdir)/rt $(abs_top_builddir)/rt $(LIVECONNECT_SRCS) -name '*.java' \ - | sort -u > $@ + | sort -u > rt-source-files.tmp.txt +if ENABLE_NETX + mv rt-source-files.tmp.txt $@ +else + cat rt-source-files.tmp.txt | grep -v 'sourceforge' > $@ +endif stamps/rt-class-files.stamp: rt-source-files.txt mkdir -p lib/rt @@ -2283,8 +2316,10 @@ '$(OPENJDK_SOURCEPATH_DIRS):$(abs_top_builddir)/generated' \ -classpath \'\' -bootclasspath \'\' @$< ; \ fi +if ENABLE_NETX cp -r $(abs_top_srcdir)/rt/net/sourceforge/jnlp/resources \ lib/rt/net/sourceforge/jnlp/ +endif mkdir -p stamps touch stamps/rt-class-files.stamp @@ -2325,10 +2360,10 @@ if ! test -d $(ICEDTEA_BOOT_DIR) ; \ then \ $(JAR) cf $@ -C lib/rt com -C lib/rt java \ - -C lib/rt javax $(LIVECONNECT_DIR) -C lib/rt net -C lib/rt sun ; \ + -C lib/rt javax $(LIVECONNECT_DIR) $(NETX_DIR) -C lib/rt sun ; \ else \ $(ICEDTEA_BOOT_DIR)/bin/jar cf $@ -C lib/rt com -C lib/rt java \ - -C lib/rt javax $(LIVECONNECT_DIR) -C lib/rt net -C lib/rt sun ; \ + -C lib/rt javax $(LIVECONNECT_DIR) $(NETX_DIR) -C lib/rt sun ; \ fi if test -d bootstrap/ecj/jre/lib ; \ then \ diff -r fcc8fa217369 acinclude.m4 --- a/acinclude.m4 Mon Oct 18 12:52:22 2010 -0400 +++ b/acinclude.m4 Wed Nov 17 13:36:41 2010 +0000 @@ -1267,7 +1267,7 @@ [enable_plugin="${enableval}"], [enable_plugin="no"]) AC_MSG_RESULT(${enable_plugin}) if test "x${enable_plugin}" = "xyes"; then - AC_MSG_WARN([The old plugin is no longer maintained and will be removed in 1.7.5.]) + AC_MSG_WARN([The old plugin is no longer maintained.]) fi ]) @@ -1285,8 +1285,14 @@ [ dnl Check for plugin support headers and libraries. dnl FIXME: use unstable +AC_REQUIRE([IT_CHECK_NETX]) AC_REQUIRE([IT_CHECK_OLD_PLUGIN]) AC_REQUIRE([IT_CHECK_NEW_PLUGIN]) +if test "x${enable_netx}" = "xno" ; then + AC_MSG_WARN([Plugin can not be built without NetX; disabling plugin]) + enable_plugin=no; + enable_npplugin=no; +fi if test "x${enable_plugin}" = "xyes" -o "x${enable_npplugin}" = "xyes" ; then PKG_CHECK_MODULES(GTK, gtk+-2.0) PKG_CHECK_MODULES(GLIB, glib-2.0) @@ -1350,3 +1356,14 @@ AM_CONDITIONAL([HAS_PAX], test x"${it_cv_pax}" = "xyes") AC_PROVIDE([$0])dnl ]) + +AC_DEFUN_ONCE([IT_CHECK_NETX], +[ +AC_MSG_CHECKING([whether to build NetX]) +AC_ARG_ENABLE([webstart], + [AS_HELP_STRING([--disable-webstart], + [Disable compilation of Web Start support])], + [enable_netx="${enableval}"], [enable_netx="yes"]) +AC_MSG_RESULT(${enable_netx}) +AM_CONDITIONAL(ENABLE_NETX, test "x${enable_netx}" = "xyes") +]) diff -r fcc8fa217369 patches/ecj/icedtea-ant.patch --- a/patches/ecj/icedtea-ant.patch Mon Oct 18 12:52:22 2010 -0400 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,20 +0,0 @@ ---- iopenjdk/jaxws/make/Makefile 2007-10-12 03:52:21.000000000 -0400 -+++ openjdk/jaxws/make/Makefile 2007-11-13 11:02:07.000000000 -0500 -@@ -80,6 +80,7 @@ - endif - - ifdef ALT_BOOTDIR -+ ANT_OPTIONS += -Dplugs=$(ALT_BINARY_PLUGS_PATH) - ANT_JAVA_HOME = JAVA_HOME=$(ALT_BOOTDIR) - endif - ---- iopenjdk/jaxws/make/build.xml 2007-10-12 03:52:21.000000000 -0400 -+++ openjdk/jaxws/make/build.xml 2007-11-13 11:02:43.000000000 -0500 -@@ -109,6 +109,7 @@ - memoryMaximumSize="${javac.memoryMaximumSize}" - target="${javac.target}" - excludes="com/sun/tools/internal/txw2/**"> -+ - - - diff -r fcc8fa217369 patches/getannotation-cast.patch --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/patches/getannotation-cast.patch Wed Nov 17 13:36:41 2010 +0000 @@ -0,0 +1,24 @@ +diff -urN openjdk.orig/jdk/src/share/classes/com/sun/jmx/mbeanserver/OpenConverter.java openjdk/jdk/src/share/classes/com/sun/jmx/mbeanserver/OpenConverter.java +--- openjdk.orig/jdk/src/share/classes/com/sun/jmx/mbeanserver/OpenConverter.java 2008-08-28 04:12:12.000000000 -0400 ++++ openjdk/jdk/src/share/classes/com/sun/jmx/mbeanserver/OpenConverter.java 2008-11-05 17:18:36.000000000 -0500 +@@ -1154,7 +1154,7 @@ + Set getterIndexSets = newSet(); + for (Constructor constr : annotatedConstrList) { + String[] propertyNames = +- constr.getAnnotation(propertyNamesClass).value(); ++ ((ConstructorProperties)constr.getAnnotation(propertyNamesClass)).value(); + + Type[] paramTypes = constr.getGenericParameterTypes(); + if (paramTypes.length != propertyNames.length) { +diff -urN openjdk.orig/jdk/src/share/classes/java/beans/MetaData.java openjdk/jdk/src/share/classes/java/beans/MetaData.java +--- openjdk.orig/jdk/src/share/classes/java/beans/MetaData.java 2008-08-28 04:12:48.000000000 -0400 ++++ openjdk/jdk/src/share/classes/java/beans/MetaData.java 2008-11-05 17:18:36.000000000 -0500 +@@ -1628,7 +1628,7 @@ + } + + private static String[] getAnnotationValue(Constructor constructor) { +- ConstructorProperties annotation = constructor.getAnnotation(ConstructorProperties.class); ++ ConstructorProperties annotation = ((ConstructorProperties) constructor.getAnnotation(ConstructorProperties.class)); + return (annotation != null) + ? annotation.value() + : null; diff -r fcc8fa217369 patches/icedtea-copy-plugs.patch --- a/patches/icedtea-copy-plugs.patch Mon Oct 18 12:52:22 2010 -0400 +++ b/patches/icedtea-copy-plugs.patch Wed Nov 17 13:36:41 2010 +0000 @@ -123,40 +123,3 @@ # Binary plug start/complete messages -diff -urN openjdk.orig/jdk/src/share/classes/com/sun/jmx/mbeanserver/OpenConverter.java openjdk/jdk/src/share/classes/com/sun/jmx/mbeanserver/OpenConverter.java ---- openjdk.orig/jdk/src/share/classes/com/sun/jmx/mbeanserver/OpenConverter.java 2008-08-28 04:12:12.000000000 -0400 -+++ openjdk/jdk/src/share/classes/com/sun/jmx/mbeanserver/OpenConverter.java 2008-11-05 17:18:36.000000000 -0500 -@@ -1154,7 +1154,7 @@ - Set getterIndexSets = newSet(); - for (Constructor constr : annotatedConstrList) { - String[] propertyNames = -- constr.getAnnotation(propertyNamesClass).value(); -+ ((ConstructorProperties)constr.getAnnotation(propertyNamesClass)).value(); - - Type[] paramTypes = constr.getGenericParameterTypes(); - if (paramTypes.length != propertyNames.length) { -diff -urN openjdk.orig/jdk/src/share/classes/com/sun/jmx/snmp/SnmpPduTrap.java openjdk/jdk/src/share/classes/com/sun/jmx/snmp/SnmpPduTrap.java ---- openjdk.orig/jdk/src/share/classes/com/sun/jmx/snmp/SnmpPduTrap.java 2008-08-28 04:12:14.000000000 -0400 -+++ openjdk/jdk/src/share/classes/com/sun/jmx/snmp/SnmpPduTrap.java 2008-11-05 17:18:36.000000000 -0500 -@@ -78,6 +78,9 @@ - */ - public long timeStamp ; - -+ // TODO: IcedTea: I am a stub. -+ static public int trapAuthenticationFailure = 0; -+ - - - /** -diff -urN openjdk.orig/jdk/src/share/classes/java/beans/MetaData.java openjdk/jdk/src/share/classes/java/beans/MetaData.java ---- openjdk.orig/jdk/src/share/classes/java/beans/MetaData.java 2008-08-28 04:12:48.000000000 -0400 -+++ openjdk/jdk/src/share/classes/java/beans/MetaData.java 2008-11-05 17:18:36.000000000 -0500 -@@ -1628,7 +1628,7 @@ - } - - private static String[] getAnnotationValue(Constructor constructor) { -- ConstructorProperties annotation = constructor.getAnnotation(ConstructorProperties.class); -+ ConstructorProperties annotation = ((ConstructorProperties) constructor.getAnnotation(ConstructorProperties.class)); - return (annotation != null) - ? annotation.value() - : null; diff -r fcc8fa217369 patches/snmp.patch --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/patches/snmp.patch Wed Nov 17 13:36:41 2010 +0000 @@ -0,0 +1,13 @@ +diff -urN openjdk.orig/jdk/src/share/classes/com/sun/jmx/snmp/SnmpPduTrap.java openjdk/jdk/src/share/classes/com/sun/jmx/snmp/SnmpPduTrap.java +--- openjdk.orig/jdk/src/share/classes/com/sun/jmx/snmp/SnmpPduTrap.java 2008-08-28 04:12:14.000000000 -0400 ++++ openjdk/jdk/src/share/classes/com/sun/jmx/snmp/SnmpPduTrap.java 2008-11-05 17:18:36.000000000 -0500 +@@ -78,6 +78,9 @@ + */ + public long timeStamp ; + ++ // TODO: IcedTea: I am a stub. ++ static public int trapAuthenticationFailure = 0; ++ + + + /** From bugzilla-daemon at icedtea.classpath.org Wed Nov 17 08:29:59 2010 From: bugzilla-daemon at icedtea.classpath.org (bugzilla-daemon at icedtea.classpath.org) Date: Wed, 17 Nov 2010 16:29:59 +0000 Subject: [Bug 591] Unable to build openjdk/icedtea on Slack 13.1 Message-ID: http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=591 ------- Comment #20 from robert at linux-source.org 2010-11-17 16:29 ------- OK, now its ending in a different error: Importing classes from component CORBA_DIST ( cd /tmp/kng/icedtea6-1.9.1/openjdk.build-ecj/classes && /tmp/kng/icedtea6-1.9.1/bootstrap/jdk1.6.0/bin/jar xfv /tmp/kng/icedtea6-1.9.1/openjdk.build-ecj/corba/dist/lib/classes.jar ) jar: internal error: java.util.zip.ZipException: EOF in header at java.util.zip.ZipInputStream.readLeByte(libgcj.so.11) at java.util.zip.ZipInputStream.readLeShort(libgcj.so.11) at java.util.zip.ZipInputStream.readLeInt(libgcj.so.11) at java.util.zip.ZipInputStream.readDataDescr(libgcj.so.11) at java.util.zip.ZipInputStream.read(libgcj.so.11) at java.io.FilterInputStream.read(libgcj.so.11) at gnu.classpath.tools.jar.Extractor.copyFile(libgcj-tools.so.11) at gnu.classpath.tools.jar.Extractor.run(libgcj-tools.so.11) at gnu.classpath.tools.jar.Main.run(libgcj-tools.so.11) at gnu.classpath.tools.jar.Main.main(libgcj-tools.so.11) make[5]: *** [/tmp/kng/icedtea6-1.9.1/openjdk.build-ecj/tmp/java/components_imported] Error 1 make[5]: Leaving directory `/tmp/kng/icedtea6-1.9.1/openjdk-ecj/jdk/make/java/redist' make[4]: *** [all] Error 1 make[4]: Leaving directory `/tmp/kng/icedtea6-1.9.1/openjdk-ecj/jdk/make/java' make[3]: *** [all] Error 1 make[3]: Leaving directory `/tmp/kng/icedtea6-1.9.1/openjdk-ecj/jdk/make' make[2]: *** [jdk-build] Error 2 make[2]: Leaving directory `/tmp/kng/icedtea6-1.9.1/openjdk-ecj' make[1]: *** [build_product_image] Error 2 make[1]: Leaving directory `/tmp/kng/icedtea6-1.9.1/openjdk-ecj' make: *** [stamps/icedtea-ecj.stamp] Error 2 -- Configure bugmail: http://icedtea.classpath.org/bugzilla/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are the assignee for the bug, or are watching the assignee. From dbhole at redhat.com Wed Nov 17 11:54:26 2010 From: dbhole at redhat.com (Deepak Bhole) Date: Wed, 17 Nov 2010 14:54:26 -0500 Subject: [icedtea-web] plan for 1.0 release Message-ID: <20101117195426.GA2787@redhat.com> Hi, As the deployment properties work is wrapping up, I think it is a good time to branch and do a 1.0 release. To that end, I was thinking of the following: No more feature/re-factor patches will be accepted for 1.0 -- only bug fixes and minor niceties till branch time. Once all pending patches are approved, we will create a release branch. The only additional thing outside of bugfixes that will be allowed in this branch will be an alpha version of a Control Panel like tool that Andrew Su is working on. Given what is currently pending, I think a branch on the 22nd (Monday) would work well. We will allow until the 29th for the Control Panel to be in. If it is not in by then, it will be pushed to 1.1. Are there any comments/objections to the above? Cheers, Deepak From ahughes at redhat.com Wed Nov 17 12:02:22 2010 From: ahughes at redhat.com (Dr Andrew John Hughes) Date: Wed, 17 Nov 2010 20:02:22 +0000 Subject: [icedtea-web] plan for 1.0 release In-Reply-To: <20101117195426.GA2787@redhat.com> References: <20101117195426.GA2787@redhat.com> Message-ID: <20101117200222.GE24703@rivendell.middle-earth.co.uk> On 14:54 Wed 17 Nov , Deepak Bhole wrote: > Hi, > > As the deployment properties work is wrapping up, I think it is a good > time to branch and do a 1.0 release. To that end, I was thinking of the > following: > > No more feature/re-factor patches will be accepted for 1.0 -- only bug > fixes and minor niceties till branch time. > Two build fixes still need to go in: - Early detection of the AppletViewer patch needed by IcedTea-Web which prevents OpenJDK being used to build it. - Generation of javadoc (previously the OpenJDK build was harnessed) > Once all pending patches are approved, we will create a release branch. > The only additional thing outside of bugfixes that will be allowed in > this branch will be an alpha version of a Control Panel like tool > that Andrew Su is working on. > > Given what is currently pending, I think a branch on the 22nd (Monday) > would work well. We will allow until the 29th for the Control Panel to > be in. If it is not in by then, it will be pushed to 1.1. > > Are there any comments/objections to the above? > Let's see how things look on Friday before making a final decision. The 22nd doesn't give long (two-three working days). > Cheers, > Deepak -- Andrew :) Free Java Software Engineer Red Hat, Inc. (http://www.redhat.com) Support Free Java! Contribute to GNU Classpath and the OpenJDK http://www.gnu.org/software/classpath http://openjdk.java.net PGP Key: 94EFD9D8 (http://subkeys.pgp.net) Fingerprint = F8EF F1EA 401E 2E60 15FA 7927 142C 2591 94EF D9D8 From dbhole at redhat.com Wed Nov 17 12:11:37 2010 From: dbhole at redhat.com (Deepak Bhole) Date: Wed, 17 Nov 2010 15:11:37 -0500 Subject: [icedtea-web] plan for 1.0 release In-Reply-To: <20101117200222.GE24703@rivendell.middle-earth.co.uk> References: <20101117195426.GA2787@redhat.com> <20101117200222.GE24703@rivendell.middle-earth.co.uk> Message-ID: <20101117201137.GB2787@redhat.com> * Dr Andrew John Hughes [2010-11-17 15:02]: > On 14:54 Wed 17 Nov , Deepak Bhole wrote: > > Hi, > > > > As the deployment properties work is wrapping up, I think it is a good > > time to branch and do a 1.0 release. To that end, I was thinking of the > > following: > > > > No more feature/re-factor patches will be accepted for 1.0 -- only bug > > fixes and minor niceties till branch time. > > > > Two build fixes still need to go in: > > - Early detection of the AppletViewer patch needed by IcedTea-Web > which prevents OpenJDK being used to build it. > - Generation of javadoc (previously the OpenJDK build was harnessed) > Agreed on both counts. Both are important enough that they should go in 1.0. > > Once all pending patches are approved, we will create a release branch. > > The only additional thing outside of bugfixes that will be allowed in > > this branch will be an alpha version of a Control Panel like tool > > that Andrew Su is working on. > > > > Given what is currently pending, I think a branch on the 22nd (Monday) > > would work well. We will allow until the 29th for the Control Panel to > > be in. If it is not in by then, it will be pushed to 1.1. > > > > Are there any comments/objections to the above? > > > > Let's see how things look on Friday before making a final decision. The 22nd > doesn't give long (two-three working days). > Yes, I will definitely be pinging the list prior to branching in case anyone wants a hold on it. Cheers, Deepak > > Cheers, > > Deepak > > -- > Andrew :) > > Free Java Software Engineer > Red Hat, Inc. (http://www.redhat.com) > > Support Free Java! > Contribute to GNU Classpath and the OpenJDK > http://www.gnu.org/software/classpath > http://openjdk.java.net > PGP Key: 94EFD9D8 (http://subkeys.pgp.net) > Fingerprint = F8EF F1EA 401E 2E60 15FA 7927 142C 2591 94EF D9D8 From dbhole at redhat.com Wed Nov 17 13:24:45 2010 From: dbhole at redhat.com (Deepak Bhole) Date: Wed, 17 Nov 2010 16:24:45 -0500 Subject: [icedtea-web] RFC: integrate proxy configuration into netx/plugin In-Reply-To: <4CE16D13.7090805@redhat.com> References: <4CE16D13.7090805@redhat.com> Message-ID: <20101117212445.GA2939@redhat.com> * Omair Majid [2010-11-15 12:27]: > Hi, > ... > + > + /** > + * Returns true if the host is the hostname or the IP address of the > + * localhost > + */ > + private boolean isLocalHost(String host) { > + if (host.equals("localhost")) { > + return true; > + } > + > + if (host.equals("127.0.0.1")) { > + return true; > + } > + > + try { > + if (host.equals(InetAddress.getLocalHost().getHostName())) { > + return true; > + } > + } catch (UnknownHostException e) { > + // continue > + } > + > + try { > + if (host.equals(InetAddress.getLocalHost().getHostAddress())) { > + return true; > + } > + } catch (UnknownHostException e) { > + // continue > + } > + > + return false; > + } > + The above check will fail for something like 127.0.0.2 which is also local. Can't we use InetAddress.isLoopbackAddress() here? ... Rest looks fine to me. Cheers, Deepak From dbhole at redhat.com Wed Nov 17 13:25:29 2010 From: dbhole at redhat.com (Deepak Bhole) Date: Wed, 17 Nov 2010 16:25:29 -0500 Subject: [icedtea-web] RFC: add DownloadService2 and IntegrationService In-Reply-To: <4CE1710D.1080806@redhat.com> References: <4CE1710D.1080806@redhat.com> Message-ID: <20101117212528.GB2939@redhat.com> * Omair Majid [2010-11-15 12:57]: > Hi, > > The attached patch adds the interfaces javax.jnlp.DownloadService2 > and javax.jnlp.IntegrationService to icedtea-web. The patch does not > implement anything yet. These 2 interfaces have been part of the > JNLP API since JDK update 18 (according to the javadocs). > > Without this patch, applications that import one of these two > interfaces will throw a ClassNotFoundException. > > With this patch applied applications will be able to import the > interfaces. JNLP applications still wont be able to use the API > provided by these two services as the ServiceManager will not return > services of this type. However, it will allow the applications to > continue running. > Looks good. OK for head. Deepak > ChangeLog: > 2010-11-12 Omair Majid > > * netx/javax/jnlp/DownloadService2.java: New interface. > (ResourceSpec): New class. > (ResourceSpec.ResourceSpec): New method. > (ResourceSpec.getExpirationDate): New method. > (ResourceSpec.getLastModified): New method. > (ResourceSpec.getSize): New method. > (ResourceSpec.getType): New method. > (ResourceSpec.getUrl): New method. > (ResourceSpec.getVersion): New method. > (getCachedResources): New method. > (getUpdateAvaiableReosurces): New method. > * netx/javax/jnlp/IntegrationService.java: New interface. > (hasAssociation): New method. > (hasDesktopShortcut): New method. > (hasMenuShortcut): New method. > (removeAssociation): New method. > (removeShortcuts): New method. > (requestAssociation): New method. > (requestShortcut): New method. > > Any thoughts or comments? > > Cheers, > Omair > diff -r 44d47c366e5f netx/javax/jnlp/DownloadService2.java > --- /dev/null Thu Jan 01 00:00:00 1970 +0000 > +++ b/netx/javax/jnlp/DownloadService2.java Thu Nov 11 09:24:09 2010 -0500 > @@ -0,0 +1,57 @@ > +package javax.jnlp; > + > +public interface DownloadService2 { > + > + public static class ResourceSpec { > + > + public static final long UNKNOWN = Long.MIN_VALUE; > + > + protected String url; > + protected String version; > + protected int type; > + > + public ResourceSpec(java.lang.String url, java.lang.String version, int type) { > + this.url = url; > + this.version = version; > + this.type = type; > + } > + > + public long getExpirationDate() { > + return UNKNOWN; > + } > + > + public long getLastModified() { > + return UNKNOWN; > + } > + > + public long getSize() { > + return UNKNOWN; > + } > + > + public int getType() { > + return type; > + } > + > + public java.lang.String getUrl() { > + return url; > + } > + > + public java.lang.String getVersion() { > + return version; > + } > + } > + > + public static final int ALL = 0; > + public static final int APPLET = 2; > + public static final int APPLICATION = 1; > + public static final int CLASS = 6; > + public static final int EXTENSION = 3; > + public static final int IMAGE = 5; > + public static final int JAR = 4; > + > + public DownloadService2.ResourceSpec[] getCachedResources( > + javax.jnlp.DownloadService2.ResourceSpec resourceSpec); > + > + public DownloadService2.ResourceSpec[] getUpdateAvaiableReosurces( > + javax.jnlp.DownloadService2.ResourceSpec resourceSpec); > +} > diff -r 44d47c366e5f netx/javax/jnlp/IntegrationService.java > --- /dev/null Thu Jan 01 00:00:00 1970 +0000 > +++ b/netx/javax/jnlp/IntegrationService.java Thu Nov 11 09:24:09 2010 -0500 > @@ -0,0 +1,19 @@ > +package javax.jnlp; > + > +public interface IntegrationService { > + > + public boolean hasAssociation(java.lang.String mimeType, java.lang.String[] extensions); > + > + public boolean hasDesktopShortcut(); > + > + public boolean hasMenuShortcut(); > + > + public boolean removeAssociation(java.lang.String mimeType, java.lang.String[] extensions); > + > + public boolean removeShortcuts(); > + > + public boolean requestAssociation(java.lang.String mimeType, java.lang.String[] extensions); > + > + public boolean requestShortcut(boolean onDesktop, boolean inMenu, java.lang.String subMenu); > + > +} From dbhole at redhat.com Wed Nov 17 13:30:58 2010 From: dbhole at redhat.com (Deepak Bhole) Date: Wed, 17 Nov 2010 16:30:58 -0500 Subject: [icedtea-web] RFC: integrate logging into netx and plugin In-Reply-To: <4CDC7067.4070702@redhat.com> References: <4CDC7067.4070702@redhat.com> Message-ID: <20101117213057.GD2939@redhat.com> * Omair Majid [2010-11-11 17:39]: > Hi, > > The attached patch integrates the logging option from the deployment > configuration into netx and plugin. Both plugin and netx will now > log (if logging is enabled) their stdout/stderr to the java.stdout > and java.stderr files under the logging directory. Running the > plugin with the environment variable ICEDTEAPLUGIN_DEBUG=true will > force stdout and stderr to be redirected to the logging files. > Looks good to me! OK for head. Cheers, Deepak > ChangeLog: > 2010-11-11 Omair Majid > > * netx/net/sourceforge/jnlp/runtime/DeploymentConfiguration.java: > Add KEY_ENABLE_LOGGING. > (loadDefaultProperties): Use KEY_ENABLE_LOGGING. > * netx/net/sourceforge/jnlp/runtime/JNLPRuntime.java: Add > redirectStreams, STDERR_FILE and STDOUT_FILE. > (initialize): Call initializeStreams. > (initializeStreams): New method. Redirects or duplicates stdout and > stderr to the logging files as required. > (setRedirectStreams): New method. Sets whether stdout/stderr streams > should be redirected. > * plugin/icedteanp/java/sun/applet/PluginMain.java: > (PluginMain): Move code for creating logging files into JNLPRuntime. > Call JNLPRuntime.setRedirectStreams to redirect streams. > (TeeOutputStream): Move to its own class. > * netx/net/sourceforge/jnlp/util/TeeOutputStream.java: Moved from > PluginMain into this new class. > > Any thoughts or comments? > > Cheers, > Omair > diff -r e82455c47f08 netx/net/sourceforge/jnlp/runtime/DeploymentConfiguration.java > --- a/netx/net/sourceforge/jnlp/runtime/DeploymentConfiguration.java Thu Nov 11 11:43:13 2010 -0500 > +++ b/netx/net/sourceforge/jnlp/runtime/DeploymentConfiguration.java Thu Nov 11 17:37:43 2010 -0500 > @@ -154,6 +154,8 @@ > public static final String KEY_SYSTEM_TRUSTED_JSSE_CERTS = "deployment.system.security.trusted.jssecerts"; > public static final String KEY_SYSTEM_TRUSTED_CLIENT_CERTS = "deployment.system.security.trusted.clientautcerts"; > > + public static final String KEY_ENABLE_LOGGING = "deployment.log"; > + > public static final String KEY_CREATE_DESKTOP_SHORTCUT = "deployment.javaws.shortcut"; > > public static final String KEY_BROWSER_PATH = "deployment.browser.path"; > @@ -375,7 +377,7 @@ > { "deployment.console.startup.mode", CONSOLE_HIDE }, > /* tracing and logging */ > { "deployment.trace", String.valueOf(false) }, > - { "deployment.log", String.valueOf(false) }, > + { KEY_ENABLE_LOGGING, String.valueOf(false) }, > /* JNLP association */ > { "deployment.javaws.associations", String.valueOf(JNLP_ASSOCIATION_ASK_USER) }, > /* desktop integration */ > diff -r e82455c47f08 netx/net/sourceforge/jnlp/runtime/JNLPRuntime.java > --- a/netx/net/sourceforge/jnlp/runtime/JNLPRuntime.java Thu Nov 11 11:43:13 2010 -0500 > +++ b/netx/net/sourceforge/jnlp/runtime/JNLPRuntime.java Thu Nov 11 17:37:43 2010 -0500 > @@ -107,6 +107,9 @@ > /** whether debug mode is on */ > private static boolean debug = false; // package access by Boot > > + /** whether streams should be redirected */ > + private static boolean redirectStreams = false; > + > /** mutex to wait on, for initialization */ > public static Object initMutex = new Object(); > > @@ -119,6 +122,9 @@ > /** contains the arguments passed to the jnlp runtime */ > private static List initialArguments; > > + public static final String STDERR_FILE = "java.stderr"; > + public static final String STDOUT_FILE = "java.stdout"; > + > /** Username */ > public static final String USER = System.getProperty("user.name"); > > @@ -183,6 +189,8 @@ > } > } > > + initializeStreams(); > + > isWebstartApplication = isApplication; > > //Setting the system property for javawebstart's version. > @@ -281,6 +289,34 @@ > } > > /** > + * Initializes the standard output and error streams, redirecting them or > + * duplicating them as required. > + */ > + private static void initializeStreams() { > + Boolean enableLogging = Boolean.valueOf(config > + .getProperty(DeploymentConfiguration.KEY_ENABLE_LOGGING)); > + if (redirectStreams || enableLogging) { > + String logDir = config.getProperty(DeploymentConfiguration.KEY_USER_LOG_DIR); > + File errFile = new File(logDir, JNLPRuntime.STDERR_FILE); > + errFile.getParentFile().mkdirs(); > + File outFile = new File(logDir, JNLPRuntime.STDOUT_FILE); > + outFile.getParentFile().mkdirs(); > + > + try { > + if (redirectStreams) { > + System.setErr(new PrintStream(new FileOutputStream(errFile))); > + System.setOut(new PrintStream(new FileOutputStream(outFile))); > + } else { > + System.setErr(new TeeOutputStream(new FileOutputStream(errFile), System.err)); > + System.setOut(new TeeOutputStream(new FileOutputStream(outFile), System.out)); > + } > + } catch (Exception e) { > + e.printStackTrace(); > + } > + } > + } > + > + /** > * Gets the Configuration associated with this runtime > * @return a {@link DeploymentConfiguration} object that can be queried to > * find relevant configuration settings > @@ -490,6 +526,17 @@ > } > > /** > + * Sets whether the standard output/error streams should be redirected to > + * the loggging files. > + * > + * @throws IllegalStateException if the runtime has already been initialized > + */ > + public static void setRedirectStreams(boolean redirect) { > + checkInitialized(); > + redirectStreams = redirect; > + } > + > + /** > * Sets the default update policy. > * > * @throws IllegalStateException if caller is not the exit class > diff -r e82455c47f08 netx/net/sourceforge/jnlp/util/TeeOutputStream.java > --- /dev/null Thu Jan 01 00:00:00 1970 +0000 > +++ b/netx/net/sourceforge/jnlp/util/TeeOutputStream.java Thu Nov 11 17:37:43 2010 -0500 > @@ -0,0 +1,95 @@ > +/* TeeOutputStream.java > + Copyright (C) 2010 Red Hat > + > +This file is part of IcedTea. > + > +IcedTea is free software; you can redistribute it and/or modify > +it under the terms of the GNU General Public License as published by > +the Free Software Foundation; either version 2, or (at your option) > +any later version. > + > +IcedTea is distributed in the hope that it will be useful, but > +WITHOUT ANY WARRANTY; without even the implied warranty of > +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU > +General Public License for more details. > + > +You should have received a copy of the GNU General Public License > +along with IcedTea; see the file COPYING. If not, write to the > +Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA > +02110-1301 USA. > + > +Linking this library statically or dynamically with other modules is > +making a combined work based on this library. Thus, the terms and > +conditions of the GNU General Public License cover the whole > +combination. > + > +As a special exception, the copyright holders of this library give you > +permission to link this library with independent modules to produce an > +executable, regardless of the license terms of these independent > +modules, and to copy and distribute the resulting executable under > +terms of your choice, provided that you also meet, for each linked > +independent module, the terms and conditions of the license of that > +module. An independent module is a module which is not derived from > +or based on this library. If you modify this library, you may extend > +this exception to your version of the library, but you are not > +obligated to do so. If you do not wish to do so, delete this > +exception statement from your version. */ > + > +package net.sourceforge.jnlp.util; > + > +import java.io.FileOutputStream; > +import java.io.PrintStream; > + > +/** > + * Behaves like the 'tee' command, sends output to both actual std stream and a > + * file > + */ > +public final class TeeOutputStream extends PrintStream { > + > + // Everthing written to TeeOutputStream is written to this file > + PrintStream logFile; > + > + public TeeOutputStream(FileOutputStream fileOutputStream, > + PrintStream stdStream) { > + super(stdStream); > + logFile = new PrintStream(fileOutputStream); > + } > + > + @Override > + public boolean checkError() { > + boolean thisError = super.checkError(); > + boolean fileError = logFile.checkError(); > + > + return thisError || fileError; > + } > + > + @Override > + public void close() { > + logFile.close(); > + super.close(); > + } > + > + @Override > + public void flush() { > + logFile.flush(); > + super.flush(); > + } > + > + /* > + * The big ones: these do the actual writing > + */ > + > + @Override > + public void write(byte[] buf, int off, int len) { > + logFile.write(buf, off, len); > + > + super.write(buf, off, len); > + } > + > + @Override > + public void write(int b) { > + logFile.write(b); > + > + super.write(b); > + } > +} > diff -r e82455c47f08 plugin/icedteanp/java/sun/applet/PluginMain.java > --- a/plugin/icedteanp/java/sun/applet/PluginMain.java Thu Nov 11 11:43:13 2010 -0500 > +++ b/plugin/icedteanp/java/sun/applet/PluginMain.java Thu Nov 11 17:37:43 2010 -0500 > @@ -121,25 +121,14 @@ > > connect(inPipe, outPipe); > > + // must be called before JNLPRuntime.initialize() > + JNLPRuntime.setRedirectStreams(redirectStreams); > + > securityContext = new PluginAppletSecurityContext(0); > securityContext.prePopulateLCClasses(); > securityContext.setStreamhandler(streamHandler); > AppletSecurityContextManager.addContext(0, securityContext); > > - String logDir = JNLPRuntime.getConfiguration().getProperty(DeploymentConfiguration.KEY_USER_LOG_DIR); > - try { > - File errFile = new File(logDir, PLUGIN_STDERR_FILE); > - errFile.getParentFile().mkdirs(); > - File outFile = new File(logDir, PLUGIN_STDOUT_FILE); > - outFile.getParentFile().mkdirs(); > - > - System.setErr(new TeeOutputStream(new FileOutputStream(errFile), System.err)); > - System.setOut(new TeeOutputStream(new FileOutputStream(outFile), System.out)); > - } catch (Exception e) { > - PluginDebug.debug("Unable to redirect streams"); > - e.printStackTrace(); > - } > - > PluginAppletViewer.setStreamhandler(streamHandler); > PluginAppletViewer.setPluginCallRequestFactory(new PluginCallRequestFactory()); > > @@ -244,61 +233,5 @@ > return auth; > } > } > - > - /** > - * Behaves like the 'tee' command, sends output to both actual std stream and a > - * file > - */ > - class TeeOutputStream extends PrintStream { > - > - // Everthing written to TeeOutputStream is written to this file > - PrintStream logFile; > - > - public TeeOutputStream(FileOutputStream fileOutputStream, > - PrintStream stdStream) { > - super(stdStream); > - logFile = new PrintStream(fileOutputStream); > - } > - > - @Override > - public boolean checkError() { > - boolean thisError = super.checkError(); > - boolean fileError = logFile.checkError(); > - > - return thisError || fileError; > - } > - > - @Override > - public void close() { > - logFile.close(); > - super.close(); > - } > - > - @Override > - public void flush() { > - logFile.flush(); > - super.flush(); > - } > - > - /* > - * The big ones: these do the actual writing > - */ > - > - @Override > - public void write(byte[] buf, int off, int len) { > - logFile.write(buf, off, len); > - > - if (!redirectStreams) > - super.write(buf, off, len); > - } > - > - @Override > - public void write(int b) { > - logFile.write(b); > - > - if (!redirectStreams) > - super.write(b); > - } > - } > > } From dbhole at redhat.com Wed Nov 17 13:32:25 2010 From: dbhole at redhat.com (Deepak Bhole) Date: Wed, 17 Nov 2010 16:32:25 -0500 Subject: [icedtea-web] RFC: add configuration support for user prompts (and other access control options) In-Reply-To: <4CDB21DF.5030805@redhat.com> References: <4CD4355C.6050000@redhat.com> <20101110210220.GB8213@redhat.com> <4CDB21DF.5030805@redhat.com> Message-ID: <20101117213224.GE2939@redhat.com> * Omair Majid [2010-11-10 17:51]: > Hi Deepak, > > Thanks for reviewing the patch. I have attached an updated version. > Hi Omair. Looks good. Okay for head! Thanks, Deepak > On 11/10/2010 04:02 PM, Deepak Bhole wrote: > >* Omair Majid [2010-11-05 15:14]: > >>Hi, > >> > >>The attached patch adds support in netx for part of the 'security > >>access and control' set of configuration options. The patch allows > >>disabling user prompts for security warnings and denying > >>permissions, as well as not installing custom authenticator and not > >>granting permissions to hide window warnings. > >> > >>ChangeLog > >>2010-11-05 Omair Majid > >> > >> * netx/net/sourceforge/jnlp/SecurityDesc.java: Remove window banner > >> permissions from sandboxPermissions and j2eePermissions. > >> (getSandBoxPermissions): Dynamically add window banner permissions > >> if allowed by configuration. > >> * netx/net/sourceforge/jnlp/runtime/DeploymentConfiguration.java: > >> Add KEY_SECURITY_PROMPT_USER, > >> KEY_SECURITY_ALLOW_HIDE_WINDOW_WARNING, > >> KEY_SECURITY_PROMPT_USER_FOR_JNLP, and > >> KEY_SECURITY_INSTALL_AUTHENTICATOR. > >> (loadDefaultProperties): Use the new constants. > >> * netx/net/sourceforge/jnlp/security/SecurityWarning.java > >> (showAccessWarningDialog): Check if the user should be prompted > >> before prompting the user. > >> (showNotAllSignedWarningDialog): Likewise. > >> (showCertWarningDialog): Likewise. > >> (showAppletWarning): Likewise. > >> (shouldPromptUser): New method. Check if configuration allows > >> showing user prompts. > >> * netx/net/sourceforge/jnlp/services/ServiceUtil.java > >> (checkAccess(AccessType,Object...)): Clarify javadocs. > >> (checkAccess(ApplicationInstance,AccessType,Object...)): Clarify > >> javadocs. Only prompt the user if showing JNLP prompts is ok. > >> (shouldPromptUser): New method. Returns true if configuration allows > >> for showing JNLP api prompts. > >> * plugin/icedteanp/java/sun/applet/PluginMain.java > >> (init): Only install custom authenticator if allowed by > >> configuration. > >> > >>Any thoughts or comments? > >> > >>Thanks, > >>Omair > > > >>diff -r 8e66d9386273 netx/net/sourceforge/jnlp/SecurityDesc.java > >>--- a/netx/net/sourceforge/jnlp/SecurityDesc.java Thu Nov 04 16:44:27 2010 -0700 > >>+++ b/netx/net/sourceforge/jnlp/SecurityDesc.java Fri Nov 05 12:23:29 2010 -0400 > >>@@ -23,6 +23,9 @@ > >> import java.security.*; > >> import java.awt.AWTPermission; > >> > >>+import net.sourceforge.jnlp.runtime.DeploymentConfiguration; > >>+import net.sourceforge.jnlp.runtime.JNLPRuntime; > >>+ > >> /** > >> * The security element. > >> * > >>@@ -67,7 +70,6 @@ > >> // queues, or even prevent access to security dialog queues. > >> // > >> // new AWTPermission("accessEventQueue"), > >>- new AWTPermission("showWindowWithoutWarningBanner"), > >> new RuntimePermission("exitVM"), > >> new RuntimePermission("loadLibrary"), > >> new RuntimePermission("queuePrintJob"), > >>@@ -105,7 +107,6 @@ > >> new PropertyPermission("javaws.*", "read,write"), > >> new RuntimePermission("exitVM"), > >> new RuntimePermission("stopThread"), > >>- new AWTPermission("showWindowWithoutWarningBanner"), > >> // disabled because we can't at this time prevent an > >> // application from accessing other applications' event > >> // queues, or even prevent access to security dialog queues. > >>@@ -187,6 +188,11 @@ > >> for (int i=0; i< sandboxPermissions.length; i++) > >> permissions.add(sandboxPermissions[i]); > >> > >>+ String key = DeploymentConfiguration.KEY_SECURITY_ALLOW_HIDE_WINDOW_WARNING; > >>+ if (Boolean.valueOf(JNLPRuntime.getConfiguration().getProperty(key)) == Boolean.TRUE) { > >>+ permissions.add(new AWTPermission("showWindowWithoutWarningBanner")); > >>+ } > >>+ > >> if (file.isApplication()) > >> for (int i=0; i< jnlpRIAPermissions.length; i++) > >> permissions.add(jnlpRIAPermissions[i]); > >>diff -r 8e66d9386273 netx/net/sourceforge/jnlp/runtime/DeploymentConfiguration.java > >>--- a/netx/net/sourceforge/jnlp/runtime/DeploymentConfiguration.java Thu Nov 04 16:44:27 2010 -0700 > >>+++ b/netx/net/sourceforge/jnlp/runtime/DeploymentConfiguration.java Fri Nov 05 12:23:29 2010 -0400 > >>@@ -17,6 +17,7 @@ > >> > >> package net.sourceforge.jnlp.runtime; > >> > >>+import java.awt.AWTPermission; > >> import java.io.BufferedOutputStream; > >> import java.io.BufferedReader; > >> import java.io.File; > >>@@ -142,6 +143,15 @@ > >> */ > >> public static final String KEY_USER_NETX_RUNNING_FILE = "deployment.user.runningfile"; > >> > >>+ /** Boolean. Only show security prompts to user if true */ > >>+ public static final String KEY_SECURITY_PROMPT_USER = "deployment.security.askgrantdialog.show"; > >>+ /** Boolean. Only give AWTPermission("showWindowWithoutWarningBanner") if true */ > >>+ public static final String KEY_SECURITY_ALLOW_HIDE_WINDOW_WARNING = "deployment.security.sandbox.awtwarningwindow"; > >>+ /** Boolean. Only prompt user for granting any JNLP permissions if true */ > >>+ public static final String KEY_SECURITY_PROMPT_USER_FOR_JNLP = "deployment.security.sandbox.jnlp.enhanced"; > >>+ /** Boolean. Only install the custom authenticator if true */ > >>+ public static final String KEY_SECURITY_INSTALL_AUTHENTICATOR = "deployment.security.authenticator"; > >>+ > > > >Minor nitpick.. can you please add spaces between each of the > >common/decl. combo above? Would make it a bit easier to read in viewers > >that don't highlight.. > > > > Sure. Does the code in the updated patch look ok? > > >> public enum ConfigType { > >> System, User > >> } > >>@@ -327,15 +337,15 @@ > >> { "deployment.system.security.trusted.jssecerts", SYSTEM_SECURITY + File.separator + "trusted.jssecerts" }, > >> { "deployment.system.security.trusted.clientautcerts", SYSTEM_SECURITY + File.separator + "trusted.clientcerts" }, > >> /* security access and control */ > >>- { "deployment.security.askgrantdialog.show", String.valueOf(true) }, > >>+ { KEY_SECURITY_PROMPT_USER, String.valueOf(true) }, > >> { "deployment.security.askgrantdialog.notinca", String.valueOf(true) }, > >> { "deployment.security.notinca.warning", String.valueOf(true) }, > >> { "deployment.security.expired.warning", String.valueOf(true) }, > >> { "deployment.security.jsse.hostmismatch.warning", String.valueOf(true) }, > >> { "deployment.security.trusted.policy", null }, > >>- { "deployment.security.sandbox.awtwarningwindow", String.valueOf(true) }, > >>- { "deployment.security.sandbox.jnlp.enhanced", String.valueOf(true) }, > >>- { "deployment.security.authenticator", String.valueOf(true) }, > >>+ { KEY_SECURITY_ALLOW_HIDE_WINDOW_WARNING, String.valueOf(true) }, > >>+ { KEY_SECURITY_PROMPT_USER_FOR_JNLP, String.valueOf(true) }, > >>+ { KEY_SECURITY_INSTALL_AUTHENTICATOR, String.valueOf(true) }, > >> /* networking */ > >> { "deployment.proxy.type", String.valueOf(PROXY_TYPE_BROWSER) }, > >> { "deployment.proxy.same", String.valueOf(false) }, > >>diff -r 8e66d9386273 netx/net/sourceforge/jnlp/security/SecurityWarning.java > >>--- a/netx/net/sourceforge/jnlp/security/SecurityWarning.java Thu Nov 04 16:44:27 2010 -0700 > >>+++ b/netx/net/sourceforge/jnlp/security/SecurityWarning.java Fri Nov 05 12:23:29 2010 -0400 > >>@@ -49,6 +49,7 @@ > >> import javax.swing.SwingUtilities; > >> > >> import net.sourceforge.jnlp.JNLPFile; > >>+import net.sourceforge.jnlp.runtime.DeploymentConfiguration; > >> import net.sourceforge.jnlp.runtime.JNLPRuntime; > >> > >> /** > >>@@ -111,6 +112,11 @@ > >> */ > >> public static boolean showAccessWarningDialog(final AccessType accessType, > >> final JNLPFile file, final Object[] extras) { > >>+ > >>+ if (!shouldPromptUser()) { > >>+ return false; > >>+ } > >>+ > >> final SecurityDialogMessage message = new SecurityDialogMessage(); > >> > >> message.dialogType = DialogType.ACCESS_WARNING; > >>@@ -140,6 +146,10 @@ > >> */ > >> public static boolean showNotAllSignedWarningDialog(JNLPFile file) { > >> > >>+ if (!shouldPromptUser()) { > >>+ return false; > >>+ } > >>+ > >> final SecurityDialogMessage message = new SecurityDialogMessage(); > >> message.dialogType = DialogType.NOTALLSIGNED_WARNING; > >> message.accessType = AccessType.NOTALLSIGNED; > >>@@ -174,6 +184,10 @@ > >> public static boolean showCertWarningDialog(AccessType accessType, > >> JNLPFile file, CertVerifier jarSigner) { > >> > >>+ if (!shouldPromptUser()) { > >>+ return false; > >>+ } > >>+ > >> final SecurityDialogMessage message = new SecurityDialogMessage(); > >> message.dialogType = DialogType.CERT_WARNING; > >> message.accessType = accessType; > >>@@ -200,6 +214,10 @@ > >> */ > >> public static int showAppletWarning() { > >> > >>+ if (!shouldPromptUser()) { > >>+ return 2; > >>+ } > >>+ > > > >That seems like a magic number.. what does 2 represent? > > > > Yes, it does seems like a magic number. showAppletWarning returns an > integer; the comment just above the return block describes it: > // result 0 = Yes, 1 = No, 2 = Cancel > And the method itself returns 2 if selected value is not set. That > said, this method is currently unused. I dont know of any place in > Netx or the plugin that calls this method. In fact, I would like to > remove it at some point (see the FIXME in the javadoc for this > method). > > >> SecurityDialogMessage message = new SecurityDialogMessage(); > >> message.dialogType = DialogType.APPLET_WARNING; > >> > >>@@ -295,4 +313,18 @@ > >> return message.userResponse; > >> } > >> > >>+ /** > >>+ * Returns whether the current runtime configuration allows prompting user > >>+ * for security warnings. > >>+ * > >>+ * @return true if security warnings should be shown to the user. > >>+ */ > >>+ private static boolean shouldPromptUser() { > >>+ boolean allowed = Boolean.valueOf(JNLPRuntime.getConfiguration() > >>+ .getProperty(DeploymentConfiguration.KEY_SECURITY_PROMPT_USER)); > >>+ > >>+ return allowed; > >>+ > >>+ } > >>+ > > > >You can just return Boolean.valueOf(...) instead of creating an > >additional var and returning that. > > > > Done. I had some code to print debugging messages between "allowed = > ..." and "return allowed;" lines which I eventually removed. The > result is the strange-looking code above. Fixed in the updated > patch. > > >> } > >>diff -r 8e66d9386273 netx/net/sourceforge/jnlp/services/ServiceUtil.java > >>--- a/netx/net/sourceforge/jnlp/services/ServiceUtil.java Thu Nov 04 16:44:27 2010 -0700 > >>+++ b/netx/net/sourceforge/jnlp/services/ServiceUtil.java Fri Nov 05 12:23:29 2010 -0400 > >>@@ -39,6 +39,7 @@ > >> > >> import net.sourceforge.jnlp.JNLPFile; > >> import net.sourceforge.jnlp.runtime.ApplicationInstance; > >>+import net.sourceforge.jnlp.runtime.DeploymentConfiguration; > >> import net.sourceforge.jnlp.runtime.JNLPRuntime; > >> import net.sourceforge.jnlp.security.SecurityWarning; > >> import net.sourceforge.jnlp.security.SecurityWarning.AccessType; > >>@@ -208,9 +209,10 @@ > >> }; > >> > >> /** > >>- * Returns whether the app requesting a service is signed. If the app is > >>- * unsigned, the user is prompted with a dialog asking if the action > >>- * should be allowed. > >>+ * Returns whether the app requesting a JNLP service has the right permissions. > >>+ * If it doesn't, user is prompted for permissions. This method should only be > >>+ * used for JNLP API related permissions. > >>+ * > >> * @param type the type of access being requested > >> * @param extras extra Strings (usually) that are passed to the dialog for > >> * message formatting. > >>@@ -221,8 +223,9 @@ > >> } > >> > >> /** > >>- * Returns whether the app requesting a service has the right permissions. > >>- * If it doesn't, user is prompted for permissions. > >>+ * Returns whether the app requesting a JNLP service has the right permissions. > >>+ * If it doesn't, user is prompted for permissions. This method should only be > >>+ * used for JNLP API related permissions. > >> * > >> * @param app the application which is requesting the check. If null, the current > >> * application is used. > >>@@ -265,6 +268,11 @@ > >> } > >> > >> if (!codeTrusted) { > >>+ > >>+ if (!shouldPromptUser()) { > >>+ return false; > >>+ } > >>+ > >> final AccessType tmpType = type; > >> final Object[] tmpExtras = extras; > >> final ApplicationInstance tmpApp = app; > >>@@ -285,4 +293,17 @@ > >> > >> return true; //allow > >> } > >>+ > >>+ /** > >>+ * Returns whether the current runtime configuration allows prompting the > >>+ * user for JNLP permissions. > >>+ * > >>+ * @return true if the user should be prompted for JNLP API related permissions. > >>+ */ > >>+ private static boolean shouldPromptUser() { > >>+ boolean allowed = Boolean.valueOf(JNLPRuntime.getConfiguration() > >>+ .getProperty(DeploymentConfiguration.KEY_SECURITY_PROMPT_USER_FOR_JNLP)); > >>+ return allowed; > >>+ } > >>+ > >> } > > > >Same as above.. no need for the 'allowed' var. > > > > Fixed. > > >>diff -r 8e66d9386273 plugin/icedteanp/java/sun/applet/PluginMain.java > >>--- a/plugin/icedteanp/java/sun/applet/PluginMain.java Thu Nov 04 16:44:27 2010 -0700 > >>+++ b/plugin/icedteanp/java/sun/applet/PluginMain.java Fri Nov 05 12:23:29 2010 -0400 > >>@@ -230,7 +230,11 @@ > >> } > >> > >> // plug in a custom authenticator and proxy selector > >>- Authenticator.setDefault(new CustomAuthenticator()); > >>+ boolean installAuthenticator = Boolean.valueOf(JNLPRuntime.getConfiguration() > >>+ .getProperty(DeploymentConfiguration.KEY_SECURITY_INSTALL_AUTHENTICATOR)); > >>+ if (installAuthenticator) { > >>+ Authenticator.setDefault(new CustomAuthenticator()); > >>+ } > >> ProxySelector.setDefault(new PluginProxySelector()); > >> > >> CookieManager ckManager = new PluginCookieManager(); > > > >Rest looks fine to me! > > > > Thanks for the review! Ok to commit the updated patch? > > Cheers, > Omair > > diff -r 44d47c366e5f netx/net/sourceforge/jnlp/SecurityDesc.java > --- a/netx/net/sourceforge/jnlp/SecurityDesc.java Wed Nov 10 16:24:53 2010 -0500 > +++ b/netx/net/sourceforge/jnlp/SecurityDesc.java Wed Nov 10 17:39:27 2010 -0500 > @@ -23,6 +23,9 @@ > import java.security.*; > import java.awt.AWTPermission; > > +import net.sourceforge.jnlp.runtime.DeploymentConfiguration; > +import net.sourceforge.jnlp.runtime.JNLPRuntime; > + > /** > * The security element. > * > @@ -67,7 +70,6 @@ > // queues, or even prevent access to security dialog queues. > // > // new AWTPermission("accessEventQueue"), > - new AWTPermission("showWindowWithoutWarningBanner"), > new RuntimePermission("exitVM"), > new RuntimePermission("loadLibrary"), > new RuntimePermission("queuePrintJob"), > @@ -105,7 +107,6 @@ > new PropertyPermission("javaws.*", "read,write"), > new RuntimePermission("exitVM"), > new RuntimePermission("stopThread"), > - new AWTPermission("showWindowWithoutWarningBanner"), > // disabled because we can't at this time prevent an > // application from accessing other applications' event > // queues, or even prevent access to security dialog queues. > @@ -187,6 +188,11 @@ > for (int i=0; i < sandboxPermissions.length; i++) > permissions.add(sandboxPermissions[i]); > > + String key = DeploymentConfiguration.KEY_SECURITY_ALLOW_HIDE_WINDOW_WARNING; > + if (Boolean.valueOf(JNLPRuntime.getConfiguration().getProperty(key)) == Boolean.TRUE) { > + permissions.add(new AWTPermission("showWindowWithoutWarningBanner")); > + } > + > if (file.isApplication()) > for (int i=0; i < jnlpRIAPermissions.length; i++) > permissions.add(jnlpRIAPermissions[i]); > diff -r 44d47c366e5f netx/net/sourceforge/jnlp/runtime/DeploymentConfiguration.java > --- a/netx/net/sourceforge/jnlp/runtime/DeploymentConfiguration.java Wed Nov 10 16:24:53 2010 -0500 > +++ b/netx/net/sourceforge/jnlp/runtime/DeploymentConfiguration.java Wed Nov 10 17:39:27 2010 -0500 > @@ -17,6 +17,7 @@ > > package net.sourceforge.jnlp.runtime; > > +import java.awt.AWTPermission; > import java.io.BufferedOutputStream; > import java.io.BufferedReader; > import java.io.File; > @@ -154,6 +155,26 @@ > public static final String KEY_SYSTEM_TRUSTED_JSSE_CERTS = "deployment.system.security.trusted.jssecerts"; > public static final String KEY_SYSTEM_TRUSTED_CLIENT_CERTS = "deployment.system.security.trusted.clientautcerts"; > > + /* > + * Security and access control > + */ > + > + /** Boolean. Only show security prompts to user if true */ > + public static final String KEY_SECURITY_PROMPT_USER = "deployment.security.askgrantdialog.show"; > + > + /** Boolean. Only give AWTPermission("showWindowWithoutWarningBanner") if true */ > + public static final String KEY_SECURITY_ALLOW_HIDE_WINDOW_WARNING = "deployment.security.sandbox.awtwarningwindow"; > + > + /** Boolean. Only prompt user for granting any JNLP permissions if true */ > + public static final String KEY_SECURITY_PROMPT_USER_FOR_JNLP = "deployment.security.sandbox.jnlp.enhanced"; > + > + /** Boolean. Only install the custom authenticator if true */ > + public static final String KEY_SECURITY_INSTALL_AUTHENTICATOR = "deployment.security.authenticator"; > + > + /* > + * Desktop Integration > + */ > + > public static final String KEY_CREATE_DESKTOP_SHORTCUT = "deployment.javaws.shortcut"; > > public static final String KEY_BROWSER_PATH = "deployment.browser.path"; > @@ -343,15 +364,15 @@ > { KEY_SYSTEM_TRUSTED_JSSE_CERTS, SYSTEM_SECURITY + File.separator + "trusted.jssecerts" }, > { KEY_SYSTEM_TRUSTED_CLIENT_CERTS, SYSTEM_SECURITY + File.separator + "trusted.clientcerts" }, > /* security access and control */ > - { "deployment.security.askgrantdialog.show", String.valueOf(true) }, > + { KEY_SECURITY_PROMPT_USER, String.valueOf(true) }, > { "deployment.security.askgrantdialog.notinca", String.valueOf(true) }, > { "deployment.security.notinca.warning", String.valueOf(true) }, > { "deployment.security.expired.warning", String.valueOf(true) }, > { "deployment.security.jsse.hostmismatch.warning", String.valueOf(true) }, > { "deployment.security.trusted.policy", null }, > - { "deployment.security.sandbox.awtwarningwindow", String.valueOf(true) }, > - { "deployment.security.sandbox.jnlp.enhanced", String.valueOf(true) }, > - { "deployment.security.authenticator", String.valueOf(true) }, > + { KEY_SECURITY_ALLOW_HIDE_WINDOW_WARNING, String.valueOf(true) }, > + { KEY_SECURITY_PROMPT_USER_FOR_JNLP, String.valueOf(true) }, > + { KEY_SECURITY_INSTALL_AUTHENTICATOR, String.valueOf(true) }, > /* networking */ > { "deployment.proxy.type", String.valueOf(PROXY_TYPE_BROWSER) }, > { "deployment.proxy.same", String.valueOf(false) }, > diff -r 44d47c366e5f netx/net/sourceforge/jnlp/security/SecurityWarning.java > --- a/netx/net/sourceforge/jnlp/security/SecurityWarning.java Wed Nov 10 16:24:53 2010 -0500 > +++ b/netx/net/sourceforge/jnlp/security/SecurityWarning.java Wed Nov 10 17:39:27 2010 -0500 > @@ -49,6 +49,7 @@ > import javax.swing.SwingUtilities; > > import net.sourceforge.jnlp.JNLPFile; > +import net.sourceforge.jnlp.runtime.DeploymentConfiguration; > import net.sourceforge.jnlp.runtime.JNLPRuntime; > > /** > @@ -111,6 +112,11 @@ > */ > public static boolean showAccessWarningDialog(final AccessType accessType, > final JNLPFile file, final Object[] extras) { > + > + if (!shouldPromptUser()) { > + return false; > + } > + > final SecurityDialogMessage message = new SecurityDialogMessage(); > > message.dialogType = DialogType.ACCESS_WARNING; > @@ -140,6 +146,10 @@ > */ > public static boolean showNotAllSignedWarningDialog(JNLPFile file) { > > + if (!shouldPromptUser()) { > + return false; > + } > + > final SecurityDialogMessage message = new SecurityDialogMessage(); > message.dialogType = DialogType.NOTALLSIGNED_WARNING; > message.accessType = AccessType.NOTALLSIGNED; > @@ -174,6 +184,10 @@ > public static boolean showCertWarningDialog(AccessType accessType, > JNLPFile file, CertVerifier jarSigner) { > > + if (!shouldPromptUser()) { > + return false; > + } > + > final SecurityDialogMessage message = new SecurityDialogMessage(); > message.dialogType = DialogType.CERT_WARNING; > message.accessType = accessType; > @@ -200,6 +214,10 @@ > */ > public static int showAppletWarning() { > > + if (!shouldPromptUser()) { > + return 2; > + } > + > SecurityDialogMessage message = new SecurityDialogMessage(); > message.dialogType = DialogType.APPLET_WARNING; > > @@ -295,4 +313,15 @@ > return message.userResponse; > } > > + /** > + * Returns whether the current runtime configuration allows prompting user > + * for security warnings. > + * > + * @return true if security warnings should be shown to the user. > + */ > + private static boolean shouldPromptUser() { > + return Boolean.valueOf(JNLPRuntime.getConfiguration() > + .getProperty(DeploymentConfiguration.KEY_SECURITY_PROMPT_USER)); > + } > + > } > diff -r 44d47c366e5f netx/net/sourceforge/jnlp/services/ServiceUtil.java > --- a/netx/net/sourceforge/jnlp/services/ServiceUtil.java Wed Nov 10 16:24:53 2010 -0500 > +++ b/netx/net/sourceforge/jnlp/services/ServiceUtil.java Wed Nov 10 17:39:27 2010 -0500 > @@ -39,6 +39,7 @@ > > import net.sourceforge.jnlp.JNLPFile; > import net.sourceforge.jnlp.runtime.ApplicationInstance; > +import net.sourceforge.jnlp.runtime.DeploymentConfiguration; > import net.sourceforge.jnlp.runtime.JNLPRuntime; > import net.sourceforge.jnlp.security.SecurityWarning; > import net.sourceforge.jnlp.security.SecurityWarning.AccessType; > @@ -208,9 +209,10 @@ > }; > > /** > - * Returns whether the app requesting a service is signed. If the app is > - * unsigned, the user is prompted with a dialog asking if the action > - * should be allowed. > + * Returns whether the app requesting a JNLP service has the right permissions. > + * If it doesn't, user is prompted for permissions. This method should only be > + * used for JNLP API related permissions. > + * > * @param type the type of access being requested > * @param extras extra Strings (usually) that are passed to the dialog for > * message formatting. > @@ -221,8 +223,9 @@ > } > > /** > - * Returns whether the app requesting a service has the right permissions. > - * If it doesn't, user is prompted for permissions. > + * Returns whether the app requesting a JNLP service has the right permissions. > + * If it doesn't, user is prompted for permissions. This method should only be > + * used for JNLP API related permissions. > * > * @param app the application which is requesting the check. If null, the current > * application is used. > @@ -265,6 +268,11 @@ > } > > if (!codeTrusted) { > + > + if (!shouldPromptUser()) { > + return false; > + } > + > final AccessType tmpType = type; > final Object[] tmpExtras = extras; > final ApplicationInstance tmpApp = app; > @@ -285,4 +293,16 @@ > > return true; //allow > } > + > + /** > + * Returns whether the current runtime configuration allows prompting the > + * user for JNLP permissions. > + * > + * @return true if the user should be prompted for JNLP API related permissions. > + */ > + private static boolean shouldPromptUser() { > + return Boolean.valueOf(JNLPRuntime.getConfiguration() > + .getProperty(DeploymentConfiguration.KEY_SECURITY_PROMPT_USER_FOR_JNLP)); > + } > + > } > diff -r 44d47c366e5f plugin/icedteanp/java/sun/applet/PluginMain.java > --- a/plugin/icedteanp/java/sun/applet/PluginMain.java Wed Nov 10 16:24:53 2010 -0500 > +++ b/plugin/icedteanp/java/sun/applet/PluginMain.java Wed Nov 10 17:39:27 2010 -0500 > @@ -230,7 +230,11 @@ > } > > // plug in a custom authenticator and proxy selector > - Authenticator.setDefault(new CustomAuthenticator()); > + boolean installAuthenticator = Boolean.valueOf(JNLPRuntime.getConfiguration() > + .getProperty(DeploymentConfiguration.KEY_SECURITY_INSTALL_AUTHENTICATOR)); > + if (installAuthenticator) { > + Authenticator.setDefault(new CustomAuthenticator()); > + } > ProxySelector.setDefault(new PluginProxySelector()); > > CookieManager ckManager = new PluginCookieManager(); From dbhole at redhat.com Wed Nov 17 13:49:45 2010 From: dbhole at redhat.com (Deepak Bhole) Date: Wed, 17 Nov 2010 16:49:45 -0500 Subject: [1.7] RFC: Allow NetX to be disabled In-Reply-To: <20101117141316.GD24703@rivendell.middle-earth.co.uk> References: <20101117141316.GD24703@rivendell.middle-earth.co.uk> Message-ID: <20101117214945.GG2939@redhat.com> * Dr Andrew John Hughes [2010-11-17 09:32]: > And here's the patch for 1.7, the most hideous of the three: > The switch works perfectly. I am a but concerned about the webstart patch being made conditional however (same for other branches too). That patch relaxes some visibility restrictions on which icedtea-web relies. I am trying it out now to test the full extent of what is affected. Deepak > 2010-11-11 Andrew John Hughes > > * Makefile.am: > (NETX_DIR): Define only when NetX is enabled > and set to syntax for jar (like LIVECONNECT_DIR). > (ICEDTEA_PATCHES): Only apply icedtea-webstart.patch, > icedtea-copy-plugs.patch and icedtea-webstart-umask.patch > if NetX is enabled. > (ICEDTEA_ECJ_PATCHES): Drop icedtea-ant.patch, redundant. > (ICEDTEA_ENV): Only add IMPORT_BINARY_PLUGS and > ALT_BINARY_PLUGS_PATH if NetX is enabled. > (distclean-local): Add clean-about. > (.PHONY): Likewise. > (icedtea): Depend on about.stamp. Add > ENABLE_NETX conditional. > (icedtea-debug): Likewise. > (netx): Add ENABLE_NETX conditional. > (netx-dist): Likewise. > (extra-class-files): Likewise. > (about): New target (from extra-lib/about.jar). > Add ENABLE_NETX conditional. > (clean-about): New target to remove about.jar. > (rt-source-files): Filter out NetX sources if not > building NetX. > (rt-class-files): Only add NetX resources if building > NetX. > (rt): Replace '-C lib/rt net' with NETX_DIR so NetX > sources are only included if NetX is enabled. > * acinclude.m4: > (IT_CHECK_OLD_PLUGIN): Remove outdated version warning > about old plugin. > (IT_CHECK_PLUGIN_DEPENDENCIES): Require IT_CHECK_NETX. > Disable both plugins if NetX is turned off. > (IT_CHECK_NETX): Add --disable-webstart option. > * patches/ecj/icedtea-ant.patch: > Dropped. Was wrongly applied to openjdk, not > openjdk-ecj and breaks when netx is turned off. > * patches/icedtea-copy-plugs.patch: > Only include segments related to plug installation > and apply only when building NetX. > * patches/getannotation-cast.patch, > * patches/snmp.patch: > New patches broken out from copy-plugs.patch which > are always applied. > > Ok to commit? > -- > Andrew :) > > Free Java Software Engineer > Red Hat, Inc. (http://www.redhat.com) > > Support Free Java! > Contribute to GNU Classpath and the OpenJDK > http://www.gnu.org/software/classpath > http://openjdk.java.net > PGP Key: 94EFD9D8 (http://subkeys.pgp.net) > Fingerprint = F8EF F1EA 401E 2E60 15FA 7927 142C 2591 94EF D9D8 > diff -r fcc8fa217369 Makefile.am > --- a/Makefile.am Mon Oct 18 12:52:22 2010 -0400 > +++ b/Makefile.am Wed Nov 17 13:36:41 2010 +0000 > @@ -138,6 +138,10 @@ > endif > endif > > +if ENABLE_NETX > +NETX_DIR = -C lib/rt net > +endif > + > if WITH_VISUALVM > NB_PLATFORM= $(shell ls /usr/share/netbeans | grep platform | tail -n1) > NB_APISUPPORT=$(shell ls /usr/share/netbeans | grep apisupport | tail -n1) > @@ -272,12 +276,9 @@ > patches/icedtea-lucene-crash.patch \ > patches/icedtea-version.patch \ > patches/icedtea-version-hotspot.patch \ > - patches/icedtea-copy-plugs.patch \ > patches/icedtea-text-relocations.patch \ > patches/icedtea-ssl.patch \ > $(PLUGIN_PATCH) \ > - patches/icedtea-webstart.patch \ > - patches/icedtea-webstart-umask.patch \ > patches/icedtea-rmi_amd64.patch \ > patches/icedtea-tools.patch \ > patches/icedtea-timezone.patch \ > @@ -370,7 +371,9 @@ > patches/openjdk/6638712-wildcard_types.patch \ > patches/openjdk/6650759-missing_inference.patch \ > patches/numa_on_early_glibc.patch \ > - patches/openjdk/6853592-badwindow-warning-fix.patch > + patches/openjdk/6853592-badwindow-warning-fix.patch \ > + patches/snmp.patch \ > + patches/getannotation-cast.patch > > if WITH_ALT_HSBUILD > ICEDTEA_PATCHES += patches/hotspot/$(HSBUILD)/openjdk-6886353-ignore_deoptimizealot.patch \ > @@ -386,6 +389,13 @@ > patches/hotspot/original/6539464-consistent-math.patch > endif > > +if ENABLE_NETX > +ICEDTEA_PATCHES += \ > + patches/icedtea-webstart.patch \ > + patches/icedtea-webstart-umask.patch \ > + patches/icedtea-copy-plugs.patch > +endif > + > if WITH_RHINO > ICEDTEA_PATCHES += \ > patches/icedtea-rhino.patch > @@ -440,7 +450,7 @@ > > # Bootstrapping patches > > -ICEDTEA_ECJ_PATCHES = patches/ecj/icedtea-ant.patch \ > +ICEDTEA_ECJ_PATCHES = \ > patches/ecj/icedtea.patch \ > patches/ecj/icedtea-hotspot.patch \ > patches/ecj/icedtea-spp.patch \ > @@ -476,7 +486,6 @@ > PLUGIN_VERSION = $(ICEDTEA_NAME) $(PACKAGE_VERSION)$(ICEDTEA_REV)$(ICEDTEA_PKG) > > ICEDTEA_ENV = \ > - IMPORT_BINARY_PLUGS=true \ > ALT_JDK_IMPORT_PATH="$(ICEDTEA_BOOT_DIR)" \ > ANT="$(ANT)" \ > BUILD_NUMBER="$(OPENJDK_VERSION)" \ > @@ -486,7 +495,6 @@ > LANG="C" \ > PATH="$(abs_top_builddir)/bootstrap/jdk1.6.0/bin:$(OS_PATH):$$PATH" \ > ALT_BOOTDIR="$(ICEDTEA_BOOT_DIR)" \ > - ALT_BINARY_PLUGS_PATH="$(abs_top_builddir)/bootstrap/jdk1.7.0" \ > BUILD_ARCH_DIR="$(BUILD_ARCH_DIR)" \ > ICEDTEA_RT="$(ICEDTEA_RT)" \ > ICEDTEA_BUILD_DIR="$(ICEDTEA_BUILD_DIR)" \ > @@ -519,6 +527,12 @@ > DEBUG_CLASSFILES="true" \ > DEBUG_BINARIES="true" > > +if ENABLE_NETX > +ICEDTEA_ENV += \ > + IMPORT_BINARY_PLUGS=true \ > + ALT_BINARY_PLUGS_PATH="$(abs_top_builddir)/bootstrap/jdk1.7.0" > +endif > + > if WITH_CACAO > ICEDTEA_ENV += \ > ALT_HOTSPOT_IMPORT_PATH="$(CACAO_IMPORT_PATH)" > @@ -674,7 +688,7 @@ > check-local: jtregcheck > > #FIXME (clean): Should become clean-local. > -distclean-local: clean-copy clean-jtreg clean-jtreg-reports clean-pulse-java > +distclean-local: clean-copy clean-jtreg clean-jtreg-reports clean-pulse-java clean-about > rm -rf stamps > rm -f rt-source-files.txt \ > hotspot-tools-source-files.txt \ > @@ -717,7 +731,7 @@ > clean-tools-jar clean-shared-objects clean-visualvm clean-nbplatform \ > clean-copy clean-hotspot-tools clean-rt $(ICEDTEAPLUGIN_CLEAN) \ > $(ICEDTEANPPLUGIN_CLEAN) hotspot hotspot-helper clean-extra clean-jtreg \ > - clean-jtreg-reports > + clean-jtreg-reports clean-about > > env: > @echo 'unset JAVA_HOME' > @@ -1304,7 +1318,7 @@ > stamps/hotspot-tools.stamp stamps/plugs.stamp \ > stamps/ports.stamp stamps/patch.stamp stamps/overlay.stamp \ > $(ICEDTEAPLUGIN_TARGET) \ > - extra-lib/about.jar stamps/cacao.stamp stamps/visualvm.stamp \ > + stamps/about.stamp stamps/cacao.stamp stamps/visualvm.stamp \ > stamps/pulse-java.stamp stamps/rewrite-rhino.stamp > $(ARCH_PREFIX) $(MAKE) \ > $(ICEDTEA_ENV) \ > @@ -1357,6 +1371,7 @@ > cp -r netbeans/nbbuild/netbeans_visualvm/profiler3 \ > $(BUILD_OUTPUT_DIR)/j2sdk-image/lib/visualvm > endif > +if ENABLE_NETX > cp $(abs_top_srcdir)/rt/net/sourceforge/jnlp/resources/about.jnlp \ > extra-lib/about.jar \ > $(BUILD_OUTPUT_DIR)/j2re-image/lib ; \ > @@ -1371,6 +1386,7 @@ > cp $(NETX_SRCDIR)/javaws.1 \ > $(BUILD_OUTPUT_DIR)/j2re-image/man/man1 ; \ > fi > +endif > if ZERO_BUILD > printf -- '-zero ALIASED_TO -server\n' >> $(BUILD_JRE_ARCH_DIR)/jvm.cfg > endif > @@ -1415,7 +1431,7 @@ > stamps/hotspot-tools.stamp stamps/plugs.stamp \ > stamps/ports.stamp stamps/patch.stamp stamps/overlay.stamp \ > $(ICEDTEAPLUGIN_TARGET) \ > - extra-lib/about.jar stamps/cacao.stamp stamps/visualvm.stamp \ > + stamps/about.stamp stamps/cacao.stamp stamps/visualvm.stamp \ > stamps/pulse-java.stamp stamps/rewrite-rhino.stamp > $(ARCH_PREFIX) $(MAKE) \ > $(ICEDTEA_ENV) \ > @@ -1468,6 +1484,7 @@ > cp -r netbeans/nbbuild/netbeans_visualvm/profiler3 \ > $(BUILD_OUTPUT_DIR)/j2sdk-image/lib/visualvm > endif > +if ENABLE_NETX > cp $(abs_top_srcdir)/rt/net/sourceforge/jnlp/resources/default.jnlp \ > extra-lib/about.jar \ > $(BUILD_OUTPUT_DIR)-debug/j2re-image/lib ; \ > @@ -1482,6 +1499,7 @@ > cp $(NETX_SRCDIR)/javaws.1 \ > $(DEBUG_BUILD_OUTPUT_DIR)/j2re-image/man/man1 ; \ > fi > +endif > if ZERO_BUILD > printf -- '-zero ALIASED_TO -server\n' >> $(BUILD_DEBUG_JRE_ARCH_DIR)/jvm.cfg > endif > @@ -1685,6 +1703,7 @@ > > stamps/extra-class-files.stamp: extra-source-files.txt \ > bootstrap/jdk1.7.0/jre/lib/rt-closed.jar > +if ENABLE_NETX > mkdir -p extra-lib > if ! test -d $(ICEDTEA_BOOT_DIR) ; \ > then \ > @@ -1700,6 +1719,7 @@ > fi > cp -r $(abs_top_srcdir)/extra/net/sourceforge/jnlp/about/resources \ > extra-lib/net/sourceforge/jnlp/about > +endif > mkdir -p stamps > touch $@ > > @@ -1708,13 +1728,21 @@ > rm -f stamps/extra-class-files.stamp > rm -f extra-source-files.txt > > -extra-lib/about.jar: stamps/extra-class-files.stamp > +stamps/about.stamp: stamps/extra-class-files.stamp > +if ENABLE_NETX > if ! test -d $(ICEDTEA_BOOT_DIR) ; \ > then \ > - $(JAR) cf $@ -C extra-lib net ; \ > + $(JAR) cf extra-lib/about.jar -C extra-lib net ; \ > else \ > - $(ICEDTEA_BOOT_DIR)/bin/jar cf $@ -C extra-lib net ; \ > + $(ICEDTEA_BOOT_DIR)/bin/jar cf extra-lib/about.jar -C extra-lib net ; \ > fi > +endif > + mkdir -p stamps > + touch $@ > + > +clean-about: > + rm -f extra-lib/about.jar > + rm -f stamps/about.stamp > > # PulseAudio based mixer > # (pulse-java) > @@ -2265,7 +2293,12 @@ > # rt-closed.jar class files. > rt-source-files.txt: stamps/replace-hotspot.stamp stamps/copy-source-files.stamp > find $(abs_top_srcdir)/rt $(abs_top_builddir)/rt $(LIVECONNECT_SRCS) -name '*.java' \ > - | sort -u > $@ > + | sort -u > rt-source-files.tmp.txt > +if ENABLE_NETX > + mv rt-source-files.tmp.txt $@ > +else > + cat rt-source-files.tmp.txt | grep -v 'sourceforge' > $@ > +endif > > stamps/rt-class-files.stamp: rt-source-files.txt > mkdir -p lib/rt > @@ -2283,8 +2316,10 @@ > '$(OPENJDK_SOURCEPATH_DIRS):$(abs_top_builddir)/generated' \ > -classpath \'\' -bootclasspath \'\' @$< ; \ > fi > +if ENABLE_NETX > cp -r $(abs_top_srcdir)/rt/net/sourceforge/jnlp/resources \ > lib/rt/net/sourceforge/jnlp/ > +endif > mkdir -p stamps > touch stamps/rt-class-files.stamp > > @@ -2325,10 +2360,10 @@ > if ! test -d $(ICEDTEA_BOOT_DIR) ; \ > then \ > $(JAR) cf $@ -C lib/rt com -C lib/rt java \ > - -C lib/rt javax $(LIVECONNECT_DIR) -C lib/rt net -C lib/rt sun ; \ > + -C lib/rt javax $(LIVECONNECT_DIR) $(NETX_DIR) -C lib/rt sun ; \ > else \ > $(ICEDTEA_BOOT_DIR)/bin/jar cf $@ -C lib/rt com -C lib/rt java \ > - -C lib/rt javax $(LIVECONNECT_DIR) -C lib/rt net -C lib/rt sun ; \ > + -C lib/rt javax $(LIVECONNECT_DIR) $(NETX_DIR) -C lib/rt sun ; \ > fi > if test -d bootstrap/ecj/jre/lib ; \ > then \ > diff -r fcc8fa217369 acinclude.m4 > --- a/acinclude.m4 Mon Oct 18 12:52:22 2010 -0400 > +++ b/acinclude.m4 Wed Nov 17 13:36:41 2010 +0000 > @@ -1267,7 +1267,7 @@ > [enable_plugin="${enableval}"], [enable_plugin="no"]) > AC_MSG_RESULT(${enable_plugin}) > if test "x${enable_plugin}" = "xyes"; then > - AC_MSG_WARN([The old plugin is no longer maintained and will be removed in 1.7.5.]) > + AC_MSG_WARN([The old plugin is no longer maintained.]) > fi > ]) > > @@ -1285,8 +1285,14 @@ > [ > dnl Check for plugin support headers and libraries. > dnl FIXME: use unstable > +AC_REQUIRE([IT_CHECK_NETX]) > AC_REQUIRE([IT_CHECK_OLD_PLUGIN]) > AC_REQUIRE([IT_CHECK_NEW_PLUGIN]) > +if test "x${enable_netx}" = "xno" ; then > + AC_MSG_WARN([Plugin can not be built without NetX; disabling plugin]) > + enable_plugin=no; > + enable_npplugin=no; > +fi > if test "x${enable_plugin}" = "xyes" -o "x${enable_npplugin}" = "xyes" ; then > PKG_CHECK_MODULES(GTK, gtk+-2.0) > PKG_CHECK_MODULES(GLIB, glib-2.0) > @@ -1350,3 +1356,14 @@ > AM_CONDITIONAL([HAS_PAX], test x"${it_cv_pax}" = "xyes") > AC_PROVIDE([$0])dnl > ]) > + > +AC_DEFUN_ONCE([IT_CHECK_NETX], > +[ > +AC_MSG_CHECKING([whether to build NetX]) > +AC_ARG_ENABLE([webstart], > + [AS_HELP_STRING([--disable-webstart], > + [Disable compilation of Web Start support])], > + [enable_netx="${enableval}"], [enable_netx="yes"]) > +AC_MSG_RESULT(${enable_netx}) > +AM_CONDITIONAL(ENABLE_NETX, test "x${enable_netx}" = "xyes") > +]) > diff -r fcc8fa217369 patches/ecj/icedtea-ant.patch > --- a/patches/ecj/icedtea-ant.patch Mon Oct 18 12:52:22 2010 -0400 > +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 > @@ -1,20 +0,0 @@ > ---- iopenjdk/jaxws/make/Makefile 2007-10-12 03:52:21.000000000 -0400 > -+++ openjdk/jaxws/make/Makefile 2007-11-13 11:02:07.000000000 -0500 > -@@ -80,6 +80,7 @@ > - endif > - > - ifdef ALT_BOOTDIR > -+ ANT_OPTIONS += -Dplugs=$(ALT_BINARY_PLUGS_PATH) > - ANT_JAVA_HOME = JAVA_HOME=$(ALT_BOOTDIR) > - endif > - > ---- iopenjdk/jaxws/make/build.xml 2007-10-12 03:52:21.000000000 -0400 > -+++ openjdk/jaxws/make/build.xml 2007-11-13 11:02:43.000000000 -0500 > -@@ -109,6 +109,7 @@ > - memoryMaximumSize="${javac.memoryMaximumSize}" > - target="${javac.target}" > - excludes="com/sun/tools/internal/txw2/**"> > -+ > - > - > - > diff -r fcc8fa217369 patches/getannotation-cast.patch > --- /dev/null Thu Jan 01 00:00:00 1970 +0000 > +++ b/patches/getannotation-cast.patch Wed Nov 17 13:36:41 2010 +0000 > @@ -0,0 +1,24 @@ > +diff -urN openjdk.orig/jdk/src/share/classes/com/sun/jmx/mbeanserver/OpenConverter.java openjdk/jdk/src/share/classes/com/sun/jmx/mbeanserver/OpenConverter.java > +--- openjdk.orig/jdk/src/share/classes/com/sun/jmx/mbeanserver/OpenConverter.java 2008-08-28 04:12:12.000000000 -0400 > ++++ openjdk/jdk/src/share/classes/com/sun/jmx/mbeanserver/OpenConverter.java 2008-11-05 17:18:36.000000000 -0500 > +@@ -1154,7 +1154,7 @@ > + Set getterIndexSets = newSet(); > + for (Constructor constr : annotatedConstrList) { > + String[] propertyNames = > +- constr.getAnnotation(propertyNamesClass).value(); > ++ ((ConstructorProperties)constr.getAnnotation(propertyNamesClass)).value(); > + > + Type[] paramTypes = constr.getGenericParameterTypes(); > + if (paramTypes.length != propertyNames.length) { > +diff -urN openjdk.orig/jdk/src/share/classes/java/beans/MetaData.java openjdk/jdk/src/share/classes/java/beans/MetaData.java > +--- openjdk.orig/jdk/src/share/classes/java/beans/MetaData.java 2008-08-28 04:12:48.000000000 -0400 > ++++ openjdk/jdk/src/share/classes/java/beans/MetaData.java 2008-11-05 17:18:36.000000000 -0500 > +@@ -1628,7 +1628,7 @@ > + } > + > + private static String[] getAnnotationValue(Constructor constructor) { > +- ConstructorProperties annotation = constructor.getAnnotation(ConstructorProperties.class); > ++ ConstructorProperties annotation = ((ConstructorProperties) constructor.getAnnotation(ConstructorProperties.class)); > + return (annotation != null) > + ? annotation.value() > + : null; > diff -r fcc8fa217369 patches/icedtea-copy-plugs.patch > --- a/patches/icedtea-copy-plugs.patch Mon Oct 18 12:52:22 2010 -0400 > +++ b/patches/icedtea-copy-plugs.patch Wed Nov 17 13:36:41 2010 +0000 > @@ -123,40 +123,3 @@ > > # Binary plug start/complete messages > > -diff -urN openjdk.orig/jdk/src/share/classes/com/sun/jmx/mbeanserver/OpenConverter.java openjdk/jdk/src/share/classes/com/sun/jmx/mbeanserver/OpenConverter.java > ---- openjdk.orig/jdk/src/share/classes/com/sun/jmx/mbeanserver/OpenConverter.java 2008-08-28 04:12:12.000000000 -0400 > -+++ openjdk/jdk/src/share/classes/com/sun/jmx/mbeanserver/OpenConverter.java 2008-11-05 17:18:36.000000000 -0500 > -@@ -1154,7 +1154,7 @@ > - Set getterIndexSets = newSet(); > - for (Constructor constr : annotatedConstrList) { > - String[] propertyNames = > -- constr.getAnnotation(propertyNamesClass).value(); > -+ ((ConstructorProperties)constr.getAnnotation(propertyNamesClass)).value(); > - > - Type[] paramTypes = constr.getGenericParameterTypes(); > - if (paramTypes.length != propertyNames.length) { > -diff -urN openjdk.orig/jdk/src/share/classes/com/sun/jmx/snmp/SnmpPduTrap.java openjdk/jdk/src/share/classes/com/sun/jmx/snmp/SnmpPduTrap.java > ---- openjdk.orig/jdk/src/share/classes/com/sun/jmx/snmp/SnmpPduTrap.java 2008-08-28 04:12:14.000000000 -0400 > -+++ openjdk/jdk/src/share/classes/com/sun/jmx/snmp/SnmpPduTrap.java 2008-11-05 17:18:36.000000000 -0500 > -@@ -78,6 +78,9 @@ > - */ > - public long timeStamp ; > - > -+ // TODO: IcedTea: I am a stub. > -+ static public int trapAuthenticationFailure = 0; > -+ > - > - > - /** > -diff -urN openjdk.orig/jdk/src/share/classes/java/beans/MetaData.java openjdk/jdk/src/share/classes/java/beans/MetaData.java > ---- openjdk.orig/jdk/src/share/classes/java/beans/MetaData.java 2008-08-28 04:12:48.000000000 -0400 > -+++ openjdk/jdk/src/share/classes/java/beans/MetaData.java 2008-11-05 17:18:36.000000000 -0500 > -@@ -1628,7 +1628,7 @@ > - } > - > - private static String[] getAnnotationValue(Constructor constructor) { > -- ConstructorProperties annotation = constructor.getAnnotation(ConstructorProperties.class); > -+ ConstructorProperties annotation = ((ConstructorProperties) constructor.getAnnotation(ConstructorProperties.class)); > - return (annotation != null) > - ? annotation.value() > - : null; > diff -r fcc8fa217369 patches/snmp.patch > --- /dev/null Thu Jan 01 00:00:00 1970 +0000 > +++ b/patches/snmp.patch Wed Nov 17 13:36:41 2010 +0000 > @@ -0,0 +1,13 @@ > +diff -urN openjdk.orig/jdk/src/share/classes/com/sun/jmx/snmp/SnmpPduTrap.java openjdk/jdk/src/share/classes/com/sun/jmx/snmp/SnmpPduTrap.java > +--- openjdk.orig/jdk/src/share/classes/com/sun/jmx/snmp/SnmpPduTrap.java 2008-08-28 04:12:14.000000000 -0400 > ++++ openjdk/jdk/src/share/classes/com/sun/jmx/snmp/SnmpPduTrap.java 2008-11-05 17:18:36.000000000 -0500 > +@@ -78,6 +78,9 @@ > + */ > + public long timeStamp ; > + > ++ // TODO: IcedTea: I am a stub. > ++ static public int trapAuthenticationFailure = 0; > ++ > + > + > + /** From ahughes at redhat.com Wed Nov 17 13:56:17 2010 From: ahughes at redhat.com (Dr Andrew John Hughes) Date: Wed, 17 Nov 2010 21:56:17 +0000 Subject: [1.7] RFC: Allow NetX to be disabled In-Reply-To: <20101117214945.GG2939@redhat.com> References: <20101117141316.GD24703@rivendell.middle-earth.co.uk> <20101117214945.GG2939@redhat.com> Message-ID: <20101117215617.GJ24703@rivendell.middle-earth.co.uk> On 16:49 Wed 17 Nov , Deepak Bhole wrote: > * Dr Andrew John Hughes [2010-11-17 09:32]: > > And here's the patch for 1.7, the most hideous of the three: > > > > The switch works perfectly. I am a but concerned about the webstart > patch being made conditional however (same for other branches too). That > patch relaxes some visibility restrictions on which icedtea-web relies. > > I am trying it out now to test the full extent of what is affected. > It'll fail; I've already tried IcedTea-Web builds with OpenJDK which do so and it's why we need a configure test. I'll split the netx.patch. It's a mix of two different things which should be patched separately. The applet class fixes need to be in all builds, but the additions to build jaxws and the documentation should not. > Deepak > > > 2010-11-11 Andrew John Hughes > > > > * Makefile.am: > > (NETX_DIR): Define only when NetX is enabled > > and set to syntax for jar (like LIVECONNECT_DIR). > > (ICEDTEA_PATCHES): Only apply icedtea-webstart.patch, > > icedtea-copy-plugs.patch and icedtea-webstart-umask.patch > > if NetX is enabled. > > (ICEDTEA_ECJ_PATCHES): Drop icedtea-ant.patch, redundant. > > (ICEDTEA_ENV): Only add IMPORT_BINARY_PLUGS and > > ALT_BINARY_PLUGS_PATH if NetX is enabled. > > (distclean-local): Add clean-about. > > (.PHONY): Likewise. > > (icedtea): Depend on about.stamp. Add > > ENABLE_NETX conditional. > > (icedtea-debug): Likewise. > > (netx): Add ENABLE_NETX conditional. > > (netx-dist): Likewise. > > (extra-class-files): Likewise. > > (about): New target (from extra-lib/about.jar). > > Add ENABLE_NETX conditional. > > (clean-about): New target to remove about.jar. > > (rt-source-files): Filter out NetX sources if not > > building NetX. > > (rt-class-files): Only add NetX resources if building > > NetX. > > (rt): Replace '-C lib/rt net' with NETX_DIR so NetX > > sources are only included if NetX is enabled. > > * acinclude.m4: > > (IT_CHECK_OLD_PLUGIN): Remove outdated version warning > > about old plugin. > > (IT_CHECK_PLUGIN_DEPENDENCIES): Require IT_CHECK_NETX. > > Disable both plugins if NetX is turned off. > > (IT_CHECK_NETX): Add --disable-webstart option. > > * patches/ecj/icedtea-ant.patch: > > Dropped. Was wrongly applied to openjdk, not > > openjdk-ecj and breaks when netx is turned off. > > * patches/icedtea-copy-plugs.patch: > > Only include segments related to plug installation > > and apply only when building NetX. > > * patches/getannotation-cast.patch, > > * patches/snmp.patch: > > New patches broken out from copy-plugs.patch which > > are always applied. > > > > Ok to commit? > > -- > > Andrew :) > > > > Free Java Software Engineer > > Red Hat, Inc. (http://www.redhat.com) > > > > Support Free Java! > > Contribute to GNU Classpath and the OpenJDK > > http://www.gnu.org/software/classpath > > http://openjdk.java.net > > PGP Key: 94EFD9D8 (http://subkeys.pgp.net) > > Fingerprint = F8EF F1EA 401E 2E60 15FA 7927 142C 2591 94EF D9D8 > > > diff -r fcc8fa217369 Makefile.am > > --- a/Makefile.am Mon Oct 18 12:52:22 2010 -0400 > > +++ b/Makefile.am Wed Nov 17 13:36:41 2010 +0000 > > @@ -138,6 +138,10 @@ > > endif > > endif > > > > +if ENABLE_NETX > > +NETX_DIR = -C lib/rt net > > +endif > > + > > if WITH_VISUALVM > > NB_PLATFORM= $(shell ls /usr/share/netbeans | grep platform | tail -n1) > > NB_APISUPPORT=$(shell ls /usr/share/netbeans | grep apisupport | tail -n1) > > @@ -272,12 +276,9 @@ > > patches/icedtea-lucene-crash.patch \ > > patches/icedtea-version.patch \ > > patches/icedtea-version-hotspot.patch \ > > - patches/icedtea-copy-plugs.patch \ > > patches/icedtea-text-relocations.patch \ > > patches/icedtea-ssl.patch \ > > $(PLUGIN_PATCH) \ > > - patches/icedtea-webstart.patch \ > > - patches/icedtea-webstart-umask.patch \ > > patches/icedtea-rmi_amd64.patch \ > > patches/icedtea-tools.patch \ > > patches/icedtea-timezone.patch \ > > @@ -370,7 +371,9 @@ > > patches/openjdk/6638712-wildcard_types.patch \ > > patches/openjdk/6650759-missing_inference.patch \ > > patches/numa_on_early_glibc.patch \ > > - patches/openjdk/6853592-badwindow-warning-fix.patch > > + patches/openjdk/6853592-badwindow-warning-fix.patch \ > > + patches/snmp.patch \ > > + patches/getannotation-cast.patch > > > > if WITH_ALT_HSBUILD > > ICEDTEA_PATCHES += patches/hotspot/$(HSBUILD)/openjdk-6886353-ignore_deoptimizealot.patch \ > > @@ -386,6 +389,13 @@ > > patches/hotspot/original/6539464-consistent-math.patch > > endif > > > > +if ENABLE_NETX > > +ICEDTEA_PATCHES += \ > > + patches/icedtea-webstart.patch \ > > + patches/icedtea-webstart-umask.patch \ > > + patches/icedtea-copy-plugs.patch > > +endif > > + > > if WITH_RHINO > > ICEDTEA_PATCHES += \ > > patches/icedtea-rhino.patch > > @@ -440,7 +450,7 @@ > > > > # Bootstrapping patches > > > > -ICEDTEA_ECJ_PATCHES = patches/ecj/icedtea-ant.patch \ > > +ICEDTEA_ECJ_PATCHES = \ > > patches/ecj/icedtea.patch \ > > patches/ecj/icedtea-hotspot.patch \ > > patches/ecj/icedtea-spp.patch \ > > @@ -476,7 +486,6 @@ > > PLUGIN_VERSION = $(ICEDTEA_NAME) $(PACKAGE_VERSION)$(ICEDTEA_REV)$(ICEDTEA_PKG) > > > > ICEDTEA_ENV = \ > > - IMPORT_BINARY_PLUGS=true \ > > ALT_JDK_IMPORT_PATH="$(ICEDTEA_BOOT_DIR)" \ > > ANT="$(ANT)" \ > > BUILD_NUMBER="$(OPENJDK_VERSION)" \ > > @@ -486,7 +495,6 @@ > > LANG="C" \ > > PATH="$(abs_top_builddir)/bootstrap/jdk1.6.0/bin:$(OS_PATH):$$PATH" \ > > ALT_BOOTDIR="$(ICEDTEA_BOOT_DIR)" \ > > - ALT_BINARY_PLUGS_PATH="$(abs_top_builddir)/bootstrap/jdk1.7.0" \ > > BUILD_ARCH_DIR="$(BUILD_ARCH_DIR)" \ > > ICEDTEA_RT="$(ICEDTEA_RT)" \ > > ICEDTEA_BUILD_DIR="$(ICEDTEA_BUILD_DIR)" \ > > @@ -519,6 +527,12 @@ > > DEBUG_CLASSFILES="true" \ > > DEBUG_BINARIES="true" > > > > +if ENABLE_NETX > > +ICEDTEA_ENV += \ > > + IMPORT_BINARY_PLUGS=true \ > > + ALT_BINARY_PLUGS_PATH="$(abs_top_builddir)/bootstrap/jdk1.7.0" > > +endif > > + > > if WITH_CACAO > > ICEDTEA_ENV += \ > > ALT_HOTSPOT_IMPORT_PATH="$(CACAO_IMPORT_PATH)" > > @@ -674,7 +688,7 @@ > > check-local: jtregcheck > > > > #FIXME (clean): Should become clean-local. > > -distclean-local: clean-copy clean-jtreg clean-jtreg-reports clean-pulse-java > > +distclean-local: clean-copy clean-jtreg clean-jtreg-reports clean-pulse-java clean-about > > rm -rf stamps > > rm -f rt-source-files.txt \ > > hotspot-tools-source-files.txt \ > > @@ -717,7 +731,7 @@ > > clean-tools-jar clean-shared-objects clean-visualvm clean-nbplatform \ > > clean-copy clean-hotspot-tools clean-rt $(ICEDTEAPLUGIN_CLEAN) \ > > $(ICEDTEANPPLUGIN_CLEAN) hotspot hotspot-helper clean-extra clean-jtreg \ > > - clean-jtreg-reports > > + clean-jtreg-reports clean-about > > > > env: > > @echo 'unset JAVA_HOME' > > @@ -1304,7 +1318,7 @@ > > stamps/hotspot-tools.stamp stamps/plugs.stamp \ > > stamps/ports.stamp stamps/patch.stamp stamps/overlay.stamp \ > > $(ICEDTEAPLUGIN_TARGET) \ > > - extra-lib/about.jar stamps/cacao.stamp stamps/visualvm.stamp \ > > + stamps/about.stamp stamps/cacao.stamp stamps/visualvm.stamp \ > > stamps/pulse-java.stamp stamps/rewrite-rhino.stamp > > $(ARCH_PREFIX) $(MAKE) \ > > $(ICEDTEA_ENV) \ > > @@ -1357,6 +1371,7 @@ > > cp -r netbeans/nbbuild/netbeans_visualvm/profiler3 \ > > $(BUILD_OUTPUT_DIR)/j2sdk-image/lib/visualvm > > endif > > +if ENABLE_NETX > > cp $(abs_top_srcdir)/rt/net/sourceforge/jnlp/resources/about.jnlp \ > > extra-lib/about.jar \ > > $(BUILD_OUTPUT_DIR)/j2re-image/lib ; \ > > @@ -1371,6 +1386,7 @@ > > cp $(NETX_SRCDIR)/javaws.1 \ > > $(BUILD_OUTPUT_DIR)/j2re-image/man/man1 ; \ > > fi > > +endif > > if ZERO_BUILD > > printf -- '-zero ALIASED_TO -server\n' >> $(BUILD_JRE_ARCH_DIR)/jvm.cfg > > endif > > @@ -1415,7 +1431,7 @@ > > stamps/hotspot-tools.stamp stamps/plugs.stamp \ > > stamps/ports.stamp stamps/patch.stamp stamps/overlay.stamp \ > > $(ICEDTEAPLUGIN_TARGET) \ > > - extra-lib/about.jar stamps/cacao.stamp stamps/visualvm.stamp \ > > + stamps/about.stamp stamps/cacao.stamp stamps/visualvm.stamp \ > > stamps/pulse-java.stamp stamps/rewrite-rhino.stamp > > $(ARCH_PREFIX) $(MAKE) \ > > $(ICEDTEA_ENV) \ > > @@ -1468,6 +1484,7 @@ > > cp -r netbeans/nbbuild/netbeans_visualvm/profiler3 \ > > $(BUILD_OUTPUT_DIR)/j2sdk-image/lib/visualvm > > endif > > +if ENABLE_NETX > > cp $(abs_top_srcdir)/rt/net/sourceforge/jnlp/resources/default.jnlp \ > > extra-lib/about.jar \ > > $(BUILD_OUTPUT_DIR)-debug/j2re-image/lib ; \ > > @@ -1482,6 +1499,7 @@ > > cp $(NETX_SRCDIR)/javaws.1 \ > > $(DEBUG_BUILD_OUTPUT_DIR)/j2re-image/man/man1 ; \ > > fi > > +endif > > if ZERO_BUILD > > printf -- '-zero ALIASED_TO -server\n' >> $(BUILD_DEBUG_JRE_ARCH_DIR)/jvm.cfg > > endif > > @@ -1685,6 +1703,7 @@ > > > > stamps/extra-class-files.stamp: extra-source-files.txt \ > > bootstrap/jdk1.7.0/jre/lib/rt-closed.jar > > +if ENABLE_NETX > > mkdir -p extra-lib > > if ! test -d $(ICEDTEA_BOOT_DIR) ; \ > > then \ > > @@ -1700,6 +1719,7 @@ > > fi > > cp -r $(abs_top_srcdir)/extra/net/sourceforge/jnlp/about/resources \ > > extra-lib/net/sourceforge/jnlp/about > > +endif > > mkdir -p stamps > > touch $@ > > > > @@ -1708,13 +1728,21 @@ > > rm -f stamps/extra-class-files.stamp > > rm -f extra-source-files.txt > > > > -extra-lib/about.jar: stamps/extra-class-files.stamp > > +stamps/about.stamp: stamps/extra-class-files.stamp > > +if ENABLE_NETX > > if ! test -d $(ICEDTEA_BOOT_DIR) ; \ > > then \ > > - $(JAR) cf $@ -C extra-lib net ; \ > > + $(JAR) cf extra-lib/about.jar -C extra-lib net ; \ > > else \ > > - $(ICEDTEA_BOOT_DIR)/bin/jar cf $@ -C extra-lib net ; \ > > + $(ICEDTEA_BOOT_DIR)/bin/jar cf extra-lib/about.jar -C extra-lib net ; \ > > fi > > +endif > > + mkdir -p stamps > > + touch $@ > > + > > +clean-about: > > + rm -f extra-lib/about.jar > > + rm -f stamps/about.stamp > > > > # PulseAudio based mixer > > # (pulse-java) > > @@ -2265,7 +2293,12 @@ > > # rt-closed.jar class files. > > rt-source-files.txt: stamps/replace-hotspot.stamp stamps/copy-source-files.stamp > > find $(abs_top_srcdir)/rt $(abs_top_builddir)/rt $(LIVECONNECT_SRCS) -name '*.java' \ > > - | sort -u > $@ > > + | sort -u > rt-source-files.tmp.txt > > +if ENABLE_NETX > > + mv rt-source-files.tmp.txt $@ > > +else > > + cat rt-source-files.tmp.txt | grep -v 'sourceforge' > $@ > > +endif > > > > stamps/rt-class-files.stamp: rt-source-files.txt > > mkdir -p lib/rt > > @@ -2283,8 +2316,10 @@ > > '$(OPENJDK_SOURCEPATH_DIRS):$(abs_top_builddir)/generated' \ > > -classpath \'\' -bootclasspath \'\' @$< ; \ > > fi > > +if ENABLE_NETX > > cp -r $(abs_top_srcdir)/rt/net/sourceforge/jnlp/resources \ > > lib/rt/net/sourceforge/jnlp/ > > +endif > > mkdir -p stamps > > touch stamps/rt-class-files.stamp > > > > @@ -2325,10 +2360,10 @@ > > if ! test -d $(ICEDTEA_BOOT_DIR) ; \ > > then \ > > $(JAR) cf $@ -C lib/rt com -C lib/rt java \ > > - -C lib/rt javax $(LIVECONNECT_DIR) -C lib/rt net -C lib/rt sun ; \ > > + -C lib/rt javax $(LIVECONNECT_DIR) $(NETX_DIR) -C lib/rt sun ; \ > > else \ > > $(ICEDTEA_BOOT_DIR)/bin/jar cf $@ -C lib/rt com -C lib/rt java \ > > - -C lib/rt javax $(LIVECONNECT_DIR) -C lib/rt net -C lib/rt sun ; \ > > + -C lib/rt javax $(LIVECONNECT_DIR) $(NETX_DIR) -C lib/rt sun ; \ > > fi > > if test -d bootstrap/ecj/jre/lib ; \ > > then \ > > diff -r fcc8fa217369 acinclude.m4 > > --- a/acinclude.m4 Mon Oct 18 12:52:22 2010 -0400 > > +++ b/acinclude.m4 Wed Nov 17 13:36:41 2010 +0000 > > @@ -1267,7 +1267,7 @@ > > [enable_plugin="${enableval}"], [enable_plugin="no"]) > > AC_MSG_RESULT(${enable_plugin}) > > if test "x${enable_plugin}" = "xyes"; then > > - AC_MSG_WARN([The old plugin is no longer maintained and will be removed in 1.7.5.]) > > + AC_MSG_WARN([The old plugin is no longer maintained.]) > > fi > > ]) > > > > @@ -1285,8 +1285,14 @@ > > [ > > dnl Check for plugin support headers and libraries. > > dnl FIXME: use unstable > > +AC_REQUIRE([IT_CHECK_NETX]) > > AC_REQUIRE([IT_CHECK_OLD_PLUGIN]) > > AC_REQUIRE([IT_CHECK_NEW_PLUGIN]) > > +if test "x${enable_netx}" = "xno" ; then > > + AC_MSG_WARN([Plugin can not be built without NetX; disabling plugin]) > > + enable_plugin=no; > > + enable_npplugin=no; > > +fi > > if test "x${enable_plugin}" = "xyes" -o "x${enable_npplugin}" = "xyes" ; then > > PKG_CHECK_MODULES(GTK, gtk+-2.0) > > PKG_CHECK_MODULES(GLIB, glib-2.0) > > @@ -1350,3 +1356,14 @@ > > AM_CONDITIONAL([HAS_PAX], test x"${it_cv_pax}" = "xyes") > > AC_PROVIDE([$0])dnl > > ]) > > + > > +AC_DEFUN_ONCE([IT_CHECK_NETX], > > +[ > > +AC_MSG_CHECKING([whether to build NetX]) > > +AC_ARG_ENABLE([webstart], > > + [AS_HELP_STRING([--disable-webstart], > > + [Disable compilation of Web Start support])], > > + [enable_netx="${enableval}"], [enable_netx="yes"]) > > +AC_MSG_RESULT(${enable_netx}) > > +AM_CONDITIONAL(ENABLE_NETX, test "x${enable_netx}" = "xyes") > > +]) > > diff -r fcc8fa217369 patches/ecj/icedtea-ant.patch > > --- a/patches/ecj/icedtea-ant.patch Mon Oct 18 12:52:22 2010 -0400 > > +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 > > @@ -1,20 +0,0 @@ > > ---- iopenjdk/jaxws/make/Makefile 2007-10-12 03:52:21.000000000 -0400 > > -+++ openjdk/jaxws/make/Makefile 2007-11-13 11:02:07.000000000 -0500 > > -@@ -80,6 +80,7 @@ > > - endif > > - > > - ifdef ALT_BOOTDIR > > -+ ANT_OPTIONS += -Dplugs=$(ALT_BINARY_PLUGS_PATH) > > - ANT_JAVA_HOME = JAVA_HOME=$(ALT_BOOTDIR) > > - endif > > - > > ---- iopenjdk/jaxws/make/build.xml 2007-10-12 03:52:21.000000000 -0400 > > -+++ openjdk/jaxws/make/build.xml 2007-11-13 11:02:43.000000000 -0500 > > -@@ -109,6 +109,7 @@ > > - memoryMaximumSize="${javac.memoryMaximumSize}" > > - target="${javac.target}" > > - excludes="com/sun/tools/internal/txw2/**"> > > -+ > > - > > - > > - > > diff -r fcc8fa217369 patches/getannotation-cast.patch > > --- /dev/null Thu Jan 01 00:00:00 1970 +0000 > > +++ b/patches/getannotation-cast.patch Wed Nov 17 13:36:41 2010 +0000 > > @@ -0,0 +1,24 @@ > > +diff -urN openjdk.orig/jdk/src/share/classes/com/sun/jmx/mbeanserver/OpenConverter.java openjdk/jdk/src/share/classes/com/sun/jmx/mbeanserver/OpenConverter.java > > +--- openjdk.orig/jdk/src/share/classes/com/sun/jmx/mbeanserver/OpenConverter.java 2008-08-28 04:12:12.000000000 -0400 > > ++++ openjdk/jdk/src/share/classes/com/sun/jmx/mbeanserver/OpenConverter.java 2008-11-05 17:18:36.000000000 -0500 > > +@@ -1154,7 +1154,7 @@ > > + Set getterIndexSets = newSet(); > > + for (Constructor constr : annotatedConstrList) { > > + String[] propertyNames = > > +- constr.getAnnotation(propertyNamesClass).value(); > > ++ ((ConstructorProperties)constr.getAnnotation(propertyNamesClass)).value(); > > + > > + Type[] paramTypes = constr.getGenericParameterTypes(); > > + if (paramTypes.length != propertyNames.length) { > > +diff -urN openjdk.orig/jdk/src/share/classes/java/beans/MetaData.java openjdk/jdk/src/share/classes/java/beans/MetaData.java > > +--- openjdk.orig/jdk/src/share/classes/java/beans/MetaData.java 2008-08-28 04:12:48.000000000 -0400 > > ++++ openjdk/jdk/src/share/classes/java/beans/MetaData.java 2008-11-05 17:18:36.000000000 -0500 > > +@@ -1628,7 +1628,7 @@ > > + } > > + > > + private static String[] getAnnotationValue(Constructor constructor) { > > +- ConstructorProperties annotation = constructor.getAnnotation(ConstructorProperties.class); > > ++ ConstructorProperties annotation = ((ConstructorProperties) constructor.getAnnotation(ConstructorProperties.class)); > > + return (annotation != null) > > + ? annotation.value() > > + : null; > > diff -r fcc8fa217369 patches/icedtea-copy-plugs.patch > > --- a/patches/icedtea-copy-plugs.patch Mon Oct 18 12:52:22 2010 -0400 > > +++ b/patches/icedtea-copy-plugs.patch Wed Nov 17 13:36:41 2010 +0000 > > @@ -123,40 +123,3 @@ > > > > # Binary plug start/complete messages > > > > -diff -urN openjdk.orig/jdk/src/share/classes/com/sun/jmx/mbeanserver/OpenConverter.java openjdk/jdk/src/share/classes/com/sun/jmx/mbeanserver/OpenConverter.java > > ---- openjdk.orig/jdk/src/share/classes/com/sun/jmx/mbeanserver/OpenConverter.java 2008-08-28 04:12:12.000000000 -0400 > > -+++ openjdk/jdk/src/share/classes/com/sun/jmx/mbeanserver/OpenConverter.java 2008-11-05 17:18:36.000000000 -0500 > > -@@ -1154,7 +1154,7 @@ > > - Set getterIndexSets = newSet(); > > - for (Constructor constr : annotatedConstrList) { > > - String[] propertyNames = > > -- constr.getAnnotation(propertyNamesClass).value(); > > -+ ((ConstructorProperties)constr.getAnnotation(propertyNamesClass)).value(); > > - > > - Type[] paramTypes = constr.getGenericParameterTypes(); > > - if (paramTypes.length != propertyNames.length) { > > -diff -urN openjdk.orig/jdk/src/share/classes/com/sun/jmx/snmp/SnmpPduTrap.java openjdk/jdk/src/share/classes/com/sun/jmx/snmp/SnmpPduTrap.java > > ---- openjdk.orig/jdk/src/share/classes/com/sun/jmx/snmp/SnmpPduTrap.java 2008-08-28 04:12:14.000000000 -0400 > > -+++ openjdk/jdk/src/share/classes/com/sun/jmx/snmp/SnmpPduTrap.java 2008-11-05 17:18:36.000000000 -0500 > > -@@ -78,6 +78,9 @@ > > - */ > > - public long timeStamp ; > > - > > -+ // TODO: IcedTea: I am a stub. > > -+ static public int trapAuthenticationFailure = 0; > > -+ > > - > > - > > - /** > > -diff -urN openjdk.orig/jdk/src/share/classes/java/beans/MetaData.java openjdk/jdk/src/share/classes/java/beans/MetaData.java > > ---- openjdk.orig/jdk/src/share/classes/java/beans/MetaData.java 2008-08-28 04:12:48.000000000 -0400 > > -+++ openjdk/jdk/src/share/classes/java/beans/MetaData.java 2008-11-05 17:18:36.000000000 -0500 > > -@@ -1628,7 +1628,7 @@ > > - } > > - > > - private static String[] getAnnotationValue(Constructor constructor) { > > -- ConstructorProperties annotation = constructor.getAnnotation(ConstructorProperties.class); > > -+ ConstructorProperties annotation = ((ConstructorProperties) constructor.getAnnotation(ConstructorProperties.class)); > > - return (annotation != null) > > - ? annotation.value() > > - : null; > > diff -r fcc8fa217369 patches/snmp.patch > > --- /dev/null Thu Jan 01 00:00:00 1970 +0000 > > +++ b/patches/snmp.patch Wed Nov 17 13:36:41 2010 +0000 > > @@ -0,0 +1,13 @@ > > +diff -urN openjdk.orig/jdk/src/share/classes/com/sun/jmx/snmp/SnmpPduTrap.java openjdk/jdk/src/share/classes/com/sun/jmx/snmp/SnmpPduTrap.java > > +--- openjdk.orig/jdk/src/share/classes/com/sun/jmx/snmp/SnmpPduTrap.java 2008-08-28 04:12:14.000000000 -0400 > > ++++ openjdk/jdk/src/share/classes/com/sun/jmx/snmp/SnmpPduTrap.java 2008-11-05 17:18:36.000000000 -0500 > > +@@ -78,6 +78,9 @@ > > + */ > > + public long timeStamp ; > > + > > ++ // TODO: IcedTea: I am a stub. > > ++ static public int trapAuthenticationFailure = 0; > > ++ > > + > > + > > + /** > -- Andrew :) Free Java Software Engineer Red Hat, Inc. (http://www.redhat.com) Support Free Java! Contribute to GNU Classpath and the OpenJDK http://www.gnu.org/software/classpath http://openjdk.java.net PGP Key: 94EFD9D8 (http://subkeys.pgp.net) Fingerprint = F8EF F1EA 401E 2E60 15FA 7927 142C 2591 94EF D9D8 From dbhole at redhat.com Wed Nov 17 13:57:12 2010 From: dbhole at redhat.com (Deepak Bhole) Date: Wed, 17 Nov 2010 16:57:12 -0500 Subject: [1.7] RFC: Allow NetX to be disabled In-Reply-To: <20101117214945.GG2939@redhat.com> References: <20101117141316.GD24703@rivendell.middle-earth.co.uk> <20101117214945.GG2939@redhat.com> Message-ID: <20101117215711.GI2939@redhat.com> * Deepak Bhole [2010-11-17 16:49]: > * Dr Andrew John Hughes [2010-11-17 09:32]: > > And here's the patch for 1.7, the most hideous of the three: > > > > The switch works perfectly. I am a but concerned about the webstart > patch being made conditional however (same for other branches too). That > patch relaxes some visibility restrictions on which icedtea-web relies. > > I am trying it out now to test the full extent of what is affected. > Scratch that. After having talked on IRC, I see that you've locally changed it to make the patch unconditional. Assuming that is the case now, the rest of the patch is fine. So okay to commit from me (patch below + webstart patch being unconditional). The same unconditional patching of netx.patch should be extended to 1.8 and 1.9. Thanks, Deepak > Deepak > > > 2010-11-11 Andrew John Hughes > > > > * Makefile.am: > > (NETX_DIR): Define only when NetX is enabled > > and set to syntax for jar (like LIVECONNECT_DIR). > > (ICEDTEA_PATCHES): Only apply icedtea-webstart.patch, > > icedtea-copy-plugs.patch and icedtea-webstart-umask.patch > > if NetX is enabled. > > (ICEDTEA_ECJ_PATCHES): Drop icedtea-ant.patch, redundant. > > (ICEDTEA_ENV): Only add IMPORT_BINARY_PLUGS and > > ALT_BINARY_PLUGS_PATH if NetX is enabled. > > (distclean-local): Add clean-about. > > (.PHONY): Likewise. > > (icedtea): Depend on about.stamp. Add > > ENABLE_NETX conditional. > > (icedtea-debug): Likewise. > > (netx): Add ENABLE_NETX conditional. > > (netx-dist): Likewise. > > (extra-class-files): Likewise. > > (about): New target (from extra-lib/about.jar). > > Add ENABLE_NETX conditional. > > (clean-about): New target to remove about.jar. > > (rt-source-files): Filter out NetX sources if not > > building NetX. > > (rt-class-files): Only add NetX resources if building > > NetX. > > (rt): Replace '-C lib/rt net' with NETX_DIR so NetX > > sources are only included if NetX is enabled. > > * acinclude.m4: > > (IT_CHECK_OLD_PLUGIN): Remove outdated version warning > > about old plugin. > > (IT_CHECK_PLUGIN_DEPENDENCIES): Require IT_CHECK_NETX. > > Disable both plugins if NetX is turned off. > > (IT_CHECK_NETX): Add --disable-webstart option. > > * patches/ecj/icedtea-ant.patch: > > Dropped. Was wrongly applied to openjdk, not > > openjdk-ecj and breaks when netx is turned off. > > * patches/icedtea-copy-plugs.patch: > > Only include segments related to plug installation > > and apply only when building NetX. > > * patches/getannotation-cast.patch, > > * patches/snmp.patch: > > New patches broken out from copy-plugs.patch which > > are always applied. > > > > Ok to commit? > > -- > > Andrew :) > > > > Free Java Software Engineer > > Red Hat, Inc. (http://www.redhat.com) > > > > Support Free Java! > > Contribute to GNU Classpath and the OpenJDK > > http://www.gnu.org/software/classpath > > http://openjdk.java.net > > PGP Key: 94EFD9D8 (http://subkeys.pgp.net) > > Fingerprint = F8EF F1EA 401E 2E60 15FA 7927 142C 2591 94EF D9D8 > > > diff -r fcc8fa217369 Makefile.am > > --- a/Makefile.am Mon Oct 18 12:52:22 2010 -0400 > > +++ b/Makefile.am Wed Nov 17 13:36:41 2010 +0000 > > @@ -138,6 +138,10 @@ > > endif > > endif > > > > +if ENABLE_NETX > > +NETX_DIR = -C lib/rt net > > +endif > > + > > if WITH_VISUALVM > > NB_PLATFORM= $(shell ls /usr/share/netbeans | grep platform | tail -n1) > > NB_APISUPPORT=$(shell ls /usr/share/netbeans | grep apisupport | tail -n1) > > @@ -272,12 +276,9 @@ > > patches/icedtea-lucene-crash.patch \ > > patches/icedtea-version.patch \ > > patches/icedtea-version-hotspot.patch \ > > - patches/icedtea-copy-plugs.patch \ > > patches/icedtea-text-relocations.patch \ > > patches/icedtea-ssl.patch \ > > $(PLUGIN_PATCH) \ > > - patches/icedtea-webstart.patch \ > > - patches/icedtea-webstart-umask.patch \ > > patches/icedtea-rmi_amd64.patch \ > > patches/icedtea-tools.patch \ > > patches/icedtea-timezone.patch \ > > @@ -370,7 +371,9 @@ > > patches/openjdk/6638712-wildcard_types.patch \ > > patches/openjdk/6650759-missing_inference.patch \ > > patches/numa_on_early_glibc.patch \ > > - patches/openjdk/6853592-badwindow-warning-fix.patch > > + patches/openjdk/6853592-badwindow-warning-fix.patch \ > > + patches/snmp.patch \ > > + patches/getannotation-cast.patch > > > > if WITH_ALT_HSBUILD > > ICEDTEA_PATCHES += patches/hotspot/$(HSBUILD)/openjdk-6886353-ignore_deoptimizealot.patch \ > > @@ -386,6 +389,13 @@ > > patches/hotspot/original/6539464-consistent-math.patch > > endif > > > > +if ENABLE_NETX > > +ICEDTEA_PATCHES += \ > > + patches/icedtea-webstart.patch \ > > + patches/icedtea-webstart-umask.patch \ > > + patches/icedtea-copy-plugs.patch > > +endif > > + > > if WITH_RHINO > > ICEDTEA_PATCHES += \ > > patches/icedtea-rhino.patch > > @@ -440,7 +450,7 @@ > > > > # Bootstrapping patches > > > > -ICEDTEA_ECJ_PATCHES = patches/ecj/icedtea-ant.patch \ > > +ICEDTEA_ECJ_PATCHES = \ > > patches/ecj/icedtea.patch \ > > patches/ecj/icedtea-hotspot.patch \ > > patches/ecj/icedtea-spp.patch \ > > @@ -476,7 +486,6 @@ > > PLUGIN_VERSION = $(ICEDTEA_NAME) $(PACKAGE_VERSION)$(ICEDTEA_REV)$(ICEDTEA_PKG) > > > > ICEDTEA_ENV = \ > > - IMPORT_BINARY_PLUGS=true \ > > ALT_JDK_IMPORT_PATH="$(ICEDTEA_BOOT_DIR)" \ > > ANT="$(ANT)" \ > > BUILD_NUMBER="$(OPENJDK_VERSION)" \ > > @@ -486,7 +495,6 @@ > > LANG="C" \ > > PATH="$(abs_top_builddir)/bootstrap/jdk1.6.0/bin:$(OS_PATH):$$PATH" \ > > ALT_BOOTDIR="$(ICEDTEA_BOOT_DIR)" \ > > - ALT_BINARY_PLUGS_PATH="$(abs_top_builddir)/bootstrap/jdk1.7.0" \ > > BUILD_ARCH_DIR="$(BUILD_ARCH_DIR)" \ > > ICEDTEA_RT="$(ICEDTEA_RT)" \ > > ICEDTEA_BUILD_DIR="$(ICEDTEA_BUILD_DIR)" \ > > @@ -519,6 +527,12 @@ > > DEBUG_CLASSFILES="true" \ > > DEBUG_BINARIES="true" > > > > +if ENABLE_NETX > > +ICEDTEA_ENV += \ > > + IMPORT_BINARY_PLUGS=true \ > > + ALT_BINARY_PLUGS_PATH="$(abs_top_builddir)/bootstrap/jdk1.7.0" > > +endif > > + > > if WITH_CACAO > > ICEDTEA_ENV += \ > > ALT_HOTSPOT_IMPORT_PATH="$(CACAO_IMPORT_PATH)" > > @@ -674,7 +688,7 @@ > > check-local: jtregcheck > > > > #FIXME (clean): Should become clean-local. > > -distclean-local: clean-copy clean-jtreg clean-jtreg-reports clean-pulse-java > > +distclean-local: clean-copy clean-jtreg clean-jtreg-reports clean-pulse-java clean-about > > rm -rf stamps > > rm -f rt-source-files.txt \ > > hotspot-tools-source-files.txt \ > > @@ -717,7 +731,7 @@ > > clean-tools-jar clean-shared-objects clean-visualvm clean-nbplatform \ > > clean-copy clean-hotspot-tools clean-rt $(ICEDTEAPLUGIN_CLEAN) \ > > $(ICEDTEANPPLUGIN_CLEAN) hotspot hotspot-helper clean-extra clean-jtreg \ > > - clean-jtreg-reports > > + clean-jtreg-reports clean-about > > > > env: > > @echo 'unset JAVA_HOME' > > @@ -1304,7 +1318,7 @@ > > stamps/hotspot-tools.stamp stamps/plugs.stamp \ > > stamps/ports.stamp stamps/patch.stamp stamps/overlay.stamp \ > > $(ICEDTEAPLUGIN_TARGET) \ > > - extra-lib/about.jar stamps/cacao.stamp stamps/visualvm.stamp \ > > + stamps/about.stamp stamps/cacao.stamp stamps/visualvm.stamp \ > > stamps/pulse-java.stamp stamps/rewrite-rhino.stamp > > $(ARCH_PREFIX) $(MAKE) \ > > $(ICEDTEA_ENV) \ > > @@ -1357,6 +1371,7 @@ > > cp -r netbeans/nbbuild/netbeans_visualvm/profiler3 \ > > $(BUILD_OUTPUT_DIR)/j2sdk-image/lib/visualvm > > endif > > +if ENABLE_NETX > > cp $(abs_top_srcdir)/rt/net/sourceforge/jnlp/resources/about.jnlp \ > > extra-lib/about.jar \ > > $(BUILD_OUTPUT_DIR)/j2re-image/lib ; \ > > @@ -1371,6 +1386,7 @@ > > cp $(NETX_SRCDIR)/javaws.1 \ > > $(BUILD_OUTPUT_DIR)/j2re-image/man/man1 ; \ > > fi > > +endif > > if ZERO_BUILD > > printf -- '-zero ALIASED_TO -server\n' >> $(BUILD_JRE_ARCH_DIR)/jvm.cfg > > endif > > @@ -1415,7 +1431,7 @@ > > stamps/hotspot-tools.stamp stamps/plugs.stamp \ > > stamps/ports.stamp stamps/patch.stamp stamps/overlay.stamp \ > > $(ICEDTEAPLUGIN_TARGET) \ > > - extra-lib/about.jar stamps/cacao.stamp stamps/visualvm.stamp \ > > + stamps/about.stamp stamps/cacao.stamp stamps/visualvm.stamp \ > > stamps/pulse-java.stamp stamps/rewrite-rhino.stamp > > $(ARCH_PREFIX) $(MAKE) \ > > $(ICEDTEA_ENV) \ > > @@ -1468,6 +1484,7 @@ > > cp -r netbeans/nbbuild/netbeans_visualvm/profiler3 \ > > $(BUILD_OUTPUT_DIR)/j2sdk-image/lib/visualvm > > endif > > +if ENABLE_NETX > > cp $(abs_top_srcdir)/rt/net/sourceforge/jnlp/resources/default.jnlp \ > > extra-lib/about.jar \ > > $(BUILD_OUTPUT_DIR)-debug/j2re-image/lib ; \ > > @@ -1482,6 +1499,7 @@ > > cp $(NETX_SRCDIR)/javaws.1 \ > > $(DEBUG_BUILD_OUTPUT_DIR)/j2re-image/man/man1 ; \ > > fi > > +endif > > if ZERO_BUILD > > printf -- '-zero ALIASED_TO -server\n' >> $(BUILD_DEBUG_JRE_ARCH_DIR)/jvm.cfg > > endif > > @@ -1685,6 +1703,7 @@ > > > > stamps/extra-class-files.stamp: extra-source-files.txt \ > > bootstrap/jdk1.7.0/jre/lib/rt-closed.jar > > +if ENABLE_NETX > > mkdir -p extra-lib > > if ! test -d $(ICEDTEA_BOOT_DIR) ; \ > > then \ > > @@ -1700,6 +1719,7 @@ > > fi > > cp -r $(abs_top_srcdir)/extra/net/sourceforge/jnlp/about/resources \ > > extra-lib/net/sourceforge/jnlp/about > > +endif > > mkdir -p stamps > > touch $@ > > > > @@ -1708,13 +1728,21 @@ > > rm -f stamps/extra-class-files.stamp > > rm -f extra-source-files.txt > > > > -extra-lib/about.jar: stamps/extra-class-files.stamp > > +stamps/about.stamp: stamps/extra-class-files.stamp > > +if ENABLE_NETX > > if ! test -d $(ICEDTEA_BOOT_DIR) ; \ > > then \ > > - $(JAR) cf $@ -C extra-lib net ; \ > > + $(JAR) cf extra-lib/about.jar -C extra-lib net ; \ > > else \ > > - $(ICEDTEA_BOOT_DIR)/bin/jar cf $@ -C extra-lib net ; \ > > + $(ICEDTEA_BOOT_DIR)/bin/jar cf extra-lib/about.jar -C extra-lib net ; \ > > fi > > +endif > > + mkdir -p stamps > > + touch $@ > > + > > +clean-about: > > + rm -f extra-lib/about.jar > > + rm -f stamps/about.stamp > > > > # PulseAudio based mixer > > # (pulse-java) > > @@ -2265,7 +2293,12 @@ > > # rt-closed.jar class files. > > rt-source-files.txt: stamps/replace-hotspot.stamp stamps/copy-source-files.stamp > > find $(abs_top_srcdir)/rt $(abs_top_builddir)/rt $(LIVECONNECT_SRCS) -name '*.java' \ > > - | sort -u > $@ > > + | sort -u > rt-source-files.tmp.txt > > +if ENABLE_NETX > > + mv rt-source-files.tmp.txt $@ > > +else > > + cat rt-source-files.tmp.txt | grep -v 'sourceforge' > $@ > > +endif > > > > stamps/rt-class-files.stamp: rt-source-files.txt > > mkdir -p lib/rt > > @@ -2283,8 +2316,10 @@ > > '$(OPENJDK_SOURCEPATH_DIRS):$(abs_top_builddir)/generated' \ > > -classpath \'\' -bootclasspath \'\' @$< ; \ > > fi > > +if ENABLE_NETX > > cp -r $(abs_top_srcdir)/rt/net/sourceforge/jnlp/resources \ > > lib/rt/net/sourceforge/jnlp/ > > +endif > > mkdir -p stamps > > touch stamps/rt-class-files.stamp > > > > @@ -2325,10 +2360,10 @@ > > if ! test -d $(ICEDTEA_BOOT_DIR) ; \ > > then \ > > $(JAR) cf $@ -C lib/rt com -C lib/rt java \ > > - -C lib/rt javax $(LIVECONNECT_DIR) -C lib/rt net -C lib/rt sun ; \ > > + -C lib/rt javax $(LIVECONNECT_DIR) $(NETX_DIR) -C lib/rt sun ; \ > > else \ > > $(ICEDTEA_BOOT_DIR)/bin/jar cf $@ -C lib/rt com -C lib/rt java \ > > - -C lib/rt javax $(LIVECONNECT_DIR) -C lib/rt net -C lib/rt sun ; \ > > + -C lib/rt javax $(LIVECONNECT_DIR) $(NETX_DIR) -C lib/rt sun ; \ > > fi > > if test -d bootstrap/ecj/jre/lib ; \ > > then \ > > diff -r fcc8fa217369 acinclude.m4 > > --- a/acinclude.m4 Mon Oct 18 12:52:22 2010 -0400 > > +++ b/acinclude.m4 Wed Nov 17 13:36:41 2010 +0000 > > @@ -1267,7 +1267,7 @@ > > [enable_plugin="${enableval}"], [enable_plugin="no"]) > > AC_MSG_RESULT(${enable_plugin}) > > if test "x${enable_plugin}" = "xyes"; then > > - AC_MSG_WARN([The old plugin is no longer maintained and will be removed in 1.7.5.]) > > + AC_MSG_WARN([The old plugin is no longer maintained.]) > > fi > > ]) > > > > @@ -1285,8 +1285,14 @@ > > [ > > dnl Check for plugin support headers and libraries. > > dnl FIXME: use unstable > > +AC_REQUIRE([IT_CHECK_NETX]) > > AC_REQUIRE([IT_CHECK_OLD_PLUGIN]) > > AC_REQUIRE([IT_CHECK_NEW_PLUGIN]) > > +if test "x${enable_netx}" = "xno" ; then > > + AC_MSG_WARN([Plugin can not be built without NetX; disabling plugin]) > > + enable_plugin=no; > > + enable_npplugin=no; > > +fi > > if test "x${enable_plugin}" = "xyes" -o "x${enable_npplugin}" = "xyes" ; then > > PKG_CHECK_MODULES(GTK, gtk+-2.0) > > PKG_CHECK_MODULES(GLIB, glib-2.0) > > @@ -1350,3 +1356,14 @@ > > AM_CONDITIONAL([HAS_PAX], test x"${it_cv_pax}" = "xyes") > > AC_PROVIDE([$0])dnl > > ]) > > + > > +AC_DEFUN_ONCE([IT_CHECK_NETX], > > +[ > > +AC_MSG_CHECKING([whether to build NetX]) > > +AC_ARG_ENABLE([webstart], > > + [AS_HELP_STRING([--disable-webstart], > > + [Disable compilation of Web Start support])], > > + [enable_netx="${enableval}"], [enable_netx="yes"]) > > +AC_MSG_RESULT(${enable_netx}) > > +AM_CONDITIONAL(ENABLE_NETX, test "x${enable_netx}" = "xyes") > > +]) > > diff -r fcc8fa217369 patches/ecj/icedtea-ant.patch > > --- a/patches/ecj/icedtea-ant.patch Mon Oct 18 12:52:22 2010 -0400 > > +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 > > @@ -1,20 +0,0 @@ > > ---- iopenjdk/jaxws/make/Makefile 2007-10-12 03:52:21.000000000 -0400 > > -+++ openjdk/jaxws/make/Makefile 2007-11-13 11:02:07.000000000 -0500 > > -@@ -80,6 +80,7 @@ > > - endif > > - > > - ifdef ALT_BOOTDIR > > -+ ANT_OPTIONS += -Dplugs=$(ALT_BINARY_PLUGS_PATH) > > - ANT_JAVA_HOME = JAVA_HOME=$(ALT_BOOTDIR) > > - endif > > - > > ---- iopenjdk/jaxws/make/build.xml 2007-10-12 03:52:21.000000000 -0400 > > -+++ openjdk/jaxws/make/build.xml 2007-11-13 11:02:43.000000000 -0500 > > -@@ -109,6 +109,7 @@ > > - memoryMaximumSize="${javac.memoryMaximumSize}" > > - target="${javac.target}" > > - excludes="com/sun/tools/internal/txw2/**"> > > -+ > > - > > - > > - > > diff -r fcc8fa217369 patches/getannotation-cast.patch > > --- /dev/null Thu Jan 01 00:00:00 1970 +0000 > > +++ b/patches/getannotation-cast.patch Wed Nov 17 13:36:41 2010 +0000 > > @@ -0,0 +1,24 @@ > > +diff -urN openjdk.orig/jdk/src/share/classes/com/sun/jmx/mbeanserver/OpenConverter.java openjdk/jdk/src/share/classes/com/sun/jmx/mbeanserver/OpenConverter.java > > +--- openjdk.orig/jdk/src/share/classes/com/sun/jmx/mbeanserver/OpenConverter.java 2008-08-28 04:12:12.000000000 -0400 > > ++++ openjdk/jdk/src/share/classes/com/sun/jmx/mbeanserver/OpenConverter.java 2008-11-05 17:18:36.000000000 -0500 > > +@@ -1154,7 +1154,7 @@ > > + Set getterIndexSets = newSet(); > > + for (Constructor constr : annotatedConstrList) { > > + String[] propertyNames = > > +- constr.getAnnotation(propertyNamesClass).value(); > > ++ ((ConstructorProperties)constr.getAnnotation(propertyNamesClass)).value(); > > + > > + Type[] paramTypes = constr.getGenericParameterTypes(); > > + if (paramTypes.length != propertyNames.length) { > > +diff -urN openjdk.orig/jdk/src/share/classes/java/beans/MetaData.java openjdk/jdk/src/share/classes/java/beans/MetaData.java > > +--- openjdk.orig/jdk/src/share/classes/java/beans/MetaData.java 2008-08-28 04:12:48.000000000 -0400 > > ++++ openjdk/jdk/src/share/classes/java/beans/MetaData.java 2008-11-05 17:18:36.000000000 -0500 > > +@@ -1628,7 +1628,7 @@ > > + } > > + > > + private static String[] getAnnotationValue(Constructor constructor) { > > +- ConstructorProperties annotation = constructor.getAnnotation(ConstructorProperties.class); > > ++ ConstructorProperties annotation = ((ConstructorProperties) constructor.getAnnotation(ConstructorProperties.class)); > > + return (annotation != null) > > + ? annotation.value() > > + : null; > > diff -r fcc8fa217369 patches/icedtea-copy-plugs.patch > > --- a/patches/icedtea-copy-plugs.patch Mon Oct 18 12:52:22 2010 -0400 > > +++ b/patches/icedtea-copy-plugs.patch Wed Nov 17 13:36:41 2010 +0000 > > @@ -123,40 +123,3 @@ > > > > # Binary plug start/complete messages > > > > -diff -urN openjdk.orig/jdk/src/share/classes/com/sun/jmx/mbeanserver/OpenConverter.java openjdk/jdk/src/share/classes/com/sun/jmx/mbeanserver/OpenConverter.java > > ---- openjdk.orig/jdk/src/share/classes/com/sun/jmx/mbeanserver/OpenConverter.java 2008-08-28 04:12:12.000000000 -0400 > > -+++ openjdk/jdk/src/share/classes/com/sun/jmx/mbeanserver/OpenConverter.java 2008-11-05 17:18:36.000000000 -0500 > > -@@ -1154,7 +1154,7 @@ > > - Set getterIndexSets = newSet(); > > - for (Constructor constr : annotatedConstrList) { > > - String[] propertyNames = > > -- constr.getAnnotation(propertyNamesClass).value(); > > -+ ((ConstructorProperties)constr.getAnnotation(propertyNamesClass)).value(); > > - > > - Type[] paramTypes = constr.getGenericParameterTypes(); > > - if (paramTypes.length != propertyNames.length) { > > -diff -urN openjdk.orig/jdk/src/share/classes/com/sun/jmx/snmp/SnmpPduTrap.java openjdk/jdk/src/share/classes/com/sun/jmx/snmp/SnmpPduTrap.java > > ---- openjdk.orig/jdk/src/share/classes/com/sun/jmx/snmp/SnmpPduTrap.java 2008-08-28 04:12:14.000000000 -0400 > > -+++ openjdk/jdk/src/share/classes/com/sun/jmx/snmp/SnmpPduTrap.java 2008-11-05 17:18:36.000000000 -0500 > > -@@ -78,6 +78,9 @@ > > - */ > > - public long timeStamp ; > > - > > -+ // TODO: IcedTea: I am a stub. > > -+ static public int trapAuthenticationFailure = 0; > > -+ > > - > > - > > - /** > > -diff -urN openjdk.orig/jdk/src/share/classes/java/beans/MetaData.java openjdk/jdk/src/share/classes/java/beans/MetaData.java > > ---- openjdk.orig/jdk/src/share/classes/java/beans/MetaData.java 2008-08-28 04:12:48.000000000 -0400 > > -+++ openjdk/jdk/src/share/classes/java/beans/MetaData.java 2008-11-05 17:18:36.000000000 -0500 > > -@@ -1628,7 +1628,7 @@ > > - } > > - > > - private static String[] getAnnotationValue(Constructor constructor) { > > -- ConstructorProperties annotation = constructor.getAnnotation(ConstructorProperties.class); > > -+ ConstructorProperties annotation = ((ConstructorProperties) constructor.getAnnotation(ConstructorProperties.class)); > > - return (annotation != null) > > - ? annotation.value() > > - : null; > > diff -r fcc8fa217369 patches/snmp.patch > > --- /dev/null Thu Jan 01 00:00:00 1970 +0000 > > +++ b/patches/snmp.patch Wed Nov 17 13:36:41 2010 +0000 > > @@ -0,0 +1,13 @@ > > +diff -urN openjdk.orig/jdk/src/share/classes/com/sun/jmx/snmp/SnmpPduTrap.java openjdk/jdk/src/share/classes/com/sun/jmx/snmp/SnmpPduTrap.java > > +--- openjdk.orig/jdk/src/share/classes/com/sun/jmx/snmp/SnmpPduTrap.java 2008-08-28 04:12:14.000000000 -0400 > > ++++ openjdk/jdk/src/share/classes/com/sun/jmx/snmp/SnmpPduTrap.java 2008-11-05 17:18:36.000000000 -0500 > > +@@ -78,6 +78,9 @@ > > + */ > > + public long timeStamp ; > > + > > ++ // TODO: IcedTea: I am a stub. > > ++ static public int trapAuthenticationFailure = 0; > > ++ > > + > > + > > + /** > From bugzilla-daemon at icedtea.classpath.org Wed Nov 17 14:23:33 2010 From: bugzilla-daemon at icedtea.classpath.org (bugzilla-daemon at icedtea.classpath.org) Date: Wed, 17 Nov 2010 22:23:33 +0000 Subject: [Bug 591] Unable to build openjdk/icedtea on Slack 13.1 Message-ID: http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=591 ------- Comment #21 from robert at linux-source.org 2010-11-17 22:23 ------- Found the possible issue. If I do this in the build script: if pkg-config --exists libxul; then MOZLIB="$(/usr/bin/pkg-config --libs libxul)" MOZFLG="$(/usr/bin/pkg-config --cflags libxul)" else echo "You don't have xulrunner install. We can't continue." exit 1 fi export MOZILLA_LIBS="${MOZLIB}" export MOZILLA_CFLAGS="${MOZFLG}" Then it ends in the error above, if I dont enable them, try to build it, then at one point it fail because it didn't find napi.h or something like that from xulrunner. I re-enable after it fails and just try again the script, the mozilla plugins gets build and then build is finished. Im not a programmer, but wtf?! Here is again the new build script, made some changes: if [ "$ARCH" = "i386" ]; then SLKCFLAGS="-O2 -march=i386 -mcpu=i686" elif [ "$ARCH" = "i486" ]; then SLKCFLAGS="-O2 -march=i486 -mtune=i686" elif [ "$ARCH" = "s390" ]; then SLKCFLAGS="-O2" elif [ "$ARCH" = "x86_64" ]; then SLKCFLAGS="-O2" fi if [ -r /etc/profile.d/apache-ant.sh ]; then source /etc/profile.d/apache-ant.sh else ANT_HOME="/usr/share/ant" fi build_gcj() { JVM=$1 BINDIR=/usr/bin rm -fr $JVM mkdir -p $JVM mkdir -p $JVM/bin mkdir -p $JVM/jre/bin mkdir -p $JVM/jre/lib/i386/client mkdir -p $JVM/jre/lib/i386/server mkdir -p $JVM/lib ln -sf $BINDIR/gjar $JVM/bin/jar ln -sf $BINDIR/grmic $JVM/bin/rmic ln -sf $BINDIR/gjavah $JVM/bin/javah ln -sf $BINDIR/jcf-dump $JVM/bin/javap ln -sf $BINDIR/gappletviewer $JVM/bin/appletviewer ln -sf $BINDIR/grmiregistry $JVM/bin/rmiregistry ln -sf $BINDIR/grmiregistry $JVM/jre/bin/rmiregistry ln -sf $BINDIR/gkeytool $JVM/bin/keytool ln -sf $BINDIR/gkeytool $JVM/jre/bin/keytool ln -sf $BINDIR/gij $JVM/bin/java ln -sf $BINDIR/gcj $JVM/bin/javac ln -sf /usr/lib/gcj-4.5.1-11/libjvm.so $JVM/jre/lib/i386/client/libjvm.so ln -sf /usr/lib/gcj-4.5.1-11/libjvm.so $JVM/jre/lib/i386/server/libjvm.so ln -sf /usr/lib/gcj-4.5.1-11/libjawt.so $JVM/jre/lib/i386/libjawt.so ln -sf /usr/share/java/libgcj-4.5.1.jar $JVM/jre/lib/rt.jar ln -sf /usr/share/java/libgcj-tools-4.5.1.jar $JVM/lib/tools.jar ln -sf /usr/include/c++/4.5.1/gnu/java $JVM/include } # Exit on most errors set -e # Setup some temporary variables unset JAVA_HOME unset CLASSPATH unset MAKEFLAGS if pkg-config --exists libxul; then MOZLIB="$(/usr/bin/pkg-config --libs libxul)" MOZFLG="$(/usr/bin/pkg-config --cflags libxul)" else echo "You don't have xulrunner install. We can't continue." exit 1 fi if [ -r /proc/cpuinfo ]; then CPUS=$(cat /proc/cpuinfo |grep -w MHz|wc -l) PARALLEL_JOBS=$((${CPUS} + 1)) else PARALLEL_JOBS=1 fi _jdkver=b20 _javaver=6 _jvmdir=usr/lib/jvm/java-${_javaver}-openjdk _icedtea=icedtea6-1.9.1 _gcjjvm=/usr/lib/jvm/gcj-jdk rm -rf $PKG mkdir -p $TMP $PKG $OUTPUT #mkdir -p $PKG/${_jvmdir} #mkdir -p $PKG/${_jvmdir}/jre #mkdir -p $PKG/usr/share/applications #mkdir -p $PKG/usr/man/man1 #mkdir -p $PKG/usr/lib/openjdk-plugins cd $TMP tar xvf $CWD/${_icedtea}.tar.gz || exit 1 cd ${_icedtea} zcat $CWD/add_fontconfig_patch_for_slack.patch.gz | patch -p1 || exit 1 chmod -R u+w,go+r-w,a-s . chown -R root:root . build_gcj ${_gcjjvm} ln -sf $CWD/ecj-3.6.1.jar /tmp/ecj.jar ln -sf $CWD/openjdk-${_javaver}-src-${_jdkver}-21_jun_2010.tar.gz . ln -sf $CWD/hotspot.tar.gz . cp -f $CWD/fontconfig-paths.patch ${TMP}/${_icedtea}/patches/ autoreconf -i export HOTSPOT_BUILD_JOBS="${PARALLEL_JOBS}" && # export MOZILLA_LIBS="${MOZLIB}" && # export MOZILLA_CFLAGS="${MOZFLG}" && export CFLAGS="${CFLAGS} ${SLKCFLAGS}" && export CXXFLAGS="${CXXFLAGS} ${SLKCFLAGS}" && ./configure \ --with-parallel-jobs=${HOTSPOT_BUILD_JOBS} \ --with-ant-home=${ANT_HOME} \ --with-hotspot-src-zip=hotspot.tar.gz \ --with-jaxp-drop-zip=$CWD/jdk6-jaxp-${_jdkver}.zip \ --with-jaxws-drop-zip=$CWD/jdk6-jaxws-${_jdkver}.zip \ --with-jaf-drop-zip=$CWD/jdk6-jaf-${_jdkver}.zip \ --with-xalan2-jar=/usr/share/java/xalan.jar \ --with-gcj-home=${_gcjjvm} \ --with-javac=${CWD}/javac \ --with-ecj \ --with-ecj-jar=${CWD}/ecj-3.6.1.jar \ --disable-docs \ --build=$ARCH-slackware-linux \ --host=$ARCH-slackware-linux \ --target=$ARCH-slackware-linux # Build export LD_PRELOAD="" make -j${PARALLEL_JOBS} || make || exit 1 -- Configure bugmail: http://icedtea.classpath.org/bugzilla/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are the assignee for the bug, or are watching the assignee. From ramakanth.varala at gmail.com Wed Nov 17 22:01:11 2010 From: ramakanth.varala at gmail.com (ramakanth varala) Date: Thu, 18 Nov 2010 11:31:11 +0530 Subject: no gcj-jdk + no ecj + building openjdk In-Reply-To: <20101117135939.GA24703@rivendell.middle-earth.co.uk> References: <20101117093002.GB3460@redhat.com> <20101117135939.GA24703@rivendell.middle-earth.co.uk> Message-ID: Thanks Dr Andrew, for your reply. My target is to get openjdk build for target board (ARM) . In the process i thought i would build openjdk first to my host machine i.e of fedora 8. Iam confused of lot of things here 1) what is icedtea ? 2) How is icedtea related to openjdk? 3) can i build this for the arm board ? 4) can you point me to proper documentation where i can get a clear picture of cross-compilation to arm? In short iam just running out of the options to solve my problem. your suggestion would be highly appreaciated in this regard. On Wed, Nov 17, 2010 at 7:29 PM, Dr Andrew John Hughes wrote: > On 09:30 Wed 17 Nov , Gary Benson wrote: >> Hi Ramakanth, >> >> It looks like you're using IcedTea, so I'm copying in distro-pkg-dev >> which is the mailing list most IcedTea stuff is discussed on. >> >> It also looks like you're using Fedora 8, which is very old. I'm not >> saying you won't be able to do a build, but you'll likely run into >> problems that upgrading would solve. So unless there you have a very >> compelling reason to stick on Fedora 8 I would suggest upgrading to >> the latest as your first step. >> >> In answer to your question, ecj is the Java compiler from Eclipse, >> and it's the Java compiler used by jdk-gcj-compat. You do need an >> existing JDK to build OpenJDK, and jdk-gcj-compat is probably the >> only free one available for Fedora 8. >> >> Cheers, >> Gary >> >> Ramakanth Varala wrote: >> > Hello all, >> > >> > Iam trying to build openjdk for my fedora plat form . >> > i like to build openjdk without ecj ( i guess this is eclipse related >> > and eclipse IDE is not needed ) >> > > > ecj is a java compiler and you need a Java compiler to build IcedTea. > It does come from the Eclipse IDE but you don't need any of the IDE > installed to use it. It's a command-line tool. > > On Fedora 8, I believe you should have the option of either installing > java-1.5.0-gcj (recommended) or java-1.7.0-icedtea. Using the latter > will require building with the --with-openjdk flag. > > The simplest option, however, is probably just to upgrade to a newer > version of Fedora and perform 'yum install java-1.6.0-openjdk'. > >> > Currently iam getting the error as below . >> > >> > checking for distribution package version... none >> > checking build identification... Built on Fedora release 8 (Werewolf) >> > (Wed Nov 17 12:03:35 IST 2010) >> > checking for a GCJ JDK home directory... >> > configure: error: "A GCJ JDK home directory could not be found." >> > >> > >> > can any body help me in this. >> > >> > regards >> >> -- >> http://gbenson.net/ > > -- > Andrew :) > > Free Java Software Engineer > Red Hat, Inc. (http://www.redhat.com) > > Support Free Java! > Contribute to GNU Classpath and the OpenJDK > http://www.gnu.org/software/classpath > http://openjdk.java.net > PGP Key: 94EFD9D8 (http://subkeys.pgp.net) > Fingerprint = F8EF F1EA 401E 2E60 15FA 7927 142C 2591 94EF D9D8 > From mark at klomp.org Thu Nov 18 00:27:18 2010 From: mark at klomp.org (Mark Wielaard) Date: Thu, 18 Nov 2010 09:27:18 +0100 Subject: no gcj-jdk + no ecj + building openjdk In-Reply-To: References: <20101117093002.GB3460@redhat.com> <20101117135939.GA24703@rivendell.middle-earth.co.uk> Message-ID: <1290068838.2846.8.camel@springer.wildebeest.org> On Thu, 2010-11-18 at 11:31 +0530, ramakanth varala wrote: > My target is to get openjdk build for target board (ARM) . > > In the process i thought i would build openjdk first to my host > machine i.e of fedora 8. Fedora 8 is very outdated (3 years old). Although IcedTea (7) has been bootstrapped on it, it isn't maintained anymore. You might have better luck if you update to a more modern version (Fedora 14 is the latest). > Iam confused of lot of things here > > 1) what is icedtea ? IcedTea is a fully free Java Runtime and Development Environment. Build upon OpenJDK extended with developer, user and web browser tools like an Applet viewer, Java Webstart (LiveConnect and JNLP) support and VisualVM, a lightweight profiler and troubleshooting tool. Bootstraps with and provides alternative runtimes, tools and class library support for Java and Java-like environments, like the Zero interpreter, Shark JIT, GCJ native compiler, GNU Classpath core libraries and Cacao. See http://icedtea.classpath.org/ > 2) How is icedtea related to openjdk? OpenJDK is a free reference implementation for the Java Standard Edition Developer Kit. Includes an execution environment, development tools and a class library for the Java programming language. IcedTea extends this. > 3) can i build this for the arm board ? Yes, it should natively build on an arm board. But that might be slow, so you might want to cross-compile... > 4) can you point me to proper documentation where i can get a clear > picture of cross-compilation to arm? See http://icedtea.classpath.org/wiki/CrossCompileFaq Cheers, Mark From bugzilla-daemon at icedtea.classpath.org Thu Nov 18 01:43:52 2010 From: bugzilla-daemon at icedtea.classpath.org (bugzilla-daemon at icedtea.classpath.org) Date: Thu, 18 Nov 2010 09:43:52 +0000 Subject: [Bug 590] Unable to activate (click) checkboxes in jtable Message-ID: http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=590 ------- Comment #4 from mm at michaelamerz.com 2010-11-18 09:43 ------- (In reply to comment #1) > Sorry for the missing version. It looks like the last round of updates weren't > added. Fixed now. > > Can you please provide a reproducer for this issue? > Done. See http://www.closexchange.com/test/applet.html -- Configure bugmail: http://icedtea.classpath.org/bugzilla/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are the assignee for the bug, or are watching the assignee. From andrew at icedtea.classpath.org Thu Nov 18 05:01:54 2010 From: andrew at icedtea.classpath.org (andrew at icedtea.classpath.org) Date: Thu, 18 Nov 2010 13:01:54 +0000 Subject: /hg/release/icedtea6-1.7: 2 new changesets Message-ID: changeset 6c21e99512e1 in /hg/release/icedtea6-1.7 details: http://icedtea.classpath.org/hg/release/icedtea6-1.7?cmd=changeset;node=6c21e99512e1 author: Andrew John Hughes date: Thu Nov 18 12:59:14 2010 +0000 Allow NetX to be disabled. 2010-11-18 Andrew John Hughes * Makefile.am: (NETX_DIR): Define only when NetX is enabled and set to syntax for jar (like LIVECONNECT_DIR). (ICEDTEA_PATCHES): Only apply icedtea-webstart.patch, icedtea-copy-plugs.patch and icedtea-webstart-umask.patch if NetX is enabled. Add snmp.patch, getannotation-cast.patch and applet_hole.patch which have been split out from these conditional patches. (ICEDTEA_ECJ_PATCHES): Drop icedtea- ant.patch, redundant. (ICEDTEA_ENV): Only add IMPORT_BINARY_PLUGS and ALT_BINARY_PLUGS_PATH if NetX is enabled. (distclean-local): Add clean-about. (.PHONY): Likewise. (icedtea): Depend on about.stamp. Add ENABLE_NETX conditional. (icedtea-debug): Likewise. (netx): Add ENABLE_NETX conditional. (netx-dist): Likewise. (extra-class-files): Likewise. (about): New target (from extra-lib/about.jar). Add ENABLE_NETX conditional. (clean-about): New target to remove about.jar. (rt-source- files): Filter out NetX sources if not building NetX. (rt-class-files): Only add NetX resources if building NetX. (rt): Replace '-C lib/rt net' with NETX_DIR so NetX sources are only included if NetX is enabled. * acinclude.m4: (IT_CHECK_OLD_PLUGIN): Remove outdated version warning about old plugin. (IT_CHECK_PLUGIN_DEPENDENCIES): Require IT_CHECK_NETX. Disable both plugins if NetX is turned off. (IT_CHECK_NETX): Add --disable-webstart option. * patches/ecj/icedtea-ant.patch: Dropped. Was wrongly applied to openjdk, not openjdk-ecj and breaks when netx is turned off. * patches/icedtea-copy-plugs.patch: Only include segments related to plug installation and apply only when building NetX. * patches/getannotation-cast.patch, * patches/snmp.patch: New patches broken out from copy- plugs.patch which are always applied. * patches/applet_hole.patch: Split applet class patching into separate file to be applied in all builds. * patches/icedtea-webstart.patch: Include only the Makefile additions to build the jaxws binary and documentation. changeset 2eff7c2e01d1 in /hg/release/icedtea6-1.7 details: http://icedtea.classpath.org/hg/release/icedtea6-1.7?cmd=changeset;node=2eff7c2e01d1 author: Andrew John Hughes date: Thu Nov 18 13:01:47 2010 +0000 Bump to 1.7.6pre and update NEWS. 2010-11-18 Andrew John Hughes * NEWS: Add 1.7.6. * configure.ac: Bump to 1.7.6pre. diffstat: 10 files changed, 177 insertions(+), 184 deletions(-) ChangeLog | 58 ++++++++++++++++++++ Makefile.am | 70 ++++++++++++++++++------ NEWS | 10 +++ acinclude.m4 | 19 ++++++ configure.ac | 2 patches/ecj/icedtea-ant.patch | 20 ------- patches/getannotation-cast.patch | 24 ++++++++ patches/icedtea-copy-plugs.patch | 37 ------------- patches/icedtea-webstart.patch | 108 -------------------------------------- patches/snmp.patch | 13 ++++ diffs (truncated from 605 to 500 lines): diff -r fcc8fa217369 -r 2eff7c2e01d1 ChangeLog --- a/ChangeLog Mon Oct 18 12:52:22 2010 -0400 +++ b/ChangeLog Thu Nov 18 13:01:47 2010 +0000 @@ -1,3 +1,61 @@ 2010-10-18 Omair Majid + + * NEWS: Add 1.7.6. + * configure.ac: Bump to 1.7.6pre. + +2010-11-18 Andrew John Hughes + + * Makefile.am: + (NETX_DIR): Define only when NetX is enabled + and set to syntax for jar (like LIVECONNECT_DIR). + (ICEDTEA_PATCHES): Only apply icedtea-webstart.patch, + icedtea-copy-plugs.patch and icedtea-webstart-umask.patch + if NetX is enabled. Add snmp.patch, getannotation-cast.patch + and applet_hole.patch which have been split out from these + conditional patches. + (ICEDTEA_ECJ_PATCHES): Drop icedtea-ant.patch, redundant. + (ICEDTEA_ENV): Only add IMPORT_BINARY_PLUGS and + ALT_BINARY_PLUGS_PATH if NetX is enabled. + (distclean-local): Add clean-about. + (.PHONY): Likewise. + (icedtea): Depend on about.stamp. Add + ENABLE_NETX conditional. + (icedtea-debug): Likewise. + (netx): Add ENABLE_NETX conditional. + (netx-dist): Likewise. + (extra-class-files): Likewise. + (about): New target (from extra-lib/about.jar). + Add ENABLE_NETX conditional. + (clean-about): New target to remove about.jar. + (rt-source-files): Filter out NetX sources if not + building NetX. + (rt-class-files): Only add NetX resources if building + NetX. + (rt): Replace '-C lib/rt net' with NETX_DIR so NetX + sources are only included if NetX is enabled. + * acinclude.m4: + (IT_CHECK_OLD_PLUGIN): Remove outdated version warning + about old plugin. + (IT_CHECK_PLUGIN_DEPENDENCIES): Require IT_CHECK_NETX. + Disable both plugins if NetX is turned off. + (IT_CHECK_NETX): Add --disable-webstart option. + * patches/ecj/icedtea-ant.patch: + Dropped. Was wrongly applied to openjdk, not + openjdk-ecj and breaks when netx is turned off. + * patches/icedtea-copy-plugs.patch: + Only include segments related to plug installation + and apply only when building NetX. + * patches/getannotation-cast.patch, + * patches/snmp.patch: + New patches broken out from copy-plugs.patch which + are always applied. + * patches/applet_hole.patch: + Split applet class patching into separate + file to be applied in all builds. + * patches/icedtea-webstart.patch: + Include only the Makefile additions to build + the jaxws binary and documentation. + 2010-10-18 Omair Majid * netx/net/sourceforge/jnlp/security/VariableX509TrustManager.java: diff -r fcc8fa217369 -r 2eff7c2e01d1 Makefile.am --- a/Makefile.am Mon Oct 18 12:52:22 2010 -0400 +++ b/Makefile.am Thu Nov 18 13:01:47 2010 +0000 @@ -136,6 +136,10 @@ NPPLUGIN_DIR = NPPLUGIN_DIR = LIVECONNECT_SRCS = endif +endif + +if ENABLE_NETX +NETX_DIR = -C lib/rt net endif if WITH_VISUALVM @@ -272,12 +276,9 @@ ICEDTEA_PATCHES = \ patches/icedtea-lucene-crash.patch \ patches/icedtea-version.patch \ patches/icedtea-version-hotspot.patch \ - patches/icedtea-copy-plugs.patch \ patches/icedtea-text-relocations.patch \ patches/icedtea-ssl.patch \ $(PLUGIN_PATCH) \ - patches/icedtea-webstart.patch \ - patches/icedtea-webstart-umask.patch \ patches/icedtea-rmi_amd64.patch \ patches/icedtea-tools.patch \ patches/icedtea-timezone.patch \ @@ -370,7 +371,10 @@ ICEDTEA_PATCHES = \ patches/openjdk/6638712-wildcard_types.patch \ patches/openjdk/6650759-missing_inference.patch \ patches/numa_on_early_glibc.patch \ - patches/openjdk/6853592-badwindow-warning-fix.patch + patches/openjdk/6853592-badwindow-warning-fix.patch \ + patches/snmp.patch \ + patches/getannotation-cast.patch \ + patches/applet_hole.patch if WITH_ALT_HSBUILD ICEDTEA_PATCHES += patches/hotspot/$(HSBUILD)/openjdk-6886353-ignore_deoptimizealot.patch \ @@ -384,6 +388,13 @@ ICEDTEA_PATCHES += patches/hotspot/origi patches/hotspot/original/icedtea-6793825-includedb.patch \ patches/openjdk/6822370-reentrantreadwritelock.patch \ patches/hotspot/original/6539464-consistent-math.patch +endif + +if ENABLE_NETX +ICEDTEA_PATCHES += \ + patches/icedtea-webstart.patch \ + patches/icedtea-webstart-umask.patch \ + patches/icedtea-copy-plugs.patch endif if WITH_RHINO @@ -440,7 +451,7 @@ ICEDTEA_PATCHES += $(DISTRIBUTION_PATCHE # Bootstrapping patches -ICEDTEA_ECJ_PATCHES = patches/ecj/icedtea-ant.patch \ +ICEDTEA_ECJ_PATCHES = \ patches/ecj/icedtea.patch \ patches/ecj/icedtea-hotspot.patch \ patches/ecj/icedtea-spp.patch \ @@ -476,7 +487,6 @@ PLUGIN_VERSION = $(ICEDTEA_NAME) $(PACKA PLUGIN_VERSION = $(ICEDTEA_NAME) $(PACKAGE_VERSION)$(ICEDTEA_REV)$(ICEDTEA_PKG) ICEDTEA_ENV = \ - IMPORT_BINARY_PLUGS=true \ ALT_JDK_IMPORT_PATH="$(ICEDTEA_BOOT_DIR)" \ ANT="$(ANT)" \ BUILD_NUMBER="$(OPENJDK_VERSION)" \ @@ -486,7 +496,6 @@ ICEDTEA_ENV = \ LANG="C" \ PATH="$(abs_top_builddir)/bootstrap/jdk1.6.0/bin:$(OS_PATH):$$PATH" \ ALT_BOOTDIR="$(ICEDTEA_BOOT_DIR)" \ - ALT_BINARY_PLUGS_PATH="$(abs_top_builddir)/bootstrap/jdk1.7.0" \ BUILD_ARCH_DIR="$(BUILD_ARCH_DIR)" \ ICEDTEA_RT="$(ICEDTEA_RT)" \ ICEDTEA_BUILD_DIR="$(ICEDTEA_BUILD_DIR)" \ @@ -518,6 +527,12 @@ ICEDTEA_ENV = \ DERIVATIVE_ID="$(ICEDTEA_NAME) $(PACKAGE_VERSION)$(ICEDTEA_REV)" \ DEBUG_CLASSFILES="true" \ DEBUG_BINARIES="true" + +if ENABLE_NETX +ICEDTEA_ENV += \ + IMPORT_BINARY_PLUGS=true \ + ALT_BINARY_PLUGS_PATH="$(abs_top_builddir)/bootstrap/jdk1.7.0" +endif if WITH_CACAO ICEDTEA_ENV += \ @@ -674,7 +689,7 @@ check-local: jtregcheck check-local: jtregcheck #FIXME (clean): Should become clean-local. -distclean-local: clean-copy clean-jtreg clean-jtreg-reports clean-pulse-java +distclean-local: clean-copy clean-jtreg clean-jtreg-reports clean-pulse-java clean-about rm -rf stamps rm -f rt-source-files.txt \ hotspot-tools-source-files.txt \ @@ -717,7 +732,7 @@ install: clean-tools-jar clean-shared-objects clean-visualvm clean-nbplatform \ clean-copy clean-hotspot-tools clean-rt $(ICEDTEAPLUGIN_CLEAN) \ $(ICEDTEANPPLUGIN_CLEAN) hotspot hotspot-helper clean-extra clean-jtreg \ - clean-jtreg-reports + clean-jtreg-reports clean-about env: @echo 'unset JAVA_HOME' @@ -1304,7 +1319,7 @@ stamps/icedtea.stamp: stamps/bootstrap-d stamps/hotspot-tools.stamp stamps/plugs.stamp \ stamps/ports.stamp stamps/patch.stamp stamps/overlay.stamp \ $(ICEDTEAPLUGIN_TARGET) \ - extra-lib/about.jar stamps/cacao.stamp stamps/visualvm.stamp \ + stamps/about.stamp stamps/cacao.stamp stamps/visualvm.stamp \ stamps/pulse-java.stamp stamps/rewrite-rhino.stamp $(ARCH_PREFIX) $(MAKE) \ $(ICEDTEA_ENV) \ @@ -1357,6 +1372,7 @@ if WITH_VISUALVM cp -r netbeans/nbbuild/netbeans_visualvm/profiler3 \ $(BUILD_OUTPUT_DIR)/j2sdk-image/lib/visualvm endif +if ENABLE_NETX cp $(abs_top_srcdir)/rt/net/sourceforge/jnlp/resources/about.jnlp \ extra-lib/about.jar \ $(BUILD_OUTPUT_DIR)/j2re-image/lib ; \ @@ -1371,6 +1387,7 @@ endif cp $(NETX_SRCDIR)/javaws.1 \ $(BUILD_OUTPUT_DIR)/j2re-image/man/man1 ; \ fi +endif if ZERO_BUILD printf -- '-zero ALIASED_TO -server\n' >> $(BUILD_JRE_ARCH_DIR)/jvm.cfg endif @@ -1415,7 +1432,7 @@ stamps/icedtea-debug.stamp: stamps/boots stamps/hotspot-tools.stamp stamps/plugs.stamp \ stamps/ports.stamp stamps/patch.stamp stamps/overlay.stamp \ $(ICEDTEAPLUGIN_TARGET) \ - extra-lib/about.jar stamps/cacao.stamp stamps/visualvm.stamp \ + stamps/about.stamp stamps/cacao.stamp stamps/visualvm.stamp \ stamps/pulse-java.stamp stamps/rewrite-rhino.stamp $(ARCH_PREFIX) $(MAKE) \ $(ICEDTEA_ENV) \ @@ -1468,6 +1485,7 @@ if WITH_VISUALVM cp -r netbeans/nbbuild/netbeans_visualvm/profiler3 \ $(BUILD_OUTPUT_DIR)/j2sdk-image/lib/visualvm endif +if ENABLE_NETX cp $(abs_top_srcdir)/rt/net/sourceforge/jnlp/resources/default.jnlp \ extra-lib/about.jar \ $(BUILD_OUTPUT_DIR)-debug/j2re-image/lib ; \ @@ -1482,6 +1500,7 @@ endif cp $(NETX_SRCDIR)/javaws.1 \ $(DEBUG_BUILD_OUTPUT_DIR)/j2re-image/man/man1 ; \ fi +endif if ZERO_BUILD printf -- '-zero ALIASED_TO -server\n' >> $(BUILD_DEBUG_JRE_ARCH_DIR)/jvm.cfg endif @@ -1685,6 +1704,7 @@ extra-source-files.txt: stamps/extra-class-files.stamp: extra-source-files.txt \ bootstrap/jdk1.7.0/jre/lib/rt-closed.jar +if ENABLE_NETX mkdir -p extra-lib if ! test -d $(ICEDTEA_BOOT_DIR) ; \ then \ @@ -1700,6 +1720,7 @@ stamps/extra-class-files.stamp: extra-so fi cp -r $(abs_top_srcdir)/extra/net/sourceforge/jnlp/about/resources \ extra-lib/net/sourceforge/jnlp/about +endif mkdir -p stamps touch $@ @@ -1708,13 +1729,21 @@ clean-extra: rm -f stamps/extra-class-files.stamp rm -f extra-source-files.txt -extra-lib/about.jar: stamps/extra-class-files.stamp +stamps/about.stamp: stamps/extra-class-files.stamp +if ENABLE_NETX if ! test -d $(ICEDTEA_BOOT_DIR) ; \ then \ - $(JAR) cf $@ -C extra-lib net ; \ + $(JAR) cf extra-lib/about.jar -C extra-lib net ; \ else \ - $(ICEDTEA_BOOT_DIR)/bin/jar cf $@ -C extra-lib net ; \ + $(ICEDTEA_BOOT_DIR)/bin/jar cf extra-lib/about.jar -C extra-lib net ; \ fi +endif + mkdir -p stamps + touch $@ + +clean-about: + rm -f extra-lib/about.jar + rm -f stamps/about.stamp # PulseAudio based mixer # (pulse-java) @@ -2265,7 +2294,12 @@ clean-copy: # rt-closed.jar class files. rt-source-files.txt: stamps/replace-hotspot.stamp stamps/copy-source-files.stamp find $(abs_top_srcdir)/rt $(abs_top_builddir)/rt $(LIVECONNECT_SRCS) -name '*.java' \ - | sort -u > $@ + | sort -u > rt-source-files.tmp.txt +if ENABLE_NETX + mv rt-source-files.tmp.txt $@ +else + cat rt-source-files.tmp.txt | grep -v 'sourceforge' > $@ +endif stamps/rt-class-files.stamp: rt-source-files.txt mkdir -p lib/rt @@ -2283,8 +2317,10 @@ stamps/rt-class-files.stamp: rt-source-f '$(OPENJDK_SOURCEPATH_DIRS):$(abs_top_builddir)/generated' \ -classpath \'\' -bootclasspath \'\' @$< ; \ fi +if ENABLE_NETX cp -r $(abs_top_srcdir)/rt/net/sourceforge/jnlp/resources \ lib/rt/net/sourceforge/jnlp/ +endif mkdir -p stamps touch stamps/rt-class-files.stamp @@ -2325,10 +2361,10 @@ bootstrap/jdk1.7.0/jre/lib/rt-closed.jar if ! test -d $(ICEDTEA_BOOT_DIR) ; \ then \ $(JAR) cf $@ -C lib/rt com -C lib/rt java \ - -C lib/rt javax $(LIVECONNECT_DIR) -C lib/rt net -C lib/rt sun ; \ + -C lib/rt javax $(LIVECONNECT_DIR) $(NETX_DIR) -C lib/rt sun ; \ else \ $(ICEDTEA_BOOT_DIR)/bin/jar cf $@ -C lib/rt com -C lib/rt java \ - -C lib/rt javax $(LIVECONNECT_DIR) -C lib/rt net -C lib/rt sun ; \ + -C lib/rt javax $(LIVECONNECT_DIR) $(NETX_DIR) -C lib/rt sun ; \ fi if test -d bootstrap/ecj/jre/lib ; \ then \ diff -r fcc8fa217369 -r 2eff7c2e01d1 NEWS --- a/NEWS Mon Oct 18 12:52:22 2010 -0400 +++ b/NEWS Thu Nov 18 13:01:47 2010 +0000 @@ -7,6 +7,16 @@ GX - http://bugs.gentoo.org/show_bug.cg GX - http://bugs.gentoo.org/show_bug.cgi?id=X CVE-XXXX-YYYY: http://www.cve.mitre.org/cgi-bin/cvename.cgi?name=XXXX-YYYY + +New in release 1.7.6 (2010-11-XX): + +* Allow the building of NetX to be disabled. +* Switch to the IcedTea server for JAXP, JAF and JAXWS tarballs. +* Backports + - S6853592: VM test nsk.regression.b4261880 fails with "X Error of failed request: BadWindow" + inconsistently. +* NetX + - Do not prompt user multiple times for the same certificate. New in release 1.7.5 (2010-10-13): diff -r fcc8fa217369 -r 2eff7c2e01d1 acinclude.m4 --- a/acinclude.m4 Mon Oct 18 12:52:22 2010 -0400 +++ b/acinclude.m4 Thu Nov 18 13:01:47 2010 +0000 @@ -1267,7 +1267,7 @@ AC_ARG_ENABLE([plugin], [enable_plugin="${enableval}"], [enable_plugin="no"]) AC_MSG_RESULT(${enable_plugin}) if test "x${enable_plugin}" = "xyes"; then - AC_MSG_WARN([The old plugin is no longer maintained and will be removed in 1.7.5.]) + AC_MSG_WARN([The old plugin is no longer maintained.]) fi ]) @@ -1285,8 +1285,14 @@ AC_DEFUN_ONCE([IT_CHECK_PLUGIN_DEPENDENC [ dnl Check for plugin support headers and libraries. dnl FIXME: use unstable +AC_REQUIRE([IT_CHECK_NETX]) AC_REQUIRE([IT_CHECK_OLD_PLUGIN]) AC_REQUIRE([IT_CHECK_NEW_PLUGIN]) +if test "x${enable_netx}" = "xno" ; then + AC_MSG_WARN([Plugin can not be built without NetX; disabling plugin]) + enable_plugin=no; + enable_npplugin=no; +fi if test "x${enable_plugin}" = "xyes" -o "x${enable_npplugin}" = "xyes" ; then PKG_CHECK_MODULES(GTK, gtk+-2.0) PKG_CHECK_MODULES(GLIB, glib-2.0) @@ -1350,3 +1356,14 @@ AM_CONDITIONAL([HAS_PAX], test x"${it_cv AM_CONDITIONAL([HAS_PAX], test x"${it_cv_pax}" = "xyes") AC_PROVIDE([$0])dnl ]) + +AC_DEFUN_ONCE([IT_CHECK_NETX], +[ +AC_MSG_CHECKING([whether to build NetX]) +AC_ARG_ENABLE([webstart], + [AS_HELP_STRING([--disable-webstart], + [Disable compilation of Web Start support])], + [enable_netx="${enableval}"], [enable_netx="yes"]) +AC_MSG_RESULT(${enable_netx}) +AM_CONDITIONAL(ENABLE_NETX, test "x${enable_netx}" = "xyes") +]) diff -r fcc8fa217369 -r 2eff7c2e01d1 configure.ac --- a/configure.ac Mon Oct 18 12:52:22 2010 -0400 +++ b/configure.ac Thu Nov 18 13:01:47 2010 +0000 @@ -1,4 +1,4 @@ AC_INIT([icedtea6], [1.7.5], [distro-pkg -AC_INIT([icedtea6], [1.7.5], [distro-pkg-dev at openjdk.java.net]) +AC_INIT([icedtea6], [1.7.6pre], [distro-pkg-dev at openjdk.java.net]) AM_INIT_AUTOMAKE([1.9 tar-pax foreign]) AC_CONFIG_FILES([Makefile]) diff -r fcc8fa217369 -r 2eff7c2e01d1 patches/ecj/icedtea-ant.patch --- a/patches/ecj/icedtea-ant.patch Mon Oct 18 12:52:22 2010 -0400 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,20 +0,0 @@ ---- iopenjdk/jaxws/make/Makefile 2007-10-12 03:52:21.000000000 -0400 -+++ openjdk/jaxws/make/Makefile 2007-11-13 11:02:07.000000000 -0500 -@@ -80,6 +80,7 @@ - endif - - ifdef ALT_BOOTDIR -+ ANT_OPTIONS += -Dplugs=$(ALT_BINARY_PLUGS_PATH) - ANT_JAVA_HOME = JAVA_HOME=$(ALT_BOOTDIR) - endif - ---- iopenjdk/jaxws/make/build.xml 2007-10-12 03:52:21.000000000 -0400 -+++ openjdk/jaxws/make/build.xml 2007-11-13 11:02:43.000000000 -0500 -@@ -109,6 +109,7 @@ - memoryMaximumSize="${javac.memoryMaximumSize}" - target="${javac.target}" - excludes="com/sun/tools/internal/txw2/**"> -+ - - - diff -r fcc8fa217369 -r 2eff7c2e01d1 patches/getannotation-cast.patch --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/patches/getannotation-cast.patch Thu Nov 18 13:01:47 2010 +0000 @@ -0,0 +1,24 @@ +diff -urN openjdk.orig/jdk/src/share/classes/com/sun/jmx/mbeanserver/OpenConverter.java openjdk/jdk/src/share/classes/com/sun/jmx/mbeanserver/OpenConverter.java +--- openjdk.orig/jdk/src/share/classes/com/sun/jmx/mbeanserver/OpenConverter.java 2008-08-28 04:12:12.000000000 -0400 ++++ openjdk/jdk/src/share/classes/com/sun/jmx/mbeanserver/OpenConverter.java 2008-11-05 17:18:36.000000000 -0500 +@@ -1154,7 +1154,7 @@ + Set getterIndexSets = newSet(); + for (Constructor constr : annotatedConstrList) { + String[] propertyNames = +- constr.getAnnotation(propertyNamesClass).value(); ++ ((ConstructorProperties)constr.getAnnotation(propertyNamesClass)).value(); + + Type[] paramTypes = constr.getGenericParameterTypes(); + if (paramTypes.length != propertyNames.length) { +diff -urN openjdk.orig/jdk/src/share/classes/java/beans/MetaData.java openjdk/jdk/src/share/classes/java/beans/MetaData.java +--- openjdk.orig/jdk/src/share/classes/java/beans/MetaData.java 2008-08-28 04:12:48.000000000 -0400 ++++ openjdk/jdk/src/share/classes/java/beans/MetaData.java 2008-11-05 17:18:36.000000000 -0500 +@@ -1628,7 +1628,7 @@ + } + + private static String[] getAnnotationValue(Constructor constructor) { +- ConstructorProperties annotation = constructor.getAnnotation(ConstructorProperties.class); ++ ConstructorProperties annotation = ((ConstructorProperties) constructor.getAnnotation(ConstructorProperties.class)); + return (annotation != null) + ? annotation.value() + : null; diff -r fcc8fa217369 -r 2eff7c2e01d1 patches/icedtea-copy-plugs.patch --- a/patches/icedtea-copy-plugs.patch Mon Oct 18 12:52:22 2010 -0400 +++ b/patches/icedtea-copy-plugs.patch Thu Nov 18 13:01:47 2010 +0000 @@ -123,40 +123,3 @@ diff -urN openjdk.orig/jdk/make/common/i # Binary plug start/complete messages -diff -urN openjdk.orig/jdk/src/share/classes/com/sun/jmx/mbeanserver/OpenConverter.java openjdk/jdk/src/share/classes/com/sun/jmx/mbeanserver/OpenConverter.java ---- openjdk.orig/jdk/src/share/classes/com/sun/jmx/mbeanserver/OpenConverter.java 2008-08-28 04:12:12.000000000 -0400 -+++ openjdk/jdk/src/share/classes/com/sun/jmx/mbeanserver/OpenConverter.java 2008-11-05 17:18:36.000000000 -0500 -@@ -1154,7 +1154,7 @@ - Set getterIndexSets = newSet(); - for (Constructor constr : annotatedConstrList) { - String[] propertyNames = -- constr.getAnnotation(propertyNamesClass).value(); -+ ((ConstructorProperties)constr.getAnnotation(propertyNamesClass)).value(); - - Type[] paramTypes = constr.getGenericParameterTypes(); - if (paramTypes.length != propertyNames.length) { -diff -urN openjdk.orig/jdk/src/share/classes/com/sun/jmx/snmp/SnmpPduTrap.java openjdk/jdk/src/share/classes/com/sun/jmx/snmp/SnmpPduTrap.java ---- openjdk.orig/jdk/src/share/classes/com/sun/jmx/snmp/SnmpPduTrap.java 2008-08-28 04:12:14.000000000 -0400 -+++ openjdk/jdk/src/share/classes/com/sun/jmx/snmp/SnmpPduTrap.java 2008-11-05 17:18:36.000000000 -0500 -@@ -78,6 +78,9 @@ - */ - public long timeStamp ; - -+ // TODO: IcedTea: I am a stub. -+ static public int trapAuthenticationFailure = 0; -+ - - - /** -diff -urN openjdk.orig/jdk/src/share/classes/java/beans/MetaData.java openjdk/jdk/src/share/classes/java/beans/MetaData.java ---- openjdk.orig/jdk/src/share/classes/java/beans/MetaData.java 2008-08-28 04:12:48.000000000 -0400 -+++ openjdk/jdk/src/share/classes/java/beans/MetaData.java 2008-11-05 17:18:36.000000000 -0500 -@@ -1628,7 +1628,7 @@ - } - - private static String[] getAnnotationValue(Constructor constructor) { -- ConstructorProperties annotation = constructor.getAnnotation(ConstructorProperties.class); -+ ConstructorProperties annotation = ((ConstructorProperties) constructor.getAnnotation(ConstructorProperties.class)); - return (annotation != null) - ? annotation.value() - : null; diff -r fcc8fa217369 -r 2eff7c2e01d1 patches/icedtea-webstart.patch --- a/patches/icedtea-webstart.patch Mon Oct 18 12:52:22 2010 -0400 +++ b/patches/icedtea-webstart.patch Thu Nov 18 13:01:47 2010 +0000 @@ -9,114 +9,6 @@ diff -c openjdk.orig/jdk/make/launchers/ $(call make-launcher, jconsole, sun.tools.jconsole.JConsole, \ -J-Djconsole.showOutputViewer, ) $(call make-launcher, jdb, com.sun.tools.example.debug.tty.TTY, , ) -diff -urN openjdk.orig/jdk/src/share/classes/sun/applet/AppletViewerPanel.java openjdk/jdk/src/share/classes/sun/applet/AppletViewerPanel.java ---- openjdk.orig/jdk/src/share/classes/sun/applet/AppletViewerPanel.java 2008-01-12 15:53:45.000000000 -0500 -+++ openjdk/jdk/src/share/classes/sun/applet/AppletViewerPanel.java 2008-02-04 11:51:20.000000000 -0500 -@@ -42,25 +42,25 @@ - * - * @author Arthur van Hoff - */ --class AppletViewerPanel extends AppletPanel { -+public class AppletViewerPanel extends AppletPanel { - - /* Are we debugging? */ -- static boolean debug = false; -+ protected static boolean debug = false; - - /** - * The document url. - */ -- URL documentURL; -+ protected URL documentURL; - - /** - * The base url. - */ From bugzilla-daemon at icedtea.classpath.org Thu Nov 18 05:59:11 2010 From: bugzilla-daemon at icedtea.classpath.org (bugzilla-daemon at icedtea.classpath.org) Date: Thu, 18 Nov 2010 13:59:11 +0000 Subject: [Bug 591] Unable to build openjdk/icedtea on Slack 13.1 Message-ID: http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=591 ------- Comment #22 from robert at linux-source.org 2010-11-18 13:59 ------- Here is the error when not enabling MOZILLA_LIBS and MOZILLA_CFLAGS: >>>Making sec-files-win @ Thu Nov 18 14:52:20 CET 2010 ... >>>Making jgss-files @ Thu Nov 18 14:52:20 CET 2010 ... >>>Finished making images @ Thu Nov 18 14:52:20 CET 2010 ... make[3]: Leaving directory `/tmp/kng/icedtea6-1.9.1/openjdk/jdk/make' make[2]: Leaving directory `/tmp/kng/icedtea6-1.9.1/openjdk' Control linux i586 1.6.0_20 build_product_image build finished: 10-11-18 14:52 Control linux i586 1.6.0_20 all_product_build build finished: 10-11-18 14:52 Control linux i586 1.6.0_20 all build finished: 10-11-18 14:52 make[1]: Leaving directory `/tmp/kng/icedtea6-1.9.1/openjdk' mkdir -p /tmp/kng/icedtea6-1.9.1/openjdk.build/j2sdk-image/jre/lib/i386 mkdir -p /tmp/kng/icedtea6-1.9.1/openjdk.build/j2re-image/lib/i386 mkdir -p /tmp/kng/icedtea6-1.9.1/openjdk.build/j2sdk-image/jre/lib/ext mkdir -p /tmp/kng/icedtea6-1.9.1/openjdk.build/j2re-image/lib/ext cp /tmp/kng/icedtea6-1.9.1/nss.cfg \ /tmp/kng/icedtea6-1.9.1/openjdk.build/j2sdk-image/jre/lib/security; cp /tmp/kng/icedtea6-1.9.1/tz.properties \ /tmp/kng/icedtea6-1.9.1/openjdk.build/j2sdk-image/jre/lib; IcedTea is served: /tmp/kng/icedtea6-1.9.1/openjdk.build mkdir -p stamps touch stamps/icedtea.stamp printf -- '-cacao ERROR\n' >> /tmp/kng/icedtea6-1.9.1/openjdk.build/j2sdk-image/jre/lib/i386/jvm.cfg touch stamps/add-cacao.stamp printf -- '-zero ERROR\n' >> /tmp/kng/icedtea6-1.9.1/openjdk.build/j2sdk-image/jre/lib/i386/jvm.cfg printf -- '-shark ERROR\n' >> /tmp/kng/icedtea6-1.9.1/openjdk.build/j2sdk-image/jre/lib/i386/jvm.cfg touch stamps/add-zero.stamp mkdir -p /tmp/kng/icedtea6-1.9.1/plugin/icedteanp && \ cd /tmp/kng/icedtea6-1.9.1/plugin/icedteanp && \ i486-slackware-linux-g++ -O2 -march=i486 -mtune=i686 \ -DJDK_UPDATE_VERSION="\"20\"" \ -DPLUGIN_VERSION="\"IcedTea6 1.9.1\"" \ -DMOZILLA_VERSION_COLLAPSED="1090212" \ -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include \ -pthread -I/usr/include/gtk-2.0 -I/usr/lib/gtk-2.0/include -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/pango-1.0 -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -I/usr/include/pixman-1 -I/usr/include/freetype2 -I/usr/include/libpng14 \ -DXP_UNIX -I/usr/include/xulrunner-1.9.2.12/stable \ -fPIC -o /tmp/kng/icedtea6-1.9.1/plugin/icedteanp/IcedTeaNPPlugin.o -c /tmp/kng/icedtea6-1.9.1/plugin/icedteanp/IcedTeaNPPlugin.cc In file included from /tmp/kng/icedtea6-1.9.1/plugin/icedteanp/IcedTeaNPPlugin.cc:51:0: /tmp/kng/icedtea6-1.9.1/plugin/icedteanp/IcedTeaScriptablePluginObject.h:45:19: fatal error: npapi.h: No such file or directory compilation terminated. make: *** [/tmp/kng/icedtea6-1.9.1/plugin/icedteanp/IcedTeaNPPlugin.o] Error 1 After then I enabled the libs and flags, then just ran again the build script and everything is done and ends like this: Note: Recompile with -Xlint:unchecked for details. mkdir -p stamps touch stamps/liveconnect.stamp if test "xnetscape sun/applet" != x; then \ (cd /tmp/kng/icedtea6-1.9.1/liveconnect ; \ mkdir -p lib ; \ /tmp/kng/icedtea6-1.9.1/bootstrap/jdk1.6.0/bin/jar cf lib/classes.jar netscape sun/applet ; \ cp -pPR -l /tmp/kng/icedtea6-1.9.1/plugin/icedteanp/java src; \ find src -type f -exec chmod 640 '{}' ';' -o -type d -exec chmod 750 '{}' ';'; \ cd src ; \ /usr/bin/zip -qr /tmp/kng/icedtea6-1.9.1/liveconnect/lib/src.zip netscape sun/applet ) ; \ fi mkdir -p stamps touch stamps/liveconnect-dist.stamp mkdir -p stamps touch stamps/plugin.stamp cp -pPRf /tmp/kng/icedtea6-1.9.1/plugin/icedteanp/IcedTeaPlugin.so \ /tmp/kng/icedtea6-1.9.1/openjdk.build/j2sdk-image/jre/lib/i386 cp -pPRf /tmp/kng/icedtea6-1.9.1/plugin/icedteanp/IcedTeaPlugin.so \ /tmp/kng/icedtea6-1.9.1/openjdk.build/j2re-image/lib/i386 cp -pPRf /tmp/kng/icedtea6-1.9.1/liveconnect/lib/classes.jar \ /tmp/kng/icedtea6-1.9.1/openjdk.build/j2sdk-image/jre/lib/plugin.jar cp -pPRf /tmp/kng/icedtea6-1.9.1/liveconnect/lib/classes.jar \ /tmp/kng/icedtea6-1.9.1/openjdk.build/j2re-image/lib/plugin.jar touch stamps/add-plugin.stamp mkdir -p stamps touch stamps/netx-dist.stamp cp -pPRf /tmp/kng/icedtea6-1.9.1/netx.build/lib/classes.jar \ /tmp/kng/icedtea6-1.9.1/openjdk.build/j2sdk-image/jre/lib/netx.jar cp -pPRf /tmp/kng/icedtea6-1.9.1/netx.build/lib/classes.jar \ /tmp/kng/icedtea6-1.9.1/openjdk.build/j2re-image/lib/netx.jar cp /tmp/kng/icedtea6-1.9.1/netx/net/sourceforge/jnlp/resources/about.jnlp extra-lib/about.jar \ /tmp/kng/icedtea6-1.9.1/openjdk.build/j2sdk-image/jre/lib cp /tmp/kng/icedtea6-1.9.1/netx/net/sourceforge/jnlp/resources/about.jnlp extra-lib/about.jar \ /tmp/kng/icedtea6-1.9.1/openjdk.build/j2re-image/lib if [ -d /tmp/kng/icedtea6-1.9.1/openjdk.build/j2sdk-image/man/man1 ] ; then \ cp /tmp/kng/icedtea6-1.9.1/netx/javaws.1 \ /tmp/kng/icedtea6-1.9.1/openjdk.build/j2sdk-image/man/man1 ; \ fi if [ -d /tmp/kng/icedtea6-1.9.1/openjdk.build/j2re-image/man/man1 ] ; then \ cp /tmp/kng/icedtea6-1.9.1/netx/javaws.1 \ /tmp/kng/icedtea6-1.9.1/openjdk.build/j2re-image/man/man1 ; \ fi touch stamps/add-netx.stamp mkdir -p stamps touch stamps/icedtea-against-icedtea.stamp -- Configure bugmail: http://icedtea.classpath.org/bugzilla/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are the assignee for the bug, or are watching the assignee. From ahughes at redhat.com Thu Nov 18 06:02:14 2010 From: ahughes at redhat.com (Dr Andrew John Hughes) Date: Thu, 18 Nov 2010 14:02:14 +0000 Subject: no gcj-jdk + no ecj + building openjdk In-Reply-To: <1290068838.2846.8.camel@springer.wildebeest.org> References: <20101117093002.GB3460@redhat.com> <20101117135939.GA24703@rivendell.middle-earth.co.uk> <1290068838.2846.8.camel@springer.wildebeest.org> Message-ID: <20101118140214.GA27167@rivendell.middle-earth.co.uk> On 09:27 Thu 18 Nov , Mark Wielaard wrote: > On Thu, 2010-11-18 at 11:31 +0530, ramakanth varala wrote: > > My target is to get openjdk build for target board (ARM) . > > > > In the process i thought i would build openjdk first to my host > > machine i.e of fedora 8. > > Fedora 8 is very outdated (3 years old). Although IcedTea (7) has been > bootstrapped on it, it isn't maintained anymore. You might have better > luck if you update to a more modern version (Fedora 14 is the latest). > > > Iam confused of lot of things here > > > > 1) what is icedtea ? > > IcedTea is a fully free Java Runtime and Development Environment. Build > upon OpenJDK extended with developer, user and web browser tools like an > Applet viewer, Java Webstart (LiveConnect and JNLP) support and > VisualVM, a lightweight profiler and troubleshooting tool. Bootstraps > with and provides alternative runtimes, tools and class library support > for Java and Java-like environments, like the Zero interpreter, Shark > JIT, GCJ native compiler, GNU Classpath core libraries and Cacao. See > http://icedtea.classpath.org/ > Zero & Shark are now part of OpenJDK. > > 2) How is icedtea related to openjdk? > > OpenJDK is a free reference implementation for the Java Standard Edition > Developer Kit. Includes an execution environment, development tools and > a class library for the Java programming language. IcedTea extends this. > Notably, IcedTea is required for plugin and Web Start support. The packages in most distros which claim to be OpenJDK are actually IcedTea. An easy way to check is to see if a plugin and javaws binary are included. I haven't heard of any distros shipping OpenJDK as supplied upstream. > > 3) can i build this for the arm board ? > > Yes, it should natively build on an arm board. But that might be slow, > so you might want to cross-compile... > > > 4) can you point me to proper documentation where i can get a clear > > picture of cross-compilation to arm? > > See http://icedtea.classpath.org/wiki/CrossCompileFaq > I'm not sure how up-to-date this document is. It does have noticeable typos. There should be support for ARM in IcedTea via Zero, Shark and the ARM assembler port (I'm not sure of the maintenance level of the latter). The best advice is probably to give it a try and go on IRC if you hit problems. I believe Xerces (xranby) does regular ARM builds and is usually online in #openjdk on the OFTC network. > Cheers, > > Mark > -- Andrew :) Free Java Software Engineer Red Hat, Inc. (http://www.redhat.com) Support Free Java! Contribute to GNU Classpath and the OpenJDK http://www.gnu.org/software/classpath http://openjdk.java.net PGP Key: 94EFD9D8 (http://subkeys.pgp.net) Fingerprint = F8EF F1EA 401E 2E60 15FA 7927 142C 2591 94EF D9D8 From omajid at icedtea.classpath.org Thu Nov 18 08:00:33 2010 From: omajid at icedtea.classpath.org (omajid at icedtea.classpath.org) Date: Thu, 18 Nov 2010 16:00:33 +0000 Subject: /hg/icedtea-web: add javax.jnlp.IntegrationService and javax.jnl... Message-ID: changeset 8796ebc88ed0 in /hg/icedtea-web details: http://icedtea.classpath.org/hg/icedtea-web?cmd=changeset;node=8796ebc88ed0 author: Omair Majid date: Thu Nov 18 10:55:02 2010 -0500 add javax.jnlp.IntegrationService and javax.jnlp.DownloadService2 2010-11-18 Omair Majid * NEWS: Update with new interfaces * netx/javax/jnlp/DownloadService2.java: New interface. (ResourceSpec): New class. (ResourceSpec.ResourceSpec): New method. (ResourceSpec.getExpirationDate): New method. (ResourceSpec.getLastModified): New method. (ResourceSpec.getSize): New method. (ResourceSpec.getType): New method. (ResourceSpec.getUrl): New method. (ResourceSpec.getVersion): New method. (getCachedResources): New method. (getUpdateAvaiableReosurces): New method. * netx/javax/jnlp/IntegrationService.java: New interface. (hasAssociation): New method. (hasDesktopShortcut): New method. (hasMenuShortcut): New method. (removeAssociation): New method. (removeShortcuts): New method. (requestAssociation): New method. (requestShortcut): New method. diffstat: 4 files changed, 100 insertions(+) ChangeLog | 23 ++++++++++++ NEWS | 1 netx/javax/jnlp/DownloadService2.java | 57 +++++++++++++++++++++++++++++++ netx/javax/jnlp/IntegrationService.java | 19 ++++++++++ diffs (122 lines): diff -r 4e288938e2a3 -r 8796ebc88ed0 ChangeLog --- a/ChangeLog Tue Nov 16 13:45:43 2010 -0500 +++ b/ChangeLog Thu Nov 18 10:55:02 2010 -0500 @@ -1,3 +1,26 @@ 2010-11-16 Andrew Su +2010-11-18 Omair Majid + + * NEWS: Update with new interfaces + * netx/javax/jnlp/DownloadService2.java: New interface. + (ResourceSpec): New class. + (ResourceSpec.ResourceSpec): New method. + (ResourceSpec.getExpirationDate): New method. + (ResourceSpec.getLastModified): New method. + (ResourceSpec.getSize): New method. + (ResourceSpec.getType): New method. + (ResourceSpec.getUrl): New method. + (ResourceSpec.getVersion): New method. + (getCachedResources): New method. + (getUpdateAvaiableReosurces): New method. + * netx/javax/jnlp/IntegrationService.java: New interface. + (hasAssociation): New method. + (hasDesktopShortcut): New method. + (hasMenuShortcut): New method. + (removeAssociation): New method. + (removeShortcuts): New method. + (requestAssociation): New method. + (requestShortcut): New method. + 2010-11-16 Andrew Su * netx/net/sourceforge/jnlp/runtime/DeploymentConfiguration.java: diff -r 4e288938e2a3 -r 8796ebc88ed0 NEWS --- a/NEWS Tue Nov 16 13:45:43 2010 -0500 +++ b/NEWS Thu Nov 18 10:55:02 2010 -0500 @@ -13,3 +13,4 @@ New in release 1.0 (2010-XX-XX): * Initial release of IcedTea-Web * PR542: Plugin fails with NPE on http://www.openprocessing.org/visuals/iframe.php?visualID=2615 * Applets are now double-buffered to eliminate flicker in ones that do heavy drawing +* Iinterfaces javax.jnlp.IntegrationService and javax.jnlp.DownloadService2 are now available diff -r 4e288938e2a3 -r 8796ebc88ed0 netx/javax/jnlp/DownloadService2.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/netx/javax/jnlp/DownloadService2.java Thu Nov 18 10:55:02 2010 -0500 @@ -0,0 +1,57 @@ +package javax.jnlp; + +public interface DownloadService2 { + + public static class ResourceSpec { + + public static final long UNKNOWN = Long.MIN_VALUE; + + protected String url; + protected String version; + protected int type; + + public ResourceSpec(java.lang.String url, java.lang.String version, int type) { + this.url = url; + this.version = version; + this.type = type; + } + + public long getExpirationDate() { + return UNKNOWN; + } + + public long getLastModified() { + return UNKNOWN; + } + + public long getSize() { + return UNKNOWN; + } + + public int getType() { + return type; + } + + public java.lang.String getUrl() { + return url; + } + + public java.lang.String getVersion() { + return version; + } + } + + public static final int ALL = 0; + public static final int APPLET = 2; + public static final int APPLICATION = 1; + public static final int CLASS = 6; + public static final int EXTENSION = 3; + public static final int IMAGE = 5; + public static final int JAR = 4; + + public DownloadService2.ResourceSpec[] getCachedResources( + javax.jnlp.DownloadService2.ResourceSpec resourceSpec); + + public DownloadService2.ResourceSpec[] getUpdateAvaiableReosurces( + javax.jnlp.DownloadService2.ResourceSpec resourceSpec); +} diff -r 4e288938e2a3 -r 8796ebc88ed0 netx/javax/jnlp/IntegrationService.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/netx/javax/jnlp/IntegrationService.java Thu Nov 18 10:55:02 2010 -0500 @@ -0,0 +1,19 @@ +package javax.jnlp; + +public interface IntegrationService { + + public boolean hasAssociation(java.lang.String mimeType, java.lang.String[] extensions); + + public boolean hasDesktopShortcut(); + + public boolean hasMenuShortcut(); + + public boolean removeAssociation(java.lang.String mimeType, java.lang.String[] extensions); + + public boolean removeShortcuts(); + + public boolean requestAssociation(java.lang.String mimeType, java.lang.String[] extensions); + + public boolean requestShortcut(boolean onDesktop, boolean inMenu, java.lang.String subMenu); + +} From omajid at redhat.com Thu Nov 18 08:01:05 2010 From: omajid at redhat.com (Omair Majid) Date: Thu, 18 Nov 2010 11:01:05 -0500 Subject: [icedtea-web] RFC: add DownloadService2 and IntegrationService In-Reply-To: <20101117212528.GB2939@redhat.com> References: <4CE1710D.1080806@redhat.com> <20101117212528.GB2939@redhat.com> Message-ID: <4CE54DC1.9020307@redhat.com> On 11/17/2010 04:25 PM, Deepak Bhole wrote: > * Omair Majid [2010-11-15 12:57]: >> Hi, >> >> The attached patch adds the interfaces javax.jnlp.DownloadService2 >> and javax.jnlp.IntegrationService to icedtea-web. The patch does not >> implement anything yet. These 2 interfaces have been part of the >> JNLP API since JDK update 18 (according to the javadocs). >> >> Without this patch, applications that import one of these two >> interfaces will throw a ClassNotFoundException. >> >> With this patch applied applications will be able to import the >> interfaces. JNLP applications still wont be able to use the API >> provided by these two services as the ServiceManager will not return >> services of this type. However, it will allow the applications to >> continue running. >> > > Looks good. OK for head. Thanks for the review. Pushed. Cheers, Omair From omajid at icedtea.classpath.org Thu Nov 18 08:12:17 2010 From: omajid at icedtea.classpath.org (omajid at icedtea.classpath.org) Date: Thu, 18 Nov 2010 16:12:17 +0000 Subject: /hg/icedtea-web: integrate configurable logging Message-ID: changeset fbd9bf9c90cb in /hg/icedtea-web details: http://icedtea.classpath.org/hg/icedtea-web?cmd=changeset;node=fbd9bf9c90cb author: Omair Majid date: Thu Nov 18 11:12:10 2010 -0500 integrate configurable logging 2010-11-18 Omair Majid * netx/net/sourceforge/jnlp/runtime/DeploymentConfiguration.java: Add KEY_ENABLE_LOGGING. (loadDefaultProperties): Use KEY_ENABLE_LOGGING. * netx/net/sourceforge/jnlp/runtime/JNLPRuntime.java: Add redirectStreams, STDERR_FILE and STDOUT_FILE. (initialize): Call initializeStreams. (initializeStreams): New method. Redirects or duplicates stdout and stderr to the logging files as required. (setRedirectStreams): New method. Sets whether stdout/stderr streams should be redirected. * plugin/icedteanp/java/sun/applet/PluginMain.java: (PluginMain): Move code for creating logging files into JNLPRuntime. Call JNLPRuntime.setRedirectStreams to redirect streams. (TeeOutputStream): Move to its own class. * netx/net/sourceforge/jnlp/util/TeeOutputStream.java: Moved from PluginMain into this new class. diffstat: 5 files changed, 167 insertions(+), 71 deletions(-) ChangeLog | 19 ++ netx/net/sourceforge/jnlp/runtime/DeploymentConfiguration.java | 4 netx/net/sourceforge/jnlp/runtime/JNLPRuntime.java | 47 ++++ netx/net/sourceforge/jnlp/util/TeeOutputStream.java | 95 ++++++++++ plugin/icedteanp/java/sun/applet/PluginMain.java | 73 ------- diffs (324 lines): diff -r 8796ebc88ed0 -r fbd9bf9c90cb ChangeLog --- a/ChangeLog Thu Nov 18 10:55:02 2010 -0500 +++ b/ChangeLog Thu Nov 18 11:12:10 2010 -0500 @@ -1,3 +1,22 @@ 2010-11-18 Omair Majid + + * netx/net/sourceforge/jnlp/runtime/DeploymentConfiguration.java: + Add KEY_ENABLE_LOGGING. + (loadDefaultProperties): Use KEY_ENABLE_LOGGING. + * netx/net/sourceforge/jnlp/runtime/JNLPRuntime.java: Add + redirectStreams, STDERR_FILE and STDOUT_FILE. + (initialize): Call initializeStreams. + (initializeStreams): New method. Redirects or duplicates stdout and + stderr to the logging files as required. + (setRedirectStreams): New method. Sets whether stdout/stderr streams + should be redirected. + * plugin/icedteanp/java/sun/applet/PluginMain.java: + (PluginMain): Move code for creating logging files into JNLPRuntime. + Call JNLPRuntime.setRedirectStreams to redirect streams. + (TeeOutputStream): Move to its own class. + * netx/net/sourceforge/jnlp/util/TeeOutputStream.java: Moved from + PluginMain into this new class. + 2010-11-18 Omair Majid * NEWS: Update with new interfaces diff -r 8796ebc88ed0 -r fbd9bf9c90cb netx/net/sourceforge/jnlp/runtime/DeploymentConfiguration.java --- a/netx/net/sourceforge/jnlp/runtime/DeploymentConfiguration.java Thu Nov 18 10:55:02 2010 -0500 +++ b/netx/net/sourceforge/jnlp/runtime/DeploymentConfiguration.java Thu Nov 18 11:12:10 2010 -0500 @@ -153,6 +153,8 @@ public final class DeploymentConfigurati public static final String KEY_SYSTEM_TRUSTED_CERTS = "deployment.system.security.trusted.certs"; public static final String KEY_SYSTEM_TRUSTED_JSSE_CERTS = "deployment.system.security.trusted.jssecerts"; public static final String KEY_SYSTEM_TRUSTED_CLIENT_CERTS = "deployment.system.security.trusted.clientautcerts"; + + public static final String KEY_ENABLE_LOGGING = "deployment.log"; public static final String KEY_CREATE_DESKTOP_SHORTCUT = "deployment.javaws.shortcut"; @@ -375,7 +377,7 @@ public final class DeploymentConfigurati { "deployment.console.startup.mode", CONSOLE_HIDE }, /* tracing and logging */ { "deployment.trace", String.valueOf(false) }, - { "deployment.log", String.valueOf(false) }, + { KEY_ENABLE_LOGGING, String.valueOf(false) }, /* JNLP association */ { "deployment.javaws.associations", String.valueOf(JNLP_ASSOCIATION_ASK_USER) }, /* desktop integration */ diff -r 8796ebc88ed0 -r fbd9bf9c90cb netx/net/sourceforge/jnlp/runtime/JNLPRuntime.java --- a/netx/net/sourceforge/jnlp/runtime/JNLPRuntime.java Thu Nov 18 10:55:02 2010 -0500 +++ b/netx/net/sourceforge/jnlp/runtime/JNLPRuntime.java Thu Nov 18 11:12:10 2010 -0500 @@ -107,6 +107,9 @@ public class JNLPRuntime { /** whether debug mode is on */ private static boolean debug = false; // package access by Boot + /** whether streams should be redirected */ + private static boolean redirectStreams = false; + /** mutex to wait on, for initialization */ public static Object initMutex = new Object(); @@ -118,6 +121,9 @@ public class JNLPRuntime { /** contains the arguments passed to the jnlp runtime */ private static List initialArguments; + + public static final String STDERR_FILE = "java.stderr"; + public static final String STDOUT_FILE = "java.stdout"; /** Username */ public static final String USER = System.getProperty("user.name"); @@ -182,6 +188,8 @@ public class JNLPRuntime { System.exit(1); } } + + initializeStreams(); isWebstartApplication = isApplication; @@ -278,6 +286,34 @@ public class JNLPRuntime { * result is that all other AppContexts see a null dtd. */ new ParserDelegator(); + } + + /** + * Initializes the standard output and error streams, redirecting them or + * duplicating them as required. + */ + private static void initializeStreams() { + Boolean enableLogging = Boolean.valueOf(config + .getProperty(DeploymentConfiguration.KEY_ENABLE_LOGGING)); + if (redirectStreams || enableLogging) { + String logDir = config.getProperty(DeploymentConfiguration.KEY_USER_LOG_DIR); + File errFile = new File(logDir, JNLPRuntime.STDERR_FILE); + errFile.getParentFile().mkdirs(); + File outFile = new File(logDir, JNLPRuntime.STDOUT_FILE); + outFile.getParentFile().mkdirs(); + + try { + if (redirectStreams) { + System.setErr(new PrintStream(new FileOutputStream(errFile))); + System.setOut(new PrintStream(new FileOutputStream(outFile))); + } else { + System.setErr(new TeeOutputStream(new FileOutputStream(errFile), System.err)); + System.setOut(new TeeOutputStream(new FileOutputStream(outFile), System.out)); + } + } catch (Exception e) { + e.printStackTrace(); + } + } } /** @@ -490,6 +526,17 @@ public class JNLPRuntime { } /** + * Sets whether the standard output/error streams should be redirected to + * the loggging files. + * + * @throws IllegalStateException if the runtime has already been initialized + */ + public static void setRedirectStreams(boolean redirect) { + checkInitialized(); + redirectStreams = redirect; + } + + /** * Sets the default update policy. * * @throws IllegalStateException if caller is not the exit class diff -r 8796ebc88ed0 -r fbd9bf9c90cb netx/net/sourceforge/jnlp/util/TeeOutputStream.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/netx/net/sourceforge/jnlp/util/TeeOutputStream.java Thu Nov 18 11:12:10 2010 -0500 @@ -0,0 +1,95 @@ +/* TeeOutputStream.java + Copyright (C) 2010 Red Hat + +This file is part of IcedTea. + +IcedTea is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2, or (at your option) +any later version. + +IcedTea is distributed in the hope that it will be useful, but +WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +General Public License for more details. + +You should have received a copy of the GNU General Public License +along with IcedTea; see the file COPYING. If not, write to the +Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA +02110-1301 USA. + +Linking this library statically or dynamically with other modules is +making a combined work based on this library. Thus, the terms and +conditions of the GNU General Public License cover the whole +combination. + +As a special exception, the copyright holders of this library give you +permission to link this library with independent modules to produce an +executable, regardless of the license terms of these independent +modules, and to copy and distribute the resulting executable under +terms of your choice, provided that you also meet, for each linked +independent module, the terms and conditions of the license of that +module. An independent module is a module which is not derived from +or based on this library. If you modify this library, you may extend +this exception to your version of the library, but you are not +obligated to do so. If you do not wish to do so, delete this +exception statement from your version. */ + +package net.sourceforge.jnlp.util; + +import java.io.FileOutputStream; +import java.io.PrintStream; + +/** + * Behaves like the 'tee' command, sends output to both actual std stream and a + * file + */ +public final class TeeOutputStream extends PrintStream { + + // Everthing written to TeeOutputStream is written to this file + PrintStream logFile; + + public TeeOutputStream(FileOutputStream fileOutputStream, + PrintStream stdStream) { + super(stdStream); + logFile = new PrintStream(fileOutputStream); + } + + @Override + public boolean checkError() { + boolean thisError = super.checkError(); + boolean fileError = logFile.checkError(); + + return thisError || fileError; + } + + @Override + public void close() { + logFile.close(); + super.close(); + } + + @Override + public void flush() { + logFile.flush(); + super.flush(); + } + + /* + * The big ones: these do the actual writing + */ + + @Override + public void write(byte[] buf, int off, int len) { + logFile.write(buf, off, len); + + super.write(buf, off, len); + } + + @Override + public void write(int b) { + logFile.write(b); + + super.write(b); + } +} diff -r 8796ebc88ed0 -r fbd9bf9c90cb plugin/icedteanp/java/sun/applet/PluginMain.java --- a/plugin/icedteanp/java/sun/applet/PluginMain.java Thu Nov 18 10:55:02 2010 -0500 +++ b/plugin/icedteanp/java/sun/applet/PluginMain.java Thu Nov 18 11:12:10 2010 -0500 @@ -121,24 +121,13 @@ public class PluginMain connect(inPipe, outPipe); + // must be called before JNLPRuntime.initialize() + JNLPRuntime.setRedirectStreams(redirectStreams); + securityContext = new PluginAppletSecurityContext(0); securityContext.prePopulateLCClasses(); securityContext.setStreamhandler(streamHandler); AppletSecurityContextManager.addContext(0, securityContext); - - String logDir = JNLPRuntime.getConfiguration().getProperty(DeploymentConfiguration.KEY_USER_LOG_DIR); - try { - File errFile = new File(logDir, PLUGIN_STDERR_FILE); - errFile.getParentFile().mkdirs(); - File outFile = new File(logDir, PLUGIN_STDOUT_FILE); - outFile.getParentFile().mkdirs(); - - System.setErr(new TeeOutputStream(new FileOutputStream(errFile), System.err)); - System.setOut(new TeeOutputStream(new FileOutputStream(outFile), System.out)); - } catch (Exception e) { - PluginDebug.debug("Unable to redirect streams"); - e.printStackTrace(); - } PluginAppletViewer.setStreamhandler(streamHandler); PluginAppletViewer.setPluginCallRequestFactory(new PluginCallRequestFactory()); @@ -244,61 +233,5 @@ public class PluginMain return auth; } } - - /** - * Behaves like the 'tee' command, sends output to both actual std stream and a - * file - */ - class TeeOutputStream extends PrintStream { - - // Everthing written to TeeOutputStream is written to this file - PrintStream logFile; - - public TeeOutputStream(FileOutputStream fileOutputStream, - PrintStream stdStream) { - super(stdStream); - logFile = new PrintStream(fileOutputStream); - } - - @Override - public boolean checkError() { - boolean thisError = super.checkError(); - boolean fileError = logFile.checkError(); - - return thisError || fileError; - } - - @Override - public void close() { - logFile.close(); - super.close(); - } - - @Override - public void flush() { - logFile.flush(); - super.flush(); - } - - /* - * The big ones: these do the actual writing - */ - - @Override - public void write(byte[] buf, int off, int len) { - logFile.write(buf, off, len); - - if (!redirectStreams) - super.write(buf, off, len); - } - - @Override - public void write(int b) { - logFile.write(b); - - if (!redirectStreams) - super.write(b); - } - } } From omajid at redhat.com Thu Nov 18 08:12:44 2010 From: omajid at redhat.com (Omair Majid) Date: Thu, 18 Nov 2010 11:12:44 -0500 Subject: [icedtea-web] RFC: integrate logging into netx and plugin In-Reply-To: <20101117213057.GD2939@redhat.com> References: <4CDC7067.4070702@redhat.com> <20101117213057.GD2939@redhat.com> Message-ID: <4CE5507C.4040408@redhat.com> On 11/17/2010 04:30 PM, Deepak Bhole wrote: > * Omair Majid [2010-11-11 17:39]: >> Hi, >> >> The attached patch integrates the logging option from the deployment >> configuration into netx and plugin. Both plugin and netx will now >> log (if logging is enabled) their stdout/stderr to the java.stdout >> and java.stderr files under the logging directory. Running the >> plugin with the environment variable ICEDTEAPLUGIN_DEBUG=true will >> force stdout and stderr to be redirected to the logging files. >> > > Looks good to me! OK for head. > Thanks for the review. Pushed to HEAD. Cheers, Omair From omajid at icedtea.classpath.org Thu Nov 18 09:02:15 2010 From: omajid at icedtea.classpath.org (omajid at icedtea.classpath.org) Date: Thu, 18 Nov 2010 17:02:15 +0000 Subject: /hg/icedtea-web: add configuration support for user prompts and ... Message-ID: changeset 88d31285a14b in /hg/icedtea-web details: http://icedtea.classpath.org/hg/icedtea-web?cmd=changeset;node=88d31285a14b author: Omair Majid date: Thu Nov 18 11:55:26 2010 -0500 add configuration support for user prompts and other access control options 2010-11-18 Omair Majid * netx/net/sourceforge/jnlp/SecurityDesc.java: Remove window banner permissions from sandboxPermissions and j2eePermissions. (getSandBoxPermissions): Dynamically add window banner permissions if allowed by configuration. * netx/net/sourceforge/jnlp/runtime/DeploymentConfiguration.java: Add KEY_SECURITY_PROMPT_USER, KEY_SECURITY_ALLOW_HIDE_WINDOW_WARNING, KEY_SECURITY_PROMPT_USER_FOR_JNLP, and KEY_SECURITY_INSTALL_AUTHENTICATOR. (loadDefaultProperties): Use the new constants. * netx/net/sourceforge/jnlp/security/SecurityWarning.java (showAccessWarningDialog): Check if the user should be prompted before prompting the user. (showNotAllSignedWarningDialog): Likewise. (showCertWarningDialog): Likewise. (showAppletWarning): Likewise. (shouldPromptUser): New method. Check if configuration allows showing user prompts. * netx/net/sourceforge/jnlp/services/ServiceUtil.java (checkAccess(AccessType,Object...)): Clarify javadocs. (checkAccess(ApplicationInstance,AccessType,Object...)): Clarify javadocs. Only prompt the user if showing JNLP prompts is ok. (shouldPromptUser): New method. Returns true if configuration allows for showing JNLP api prompts. * plugin/icedteanp/java/sun/applet/PluginMain.java (init): Only install custom authenticator if allowed by configuration. diffstat: 6 files changed, 126 insertions(+), 12 deletions(-) ChangeLog | 30 +++++++++ netx/net/sourceforge/jnlp/SecurityDesc.java | 10 ++- netx/net/sourceforge/jnlp/runtime/DeploymentConfiguration.java | 33 ++++++++-- netx/net/sourceforge/jnlp/security/SecurityWarning.java | 29 ++++++++ netx/net/sourceforge/jnlp/services/ServiceUtil.java | 30 +++++++-- plugin/icedteanp/java/sun/applet/PluginMain.java | 6 + diffs (295 lines): diff -r fbd9bf9c90cb -r 88d31285a14b ChangeLog --- a/ChangeLog Thu Nov 18 11:12:10 2010 -0500 +++ b/ChangeLog Thu Nov 18 11:55:26 2010 -0500 @@ -1,3 +1,33 @@ 2010-11-18 Omair Majid + + * netx/net/sourceforge/jnlp/SecurityDesc.java: Remove window banner + permissions from sandboxPermissions and j2eePermissions. + (getSandBoxPermissions): Dynamically add window banner permissions + if allowed by configuration. + * netx/net/sourceforge/jnlp/runtime/DeploymentConfiguration.java: + Add KEY_SECURITY_PROMPT_USER, + KEY_SECURITY_ALLOW_HIDE_WINDOW_WARNING, + KEY_SECURITY_PROMPT_USER_FOR_JNLP, and + KEY_SECURITY_INSTALL_AUTHENTICATOR. + (loadDefaultProperties): Use the new constants. + * netx/net/sourceforge/jnlp/security/SecurityWarning.java + (showAccessWarningDialog): Check if the user should be prompted + before prompting the user. + (showNotAllSignedWarningDialog): Likewise. + (showCertWarningDialog): Likewise. + (showAppletWarning): Likewise. + (shouldPromptUser): New method. Check if configuration allows + showing user prompts. + * netx/net/sourceforge/jnlp/services/ServiceUtil.java + (checkAccess(AccessType,Object...)): Clarify javadocs. + (checkAccess(ApplicationInstance,AccessType,Object...)): Clarify + javadocs. Only prompt the user if showing JNLP prompts is ok. + (shouldPromptUser): New method. Returns true if configuration allows + for showing JNLP api prompts. + * plugin/icedteanp/java/sun/applet/PluginMain.java + (init): Only install custom authenticator if allowed by + configuration. + 2010-11-18 Omair Majid * netx/net/sourceforge/jnlp/runtime/DeploymentConfiguration.java: diff -r fbd9bf9c90cb -r 88d31285a14b netx/net/sourceforge/jnlp/SecurityDesc.java --- a/netx/net/sourceforge/jnlp/SecurityDesc.java Thu Nov 18 11:12:10 2010 -0500 +++ b/netx/net/sourceforge/jnlp/SecurityDesc.java Thu Nov 18 11:55:26 2010 -0500 @@ -22,6 +22,9 @@ import java.util.*; import java.util.*; import java.security.*; import java.awt.AWTPermission; + +import net.sourceforge.jnlp.runtime.DeploymentConfiguration; +import net.sourceforge.jnlp.runtime.JNLPRuntime; /** * The security element. @@ -67,7 +70,6 @@ public class SecurityDesc { // queues, or even prevent access to security dialog queues. // // new AWTPermission("accessEventQueue"), - new AWTPermission("showWindowWithoutWarningBanner"), new RuntimePermission("exitVM"), new RuntimePermission("loadLibrary"), new RuntimePermission("queuePrintJob"), @@ -105,7 +107,6 @@ public class SecurityDesc { new PropertyPermission("javaws.*", "read,write"), new RuntimePermission("exitVM"), new RuntimePermission("stopThread"), - new AWTPermission("showWindowWithoutWarningBanner"), // disabled because we can't at this time prevent an // application from accessing other applications' event // queues, or even prevent access to security dialog queues. @@ -187,6 +188,11 @@ public class SecurityDesc { for (int i=0; i < sandboxPermissions.length; i++) permissions.add(sandboxPermissions[i]); + String key = DeploymentConfiguration.KEY_SECURITY_ALLOW_HIDE_WINDOW_WARNING; + if (Boolean.valueOf(JNLPRuntime.getConfiguration().getProperty(key)) == Boolean.TRUE) { + permissions.add(new AWTPermission("showWindowWithoutWarningBanner")); + } + if (file.isApplication()) for (int i=0; i < jnlpRIAPermissions.length; i++) permissions.add(jnlpRIAPermissions[i]); diff -r fbd9bf9c90cb -r 88d31285a14b netx/net/sourceforge/jnlp/runtime/DeploymentConfiguration.java --- a/netx/net/sourceforge/jnlp/runtime/DeploymentConfiguration.java Thu Nov 18 11:12:10 2010 -0500 +++ b/netx/net/sourceforge/jnlp/runtime/DeploymentConfiguration.java Thu Nov 18 11:55:26 2010 -0500 @@ -17,6 +17,7 @@ package net.sourceforge.jnlp.runtime; +import java.awt.AWTPermission; import java.io.BufferedOutputStream; import java.io.BufferedReader; import java.io.File; @@ -154,7 +155,31 @@ public final class DeploymentConfigurati public static final String KEY_SYSTEM_TRUSTED_JSSE_CERTS = "deployment.system.security.trusted.jssecerts"; public static final String KEY_SYSTEM_TRUSTED_CLIENT_CERTS = "deployment.system.security.trusted.clientautcerts"; + /* + * Security and access control + */ + + /** Boolean. Only show security prompts to user if true */ + public static final String KEY_SECURITY_PROMPT_USER = "deployment.security.askgrantdialog.show"; + + /** Boolean. Only give AWTPermission("showWindowWithoutWarningBanner") if true */ + public static final String KEY_SECURITY_ALLOW_HIDE_WINDOW_WARNING = "deployment.security.sandbox.awtwarningwindow"; + + /** Boolean. Only prompt user for granting any JNLP permissions if true */ + public static final String KEY_SECURITY_PROMPT_USER_FOR_JNLP = "deployment.security.sandbox.jnlp.enhanced"; + + /** Boolean. Only install the custom authenticator if true */ + public static final String KEY_SECURITY_INSTALL_AUTHENTICATOR = "deployment.security.authenticator"; + + /* + * Tracing and Logging + */ + public static final String KEY_ENABLE_LOGGING = "deployment.log"; + + /* + * Desktop Integration + */ public static final String KEY_CREATE_DESKTOP_SHORTCUT = "deployment.javaws.shortcut"; @@ -345,15 +370,15 @@ public final class DeploymentConfigurati { KEY_SYSTEM_TRUSTED_JSSE_CERTS, SYSTEM_SECURITY + File.separator + "trusted.jssecerts" }, { KEY_SYSTEM_TRUSTED_CLIENT_CERTS, SYSTEM_SECURITY + File.separator + "trusted.clientcerts" }, /* security access and control */ - { "deployment.security.askgrantdialog.show", String.valueOf(true) }, + { KEY_SECURITY_PROMPT_USER, String.valueOf(true) }, { "deployment.security.askgrantdialog.notinca", String.valueOf(true) }, { "deployment.security.notinca.warning", String.valueOf(true) }, { "deployment.security.expired.warning", String.valueOf(true) }, { "deployment.security.jsse.hostmismatch.warning", String.valueOf(true) }, { "deployment.security.trusted.policy", null }, - { "deployment.security.sandbox.awtwarningwindow", String.valueOf(true) }, - { "deployment.security.sandbox.jnlp.enhanced", String.valueOf(true) }, - { "deployment.security.authenticator", String.valueOf(true) }, + { KEY_SECURITY_ALLOW_HIDE_WINDOW_WARNING, String.valueOf(true) }, + { KEY_SECURITY_PROMPT_USER_FOR_JNLP, String.valueOf(true) }, + { KEY_SECURITY_INSTALL_AUTHENTICATOR, String.valueOf(true) }, /* networking */ { "deployment.proxy.type", String.valueOf(PROXY_TYPE_BROWSER) }, { "deployment.proxy.same", String.valueOf(false) }, diff -r fbd9bf9c90cb -r 88d31285a14b netx/net/sourceforge/jnlp/security/SecurityWarning.java --- a/netx/net/sourceforge/jnlp/security/SecurityWarning.java Thu Nov 18 11:12:10 2010 -0500 +++ b/netx/net/sourceforge/jnlp/security/SecurityWarning.java Thu Nov 18 11:55:26 2010 -0500 @@ -49,6 +49,7 @@ import javax.swing.SwingUtilities; import javax.swing.SwingUtilities; import net.sourceforge.jnlp.JNLPFile; +import net.sourceforge.jnlp.runtime.DeploymentConfiguration; import net.sourceforge.jnlp.runtime.JNLPRuntime; /** @@ -111,6 +112,11 @@ public class SecurityWarning { */ public static boolean showAccessWarningDialog(final AccessType accessType, final JNLPFile file, final Object[] extras) { + + if (!shouldPromptUser()) { + return false; + } + final SecurityDialogMessage message = new SecurityDialogMessage(); message.dialogType = DialogType.ACCESS_WARNING; @@ -139,6 +145,10 @@ public class SecurityWarning { * @return true if permission was granted by the user, false otherwise. */ public static boolean showNotAllSignedWarningDialog(JNLPFile file) { + + if (!shouldPromptUser()) { + return false; + } final SecurityDialogMessage message = new SecurityDialogMessage(); message.dialogType = DialogType.NOTALLSIGNED_WARNING; @@ -174,6 +184,10 @@ public class SecurityWarning { public static boolean showCertWarningDialog(AccessType accessType, JNLPFile file, CertVerifier jarSigner) { + if (!shouldPromptUser()) { + return false; + } + final SecurityDialogMessage message = new SecurityDialogMessage(); message.dialogType = DialogType.CERT_WARNING; message.accessType = accessType; @@ -199,6 +213,10 @@ public class SecurityWarning { * @return (0, 1, 2) => (Yes, No, Cancel) */ public static int showAppletWarning() { + + if (!shouldPromptUser()) { + return 2; + } SecurityDialogMessage message = new SecurityDialogMessage(); message.dialogType = DialogType.APPLET_WARNING; @@ -295,4 +313,15 @@ public class SecurityWarning { return message.userResponse; } + /** + * Returns whether the current runtime configuration allows prompting user + * for security warnings. + * + * @return true if security warnings should be shown to the user. + */ + private static boolean shouldPromptUser() { + return Boolean.valueOf(JNLPRuntime.getConfiguration() + .getProperty(DeploymentConfiguration.KEY_SECURITY_PROMPT_USER)); + } + } diff -r fbd9bf9c90cb -r 88d31285a14b netx/net/sourceforge/jnlp/services/ServiceUtil.java --- a/netx/net/sourceforge/jnlp/services/ServiceUtil.java Thu Nov 18 11:12:10 2010 -0500 +++ b/netx/net/sourceforge/jnlp/services/ServiceUtil.java Thu Nov 18 11:55:26 2010 -0500 @@ -39,6 +39,7 @@ import javax.jnlp.UnavailableServiceExce import net.sourceforge.jnlp.JNLPFile; import net.sourceforge.jnlp.runtime.ApplicationInstance; +import net.sourceforge.jnlp.runtime.DeploymentConfiguration; import net.sourceforge.jnlp.runtime.JNLPRuntime; import net.sourceforge.jnlp.security.SecurityWarning; import net.sourceforge.jnlp.security.SecurityWarning.AccessType; @@ -208,9 +209,10 @@ public class ServiceUtil { }; /** - * Returns whether the app requesting a service is signed. If the app is - * unsigned, the user is prompted with a dialog asking if the action - * should be allowed. + * Returns whether the app requesting a JNLP service has the right permissions. + * If it doesn't, user is prompted for permissions. This method should only be + * used for JNLP API related permissions. + * * @param type the type of access being requested * @param extras extra Strings (usually) that are passed to the dialog for * message formatting. @@ -221,8 +223,9 @@ public class ServiceUtil { } /** - * Returns whether the app requesting a service has the right permissions. - * If it doesn't, user is prompted for permissions. + * Returns whether the app requesting a JNLP service has the right permissions. + * If it doesn't, user is prompted for permissions. This method should only be + * used for JNLP API related permissions. * * @param app the application which is requesting the check. If null, the current * application is used. @@ -265,6 +268,11 @@ public class ServiceUtil { } if (!codeTrusted) { + + if (!shouldPromptUser()) { + return false; + } + final AccessType tmpType = type; final Object[] tmpExtras = extras; final ApplicationInstance tmpApp = app; @@ -285,4 +293,16 @@ public class ServiceUtil { return true; //allow } + + /** + * Returns whether the current runtime configuration allows prompting the + * user for JNLP permissions. + * + * @return true if the user should be prompted for JNLP API related permissions. + */ + private static boolean shouldPromptUser() { + return Boolean.valueOf(JNLPRuntime.getConfiguration() + .getProperty(DeploymentConfiguration.KEY_SECURITY_PROMPT_USER_FOR_JNLP)); + } + } diff -r fbd9bf9c90cb -r 88d31285a14b plugin/icedteanp/java/sun/applet/PluginMain.java --- a/plugin/icedteanp/java/sun/applet/PluginMain.java Thu Nov 18 11:12:10 2010 -0500 +++ b/plugin/icedteanp/java/sun/applet/PluginMain.java Thu Nov 18 11:55:26 2010 -0500 @@ -199,7 +199,11 @@ public class PluginMain System.setProperties(avProps); // plug in a custom authenticator and proxy selector - Authenticator.setDefault(new CustomAuthenticator()); + boolean installAuthenticator = Boolean.valueOf(JNLPRuntime.getConfiguration() + .getProperty(DeploymentConfiguration.KEY_SECURITY_INSTALL_AUTHENTICATOR)); + if (installAuthenticator) { + Authenticator.setDefault(new CustomAuthenticator()); + } ProxySelector.setDefault(new PluginProxySelector()); CookieManager ckManager = new PluginCookieManager(); From omajid at redhat.com Thu Nov 18 09:02:48 2010 From: omajid at redhat.com (Omair Majid) Date: Thu, 18 Nov 2010 12:02:48 -0500 Subject: [icedtea-web] RFC: add configuration support for user prompts (and other access control options) In-Reply-To: <20101117213224.GE2939@redhat.com> References: <4CD4355C.6050000@redhat.com> <20101110210220.GB8213@redhat.com> <4CDB21DF.5030805@redhat.com> <20101117213224.GE2939@redhat.com> Message-ID: <4CE55C38.90703@redhat.com> On 11/17/2010 04:32 PM, Deepak Bhole wrote: > * Omair Majid [2010-11-10 17:51]: >> Hi Deepak, >> >> Thanks for reviewing the patch. I have attached an updated version. >> > > Hi Omair. Looks good. Okay for head! > Thanks for the review Deepak! Pushed to head. Cheers, Omair From bugzilla-daemon at icedtea.classpath.org Thu Nov 18 10:52:55 2010 From: bugzilla-daemon at icedtea.classpath.org (bugzilla-daemon at icedtea.classpath.org) Date: Thu, 18 Nov 2010 18:52:55 +0000 Subject: [Bug 590] Unable to activate (click) checkboxes in jtable Message-ID: http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=590 ------- Comment #5 from asu at redhat.com 2010-11-18 18:52 ------- Hello, I'm not quite sure I understand what you mean. The checkboxes are not being checked or unchecked when clicked upon? Or did you mean when selecting a row which contains a checkbox, it doesn't get toggled? Running your reproducer does not seem to show me the issue you are having. (Reproducer has no checkboxes..) --Andrew -- Configure bugmail: http://icedtea.classpath.org/bugzilla/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are the assignee for the bug, or are watching the assignee. From bugzilla-daemon at icedtea.classpath.org Thu Nov 18 11:30:47 2010 From: bugzilla-daemon at icedtea.classpath.org (bugzilla-daemon at icedtea.classpath.org) Date: Thu, 18 Nov 2010 19:30:47 +0000 Subject: [Bug 590] Unable to activate (click) checkboxes in jtable Message-ID: http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=590 ------- Comment #6 from asu at redhat.com 2010-11-18 19:30 ------- Hello, Please disregard my previous comment, I am able to see it now. I will look more into this. Thanks, Andrew -- Configure bugmail: http://icedtea.classpath.org/bugzilla/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are the assignee for the bug, or are watching the assignee. From omajid at redhat.com Thu Nov 18 13:12:41 2010 From: omajid at redhat.com (Omair Majid) Date: Thu, 18 Nov 2010 16:12:41 -0500 Subject: [icedtea-web] RFC: fix icon names for desktop entries In-Reply-To: <4CD8190E.7070700@redhat.com> References: <4CD8190E.7070700@redhat.com> Message-ID: <4CE596C9.3090106@redhat.com> On 11/08/2010 10:36 AM, Omair Majid wrote: > Hi, > > The attached patch removes file extensions from the icon names used in > desktop entries. As the algorithm in the Icon Theme Specification [1] > implies, icon names should not have extensions if they are not absolute > paths. > I am attaching an updated patch. The desktop files in icedtea-web have a number of issues: The Icon entries in all desktop files contain the icon extension. According to the Desktop Entry Specification [1] unless the icon is an absolute path, the algorithm in Icon Theme Specification [2] is to be used. This algorithm expects the Icon to be a name without any extensions. The patch removes the extension from all icons. The Encoding tag in desktop entries is deprecated [1]. This patch removes it. The desktop entry for IcedTea Web Start (and not the desktop file created by netx for JNLP applications) uses the path /usr/bin/javaws incorrectly. As described in the Mime Action (un)specification [3], a desktop file is used to figure out mime type associations (javaws.desktop contains a MimeType= line). Applications like Firefox use this to decide that "IcedTea Web Start" (the name described by this desktop file) should be used to run files of mime type appliaction/x-java-jnlp-file. javaws.desktop sets Exec=/usr/bin/javaws %f which means that that default javaws is used to run it even if the user specifically selects "IcedTea Web Start" from the application. The patch fixes this too. Note that the javaws.desktop file is not directly visible to the user; it is not installed in any application menus. The user can, however, indirectly see it (for example the javaws.desktop file is used if you use nautilus and right click a file and select open with->other applications), so an Icon is still needed. ChangeLog 2010-11-18 Omair Majid * Makefile.am (EXTRA_DIST): Replace javaws.desktop with javaws.desktop.in. (all-local): Add javaws.desktop. (clean-local): Add dependency on clean-desktop-files. (.PHONY) Add clean-desktop- files. (clean-desktop-files): New target. (javaws.desktop): New target. Fix the Exec= line in Makefile.am to create the javaws.desktop file. * javaws.desktop: Renamed to... * javaws.desktop.in: New file. Does not contain Encoding key. Value for Icon does not contain extension. * netx/net/sourceforge/jnlp/util/XDesktopEntry.java (JAVA_ICON_NAME): Set to the icon name without the extension. Any thoughts or comments? Thanks, Omair [1] http://standards.freedesktop.org/desktop-entry-spec/desktop-entry-spec-latest.html [2] http://standards.freedesktop.org/icon-theme-spec/icon-theme-spec-latest.html [3] http://www.freedesktop.org/wiki/Specifications/mime-actions-spec -------------- next part -------------- A non-text attachment was scrubbed... Name: icedtea-web-fix-desktop-launchers-01.patch Type: text/x-patch Size: 3121 bytes Desc: not available Url : http://mail.openjdk.java.net/pipermail/distro-pkg-dev/attachments/20101118/7b605f5e/icedtea-web-fix-desktop-launchers-01.patch From omajid at redhat.com Thu Nov 18 15:16:45 2010 From: omajid at redhat.com (Omair Majid) Date: Thu, 18 Nov 2010 18:16:45 -0500 Subject: [icedtea-web] RFC: integrate proxy configuration into netx/plugin In-Reply-To: <20101117212445.GA2939@redhat.com> References: <4CE16D13.7090805@redhat.com> <20101117212445.GA2939@redhat.com> Message-ID: <4CE5B3DD.2050607@redhat.com> On 11/17/2010 04:24 PM, Deepak Bhole wrote: > * Omair Majid [2010-11-15 12:27]: >> Hi, >> > ... >> + >> + /** >> + * Returns true if the host is the hostname or the IP address of the >> + * localhost >> + */ >> + private boolean isLocalHost(String host) { >> + if (host.equals("localhost")) { >> + return true; >> + } >> + >> + if (host.equals("127.0.0.1")) { >> + return true; >> + } >> + >> + try { >> + if (host.equals(InetAddress.getLocalHost().getHostName())) { >> + return true; >> + } >> + } catch (UnknownHostException e) { >> + // continue >> + } >> + >> + try { >> + if (host.equals(InetAddress.getLocalHost().getHostAddress())) { >> + return true; >> + } >> + } catch (UnknownHostException e) { >> + // continue >> + } >> + >> + return false; >> + } >> + > > The above check will fail for something like 127.0.0.2 which is also > local. Can't we use InetAddress.isLoopbackAddress() here? > I actually wanted to avoid doing a DNS lookup on the (possibly untrusted) hostname (not sure if that even matters), but I cant see another way. Fixed using the method you suggested. The last two conditions are still present as they check if something like "fully.qualified.domain.name" is the local machine, something that isLoopbackAddress does not do. > > Rest looks fine to me. > Thanks, Omair -------------- next part -------------- A non-text attachment was scrubbed... Name: integrate-proxy-04.patch Type: text/x-patch Size: 41074 bytes Desc: not available Url : http://mail.openjdk.java.net/pipermail/distro-pkg-dev/attachments/20101118/88f35b73/integrate-proxy-04.patch From dbhole at redhat.com Thu Nov 18 15:26:52 2010 From: dbhole at redhat.com (Deepak Bhole) Date: Thu, 18 Nov 2010 18:26:52 -0500 Subject: [icedtea-web] RFC: fix icon names for desktop entries In-Reply-To: <4CE596C9.3090106@redhat.com> References: <4CD8190E.7070700@redhat.com> <4CE596C9.3090106@redhat.com> Message-ID: <20101118232403.GA3884@redhat.com> * Omair Majid [2010-11-18 16:13]: > On 11/08/2010 10:36 AM, Omair Majid wrote: > >Hi, > > > >The attached patch removes file extensions from the icon names used in > >desktop entries. As the algorithm in the Icon Theme Specification [1] > >implies, icon names should not have extensions if they are not absolute > >paths. > > > > I am attaching an updated patch. The desktop files in icedtea-web > have a number of issues: > > The Icon entries in all desktop files contain the icon extension. > According to the Desktop Entry Specification [1] unless the icon is > an absolute path, the algorithm in Icon Theme Specification [2] is > to be used. This algorithm expects the Icon to be a name without any > extensions. The patch removes the extension from all icons. > > The Encoding tag in desktop entries is deprecated [1]. This patch > removes it. > > The desktop entry for IcedTea Web Start (and not the desktop file > created by netx for JNLP applications) uses the path /usr/bin/javaws > incorrectly. As described in the Mime Action (un)specification [3], > a desktop file is used to figure out mime type associations > (javaws.desktop contains a MimeType= line). Applications like > Firefox use this to decide that "IcedTea Web Start" (the name > described by this desktop file) should be used to run files of mime > type appliaction/x-java-jnlp-file. javaws.desktop sets > Exec=/usr/bin/javaws %f which means that that default javaws is used > to run it even if the user specifically selects "IcedTea Web Start" > from the application. The patch fixes this too. Note that the > javaws.desktop file is not directly visible to the user; it is not > installed in any application menus. The user can, however, > indirectly see it (for example the javaws.desktop file is used if > you use nautilus and right click a file and select open with->other > applications), so an Icon is still needed. > > ChangeLog > 2010-11-18 Omair Majid > > * Makefile.am (EXTRA_DIST): Replace javaws.desktop with > javaws.desktop.in. (all-local): Add javaws.desktop. (clean-local): > Add dependency on clean-desktop-files. (.PHONY) Add clean-desktop- > files. (clean-desktop-files): New target. (javaws.desktop): New > target. Fix the Exec= line in Makefile.am to create the > javaws.desktop file. > * javaws.desktop: Renamed to... > * javaws.desktop.in: New file. Does not contain Encoding key. Value > for Icon does not contain extension. > * netx/net/sourceforge/jnlp/util/XDesktopEntry.java > (JAVA_ICON_NAME): Set to the icon name without the extension. > > Any thoughts or comments? > Looks fine to me. OK for head! Cheers, Deepak > Thanks, > Omair > > [1] http://standards.freedesktop.org/desktop-entry-spec/desktop-entry-spec-latest.html > [2] http://standards.freedesktop.org/icon-theme-spec/icon-theme-spec-latest.html > [3] http://www.freedesktop.org/wiki/Specifications/mime-actions-spec > diff -r 44d47c366e5f Makefile.am > --- a/Makefile.am Wed Nov 10 16:24:53 2010 -0500 > +++ b/Makefile.am Fri Nov 12 09:28:32 2010 -0500 > @@ -66,17 +66,19 @@ > -Wl,\$$ORIGIN/../jre/lib/$(INSTALL_ARCH_DIR)/jli -lpthread $(X11_CFLAGS) $(X11_LIBS) -ljli -ldl -lc -lz > PLUGIN_VERSION = IcedTea $(PACKAGE_VERSION)$(ICEDTEA_REV)$(ICEDTEA_PKG) > > -EXTRA_DIST = $(NETX_SRCDIR) $(abs_top_srcdir)/plugin javaws.png javaws.desktop extra launcher > +EXTRA_DIST = $(NETX_SRCDIR) $(abs_top_srcdir)/plugin javaws.png javaws.desktop.in extra launcher > > # Top-Level Targets > # ================= > > -all-local: stamps/netx-dist.stamp extra-lib/about.jar stamps/plugin.stamp $(NETX_DIR)/launcher/javaws > +all-local: stamps/netx-dist.stamp extra-lib/about.jar stamps/plugin.stamp $(NETX_DIR)/launcher/javaws \ > + javaws.desktop > > -clean-local: clean-netx clean-plugin clean-liveconnect clean-extra clean-bootstrap-directory clean-native-ecj > +clean-local: clean-netx clean-plugin clean-liveconnect clean-extra clean-bootstrap-directory \ > + clean-native-ecj clean-desktop-files > > .PHONY: clean-IcedTeaPlugin clean-add-netx clean-add-netx-debug clean-add-plugin clean-add-plugin-debug \ > - clean-bootstrap-directory clean-native-ecj > + clean-bootstrap-directory clean-native-ecj clean-desktop-files > > install-exec-local: > mkdir -p $(DESTDIR)$(bindir) > @@ -246,6 +248,9 @@ > rm -f netx-source-files.txt > rm -f stamps/netx.stamp > > +clean-desktop-files: > + rm -f javaws.desktop > + > # extras -- used to create about.jar for javaws. > extra-source-files.txt: > find $(abs_top_srcdir)/extra -name '*.java' | sort > $@ > @@ -276,6 +281,9 @@ > mkdir -p launcher > $(CC) $(LAUNCHER_LINK) $(NETX_LAUNCHER_OBJECTS) > > +javaws.desktop: javaws.desktop.in > + sed "s#PATH_TO_JAVAWS#$(DESTDIR)$(bindir)/javaws#" < javaws.desktop.in > javaws.desktop > + > # plugin tests > > if ENABLE_PLUGIN > diff -r 44d47c366e5f javaws.desktop > --- a/javaws.desktop Wed Nov 10 16:24:53 2010 -0500 > +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 > @@ -1,11 +0,0 @@ > -[Desktop Entry] > -Encoding=UTF-8 > -Name=IcedTea Web Start > -Comment=IcedTea Application Launcher > -Exec=/usr/bin/javaws %f > -Icon=javaws.png > -Terminal=false > -Type=Application > -NoDisplay=true > -Categories=Network;WebBrowser; > -MimeType=application/x-java-jnlp-file; > diff -r 44d47c366e5f javaws.desktop.in > --- /dev/null Thu Jan 01 00:00:00 1970 +0000 > +++ b/javaws.desktop.in Fri Nov 12 09:28:32 2010 -0500 > @@ -0,0 +1,10 @@ > +[Desktop Entry] > +Name=IcedTea Web Start > +Comment=IcedTea Application Launcher > +Exec=PATH_TO_JAVAWS %f > +Icon=javaws > +Terminal=false > +Type=Application > +NoDisplay=true > +Categories=Network;WebBrowser; > +MimeType=application/x-java-jnlp-file; > diff -r 44d47c366e5f netx/net/sourceforge/jnlp/util/XDesktopEntry.java > --- a/netx/net/sourceforge/jnlp/util/XDesktopEntry.java Wed Nov 10 16:24:53 2010 -0500 > +++ b/netx/net/sourceforge/jnlp/util/XDesktopEntry.java Fri Nov 12 09:28:32 2010 -0500 > @@ -46,7 +46,7 @@ > */ > public class XDesktopEntry { > > - public static final String JAVA_ICON_NAME = "java.png"; > + public static final String JAVA_ICON_NAME = "java"; > > private JNLPFile file = null; > private int iconSize = -1; From gbenson at redhat.com Fri Nov 19 04:52:22 2010 From: gbenson at redhat.com (Gary Benson) Date: Fri, 19 Nov 2010 12:52:22 +0000 Subject: icedtea6-1.9.1 In-Reply-To: <20101114022449.0cc420aa.acrux_it@libero.it> References: <20101114022449.0cc420aa.acrux_it@libero.it> Message-ID: <20101119125222.GC3976@redhat.com> Hi, Sorry for the silence on this, I've been looking into it all week but I've been struggling to get my PowerPC debug environment up and running again. Hopefully I will have a handle on this soon. Cheers, Gary acrux wrote: > -----BEGIN PGP SIGNED MESSAGE----- > Hash: SHA1 > > I'm looking to build IcedTea6-1.9.1 Shark VM for ppc32 with JIT from > llvm-2.8 . > But what about llvm-2.8 on PowerPC? Will it be able to build > Shark VM ? I.e. Shark VM + JIT from llvm-2.8 will be able to recompile > itself ? Do I need some patch? > > > cheers, > - --acrux > - -- > GNU/Linux on Power Architecture > CRUX PPC - http://cruxppc.org/ > > -----BEGIN PGP SIGNATURE----- > Version: GnuPG v2.0.16 (GNU/Linux) > > iEYEARECAAYFAkzfOmQACgkQxq34tDeO7Lg8rQCfSzopo9go6WJF9cSp9CjsZu6e > C0MAnA2mgvw7uv8bXlRTC+UyZJIkUm58 > =lrIV > -----END PGP SIGNATURE----- -- http://gbenson.net/ From andrew at icedtea.classpath.org Fri Nov 19 05:35:09 2010 From: andrew at icedtea.classpath.org (andrew at icedtea.classpath.org) Date: Fri, 19 Nov 2010 13:35:09 +0000 Subject: /hg/icedtea6: Use IcedTea server for CACAO drops. Message-ID: changeset 8ab7d435a672 in /hg/icedtea6 details: http://icedtea.classpath.org/hg/icedtea6?cmd=changeset;node=8ab7d435a672 author: Andrew John Hughes date: Fri Nov 19 13:35:01 2010 +0000 Use IcedTea server for CACAO drops. 2010-11-19 Andrew John Hughes * Makefile.am: Add download-cacao alias. (CACAO_BASE_URL): Switch to using IcedTea server for CACAO drops too. (CACAO_URL): Likewise. diffstat: 2 files changed, 13 insertions(+), 3 deletions(-) ChangeLog | 10 +++++++++- Makefile.am | 6 ++++-- diffs (42 lines): diff -r 31705b7b612c -r 8ab7d435a672 ChangeLog --- a/ChangeLog Tue Nov 16 16:02:46 2010 +0100 +++ b/ChangeLog Fri Nov 19 13:35:01 2010 +0000 @@ -1,6 +1,14 @@ 2010-11-15 Pavel Tisnovsky + + * Makefile.am: + Add download-cacao alias. + (CACAO_BASE_URL): Switch to using IcedTea + server for CACAO drops too. + (CACAO_URL): Likewise. + 2010-11-15 Pavel Tisnovsky - * Makefile.am: + * Makefile.am: Add patch. * patches/jtreg-DeleteFont.patch: Testcase correction - the test now ignores directory created by HS. diff -r 31705b7b612c -r 8ab7d435a672 Makefile.am --- a/Makefile.am Tue Nov 16 16:02:46 2010 +0100 +++ b/Makefile.am Fri Nov 19 13:35:01 2010 +0000 @@ -7,8 +7,8 @@ OPENJDK_URL = http://download.java.net/o CACAO_VERSION = 6a5eda011e49 CACAO_SHA256SUM = 57f3abd73688cb8861875e2f21be9ec8a0c7c234e1e694489e3efa4436e9228c -CACAO_BASE_URL = http://mips.complang.tuwien.ac.at -CACAO_URL = $(CACAO_BASE_URL)/hg/cacao/archive/$(CACAO_VERSION).tar.gz +CACAO_BASE_URL = http://icedtea.classpath.org/download/drops/cacao +CACAO_URL = $(CACAO_BASE_URL)/$(CACAO_VERSION).tar.gz CACAO_SRC_ZIP = cacao-$(CACAO_VERSION).tar.gz JAXWS_DROP_URL = http://icedtea.classpath.org/download/drops @@ -2076,6 +2076,8 @@ nbplatform: stamps/nbplatform.stamp download: stamps/download.stamp +download-cacao: stamps/download-cacao.stamp + download-drops: stamps/download-drops.stamp download-jaf-drop: stamps/download-jaf-drop.stamp From omajid at icedtea.classpath.org Fri Nov 19 07:37:41 2010 From: omajid at icedtea.classpath.org (omajid at icedtea.classpath.org) Date: Fri, 19 Nov 2010 15:37:41 +0000 Subject: /hg/icedtea-web: fix Exec, Icon and Encoding in desktop entry files Message-ID: changeset 5a9f55d67b50 in /hg/icedtea-web details: http://icedtea.classpath.org/hg/icedtea-web?cmd=changeset;node=5a9f55d67b50 author: Omair Majid date: Fri Nov 19 10:35:27 2010 -0500 fix Exec, Icon and Encoding in desktop entry files 2010-11-19 Omair Majid * Makefile.am (EXTRA_DIST): Replace javaws.desktop with javaws.desktop.in. (all-local): Add javaws.desktop. (clean-local): Add dependency on clean-desktop-files. (.PHONY): Add clean-desktop- files. (clean-desktop-files): New target. (javaws.desktop): New target. Use the absolute path to javaws binary in the Exec= line to create the javaws.desktop file. * javaws.desktop: Renamed to... * javaws.desktop.in: New file. Does not contain Encoding key. Value for Icon does not contain extension. * netx/net/sourceforge/jnlp/util/XDesktopEntry.java (JAVA_ICON_NAME): Set to icon name without the extension. diffstat: 5 files changed, 37 insertions(+), 16 deletions(-) ChangeLog | 14 ++++++++++++++ Makefile.am | 16 ++++++++++++---- javaws.desktop | 11 ----------- javaws.desktop.in | 10 ++++++++++ netx/net/sourceforge/jnlp/util/XDesktopEntry.java | 2 +- diffs (109 lines): diff -r 88d31285a14b -r 5a9f55d67b50 ChangeLog --- a/ChangeLog Thu Nov 18 11:55:26 2010 -0500 +++ b/ChangeLog Fri Nov 19 10:35:27 2010 -0500 @@ -1,3 +1,17 @@ 2010-11-18 Omair Majid + + * Makefile.am (EXTRA_DIST): Replace javaws.desktop with + javaws.desktop.in. (all-local): Add javaws.desktop. (clean-local): + Add dependency on clean-desktop-files. (.PHONY): Add clean-desktop- + files. (clean-desktop-files): New target. (javaws.desktop): New + target. Use the absolute path to javaws binary in the Exec= line to + create the javaws.desktop file. + * javaws.desktop: Renamed to... + * javaws.desktop.in: New file. Does not contain Encoding key. Value + for Icon does not contain extension. + * netx/net/sourceforge/jnlp/util/XDesktopEntry.java + (JAVA_ICON_NAME): Set to icon name without the extension. + 2010-11-18 Omair Majid * netx/net/sourceforge/jnlp/SecurityDesc.java: Remove window banner diff -r 88d31285a14b -r 5a9f55d67b50 Makefile.am --- a/Makefile.am Thu Nov 18 11:55:26 2010 -0500 +++ b/Makefile.am Fri Nov 19 10:35:27 2010 -0500 @@ -66,17 +66,19 @@ LAUNCHER_LINK = -o $@ -Xlinker -O1 -Xlin -Wl,\$$ORIGIN/../jre/lib/$(INSTALL_ARCH_DIR)/jli -lpthread $(X11_CFLAGS) $(X11_LIBS) -ljli -ldl -lc -lz PLUGIN_VERSION = IcedTea $(PACKAGE_VERSION)$(ICEDTEA_REV)$(ICEDTEA_PKG) -EXTRA_DIST = $(NETX_SRCDIR) $(abs_top_srcdir)/plugin javaws.png javaws.desktop extra launcher +EXTRA_DIST = $(NETX_SRCDIR) $(abs_top_srcdir)/plugin javaws.png javaws.desktop.in extra launcher # Top-Level Targets # ================= -all-local: stamps/netx-dist.stamp extra-lib/about.jar stamps/plugin.stamp $(NETX_DIR)/launcher/javaws +all-local: stamps/netx-dist.stamp extra-lib/about.jar stamps/plugin.stamp $(NETX_DIR)/launcher/javaws \ + javaws.desktop -clean-local: clean-netx clean-plugin clean-liveconnect clean-extra clean-bootstrap-directory clean-native-ecj +clean-local: clean-netx clean-plugin clean-liveconnect clean-extra clean-bootstrap-directory \ + clean-native-ecj clean-desktop-files .PHONY: clean-IcedTeaPlugin clean-add-netx clean-add-netx-debug clean-add-plugin clean-add-plugin-debug \ - clean-bootstrap-directory clean-native-ecj + clean-bootstrap-directory clean-native-ecj clean-desktop-files install-exec-local: mkdir -p $(DESTDIR)$(bindir) @@ -246,6 +248,9 @@ clean-netx: rm -f netx-source-files.txt rm -f stamps/netx.stamp +clean-desktop-files: + rm -f javaws.desktop + # extras -- used to create about.jar for javaws. extra-source-files.txt: find $(abs_top_srcdir)/extra -name '*.java' | sort > $@ @@ -275,6 +280,9 @@ extra-lib/about.jar: stamps/extra-class- $(NETX_DIR)/launcher/javaws: $(NETX_LAUNCHER_OBJECTS) mkdir -p launcher $(CC) $(LAUNCHER_LINK) $(NETX_LAUNCHER_OBJECTS) + +javaws.desktop: javaws.desktop.in + sed "s#PATH_TO_JAVAWS#$(DESTDIR)$(bindir)/javaws#" < javaws.desktop.in > javaws.desktop # plugin tests diff -r 88d31285a14b -r 5a9f55d67b50 javaws.desktop --- a/javaws.desktop Thu Nov 18 11:55:26 2010 -0500 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,11 +0,0 @@ -[Desktop Entry] -Encoding=UTF-8 -Name=IcedTea Web Start -Comment=IcedTea Application Launcher -Exec=/usr/bin/javaws %f -Icon=javaws.png -Terminal=false -Type=Application -NoDisplay=true -Categories=Network;WebBrowser; -MimeType=application/x-java-jnlp-file; diff -r 88d31285a14b -r 5a9f55d67b50 javaws.desktop.in --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/javaws.desktop.in Fri Nov 19 10:35:27 2010 -0500 @@ -0,0 +1,10 @@ +[Desktop Entry] +Name=IcedTea Web Start +Comment=IcedTea Application Launcher +Exec=PATH_TO_JAVAWS %f +Icon=javaws +Terminal=false +Type=Application +NoDisplay=true +Categories=Network;WebBrowser; +MimeType=application/x-java-jnlp-file; diff -r 88d31285a14b -r 5a9f55d67b50 netx/net/sourceforge/jnlp/util/XDesktopEntry.java --- a/netx/net/sourceforge/jnlp/util/XDesktopEntry.java Thu Nov 18 11:55:26 2010 -0500 +++ b/netx/net/sourceforge/jnlp/util/XDesktopEntry.java Fri Nov 19 10:35:27 2010 -0500 @@ -46,7 +46,7 @@ import net.sourceforge.jnlp.runtime.JNLP */ public class XDesktopEntry { - public static final String JAVA_ICON_NAME = "java.png"; + public static final String JAVA_ICON_NAME = "java"; private JNLPFile file = null; private int iconSize = -1; From omajid at redhat.com Fri Nov 19 07:38:05 2010 From: omajid at redhat.com (Omair Majid) Date: Fri, 19 Nov 2010 10:38:05 -0500 Subject: [icedtea-web] RFC: fix icon names for desktop entries In-Reply-To: <20101118232403.GA3884@redhat.com> References: <4CD8190E.7070700@redhat.com> <4CE596C9.3090106@redhat.com> <20101118232403.GA3884@redhat.com> Message-ID: <4CE699DD.9030900@redhat.com> On 11/18/2010 06:26 PM, Deepak Bhole wrote: > * Omair Majid [2010-11-18 16:13]: >> On 11/08/2010 10:36 AM, Omair Majid wrote: >>> Hi, >>> >>> The attached patch removes file extensions from the icon names used in >>> desktop entries. As the algorithm in the Icon Theme Specification [1] >>> implies, icon names should not have extensions if they are not absolute >>> paths. >>> >> >> I am attaching an updated patch. The desktop files in icedtea-web >> have a number of issues: >> >> The Icon entries in all desktop files contain the icon extension. >> According to the Desktop Entry Specification [1] unless the icon is >> an absolute path, the algorithm in Icon Theme Specification [2] is >> to be used. This algorithm expects the Icon to be a name without any >> extensions. The patch removes the extension from all icons. >> >> The Encoding tag in desktop entries is deprecated [1]. This patch >> removes it. >> >> The desktop entry for IcedTea Web Start (and not the desktop file >> created by netx for JNLP applications) uses the path /usr/bin/javaws >> incorrectly. As described in the Mime Action (un)specification [3], >> a desktop file is used to figure out mime type associations >> (javaws.desktop contains a MimeType= line). Applications like >> Firefox use this to decide that "IcedTea Web Start" (the name >> described by this desktop file) should be used to run files of mime >> type appliaction/x-java-jnlp-file. javaws.desktop sets >> Exec=/usr/bin/javaws %f which means that that default javaws is used >> to run it even if the user specifically selects "IcedTea Web Start" >> from the application. The patch fixes this too. Note that the >> javaws.desktop file is not directly visible to the user; it is not >> installed in any application menus. The user can, however, >> indirectly see it (for example the javaws.desktop file is used if >> you use nautilus and right click a file and select open with->other >> applications), so an Icon is still needed. >> >> ChangeLog >> 2010-11-18 Omair Majid >> >> * Makefile.am (EXTRA_DIST): Replace javaws.desktop with >> javaws.desktop.in. (all-local): Add javaws.desktop. (clean-local): >> Add dependency on clean-desktop-files. (.PHONY) Add clean-desktop- >> files. (clean-desktop-files): New target. (javaws.desktop): New >> target. Fix the Exec= line in Makefile.am to create the >> javaws.desktop file. >> * javaws.desktop: Renamed to... >> * javaws.desktop.in: New file. Does not contain Encoding key. Value >> for Icon does not contain extension. >> * netx/net/sourceforge/jnlp/util/XDesktopEntry.java >> (JAVA_ICON_NAME): Set to the icon name without the extension. >> >> Any thoughts or comments? >> > > Looks fine to me. OK for head! > Thanks. Pushed to head. Cheers, Omair From andrew at icedtea.classpath.org Fri Nov 19 14:23:35 2010 From: andrew at icedtea.classpath.org (andrew at icedtea.classpath.org) Date: Fri, 19 Nov 2010 22:23:35 +0000 Subject: /hg/icedtea6: Fix a memory leak in the XRender pipeline. Message-ID: changeset c3803fc3edac in /hg/icedtea6 details: http://icedtea.classpath.org/hg/icedtea6?cmd=changeset;node=c3803fc3edac author: Andrew John Hughes date: Fri Nov 19 22:23:15 2010 +0000 Fix a memory leak in the XRender pipeline. 2010-11-19 Andrew John Hughes * Makefile.am: Add new patch. * patches/xrender-gc-cleanup.patch: Fix memory leak in XRender pipeline. diffstat: 3 files changed, 20 insertions(+), 1 deletion(-) ChangeLog | 6 ++++++ Makefile.am | 3 ++- patches/xrender-gc-cleanup.patch | 12 ++++++++++++ diffs (42 lines): diff -r 8ab7d435a672 -r c3803fc3edac ChangeLog --- a/ChangeLog Fri Nov 19 13:35:01 2010 +0000 +++ b/ChangeLog Fri Nov 19 22:23:15 2010 +0000 @@ -1,3 +1,9 @@ 2010-11-19 Andrew John Hughes + + * Makefile.am: Add new patch. + * patches/xrender-gc-cleanup.patch: + Fix memory leak in XRender pipeline. + 2010-11-19 Andrew John Hughes * Makefile.am: diff -r 8ab7d435a672 -r c3803fc3edac Makefile.am --- a/Makefile.am Fri Nov 19 13:35:01 2010 +0000 +++ b/Makefile.am Fri Nov 19 22:23:15 2010 +0000 @@ -349,7 +349,8 @@ ICEDTEA_PATCHES += patches/openjdk/67252 patches/openjdk/6961633-xrender-02.patch \ patches/openjdk/6791612-opengl-jni-fix.patch \ patches/openjdk/6755274-glgetstring-crash.patch \ - patches/openjdk/6984543-onscreen_rendering_resize_test.patch + patches/openjdk/6984543-onscreen_rendering_resize_test.patch \ + patches/xrender-gc-cleanup.patch endif if ENABLE_NIO2 diff -r 8ab7d435a672 -r c3803fc3edac patches/xrender-gc-cleanup.patch --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/patches/xrender-gc-cleanup.patch Fri Nov 19 22:23:15 2010 +0000 @@ -0,0 +1,12 @@ +--- openjdk.orig/jdk/src/solaris/classes/sun/java2d/xr/XRSurfaceData.java 2010-10-22 19:59:12.530975783 +0200 ++++ openjdk/jdk/src/solaris/classes/sun/java2d/xr/XRSurfaceData.java 2010-10-22 19:59:12.020734687 +0200 +@@ -479,8 +485,7 @@ + if (xrpipe == null) { + try { + SunToolkit.awtLock(); +- xgc = renderQueue.createGC(xid); // TODO: GC leak? where to +- // clean up? ++ xgc = XCreateGC(getNativeOps()); + + xrpipe = new XRRenderer(maskBuffer.getMaskBuffer()); + xrtxpipe = new PixelToShapeConverter(xrpipe); From bugzilla-daemon at icedtea.classpath.org Sat Nov 20 08:33:11 2010 From: bugzilla-daemon at icedtea.classpath.org (bugzilla-daemon at icedtea.classpath.org) Date: Sat, 20 Nov 2010 16:33:11 +0000 Subject: [Bug 595] New: ExceptionInInitializerError/AccessControlException in AppletAudioClip.play() Message-ID: http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=595 Summary: ExceptionInInitializerError/AccessControlException in AppletAudioClip.play() Product: IcedTea Version: 6-1.9.1 Platform: x86 OS/Version: Linux Status: NEW Severity: normal Priority: P2 Component: PulseAudio AssignedTo: unassigned at icedtea.classpath.org ReportedBy: Paul-Ebermann at gmx.de My applet uses the java.applet.AudioClip API to play a short audio clip (*.wav). It works on another computer with OpenSUSE and IcedTea (64 Bit version, I think), but on my home computer with 32 Bit Ubuntu and IcedTea I get an Error on .play(). java.lang.ExceptionInInitializerError at org.classpath.icedtea.pulseaudio.PulseAudioMixer.openImpl(PulseAudioMixer.java:654) at org.classpath.icedtea.pulseaudio.PulseAudioMixer.openLocal(PulseAudioMixer.java:588) at org.classpath.icedtea.pulseaudio.PulseAudioMixer.openLocal(PulseAudioMixer.java:584) at org.classpath.icedtea.pulseaudio.PulseAudioMixer.open(PulseAudioMixer.java:579) at org.classpath.icedtea.pulseaudio.PulseAudioDataLine.open(PulseAudioDataLine.java:95) at org.classpath.icedtea.pulseaudio.PulseAudioSourceDataLine.open(PulseAudioSourceDataLine.java:75) at org.classpath.icedtea.pulseaudio.PulseAudioSourceDataLine.open(PulseAudioSourceDataLine.java:90) at com.sun.media.sound.DataPusher.start(DataPusher.java:99) at com.sun.media.sound.JavaSoundAudioClip.startImpl(JavaSoundAudioClip.java:182) at com.sun.media.sound.JavaSoundAudioClip.play(JavaSoundAudioClip.java:137) at sun.applet.AppletAudioClip.play(AppletAudioClip.java:136) at [ ... my own code ...] Caused by: java.security.AccessControlException: access denied (java.io.FilePermission /usr/lib/jvm/java-6-openjdk/jre/lib/ext/i386/libpulse-java.so read) at java.security.AccessControlContext.checkPermission(AccessControlContext.java:342) at java.security.AccessController.checkPermission(AccessController.java:553) at java.lang.SecurityManager.checkPermission(SecurityManager.java:549) at net.sourceforge.jnlp.runtime.JNLPSecurityManager.checkPermission(JNLPSecurityManager.java:250) at java.lang.SecurityManager.checkRead(SecurityManager.java:888) at java.io.File.exists(File.java:748) at sun.misc.Launcher$ExtClassLoader.findLibrary(Launcher.java:214) at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1652) at java.lang.Runtime.loadLibrary0(Runtime.java:840) at java.lang.System.loadLibrary(System.java:1047) at org.classpath.icedtea.pulseaudio.SecurityWrapper$1.run(SecurityWrapper.java:18) at org.classpath.icedtea.pulseaudio.SecurityWrapper$1.run(SecurityWrapper.java:15) at java.security.AccessController.doPrivileged(Native Method) at org.classpath.icedtea.pulseaudio.SecurityWrapper.loadNativeLibrary(SecurityWrapper.java:24) at org.classpath.icedtea.pulseaudio.EventLoop.(EventLoop.java:105) ... 24 more On the same system/machine with Sun-Plugin I have no problem (I can hear the sound). Looks like there is something wrong with the security-settings. Here is my system info: --- java version "1.6.0_20" OpenJDK Runtime Environment (IcedTea6 1.9.1) (6b20-1.9.1-1ubuntu3) OpenJDK Client VM (build 17.0-b16, mixed mode, sharing) Linux heribert 2.6.35-22-generic #35-Ubuntu SMP Sat Oct 16 20:36:48 UTC 2010 i686 GNU/Linux --- (I'll be away for a week, but then I'll produce a minimal example, if necessary.) -- Configure bugmail: http://icedtea.classpath.org/bugzilla/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are the assignee for the bug, or are watching the assignee. From doko at icedtea.classpath.org Sun Nov 21 19:57:05 2010 From: doko at icedtea.classpath.org (doko at icedtea.classpath.org) Date: Mon, 22 Nov 2010 03:57:05 +0000 Subject: /hg/icedtea6: Add shark alias when building zero with shark supp... Message-ID: changeset 789ec2d452bd in /hg/icedtea6 details: http://icedtea.classpath.org/hg/icedtea6?cmd=changeset;node=789ec2d452bd author: doko at ubuntu.com date: Mon Nov 22 04:51:01 2010 +0100 Add shark alias when building zero with shark support on hotspot archs. Without the alias, -shark just gets ignored and defaults to the hotspot vm, which is unexpected. 2010-11-22 Matthias Klose * Makefile.am (stamps/add-zero.stamp): Add shark alias when building zero with shark support on hotspot archs. diffstat: 2 files changed, 10 insertions(+) ChangeLog | 5 +++++ Makefile.am | 5 +++++ diffs (27 lines): diff -r c3803fc3edac -r 789ec2d452bd ChangeLog --- a/ChangeLog Fri Nov 19 22:23:15 2010 +0000 +++ b/ChangeLog Mon Nov 22 04:51:01 2010 +0100 @@ -1,3 +1,8 @@ 2010-11-19 Andrew John Hughes + + * Makefile.am (stamps/add-zero.stamp): Add shark alias when building + zero with shark support on hotspot archs. + 2010-11-19 Andrew John Hughes * Makefile.am: Add new patch. diff -r c3803fc3edac -r 789ec2d452bd Makefile.am --- a/Makefile.am Fri Nov 19 22:23:15 2010 +0000 +++ b/Makefile.am Mon Nov 22 04:51:01 2010 +0100 @@ -1867,6 +1867,11 @@ else cp -a zerovm/$(BUILD_DIR)/hotspot/import/jre/lib/$(INSTALL_ARCH_DIR)/server/* \ $(BUILD_JRE_ARCH_DIR)/zero/ printf -- '-zero KNOWN\n' >> $(BUILD_JRE_ARCH_DIR)/jvm.cfg +if ADD_SHARK_BUILD + printf -- '-shark ALIASED_TO -zero\n' >> $(BUILD_JRE_ARCH_DIR)/jvm.cfg +else + printf -- '-shark ERROR\n' >> $(BUILD_JRE_ARCH_DIR)/jvm.cfg +endif endif else printf -- '-zero ERROR\n' >> $(BUILD_JRE_ARCH_DIR)/jvm.cfg From bugzilla-daemon at icedtea.classpath.org Mon Nov 22 04:46:13 2010 From: bugzilla-daemon at icedtea.classpath.org (bugzilla-daemon at icedtea.classpath.org) Date: Mon, 22 Nov 2010 12:46:13 +0000 Subject: [Bug 596] New: change to another target in shark Message-ID: http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=596 Summary: change to another target in shark Product: IcedTea Version: 6-1.9.1 Platform: x86_64 URL: http://www.cs.nctu.edu.tw/~hhchiu/hs_err_pid4123.log OS/Version: Linux Status: NEW Severity: normal Priority: P2 Component: Shark AssignedTo: unassigned at icedtea.classpath.org ReportedBy: joannechiou at gmail.com CC: joannechiou at gmail.com I built version 1.9.1 IcedTea, and then I modified a part of code at icedtea6-1.9.1/openjdk-ecj/hotspot/src/share/vm/shark/sharkCompiler.cpp; I tried to change to anther target that is supported in LLVM, I used this instruction "builder.setMArch(x86);" instead of "builder.setMCPU(MCPU);". After I rebuilt the program and executed it, I got a segmentation fault and generated a bug report when process was terminated, I knew that the result was In expectation. But when I redo to use original instruction and recompiled it, the error message is still there, as following: /home/shchiu/project/icedtea6-1.9.1/bootstrap/jdk1.6.0/bin/javap javax.xml.transform.TransformerFactory > /dev/null 2>&1; \ if [ $? -ne 0 ]; then \ /home/shchiu/project/icedtea6-1.9.1/bootstrap/jdk1.6.0/bin/java -version; \ echo "*** An XSLT processor (J2SE 1.4.x or newer) is required" \ "to bootstrap this build" 1>&2; \ exit 1; \ fi /bin/sh: line 6: 5401 Aborted /home/shchiu/project/icedtea6-1.9.1/bootstrap/jdk1.6.0/bin/javap javax.xml.transform.TransformerFactory > /dev/null 2>&1 MCPU: -mcpu=k8-sse3 MAttrs: -mattr= hello here: setMarch instead of setMCPU java version "1.6.0_20" OpenJDK Runtime Environment (IcedTea6 1.9.1) (Debian build 1.6.0_20-b20) OpenJDK 64-Bit Shark VM (build 17.0-b16, mixed mode) *** An XSLT processor (J2SE 1.4.x or newer) is required to bootstrap this build and when i typed the instruction .../javap javax.xml.transform.TransformerFactory, i got following message: MCPU: -mcpu=k8-sse3 MAttrs: -mattr= hello here: setMarch instead of setMCPU # # A fatal error has been detected by the Java Runtime Environment: # # Internal Error (os_linux_zero.cpp:236), pid=5497, tid=1085897040 # Error: caught unhandled signal 11 # # JRE version: 6.0_20-b20 # Java VM: OpenJDK 64-Bit Shark VM (17.0-b16 mixed mode linux-amd64 ) # Derivative: IcedTea6 1.9.1 # Distribution: Built on Debian GNU/Linux 5.0.6 (lenny) (Mon Nov 22 11:58:37 CST 2010) # An error report file with more information is saved as: # /home/shchiu/project/icedtea6-1.9.1/hs_err_pid4123.log # # If you would like to submit a bug report, please include # instructions how to reproduce the bug and visit: # http://icedtea.classpath.org/bugzilla # Aborted I found out that there is no compilation error, I thought maybe it had something wrong at link time, so i searched every location where libjvm.so is and replaced them with a new libjvm.so artificially, and it worked correctly finally. It should be do automatically when I rebuilt it. Other system information such as build time and platform are at the end of bug report. -- Configure bugmail: http://icedtea.classpath.org/bugzilla/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are the assignee for the bug, or are watching the assignee. From bugzilla-daemon at icedtea.classpath.org Mon Nov 22 05:08:53 2010 From: bugzilla-daemon at icedtea.classpath.org (bugzilla-daemon at icedtea.classpath.org) Date: Mon, 22 Nov 2010 13:08:53 +0000 Subject: [Bug 596] change to another target in shark Message-ID: http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=596 gbenson at redhat.com changed: What |Removed |Added ---------------------------------------------------------------------------- Status|NEW |RESOLVED Resolution| |WONTFIX ------- Comment #1 from gbenson at redhat.com 2010-11-22 13:08 ------- This isn't so much a Shark bug as a generic IcedTea/OpenJDK bug. HotSpot has some functionality in its build system to take a pre-built JDK and insert itself into it, and that's what I tend to use for Shark development. Builds take a fraction of the time of a full IcedTea/OpenJDK build, and you can blow them away easily if you make a change that doesn't get rebuilt properly. You can grab a copy of my build environment like this: hg fclone http://icedtea.classpath.org/hg/shark You'll need to change JAVADIR in Makefile and some of the exports in build.sh to suit your environment. -- Configure bugmail: http://icedtea.classpath.org/bugzilla/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are the assignee for the bug, or are watching the assignee. From ptisnovs at redhat.com Mon Nov 22 05:53:34 2010 From: ptisnovs at redhat.com (Pavel Tisnovsky) Date: Mon, 22 Nov 2010 14:53:34 +0100 Subject: Reviewer needed - two corrections in JTreg test harness Message-ID: <4CEA75DE.8050305@redhat.com> Hi all, can anybody please review two corrections I made in JTreg test harness tool? The first correction is easy: I've added support for "process" option which can be used along with "compile" tag. This option is used by langtools regression test: tools/javac/processing/6499119/ClassProcessor.java for example. Second correction is a bit more complicated - the current version of JTreg test harness used in IcedTea6 does does not properly sets all system properties, especially "java.class.path" (properties are sets only for second phase - "run"). So I added this feature which isn't easy because JTreg test harness setup its own security manager to ensure that test being run does not change system props. Both corrections were checked against all regression tests, of course. Thank you in advance Pavel T. -------------- next part -------------- An embedded and charset-unspecified text was scrubbed... Name: hg_export Url: http://mail.openjdk.java.net/pipermail/distro-pkg-dev/attachments/20101122/792ceda8/hg_export.ksh From liuqi at icedtea.classpath.org Mon Nov 22 05:53:09 2010 From: liuqi at icedtea.classpath.org (liuqi at icedtea.classpath.org) Date: Mon, 22 Nov 2010 13:53:09 +0000 Subject: /hg/openjdk6-mips: 3 new changesets Message-ID: changeset 1f91cc15cd21 in /hg/openjdk6-mips details: http://icedtea.classpath.org/hg/openjdk6-mips?cmd=changeset;node=1f91cc15cd21 author: YANG Yongqiang date: Wed Nov 17 17:46:08 2010 +0800 A wrong instruction(slt) was used. changeset 202786aed583 in /hg/openjdk6-mips details: http://icedtea.classpath.org/hg/openjdk6-mips?cmd=changeset;node=202786aed583 author: YANG Yongqiang date: Wed Nov 17 17:52:29 2010 +0800 Remove useless codes. changeset ab0d284dc313 in /hg/openjdk6-mips details: http://icedtea.classpath.org/hg/openjdk6-mips?cmd=changeset;node=ab0d284dc313 author: LIN Chuanwen date: Thu Nov 18 16:19:42 2010 +0800 Fix the bug when the C1 compiler dealing with CAS. In C1 compiler, the CAS operations(cas_int, cas_long and cas_obj) use AT as the result register. However, the CAS operation does not define the result operand. diffstat: 5 files changed, 60 insertions(+), 12 deletions(-) hotspot/src/cpu/mips/vm/c1_LIRGenerator_mips.cpp | 10 ++-- hotspot/src/cpu/mips/vm/c1_Runtime1_mips.cpp | 4 - hotspot/src/cpu/mips/vm/templateInterpreter_mips.cpp | 1 hotspot/src/share/vm/c1/c1_LIR.cpp | 38 +++++++++++++++++- hotspot/src/share/vm/c1/c1_LIR.hpp | 19 +++++++-- diffs (168 lines): diff -r 87db8957684e -r ab0d284dc313 hotspot/src/cpu/mips/vm/c1_LIRGenerator_mips.cpp --- a/hotspot/src/cpu/mips/vm/c1_LIRGenerator_mips.cpp Fri Nov 12 15:27:30 2010 +0800 +++ b/hotspot/src/cpu/mips/vm/c1_LIRGenerator_mips.cpp Thu Nov 18 16:19:42 2010 +0800 @@ -707,7 +707,7 @@ void LIRGenerator::do_AttemptUpdate(Intr __ add(addr, LIR_OprFact::intConst(value_offset), addr); LIR_Opr t1 = LIR_OprFact::illegalOpr; // no temp needed LIR_Opr t2 = LIR_OprFact::illegalOpr; // no temp needed - __ cas_long(addr, cmp_value.result(), new_value.result(), t1, t2); + __ cas_long(addr, cmp_value.result(), new_value.result(), t1, t2, FrameMap::_at_opr); // generate conditional move of boolean result LIR_Opr result = rlock_result(x); @@ -749,17 +749,17 @@ void LIRGenerator::do_CompareAndSwap(Int } else { ShouldNotReachHere(); } - LIR_Opr addr = new_register(T_OBJECT); + LIR_Opr addr = new_pointer_register(); __ move(obj.result(), addr); __ add(addr, offset.result(), addr); LIR_Opr ill = LIR_OprFact::illegalOpr; // for convenience if (type == objectType) - __ cas_obj(addr, cmp.result(), val.result(), ill, ill); + __ cas_obj(addr, cmp.result(), val.result(), ill, ill, FrameMap::_at_opr); else if (type == intType) - __ cas_int(addr, cmp.result(), val.result(), ill, ill); + __ cas_int(addr, cmp.result(), val.result(), ill, ill, FrameMap::_at_opr); else if (type == longType) - __ cas_long(addr, cmp.result(), val.result(), ill, ill); + __ cas_long(addr, cmp.result(), val.result(), ill, ill, FrameMap::_at_opr); else { ShouldNotReachHere(); } diff -r 87db8957684e -r ab0d284dc313 hotspot/src/cpu/mips/vm/c1_Runtime1_mips.cpp --- a/hotspot/src/cpu/mips/vm/c1_Runtime1_mips.cpp Fri Nov 12 15:27:30 2010 +0800 +++ b/hotspot/src/cpu/mips/vm/c1_Runtime1_mips.cpp Thu Nov 18 16:19:42 2010 +0800 @@ -916,7 +916,7 @@ OopMapSet* Runtime1::generate_code_for(S } else { __ set_info("new_object_array", dont_gc_arguments); } - + if (UseTLAB && FastTLABRefill) { Register arr_size = T0; Register t1 = T1; @@ -926,7 +926,7 @@ OopMapSet* Runtime1::generate_code_for(S // check that array length is small enough for fast path __ move(AT, C1_MacroAssembler::max_array_allocation_length); - __ slt(AT, AT, length); + __ sltu(AT, AT, length); __ bne(AT, ZERO, slow_path); __ delayed()->nop(); diff -r 87db8957684e -r ab0d284dc313 hotspot/src/cpu/mips/vm/templateInterpreter_mips.cpp --- a/hotspot/src/cpu/mips/vm/templateInterpreter_mips.cpp Fri Nov 12 15:27:30 2010 +0800 +++ b/hotspot/src/cpu/mips/vm/templateInterpreter_mips.cpp Thu Nov 18 16:19:42 2010 +0800 @@ -1920,7 +1920,6 @@ int AbstractInterpreter::layout_activati //set last sp; intptr_t* esp = (intptr_t*) monbot - tempcount*Interpreter::stackElementWords() - popframe_extra_args; - printf("last sp is %x\n", esp); interpreter_frame->interpreter_frame_set_last_sp(esp); // All frames but the initial interpreter frame we fill in have a // value for sender_sp that allows walking the stack but isn't diff -r 87db8957684e -r ab0d284dc313 hotspot/src/share/vm/c1/c1_LIR.cpp --- a/hotspot/src/share/vm/c1/c1_LIR.cpp Fri Nov 12 15:27:30 2010 +0800 +++ b/hotspot/src/share/vm/c1/c1_LIR.cpp Thu Nov 18 16:19:42 2010 +0800 @@ -1507,7 +1507,7 @@ void LIR_List::store_check(LIR_Opr objec 0)); } - +#ifndef MIPS32 void LIR_List::cas_long(LIR_Opr addr, LIR_Opr cmp_value, LIR_Opr new_value, LIR_Opr t1, LIR_Opr t2) { // Compare and swap produces condition code "zero" if contents_of(addr) == cmp_value, // implying successful swap of new_value into addr @@ -1540,7 +1540,43 @@ void LIR_List::cas_int(LIR_Opr addr, LIR t1, t2)); } +#else +void LIR_List::cas_long(LIR_Opr addr, LIR_Opr cmp_value, LIR_Opr new_value, LIR_Opr t1, LIR_Opr t2, LIR_Opr result) { + // Compare and swap produces condition code "zero" if contents_of(addr) == cmp_value, + // implying successful swap of new_value into addr + append(new LIR_OpCompareAndSwap(lir_cas_long, + addr, + cmp_value, + new_value, + t1, + t2, + result)); +} +void LIR_List::cas_obj(LIR_Opr addr, LIR_Opr cmp_value, LIR_Opr new_value, LIR_Opr t1, LIR_Opr t2, LIR_Opr result) { + // Compare and swap produces condition code "zero" if contents_of(addr) == cmp_value, + // implying successful swap of new_value into addr + append(new LIR_OpCompareAndSwap(lir_cas_obj, + addr, + cmp_value, + new_value, + t1, + t2, + result)); +} + +void LIR_List::cas_int(LIR_Opr addr, LIR_Opr cmp_value, LIR_Opr new_value, LIR_Opr t1, LIR_Opr t2, LIR_Opr result) { + // Compare and swap produces condition code "zero" if contents_of(addr) == cmp_value, + // implying successful swap of new_value into addr + append(new LIR_OpCompareAndSwap(lir_cas_int, + addr, + cmp_value, + new_value, + t1, + t2, + result)); +} +#endif #ifdef PRODUCT diff -r 87db8957684e -r ab0d284dc313 hotspot/src/share/vm/c1/c1_LIR.hpp --- a/hotspot/src/share/vm/c1/c1_LIR.hpp Fri Nov 12 15:27:30 2010 +0800 +++ b/hotspot/src/share/vm/c1/c1_LIR.hpp Thu Nov 18 16:19:42 2010 +0800 @@ -1868,6 +1868,7 @@ class LIR_OpCompareAndSwap : public LIR_ LIR_Opr _tmp2; public: +#ifndef MIPS32 LIR_OpCompareAndSwap(LIR_Code code, LIR_Opr addr, LIR_Opr cmp_value, LIR_Opr new_value, LIR_Opr t1, LIR_Opr t2) : LIR_Op(code, LIR_OprFact::illegalOpr, NULL) // no result, no info , _addr(addr) @@ -1875,7 +1876,15 @@ class LIR_OpCompareAndSwap : public LIR_ , _new_value(new_value) , _tmp1(t1) , _tmp2(t2) { } - +#else + LIR_OpCompareAndSwap(LIR_Code code, LIR_Opr addr, LIR_Opr cmp_value, LIR_Opr new_value, LIR_Opr t1, LIR_Opr t2, LIR_Opr result) + : LIR_Op(code, result, NULL) // no result, no info + , _addr(addr) + , _cmp_value(cmp_value) + , _new_value(new_value) + , _tmp1(t1) + , _tmp2(t2) { } +#endif LIR_Opr addr() const { return _addr; } LIR_Opr cmp_value() const { return _cmp_value; } LIR_Opr new_value() const { return _new_value; } @@ -2105,11 +2114,15 @@ class LIR_List: public CompilationResour } #endif - +#ifndef MIPS32 void cas_long(LIR_Opr addr, LIR_Opr cmp_value, LIR_Opr new_value, LIR_Opr t1, LIR_Opr t2); void cas_obj(LIR_Opr addr, LIR_Opr cmp_value, LIR_Opr new_value, LIR_Opr t1, LIR_Opr t2); void cas_int(LIR_Opr addr, LIR_Opr cmp_value, LIR_Opr new_value, LIR_Opr t1, LIR_Opr t2); - +#else + void cas_long(LIR_Opr addr, LIR_Opr cmp_value, LIR_Opr new_value, LIR_Opr t1, LIR_Opr t2, LIR_Opr result); + void cas_obj(LIR_Opr addr, LIR_Opr cmp_value, LIR_Opr new_value, LIR_Opr t1, LIR_Opr t2, LIR_Opr result); + void cas_int(LIR_Opr addr, LIR_Opr cmp_value, LIR_Opr new_value, LIR_Opr t1, LIR_Opr t2, LIR_Opr result); +#endif void abs (LIR_Opr from, LIR_Opr to, LIR_Opr tmp) { append(new LIR_Op2(lir_abs , from, tmp, to)); } void sqrt(LIR_Opr from, LIR_Opr to, LIR_Opr tmp) { append(new LIR_Op2(lir_sqrt, from, tmp, to)); } void log (LIR_Opr from, LIR_Opr to, LIR_Opr tmp) { append(new LIR_Op2(lir_log, from, tmp, to)); } From mark at klomp.org Mon Nov 22 06:18:21 2010 From: mark at klomp.org (Mark Wielaard) Date: Mon, 22 Nov 2010 15:18:21 +0100 Subject: Reviewer needed - two corrections in JTreg test harness In-Reply-To: <4CEA75DE.8050305@redhat.com> References: <4CEA75DE.8050305@redhat.com> Message-ID: <1290435501.2833.5.camel@springer.wildebeest.org> Hi pavel, On Mon, 2010-11-22 at 14:53 +0100, Pavel Tisnovsky wrote: > can anybody please review two corrections I made in JTreg test harness tool? Are the changes from the newer jtreg? The version included in icedtea (see tests/jtreg/README) are based on jtreg-4_0-src-b02-15_oct_2008. The latest version on java.net is jtreg-4.1-src-b02_21_may_2010 http://download.java.net/openjdk/jtreg/ Since the changes seem to come from the newer jtreg I think you should feel free to add them. But please do make a note about which version you took the changes from in the tests/jtreg/README. Thanks, Mark From ptisnovs at redhat.com Mon Nov 22 06:26:50 2010 From: ptisnovs at redhat.com (Pavel Tisnovsky) Date: Mon, 22 Nov 2010 15:26:50 +0100 Subject: Reviewer needed - two corrections in JTreg test harness In-Reply-To: <1290435501.2833.5.camel@springer.wildebeest.org> References: <4CEA75DE.8050305@redhat.com> <1290435501.2833.5.camel@springer.wildebeest.org> Message-ID: <4CEA7DAA.5090407@redhat.com> Hi Mark, Mark Wielaard wrote: > Hi pavel, > > On Mon, 2010-11-22 at 14:53 +0100, Pavel Tisnovsky wrote: >> can anybody please review two corrections I made in JTreg test harness tool? > > Are the changes from the newer jtreg? The version included in icedtea > (see tests/jtreg/README) are based on jtreg-4_0-src-b02-15_oct_2008. The > latest version on java.net is jtreg-4.1-src-b02_21_may_2010 > http://download.java.net/openjdk/jtreg/ Yes I know about this and initially I also tried to backport 4.1 version to IcedTea6, but it's quite hard as Andrew said ;-) And I don't want to broke the tool which work quite good for as for more than two years. The changes are actually based on 4.1 version but I tried to change as little thinks as possible (it's not an 1:1 copy from 4.1 sources). > > Since the changes seem to come from the newer jtreg I think you should > feel free to add them. But please do make a note about which version you > took the changes from in the tests/jtreg/README. Will do... > > Thanks, > > Mark > From ahughes at redhat.com Mon Nov 22 06:38:43 2010 From: ahughes at redhat.com (Dr Andrew John Hughes) Date: Mon, 22 Nov 2010 14:38:43 +0000 Subject: Reviewer needed - two corrections in JTreg test harness In-Reply-To: <4CEA7DAA.5090407@redhat.com> References: <4CEA75DE.8050305@redhat.com> <1290435501.2833.5.camel@springer.wildebeest.org> <4CEA7DAA.5090407@redhat.com> Message-ID: <20101122143843.GD19794@rivendell.middle-earth.co.uk> On 15:26 Mon 22 Nov , Pavel Tisnovsky wrote: > Hi Mark, > > Mark Wielaard wrote: > > Hi pavel, > > > > On Mon, 2010-11-22 at 14:53 +0100, Pavel Tisnovsky wrote: > >> can anybody please review two corrections I made in JTreg test harness tool? > > > > Are the changes from the newer jtreg? The version included in icedtea > > (see tests/jtreg/README) are based on jtreg-4_0-src-b02-15_oct_2008. The > > latest version on java.net is jtreg-4.1-src-b02_21_may_2010 > > http://download.java.net/openjdk/jtreg/ > > Yes I know about this and initially I also tried to backport 4.1 version > to IcedTea6, but it's quite hard as Andrew said ;-) And I don't want to > broke the tool which work quite good for as for more than two years. > > The changes are actually based on 4.1 version but I tried to change as > little thinks as possible (it's not an 1:1 copy from 4.1 sources). > Ok so that answers the first question I had (where did these changes come from?). If we're going to update jtreg, I'd prefer we update to a known version, not cherry-pick individual changes. So the in-tree version should be updated to 4.1. As this is a big change, I'd prefer we delay it until after 1.10 branches. > > > > Since the changes seem to come from the newer jtreg I think you should > > feel free to add them. But please do make a note about which version you > > took the changes from in the tests/jtreg/README. > > Will do... > > > > > Thanks, > > > > Mark > > > -- Andrew :) Free Java Software Engineer Red Hat, Inc. (http://www.redhat.com) Support Free Java! Contribute to GNU Classpath and the OpenJDK http://www.gnu.org/software/classpath http://openjdk.java.net PGP Key: 94EFD9D8 (http://subkeys.pgp.net) Fingerprint = F8EF F1EA 401E 2E60 15FA 7927 142C 2591 94EF D9D8 From gbenson at redhat.com Mon Nov 22 07:07:11 2010 From: gbenson at redhat.com (Gary Benson) Date: Mon, 22 Nov 2010 15:07:11 +0000 Subject: icedtea6-1.9.1 In-Reply-To: <20101114022449.0cc420aa.acrux_it@libero.it> References: <20101114022449.0cc420aa.acrux_it@libero.it> Message-ID: <20101122150711.GC3819@redhat.com> Hi, What specific problem are you seeing? Cheers, Gary acrux wrote: > -----BEGIN PGP SIGNED MESSAGE----- > Hash: SHA1 > > I'm looking to build IcedTea6-1.9.1 Shark VM for ppc32 with JIT from > llvm-2.8 . > But what about llvm-2.8 on PowerPC? Will it be able to build > Shark VM ? I.e. Shark VM + JIT from llvm-2.8 will be able to recompile > itself ? Do I need some patch? > > > cheers, > - --acrux > - -- > GNU/Linux on Power Architecture > CRUX PPC - http://cruxppc.org/ > > -----BEGIN PGP SIGNATURE----- > Version: GnuPG v2.0.16 (GNU/Linux) > > iEYEARECAAYFAkzfOmQACgkQxq34tDeO7Lg8rQCfSzopo9go6WJF9cSp9CjsZu6e > C0MAnA2mgvw7uv8bXlRTC+UyZJIkUm58 > =lrIV > -----END PGP SIGNATURE----- -- http://gbenson.net/ From ptisnovs at redhat.com Mon Nov 22 07:08:25 2010 From: ptisnovs at redhat.com (Pavel Tisnovsky) Date: Mon, 22 Nov 2010 16:08:25 +0100 Subject: Reviewer needed - two corrections in JTreg test harness In-Reply-To: <20101122143843.GD19794@rivendell.middle-earth.co.uk> References: <4CEA75DE.8050305@redhat.com> <1290435501.2833.5.camel@springer.wildebeest.org> <4CEA7DAA.5090407@redhat.com> <20101122143843.GD19794@rivendell.middle-earth.co.uk> Message-ID: <4CEA8769.3080200@redhat.com> Dr Andrew John Hughes wrote: > On 15:26 Mon 22 Nov , Pavel Tisnovsky wrote: >> Hi Mark, >> >> Mark Wielaard wrote: >>> Hi pavel, >>> >>> On Mon, 2010-11-22 at 14:53 +0100, Pavel Tisnovsky wrote: >>>> can anybody please review two corrections I made in JTreg test harness tool? >>> Are the changes from the newer jtreg? The version included in icedtea >>> (see tests/jtreg/README) are based on jtreg-4_0-src-b02-15_oct_2008. The >>> latest version on java.net is jtreg-4.1-src-b02_21_may_2010 >>> http://download.java.net/openjdk/jtreg/ >> Yes I know about this and initially I also tried to backport 4.1 version >> to IcedTea6, but it's quite hard as Andrew said ;-) And I don't want to >> broke the tool which work quite good for as for more than two years. >> >> The changes are actually based on 4.1 version but I tried to change as >> little thinks as possible (it's not an 1:1 copy from 4.1 sources). >> > > Ok so that answers the first question I had (where did these changes come from?). > > If we're going to update jtreg, I'd prefer we update to a known version, not > cherry-pick individual changes. So the in-tree version should be updated to 4.1. I'd like to update JTreg to 4.1 but it takes some time. In the meantime I thought it would be good to have JTreg not-yet-updated but at least corrected. > > As this is a big change, I'd prefer we delay it until after 1.10 branches. > >>> Since the changes seem to come from the newer jtreg I think you should >>> feel free to add them. But please do make a note about which version you >>> took the changes from in the tests/jtreg/README. >> Will do... >> >>> Thanks, >>> >>> Mark >>> > From ahughes at redhat.com Mon Nov 22 07:17:09 2010 From: ahughes at redhat.com (Dr Andrew John Hughes) Date: Mon, 22 Nov 2010 15:17:09 +0000 Subject: Reviewer needed - two corrections in JTreg test harness In-Reply-To: <4CEA8769.3080200@redhat.com> References: <4CEA75DE.8050305@redhat.com> <1290435501.2833.5.camel@springer.wildebeest.org> <4CEA7DAA.5090407@redhat.com> <20101122143843.GD19794@rivendell.middle-earth.co.uk> <4CEA8769.3080200@redhat.com> Message-ID: <20101122151709.GE19794@rivendell.middle-earth.co.uk> On 16:08 Mon 22 Nov , Pavel Tisnovsky wrote: > Dr Andrew John Hughes wrote: > > On 15:26 Mon 22 Nov , Pavel Tisnovsky wrote: > >> Hi Mark, > >> > >> Mark Wielaard wrote: > >>> Hi pavel, > >>> > >>> On Mon, 2010-11-22 at 14:53 +0100, Pavel Tisnovsky wrote: > >>>> can anybody please review two corrections I made in JTreg test harness tool? > >>> Are the changes from the newer jtreg? The version included in icedtea > >>> (see tests/jtreg/README) are based on jtreg-4_0-src-b02-15_oct_2008. The > >>> latest version on java.net is jtreg-4.1-src-b02_21_may_2010 > >>> http://download.java.net/openjdk/jtreg/ > >> Yes I know about this and initially I also tried to backport 4.1 version > >> to IcedTea6, but it's quite hard as Andrew said ;-) And I don't want to > >> broke the tool which work quite good for as for more than two years. > >> > >> The changes are actually based on 4.1 version but I tried to change as > >> little thinks as possible (it's not an 1:1 copy from 4.1 sources). > >> > > > > Ok so that answers the first question I had (where did these changes come from?). > > > > If we're going to update jtreg, I'd prefer we update to a known version, not > > cherry-pick individual changes. So the in-tree version should be updated to 4.1. > > I'd like to update JTreg to 4.1 but it takes some time. In the meantime > I thought it would be good to have JTreg not-yet-updated but at least > corrected. > > > > > As this is a big change, I'd prefer we delay it until after 1.10 branches. > > > >>> Since the changes seem to come from the newer jtreg I think you should > >>> feel free to add them. But please do make a note about which version you > >>> took the changes from in the tests/jtreg/README. > >> Will do... > >> > >>> Thanks, > >>> > >>> Mark > >>> > > > Ok please post a new version of the patch with appropriate README updates to describe the changes and we'll consider that for 1.10. Once 1.10 branches, I'd like to see a full update to 4.1 go in. -- Andrew :) Free Java Software Engineer Red Hat, Inc. (http://www.redhat.com) Support Free Java! Contribute to GNU Classpath and the OpenJDK http://www.gnu.org/software/classpath http://openjdk.java.net PGP Key: 94EFD9D8 (http://subkeys.pgp.net) Fingerprint = F8EF F1EA 401E 2E60 15FA 7927 142C 2591 94EF D9D8 From ptisnovs at redhat.com Mon Nov 22 08:42:20 2010 From: ptisnovs at redhat.com (Pavel Tisnovsky) Date: Mon, 22 Nov 2010 17:42:20 +0100 Subject: Reviewer needed - two corrections in JTreg test harness In-Reply-To: <20101122151709.GE19794@rivendell.middle-earth.co.uk> References: <4CEA75DE.8050305@redhat.com> <1290435501.2833.5.camel@springer.wildebeest.org> <4CEA7DAA.5090407@redhat.com> <20101122143843.GD19794@rivendell.middle-earth.co.uk> <4CEA8769.3080200@redhat.com> <20101122151709.GE19794@rivendell.middle-earth.co.uk> Message-ID: <4CEA9D6C.8010505@redhat.com> Dr Andrew John Hughes wrote: > On 16:08 Mon 22 Nov , Pavel Tisnovsky wrote: >> Dr Andrew John Hughes wrote: >>> On 15:26 Mon 22 Nov , Pavel Tisnovsky wrote: >>>> Hi Mark, >>>> >>>> Mark Wielaard wrote: >>>>> Hi pavel, >>>>> >>>>> On Mon, 2010-11-22 at 14:53 +0100, Pavel Tisnovsky wrote: >>>>>> can anybody please review two corrections I made in JTreg test harness tool? >>>>> Are the changes from the newer jtreg? The version included in icedtea >>>>> (see tests/jtreg/README) are based on jtreg-4_0-src-b02-15_oct_2008. The >>>>> latest version on java.net is jtreg-4.1-src-b02_21_may_2010 >>>>> http://download.java.net/openjdk/jtreg/ >>>> Yes I know about this and initially I also tried to backport 4.1 version >>>> to IcedTea6, but it's quite hard as Andrew said ;-) And I don't want to >>>> broke the tool which work quite good for as for more than two years. >>>> >>>> The changes are actually based on 4.1 version but I tried to change as >>>> little thinks as possible (it's not an 1:1 copy from 4.1 sources). >>>> >>> Ok so that answers the first question I had (where did these changes come from?). >>> >>> If we're going to update jtreg, I'd prefer we update to a known version, not >>> cherry-pick individual changes. So the in-tree version should be updated to 4.1. >> I'd like to update JTreg to 4.1 but it takes some time. In the meantime >> I thought it would be good to have JTreg not-yet-updated but at least >> corrected. >> >>> As this is a big change, I'd prefer we delay it until after 1.10 branches. >>> >>>>> Since the changes seem to come from the newer jtreg I think you should >>>>> feel free to add them. But please do make a note about which version you >>>>> took the changes from in the tests/jtreg/README. >>>> Will do... >>>> >>>>> Thanks, >>>>> >>>>> Mark >>>>> > > Ok please post a new version of the patch with appropriate README updates to describe > the changes and we'll consider that for 1.10. Once 1.10 branches, I'd like to see > a full update to 4.1 go in. Andrew and Mark, thanks for your reviews! Updated version of the JTreg fix is stored in an attachment. Pavel -------------- next part -------------- An embedded and charset-unspecified text was scrubbed... Name: hg_export Url: http://mail.openjdk.java.net/pipermail/distro-pkg-dev/attachments/20101122/81d51dde/hg_export.ksh From bugzilla-daemon at icedtea.classpath.org Mon Nov 22 10:43:43 2010 From: bugzilla-daemon at icedtea.classpath.org (bugzilla-daemon at icedtea.classpath.org) Date: Mon, 22 Nov 2010 18:43:43 +0000 Subject: [Bug 595] ExceptionInInitializerError/AccessControlException in AppletAudioClip.play() Message-ID: http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=595 ------- Comment #1 from omajid at redhat.com 2010-11-22 18:43 ------- (In reply to comment #0) > My applet uses the java.applet.AudioClip API to play a short audio clip > (*.wav). > I tried out creating a audio playing applet and it works for me using Ubuntu 10.10 32 bit. > It works on another computer with OpenSUSE and IcedTea (64 Bit version, I > think), but on my home computer with 32 Bit Ubuntu and IcedTea I get an Error > on .play(). > I dont think the 32/64 bit change is a problem. Pulse-java should work fine on x86 and x86_64. About the only thing different is where the native libraries are located, but as the stack trace shows, the native libraries are found. > Caused by: java.security.AccessControlException: access denied > (java.io.FilePermission > /usr/lib/jvm/java-6-openjdk/jre/lib/ext/i386/libpulse-java.so read) > at > java.security.AccessControlContext.checkPermission(AccessControlContext.java:342) [snip] > at > org.classpath.icedtea.pulseaudio.SecurityWrapper$1.run(SecurityWrapper.java:15) > at java.security.AccessController.doPrivileged(Native Method) > at > org.classpath.icedtea.pulseaudio.SecurityWrapper.loadNativeLibrary(SecurityWrapper.java:24) > at > org.classpath.icedtea.pulseaudio.EventLoop.(EventLoop.java:105) > ... 24 more Hm... this is quite interesting. SecurityWrapper loads the libpulse-java.so library will full privileges. I cant see why it would be denied permission. Do you have any custom policy files or anything that could deny these permissions? Can you please confirm that the file usr/lib/jvm/java-6-openjdk/jre/lib/ext/i386/libpulse-java.so exists and is readable. > > On the same system/machine with Sun-Plugin I have no problem (I can hear the > sound). > That's quite expected. Oracle's proprietary plugin uses a different JDK/plugin/mixer, so it should not be affected by these Java problems. > Looks like there is something wrong with the security-settings. > Right, but I dont see this with the default setup. Have you changed any security settings in Java? Can you possibly retry with a fresh install? > > (I'll be away for a week, but then I'll produce a minimal example, if > necessary.) > If you can reproduce the problem on new installs as well, then please post the example. I would like to take a look to see where the problem is. -- Configure bugmail: http://icedtea.classpath.org/bugzilla/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are the assignee for the bug, or are watching the assignee. From dbhole at redhat.com Mon Nov 22 11:03:16 2010 From: dbhole at redhat.com (Deepak Bhole) Date: Mon, 22 Nov 2010 14:03:16 -0500 Subject: [icedtea-web] RFC: 2 BZ patches Message-ID: <20101122190315.GB29726@redhat.com> Hi, I've been through the patches posted for: http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=552 http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=593 Both of them appear fine to me. Figured I'd post em here in case anyone had any objections.. I will commit by tomorrow if there are none. Cheers, Deepak From ahughes at redhat.com Mon Nov 22 11:49:58 2010 From: ahughes at redhat.com (Dr Andrew John Hughes) Date: Mon, 22 Nov 2010 19:49:58 +0000 Subject: [icedtea-web] RFC: 2 BZ patches In-Reply-To: <20101122190315.GB29726@redhat.com> References: <20101122190315.GB29726@redhat.com> Message-ID: <20101122194958.GF19794@rivendell.middle-earth.co.uk> On 14:03 Mon 22 Nov , Deepak Bhole wrote: > Hi, > > I've been through the patches posted for: > http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=552 > http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=593 > > Both of them appear fine to me. Figured I'd post em here in case anyone > had any objections.. > > I will commit by tomorrow if there are none. > > Cheers, > Deepak I agree both are fine. Good to see FreeBSD support being added. -- Andrew :) Free Java Software Engineer Red Hat, Inc. (http://www.redhat.com) Support Free Java! Contribute to GNU Classpath and the OpenJDK http://www.gnu.org/software/classpath http://openjdk.java.net PGP Key: 94EFD9D8 (http://subkeys.pgp.net) Fingerprint = F8EF F1EA 401E 2E60 15FA 7927 142C 2591 94EF D9D8 From ahughes at redhat.com Mon Nov 22 11:59:29 2010 From: ahughes at redhat.com (Dr Andrew John Hughes) Date: Mon, 22 Nov 2010 19:59:29 +0000 Subject: Reviewer needed - two corrections in JTreg test harness In-Reply-To: <4CEA9D6C.8010505@redhat.com> References: <4CEA75DE.8050305@redhat.com> <1290435501.2833.5.camel@springer.wildebeest.org> <4CEA7DAA.5090407@redhat.com> <20101122143843.GD19794@rivendell.middle-earth.co.uk> <4CEA8769.3080200@redhat.com> <20101122151709.GE19794@rivendell.middle-earth.co.uk> <4CEA9D6C.8010505@redhat.com> Message-ID: <20101122195928.GH19794@rivendell.middle-earth.co.uk> On 17:42 Mon 22 Nov , Pavel Tisnovsky wrote: > Dr Andrew John Hughes wrote: > > On 16:08 Mon 22 Nov , Pavel Tisnovsky wrote: > >> Dr Andrew John Hughes wrote: > >>> On 15:26 Mon 22 Nov , Pavel Tisnovsky wrote: > >>>> Hi Mark, > >>>> > >>>> Mark Wielaard wrote: > >>>>> Hi pavel, > >>>>> > >>>>> On Mon, 2010-11-22 at 14:53 +0100, Pavel Tisnovsky wrote: > >>>>>> can anybody please review two corrections I made in JTreg test harness tool? > >>>>> Are the changes from the newer jtreg? The version included in icedtea > >>>>> (see tests/jtreg/README) are based on jtreg-4_0-src-b02-15_oct_2008. The > >>>>> latest version on java.net is jtreg-4.1-src-b02_21_may_2010 > >>>>> http://download.java.net/openjdk/jtreg/ > >>>> Yes I know about this and initially I also tried to backport 4.1 version > >>>> to IcedTea6, but it's quite hard as Andrew said ;-) And I don't want to > >>>> broke the tool which work quite good for as for more than two years. > >>>> > >>>> The changes are actually based on 4.1 version but I tried to change as > >>>> little thinks as possible (it's not an 1:1 copy from 4.1 sources). > >>>> > >>> Ok so that answers the first question I had (where did these changes come from?). > >>> > >>> If we're going to update jtreg, I'd prefer we update to a known version, not > >>> cherry-pick individual changes. So the in-tree version should be updated to 4.1. > >> I'd like to update JTreg to 4.1 but it takes some time. In the meantime > >> I thought it would be good to have JTreg not-yet-updated but at least > >> corrected. > >> > >>> As this is a big change, I'd prefer we delay it until after 1.10 branches. > >>> > >>>>> Since the changes seem to come from the newer jtreg I think you should > >>>>> feel free to add them. But please do make a note about which version you > >>>>> took the changes from in the tests/jtreg/README. > >>>> Will do... > >>>> > >>>>> Thanks, > >>>>> > >>>>> Mark > >>>>> > > > > Ok please post a new version of the patch with appropriate README updates to describe > > the changes and we'll consider that for 1.10. Once 1.10 branches, I'd like to see > > a full update to 4.1 go in. > > Andrew and Mark, > > thanks for your reviews! > > Updated version of the JTreg fix is stored in an attachment. > > Pavel > With regard to the README changes: 'First change add' ==> 'The first change adds' 'Second change corrects setting' ==> 'The second change corrects the setting' 'when "compile"' ==> 'when the "compile"' You also need to document the README changes in the ChangeLog ('Updated' will do). Ok to commit with these changes. > # HG changeset patch > # User ptisnovs > # Date 1290444179 -3600 > # Node ID eb0682d1be0dac7e5890ab0409504c12c751ed3e > # Parent 789ec2d452bd257ade06174c9b4f4a805ca0207f > Corrected JTreg harness - this tool now accepts "process" flag for > "compile" tag and also correctly sets properties during "compile" phase. > > diff -r 789ec2d452bd -r eb0682d1be0d ChangeLog > --- a/ChangeLog Mon Nov 22 04:51:01 2010 +0100 > +++ b/ChangeLog Mon Nov 22 17:42:59 2010 +0100 > @@ -1,3 +1,15 @@ > +2010-11-22 Pavel Tisnovsky > + > + * test/jtreg/README: > + * test/jtreg/com/sun/javatest/regtest/Path.java: > + * test/jtreg/com/sun/javatest/regtest/Action.java: > + * test/jtreg/com/sun/javatest/regtest/CompileAction.java: > + * test/jtreg/com/sun/javatest/regtest/RegressionScript.java: > + * test/jtreg/com/sun/javatest/regtest/RegressionSecurityManager.java: > + Corrected JTreg harness - this tool now accepts "process" flag for > + "compile" tag and also correctly sets properties during "compile" > + phase. > + > 2010-11-22 Matthias Klose > > * Makefile.am (stamps/add-zero.stamp): Add shark alias when building > diff -r 789ec2d452bd -r eb0682d1be0d test/jtreg/README > --- a/test/jtreg/README Mon Nov 22 04:51:01 2010 +0100 > +++ b/test/jtreg/README Mon Nov 22 17:42:59 2010 +0100 > @@ -20,7 +20,11 @@ > This version is based on: > > - jtharness-oss-4_1_3a-dev > -- jtreg-4_0-src-b02-15_oct_2008 > +- jtreg-4_0-src-b02-15_oct_2008 with two changes backported from > + jtreg-4.1-src-b02_21_may_2010.zip. First change add support for option > + named "process" which can be used along with tag "compile". Second > + change corrects setting of system properties when "compile" phase is > + started. > > IcedJTReg is distrubuted under the GPLv2.0, like jtreg and jtharness. > See the documents in the legal directory included in this release. > diff -r 789ec2d452bd -r eb0682d1be0d test/jtreg/com/sun/javatest/regtest/Action.java > --- a/test/jtreg/com/sun/javatest/regtest/Action.java Mon Nov 22 04:51:01 2010 +0100 > +++ b/test/jtreg/com/sun/javatest/regtest/Action.java Mon Nov 22 17:42:59 2010 +0100 > @@ -300,6 +300,8 @@ > section.setStatus(status); > } // endAction() > > + //----------workarounds------------------------------------------------------- > + > /** > * This method pushes the full, constructed command for the action to the > * log. The constructed command contains the the action and its arguments > @@ -425,6 +427,13 @@ > EXEC_ERROR_CLEANUP = "Error while cleaning up threads after test", > CHECK_PASS = "Test description appears acceptable", > > + // used in: compile, main > + SAMEVM_CANT_RESET_SECMGR= "Cannot reset security manager", > + SAMEVM_CANT_RESET_PROPS = "Cannot reset system properties", > + > + // used in:compile, main > + AGENTVM_CANT_GET_VM = "Cannot get VM for test", > + > UNEXPECT_SYS_EXIT = "Unexpected exit from test", > CANT_FIND_SRC = "Can't file source file: ", > > @@ -454,6 +463,8 @@ > BUILD_UP_TO_DATE = "All files up to date", > BUILD_SUCC = "Build successful", > BUILD_LIB_LIST = " in directory-list: ", > + BUILD_FUTURE_SOURCE = "WARNING: file %s has a modification time in the future: %s", > + BUILD_FUTURE_SOURCE_2 = "Unexpected results may occur", > > // clean > CLEAN_SUCC = "Clean successful", > @@ -478,6 +489,8 @@ > COMPILE_PASS = "Compilation successful", > COMPILE_FAIL_EXPECT = "Compilation failed as expected", > COMPILE_FAIL = "Compilation failed", > + COMPILE_CANT_RESET_SECMGR= "Cannot reset security manager", > + COMPILE_CANT_RESET_PROPS = "Cannot reset system properties", > > // ignore > IGNORE_UNEXPECT_OPTS = "Unexpected option(s) for `ignore'", > @@ -486,6 +499,11 @@ > IGNORE_TEST_SUPPRESSED = "@ignore suppressed by command line option", > IGNORE_TEST_SUPPRESSED_C = "@ignore suppressed by command line option: ", > > + // junit > + JUNIT_NO_DRIVER = "No JUnit 4 driver (install junit.jar next to jtreg.jar)", > + JUNIT_NO_CLASSNAME = "No class provided for `junit'", > + JUNIT_BAD_MAIN_ARG = "Bad argument provided for class in `junit'", > + > // main > MAIN_NO_CLASSNAME = "No class provided for `main'", > MAIN_MANUAL_NO_VAL = "Arguments to `manual' option not supported: ", > @@ -500,6 +518,8 @@ > MAIN_UNEXPECT_VMOPT = ": vm option(s) found, need to specify /othervm", > MAIN_POLICY_WRITE_PROB= "Problems writing new policy file: ", > MAIN_POLICY_SM_PROB = "Unable to create new policy file: ", > + MAIN_CANT_RESET_SECMGR= "Cannot reset security manager", > + MAIN_CANT_RESET_PROPS = "Cannot reset system properties", > > // runOtherJVM > MAIN_CANT_WRITE_ARGS = "Can't write `main' argument file", > diff -r 789ec2d452bd -r eb0682d1be0d test/jtreg/com/sun/javatest/regtest/CompileAction.java > --- a/test/jtreg/com/sun/javatest/regtest/CompileAction.java Mon Nov 22 04:51:01 2010 +0100 > +++ b/test/jtreg/com/sun/javatest/regtest/CompileAction.java Mon Nov 22 17:42:59 2010 +0100 > @@ -37,6 +37,12 @@ > import java.io.PrintWriter; > import java.util.ArrayList; > import java.util.List; > +import java.util.Map; > +import java.util.Properties; > +import java.util.Enumeration; > +import java.util.Hashtable; > +import java.security.AccessController; > +import java.security.PrivilegedAction; > > import com.sun.javatest.Status; > import com.sun.javatest.TestResult; > @@ -111,6 +117,8 @@ > timeout = parseTimeout(optValue); > } else if (optName.equals("ref")) { > ref = parseRef(optValue); > + } else if (optName.equals("process")) { > + process = true; > } else { > throw new ParseException(COMPILE_BAD_OPT + optName); > } > @@ -133,7 +141,7 @@ > if (!sourceFile.isAbsolute()) > // User must have used @compile, so file must be > // in the same directory as the defining file. > - args[i] = script.absTestSrcDir() + FILESEP + currArg; > + args[i] = new File(script.absTestSrcDir(), currArg).getPath(); > // if (!sourceFile.exists()) > // throw new ParseException(CANT_FIND_SRC); > > @@ -152,10 +160,11 @@ > // assume the next element provides the classpath, add > // test.classes and test.src and lib-list to it > if (script.hasEnv()) { > - args[i+1] = addPath(args[i+1], > - script.absTestClsDir() + PATHSEP + > - script.absTestSrcDir() + PATHSEP + > - script.absClsLibListStr()); > + Path p = new Path(args[i+1]) > + .append(script.absTestClsDir()) > + .append(script.absTestSrcDir()) > + .append(script.absClsLibListStr()); > + args[i+1] = p.toString(); > } > args[i+1] = singleQuoteString(args[i+1]); > } > @@ -169,22 +178,28 @@ > sourcepathp = true; > // assume the next element provides the sourcepath, add test.src > // and lib-list to it > - args[i+1] = addPath(args[i+1], > - script.absTestSrcDir() + PATHSEP + > - script.absSrcLibListStr()); > + Path p = new Path(args[i+1]) > + .append(script.absTestSrcDir()) > + .append(script.absSrcLibListStr()); > + args[i+1] = p.toString(); > args[i+1] = singleQuoteString(args[i+1]); > } > } > + > + // If we didn't set the destination directory, then we must not have > + // found something ending with ".java" to compile. > + if (script.hasEnv() && destDir == null) { > + if (process) { > + destDir = script.absTestClsDir(); > + if (!destDir.exists()) > + destDir.mkdirs(); > + } else > + throw new ParseException(COMPILE_NO_DOT_JAVA); > + } > } catch (RegressionScript.TestClassException e) { > throw new ParseException(e.getMessage()); > } > - > - // If we didn't set the destination directory, then we must not have > - // found something ending with ".java" to compile. > - if (script.hasEnv() && destDir == null) { > - throw new ParseException(COMPILE_NO_DOT_JAVA); > - } > - > + > this.args = args; > } // init() > > @@ -267,8 +282,9 @@ > List javacOpts = new ArrayList(); > > // Why JavaTest? > + Path cp = new Path(script.getJavaTestClassPath(), script.testClassPath()); > if (useCLASSPATHEnv) { > - javacOpts.add("CLASSPATH=" + script.getJavaTestClassPath() + PATHSEP + script.testClassPath()); > + javacOpts.add("CLASSPATH=" + cp); > } > > javacOpts.add(script.getJavacProg()); > @@ -283,7 +299,7 @@ > // JavaTest added, to match CLASSPATH, but not sure why JavaTest required at all > if (!classpathp && useClassPathOpt) { > javacOpts.add("-classpath"); > - javacOpts.add(script.getJavaTestClassPath() + PATHSEP + script.testClassPath()); > + javacOpts.add(cp.toString()); > } > > if (!sourcepathp && useSourcePathOpt) { > @@ -291,6 +307,11 @@ > javacOpts.add(script.testSourcePath()); > } > > + // Set test.src and test.classes for the benefit of annotation processors > + for (Map.Entry e: script.getTestProperties().entrySet()) { > + javacOpts.add("-J-D" + e.getKey() + "=" + e.getValue()); > + } > + > String[] envVars = script.getEnvVars(); > String[] jcOpts = javacOpts.toArray(new String[javacOpts.size()]); > String[] cmdArgs = StringArray.append(envVars, jcOpts); > @@ -365,7 +386,30 @@ > return status; > } // runOtherJVM() > > + final SecurityManager secMgr = System.getSecurityManager(); > + > + protected static Hashtable copyProperties(Properties p) { > + Hashtable h = new Hashtable(); > + for (Enumeration e = p.propertyNames(); e.hasMoreElements(); ) { > + Object key = e.nextElement(); > + h.put(key, p.get(key)); > + } > + return h; > + } > + > + protected static Properties newProperties(Hashtable h) { > + Properties p = new Properties(); > + p.putAll(h); > + return p; > + } > + > private Status runSameJVM() throws TestRunException { > + // TAG-SPEC: "The source and class directories of a test are made > + // available to main and applet actions via the system properties > + // "test.src" and "test.classes", respectively" > + Map props = script.getTestProperties(); > + Hashtable sysProps = null; > + > Status status; > > // CONSTRUCT THE COMMAND LINE > @@ -373,8 +417,10 @@ > > javacOpts.addAll(script.getTestCompilerOptions()); > > - javacOpts.add("-d"); > - javacOpts.add(destDir.toString()); > + if (destDir != null) { > + javacOpts.add("-d"); > + javacOpts.add(destDir.toString()); > + } > > if (!classpathp) { > javacOpts.add("-classpath"); > @@ -391,7 +437,29 @@ > > if (showCmd) > JTCmd("compile", cmdArgs, section); > - > + > + if (secMgr instanceof RegressionSecurityManager) { > + RegressionSecurityManager rsm = (RegressionSecurityManager) secMgr; > + rsm.setAllowPropertiesAccess(true); > + rsm.resetPropertiesAccessed(); > + sysProps = copyProperties(System.getProperties()); > + > + Properties p = System.getProperties(); > + for (Map.Entry e: props.entrySet()) { > + String name = e.getKey(); > + String value = e.getValue(); > + if (name.equals("test.class.path.prefix")) { > + System.err.println("*** java.class.path" + System.getProperty("java.class.path")); > + Path cp = new Path(value, System.getProperty("java.class.path")); > + p.put("java.class.path", cp.toString()); > + } else { > + System.err.println("prop: " + e.getKey() + "\t" + e.getValue()); > + p.put(e.getKey(), e.getValue()); > + } > + } > + System.setProperties(p); > + } > + > // RUN THE COMPILER > > // for direct use with JavaCompileCommand > @@ -503,7 +571,43 @@ > File refFile = new File(script.absTestSrcDir(), ref); > throw new TestRunException(COMPILE_CANT_FIND_REF + refFile); > } > - > + finally > + { > + if (System.getSecurityManager() != secMgr) { > + AccessController.doPrivileged(new PrivilegedAction() { > + public Object run() { > + System.setSecurityManager(secMgr); > + return null; > + } > + }); > + //System.setSecurityManager(secMgr); > + } > + > + // we just reset important props that were written in the test setup > + boolean resetAllSysProps; > + SecurityManager sm = System.getSecurityManager(); > + if (sm instanceof RegressionSecurityManager) { > + resetAllSysProps = ((RegressionSecurityManager) sm).isPropertiesAccessed(); > + } else { > + resetAllSysProps = true; > + } > + System.err.println("resetAllSysProps: " + resetAllSysProps); > + try { > + if (sysProps != null) > + { > + if (resetAllSysProps) { > + System.setProperties(newProperties(sysProps)); > + // System.err.println("reset properties"); > + } else { > + System.setProperty("java.class.path", (String) sysProps.get("java.class.path")); > + // System.err.println("no need to reset properties"); > + } > + } > + } catch (SecurityException e) { > + System.err.println(SAMEVM_CANT_RESET_PROPS + ": " + e); > + } > + } > + > return status; > } // runSameJVM() > > @@ -596,6 +700,7 @@ > private int timeout = -1; > private boolean classpathp = false; > private boolean sourcepathp = false; > + private boolean process = false; > > private TestResult.Section section; > } > diff -r 789ec2d452bd -r eb0682d1be0d test/jtreg/com/sun/javatest/regtest/Path.java > --- /dev/null Thu Jan 01 00:00:00 1970 +0000 > +++ b/test/jtreg/com/sun/javatest/regtest/Path.java Mon Nov 22 17:42:59 2010 +0100 > @@ -0,0 +1,164 @@ > +/* > + * Copyright 2010 Sun Microsystems, Inc. All Rights Reserved. > + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. > + * > + * This code is free software; you can redistribute it and/or modify it > + * under the terms of the GNU General Public License version 2 only, as > + * published by the Free Software Foundation. Sun designates this > + * particular file as subject to the "Classpath" exception as provided > + * by Sun in the LICENSE file that accompanied this code. > + * > + * This code is distributed in the hope that it will be useful, but WITHOUT > + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or > + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License > + * version 2 for more details (a copy is included in the LICENSE file that > + * accompanied this code). > + * > + * You should have received a copy of the GNU General Public License version > + * 2 along with this work; if not, write to the Free Software Foundation, > + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. > + * > + * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, > + * CA 95054 USA or visit www.sun.com if you need additional information or > + * have any questions. > + */ > + > +package com.sun.javatest.regtest; > + > +import java.io.File; > +import java.util.ArrayList; > +import java.util.List; > + > +/** > + * A path, as in a sequence of file system locations, such as directories, > + * zip files and jar files. > + */ > +public class Path { > + /** > + * Create an empty path. > + */ > + Path() { > + } > + > + /** > + * Create a path containing the concatenation of a series of files. > + * Equivalent to {@code new Path().append(files)}. > + * @param files > + */ > + Path(File... files) { > + append(files); > + } > + > + /** > + * Create a path containing the concatenation of a series of paths. > + * Equivalent to {@code new Path().append(paths)}. > + * @param paths > + */ > + Path(Path... paths) { > + append(paths); > + } > + > + /** > + * Create a path containing the concatenation of a series of paths. > + * Equivalent to {@code new Path().append(paths)}. > + * @param paths > + */ > + Path(String... paths) { > + append(paths); > + } > + > + /** > + * Append a series of files to the path. Files that do not exist > + * are ignored. > + * @param files files to be added to the path > + * @return the path itself > + */ > + Path append(File... files) { > + for (File f: files) { > + if (f.exists()) { > + if (value.length() > 0) > + value += PATHSEP; > + value += f.getPath(); > + } > + } > + return this; > + } > + > + /** > + * Append a series of paths to the path. > + * @param paths paths to be added to the path > + * @return the path itself > + */ > + Path append(Path... paths) { > + for (Path p: paths) { > + if (p.value.length() > 0) { > + if (value.length() > 0) > + value += PATHSEP; > + value += p.value; > + } > + } > + return this; > + } > + > + /** > + * Append a series of paths to the path. > + * @param paths paths to be added to the path > + * @return the path itself > + */ > + Path append(String... paths) { > + for (String p: paths) { > + if (p.length() > 0) { > + if (value.length() > 0) > + value += PATHSEP; > + value += p; > + } > + } > + return this; > + } > + > + /** > + * Return the series of files that are currently on the path. > + * @return the files on the path > + */ > + File[] split() { > + List v = new ArrayList(); > + for (String s: StringArray.splitSeparator(PATHSEP, value)) { > + if (s.length() > 0) { > + v.add(new File(s)); > + } > + } > + return v.toArray(new File[v.size()]); > + } > + > + /** > + * Check if this path contains a subpath. > + * @param path the subpath to be checked > + * @return true if this path contains the subpath > + */ > + boolean contains(Path path) { > + return value.equals(path.value) > + || value.startsWith(path.value + PATHSEP) > + || value.endsWith(PATHSEP + path.value) > + || value.contains(PATHSEP + path.value + PATHSEP); > + } > + > + /** > + * Check if this path is empty. > + * @return true if this path does not have any files on it > + */ > + boolean isEmpty() { > + return (value.length() == 0); > + } > + > + /** > + * Return the string value of this path. > + * @return the string value of this path > + */ > + @Override > + public String toString() { > + return value; > + } > + > + String value = ""; > + private static String PATHSEP = File.pathSeparator; > +} > diff -r 789ec2d452bd -r eb0682d1be0d test/jtreg/com/sun/javatest/regtest/RegressionScript.java > --- a/test/jtreg/com/sun/javatest/regtest/RegressionScript.java Mon Nov 22 04:51:01 2010 +0100 > +++ b/test/jtreg/com/sun/javatest/regtest/RegressionScript.java Mon Nov 22 17:42:59 2010 +0100 > @@ -867,6 +867,21 @@ > return params.getJDK().getJavacProg().getPath(); > } > > + //-------------------------------------------------------------------------- > + > + // Get the standard properties to be set for tests > + > + Map getTestProperties() throws TestClassException { > + Map p = new HashMap(); > + // The following will be added to javac.class.path on the test JVM > + p.put("test.src", absTestSrcDir().getPath()); > + p.put("test.classes", absTestClsDir().getPath()); > + p.put("test.vm.opts", StringUtils.join(getTestVMOptions(), " ")); > + p.put("test.tool.vm.opts", StringUtils.join(getTestToolVMOptions(), " ")); > + p.put("test.compiler.opts", StringUtils.join(getTestCompilerOptions(), " ")); > + p.put("test.java.opts", StringUtils.join(getTestJavaOptions(), " ")); > + return p; > + } > /** > * Try to determine the version of Java that is being tested. If a system > * has the "-fullversion" option, that string plus the appropriate > diff -r 789ec2d452bd -r eb0682d1be0d test/jtreg/com/sun/javatest/regtest/RegressionSecurityManager.java > --- a/test/jtreg/com/sun/javatest/regtest/RegressionSecurityManager.java Mon Nov 22 04:51:01 2010 +0100 > +++ b/test/jtreg/com/sun/javatest/regtest/RegressionSecurityManager.java Mon Nov 22 17:42:59 2010 +0100 > @@ -73,6 +73,7 @@ > } > } > > + @Override > public void checkExec(String cmd) { > if (allowExec == false) { > if (verbose) { > @@ -99,6 +100,7 @@ > static private boolean allowExec = true; // no overrides on this one; API control only > > > + @Override > public void checkPermission(Permission perm) { > // allow most stuff, but limit as appropriate > if (perm instanceof RuntimePermission) { -- Andrew :) Free Java Software Engineer Red Hat, Inc. (http://www.redhat.com) Support Free Java! Contribute to GNU Classpath and the OpenJDK http://www.gnu.org/software/classpath http://openjdk.java.net PGP Key: 94EFD9D8 (http://subkeys.pgp.net) Fingerprint = F8EF F1EA 401E 2E60 15FA 7927 142C 2591 94EF D9D8 From dbhole at redhat.com Mon Nov 22 12:17:39 2010 From: dbhole at redhat.com (Deepak Bhole) Date: Mon, 22 Nov 2010 15:17:39 -0500 Subject: [icedtea-web] RFC: integrate proxy configuration into netx/plugin In-Reply-To: <4CE5B3DD.2050607@redhat.com> References: <4CE16D13.7090805@redhat.com> <20101117212445.GA2939@redhat.com> <4CE5B3DD.2050607@redhat.com> Message-ID: <20101122201739.GA363@redhat.com> * Omair Majid [2010-11-18 18:16]: > On 11/17/2010 04:24 PM, Deepak Bhole wrote: > >* Omair Majid [2010-11-15 12:27]: > >>Hi, > >> > >... > >>+ > >>+ /** > >>+ * Returns true if the host is the hostname or the IP address of the > >>+ * localhost > >>+ */ > >>+ private boolean isLocalHost(String host) { > >>+ if (host.equals("localhost")) { > >>+ return true; > >>+ } > >>+ > >>+ if (host.equals("127.0.0.1")) { > >>+ return true; > >>+ } > >>+ > >>+ try { > >>+ if (host.equals(InetAddress.getLocalHost().getHostName())) { > >>+ return true; > >>+ } > >>+ } catch (UnknownHostException e) { > >>+ // continue > >>+ } > >>+ > >>+ try { > >>+ if (host.equals(InetAddress.getLocalHost().getHostAddress())) { > >>+ return true; > >>+ } > >>+ } catch (UnknownHostException e) { > >>+ // continue > >>+ } > >>+ > >>+ return false; > >>+ } > >>+ > > > >The above check will fail for something like 127.0.0.2 which is also > >local. Can't we use InetAddress.isLoopbackAddress() here? > > > > I actually wanted to avoid doing a DNS lookup on the (possibly > untrusted) hostname (not sure if that even matters), but I cant see > another way. Fixed using the method you suggested. The last two > conditions are still present as they check if something like > "fully.qualified.domain.name" is the local machine, something that > isLoopbackAddress does not do. > Looks good, OK for HEAD! Cheers, Deepak > > > >Rest looks fine to me. > > > > Thanks, > Omair > diff -r 88d31285a14b netx/net/sourceforge/jnlp/runtime/DeploymentConfiguration.java > --- a/netx/net/sourceforge/jnlp/runtime/DeploymentConfiguration.java Thu Nov 18 11:55:26 2010 -0500 > +++ b/netx/net/sourceforge/jnlp/runtime/DeploymentConfiguration.java Thu Nov 18 18:08:38 2010 -0500 > @@ -120,13 +120,6 @@ > public static final String CONSOLE_SHOW = "SHOW"; > public static final String CONSOLE_DISABLE = "DISABLE"; > > - /* FIXME these should be moved into the proxy class */ > - public static final int PROXY_TYPE_UNKNOWN = -1; > - public static final int PROXY_TYPE_NONE = 0; > - public static final int PROXY_TYPE_MANUAL = 1; > - public static final int PROXY_TYPE_AUTO = 2; > - public static final int PROXY_TYPE_BROWSER = 3; > - > public static final String KEY_USER_CACHE_DIR = "deployment.user.cachedir"; > public static final String KEY_USER_PERSISTENCE_CACHE_DIR = "deployment.user.pcachedir"; > public static final String KEY_SYSTEM_CACHE_DIR = "deployment.system.cachedir"; > @@ -172,6 +165,24 @@ > public static final String KEY_SECURITY_INSTALL_AUTHENTICATOR = "deployment.security.authenticator"; > > /* > + * Networking > + */ > + public static final String KEY_PROXY_TYPE = "deployment.proxy.type"; > + public static final String KEY_PROXY_SAME = "deployment.proxy.same"; > + public static final String KEY_PROXY_AUTO_CONFIG_URL = "deployment.proxy.auto.config.url"; > + public static final String KEY_PROXY_BYPASS_LIST = "deployment.proxy.bypass.list"; > + public static final String KEY_PROXY_BYPASS_LOCAL = "deployment.proxy.bypass.local"; > + public static final String KEY_PROXY_HTTP_HOST = "deployment.proxy.http.host"; > + public static final String KEY_PROXY_HTTP_PORT = "deployment.proxy.http.port"; > + public static final String KEY_PROXY_HTTPS_HOST = "deployment.proxy.https.host"; > + public static final String KEY_PROXY_HTTPS_PORT = "deployment.proxy.https.port"; > + public static final String KEY_PROXY_FTP_HOST = "deployment.proxy.ftp.host"; > + public static final String KEY_PROXY_FTP_PORT = "deployment.proxy.ftp.port"; > + public static final String KEY_PROXY_SOCKS4_HOST = "deployment.proxy.socks.host"; > + public static final String KEY_PROXY_SOCKS4_PORT = "deployment.proxy.socks.port"; > + public static final String KEY_PROXY_OVERRIDE_HOSTS = "deployment.proxy.override.hosts"; > + > + /* > * Tracing and Logging > */ > > @@ -380,20 +391,20 @@ > { KEY_SECURITY_PROMPT_USER_FOR_JNLP, String.valueOf(true) }, > { KEY_SECURITY_INSTALL_AUTHENTICATOR, String.valueOf(true) }, > /* networking */ > - { "deployment.proxy.type", String.valueOf(PROXY_TYPE_BROWSER) }, > - { "deployment.proxy.same", String.valueOf(false) }, > - { "deployment.proxy.auto.config.url", null }, > - { "deployment.proxy.bypass.list", null }, > - { "deployment.proxy.bypass.local", null }, > - { "deployment.proxy.http.host", null }, > - { "deployment.proxy.http.port", null }, > - { "deployment.proxy.https.host", null }, > - { "deployment.proxy.https.port", null }, > - { "deployment.proxy.ftp.host", null }, > - { "deployment.proxy.ftp.port", null }, > - { "deployment.proxy.socks.host", null }, > - { "deployment.proxy.socks.port", null }, > - { "deployment.proxy.override.hosts", null }, > + { KEY_PROXY_TYPE, String.valueOf(JNLPProxySelector.PROXY_TYPE_BROWSER) }, > + { KEY_PROXY_SAME, String.valueOf(false) }, > + { KEY_PROXY_AUTO_CONFIG_URL, null }, > + { KEY_PROXY_BYPASS_LIST, null }, > + { KEY_PROXY_BYPASS_LOCAL, null }, > + { KEY_PROXY_HTTP_HOST, null }, > + { KEY_PROXY_HTTP_PORT, null }, > + { KEY_PROXY_HTTPS_HOST, null }, > + { KEY_PROXY_HTTPS_PORT, null }, > + { KEY_PROXY_FTP_HOST, null }, > + { KEY_PROXY_FTP_PORT, null }, > + { KEY_PROXY_SOCKS4_HOST, null }, > + { KEY_PROXY_SOCKS4_PORT, null }, > + { KEY_PROXY_OVERRIDE_HOSTS, null }, > /* cache and optional package repository */ > { "deployment.cache.max.size", String.valueOf("-1") }, > { "deployment.cache.jarcompression", String.valueOf(0) }, > diff -r 88d31285a14b netx/net/sourceforge/jnlp/runtime/JNLPProxySelector.java > --- /dev/null Thu Jan 01 00:00:00 1970 +0000 > +++ b/netx/net/sourceforge/jnlp/runtime/JNLPProxySelector.java Thu Nov 18 18:08:38 2010 -0500 > @@ -0,0 +1,356 @@ > +// Copyright (C) 2010 Red Hat, Inc. > +// > +// This library is free software; you can redistribute it and/or > +// modify it under the terms of the GNU Lesser General Public > +// License as published by the Free Software Foundation; either > +// version 2.1 of the License, or (at your option) any later version. > +// > +// This library is distributed in the hope that it will be useful, > +// but WITHOUT ANY WARRANTY; without even the implied warranty of > +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU > +// Lesser General Public License for more details. > +// > +// You should have received a copy of the GNU Lesser General Public > +// License along with this library; if not, write to the Free Software > +// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. > + > +package net.sourceforge.jnlp.runtime; > + > +import java.io.IOException; > +import java.net.InetAddress; > +import java.net.InetSocketAddress; > +import java.net.MalformedURLException; > +import java.net.Proxy; > +import java.net.ProxySelector; > +import java.net.SocketAddress; > +import java.net.URI; > +import java.net.URL; > +import java.net.UnknownHostException; > +import java.net.Proxy.Type; > +import java.util.ArrayList; > +import java.util.Arrays; > +import java.util.List; > +import java.util.StringTokenizer; > + > +/** > + * A ProxySelector specific to JNLPs. This proxy uses the deployment > + * configuration to determine what to do. > + * > + * @see java.net.ProxySelector > + */ > +public class JNLPProxySelector extends ProxySelector { > + > + public static final int PROXY_TYPE_UNKNOWN = -1; > + public static final int PROXY_TYPE_NONE = 0; > + public static final int PROXY_TYPE_MANUAL = 1; > + public static final int PROXY_TYPE_AUTO = 2; > + public static final int PROXY_TYPE_BROWSER = 3; > + > + /** The default port to use as a fallback. Currently squid's default port */ > + public static final int FALLBACK_PROXY_PORT = 3128; > + > + /** The proxy type. See PROXY_TYPE_* constants */ > + private int proxyType = PROXY_TYPE_UNKNOWN; > + > + /** the URL to the PAC file */ > + private URL autoConfigUrl = null; > + > + /** a list of URLs that should be bypassed for proxy purposes */ > + private List bypassList = null; > + > + /** whether localhost should be bypassed for proxy purposes */ > + private boolean bypassLocal = false; > + > + /** > + * whether the http proxy should be used for https and ftp protocols as well > + */ > + private boolean sameProxy = false; > + > + private String proxyHttpHost; > + private int proxyHttpPort; > + private String proxyHttpsHost; > + private int proxyHttpsPort; > + private String proxyFtpHost; > + private int proxyFtpPort; > + private String proxySocks4Host; > + private int proxySocks4Port; > + > + // FIXME what is this? where should it be used? > + private String overrideHosts = null; > + > + /** > + * Creates a new JNLPProxySelector. > + */ > + public JNLPProxySelector() { > + parseConfiguration(); > + } > + > + /** > + * Initialize this ProxySelector by reading the configuration > + */ > + private void parseConfiguration() { > + DeploymentConfiguration config = JNLPRuntime.getConfiguration(); > + > + proxyType = Integer.valueOf(config.getProperty(DeploymentConfiguration.KEY_PROXY_TYPE)); > + > + String autoConfigString = config > + .getProperty(DeploymentConfiguration.KEY_PROXY_AUTO_CONFIG_URL); > + if (autoConfigString != null) { > + try { > + autoConfigUrl = new URL(autoConfigString); > + } catch (MalformedURLException e) { > + e.printStackTrace(); > + } > + } > + > + bypassList = new ArrayList(); > + String proxyBypass = config.getProperty(DeploymentConfiguration.KEY_PROXY_BYPASS_LIST); > + if (proxyBypass != null) { > + StringTokenizer tokenizer = new StringTokenizer(proxyBypass, ","); > + while (tokenizer.hasMoreTokens()) { > + String host = tokenizer.nextToken(); > + if (host != null && host.trim().length() != 0) { > + bypassList.add(host); > + } > + } > + } > + > + bypassLocal = Boolean.valueOf(config > + .getProperty(DeploymentConfiguration.KEY_PROXY_BYPASS_LOCAL)); > + > + sameProxy = Boolean.valueOf(config.getProperty(DeploymentConfiguration.KEY_PROXY_SAME)); > + > + proxyHttpHost = getHost(config, DeploymentConfiguration.KEY_PROXY_HTTP_HOST); > + proxyHttpPort = getPort(config, DeploymentConfiguration.KEY_PROXY_HTTP_PORT); > + > + proxyHttpsHost = getHost(config, DeploymentConfiguration.KEY_PROXY_HTTPS_HOST); > + proxyHttpsPort = getPort(config, DeploymentConfiguration.KEY_PROXY_HTTPS_PORT); > + > + proxyFtpHost = getHost(config, DeploymentConfiguration.KEY_PROXY_FTP_HOST); > + proxyFtpPort = getPort(config, DeploymentConfiguration.KEY_PROXY_FTP_PORT); > + > + proxySocks4Host = getHost(config, DeploymentConfiguration.KEY_PROXY_SOCKS4_HOST); > + proxySocks4Port = getPort(config, DeploymentConfiguration.KEY_PROXY_SOCKS4_PORT); > + > + overrideHosts = config.getProperty(DeploymentConfiguration.KEY_PROXY_OVERRIDE_HOSTS); > + } > + > + /** > + * Uses the given key to get a host from the configuraion > + */ > + private String getHost(DeploymentConfiguration config, String key) { > + String proxyHost = config.getProperty(key); > + if (proxyHost != null) { > + proxyHost = proxyHost.trim(); > + } > + return proxyHost; > + } > + > + /** > + * Uses the given key to get a port from the configuration > + */ > + private int getPort(DeploymentConfiguration config, String key) { > + int proxyPort = FALLBACK_PROXY_PORT; > + String port; > + port = config.getProperty(key); > + if (port != null && port.trim().length() != 0) { > + try { > + proxyPort = Integer.valueOf(port); > + } catch (NumberFormatException e) { > + e.printStackTrace(); > + } > + } > + return proxyPort; > + } > + > + /** > + * {@inheritDoc} > + */ > + @Override > + public void connectFailed(URI uri, SocketAddress sa, IOException ioe) { > + ioe.printStackTrace(); > + } > + > + /** > + * {@inheritDoc} > + */ > + @Override > + public List select(URI uri) { > + if (JNLPRuntime.isDebug()) { > + System.out.println("Selecting proxy for: " + uri); > + } > + > + if (inBypassList(uri)) { > + List proxies = Arrays.asList(new Proxy[] { Proxy.NO_PROXY }); > + if (JNLPRuntime.isDebug()) { > + System.out.println("Selected proxies: " + Arrays.toString(proxies.toArray())); > + } > + return proxies; > + } > + > + List proxies = new ArrayList(); > + > + switch (proxyType) { > + case PROXY_TYPE_MANUAL: > + proxies.addAll(getFromConfiguration(uri)); > + break; > + case PROXY_TYPE_AUTO: > + proxies.addAll(getFromPAC(uri)); > + break; > + case PROXY_TYPE_BROWSER: > + proxies.addAll(getFromBrowser(uri)); > + break; > + case PROXY_TYPE_UNKNOWN: > + // fall through > + case PROXY_TYPE_NONE: > + // fall through > + default: > + proxies.add(Proxy.NO_PROXY); > + break; > + } > + > + if (JNLPRuntime.isDebug()) { > + System.out.println("Selected proxies: " + Arrays.toString(proxies.toArray())); > + } > + return proxies; > + } > + > + /** > + * Returns true if the uri should be bypassed for proxy purposes > + */ > + private boolean inBypassList(URI uri) { > + try { > + String scheme = uri.getScheme(); > + /* scheme can be http/https/ftp/socket */ > + > + if (scheme.equals("http") || scheme.equals("https") || scheme.equals("ftp")) { > + URL url = uri.toURL(); > + if (bypassLocal && isLocalHost(url.getHost())) { > + return true; > + } > + > + if (bypassList.contains(url.getHost())) { > + return true; > + } > + } else if (scheme.equals("socket")) { > + String host = uri.getSchemeSpecificPart().split(":")[0]; > + > + if (bypassLocal && isLocalHost(host)) { > + return true; > + } > + > + if (bypassList.contains(host)) { > + return true; > + } > + } > + } catch (MalformedURLException e) { > + return false; > + } > + > + return false; > + } > + > + /** > + * Returns true if the host is the hostname or the IP address of the > + * localhost > + */ > + private boolean isLocalHost(String host) { > + > + try { > + if (InetAddress.getByName(host).isLoopbackAddress()) { > + return true; > + } > + } catch (UnknownHostException e1) { > + // continue > + } > + > + try { > + if (host.equals(InetAddress.getLocalHost().getHostName())) { > + return true; > + } > + } catch (UnknownHostException e) { > + // continue > + } > + > + try { > + if (host.equals(InetAddress.getLocalHost().getHostAddress())) { > + return true; > + } > + } catch (UnknownHostException e) { > + // continue > + } > + > + return false; > + } > + > + /** > + * Returns a list of proxies by using the information in the deployment > + * configuration > + * > + * @param uri > + * @return a List of Proxy objects > + */ > + private List getFromConfiguration(URI uri) { > + List proxies = new ArrayList(); > + > + String scheme = uri.getScheme(); > + > + if (sameProxy) { > + SocketAddress sa = new InetSocketAddress(proxyHttpHost, proxyHttpPort); > + Proxy proxy; > + if (scheme.equals("socket")) { > + proxy = new Proxy(Type.SOCKS, sa); > + } else { > + proxy = new Proxy(Type.HTTP, sa); > + } > + proxies.add(proxy); > + } else if (scheme.equals("http")) { > + SocketAddress sa = new InetSocketAddress(proxyHttpHost, proxyHttpPort); > + proxies.add(new Proxy(Type.HTTP, sa)); > + } else if (scheme.equals("https")) { > + SocketAddress sa = new InetSocketAddress(proxyHttpsHost, proxyHttpsPort); > + proxies.add(new Proxy(Type.HTTP, sa)); > + } else if (scheme.equals("ftp")) { > + SocketAddress sa = new InetSocketAddress(proxyFtpHost, proxyFtpPort); > + proxies.add(new Proxy(Type.HTTP, sa)); > + } else if (scheme.equals("socket")) { > + SocketAddress sa = new InetSocketAddress(proxySocks4Host, proxySocks4Port); > + proxies.add(new Proxy(Type.SOCKS, sa)); > + } else { > + proxies.add(Proxy.NO_PROXY); > + } > + > + return proxies; > + } > + > + /** > + * Returns a list of proxies by using the Proxy Auto Config (PAC) file. See > + * http://en.wikipedia.org/wiki/Proxy_auto-config#The_PAC_file for more > + * information. > + * > + * @return a List of valid Proxy objects > + */ > + private List getFromPAC(URI uri) { > + if (autoConfigUrl == null) { > + return Arrays.asList(new Proxy[] { Proxy.NO_PROXY }); > + } > + // TODO implement this by reading and using the PAC file > + System.err.println("WARNING: Using a Proxy Auto Config file is not implemented yet"); > + > + return Arrays.asList(new Proxy[] { Proxy.NO_PROXY }); > + } > + > + /** > + * Returns a list of proxies by querying the browser > + * > + * @param uri the uri to get proxies for > + * @return a list of proxies > + */ > + protected List getFromBrowser(URI uri) { > + // TODO implement this by parsing mozilla config > + System.err.println("WARNING: Using proxy settings from the browser is not implemented yet"); > + > + return Arrays.asList(new Proxy[] { Proxy.NO_PROXY }); > + } > + > +} > diff -r 88d31285a14b netx/net/sourceforge/jnlp/runtime/JNLPRuntime.java > --- a/netx/net/sourceforge/jnlp/runtime/JNLPRuntime.java Thu Nov 18 11:55:26 2010 -0500 > +++ b/netx/net/sourceforge/jnlp/runtime/JNLPRuntime.java Thu Nov 18 18:08:38 2010 -0500 > @@ -18,6 +18,8 @@ > package net.sourceforge.jnlp.runtime; > > import java.io.*; > +import java.net.Authenticator; > +import java.net.ProxySelector; > import java.nio.channels.FileLock; > import java.awt.*; > import java.text.*; > @@ -35,6 +37,7 @@ > > import net.sourceforge.jnlp.*; > import net.sourceforge.jnlp.cache.*; > +import net.sourceforge.jnlp.security.JNLPAuthenticator; > import net.sourceforge.jnlp.security.SecurityDialogMessageHandler; > import net.sourceforge.jnlp.security.VariableX509TrustManager; > import net.sourceforge.jnlp.services.*; > @@ -250,6 +253,10 @@ > e.printStackTrace(); > } > > + // plug in a custom authenticator and proxy selector > + Authenticator.setDefault(new JNLPAuthenticator()); > + ProxySelector.setDefault(new JNLPProxySelector()); > + > initialized = true; > > } > diff -r 88d31285a14b netx/net/sourceforge/jnlp/security/JNLPAuthenticator.java > --- /dev/null Thu Jan 01 00:00:00 1970 +0000 > +++ b/netx/net/sourceforge/jnlp/security/JNLPAuthenticator.java Thu Nov 18 18:08:38 2010 -0500 > @@ -0,0 +1,61 @@ > +/* JNLPAuthenticator > + Copyright (C) 2008 Red Hat > + > +This file is part of IcedTea. > + > +IcedTea is free software; you can redistribute it and/or modify > +it under the terms of the GNU General Public License as published by > +the Free Software Foundation; either version 2, or (at your option) > +any later version. > + > +IcedTea is distributed in the hope that it will be useful, but > +WITHOUT ANY WARRANTY; without even the implied warranty of > +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU > +General Public License for more details. > + > +You should have received a copy of the GNU General Public License > +along with IcedTea; see the file COPYING. If not, write to the > +Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA > +02110-1301 USA. > + > +Linking this library statically or dynamically with other modules is > +making a combined work based on this library. Thus, the terms and > +conditions of the GNU General Public License cover the whole > +combination. > + > +As a special exception, the copyright holders of this library give you > +permission to link this library with independent modules to produce an > +executable, regardless of the license terms of these independent > +modules, and to copy and distribute the resulting executable under > +terms of your choice, provided that you also meet, for each linked > +independent module, the terms and conditions of the license of that > +module. An independent module is a module which is not derived from > +or based on this library. If you modify this library, you may extend > +this exception to your version of the library, but you are not > +obligated to do so. If you do not wish to do so, delete this > +exception statement from your version. */ > + > +package net.sourceforge.jnlp.security; > + > +import java.net.Authenticator; > +import java.net.PasswordAuthentication; > + > +public class JNLPAuthenticator extends Authenticator { > + > + public PasswordAuthentication getPasswordAuthentication() { > + > + // No security check is required here, because the only way to set > + // parameters for which auth info is needed > + // (Authenticator:requestPasswordAuthentication()), has a security check > + > + String type = this.getRequestorType() == RequestorType.PROXY ? "proxy" : "web"; > + > + // request auth info from user > + PasswordAuthenticationDialog pwDialog = new PasswordAuthenticationDialog(); > + PasswordAuthentication auth = pwDialog.askUser(this.getRequestingHost(), this.getRequestingPort(), this.getRequestingPrompt(), type); > + > + // send it along > + return auth; > + } > + > +} > diff -r 88d31285a14b netx/net/sourceforge/jnlp/security/PasswordAuthenticationDialog.java > --- /dev/null Thu Jan 01 00:00:00 1970 +0000 > +++ b/netx/net/sourceforge/jnlp/security/PasswordAuthenticationDialog.java Thu Nov 18 18:08:38 2010 -0500 > @@ -0,0 +1,247 @@ > +/* PasswordAuthenticationDialog -- requests authentication information from users > + Copyright (C) 2009 Red Hat > + > +This file is part of IcedTea. > + > +IcedTea is free software; you can redistribute it and/or modify > +it under the terms of the GNU General Public License as published by > +the Free Software Foundation; either version 2, or (at your option) > +any later version. > + > +IcedTea is distributed in the hope that it will be useful, but > +WITHOUT ANY WARRANTY; without even the implied warranty of > +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU > +General Public License for more details. > + > +You should have received a copy of the GNU General Public License > +along with IcedTea; see the file COPYING. If not, write to the > +Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA > +02110-1301 USA. > + > +Linking this library statically or dynamically with other modules is > +making a combined work based on this library. Thus, the terms and > +conditions of the GNU General Public License cover the whole > +combination. > + > +As a special exception, the copyright holders of this library give you > +permission to link this library with independent modules to produce an > +executable, regardless of the license terms of these independent > +modules, and to copy and distribute the resulting executable under > +terms of your choice, provided that you also meet, for each linked > +independent module, the terms and conditions of the license of that > +module. An independent module is a module which is not derived from > +or based on this library. If you modify this library, you may extend > +this exception to your version of the library, but you are not > +obligated to do so. If you do not wish to do so, delete this > +exception statement from your version. */ > + > +package net.sourceforge.jnlp.security; > + > +import java.awt.Dimension; > +import java.awt.GridBagConstraints; > +import java.awt.GridBagLayout; > +import java.awt.Insets; > +import java.awt.event.ActionEvent; > +import java.awt.event.ActionListener; > +import java.net.PasswordAuthentication; > + > +import javax.swing.JButton; > +import javax.swing.JDialog; > +import javax.swing.JLabel; > +import javax.swing.JPasswordField; > +import javax.swing.JTextField; > +import javax.swing.SwingUtilities; > + > +import net.sourceforge.jnlp.runtime.JNLPRuntime; > + > +/** > + * Modal non-minimizable dialog to request http authentication credentials > + */ > + > +public class PasswordAuthenticationDialog extends JDialog { > + > + private JLabel jlInfo = new JLabel(""); > + private JTextField jtfUserName = new JTextField(); > + private JPasswordField jpfPassword = new JPasswordField(); > + private boolean userCancelled; > + > + public PasswordAuthenticationDialog() { > + initialize(); > + } > + > + /** > + * Initialized the dialog components > + */ > + > + public void initialize() { > + > + setTitle("IcedTea Java Plugin - Authorization needed to proceed"); > + > + setLayout(new GridBagLayout()); > + > + JLabel jlUserName = new JLabel("Username: "); > + JLabel jlPassword = new JLabel("Password: "); > + JButton jbOK = new JButton("OK"); > + JButton jbCancel = new JButton("Cancel"); > + > + jtfUserName.setSize(20, 10); > + jpfPassword.setSize(20, 10); > + > + GridBagConstraints c; > + > + c = new GridBagConstraints(); > + c.fill = c.HORIZONTAL; > + c.gridx = 0; > + c.gridy = 0; > + c.gridwidth = 2; > + c.insets = new Insets(10, 5, 3, 3); > + add(jlInfo, c); > + > + c = new GridBagConstraints(); > + c.gridx = 0; > + c.gridy = 1; > + c.insets = new Insets(10, 5, 3, 3); > + add(jlUserName, c); > + > + c = new GridBagConstraints(); > + c.fill = c.HORIZONTAL; > + c.gridx = 1; > + c.gridy = 1; > + c.insets = new Insets(10, 5, 3, 3); > + c.weightx = 1.0; > + add(jtfUserName, c); > + > + > + c = new GridBagConstraints(); > + c.gridx = 0; > + c.gridy = 2; > + c.insets = new Insets(5, 5, 3, 3); > + add(jlPassword, c); > + > + c = new GridBagConstraints(); > + c.fill = c.HORIZONTAL; > + c.gridx = 1; > + c.gridy = 2; > + c.insets = new Insets(5, 5, 3, 3); > + c.weightx = 1.0; > + add(jpfPassword, c); > + > + c = new GridBagConstraints(); > + c.anchor = c.SOUTHEAST; > + c.gridx = 1; > + c.gridy = 3; > + c.insets = new Insets(5, 5, 3, 70); > + c.weightx = 0.0; > + add(jbCancel, c); > + > + c = new GridBagConstraints(); > + c.anchor = c.SOUTHEAST; > + c.gridx = 1; > + c.gridy = 3; > + c.insets = new Insets(5, 5, 3, 3); > + c.weightx = 0.0; > + add(jbOK, c); > + > + setMinimumSize(new Dimension(400,150)); > + setMaximumSize(new Dimension(1024,150)); > + setAlwaysOnTop(true); > + > + setSize(400,150); > + setLocationRelativeTo(null); > + > + // OK => read supplied info and pass it on > + jbOK.addActionListener(new ActionListener() { > + public void actionPerformed(ActionEvent e) { > + userCancelled = false; > + dispose(); > + } > + }); > + > + // Cancel => discard supplied info and pass on an empty auth > + jbCancel.addActionListener(new ActionListener() { > + public void actionPerformed(ActionEvent e) { > + userCancelled = true; > + dispose(); > + } > + }); > + > + // "return" key in either user or password field => OK > + > + jtfUserName.addActionListener(new ActionListener() { > + public void actionPerformed(ActionEvent e) { > + userCancelled = false; > + dispose(); > + } > + }); > + > + jpfPassword.addActionListener(new ActionListener() { > + public void actionPerformed(ActionEvent e) { > + userCancelled = false; > + dispose(); > + } > + }); > + } > + > + /** > + * Present a dialog to the user asking them for authentication information > + * > + * @param hostThe host for with authentication is needed > + * @param port The port being accessed > + * @param prompt The prompt (realm) as presented by the server > + * @param type The type of server (proxy/web) > + * @return PasswordAuthentication containing the credentials (empty credentials if user cancelled) > + */ > + protected PasswordAuthentication askUser(String host, int port, String prompt, String type) { > + PasswordAuthentication auth = null; > + > + host += port != -1 ? ":" + port : ""; > + > + // This frame is reusable. So reset everything first. > + userCancelled = true; > + jlInfo.setText("The " + type + " server at " + host + " is requesting authentication. It says \"" + prompt + "\""); > + > + try { > + SwingUtilities.invokeAndWait( new Runnable() { > + public void run() { > + // show dialog to user > + setVisible(true); > + } > + }); > + > + if (JNLPRuntime.isDebug()) { > + System.out.println("password dialog shown"); > + } > + > + // wait until dialog is gone > + while (this.isShowing()) { > + try { > + Thread.sleep(200); > + } catch (InterruptedException ie) { > + } > + } > + > + if (JNLPRuntime.isDebug()) { > + System.out.println("password dialog closed"); > + } > + > + if (!userCancelled) { > + auth = new PasswordAuthentication(jtfUserName.getText(), jpfPassword.getText().toCharArray()); > + } > + } catch (Exception e) { > + e.printStackTrace(); > + > + // Nothing else we can do. Empty auth will be returned > + } > + > + return auth; > + } > + > + public static void main(String[] args) { > + PasswordAuthenticationDialog frame = new PasswordAuthenticationDialog(); > + > + PasswordAuthentication auth = frame.askUser("127.0.0.1", 3128, "Password for local proxy", "proxy"); > + > + System.err.println("Auth info: " + auth.getUserName() + ":" + new String(auth.getPassword())); > + System.exit(0); > + } > +} > diff -r 88d31285a14b plugin/icedteanp/java/sun/applet/PasswordAuthenticationDialog.java > --- a/plugin/icedteanp/java/sun/applet/PasswordAuthenticationDialog.java Thu Nov 18 11:55:26 2010 -0500 > +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 > @@ -1,241 +0,0 @@ > -/* PasswordAuthenticationDialog -- requests authentication information from users > - Copyright (C) 2009 Red Hat > - > -This file is part of IcedTea. > - > -IcedTea is free software; you can redistribute it and/or modify > -it under the terms of the GNU General Public License as published by > -the Free Software Foundation; either version 2, or (at your option) > -any later version. > - > -IcedTea is distributed in the hope that it will be useful, but > -WITHOUT ANY WARRANTY; without even the implied warranty of > -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU > -General Public License for more details. > - > -You should have received a copy of the GNU General Public License > -along with IcedTea; see the file COPYING. If not, write to the > -Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA > -02110-1301 USA. > - > -Linking this library statically or dynamically with other modules is > -making a combined work based on this library. Thus, the terms and > -conditions of the GNU General Public License cover the whole > -combination. > - > -As a special exception, the copyright holders of this library give you > -permission to link this library with independent modules to produce an > -executable, regardless of the license terms of these independent > -modules, and to copy and distribute the resulting executable under > -terms of your choice, provided that you also meet, for each linked > -independent module, the terms and conditions of the license of that > -module. An independent module is a module which is not derived from > -or based on this library. If you modify this library, you may extend > -this exception to your version of the library, but you are not > -obligated to do so. If you do not wish to do so, delete this > -exception statement from your version. */ > - > -package sun.applet; > - > -import java.awt.Dimension; > -import java.awt.GridBagConstraints; > -import java.awt.GridBagLayout; > -import java.awt.Insets; > -import java.awt.event.ActionEvent; > -import java.awt.event.ActionListener; > -import java.net.PasswordAuthentication; > - > -import javax.swing.JButton; > -import javax.swing.JDialog; > -import javax.swing.JLabel; > -import javax.swing.JPasswordField; > -import javax.swing.JTextField; > -import javax.swing.SwingUtilities; > - > -/** > - * Modal non-minimizable dialog to request http authentication credentials > - */ > - > -public class PasswordAuthenticationDialog extends JDialog { > - > - private JLabel jlInfo = new JLabel(""); > - private JTextField jtfUserName = new JTextField(); > - private JPasswordField jpfPassword = new JPasswordField(); > - private boolean userCancelled; > - > - public PasswordAuthenticationDialog() { > - initialize(); > - } > - > - /** > - * Initialized the dialog components > - */ > - > - public void initialize() { > - > - setTitle("IcedTea Java Plugin - Authorization needed to proceed"); > - > - setLayout(new GridBagLayout()); > - > - JLabel jlUserName = new JLabel("Username: "); > - JLabel jlPassword = new JLabel("Password: "); > - JButton jbOK = new JButton("OK"); > - JButton jbCancel = new JButton("Cancel"); > - > - jtfUserName.setSize(20, 10); > - jpfPassword.setSize(20, 10); > - > - GridBagConstraints c; > - > - c = new GridBagConstraints(); > - c.fill = c.HORIZONTAL; > - c.gridx = 0; > - c.gridy = 0; > - c.gridwidth = 2; > - c.insets = new Insets(10, 5, 3, 3); > - add(jlInfo, c); > - > - c = new GridBagConstraints(); > - c.gridx = 0; > - c.gridy = 1; > - c.insets = new Insets(10, 5, 3, 3); > - add(jlUserName, c); > - > - c = new GridBagConstraints(); > - c.fill = c.HORIZONTAL; > - c.gridx = 1; > - c.gridy = 1; > - c.insets = new Insets(10, 5, 3, 3); > - c.weightx = 1.0; > - add(jtfUserName, c); > - > - > - c = new GridBagConstraints(); > - c.gridx = 0; > - c.gridy = 2; > - c.insets = new Insets(5, 5, 3, 3); > - add(jlPassword, c); > - > - c = new GridBagConstraints(); > - c.fill = c.HORIZONTAL; > - c.gridx = 1; > - c.gridy = 2; > - c.insets = new Insets(5, 5, 3, 3); > - c.weightx = 1.0; > - add(jpfPassword, c); > - > - c = new GridBagConstraints(); > - c.anchor = c.SOUTHEAST; > - c.gridx = 1; > - c.gridy = 3; > - c.insets = new Insets(5, 5, 3, 70); > - c.weightx = 0.0; > - add(jbCancel, c); > - > - c = new GridBagConstraints(); > - c.anchor = c.SOUTHEAST; > - c.gridx = 1; > - c.gridy = 3; > - c.insets = new Insets(5, 5, 3, 3); > - c.weightx = 0.0; > - add(jbOK, c); > - > - setMinimumSize(new Dimension(400,150)); > - setMaximumSize(new Dimension(1024,150)); > - setAlwaysOnTop(true); > - > - setSize(400,150); > - setLocationRelativeTo(null); > - > - // OK => read supplied info and pass it on > - jbOK.addActionListener(new ActionListener() { > - public void actionPerformed(ActionEvent e) { > - userCancelled = false; > - dispose(); > - } > - }); > - > - // Cancel => discard supplied info and pass on an empty auth > - jbCancel.addActionListener(new ActionListener() { > - public void actionPerformed(ActionEvent e) { > - userCancelled = true; > - dispose(); > - } > - }); > - > - // "return" key in either user or password field => OK > - > - jtfUserName.addActionListener(new ActionListener() { > - public void actionPerformed(ActionEvent e) { > - userCancelled = false; > - dispose(); > - } > - }); > - > - jpfPassword.addActionListener(new ActionListener() { > - public void actionPerformed(ActionEvent e) { > - userCancelled = false; > - dispose(); > - } > - }); > - } > - > - /** > - * Present a dialog to the user asking them for authentication information > - * > - * @param hostThe host for with authentication is needed > - * @param port The port being accessed > - * @param prompt The prompt (realm) as presented by the server > - * @param type The type of server (proxy/web) > - * @return PasswordAuthentication containing the credentials (empty credentials if user cancelled) > - */ > - protected PasswordAuthentication askUser(String host, int port, String prompt, String type) { > - PasswordAuthentication auth = null; > - > - host += port != -1 ? ":" + port : ""; > - > - // This frame is reusable. So reset everything first. > - userCancelled = true; > - jlInfo.setText("The " + type + " server at " + host + " is requesting authentication. It says \"" + prompt + "\""); > - > - try { > - SwingUtilities.invokeAndWait( new Runnable() { > - public void run() { > - // show dialog to user > - setVisible(true); > - } > - }); > - > - PluginDebug.debug("password dialog shown"); > - > - // wait until dialog is gone > - while (this.isShowing()) { > - try { > - Thread.sleep(200); > - } catch (InterruptedException ie) { > - } > - } > - > - PluginDebug.debug("password dialog closed"); > - > - if (!userCancelled) { > - auth = new PasswordAuthentication(jtfUserName.getText(), jpfPassword.getText().toCharArray()); > - } > - } catch (Exception e) { > - e.printStackTrace(); > - > - // Nothing else we can do. Empty auth will be returned > - } > - > - return auth; > - } > - > - public static void main(String[] args) { > - PasswordAuthenticationDialog frame = new PasswordAuthenticationDialog(); > - > - PasswordAuthentication auth = frame.askUser("127.0.0.1", 3128, "Password for local proxy", "proxy"); > - > - System.err.println("Auth info: " + auth.getUserName() + ":" + new String(auth.getPassword())); > - System.exit(0); > - } > -} > diff -r 88d31285a14b plugin/icedteanp/java/sun/applet/PluginMain.java > --- a/plugin/icedteanp/java/sun/applet/PluginMain.java Thu Nov 18 11:55:26 2010 -0500 > +++ b/plugin/icedteanp/java/sun/applet/PluginMain.java Thu Nov 18 18:08:38 2010 -0500 > @@ -77,6 +77,7 @@ > > import net.sourceforge.jnlp.runtime.DeploymentConfiguration; > import net.sourceforge.jnlp.runtime.JNLPRuntime; > +import net.sourceforge.jnlp.security.JNLPAuthenticator; > > /** > * The main entry point into PluginAppletViewer. > @@ -202,8 +203,9 @@ > boolean installAuthenticator = Boolean.valueOf(JNLPRuntime.getConfiguration() > .getProperty(DeploymentConfiguration.KEY_SECURITY_INSTALL_AUTHENTICATOR)); > if (installAuthenticator) { > - Authenticator.setDefault(new CustomAuthenticator()); > + Authenticator.setDefault(new JNLPAuthenticator()); > } > + // override the proxy selector set by JNLPRuntime > ProxySelector.setDefault(new PluginProxySelector()); > > CookieManager ckManager = new PluginCookieManager(); > @@ -218,24 +220,4 @@ > return streamHandler.getMessage(); > } > > - static class CustomAuthenticator extends Authenticator { > - > - public PasswordAuthentication getPasswordAuthentication() { > - > - // No security check is required here, because the only way to > - // set parameters for which auth info is needed > - // (Authenticator:requestPasswordAuthentication()), has a security > - // check > - > - String type = this.getRequestorType() == RequestorType.PROXY ? "proxy" : "web"; > - > - // request auth info from user > - PasswordAuthenticationDialog pwDialog = new PasswordAuthenticationDialog(); > - PasswordAuthentication auth = pwDialog.askUser(this.getRequestingHost(), this.getRequestingPort(), this.getRequestingPrompt(), type); > - > - // send it along > - return auth; > - } > - } > - > } > diff -r 88d31285a14b plugin/icedteanp/java/sun/applet/PluginProxySelector.java > --- a/plugin/icedteanp/java/sun/applet/PluginProxySelector.java Thu Nov 18 11:55:26 2010 -0500 > +++ b/plugin/icedteanp/java/sun/applet/PluginProxySelector.java Thu Nov 18 18:08:38 2010 -0500 > @@ -37,18 +37,16 @@ > > package sun.applet; > > -import java.io.IOException; > -import java.net.InetAddress; > import java.net.InetSocketAddress; > import java.net.Proxy; > -import java.net.ProxySelector; > -import java.net.SocketAddress; > import java.net.URI; > import java.util.Date; > import java.util.ArrayList; > import java.util.HashMap; > import java.util.List; > > +import net.sourceforge.jnlp.runtime.JNLPProxySelector; > + > /** > * Proxy selector implementation for plugin network functions. > * > @@ -58,17 +56,10 @@ > * > */ > > -public class PluginProxySelector extends ProxySelector { > +public class PluginProxySelector extends JNLPProxySelector { > > private TimedHashMap proxyCache = new TimedHashMap(); > > - > - @Override > - public void connectFailed(URI uri, SocketAddress sa, IOException ioe) { > - // If the connection fails, there is little we can do here. Just print the exception > - ioe.printStackTrace(); > - } > - > /** > * Selects the appropriate proxy (or DIRECT connection method) for the given URI > * > @@ -76,7 +67,7 @@ > * @return A list of Proxy objects that are usable for this URI > */ > @Override > - public List select(URI uri) { > + protected List getFromBrowser(URI uri) { > > List proxyList = new ArrayList(); > From dbhole at redhat.com Mon Nov 22 12:31:22 2010 From: dbhole at redhat.com (Deepak Bhole) Date: Mon, 22 Nov 2010 15:31:22 -0500 Subject: [icedtea-web] RFC: reduce permissions on created files In-Reply-To: <4CDD52D6.9020306@redhat.com> References: <4CDC94FF.50701@redhat.com> <20101112115418.GE5773@rivendell.middle-earth.co.uk> <4CDD52D6.9020306@redhat.com> Message-ID: <20101122203122.GB363@redhat.com> * Omair Majid [2010-11-12 09:46]: > On 11/12/2010 06:54 AM, Dr Andrew John Hughes wrote: > >On 20:14 Thu 11 Nov , Omair Majid wrote: > >>Hi, > >> > >>The attached patch tries to make files created by netx/plugin more > >>secure by removing unnecessary permissions. IcedTea6 used to carry a > >>patch to change the umask used by the javaws process which IcedTea-Web > >>does not. This patch tries to make netx/plugin behave like they would in > >>the presence of such a patch. > >> > >>This patch does not change the file permissions on files that are cached > >>(mostly because I dont see why they should be protected), but does > >>change permissions on KeyStores, native directories created under /tmp/, > >>lock files, files created through the JNLP api and log files. > >> > > > >I think this is a better approach, though we should be aware that the permissions > >are now changed after the file has been created, whereas before (I presume) they > >were created with the correct permissions to begin with. > > > > Hm... Does creating a new (blank) file, setting appropriate > permissions on it and then writing content to it ensure that the > content can not be seen by others? This was the original intent with > this patch (I have since noticed one mistake in the patch). If > creating a blank file, setting permissions on it and then writing > actual content does not ensure the confidentiality of the data, then > I would like to find another way to accomplish this. > > Thanks for looking over the patch. > Good point Andrew! This patch needs to be modified. If a file is created with og+[r|w|x] and then restricted, anything that opened the handle before the change will have the permissions it did when the handle was opened. We need to create the file under a different (temp) name, change permissions, and then move it. AFAIK that shouldn't allow access. Access bypass can be verified as follows: 1. Create a file as one user (A), allow a+r 2. tail -f that file as another user (B) 3. As A, og-rwx the file 4. As A, write to the file The tail -f command from #2 will show the output, thus confirming that user B has access when they shouldn't. tail -f no longer gets the info if the file is renamed to something else between step 3 and 4. Cheers, Deepak > Cheers, > Omair > > >>ChangeLog: > >>2010-11-11 Omair Majid > >> > >> * netx/net/sourceforge/jnlp/util/FileUtils.java > >> (restrictFile): New method. Removes extra permissions on a file. > >> * netx/net/sourceforge/jnlp/Launcher.java > >> (markNetxRunning): Do not grant unnecessary file permissions. > >> * netx/net/sourceforge/jnlp/security/viewer/CertificatePane.java > >> (ImportButtonListener.actionPerformed): Likewise. > >> (RemoveButtonListener.actionPerformed): Likewise. > >> * netx/net/sourceforge/jnlp/services/SingleInstanceLock.java > >> (createWithPort): Likewise. > >> (getLockFile): Likewise. > >> * netx/net/sourceforge/jnlp/services/XExtendedService.java > >> (openFile): Likewise. > >> * netx/net/sourceforge/jnlp/services/XFileSaveService.java > >> (writeToFile): Likewise. > >> * netx/net/sourceforge/jnlp/services/XPersistenceService.java > >> (create): Likewise. > >> * netx/net/sourceforge/jnlp/util/XDesktopEntry.java > >> (installDesktopLauncher): Likewise. > >> * plugin/icedteanp/java/sun/applet/PluginMain.java > >> (PluginMain): Likewise. > >> > >>Any thoughts or comments? > >> > >>Cheers, > >>Omair > > > >>diff -r e82455c47f08 netx/net/sourceforge/jnlp/Launcher.java > >>--- a/netx/net/sourceforge/jnlp/Launcher.java Thu Nov 11 11:43:13 2010 -0500 > >>+++ b/netx/net/sourceforge/jnlp/Launcher.java Thu Nov 11 19:56:02 2010 -0500 > >>@@ -48,6 +48,7 @@ > >> import net.sourceforge.jnlp.runtime.JNLPRuntime; > >> import net.sourceforge.jnlp.services.InstanceExistsException; > >> import net.sourceforge.jnlp.services.ServiceUtil; > >>+import net.sourceforge.jnlp.util.FileUtils; > >> import net.sourceforge.jnlp.util.Reflect; > >> > >> import javax.swing.SwingUtilities; > >>@@ -729,6 +730,7 @@ > >> .getProperty(DeploymentConfiguration.KEY_USER_NETX_RUNNING_FILE)); > >> netxRunningFile.getParentFile().mkdirs(); > >> if (netxRunningFile.createNewFile()) { > >>+ FileUtils.restrictFile(netxRunningFile, true); > >> FileOutputStream fos = new FileOutputStream(netxRunningFile); > >> try { > >> fos.write(message.getBytes()); > >>diff -r e82455c47f08 netx/net/sourceforge/jnlp/runtime/JNLPClassLoader.java > >>--- a/netx/net/sourceforge/jnlp/runtime/JNLPClassLoader.java Thu Nov 11 11:43:13 2010 -0500 > >>+++ b/netx/net/sourceforge/jnlp/runtime/JNLPClassLoader.java Thu Nov 11 19:56:02 2010 -0500 > >>@@ -815,7 +815,10 @@ > >> nativeDir = getNativeDir(); > >> > >> File outFile = new File(nativeDir, name); > >>- > >>+ if (!outFile.isFile()&& !outFile.createNewFile()) { > >>+ throw new IOException("unable to create " + outFile); > >>+ } > >>+ FileUtils.restrictFile(outFile, true); > >> CacheUtil.streamCopy(jarFile.getInputStream(e), > >> new FileOutputStream(outFile)); > >> > >>@@ -842,6 +845,7 @@ > >> else { > >> // add this new native directory to the search path > >> addNativeDirectory(nativeDir); > >>+ FileUtils.restrictFile(nativeDir, true); > >> return nativeDir; > >> } > >> } > >>diff -r e82455c47f08 netx/net/sourceforge/jnlp/security/CertWarningPane.java > >>--- a/netx/net/sourceforge/jnlp/security/CertWarningPane.java Thu Nov 11 11:43:13 2010 -0500 > >>+++ b/netx/net/sourceforge/jnlp/security/CertWarningPane.java Thu Nov 11 19:56:02 2010 -0500 > >>@@ -47,6 +47,7 @@ > >> import java.awt.GridLayout; > >> import java.awt.event.ActionEvent; > >> import java.awt.event.ActionListener; > >>+import java.io.File; > >> import java.io.FileOutputStream; > >> import java.io.OutputStream; > >> import java.security.KeyStore; > >>@@ -68,6 +69,7 @@ > >> import net.sourceforge.jnlp.security.KeyStores.Level; > >> import net.sourceforge.jnlp.security.KeyStores.Type; > >> import net.sourceforge.jnlp.security.SecurityWarning.AccessType; > >>+import net.sourceforge.jnlp.util.FileUtils; > >> > >> /** > >> * Provides the panel for using inside a SecurityWarningDialog. These dialogs are > >>@@ -246,7 +248,13 @@ > >> KeyStore ks = KeyStores.getKeyStore(Level.USER, Type.CERTS); > >> X509Certificate c = (X509Certificate) parent.getJarSigner().getPublisher(); > >> CertificateUtils.addToKeyStore(c, ks); > >>- OutputStream os = new FileOutputStream(KeyStores.getKeyStoreLocation(Level.USER, Type.CERTS)); > >>+ File keyStoreFile = new File(KeyStores.getKeyStoreLocation(Level.USER, Type.CERTS)); > >>+ if (!keyStoreFile.isFile()) { > >>+ keyStoreFile.createNewFile(); > >>+ } > >>+ FileUtils.restrictFile(keyStoreFile, true); > >>+ > >>+ OutputStream os = new FileOutputStream(keyStoreFile); > >> ks.store(os, KeyStores.getPassword()); > >> if (JNLPRuntime.isDebug()) { > >> System.out.println("certificate is now permanently trusted"); > >>diff -r e82455c47f08 netx/net/sourceforge/jnlp/security/KeyStores.java > >>--- a/netx/net/sourceforge/jnlp/security/KeyStores.java Thu Nov 11 11:43:13 2010 -0500 > >>+++ b/netx/net/sourceforge/jnlp/security/KeyStores.java Thu Nov 11 19:56:02 2010 -0500 > >>@@ -53,6 +53,7 @@ > >> import net.sourceforge.jnlp.runtime.DeploymentConfiguration; > >> import net.sourceforge.jnlp.runtime.JNLPRuntime; > >> import net.sourceforge.jnlp.runtime.Translator; > >>+import net.sourceforge.jnlp.util.FileUtils; > >> > >> /** > >> * TheKeyStores class allows easily accessing the various KeyStores > >>@@ -344,6 +345,8 @@ > >> FileOutputStream fos = new FileOutputStream(file); > >> ks.store(fos, password.toCharArray()); > >> fos.close(); > >>+ > >>+ FileUtils.restrictFile(file, true); > >> } > >> > >> // TODO catch exception when password is incorrect and prompt user > >>diff -r e82455c47f08 netx/net/sourceforge/jnlp/security/viewer/CertificatePane.java > >>--- a/netx/net/sourceforge/jnlp/security/viewer/CertificatePane.java Thu Nov 11 11:43:13 2010 -0500 > >>+++ b/netx/net/sourceforge/jnlp/security/viewer/CertificatePane.java Thu Nov 11 19:56:02 2010 -0500 > >>@@ -45,6 +45,7 @@ > >> import java.awt.event.ActionEvent; > >> import java.awt.event.ActionListener; > >> import java.awt.event.KeyEvent; > >>+import java.io.File; > >> import java.io.FileOutputStream; > >> import java.io.OutputStream; > >> import java.io.PrintStream; > >>@@ -76,6 +77,7 @@ > >> import net.sourceforge.jnlp.security.SecurityUtil; > >> import net.sourceforge.jnlp.security.SecurityWarningDialog; > >> import net.sourceforge.jnlp.security.KeyStores.Level; > >>+import net.sourceforge.jnlp.util.FileUtils; > >> > >> public class CertificatePane extends JPanel { > >> > >>@@ -361,8 +363,13 @@ > >> try { > >> KeyStore ks = keyStore; > >> CertificateUtils.addToKeyStore(chooser.getSelectedFile(), ks); > >>- OutputStream os = new FileOutputStream( > >>- KeyStores.getKeyStoreLocation(currentKeyStoreLevel, currentKeyStoreType)); > >>+ File keyStoreFile = new File(KeyStores > >>+ .getKeyStoreLocation(currentKeyStoreLevel, currentKeyStoreType)); > >>+ if (!keyStoreFile.isFile()) { > >>+ keyStoreFile.createNewFile(); > >>+ } > >>+ FileUtils.restrictFile(keyStoreFile, true); > >>+ OutputStream os = new FileOutputStream(keyStoreFile); > >> ks.store(os, KeyStores.getPassword()); > >> repopulateTables(); > >> } catch (Exception ex) { > >>@@ -436,8 +443,14 @@ > >> JOptionPane.YES_NO_OPTION); > >> if (i == 0) { > >> keyStore.deleteEntry(alias); > >>- FileOutputStream fos = new FileOutputStream( > >>- KeyStores.getKeyStoreLocation(currentKeyStoreLevel, currentKeyStoreType)); > >>+ File keyStoreFile = new File(KeyStores > >>+ .getKeyStoreLocation(currentKeyStoreLevel, currentKeyStoreType)); > >>+ if (!keyStoreFile.isFile()) { > >>+ keyStoreFile.createNewFile(); > >>+ } > >>+ FileUtils.restrictFile(keyStoreFile, true); > >>+ > >>+ FileOutputStream fos = new FileOutputStream(keyStoreFile); > >> keyStore.store(fos, KeyStores.getPassword()); > >> fos.close(); > >> } > >>diff -r e82455c47f08 netx/net/sourceforge/jnlp/services/SingleInstanceLock.java > >>--- a/netx/net/sourceforge/jnlp/services/SingleInstanceLock.java Thu Nov 11 11:43:13 2010 -0500 > >>+++ b/netx/net/sourceforge/jnlp/services/SingleInstanceLock.java Thu Nov 11 19:56:02 2010 -0500 > >>@@ -67,6 +67,8 @@ > >> */ > >> public void createWithPort(int localPort) throws IOException { > >> > >>+ lockFile.createNewFile(); > >>+ FileUtils.restrictFile(lockFile, true); > >> BufferedWriter lockFileWriter = new BufferedWriter(new FileWriter(lockFile, false)); > >> lockFileWriter.write(String.valueOf(localPort)); > >> lockFileWriter.newLine(); > >>@@ -135,6 +137,9 @@ > >> if (!baseDir.isDirectory()&& !baseDir.mkdirs()) { > >> throw new RuntimeException(R("RNoLockDir", baseDir)); > >> } > >>+ > >>+ FileUtils.restrictFile(baseDir, true); > >>+ > >> String lockFileName = getLockFileName(); > >> File applicationLockFile = new File(baseDir, lockFileName); > >> return applicationLockFile; > >>diff -r e82455c47f08 netx/net/sourceforge/jnlp/services/XExtendedService.java > >>--- a/netx/net/sourceforge/jnlp/services/XExtendedService.java Thu Nov 11 11:43:13 2010 -0500 > >>+++ b/netx/net/sourceforge/jnlp/services/XExtendedService.java Thu Nov 11 19:56:02 2010 -0500 > >>@@ -23,6 +23,7 @@ > >> import javax.jnlp.FileContents; > >> > >> import net.sourceforge.jnlp.security.SecurityWarning.AccessType; > >>+import net.sourceforge.jnlp.util.FileUtils; > >> > >> /** > >> * Implementation of ExtendedService > >>@@ -36,6 +37,7 @@ > >> > >> /* FIXME: this opens a file with read/write mode, not just read or write */ > >> if (ServiceUtil.checkAccess(AccessType.READ_FILE, new Object[]{ file.getAbsolutePath() })) { > >>+ FileUtils.restrictFile(file, true); > >> return (FileContents) ServiceUtil.createPrivilegedProxy(FileContents.class, > >> new XFileContents(file)); > >> } else { > >>diff -r e82455c47f08 netx/net/sourceforge/jnlp/services/XFileSaveService.java > >>--- a/netx/net/sourceforge/jnlp/services/XFileSaveService.java Thu Nov 11 11:43:13 2010 -0500 > >>+++ b/netx/net/sourceforge/jnlp/services/XFileSaveService.java Thu Nov 11 19:56:02 2010 -0500 > >>@@ -44,6 +44,7 @@ > >> import javax.jnlp.*; > >> > >> import net.sourceforge.jnlp.security.SecurityWarning.AccessType; > >>+import net.sourceforge.jnlp.util.FileUtils; > >> > >> import javax.swing.JFileChooser; > >> import javax.swing.JOptionPane; > >>@@ -123,6 +124,7 @@ > >> } else { > >> file.createNewFile(); > >> } > >>+ FileUtils.restrictFile(file, true); > >> > >> if (file.canWrite()) { > >> FileOutputStream out = new FileOutputStream(file); > >>diff -r e82455c47f08 netx/net/sourceforge/jnlp/services/XPersistenceService.java > >>--- a/netx/net/sourceforge/jnlp/services/XPersistenceService.java Thu Nov 11 11:43:13 2010 -0500 > >>+++ b/netx/net/sourceforge/jnlp/services/XPersistenceService.java Thu Nov 11 19:56:02 2010 -0500 > >>@@ -26,6 +26,7 @@ > >> import net.sourceforge.jnlp.*; > >> import net.sourceforge.jnlp.cache.*; > >> import net.sourceforge.jnlp.runtime.*; > >>+import net.sourceforge.jnlp.util.FileUtils; > >> > >> /** > >> * The BasicService JNLP service. > >>@@ -99,6 +100,8 @@ > >> if (!file.createNewFile()) > >> throw new IOException("File already exists."); > >> > >>+ FileUtils.restrictFile(file, true); > >>+ > >> return maxsize; > >> } > >> > >>diff -r e82455c47f08 netx/net/sourceforge/jnlp/util/FileUtils.java > >>--- a/netx/net/sourceforge/jnlp/util/FileUtils.java Thu Nov 11 11:43:13 2010 -0500 > >>+++ b/netx/net/sourceforge/jnlp/util/FileUtils.java Thu Nov 11 19:56:02 2010 -0500 > >>@@ -72,6 +72,30 @@ > >> } > >> > >> /** > >>+ * Sets the file permissions on a file such that it is not readable or > >>+ * writable by anyone other than the owner. If writeableByOnwer is false, > >>+ * even the owner can not write to it. The file must exist before this > >>+ * method is called. > >>+ */ > >>+ public static void restrictFile(File file, boolean writableByOwner) { > >>+ > >>+ file.setExecutable(false, false); > >>+ file.setReadable(false, false); > >>+ file.setWritable(false, false); > >>+ > >>+ file.setReadable(true, true); > >>+ > >>+ if (writableByOwner) { > >>+ file.setWritable(true, true); > >>+ } > >>+ > >>+ if (file.isDirectory()) { > >>+ file.setExecutable(true, true); > >>+ } > >>+ > >>+ } > >>+ > >>+ /** > >> * Returns a String that is suitable for using in GUI elements for > >> * displaying (long) paths to users. > >> * > >>diff -r e82455c47f08 netx/net/sourceforge/jnlp/util/XDesktopEntry.java > >>--- a/netx/net/sourceforge/jnlp/util/XDesktopEntry.java Thu Nov 11 11:43:13 2010 -0500 > >>+++ b/netx/net/sourceforge/jnlp/util/XDesktopEntry.java Thu Nov 11 19:56:02 2010 -0500 > >>@@ -142,6 +142,10 @@ > >> if (!shortcutFile.getParentFile().isDirectory()&& !shortcutFile.getParentFile().mkdirs()) { > >> throw new IOException(shortcutFile.getParentFile().toString()); > >> } > >>+ > >>+ shortcutFile.createNewFile(); > >>+ FileUtils.restrictFile(shortcutFile, true); > >>+ > >> /* > >> * Write out a Java String (UTF-16) as a UTF-8 file > >> */ > >>diff -r e82455c47f08 plugin/icedteanp/java/sun/applet/PluginMain.java > >>--- a/plugin/icedteanp/java/sun/applet/PluginMain.java Thu Nov 11 11:43:13 2010 -0500 > >>+++ b/plugin/icedteanp/java/sun/applet/PluginMain.java Thu Nov 11 19:56:02 2010 -0500 > >>@@ -77,6 +77,7 @@ > >> > >> import net.sourceforge.jnlp.runtime.DeploymentConfiguration; > >> import net.sourceforge.jnlp.runtime.JNLPRuntime; > >>+import net.sourceforge.jnlp.util.FileUtils; > >> > >> /** > >> * The main entry point into PluginAppletViewer. > >>@@ -130,8 +131,12 @@ > >> try { > >> File errFile = new File(logDir, PLUGIN_STDERR_FILE); > >> errFile.getParentFile().mkdirs(); > >>+ errFile.createNewFile(); > >>+ FileUtils.restrictFile(errFile, true); > >> File outFile = new File(logDir, PLUGIN_STDOUT_FILE); > >> outFile.getParentFile().mkdirs(); > >>+ outFile.createNewFile(); > >>+ FileUtils.restrictFile(outFile, true); > >> > >> System.setErr(new TeeOutputStream(new FileOutputStream(errFile), System.err)); > >> System.setOut(new TeeOutputStream(new FileOutputStream(outFile), System.out)); > > > > > From dbhole at redhat.com Mon Nov 22 12:44:59 2010 From: dbhole at redhat.com (Deepak Bhole) Date: Mon, 22 Nov 2010 15:44:59 -0500 Subject: [icedtea-web] plan for 1.0 release In-Reply-To: <20101117200222.GE24703@rivendell.middle-earth.co.uk> References: <20101117195426.GA2787@redhat.com> <20101117200222.GE24703@rivendell.middle-earth.co.uk> Message-ID: <20101122204458.GC363@redhat.com> * Dr Andrew John Hughes [2010-11-17 15:02]: > On 14:54 Wed 17 Nov , Deepak Bhole wrote: > > Hi, > > > > As the deployment properties work is wrapping up, I think it is a good > > time to branch and do a 1.0 release. To that end, I was thinking of the > > following: > > > > No more feature/re-factor patches will be accepted for 1.0 -- only bug > > fixes and minor niceties till branch time. > > > > Two build fixes still need to go in: > > - Early detection of the AppletViewer patch needed by IcedTea-Web > which prevents OpenJDK being used to build it. > - Generation of javadoc (previously the OpenJDK build was harnessed) > > > Once all pending patches are approved, we will create a release branch. > > The only additional thing outside of bugfixes that will be allowed in > > this branch will be an alpha version of a Control Panel like tool > > that Andrew Su is working on. > > > > Given what is currently pending, I think a branch on the 22nd (Monday) > > would work well. We will allow until the 29th for the Control Panel to > > be in. If it is not in by then, it will be pushed to 1.1. > > > > Are there any comments/objections to the above? > > > > Let's see how things look on Friday before making a final decision. The 22nd > doesn't give long (two-three working days). > Andrew Su is still on track for Control Panel completion by Friday (26th). I think we might as well hold off branching until then. New commits are still subject to approval/monitoring so it is not like unstable things would make it in. I will keep in touch with Andrew and send another email on Friday with an update on this. Cheers, Deepak > > Cheers, > > Deepak > > -- > Andrew :) > > Free Java Software Engineer > Red Hat, Inc. (http://www.redhat.com) > > Support Free Java! > Contribute to GNU Classpath and the OpenJDK > http://www.gnu.org/software/classpath > http://openjdk.java.net > PGP Key: 94EFD9D8 (http://subkeys.pgp.net) > Fingerprint = F8EF F1EA 401E 2E60 15FA 7927 142C 2591 94EF D9D8 From omajid at redhat.com Mon Nov 22 14:54:19 2010 From: omajid at redhat.com (Omair Majid) Date: Mon, 22 Nov 2010 17:54:19 -0500 Subject: patch for Asian fonts for fedora, changing paths to fonts files. Dependencies are necessary to be added to rpms. In-Reply-To: <4CD146A2.60806@redhat.com> References: <4CD03846.5060103@redhat.com> <4CD05AAD.4080106@oracle.com> <4CD146A2.60806@redhat.com> Message-ID: <4CEAF49B.1090400@redhat.com> On 11/03/2010 07:25 AM, Jiri Vanek wrote: > background is here: https://bugzilla.redhat.com/show_bug.cgi?id=643674 > and https://bugzilla.redhat.com/show_bug.cgi?id=582455 and > https://bugzilla.redhat.com/show_bug.cgi?id=622680 > > I was speaking with author of cjkuni fonts (and will ensure with autor > of beakmuk and szma and lohit - but expect same result)and he confiremd > that in f14 there was big refactoring of fonts (backported to f13 but no > more deep ). This newly re-factored paths should be "final" (:DD ) > > Reproducer was created for those fonts (arabic - default ok, chinese, > japanese, corean and indic) - as Pavel mentioned some time ago. > > So my suggestion is to update fontconfig.Fedora.properties to new > version ant to keep old file as fontconfig.Fedora.12.properties and 11 > (nothing more we suppotrt (?)..) > > This patch is for all except indic (which will come soon) > > I think we have to move this, because there are missconfigured paths > also in rhel 5 and 6 and..there are also complains (Oracle do not > support those fonts, so i can recommend nothing more then to swap to > openjdk...) > > Except configuration issue there is also issue with dependencies. > Whether to add them to spec file. I'm for add them into spec file. As > Deepak mentioned - 40mb of dependencies is not such a big amount in > today's days. > The Fedora localizations requirements [1] lists that the default fedora fonts for Japanese is VLGothic. For Korean the fonts are various Un fonts. Is there a reason that OpenJDK deviates from this and uses Sazanami and Baekmuk? Thanks, Omair [1] http://fedoraproject.org/wiki/Localization_fonts_requirements From jvanek at redhat.com Tue Nov 23 02:22:08 2010 From: jvanek at redhat.com (Jiri Vanek) Date: Tue, 23 Nov 2010 11:22:08 +0100 Subject: patch for Asian fonts for fedora, changing paths to fonts files. Dependencies are necessary to be added to rpms. In-Reply-To: <4CEAF49B.1090400@redhat.com> References: <4CD03846.5060103@redhat.com> <4CD05AAD.4080106@oracle.com> <4CD146A2.60806@redhat.com> <4CEAF49B.1090400@redhat.com> Message-ID: <4CEB95D0.90901@redhat.com> On 11/22/2010 11:54 PM, Omair Majid wrote: > On 11/03/2010 07:25 AM, Jiri Vanek wrote: >> background is here: https://bugzilla.redhat.com/show_bug.cgi?id=643674 >> and https://bugzilla.redhat.com/show_bug.cgi?id=582455 and >> https://bugzilla.redhat.com/show_bug.cgi?id=622680 >> >> I was speaking with author of cjkuni fonts (and will ensure with autor >> of beakmuk and szma and lohit - but expect same result)and he confiremd >> that in f14 there was big refactoring of fonts (backported to f13 but no >> more deep ). This newly re-factored paths should be "final" (:DD ) >> >> Reproducer was created for those fonts (arabic - default ok, chinese, >> japanese, corean and indic) - as Pavel mentioned some time ago. >> >> So my suggestion is to update fontconfig.Fedora.properties to new >> version ant to keep old file as fontconfig.Fedora.12.properties and 11 >> (nothing more we suppotrt (?)..) >> >> This patch is for all except indic (which will come soon) >> >> I think we have to move this, because there are missconfigured paths >> also in rhel 5 and 6 and..there are also complains (Oracle do not >> support those fonts, so i can recommend nothing more then to swap to >> openjdk...) >> >> Except configuration issue there is also issue with dependencies. >> Whether to add them to spec file. I'm for add them into spec file. As >> Deepak mentioned - 40mb of dependencies is not such a big amount in >> today's days. >> So this is valid since f14. I was not changing font configs so deep... I repaired already predefined ones. Rhel 6 is using vlgothics, and and fix for those configs is in high priority. I will do it asap, and when It will be fixed for rhel 6, I will "backport it" to fedora. > > The Fedora localizations requirements [1] lists that the default fedora > fonts for Japanese is VLGothic. For Korean the fonts are various Un > fonts. Is there a reason that OpenJDK deviates from this and uses > Sazanami and Baekmuk? > ..hystorical... > Thanks, > Omair > > [1] http://fedoraproject.org/wiki/Localization_fonts_requirements Regards J. From ptisnovs at icedtea.classpath.org Tue Nov 23 02:36:38 2010 From: ptisnovs at icedtea.classpath.org (ptisnovs at icedtea.classpath.org) Date: Tue, 23 Nov 2010 10:36:38 +0000 Subject: /hg/icedtea6: Corrected JTreg harness - this tool now accepts "p... Message-ID: changeset 4aef376b7123 in /hg/icedtea6 details: http://icedtea.classpath.org/hg/icedtea6?cmd=changeset;node=4aef376b7123 author: ptisnovs date: Tue Nov 23 11:39:48 2010 +0100 Corrected JTreg harness - this tool now accepts "process" flag for "compile" tag and also correctly sets properties during the "compile" phase. diffstat: 7 files changed, 345 insertions(+), 22 deletions(-) ChangeLog | 13 test/jtreg/README | 6 test/jtreg/com/sun/javatest/regtest/Action.java | 20 + test/jtreg/com/sun/javatest/regtest/CompileAction.java | 147 +++++++- test/jtreg/com/sun/javatest/regtest/Path.java | 164 ++++++++++ test/jtreg/com/sun/javatest/regtest/RegressionScript.java | 15 test/jtreg/com/sun/javatest/regtest/RegressionSecurityManager.java | 2 diffs (truncated from 562 to 500 lines): diff -r 789ec2d452bd -r 4aef376b7123 ChangeLog --- a/ChangeLog Mon Nov 22 04:51:01 2010 +0100 +++ b/ChangeLog Tue Nov 23 11:39:48 2010 +0100 @@ -1,3 +1,16 @@ 2010-11-22 Matthias Klose + + * test/jtreg/README: + Updated. + * test/jtreg/com/sun/javatest/regtest/Path.java: + * test/jtreg/com/sun/javatest/regtest/Action.java: + * test/jtreg/com/sun/javatest/regtest/CompileAction.java: + * test/jtreg/com/sun/javatest/regtest/RegressionScript.java: + * test/jtreg/com/sun/javatest/regtest/RegressionSecurityManager.java: + Corrected JTreg harness - this tool now accepts "process" flag for + "compile" tag and also correctly sets properties during "compile" + phase. + 2010-11-22 Matthias Klose * Makefile.am (stamps/add-zero.stamp): Add shark alias when building diff -r 789ec2d452bd -r 4aef376b7123 test/jtreg/README --- a/test/jtreg/README Mon Nov 22 04:51:01 2010 +0100 +++ b/test/jtreg/README Tue Nov 23 11:39:48 2010 +0100 @@ -20,7 +20,11 @@ This version is based on: This version is based on: - jtharness-oss-4_1_3a-dev -- jtreg-4_0-src-b02-15_oct_2008 +- jtreg-4_0-src-b02-15_oct_2008 with two changes backported from + jtreg-4.1-src-b02_21_may_2010.zip. The first change adds support for + option named "process" which can be used along with tag "compile". The + second change corrects the setting of system properties when the + "compile" phase is started. IcedJTReg is distrubuted under the GPLv2.0, like jtreg and jtharness. See the documents in the legal directory included in this release. diff -r 789ec2d452bd -r 4aef376b7123 test/jtreg/com/sun/javatest/regtest/Action.java --- a/test/jtreg/com/sun/javatest/regtest/Action.java Mon Nov 22 04:51:01 2010 +0100 +++ b/test/jtreg/com/sun/javatest/regtest/Action.java Tue Nov 23 11:39:48 2010 +0100 @@ -300,6 +300,8 @@ public abstract class Action section.setStatus(status); } // endAction() + //----------workarounds------------------------------------------------------- + /** * This method pushes the full, constructed command for the action to the * log. The constructed command contains the the action and its arguments @@ -425,6 +427,13 @@ public abstract class Action EXEC_ERROR_CLEANUP = "Error while cleaning up threads after test", CHECK_PASS = "Test description appears acceptable", + // used in: compile, main + SAMEVM_CANT_RESET_SECMGR= "Cannot reset security manager", + SAMEVM_CANT_RESET_PROPS = "Cannot reset system properties", + + // used in:compile, main + AGENTVM_CANT_GET_VM = "Cannot get VM for test", + UNEXPECT_SYS_EXIT = "Unexpected exit from test", CANT_FIND_SRC = "Can't file source file: ", @@ -454,6 +463,8 @@ public abstract class Action BUILD_UP_TO_DATE = "All files up to date", BUILD_SUCC = "Build successful", BUILD_LIB_LIST = " in directory-list: ", + BUILD_FUTURE_SOURCE = "WARNING: file %s has a modification time in the future: %s", + BUILD_FUTURE_SOURCE_2 = "Unexpected results may occur", // clean CLEAN_SUCC = "Clean successful", @@ -478,6 +489,8 @@ public abstract class Action COMPILE_PASS = "Compilation successful", COMPILE_FAIL_EXPECT = "Compilation failed as expected", COMPILE_FAIL = "Compilation failed", + COMPILE_CANT_RESET_SECMGR= "Cannot reset security manager", + COMPILE_CANT_RESET_PROPS = "Cannot reset system properties", // ignore IGNORE_UNEXPECT_OPTS = "Unexpected option(s) for `ignore'", @@ -485,6 +498,11 @@ public abstract class Action IGNORE_TEST_IGNORED_C = "Test ignored: ", IGNORE_TEST_SUPPRESSED = "@ignore suppressed by command line option", IGNORE_TEST_SUPPRESSED_C = "@ignore suppressed by command line option: ", + + // junit + JUNIT_NO_DRIVER = "No JUnit 4 driver (install junit.jar next to jtreg.jar)", + JUNIT_NO_CLASSNAME = "No class provided for `junit'", + JUNIT_BAD_MAIN_ARG = "Bad argument provided for class in `junit'", // main MAIN_NO_CLASSNAME = "No class provided for `main'", @@ -500,6 +518,8 @@ public abstract class Action MAIN_UNEXPECT_VMOPT = ": vm option(s) found, need to specify /othervm", MAIN_POLICY_WRITE_PROB= "Problems writing new policy file: ", MAIN_POLICY_SM_PROB = "Unable to create new policy file: ", + MAIN_CANT_RESET_SECMGR= "Cannot reset security manager", + MAIN_CANT_RESET_PROPS = "Cannot reset system properties", // runOtherJVM MAIN_CANT_WRITE_ARGS = "Can't write `main' argument file", diff -r 789ec2d452bd -r 4aef376b7123 test/jtreg/com/sun/javatest/regtest/CompileAction.java --- a/test/jtreg/com/sun/javatest/regtest/CompileAction.java Mon Nov 22 04:51:01 2010 +0100 +++ b/test/jtreg/com/sun/javatest/regtest/CompileAction.java Tue Nov 23 11:39:48 2010 +0100 @@ -37,6 +37,12 @@ import java.io.PrintWriter; import java.io.PrintWriter; import java.util.ArrayList; import java.util.List; +import java.util.Map; +import java.util.Properties; +import java.util.Enumeration; +import java.util.Hashtable; +import java.security.AccessController; +import java.security.PrivilegedAction; import com.sun.javatest.Status; import com.sun.javatest.TestResult; @@ -111,6 +117,8 @@ public class CompileAction extends Actio timeout = parseTimeout(optValue); } else if (optName.equals("ref")) { ref = parseRef(optValue); + } else if (optName.equals("process")) { + process = true; } else { throw new ParseException(COMPILE_BAD_OPT + optName); } @@ -133,7 +141,7 @@ public class CompileAction extends Actio if (!sourceFile.isAbsolute()) // User must have used @compile, so file must be // in the same directory as the defining file. - args[i] = script.absTestSrcDir() + FILESEP + currArg; + args[i] = new File(script.absTestSrcDir(), currArg).getPath(); // if (!sourceFile.exists()) // throw new ParseException(CANT_FIND_SRC); @@ -152,10 +160,11 @@ public class CompileAction extends Actio // assume the next element provides the classpath, add // test.classes and test.src and lib-list to it if (script.hasEnv()) { - args[i+1] = addPath(args[i+1], - script.absTestClsDir() + PATHSEP + - script.absTestSrcDir() + PATHSEP + - script.absClsLibListStr()); + Path p = new Path(args[i+1]) + .append(script.absTestClsDir()) + .append(script.absTestSrcDir()) + .append(script.absClsLibListStr()); + args[i+1] = p.toString(); } args[i+1] = singleQuoteString(args[i+1]); } @@ -169,22 +178,28 @@ public class CompileAction extends Actio sourcepathp = true; // assume the next element provides the sourcepath, add test.src // and lib-list to it - args[i+1] = addPath(args[i+1], - script.absTestSrcDir() + PATHSEP + - script.absSrcLibListStr()); + Path p = new Path(args[i+1]) + .append(script.absTestSrcDir()) + .append(script.absSrcLibListStr()); + args[i+1] = p.toString(); args[i+1] = singleQuoteString(args[i+1]); } + } + + // If we didn't set the destination directory, then we must not have + // found something ending with ".java" to compile. + if (script.hasEnv() && destDir == null) { + if (process) { + destDir = script.absTestClsDir(); + if (!destDir.exists()) + destDir.mkdirs(); + } else + throw new ParseException(COMPILE_NO_DOT_JAVA); } } catch (RegressionScript.TestClassException e) { throw new ParseException(e.getMessage()); } - - // If we didn't set the destination directory, then we must not have - // found something ending with ".java" to compile. - if (script.hasEnv() && destDir == null) { - throw new ParseException(COMPILE_NO_DOT_JAVA); - } - + this.args = args; } // init() @@ -267,8 +282,9 @@ public class CompileAction extends Actio List javacOpts = new ArrayList(); // Why JavaTest? + Path cp = new Path(script.getJavaTestClassPath(), script.testClassPath()); if (useCLASSPATHEnv) { - javacOpts.add("CLASSPATH=" + script.getJavaTestClassPath() + PATHSEP + script.testClassPath()); + javacOpts.add("CLASSPATH=" + cp); } javacOpts.add(script.getJavacProg()); @@ -283,7 +299,7 @@ public class CompileAction extends Actio // JavaTest added, to match CLASSPATH, but not sure why JavaTest required at all if (!classpathp && useClassPathOpt) { javacOpts.add("-classpath"); - javacOpts.add(script.getJavaTestClassPath() + PATHSEP + script.testClassPath()); + javacOpts.add(cp.toString()); } if (!sourcepathp && useSourcePathOpt) { @@ -291,6 +307,11 @@ public class CompileAction extends Actio javacOpts.add(script.testSourcePath()); } + // Set test.src and test.classes for the benefit of annotation processors + for (Map.Entry e: script.getTestProperties().entrySet()) { + javacOpts.add("-J-D" + e.getKey() + "=" + e.getValue()); + } + String[] envVars = script.getEnvVars(); String[] jcOpts = javacOpts.toArray(new String[javacOpts.size()]); String[] cmdArgs = StringArray.append(envVars, jcOpts); @@ -365,7 +386,30 @@ public class CompileAction extends Actio return status; } // runOtherJVM() + final SecurityManager secMgr = System.getSecurityManager(); + + protected static Hashtable copyProperties(Properties p) { + Hashtable h = new Hashtable(); + for (Enumeration e = p.propertyNames(); e.hasMoreElements(); ) { + Object key = e.nextElement(); + h.put(key, p.get(key)); + } + return h; + } + + protected static Properties newProperties(Hashtable h) { + Properties p = new Properties(); + p.putAll(h); + return p; + } + private Status runSameJVM() throws TestRunException { + // TAG-SPEC: "The source and class directories of a test are made + // available to main and applet actions via the system properties + // "test.src" and "test.classes", respectively" + Map props = script.getTestProperties(); + Hashtable sysProps = null; + Status status; // CONSTRUCT THE COMMAND LINE @@ -373,8 +417,10 @@ public class CompileAction extends Actio javacOpts.addAll(script.getTestCompilerOptions()); - javacOpts.add("-d"); - javacOpts.add(destDir.toString()); + if (destDir != null) { + javacOpts.add("-d"); + javacOpts.add(destDir.toString()); + } if (!classpathp) { javacOpts.add("-classpath"); @@ -391,7 +437,29 @@ public class CompileAction extends Actio if (showCmd) JTCmd("compile", cmdArgs, section); - + + if (secMgr instanceof RegressionSecurityManager) { + RegressionSecurityManager rsm = (RegressionSecurityManager) secMgr; + rsm.setAllowPropertiesAccess(true); + rsm.resetPropertiesAccessed(); + sysProps = copyProperties(System.getProperties()); + + Properties p = System.getProperties(); + for (Map.Entry e: props.entrySet()) { + String name = e.getKey(); + String value = e.getValue(); + if (name.equals("test.class.path.prefix")) { + System.err.println("*** java.class.path" + System.getProperty("java.class.path")); + Path cp = new Path(value, System.getProperty("java.class.path")); + p.put("java.class.path", cp.toString()); + } else { + System.err.println("prop: " + e.getKey() + "\t" + e.getValue()); + p.put(e.getKey(), e.getValue()); + } + } + System.setProperties(p); + } + // RUN THE COMPILER // for direct use with JavaCompileCommand @@ -503,7 +571,43 @@ public class CompileAction extends Actio File refFile = new File(script.absTestSrcDir(), ref); throw new TestRunException(COMPILE_CANT_FIND_REF + refFile); } - + finally + { + if (System.getSecurityManager() != secMgr) { + AccessController.doPrivileged(new PrivilegedAction() { + public Object run() { + System.setSecurityManager(secMgr); + return null; + } + }); + //System.setSecurityManager(secMgr); + } + + // we just reset important props that were written in the test setup + boolean resetAllSysProps; + SecurityManager sm = System.getSecurityManager(); + if (sm instanceof RegressionSecurityManager) { + resetAllSysProps = ((RegressionSecurityManager) sm).isPropertiesAccessed(); + } else { + resetAllSysProps = true; + } + System.err.println("resetAllSysProps: " + resetAllSysProps); + try { + if (sysProps != null) + { + if (resetAllSysProps) { + System.setProperties(newProperties(sysProps)); + // System.err.println("reset properties"); + } else { + System.setProperty("java.class.path", (String) sysProps.get("java.class.path")); + // System.err.println("no need to reset properties"); + } + } + } catch (SecurityException e) { + System.err.println(SAMEVM_CANT_RESET_PROPS + ": " + e); + } + } + return status; } // runSameJVM() @@ -596,6 +700,7 @@ public class CompileAction extends Actio private int timeout = -1; private boolean classpathp = false; private boolean sourcepathp = false; + private boolean process = false; private TestResult.Section section; } diff -r 789ec2d452bd -r 4aef376b7123 test/jtreg/com/sun/javatest/regtest/Path.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test/jtreg/com/sun/javatest/regtest/Path.java Tue Nov 23 11:39:48 2010 +0100 @@ -0,0 +1,164 @@ +/* + * Copyright 2010 Sun Microsystems, Inc. All Rights Reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Sun designates this + * particular file as subject to the "Classpath" exception as provided + * by Sun in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, + * CA 95054 USA or visit www.sun.com if you need additional information or + * have any questions. + */ + +package com.sun.javatest.regtest; + +import java.io.File; +import java.util.ArrayList; +import java.util.List; + +/** + * A path, as in a sequence of file system locations, such as directories, + * zip files and jar files. + */ +public class Path { + /** + * Create an empty path. + */ + Path() { + } + + /** + * Create a path containing the concatenation of a series of files. + * Equivalent to {@code new Path().append(files)}. + * @param files + */ + Path(File... files) { + append(files); + } + + /** + * Create a path containing the concatenation of a series of paths. + * Equivalent to {@code new Path().append(paths)}. + * @param paths + */ + Path(Path... paths) { + append(paths); + } + + /** + * Create a path containing the concatenation of a series of paths. + * Equivalent to {@code new Path().append(paths)}. + * @param paths + */ + Path(String... paths) { + append(paths); + } + + /** + * Append a series of files to the path. Files that do not exist + * are ignored. + * @param files files to be added to the path + * @return the path itself + */ + Path append(File... files) { + for (File f: files) { + if (f.exists()) { + if (value.length() > 0) + value += PATHSEP; + value += f.getPath(); + } + } + return this; + } + + /** + * Append a series of paths to the path. + * @param paths paths to be added to the path + * @return the path itself + */ + Path append(Path... paths) { + for (Path p: paths) { + if (p.value.length() > 0) { + if (value.length() > 0) + value += PATHSEP; + value += p.value; + } + } + return this; + } + + /** + * Append a series of paths to the path. + * @param paths paths to be added to the path + * @return the path itself + */ + Path append(String... paths) { + for (String p: paths) { + if (p.length() > 0) { + if (value.length() > 0) + value += PATHSEP; + value += p; + } + } + return this; + } + + /** + * Return the series of files that are currently on the path. + * @return the files on the path + */ + File[] split() { + List v = new ArrayList(); + for (String s: StringArray.splitSeparator(PATHSEP, value)) { + if (s.length() > 0) { + v.add(new File(s)); + } + } + return v.toArray(new File[v.size()]); + } + + /** + * Check if this path contains a subpath. + * @param path the subpath to be checked + * @return true if this path contains the subpath + */ + boolean contains(Path path) { + return value.equals(path.value) + || value.startsWith(path.value + PATHSEP) + || value.endsWith(PATHSEP + path.value) + || value.contains(PATHSEP + path.value + PATHSEP); + } + + /** + * Check if this path is empty. From gnu_andrew at member.fsf.org Tue Nov 23 05:15:41 2010 From: gnu_andrew at member.fsf.org (Dr Andrew John Hughes) Date: Tue, 23 Nov 2010 13:15:41 +0000 Subject: Review Request: Zero and Shark fixes In-Reply-To: <20101122131216.GA3819@redhat.com> References: <20101122131216.GA3819@redhat.com> Message-ID: On 22 November 2010 13:12, Gary Benson wrote: > Hi all, > > This webrev contains a couple of fixes for Zero and Shark: > > ?http://cr.openjdk.java.net/~gbenson/zero-shark-fixes-03/ > > Firstly, 6970683 introduced a new method, os::print_register_info, > which this webrev provides for Zero. ?Secondly, 6953144 changed > the way that compilers are initialized in the compile broker, and > this webrev updates the Shark initialization for this change. > > I don't have a bug id for this. > > Cheers, > Gary > > -- > http://gbenson.net/ > Gary, Are you adding this one to IcedTea6? Thanks, -- Andrew :-) Free Java Software Engineer Red Hat, Inc. (http://www.redhat.com) Support Free Java! Contribute to GNU Classpath and the OpenJDK http://www.gnu.org/software/classpath http://openjdk.java.net PGP Key: 94EFD9D8 (http://subkeys.pgp.net) Fingerprint: F8EF F1EA 401E 2E60 15FA? 7927 142C 2591 94EF D9D8 From gbenson at redhat.com Tue Nov 23 06:21:49 2010 From: gbenson at redhat.com (Gary Benson) Date: Tue, 23 Nov 2010 14:21:49 +0000 Subject: Review Request: Zero and Shark fixes In-Reply-To: References: <20101122131216.GA3819@redhat.com> Message-ID: <20101123142149.GD4574@redhat.com> Dr Andrew John Hughes wrote: > On 22 November 2010 13:12, Gary Benson wrote: > > Firstly, 6970683 introduced a new method, os::print_register_info, > > which this webrev provides for Zero. ?Secondly, 6953144 changed > > the way that compilers are initialized in the compile broker, and > > this webrev updates the Shark initialization for this change. > > Are you adding this one to IcedTea6? No, because IcedTea6 has not yet picked up 6970683 or 6953144. Cheers, Gary -- http://gbenson.net/ From ahughes at redhat.com Tue Nov 23 06:24:55 2010 From: ahughes at redhat.com (Dr Andrew John Hughes) Date: Tue, 23 Nov 2010 14:24:55 +0000 Subject: Review Request: Zero and Shark fixes In-Reply-To: <20101123142149.GD4574@redhat.com> References: <20101122131216.GA3819@redhat.com> <20101123142149.GD4574@redhat.com> Message-ID: <20101123142455.GO19794@rivendell.middle-earth.co.uk> On 14:21 Tue 23 Nov , Gary Benson wrote: > Dr Andrew John Hughes wrote: > > On 22 November 2010 13:12, Gary Benson wrote: > > > Firstly, 6970683 introduced a new method, os::print_register_info, > > > which this webrev provides for Zero. ?Secondly, 6953144 changed > > > the way that compilers are initialized in the compile broker, and > > > this webrev updates the Shark initialization for this change. > > > > Are you adding this one to IcedTea6? > > No, because IcedTea6 has not yet picked up 6970683 or 6953144. > > Cheers, > Gary > > -- > http://gbenson.net/ Ah, so this is hs20 breakage... thanks. -- Andrew :) Free Java Software Engineer Red Hat, Inc. (http://www.redhat.com) Support Free Java! Contribute to GNU Classpath and the OpenJDK http://www.gnu.org/software/classpath http://openjdk.java.net PGP Key: 94EFD9D8 (http://subkeys.pgp.net) Fingerprint = F8EF F1EA 401E 2E60 15FA 7927 142C 2591 94EF D9D8 From omajid at icedtea.classpath.org Tue Nov 23 07:07:27 2010 From: omajid at icedtea.classpath.org (omajid at icedtea.classpath.org) Date: Tue, 23 Nov 2010 15:07:27 +0000 Subject: /hg/icedtea-web: integrate basic proxy configuration support Message-ID: changeset dd77da50a226 in /hg/icedtea-web details: http://icedtea.classpath.org/hg/icedtea-web?cmd=changeset;node=dd77da50a226 author: Omair Majid date: Tue Nov 23 10:05:06 2010 -0500 integrate basic proxy configuration support 2010-11-23 Omair Majid * netx/net/sourceforge/jnlp/runtime/DeploymentConfiguration.java: Add KEY_PROXY_TYPE, KEY_PROXY_SAME, KEY_PROXY_AUTO_CONFIG_URL, KEY_PROXY_BYPASS_LIST, KEY_PROXY_BYPASS_LOCAL, KEY_PROXY_HTTP_HOST, KEY_PROXY_HTTP_PORT, KEY_PROXY_HTTPS_HOST, KEY_PROXY_HTTPS_PORT, KEY_PROXY_FTP_HOST, KEY_PROXY_FTP_PORT, KEY_PROXY_SOCKS4_HOST, KEY_PROXY_SOCKS4_PORT, and KEY_PROXY_OVERRIDE_HOSTS. (loadDefaultProperties): Use the new constants. * netx/net/sourceforge/jnlp/runtime/JNLPProxySelector.java: New class. (JNLPProxySelector): New method. (parseConfiguration): New method. Initializes this object by querying the configuration. (getHost): New method. (getPort): New method. (connectFailed): New method. (select): New method. Returns a list of appropriate proxies to use for a given uri. (inBypassList): New method. Return true if the host in the URI should be bypassed for proxy purposes. (isLocalHost): New method. (getFromConfiguration): New method. Finds a proxy based on configuration. (getFromPAC): New method. (getFromBrowser): New method. * netx/net/sourceforge/jnlp/runtime/JNLPRuntime.java (initialize): Install proxy selector and authenticator. * plugin/icedteanp/java/sun/applet/PluginMain.java (init): Do not install authenticator. (CustomAuthenticator): Moved to... * netx/net/sourceforge/jnlp/security/JNLPAuthenticator.java: Here. * plugin/icedteanp/java/sun/applet/PasswordAuthenticationDialog.java Moved to... * netx/net/sourceforge/jnlp/security /PasswordAuthenticationDialog.java: Here. * plugin/icedteanp/java/sun/applet/PluginProxySelector.java: Extend JNLPProxySelector. (select): Renamed to... (getFromBrowser): New method. diffstat: 9 files changed, 755 insertions(+), 296 deletions(-) ChangeLog | 41 + netx/net/sourceforge/jnlp/runtime/DeploymentConfiguration.java | 53 - netx/net/sourceforge/jnlp/runtime/JNLPProxySelector.java | 360 ++++++++++ netx/net/sourceforge/jnlp/runtime/JNLPRuntime.java | 7 netx/net/sourceforge/jnlp/security/JNLPAuthenticator.java | 61 + netx/net/sourceforge/jnlp/security/PasswordAuthenticationDialog.java | 247 ++++++ plugin/icedteanp/java/sun/applet/PasswordAuthenticationDialog.java | 241 ------ plugin/icedteanp/java/sun/applet/PluginMain.java | 24 plugin/icedteanp/java/sun/applet/PluginProxySelector.java | 17 diffs (truncated from 1178 to 500 lines): diff -r 5a9f55d67b50 -r dd77da50a226 ChangeLog --- a/ChangeLog Fri Nov 19 10:35:27 2010 -0500 +++ b/ChangeLog Tue Nov 23 10:05:06 2010 -0500 @@ -1,3 +1,44 @@ 2010-11-19 Omair Majid + + * netx/net/sourceforge/jnlp/runtime/DeploymentConfiguration.java: + Add KEY_PROXY_TYPE, KEY_PROXY_SAME, KEY_PROXY_AUTO_CONFIG_URL, + KEY_PROXY_BYPASS_LIST, KEY_PROXY_BYPASS_LOCAL, KEY_PROXY_HTTP_HOST, + KEY_PROXY_HTTP_PORT, KEY_PROXY_HTTPS_HOST, KEY_PROXY_HTTPS_PORT, + KEY_PROXY_FTP_HOST, KEY_PROXY_FTP_PORT, KEY_PROXY_SOCKS4_HOST, + KEY_PROXY_SOCKS4_PORT, and KEY_PROXY_OVERRIDE_HOSTS. + (loadDefaultProperties): Use the new constants. + * netx/net/sourceforge/jnlp/runtime/JNLPProxySelector.java: New + class. + (JNLPProxySelector): New method. + (parseConfiguration): New method. Initializes this object by + querying the configuration. + (getHost): New method. + (getPort): New method. + (connectFailed): New method. + (select): New method. Returns a list of appropriate proxies to use + for a given uri. + (inBypassList): New method. Return true if the host in the URI + should be bypassed for proxy purposes. + (isLocalHost): New method. + (getFromConfiguration): New method. Finds a proxy based on + configuration. + (getFromPAC): New method. + (getFromBrowser): New method. + * netx/net/sourceforge/jnlp/runtime/JNLPRuntime.java + (initialize): Install proxy selector and authenticator. + * plugin/icedteanp/java/sun/applet/PluginMain.java + (init): Do not install authenticator. + (CustomAuthenticator): Moved to... + * netx/net/sourceforge/jnlp/security/JNLPAuthenticator.java: Here. + * plugin/icedteanp/java/sun/applet/PasswordAuthenticationDialog.java + Moved to... + * netx/net/sourceforge/jnlp/security + /PasswordAuthenticationDialog.java: Here. + * plugin/icedteanp/java/sun/applet/PluginProxySelector.java: Extend + JNLPProxySelector. + (select): Renamed to... + (getFromBrowser): New method. + 2010-11-19 Omair Majid * Makefile.am (EXTRA_DIST): Replace javaws.desktop with diff -r 5a9f55d67b50 -r dd77da50a226 netx/net/sourceforge/jnlp/runtime/DeploymentConfiguration.java --- a/netx/net/sourceforge/jnlp/runtime/DeploymentConfiguration.java Fri Nov 19 10:35:27 2010 -0500 +++ b/netx/net/sourceforge/jnlp/runtime/DeploymentConfiguration.java Tue Nov 23 10:05:06 2010 -0500 @@ -120,13 +120,6 @@ public final class DeploymentConfigurati public static final String CONSOLE_SHOW = "SHOW"; public static final String CONSOLE_DISABLE = "DISABLE"; - /* FIXME these should be moved into the proxy class */ - public static final int PROXY_TYPE_UNKNOWN = -1; - public static final int PROXY_TYPE_NONE = 0; - public static final int PROXY_TYPE_MANUAL = 1; - public static final int PROXY_TYPE_AUTO = 2; - public static final int PROXY_TYPE_BROWSER = 3; - public static final String KEY_USER_CACHE_DIR = "deployment.user.cachedir"; public static final String KEY_USER_PERSISTENCE_CACHE_DIR = "deployment.user.pcachedir"; public static final String KEY_SYSTEM_CACHE_DIR = "deployment.system.cachedir"; @@ -170,6 +163,24 @@ public final class DeploymentConfigurati /** Boolean. Only install the custom authenticator if true */ public static final String KEY_SECURITY_INSTALL_AUTHENTICATOR = "deployment.security.authenticator"; + + /* + * Networking + */ + public static final String KEY_PROXY_TYPE = "deployment.proxy.type"; + public static final String KEY_PROXY_SAME = "deployment.proxy.same"; + public static final String KEY_PROXY_AUTO_CONFIG_URL = "deployment.proxy.auto.config.url"; + public static final String KEY_PROXY_BYPASS_LIST = "deployment.proxy.bypass.list"; + public static final String KEY_PROXY_BYPASS_LOCAL = "deployment.proxy.bypass.local"; + public static final String KEY_PROXY_HTTP_HOST = "deployment.proxy.http.host"; + public static final String KEY_PROXY_HTTP_PORT = "deployment.proxy.http.port"; + public static final String KEY_PROXY_HTTPS_HOST = "deployment.proxy.https.host"; + public static final String KEY_PROXY_HTTPS_PORT = "deployment.proxy.https.port"; + public static final String KEY_PROXY_FTP_HOST = "deployment.proxy.ftp.host"; + public static final String KEY_PROXY_FTP_PORT = "deployment.proxy.ftp.port"; + public static final String KEY_PROXY_SOCKS4_HOST = "deployment.proxy.socks.host"; + public static final String KEY_PROXY_SOCKS4_PORT = "deployment.proxy.socks.port"; + public static final String KEY_PROXY_OVERRIDE_HOSTS = "deployment.proxy.override.hosts"; /* * Tracing and Logging @@ -380,20 +391,20 @@ public final class DeploymentConfigurati { KEY_SECURITY_PROMPT_USER_FOR_JNLP, String.valueOf(true) }, { KEY_SECURITY_INSTALL_AUTHENTICATOR, String.valueOf(true) }, /* networking */ - { "deployment.proxy.type", String.valueOf(PROXY_TYPE_BROWSER) }, - { "deployment.proxy.same", String.valueOf(false) }, - { "deployment.proxy.auto.config.url", null }, - { "deployment.proxy.bypass.list", null }, - { "deployment.proxy.bypass.local", null }, - { "deployment.proxy.http.host", null }, - { "deployment.proxy.http.port", null }, - { "deployment.proxy.https.host", null }, - { "deployment.proxy.https.port", null }, - { "deployment.proxy.ftp.host", null }, - { "deployment.proxy.ftp.port", null }, - { "deployment.proxy.socks.host", null }, - { "deployment.proxy.socks.port", null }, - { "deployment.proxy.override.hosts", null }, + { KEY_PROXY_TYPE, String.valueOf(JNLPProxySelector.PROXY_TYPE_BROWSER) }, + { KEY_PROXY_SAME, String.valueOf(false) }, + { KEY_PROXY_AUTO_CONFIG_URL, null }, + { KEY_PROXY_BYPASS_LIST, null }, + { KEY_PROXY_BYPASS_LOCAL, null }, + { KEY_PROXY_HTTP_HOST, null }, + { KEY_PROXY_HTTP_PORT, null }, + { KEY_PROXY_HTTPS_HOST, null }, + { KEY_PROXY_HTTPS_PORT, null }, + { KEY_PROXY_FTP_HOST, null }, + { KEY_PROXY_FTP_PORT, null }, + { KEY_PROXY_SOCKS4_HOST, null }, + { KEY_PROXY_SOCKS4_PORT, null }, + { KEY_PROXY_OVERRIDE_HOSTS, null }, /* cache and optional package repository */ { "deployment.cache.max.size", String.valueOf("-1") }, { "deployment.cache.jarcompression", String.valueOf(0) }, diff -r 5a9f55d67b50 -r dd77da50a226 netx/net/sourceforge/jnlp/runtime/JNLPProxySelector.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/netx/net/sourceforge/jnlp/runtime/JNLPProxySelector.java Tue Nov 23 10:05:06 2010 -0500 @@ -0,0 +1,360 @@ +// Copyright (C) 2010 Red Hat, Inc. +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License, or (at your option) any later version. +// +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +package net.sourceforge.jnlp.runtime; + +import java.io.IOException; +import java.net.InetAddress; +import java.net.InetSocketAddress; +import java.net.MalformedURLException; +import java.net.Proxy; +import java.net.ProxySelector; +import java.net.SocketAddress; +import java.net.URI; +import java.net.URL; +import java.net.UnknownHostException; +import java.net.Proxy.Type; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; +import java.util.StringTokenizer; + +/** + * A ProxySelector specific to JNLPs. This proxy uses the deployment + * configuration to determine what to do. + * + * @see java.net.ProxySelector + */ +public class JNLPProxySelector extends ProxySelector { + + public static final int PROXY_TYPE_UNKNOWN = -1; + public static final int PROXY_TYPE_NONE = 0; + public static final int PROXY_TYPE_MANUAL = 1; + public static final int PROXY_TYPE_AUTO = 2; + public static final int PROXY_TYPE_BROWSER = 3; + + /** The default port to use as a fallback. Currently squid's default port */ + public static final int FALLBACK_PROXY_PORT = 3128; + + /** The proxy type. See PROXY_TYPE_* constants */ + private int proxyType = PROXY_TYPE_UNKNOWN; + + /** the URL to the PAC file */ + private URL autoConfigUrl = null; + + /** a list of URLs that should be bypassed for proxy purposes */ + private List bypassList = null; + + /** whether localhost should be bypassed for proxy purposes */ + private boolean bypassLocal = false; + + /** + * whether the http proxy should be used for https and ftp protocols as well + */ + private boolean sameProxy = false; + + private String proxyHttpHost; + private int proxyHttpPort; + private String proxyHttpsHost; + private int proxyHttpsPort; + private String proxyFtpHost; + private int proxyFtpPort; + private String proxySocks4Host; + private int proxySocks4Port; + + // FIXME what is this? where should it be used? + private String overrideHosts = null; + + /** + * Creates a new JNLPProxySelector. + */ + public JNLPProxySelector() { + parseConfiguration(); + } + + /** + * Initialize this ProxySelector by reading the configuration + */ + private void parseConfiguration() { + DeploymentConfiguration config = JNLPRuntime.getConfiguration(); + + proxyType = Integer.valueOf(config.getProperty(DeploymentConfiguration.KEY_PROXY_TYPE)); + + String autoConfigString = config + .getProperty(DeploymentConfiguration.KEY_PROXY_AUTO_CONFIG_URL); + if (autoConfigString != null) { + try { + autoConfigUrl = new URL(autoConfigString); + } catch (MalformedURLException e) { + e.printStackTrace(); + } + } + + bypassList = new ArrayList(); + String proxyBypass = config.getProperty(DeploymentConfiguration.KEY_PROXY_BYPASS_LIST); + if (proxyBypass != null) { + StringTokenizer tokenizer = new StringTokenizer(proxyBypass, ","); + while (tokenizer.hasMoreTokens()) { + String host = tokenizer.nextToken(); + if (host != null && host.trim().length() != 0) { + bypassList.add(host); + } + } + } + + bypassLocal = Boolean.valueOf(config + .getProperty(DeploymentConfiguration.KEY_PROXY_BYPASS_LOCAL)); + + sameProxy = Boolean.valueOf(config.getProperty(DeploymentConfiguration.KEY_PROXY_SAME)); + + proxyHttpHost = getHost(config, DeploymentConfiguration.KEY_PROXY_HTTP_HOST); + proxyHttpPort = getPort(config, DeploymentConfiguration.KEY_PROXY_HTTP_PORT); + + proxyHttpsHost = getHost(config, DeploymentConfiguration.KEY_PROXY_HTTPS_HOST); + proxyHttpsPort = getPort(config, DeploymentConfiguration.KEY_PROXY_HTTPS_PORT); + + proxyFtpHost = getHost(config, DeploymentConfiguration.KEY_PROXY_FTP_HOST); + proxyFtpPort = getPort(config, DeploymentConfiguration.KEY_PROXY_FTP_PORT); + + proxySocks4Host = getHost(config, DeploymentConfiguration.KEY_PROXY_SOCKS4_HOST); + proxySocks4Port = getPort(config, DeploymentConfiguration.KEY_PROXY_SOCKS4_PORT); + + overrideHosts = config.getProperty(DeploymentConfiguration.KEY_PROXY_OVERRIDE_HOSTS); + } + + /** + * Uses the given key to get a host from the configuraion + */ + private String getHost(DeploymentConfiguration config, String key) { + String proxyHost = config.getProperty(key); + if (proxyHost != null) { + proxyHost = proxyHost.trim(); + } + return proxyHost; + } + + /** + * Uses the given key to get a port from the configuration + */ + private int getPort(DeploymentConfiguration config, String key) { + int proxyPort = FALLBACK_PROXY_PORT; + String port; + port = config.getProperty(key); + if (port != null && port.trim().length() != 0) { + try { + proxyPort = Integer.valueOf(port); + } catch (NumberFormatException e) { + e.printStackTrace(); + } + } + return proxyPort; + } + + /** + * {@inheritDoc} + */ + @Override + public void connectFailed(URI uri, SocketAddress sa, IOException ioe) { + ioe.printStackTrace(); + } + + /** + * {@inheritDoc} + */ + @Override + public List select(URI uri) { + if (JNLPRuntime.isDebug()) { + System.out.println("Selecting proxy for: " + uri); + } + + if (inBypassList(uri)) { + List proxies = Arrays.asList(new Proxy[] { Proxy.NO_PROXY }); + if (JNLPRuntime.isDebug()) { + System.out.println("Selected proxies: " + Arrays.toString(proxies.toArray())); + } + return proxies; + } + + List proxies = new ArrayList(); + + switch (proxyType) { + case PROXY_TYPE_MANUAL: + proxies.addAll(getFromConfiguration(uri)); + break; + case PROXY_TYPE_AUTO: + proxies.addAll(getFromPAC(uri)); + break; + case PROXY_TYPE_BROWSER: + proxies.addAll(getFromBrowser(uri)); + break; + case PROXY_TYPE_UNKNOWN: + // fall through + case PROXY_TYPE_NONE: + // fall through + default: + proxies.add(Proxy.NO_PROXY); + break; + } + + if (JNLPRuntime.isDebug()) { + System.out.println("Selected proxies: " + Arrays.toString(proxies.toArray())); + } + return proxies; + } + + /** + * Returns true if the uri should be bypassed for proxy purposes + */ + private boolean inBypassList(URI uri) { + try { + String scheme = uri.getScheme(); + /* scheme can be http/https/ftp/socket */ + + if (scheme.equals("http") || scheme.equals("https") || scheme.equals("ftp")) { + URL url = uri.toURL(); + if (bypassLocal && isLocalHost(url.getHost())) { + return true; + } + + if (bypassList.contains(url.getHost())) { + return true; + } + } else if (scheme.equals("socket")) { + String host = uri.getSchemeSpecificPart().split(":")[0]; + + if (bypassLocal && isLocalHost(host)) { + return true; + } + + if (bypassList.contains(host)) { + return true; + } + } + } catch (MalformedURLException e) { + return false; + } + + return false; + } + + /** + * Returns true if the host is the hostname or the IP address of the + * localhost + */ + private boolean isLocalHost(String host) { + + try { + if (InetAddress.getByName(host).isLoopbackAddress()) { + return true; + } + } catch (UnknownHostException e1) { + // continue + } + + try { + if (host.equals(InetAddress.getLocalHost().getHostName())) { + return true; + } + } catch (UnknownHostException e) { + // continue + } + + try { + if (host.equals(InetAddress.getLocalHost().getHostAddress())) { + return true; + } + } catch (UnknownHostException e) { + // continue + } + + return false; + } + + /** + * Returns a list of proxies by using the information in the deployment + * configuration + * + * @param uri + * @return a List of Proxy objects + */ + private List getFromConfiguration(URI uri) { + List proxies = new ArrayList(); + + String scheme = uri.getScheme(); + + if (sameProxy) { + SocketAddress sa = new InetSocketAddress(proxyHttpHost, proxyHttpPort); + Proxy proxy; + if (scheme.equals("socket")) { + proxy = new Proxy(Type.SOCKS, sa); + } else { + proxy = new Proxy(Type.HTTP, sa); + } + proxies.add(proxy); + } else if (scheme.equals("http")) { + SocketAddress sa = new InetSocketAddress(proxyHttpHost, proxyHttpPort); + proxies.add(new Proxy(Type.HTTP, sa)); + } else if (scheme.equals("https")) { + SocketAddress sa = new InetSocketAddress(proxyHttpsHost, proxyHttpsPort); + proxies.add(new Proxy(Type.HTTP, sa)); + } else if (scheme.equals("ftp")) { + SocketAddress sa = new InetSocketAddress(proxyFtpHost, proxyFtpPort); + proxies.add(new Proxy(Type.HTTP, sa)); + } else if (scheme.equals("socket")) { + SocketAddress sa = new InetSocketAddress(proxySocks4Host, proxySocks4Port); + proxies.add(new Proxy(Type.SOCKS, sa)); + } else { + proxies.add(Proxy.NO_PROXY); + } + + return proxies; + } + + /** + * Returns a list of proxies by using the Proxy Auto Config (PAC) file. See + * http://en.wikipedia.org/wiki/Proxy_auto-config#The_PAC_file for more + * information. + * + * @return a List of valid Proxy objects + */ + private List getFromPAC(URI uri) { + if (autoConfigUrl == null) { + return Arrays.asList(new Proxy[] { Proxy.NO_PROXY }); + } + // TODO implement this by reading and using the PAC file + if (JNLPRuntime.isDebug()) { + System.err.println("WARNING: Using a Proxy Auto Config file is not implemented yet"); + } + + return Arrays.asList(new Proxy[] { Proxy.NO_PROXY }); + } + + /** + * Returns a list of proxies by querying the browser + * + * @param uri the uri to get proxies for + * @return a list of proxies + */ + protected List getFromBrowser(URI uri) { + // TODO implement this by parsing mozilla config + if (JNLPRuntime.isDebug()) { + System.err.println("WARNING: Using proxy settings from the browser is not implemented yet"); + } + + return Arrays.asList(new Proxy[] { Proxy.NO_PROXY }); + } + +} diff -r 5a9f55d67b50 -r dd77da50a226 netx/net/sourceforge/jnlp/runtime/JNLPRuntime.java --- a/netx/net/sourceforge/jnlp/runtime/JNLPRuntime.java Fri Nov 19 10:35:27 2010 -0500 +++ b/netx/net/sourceforge/jnlp/runtime/JNLPRuntime.java Tue Nov 23 10:05:06 2010 -0500 @@ -18,6 +18,8 @@ package net.sourceforge.jnlp.runtime; package net.sourceforge.jnlp.runtime; import java.io.*; +import java.net.Authenticator; +import java.net.ProxySelector; import java.nio.channels.FileLock; import java.awt.*; From omajid at redhat.com Tue Nov 23 07:08:38 2010 From: omajid at redhat.com (Omair Majid) Date: Tue, 23 Nov 2010 10:08:38 -0500 Subject: [icedtea-web] RFC: integrate proxy configuration into netx/plugin In-Reply-To: <20101122201739.GA363@redhat.com> References: <4CE16D13.7090805@redhat.com> <20101117212445.GA2939@redhat.com> <4CE5B3DD.2050607@redhat.com> <20101122201739.GA363@redhat.com> Message-ID: <4CEBD8F6.5070105@redhat.com> On 11/22/2010 03:17 PM, Deepak Bhole wrote: > * Omair Majid [2010-11-18 18:16]: >> On 11/17/2010 04:24 PM, Deepak Bhole wrote: >>> * Omair Majid [2010-11-15 12:27]: >>>> Hi, >>>> >>> ... >>>> + >>>> + /** >>>> + * Returns true if the host is the hostname or the IP address of the >>>> + * localhost >>>> + */ >>>> + private boolean isLocalHost(String host) { >>>> + if (host.equals("localhost")) { >>>> + return true; >>>> + } >>>> + >>>> + if (host.equals("127.0.0.1")) { >>>> + return true; >>>> + } >>>> + >>>> + try { >>>> + if (host.equals(InetAddress.getLocalHost().getHostName())) { >>>> + return true; >>>> + } >>>> + } catch (UnknownHostException e) { >>>> + // continue >>>> + } >>>> + >>>> + try { >>>> + if (host.equals(InetAddress.getLocalHost().getHostAddress())) { >>>> + return true; >>>> + } >>>> + } catch (UnknownHostException e) { >>>> + // continue >>>> + } >>>> + >>>> + return false; >>>> + } >>>> + >>> >>> The above check will fail for something like 127.0.0.2 which is also >>> local. Can't we use InetAddress.isLoopbackAddress() here? >>> >> >> I actually wanted to avoid doing a DNS lookup on the (possibly >> untrusted) hostname (not sure if that even matters), but I cant see >> another way. Fixed using the method you suggested. The last two >> conditions are still present as they check if something like >> "fully.qualified.domain.name" is the local machine, something that >> isLoopbackAddress does not do. >> > > Looks good, OK for HEAD! > Thanks. Pushed to HEAD. Cheers, Omair From ptisnovs at redhat.com Tue Nov 23 07:16:03 2010 From: ptisnovs at redhat.com (Pavel Tisnovsky) Date: Tue, 23 Nov 2010 16:16:03 +0100 Subject: Reviewer needed - fix for regression test hotspot/test/runtime/6929067/Test6929067 In-Reply-To: <4CE2B02F.1060706@redhat.com> References: <4CE17184.5080105@redhat.com> <20101116132252.GK11013@rivendell.middle-earth.co.uk> <4CE29FDA.3060002@redhat.com> <20101116152138.GL11013@rivendell.middle-earth.co.uk> <4CE2B02F.1060706@redhat.com> Message-ID: <4CEBDAB3.9010300@redhat.com> Hi Andrew, here [attachment] is new version of the Test6929067.sh regression test which should work on x86_64 and also on i386/i586/i686 (note please that this test is focused to Linux system only, so we need not deal with another platforms). If you think it's correct I'll create patch and send it for review to this list and also (in form of webrev) to hotspot-dev mail list. Pavel Pavel Tisnovsky wrote: > Dr Andrew John Hughes wrote: >> On 16:14 Tue 16 Nov , Pavel Tisnovsky wrote: >>> Dr Andrew John Hughes wrote: >>>> On 18:44 Mon 15 Nov , Pavel Tisnovsky wrote: >>>>> Hi all, >>>>> >>>>> can anybody please review fix for regression test >>>>> hotspot/test/runtime/6929067/Test6929067 >>>>> >>>>> I changed this test in a way that it now correctly works on x86_64 >>>>> platform, for example (it has to find where libjvm.so is placed instead >>>>> of using constant path). Tested on RHEL 5 x86_64 but it should works on >>>>> another systems too. >>>>> >>>> ARCH=$(uname -m) >>>> if test "${ARCH}" == "x86_64"; then >>>> ARCH=amd64; >>>> fi >>>> LD_LIBRARY_PATH=.:${TESTJAVA}/jre/lib/${ARCH}/client:${TESTJAVA}/jre/lib/${ARCH}/server:/usr/openwin/lib:/usr/dt/lib:/usr/lib:$LD_LIBRARY_PATH >>>> >>>> would achieve the same goal without using find. >>> Yeah it nicely solves the first problem, but I'd like to stay on my >>> version because we also have to use the exact path to properly compile >>> "invoke" tool - calling of gcc is located near the end of this script. >>> >> The problem with using find is that you don't know what libjvm.so you'll >> end up with, which makes any future issues hard to diagnose. With the >> above, we know it's the client vm if available, and the server vm if not. >> >> IMHO, the gcc invocation should be using -ljvm. > > Do you mean this solution or something more simpler? > > gcc -o invoke -L${TESTJAVA}/jre/lib/${ARCH}/client > -L${TESTJAVA}/jre/lib/${ARCH}/server -ljvm -I${TESTJAVA}/include > -I${TESTJAVA}/include/linux invoke.c > > (btw it works only when library paths are set) > >>>>> Diffstat produced against IcedTea6 HEAD is stored in attachment. >>>>> >>>> Again, no 'icedtea-' prefix. >>>> >>>>> Thank you in advance >>>>> Pavel >>>>> # HG changeset patch >>>>> # User ptisnovs >>>>> # Date 1289843015 -3600 >>>>> # Node ID bf47d6f0dd12f7ed7a34d0110d2bbd6361d6616b >>>>> # Parent ad1c77031a41739f3a912d27459a23a930ef4b88 >>>>> Testcase correction. >>>>> >>>>> diff -r ad1c77031a41 -r bf47d6f0dd12 ChangeLog >>>>> --- a/ChangeLog Fri Nov 12 18:17:22 2010 +0000 >>>>> +++ b/ChangeLog Mon Nov 15 18:43:35 2010 +0100 >>>>> @@ -1,3 +1,10 @@ >>>>> +2010-11-15 Pavel Tisnovsky >>>>> + >>>>> + * Makefile.am: Add new patch. >>>>> + * patches/jtreg-patch-Test6929067.patch: >>>>> + Testcase correction - now the test works correctly also on x86_64 and >>>>> + other platforms. >>>>> + >>>>> 2010-11-12 Andrew John Hughes >>>>> >>>>> * Makefile.am: >>>>> diff -r ad1c77031a41 -r bf47d6f0dd12 Makefile.am >>>>> --- a/Makefile.am Fri Nov 12 18:17:22 2010 +0000 >>>>> +++ b/Makefile.am Mon Nov 15 18:43:35 2010 +0100 >>>>> @@ -300,7 +300,8 @@ >>>>> patches/openjdk/6622432-bigdecimal_performance.patch \ >>>>> patches/openjdk/6850606-bigdecimal_regression.patch \ >>>>> patches/openjdk/6876282-bigdecimal_divide.patch \ >>>>> - patches/f14-fonts.patch >>>>> + patches/f14-fonts.patch \ >>>>> + patches/icedtea-jtreg-Test6929067.patch >>>>> >>>>> if WITH_ALT_HSBUILD >>>>> ICEDTEA_PATCHES += \ >>>>> diff -r ad1c77031a41 -r bf47d6f0dd12 patches/icedtea-jtreg-Test6929067.patch >>>>> --- /dev/null Thu Jan 01 00:00:00 1970 +0000 >>>>> +++ b/patches/icedtea-jtreg-Test6929067.patch Mon Nov 15 18:43:35 2010 +0100 >>>>> @@ -0,0 +1,23 @@ >>>>> +--- openjdk-old/hotspot/test/runtime/6929067/Test6929067.sh 2010-10-08 22:29:24.000000000 +0200 >>>>> ++++ openjdk/hotspot/test/runtime/6929067/Test6929067.sh 2010-11-15 12:47:57.000000000 +0100 >>>>> +@@ -42,7 +42,11 @@ >>>>> + ;; >>>>> + esac >>>>> + >>>>> +-LD_LIBRARY_PATH=.:${TESTJAVA}/jre/lib/i386/client:/usr/openwin/lib:/usr/dt/lib:/usr/lib:$LD_LIBRARY_PATH >>>>> ++PATH_TO_LIBJVM=`find ${TESTJAVA}/jre/lib -name libjvm.so | tail -n 1 | sed 's/\(.*\)\(\/libjvm\.so\)/\1/g'` >>>>> ++ >>>>> ++echo $PATH_TO_LIBJVM >>>>> ++ >>>>> ++LD_LIBRARY_PATH=.:${PATH_TO_LIBJVM}:/usr/openwin/lib:/usr/dt/lib:/usr/lib:$LD_LIBRARY_PATH >>>>> + export LD_LIBRARY_PATH >>>>> + >>>>> + THIS_DIR=`pwd` >>>>> +@@ -55,6 +59,6 @@ >>>>> + >>>>> + ${TESTJAVA}${FS}bin${FS}javac T.java >>>>> + >>>>> +-gcc -o invoke -I${TESTJAVA}/include -I${TESTJAVA}/include/linux invoke.c ${TESTJAVA}/jre/lib/i386/client/libjvm.so >>>>> ++gcc -o invoke -I${TESTJAVA}/include -I${TESTJAVA}/include/linux invoke.c ${PATH_TO_LIBJVM}/libjvm.so >>>>> + ./invoke >>>>> + exit $? > -------------- next part -------------- A non-text attachment was scrubbed... Name: Test6929067.sh Type: application/x-shellscript Size: 1531 bytes Desc: not available Url : http://mail.openjdk.java.net/pipermail/distro-pkg-dev/attachments/20101123/e154f02e/Test6929067.sh From omajid at redhat.com Tue Nov 23 11:50:52 2010 From: omajid at redhat.com (Omair Majid) Date: Tue, 23 Nov 2010 14:50:52 -0500 Subject: /hg/icedtea-web: add configuration support for user prompts and ... In-Reply-To: References: Message-ID: <4CEC1B1C.5030601@redhat.com> On 11/18/2010 12:02 PM, omajid at icedtea.classpath.org wrote: > changeset 88d31285a14b in /hg/icedtea-web > details: http://icedtea.classpath.org/hg/icedtea-web?cmd=changeset;node=88d31285a14b > author: Omair Majid > date: Thu Nov 18 11:55:26 2010 -0500 > > add configuration support for user prompts and other access control > options > I found a problem with this changeset. > @@ -187,6 +188,11 @@ public class SecurityDesc { > for (int i=0; i< sandboxPermissions.length; i++) > permissions.add(sandboxPermissions[i]); > > + String key = DeploymentConfiguration.KEY_SECURITY_ALLOW_HIDE_WINDOW_WARNING; > + if (Boolean.valueOf(JNLPRuntime.getConfiguration().getProperty(key)) == Boolean.TRUE) { > + permissions.add(new AWTPermission("showWindowWithoutWarningBanner")); > + } > + This leads to infinite recursion if the caller does not have full privileges. This calls DeploymentConfiguration, which calls JNLPSecurityManager which calls JNLPClassLoader which in turn calls SecurityDesc again. I dont know how this bug made it past my tests :/ The fix is attached. Thanks, Omair -------------- next part -------------- A non-text attachment was scrubbed... Name: grant-awt-permissions-without-recursion-01.patch Type: text/x-patch Size: 1280 bytes Desc: not available Url : http://mail.openjdk.java.net/pipermail/distro-pkg-dev/attachments/20101123/d851d5c3/grant-awt-permissions-without-recursion-01.patch From omajid at redhat.com Tue Nov 23 11:54:41 2010 From: omajid at redhat.com (Omair Majid) Date: Tue, 23 Nov 2010 14:54:41 -0500 Subject: [icedtea-web] RFC: reduce permissions on created files In-Reply-To: <20101122203122.GB363@redhat.com> References: <4CDC94FF.50701@redhat.com> <20101112115418.GE5773@rivendell.middle-earth.co.uk> <4CDD52D6.9020306@redhat.com> <20101122203122.GB363@redhat.com> Message-ID: <4CEC1C01.8010205@redhat.com> On 11/22/2010 03:31 PM, Deepak Bhole wrote: > * Omair Majid [2010-11-12 09:46]: >> On 11/12/2010 06:54 AM, Dr Andrew John Hughes wrote: >>> On 20:14 Thu 11 Nov , Omair Majid wrote: >>>> Hi, >>>> >>>> The attached patch tries to make files created by netx/plugin more >>>> secure by removing unnecessary permissions. IcedTea6 used to carry a >>>> patch to change the umask used by the javaws process which IcedTea-Web >>>> does not. This patch tries to make netx/plugin behave like they would in >>>> the presence of such a patch. >>>> >>>> This patch does not change the file permissions on files that are cached >>>> (mostly because I dont see why they should be protected), but does >>>> change permissions on KeyStores, native directories created under /tmp/, >>>> lock files, files created through the JNLP api and log files. >>>> >>> >>> I think this is a better approach, though we should be aware that the permissions >>> are now changed after the file has been created, whereas before (I presume) they >>> were created with the correct permissions to begin with. >>> >> >> Hm... Does creating a new (blank) file, setting appropriate >> permissions on it and then writing content to it ensure that the >> content can not be seen by others? This was the original intent with >> this patch (I have since noticed one mistake in the patch). If >> creating a blank file, setting permissions on it and then writing >> actual content does not ensure the confidentiality of the data, then >> I would like to find another way to accomplish this. >> >> Thanks for looking over the patch. >> > > Good point Andrew! This patch needs to be modified. If a file is created > with og+[r|w|x] and then restricted, anything that opened the handle > before the change will have the permissions it did when the handle was > opened. We need to create the file under a different (temp) name, change > permissions, and then move it. AFAIK that shouldn't allow access. > > Access bypass can be verified as follows: > 1. Create a file as one user (A), allow a+r > 2. tail -f that file as another user (B) > 3. As A, og-rwx the file > 4. As A, write to the file > > The tail -f command from #2 will show the output, thus confirming that > user B has access when they shouldn't. > > tail -f no longer gets the info if the file is renamed to something else > between step 3 and 4. > Thanks for the name change idea. The attached patch implements it. Thoughts? Cheers, Omair -------------- next part -------------- A non-text attachment was scrubbed... Name: reduce-permisisons-02.patch Type: text/x-patch Size: 18135 bytes Desc: not available Url : http://mail.openjdk.java.net/pipermail/distro-pkg-dev/attachments/20101123/845ed6b9/reduce-permisisons-02.patch From dbhole at redhat.com Tue Nov 23 11:54:48 2010 From: dbhole at redhat.com (Deepak Bhole) Date: Tue, 23 Nov 2010 14:54:48 -0500 Subject: /hg/icedtea-web: add configuration support for user prompts and ... In-Reply-To: <4CEC1B1C.5030601@redhat.com> References: <4CEC1B1C.5030601@redhat.com> Message-ID: <20101123195448.GB17083@redhat.com> * Omair Majid [2010-11-23 14:50]: > On 11/18/2010 12:02 PM, omajid at icedtea.classpath.org wrote: > >changeset 88d31285a14b in /hg/icedtea-web > >details: http://icedtea.classpath.org/hg/icedtea-web?cmd=changeset;node=88d31285a14b > >author: Omair Majid > >date: Thu Nov 18 11:55:26 2010 -0500 > > > > add configuration support for user prompts and other access control > > options > > > > I found a problem with this changeset. > > >@@ -187,6 +188,11 @@ public class SecurityDesc { > > for (int i=0; i< sandboxPermissions.length; i++) > > permissions.add(sandboxPermissions[i]); > > > >+ String key = DeploymentConfiguration.KEY_SECURITY_ALLOW_HIDE_WINDOW_WARNING; > >+ if (Boolean.valueOf(JNLPRuntime.getConfiguration().getProperty(key)) == Boolean.TRUE) { > >+ permissions.add(new AWTPermission("showWindowWithoutWarningBanner")); > >+ } > >+ > > This leads to infinite recursion if the caller does not have full > privileges. This calls DeploymentConfiguration, which calls > JNLPSecurityManager which calls JNLPClassLoader which in turn calls > SecurityDesc again. I dont know how this bug made it past my tests > :/ The fix is attached. > Looks good, ok for HEAD! Cheers, Deepak > Thanks, > Omair > diff -r dd77da50a226 netx/net/sourceforge/jnlp/SecurityDesc.java > --- a/netx/net/sourceforge/jnlp/SecurityDesc.java Tue Nov 23 10:05:06 2010 -0500 > +++ b/netx/net/sourceforge/jnlp/SecurityDesc.java Tue Nov 23 14:48:16 2010 -0500 > @@ -53,6 +53,9 @@ > /** the download host */ > private String downloadHost; > > + /** whether sandbox applications should get the show window without banner permission */ > + private final boolean grantAwtPermissions; > + > /** the JNLP file */ > private JNLPFile file; > > @@ -146,6 +149,9 @@ > this.file = file; > this.type = type; > this.downloadHost = downloadHost; > + > + String key = DeploymentConfiguration.KEY_SECURITY_ALLOW_HIDE_WINDOW_WARNING; > + grantAwtPermissions = Boolean.valueOf(JNLPRuntime.getConfiguration().getProperty(key)); > } > > /** > @@ -188,8 +194,7 @@ > for (int i=0; i < sandboxPermissions.length; i++) > permissions.add(sandboxPermissions[i]); > > - String key = DeploymentConfiguration.KEY_SECURITY_ALLOW_HIDE_WINDOW_WARNING; > - if (Boolean.valueOf(JNLPRuntime.getConfiguration().getProperty(key)) == Boolean.TRUE) { > + if (grantAwtPermissions) { > permissions.add(new AWTPermission("showWindowWithoutWarningBanner")); > } > From omajid at redhat.com Tue Nov 23 12:26:05 2010 From: omajid at redhat.com (Omair Majid) Date: Tue, 23 Nov 2010 15:26:05 -0500 Subject: [icedtea-web] RFC: move a missed string to Messages.properties Message-ID: <4CEC235D.4020500@redhat.com> Hi, The attached patch adds a missed string that should have been internationalized. Any comments? Cheers, Omair -------------- next part -------------- A non-text attachment was scrubbed... Name: missed-localized-strings.patch Type: text/x-patch Size: 1238 bytes Desc: not available Url : http://mail.openjdk.java.net/pipermail/distro-pkg-dev/attachments/20101123/ef86ee2e/missed-localized-strings.patch From dbhole at redhat.com Tue Nov 23 13:05:57 2010 From: dbhole at redhat.com (Deepak Bhole) Date: Tue, 23 Nov 2010 16:05:57 -0500 Subject: [icedtea-web] RFC: move a missed string to Messages.properties In-Reply-To: <4CEC235D.4020500@redhat.com> References: <4CEC235D.4020500@redhat.com> Message-ID: <20101123210556.GA20184@redhat.com> * Omair Majid [2010-11-23 15:26]: > Hi, > > The attached patch adds a missed string that should have been > internationalized. > > Any comments? > > Cheers, > Omair I like reviewing these small patches :) OK for HEAD! Cheers, Deepak > diff -r dd77da50a226 netx/net/sourceforge/jnlp/resources/Messages.properties > --- a/netx/net/sourceforge/jnlp/resources/Messages.properties Tue Nov 23 10:05:06 2010 -0500 > +++ b/netx/net/sourceforge/jnlp/resources/Messages.properties Tue Nov 23 15:16:06 2010 -0500 > @@ -214,6 +214,7 @@ > > # Certificate Viewer > CVCertificateViewer=Certificates > +CVCertificateType=Certificate Type > CVDetails=Details > CVExport=Export > CVImport=Import > diff -r dd77da50a226 netx/net/sourceforge/jnlp/security/viewer/CertificatePane.java > --- a/netx/net/sourceforge/jnlp/security/viewer/CertificatePane.java Tue Nov 23 10:05:06 2010 -0500 > +++ b/netx/net/sourceforge/jnlp/security/viewer/CertificatePane.java Tue Nov 23 15:16:06 2010 -0500 > @@ -157,7 +157,7 @@ > JPanel certificateTypePanel = new JPanel(new BorderLayout()); > certificateTypePanel.setBorder(BorderFactory.createEmptyBorder(5,5,5,5)); > > - JLabel certificateTypeLabel = new JLabel("Certificate Type:"); > + JLabel certificateTypeLabel = new JLabel(R("CVCertificateType")); > > certificateTypeCombo = new JComboBox(certificateTypes); > certificateTypeCombo.addActionListener(new CertificateTypeListener()); From bugzilla-daemon at icedtea.classpath.org Wed Nov 24 03:36:45 2010 From: bugzilla-daemon at icedtea.classpath.org (bugzilla-daemon at icedtea.classpath.org) Date: Wed, 24 Nov 2010 11:36:45 +0000 Subject: [Bug 597] New: Entities are parsed incorrectly in PARAM tag in applet plugin Message-ID: http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=597 Summary: Entities are parsed incorrectly in PARAM tag in applet plugin Product: IcedTea Version: 6-1.8.2 Platform: x86 OS/Version: Linux Status: NEW Severity: normal Priority: P2 Component: IcedTea6 AssignedTo: unassigned at icedtea.classpath.org ReportedBy: dani at wiris.com Features: OS: linux, Ubuntu 10.4 LTS, 32 bits Browser: firefox 3.6.3 Google Chrome 7.0.717.44 Icedtea version: 6b18-1.8.2-4ubuntu2 Note that with the same os and browser and java of sun, there is no bug. The following applet import java.applet.Applet; import java.awt.Label; public class IcedteaAppletParam extends Applet { public void init() { String str=this.getParameter("myparam"); this.add(new Label(str)); } } With the following html page Title Displays begin instead of begin"end Thus, the " entity is interpreted differently, and I assume wrongly, respect to other java plugins. -- Configure bugmail: http://icedtea.classpath.org/bugzilla/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are the assignee for the bug, or are watching the assignee. From doko at ubuntu.com Wed Nov 24 04:01:02 2010 From: doko at ubuntu.com (Matthias Klose) Date: Wed, 24 Nov 2010 13:01:02 +0100 Subject: [icedtea-web] Fix linking issues Message-ID: <4CECFE7E.4090606@ubuntu.com> objects should appear before libraries on the command line, the link will fail with ld --as-needed. And linking with -lc explicitely is not necessary. Ok to checkin? Matthias -------------- next part -------------- A non-text attachment was scrubbed... Name: link.diff Type: text/x-diff Size: 1767 bytes Desc: not available Url : http://mail.openjdk.java.net/pipermail/distro-pkg-dev/attachments/20101124/0a4360de/link.diff From ahughes at redhat.com Wed Nov 24 04:36:49 2010 From: ahughes at redhat.com (Dr Andrew John Hughes) Date: Wed, 24 Nov 2010 12:36:49 +0000 Subject: [icedtea-web] Fix linking issues In-Reply-To: <4CECFE7E.4090606@ubuntu.com> References: <4CECFE7E.4090606@ubuntu.com> Message-ID: <20101124123649.GA1530@rivendell.middle-earth.co.uk> On 13:01 Wed 24 Nov , Matthias Klose wrote: > objects should appear before libraries on the command line, the link will fail > with ld --as-needed. And linking with -lc explicitely is not necessary. > > Ok to checkin? > > Matthias > Looks good. Please commit. > 2010-11-24 Matthias Klose > > * Makefile.am (LAUNCHER_LINK): Don't explicitely link with -lc. > > 2010-11-24 Chris Coulson > > * Makefile.am (pluginappletviewer, javaws): > Fix linking with --as-needed. > > > diff -r dd77da50a226 Makefile.am > --- a/Makefile.am Tue Nov 23 10:05:06 2010 -0500 > +++ b/Makefile.am Wed Nov 24 12:52:24 2010 +0100 > @@ -63,7 +63,7 @@ > LAUNCHER_LINK = -o $@ -Xlinker -O1 -Xlinker -z -Xlinker defs -L$(BOOT_DIR)/lib/$(INSTALL_ARCH_DIR) \ > -Wl,-soname=lib.so -L $(BOOT_DIR)/jre/lib/$(INSTALL_ARCH_DIR)/jli -Wl,-z -Wl,origin \ > -Wl,--allow-shlib-undefined -Wl,-rpath -Wl,\$$ORIGIN/../lib/$(INSTALL_ARCH_DIR)/jli -Wl,-rpath \ > - -Wl,\$$ORIGIN/../jre/lib/$(INSTALL_ARCH_DIR)/jli -lpthread $(X11_CFLAGS) $(X11_LIBS) -ljli -ldl -lc -lz > + -Wl,\$$ORIGIN/../jre/lib/$(INSTALL_ARCH_DIR)/jli -lpthread $(X11_CFLAGS) $(X11_LIBS) -ljli -ldl -lz > PLUGIN_VERSION = IcedTea $(PACKAGE_VERSION)$(ICEDTEA_REV)$(ICEDTEA_PKG) > > EXTRA_DIST = $(NETX_SRCDIR) $(abs_top_srcdir)/plugin javaws.png javaws.desktop.in extra launcher > @@ -149,7 +149,7 @@ > $(CC) $(LAUNCHER_FLAGS) -DJAVA_ARGS='{ "sun.applet.PluginMain" }' -DPROGNAME='"pluginappletviewer"' -c -o $@ $< > > $(PLUGIN_DIR)/launcher/pluginappletviewer: $(PLUGIN_LAUNCHER_OBJECTS) > - $(CC) $(LAUNCHER_LINK) $(PLUGIN_LAUNCHER_OBJECTS) > + $(CC) $(PLUGIN_LAUNCHER_OBJECTS) $(LAUNCHER_LINK) > > clean-IcedTeaPlugin: > rm -f $(PLUGIN_DIR)/launcher/*.o > @@ -279,7 +279,7 @@ > > $(NETX_DIR)/launcher/javaws: $(NETX_LAUNCHER_OBJECTS) > mkdir -p launcher > - $(CC) $(LAUNCHER_LINK) $(NETX_LAUNCHER_OBJECTS) > + $(CC) $(NETX_LAUNCHER_OBJECTS) $(LAUNCHER_LINK) > > javaws.desktop: javaws.desktop.in > sed "s#PATH_TO_JAVAWS#$(DESTDIR)$(bindir)/javaws#" < javaws.desktop.in > javaws.desktop -- Andrew :) Free Java Software Engineer Red Hat, Inc. (http://www.redhat.com) Support Free Java! Contribute to GNU Classpath and the OpenJDK http://www.gnu.org/software/classpath http://openjdk.java.net PGP Key: 94EFD9D8 (http://subkeys.pgp.net) Fingerprint = F8EF F1EA 401E 2E60 15FA 7927 142C 2591 94EF D9D8 From doko at ubuntu.com Wed Nov 24 04:47:21 2010 From: doko at ubuntu.com (Matthias Klose) Date: Wed, 24 Nov 2010 13:47:21 +0100 Subject: [icedtea-web] Fix linking issues In-Reply-To: <20101124123649.GA1530@rivendell.middle-earth.co.uk> References: <4CECFE7E.4090606@ubuntu.com> <20101124123649.GA1530@rivendell.middle-earth.co.uk> Message-ID: <4CED0959.7030305@ubuntu.com> On 24.11.2010 13:36, Dr Andrew John Hughes wrote: > On 13:01 Wed 24 Nov , Matthias Klose wrote: >> objects should appear before libraries on the command line, the link will fail >> with ld --as-needed. And linking with -lc explicitely is not necessary. >> >> Ok to checkin? >> >> Matthias >> > > Looks good. Please commit. ok, and replacing the explict -lpthread with -pthread. Matthias From doko at icedtea.classpath.org Wed Nov 24 04:48:30 2010 From: doko at icedtea.classpath.org (doko at icedtea.classpath.org) Date: Wed, 24 Nov 2010 12:48:30 +0000 Subject: /hg/icedtea-web: 2010-11-24 Matthias Klose Message-ID: changeset e1400d406d85 in /hg/icedtea-web details: http://icedtea.classpath.org/hg/icedtea-web?cmd=changeset;node=e1400d406d85 author: doko at ubuntu.com date: Wed Nov 24 13:41:57 2010 +0100 2010-11-24 Matthias Klose * Makefile.am (LAUNCHER_LINK): Don't explicitely link with -lc, link with -pthread instead of -lpthread. (LAUNCHER_FLAGS): Add -pthread. 2010-11-24 Chris Coulson * Makefile.am (pluginappletviewer, javaws): Fix linking with --as-needed. diffstat: 2 files changed, 16 insertions(+), 5 deletions(-) ChangeLog | 11 +++++++++++ Makefile.am | 10 +++++----- diffs (56 lines): diff -r dd77da50a226 -r e1400d406d85 ChangeLog --- a/ChangeLog Tue Nov 23 10:05:06 2010 -0500 +++ b/ChangeLog Wed Nov 24 13:41:57 2010 +0100 @@ -1,3 +1,14 @@ 2010-11-23 Omair Majid + + * Makefile.am (LAUNCHER_LINK): Don't explicitely link with -lc, + link with -pthread instead of -lpthread. + (LAUNCHER_FLAGS): Add -pthread. + +2010-11-24 Chris Coulson + + * Makefile.am (pluginappletviewer, javaws): + Fix linking with --as-needed. + 2010-11-23 Omair Majid * netx/net/sourceforge/jnlp/runtime/DeploymentConfiguration.java: diff -r dd77da50a226 -r e1400d406d85 Makefile.am --- a/Makefile.am Tue Nov 23 10:05:06 2010 -0500 +++ b/Makefile.am Wed Nov 24 13:41:57 2010 +0100 @@ -57,13 +57,13 @@ LAUNCHER_OBJECTS = java.o java_md.o spla LAUNCHER_OBJECTS = java.o java_md.o splashscreen_stubs.o PLUGIN_LAUNCHER_OBJECTS = $(addprefix $(PLUGIN_DIR)/launcher/,$(LAUNCHER_OBJECTS)) NETX_LAUNCHER_OBJECTS = $(addprefix $(NETX_DIR)/launcher/,$(LAUNCHER_OBJECTS)) -LAUNCHER_FLAGS = -O2 -fno-strict-aliasing -fPIC -W -Wall -Wno-unused -Wno-parentheses -pipe -fno-omit-frame-pointer \ +LAUNCHER_FLAGS = -O2 -fno-strict-aliasing -fPIC -pthread -W -Wall -Wno-unused -Wno-parentheses -pipe -fno-omit-frame-pointer \ -g -D_LARGEFILE64_SOURCE -D_GNU_SOURCE -D_REENTRANT -DLAUNCHER_NAME='"java"' -I$(LAUNCHER_SRCDIR) \ -DJDK_MAJOR_VERSION='"1"' -DJDK_MINOR_VERSION='"6"' -DLIBARCHNAME='"$(JRE_ARCH_DIR)"' -LAUNCHER_LINK = -o $@ -Xlinker -O1 -Xlinker -z -Xlinker defs -L$(BOOT_DIR)/lib/$(INSTALL_ARCH_DIR) \ +LAUNCHER_LINK = -o $@ -pthread -Xlinker -O1 -Xlinker -z -Xlinker defs -L$(BOOT_DIR)/lib/$(INSTALL_ARCH_DIR) \ -Wl,-soname=lib.so -L $(BOOT_DIR)/jre/lib/$(INSTALL_ARCH_DIR)/jli -Wl,-z -Wl,origin \ -Wl,--allow-shlib-undefined -Wl,-rpath -Wl,\$$ORIGIN/../lib/$(INSTALL_ARCH_DIR)/jli -Wl,-rpath \ - -Wl,\$$ORIGIN/../jre/lib/$(INSTALL_ARCH_DIR)/jli -lpthread $(X11_CFLAGS) $(X11_LIBS) -ljli -ldl -lc -lz + -Wl,\$$ORIGIN/../jre/lib/$(INSTALL_ARCH_DIR)/jli $(X11_CFLAGS) $(X11_LIBS) -ljli -ldl -lz PLUGIN_VERSION = IcedTea $(PACKAGE_VERSION)$(ICEDTEA_REV)$(ICEDTEA_PKG) EXTRA_DIST = $(NETX_SRCDIR) $(abs_top_srcdir)/plugin javaws.png javaws.desktop.in extra launcher @@ -149,7 +149,7 @@ PLUGIN_OBJECTS=IcedTeaNPPlugin.o IcedTea $(CC) $(LAUNCHER_FLAGS) -DJAVA_ARGS='{ "sun.applet.PluginMain" }' -DPROGNAME='"pluginappletviewer"' -c -o $@ $< $(PLUGIN_DIR)/launcher/pluginappletviewer: $(PLUGIN_LAUNCHER_OBJECTS) - $(CC) $(LAUNCHER_LINK) $(PLUGIN_LAUNCHER_OBJECTS) + $(CC) $(PLUGIN_LAUNCHER_OBJECTS) $(LAUNCHER_LINK) clean-IcedTeaPlugin: rm -f $(PLUGIN_DIR)/launcher/*.o @@ -279,7 +279,7 @@ extra-lib/about.jar: stamps/extra-class- $(NETX_DIR)/launcher/javaws: $(NETX_LAUNCHER_OBJECTS) mkdir -p launcher - $(CC) $(LAUNCHER_LINK) $(NETX_LAUNCHER_OBJECTS) + $(CC) $(NETX_LAUNCHER_OBJECTS) $(LAUNCHER_LINK) javaws.desktop: javaws.desktop.in sed "s#PATH_TO_JAVAWS#$(DESTDIR)$(bindir)/javaws#" < javaws.desktop.in > javaws.desktop From andrew at icedtea.classpath.org Wed Nov 24 05:14:13 2010 From: andrew at icedtea.classpath.org (andrew at icedtea.classpath.org) Date: Wed, 24 Nov 2010 13:14:13 +0000 Subject: /hg/icedtea: Bump to b117. Move to using drops from the IcedTea... Message-ID: changeset ca86748424fa in /hg/icedtea details: http://icedtea.classpath.org/hg/icedtea?cmd=changeset;node=ca86748424fa author: Andrew John Hughes date: Wed Nov 24 13:13:23 2010 +0000 Bump to b117. Move to using drops from the IcedTea server. 2010-11-24 Andrew John Hughes Bump to b117. * patches/boot/corba-libgcj.patch, * patches/icedtea-stroker-finish.patch, * Makefile.am: (OPENJDK_VERSION): Set to b117. (CORBA_CHANGESET): Updated. (HOTSPOT_CHANGESET): Likewise. (JAXP_CHANGESET): Likewise. (JAXWS_CHANGESET): Likewise. (JDK_CHANGESET): Likewise. (LANGTOOLS_CHANGESET): Likewise. (OPENJDK_CHANGESET): Likewise. (CORBA_SHA256SUM): Likewise. (HOTSPOT_SHA256SUM): Likewise. (JAXP_SHA256SUM): Likewise. (JAXWS_SHA256SUM): Likewise. (JDK_SHA256SUM): Likewise. (LANGTOOLS_SHA256SUM): Likewise. (OPENJDK_SHA256SUM): Likewise. (JAXWS_DROP_URL): Set to IcedTea server. (JAXWS_DROP_ZIP): Updated. (JAXWS_DROP_SHA256SUM): Likewise. (JAF_DROP_URL): Set to IcedTea server. (JAF_DROP_ZIP): Updated. (JAF_DROP_SHA256SUM): Likewise. (JAXP_DROP_URL): Set to IcedTea server. (JAXP_DROP_ZIP): Updated. (JAXP_DROP_SHA256SUM): Likewise. (ICEDTEA_PATCHES): Drop stroker-finish (upstream). (ICEDTEA_BOOT_PATCHES): Drop corba-libgcj (redundant due to native elements of corba build being removed). Add new patches to work around new bootstrap issues. * patches/boot/corba-defs.patch: Rerolled. * patches/boot/ecj-diamond.patch: Handle use in java.util.jar. * patches/boot/ecj-stringswitch.patch: New patch to replace switch statement using a String in NTLM driver. * patches/boot/genstubs-nofork.patch: Rerolled. * patches/boot/icedteart.patch: Drop dead ICEDTEA_JCE. Put CLASSDESTDIR first so that new classes are found first. * patches/boot/revert-6941137.patch: Revert change to use java.nio.file.FileSystems in ZoneInfoFile. Avoids trying to load file system providers and failing. * patches/boot/xbootclasspath.patch: Rerolled. * patches/cacao/arch.patch: Remove CORBA chunk. * patches/extensions/netx.patch: Rerolled. * patches/icedtea-gcc-suffix.patch: Remove CORBA chunk. * patches/icedtea-lc_ctype.patch: Recreated. * patches/icedtea-libraries.patch: Rerolled. * patches/sh4-support.patch: Remove CORBA chunk. diffstat: 17 files changed, 693 insertions(+), 374 deletions(-) ChangeLog | 52 +++++ Makefile.am | 54 ++--- patches/boot/corba-defs.patch | 14 - patches/boot/corba-libgcj.patch | 12 - patches/boot/ecj-diamond.patch | 330 ++++++++++++++++++++++++++++++++++ patches/boot/ecj-stringswitch.patch | 38 +++ patches/boot/genstubs-nofork.patch | 12 - patches/boot/icedteart.patch | 4 patches/boot/revert-6941137.patch | 12 + patches/boot/xbootclasspath.patch | 41 +--- patches/cacao/arch.patch | 41 ---- patches/extensions/netx.patch | 28 +- patches/icedtea-gcc-suffix.patch | 25 -- patches/icedtea-lc_ctype.patch | 50 ++--- patches/icedtea-libraries.patch | 304 +++++++++++++++---------------- patches/icedtea-stroker-finish.patch | 20 -- patches/sh4-support.patch | 30 --- diffs (truncated from 2187 to 500 lines): diff -r edaaf37351c4 -r ca86748424fa ChangeLog --- a/ChangeLog Tue Sep 14 15:59:59 2010 +0100 +++ b/ChangeLog Wed Nov 24 13:13:23 2010 +0000 @@ -1,3 +1,55 @@ 2010-09-14 Andrew John Hughes + + Bump to b117. Move to using drops from + the IcedTea server. + * patches/boot/corba-libgcj.patch, + * patches/icedtea-stroker-finish.patch, + * Makefile.am: + (OPENJDK_VERSION): Set to b117. + (CORBA_CHANGESET): Updated. + (HOTSPOT_CHANGESET): Likewise. + (JAXP_CHANGESET): Likewise. + (JAXWS_CHANGESET): Likewise. + (JDK_CHANGESET): Likewise. + (LANGTOOLS_CHANGESET): Likewise. + (OPENJDK_CHANGESET): Likewise. + (CORBA_SHA256SUM): Likewise. + (HOTSPOT_SHA256SUM): Likewise. + (JAXP_SHA256SUM): Likewise. + (JAXWS_SHA256SUM): Likewise. + (JDK_SHA256SUM): Likewise. + (LANGTOOLS_SHA256SUM): Likewise. + (OPENJDK_SHA256SUM): Likewise. + (JAXWS_DROP_URL): Set to IcedTea server. + (JAXWS_DROP_ZIP): Updated. + (JAXWS_DROP_SHA256SUM): Likewise. + (JAF_DROP_URL): Set to IcedTea server. + (JAF_DROP_ZIP): Updated. + (JAF_DROP_SHA256SUM): Likewise. + (JAXP_DROP_URL): Set to IcedTea server. + (JAXP_DROP_ZIP): Updated. + (JAXP_DROP_SHA256SUM): Likewise. + (ICEDTEA_PATCHES): Drop stroker-finish (upstream). + (ICEDTEA_BOOT_PATCHES): Drop corba-libgcj (redundant + due to native elements of corba build being removed). + Add new patches to work around new bootstrap issues. + * patches/boot/corba-defs.patch: Rerolled. + * patches/boot/ecj-diamond.patch: Handle use in java.util.jar. + * patches/boot/ecj-stringswitch.patch: + New patch to replace switch statement using a String in NTLM driver. + * patches/boot/genstubs-nofork.patch: Rerolled. + * patches/boot/icedteart.patch: Drop dead ICEDTEA_JCE. Put CLASSDESTDIR + first so that new classes are found first. + * patches/boot/revert-6941137.patch: Revert change to use java.nio.file.FileSystems + in ZoneInfoFile. Avoids trying to load file system providers and failing. + * patches/boot/xbootclasspath.patch: Rerolled. + * patches/cacao/arch.patch: Remove CORBA chunk. + * patches/extensions/netx.patch: Rerolled. + * patches/icedtea-gcc-suffix.patch: Remove CORBA chunk. + * patches/icedtea-lc_ctype.patch: Recreated. + * patches/icedtea-libraries.patch: Rerolled. + * patches/sh4-support.patch: Remove CORBA chunk. + 2010-09-14 Andrew John Hughes * Makefile.am, diff -r edaaf37351c4 -r ca86748424fa Makefile.am --- a/Makefile.am Tue Sep 14 15:59:59 2010 +0100 +++ b/Makefile.am Wed Nov 24 13:13:23 2010 +0000 @@ -1,22 +1,22 @@ # Dependencies -OPENJDK_VERSION = b106 +OPENJDK_VERSION = b117 -CORBA_CHANGESET = 00a2834117ff -HOTSPOT_CHANGESET = 7f4113719dc5 -JAXP_CHANGESET = 679653c22ae1 -JAXWS_CHANGESET = 191a3ec51d79 -JDK_CHANGESET = a094068f4c7b -LANGTOOLS_CHANGESET = 68035813467d -OPENJDK_CHANGESET = b79fce47b7c6 +CORBA_CHANGESET = 06146786b141 +HOTSPOT_CHANGESET = 81685aa89446 +JAXP_CHANGESET = 43658f98c582 +JAXWS_CHANGESET = f3444af18aff +JDK_CHANGESET = c981a387cd86 +LANGTOOLS_CHANGESET = fdf1b74d3437 +OPENJDK_CHANGESET = c94d1673451e -CORBA_SHA256SUM = 5648b189c94df46bbec9bc7c8640957befffbde68ff7ef9f8f8de9bd7fbe8e7d -HOTSPOT_SHA256SUM = 8ff4445304680ca7b09edd2b5713e5c04b0f68308c593d84429691ff4f7e8cfb -JAXP_SHA256SUM = c7d58a5dd2859ccb8b2d0897a26ce9b37895f530a94a5912179afc25cc1d14ea -JAXWS_SHA256SUM = 6fd65fd23c085c9c89f904da1b6448460af32d97d76bb0ba49630ee61d70a4d6 -JDK_SHA256SUM = 8b20e0686667a03cf028d57695b4bc2196c51db2d9c0873db7694624c384c446 -LANGTOOLS_SHA256SUM = 81b48f5f5782e62b0555735be24e294d3274c48fa1e027a63eb005465a505385 -OPENJDK_SHA256SUM = edb332586e2442bdbd4eed19c059535ade56dba5b436257031a0e5e827b89f12 +CORBA_SHA256SUM = 8d5a566e2d51d791d75f1ff25d5ae499317ec9391ed6bbc86eef483d15551d55 +HOTSPOT_SHA256SUM = 7ca6831eb7505c21b8607c7cf8d12cb182fca21c3a40c4696db737d56d80e54b +JAXP_SHA256SUM = e0aa77b166b30d4d4052110956da831c59c43e22f8d6feeac62a06775bb083b6 +JAXWS_SHA256SUM = ff4124f3765ac5ebac5ecfd0391cb2a54857d80ac7f967f60630ce0879cfd1f4 +JDK_SHA256SUM = d211d0f1ec2baae5560e076eb60e313421c087e85ead4592256c2885a99d8b85 +LANGTOOLS_SHA256SUM = d200c9bcf1c1805e0800a8cd8017e99ff6d12db14a1fcca8e9b67c59dc5ed448 +OPENJDK_SHA256SUM = d7a3a531f0e064898e511f08f1127447b9171adce21ae4cecb3bca84b3f7b531 CACAO_VERSION = e321b101a9ee CACAO_SHA256SUM = 46bc5b6212c199dc4a3dbebe6386fe15a8248625a5dffa17115aab394a298444 @@ -24,15 +24,15 @@ CACAO_URL = $(CACAO_BASE_URL)/$(CACAO_VE CACAO_URL = $(CACAO_BASE_URL)/$(CACAO_VERSION).tar.bz2 CACAO_SRC_ZIP = cacao-$(CACAO_VERSION).tar.bz2 -JAXWS_DROP_URL = https://jax-ws.dev.java.net/files/documents/4202/150896 -JAXWS_DROP_ZIP = jdk7-jaxws-b100.zip -JAXWS_DROP_SHA256SUM = 06e5f564430954211322fca353b0b8d916ffa8ae051412b7d9b5a5398090d887 -JAF_DROP_URL = http://kenai.com/projects/jdk7-drops/downloads/download -JAF_DROP_ZIP = jdk7-jaf-2009_08_28.zip -JAF_DROP_SHA256SUM = 8c81940b3017c0058367d7e7453123442f2cdd77c2bfe74acd9035f97e4db8e8 -JAXP_DROP_URL = https://jaxp.dev.java.net/files/documents/913/150785 -JAXP_DROP_ZIP = jdk7-jaxp-m7.zip -JAXP_DROP_SHA256SUM = d097627d4059d488c5a09d4e33cec275a193d4d8bc0fea8ef4f1337170904156 +JAXWS_DROP_URL = http://icedtea.classpath.org/download/drops +JAXWS_DROP_ZIP = jdk7-jaxws2_2-2010_08_19.zip +JAXWS_DROP_SHA256SUM = b8877aafbb15a348babcaee4ee372fb3e2ea0282f8fe93d306272fd24d7847de +JAF_DROP_URL = http://icedtea.classpath.org/download/drops +JAF_DROP_ZIP = jdk7-jaf-2010_08_19.zip +JAF_DROP_SHA256SUM = e6aefedfdbb4673e8019583d1344fb162b94e1b10382c362364dbbfd5889c09e +JAXP_DROP_URL = http://icedtea.classpath.org/download/drops +JAXP_DROP_ZIP = jaxp-1_4_4.zip +JAXP_DROP_SHA256SUM = 10b203bec5b7d3dd8f515a9e098f80abc316faf977bcc220b56efe3dc6e9e5e9 ICEDTEA_HG_URL = http://hg.openjdk.java.net/icedtea/jdk7 OPENJDK_HG_URL = http://hg.openjdk.java.net/jdk7/jdk7 @@ -319,7 +319,6 @@ ICEDTEA_PATCHES = \ patches/icedtea-signed-types.patch \ patches/icedtea-lc_ctype.patch \ patches/icedtea-tests-jdk.patch \ - patches/icedtea-stroker-finish.patch \ patches/icedtea-linker-libs-order.patch \ patches/icedtea-testenv.patch \ patches/icedtea-samejvm-safe.patch \ @@ -397,7 +396,6 @@ ICEDTEA_BOOT_PATCHES = patches/boot/ant- ICEDTEA_BOOT_PATCHES = patches/boot/ant-javac.patch \ patches/boot/corba-defs.patch \ patches/boot/corba-idlj.patch \ - patches/boot/corba-libgcj.patch \ patches/boot/corba-no-gen.patch \ patches/boot/corba-orb.patch \ patches/boot/demos.patch \ @@ -419,7 +417,9 @@ ICEDTEA_BOOT_PATCHES = patches/boot/ant- patches/boot/genstubs-nofork.patch \ patches/boot/getannotation-cast.patch \ patches/boot/break-processbuilder-dependency.patch \ - patches/boot/revert-6973616.patch + patches/boot/revert-6973616.patch \ + patches/boot/revert-6941137.patch \ + patches/boot/ecj-stringswitch.patch if CP39408_JAVAH ICEDTEA_BOOT_PATCHES += patches/boot/icedtea-pr39408.patch diff -r edaaf37351c4 -r ca86748424fa patches/boot/corba-defs.patch --- a/patches/boot/corba-defs.patch Tue Sep 14 15:59:59 2010 +0100 +++ b/patches/boot/corba-defs.patch Wed Nov 24 13:13:23 2010 +0000 @@ -1,6 +1,6 @@ diff -Nru ../openjdk.orig/openjdk-boot/c -diff -Nru ../openjdk.orig/openjdk-boot/corba/make/common/Defs.gmk openjdk-boot/corba/make/common/Defs.gmk ---- ../openjdk.orig/openjdk-boot/corba/make/common/Defs.gmk 2009-10-03 00:02:43.000000000 +0100 -+++ openjdk-boot/corba/make/common/Defs.gmk 2009-10-30 16:59:16.000000000 +0000 +diff -Nru openjdk.orig/corba/make/common/Defs.gmk openjdk/corba/make/common/Defs.gmk +--- openjdk-boot.orig/corba/make/common/Defs.gmk 2010-11-12 01:18:17.000000000 +0000 ++++ openjdk-boot/corba/make/common/Defs.gmk 2010-11-19 22:40:28.154937216 +0000 @@ -53,6 +53,13 @@ _OUTPUTDIR=$(TOPDIR)/build/$(PLATFORM)-$(ARCH) @@ -15,16 +15,16 @@ diff -Nru ../openjdk.orig/openjdk-boot/c # # Get platform definitions # -@@ -129,8 +136,6 @@ +@@ -85,8 +92,6 @@ # for build tool jar files BUILDTOOLJARDIR = $(OUTPUTDIR)/btjars ABS_BUILDTOOLJARDIR = $(ABS_OUTPUTDIR)/btjars -# for generated java source files -GENSRCDIR = $(OUTPUTDIR)/gensrc - # for generated C source files (not javah) - GENNATIVESRCDIR = $(OUTPUTDIR)/gennativesrc # for imported source files -@@ -231,7 +236,7 @@ + IMPORTSRCDIR = $(OUTPUTDIR)/impsrc + # for imported documents +@@ -167,7 +172,7 @@ # We define an intermediate variable for Java files because # we use its value later to help define $SOURCEPATH diff -r edaaf37351c4 -r ca86748424fa patches/boot/corba-libgcj.patch --- a/patches/boot/corba-libgcj.patch Tue Sep 14 15:59:59 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,12 +0,0 @@ -diff -Nru openjdk-boot.orig/corba/make/common/Defs-linux.gmk openjdk-boot/corba/make/common/Defs-linux.gmk ---- openjdk-boot.orig/corba/make/common/Defs-linux.gmk 2009-12-13 23:10:09.000000000 +0000 -+++ openjdk-boot/corba/make/common/Defs-linux.gmk 2009-12-14 15:54:17.000000000 +0000 -@@ -271,7 +271,7 @@ - # - VM_NAME = server - JVMLIB = -L$(BOOTDIR)/jre/lib/$(LIBARCH)/$(VM_NAME) -ljvm --JAVALIB = -L$(BOOTDIR)/jre/lib/$(LIBARCH) -ljava $(JVMLIB) -+JAVALIB = -L$(BOOTDIR)/jre/lib/$(LIBARCH) -L$(dir $(shell $(if $(GCJ),$(GCJ),$(subst gcc,gcj,$(CC))) --print-file-name=libgcj.so)) -lgcj $(JVMLIB) - - # - # We want to privatize JVM symbols on Solaris. This is so the user can diff -r edaaf37351c4 -r ca86748424fa patches/boot/ecj-diamond.patch --- a/patches/boot/ecj-diamond.patch Tue Sep 14 15:59:59 2010 +0100 +++ b/patches/boot/ecj-diamond.patch Wed Nov 24 13:13:23 2010 +0000 @@ -156,3 +156,333 @@ diff -r a094068f4c7b src/share/classes/c for (int i = 0; i < urls.length; i++) { String server = urls[i].getHost(); +diff -r 240d4d3f2db7 src/share/classes/com/sun/java/util/jar/pack/Attribute.java +--- openjdk-boot.orig/jdk/src/share/classes/com/sun/java/util/jar/pack/Attribute.java Tue Sep 14 17:29:58 2010 +0100 ++++ openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/Attribute.java Wed Sep 15 00:00:17 2010 +0100 +@@ -96,9 +96,9 @@ + } + + private static final byte[] noBytes = {}; +- private static final Map, List> canonLists = new HashMap<>(); +- private static final Map attributes = new HashMap<>(); +- private static final Map standardDefs = new HashMap<>(); ++ private static final Map, List> canonLists = new HashMap,List>(); ++ private static final Map attributes = new HashMap(); ++ private static final Map standardDefs = new HashMap(); + + // Canonicalized lists of trivial attrs (Deprecated, etc.) + // are used by trimToSize, in order to reduce footprint +@@ -108,7 +108,7 @@ + synchronized (canonLists) { + List cl = canonLists.get(al); + if (cl == null) { +- cl = new ArrayList<>(al.size()); ++ cl = new ArrayList(al.size()); + cl.addAll(al); + cl = Collections.unmodifiableList(cl); + canonLists.put(al, cl); +@@ -329,9 +329,9 @@ + + public void addAttribute(Attribute a) { + if (attributes == null) +- attributes = new ArrayList<>(3); ++ attributes = new ArrayList(3); + else if (!(attributes instanceof ArrayList)) +- attributes = new ArrayList<>(attributes); // unfreeze it ++ attributes = new ArrayList(attributes); // unfreeze it + attributes.add(a); + } + +@@ -339,7 +339,7 @@ + if (attributes == null) return null; + if (!attributes.contains(a)) return null; + if (!(attributes instanceof ArrayList)) +- attributes = new ArrayList<>(attributes); // unfreeze it ++ attributes = new ArrayList(attributes); // unfreeze it + attributes.remove(a); + return a; + } +@@ -824,7 +824,7 @@ + */ + static //private + Layout.Element[] tokenizeLayout(Layout self, int curCble, String layout) { +- ArrayList col = new ArrayList<>(layout.length()); ++ ArrayList col = new ArrayList(layout.length()); + tokenizeLayout(self, curCble, layout, col); + Layout.Element[] res = new Layout.Element[col.size()]; + col.toArray(res); +@@ -889,7 +889,7 @@ + case 'T': // union: 'T' any_int union_case* '(' ')' '[' body ']' + kind = EK_UN; + i = tokenizeSInt(e, layout, i); +- ArrayList cases = new ArrayList<>(); ++ ArrayList cases = new ArrayList(); + for (;;) { + // Keep parsing cases until we hit the default case. + if (layout.charAt(i++) != '(') +@@ -1043,7 +1043,7 @@ + } + static //private + String[] splitBodies(String layout) { +- ArrayList bodies = new ArrayList<>(); ++ ArrayList bodies = new ArrayList(); + // Parse several independent layout bodies: "[foo][bar]...[baz]" + for (int i = 0; i < layout.length(); i++) { + if (layout.charAt(i++) != '[') +diff -r 240d4d3f2db7 src/share/classes/com/sun/java/util/jar/pack/ConstantPool.java +--- openjdk-boot.orig/jdk/src/share/classes/com/sun/java/util/jar/pack/ConstantPool.java Tue Sep 14 17:29:58 2010 +0100 ++++ openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/ConstantPool.java Wed Sep 15 00:00:17 2010 +0100 +@@ -909,7 +909,7 @@ + public static + Index[] partition(Index ix, int[] keys) { + // %%% Should move this into class Index. +- ArrayList> parts = new ArrayList<>(); ++ ArrayList> parts = new ArrayList>(); + Entry[] cpMap = ix.cpMap; + assert(keys.length == cpMap.length); + for (int i = 0; i < keys.length; i++) { +@@ -920,7 +920,7 @@ + } + List part = parts.get(key); + if (part == null) { +- parts.set(key, part = new ArrayList<>()); ++ parts.set(key, part = new ArrayList()); + } + part.add(cpMap[i]); + } +diff -r 240d4d3f2db7 src/share/classes/com/sun/java/util/jar/pack/Package.java +--- openjdk-boot.orig/jdk/src/share/classes/com/sun/java/util/jar/pack/Package.java Tue Sep 14 17:29:58 2010 +0100 ++++ openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/Package.java Wed Sep 15 00:00:17 2010 +0100 +@@ -90,7 +90,7 @@ + public static final Attribute.Layout attrSourceFileSpecial; + public static final Map attrDefs; + static { +- HashMap ad = new HashMap<>(3); ++ HashMap ad = new HashMap(3); + attrCodeEmpty = Attribute.define(ad, ATTR_CONTEXT_METHOD, + "Code", "").layout(); + attrInnerClassesEmpty = Attribute.define(ad, ATTR_CONTEXT_CLASS, +@@ -160,7 +160,7 @@ + } + } + +- ArrayList classes = new ArrayList<>(); ++ ArrayList classes = new ArrayList(); + + public List getClasses() { + return classes; +@@ -271,7 +271,7 @@ + if (a != olda) { + if (verbose > 2) + Utils.log.fine("recoding obvious SourceFile="+obvious); +- List newAttrs = new ArrayList<>(getAttributes()); ++ List newAttrs = new ArrayList(getAttributes()); + int where = newAttrs.indexOf(olda); + newAttrs.set(where, a); + setAttributes(newAttrs); +@@ -320,7 +320,7 @@ + * with that of Package.this.allInnerClasses. + */ + public List computeGloballyImpliedICs() { +- HashSet cpRefs = new HashSet<>(); ++ HashSet cpRefs = new HashSet(); + { // This block temporarily displaces this.innerClasses. + ArrayList innerClassesSaved = innerClasses; + innerClasses = null; // ignore for the moment +@@ -329,7 +329,7 @@ + } + ConstantPool.completeReferencesIn(cpRefs, true); + +- HashSet icRefs = new HashSet<>(); ++ HashSet icRefs = new HashSet(); + for (Entry e : cpRefs) { + // Restrict cpRefs to InnerClasses entries only. + if (!(e instanceof ClassEntry)) continue; +@@ -345,7 +345,7 @@ + // This loop is structured this way so as to accumulate + // entries into impliedICs in an order which reflects + // the order of allInnerClasses. +- ArrayList impliedICs = new ArrayList<>(); ++ ArrayList impliedICs = new ArrayList(); + for (InnerClass ic : allInnerClasses) { + // This one is locally relevant if it describes + // a member of the current class, or if the current +@@ -388,8 +388,8 @@ + // Diff is A since I is empty. + } + // (I*A) is non-trivial +- HashSet center = new HashSet<>(actualICs); +- center.retainAll(new HashSet<>(impliedICs)); ++ HashSet center = new HashSet(actualICs); ++ center.retainAll(new HashSet(impliedICs)); + impliedICs.addAll(actualICs); + impliedICs.removeAll(center); + // Diff is now I^A = (I+A)-(I*A). +@@ -518,7 +518,7 @@ + super(flags, descriptor); + assert(!descriptor.isMethod()); + if (fields == null) +- fields = new ArrayList<>(); ++ fields = new ArrayList(); + boolean added = fields.add(this); + assert(added); + order = fields.size(); +@@ -543,7 +543,7 @@ + super(flags, descriptor); + assert(descriptor.isMethod()); + if (methods == null) +- methods = new ArrayList<>(); ++ methods = new ArrayList(); + boolean added = methods.add(this); + assert(added); + } +@@ -713,14 +713,14 @@ + } + + // What non-class files are in this unit? +- ArrayList files = new ArrayList<>(); ++ ArrayList files = new ArrayList(); + + public List getFiles() { + return files; + } + + public List getClassStubs() { +- ArrayList classStubs = new ArrayList<>(classes.size()); ++ ArrayList classStubs = new ArrayList(classes.size()); + for (Class cls : classes) { + assert(cls.file.isClassStub()); + classStubs.add(cls.file); +@@ -839,7 +839,7 @@ + public InputStream getInputStream() { + InputStream in = new ByteArrayInputStream(append.toByteArray()); + if (prepend.size() == 0) return in; +- ArrayList isa = new ArrayList<>(prepend.size()+1); ++ ArrayList isa = new ArrayList(prepend.size()+1); + for (Iterator i = prepend.iterator(); i.hasNext(); ) { + byte[] bytes = (byte[]) i.next(); + isa.add(new ByteArrayInputStream(bytes)); +@@ -876,7 +876,7 @@ + } + + // Is there a globally declared table of inner classes? +- ArrayList allInnerClasses = new ArrayList<>(); ++ ArrayList allInnerClasses = new ArrayList(); + HashMap allInnerClassesByThis; + + public +@@ -891,7 +891,7 @@ + allInnerClasses.addAll(ics); + + // Make an index: +- allInnerClassesByThis = new HashMap<>(allInnerClasses.size()); ++ allInnerClassesByThis = new HashMap(allInnerClasses.size()); + for (InnerClass ic : allInnerClasses) { + Object pic = allInnerClassesByThis.put(ic.thisClass, ic); + assert(pic == null); // caller must ensure key uniqueness! +@@ -1288,7 +1288,7 @@ + + // Use this before writing the class files. + void ensureAllClassFiles() { +- HashSet fileSet = new HashSet<>(files); ++ HashSet fileSet = new HashSet(files); + for (Class cls : classes) { + // Add to the end of ths list: + if (!fileSet.contains(cls.file)) +diff -r 240d4d3f2db7 src/share/classes/com/sun/java/util/jar/pack/PackerImpl.java +--- openjdk-boot.orig/jdk/src/share/classes/com/sun/java/util/jar/pack/PackerImpl.java Tue Sep 14 17:29:58 2010 +0100 ++++ openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/PackerImpl.java Wed Sep 15 00:00:17 2010 +0100 +@@ -599,7 +599,7 @@ + + List scanJar(JarFile jf) throws IOException { + // Collect jar entries, preserving order. +- List inFiles = new ArrayList<>(); ++ List inFiles = new ArrayList(); + for (JarEntry je : Collections.list(jf.entries())) { + InFile inFile = new InFile(jf, je); + assert(je.isDirectory() == inFile.name.endsWith("/")); +diff -r 240d4d3f2db7 src/share/classes/com/sun/java/util/jar/pack/TLGlobals.java +--- openjdk-boot.orig/jdk/src/share/classes/com/sun/java/util/jar/pack/TLGlobals.java Tue Sep 14 17:29:58 2010 +0100 ++++ openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/TLGlobals.java Wed Sep 15 00:00:17 2010 +0100 +@@ -58,12 +58,12 @@ + private final Map memberEntries; + + TLGlobals() { +- utf8Entries = new HashMap<>(); +- classEntries = new HashMap<>(); +- literalEntries = new HashMap<>(); +- signatureEntries = new HashMap<>(); +- descriptorEntries = new HashMap<>(); +- memberEntries = new HashMap<>(); ++ utf8Entries = new HashMap(); ++ classEntries = new HashMap(); ++ literalEntries = new HashMap(); ++ signatureEntries = new HashMap(); ++ descriptorEntries = new HashMap(); ++ memberEntries = new HashMap(); + props = new PropMap(); + } + +diff -r 240d4d3f2db7 src/share/classes/com/sun/java/util/jar/pack/Utils.java +--- openjdk-boot.orig/jdk/src/share/classes/com/sun/java/util/jar/pack/Utils.java Tue Sep 14 17:29:58 2010 +0100 ++++ openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/Utils.java Wed Sep 15 00:00:17 2010 +0100 +@@ -123,7 +123,7 @@ + // Keep a TLS point to the global data and environment. + // This makes it simpler to supply environmental options + // to the engine code, especially the native code. +- static final ThreadLocal currentInstance = new ThreadLocal<>(); ++ static final ThreadLocal currentInstance = new ThreadLocal(); + + // convenience methods to access the TL globals + static TLGlobals getTLGlobals() { +diff -r 240d4d3f2db7 src/share/classes/com/sun/java/util/jar/pack/UnpackerImpl.java +--- openjdk-boot.orig/jdk/src/share/classes/com/sun/java/util/jar/pack/UnpackerImpl.java Tue Sep 14 17:29:58 2010 +0100 ++++ openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/UnpackerImpl.java Wed Sep 15 14:34:26 2010 +0100 +@@ -199,7 +199,7 @@ + props.setProperty(java.util.jar.Pack200.Unpacker.PROGRESS,"50"); + pkg.ensureAllClassFiles(); + // Now write out the files. +- HashSet classesToWrite = new HashSet<>(pkg.getClasses()); ++ HashSet classesToWrite = new HashSet(pkg.getClasses()); + for (Iterator i = pkg.getFiles().iterator(); i.hasNext(); ) { + Package.File file = (Package.File) i.next(); + String name = file.nameString; From doko at ubuntu.com Wed Nov 24 05:16:30 2010 From: doko at ubuntu.com (Matthias Klose) Date: Wed, 24 Nov 2010 14:16:30 +0100 Subject: [icedtea-web] fails to build with an older netx.jar on the path Message-ID: <4CED102E.2060407@ubuntu.com> I had an older ./usr/lib/jvm/java-6-openjdk/jre/lib/netx.jar installed on the system, then the build fails with: /scratch/packages/openjdk/web/icedtea-web-1.0~20101124/build/../plugin/icedteanp/java/sun/applet/PluginMain.java:126: cannot find symbol symbol : method setRedirectStreams(boolean) location: class net.sourceforge.jnlp.runtime.JNLPRuntime JNLPRuntime.setRedirectStreams(redirectStreams); ^ /scratch/packages/openjdk/web/icedtea-web-1.0~20101124/build/../plugin/icedteanp/java/sun/applet/PluginMain.java:203: cannot find symbol symbol : method getConfiguration() location: class net.sourceforge.jnlp.runtime.JNLPRuntime boolean installAuthenticator = Boolean.valueOf(JNLPRuntime.getConfiguration() ^ looks like the -bootclasspath needs to be set to find the current netx. From doko at icedtea.classpath.org Wed Nov 24 05:21:44 2010 From: doko at icedtea.classpath.org (doko at icedtea.classpath.org) Date: Wed, 24 Nov 2010 13:21:44 +0000 Subject: /hg/icedtea-web: Search javaws.desktop.in in $(srcdir). Message-ID: changeset 5782c25b26dc in /hg/icedtea-web details: http://icedtea.classpath.org/hg/icedtea-web?cmd=changeset;node=5782c25b26dc author: doko at ubuntu.com date: Wed Nov 24 14:15:17 2010 +0100 Search javaws.desktop.in in $(srcdir). 2010-11-24 Matthias Klose * Makefile.am (javaws.desktop): Search javaws.desktop.in in $(srcdir). diffstat: 2 files changed, 5 insertions(+), 1 deletion(-) ChangeLog | 4 ++++ Makefile.am | 2 +- diffs (23 lines): diff -r e1400d406d85 -r 5782c25b26dc ChangeLog --- a/ChangeLog Wed Nov 24 13:41:57 2010 +0100 +++ b/ChangeLog Wed Nov 24 14:15:17 2010 +0100 @@ -1,3 +1,7 @@ 2010-11-24 Matthias Klose + + * Makefile.am (javaws.desktop): Search javaws.desktop.in in $(srcdir). + 2010-11-24 Matthias Klose * Makefile.am (LAUNCHER_LINK): Don't explicitely link with -lc, diff -r e1400d406d85 -r 5782c25b26dc Makefile.am --- a/Makefile.am Wed Nov 24 13:41:57 2010 +0100 +++ b/Makefile.am Wed Nov 24 14:15:17 2010 +0100 @@ -282,7 +282,7 @@ extra-lib/about.jar: stamps/extra-class- $(CC) $(NETX_LAUNCHER_OBJECTS) $(LAUNCHER_LINK) javaws.desktop: javaws.desktop.in - sed "s#PATH_TO_JAVAWS#$(DESTDIR)$(bindir)/javaws#" < javaws.desktop.in > javaws.desktop + sed "s#PATH_TO_JAVAWS#$(DESTDIR)$(bindir)/javaws#" < $(srcdir)/javaws.desktop.in > javaws.desktop # plugin tests From bugzilla-daemon at icedtea.classpath.org Wed Nov 24 05:48:36 2010 From: bugzilla-daemon at icedtea.classpath.org (bugzilla-daemon at icedtea.classpath.org) Date: Wed, 24 Nov 2010 13:48:36 +0000 Subject: [Bug 598] New: Tomcat crashes on tomcat stop Message-ID: http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=598 Summary: Tomcat crashes on tomcat stop Product: IcedTea Version: 6-1.7.5 Platform: 64-bit OS/Version: Linux Status: NEW Severity: critical Priority: P2 Component: IcedTea6 AssignedTo: unassigned at icedtea.classpath.org ReportedBy: dpaul at crownawards.com First let me start by saying I am new to the field of Tomcat and Apache support. We have just built two new load balanced Centos 5.5 boxes. One is running fine and the other had been running fine through all testing. starting yesterday the system shutsdown and restarts tomcat at 5 am using Cron. Both mornings the one system has reported crashes at the time of the Tomcat stop. The begining of the two error reports are below. There is more to each but I am not sure if you need the whole long report. Just let me know if you want me to post more. : 1) # A fatal error has been detected by the Java Runtime Environment: # # SIGSEGV (0xb) at pc=0x00002aab3d34529d, pid=20643, tid=1124108608 # # JRE version: 6.0_17-b17 # Java VM: OpenJDK 64-Bit Server VM (14.0-b16 mixed mode linux-amd64 ) # Derivative: IcedTea6 1.7.5 # Distribution: Custom build (Wed Oct 13 13:04:40 EDT 2010) # Problematic frame: # C [libapr-1.so.0+0x1629d] apr_pool_cleanup_register+0x3d --------------- T H R E A D --------------- Current thread (0x00002aab40fe6800): JavaThread "ajp-localhost%2F127.0.0.1-8009-Acceptor-0" daemon [_thread_in_native, id=20873, stack(0x0000000042f08000,0x0000000043009000)] siginfo:si_signo=SIGSEGV: si_errno=0, si_code=1 (SEGV_MAPERR), si_addr=0x0000000000000008 Registers: RAX=0x0000000000000000, RBX=0x000000000cd12c98, RCX=0x00002aab3d348e90, RDX=0x0000000000000000 RSP=0x0000000043007a20, RBP=0x000000000cd12d48, RSI=0x0000000000000020, RDI=0x0000000000000000 R8 =0x000000000cd12d48, R9 =0x0000000000000000, R10=0x0000000000000000, R11=0x0000000000000206 R12=0x00002aab3d348e90, R13=0x00002aab3d348e90, R14=0x0000000043007b30, R15=0x00002aab40fe6800 RIP=0x00002aab3d34529d, EFL=0x0000000000010206, CSGSFS=0x0000000000000033, ERR=0x0000000000000006 TRAPNO=0x000000000000000e 2) # A fatal error has been detected by the Java Runtime Environment: # # SIGSEGV (0xb) at pc=0x0000003f0327c1c2, pid=13044, tid=1122154816 # # JRE version: 6.0_17-b17 # Java VM: OpenJDK 64-Bit Server VM (14.0-b16 mixed mode linux-amd64 ) # Derivative: IcedTea6 1.7.5 # Distribution: Custom build (Wed Oct 13 13:04:40 EDT 2010) # Problematic frame: # C [libc.so.6+0x7c1c2] memcpy+0xd2 --------------- T H R E A D --------------- Current thread (0x000000000ed09000): JavaThread "ajp-localhost%2F127.0.0.1-8009-Acceptor-0" daemon [_thread_in_native, id=13241, stack(0x0000000042d2b000,0x0000 000042e2c000)] siginfo:si_signo=SIGSEGV: si_errno=0, si_code=128 (), si_addr=0x0000000000000000 Registers: RAX=0x000000000f6af648, RBX=0x000000000f6af5f8, RCX=0x0000000000000005, RDX=0x00000000000000c0 RSP=0x0000000042e2a8b8, RBP=0x00002aab403ad8e8, RSI=0x0107990193000a98, RDI=0x000000000f6af648 R8 =0x0000000000000038, R9 =0x0000000000100000, R10=0x0000000000000008, R11=0x0000000000000206 R12=0x0000000042e2a8f0, R13=0x000000000f6af548, R14=0x0000000042e2a998, R15=0x000000000ed09000 RIP=0x0000003f0327c1c2, EFL=0x0000000000010206, CSGSFS=0x0000000000000033, ERR=0x0000000000000000 TRAPNO=0x000000000000000d -- Configure bugmail: http://icedtea.classpath.org/bugzilla/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are the assignee for the bug, or are watching the assignee. From ahughes at redhat.com Wed Nov 24 06:15:50 2010 From: ahughes at redhat.com (Dr Andrew John Hughes) Date: Wed, 24 Nov 2010 14:15:50 +0000 Subject: [SECURITY] IcedTea6 1.7.6, 1.8.3, 1.9.2 Released! Message-ID: <20101124141550.GC1530@rivendell.middle-earth.co.uk> We are pleased to announce a new set of security releases, IcedTea6 1.7.6, IcedTea6 1.8.3 and IcedTea6 1.9.2. This update contains the following security updates: * RH645843, CVE-2010-3860: IcedTea System property information leak via public static The IcedTea project provides a harness to build the source code from OpenJDK6 using Free Software build tools. It also includes the only Free Java plugin and Web Start implementation, and support for additional architectures over and above x86, x86_64 and SPARC via the Zero assembler port. What?s New? ?????? IcedTea6 1.7.6 ============== * Allow the building of NetX to be disabled. * Security updates - RH645843, CVE-2010-3860: IcedTea System property information leak via public static * Backports - S6853592: VM test nsk.regression.b4261880 fails with "X Error of failed request: BadWindow" inconsistently. * NetX - Do not prompt user multiple times for the same certificate. - PR592: NetX can create invalid desktop entry files IcedTea6 1.8.3 ============== * Allow the building of NetX to be disabled. * Security updates - RH645843, CVE-2010-3860: IcedTea System property information leak via public static * Backports - S6853592: VM test nsk.regression.b4261880 fails with "X Error of failed request: BadWindow" inconsistently. * NetX - Do not prompt user multiple times for the same certificate. - PR592: NetX can create invalid desktop entry files IcedTea6 1.9.2 ============== * Upgrade to latest revision of hs19 (b09). * Allow the building of NetX to be disabled. * Additional S390 size_t fixes. * Switch to the IcedTea server for JAXP, JAF and JAXWS tarballs. * Security updates - RH645843, CVE-2010-3860: IcedTea System property information leak via public static * Backports - S6622432: RFE: Performance improvements to java.math.BigDecimal - S6850606: Regression from JDK 1.6.0_12 - S6876282: BigDecimal's divide(BigDecimal bd, RoundingFormat r) produces incorrect result - S6991430, PR579: Zero PowerPC fix. - S6703377: freetype: glyph vector outline is not translated correctly - S6853592: VM test nsk.regression.b4261880 fails with "X Error of failed request: BadWindow" inconsistently. * Bug fixes - RH647737: Disable compressed oops in hs19 to avoid Eclipse failures. - RH643674: Update fontconfig files for Fedora 11, 12, 13 and 14. * NetX - Do not prompt user multiple times for the same certificate. - PR592: NetX can create invalid desktop entry files The tarballs can be downloaded from: * http://icedtea.classpath.org/download/source/icedtea6-1.7.6.tar.gz * http://icedtea.classpath.org/download/source/icedtea6-1.8.3.tar.gz * http://icedtea.classpath.org/download/source/icedtea6-1.9.2.tar.gz SHA256 sums: b28c8bd39d9bd8a28efaaa38280288a3faa6bec0d756323c0555ad3d8c5d77f5 icedtea6-1.7.6.tar.gz d65a16345e8f6a702e5db1efbe02d0c41b565d4d1afce2d011169588fe8aa6ad icedtea6-1.8.3.tar.gz abed4d2258fd6f047b08926fa9dbde86bdf7f47b08c82c195abb7244163cf99b icedtea6-1.9.2.tar.gz The following people helped with these releases: Deepak Bhole, Dan Hor?k, Andrew John Hughes, Matthias Klose, Omair Majid, Pavel Tisnovsky, Jiri Vanek We would also like to thank the bug reporters and testers! To get started: $ tar xzf icedtea6-.tar.gz $ cd icedtea6- Full build requirements and instructions are in INSTALL: $ ./configure [--enable-zero --enable-pulse-java --enable-systemtap ...] $ make -- Andrew :) Free Java Software Engineer Red Hat, Inc. (http://www.redhat.com) Support Free Java! Contribute to GNU Classpath and the OpenJDK http://www.gnu.org/software/classpath http://openjdk.java.net PGP Key: 94EFD9D8 (http://subkeys.pgp.net) Fingerprint = F8EF F1EA 401E 2E60 15FA 7927 142C 2591 94EF D9D8 From bugzilla-daemon at icedtea.classpath.org Wed Nov 24 06:30:53 2010 From: bugzilla-daemon at icedtea.classpath.org (bugzilla-daemon at icedtea.classpath.org) Date: Wed, 24 Nov 2010 14:30:53 +0000 Subject: [Bug 597] Entities are parsed incorrectly in PARAM tag in applet plugin Message-ID: http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=597 asu at redhat.com changed: What |Removed |Added ---------------------------------------------------------------------------- Status|NEW |ASSIGNED ------- Comment #1 from asu at redhat.com 2010-11-24 14:30 ------- I can confirm that this happens in firefox as well. The problem shown here is happening because the tags are being scanned one character at a time. When a quote ' or " is found it continues to grab everything between the next ' or " as the value, all other items are ignored. Refer to PluginAppletViewer.java's method ScanTag(). -- Configure bugmail: http://icedtea.classpath.org/bugzilla/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are the assignee for the bug, or are watching the assignee. From andrew at icedtea.classpath.org Wed Nov 24 06:57:09 2010 From: andrew at icedtea.classpath.org (andrew at icedtea.classpath.org) Date: Wed, 24 Nov 2010 14:57:09 +0000 Subject: /hg/release/icedtea6-1.9: 5 new changesets Message-ID: changeset 9aa0018d8c28 in /hg/release/icedtea6-1.9 details: http://icedtea.classpath.org/hg/release/icedtea6-1.9?cmd=changeset;node=9aa0018d8c28 author: Andrew John Hughes date: Fri Nov 12 17:05:06 2010 +0000 RH645843, CVE-2010-3860: Don't expose system properties via public variables. 2010-11-12 Andrew John Hughes * NEWS: Updated. 2010-11-11 Omair Majid RH645843, CVE-2010-3860 * netx/net/sourceforge/jnlp/runtime/Boot.java, * netx/net/sourceforge/jnlp/runtime/JNLPRuntime.java, * netx/net/sourceforge/jnlp/security/SecurityUtil.java, * netx/net/sourceforge/jnlp/services/SingleInstanceLock.java, * netx/net/sourceforge/jnlp/util/XDesktopEntry.java, * plugin/icedteanp/java/sun/applet/PluginMain.java: Fix exposure of system properties. changeset 23f4ec2c7f7a in /hg/release/icedtea6-1.9 details: http://icedtea.classpath.org/hg/release/icedtea6-1.9?cmd=changeset;node=23f4ec2c7f7a author: Andrew John Hughes date: Wed Nov 17 14:24:45 2010 +0000 PR592: Sanitize user-entered values used in desktop entries. 2010-11-12 Omair Majid PR592 * NEWS: Updated. * netx/net/sourceforge/jnlp/util/XDesktopEntry.java: (getContentsAsReader()): Call sanitize on user-inputted values. (sanitize(String)): Sanitize values used in desktop entries. changeset 3d0ae18fb9a3 in /hg/release/icedtea6-1.9 details: http://icedtea.classpath.org/hg/release/icedtea6-1.9?cmd=changeset;node=3d0ae18fb9a3 author: Andrew John Hughes date: Wed Nov 17 16:37:33 2010 +0000 Bump to 1.9.2 proper and add release date. 2010-11-17 Andrew John Hughes * configure.ac: Bump to 1.9.2 proper. * NEWS: Add release date. changeset c298e3121204 in /hg/release/icedtea6-1.9 details: http://icedtea.classpath.org/hg/release/icedtea6-1.9?cmd=changeset;node=c298e3121204 author: Andrew John Hughes date: Wed Nov 17 22:55:22 2010 +0000 Split the patching of the applet class files into a separate patch, applied to all builds. 2010-11-17 Andrew John Hughes * Makefile.am: Add applet hole patch for all builds. * patches/applet_hole.patch: Split applet class patching into separate file to be applied in all builds. * patches/extensions/netx.patch: Include only the Makefile additions to build the jaxws binary and documentation. changeset e2b020ce5f03 in /hg/release/icedtea6-1.9 details: http://icedtea.classpath.org/hg/release/icedtea6-1.9?cmd=changeset;node=e2b020ce5f03 author: Andrew John Hughes date: Wed Nov 24 14:56:41 2010 +0000 Added tag icedtea6-1.9.2 for changeset c298e3121204 diffstat: 12 files changed, 116 insertions(+), 133 deletions(-) .hgtags | 1 ChangeLog | 40 ++++ Makefile.am | 3 NEWS | 5 configure.ac | 2 netx/net/sourceforge/jnlp/runtime/Boot.java | 4 netx/net/sourceforge/jnlp/runtime/JNLPRuntime.java | 51 ++++- netx/net/sourceforge/jnlp/security/SecurityUtil.java | 5 netx/net/sourceforge/jnlp/services/SingleInstanceLock.java | 2 netx/net/sourceforge/jnlp/util/XDesktopEntry.java | 24 ++ patches/extensions/netx.patch | 108 ------------ plugin/icedteanp/java/sun/applet/PluginMain.java | 4 diffs (425 lines): diff -r 1c9dabc8729f -r e2b020ce5f03 .hgtags --- a/.hgtags Fri Nov 12 00:28:26 2010 +0000 +++ b/.hgtags Wed Nov 24 14:56:41 2010 +0000 @@ -21,3 +21,4 @@ cb463b94b82da269ea089c481ed5e39700525a8a cb463b94b82da269ea089c481ed5e39700525a8a icedtea6-1.9-branch 5464f814f82f7d9c8428179a71c51f11094717fd icedtea6-1.9 2fa3935ab384958d06614cec587506702bc8e658 icedtea6-1.9.1 +c298e31212047871e12f07d6900d7580f83b5831 icedtea6-1.9.2 diff -r 1c9dabc8729f -r e2b020ce5f03 ChangeLog --- a/ChangeLog Fri Nov 12 00:28:26 2010 +0000 +++ b/ChangeLog Wed Nov 24 14:56:41 2010 +0000 @@ -1,3 +1,43 @@ 2010-11-11 Andrew John Hughes + + * Makefile.am: + Add applet hole patch for all builds. + * patches/applet_hole.patch: + Split applet class patching into separate + file to be applied in all builds. + * patches/extensions/netx.patch: + Include only the Makefile additions to build + the jaxws binary and documentation. + +2010-11-17 Andrew John Hughes + + * configure.ac: Bump to 1.9.2 proper. + * NEWS: Add release date. + +2010-11-12 Omair Majid + + PR592 + * NEWS: Updated. + * netx/net/sourceforge/jnlp/util/XDesktopEntry.java: + (getContentsAsReader()): Call sanitize on user-inputted values. + (sanitize(String)): Sanitize values used in desktop + entries. + +2010-11-12 Andrew John Hughes + + * NEWS: Updated. + +2010-11-11 Omair Majid + + RH645843, CVE-2010-3860 + * netx/net/sourceforge/jnlp/runtime/Boot.java, + * netx/net/sourceforge/jnlp/runtime/JNLPRuntime.java, + * netx/net/sourceforge/jnlp/security/SecurityUtil.java, + * netx/net/sourceforge/jnlp/services/SingleInstanceLock.java, + * netx/net/sourceforge/jnlp/util/XDesktopEntry.java, + * plugin/icedteanp/java/sun/applet/PluginMain.java: + Fix exposure of system properties. + 2010-11-11 Andrew John Hughes * configure.ac: Update to 1.9.2pre. diff -r 1c9dabc8729f -r e2b020ce5f03 Makefile.am --- a/Makefile.am Fri Nov 12 00:28:26 2010 +0000 +++ b/Makefile.am Wed Nov 24 14:56:41 2010 +0000 @@ -315,7 +315,8 @@ ICEDTEA_PATCHES = \ patches/openjdk/6622432-bigdecimal_performance.patch \ patches/openjdk/6850606-bigdecimal_regression.patch \ patches/openjdk/6876282-bigdecimal_divide.patch \ - patches/f14-fonts.patch + patches/f14-fonts.patch \ + patches/applet_hole.patch if WITH_ALT_HSBUILD ICEDTEA_PATCHES += \ diff -r 1c9dabc8729f -r e2b020ce5f03 NEWS --- a/NEWS Fri Nov 12 00:28:26 2010 +0000 +++ b/NEWS Wed Nov 24 14:56:41 2010 +0000 @@ -8,12 +8,14 @@ GX - http://bugs.gentoo.org/show_bug.cg CVE-XXXX-YYYY: http://www.cve.mitre.org/cgi-bin/cvename.cgi?name=XXXX-YYYY -New in release 1.9.2 (2010-11-XX): +New in release 1.9.2 (2010-11-24): * Upgrade to latest revision of hs19 (b09). * Allow the building of NetX to be disabled. * Additional S390 size_t fixes. * Switch to the IcedTea server for JAXP, JAF and JAXWS tarballs. +* Security updates + - RH645843, CVE-2010-3860: IcedTea System property information leak via public static * Backports - S6622432: RFE: Performance improvements to java.math.BigDecimal - S6850606: Regression from JDK 1.6.0_12 @@ -27,6 +29,7 @@ New in release 1.9.2 (2010-11-XX): - RH643674: Update fontconfig files for Fedora 11, 12, 13 and 14. * NetX - Do not prompt user multiple times for the same certificate. + - PR592: NetX can create invalid desktop entry files New in release 1.9.1 (2010-10-13): diff -r 1c9dabc8729f -r e2b020ce5f03 configure.ac --- a/configure.ac Fri Nov 12 00:28:26 2010 +0000 +++ b/configure.ac Wed Nov 24 14:56:41 2010 +0000 @@ -1,4 +1,4 @@ AC_INIT([icedtea6],[1.9.2pre],[distro-pk -AC_INIT([icedtea6],[1.9.2pre],[distro-pkg-dev at openjdk.java.net]) +AC_INIT([icedtea6],[1.9.2],[distro-pkg-dev at openjdk.java.net]) AM_INIT_AUTOMAKE([1.9 tar-pax foreign]) AC_CONFIG_FILES([Makefile]) diff -r 1c9dabc8729f -r e2b020ce5f03 netx/net/sourceforge/jnlp/runtime/Boot.java --- a/netx/net/sourceforge/jnlp/runtime/Boot.java Fri Nov 12 00:28:26 2010 +0000 +++ b/netx/net/sourceforge/jnlp/runtime/Boot.java Wed Nov 24 14:56:41 2010 +0000 @@ -230,8 +230,8 @@ public final class Boot implements Privi */ private static String getAboutFile() { - if (new File(JNLPRuntime.NETX_ABOUT_FILE).exists()) - return JNLPRuntime.NETX_ABOUT_FILE; + if (new File(JNLPRuntime.getAboutFile()).exists()) + return JNLPRuntime.getAboutFile(); else return null; } diff -r 1c9dabc8729f -r e2b020ce5f03 netx/net/sourceforge/jnlp/runtime/JNLPRuntime.java --- a/netx/net/sourceforge/jnlp/runtime/JNLPRuntime.java Fri Nov 12 00:28:26 2010 +0000 +++ b/netx/net/sourceforge/jnlp/runtime/JNLPRuntime.java Wed Nov 24 14:56:41 2010 +0000 @@ -105,38 +105,38 @@ public class JNLPRuntime { private static List initialArguments; /** Username */ - public static final String USER = System.getProperty("user.name"); + private static final String USER = System.getProperty("user.name"); /** User's home directory */ - public static final String HOME_DIR = System.getProperty("user.home"); + private static final String HOME_DIR = System.getProperty("user.home"); /** the ~/.netxrc file containing netx settings */ - public static final String NETXRC_FILE = HOME_DIR + File.separator + ".netxrc"; + private static final String NETXRC_FILE = HOME_DIR + File.separator + ".netxrc"; /** the ~/.netx directory containing user-specific data */ - public static final String NETX_DIR = HOME_DIR + File.separator + ".netx"; + private static final String NETX_DIR = HOME_DIR + File.separator + ".netx"; /** the ~/.netx/security directory containing security related information */ - public static final String SECURITY_DIR = NETX_DIR + File.separator + "security"; + private static final String SECURITY_DIR = NETX_DIR + File.separator + "security"; /** the ~/.netx/security/trusted.certs file containing trusted certificates */ - public static final String CERTIFICATES_FILE = SECURITY_DIR + File.separator + "trusted.certs"; + private static final String CERTIFICATES_FILE = SECURITY_DIR + File.separator + "trusted.certs"; /** the /tmp/ directory used for temporary files */ - public static final String TMP_DIR = System.getProperty("java.io.tmpdir"); + private static final String TMP_DIR = System.getProperty("java.io.tmpdir"); /** * the /tmp/$USER/netx/locks/ directory containing locks for single instance * applications */ - public static final String LOCKS_DIR = TMP_DIR + File.separator + USER + File.separator + private static final String LOCKS_DIR = TMP_DIR + File.separator + USER + File.separator + "netx" + File.separator + "locks"; /** the java.home directory */ - public static final String JAVA_HOME_DIR = System.getProperty("java.home"); + private static final String JAVA_HOME_DIR = System.getProperty("java.home"); /** the JNLP file to open to display the network-based about window */ - public static final String NETX_ABOUT_FILE = JAVA_HOME_DIR + File.separator + "lib" + private static final String NETX_ABOUT_FILE = JAVA_HOME_DIR + File.separator + "lib" + File.separator + "about.jnlp"; @@ -559,4 +559,35 @@ public class JNLPRuntime { return initialArguments; } + /** Get the location of the certificate files user-level used by netx */ + public static String getCertificatesFile() { + System.getProperty("user.home"); + return CERTIFICATES_FILE; + } + + /** Get the home directory */ + public static String getHomeDir() { + System.getProperty("user.home"); + return HOME_DIR; + } + + /** Get the location of the about file */ + public static String getAboutFile() { + System.getProperty("java.home"); + return NETX_ABOUT_FILE; + } + + /** Get the location of the locks directory */ + public static String getLocksDir() { + System.getProperty("user.home"); + System.getProperty("java.io.tmpdir"); + return LOCKS_DIR; + } + + /** Get the location of a temporary location */ + public static String getTempDir() { + System.getProperty("java.io.tmpdir"); + return TMP_DIR; + } + } diff -r 1c9dabc8729f -r e2b020ce5f03 netx/net/sourceforge/jnlp/security/SecurityUtil.java --- a/netx/net/sourceforge/jnlp/security/SecurityUtil.java Fri Nov 12 00:28:26 2010 +0000 +++ b/netx/net/sourceforge/jnlp/security/SecurityUtil.java Wed Nov 24 14:56:41 2010 +0000 @@ -49,13 +49,12 @@ public class SecurityUtil { private static final char[] password = "changeit".toCharArray(); public static String getTrustedCertsFilename() throws Exception{ - - String homeDir = JNLPRuntime.HOME_DIR; + String homeDir = JNLPRuntime.getHomeDir(); if (homeDir == null) { throw new Exception("Could not access home directory"); } else { - return JNLPRuntime.CERTIFICATES_FILE; + return JNLPRuntime.getCertificatesFile(); } } diff -r 1c9dabc8729f -r e2b020ce5f03 netx/net/sourceforge/jnlp/services/SingleInstanceLock.java --- a/netx/net/sourceforge/jnlp/services/SingleInstanceLock.java Fri Nov 12 00:28:26 2010 +0000 +++ b/netx/net/sourceforge/jnlp/services/SingleInstanceLock.java Wed Nov 24 14:56:41 2010 +0000 @@ -126,7 +126,7 @@ class SingleInstanceLock { * may or may not exist. */ private File getLockFile() { - File baseDir = new File(JNLPRuntime.LOCKS_DIR); + File baseDir = new File(JNLPRuntime.getLocksDir()); if (!baseDir.isDirectory() && !baseDir.mkdirs()) { throw new RuntimeException(R("RNoLockDir", baseDir)); diff -r 1c9dabc8729f -r e2b020ce5f03 netx/net/sourceforge/jnlp/util/XDesktopEntry.java --- a/netx/net/sourceforge/jnlp/util/XDesktopEntry.java Fri Nov 12 00:28:26 2010 +0000 +++ b/netx/net/sourceforge/jnlp/util/XDesktopEntry.java Wed Nov 24 14:56:41 2010 +0000 @@ -77,9 +77,9 @@ public class XDesktopEntry { String fileContents = "[Desktop Entry]\n"; fileContents += "Version=1.0\n"; - fileContents += "Name=" + file.getTitle() + "\n"; + fileContents += "Name=" + sanitize(file.getTitle()) + "\n"; fileContents += "GenericName=Java Web Start Application\n"; - fileContents += "Comment=" + file.getInformation().getDescription() + "\n"; + fileContents += "Comment=" + sanitize(file.getInformation().getDescription()) + "\n"; fileContents += "Type=Application\n"; if (iconLocation != null) { fileContents += "Icon=" + iconLocation + "\n"; @@ -88,7 +88,7 @@ public class XDesktopEntry { } if (file.getInformation().getVendor() != null) { - fileContents += "Vendor=" + file.getInformation().getVendor() + "\n"; + fileContents += "Vendor=" + sanitize(file.getInformation().getVendor()) + "\n"; } //Shortcut executes the jnlp from cache and system preferred java.. @@ -96,6 +96,22 @@ public class XDesktopEntry { return new StringReader(fileContents); + } + + /** + * Sanitizes a string so that it can be used safely in a key=value pair in a + * desktop entry file. + * + * @param input a String to sanitize + * @return a string safe to use as either the key or the value in the + * key=value pair in a desktop entry file + */ + private static String sanitize(String input) { + if (input == null) { + return ""; + } + /* key=value pairs must be a single line */ + return input.split("\n")[0]; } /** @@ -131,7 +147,7 @@ public class XDesktopEntry { * Install this XDesktopEntry into the user's desktop as a launcher */ private void installDesktopLauncher() { - File shortcutFile = new File(JNLPRuntime.TMP_DIR + File.separator + File shortcutFile = new File(JNLPRuntime.getTempDir() + File.separator + FileUtils.sanitizeFileName(file.getTitle()) + ".desktop"); try { diff -r 1c9dabc8729f -r e2b020ce5f03 patches/extensions/netx.patch --- a/patches/extensions/netx.patch Fri Nov 12 00:28:26 2010 +0000 +++ b/patches/extensions/netx.patch Wed Nov 24 14:56:41 2010 +0000 @@ -9,114 +9,6 @@ diff -c openjdk.orig/jdk/make/launchers/ $(call make-launcher, jconsole, sun.tools.jconsole.JConsole, \ -J-Djconsole.showOutputViewer, ) $(call make-launcher, jdb, com.sun.tools.example.debug.tty.TTY, , ) -diff -urN openjdk.orig/jdk/src/share/classes/sun/applet/AppletViewerPanel.java openjdk/jdk/src/share/classes/sun/applet/AppletViewerPanel.java ---- openjdk.orig/jdk/src/share/classes/sun/applet/AppletViewerPanel.java 2008-01-12 15:53:45.000000000 -0500 -+++ openjdk/jdk/src/share/classes/sun/applet/AppletViewerPanel.java 2008-02-04 11:51:20.000000000 -0500 -@@ -42,25 +42,25 @@ - * - * @author Arthur van Hoff - */ --class AppletViewerPanel extends AppletPanel { -+public class AppletViewerPanel extends AppletPanel { - - /* Are we debugging? */ -- static boolean debug = false; -+ protected static boolean debug = false; - - /** - * The document url. - */ -- URL documentURL; -+ protected URL documentURL; - - /** - * The base url. - */ -- URL baseURL; -+ protected URL baseURL; - - /** - * The attributes of the applet. - */ -- Hashtable atts; -+ protected Hashtable atts; - - /* - * JDK 1.1 serialVersionUID -@@ -70,7 +70,7 @@ - /** - * Construct an applet viewer and start the applet. - */ -- AppletViewerPanel(URL documentURL, Hashtable atts) { -+ protected AppletViewerPanel(URL documentURL, Hashtable atts) { - this.documentURL = documentURL; - this.atts = atts; - -@@ -202,12 +202,12 @@ - return (AppletContext)getParent(); - } - -- static void debug(String s) { -+ protected static void debug(String s) { - if(debug) - System.err.println("AppletViewerPanel:::" + s); - } - -- static void debug(String s, Throwable t) { -+ protected static void debug(String s, Throwable t) { - if(debug) { - t.printStackTrace(); - debug(s); -diff -urN openjdk.orig/jdk/src/share/classes/sun/applet/AppletPanel.java openjdk/jdk/src/share/classes/sun/applet/AppletPanel.java ---- openjdk.orig/jdk/src/share/classes/sun/applet/AppletPanel.java 2008-03-26 04:58:12.000000000 -0400 -+++ openjdk/jdk/src/share/classes/sun/applet/AppletPanel.java 2008-04-07 21:55:56.000000000 -0400 -@@ -68,7 +68,7 @@ - /** - * The applet (if loaded). - */ -- Applet applet; -+ protected Applet applet; - - /** - * Applet will allow initialization. Should be -@@ -117,7 +117,7 @@ - /** - * The thread for the applet. - */ -- Thread handler; -+ protected Thread handler; - - - /** -@@ -162,7 +162,8 @@ - * Creates a thread to run the applet. This method is called - * each time an applet is loaded and reloaded. - */ -- synchronized void createAppletThread() { -+ //Overridden by NetxPanel. -+ protected synchronized void createAppletThread() { - // Create a thread group for the applet, and start a new - // thread to load the applet. - String nm = "applet-" + getCode(); -@@ -306,7 +307,7 @@ - /** - * Get an event from the queue. - */ -- synchronized AppletEvent getNextEvent() throws InterruptedException { -+ protected synchronized AppletEvent getNextEvent() throws InterruptedException { - while (queue == null || queue.isEmpty()) { - wait(); - } -@@ -695,7 +696,8 @@ - * applet event processing so that it can be gracefully interrupted from - * things like HotJava. - */ -- private void runLoader() { -+ //Overridden by NetxPanel. -+ protected void runLoader() { - if (status != APPLET_DISPOSE) { - showAppletStatus("notdisposed"); - return; --- openjdk/jdk/make/docs/NON_CORE_PKGS.gmk.orig 2009-06-04 11:02:18.000000000 -0400 +++ openjdk/jdk/make/docs/NON_CORE_PKGS.gmk 2009-06-04 11:02:45.000000000 -0400 @@ -84,6 +84,8 @@ diff -r 1c9dabc8729f -r e2b020ce5f03 plugin/icedteanp/java/sun/applet/PluginMain.java --- a/plugin/icedteanp/java/sun/applet/PluginMain.java Fri Nov 12 00:28:26 2010 +0000 +++ b/plugin/icedteanp/java/sun/applet/PluginMain.java Wed Nov 24 14:56:41 2010 +0000 @@ -89,8 +89,8 @@ public class PluginMain { // the files where stdout/stderr are sent to - public static final String PLUGIN_STDERR_FILE = System.getProperty("user.home") + "/.icedteaplugin/java.stderr"; - public static final String PLUGIN_STDOUT_FILE = System.getProperty("user.home") + "/.icedteaplugin/java.stdout"; + static final String PLUGIN_STDERR_FILE = System.getProperty("user.home") + "/.icedteaplugin/java.stderr"; + static final String PLUGIN_STDOUT_FILE = System.getProperty("user.home") + "/.icedteaplugin/java.stdout"; final boolean redirectStreams = System.getenv().containsKey("ICEDTEAPLUGIN_DEBUG"); static PluginStreamHandler streamHandler; From andrew at icedtea.classpath.org Wed Nov 24 06:59:07 2010 From: andrew at icedtea.classpath.org (andrew at icedtea.classpath.org) Date: Wed, 24 Nov 2010 14:59:07 +0000 Subject: /hg/release/icedtea6-1.8: 6 new changesets Message-ID: changeset 330ee084669d in /hg/release/icedtea6-1.8 details: http://icedtea.classpath.org/hg/release/icedtea6-1.8?cmd=changeset;node=330ee084669d author: Andrew John Hughes date: Wed Nov 17 17:18:19 2010 +0000 RH645843, CVE-2010-3860: Don't expose system properties via public variables. 2010-11-12 Andrew John Hughes * NEWS: Updated. 2010-11-11 Omair Majid RH645843, CVE-2010-3860 * netx/net/sourceforge/jnlp/runtime/Boot.java, * netx/net/sourceforge/jnlp/runtime/JNLPRuntime.java, * netx/net/sourceforge/jnlp/security/SecurityUtil.java, * netx/net/sourceforge/jnlp/services/SingleInstanceLock.java, * netx/net/sourceforge/jnlp/util/XDesktopEntry.java, * plugin/icedteanp/java/sun/applet/PluginMain.java: Fix exposure of system properties. changeset 5879df03ebdd in /hg/release/icedtea6-1.8 details: http://icedtea.classpath.org/hg/release/icedtea6-1.8?cmd=changeset;node=5879df03ebdd author: Andrew John Hughes date: Wed Nov 17 14:24:45 2010 +0000 PR592: Sanitize user-entered values used in desktop entries. 2010-11-12 Omair Majid PR592 * NEWS: Updated. * netx/net/sourceforge/jnlp/util/XDesktopEntry.java: (getContentsAsReader()): Call sanitize on user-inputted values. (sanitize(String)): Sanitize values used in desktop entries. changeset fc00c9742a82 in /hg/release/icedtea6-1.8 details: http://icedtea.classpath.org/hg/release/icedtea6-1.8?cmd=changeset;node=fc00c9742a82 author: Andrew John Hughes date: Wed Nov 17 17:19:47 2010 +0000 Bump to 1.8.3 proper and add release date. 2010-11-17 Andrew John Hughes * configure.ac: Bump to 1.8.3 proper. * NEWS: Add release date. changeset 4f06af1897c3 in /hg/release/icedtea6-1.8 details: http://icedtea.classpath.org/hg/release/icedtea6-1.8?cmd=changeset;node=4f06af1897c3 author: Andrew John Hughes date: Wed Nov 17 21:03:51 2010 +0000 Split the patching of the applet class files into a separate patch, applied to all builds. 2010-11-17 Andrew John Hughes * Makefile.am: Add applet hole patch for all builds. * patches/applet_hole.patch: Split applet class patching into separate file to be applied in all builds. * patches/extensions/netx.patch: Include only the Makefile additions to build the jaxws binary and documentation. changeset 04120b5ea4c3 in /hg/release/icedtea6-1.8 details: http://icedtea.classpath.org/hg/release/icedtea6-1.8?cmd=changeset;node=04120b5ea4c3 author: Andrew John Hughes date: Wed Nov 24 14:57:23 2010 +0000 Added tag icedtea6-1.8.3 for changeset 4f06af1897c3 changeset adb3cb07d6fd in /hg/release/icedtea6-1.8 details: http://icedtea.classpath.org/hg/release/icedtea6-1.8?cmd=changeset;node=adb3cb07d6fd author: Andrew John Hughes date: Wed Nov 24 14:58:50 2010 +0000 Prepare for 1.8.4. 2010-11-24 Andrew John Hughes * configure.ac: Bump to 1.8.4pre. * NEWS: Add 1.8.4 section. diffstat: 13 files changed, 245 insertions(+), 147 deletions(-) .hgtags | 1 ChangeLog | 45 +++++ Makefile.am | 3 NEWS | 8 configure.ac | 2 netx/net/sourceforge/jnlp/runtime/Boot.java | 4 netx/net/sourceforge/jnlp/runtime/JNLPRuntime.java | 59 +++++- netx/net/sourceforge/jnlp/security/SecurityUtil.java | 24 +- netx/net/sourceforge/jnlp/services/SingleInstanceLock.java | 2 netx/net/sourceforge/jnlp/util/XDesktopEntry.java | 24 ++ patches/applet_hole.patch | 108 ++++++++++++ patches/extensions/netx.patch | 108 ------------ plugin/icedteanp/java/sun/applet/PluginMain.java | 4 diffs (truncated from 566 to 500 lines): diff -r 74a5c2ed67d3 -r adb3cb07d6fd .hgtags --- a/.hgtags Tue Nov 16 12:39:47 2010 +0000 +++ b/.hgtags Wed Nov 24 14:58:50 2010 +0000 @@ -23,3 +23,4 @@ a0120629678b904ef41bcac470b9025dc777ff03 a0120629678b904ef41bcac470b9025dc777ff03 icedtea6-1.8 1419166fcebf45ac187cfe2a4e1a45548cdeb5bd icedtea6-1.8.1 e96213dd3cd67306ded33a13319e8681728c7299 icedtea6-1.8.2 +4f06af1897c3feff8708ff35a94df642f363d190 icedtea6-1.8.3 diff -r 74a5c2ed67d3 -r adb3cb07d6fd ChangeLog --- a/ChangeLog Tue Nov 16 12:39:47 2010 +0000 +++ b/ChangeLog Wed Nov 24 14:58:50 2010 +0000 @@ -1,3 +1,48 @@ 2010-11-16 Andrew John Hughes + + * configure.ac: Bump to 1.8.4pre. + * NEWS: Add 1.8.4 section. + +2010-11-17 Andrew John Hughes + + * Makefile.am: + Add applet hole patch for all builds. + * patches/applet_hole.patch: + Split applet class patching into separate + file to be applied in all builds. + * patches/extensions/netx.patch: + Include only the Makefile additions to build + the jaxws binary and documentation. + +2010-11-17 Andrew John Hughes + + * configure.ac: Bump to 1.8.3 proper. + * NEWS: Add release date. + +2010-11-12 Omair Majid + + PR592 + * NEWS: Updated. + * netx/net/sourceforge/jnlp/util/XDesktopEntry.java: + (getContentsAsReader()): Call sanitize on user-inputted values. + (sanitize(String)): Sanitize values used in desktop + entries. + +2010-11-12 Andrew John Hughes + + * NEWS: Updated. + +2010-11-11 Omair Majid + + RH645843, CVE-2010-3860 + * netx/net/sourceforge/jnlp/runtime/Boot.java, + * netx/net/sourceforge/jnlp/runtime/JNLPRuntime.java, + * netx/net/sourceforge/jnlp/security/SecurityUtil.java, + * netx/net/sourceforge/jnlp/services/SingleInstanceLock.java, + * netx/net/sourceforge/jnlp/util/XDesktopEntry.java, + * plugin/icedteanp/java/sun/applet/PluginMain.java: + Fix exposure of system properties. + 2010-11-16 Andrew John Hughes * Makefile.am: diff -r 74a5c2ed67d3 -r adb3cb07d6fd Makefile.am --- a/Makefile.am Tue Nov 16 12:39:47 2010 +0000 +++ b/Makefile.am Wed Nov 24 14:58:50 2010 +0000 @@ -353,7 +353,8 @@ ICEDTEA_PATCHES = \ patches/openjdk/6638712-wildcard_types.patch \ patches/openjdk/6650759-missing_inference.patch \ patches/numa_on_early_glibc.patch \ - patches/openjdk/6853592-badwindow-warning-fix.patch + patches/openjdk/6853592-badwindow-warning-fix.patch \ + patches/applet_hole.patch if WITH_ALT_HSBUILD ICEDTEA_PATCHES += patches/hotspot/$(HSBUILD)/openjdk-6886353-ignore_deoptimizealot.patch \ diff -r 74a5c2ed67d3 -r adb3cb07d6fd NEWS --- a/NEWS Tue Nov 16 12:39:47 2010 +0000 +++ b/NEWS Wed Nov 24 14:58:50 2010 +0000 @@ -8,15 +8,19 @@ GX - http://bugs.gentoo.org/show_bug.cg CVE-XXXX-YYYY: http://www.cve.mitre.org/cgi-bin/cvename.cgi?name=XXXX-YYYY -New in release 1.8.3 (2010-11-XX): +New in release 1.8.4 (201X-XX-XX): + +New in release 1.8.3 (2010-11-24): * Allow the building of NetX to be disabled. -* Switch to the IcedTea server for JAXP, JAF and JAXWS tarballs. +* Security updates + - RH645843, CVE-2010-3860: IcedTea System property information leak via public static * Backports - S6853592: VM test nsk.regression.b4261880 fails with "X Error of failed request: BadWindow" inconsistently. * NetX - Do not prompt user multiple times for the same certificate. + - PR592: NetX can create invalid desktop entry files New in release 1.8.2 (2010-10-13): diff -r 74a5c2ed67d3 -r adb3cb07d6fd configure.ac --- a/configure.ac Tue Nov 16 12:39:47 2010 +0000 +++ b/configure.ac Wed Nov 24 14:58:50 2010 +0000 @@ -1,4 +1,4 @@ AC_INIT([icedtea6],[1.8.3pre],[distro-pk -AC_INIT([icedtea6],[1.8.3pre],[distro-pkg-dev at openjdk.java.net]) +AC_INIT([icedtea6],[1.8.4pre],[distro-pkg-dev at openjdk.java.net]) AM_INIT_AUTOMAKE([1.9 tar-pax foreign]) AC_CONFIG_FILES([Makefile]) diff -r 74a5c2ed67d3 -r adb3cb07d6fd netx/net/sourceforge/jnlp/runtime/Boot.java --- a/netx/net/sourceforge/jnlp/runtime/Boot.java Tue Nov 16 12:39:47 2010 +0000 +++ b/netx/net/sourceforge/jnlp/runtime/Boot.java Wed Nov 24 14:58:50 2010 +0000 @@ -230,8 +230,8 @@ public final class Boot implements Privi */ private static String getAboutFile() { - if (new File(JNLPRuntime.NETX_ABOUT_FILE).exists()) - return JNLPRuntime.NETX_ABOUT_FILE; + if (new File(JNLPRuntime.getAboutFile()).exists()) + return JNLPRuntime.getAboutFile(); else return null; } diff -r 74a5c2ed67d3 -r adb3cb07d6fd netx/net/sourceforge/jnlp/runtime/JNLPRuntime.java --- a/netx/net/sourceforge/jnlp/runtime/JNLPRuntime.java Tue Nov 16 12:39:47 2010 +0000 +++ b/netx/net/sourceforge/jnlp/runtime/JNLPRuntime.java Wed Nov 24 14:58:50 2010 +0000 @@ -105,42 +105,42 @@ public class JNLPRuntime { private static List initialArguments; /** Username */ - public static final String USER = System.getProperty("user.name"); + private static final String USER = System.getProperty("user.name"); /** User's home directory */ - public static final String HOME_DIR = System.getProperty("user.home"); + private static final String HOME_DIR = System.getProperty("user.home"); /** the ~/.netxrc file containing netx settings */ - public static final String NETXRC_FILE = HOME_DIR + File.separator + ".netxrc"; + private static final String NETXRC_FILE = HOME_DIR + File.separator + ".netxrc"; /** the ~/.netx directory containing user-specific data */ - public static final String NETX_DIR = HOME_DIR + File.separator + ".netx"; + private static final String NETX_DIR = HOME_DIR + File.separator + ".netx"; /** the ~/.netx/security directory containing security related information */ - public static final String SECURITY_DIR = NETX_DIR + File.separator + "security"; + private static final String SECURITY_DIR = NETX_DIR + File.separator + "security"; /** the ~/.netx/security/trusted.certs file containing trusted certificates */ - public static final String CERTIFICATES_FILE = SECURITY_DIR + File.separator + "trusted.certs"; + private static final String CERTIFICATES_FILE = SECURITY_DIR + File.separator + "trusted.certs"; /** the /tmp/ directory used for temporary files */ - public static final String TMP_DIR = System.getProperty("java.io.tmpdir"); + private static final String TMP_DIR = System.getProperty("java.io.tmpdir"); /** * the /tmp/$USER/netx/locks/ directory containing locks for single instance * applications */ - public static final String LOCKS_DIR = TMP_DIR + File.separator + USER + File.separator + private static final String LOCKS_DIR = TMP_DIR + File.separator + USER + File.separator + "netx" + File.separator + "locks"; /** the java.home directory */ - public static final String JAVA_HOME_DIR = System.getProperty("java.home"); - + private static final String JAVA_HOME_DIR = System.getProperty("java.home"); + /** the JNLP file to open to display the network-based about window */ - public static final String NETX_ABOUT_FILE = JAVA_HOME_DIR + File.separator + "lib" + private static final String NETX_ABOUT_FILE = JAVA_HOME_DIR + File.separator + "lib" + File.separator + "about.jnlp"; - - + + /** * Returns whether the JNLP runtime environment has been * initialized. Once initialized, some properties such as the @@ -558,7 +558,38 @@ public class JNLPRuntime { public static List getInitialArguments() { return initialArguments; } - + + /** Get the location of the certificate files user-level used by netx */ + public static String getCertificatesFile() { + System.getProperty("user.home"); + return CERTIFICATES_FILE; + } + + /** Get the home directory */ + public static String getHomeDir() { + System.getProperty("user.home"); + return HOME_DIR; + } + + /** Get the location of the about file */ + public static String getAboutFile() { + System.getProperty("java.home"); + return NETX_ABOUT_FILE; + } + + /** Get the location of the locks directory */ + public static String getLocksDir() { + System.getProperty("user.home"); + System.getProperty("java.io.tmpdir"); + return LOCKS_DIR; + } + + /** Get the location of a temporary location */ + public static String getTempDir() { + System.getProperty("java.io.tmpdir"); + return TMP_DIR; + } + } diff -r 74a5c2ed67d3 -r adb3cb07d6fd netx/net/sourceforge/jnlp/security/SecurityUtil.java --- a/netx/net/sourceforge/jnlp/security/SecurityUtil.java Tue Nov 16 12:39:47 2010 +0000 +++ b/netx/net/sourceforge/jnlp/security/SecurityUtil.java Wed Nov 24 14:58:50 2010 +0000 @@ -46,18 +46,18 @@ import net.sourceforge.jnlp.runtime.JNLP public class SecurityUtil { - private static final char[] password = "changeit".toCharArray(); - - public static String getTrustedCertsFilename() throws Exception{ - - String homeDir = JNLPRuntime.HOME_DIR; - - if (homeDir == null) { - throw new Exception("Could not access home directory"); - } else { - return JNLPRuntime.CERTIFICATES_FILE; - } - } + private static final char[] password = "changeit".toCharArray(); + + public static String getTrustedCertsFilename() throws Exception { + + String homeDir = JNLPRuntime.getHomeDir(); + + if (homeDir == null) { + throw new Exception("Could not access home directory"); + } else { + return JNLPRuntime.getCertificatesFile(); + } + } public static char[] getTrustedCertsPassword() { return password; diff -r 74a5c2ed67d3 -r adb3cb07d6fd netx/net/sourceforge/jnlp/services/SingleInstanceLock.java --- a/netx/net/sourceforge/jnlp/services/SingleInstanceLock.java Tue Nov 16 12:39:47 2010 +0000 +++ b/netx/net/sourceforge/jnlp/services/SingleInstanceLock.java Wed Nov 24 14:58:50 2010 +0000 @@ -126,7 +126,7 @@ class SingleInstanceLock { * may or may not exist. */ private File getLockFile() { - File baseDir = new File(JNLPRuntime.LOCKS_DIR); + File baseDir = new File(JNLPRuntime.getLocksDir()); if (!baseDir.isDirectory() && !baseDir.mkdirs()) { throw new RuntimeException(R("RNoLockDir", baseDir)); diff -r 74a5c2ed67d3 -r adb3cb07d6fd netx/net/sourceforge/jnlp/util/XDesktopEntry.java --- a/netx/net/sourceforge/jnlp/util/XDesktopEntry.java Tue Nov 16 12:39:47 2010 +0000 +++ b/netx/net/sourceforge/jnlp/util/XDesktopEntry.java Wed Nov 24 14:58:50 2010 +0000 @@ -77,9 +77,9 @@ public class XDesktopEntry { String fileContents = "[Desktop Entry]\n"; fileContents += "Version=1.0\n"; - fileContents += "Name=" + file.getTitle() + "\n"; + fileContents += "Name=" + sanitize(file.getTitle()) + "\n"; fileContents += "GenericName=Java Web Start Application\n"; - fileContents += "Comment=" + file.getInformation().getDescription() + "\n"; + fileContents += "Comment=" + sanitize(file.getInformation().getDescription()) + "\n"; fileContents += "Type=Application\n"; if (iconLocation != null) { fileContents += "Icon=" + iconLocation + "\n"; @@ -88,7 +88,7 @@ public class XDesktopEntry { } if (file.getInformation().getVendor() != null) { - fileContents += "Vendor=" + file.getInformation().getVendor() + "\n"; + fileContents += "Vendor=" + sanitize(file.getInformation().getVendor()) + "\n"; } //Shortcut executes the jnlp from cache and system preferred java.. @@ -96,6 +96,22 @@ public class XDesktopEntry { return new StringReader(fileContents); + } + + /** + * Sanitizes a string so that it can be used safely in a key=value pair in a + * desktop entry file. + * + * @param input a String to sanitize + * @return a string safe to use as either the key or the value in the + * key=value pair in a desktop entry file + */ + private static String sanitize(String input) { + if (input == null) { + return ""; + } + /* key=value pairs must be a single line */ + return input.split("\n")[0]; } /** @@ -131,7 +147,7 @@ public class XDesktopEntry { * Install this XDesktopEntry into the user's desktop as a launcher */ private void installDesktopLauncher() { - File shortcutFile = new File(JNLPRuntime.TMP_DIR + File.separator + File shortcutFile = new File(JNLPRuntime.getTempDir() + File.separator + FileUtils.sanitizeFileName(file.getTitle()) + ".desktop"); try { diff -r 74a5c2ed67d3 -r adb3cb07d6fd patches/applet_hole.patch --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/patches/applet_hole.patch Wed Nov 24 14:58:50 2010 +0000 @@ -0,0 +1,108 @@ +diff -urN openjdk.orig/jdk/src/share/classes/sun/applet/AppletViewerPanel.java openjdk/jdk/src/share/classes/sun/applet/AppletViewerPanel.java +--- openjdk.orig/jdk/src/share/classes/sun/applet/AppletViewerPanel.java 2008-01-12 15:53:45.000000000 -0500 ++++ openjdk/jdk/src/share/classes/sun/applet/AppletViewerPanel.java 2008-02-04 11:51:20.000000000 -0500 +@@ -42,25 +42,25 @@ + * + * @author Arthur van Hoff + */ +-class AppletViewerPanel extends AppletPanel { ++public class AppletViewerPanel extends AppletPanel { + + /* Are we debugging? */ +- static boolean debug = false; ++ protected static boolean debug = false; + + /** + * The document url. + */ +- URL documentURL; ++ protected URL documentURL; + + /** + * The base url. + */ +- URL baseURL; ++ protected URL baseURL; + + /** + * The attributes of the applet. + */ +- Hashtable atts; ++ protected Hashtable atts; + + /* + * JDK 1.1 serialVersionUID +@@ -70,7 +70,7 @@ + /** + * Construct an applet viewer and start the applet. + */ +- AppletViewerPanel(URL documentURL, Hashtable atts) { ++ protected AppletViewerPanel(URL documentURL, Hashtable atts) { + this.documentURL = documentURL; + this.atts = atts; + +@@ -202,12 +202,12 @@ + return (AppletContext)getParent(); + } + +- static void debug(String s) { ++ protected static void debug(String s) { + if(debug) + System.err.println("AppletViewerPanel:::" + s); + } + +- static void debug(String s, Throwable t) { ++ protected static void debug(String s, Throwable t) { + if(debug) { + t.printStackTrace(); + debug(s); +diff -urN openjdk.orig/jdk/src/share/classes/sun/applet/AppletPanel.java openjdk/jdk/src/share/classes/sun/applet/AppletPanel.java +--- openjdk.orig/jdk/src/share/classes/sun/applet/AppletPanel.java 2008-03-26 04:58:12.000000000 -0400 ++++ openjdk/jdk/src/share/classes/sun/applet/AppletPanel.java 2008-04-07 21:55:56.000000000 -0400 +@@ -68,7 +68,7 @@ + /** + * The applet (if loaded). + */ +- Applet applet; ++ protected Applet applet; + + /** + * Applet will allow initialization. Should be +@@ -117,7 +117,7 @@ + /** + * The thread for the applet. + */ +- Thread handler; ++ protected Thread handler; + + + /** +@@ -162,7 +162,8 @@ + * Creates a thread to run the applet. This method is called + * each time an applet is loaded and reloaded. + */ +- synchronized void createAppletThread() { ++ //Overridden by NetxPanel. ++ protected synchronized void createAppletThread() { + // Create a thread group for the applet, and start a new + // thread to load the applet. + String nm = "applet-" + getCode(); +@@ -306,7 +307,7 @@ + /** + * Get an event from the queue. + */ +- synchronized AppletEvent getNextEvent() throws InterruptedException { ++ protected synchronized AppletEvent getNextEvent() throws InterruptedException { + while (queue == null || queue.isEmpty()) { + wait(); + } +@@ -695,7 +696,8 @@ + * applet event processing so that it can be gracefully interrupted from + * things like HotJava. + */ +- private void runLoader() { ++ //Overridden by NetxPanel. ++ protected void runLoader() { + if (status != APPLET_DISPOSE) { + showAppletStatus("notdisposed"); + return; diff -r 74a5c2ed67d3 -r adb3cb07d6fd patches/extensions/netx.patch --- a/patches/extensions/netx.patch Tue Nov 16 12:39:47 2010 +0000 +++ b/patches/extensions/netx.patch Wed Nov 24 14:58:50 2010 +0000 @@ -9,114 +9,6 @@ diff -c openjdk.orig/jdk/make/launchers/ $(call make-launcher, jconsole, sun.tools.jconsole.JConsole, \ -J-Djconsole.showOutputViewer, ) $(call make-launcher, jdb, com.sun.tools.example.debug.tty.TTY, , ) -diff -urN openjdk.orig/jdk/src/share/classes/sun/applet/AppletViewerPanel.java openjdk/jdk/src/share/classes/sun/applet/AppletViewerPanel.java ---- openjdk.orig/jdk/src/share/classes/sun/applet/AppletViewerPanel.java 2008-01-12 15:53:45.000000000 -0500 -+++ openjdk/jdk/src/share/classes/sun/applet/AppletViewerPanel.java 2008-02-04 11:51:20.000000000 -0500 -@@ -42,25 +42,25 @@ - * - * @author Arthur van Hoff - */ --class AppletViewerPanel extends AppletPanel { -+public class AppletViewerPanel extends AppletPanel { - - /* Are we debugging? */ -- static boolean debug = false; -+ protected static boolean debug = false; - - /** - * The document url. - */ -- URL documentURL; -+ protected URL documentURL; - - /** - * The base url. - */ -- URL baseURL; -+ protected URL baseURL; - - /** - * The attributes of the applet. - */ -- Hashtable atts; -+ protected Hashtable atts; - - /* - * JDK 1.1 serialVersionUID -@@ -70,7 +70,7 @@ - /** - * Construct an applet viewer and start the applet. - */ -- AppletViewerPanel(URL documentURL, Hashtable atts) { -+ protected AppletViewerPanel(URL documentURL, Hashtable atts) { - this.documentURL = documentURL; - this.atts = atts; - -@@ -202,12 +202,12 @@ - return (AppletContext)getParent(); - } - -- static void debug(String s) { -+ protected static void debug(String s) { - if(debug) - System.err.println("AppletViewerPanel:::" + s); - } - -- static void debug(String s, Throwable t) { -+ protected static void debug(String s, Throwable t) { - if(debug) { - t.printStackTrace(); - debug(s); -diff -urN openjdk.orig/jdk/src/share/classes/sun/applet/AppletPanel.java openjdk/jdk/src/share/classes/sun/applet/AppletPanel.java From andrew at icedtea.classpath.org Wed Nov 24 07:00:17 2010 From: andrew at icedtea.classpath.org (andrew at icedtea.classpath.org) Date: Wed, 24 Nov 2010 15:00:17 +0000 Subject: /hg/release/icedtea6-1.9: Prepare for 1.9.3 Message-ID: changeset c39df2b1130f in /hg/release/icedtea6-1.9 details: http://icedtea.classpath.org/hg/release/icedtea6-1.9?cmd=changeset;node=c39df2b1130f author: Andrew John Hughes date: Wed Nov 24 15:00:11 2010 +0000 Prepare for 1.9.3 2010-11-24 Andrew John Hughes * configure.ac: Bump to 1.9.3pre. * NEWS: Add 1.9.3 section. diffstat: 3 files changed, 8 insertions(+), 1 deletion(-) ChangeLog | 5 +++++ NEWS | 2 ++ configure.ac | 2 +- diffs (33 lines): diff -r e2b020ce5f03 -r c39df2b1130f ChangeLog --- a/ChangeLog Wed Nov 24 14:56:41 2010 +0000 +++ b/ChangeLog Wed Nov 24 15:00:11 2010 +0000 @@ -1,3 +1,8 @@ 2010-11-17 Andrew John Hughes + + * configure.ac: Bump to 1.9.3pre. + * NEWS: Add 1.9.3 section. + 2010-11-17 Andrew John Hughes * Makefile.am: diff -r e2b020ce5f03 -r c39df2b1130f NEWS --- a/NEWS Wed Nov 24 14:56:41 2010 +0000 +++ b/NEWS Wed Nov 24 15:00:11 2010 +0000 @@ -7,6 +7,8 @@ GX - http://bugs.gentoo.org/show_bug.cg GX - http://bugs.gentoo.org/show_bug.cgi?id=X CVE-XXXX-YYYY: http://www.cve.mitre.org/cgi-bin/cvename.cgi?name=XXXX-YYYY + +New in release 1.9.3 (201X-XX-XX): New in release 1.9.2 (2010-11-24): diff -r e2b020ce5f03 -r c39df2b1130f configure.ac --- a/configure.ac Wed Nov 24 14:56:41 2010 +0000 +++ b/configure.ac Wed Nov 24 15:00:11 2010 +0000 @@ -1,4 +1,4 @@ AC_INIT([icedtea6],[1.9.2],[distro-pkg-d -AC_INIT([icedtea6],[1.9.2],[distro-pkg-dev at openjdk.java.net]) +AC_INIT([icedtea6],[1.9.3pre],[distro-pkg-dev at openjdk.java.net]) AM_INIT_AUTOMAKE([1.9 tar-pax foreign]) AC_CONFIG_FILES([Makefile]) From andrew at icedtea.classpath.org Wed Nov 24 07:03:15 2010 From: andrew at icedtea.classpath.org (andrew at icedtea.classpath.org) Date: Wed, 24 Nov 2010 15:03:15 +0000 Subject: /hg/release/icedtea6-1.7: 6 new changesets Message-ID: changeset e0e679b39351 in /hg/release/icedtea6-1.7 details: http://icedtea.classpath.org/hg/release/icedtea6-1.7?cmd=changeset;node=e0e679b39351 author: Andrew John Hughes date: Thu Nov 18 13:23:54 2010 +0000 RH645843, CVE-2010-3860: Don't expose system properties via public variables. 2010-11-11 Omair Majid RH645843, CVE-2010-3860 * netx/net/sourceforge/jnlp/runtime/Boot.java, * netx/net/sourceforge/jnlp/runtime/JNLPRuntime.java, * netx/net/sourceforge/jnlp/security/SecurityUtil.java, * netx/net/sourceforge/jnlp/services/SingleInstanceLock.java, * netx/net/sourceforge/jnlp/util/XDesktopEntry.java, * plugin/icedteanp/java/sun/applet/PluginMain.java: Fix exposure of system properties. changeset 89ccf12401c2 in /hg/release/icedtea6-1.7 details: http://icedtea.classpath.org/hg/release/icedtea6-1.7?cmd=changeset;node=89ccf12401c2 author: Andrew John Hughes date: Thu Nov 18 13:25:29 2010 +0000 Update NEWS. 2010-11-18 Andrew John Hughes * NEWS: Updated. changeset d87447eb1600 in /hg/release/icedtea6-1.7 details: http://icedtea.classpath.org/hg/release/icedtea6-1.7?cmd=changeset;node=d87447eb1600 author: Andrew John Hughes date: Wed Nov 17 14:24:45 2010 +0000 PR592: Sanitize user-entered values used in desktop entries. 2010-11-12 Omair Majid PR592 * NEWS: Updated. * rt/net/sourceforge/jnlp/util/XDesktopEntry.java: (getContentsAsReader()): Call sanitize on user-inputted values. (sanitize(String)): Sanitize values used in desktop entries. changeset f5667b14ce7e in /hg/release/icedtea6-1.7 details: http://icedtea.classpath.org/hg/release/icedtea6-1.7?cmd=changeset;node=f5667b14ce7e author: Andrew John Hughes date: Thu Nov 18 15:59:54 2010 +0000 Bump to 1.7.6 proper and add release date. 2010-11-18 Andrew John Hughes * configure.ac: Bump to 1.7.6 proper. * NEWS: Add release date. changeset cb161157ffad in /hg/release/icedtea6-1.7 details: http://icedtea.classpath.org/hg/release/icedtea6-1.7?cmd=changeset;node=cb161157ffad author: Andrew John Hughes date: Wed Nov 24 15:01:43 2010 +0000 Added tag icedtea6-1.7.6 for changeset f5667b14ce7e changeset fe7ca47d85b7 in /hg/release/icedtea6-1.7 details: http://icedtea.classpath.org/hg/release/icedtea6-1.7?cmd=changeset;node=fe7ca47d85b7 author: Andrew John Hughes date: Wed Nov 24 15:02:56 2010 +0000 Prepare for 1.7.7. 2010-11-24 Andrew John Hughes * configure.ac: Bump to 1.7.7pre. * NEWS: Add 1.7.7 section. diffstat: 10 files changed, 124 insertions(+), 38 deletions(-) .hgtags | 1 ChangeLog | 34 ++++++++ NEWS | 8 + configure.ac | 2 plugin/icedteanp/java/sun/applet/PluginMain.java | 4 rt/net/sourceforge/jnlp/runtime/Boot.java | 4 rt/net/sourceforge/jnlp/runtime/JNLPRuntime.java | 59 ++++++++++---- rt/net/sourceforge/jnlp/security/SecurityUtil.java | 24 ++--- rt/net/sourceforge/jnlp/services/SingleInstanceLock.java | 2 rt/net/sourceforge/jnlp/util/XDesktopEntry.java | 24 ++++- diffs (312 lines): diff -r 2eff7c2e01d1 -r fe7ca47d85b7 .hgtags --- a/.hgtags Thu Nov 18 13:01:47 2010 +0000 +++ b/.hgtags Wed Nov 24 15:02:56 2010 +0000 @@ -27,3 +27,4 @@ 0000000000000000000000000000000000000000 0000000000000000000000000000000000000000 icedtea6-1.7.5 0000000000000000000000000000000000000000 icedtea6-1.7.5 6282308dea7401c00bb779bd4ab2ff7f4d269114 icedtea6-1.7.5 +f5667b14ce7eb0dc9b121164a28d3b3fcd516c61 icedtea6-1.7.6 diff -r 2eff7c2e01d1 -r fe7ca47d85b7 ChangeLog --- a/ChangeLog Thu Nov 18 13:01:47 2010 +0000 +++ b/ChangeLog Wed Nov 24 15:02:56 2010 +0000 @@ -1,3 +1,37 @@ 2010-11-18 Andrew John Hughes + + * configure.ac: Bump to 1.7.7pre. + * NEWS: Add 1.7.7 section. + +2010-11-18 Andrew John Hughes + + * configure.ac: Bump to 1.7.6 proper. + * NEWS: Add release date. + +2010-11-12 Omair Majid + + PR592 + * NEWS: Updated. + * netx/net/sourceforge/jnlp/util/XDesktopEntry.java: + (getContentsAsReader()): Call sanitize on user-inputted values. + (sanitize(String)): Sanitize values used in desktop + entries. + +2010-11-18 Andrew John Hughes + + * NEWS: Updated. + +2010-11-11 Omair Majid + + RH645843, CVE-2010-3860 + * netx/net/sourceforge/jnlp/runtime/Boot.java, + * netx/net/sourceforge/jnlp/runtime/JNLPRuntime.java, + * netx/net/sourceforge/jnlp/security/SecurityUtil.java, + * netx/net/sourceforge/jnlp/services/SingleInstanceLock.java, + * netx/net/sourceforge/jnlp/util/XDesktopEntry.java, + * plugin/icedteanp/java/sun/applet/PluginMain.java: + Fix exposure of system properties. + 2010-11-18 Andrew John Hughes * NEWS: Add 1.7.6. diff -r 2eff7c2e01d1 -r fe7ca47d85b7 NEWS --- a/NEWS Thu Nov 18 13:01:47 2010 +0000 +++ b/NEWS Wed Nov 24 15:02:56 2010 +0000 @@ -8,15 +8,19 @@ GX - http://bugs.gentoo.org/show_bug.cg CVE-XXXX-YYYY: http://www.cve.mitre.org/cgi-bin/cvename.cgi?name=XXXX-YYYY -New in release 1.7.6 (2010-11-XX): +New in release 1.7.7 (201X-XX-XX): + +New in release 1.7.6 (2010-11-24): * Allow the building of NetX to be disabled. -* Switch to the IcedTea server for JAXP, JAF and JAXWS tarballs. +* Security updates + - RH645843, CVE-2010-3860: IcedTea System property information leak via public static * Backports - S6853592: VM test nsk.regression.b4261880 fails with "X Error of failed request: BadWindow" inconsistently. * NetX - Do not prompt user multiple times for the same certificate. + - PR592: NetX can create invalid desktop entry files New in release 1.7.5 (2010-10-13): diff -r 2eff7c2e01d1 -r fe7ca47d85b7 configure.ac --- a/configure.ac Thu Nov 18 13:01:47 2010 +0000 +++ b/configure.ac Wed Nov 24 15:02:56 2010 +0000 @@ -1,4 +1,4 @@ AC_INIT([icedtea6], [1.7.6pre], [distro- -AC_INIT([icedtea6], [1.7.6pre], [distro-pkg-dev at openjdk.java.net]) +AC_INIT([icedtea6], [1.7.7pre], [distro-pkg-dev at openjdk.java.net]) AM_INIT_AUTOMAKE([1.9 tar-pax foreign]) AC_CONFIG_FILES([Makefile]) diff -r 2eff7c2e01d1 -r fe7ca47d85b7 plugin/icedteanp/java/sun/applet/PluginMain.java --- a/plugin/icedteanp/java/sun/applet/PluginMain.java Thu Nov 18 13:01:47 2010 +0000 +++ b/plugin/icedteanp/java/sun/applet/PluginMain.java Wed Nov 24 15:02:56 2010 +0000 @@ -89,8 +89,8 @@ public class PluginMain { // the files where stdout/stderr are sent to - public static final String PLUGIN_STDERR_FILE = System.getProperty("user.home") + "/.icedteaplugin/java.stderr"; - public static final String PLUGIN_STDOUT_FILE = System.getProperty("user.home") + "/.icedteaplugin/java.stdout"; + static final String PLUGIN_STDERR_FILE = System.getProperty("user.home") + "/.icedteaplugin/java.stderr"; + static final String PLUGIN_STDOUT_FILE = System.getProperty("user.home") + "/.icedteaplugin/java.stdout"; final boolean redirectStreams = System.getenv().containsKey("ICEDTEAPLUGIN_DEBUG"); static PluginStreamHandler streamHandler; diff -r 2eff7c2e01d1 -r fe7ca47d85b7 rt/net/sourceforge/jnlp/runtime/Boot.java --- a/rt/net/sourceforge/jnlp/runtime/Boot.java Thu Nov 18 13:01:47 2010 +0000 +++ b/rt/net/sourceforge/jnlp/runtime/Boot.java Wed Nov 24 15:02:56 2010 +0000 @@ -230,8 +230,8 @@ public final class Boot implements Privi */ private static String getAboutFile() { - if (new File(JNLPRuntime.NETX_ABOUT_FILE).exists()) - return JNLPRuntime.NETX_ABOUT_FILE; + if (new File(JNLPRuntime.getAboutFile()).exists()) + return JNLPRuntime.getAboutFile(); else return null; } diff -r 2eff7c2e01d1 -r fe7ca47d85b7 rt/net/sourceforge/jnlp/runtime/JNLPRuntime.java --- a/rt/net/sourceforge/jnlp/runtime/JNLPRuntime.java Thu Nov 18 13:01:47 2010 +0000 +++ b/rt/net/sourceforge/jnlp/runtime/JNLPRuntime.java Wed Nov 24 15:02:56 2010 +0000 @@ -105,42 +105,42 @@ public class JNLPRuntime { private static List initialArguments; /** Username */ - public static final String USER = System.getProperty("user.name"); + private static final String USER = System.getProperty("user.name"); /** User's home directory */ - public static final String HOME_DIR = System.getProperty("user.home"); + private static final String HOME_DIR = System.getProperty("user.home"); /** the ~/.netxrc file containing netx settings */ - public static final String NETXRC_FILE = HOME_DIR + File.separator + ".netxrc"; + private static final String NETXRC_FILE = HOME_DIR + File.separator + ".netxrc"; /** the ~/.netx directory containing user-specific data */ - public static final String NETX_DIR = HOME_DIR + File.separator + ".netx"; + private static final String NETX_DIR = HOME_DIR + File.separator + ".netx"; /** the ~/.netx/security directory containing security related information */ - public static final String SECURITY_DIR = NETX_DIR + File.separator + "security"; + private static final String SECURITY_DIR = NETX_DIR + File.separator + "security"; /** the ~/.netx/security/trusted.certs file containing trusted certificates */ - public static final String CERTIFICATES_FILE = SECURITY_DIR + File.separator + "trusted.certs"; + private static final String CERTIFICATES_FILE = SECURITY_DIR + File.separator + "trusted.certs"; /** the /tmp/ directory used for temporary files */ - public static final String TMP_DIR = System.getProperty("java.io.tmpdir"); + private static final String TMP_DIR = System.getProperty("java.io.tmpdir"); /** * the /tmp/$USER/netx/locks/ directory containing locks for single instance * applications */ - public static final String LOCKS_DIR = TMP_DIR + File.separator + USER + File.separator + private static final String LOCKS_DIR = TMP_DIR + File.separator + USER + File.separator + "netx" + File.separator + "locks"; /** the java.home directory */ - public static final String JAVA_HOME_DIR = System.getProperty("java.home"); - + private static final String JAVA_HOME_DIR = System.getProperty("java.home"); + /** the JNLP file to open to display the network-based about window */ - public static final String NETX_ABOUT_FILE = JAVA_HOME_DIR + File.separator + "lib" + private static final String NETX_ABOUT_FILE = JAVA_HOME_DIR + File.separator + "lib" + File.separator + "about.jnlp"; - - + + /** * Returns whether the JNLP runtime environment has been * initialized. Once initialized, some properties such as the @@ -558,7 +558,38 @@ public class JNLPRuntime { public static List getInitialArguments() { return initialArguments; } - + + /** Get the location of the certificate files user-level used by netx */ + public static String getCertificatesFile() { + System.getProperty("user.home"); + return CERTIFICATES_FILE; + } + + /** Get the home directory */ + public static String getHomeDir() { + System.getProperty("user.home"); + return HOME_DIR; + } + + /** Get the location of the about file */ + public static String getAboutFile() { + System.getProperty("java.home"); + return NETX_ABOUT_FILE; + } + + /** Get the location of the locks directory */ + public static String getLocksDir() { + System.getProperty("user.home"); + System.getProperty("java.io.tmpdir"); + return LOCKS_DIR; + } + + /** Get the location of a temporary location */ + public static String getTempDir() { + System.getProperty("java.io.tmpdir"); + return TMP_DIR; + } + } diff -r 2eff7c2e01d1 -r fe7ca47d85b7 rt/net/sourceforge/jnlp/security/SecurityUtil.java --- a/rt/net/sourceforge/jnlp/security/SecurityUtil.java Thu Nov 18 13:01:47 2010 +0000 +++ b/rt/net/sourceforge/jnlp/security/SecurityUtil.java Wed Nov 24 15:02:56 2010 +0000 @@ -46,18 +46,18 @@ import net.sourceforge.jnlp.runtime.JNLP public class SecurityUtil { - private static final char[] password = "changeit".toCharArray(); - - public static String getTrustedCertsFilename() throws Exception{ - - String homeDir = JNLPRuntime.HOME_DIR; - - if (homeDir == null) { - throw new Exception("Could not access home directory"); - } else { - return JNLPRuntime.CERTIFICATES_FILE; - } - } + private static final char[] password = "changeit".toCharArray(); + + public static String getTrustedCertsFilename() throws Exception { + + String homeDir = JNLPRuntime.getHomeDir(); + + if (homeDir == null) { + throw new Exception("Could not access home directory"); + } else { + return JNLPRuntime.getCertificatesFile(); + } + } public static char[] getTrustedCertsPassword() { return password; diff -r 2eff7c2e01d1 -r fe7ca47d85b7 rt/net/sourceforge/jnlp/services/SingleInstanceLock.java --- a/rt/net/sourceforge/jnlp/services/SingleInstanceLock.java Thu Nov 18 13:01:47 2010 +0000 +++ b/rt/net/sourceforge/jnlp/services/SingleInstanceLock.java Wed Nov 24 15:02:56 2010 +0000 @@ -126,7 +126,7 @@ class SingleInstanceLock { * may or may not exist. */ private File getLockFile() { - File baseDir = new File(JNLPRuntime.LOCKS_DIR); + File baseDir = new File(JNLPRuntime.getLocksDir()); if (!baseDir.isDirectory() && !baseDir.mkdirs()) { throw new RuntimeException(R("RNoLockDir", baseDir)); diff -r 2eff7c2e01d1 -r fe7ca47d85b7 rt/net/sourceforge/jnlp/util/XDesktopEntry.java --- a/rt/net/sourceforge/jnlp/util/XDesktopEntry.java Thu Nov 18 13:01:47 2010 +0000 +++ b/rt/net/sourceforge/jnlp/util/XDesktopEntry.java Wed Nov 24 15:02:56 2010 +0000 @@ -77,9 +77,9 @@ public class XDesktopEntry { String fileContents = "[Desktop Entry]\n"; fileContents += "Version=1.0\n"; - fileContents += "Name=" + file.getTitle() + "\n"; + fileContents += "Name=" + sanitize(file.getTitle()) + "\n"; fileContents += "GenericName=Java Web Start Application\n"; - fileContents += "Comment=" + file.getInformation().getDescription() + "\n"; + fileContents += "Comment=" + sanitize(file.getInformation().getDescription()) + "\n"; fileContents += "Type=Application\n"; if (iconLocation != null) { fileContents += "Icon=" + iconLocation + "\n"; @@ -88,7 +88,7 @@ public class XDesktopEntry { } if (file.getInformation().getVendor() != null) { - fileContents += "Vendor=" + file.getInformation().getVendor() + "\n"; + fileContents += "Vendor=" + sanitize(file.getInformation().getVendor()) + "\n"; } //Shortcut executes the jnlp from cache and system preferred java.. @@ -96,6 +96,22 @@ public class XDesktopEntry { return new StringReader(fileContents); + } + + /** + * Sanitizes a string so that it can be used safely in a key=value pair in a + * desktop entry file. + * + * @param input a String to sanitize + * @return a string safe to use as either the key or the value in the + * key=value pair in a desktop entry file + */ + private static String sanitize(String input) { + if (input == null) { + return ""; + } + /* key=value pairs must be a single line */ + return input.split("\n")[0]; } /** @@ -131,7 +147,7 @@ public class XDesktopEntry { * Install this XDesktopEntry into the user's desktop as a launcher */ private void installDesktopLauncher() { - File shortcutFile = new File(JNLPRuntime.TMP_DIR + File.separator + File shortcutFile = new File(JNLPRuntime.getTempDir() + File.separator + FileUtils.sanitizeFileName(file.getTitle()) + ".desktop"); try { From ahughes at redhat.com Wed Nov 24 07:15:21 2010 From: ahughes at redhat.com (Dr Andrew John Hughes) Date: Wed, 24 Nov 2010 15:15:21 +0000 Subject: [icedtea-web] fails to build with an older netx.jar on the path In-Reply-To: <4CED102E.2060407@ubuntu.com> References: <4CED102E.2060407@ubuntu.com> Message-ID: <20101124151521.GH1530@rivendell.middle-earth.co.uk> On 14:16 Wed 24 Nov , Matthias Klose wrote: > I had an older ./usr/lib/jvm/java-6-openjdk/jre/lib/netx.jar > installed on the system, then the build fails with: > > /scratch/packages/openjdk/web/icedtea-web-1.0~20101124/build/../plugin/icedteanp/java/sun/applet/PluginMain.java:126: > cannot find symbol > symbol : method setRedirectStreams(boolean) > location: class net.sourceforge.jnlp.runtime.JNLPRuntime > JNLPRuntime.setRedirectStreams(redirectStreams); > ^ > /scratch/packages/openjdk/web/icedtea-web-1.0~20101124/build/../plugin/icedteanp/java/sun/applet/PluginMain.java:203: > cannot find symbol > symbol : method getConfiguration() > location: class net.sourceforge.jnlp.runtime.JNLPRuntime > boolean installAuthenticator = > Boolean.valueOf(JNLPRuntime.getConfiguration() > ^ > > looks like the -bootclasspath needs to be set to find the current netx. > Can you post the javac command that caused this? I haven't seen any issues with 1.9 but haven't looked too hard. -- Andrew :) Free Java Software Engineer Red Hat, Inc. (http://www.redhat.com) Support Free Java! Contribute to GNU Classpath and the OpenJDK http://www.gnu.org/software/classpath http://openjdk.java.net PGP Key: 94EFD9D8 (http://subkeys.pgp.net) Fingerprint = F8EF F1EA 401E 2E60 15FA 7927 142C 2591 94EF D9D8 From omajid at redhat.com Wed Nov 24 07:18:17 2010 From: omajid at redhat.com (Omair Majid) Date: Wed, 24 Nov 2010 10:18:17 -0500 Subject: [icedtea-web] RFC: remove obsolete basedir, netxrc and other constants Message-ID: <4CED2CB9.4050507@redhat.com> Hi, The attached patch removes the obsolete constants defined in JNLPRuntime as well as methods to get and set the basedir and the netxrc files. The netxrc file and basedir are unsued; the ~/.icedtea/deployment.properties file is used instead. The constants are now accessed through DeploymentConfiguration. This patch includes a forward port of the fix for CVE-2010-3860. ChangeLog: 2010-11-24 Omair Majid * netx/net/sourceforge/jnlp/runtime/Boot.java: Remove basedir option. Add NETX_ABOUT_FILE. (run): Remove call to JNLPRuntime.setBaseDir. (getAboutFile): Use the constant in this file, not JNLPRuntime. (getBaseDir): Remove obsolete method. * netx/net/sourceforge/jnlp/runtime/JNLPRuntime.java: Remove baseDir, USER, HOME_DIR, NETXRC_FILE, NETX_DIR, SECURITY_DIR, CERTFICIATES_FILE, JAVA_HOME_DIR, NETX_ABOUT_FILE. (initialize): Do not set baseDir. (getBaseDir): Remove method. (setBaseDir): Likewise. (getDefaultBaseDir): Likewise. (getProperties): Likewise. * netx/net/sourceforge/jnlp/security/SecurityUtil.java (getTrustedCertsFilename): Delegate to KeyStores.getKeyStoreLocation. * plugin/icedteanp/java/sun/applet/PluginAppletSecurityContext.java (PluginAppletSecurityContext): Remove call to obsolete method. Any thoughts or comments? Thanks, Omair -------------- next part -------------- A non-text attachment was scrubbed... Name: remove-obsolete-basedir-01.patch Type: text/x-patch Size: 8877 bytes Desc: not available Url : http://mail.openjdk.java.net/pipermail/distro-pkg-dev/attachments/20101124/5cd6db81/remove-obsolete-basedir-01.patch From omajid at icedtea.classpath.org Wed Nov 24 07:56:12 2010 From: omajid at icedtea.classpath.org (omajid at icedtea.classpath.org) Date: Wed, 24 Nov 2010 15:56:12 +0000 Subject: /hg/icedtea-web: 2 new changesets Message-ID: changeset 6dd50caf8e76 in /hg/icedtea-web details: http://icedtea.classpath.org/hg/icedtea-web?cmd=changeset;node=6dd50caf8e76 author: Omair Majid date: Wed Nov 24 10:53:38 2010 -0500 fix infinite recursion in determining sandbox permissions 2010-11-24 Omair Majid * netx/net/sourceforge/jnlp/SecurityDesc.java: Add grantAwtPermissions. (SecurityDesc): Set grantAwtPermissions. (getSandboxPermissions): Use grantAwtPermissions to determine whether to grant permissions. changeset 476a91d02140 in /hg/icedtea-web details: http://icedtea.classpath.org/hg/icedtea-web?cmd=changeset;node=476a91d02140 author: Omair Majid date: Wed Nov 24 10:55:50 2010 -0500 internationalize a missed string in certificate viewer 2010-11-24 Omair Majid * netx/net/sourceforge/jnlp/resources/Messages.properties: Add CVCertificateType. * netx/net/sourceforge/jnlp/security/viewer/CertificatePane.java: Use CVCertificateType instead of hardcoded string. diffstat: 4 files changed, 23 insertions(+), 3 deletions(-) ChangeLog | 14 ++++++++++ netx/net/sourceforge/jnlp/SecurityDesc.java | 9 +++++- netx/net/sourceforge/jnlp/resources/Messages.properties | 1 netx/net/sourceforge/jnlp/security/viewer/CertificatePane.java | 2 - diffs (77 lines): diff -r 5782c25b26dc -r 476a91d02140 ChangeLog --- a/ChangeLog Wed Nov 24 14:15:17 2010 +0100 +++ b/ChangeLog Wed Nov 24 10:55:50 2010 -0500 @@ -1,3 +1,17 @@ 2010-11-24 Matthias Klose + + * netx/net/sourceforge/jnlp/resources/Messages.properties: Add + CVCertificateType. + * netx/net/sourceforge/jnlp/security/viewer/CertificatePane.java: Use + CVCertificateType instead of hardcoded string. + +2010-11-24 Omair Majid + + * netx/net/sourceforge/jnlp/SecurityDesc.java: Add grantAwtPermissions. + (SecurityDesc): Set grantAwtPermissions. + (getSandboxPermissions): Use grantAwtPermissions to determine whether to + grant permissions. + 2010-11-24 Matthias Klose * Makefile.am (javaws.desktop): Search javaws.desktop.in in $(srcdir). diff -r 5782c25b26dc -r 476a91d02140 netx/net/sourceforge/jnlp/SecurityDesc.java --- a/netx/net/sourceforge/jnlp/SecurityDesc.java Wed Nov 24 14:15:17 2010 +0100 +++ b/netx/net/sourceforge/jnlp/SecurityDesc.java Wed Nov 24 10:55:50 2010 -0500 @@ -52,6 +52,9 @@ public class SecurityDesc { /** the download host */ private String downloadHost; + + /** whether sandbox applications should get the show window without banner permission */ + private final boolean grantAwtPermissions; /** the JNLP file */ private JNLPFile file; @@ -146,6 +149,9 @@ public class SecurityDesc { this.file = file; this.type = type; this.downloadHost = downloadHost; + + String key = DeploymentConfiguration.KEY_SECURITY_ALLOW_HIDE_WINDOW_WARNING; + grantAwtPermissions = Boolean.valueOf(JNLPRuntime.getConfiguration().getProperty(key)); } /** @@ -188,8 +194,7 @@ public class SecurityDesc { for (int i=0; i < sandboxPermissions.length; i++) permissions.add(sandboxPermissions[i]); - String key = DeploymentConfiguration.KEY_SECURITY_ALLOW_HIDE_WINDOW_WARNING; - if (Boolean.valueOf(JNLPRuntime.getConfiguration().getProperty(key)) == Boolean.TRUE) { + if (grantAwtPermissions) { permissions.add(new AWTPermission("showWindowWithoutWarningBanner")); } diff -r 5782c25b26dc -r 476a91d02140 netx/net/sourceforge/jnlp/resources/Messages.properties --- a/netx/net/sourceforge/jnlp/resources/Messages.properties Wed Nov 24 14:15:17 2010 +0100 +++ b/netx/net/sourceforge/jnlp/resources/Messages.properties Wed Nov 24 10:55:50 2010 -0500 @@ -214,6 +214,7 @@ SValidity=Validity # Certificate Viewer CVCertificateViewer=Certificates +CVCertificateType=Certificate Type CVDetails=Details CVExport=Export CVImport=Import diff -r 5782c25b26dc -r 476a91d02140 netx/net/sourceforge/jnlp/security/viewer/CertificatePane.java --- a/netx/net/sourceforge/jnlp/security/viewer/CertificatePane.java Wed Nov 24 14:15:17 2010 +0100 +++ b/netx/net/sourceforge/jnlp/security/viewer/CertificatePane.java Wed Nov 24 10:55:50 2010 -0500 @@ -157,7 +157,7 @@ public class CertificatePane extends JPa JPanel certificateTypePanel = new JPanel(new BorderLayout()); certificateTypePanel.setBorder(BorderFactory.createEmptyBorder(5,5,5,5)); - JLabel certificateTypeLabel = new JLabel("Certificate Type:"); + JLabel certificateTypeLabel = new JLabel(R("CVCertificateType")); certificateTypeCombo = new JComboBox(certificateTypes); certificateTypeCombo.addActionListener(new CertificateTypeListener()); From omajid at redhat.com Wed Nov 24 07:57:18 2010 From: omajid at redhat.com (Omair Majid) Date: Wed, 24 Nov 2010 10:57:18 -0500 Subject: [icedtea-web] RFC: move a missed string to Messages.properties In-Reply-To: <20101123210556.GA20184@redhat.com> References: <4CEC235D.4020500@redhat.com> <20101123210556.GA20184@redhat.com> Message-ID: <4CED35DE.50800@redhat.com> On 11/23/2010 04:05 PM, Deepak Bhole wrote: > * Omair Majid [2010-11-23 15:26]: >> Hi, >> >> The attached patch adds a missed string that should have been >> internationalized. >> >> Any comments? >> >> Cheers, >> Omair > > I like reviewing these small patches :) > As the code gets cleaner, this should be the case most of the time :D > OK for HEAD! Thanks. Pushed. Cheers, Omair From omajid at redhat.com Wed Nov 24 08:26:44 2010 From: omajid at redhat.com (Omair Majid) Date: Wed, 24 Nov 2010 11:26:44 -0500 Subject: /hg/icedtea-web: add configuration support for user prompts and ... In-Reply-To: <20101123195448.GB17083@redhat.com> References: <4CEC1B1C.5030601@redhat.com> <20101123195448.GB17083@redhat.com> Message-ID: <4CED3CC4.4050209@redhat.com> On 11/23/2010 02:54 PM, Deepak Bhole wrote: > * Omair Majid [2010-11-23 14:50]: >> On 11/18/2010 12:02 PM, omajid at icedtea.classpath.org wrote: >>> changeset 88d31285a14b in /hg/icedtea-web >>> details: http://icedtea.classpath.org/hg/icedtea-web?cmd=changeset;node=88d31285a14b >>> author: Omair Majid >>> date: Thu Nov 18 11:55:26 2010 -0500 >>> >>> add configuration support for user prompts and other access control >>> options >>> >> >> I found a problem with this changeset. >> >>> @@ -187,6 +188,11 @@ public class SecurityDesc { >>> for (int i=0; i< sandboxPermissions.length; i++) >>> permissions.add(sandboxPermissions[i]); >>> >>> + String key = DeploymentConfiguration.KEY_SECURITY_ALLOW_HIDE_WINDOW_WARNING; >>> + if (Boolean.valueOf(JNLPRuntime.getConfiguration().getProperty(key)) == Boolean.TRUE) { >>> + permissions.add(new AWTPermission("showWindowWithoutWarningBanner")); >>> + } >>> + >> >> This leads to infinite recursion if the caller does not have full >> privileges. This calls DeploymentConfiguration, which calls >> JNLPSecurityManager which calls JNLPClassLoader which in turn calls >> SecurityDesc again. I dont know how this bug made it past my tests >> :/ The fix is attached. >> > > Looks good, ok for HEAD! > Thanks. Pushed. Cheers, Omair From andrew at icedtea.classpath.org Wed Nov 24 08:53:27 2010 From: andrew at icedtea.classpath.org (andrew at icedtea.classpath.org) Date: Wed, 24 Nov 2010 16:53:27 +0000 Subject: /hg/icedtea6: Add new releases (1.7.6, 1.8.3, 1.9.2) to NEWS. Message-ID: changeset c80d9c5bbe27 in /hg/icedtea6 details: http://icedtea.classpath.org/hg/icedtea6?cmd=changeset;node=c80d9c5bbe27 author: Andrew John Hughes date: Wed Nov 24 16:53:20 2010 +0000 Add new releases (1.7.6, 1.8.3, 1.9.2) to NEWS. 2010-11-24 Andrew John Hughes * NEWS: Add 1.7.6, 1.8.3 and 1.9.2 releases. diffstat: 2 files changed, 51 insertions(+) ChangeLog | 4 ++++ NEWS | 47 +++++++++++++++++++++++++++++++++++++++++++++++ diffs (68 lines): diff -r 4aef376b7123 -r c80d9c5bbe27 ChangeLog --- a/ChangeLog Tue Nov 23 11:39:48 2010 +0100 +++ b/ChangeLog Wed Nov 24 16:53:20 2010 +0000 @@ -1,3 +1,7 @@ 2010-11-23 Pavel Tisnovsky + + * NEWS: Add 1.7.6, 1.8.3 and 1.9.2 releases. + 2010-11-23 Pavel Tisnovsky * test/jtreg/README: diff -r 4aef376b7123 -r c80d9c5bbe27 NEWS --- a/NEWS Tue Nov 23 11:39:48 2010 +0100 +++ b/NEWS Wed Nov 24 16:53:20 2010 +0000 @@ -56,6 +56,53 @@ New in release 1.10 (2010-XX-XX): - PR557: Applet opens in a separate window if tab is closed when the applet loads - PR519: 100% CPU usage when displaying applets in Webkit based browsers - PR565: UIDefaults.getUI fails with jgoodies:looks 2.3.1 + +New in release 1.9.2 (2010-11-24): + +* Upgrade to latest revision of hs19 (b09). +* Allow the building of NetX to be disabled. +* Additional S390 size_t fixes. +* Switch to the IcedTea server for JAXP, JAF and JAXWS tarballs. +* Security updates + - RH645843, CVE-2010-3860: IcedTea System property information leak via public static +* Backports + - S6622432: RFE: Performance improvements to java.math.BigDecimal + - S6850606: Regression from JDK 1.6.0_12 + - S6876282: BigDecimal's divide(BigDecimal bd, RoundingFormat r) produces incorrect result + - S6991430, PR579: Zero PowerPC fix. + - S6703377: freetype: glyph vector outline is not translated correctly + - S6853592: VM test nsk.regression.b4261880 fails with "X Error of failed request: BadWindow" + inconsistently. +* Bug fixes + - RH647737: Disable compressed oops in hs19 to avoid Eclipse failures. + - RH643674: Update fontconfig files for Fedora 11, 12, 13 and 14. +* NetX + - Do not prompt user multiple times for the same certificate. + - PR592: NetX can create invalid desktop entry files + +New in release 1.8.3 (2010-11-24): + +* Allow the building of NetX to be disabled. +* Security updates + - RH645843, CVE-2010-3860: IcedTea System property information leak via public static +* Backports + - S6853592: VM test nsk.regression.b4261880 fails with "X Error of failed request: BadWindow" + inconsistently. +* NetX + - Do not prompt user multiple times for the same certificate. + - PR592: NetX can create invalid desktop entry files + +New in release 1.7.6 (2010-11-24): + +* Allow the building of NetX to be disabled. +* Security updates + - RH645843, CVE-2010-3860: IcedTea System property information leak via public static +* Backports + - S6853592: VM test nsk.regression.b4261880 fails with "X Error of failed request: BadWindow" + inconsistently. +* NetX + - Do not prompt user multiple times for the same certificate. + - PR592: NetX can create invalid desktop entry files New in release 1.9.1 (2010-10-13): From omajid at redhat.com Wed Nov 24 09:25:00 2010 From: omajid at redhat.com (Omair Majid) Date: Wed, 24 Nov 2010 12:25:00 -0500 Subject: [icedtea-web] fails to build with an older netx.jar on the path In-Reply-To: <4CED102E.2060407@ubuntu.com> References: <4CED102E.2060407@ubuntu.com> Message-ID: <4CED4A6C.9030205@redhat.com> On 11/24/2010 08:16 AM, Matthias Klose wrote: > I had an older ./usr/lib/jvm/java-6-openjdk/jre/lib/netx.jar > installed on the system, then the build fails with: > > /scratch/packages/openjdk/web/icedtea-web-1.0~20101124/build/../plugin/icedteanp/java/sun/applet/PluginMain.java:126: > cannot find symbol > symbol : method setRedirectStreams(boolean) > location: class net.sourceforge.jnlp.runtime.JNLPRuntime > JNLPRuntime.setRedirectStreams(redirectStreams); > ^ > /scratch/packages/openjdk/web/icedtea-web-1.0~20101124/build/../plugin/icedteanp/java/sun/applet/PluginMain.java:203: > cannot find symbol > symbol : method getConfiguration() > location: class net.sourceforge.jnlp.runtime.JNLPRuntime > boolean installAuthenticator = > Boolean.valueOf(JNLPRuntime.getConfiguration() > ^ > > looks like the -bootclasspath needs to be set to find the current netx. > The netx build sets the bootclasspath correctly, the attached patch does it for the plugin. Does this fix the issue? Thanks, Omair -------------- next part -------------- A non-text attachment was scrubbed... Name: plugin-set-bootclasspath.patch Type: text/x-patch Size: 410 bytes Desc: not available Url : http://mail.openjdk.java.net/pipermail/distro-pkg-dev/attachments/20101124/35a5491a/plugin-set-bootclasspath.patch From omajid at icedtea.classpath.org Wed Nov 24 10:13:22 2010 From: omajid at icedtea.classpath.org (omajid at icedtea.classpath.org) Date: Wed, 24 Nov 2010 18:13:22 +0000 Subject: /hg/icedtea-web: fix PR592: netx can create invalid desktop entr... Message-ID: changeset 87624fe05628 in /hg/icedtea-web details: http://icedtea.classpath.org/hg/icedtea-web?cmd=changeset;node=87624fe05628 author: Omair Majid date: Wed Nov 24 13:12:52 2010 -0500 fix PR592: netx can create invalid desktop entry files 2010-11-24 Omair Majid Fix PR592. * netx/net/sourceforge/jnlp/util/XDesktopEntry.java (getContentsAsReader): Sanitize information before adding to desktop file. (sanitize): New method. Ensure that there are no newlines in input. diffstat: 2 files changed, 26 insertions(+), 3 deletions(-) ChangeLog | 7 ++++++ netx/net/sourceforge/jnlp/util/XDesktopEntry.java | 22 ++++++++++++++++++--- diffs (61 lines): diff -r 476a91d02140 -r 87624fe05628 ChangeLog --- a/ChangeLog Wed Nov 24 10:55:50 2010 -0500 +++ b/ChangeLog Wed Nov 24 13:12:52 2010 -0500 @@ -1,3 +1,10 @@ 2010-11-24 Omair Majid + + Fix PR592. + * netx/net/sourceforge/jnlp/util/XDesktopEntry.java + (getContentsAsReader): Sanitize information before adding to desktop file. + (sanitize): New method. Ensure that there are no newlines in input. + 2010-11-24 Omair Majid * netx/net/sourceforge/jnlp/resources/Messages.properties: Add diff -r 476a91d02140 -r 87624fe05628 netx/net/sourceforge/jnlp/util/XDesktopEntry.java --- a/netx/net/sourceforge/jnlp/util/XDesktopEntry.java Wed Nov 24 10:55:50 2010 -0500 +++ b/netx/net/sourceforge/jnlp/util/XDesktopEntry.java Wed Nov 24 13:12:52 2010 -0500 @@ -80,9 +80,9 @@ public class XDesktopEntry { String fileContents = "[Desktop Entry]\n"; fileContents += "Version=1.0\n"; - fileContents += "Name=" + file.getTitle() + "\n"; + fileContents += "Name=" + sanitize(file.getTitle()) + "\n"; fileContents += "GenericName=Java Web Start Application\n"; - fileContents += "Comment=" + file.getInformation().getDescription() + "\n"; + fileContents += "Comment=" + sanitize(file.getInformation().getDescription()) + "\n"; fileContents += "Type=Application\n"; if (iconLocation != null) { fileContents += "Icon=" + iconLocation + "\n"; @@ -91,7 +91,7 @@ public class XDesktopEntry { } if (file.getInformation().getVendor() != null) { - fileContents += "Vendor=" + file.getInformation().getVendor() + "\n"; + fileContents += "Vendor=" + sanitize(file.getInformation().getVendor()) + "\n"; } //Shortcut executes the jnlp from cache and system preferred java.. @@ -99,6 +99,22 @@ public class XDesktopEntry { return new StringReader(fileContents); + } + + /** + * Sanitizes a string so that it can be used safely in a key=value pair in a + * desktop entry file. + * + * @param input a String to sanitize + * @return a string safe to use as either the key or the value in the + * key=value pair in a desktop entry file + */ + private static String sanitize(String input) { + if (input == null) { + return ""; + } + /* key=value pairs must be a single line */ + return input.split("\n")[0]; } /** From dbhole at redhat.com Wed Nov 24 10:37:12 2010 From: dbhole at redhat.com (Deepak Bhole) Date: Wed, 24 Nov 2010 13:37:12 -0500 Subject: [icedtea-web] RFC: remove obsolete basedir, netxrc and other constants In-Reply-To: <4CED2CB9.4050507@redhat.com> References: <4CED2CB9.4050507@redhat.com> Message-ID: <20101124183712.GA3208@redhat.com> * Omair Majid [2010-11-24 10:18]: > Hi, > > The attached patch removes the obsolete constants defined in > JNLPRuntime as well as methods to get and set the basedir and the > netxrc files. The netxrc file and basedir are unsued; the > ~/.icedtea/deployment.properties file is used instead. The constants > are now accessed through DeploymentConfiguration. > > This patch includes a forward port of the fix for CVE-2010-3860. > Looks fine to me. Okay for 1.0, please push to HEAD. Deepak > ChangeLog: > 2010-11-24 Omair Majid > > * netx/net/sourceforge/jnlp/runtime/Boot.java: Remove basedir > option. Add NETX_ABOUT_FILE. > (run): Remove call to JNLPRuntime.setBaseDir. > (getAboutFile): Use the constant in this file, not JNLPRuntime. > (getBaseDir): Remove obsolete method. > * netx/net/sourceforge/jnlp/runtime/JNLPRuntime.java: Remove > baseDir, USER, HOME_DIR, NETXRC_FILE, NETX_DIR, SECURITY_DIR, > CERTFICIATES_FILE, JAVA_HOME_DIR, NETX_ABOUT_FILE. > (initialize): Do not set baseDir. > (getBaseDir): Remove method. > (setBaseDir): Likewise. > (getDefaultBaseDir): Likewise. > (getProperties): Likewise. > * netx/net/sourceforge/jnlp/security/SecurityUtil.java > (getTrustedCertsFilename): Delegate to > KeyStores.getKeyStoreLocation. > * plugin/icedteanp/java/sun/applet/PluginAppletSecurityContext.java > (PluginAppletSecurityContext): Remove call to obsolete method. > > > Any thoughts or comments? > > Thanks, > Omair > diff -r dd77da50a226 netx/net/sourceforge/jnlp/runtime/Boot.java > --- a/netx/net/sourceforge/jnlp/runtime/Boot.java Tue Nov 23 10:05:06 2010 -0500 > +++ b/netx/net/sourceforge/jnlp/runtime/Boot.java Tue Nov 23 17:44:12 2010 -0500 > @@ -95,7 +95,6 @@ > + " -viewer "+R("BOViewer")+"\n" > + "\n" > + "run-options:"+"\n" > - + " -basedir dir "+R("BOBasedir")+"\n" > + " -arg arg "+R("BOArg")+"\n" > + " -param name=value "+R("BOParam")+"\n" > + " -property name=value "+R("BOProperty")+"\n" > @@ -111,6 +110,11 @@ > + " -Xclearcache "+R("BXclearcache")+"\n" > + " -help "+R("BOHelp")+"\n"; > > + /** the JNLP file to open to display the network-based about window */ > + private static final String NETX_ABOUT_FILE = System.getProperty("java.home") + File.separator + "lib" > + + File.separator + "about.jnlp"; > + > + > private static final String doubleArgs = "-basedir -jnlp -arg -param -property -update"; > > private static String args[]; // avoid the hot potato > @@ -179,7 +183,6 @@ > * The privileged part (jdk1.3 compatibility). > */ > public Void run() { > - JNLPRuntime.setBaseDir(getBaseDir()); > JNLPRuntime.setSecurityEnabled(null == getOption("-nosecurity")); > JNLPRuntime.initialize(true); > > @@ -221,8 +224,8 @@ > */ > private static String getAboutFile() { > > - if (new File(JNLPRuntime.NETX_ABOUT_FILE).exists()) > - return JNLPRuntime.NETX_ABOUT_FILE; > + if (new File(NETX_ABOUT_FILE).exists()) > + return NETX_ABOUT_FILE; > else > return null; > } > @@ -414,28 +417,4 @@ > return result.toArray( new String[result.size()] ); > } > > - /** > - * Return the base dir. If the base dir parameter is not set > - * the value is read from JNLPRuntime.NETX_ABOUT_FILE file. > - * If that file does not exist, an install dialog is displayed > - * to select the base directory. > - */ > - private static File getBaseDir() { > - if (getOption("-basedir") != null) { > - File basedir = new File(getOption("-basedir")); > - > - if (!basedir.exists() || !basedir.isDirectory()) > - fatalError(R("BNoDir", basedir)); > - > - return basedir; > - } > - > - // check .netxrc > - File basedir = JNLPRuntime.getDefaultBaseDir(); > - if (basedir == null) > - fatalError(R("BNoBase")); > - > - return basedir; > - } > - > } > diff -r dd77da50a226 netx/net/sourceforge/jnlp/runtime/JNLPRuntime.java > --- a/netx/net/sourceforge/jnlp/runtime/JNLPRuntime.java Tue Nov 23 10:05:06 2010 -0500 > +++ b/netx/net/sourceforge/jnlp/runtime/JNLPRuntime.java Tue Nov 23 17:44:12 2010 -0500 > @@ -80,9 +80,6 @@ > /** handles all security message to show appropriate security dialogs */ > private static SecurityDialogMessageHandler securityDialogMessageHandler; > > - /** the base dir for cache, etc */ > - private static File baseDir; > - > /** a default launch handler */ > private static LaunchHandler handler = null; > > @@ -128,33 +125,6 @@ > public static final String STDERR_FILE = "java.stderr"; > public static final String STDOUT_FILE = "java.stdout"; > > - /** Username */ > - public static final String USER = System.getProperty("user.name"); > - > - /** User's home directory */ > - public static final String HOME_DIR = System.getProperty("user.home"); > - > - /** the ~/.netxrc file containing netx settings */ > - public static final String NETXRC_FILE = HOME_DIR + File.separator + ".netxrc"; > - > - /** the ~/.netx directory containing user-specific data */ > - public static final String NETX_DIR = HOME_DIR + File.separator + ".netx"; > - > - /** the ~/.netx/security directory containing security related information */ > - public static final String SECURITY_DIR = NETX_DIR + File.separator + "security"; > - > - /** the ~/.netx/security/trusted.certs file containing trusted certificates */ > - public static final String CERTIFICATES_FILE = SECURITY_DIR + File.separator + "trusted.certs"; > - > - /** the java.home directory */ > - public static final String JAVA_HOME_DIR = System.getProperty("java.home"); > - > - /** the JNLP file to open to display the network-based about window */ > - public static final String NETX_ABOUT_FILE = JAVA_HOME_DIR + File.separator + "lib" > - + File.separator + "about.jnlp"; > - > - > - > /** > * Returns whether the JNLP runtime environment has been > * initialized. Once initialized, some properties such as the > @@ -213,12 +183,6 @@ > if (handler == null) > handler = new DefaultLaunchHandler(); > > - if (baseDir == null) > - baseDir = getDefaultBaseDir(); > - > - if (baseDir == null) > - throw new IllegalStateException(JNLPRuntime.getMessage("BNoBase")); > - > ServiceManager.setServiceManagerStub(new XServiceManagerStub()); // ignored if we're running under Web Start > > policy = new JNLPPolicy(); > @@ -395,25 +359,6 @@ > } > > /** > - * Return the base directory containing the cache, persistence > - * store, etc. > - */ > - public static File getBaseDir() { > - return baseDir; > - } > - > - /** > - * Sets the base directory containing the cache, persistence > - * store, etc. > - * > - * @throws IllegalStateException if caller is not the exit class > - */ > - public static void setBaseDir(File baseDirectory) { > - checkInitialized(); > - baseDir = baseDirectory; > - } > - > - /** > * Returns whether the secure runtime environment is enabled. > */ > public static boolean isSecurityEnabled() { > @@ -452,31 +397,6 @@ > } > > /** > - * Returns the system default base dir for or if not set, > - * prompts the user for the location. > - * > - * @return the base dir, or null if the user canceled the dialog > - * @throws IOException if there was an io exception > - */ > - public static File getDefaultBaseDir() { > - PropertiesFile props = JNLPRuntime.getProperties(); > - > - String baseStr = props.getProperty("basedir"); > - if (baseStr != null) > - return new File(baseStr); > - > - String homeDir = HOME_DIR; > - File baseDir = new File(NETX_DIR); > - if (homeDir == null || (!baseDir.isDirectory() && !baseDir.mkdir())) > - return null; > - > - props.setProperty("basedir", baseDir.toString()); > - props.store(); > - > - return baseDir; > - } > - > - /** > * Set a class that can exit the JVM; if not set then any class > * can exit the JVM. > * > @@ -505,15 +425,6 @@ > } > > /** > - * Return a PropertiesFile object backed by the runtime's > - * properties file. > - */ > - public static PropertiesFile getProperties() { > - File netxrc = new File(NETXRC_FILE); > - return new PropertiesFile(netxrc); > - } > - > - /** > * Return whether debug statements for the JNLP client code > * should be printed. > */ > diff -r dd77da50a226 netx/net/sourceforge/jnlp/security/SecurityUtil.java > --- a/netx/net/sourceforge/jnlp/security/SecurityUtil.java Tue Nov 23 10:05:06 2010 -0500 > +++ b/netx/net/sourceforge/jnlp/security/SecurityUtil.java Tue Nov 23 17:44:12 2010 -0500 > @@ -43,20 +43,15 @@ > import java.security.KeyStore; > > import net.sourceforge.jnlp.runtime.JNLPRuntime; > +import net.sourceforge.jnlp.security.KeyStores.Level; > +import net.sourceforge.jnlp.security.KeyStores.Type; > > public class SecurityUtil { > > private static final char[] password = "changeit".toCharArray(); > > public static String getTrustedCertsFilename() throws Exception{ > - > - String homeDir = JNLPRuntime.HOME_DIR; > - > - if (homeDir == null) { > - throw new Exception("Could not access home directory"); > - } else { > - return JNLPRuntime.CERTIFICATES_FILE; > - } > + return KeyStores.getKeyStoreLocation(Level.USER, Type.CERTS); > } > > public static char[] getTrustedCertsPassword() { > diff -r dd77da50a226 plugin/icedteanp/java/sun/applet/PluginAppletSecurityContext.java > --- a/plugin/icedteanp/java/sun/applet/PluginAppletSecurityContext.java Tue Nov 23 10:05:06 2010 -0500 > +++ b/plugin/icedteanp/java/sun/applet/PluginAppletSecurityContext.java Tue Nov 23 17:44:12 2010 -0500 > @@ -250,11 +250,6 @@ > > public PluginAppletSecurityContext(int identifier) { > this.identifier = identifier; > - > - // also, override the basedir, use a different one for the plugin > - File f = new File(System.getProperty("user.home") + "/.icedteaplugin/"); > - f.mkdir(); > - JNLPRuntime.setBaseDir(f); > > // We need a security manager.. and since there is a good chance that > // an applet will be loaded at some point, we should make it the SM From dbhole at redhat.com Wed Nov 24 10:41:44 2010 From: dbhole at redhat.com (Deepak Bhole) Date: Wed, 24 Nov 2010 13:41:44 -0500 Subject: [icedtea-web] RFC: reduce permissions on created files In-Reply-To: <4CEC1C01.8010205@redhat.com> References: <4CDC94FF.50701@redhat.com> <20101112115418.GE5773@rivendell.middle-earth.co.uk> <4CDD52D6.9020306@redhat.com> <20101122203122.GB363@redhat.com> <4CEC1C01.8010205@redhat.com> Message-ID: <20101124184143.GB3208@redhat.com> * Omair Majid [2010-11-23 14:54]: > On 11/22/2010 03:31 PM, Deepak Bhole wrote: > >* Omair Majid [2010-11-12 09:46]: > >>On 11/12/2010 06:54 AM, Dr Andrew John Hughes wrote: > >>>On 20:14 Thu 11 Nov , Omair Majid wrote: > >>>>Hi, > >>>> > >>>>The attached patch tries to make files created by netx/plugin more > >>>>secure by removing unnecessary permissions. IcedTea6 used to carry a > >>>>patch to change the umask used by the javaws process which IcedTea-Web > >>>>does not. This patch tries to make netx/plugin behave like they would in > >>>>the presence of such a patch. > >>>> > >>>>This patch does not change the file permissions on files that are cached > >>>>(mostly because I dont see why they should be protected), but does > >>>>change permissions on KeyStores, native directories created under /tmp/, > >>>>lock files, files created through the JNLP api and log files. > >>>> > >>> > >>>I think this is a better approach, though we should be aware that the permissions > >>>are now changed after the file has been created, whereas before (I presume) they > >>>were created with the correct permissions to begin with. > >>> > >> > >>Hm... Does creating a new (blank) file, setting appropriate > >>permissions on it and then writing content to it ensure that the > >>content can not be seen by others? This was the original intent with > >>this patch (I have since noticed one mistake in the patch). If > >>creating a blank file, setting permissions on it and then writing > >>actual content does not ensure the confidentiality of the data, then > >>I would like to find another way to accomplish this. > >> > >>Thanks for looking over the patch. > >> > > > >Good point Andrew! This patch needs to be modified. If a file is created > >with og+[r|w|x] and then restricted, anything that opened the handle > >before the change will have the permissions it did when the handle was > >opened. We need to create the file under a different (temp) name, change > >permissions, and then move it. AFAIK that shouldn't allow access. > > > >Access bypass can be verified as follows: > >1. Create a file as one user (A), allow a+r > >2. tail -f that file as another user (B) > >3. As A, og-rwx the file > >4. As A, write to the file > > > >The tail -f command from #2 will show the output, thus confirming that > >user B has access when they shouldn't. > > > >tail -f no longer gets the info if the file is renamed to something else > >between step 3 and 4. > > > > Thanks for the name change idea. The attached patch implements it. Thoughts? > Looks good! Once suggestion though -- it might be helpful for debugging/catching errors more easily if the exceptions thrown in createRestrictedFile() printed the file name along with the message. Also, the message should be in the message properties file imo, as users might encounter this more frequently if they set the wrong values. After above changes, okay for 1.0, please push to HEAD. Cheers, Deepak > Cheers, > Omair > diff -r dd77da50a226 netx/net/sourceforge/jnlp/Launcher.java > --- a/netx/net/sourceforge/jnlp/Launcher.java Tue Nov 23 10:05:06 2010 -0500 > +++ b/netx/net/sourceforge/jnlp/Launcher.java Tue Nov 23 13:50:30 2010 -0500 > @@ -48,6 +48,7 @@ > import net.sourceforge.jnlp.runtime.JNLPRuntime; > import net.sourceforge.jnlp.services.InstanceExistsException; > import net.sourceforge.jnlp.services.ServiceUtil; > +import net.sourceforge.jnlp.util.FileUtils; > import net.sourceforge.jnlp.util.Reflect; > > import javax.swing.SwingUtilities; > @@ -728,21 +729,13 @@ > File netxRunningFile = new File(JNLPRuntime.getConfiguration() > .getProperty(DeploymentConfiguration.KEY_USER_NETX_RUNNING_FILE)); > netxRunningFile.getParentFile().mkdirs(); > - if (netxRunningFile.createNewFile()) { > - FileOutputStream fos = new FileOutputStream(netxRunningFile); > - try { > - fos.write(message.getBytes()); > - } finally { > - fos.close(); > - } > - } > > - if (!netxRunningFile.isFile()) { > - if (JNLPRuntime.isDebug()) { > - System.err.println("Unable to create instance file"); > - } > - fileLock = null; > - return; > + FileUtils.createRestrictedFile(netxRunningFile, true); > + FileOutputStream fos = new FileOutputStream(netxRunningFile); > + try { > + fos.write(message.getBytes()); > + } finally { > + fos.close(); > } > > FileInputStream is = new FileInputStream(netxRunningFile); > diff -r dd77da50a226 netx/net/sourceforge/jnlp/resources/Messages.properties > --- a/netx/net/sourceforge/jnlp/resources/Messages.properties Tue Nov 23 10:05:06 2010 -0500 > +++ b/netx/net/sourceforge/jnlp/resources/Messages.properties Tue Nov 23 13:50:30 2010 -0500 > @@ -153,7 +153,6 @@ > BOHeadless = Disables download window, other UIs. > BOStrict = Enables strict checking of JNLP file format. > BOViewer = Shows the trusted certificate viewer. > -BOUmask = Sets the umask for files created by an application. > BXnofork = Do not create another JVM. > BXclearcache= Clean the JNLP application cache. > BOHelp = Print this message and exit. > diff -r dd77da50a226 netx/net/sourceforge/jnlp/runtime/Boot.java > --- a/netx/net/sourceforge/jnlp/runtime/Boot.java Tue Nov 23 10:05:06 2010 -0500 > +++ b/netx/net/sourceforge/jnlp/runtime/Boot.java Tue Nov 23 13:50:30 2010 -0500 > @@ -106,7 +106,6 @@ > + " -noupdate "+R("BONoupdate")+"\n" > + " -headless "+R("BOHeadless")+"\n" > + " -strict "+R("BOStrict")+"\n" > - + " -umask=value "+R("BOUmask")+"\n" > + " -Xnofork "+R("BXnofork")+"\n" > + " -Xclearcache "+R("BXclearcache")+"\n" > + " -help "+R("BOHelp")+"\n"; > diff -r dd77da50a226 netx/net/sourceforge/jnlp/runtime/JNLPClassLoader.java > --- a/netx/net/sourceforge/jnlp/runtime/JNLPClassLoader.java Tue Nov 23 10:05:06 2010 -0500 > +++ b/netx/net/sourceforge/jnlp/runtime/JNLPClassLoader.java Tue Nov 23 13:50:30 2010 -0500 > @@ -815,7 +815,9 @@ > nativeDir = getNativeDir(); > > File outFile = new File(nativeDir, name); > - > + if (!outFile.isFile()) { > + FileUtils.createRestrictedFile(outFile, true); > + } > CacheUtil.streamCopy(jarFile.getInputStream(e), > new FileOutputStream(outFile)); > > @@ -837,12 +839,18 @@ > + File.separator + "netx-native-" > + (new Random().nextInt() & 0xFFFF)); > > - if (!nativeDir.mkdirs()) > + File parent = nativeDir.getParentFile(); > + if (!parent.isDirectory() && !parent.mkdirs()) { > return null; > - else { > + } > + > + try { > + FileUtils.createRestrictedDirectory(nativeDir); > // add this new native directory to the search path > addNativeDirectory(nativeDir); > return nativeDir; > + } catch (IOException e) { > + return null; > } > } > > diff -r dd77da50a226 netx/net/sourceforge/jnlp/runtime/JNLPRuntime.java > --- a/netx/net/sourceforge/jnlp/runtime/JNLPRuntime.java Tue Nov 23 10:05:06 2010 -0500 > +++ b/netx/net/sourceforge/jnlp/runtime/JNLPRuntime.java Tue Nov 23 13:50:30 2010 -0500 > @@ -304,12 +304,15 @@ > .getProperty(DeploymentConfiguration.KEY_ENABLE_LOGGING)); > if (redirectStreams || enableLogging) { > String logDir = config.getProperty(DeploymentConfiguration.KEY_USER_LOG_DIR); > - File errFile = new File(logDir, JNLPRuntime.STDERR_FILE); > - errFile.getParentFile().mkdirs(); > - File outFile = new File(logDir, JNLPRuntime.STDOUT_FILE); > - outFile.getParentFile().mkdirs(); > > try { > + File errFile = new File(logDir, JNLPRuntime.STDERR_FILE); > + errFile.getParentFile().mkdirs(); > + FileUtils.createRestrictedFile(errFile, true); > + File outFile = new File(logDir, JNLPRuntime.STDOUT_FILE); > + outFile.getParentFile().mkdirs(); > + FileUtils.createRestrictedFile(outFile, true); > + > if (redirectStreams) { > System.setErr(new PrintStream(new FileOutputStream(errFile))); > System.setOut(new PrintStream(new FileOutputStream(outFile))); > diff -r dd77da50a226 netx/net/sourceforge/jnlp/security/CertWarningPane.java > --- a/netx/net/sourceforge/jnlp/security/CertWarningPane.java Tue Nov 23 10:05:06 2010 -0500 > +++ b/netx/net/sourceforge/jnlp/security/CertWarningPane.java Tue Nov 23 13:50:30 2010 -0500 > @@ -47,6 +47,7 @@ > import java.awt.GridLayout; > import java.awt.event.ActionEvent; > import java.awt.event.ActionListener; > +import java.io.File; > import java.io.FileOutputStream; > import java.io.OutputStream; > import java.security.KeyStore; > @@ -68,6 +69,7 @@ > import net.sourceforge.jnlp.security.KeyStores.Level; > import net.sourceforge.jnlp.security.KeyStores.Type; > import net.sourceforge.jnlp.security.SecurityWarning.AccessType; > +import net.sourceforge.jnlp.util.FileUtils; > > /** > * Provides the panel for using inside a SecurityWarningDialog. These dialogs are > @@ -246,7 +248,12 @@ > KeyStore ks = KeyStores.getKeyStore(Level.USER, Type.CERTS); > X509Certificate c = (X509Certificate) parent.getJarSigner().getPublisher(); > CertificateUtils.addToKeyStore(c, ks); > - OutputStream os = new FileOutputStream(KeyStores.getKeyStoreLocation(Level.USER, Type.CERTS)); > + File keyStoreFile = new File(KeyStores.getKeyStoreLocation(Level.USER, Type.CERTS)); > + if (!keyStoreFile.isFile()) { > + FileUtils.createRestrictedFile(keyStoreFile, true); > + } > + > + OutputStream os = new FileOutputStream(keyStoreFile); > ks.store(os, KeyStores.getPassword()); > if (JNLPRuntime.isDebug()) { > System.out.println("certificate is now permanently trusted"); > diff -r dd77da50a226 netx/net/sourceforge/jnlp/security/KeyStores.java > --- a/netx/net/sourceforge/jnlp/security/KeyStores.java Tue Nov 23 10:05:06 2010 -0500 > +++ b/netx/net/sourceforge/jnlp/security/KeyStores.java Tue Nov 23 13:50:30 2010 -0500 > @@ -53,6 +53,7 @@ > import net.sourceforge.jnlp.runtime.DeploymentConfiguration; > import net.sourceforge.jnlp.runtime.JNLPRuntime; > import net.sourceforge.jnlp.runtime.Translator; > +import net.sourceforge.jnlp.util.FileUtils; > > /** > * The KeyStores class allows easily accessing the various KeyStores > @@ -339,6 +340,8 @@ > if (!parent.isDirectory() && !parent.mkdirs()) { > throw new IOException("unable to create " + parent); > } > + FileUtils.createRestrictedFile(file, true); > + > ks = KeyStore.getInstance(KEYSTORE_TYPE); > ks.load(null, password.toCharArray()); > FileOutputStream fos = new FileOutputStream(file); > diff -r dd77da50a226 netx/net/sourceforge/jnlp/security/viewer/CertificatePane.java > --- a/netx/net/sourceforge/jnlp/security/viewer/CertificatePane.java Tue Nov 23 10:05:06 2010 -0500 > +++ b/netx/net/sourceforge/jnlp/security/viewer/CertificatePane.java Tue Nov 23 13:50:30 2010 -0500 > @@ -45,6 +45,7 @@ > import java.awt.event.ActionEvent; > import java.awt.event.ActionListener; > import java.awt.event.KeyEvent; > +import java.io.File; > import java.io.FileOutputStream; > import java.io.OutputStream; > import java.io.PrintStream; > @@ -76,6 +77,7 @@ > import net.sourceforge.jnlp.security.SecurityUtil; > import net.sourceforge.jnlp.security.SecurityWarningDialog; > import net.sourceforge.jnlp.security.KeyStores.Level; > +import net.sourceforge.jnlp.util.FileUtils; > > public class CertificatePane extends JPanel { > > @@ -361,8 +363,13 @@ > try { > KeyStore ks = keyStore; > CertificateUtils.addToKeyStore(chooser.getSelectedFile(), ks); > - OutputStream os = new FileOutputStream( > - KeyStores.getKeyStoreLocation(currentKeyStoreLevel, currentKeyStoreType)); > + File keyStoreFile = new File(KeyStores > + .getKeyStoreLocation(currentKeyStoreLevel, currentKeyStoreType)); > + if (!keyStoreFile.isFile()) { > + FileUtils.createRestrictedFile(keyStoreFile, true); > + } > + > + OutputStream os = new FileOutputStream(keyStoreFile); > ks.store(os, KeyStores.getPassword()); > repopulateTables(); > } catch (Exception ex) { > @@ -436,8 +443,12 @@ > JOptionPane.YES_NO_OPTION); > if (i == 0) { > keyStore.deleteEntry(alias); > - FileOutputStream fos = new FileOutputStream( > - KeyStores.getKeyStoreLocation(currentKeyStoreLevel, currentKeyStoreType)); > + File keyStoreFile = new File(KeyStores > + .getKeyStoreLocation(currentKeyStoreLevel, currentKeyStoreType)); > + if (!keyStoreFile.isFile()) { > + FileUtils.createRestrictedFile(keyStoreFile, true); > + } > + FileOutputStream fos = new FileOutputStream(keyStoreFile); > keyStore.store(fos, KeyStores.getPassword()); > fos.close(); > } > diff -r dd77da50a226 netx/net/sourceforge/jnlp/services/SingleInstanceLock.java > --- a/netx/net/sourceforge/jnlp/services/SingleInstanceLock.java Tue Nov 23 10:05:06 2010 -0500 > +++ b/netx/net/sourceforge/jnlp/services/SingleInstanceLock.java Tue Nov 23 13:50:30 2010 -0500 > @@ -67,6 +67,7 @@ > */ > public void createWithPort(int localPort) throws IOException { > > + FileUtils.createRestrictedFile(lockFile, true); > BufferedWriter lockFileWriter = new BufferedWriter(new FileWriter(lockFile, false)); > lockFileWriter.write(String.valueOf(localPort)); > lockFileWriter.newLine(); > @@ -132,9 +133,17 @@ > File baseDir = new File(JNLPRuntime.getConfiguration() > .getProperty(DeploymentConfiguration.KEY_USER_LOCKS_DIR)); > > - if (!baseDir.isDirectory() && !baseDir.mkdirs()) { > - throw new RuntimeException(R("RNoLockDir", baseDir)); > + if (!baseDir.isDirectory()) { > + if (!baseDir.getParentFile().isDirectory() && !baseDir.getParentFile().mkdirs()) { > + throw new RuntimeException(R("RNoLockDir", baseDir)); > + } > + try { > + FileUtils.createRestrictedDirectory(baseDir); > + } catch (IOException e) { > + throw new RuntimeException(R("RNoLockDir", baseDir)); > + } > } > + > String lockFileName = getLockFileName(); > File applicationLockFile = new File(baseDir, lockFileName); > return applicationLockFile; > diff -r dd77da50a226 netx/net/sourceforge/jnlp/services/XFileSaveService.java > --- a/netx/net/sourceforge/jnlp/services/XFileSaveService.java Tue Nov 23 10:05:06 2010 -0500 > +++ b/netx/net/sourceforge/jnlp/services/XFileSaveService.java Tue Nov 23 13:50:30 2010 -0500 > @@ -44,6 +44,7 @@ > import javax.jnlp.*; > > import net.sourceforge.jnlp.security.SecurityWarning.AccessType; > +import net.sourceforge.jnlp.util.FileUtils; > > import javax.swing.JFileChooser; > import javax.swing.JOptionPane; > @@ -121,7 +122,7 @@ > if (!replace) > return; > } else { > - file.createNewFile(); > + FileUtils.createRestrictedFile(file, true); > } > > if (file.canWrite()) { > diff -r dd77da50a226 netx/net/sourceforge/jnlp/services/XPersistenceService.java > --- a/netx/net/sourceforge/jnlp/services/XPersistenceService.java Tue Nov 23 10:05:06 2010 -0500 > +++ b/netx/net/sourceforge/jnlp/services/XPersistenceService.java Tue Nov 23 13:50:30 2010 -0500 > @@ -26,6 +26,7 @@ > import net.sourceforge.jnlp.*; > import net.sourceforge.jnlp.cache.*; > import net.sourceforge.jnlp.runtime.*; > +import net.sourceforge.jnlp.util.FileUtils; > > /** > * The BasicService JNLP service. > @@ -96,9 +97,11 @@ > File file = toCacheFile(location); > file.getParentFile().mkdirs(); > > - if (!file.createNewFile()) > + if (!file.exists()) > throw new IOException("File already exists."); > > + FileUtils.createRestrictedFile(file, true); > + > return maxsize; > } > > diff -r dd77da50a226 netx/net/sourceforge/jnlp/util/FileUtils.java > --- a/netx/net/sourceforge/jnlp/util/FileUtils.java Tue Nov 23 10:05:06 2010 -0500 > +++ b/netx/net/sourceforge/jnlp/util/FileUtils.java Tue Nov 23 13:50:30 2010 -0500 > @@ -18,6 +18,7 @@ > > import java.io.File; > import java.io.IOException; > +import java.util.Random; > > import net.sourceforge.jnlp.runtime.JNLPRuntime; > > @@ -72,6 +73,79 @@ > } > > /** > + * Creates a new directory with minimum permissions. The directory is not > + * readable or writable by anyone other than the owner. The parent > + * directories are not created; they must exist before this is called. > + * > + * @throws IOException > + */ > + public static void createRestrictedDirectory(File directory) throws IOException { > + createRestrictedFile(directory, true, true); > + } > + > + /** > + * Creates a new file with minimum permissions. The file is not readable or > + * writable by anyone other than the owner. If writeableByOnwer is false, > + * even the owner can not write to it. > + * > + * @throws IOException > + */ > + public static void createRestrictedFile(File file, boolean writableByOwner) throws IOException { > + createRestrictedFile(file, false, writableByOwner); > + } > + > + /** > + * Creates a new file or directory with minimum permissions. The file is not > + * readable or writable by anyone other than the owner. If writeableByOnwer > + * is false, even the owner can not write to it. If isDir is true, then the > + * directory can be executed by the owner > + * > + * @throws IOException > + */ > + private static void createRestrictedFile(File file, boolean isDir, boolean writableByOwner) throws IOException { > + > + File tempFile = null; > + > + tempFile = new File(file.getCanonicalPath() + ".temp"); > + > + if (isDir) { > + if (!tempFile.mkdir()) { > + throw new IOException("unable to create directory"); > + } > + } else { > + if (!tempFile.createNewFile()) { > + throw new IOException("Unable to create file"); > + } > + } > + > + // remove all permissions > + tempFile.setExecutable(false, false); > + tempFile.setReadable(false, false); > + tempFile.setWritable(false, false); > + > + // allow owner to read > + tempFile.setReadable(true, true); > + > + // allow owner to write > + if (writableByOwner) { > + tempFile.setWritable(true, true); > + } > + > + // allow owner to enter directories > + if (isDir) { > + tempFile.setExecutable(true, true); > + } > + > + // rename this file. Unless the file is moved/renamed, any program that > + // opened the file right after it was created might still be able to > + // read the data. > + if (!tempFile.renameTo(file)) { > + throw new IOException("Unable to rename file"); > + } > + > + } > + > + /** > * Returns a String that is suitable for using in GUI elements for > * displaying (long) paths to users. > * > diff -r dd77da50a226 netx/net/sourceforge/jnlp/util/XDesktopEntry.java > --- a/netx/net/sourceforge/jnlp/util/XDesktopEntry.java Tue Nov 23 10:05:06 2010 -0500 > +++ b/netx/net/sourceforge/jnlp/util/XDesktopEntry.java Tue Nov 23 13:50:30 2010 -0500 > @@ -142,6 +142,9 @@ > if (!shortcutFile.getParentFile().isDirectory() && !shortcutFile.getParentFile().mkdirs()) { > throw new IOException(shortcutFile.getParentFile().toString()); > } > + > + FileUtils.createRestrictedFile(shortcutFile, true); > + > /* > * Write out a Java String (UTF-16) as a UTF-8 file > */ From omajid at redhat.com Wed Nov 24 10:49:36 2010 From: omajid at redhat.com (Omair Majid) Date: Wed, 24 Nov 2010 13:49:36 -0500 Subject: [icedtea-web] RFC: reduce permissions on created files In-Reply-To: <20101124184143.GB3208@redhat.com> References: <4CDC94FF.50701@redhat.com> <20101112115418.GE5773@rivendell.middle-earth.co.uk> <4CDD52D6.9020306@redhat.com> <20101122203122.GB363@redhat.com> <4CEC1C01.8010205@redhat.com> <20101124184143.GB3208@redhat.com> Message-ID: <4CED5E40.9080806@redhat.com> On 11/24/2010 01:41 PM, Deepak Bhole wrote: > * Omair Majid [2010-11-23 14:54]: >> On 11/22/2010 03:31 PM, Deepak Bhole wrote: >>> * Omair Majid [2010-11-12 09:46]: >>>> On 11/12/2010 06:54 AM, Dr Andrew John Hughes wrote: >>>>> On 20:14 Thu 11 Nov , Omair Majid wrote: >>>>>> Hi, >>>>>> >>>>>> The attached patch tries to make files created by netx/plugin more >>>>>> secure by removing unnecessary permissions. IcedTea6 used to carry a >>>>>> patch to change the umask used by the javaws process which IcedTea-Web >>>>>> does not. This patch tries to make netx/plugin behave like they would in >>>>>> the presence of such a patch. >>>>>> >>>>>> This patch does not change the file permissions on files that are cached >>>>>> (mostly because I dont see why they should be protected), but does >>>>>> change permissions on KeyStores, native directories created under /tmp/, >>>>>> lock files, files created through the JNLP api and log files. >>>>>> >>>>> >>>>> I think this is a better approach, though we should be aware that the permissions >>>>> are now changed after the file has been created, whereas before (I presume) they >>>>> were created with the correct permissions to begin with. >>>>> >>>> >>>> Hm... Does creating a new (blank) file, setting appropriate >>>> permissions on it and then writing content to it ensure that the >>>> content can not be seen by others? This was the original intent with >>>> this patch (I have since noticed one mistake in the patch). If >>>> creating a blank file, setting permissions on it and then writing >>>> actual content does not ensure the confidentiality of the data, then >>>> I would like to find another way to accomplish this. >>>> >>>> Thanks for looking over the patch. >>>> >>> >>> Good point Andrew! This patch needs to be modified. If a file is created >>> with og+[r|w|x] and then restricted, anything that opened the handle >>> before the change will have the permissions it did when the handle was >>> opened. We need to create the file under a different (temp) name, change >>> permissions, and then move it. AFAIK that shouldn't allow access. >>> >>> Access bypass can be verified as follows: >>> 1. Create a file as one user (A), allow a+r >>> 2. tail -f that file as another user (B) >>> 3. As A, og-rwx the file >>> 4. As A, write to the file >>> >>> The tail -f command from #2 will show the output, thus confirming that >>> user B has access when they shouldn't. >>> >>> tail -f no longer gets the info if the file is renamed to something else >>> between step 3 and 4. >>> >> >> Thanks for the name change idea. The attached patch implements it. Thoughts? >> > > Looks good! Once suggestion though -- it might be helpful for > debugging/catching errors more easily if the exceptions thrown in > createRestrictedFile() printed the file name along with the message. > Also, the message should be in the message properties file imo, as users > might encounter this more frequently if they set the wrong values. > Sure. Do we have a policy on what goes in the Messages.properties file? I know all user-visible GUI text belongs in there, but should we add (some? all?) exception messages in there too? From dbhole at redhat.com Wed Nov 24 10:56:50 2010 From: dbhole at redhat.com (Deepak Bhole) Date: Wed, 24 Nov 2010 13:56:50 -0500 Subject: [icedtea-web] RFC: reduce permissions on created files In-Reply-To: <4CED5E40.9080806@redhat.com> References: <4CDC94FF.50701@redhat.com> <20101112115418.GE5773@rivendell.middle-earth.co.uk> <4CDD52D6.9020306@redhat.com> <20101122203122.GB363@redhat.com> <4CEC1C01.8010205@redhat.com> <20101124184143.GB3208@redhat.com> <4CED5E40.9080806@redhat.com> Message-ID: <20101124185649.GC3208@redhat.com> * Omair Majid [2010-11-24 13:49]: > On 11/24/2010 01:41 PM, Deepak Bhole wrote: > >* Omair Majid [2010-11-23 14:54]: > >>On 11/22/2010 03:31 PM, Deepak Bhole wrote: > >>>* Omair Majid [2010-11-12 09:46]: > >>>>On 11/12/2010 06:54 AM, Dr Andrew John Hughes wrote: > >>>>>On 20:14 Thu 11 Nov , Omair Majid wrote: > >>>>>>Hi, > >>>>>> > >>>>>>The attached patch tries to make files created by netx/plugin more > >>>>>>secure by removing unnecessary permissions. IcedTea6 used to carry a > >>>>>>patch to change the umask used by the javaws process which IcedTea-Web > >>>>>>does not. This patch tries to make netx/plugin behave like they would in > >>>>>>the presence of such a patch. > >>>>>> > >>>>>>This patch does not change the file permissions on files that are cached > >>>>>>(mostly because I dont see why they should be protected), but does > >>>>>>change permissions on KeyStores, native directories created under /tmp/, > >>>>>>lock files, files created through the JNLP api and log files. > >>>>>> > >>>>> > >>>>>I think this is a better approach, though we should be aware that the permissions > >>>>>are now changed after the file has been created, whereas before (I presume) they > >>>>>were created with the correct permissions to begin with. > >>>>> > >>>> > >>>>Hm... Does creating a new (blank) file, setting appropriate > >>>>permissions on it and then writing content to it ensure that the > >>>>content can not be seen by others? This was the original intent with > >>>>this patch (I have since noticed one mistake in the patch). If > >>>>creating a blank file, setting permissions on it and then writing > >>>>actual content does not ensure the confidentiality of the data, then > >>>>I would like to find another way to accomplish this. > >>>> > >>>>Thanks for looking over the patch. > >>>> > >>> > >>>Good point Andrew! This patch needs to be modified. If a file is created > >>>with og+[r|w|x] and then restricted, anything that opened the handle > >>>before the change will have the permissions it did when the handle was > >>>opened. We need to create the file under a different (temp) name, change > >>>permissions, and then move it. AFAIK that shouldn't allow access. > >>> > >>>Access bypass can be verified as follows: > >>>1. Create a file as one user (A), allow a+r > >>>2. tail -f that file as another user (B) > >>>3. As A, og-rwx the file > >>>4. As A, write to the file > >>> > >>>The tail -f command from #2 will show the output, thus confirming that > >>>user B has access when they shouldn't. > >>> > >>>tail -f no longer gets the info if the file is renamed to something else > >>>between step 3 and 4. > >>> > >> > >>Thanks for the name change idea. The attached patch implements it. Thoughts? > >> > > > >Looks good! Once suggestion though -- it might be helpful for > >debugging/catching errors more easily if the exceptions thrown in > >createRestrictedFile() printed the file name along with the message. > >Also, the message should be in the message properties file imo, as users > >might encounter this more frequently if they set the wrong values. > > > > Sure. Do we have a policy on what goes in the Messages.properties > file? I know all user-visible GUI text belongs in there, but should > we add (some? all?) exception messages in there too? I think error messages that are only useful to devs are fine in code, but messages that users can see and may need to understand (i.e. fixable on their end), should be in Messages.properties.. Cheers, Deepak From bugzilla-daemon at icedtea.classpath.org Wed Nov 24 11:00:37 2010 From: bugzilla-daemon at icedtea.classpath.org (bugzilla-daemon at icedtea.classpath.org) Date: Wed, 24 Nov 2010 19:00:37 +0000 Subject: [Bug 599] New: plugin: mutex and memory leak Message-ID: http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=599 Summary: plugin: mutex and memory leak Product: IcedTea Version: unspecified Platform: all OS/Version: Linux Status: NEW Severity: normal Priority: P2 Component: IcedTea6 AssignedTo: unassigned at icedtea.classpath.org ReportedBy: pcpa at mandriva.com.br I made the attached patch for mandriva java-1.6.0-openjdk package when updating to use icedtea6-1.8.2 and posted about it on mailing lists, but unfortunately I did not open a bug report neither extend the patch, but the problems are still present in icedtea6-1.8.3. Problems: 1. start_jvm_if_needed() allocates memory for a mutex in a local variable, initializes it, and locks it; this will not prevent concurrent access because the mutex is in stack storage, but it also returns, with the mutex locked, f the jvm was already started 2. the memory leak is when there are no consumers in MessageBus::post as it expects the first consumer to release the memory 3. also in MessageBus::Post the debug says: PLUGIN_DEBUG("Trying to lock %p...\n", &msg_queue_mutex); but the next line is: pthread_mutex_lock(&subscriber_mutex); so the patch also actually locks the mutex being advertised as being locked. In this case I am not 100% sure if order of lock/unlock is correct. I did this patch, and it corrected most issues where I use/test openjdk, that is in my mandriva package of sagemath, that can open several jmol plugins. But it does not correct all, and frequently it will dead lock, and need to kill the jvm, so, there should be still other issues that may lead to deadlocks with multiple plugins running concurrently. -- Configure bugmail: http://icedtea.classpath.org/bugzilla/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are the assignee for the bug, or are watching the assignee. From bugzilla-daemon at icedtea.classpath.org Wed Nov 24 11:01:47 2010 From: bugzilla-daemon at icedtea.classpath.org (bugzilla-daemon at icedtea.classpath.org) Date: Wed, 24 Nov 2010 19:01:47 +0000 Subject: [Bug 599] plugin: mutex and memory leak Message-ID: http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=599 ------- Comment #1 from pcpa at mandriva.com.br 2010-11-24 19:01 ------- Created an attachment (id=443) --> (http://icedtea.classpath.org/bugzilla/attachment.cgi?id=443&action=view) icedtea6-1.8.2-mutex_and_leak.patch -- Configure bugmail: http://icedtea.classpath.org/bugzilla/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are the assignee for the bug, or are watching the assignee. From bugzilla-daemon at icedtea.classpath.org Wed Nov 24 11:05:39 2010 From: bugzilla-daemon at icedtea.classpath.org (bugzilla-daemon at icedtea.classpath.org) Date: Wed, 24 Nov 2010 19:05:39 +0000 Subject: [Bug 599] plugin: mutex and memory leak Message-ID: http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=599 gnu_andrew at member.fsf.org changed: What |Removed |Added ---------------------------------------------------------------------------- Component|IcedTea6 |NPPlugin -- Configure bugmail: http://icedtea.classpath.org/bugzilla/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are the assignee for the bug, or are watching the assignee. From bugzilla-daemon at icedtea.classpath.org Wed Nov 24 11:09:53 2010 From: bugzilla-daemon at icedtea.classpath.org (bugzilla-daemon at icedtea.classpath.org) Date: Wed, 24 Nov 2010 19:09:53 +0000 Subject: [Bug 599] plugin: mutex and memory leak Message-ID: http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=599 gnu_andrew at member.fsf.org changed: What |Removed |Added ---------------------------------------------------------------------------- Status|NEW |ASSIGNED ------- Comment #2 from gnu_andrew at member.fsf.org 2010-11-24 19:09 ------- Have you tried with IcedTea-Web? http://icedtea.classpath.org/hg/icedtea-web It's shortly due for its first release and this should be usable with 1.8.3 if you disable the plugin and webstart (--disable-plugin --disable-webstart). This may be the quickest way to get a solution to this issue. I'll let Deepak look at the patch itself to see if it's suitable for 1.8.4 but I'm afraid we don't currently have a schedule for that release. -- Configure bugmail: http://icedtea.classpath.org/bugzilla/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are the assignee for the bug, or are watching the assignee. From bugzilla-daemon at icedtea.classpath.org Wed Nov 24 11:10:08 2010 From: bugzilla-daemon at icedtea.classpath.org (bugzilla-daemon at icedtea.classpath.org) Date: Wed, 24 Nov 2010 19:10:08 +0000 Subject: [Bug 599] plugin: mutex and memory leak Message-ID: http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=599 gnu_andrew at member.fsf.org changed: What |Removed |Added ---------------------------------------------------------------------------- AssignedTo|unassigned at icedtea.classpath|dbhole at redhat.com |.org | Status|ASSIGNED |NEW -- Configure bugmail: http://icedtea.classpath.org/bugzilla/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are the assignee for the bug, or are watching the assignee. You are the assignee for the bug, or are watching the assignee. From omajid at icedtea.classpath.org Wed Nov 24 11:15:51 2010 From: omajid at icedtea.classpath.org (omajid at icedtea.classpath.org) Date: Wed, 24 Nov 2010 19:15:51 +0000 Subject: /hg/icedtea-web: CVE-2010-3860 IcedTea System property informati... Message-ID: changeset 75832973e0fa in /hg/icedtea-web details: http://icedtea.classpath.org/hg/icedtea-web?cmd=changeset;node=75832973e0fa author: Omair Majid date: Wed Nov 24 14:15:11 2010 -0500 CVE-2010-3860 IcedTea System property information leak via public static 2010-11-24 Omair Majid * netx/net/sourceforge/jnlp/runtime/Boot.java: Remove basedir option. Add NETX_ABOUT_FILE. (run): Remove call to JNLPRuntime.setBaseDir. (getAboutFile): Use the constant in this file, not JNLPRuntime. (getBaseDir): Remove obsolete method. * netx/net/sourceforge/jnlp/runtime/JNLPRuntime.java: Remove baseDir, USER, HOME_DIR, NETXRC_FILE, NETX_DIR, SECURITY_DIR, CERTFICIATES_FILE, JAVA_HOME_DIR, NETX_ABOUT_FILE. (initialize): Do not set baseDir. (getBaseDir): Remove method. (setBaseDir): Likewise. (getDefaultBaseDir): Likewise. (getProperties): Likewise. * netx/net/sourceforge/jnlp/security/SecurityUtil.java (getTrustedCertsFilename): Delegate to KeyStores.getKeyStoreLocation. * plugin/icedteanp/java/sun/applet/PluginAppletSecurityContext.java (PluginAppletSecurityContext): Remove call to obsolete method. diffstat: 7 files changed, 34 insertions(+), 132 deletions(-) ChangeLog | 22 ++ NEWS | 1 netx/net/sourceforge/jnlp/resources/Messages.properties | 3 netx/net/sourceforge/jnlp/runtime/Boot.java | 35 --- netx/net/sourceforge/jnlp/runtime/JNLPRuntime.java | 89 ---------- netx/net/sourceforge/jnlp/security/SecurityUtil.java | 11 - plugin/icedteanp/java/sun/applet/PluginAppletSecurityContext.java | 5 diffs (305 lines): diff -r 87624fe05628 -r 75832973e0fa ChangeLog --- a/ChangeLog Wed Nov 24 13:12:52 2010 -0500 +++ b/ChangeLog Wed Nov 24 14:15:11 2010 -0500 @@ -1,3 +1,25 @@ 2010-11-24 Omair Majid + + CVE-2010-3860 IcedTea System property information leak via public static + * netx/net/sourceforge/jnlp/runtime/Boot.java: Remove basedir + option. Add NETX_ABOUT_FILE. + (run): Remove call to JNLPRuntime.setBaseDir. + (getAboutFile): Use the constant in this file, not JNLPRuntime. + (getBaseDir): Remove obsolete method. + * netx/net/sourceforge/jnlp/runtime/JNLPRuntime.java: Remove + baseDir, USER, HOME_DIR, NETXRC_FILE, NETX_DIR, SECURITY_DIR, + CERTFICIATES_FILE, JAVA_HOME_DIR, NETX_ABOUT_FILE. + (initialize): Do not set baseDir. + (getBaseDir): Remove method. + (setBaseDir): Likewise. + (getDefaultBaseDir): Likewise. + (getProperties): Likewise. + * netx/net/sourceforge/jnlp/security/SecurityUtil.java + (getTrustedCertsFilename): Delegate to + KeyStores.getKeyStoreLocation. + * plugin/icedteanp/java/sun/applet/PluginAppletSecurityContext.java + (PluginAppletSecurityContext): Remove call to obsolete method. + 2010-11-24 Omair Majid Fix PR592. diff -r 87624fe05628 -r 75832973e0fa NEWS --- a/NEWS Wed Nov 24 13:12:52 2010 -0500 +++ b/NEWS Wed Nov 24 14:15:11 2010 -0500 @@ -11,6 +11,7 @@ New in release 1.0 (2010-XX-XX): New in release 1.0 (2010-XX-XX): * Initial release of IcedTea-Web +* CVE-2010-3860: IcedTea System property information leak via public static * PR542: Plugin fails with NPE on http://www.openprocessing.org/visuals/iframe.php?visualID=2615 * Applets are now double-buffered to eliminate flicker in ones that do heavy drawing * Iinterfaces javax.jnlp.IntegrationService and javax.jnlp.DownloadService2 are now available diff -r 87624fe05628 -r 75832973e0fa netx/net/sourceforge/jnlp/resources/Messages.properties --- a/netx/net/sourceforge/jnlp/resources/Messages.properties Wed Nov 24 13:12:52 2010 -0500 +++ b/netx/net/sourceforge/jnlp/resources/Messages.properties Wed Nov 24 14:15:11 2010 -0500 @@ -139,7 +139,6 @@ RConfigurationError=Fatal error while re # Boot options, message should be shorter than this ----------------> BOUsage=javaws [-run-options] BOUsage2=javaws [-control-options] -BOBasedir = Directory where the cache is kept. BOJnlp = Location of JNLP file to launch (url or file). BOArg = Adds an application argument before launching. BOParam = Adds an applet parameter before launching. @@ -232,4 +231,4 @@ KSJsseCerts=Trusted JSSE Certificates KSJsseCerts=Trusted JSSE Certificates KSCaCerts=Trusted Root CA Certificates KSJsseCaCerts=Trusted JSSE Root CA Certificates, -KSClientCerts=Client Authentication Certificates \ No newline at end of file +KSClientCerts=Client Authentication Certificates diff -r 87624fe05628 -r 75832973e0fa netx/net/sourceforge/jnlp/runtime/Boot.java --- a/netx/net/sourceforge/jnlp/runtime/Boot.java Wed Nov 24 13:12:52 2010 -0500 +++ b/netx/net/sourceforge/jnlp/runtime/Boot.java Wed Nov 24 14:15:11 2010 -0500 @@ -95,7 +95,6 @@ public final class Boot implements Privi + " -viewer "+R("BOViewer")+"\n" + "\n" + "run-options:"+"\n" - + " -basedir dir "+R("BOBasedir")+"\n" + " -arg arg "+R("BOArg")+"\n" + " -param name=value "+R("BOParam")+"\n" + " -property name=value "+R("BOProperty")+"\n" @@ -110,6 +109,11 @@ public final class Boot implements Privi + " -Xnofork "+R("BXnofork")+"\n" + " -Xclearcache "+R("BXclearcache")+"\n" + " -help "+R("BOHelp")+"\n"; + + /** the JNLP file to open to display the network-based about window */ + private static final String NETX_ABOUT_FILE = System.getProperty("java.home") + File.separator + "lib" + + File.separator + "about.jnlp"; + private static final String doubleArgs = "-basedir -jnlp -arg -param -property -update"; @@ -179,7 +183,6 @@ public final class Boot implements Privi * The privileged part (jdk1.3 compatibility). */ public Void run() { - JNLPRuntime.setBaseDir(getBaseDir()); JNLPRuntime.setSecurityEnabled(null == getOption("-nosecurity")); JNLPRuntime.initialize(true); @@ -221,8 +224,8 @@ public final class Boot implements Privi */ private static String getAboutFile() { - if (new File(JNLPRuntime.NETX_ABOUT_FILE).exists()) - return JNLPRuntime.NETX_ABOUT_FILE; + if (new File(NETX_ABOUT_FILE).exists()) + return NETX_ABOUT_FILE; else return null; } @@ -414,28 +417,4 @@ public final class Boot implements Privi return result.toArray( new String[result.size()] ); } - /** - * Return the base dir. If the base dir parameter is not set - * the value is read from JNLPRuntime.NETX_ABOUT_FILE file. - * If that file does not exist, an install dialog is displayed - * to select the base directory. - */ - private static File getBaseDir() { - if (getOption("-basedir") != null) { - File basedir = new File(getOption("-basedir")); - - if (!basedir.exists() || !basedir.isDirectory()) - fatalError(R("BNoDir", basedir)); - - return basedir; - } - - // check .netxrc - File basedir = JNLPRuntime.getDefaultBaseDir(); - if (basedir == null) - fatalError(R("BNoBase")); - - return basedir; - } - } diff -r 87624fe05628 -r 75832973e0fa netx/net/sourceforge/jnlp/runtime/JNLPRuntime.java --- a/netx/net/sourceforge/jnlp/runtime/JNLPRuntime.java Wed Nov 24 13:12:52 2010 -0500 +++ b/netx/net/sourceforge/jnlp/runtime/JNLPRuntime.java Wed Nov 24 14:15:11 2010 -0500 @@ -79,9 +79,6 @@ public class JNLPRuntime { /** handles all security message to show appropriate security dialogs */ private static SecurityDialogMessageHandler securityDialogMessageHandler; - - /** the base dir for cache, etc */ - private static File baseDir; /** a default launch handler */ private static LaunchHandler handler = null; @@ -127,33 +124,6 @@ public class JNLPRuntime { public static final String STDERR_FILE = "java.stderr"; public static final String STDOUT_FILE = "java.stdout"; - - /** Username */ - public static final String USER = System.getProperty("user.name"); - - /** User's home directory */ - public static final String HOME_DIR = System.getProperty("user.home"); - - /** the ~/.netxrc file containing netx settings */ - public static final String NETXRC_FILE = HOME_DIR + File.separator + ".netxrc"; - - /** the ~/.netx directory containing user-specific data */ - public static final String NETX_DIR = HOME_DIR + File.separator + ".netx"; - - /** the ~/.netx/security directory containing security related information */ - public static final String SECURITY_DIR = NETX_DIR + File.separator + "security"; - - /** the ~/.netx/security/trusted.certs file containing trusted certificates */ - public static final String CERTIFICATES_FILE = SECURITY_DIR + File.separator + "trusted.certs"; - - /** the java.home directory */ - public static final String JAVA_HOME_DIR = System.getProperty("java.home"); - - /** the JNLP file to open to display the network-based about window */ - public static final String NETX_ABOUT_FILE = JAVA_HOME_DIR + File.separator + "lib" - + File.separator + "about.jnlp"; - - /** * Returns whether the JNLP runtime environment has been @@ -212,12 +182,6 @@ public class JNLPRuntime { if (handler == null) handler = new DefaultLaunchHandler(); - - if (baseDir == null) - baseDir = getDefaultBaseDir(); - - if (baseDir == null) - throw new IllegalStateException(JNLPRuntime.getMessage("BNoBase")); ServiceManager.setServiceManagerStub(new XServiceManagerStub()); // ignored if we're running under Web Start @@ -395,25 +359,6 @@ public class JNLPRuntime { } /** - * Return the base directory containing the cache, persistence - * store, etc. - */ - public static File getBaseDir() { - return baseDir; - } - - /** - * Sets the base directory containing the cache, persistence - * store, etc. - * - * @throws IllegalStateException if caller is not the exit class - */ - public static void setBaseDir(File baseDirectory) { - checkInitialized(); - baseDir = baseDirectory; - } - - /** * Returns whether the secure runtime environment is enabled. */ public static boolean isSecurityEnabled() { @@ -452,31 +397,6 @@ public class JNLPRuntime { } /** - * Returns the system default base dir for or if not set, - * prompts the user for the location. - * - * @return the base dir, or null if the user canceled the dialog - * @throws IOException if there was an io exception - */ - public static File getDefaultBaseDir() { - PropertiesFile props = JNLPRuntime.getProperties(); - - String baseStr = props.getProperty("basedir"); - if (baseStr != null) - return new File(baseStr); - - String homeDir = HOME_DIR; - File baseDir = new File(NETX_DIR); - if (homeDir == null || (!baseDir.isDirectory() && !baseDir.mkdir())) - return null; - - props.setProperty("basedir", baseDir.toString()); - props.store(); - - return baseDir; - } - - /** * Set a class that can exit the JVM; if not set then any class * can exit the JVM. * @@ -502,15 +422,6 @@ public class JNLPRuntime { */ public static ApplicationInstance getApplication() { return security.getApplication(); - } - - /** - * Return a PropertiesFile object backed by the runtime's - * properties file. - */ - public static PropertiesFile getProperties() { - File netxrc = new File(NETXRC_FILE); - return new PropertiesFile(netxrc); } /** diff -r 87624fe05628 -r 75832973e0fa netx/net/sourceforge/jnlp/security/SecurityUtil.java --- a/netx/net/sourceforge/jnlp/security/SecurityUtil.java Wed Nov 24 13:12:52 2010 -0500 +++ b/netx/net/sourceforge/jnlp/security/SecurityUtil.java Wed Nov 24 14:15:11 2010 -0500 @@ -43,20 +43,15 @@ import java.security.KeyStore; import java.security.KeyStore; import net.sourceforge.jnlp.runtime.JNLPRuntime; +import net.sourceforge.jnlp.security.KeyStores.Level; +import net.sourceforge.jnlp.security.KeyStores.Type; public class SecurityUtil { private static final char[] password = "changeit".toCharArray(); public static String getTrustedCertsFilename() throws Exception{ - - String homeDir = JNLPRuntime.HOME_DIR; - - if (homeDir == null) { - throw new Exception("Could not access home directory"); - } else { - return JNLPRuntime.CERTIFICATES_FILE; - } + return KeyStores.getKeyStoreLocation(Level.USER, Type.CERTS); } public static char[] getTrustedCertsPassword() { diff -r 87624fe05628 -r 75832973e0fa plugin/icedteanp/java/sun/applet/PluginAppletSecurityContext.java --- a/plugin/icedteanp/java/sun/applet/PluginAppletSecurityContext.java Wed Nov 24 13:12:52 2010 -0500 +++ b/plugin/icedteanp/java/sun/applet/PluginAppletSecurityContext.java Wed Nov 24 14:15:11 2010 -0500 @@ -250,11 +250,6 @@ public class PluginAppletSecurityContext public PluginAppletSecurityContext(int identifier) { this.identifier = identifier; - - // also, override the basedir, use a different one for the plugin - File f = new File(System.getProperty("user.home") + "/.icedteaplugin/"); - f.mkdir(); - JNLPRuntime.setBaseDir(f); // We need a security manager.. and since there is a good chance that // an applet will be loaded at some point, we should make it the SM From omajid at redhat.com Wed Nov 24 11:16:10 2010 From: omajid at redhat.com (Omair Majid) Date: Wed, 24 Nov 2010 14:16:10 -0500 Subject: [icedtea-web] RFC: remove obsolete basedir, netxrc and other constants In-Reply-To: <20101124183712.GA3208@redhat.com> References: <4CED2CB9.4050507@redhat.com> <20101124183712.GA3208@redhat.com> Message-ID: <4CED647A.6060705@redhat.com> On 11/24/2010 01:37 PM, Deepak Bhole wrote: > * Omair Majid [2010-11-24 10:18]: >> Hi, >> >> The attached patch removes the obsolete constants defined in >> JNLPRuntime as well as methods to get and set the basedir and the >> netxrc files. The netxrc file and basedir are unsued; the >> ~/.icedtea/deployment.properties file is used instead. The constants >> are now accessed through DeploymentConfiguration. >> >> This patch includes a forward port of the fix for CVE-2010-3860. >> > > Looks fine to me. Okay for 1.0, please push to HEAD. > Thanks. Pushed. Cheers, Omair From ahughes at redhat.com Wed Nov 24 11:55:24 2010 From: ahughes at redhat.com (Dr Andrew John Hughes) Date: Wed, 24 Nov 2010 19:55:24 +0000 Subject: [icedtea-web] RFC: News Update Message-ID: <20101124195524.GK1530@rivendell.middle-earth.co.uk> This brings in changes still listed in 1.10's NEWS file (which obviously aren't present any more because we removed the plugin and NetX :-) It also adds a bit of structure so release notes will look good when they appear. 2010-11-24 Andrew John Hughes * NEWS: Bring in changes from IcedTea6 1.10 NEWS (now redundant there) and apply same structure as in IcedTea6. -- Andrew :) Free Java Software Engineer Red Hat, Inc. (http://www.redhat.com) Support Free Java! Contribute to GNU Classpath and the OpenJDK http://www.gnu.org/software/classpath http://openjdk.java.net PGP Key: 94EFD9D8 (http://subkeys.pgp.net) Fingerprint = F8EF F1EA 401E 2E60 15FA 7927 142C 2591 94EF D9D8 -------------- next part -------------- diff -r 75832973e0fa NEWS --- a/NEWS Wed Nov 24 14:15:11 2010 -0500 +++ b/NEWS Wed Nov 24 19:52:52 2010 +0000 @@ -11,7 +11,16 @@ New in release 1.0 (2010-XX-XX): * Initial release of IcedTea-Web -* CVE-2010-3860: IcedTea System property information leak via public static -* PR542: Plugin fails with NPE on http://www.openprocessing.org/visuals/iframe.php?visualID=2615 -* Applets are now double-buffered to eliminate flicker in ones that do heavy drawing -* Iinterfaces javax.jnlp.IntegrationService and javax.jnlp.DownloadService2 are now available +* Security updates + - CVE-2010-3860: IcedTea System property information leak via public static +* Plugin + - PR542: Plugin fails with NPE on http://www.openprocessing.org/visuals/iframe.php?visualID=2615 + - PR554: System.err writes content two times + - PR556: Applet initialization code is prone to race conditions + - PR557: Applet opens in a separate window if tab is closed when the applet loads + - PR565: UIDefaults.getUI fails with jgoodies:looks 2.3.1 + - Applets are now double-buffered to eliminate flicker in ones that do heavy drawing +* NetX + - Add a new option -Xclearcache + - Interfaces javax.jnlp.IntegrationService and javax.jnlp.DownloadService2 are now available + - PR592: NetX can create invalid desktop entry files From dbhole at redhat.com Wed Nov 24 11:57:19 2010 From: dbhole at redhat.com (Deepak Bhole) Date: Wed, 24 Nov 2010 14:57:19 -0500 Subject: [icedtea-web] RFC: News Update In-Reply-To: <20101124195524.GK1530@rivendell.middle-earth.co.uk> References: <20101124195524.GK1530@rivendell.middle-earth.co.uk> Message-ID: <20101124195719.GD3208@redhat.com> * Dr Andrew John Hughes [2010-11-24 14:55]: > This brings in changes still listed in 1.10's NEWS file (which obviously > aren't present any more because we removed the plugin and NetX :-) > It also adds a bit of structure so release notes will look good when > they appear. > > 2010-11-24 Andrew John Hughes > > * NEWS: Bring in changes from IcedTea6 1.10 > NEWS (now redundant there) and apply same structure > as in IcedTea6. > Ah, these nice patches :) ... Looks good, okay for head. Thanks! Deepak > -- > Andrew :) > > Free Java Software Engineer > Red Hat, Inc. (http://www.redhat.com) > > Support Free Java! > Contribute to GNU Classpath and the OpenJDK > http://www.gnu.org/software/classpath > http://openjdk.java.net > PGP Key: 94EFD9D8 (http://subkeys.pgp.net) > Fingerprint = F8EF F1EA 401E 2E60 15FA 7927 142C 2591 94EF D9D8 > diff -r 75832973e0fa NEWS > --- a/NEWS Wed Nov 24 14:15:11 2010 -0500 > +++ b/NEWS Wed Nov 24 19:52:52 2010 +0000 > @@ -11,7 +11,16 @@ > New in release 1.0 (2010-XX-XX): > > * Initial release of IcedTea-Web > -* CVE-2010-3860: IcedTea System property information leak via public static > -* PR542: Plugin fails with NPE on http://www.openprocessing.org/visuals/iframe.php?visualID=2615 > -* Applets are now double-buffered to eliminate flicker in ones that do heavy drawing > -* Iinterfaces javax.jnlp.IntegrationService and javax.jnlp.DownloadService2 are now available > +* Security updates > + - CVE-2010-3860: IcedTea System property information leak via public static > +* Plugin > + - PR542: Plugin fails with NPE on http://www.openprocessing.org/visuals/iframe.php?visualID=2615 > + - PR554: System.err writes content two times > + - PR556: Applet initialization code is prone to race conditions > + - PR557: Applet opens in a separate window if tab is closed when the applet loads > + - PR565: UIDefaults.getUI fails with jgoodies:looks 2.3.1 > + - Applets are now double-buffered to eliminate flicker in ones that do heavy drawing > +* NetX > + - Add a new option -Xclearcache > + - Interfaces javax.jnlp.IntegrationService and javax.jnlp.DownloadService2 are now available > + - PR592: NetX can create invalid desktop entry files From andrew at icedtea.classpath.org Wed Nov 24 12:06:17 2010 From: andrew at icedtea.classpath.org (andrew at icedtea.classpath.org) Date: Wed, 24 Nov 2010 20:06:17 +0000 Subject: /hg/icedtea-web: Bring in IcedTea6 1.10 NEWS and fix structure. Message-ID: changeset b43d21667b5b in /hg/icedtea-web details: http://icedtea.classpath.org/hg/icedtea-web?cmd=changeset;node=b43d21667b5b author: Andrew John Hughes date: Wed Nov 24 20:06:11 2010 +0000 Bring in IcedTea6 1.10 NEWS and fix structure. 2010-11-24 Andrew John Hughes * NEWS: Bring in changes from IcedTea6 1.10 NEWS (now redundant there) and apply same structure as in IcedTea6. diffstat: 2 files changed, 19 insertions(+), 4 deletions(-) ChangeLog | 6 ++++++ NEWS | 17 +++++++++++++---- diffs (37 lines): diff -r 75832973e0fa -r b43d21667b5b ChangeLog --- a/ChangeLog Wed Nov 24 14:15:11 2010 -0500 +++ b/ChangeLog Wed Nov 24 20:06:11 2010 +0000 @@ -1,3 +1,9 @@ 2010-11-24 Omair Majid + + * NEWS: Bring in changes from IcedTea6 1.10 + NEWS (now redundant there) and apply same structure + as in IcedTea6. + 2010-11-24 Omair Majid CVE-2010-3860 IcedTea System property information leak via public static diff -r 75832973e0fa -r b43d21667b5b NEWS --- a/NEWS Wed Nov 24 14:15:11 2010 -0500 +++ b/NEWS Wed Nov 24 20:06:11 2010 +0000 @@ -11,7 +11,16 @@ New in release 1.0 (2010-XX-XX): New in release 1.0 (2010-XX-XX): * Initial release of IcedTea-Web -* CVE-2010-3860: IcedTea System property information leak via public static -* PR542: Plugin fails with NPE on http://www.openprocessing.org/visuals/iframe.php?visualID=2615 -* Applets are now double-buffered to eliminate flicker in ones that do heavy drawing -* Iinterfaces javax.jnlp.IntegrationService and javax.jnlp.DownloadService2 are now available +* Security updates + - RH645843, CVE-2010-3860: IcedTea System property information leak via public static +* Plugin + - PR542: Plugin fails with NPE on http://www.openprocessing.org/visuals/iframe.php?visualID=2615 + - PR554: System.err writes content two times + - PR556: Applet initialization code is prone to race conditions + - PR557: Applet opens in a separate window if tab is closed when the applet loads + - PR565: UIDefaults.getUI fails with jgoodies:looks 2.3.1 + - Applets are now double-buffered to eliminate flicker in ones that do heavy drawing +* NetX + - Add a new option -Xclearcache + - Interfaces javax.jnlp.IntegrationService and javax.jnlp.DownloadService2 are now available + - PR592: NetX can create invalid desktop entry files From dbhole at icedtea.classpath.org Wed Nov 24 12:24:12 2010 From: dbhole at icedtea.classpath.org (dbhole at icedtea.classpath.org) Date: Wed, 24 Nov 2010 20:24:12 +0000 Subject: /hg/icedtea-web: 2 new changesets Message-ID: changeset a9d3a1d07478 in /hg/icedtea-web details: http://icedtea.classpath.org/hg/icedtea-web?cmd=changeset;node=a9d3a1d07478 author: Deepak Bhole date: Wed Nov 24 15:17:54 2010 -0500 Fix PR552: Support for FreeBSD's pthread implementation (patch from jkim at freebsd.org) changeset 5267f9104d5f in /hg/icedtea-web details: http://icedtea.classpath.org/hg/icedtea-web?cmd=changeset;node=5267f9104d5f author: Deepak Bhole date: Wed Nov 24 15:22:03 2010 -0500 Fix PR593: Increment of invalidated iterator in IcedTeaPluginUtils (patch from barbara.xxx1975 at libero.it) diffstat: 5 files changed, 65 insertions(+), 6 deletions(-) ChangeLog | 22 +++++++++++++ NEWS | 2 + plugin/icedteanp/IcedTeaNPPlugin.cc | 4 ++ plugin/icedteanp/IcedTeaPluginRequestProcessor.cc | 35 ++++++++++++++++++--- plugin/icedteanp/IcedTeaPluginUtils.cc | 8 +++- diffs (160 lines): diff -r b43d21667b5b -r 5267f9104d5f ChangeLog --- a/ChangeLog Wed Nov 24 20:06:11 2010 +0000 +++ b/ChangeLog Wed Nov 24 15:22:03 2010 -0500 @@ -1,3 +1,25 @@ 2010-11-24 Andrew John Hughes + + Fix PR593: Increment of invalidated iterator in IcedTeaPluginUtils (patch + from barbara.xxx1975 at libero.it) + * plugin/icedteanp/IcedTeaPluginUtils.cc + (invalidateInstance): Act on the pointer directly, rather than via + members. + * NEWS: Updated. + +2010-11-24 Deepak Bhole + + Fix PR552: Support for FreeBSD's pthread implementation (patch from + jkim at freebsd.org) + * plugin/icedteanp/IcedTeaNPPlugin.cc + (NP_Shutdown): Do pthread_join after cancel to avoid destroying mutexes + or condition variables in use. + * plugin/icedteanp/IcedTeaPluginRequestProcessor.cc + (PluginRequestProcessor): Initialize mutexes dynamically. + (queue_cleanup): New method. Destroy dynamically created mytexes. + (queue_processor): Initialize wait_mutex and push cleanup on exit. Clean + up after processing stops. + 2010-11-24 Andrew John Hughes * NEWS: Bring in changes from IcedTea6 1.10 diff -r b43d21667b5b -r 5267f9104d5f NEWS --- a/NEWS Wed Nov 24 20:06:11 2010 +0000 +++ b/NEWS Wed Nov 24 15:22:03 2010 -0500 @@ -15,10 +15,12 @@ New in release 1.0 (2010-XX-XX): - RH645843, CVE-2010-3860: IcedTea System property information leak via public static * Plugin - PR542: Plugin fails with NPE on http://www.openprocessing.org/visuals/iframe.php?visualID=2615 + - PR552: Support for FreeBSD's pthread implementation - PR554: System.err writes content two times - PR556: Applet initialization code is prone to race conditions - PR557: Applet opens in a separate window if tab is closed when the applet loads - PR565: UIDefaults.getUI fails with jgoodies:looks 2.3.1 + - PR593: Increment of invalidated iterator in IcedTeaPluginUtils (patch from barbara.xxx1975 at libero.it) - Applets are now double-buffered to eliminate flicker in ones that do heavy drawing * NetX - Add a new option -Xclearcache diff -r b43d21667b5b -r 5267f9104d5f plugin/icedteanp/IcedTeaNPPlugin.cc --- a/plugin/icedteanp/IcedTeaNPPlugin.cc Wed Nov 24 20:06:11 2010 +0000 +++ b/plugin/icedteanp/IcedTeaNPPlugin.cc Wed Nov 24 15:22:03 2010 -0500 @@ -2372,6 +2372,10 @@ NP_Shutdown (void) pthread_cancel(plugin_request_processor_thread2); pthread_cancel(plugin_request_processor_thread3); + pthread_join(plugin_request_processor_thread1, NULL); + pthread_join(plugin_request_processor_thread2, NULL); + pthread_join(plugin_request_processor_thread3, NULL); + java_to_plugin_bus->unSubscribe(plugin_req_proc); plugin_to_java_bus->unSubscribe(java_req_proc); //internal_bus->unSubscribe(java_req_proc); diff -r b43d21667b5b -r 5267f9104d5f plugin/icedteanp/IcedTeaPluginRequestProcessor.cc --- a/plugin/icedteanp/IcedTeaPluginRequestProcessor.cc Wed Nov 24 20:06:11 2010 +0000 +++ b/plugin/icedteanp/IcedTeaPluginRequestProcessor.cc Wed Nov 24 15:22:03 2010 -0500 @@ -63,6 +63,12 @@ PluginRequestProcessor::PluginRequestPro this->pendingRequests = new std::map(); internal_req_ref_counter = 0; + + pthread_mutex_init(&message_queue_mutex, NULL); + pthread_mutex_init(&syn_write_mutex, NULL); + pthread_mutex_init(&tc_mutex, NULL); + + pthread_cond_init(&cond_message_available, NULL); } /** @@ -77,6 +83,12 @@ PluginRequestProcessor::~PluginRequestPr if (pendingRequests) delete pendingRequests; + + pthread_mutex_destroy(&message_queue_mutex); + pthread_mutex_destroy(&syn_write_mutex); + pthread_mutex_destroy(&tc_mutex); + + pthread_cond_destroy(&cond_message_available); } /** @@ -701,6 +713,14 @@ PluginRequestProcessor::finalize(std::ve plugin_to_java_bus->post(response.c_str()); } +static void +queue_cleanup(void* data) +{ + + pthread_mutex_destroy((pthread_mutex_t*) data); + + PLUGIN_DEBUG("Queue processing stopped.\n"); +} void* queue_processor(void* data) @@ -709,9 +729,13 @@ queue_processor(void* data) PluginRequestProcessor* processor = (PluginRequestProcessor*) data; std::vector* message_parts = NULL; std::string command; - pthread_mutex_t wait_mutex = PTHREAD_MUTEX_INITIALIZER; // This is needed for API compat. and is unused + pthread_mutex_t wait_mutex = PTHREAD_MUTEX_INITIALIZER; PLUGIN_DEBUG("Queue processor initialized. Queue = %p\n", message_queue); + + pthread_mutex_init(&wait_mutex, NULL); + + pthread_cleanup_push(queue_cleanup, (void*) &wait_mutex); while (true) { @@ -780,14 +804,17 @@ queue_processor(void* data) } else { - pthread_cond_wait(&cond_message_available, &wait_mutex); - pthread_testcancel(); + pthread_mutex_lock(&wait_mutex); + pthread_cond_wait(&cond_message_available, &wait_mutex); + pthread_mutex_unlock(&wait_mutex); } message_parts = NULL; + + pthread_testcancel(); } - PLUGIN_DEBUG("Queue processing stopped.\n"); + pthread_cleanup_pop(1); } /****************************************** diff -r b43d21667b5b -r 5267f9104d5f plugin/icedteanp/IcedTeaPluginUtils.cc --- a/plugin/icedteanp/IcedTeaPluginUtils.cc Wed Nov 24 20:06:11 2010 +0000 +++ b/plugin/icedteanp/IcedTeaPluginUtils.cc Wed Nov 24 15:22:03 2010 -0500 @@ -510,11 +510,15 @@ IcedTeaPluginUtilities::invalidateInstan std::map::iterator iterator; - for (iterator = instance_map->begin(); iterator != instance_map->end(); iterator++) + for (iterator = instance_map->begin(); iterator != instance_map->end(); ) { if ((*iterator).second == instance) { - instance_map->erase((*iterator).first); + instance_map->erase(iterator++); + } + else + { + ++iterator; } } } From omajid at icedtea.classpath.org Wed Nov 24 12:53:05 2010 From: omajid at icedtea.classpath.org (omajid at icedtea.classpath.org) Date: Wed, 24 Nov 2010 20:53:05 +0000 Subject: /hg/icedtea-web: create files with reduced permissions when poss... Message-ID: changeset dcd3d1728ff4 in /hg/icedtea-web details: http://icedtea.classpath.org/hg/icedtea-web?cmd=changeset;node=dcd3d1728ff4 author: Omair Majid date: Wed Nov 24 15:47:50 2010 -0500 create files with reduced permissions when possible 2010-11-24 Omair Majid * netx/net/sourceforge/jnlp/util/FileUtils.java (createRestrictedDirectory): New method. Creates a directory with reduced permissions. (createRestrictedFile(File,boolean)): New method. Creates a file with reduced permissions. (createRestrictedFile(File,boolean,boolean): New method. Creates a file or a directory with reduced permissions. * netx/net/sourceforge/jnlp/Launcher.java (markNetxRunning): Do not grant unnecessary file permissions. * netx/net/sourceforge/jnlp/runtime/Boot.java: Remove umask from help message. * netx/net/sourceforge/jnlp/runtime/JNLPClassLoader.java (activateNative): Create file with proper permissions. (getNativeDir): Create directory with proper permissions. * netx/net/sourceforge/jnlp/runtime/JNLPRuntime.java (initializeStreams): Create files with proper permissions. * netx/net/sourceforge/jnlp/security/CertWarningPane.java (CheckBoxListener.actionPerformed): Likewise. * netx/net/sourceforge/jnlp/security/KeyStores.java (createKeyStoreFromFile): Likewise. * netx/net/sourceforge/jnlp/security/viewer/CertificatePane.java (ImportButtonListener.actionPerformed): Likewise. (RemoveButtonListener.actionPerformed): Likewise. * netx/net/sourceforge/jnlp/services/SingleInstanceLock.java (createWithPort): Likewise. (getLockFile): Likewise. * netx/net/sourceforge/jnlp/services/XExtendedService.java (openFile): Likewise. * netx/net/sourceforge/jnlp/services/XPersistenceService.java (create): Likewise. * netx/net/sourceforge/jnlp/util/XDesktopEntry.java (installDesktopLauncher): Likewise. * netx/net/sourceforge/jnlp/resources/Messages.properties: Add CantCreateFile, RCantCreateDir and RCantRename. Remove BNoBase and BOUmask. diffstat: 14 files changed, 184 insertions(+), 29 deletions(-) ChangeLog | 38 +++++ netx/net/sourceforge/jnlp/Launcher.java | 14 - netx/net/sourceforge/jnlp/resources/Messages.properties | 5 netx/net/sourceforge/jnlp/runtime/Boot.java | 1 netx/net/sourceforge/jnlp/runtime/JNLPClassLoader.java | 14 + netx/net/sourceforge/jnlp/runtime/JNLPRuntime.java | 11 - netx/net/sourceforge/jnlp/security/CertWarningPane.java | 9 + netx/net/sourceforge/jnlp/security/KeyStores.java | 3 netx/net/sourceforge/jnlp/security/viewer/CertificatePane.java | 19 ++ netx/net/sourceforge/jnlp/services/SingleInstanceLock.java | 13 + netx/net/sourceforge/jnlp/services/XFileSaveService.java | 3 netx/net/sourceforge/jnlp/services/XPersistenceService.java | 5 netx/net/sourceforge/jnlp/util/FileUtils.java | 75 ++++++++++ netx/net/sourceforge/jnlp/util/XDesktopEntry.java | 3 diffs (459 lines): diff -r 5267f9104d5f -r dcd3d1728ff4 ChangeLog --- a/ChangeLog Wed Nov 24 15:22:03 2010 -0500 +++ b/ChangeLog Wed Nov 24 15:47:50 2010 -0500 @@ -1,3 +1,41 @@ 2010-11-24 Deepak Bhole + + * netx/net/sourceforge/jnlp/util/FileUtils.java + (createRestrictedDirectory): New method. Creates a directory with reduced + permissions. + (createRestrictedFile(File,boolean)): New method. Creates a file with reduced + permissions. + (createRestrictedFile(File,boolean,boolean): New method. Creates a file or + a directory with reduced permissions. + * netx/net/sourceforge/jnlp/Launcher.java + (markNetxRunning): Do not grant unnecessary file permissions. + * netx/net/sourceforge/jnlp/runtime/Boot.java: Remove umask from + help message. + * netx/net/sourceforge/jnlp/runtime/JNLPClassLoader.java + (activateNative): Create file with proper permissions. + (getNativeDir): Create directory with proper permissions. + * netx/net/sourceforge/jnlp/runtime/JNLPRuntime.java + (initializeStreams): Create files with proper permissions. + * netx/net/sourceforge/jnlp/security/CertWarningPane.java + (CheckBoxListener.actionPerformed): Likewise. + * netx/net/sourceforge/jnlp/security/KeyStores.java + (createKeyStoreFromFile): Likewise. + * netx/net/sourceforge/jnlp/security/viewer/CertificatePane.java + (ImportButtonListener.actionPerformed): Likewise. + (RemoveButtonListener.actionPerformed): Likewise. + * netx/net/sourceforge/jnlp/services/SingleInstanceLock.java + (createWithPort): Likewise. + (getLockFile): Likewise. + * netx/net/sourceforge/jnlp/services/XExtendedService.java + (openFile): Likewise. + * netx/net/sourceforge/jnlp/services/XPersistenceService.java + (create): Likewise. + * netx/net/sourceforge/jnlp/util/XDesktopEntry.java + (installDesktopLauncher): Likewise. + * netx/net/sourceforge/jnlp/resources/Messages.properties: Add + CantCreateFile, RCantCreateDir and RCantRename. Remove BNoBase and + BOUmask. + 2010-11-24 Deepak Bhole Fix PR593: Increment of invalidated iterator in IcedTeaPluginUtils (patch diff -r 5267f9104d5f -r dcd3d1728ff4 netx/net/sourceforge/jnlp/Launcher.java --- a/netx/net/sourceforge/jnlp/Launcher.java Wed Nov 24 15:22:03 2010 -0500 +++ b/netx/net/sourceforge/jnlp/Launcher.java Wed Nov 24 15:47:50 2010 -0500 @@ -48,6 +48,7 @@ import net.sourceforge.jnlp.runtime.JNLP import net.sourceforge.jnlp.runtime.JNLPRuntime; import net.sourceforge.jnlp.services.InstanceExistsException; import net.sourceforge.jnlp.services.ServiceUtil; +import net.sourceforge.jnlp.util.FileUtils; import net.sourceforge.jnlp.util.Reflect; import javax.swing.SwingUtilities; @@ -727,22 +728,15 @@ public class Launcher { File netxRunningFile = new File(JNLPRuntime.getConfiguration() .getProperty(DeploymentConfiguration.KEY_USER_NETX_RUNNING_FILE)); - netxRunningFile.getParentFile().mkdirs(); - if (netxRunningFile.createNewFile()) { + if (!netxRunningFile.exists()) { + netxRunningFile.getParentFile().mkdirs(); + FileUtils.createRestrictedFile(netxRunningFile, true); FileOutputStream fos = new FileOutputStream(netxRunningFile); try { fos.write(message.getBytes()); } finally { fos.close(); } - } - - if (!netxRunningFile.isFile()) { - if (JNLPRuntime.isDebug()) { - System.err.println("Unable to create instance file"); - } - fileLock = null; - return; } FileInputStream is = new FileInputStream(netxRunningFile); diff -r 5267f9104d5f -r dcd3d1728ff4 netx/net/sourceforge/jnlp/resources/Messages.properties --- a/netx/net/sourceforge/jnlp/resources/Messages.properties Wed Nov 24 15:22:03 2010 -0500 +++ b/netx/net/sourceforge/jnlp/resources/Messages.properties Wed Nov 24 15:47:50 2010 -0500 @@ -124,11 +124,13 @@ BBadProp=Incorrect property format {0} ( BBadProp=Incorrect property format {0} (should be key=value) BBadParam=Incorrect parameter format {0} (should be name=value) BNoDir=Directory {0} does not exist. -BNoBase=No base directory (contains cache and other data) RNoResource=Missing Resource: {0} RShutdown=This exception to prevent shutdown of JVM, but the process has been terminated. RExitTaken=Exit class already set and caller is not exit class. RCantReplaceSM=Changing the SecurityManager is not allowed. +RCantCreateFile=Cant create file {0} +RCantCreateDir=Cant create directory {0} +RCantRename=Cant rename {0} to {0} RDenyStopped=Stopped applications have no permissions. RExitNoApp=Can not exit the JVM because the current application cannot be determined. RNoLockDir=Unable to create locks directory ({0}) @@ -152,7 +154,6 @@ BOHeadless = Disables download window, BOHeadless = Disables download window, other UIs. BOStrict = Enables strict checking of JNLP file format. BOViewer = Shows the trusted certificate viewer. -BOUmask = Sets the umask for files created by an application. BXnofork = Do not create another JVM. BXclearcache= Clean the JNLP application cache. BOHelp = Print this message and exit. diff -r 5267f9104d5f -r dcd3d1728ff4 netx/net/sourceforge/jnlp/runtime/Boot.java --- a/netx/net/sourceforge/jnlp/runtime/Boot.java Wed Nov 24 15:22:03 2010 -0500 +++ b/netx/net/sourceforge/jnlp/runtime/Boot.java Wed Nov 24 15:47:50 2010 -0500 @@ -105,7 +105,6 @@ public final class Boot implements Privi + " -noupdate "+R("BONoupdate")+"\n" + " -headless "+R("BOHeadless")+"\n" + " -strict "+R("BOStrict")+"\n" - + " -umask=value "+R("BOUmask")+"\n" + " -Xnofork "+R("BXnofork")+"\n" + " -Xclearcache "+R("BXclearcache")+"\n" + " -help "+R("BOHelp")+"\n"; diff -r 5267f9104d5f -r dcd3d1728ff4 netx/net/sourceforge/jnlp/runtime/JNLPClassLoader.java --- a/netx/net/sourceforge/jnlp/runtime/JNLPClassLoader.java Wed Nov 24 15:22:03 2010 -0500 +++ b/netx/net/sourceforge/jnlp/runtime/JNLPClassLoader.java Wed Nov 24 15:47:50 2010 -0500 @@ -815,7 +815,9 @@ public class JNLPClassLoader extends URL nativeDir = getNativeDir(); File outFile = new File(nativeDir, name); - + if (!outFile.isFile()) { + FileUtils.createRestrictedFile(outFile, true); + } CacheUtil.streamCopy(jarFile.getInputStream(e), new FileOutputStream(outFile)); @@ -837,12 +839,18 @@ public class JNLPClassLoader extends URL + File.separator + "netx-native-" + (new Random().nextInt() & 0xFFFF)); - if (!nativeDir.mkdirs()) + File parent = nativeDir.getParentFile(); + if (!parent.isDirectory() && !parent.mkdirs()) { return null; - else { + } + + try { + FileUtils.createRestrictedDirectory(nativeDir); // add this new native directory to the search path addNativeDirectory(nativeDir); return nativeDir; + } catch (IOException e) { + return null; } } diff -r 5267f9104d5f -r dcd3d1728ff4 netx/net/sourceforge/jnlp/runtime/JNLPRuntime.java --- a/netx/net/sourceforge/jnlp/runtime/JNLPRuntime.java Wed Nov 24 15:22:03 2010 -0500 +++ b/netx/net/sourceforge/jnlp/runtime/JNLPRuntime.java Wed Nov 24 15:47:50 2010 -0500 @@ -268,12 +268,15 @@ public class JNLPRuntime { .getProperty(DeploymentConfiguration.KEY_ENABLE_LOGGING)); if (redirectStreams || enableLogging) { String logDir = config.getProperty(DeploymentConfiguration.KEY_USER_LOG_DIR); - File errFile = new File(logDir, JNLPRuntime.STDERR_FILE); - errFile.getParentFile().mkdirs(); - File outFile = new File(logDir, JNLPRuntime.STDOUT_FILE); - outFile.getParentFile().mkdirs(); try { + File errFile = new File(logDir, JNLPRuntime.STDERR_FILE); + errFile.getParentFile().mkdirs(); + FileUtils.createRestrictedFile(errFile, true); + File outFile = new File(logDir, JNLPRuntime.STDOUT_FILE); + outFile.getParentFile().mkdirs(); + FileUtils.createRestrictedFile(outFile, true); + if (redirectStreams) { System.setErr(new PrintStream(new FileOutputStream(errFile))); System.setOut(new PrintStream(new FileOutputStream(outFile))); diff -r 5267f9104d5f -r dcd3d1728ff4 netx/net/sourceforge/jnlp/security/CertWarningPane.java --- a/netx/net/sourceforge/jnlp/security/CertWarningPane.java Wed Nov 24 15:22:03 2010 -0500 +++ b/netx/net/sourceforge/jnlp/security/CertWarningPane.java Wed Nov 24 15:47:50 2010 -0500 @@ -47,6 +47,7 @@ import java.awt.GridLayout; import java.awt.GridLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; +import java.io.File; import java.io.FileOutputStream; import java.io.OutputStream; import java.security.KeyStore; @@ -68,6 +69,7 @@ import net.sourceforge.jnlp.security.Key import net.sourceforge.jnlp.security.KeyStores.Level; import net.sourceforge.jnlp.security.KeyStores.Type; import net.sourceforge.jnlp.security.SecurityWarning.AccessType; +import net.sourceforge.jnlp.util.FileUtils; /** * Provides the panel for using inside a SecurityWarningDialog. These dialogs are @@ -246,7 +248,12 @@ public class CertWarningPane extends Sec KeyStore ks = KeyStores.getKeyStore(Level.USER, Type.CERTS); X509Certificate c = (X509Certificate) parent.getJarSigner().getPublisher(); CertificateUtils.addToKeyStore(c, ks); - OutputStream os = new FileOutputStream(KeyStores.getKeyStoreLocation(Level.USER, Type.CERTS)); + File keyStoreFile = new File(KeyStores.getKeyStoreLocation(Level.USER, Type.CERTS)); + if (!keyStoreFile.isFile()) { + FileUtils.createRestrictedFile(keyStoreFile, true); + } + + OutputStream os = new FileOutputStream(keyStoreFile); ks.store(os, KeyStores.getPassword()); if (JNLPRuntime.isDebug()) { System.out.println("certificate is now permanently trusted"); diff -r 5267f9104d5f -r dcd3d1728ff4 netx/net/sourceforge/jnlp/security/KeyStores.java --- a/netx/net/sourceforge/jnlp/security/KeyStores.java Wed Nov 24 15:22:03 2010 -0500 +++ b/netx/net/sourceforge/jnlp/security/KeyStores.java Wed Nov 24 15:47:50 2010 -0500 @@ -53,6 +53,7 @@ import net.sourceforge.jnlp.runtime.Depl import net.sourceforge.jnlp.runtime.DeploymentConfiguration; import net.sourceforge.jnlp.runtime.JNLPRuntime; import net.sourceforge.jnlp.runtime.Translator; +import net.sourceforge.jnlp.util.FileUtils; /** * The KeyStores class allows easily accessing the various KeyStores @@ -339,6 +340,8 @@ public final class KeyStores { if (!parent.isDirectory() && !parent.mkdirs()) { throw new IOException("unable to create " + parent); } + FileUtils.createRestrictedFile(file, true); + ks = KeyStore.getInstance(KEYSTORE_TYPE); ks.load(null, password.toCharArray()); FileOutputStream fos = new FileOutputStream(file); diff -r 5267f9104d5f -r dcd3d1728ff4 netx/net/sourceforge/jnlp/security/viewer/CertificatePane.java --- a/netx/net/sourceforge/jnlp/security/viewer/CertificatePane.java Wed Nov 24 15:22:03 2010 -0500 +++ b/netx/net/sourceforge/jnlp/security/viewer/CertificatePane.java Wed Nov 24 15:47:50 2010 -0500 @@ -45,6 +45,7 @@ import java.awt.event.ActionEvent; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.KeyEvent; +import java.io.File; import java.io.FileOutputStream; import java.io.OutputStream; import java.io.PrintStream; @@ -76,6 +77,7 @@ import net.sourceforge.jnlp.security.Sec import net.sourceforge.jnlp.security.SecurityUtil; import net.sourceforge.jnlp.security.SecurityWarningDialog; import net.sourceforge.jnlp.security.KeyStores.Level; +import net.sourceforge.jnlp.util.FileUtils; public class CertificatePane extends JPanel { @@ -361,8 +363,13 @@ public class CertificatePane extends JPa try { KeyStore ks = keyStore; CertificateUtils.addToKeyStore(chooser.getSelectedFile(), ks); - OutputStream os = new FileOutputStream( - KeyStores.getKeyStoreLocation(currentKeyStoreLevel, currentKeyStoreType)); + File keyStoreFile = new File(KeyStores + .getKeyStoreLocation(currentKeyStoreLevel, currentKeyStoreType)); + if (!keyStoreFile.isFile()) { + FileUtils.createRestrictedFile(keyStoreFile, true); + } + + OutputStream os = new FileOutputStream(keyStoreFile); ks.store(os, KeyStores.getPassword()); repopulateTables(); } catch (Exception ex) { @@ -436,8 +443,12 @@ public class CertificatePane extends JPa JOptionPane.YES_NO_OPTION); if (i == 0) { keyStore.deleteEntry(alias); - FileOutputStream fos = new FileOutputStream( - KeyStores.getKeyStoreLocation(currentKeyStoreLevel, currentKeyStoreType)); + File keyStoreFile = new File(KeyStores + .getKeyStoreLocation(currentKeyStoreLevel, currentKeyStoreType)); + if (!keyStoreFile.isFile()) { + FileUtils.createRestrictedFile(keyStoreFile, true); + } + FileOutputStream fos = new FileOutputStream(keyStoreFile); keyStore.store(fos, KeyStores.getPassword()); fos.close(); } diff -r 5267f9104d5f -r dcd3d1728ff4 netx/net/sourceforge/jnlp/services/SingleInstanceLock.java --- a/netx/net/sourceforge/jnlp/services/SingleInstanceLock.java Wed Nov 24 15:22:03 2010 -0500 +++ b/netx/net/sourceforge/jnlp/services/SingleInstanceLock.java Wed Nov 24 15:47:50 2010 -0500 @@ -67,6 +67,7 @@ class SingleInstanceLock { */ public void createWithPort(int localPort) throws IOException { + FileUtils.createRestrictedFile(lockFile, true); BufferedWriter lockFileWriter = new BufferedWriter(new FileWriter(lockFile, false)); lockFileWriter.write(String.valueOf(localPort)); lockFileWriter.newLine(); @@ -132,9 +133,17 @@ class SingleInstanceLock { File baseDir = new File(JNLPRuntime.getConfiguration() .getProperty(DeploymentConfiguration.KEY_USER_LOCKS_DIR)); - if (!baseDir.isDirectory() && !baseDir.mkdirs()) { - throw new RuntimeException(R("RNoLockDir", baseDir)); + if (!baseDir.isDirectory()) { + if (!baseDir.getParentFile().isDirectory() && !baseDir.getParentFile().mkdirs()) { + throw new RuntimeException(R("RNoLockDir", baseDir)); + } + try { + FileUtils.createRestrictedDirectory(baseDir); + } catch (IOException e) { + throw new RuntimeException(R("RNoLockDir", baseDir)); + } } + String lockFileName = getLockFileName(); File applicationLockFile = new File(baseDir, lockFileName); return applicationLockFile; diff -r 5267f9104d5f -r dcd3d1728ff4 netx/net/sourceforge/jnlp/services/XFileSaveService.java --- a/netx/net/sourceforge/jnlp/services/XFileSaveService.java Wed Nov 24 15:22:03 2010 -0500 +++ b/netx/net/sourceforge/jnlp/services/XFileSaveService.java Wed Nov 24 15:47:50 2010 -0500 @@ -44,6 +44,7 @@ import javax.jnlp.*; import javax.jnlp.*; import net.sourceforge.jnlp.security.SecurityWarning.AccessType; +import net.sourceforge.jnlp.util.FileUtils; import javax.swing.JFileChooser; import javax.swing.JOptionPane; @@ -121,7 +122,7 @@ class XFileSaveService implements FileSa if (!replace) return; } else { - file.createNewFile(); + FileUtils.createRestrictedFile(file, true); } if (file.canWrite()) { diff -r 5267f9104d5f -r dcd3d1728ff4 netx/net/sourceforge/jnlp/services/XPersistenceService.java --- a/netx/net/sourceforge/jnlp/services/XPersistenceService.java Wed Nov 24 15:22:03 2010 -0500 +++ b/netx/net/sourceforge/jnlp/services/XPersistenceService.java Wed Nov 24 15:47:50 2010 -0500 @@ -26,6 +26,7 @@ import net.sourceforge.jnlp.*; import net.sourceforge.jnlp.*; import net.sourceforge.jnlp.cache.*; import net.sourceforge.jnlp.runtime.*; +import net.sourceforge.jnlp.util.FileUtils; /** * The BasicService JNLP service. @@ -96,8 +97,10 @@ class XPersistenceService implements Per File file = toCacheFile(location); file.getParentFile().mkdirs(); - if (!file.createNewFile()) + if (file.exists()) throw new IOException("File already exists."); + + FileUtils.createRestrictedFile(file, true); return maxsize; } diff -r 5267f9104d5f -r dcd3d1728ff4 netx/net/sourceforge/jnlp/util/FileUtils.java --- a/netx/net/sourceforge/jnlp/util/FileUtils.java Wed Nov 24 15:22:03 2010 -0500 +++ b/netx/net/sourceforge/jnlp/util/FileUtils.java Wed Nov 24 15:47:50 2010 -0500 @@ -15,6 +15,8 @@ // Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. package net.sourceforge.jnlp.util; + +import static net.sourceforge.jnlp.runtime.Translator.R; import java.io.File; import java.io.IOException; @@ -69,6 +71,79 @@ public final class FileUtils { filename = filename.replace(INVALID_CHARS[i], SANITIZED_CHAR); return filename; + } + + /** + * Creates a new directory with minimum permissions. The directory is not + * readable or writable by anyone other than the owner. The parent + * directories are not created; they must exist before this is called. + * + * @throws IOException + */ + public static void createRestrictedDirectory(File directory) throws IOException { + createRestrictedFile(directory, true, true); + } + + /** + * Creates a new file with minimum permissions. The file is not readable or + * writable by anyone other than the owner. If writeableByOnwer is false, + * even the owner can not write to it. + * + * @throws IOException + */ + public static void createRestrictedFile(File file, boolean writableByOwner) throws IOException { + createRestrictedFile(file, false, writableByOwner); + } + + /** + * Creates a new file or directory with minimum permissions. The file is not + * readable or writable by anyone other than the owner. If writeableByOnwer + * is false, even the owner can not write to it. If isDir is true, then the + * directory can be executed by the owner + * + * @throws IOException + */ + private static void createRestrictedFile(File file, boolean isDir, boolean writableByOwner) throws IOException { + + File tempFile = null; + + tempFile = new File(file.getCanonicalPath() + ".temp"); + + if (isDir) { + if (!tempFile.mkdir()) { + throw new IOException(R("RCantCreateDir", tempFile)); + } + } else { + if (!tempFile.createNewFile()) { + throw new IOException(R("RCantCreateFile", tempFile)); + } + } + + // remove all permissions + tempFile.setExecutable(false, false); + tempFile.setReadable(false, false); + tempFile.setWritable(false, false); + + // allow owner to read + tempFile.setReadable(true, true); + + // allow owner to write + if (writableByOwner) { + tempFile.setWritable(true, true); + } + + // allow owner to enter directories + if (isDir) { + tempFile.setExecutable(true, true); + } + + // rename this file. Unless the file is moved/renamed, any program that + // opened the file right after it was created might still be able to + // read the data. + if (!tempFile.renameTo(file)) { + throw new IOException(R("RCantRename", tempFile, file)); + } + } /** diff -r 5267f9104d5f -r dcd3d1728ff4 netx/net/sourceforge/jnlp/util/XDesktopEntry.java --- a/netx/net/sourceforge/jnlp/util/XDesktopEntry.java Wed Nov 24 15:22:03 2010 -0500 +++ b/netx/net/sourceforge/jnlp/util/XDesktopEntry.java Wed Nov 24 15:47:50 2010 -0500 @@ -158,6 +158,9 @@ public class XDesktopEntry { if (!shortcutFile.getParentFile().isDirectory() && !shortcutFile.getParentFile().mkdirs()) { throw new IOException(shortcutFile.getParentFile().toString()); } + + FileUtils.createRestrictedFile(shortcutFile, true); + /* * Write out a Java String (UTF-16) as a UTF-8 file */ From omajid at redhat.com Wed Nov 24 12:56:19 2010 From: omajid at redhat.com (Omair Majid) Date: Wed, 24 Nov 2010 15:56:19 -0500 Subject: [icedtea-web] RFC: reduce permissions on created files In-Reply-To: <20101124184143.GB3208@redhat.com> References: <4CDC94FF.50701@redhat.com> <20101112115418.GE5773@rivendell.middle-earth.co.uk> <4CDD52D6.9020306@redhat.com> <20101122203122.GB363@redhat.com> <4CEC1C01.8010205@redhat.com> <20101124184143.GB3208@redhat.com> Message-ID: <4CED7BF3.1000903@redhat.com> On 11/24/2010 01:41 PM, Deepak Bhole wrote: > * Omair Majid [2010-11-23 14:54]: >> On 11/22/2010 03:31 PM, Deepak Bhole wrote: >>> * Omair Majid [2010-11-12 09:46]: >>>> On 11/12/2010 06:54 AM, Dr Andrew John Hughes wrote: >>>>> On 20:14 Thu 11 Nov , Omair Majid wrote: >>>>>> Hi, >>>>>> >>>>>> The attached patch tries to make files created by netx/plugin more >>>>>> secure by removing unnecessary permissions. IcedTea6 used to carry a >>>>>> patch to change the umask used by the javaws process which IcedTea-Web >>>>>> does not. This patch tries to make netx/plugin behave like they would in >>>>>> the presence of such a patch. >>>>>> >>>>>> This patch does not change the file permissions on files that are cached >>>>>> (mostly because I dont see why they should be protected), but does >>>>>> change permissions on KeyStores, native directories created under /tmp/, >>>>>> lock files, files created through the JNLP api and log files. >>>>>> >>>>> >>>>> I think this is a better approach, though we should be aware that the permissions >>>>> are now changed after the file has been created, whereas before (I presume) they >>>>> were created with the correct permissions to begin with. >>>>> >>>> >>>> Hm... Does creating a new (blank) file, setting appropriate >>>> permissions on it and then writing content to it ensure that the >>>> content can not be seen by others? This was the original intent with >>>> this patch (I have since noticed one mistake in the patch). If >>>> creating a blank file, setting permissions on it and then writing >>>> actual content does not ensure the confidentiality of the data, then >>>> I would like to find another way to accomplish this. >>>> >>>> Thanks for looking over the patch. >>>> >>> >>> Good point Andrew! This patch needs to be modified. If a file is created >>> with og+[r|w|x] and then restricted, anything that opened the handle >>> before the change will have the permissions it did when the handle was >>> opened. We need to create the file under a different (temp) name, change >>> permissions, and then move it. AFAIK that shouldn't allow access. >>> >>> Access bypass can be verified as follows: >>> 1. Create a file as one user (A), allow a+r >>> 2. tail -f that file as another user (B) >>> 3. As A, og-rwx the file >>> 4. As A, write to the file >>> >>> The tail -f command from #2 will show the output, thus confirming that >>> user B has access when they shouldn't. >>> >>> tail -f no longer gets the info if the file is renamed to something else >>> between step 3 and 4. >>> >> >> Thanks for the name change idea. The attached patch implements it. Thoughts? >> > > Looks good! Once suggestion though -- it might be helpful for > debugging/catching errors more easily if the exceptions thrown in > createRestrictedFile() printed the file name along with the message. > Also, the message should be in the message properties file imo, as users > might encounter this more frequently if they set the wrong values. > > After above changes, okay for 1.0, please push to HEAD. > Fixed and pushed. Thanks, Omair From ahughes at redhat.com Wed Nov 24 12:59:05 2010 From: ahughes at redhat.com (Dr Andrew John Hughes) Date: Wed, 24 Nov 2010 20:59:05 +0000 Subject: [icedtea-web] fails to build with an older netx.jar on the path In-Reply-To: <4CED4A6C.9030205@redhat.com> References: <4CED102E.2060407@ubuntu.com> <4CED4A6C.9030205@redhat.com> Message-ID: <20101124205905.GN1530@rivendell.middle-earth.co.uk> On 12:25 Wed 24 Nov , Omair Majid wrote: > On 11/24/2010 08:16 AM, Matthias Klose wrote: > > I had an older ./usr/lib/jvm/java-6-openjdk/jre/lib/netx.jar > > installed on the system, then the build fails with: > > > > /scratch/packages/openjdk/web/icedtea-web-1.0~20101124/build/../plugin/icedteanp/java/sun/applet/PluginMain.java:126: > > cannot find symbol > > symbol : method setRedirectStreams(boolean) > > location: class net.sourceforge.jnlp.runtime.JNLPRuntime > > JNLPRuntime.setRedirectStreams(redirectStreams); > > ^ > > /scratch/packages/openjdk/web/icedtea-web-1.0~20101124/build/../plugin/icedteanp/java/sun/applet/PluginMain.java:203: > > cannot find symbol > > symbol : method getConfiguration() > > location: class net.sourceforge.jnlp.runtime.JNLPRuntime > > boolean installAuthenticator = > > Boolean.valueOf(JNLPRuntime.getConfiguration() > > ^ > > > > looks like the -bootclasspath needs to be set to find the current netx. > > > > The netx build sets the bootclasspath correctly, the attached patch does > it for the plugin. Does this fix the issue? > > Thanks, > Omair > diff -r 476a91d02140 Makefile.am > --- a/Makefile.am Wed Nov 24 10:55:50 2010 -0500 > +++ b/Makefile.am Wed Nov 24 12:20:07 2010 -0500 > @@ -186,6 +186,7 @@ > $(BOOT_DIR)/bin/javac $(IT_JAVACFLAGS) \ > -d $(abs_top_builddir)/liveconnect \ > -classpath $(NETX_DIR):$(RUNTIME) \ > + -bootclasspath $(RUNTIME) \ > -sourcepath $(LIVECONNECT_SRCS) \ > @liveconnect-source-files.txt ; \ > fi I guess it will, but I'm not sure how far we can support such scenarios. There's obviously no way around the fact that NetX and the plugin are in rt.jar for 1.7 & 1.8. The recommended solution is to rebuild with the old plugin and webstart disabled. -- Andrew :) Free Java Software Engineer Red Hat, Inc. (http://www.redhat.com) Support Free Java! Contribute to GNU Classpath and the OpenJDK http://www.gnu.org/software/classpath http://openjdk.java.net PGP Key: 94EFD9D8 (http://subkeys.pgp.net) Fingerprint = F8EF F1EA 401E 2E60 15FA 7927 142C 2591 94EF D9D8 From omajid at redhat.com Wed Nov 24 13:04:06 2010 From: omajid at redhat.com (Omair Majid) Date: Wed, 24 Nov 2010 16:04:06 -0500 Subject: [icedtea-web] fails to build with an older netx.jar on the path In-Reply-To: <20101124205905.GN1530@rivendell.middle-earth.co.uk> References: <4CED102E.2060407@ubuntu.com> <4CED4A6C.9030205@redhat.com> <20101124205905.GN1530@rivendell.middle-earth.co.uk> Message-ID: <4CED7DC6.9080808@redhat.com> On 11/24/2010 03:59 PM, Dr Andrew John Hughes wrote: > On 12:25 Wed 24 Nov , Omair Majid wrote: >> On 11/24/2010 08:16 AM, Matthias Klose wrote: >>> I had an older ./usr/lib/jvm/java-6-openjdk/jre/lib/netx.jar >>> installed on the system, then the build fails with: >>> >>> /scratch/packages/openjdk/web/icedtea-web-1.0~20101124/build/../plugin/icedteanp/java/sun/applet/PluginMain.java:126: >>> cannot find symbol >>> symbol : method setRedirectStreams(boolean) >>> location: class net.sourceforge.jnlp.runtime.JNLPRuntime >>> JNLPRuntime.setRedirectStreams(redirectStreams); >>> ^ >>> /scratch/packages/openjdk/web/icedtea-web-1.0~20101124/build/../plugin/icedteanp/java/sun/applet/PluginMain.java:203: >>> cannot find symbol >>> symbol : method getConfiguration() >>> location: class net.sourceforge.jnlp.runtime.JNLPRuntime >>> boolean installAuthenticator = >>> Boolean.valueOf(JNLPRuntime.getConfiguration() >>> ^ >>> >>> looks like the -bootclasspath needs to be set to find the current netx. >>> >> >> The netx build sets the bootclasspath correctly, the attached patch does >> it for the plugin. Does this fix the issue? >> >> Thanks, >> Omair > >> diff -r 476a91d02140 Makefile.am >> --- a/Makefile.am Wed Nov 24 10:55:50 2010 -0500 >> +++ b/Makefile.am Wed Nov 24 12:20:07 2010 -0500 >> @@ -186,6 +186,7 @@ >> $(BOOT_DIR)/bin/javac $(IT_JAVACFLAGS) \ >> -d $(abs_top_builddir)/liveconnect \ >> -classpath $(NETX_DIR):$(RUNTIME) \ >> + -bootclasspath $(RUNTIME) \ >> -sourcepath $(LIVECONNECT_SRCS) \ >> @liveconnect-source-files.txt ; \ >> fi > > I guess it will, but I'm not sure how far we can support such scenarios. There's > obviously no way around the fact that NetX and the plugin are in rt.jar for 1.7& 1.8. > > The recommended solution is to rebuild with the old plugin and webstart disabled. I agree, but the original email is about an older netx.jar. If icedtea-web has been installed into a JDK, that JDK is used to build the plugin and the version of plugin being built expects a slightly different netx api, then it will fail with these exceptions. I have seen them a number of times myself while working on netx code. Cheers, Omair From ahughes at redhat.com Wed Nov 24 13:58:01 2010 From: ahughes at redhat.com (Dr Andrew John Hughes) Date: Wed, 24 Nov 2010 21:58:01 +0000 Subject: [icedtea-web] RFC: reduce permissions on created files In-Reply-To: <20101124185649.GC3208@redhat.com> References: <4CDC94FF.50701@redhat.com> <20101112115418.GE5773@rivendell.middle-earth.co.uk> <4CDD52D6.9020306@redhat.com> <20101122203122.GB363@redhat.com> <4CEC1C01.8010205@redhat.com> <20101124184143.GB3208@redhat.com> <4CED5E40.9080806@redhat.com> <20101124185649.GC3208@redhat.com> Message-ID: <20101124215759.GO1530@rivendell.middle-earth.co.uk> On 13:56 Wed 24 Nov , Deepak Bhole wrote: > * Omair Majid [2010-11-24 13:49]: > > On 11/24/2010 01:41 PM, Deepak Bhole wrote: > > >* Omair Majid [2010-11-23 14:54]: > > >>On 11/22/2010 03:31 PM, Deepak Bhole wrote: > > >>>* Omair Majid [2010-11-12 09:46]: > > >>>>On 11/12/2010 06:54 AM, Dr Andrew John Hughes wrote: > > >>>>>On 20:14 Thu 11 Nov , Omair Majid wrote: > > >>>>>>Hi, > > >>>>>> > > >>>>>>The attached patch tries to make files created by netx/plugin more > > >>>>>>secure by removing unnecessary permissions. IcedTea6 used to carry a > > >>>>>>patch to change the umask used by the javaws process which IcedTea-Web > > >>>>>>does not. This patch tries to make netx/plugin behave like they would in > > >>>>>>the presence of such a patch. > > >>>>>> > > >>>>>>This patch does not change the file permissions on files that are cached > > >>>>>>(mostly because I dont see why they should be protected), but does > > >>>>>>change permissions on KeyStores, native directories created under /tmp/, > > >>>>>>lock files, files created through the JNLP api and log files. > > >>>>>> > > >>>>> > > >>>>>I think this is a better approach, though we should be aware that the permissions > > >>>>>are now changed after the file has been created, whereas before (I presume) they > > >>>>>were created with the correct permissions to begin with. > > >>>>> > > >>>> > > >>>>Hm... Does creating a new (blank) file, setting appropriate > > >>>>permissions on it and then writing content to it ensure that the > > >>>>content can not be seen by others? This was the original intent with > > >>>>this patch (I have since noticed one mistake in the patch). If > > >>>>creating a blank file, setting permissions on it and then writing > > >>>>actual content does not ensure the confidentiality of the data, then > > >>>>I would like to find another way to accomplish this. > > >>>> > > >>>>Thanks for looking over the patch. > > >>>> > > >>> > > >>>Good point Andrew! This patch needs to be modified. If a file is created > > >>>with og+[r|w|x] and then restricted, anything that opened the handle > > >>>before the change will have the permissions it did when the handle was > > >>>opened. We need to create the file under a different (temp) name, change > > >>>permissions, and then move it. AFAIK that shouldn't allow access. > > >>> > > >>>Access bypass can be verified as follows: > > >>>1. Create a file as one user (A), allow a+r > > >>>2. tail -f that file as another user (B) > > >>>3. As A, og-rwx the file > > >>>4. As A, write to the file > > >>> > > >>>The tail -f command from #2 will show the output, thus confirming that > > >>>user B has access when they shouldn't. > > >>> > > >>>tail -f no longer gets the info if the file is renamed to something else > > >>>between step 3 and 4. > > >>> > > >> > > >>Thanks for the name change idea. The attached patch implements it. Thoughts? > > >> > > > > > >Looks good! Once suggestion though -- it might be helpful for > > >debugging/catching errors more easily if the exceptions thrown in > > >createRestrictedFile() printed the file name along with the message. > > >Also, the message should be in the message properties file imo, as users > > >might encounter this more frequently if they set the wrong values. > > > > > > > Sure. Do we have a policy on what goes in the Messages.properties > > file? I know all user-visible GUI text belongs in there, but should > > we add (some? all?) exception messages in there too? > > I think error messages that are only useful to devs are fine in code, > but messages that users can see and may need to understand (i.e. fixable > on their end), should be in Messages.properties.. > The message of the exception should be user-readable. I'm sure we can still work out where it came from by the backtrace. > Cheers, > Deepak -- Andrew :) Free Java Software Engineer Red Hat, Inc. (http://www.redhat.com) Support Free Java! Contribute to GNU Classpath and the OpenJDK http://www.gnu.org/software/classpath http://openjdk.java.net PGP Key: 94EFD9D8 (http://subkeys.pgp.net) Fingerprint = F8EF F1EA 401E 2E60 15FA 7927 142C 2591 94EF D9D8 From ahughes at redhat.com Wed Nov 24 14:02:29 2010 From: ahughes at redhat.com (Dr Andrew John Hughes) Date: Wed, 24 Nov 2010 22:02:29 +0000 Subject: [icedtea-web] fails to build with an older netx.jar on the path In-Reply-To: <4CED7DC6.9080808@redhat.com> References: <4CED102E.2060407@ubuntu.com> <4CED4A6C.9030205@redhat.com> <20101124205905.GN1530@rivendell.middle-earth.co.uk> <4CED7DC6.9080808@redhat.com> Message-ID: <20101124220227.GP1530@rivendell.middle-earth.co.uk> On 16:04 Wed 24 Nov , Omair Majid wrote: > On 11/24/2010 03:59 PM, Dr Andrew John Hughes wrote: > > On 12:25 Wed 24 Nov , Omair Majid wrote: > >> On 11/24/2010 08:16 AM, Matthias Klose wrote: > >>> I had an older ./usr/lib/jvm/java-6-openjdk/jre/lib/netx.jar > >>> installed on the system, then the build fails with: > >>> > >>> /scratch/packages/openjdk/web/icedtea-web-1.0~20101124/build/../plugin/icedteanp/java/sun/applet/PluginMain.java:126: > >>> cannot find symbol > >>> symbol : method setRedirectStreams(boolean) > >>> location: class net.sourceforge.jnlp.runtime.JNLPRuntime > >>> JNLPRuntime.setRedirectStreams(redirectStreams); > >>> ^ > >>> /scratch/packages/openjdk/web/icedtea-web-1.0~20101124/build/../plugin/icedteanp/java/sun/applet/PluginMain.java:203: > >>> cannot find symbol > >>> symbol : method getConfiguration() > >>> location: class net.sourceforge.jnlp.runtime.JNLPRuntime > >>> boolean installAuthenticator = > >>> Boolean.valueOf(JNLPRuntime.getConfiguration() > >>> ^ > >>> > >>> looks like the -bootclasspath needs to be set to find the current netx. > >>> > >> > >> The netx build sets the bootclasspath correctly, the attached patch does > >> it for the plugin. Does this fix the issue? > >> > >> Thanks, > >> Omair > > > >> diff -r 476a91d02140 Makefile.am > >> --- a/Makefile.am Wed Nov 24 10:55:50 2010 -0500 > >> +++ b/Makefile.am Wed Nov 24 12:20:07 2010 -0500 > >> @@ -186,6 +186,7 @@ > >> $(BOOT_DIR)/bin/javac $(IT_JAVACFLAGS) \ > >> -d $(abs_top_builddir)/liveconnect \ > >> -classpath $(NETX_DIR):$(RUNTIME) \ > >> + -bootclasspath $(RUNTIME) \ > >> -sourcepath $(LIVECONNECT_SRCS) \ > >> @liveconnect-source-files.txt ; \ > >> fi > > > > I guess it will, but I'm not sure how far we can support such scenarios. There's > > obviously no way around the fact that NetX and the plugin are in rt.jar for 1.7& 1.8. > > > > The recommended solution is to rebuild with the old plugin and webstart disabled. > > I agree, but the original email is about an older netx.jar. If > icedtea-web has been installed into a JDK, that JDK is used to build the > plugin and the version of plugin being built expects a slightly > different netx api, then it will fail with these exceptions. I have seen > them a number of times myself while working on netx code. > Same point. It just means it's 1.9 rather than 1.7 or 1.8. The patch looks ok to go in. The point I was making is that if people want to use IcedTea-Web, they're going to need to disable the older version in 1.7, 1.8 and 1.9. That's what we just added --disable-webstart for. On the subject of netx.jar; do these really need to be patched into the bootclasspath in HotSpot (as is currently the case)? Could they not be installed in the endorsed directories without needing to patch? That incidentally would also solve this issue properly. > Cheers, > Omair -- Andrew :) Free Java Software Engineer Red Hat, Inc. (http://www.redhat.com) Support Free Java! Contribute to GNU Classpath and the OpenJDK http://www.gnu.org/software/classpath http://openjdk.java.net PGP Key: 94EFD9D8 (http://subkeys.pgp.net) Fingerprint = F8EF F1EA 401E 2E60 15FA 7927 142C 2591 94EF D9D8 From ahughes at redhat.com Wed Nov 24 14:03:53 2010 From: ahughes at redhat.com (Dr Andrew John Hughes) Date: Wed, 24 Nov 2010 22:03:53 +0000 Subject: [icedtea-web] fails to build with an older netx.jar on the path In-Reply-To: <4CED7DC6.9080808@redhat.com> References: <4CED102E.2060407@ubuntu.com> <4CED4A6C.9030205@redhat.com> <20101124205905.GN1530@rivendell.middle-earth.co.uk> <4CED7DC6.9080808@redhat.com> Message-ID: <20101124220353.GQ1530@rivendell.middle-earth.co.uk> On 16:04 Wed 24 Nov , Omair Majid wrote: > On 11/24/2010 03:59 PM, Dr Andrew John Hughes wrote: > > On 12:25 Wed 24 Nov , Omair Majid wrote: > >> On 11/24/2010 08:16 AM, Matthias Klose wrote: > >>> I had an older ./usr/lib/jvm/java-6-openjdk/jre/lib/netx.jar > >>> installed on the system, then the build fails with: > >>> > >>> /scratch/packages/openjdk/web/icedtea-web-1.0~20101124/build/../plugin/icedteanp/java/sun/applet/PluginMain.java:126: > >>> cannot find symbol > >>> symbol : method setRedirectStreams(boolean) > >>> location: class net.sourceforge.jnlp.runtime.JNLPRuntime > >>> JNLPRuntime.setRedirectStreams(redirectStreams); > >>> ^ > >>> /scratch/packages/openjdk/web/icedtea-web-1.0~20101124/build/../plugin/icedteanp/java/sun/applet/PluginMain.java:203: > >>> cannot find symbol > >>> symbol : method getConfiguration() > >>> location: class net.sourceforge.jnlp.runtime.JNLPRuntime > >>> boolean installAuthenticator = > >>> Boolean.valueOf(JNLPRuntime.getConfiguration() > >>> ^ > >>> > >>> looks like the -bootclasspath needs to be set to find the current netx. > >>> > >> > >> The netx build sets the bootclasspath correctly, the attached patch does > >> it for the plugin. Does this fix the issue? > >> > >> Thanks, > >> Omair > > > >> diff -r 476a91d02140 Makefile.am > >> --- a/Makefile.am Wed Nov 24 10:55:50 2010 -0500 > >> +++ b/Makefile.am Wed Nov 24 12:20:07 2010 -0500 > >> @@ -186,6 +186,7 @@ > >> $(BOOT_DIR)/bin/javac $(IT_JAVACFLAGS) \ > >> -d $(abs_top_builddir)/liveconnect \ > >> -classpath $(NETX_DIR):$(RUNTIME) \ > >> + -bootclasspath $(RUNTIME) \ > >> -sourcepath $(LIVECONNECT_SRCS) \ > >> @liveconnect-source-files.txt ; \ > >> fi > > > > I guess it will, but I'm not sure how far we can support such scenarios. There's > > obviously no way around the fact that NetX and the plugin are in rt.jar for 1.7& 1.8. > > > > The recommended solution is to rebuild with the old plugin and webstart disabled. > > I agree, but the original email is about an older netx.jar. If > icedtea-web has been installed into a JDK, that JDK is used to build the > plugin and the version of plugin being built expects a slightly > different netx api, then it will fail with these exceptions. I have seen > them a number of times myself while working on netx code. > > Cheers, > Omair BTW, you should take $(RUNTIME) off the classpath if you're going to do this. Also, have you tested this? IIRC, we needed tools.jar at one point. -- Andrew :) Free Java Software Engineer Red Hat, Inc. (http://www.redhat.com) Support Free Java! Contribute to GNU Classpath and the OpenJDK http://www.gnu.org/software/classpath http://openjdk.java.net PGP Key: 94EFD9D8 (http://subkeys.pgp.net) Fingerprint = F8EF F1EA 401E 2E60 15FA 7927 142C 2591 94EF D9D8 From omajid at redhat.com Wed Nov 24 14:12:42 2010 From: omajid at redhat.com (Omair Majid) Date: Wed, 24 Nov 2010 17:12:42 -0500 Subject: [icedtea-web] fails to build with an older netx.jar on the path In-Reply-To: <20101124220227.GP1530@rivendell.middle-earth.co.uk> References: <4CED102E.2060407@ubuntu.com> <4CED4A6C.9030205@redhat.com> <20101124205905.GN1530@rivendell.middle-earth.co.uk> <4CED7DC6.9080808@redhat.com> <20101124220227.GP1530@rivendell.middle-earth.co.uk> Message-ID: <4CED8DDA.2060808@redhat.com> On 11/24/2010 05:02 PM, Dr Andrew John Hughes wrote: > On 16:04 Wed 24 Nov , Omair Majid wrote: >> On 11/24/2010 03:59 PM, Dr Andrew John Hughes wrote: >>> On 12:25 Wed 24 Nov , Omair Majid wrote: >>>> On 11/24/2010 08:16 AM, Matthias Klose wrote: >>>>> I had an older ./usr/lib/jvm/java-6-openjdk/jre/lib/netx.jar >>>>> installed on the system, then the build fails with: >>>>> >>>>> /scratch/packages/openjdk/web/icedtea-web-1.0~20101124/build/../plugin/icedteanp/java/sun/applet/PluginMain.java:126: >>>>> cannot find symbol >>>>> symbol : method setRedirectStreams(boolean) >>>>> location: class net.sourceforge.jnlp.runtime.JNLPRuntime >>>>> JNLPRuntime.setRedirectStreams(redirectStreams); >>>>> ^ >>>>> /scratch/packages/openjdk/web/icedtea-web-1.0~20101124/build/../plugin/icedteanp/java/sun/applet/PluginMain.java:203: >>>>> cannot find symbol >>>>> symbol : method getConfiguration() >>>>> location: class net.sourceforge.jnlp.runtime.JNLPRuntime >>>>> boolean installAuthenticator = >>>>> Boolean.valueOf(JNLPRuntime.getConfiguration() >>>>> ^ >>>>> >>>>> looks like the -bootclasspath needs to be set to find the current netx. >>>>> >>>> >>>> The netx build sets the bootclasspath correctly, the attached patch does >>>> it for the plugin. Does this fix the issue? >>>> >>>> Thanks, >>>> Omair >>> >>>> diff -r 476a91d02140 Makefile.am >>>> --- a/Makefile.am Wed Nov 24 10:55:50 2010 -0500 >>>> +++ b/Makefile.am Wed Nov 24 12:20:07 2010 -0500 >>>> @@ -186,6 +186,7 @@ >>>> $(BOOT_DIR)/bin/javac $(IT_JAVACFLAGS) \ >>>> -d $(abs_top_builddir)/liveconnect \ >>>> -classpath $(NETX_DIR):$(RUNTIME) \ >>>> + -bootclasspath $(RUNTIME) \ >>>> -sourcepath $(LIVECONNECT_SRCS) \ >>>> @liveconnect-source-files.txt ; \ >>>> fi >>> >>> I guess it will, but I'm not sure how far we can support such scenarios. There's >>> obviously no way around the fact that NetX and the plugin are in rt.jar for 1.7& 1.8. >>> >>> The recommended solution is to rebuild with the old plugin and webstart disabled. >> >> I agree, but the original email is about an older netx.jar. If >> icedtea-web has been installed into a JDK, that JDK is used to build the >> plugin and the version of plugin being built expects a slightly >> different netx api, then it will fail with these exceptions. I have seen >> them a number of times myself while working on netx code. >> > > Same point. It just means it's 1.9 rather than 1.7 or 1.8. > > The patch looks ok to go in. The point I was making is that if people want to use > IcedTea-Web, they're going to need to disable the older version in 1.7, 1.8 and 1.9. > That's what we just added --disable-webstart for. > This applies to 1.10 too. If you build IcedTea-Web, then install it into that 1.10 build and then use that 1.10 build to build a new version of IcedTea-Web with a slightly different API, you run into this exception. This problem will not go away once everyone moves past 1.9. > On the subject of netx.jar; do these really need to be patched into the bootclasspath > in HotSpot (as is currently the case)? Could they not be installed in the endorsed > directories without needing to patch? That incidentally would also solve this > issue properly. Good point. I know it is certainly possible to avoid changing bootclasspath - we dont see deploy.jar in the bootclasspath for Oracle's JDK. Perhaps we can simply add netx/plugin to the bootclasspath in launcher(s). I will investigate this further. Cheers, Omair From omajid at redhat.com Wed Nov 24 14:17:39 2010 From: omajid at redhat.com (Omair Majid) Date: Wed, 24 Nov 2010 17:17:39 -0500 Subject: [icedtea-web] fails to build with an older netx.jar on the path In-Reply-To: <20101124220353.GQ1530@rivendell.middle-earth.co.uk> References: <4CED102E.2060407@ubuntu.com> <4CED4A6C.9030205@redhat.com> <20101124205905.GN1530@rivendell.middle-earth.co.uk> <4CED7DC6.9080808@redhat.com> <20101124220353.GQ1530@rivendell.middle-earth.co.uk> Message-ID: <4CED8F03.3060100@redhat.com> On 11/24/2010 05:03 PM, Dr Andrew John Hughes wrote: > On 16:04 Wed 24 Nov , Omair Majid wrote: >> On 11/24/2010 03:59 PM, Dr Andrew John Hughes wrote: >>> On 12:25 Wed 24 Nov , Omair Majid wrote: >>>> On 11/24/2010 08:16 AM, Matthias Klose wrote: >>>>> I had an older ./usr/lib/jvm/java-6-openjdk/jre/lib/netx.jar >>>>> installed on the system, then the build fails with: >>>>> >>>>> /scratch/packages/openjdk/web/icedtea-web-1.0~20101124/build/../plugin/icedteanp/java/sun/applet/PluginMain.java:126: >>>>> cannot find symbol >>>>> symbol : method setRedirectStreams(boolean) >>>>> location: class net.sourceforge.jnlp.runtime.JNLPRuntime >>>>> JNLPRuntime.setRedirectStreams(redirectStreams); >>>>> ^ >>>>> /scratch/packages/openjdk/web/icedtea-web-1.0~20101124/build/../plugin/icedteanp/java/sun/applet/PluginMain.java:203: >>>>> cannot find symbol >>>>> symbol : method getConfiguration() >>>>> location: class net.sourceforge.jnlp.runtime.JNLPRuntime >>>>> boolean installAuthenticator = >>>>> Boolean.valueOf(JNLPRuntime.getConfiguration() >>>>> ^ >>>>> >>>>> looks like the -bootclasspath needs to be set to find the current netx. >>>>> >>>> >>>> The netx build sets the bootclasspath correctly, the attached patch does >>>> it for the plugin. Does this fix the issue? >>>> >>>> Thanks, >>>> Omair >>> >>>> diff -r 476a91d02140 Makefile.am >>>> --- a/Makefile.am Wed Nov 24 10:55:50 2010 -0500 >>>> +++ b/Makefile.am Wed Nov 24 12:20:07 2010 -0500 >>>> @@ -186,6 +186,7 @@ >>>> $(BOOT_DIR)/bin/javac $(IT_JAVACFLAGS) \ >>>> -d $(abs_top_builddir)/liveconnect \ >>>> -classpath $(NETX_DIR):$(RUNTIME) \ >>>> + -bootclasspath $(RUNTIME) \ >>>> -sourcepath $(LIVECONNECT_SRCS) \ >>>> @liveconnect-source-files.txt ; \ >>>> fi >>> >>> I guess it will, but I'm not sure how far we can support such scenarios. There's >>> obviously no way around the fact that NetX and the plugin are in rt.jar for 1.7& 1.8. >>> >>> The recommended solution is to rebuild with the old plugin and webstart disabled. >> >> I agree, but the original email is about an older netx.jar. If >> icedtea-web has been installed into a JDK, that JDK is used to build the >> plugin and the version of plugin being built expects a slightly >> different netx api, then it will fail with these exceptions. I have seen >> them a number of times myself while working on netx code. >> >> Cheers, >> Omair > > BTW, you should take $(RUNTIME) off the classpath if you're going to do this. > Also, have you tested this? IIRC, we needed tools.jar at one point. Heh, I saw $(RUNTIME) right after I sent out the email. I will fix it before committing. I tried out the patch and it built fine (using an in-tree build, both with and without an API change in netx/plugin). Cheers, Omair From andrew at icedtea.classpath.org Wed Nov 24 14:44:39 2010 From: andrew at icedtea.classpath.org (andrew at icedtea.classpath.org) Date: Wed, 24 Nov 2010 22:44:39 +0000 Subject: /hg/icedtea6: Final plugin and NetX cleanup. Message-ID: changeset 0aab3837f513 in /hg/icedtea6 details: http://icedtea.classpath.org/hg/icedtea6?cmd=changeset;node=0aab3837f513 author: Andrew John Hughes date: Wed Nov 24 22:44:32 2010 +0000 Final plugin and NetX cleanup. 2010-11-24 Andrew John Hughes Final plugin & NetX cleanup. * patches/extensions/netx-umask.patch: Dropped. NetX is no longer in IcedTea6 and IcedTea-Web uses java to do the same thing. * patches/extensions/netx.patch: Remove javaws binary and javax.jnlp documentation production; the requisite classes no longer exist. Move rest to applet_hole.patch. * Makefile.am: (ICEDTEA_PATCHES): Updated. * NEWS: Move NetX and plugin sections for 1.10 to IcedTea-Web. * patches/applet_hole.patch: Remainder of netx.patch which makes AppletViewerPanel accessible. diffstat: 6 files changed, 126 insertions(+), 312 deletions(-) ChangeLog | 17 +++ Makefile.am | 3 NEWS | 9 - patches/applet_hole.patch | 108 +++++++++++++++++++++++ patches/extensions/netx-umask.patch | 164 ----------------------------------- patches/extensions/netx.patch | 137 ----------------------------- diffs (477 lines): diff -r c80d9c5bbe27 -r 0aab3837f513 ChangeLog --- a/ChangeLog Wed Nov 24 16:53:20 2010 +0000 +++ b/ChangeLog Wed Nov 24 22:44:32 2010 +0000 @@ -1,3 +1,20 @@ 2010-11-24 Andrew John Hughes + + Final plugin & NetX cleanup. + * patches/extensions/netx-umask.patch: + Dropped. NetX is no longer in IcedTea6 + and IcedTea-Web uses java to do the same thing. + * patches/extensions/netx.patch: + Remove javaws binary and javax.jnlp documentation + production; the requisite classes no longer exist. + Move rest to applet_hole.patch. + * Makefile.am: + (ICEDTEA_PATCHES): Updated. + * NEWS: Move NetX and plugin sections for 1.10 + to IcedTea-Web. + * patches/applet_hole.patch: Remainder of netx.patch + which makes AppletViewerPanel accessible. + 2010-11-24 Andrew John Hughes * NEWS: Add 1.7.6, 1.8.3 and 1.9.2 releases. diff -r c80d9c5bbe27 -r 0aab3837f513 Makefile.am --- a/Makefile.am Wed Nov 24 16:53:20 2010 +0000 +++ b/Makefile.am Wed Nov 24 22:44:32 2010 +0000 @@ -264,8 +264,7 @@ ICEDTEA_PATCHES = \ patches/icedtea-policy-evaluation.patch \ patches/hotspot/$(HSBUILD)/update-bootclasspath.patch \ patches/libpng.patch \ - patches/extensions/netx.patch \ - patches/extensions/netx-umask.patch \ + patches/applet_hole.patch \ patches/icedtea-jtreg-httpTest.patch \ patches/arm.patch \ patches/openjdk/6678385-window_movement_crasher.patch \ diff -r c80d9c5bbe27 -r 0aab3837f513 NEWS --- a/NEWS Wed Nov 24 16:53:20 2010 +0000 +++ b/NEWS Wed Nov 24 22:44:32 2010 +0000 @@ -47,15 +47,6 @@ New in release 1.10 (2010-XX-XX): - S6967433: dashed lines broken when using scaling transforms. - S6976265: No STROKE_CONTROL - S6967434, PR450, RH530642: Round joins/caps of scaled up lines have poor quality. -* NetX - - A new man page for javaws. - - Add a new option -Xclearcache -* Plugin - - PR554: System.err writes content two times - - PR556: Applet initialization code is prone to race conditions - - PR557: Applet opens in a separate window if tab is closed when the applet loads - - PR519: 100% CPU usage when displaying applets in Webkit based browsers - - PR565: UIDefaults.getUI fails with jgoodies:looks 2.3.1 New in release 1.9.2 (2010-11-24): diff -r c80d9c5bbe27 -r 0aab3837f513 patches/applet_hole.patch --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/patches/applet_hole.patch Wed Nov 24 22:44:32 2010 +0000 @@ -0,0 +1,108 @@ +diff -urN openjdk.orig/jdk/src/share/classes/sun/applet/AppletViewerPanel.java openjdk/jdk/src/share/classes/sun/applet/AppletViewerPanel.java +--- openjdk.orig/jdk/src/share/classes/sun/applet/AppletViewerPanel.java 2008-01-12 15:53:45.000000000 -0500 ++++ openjdk/jdk/src/share/classes/sun/applet/AppletViewerPanel.java 2008-02-04 11:51:20.000000000 -0500 +@@ -42,25 +42,25 @@ + * + * @author Arthur van Hoff + */ +-class AppletViewerPanel extends AppletPanel { ++public class AppletViewerPanel extends AppletPanel { + + /* Are we debugging? */ +- static boolean debug = false; ++ protected static boolean debug = false; + + /** + * The document url. + */ +- URL documentURL; ++ protected URL documentURL; + + /** + * The base url. + */ +- URL baseURL; ++ protected URL baseURL; + + /** + * The attributes of the applet. + */ +- Hashtable atts; ++ protected Hashtable atts; + + /* + * JDK 1.1 serialVersionUID +@@ -70,7 +70,7 @@ + /** + * Construct an applet viewer and start the applet. + */ +- AppletViewerPanel(URL documentURL, Hashtable atts) { ++ protected AppletViewerPanel(URL documentURL, Hashtable atts) { + this.documentURL = documentURL; + this.atts = atts; + +@@ -202,12 +202,12 @@ + return (AppletContext)getParent(); + } + +- static void debug(String s) { ++ protected static void debug(String s) { + if(debug) + System.err.println("AppletViewerPanel:::" + s); + } + +- static void debug(String s, Throwable t) { ++ protected static void debug(String s, Throwable t) { + if(debug) { + t.printStackTrace(); + debug(s); +diff -urN openjdk.orig/jdk/src/share/classes/sun/applet/AppletPanel.java openjdk/jdk/src/share/classes/sun/applet/AppletPanel.java +--- openjdk.orig/jdk/src/share/classes/sun/applet/AppletPanel.java 2008-03-26 04:58:12.000000000 -0400 ++++ openjdk/jdk/src/share/classes/sun/applet/AppletPanel.java 2008-04-07 21:55:56.000000000 -0400 +@@ -68,7 +68,7 @@ + /** + * The applet (if loaded). + */ +- Applet applet; ++ protected Applet applet; + + /** + * Applet will allow initialization. Should be +@@ -117,7 +117,7 @@ + /** + * The thread for the applet. + */ +- Thread handler; ++ protected Thread handler; + + + /** +@@ -162,7 +162,8 @@ + * Creates a thread to run the applet. This method is called + * each time an applet is loaded and reloaded. + */ +- synchronized void createAppletThread() { ++ //Overridden by NetxPanel. ++ protected synchronized void createAppletThread() { + // Create a thread group for the applet, and start a new + // thread to load the applet. + String nm = "applet-" + getCode(); +@@ -306,7 +307,7 @@ + /** + * Get an event from the queue. + */ +- synchronized AppletEvent getNextEvent() throws InterruptedException { ++ protected synchronized AppletEvent getNextEvent() throws InterruptedException { + while (queue == null || queue.isEmpty()) { + wait(); + } +@@ -695,7 +696,8 @@ + * applet event processing so that it can be gracefully interrupted from + * things like HotJava. + */ +- private void runLoader() { ++ //Overridden by NetxPanel. ++ protected void runLoader() { + if (status != APPLET_DISPOSE) { + showAppletStatus("notdisposed"); + return; diff -r c80d9c5bbe27 -r 0aab3837f513 patches/extensions/netx-umask.patch --- a/patches/extensions/netx-umask.patch Wed Nov 24 16:53:20 2010 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,164 +0,0 @@ ---- openjdk/jdk/make/launchers/Makefile.launcher.orig 2008-07-09 12:49:00.000000000 -0400 -+++ openjdk/jdk/make/launchers/Makefile.launcher 2008-07-09 12:49:40.000000000 -0400 -@@ -148,6 +148,16 @@ - endif - endif - -+# pluginappletviewer only -+ifeq ($(PROGRAM), pluginappletviewer) -+ OTHER_CPPFLAGS += -DUSE_UMASK=\"077\" -+endif -+ -+# javaws only -+ifeq ($(PROGRAM), javaws) -+ OTHER_CPPFLAGS += -DUSE_UMASK=\"077\" -+endif -+ - # GUI tools - ifeq ($(GUI_TOOL),true) - ifneq ($(PLATFORM), windows) ---- openjdk/jdk/src/share/bin/java.c.orig 2008-07-09 12:48:35.000000000 -0400 -+++ openjdk/jdk/src/share/bin/java.c 2008-07-09 12:36:11.000000000 -0400 -@@ -56,6 +56,7 @@ - #include - #include - #include -+#include - - #include - #include -@@ -69,6 +70,8 @@ - #define FULL_VERSION JDK_MAJOR_VERSION "." JDK_MINOR_VERSION - #endif - -+#define MAXMASK 4095 /* Same as octal 07777 */ -+ - /* - * The following environment variable is used to influence the behavior - * of the jre exec'd through the SelectVersion routine. The command line -@@ -184,6 +187,10 @@ - - int JNICALL JavaMain(void * args); /* entry point */ - -+/* umask things */ -+static int FindUMask(int *, char ***, int *); -+static int VerifyMask(char *, int*); -+ - struct JavaMainArgs { - int argc; - char ** argv; -@@ -307,6 +314,26 @@ - SetClassPath(s); - #endif - -+#ifdef USE_UMASK -+ /* Set umask */ -+ int mask; -+ // Check to see if we can find a umask on the command line. -+ if (FindUMask(&argc, &argv, &mask) < 0) -+ { -+ // We didn't find a umask, so fall back to the default one. -+ char * defaultMask = (char *) JLI_MemAlloc(5 * sizeof(char)); -+ strcpy(defaultMask, USE_UMASK); -+ int converted; -+ VerifyMask(defaultMask, &converted); -+ JLI_MemFree(defaultMask); -+ umask(converted); /* from sys/stat.h */ -+ } -+ else -+ { -+ umask(mask); -+ } -+#endif -+ - /* - * Parse command line options; if the return value of - * ParseArguments is false, the program should exit. -@@ -2011,3 +2038,87 @@ - } - DoSplashSetFileJarName(file_name, jar_name); - } -+ -+/** -+ * Searches argv to find any parameters that start with "-umask=". -+ * Sets maskToSet with the mask if a -umask is found, and if the mask -+ * supplied is valid. Returns 1 if a valid mask was found and set, -+ * -1 otherwise. -+ */ -+int FindUMask(int *pargc, char *** pargv, int *maskToSet) -+{ -+ int found_mask = -1; -+ -+ // our handles to the original list -+ int argc = *pargc; -+ char **argv = *pargv; -+ -+ // the new set -+ int nargc = argc; -+ char ** nargv = (char **) JLI_MemAlloc((nargc + 1) * sizeof(char *)); -+ -+ // set the original set to the new set -+ *pargv = nargv; -+ *pargc = nargc; -+ -+ char *maskString = (char *) JLI_MemAlloc(6 * sizeof(char *)); -+ int i; -+ for (i = 0; i < argc; i++) -+ { -+ char *arg = argv[i]; -+ if (strncmp(arg, "-umask=",7) == 0) -+ { -+ strncpy(maskString, arg+7, 5); -+ -+ if (VerifyMask(maskString, maskToSet) < 0) -+ { -+ printf("Invalid umask %s, application stopped.\n", maskString); -+ exit(1); -+ } -+ -+ found_mask = 1; -+ nargc--; -+ (*pargc)--; -+ } -+ else -+ { -+ *nargv++ = arg; -+ } -+ } -+ -+ JLI_MemFree(maskString); -+ -+ return found_mask; -+} -+ -+/** -+ * Takes an octal mask in string form, and converts it to -+ * decimal form in convertedMask. The decimal form can then be -+ * easily passed to umask(). Returns 1 if the mask is valid, -1 otherwise. -+ */ -+int VerifyMask(char * maskString, int * convertedMask) -+{ -+ // Borrowed from coreutils modechange.c -+ if ('0' <= *maskString && *maskString < '8') -+ { -+ unsigned int decimal_mode = 0; -+ -+ do { -+ decimal_mode = 8 * decimal_mode + *maskString++ - '0'; -+ } while ('0' <= *maskString && *maskString < '8'); -+ -+ if (decimal_mode > MAXMASK) -+ return -1; -+ else if (*maskString) -+ return -1; -+ else -+ *convertedMask = decimal_mode; -+ -+ return 1; -+ } -+ else -+ { -+ return -1; -+ } -+ -+} diff -r c80d9c5bbe27 -r 0aab3837f513 patches/extensions/netx.patch --- a/patches/extensions/netx.patch Wed Nov 24 16:53:20 2010 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,137 +0,0 @@ -diff -c openjdk.orig/jdk/make/launchers/Makefile openjdk/jdk/make/launchers/Makefile ---- openjdk.orig/jdk/make/launchers/Makefile 2008-06-29 09:45:56.000000000 -0400 -+++ openjdk/jdk/make/launchers/Makefile 2008-06-29 09:47:01.000000000 -0400 -@@ -67,6 +67,7 @@ - $(call make-launcher, javadoc, com.sun.tools.javadoc.Main, , ) - $(call make-launcher, javah, com.sun.tools.javah.Main, , ) - $(call make-launcher, javap, sun.tools.javap.Main, , ) -+$(call make-launcher, javaws, net.sourceforge.jnlp.runtime.Boot, , ) - $(call make-launcher, jconsole, sun.tools.jconsole.JConsole, \ - -J-Djconsole.showOutputViewer, ) - $(call make-launcher, jdb, com.sun.tools.example.debug.tty.TTY, , ) -diff -urN openjdk.orig/jdk/src/share/classes/sun/applet/AppletViewerPanel.java openjdk/jdk/src/share/classes/sun/applet/AppletViewerPanel.java ---- openjdk.orig/jdk/src/share/classes/sun/applet/AppletViewerPanel.java 2008-01-12 15:53:45.000000000 -0500 -+++ openjdk/jdk/src/share/classes/sun/applet/AppletViewerPanel.java 2008-02-04 11:51:20.000000000 -0500 -@@ -42,25 +42,25 @@ - * - * @author Arthur van Hoff - */ --class AppletViewerPanel extends AppletPanel { -+public class AppletViewerPanel extends AppletPanel { - - /* Are we debugging? */ -- static boolean debug = false; -+ protected static boolean debug = false; - - /** - * The document url. - */ -- URL documentURL; -+ protected URL documentURL; - - /** - * The base url. - */ -- URL baseURL; -+ protected URL baseURL; - - /** - * The attributes of the applet. - */ -- Hashtable atts; -+ protected Hashtable atts; - - /* - * JDK 1.1 serialVersionUID -@@ -70,7 +70,7 @@ - /** - * Construct an applet viewer and start the applet. - */ -- AppletViewerPanel(URL documentURL, Hashtable atts) { -+ protected AppletViewerPanel(URL documentURL, Hashtable atts) { - this.documentURL = documentURL; - this.atts = atts; - -@@ -202,12 +202,12 @@ - return (AppletContext)getParent(); - } - -- static void debug(String s) { -+ protected static void debug(String s) { - if(debug) - System.err.println("AppletViewerPanel:::" + s); - } - -- static void debug(String s, Throwable t) { -+ protected static void debug(String s, Throwable t) { - if(debug) { - t.printStackTrace(); - debug(s); -diff -urN openjdk.orig/jdk/src/share/classes/sun/applet/AppletPanel.java openjdk/jdk/src/share/classes/sun/applet/AppletPanel.java ---- openjdk.orig/jdk/src/share/classes/sun/applet/AppletPanel.java 2008-03-26 04:58:12.000000000 -0400 -+++ openjdk/jdk/src/share/classes/sun/applet/AppletPanel.java 2008-04-07 21:55:56.000000000 -0400 -@@ -68,7 +68,7 @@ - /** - * The applet (if loaded). - */ -- Applet applet; -+ protected Applet applet; - - /** - * Applet will allow initialization. Should be -@@ -117,7 +117,7 @@ - /** - * The thread for the applet. - */ -- Thread handler; -+ protected Thread handler; - - - /** -@@ -162,7 +162,8 @@ - * Creates a thread to run the applet. This method is called - * each time an applet is loaded and reloaded. - */ -- synchronized void createAppletThread() { -+ //Overridden by NetxPanel. -+ protected synchronized void createAppletThread() { - // Create a thread group for the applet, and start a new - // thread to load the applet. - String nm = "applet-" + getCode(); -@@ -306,7 +307,7 @@ - /** - * Get an event from the queue. - */ -- synchronized AppletEvent getNextEvent() throws InterruptedException { -+ protected synchronized AppletEvent getNextEvent() throws InterruptedException { - while (queue == null || queue.isEmpty()) { - wait(); - } -@@ -695,7 +696,8 @@ - * applet event processing so that it can be gracefully interrupted from - * things like HotJava. - */ -- private void runLoader() { -+ //Overridden by NetxPanel. -+ protected void runLoader() { - if (status != APPLET_DISPOSE) { - showAppletStatus("notdisposed"); - return; ---- openjdk/jdk/make/docs/NON_CORE_PKGS.gmk.orig 2009-06-04 11:02:18.000000000 -0400 -+++ openjdk/jdk/make/docs/NON_CORE_PKGS.gmk 2009-06-04 11:02:45.000000000 -0400 -@@ -84,6 +84,8 @@ - - SMARTCARDIO_PKGS = javax.smartcardio - -+JNLP_PKGS = javax.jnlp -+ - # non-core packages in rt.jar - NON_CORE_PKGS = $(DOMAPI_PKGS) \ - $(MGMT_PKGS) \ -@@ -91,4 +93,5 @@ - $(JGSS_PKGS) \ - $(OLD_JSSE_PKGS) \ - $(HTTPSERVER_PKGS) \ -- $(SMARTCARDIO_PKGS) -+ $(SMARTCARDIO_PKGS) \ -+ $(JNLP_PKGS) From omajid at redhat.com Thu Nov 25 09:26:43 2010 From: omajid at redhat.com (Omair Majid) Date: Thu, 25 Nov 2010 12:26:43 -0500 Subject: [icedtea-web] RFC: fix build issues with older netx.jar on path Message-ID: <4CEE9C53.5080206@redhat.com> Hi, The attached patch is a fix for a build error in IcedTea-Web which can happen when there is an older netx.jar on the bootclasspath of the javac being used to build IcedTea-Web. Please see the email by Matthias Klose [1] (and the follow ups) for the original discussion. ChangeLog 2010-11-25 Omair Majid * Makefile.am (stamps/liveconnect.stamp): Set a bootclasspath to avoid using an older netx.jar during compilation. Thoughts? Comments? Cheers, Omair [1] http://mail.openjdk.java.net/pipermail/distro-pkg-dev/2010-November/011069.html -------------- next part -------------- A non-text attachment was scrubbed... Name: plugin-set-bootclasspath-01.patch Type: text/x-patch Size: 493 bytes Desc: not available Url : http://mail.openjdk.java.net/pipermail/distro-pkg-dev/attachments/20101125/72765af8/plugin-set-bootclasspath-01.patch From dbhole at redhat.com Thu Nov 25 09:28:16 2010 From: dbhole at redhat.com (Deepak Bhole) Date: Thu, 25 Nov 2010 12:28:16 -0500 Subject: [icedtea-web] RFC: fix build issues with older netx.jar on path In-Reply-To: <4CEE9C53.5080206@redhat.com> References: <4CEE9C53.5080206@redhat.com> Message-ID: <20101125172816.GC21490@redhat.com> * Omair Majid [2010-11-25 12:27]: > Hi, > > The attached patch is a fix for a build error in IcedTea-Web which > can happen when there is an older netx.jar on the bootclasspath of > the javac being used to build IcedTea-Web. Please see the email by > Matthias Klose [1] (and the follow ups) for the original discussion. > > ChangeLog > 2010-11-25 Omair Majid > > * Makefile.am (stamps/liveconnect.stamp): Set a bootclasspath to > avoid using an older netx.jar during compilation. > > Thoughts? Comments? > > Cheers, > Omair > > [1] http://mail.openjdk.java.net/pipermail/distro-pkg-dev/2010-November/011069.html > Looks fine to me. OK for head! Cheers, Deepak > diff -r dcd3d1728ff4 Makefile.am > --- a/Makefile.am Wed Nov 24 15:47:50 2010 -0500 > +++ b/Makefile.am Thu Nov 25 12:06:55 2010 -0500 > @@ -185,7 +185,8 @@ > mkdir -p $(abs_top_builddir)/liveconnect && \ > $(BOOT_DIR)/bin/javac $(IT_JAVACFLAGS) \ > -d $(abs_top_builddir)/liveconnect \ > - -classpath $(NETX_DIR):$(RUNTIME) \ > + -classpath $(NETX_DIR) \ > + -bootclasspath $(RUNTIME) \ > -sourcepath $(LIVECONNECT_SRCS) \ > @liveconnect-source-files.txt ; \ > fi From ahughes at redhat.com Thu Nov 25 09:36:50 2010 From: ahughes at redhat.com (Dr Andrew John Hughes) Date: Thu, 25 Nov 2010 17:36:50 +0000 Subject: [icedtea-web] Docs patch, revision 1 Message-ID: <20101125173650.GD17602@rivendell.middle-earth.co.uk> Attached is an initial version of documentation support for icedtea-web. I'll write up the full ChangeLog and check it over again tomorrow, but thought I'd post it now so people can look and play with it tonight. Cheers, -- Andrew :) Free Java Software Engineer Red Hat, Inc. (http://www.redhat.com) Support Free Java! Contribute to GNU Classpath and the OpenJDK http://www.gnu.org/software/classpath http://openjdk.java.net PGP Key: 94EFD9D8 (http://subkeys.pgp.net) Fingerprint = F8EF F1EA 401E 2E60 15FA 7927 142C 2591 94EF D9D8 -------------- next part -------------- diff -r dcd3d1728ff4 Makefile.am --- a/Makefile.am Wed Nov 24 15:47:50 2010 -0500 +++ b/Makefile.am Thu Nov 25 17:35:45 2010 +0000 @@ -17,12 +17,20 @@ IT_CLASS_TARGET_VERSION=6 IT_JAVACFLAGS=$(IT_JAVAC_SETTINGS) -source $(IT_LANGUAGE_SOURCE_VERSION) -target $(IT_CLASS_TARGET_VERSION) +# Fake update version to shut up the plugin detector hosted by Oracle. +# If Oracle ever release a JDK update greater than 50, this needs to be increased. JDK_UPDATE_VERSION=50 # Sources list PLUGIN_TEST_SRCS = $(abs_top_srcdir)/plugin/tests/LiveConnect/*.java +NETX_PKGS = javax.jnlp net.sourceforge.nanoxml net.sourceforge.jnlp \ + net.sourceforge.jnlp.cache net.sourceforge.jnlp.event \ + net.sourceforge.jnlp.security net.sourceforge.jnlp.security.viewer \ + net.sourceforge.jnlp.services net.sourceforge.jnlp.tools \ + net.sourceforge.jnlp.util + # Conditional defintions if ENABLE_PLUGIN ICEDTEAPLUGIN_CLEAN = clean-IcedTeaPlugin @@ -32,6 +40,7 @@ LIVECONNECT_SRCS = $(PLUGIN_SRCDIR)/java ICEDTEAPLUGIN_TARGET = $(PLUGIN_DIR)/IcedTeaPlugin.so stamps/liveconnect-dist.stamp \ $(PLUGIN_DIR)/launcher/pluginappletviewer +PLUGIN_PKGS = sun.applet netscape.security netscape.javascript endif if CP_SUPPORTS_REFLINK @@ -51,6 +60,14 @@ ICEDTEA_PKG = $(EMPTY) (${PKGVERSION}) endif +if ENABLE_DOCS +JAVADOC_OPTS=-use -keywords -encoding UTF-8 -splitIndex \ + -bottom ' Submit a bug or feature' +if JAVADOC_SUPPORTS_J_OPTIONS +JAVADOC_MEM_OPTS=-J-Xmx1024m -J-Xms128m -J-XX:PermSize=32m -J-XX:MaxPermSize=160m +endif +endif + # Launcher LAUNCHER_SRCDIR = $(abs_top_srcdir)/launcher @@ -72,13 +89,13 @@ # ================= all-local: stamps/netx-dist.stamp extra-lib/about.jar stamps/plugin.stamp $(NETX_DIR)/launcher/javaws \ - javaws.desktop + javaws.desktop stamps/docs.stamp clean-local: clean-netx clean-plugin clean-liveconnect clean-extra clean-bootstrap-directory \ - clean-native-ecj clean-desktop-files + clean-native-ecj clean-desktop-files clean-docs .PHONY: clean-IcedTeaPlugin clean-add-netx clean-add-netx-debug clean-add-plugin clean-add-plugin-debug \ - clean-bootstrap-directory clean-native-ecj clean-desktop-files + clean-bootstrap-directory clean-native-ecj clean-desktop-files clean-netx-docs clean-docs clean-plugin-docs install-exec-local: mkdir -p $(DESTDIR)$(bindir) @@ -96,6 +113,13 @@ mkdir -p $(DESTDIR)$(prefix)/man/man1 cp $(NETX_SRCDIR)/javaws.1 $(DESTDIR)$(prefix)/man/man1 cp $(NETX_RESOURCE_DIR)/about.jnlp $(DESTDIR)$(prefix)/jre/lib +if ENABLE_DOCS + mkdir -p $(DESTDIR)$(htmldir) + cp -pPRf ${abs_top_builddir}/docs/netx $(DESTDIR)$(htmldir) +if ENABLE_PLUGIN + cp -pPRf ${abs_top_builddir}/docs/plugin $(DESTDIR)$(htmldir) +endif +endif uninstall-local: rm -f $(DESTDIR)$(prefix)/jre/lib/$(INSTALL_ARCH_DIR)/IcedTeaPlugin.so @@ -284,6 +308,48 @@ javaws.desktop: javaws.desktop.in sed "s#PATH_TO_JAVAWS#$(DESTDIR)$(bindir)/javaws#" < $(srcdir)/javaws.desktop.in > javaws.desktop +# documentation + +stamps/docs.stamp: stamps/netx-docs.stamp stamps/plugin-docs.stamp + touch stamps/docs.stamp + +clean-docs: clean-netx-docs clean-plugin-docs + rm -f stamps/docs.stamp + +stamps/netx-docs.stamp: stamps/bootstrap-directory.stamp +if ENABLE_DOCS + $(BOOT_DIR)/bin/javadoc $(JAVADOC_MEM_OPTS) $(JAVADOC_OPTS) \ + -d ${abs_top_builddir}/docs/netx -sourcepath $(NETX_SRCDIR) \ + -doctitle 'IcedTea-Web: NetX API Specification' \ + -windowtitle 'IcedTea-Web: NetX ' \ + -header 'IcedTea-Web
NetX
' \ + $(NETX_PKGS) +endif + mkdir -p stamps + touch stamps/netx-docs.stamp + +clean-netx-docs: + rm -rf ${abs_top_builddir}/docs/netx + rm -f stamps/netx-docs.stamp + +stamps/plugin-docs.stamp: stamps/bootstrap-directory.stamp +if ENABLE_DOCS +if ENABLE_PLUGIN + $(BOOT_DIR)/bin/javadoc $(JAVADOC_MEM_OPTS) $(JAVADOC_OPTS) \ + -d ${abs_top_builddir}/docs/plugin -sourcepath $(NETX_SRCDIR):$(LIVECONNECT_SRCS) \ + -doctitle 'IcedTea-Web: Plugin API Specification' \ + -windowtitle 'IcedTea-Web: Plugin ' \ + -header 'IcedTea-Web
Plugin
' \ + $(PLUGIN_PKGS) +endif +endif + mkdir -p stamps + touch stamps/plugin-docs.stamp + +clean-plugin-docs: + rm -rf ${abs_top_builddir}/docs/plugin + rm -f stamps/plugin-docs.stamp + # plugin tests if ENABLE_PLUGIN @@ -322,6 +388,7 @@ mkdir -p $(BOOT_DIR)/bin stamps/ ln -sf $(JAR) $(BOOT_DIR)/bin/jar ln -sf $(abs_top_builddir)/javac $(BOOT_DIR)/bin/javac + ln -sf $(JAVADOC) $(BOOT_DIR)/bin/javadoc mkdir -p $(BOOT_DIR)/jre/lib && \ ln -s $(SYSTEM_JDK_DIR)/jre/lib/rt.jar $(BOOT_DIR)/jre/lib && \ if [ -e $(SYSTEM_JDK_DIR)/jre/lib/jsse.jar ] ; then \ diff -r dcd3d1728ff4 acinclude.m4 --- a/acinclude.m4 Wed Nov 24 15:47:50 2010 -0500 +++ b/acinclude.m4 Thu Nov 25 17:35:45 2010 +0000 @@ -543,3 +543,65 @@ AC_MSG_RESULT(${JAVA}) AC_SUBST(JAVA) ]) + +AC_DEFUN([IT_FIND_JAVADOC], +[ + AC_REQUIRE([IT_CHECK_FOR_JDK]) + AC_MSG_CHECKING([for javadoc]) + AC_ARG_WITH([javadoc], + [AS_HELP_STRING(--with-javadoc,specify location of Java documentation tool (javadoc))], + [ + JAVADOC="${withval}" + ], + [ + JAVADOC=${SYSTEM_JDK_DIR}/bin/javadoc + ]) + if ! test -f "${JAVADOC}"; then + AC_PATH_PROG(JAVADOC, "${JAVADOC}") + fi + if test -z "${JAVADOC}"; then + AC_PATH_PROG(JAVADOC, "javadoc") + fi + if test -z "${JAVADOC}"; then + AC_PATH_PROG(JAVADOC, "gjdoc") + fi + if test -z "${JAVADOC}" && test "x$ENABLE_DOCS" = "xyes"; then + AC_MSG_ERROR("No Java documentation tool was found.") + fi + AC_MSG_RESULT(${JAVADOC}) + AC_MSG_CHECKING([whether javadoc supports -J options]) + CLASS=pkg/Test.java + mkdir tmp.$$ + cd tmp.$$ + mkdir pkg + cat << \EOF > $CLASS +[/* [#]line __oline__ "configure" */ +package pkg; + +public class Test +{ + /** + * Does stuff. + * + * + * @param args arguments from cli. + */ + public static void main(String[] args) + { + System.out.println("Hello World!"); + } +} +] +EOF + if $JAVADOC -J-Xmx896m pkg >&AS_MESSAGE_LOG_FD 2>&1; then + JAVADOC_KNOWS_J_OPTIONS=yes + else + JAVADOC_KNOWS_J_OPTIONS=no + fi + cd .. + rm -rf tmp.$$ + AC_MSG_RESULT([${JAVADOC_KNOWS_J_OPTIONS}]) + AC_SUBST(JAVADOC) + AC_SUBST(JAVADOC_KNOWS_J_OPTIONS) + AM_CONDITIONAL([JAVADOC_SUPPORTS_J_OPTIONS], test x"${JAVADOC_KNOWS_J_OPTIONS}" = "xyes") +]) diff -r dcd3d1728ff4 configure.ac --- a/configure.ac Wed Nov 24 15:47:50 2010 -0500 +++ b/configure.ac Thu Nov 25 17:35:45 2010 +0000 @@ -32,6 +32,7 @@ FIND_JAVAC FIND_JAR FIND_ECJ_JAR +IT_FIND_JAVADOC AC_CONFIG_FILES([javac], [chmod +x javac]) IT_GET_PKGVERSION From omajid at icedtea.classpath.org Thu Nov 25 09:46:15 2010 From: omajid at icedtea.classpath.org (omajid at icedtea.classpath.org) Date: Thu, 25 Nov 2010 17:46:15 +0000 Subject: /hg/icedtea-web: fix build issues with older netx.jar on bootcla... Message-ID: changeset 918f525349b3 in /hg/icedtea-web details: http://icedtea.classpath.org/hg/icedtea-web?cmd=changeset;node=918f525349b3 author: Omair Majid date: Thu Nov 25 12:45:55 2010 -0500 fix build issues with older netx.jar on bootclasspath 2010-11-25 Omair Majid * Makefile.am (stamps/liveconnect.stamp): Set a bootclasspath to avoid using an older netx.jar during compilation. diffstat: 2 files changed, 7 insertions(+), 1 deletion(-) ChangeLog | 5 +++++ Makefile.am | 3 ++- diffs (25 lines): diff -r dcd3d1728ff4 -r 918f525349b3 ChangeLog --- a/ChangeLog Wed Nov 24 15:47:50 2010 -0500 +++ b/ChangeLog Thu Nov 25 12:45:55 2010 -0500 @@ -1,3 +1,8 @@ 2010-11-24 Omair Majid + + * Makefile.am (stamps/liveconnect.stamp): Set a bootclasspath to + avoid using an older netx.jar during compilation. + 2010-11-24 Omair Majid * netx/net/sourceforge/jnlp/util/FileUtils.java diff -r dcd3d1728ff4 -r 918f525349b3 Makefile.am --- a/Makefile.am Wed Nov 24 15:47:50 2010 -0500 +++ b/Makefile.am Thu Nov 25 12:45:55 2010 -0500 @@ -185,7 +185,8 @@ stamps/liveconnect.stamp: liveconnect-so mkdir -p $(abs_top_builddir)/liveconnect && \ $(BOOT_DIR)/bin/javac $(IT_JAVACFLAGS) \ -d $(abs_top_builddir)/liveconnect \ - -classpath $(NETX_DIR):$(RUNTIME) \ + -classpath $(NETX_DIR) \ + -bootclasspath $(RUNTIME) \ -sourcepath $(LIVECONNECT_SRCS) \ @liveconnect-source-files.txt ; \ fi From omajid at redhat.com Thu Nov 25 09:46:45 2010 From: omajid at redhat.com (Omair Majid) Date: Thu, 25 Nov 2010 12:46:45 -0500 Subject: [icedtea-web] RFC: fix build issues with older netx.jar on path In-Reply-To: <20101125172816.GC21490@redhat.com> References: <4CEE9C53.5080206@redhat.com> <20101125172816.GC21490@redhat.com> Message-ID: <4CEEA105.3030407@redhat.com> On 11/25/2010 12:28 PM, Deepak Bhole wrote: > * Omair Majid [2010-11-25 12:27]: >> Hi, >> >> The attached patch is a fix for a build error in IcedTea-Web which >> can happen when there is an older netx.jar on the bootclasspath of >> the javac being used to build IcedTea-Web. Please see the email by >> Matthias Klose [1] (and the follow ups) for the original discussion. >> >> ChangeLog >> 2010-11-25 Omair Majid >> >> * Makefile.am (stamps/liveconnect.stamp): Set a bootclasspath to >> avoid using an older netx.jar during compilation. >> >> Thoughts? Comments? >> >> Cheers, >> Omair >> >> [1] http://mail.openjdk.java.net/pipermail/distro-pkg-dev/2010-November/011069.html >> > > Looks fine to me. OK for head! Thanks for the review. Pushed. Cheers, Omair From gnu_andrew at member.fsf.org Thu Nov 25 12:00:36 2010 From: gnu_andrew at member.fsf.org (Dr Andrew John Hughes) Date: Thu, 25 Nov 2010 20:00:36 +0000 Subject: RFC: IcedTea-Web and Iced Tea7 Message-ID: IcedTea7 currently fails to build IcedTea-Web. It can't link the launcher due to many missing JLI_* symbols even though it finds libjli AFAICS. I wonder whether they have now been hidden? May be a release stopper depending on the schedule as we don't want to be releasing IcedTea7 with an unmaintained plugin & webstart. -- Andrew :-) Free Java Software Engineer Red Hat, Inc. (http://www.redhat.com) Support Free Java! Contribute to GNU Classpath and the OpenJDK http://www.gnu.org/software/classpath http://openjdk.java.net PGP Key: 94EFD9D8 (http://subkeys.pgp.net) Fingerprint: F8EF F1EA 401E 2E60 15FA 7927 142C 2591 94EF D9D8 From dbhole at redhat.com Thu Nov 25 12:09:36 2010 From: dbhole at redhat.com (Deepak Bhole) Date: Thu, 25 Nov 2010 15:09:36 -0500 Subject: RFC: IcedTea-Web and Iced Tea7 In-Reply-To: References: Message-ID: <20101125200935.GD21490@redhat.com> * Dr Andrew John Hughes [2010-11-25 15:00]: > IcedTea7 currently fails to build IcedTea-Web. It can't link the > launcher due to many missing JLI_* symbols even though it finds libjli > AFAICS. I wonder whether they have now been hidden? May be a release > stopper depending on the schedule as we don't want to be releasing > IcedTea7 with an unmaintained plugin & webstart. > Agreed. IMO icedtea-web should support IcedTea7 just as well as 6. How are icedtea7's own launchers linking against libjli and finding JLI_*? Cheers, Deepak > -- > Andrew :-) > > Free Java Software Engineer > Red Hat, Inc. (http://www.redhat.com) > > Support Free Java! > Contribute to GNU Classpath and the OpenJDK > http://www.gnu.org/software/classpath > http://openjdk.java.net > > PGP Key: 94EFD9D8 (http://subkeys.pgp.net) > Fingerprint: F8EF F1EA 401E 2E60 15FA 7927 142C 2591 94EF D9D8 From gnu_andrew at member.fsf.org Fri Nov 26 00:25:58 2010 From: gnu_andrew at member.fsf.org (Dr Andrew John Hughes) Date: Fri, 26 Nov 2010 08:25:58 +0000 Subject: RFC: IcedTea-Web and Iced Tea7 In-Reply-To: <20101125200935.GD21490@redhat.com> References: <20101125200935.GD21490@redhat.com> Message-ID: The commands are identical AFAICS and I couldn't see any signature changes. I'll try and take another look. On 25/11/2010, Deepak Bhole wrote: > * Dr Andrew John Hughes [2010-11-25 15:00]: >> IcedTea7 currently fails to build IcedTea-Web. It can't link the >> launcher due to many missing JLI_* symbols even though it finds libjli >> AFAICS. I wonder whether they have now been hidden? May be a release >> stopper depending on the schedule as we don't want to be releasing >> IcedTea7 with an unmaintained plugin & webstart. >> > > Agreed. IMO icedtea-web should support IcedTea7 just as well as 6. > > How are icedtea7's own launchers linking against libjli and finding JLI_*? > > Cheers, > Deepak > >> -- >> Andrew :-) >> >> Free Java Software Engineer >> Red Hat, Inc. (http://www.redhat.com) >> >> Support Free Java! >> Contribute to GNU Classpath and the OpenJDK >> http://www.gnu.org/software/classpath >> http://openjdk.java.net >> >> PGP Key: 94EFD9D8 (http://subkeys.pgp.net) >> Fingerprint: F8EF F1EA 401E 2E60 15FA 7927 142C 2591 94EF D9D8 > -- Andrew :-) Free Java Software Engineer Red Hat, Inc. (http://www.redhat.com) Support Free Java! Contribute to GNU Classpath and the OpenJDK http://www.gnu.org/software/classpath http://openjdk.java.net PGP Key: 94EFD9D8 (http://subkeys.pgp.net) Fingerprint: F8EF F1EA 401E 2E60 15FA 7927 142C 2591 94EF D9D8 From bugzilla-daemon at icedtea.classpath.org Fri Nov 26 04:26:11 2010 From: bugzilla-daemon at icedtea.classpath.org (bugzilla-daemon at icedtea.classpath.org) Date: Fri, 26 Nov 2010 12:26:11 +0000 Subject: [Bug 600] New: HS19 upgrade broke CACAO build on ARM Message-ID: http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=600 Summary: HS19 upgrade broke CACAO build on ARM Product: IcedTea Version: 6-hg Platform: arm OS/Version: Linux Status: NEW Severity: normal Priority: P2 Component: CACAO AssignedTo: unassigned at icedtea.classpath.org ReportedBy: stefan at complang.tuwien.ac.at configured using "--disable-plugin --enable-cacao --disable-docs --with-parallel-jobs=1". The problem is this: make[7]: Entering directory `/home/sr/it-build/b3/icedtea6/openjdk-ecj/jdk/make/java/main/java' make[7]: *** No rule to make target `../../../../src/solaris/bin/arm/jvm.cfg', needed by `/home/sr/it-build/b3/icedtea6/openjdk.build-ecj/lib/arm/jvm.cfg'. Stop. make[7]: Leaving directory `/home/sr/it-build/b3/icedtea6/openjdk-ecj/jdk/make/java/main/java' make[6]: *** [all] Error 1 Last working version: http://icedtea.classpath.org/hg/icedtea6/rev/a85679cc93f4 Breakage appears in: http://icedtea.classpath.org/hg/icedtea6/rev/0bfb4898c039 There is one changeset between these two, but that one doesn't work at all: Applying patches/icedtea-gcc-suffix.patch patching file openjdk/jdk/make/common/shared/Compiler-gcc.gmk patching file openjdk/corba/make/common/shared/Compiler-gcc.gmk Hunk #1 succeeded at 58 with fuzz 2. Checking patches/hotspot/hs19/gcc-suffix.patch 1 out of 1 hunk FAILED -- saving rejects to file openjdk/hotspot/make/linux/makefiles/gcc.make.rej ERROR patch patches/hotspot/hs19/gcc-suffix.patch FAILED! WARNING make clean-patch before retrying a fix make: *** [stamps/patch.stamp] Error 2 -- Configure bugmail: http://icedtea.classpath.org/bugzilla/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are the assignee for the bug, or are watching the assignee. From dbhole at redhat.com Fri Nov 26 06:29:02 2010 From: dbhole at redhat.com (Deepak Bhole) Date: Fri, 26 Nov 2010 09:29:02 -0500 Subject: [icedtea-web] Docs patch, revision 1 In-Reply-To: <20101125173650.GD17602@rivendell.middle-earth.co.uk> References: <20101125173650.GD17602@rivendell.middle-earth.co.uk> Message-ID: <20101126142901.GB5570@redhat.com> * Dr Andrew John Hughes [2010-11-25 12:37]: > Attached is an initial version of documentation support for icedtea-web. > I'll write up the full ChangeLog and check it over again tomorrow, but > thought I'd post it now so people can look and play with it tonight. > Thanks! Looks fine to me. I tried a normal build and one with --disable-docs. make and make install worked as expected in both cases, so did make clean. Okay for commit. Cheers, Deepak > Cheers, > -- > Andrew :) > > Free Java Software Engineer > Red Hat, Inc. (http://www.redhat.com) > > Support Free Java! > Contribute to GNU Classpath and the OpenJDK > http://www.gnu.org/software/classpath > http://openjdk.java.net > PGP Key: 94EFD9D8 (http://subkeys.pgp.net) > Fingerprint = F8EF F1EA 401E 2E60 15FA 7927 142C 2591 94EF D9D8 > diff -r dcd3d1728ff4 Makefile.am > --- a/Makefile.am Wed Nov 24 15:47:50 2010 -0500 > +++ b/Makefile.am Thu Nov 25 17:35:45 2010 +0000 > @@ -17,12 +17,20 @@ > IT_CLASS_TARGET_VERSION=6 > IT_JAVACFLAGS=$(IT_JAVAC_SETTINGS) -source $(IT_LANGUAGE_SOURCE_VERSION) -target $(IT_CLASS_TARGET_VERSION) > > +# Fake update version to shut up the plugin detector hosted by Oracle. > +# If Oracle ever release a JDK update greater than 50, this needs to be increased. > JDK_UPDATE_VERSION=50 > > # Sources list > > PLUGIN_TEST_SRCS = $(abs_top_srcdir)/plugin/tests/LiveConnect/*.java > > +NETX_PKGS = javax.jnlp net.sourceforge.nanoxml net.sourceforge.jnlp \ > + net.sourceforge.jnlp.cache net.sourceforge.jnlp.event \ > + net.sourceforge.jnlp.security net.sourceforge.jnlp.security.viewer \ > + net.sourceforge.jnlp.services net.sourceforge.jnlp.tools \ > + net.sourceforge.jnlp.util > + > # Conditional defintions > if ENABLE_PLUGIN > ICEDTEAPLUGIN_CLEAN = clean-IcedTeaPlugin > @@ -32,6 +40,7 @@ > LIVECONNECT_SRCS = $(PLUGIN_SRCDIR)/java > ICEDTEAPLUGIN_TARGET = $(PLUGIN_DIR)/IcedTeaPlugin.so stamps/liveconnect-dist.stamp \ > $(PLUGIN_DIR)/launcher/pluginappletviewer > +PLUGIN_PKGS = sun.applet netscape.security netscape.javascript > endif > > if CP_SUPPORTS_REFLINK > @@ -51,6 +60,14 @@ > ICEDTEA_PKG = $(EMPTY) (${PKGVERSION}) > endif > > +if ENABLE_DOCS > +JAVADOC_OPTS=-use -keywords -encoding UTF-8 -splitIndex \ > + -bottom ' Submit a bug or feature' > +if JAVADOC_SUPPORTS_J_OPTIONS > +JAVADOC_MEM_OPTS=-J-Xmx1024m -J-Xms128m -J-XX:PermSize=32m -J-XX:MaxPermSize=160m > +endif > +endif > + > # Launcher > > LAUNCHER_SRCDIR = $(abs_top_srcdir)/launcher > @@ -72,13 +89,13 @@ > # ================= > > all-local: stamps/netx-dist.stamp extra-lib/about.jar stamps/plugin.stamp $(NETX_DIR)/launcher/javaws \ > - javaws.desktop > + javaws.desktop stamps/docs.stamp > > clean-local: clean-netx clean-plugin clean-liveconnect clean-extra clean-bootstrap-directory \ > - clean-native-ecj clean-desktop-files > + clean-native-ecj clean-desktop-files clean-docs > > .PHONY: clean-IcedTeaPlugin clean-add-netx clean-add-netx-debug clean-add-plugin clean-add-plugin-debug \ > - clean-bootstrap-directory clean-native-ecj clean-desktop-files > + clean-bootstrap-directory clean-native-ecj clean-desktop-files clean-netx-docs clean-docs clean-plugin-docs > > install-exec-local: > mkdir -p $(DESTDIR)$(bindir) > @@ -96,6 +113,13 @@ > mkdir -p $(DESTDIR)$(prefix)/man/man1 > cp $(NETX_SRCDIR)/javaws.1 $(DESTDIR)$(prefix)/man/man1 > cp $(NETX_RESOURCE_DIR)/about.jnlp $(DESTDIR)$(prefix)/jre/lib > +if ENABLE_DOCS > + mkdir -p $(DESTDIR)$(htmldir) > + cp -pPRf ${abs_top_builddir}/docs/netx $(DESTDIR)$(htmldir) > +if ENABLE_PLUGIN > + cp -pPRf ${abs_top_builddir}/docs/plugin $(DESTDIR)$(htmldir) > +endif > +endif > > uninstall-local: > rm -f $(DESTDIR)$(prefix)/jre/lib/$(INSTALL_ARCH_DIR)/IcedTeaPlugin.so > @@ -284,6 +308,48 @@ > javaws.desktop: javaws.desktop.in > sed "s#PATH_TO_JAVAWS#$(DESTDIR)$(bindir)/javaws#" < $(srcdir)/javaws.desktop.in > javaws.desktop > > +# documentation > + > +stamps/docs.stamp: stamps/netx-docs.stamp stamps/plugin-docs.stamp > + touch stamps/docs.stamp > + > +clean-docs: clean-netx-docs clean-plugin-docs > + rm -f stamps/docs.stamp > + > +stamps/netx-docs.stamp: stamps/bootstrap-directory.stamp > +if ENABLE_DOCS > + $(BOOT_DIR)/bin/javadoc $(JAVADOC_MEM_OPTS) $(JAVADOC_OPTS) \ > + -d ${abs_top_builddir}/docs/netx -sourcepath $(NETX_SRCDIR) \ > + -doctitle 'IcedTea-Web: NetX API Specification' \ > + -windowtitle 'IcedTea-Web: NetX ' \ > + -header 'IcedTea-Web
NetX
' \ > + $(NETX_PKGS) > +endif > + mkdir -p stamps > + touch stamps/netx-docs.stamp > + > +clean-netx-docs: > + rm -rf ${abs_top_builddir}/docs/netx > + rm -f stamps/netx-docs.stamp > + > +stamps/plugin-docs.stamp: stamps/bootstrap-directory.stamp > +if ENABLE_DOCS > +if ENABLE_PLUGIN > + $(BOOT_DIR)/bin/javadoc $(JAVADOC_MEM_OPTS) $(JAVADOC_OPTS) \ > + -d ${abs_top_builddir}/docs/plugin -sourcepath $(NETX_SRCDIR):$(LIVECONNECT_SRCS) \ > + -doctitle 'IcedTea-Web: Plugin API Specification' \ > + -windowtitle 'IcedTea-Web: Plugin ' \ > + -header 'IcedTea-Web
Plugin
' \ > + $(PLUGIN_PKGS) > +endif > +endif > + mkdir -p stamps > + touch stamps/plugin-docs.stamp > + > +clean-plugin-docs: > + rm -rf ${abs_top_builddir}/docs/plugin > + rm -f stamps/plugin-docs.stamp > + > # plugin tests > > if ENABLE_PLUGIN > @@ -322,6 +388,7 @@ > mkdir -p $(BOOT_DIR)/bin stamps/ > ln -sf $(JAR) $(BOOT_DIR)/bin/jar > ln -sf $(abs_top_builddir)/javac $(BOOT_DIR)/bin/javac > + ln -sf $(JAVADOC) $(BOOT_DIR)/bin/javadoc > mkdir -p $(BOOT_DIR)/jre/lib && \ > ln -s $(SYSTEM_JDK_DIR)/jre/lib/rt.jar $(BOOT_DIR)/jre/lib && \ > if [ -e $(SYSTEM_JDK_DIR)/jre/lib/jsse.jar ] ; then \ > diff -r dcd3d1728ff4 acinclude.m4 > --- a/acinclude.m4 Wed Nov 24 15:47:50 2010 -0500 > +++ b/acinclude.m4 Thu Nov 25 17:35:45 2010 +0000 > @@ -543,3 +543,65 @@ > AC_MSG_RESULT(${JAVA}) > AC_SUBST(JAVA) > ]) > + > +AC_DEFUN([IT_FIND_JAVADOC], > +[ > + AC_REQUIRE([IT_CHECK_FOR_JDK]) > + AC_MSG_CHECKING([for javadoc]) > + AC_ARG_WITH([javadoc], > + [AS_HELP_STRING(--with-javadoc,specify location of Java documentation tool (javadoc))], > + [ > + JAVADOC="${withval}" > + ], > + [ > + JAVADOC=${SYSTEM_JDK_DIR}/bin/javadoc > + ]) > + if ! test -f "${JAVADOC}"; then > + AC_PATH_PROG(JAVADOC, "${JAVADOC}") > + fi > + if test -z "${JAVADOC}"; then > + AC_PATH_PROG(JAVADOC, "javadoc") > + fi > + if test -z "${JAVADOC}"; then > + AC_PATH_PROG(JAVADOC, "gjdoc") > + fi > + if test -z "${JAVADOC}" && test "x$ENABLE_DOCS" = "xyes"; then > + AC_MSG_ERROR("No Java documentation tool was found.") > + fi > + AC_MSG_RESULT(${JAVADOC}) > + AC_MSG_CHECKING([whether javadoc supports -J options]) > + CLASS=pkg/Test.java > + mkdir tmp.$$ > + cd tmp.$$ > + mkdir pkg > + cat << \EOF > $CLASS > +[/* [#]line __oline__ "configure" */ > +package pkg; > + > +public class Test > +{ > + /** > + * Does stuff. > + * > + * > + * @param args arguments from cli. > + */ > + public static void main(String[] args) > + { > + System.out.println("Hello World!"); > + } > +} > +] > +EOF > + if $JAVADOC -J-Xmx896m pkg >&AS_MESSAGE_LOG_FD 2>&1; then > + JAVADOC_KNOWS_J_OPTIONS=yes > + else > + JAVADOC_KNOWS_J_OPTIONS=no > + fi > + cd .. > + rm -rf tmp.$$ > + AC_MSG_RESULT([${JAVADOC_KNOWS_J_OPTIONS}]) > + AC_SUBST(JAVADOC) > + AC_SUBST(JAVADOC_KNOWS_J_OPTIONS) > + AM_CONDITIONAL([JAVADOC_SUPPORTS_J_OPTIONS], test x"${JAVADOC_KNOWS_J_OPTIONS}" = "xyes") > +]) > diff -r dcd3d1728ff4 configure.ac > --- a/configure.ac Wed Nov 24 15:47:50 2010 -0500 > +++ b/configure.ac Thu Nov 25 17:35:45 2010 +0000 > @@ -32,6 +32,7 @@ > FIND_JAVAC > FIND_JAR > FIND_ECJ_JAR > +IT_FIND_JAVADOC > AC_CONFIG_FILES([javac], [chmod +x javac]) > > IT_GET_PKGVERSION From ahughes at redhat.com Fri Nov 26 07:10:12 2010 From: ahughes at redhat.com (Dr Andrew John Hughes) Date: Fri, 26 Nov 2010 15:10:12 +0000 Subject: [icedtea-web] RFC: Add documentation support Message-ID: <20101126151012.GN17602@rivendell.middle-earth.co.uk> This adds API docs for the NetX and plugin packages, as promised yesterday. We did do this before (it lurked deep in a patch to the OpenJDK build) but I've expanded it to also cover the NetX classes (which are quite well-documented) and the plugin. I haven't covered this in the patch, but we should also be installing the architecture documentation provided by Deepak. 2010-11-25 Andrew John Hughes * Makefile.am: (JDK_UPDATE_VERSION): Document. (NETX_PKGS): NetX packages for documentation. (PLUGIN_PKGS): Same for the plugin. (JAVADOC_OPTS): Common options passed to javadoc. (JAVADOC_MEM_OPTS): Memory options passed to JVM if possible (taken from the previous OpenJDK build). (all-local): Depend on docs.stamp. (clean-local): Add clean-docs. (.PHONY): Add clean-docs, clean-plugin-docs, clean-netx-docs. (install-exec-local): Install the documentation if enabled. (docs): Meta-dependency for netx-docs and plugin-docs. (clean-docs): Likewise but for clean targets. (netx-docs): Build documentation for the NetX API. (clean-netx-docs): Remove the NetX docs. (plugin-docs): Build documentation for the plugin API. (clean-plugin-docs): Likewise. (bootstrap-directory): Link to javadoc binary. * acinclude.m4: (IT_FIND_JAVADOC): Find a javadoc binary, first checking user input, then the JDK and the path for 'javadoc' and 'gjdoc'. Also sets JAVADOC_SUPPORTS_J_OPTIONS if it does. * configure.ac: Call IT_FIND_JAVADOC. Ok? -- Andrew :) Free Java Software Engineer Red Hat, Inc. (http://www.redhat.com) Support Free Java! Contribute to GNU Classpath and the OpenJDK http://www.gnu.org/software/classpath http://openjdk.java.net PGP Key: 94EFD9D8 (http://subkeys.pgp.net) Fingerprint = F8EF F1EA 401E 2E60 15FA 7927 142C 2591 94EF D9D8 From ahughes at redhat.com Fri Nov 26 07:13:18 2010 From: ahughes at redhat.com (Dr Andrew John Hughes) Date: Fri, 26 Nov 2010 15:13:18 +0000 Subject: [icedtea-web] RFC: Add documentation support In-Reply-To: <20101126151012.GN17602@rivendell.middle-earth.co.uk> References: <20101126151012.GN17602@rivendell.middle-earth.co.uk> Message-ID: <20101126151318.GO17602@rivendell.middle-earth.co.uk> On 15:10 Fri 26 Nov , Dr Andrew John Hughes wrote: > This adds API docs for the NetX and plugin packages, as promised > yesterday. We did do this before (it lurked deep in a patch to > the OpenJDK build) but I've expanded it to also cover the NetX > classes (which are quite well-documented) and the plugin. > > I haven't covered this in the patch, but we should also be installing > the architecture documentation provided by Deepak. > > 2010-11-25 Andrew John Hughes > > * Makefile.am: > (JDK_UPDATE_VERSION): Document. > (NETX_PKGS): NetX packages for documentation. > (PLUGIN_PKGS): Same for the plugin. > (JAVADOC_OPTS): Common options passed to javadoc. > (JAVADOC_MEM_OPTS): Memory options passed to JVM > if possible (taken from the previous OpenJDK build). > (all-local): Depend on docs.stamp. > (clean-local): Add clean-docs. > (.PHONY): Add clean-docs, clean-plugin-docs, clean-netx-docs. > (install-exec-local): Install the documentation if enabled. > (docs): Meta-dependency for netx-docs and plugin-docs. > (clean-docs): Likewise but for clean targets. > (netx-docs): Build documentation for the NetX API. > (clean-netx-docs): Remove the NetX docs. > (plugin-docs): Build documentation for the plugin API. > (clean-plugin-docs): Likewise. > (bootstrap-directory): Link to javadoc binary. > * acinclude.m4: > (IT_FIND_JAVADOC): Find a javadoc binary, first checking > user input, then the JDK and the path for 'javadoc' and > 'gjdoc'. Also sets JAVADOC_SUPPORTS_J_OPTIONS if it does. > * configure.ac: > Call IT_FIND_JAVADOC. > > Ok? > -- > Andrew :) > > Free Java Software Engineer > Red Hat, Inc. (http://www.redhat.com) > > Support Free Java! > Contribute to GNU Classpath and the OpenJDK > http://www.gnu.org/software/classpath > http://openjdk.java.net > PGP Key: 94EFD9D8 (http://subkeys.pgp.net) > Fingerprint = F8EF F1EA 401E 2E60 15FA 7927 142C 2591 94EF D9D8 Attaching a patch would be a good idea... Seems Deepak already approved it anyway, and there are no additional changes. -- Andrew :) Free Java Software Engineer Red Hat, Inc. (http://www.redhat.com) Support Free Java! Contribute to GNU Classpath and the OpenJDK http://www.gnu.org/software/classpath http://openjdk.java.net PGP Key: 94EFD9D8 (http://subkeys.pgp.net) Fingerprint = F8EF F1EA 401E 2E60 15FA 7927 142C 2591 94EF D9D8 -------------- next part -------------- diff -r dcd3d1728ff4 Makefile.am --- a/Makefile.am Wed Nov 24 15:47:50 2010 -0500 +++ b/Makefile.am Thu Nov 25 17:35:45 2010 +0000 @@ -17,12 +17,20 @@ IT_CLASS_TARGET_VERSION=6 IT_JAVACFLAGS=$(IT_JAVAC_SETTINGS) -source $(IT_LANGUAGE_SOURCE_VERSION) -target $(IT_CLASS_TARGET_VERSION) +# Fake update version to shut up the plugin detector hosted by Oracle. +# If Oracle ever release a JDK update greater than 50, this needs to be increased. JDK_UPDATE_VERSION=50 # Sources list PLUGIN_TEST_SRCS = $(abs_top_srcdir)/plugin/tests/LiveConnect/*.java +NETX_PKGS = javax.jnlp net.sourceforge.nanoxml net.sourceforge.jnlp \ + net.sourceforge.jnlp.cache net.sourceforge.jnlp.event \ + net.sourceforge.jnlp.security net.sourceforge.jnlp.security.viewer \ + net.sourceforge.jnlp.services net.sourceforge.jnlp.tools \ + net.sourceforge.jnlp.util + # Conditional defintions if ENABLE_PLUGIN ICEDTEAPLUGIN_CLEAN = clean-IcedTeaPlugin @@ -32,6 +40,7 @@ LIVECONNECT_SRCS = $(PLUGIN_SRCDIR)/java ICEDTEAPLUGIN_TARGET = $(PLUGIN_DIR)/IcedTeaPlugin.so stamps/liveconnect-dist.stamp \ $(PLUGIN_DIR)/launcher/pluginappletviewer +PLUGIN_PKGS = sun.applet netscape.security netscape.javascript endif if CP_SUPPORTS_REFLINK @@ -51,6 +60,14 @@ ICEDTEA_PKG = $(EMPTY) (${PKGVERSION}) endif +if ENABLE_DOCS +JAVADOC_OPTS=-use -keywords -encoding UTF-8 -splitIndex \ + -bottom ' Submit a bug or feature' +if JAVADOC_SUPPORTS_J_OPTIONS +JAVADOC_MEM_OPTS=-J-Xmx1024m -J-Xms128m -J-XX:PermSize=32m -J-XX:MaxPermSize=160m +endif +endif + # Launcher LAUNCHER_SRCDIR = $(abs_top_srcdir)/launcher @@ -72,13 +89,13 @@ # ================= all-local: stamps/netx-dist.stamp extra-lib/about.jar stamps/plugin.stamp $(NETX_DIR)/launcher/javaws \ - javaws.desktop + javaws.desktop stamps/docs.stamp clean-local: clean-netx clean-plugin clean-liveconnect clean-extra clean-bootstrap-directory \ - clean-native-ecj clean-desktop-files + clean-native-ecj clean-desktop-files clean-docs .PHONY: clean-IcedTeaPlugin clean-add-netx clean-add-netx-debug clean-add-plugin clean-add-plugin-debug \ - clean-bootstrap-directory clean-native-ecj clean-desktop-files + clean-bootstrap-directory clean-native-ecj clean-desktop-files clean-netx-docs clean-docs clean-plugin-docs install-exec-local: mkdir -p $(DESTDIR)$(bindir) @@ -96,6 +113,13 @@ mkdir -p $(DESTDIR)$(prefix)/man/man1 cp $(NETX_SRCDIR)/javaws.1 $(DESTDIR)$(prefix)/man/man1 cp $(NETX_RESOURCE_DIR)/about.jnlp $(DESTDIR)$(prefix)/jre/lib +if ENABLE_DOCS + mkdir -p $(DESTDIR)$(htmldir) + cp -pPRf ${abs_top_builddir}/docs/netx $(DESTDIR)$(htmldir) +if ENABLE_PLUGIN + cp -pPRf ${abs_top_builddir}/docs/plugin $(DESTDIR)$(htmldir) +endif +endif uninstall-local: rm -f $(DESTDIR)$(prefix)/jre/lib/$(INSTALL_ARCH_DIR)/IcedTeaPlugin.so @@ -284,6 +308,48 @@ javaws.desktop: javaws.desktop.in sed "s#PATH_TO_JAVAWS#$(DESTDIR)$(bindir)/javaws#" < $(srcdir)/javaws.desktop.in > javaws.desktop +# documentation + +stamps/docs.stamp: stamps/netx-docs.stamp stamps/plugin-docs.stamp + touch stamps/docs.stamp + +clean-docs: clean-netx-docs clean-plugin-docs + rm -f stamps/docs.stamp + +stamps/netx-docs.stamp: stamps/bootstrap-directory.stamp +if ENABLE_DOCS + $(BOOT_DIR)/bin/javadoc $(JAVADOC_MEM_OPTS) $(JAVADOC_OPTS) \ + -d ${abs_top_builddir}/docs/netx -sourcepath $(NETX_SRCDIR) \ + -doctitle 'IcedTea-Web: NetX API Specification' \ + -windowtitle 'IcedTea-Web: NetX ' \ + -header 'IcedTea-Web
NetX
' \ + $(NETX_PKGS) +endif + mkdir -p stamps + touch stamps/netx-docs.stamp + +clean-netx-docs: + rm -rf ${abs_top_builddir}/docs/netx + rm -f stamps/netx-docs.stamp + +stamps/plugin-docs.stamp: stamps/bootstrap-directory.stamp +if ENABLE_DOCS +if ENABLE_PLUGIN + $(BOOT_DIR)/bin/javadoc $(JAVADOC_MEM_OPTS) $(JAVADOC_OPTS) \ + -d ${abs_top_builddir}/docs/plugin -sourcepath $(NETX_SRCDIR):$(LIVECONNECT_SRCS) \ + -doctitle 'IcedTea-Web: Plugin API Specification' \ + -windowtitle 'IcedTea-Web: Plugin ' \ + -header 'IcedTea-Web
Plugin
' \ + $(PLUGIN_PKGS) +endif +endif + mkdir -p stamps + touch stamps/plugin-docs.stamp + +clean-plugin-docs: + rm -rf ${abs_top_builddir}/docs/plugin + rm -f stamps/plugin-docs.stamp + # plugin tests if ENABLE_PLUGIN @@ -322,6 +388,7 @@ mkdir -p $(BOOT_DIR)/bin stamps/ ln -sf $(JAR) $(BOOT_DIR)/bin/jar ln -sf $(abs_top_builddir)/javac $(BOOT_DIR)/bin/javac + ln -sf $(JAVADOC) $(BOOT_DIR)/bin/javadoc mkdir -p $(BOOT_DIR)/jre/lib && \ ln -s $(SYSTEM_JDK_DIR)/jre/lib/rt.jar $(BOOT_DIR)/jre/lib && \ if [ -e $(SYSTEM_JDK_DIR)/jre/lib/jsse.jar ] ; then \ diff -r dcd3d1728ff4 acinclude.m4 --- a/acinclude.m4 Wed Nov 24 15:47:50 2010 -0500 +++ b/acinclude.m4 Thu Nov 25 17:35:45 2010 +0000 @@ -543,3 +543,65 @@ AC_MSG_RESULT(${JAVA}) AC_SUBST(JAVA) ]) + +AC_DEFUN([IT_FIND_JAVADOC], +[ + AC_REQUIRE([IT_CHECK_FOR_JDK]) + AC_MSG_CHECKING([for javadoc]) + AC_ARG_WITH([javadoc], + [AS_HELP_STRING(--with-javadoc,specify location of Java documentation tool (javadoc))], + [ + JAVADOC="${withval}" + ], + [ + JAVADOC=${SYSTEM_JDK_DIR}/bin/javadoc + ]) + if ! test -f "${JAVADOC}"; then + AC_PATH_PROG(JAVADOC, "${JAVADOC}") + fi + if test -z "${JAVADOC}"; then + AC_PATH_PROG(JAVADOC, "javadoc") + fi + if test -z "${JAVADOC}"; then + AC_PATH_PROG(JAVADOC, "gjdoc") + fi + if test -z "${JAVADOC}" && test "x$ENABLE_DOCS" = "xyes"; then + AC_MSG_ERROR("No Java documentation tool was found.") + fi + AC_MSG_RESULT(${JAVADOC}) + AC_MSG_CHECKING([whether javadoc supports -J options]) + CLASS=pkg/Test.java + mkdir tmp.$$ + cd tmp.$$ + mkdir pkg + cat << \EOF > $CLASS +[/* [#]line __oline__ "configure" */ +package pkg; + +public class Test +{ + /** + * Does stuff. + * + * + * @param args arguments from cli. + */ + public static void main(String[] args) + { + System.out.println("Hello World!"); + } +} +] +EOF + if $JAVADOC -J-Xmx896m pkg >&AS_MESSAGE_LOG_FD 2>&1; then + JAVADOC_KNOWS_J_OPTIONS=yes + else + JAVADOC_KNOWS_J_OPTIONS=no + fi + cd .. + rm -rf tmp.$$ + AC_MSG_RESULT([${JAVADOC_KNOWS_J_OPTIONS}]) + AC_SUBST(JAVADOC) + AC_SUBST(JAVADOC_KNOWS_J_OPTIONS) + AM_CONDITIONAL([JAVADOC_SUPPORTS_J_OPTIONS], test x"${JAVADOC_KNOWS_J_OPTIONS}" = "xyes") +]) diff -r dcd3d1728ff4 configure.ac --- a/configure.ac Wed Nov 24 15:47:50 2010 -0500 +++ b/configure.ac Thu Nov 25 17:35:45 2010 +0000 @@ -32,6 +32,7 @@ FIND_JAVAC FIND_JAR FIND_ECJ_JAR +IT_FIND_JAVADOC AC_CONFIG_FILES([javac], [chmod +x javac]) IT_GET_PKGVERSION From omajid at redhat.com Fri Nov 26 07:16:40 2010 From: omajid at redhat.com (Omair Majid) Date: Fri, 26 Nov 2010 10:16:40 -0500 Subject: [icedtea-web] RFC: Add documentation support In-Reply-To: <20101126151012.GN17602@rivendell.middle-earth.co.uk> References: <20101126151012.GN17602@rivendell.middle-earth.co.uk> Message-ID: <4CEFCF58.4070000@redhat.com> On 11/26/2010 10:10 AM, Dr Andrew John Hughes wrote: > This adds API docs for the NetX and plugin packages, as promised > yesterday. We did do this before (it lurked deep in a patch to > the OpenJDK build) but I've expanded it to also cover the NetX > classes (which are quite well-documented) and the plugin. > > I haven't covered this in the patch, but we should also be installing > the architecture documentation provided by Deepak. > Thanks for the patch! Any chance that all these docs can be made available at (say,) http://icedtea.classpath.org/ ? Cheers, Omair From dbhole at redhat.com Fri Nov 26 07:20:55 2010 From: dbhole at redhat.com (Deepak Bhole) Date: Fri, 26 Nov 2010 10:20:55 -0500 Subject: [icedtea-web] RFC: Add documentation support In-Reply-To: <20101126151318.GO17602@rivendell.middle-earth.co.uk> References: <20101126151012.GN17602@rivendell.middle-earth.co.uk> <20101126151318.GO17602@rivendell.middle-earth.co.uk> Message-ID: <20101126152055.GA6246@redhat.com> * Dr Andrew John Hughes [2010-11-26 10:13]: > On 15:10 Fri 26 Nov , Dr Andrew John Hughes wrote: > > This adds API docs for the NetX and plugin packages, as promised > > yesterday. We did do this before (it lurked deep in a patch to > > the OpenJDK build) but I've expanded it to also cover the NetX > > classes (which are quite well-documented) and the plugin. > > > > I haven't covered this in the patch, but we should also be installing > > the architecture documentation provided by Deepak. > > > > 2010-11-25 Andrew John Hughes > > > > * Makefile.am: > > (JDK_UPDATE_VERSION): Document. > > (NETX_PKGS): NetX packages for documentation. > > (PLUGIN_PKGS): Same for the plugin. > > (JAVADOC_OPTS): Common options passed to javadoc. > > (JAVADOC_MEM_OPTS): Memory options passed to JVM > > if possible (taken from the previous OpenJDK build). > > (all-local): Depend on docs.stamp. > > (clean-local): Add clean-docs. > > (.PHONY): Add clean-docs, clean-plugin-docs, clean-netx-docs. > > (install-exec-local): Install the documentation if enabled. > > (docs): Meta-dependency for netx-docs and plugin-docs. > > (clean-docs): Likewise but for clean targets. > > (netx-docs): Build documentation for the NetX API. > > (clean-netx-docs): Remove the NetX docs. > > (plugin-docs): Build documentation for the plugin API. > > (clean-plugin-docs): Likewise. > > (bootstrap-directory): Link to javadoc binary. > > * acinclude.m4: > > (IT_FIND_JAVADOC): Find a javadoc binary, first checking > > user input, then the JDK and the path for 'javadoc' and > > 'gjdoc'. Also sets JAVADOC_SUPPORTS_J_OPTIONS if it does. > > * configure.ac: > > Call IT_FIND_JAVADOC. > > > > Ok? > > -- > > Andrew :) > > > > Free Java Software Engineer > > Red Hat, Inc. (http://www.redhat.com) > > > > Support Free Java! > > Contribute to GNU Classpath and the OpenJDK > > http://www.gnu.org/software/classpath > > http://openjdk.java.net > > PGP Key: 94EFD9D8 (http://subkeys.pgp.net) > > Fingerprint = F8EF F1EA 401E 2E60 15FA 7927 142C 2591 94EF D9D8 > > Attaching a patch would be a good idea... > Just a minor thing I noticed (missed it last time because I confused it with plugin docs :/) .. the docs/ dir is left behind after a make clean. Stamps are removed correctly though. So it just needs an rmdir in clean-docs Cheers, Deepak > Seems Deepak already approved it anyway, and there are no additional changes. > -- > Andrew :) > > Free Java Software Engineer > Red Hat, Inc. (http://www.redhat.com) > > Support Free Java! > Contribute to GNU Classpath and the OpenJDK > http://www.gnu.org/software/classpath > http://openjdk.java.net > PGP Key: 94EFD9D8 (http://subkeys.pgp.net) > Fingerprint = F8EF F1EA 401E 2E60 15FA 7927 142C 2591 94EF D9D8 > diff -r dcd3d1728ff4 Makefile.am > --- a/Makefile.am Wed Nov 24 15:47:50 2010 -0500 > +++ b/Makefile.am Thu Nov 25 17:35:45 2010 +0000 > @@ -17,12 +17,20 @@ > IT_CLASS_TARGET_VERSION=6 > IT_JAVACFLAGS=$(IT_JAVAC_SETTINGS) -source $(IT_LANGUAGE_SOURCE_VERSION) -target $(IT_CLASS_TARGET_VERSION) > > +# Fake update version to shut up the plugin detector hosted by Oracle. > +# If Oracle ever release a JDK update greater than 50, this needs to be increased. > JDK_UPDATE_VERSION=50 > > # Sources list > > PLUGIN_TEST_SRCS = $(abs_top_srcdir)/plugin/tests/LiveConnect/*.java > > +NETX_PKGS = javax.jnlp net.sourceforge.nanoxml net.sourceforge.jnlp \ > + net.sourceforge.jnlp.cache net.sourceforge.jnlp.event \ > + net.sourceforge.jnlp.security net.sourceforge.jnlp.security.viewer \ > + net.sourceforge.jnlp.services net.sourceforge.jnlp.tools \ > + net.sourceforge.jnlp.util > + > # Conditional defintions > if ENABLE_PLUGIN > ICEDTEAPLUGIN_CLEAN = clean-IcedTeaPlugin > @@ -32,6 +40,7 @@ > LIVECONNECT_SRCS = $(PLUGIN_SRCDIR)/java > ICEDTEAPLUGIN_TARGET = $(PLUGIN_DIR)/IcedTeaPlugin.so stamps/liveconnect-dist.stamp \ > $(PLUGIN_DIR)/launcher/pluginappletviewer > +PLUGIN_PKGS = sun.applet netscape.security netscape.javascript > endif > > if CP_SUPPORTS_REFLINK > @@ -51,6 +60,14 @@ > ICEDTEA_PKG = $(EMPTY) (${PKGVERSION}) > endif > > +if ENABLE_DOCS > +JAVADOC_OPTS=-use -keywords -encoding UTF-8 -splitIndex \ > + -bottom ' Submit a bug or feature' > +if JAVADOC_SUPPORTS_J_OPTIONS > +JAVADOC_MEM_OPTS=-J-Xmx1024m -J-Xms128m -J-XX:PermSize=32m -J-XX:MaxPermSize=160m > +endif > +endif > + > # Launcher > > LAUNCHER_SRCDIR = $(abs_top_srcdir)/launcher > @@ -72,13 +89,13 @@ > # ================= > > all-local: stamps/netx-dist.stamp extra-lib/about.jar stamps/plugin.stamp $(NETX_DIR)/launcher/javaws \ > - javaws.desktop > + javaws.desktop stamps/docs.stamp > > clean-local: clean-netx clean-plugin clean-liveconnect clean-extra clean-bootstrap-directory \ > - clean-native-ecj clean-desktop-files > + clean-native-ecj clean-desktop-files clean-docs > > .PHONY: clean-IcedTeaPlugin clean-add-netx clean-add-netx-debug clean-add-plugin clean-add-plugin-debug \ > - clean-bootstrap-directory clean-native-ecj clean-desktop-files > + clean-bootstrap-directory clean-native-ecj clean-desktop-files clean-netx-docs clean-docs clean-plugin-docs > > install-exec-local: > mkdir -p $(DESTDIR)$(bindir) > @@ -96,6 +113,13 @@ > mkdir -p $(DESTDIR)$(prefix)/man/man1 > cp $(NETX_SRCDIR)/javaws.1 $(DESTDIR)$(prefix)/man/man1 > cp $(NETX_RESOURCE_DIR)/about.jnlp $(DESTDIR)$(prefix)/jre/lib > +if ENABLE_DOCS > + mkdir -p $(DESTDIR)$(htmldir) > + cp -pPRf ${abs_top_builddir}/docs/netx $(DESTDIR)$(htmldir) > +if ENABLE_PLUGIN > + cp -pPRf ${abs_top_builddir}/docs/plugin $(DESTDIR)$(htmldir) > +endif > +endif > > uninstall-local: > rm -f $(DESTDIR)$(prefix)/jre/lib/$(INSTALL_ARCH_DIR)/IcedTeaPlugin.so > @@ -284,6 +308,48 @@ > javaws.desktop: javaws.desktop.in > sed "s#PATH_TO_JAVAWS#$(DESTDIR)$(bindir)/javaws#" < $(srcdir)/javaws.desktop.in > javaws.desktop > > +# documentation > + > +stamps/docs.stamp: stamps/netx-docs.stamp stamps/plugin-docs.stamp > + touch stamps/docs.stamp > + > +clean-docs: clean-netx-docs clean-plugin-docs > + rm -f stamps/docs.stamp > + > +stamps/netx-docs.stamp: stamps/bootstrap-directory.stamp > +if ENABLE_DOCS > + $(BOOT_DIR)/bin/javadoc $(JAVADOC_MEM_OPTS) $(JAVADOC_OPTS) \ > + -d ${abs_top_builddir}/docs/netx -sourcepath $(NETX_SRCDIR) \ > + -doctitle 'IcedTea-Web: NetX API Specification' \ > + -windowtitle 'IcedTea-Web: NetX ' \ > + -header 'IcedTea-Web
NetX
' \ > + $(NETX_PKGS) > +endif > + mkdir -p stamps > + touch stamps/netx-docs.stamp > + > +clean-netx-docs: > + rm -rf ${abs_top_builddir}/docs/netx > + rm -f stamps/netx-docs.stamp > + > +stamps/plugin-docs.stamp: stamps/bootstrap-directory.stamp > +if ENABLE_DOCS > +if ENABLE_PLUGIN > + $(BOOT_DIR)/bin/javadoc $(JAVADOC_MEM_OPTS) $(JAVADOC_OPTS) \ > + -d ${abs_top_builddir}/docs/plugin -sourcepath $(NETX_SRCDIR):$(LIVECONNECT_SRCS) \ > + -doctitle 'IcedTea-Web: Plugin API Specification' \ > + -windowtitle 'IcedTea-Web: Plugin ' \ > + -header 'IcedTea-Web
Plugin
' \ > + $(PLUGIN_PKGS) > +endif > +endif > + mkdir -p stamps > + touch stamps/plugin-docs.stamp > + > +clean-plugin-docs: > + rm -rf ${abs_top_builddir}/docs/plugin > + rm -f stamps/plugin-docs.stamp > + > # plugin tests > > if ENABLE_PLUGIN > @@ -322,6 +388,7 @@ > mkdir -p $(BOOT_DIR)/bin stamps/ > ln -sf $(JAR) $(BOOT_DIR)/bin/jar > ln -sf $(abs_top_builddir)/javac $(BOOT_DIR)/bin/javac > + ln -sf $(JAVADOC) $(BOOT_DIR)/bin/javadoc > mkdir -p $(BOOT_DIR)/jre/lib && \ > ln -s $(SYSTEM_JDK_DIR)/jre/lib/rt.jar $(BOOT_DIR)/jre/lib && \ > if [ -e $(SYSTEM_JDK_DIR)/jre/lib/jsse.jar ] ; then \ > diff -r dcd3d1728ff4 acinclude.m4 > --- a/acinclude.m4 Wed Nov 24 15:47:50 2010 -0500 > +++ b/acinclude.m4 Thu Nov 25 17:35:45 2010 +0000 > @@ -543,3 +543,65 @@ > AC_MSG_RESULT(${JAVA}) > AC_SUBST(JAVA) > ]) > + > +AC_DEFUN([IT_FIND_JAVADOC], > +[ > + AC_REQUIRE([IT_CHECK_FOR_JDK]) > + AC_MSG_CHECKING([for javadoc]) > + AC_ARG_WITH([javadoc], > + [AS_HELP_STRING(--with-javadoc,specify location of Java documentation tool (javadoc))], > + [ > + JAVADOC="${withval}" > + ], > + [ > + JAVADOC=${SYSTEM_JDK_DIR}/bin/javadoc > + ]) > + if ! test -f "${JAVADOC}"; then > + AC_PATH_PROG(JAVADOC, "${JAVADOC}") > + fi > + if test -z "${JAVADOC}"; then > + AC_PATH_PROG(JAVADOC, "javadoc") > + fi > + if test -z "${JAVADOC}"; then > + AC_PATH_PROG(JAVADOC, "gjdoc") > + fi > + if test -z "${JAVADOC}" && test "x$ENABLE_DOCS" = "xyes"; then > + AC_MSG_ERROR("No Java documentation tool was found.") > + fi > + AC_MSG_RESULT(${JAVADOC}) > + AC_MSG_CHECKING([whether javadoc supports -J options]) > + CLASS=pkg/Test.java > + mkdir tmp.$$ > + cd tmp.$$ > + mkdir pkg > + cat << \EOF > $CLASS > +[/* [#]line __oline__ "configure" */ > +package pkg; > + > +public class Test > +{ > + /** > + * Does stuff. > + * > + * > + * @param args arguments from cli. > + */ > + public static void main(String[] args) > + { > + System.out.println("Hello World!"); > + } > +} > +] > +EOF > + if $JAVADOC -J-Xmx896m pkg >&AS_MESSAGE_LOG_FD 2>&1; then > + JAVADOC_KNOWS_J_OPTIONS=yes > + else > + JAVADOC_KNOWS_J_OPTIONS=no > + fi > + cd .. > + rm -rf tmp.$$ > + AC_MSG_RESULT([${JAVADOC_KNOWS_J_OPTIONS}]) > + AC_SUBST(JAVADOC) > + AC_SUBST(JAVADOC_KNOWS_J_OPTIONS) > + AM_CONDITIONAL([JAVADOC_SUPPORTS_J_OPTIONS], test x"${JAVADOC_KNOWS_J_OPTIONS}" = "xyes") > +]) > diff -r dcd3d1728ff4 configure.ac > --- a/configure.ac Wed Nov 24 15:47:50 2010 -0500 > +++ b/configure.ac Thu Nov 25 17:35:45 2010 +0000 > @@ -32,6 +32,7 @@ > FIND_JAVAC > FIND_JAR > FIND_ECJ_JAR > +IT_FIND_JAVADOC > AC_CONFIG_FILES([javac], [chmod +x javac]) > > IT_GET_PKGVERSION From andrew at icedtea.classpath.org Fri Nov 26 07:22:06 2010 From: andrew at icedtea.classpath.org (andrew at icedtea.classpath.org) Date: Fri, 26 Nov 2010 15:22:06 +0000 Subject: /hg/icedtea-web: Add documentation build support. Message-ID: changeset 243ab4185293 in /hg/icedtea-web details: http://icedtea.classpath.org/hg/icedtea-web?cmd=changeset;node=243ab4185293 author: Andrew John Hughes date: Fri Nov 26 15:21:56 2010 +0000 Add documentation build support. 2010-11-25 Andrew John Hughes * Makefile.am: (JDK_UPDATE_VERSION): Document. (NETX_PKGS): NetX packages for documentation. (PLUGIN_PKGS): Same for the plugin. (JAVADOC_OPTS): Common options passed to javadoc. (JAVADOC_MEM_OPTS): Memory options passed to JVM if possible (taken from the previous OpenJDK build). (all- local): Depend on docs.stamp. (clean-local): Add clean-docs. (.PHONY): Add clean-docs, clean-plugin-docs, clean-netx-docs. (install-exec-local): Install the documentation if enabled. (docs): Meta-dependency for netx-docs and plugin-docs. (clean-docs): Likewise but for clean targets. (netx-docs): Build documentation for the NetX API. (clean-netx-docs): Remove the NetX docs. (plugin-docs): Build documentation for the plugin API. (clean-plugin-docs): Likewise. (bootstrap-directory): Link to javadoc binary. * acinclude.m4: (IT_FIND_JAVADOC): Find a javadoc binary, first checking user input, then the JDK and the path for 'javadoc' and 'gjdoc'. Also sets JAVADOC_SUPPORTS_J_OPTIONS if it does. * configure.ac: Call IT_FIND_JAVADOC. diffstat: 4 files changed, 160 insertions(+), 3 deletions(-) ChangeLog | 27 +++++++++++++++++++++ Makefile.am | 73 +++++++++++++++++++++++++++++++++++++++++++++++++++++++--- acinclude.m4 | 62 +++++++++++++++++++++++++++++++++++++++++++++++++ configure.ac | 1 diffs (248 lines): diff -r 918f525349b3 -r 243ab4185293 ChangeLog --- a/ChangeLog Thu Nov 25 12:45:55 2010 -0500 +++ b/ChangeLog Fri Nov 26 15:21:56 2010 +0000 @@ -1,3 +1,30 @@ 2010-11-25 Omair Majid + + * Makefile.am: + (JDK_UPDATE_VERSION): Document. + (NETX_PKGS): NetX packages for documentation. + (PLUGIN_PKGS): Same for the plugin. + (JAVADOC_OPTS): Common options passed to javadoc. + (JAVADOC_MEM_OPTS): Memory options passed to JVM + if possible (taken from the previous OpenJDK build). + (all-local): Depend on docs.stamp. + (clean-local): Add clean-docs. + (.PHONY): Add clean-docs, clean-plugin-docs, clean-netx-docs. + (install-exec-local): Install the documentation if enabled. + (docs): Meta-dependency for netx-docs and plugin-docs. + (clean-docs): Likewise but for clean targets. + (netx-docs): Build documentation for the NetX API. + (clean-netx-docs): Remove the NetX docs. + (plugin-docs): Build documentation for the plugin API. + (clean-plugin-docs): Likewise. + (bootstrap-directory): Link to javadoc binary. + * acinclude.m4: + (IT_FIND_JAVADOC): Find a javadoc binary, first checking + user input, then the JDK and the path for 'javadoc' and + 'gjdoc'. Also sets JAVADOC_SUPPORTS_J_OPTIONS if it does. + * configure.ac: + Call IT_FIND_JAVADOC. + 2010-11-25 Omair Majid * Makefile.am (stamps/liveconnect.stamp): Set a bootclasspath to diff -r 918f525349b3 -r 243ab4185293 Makefile.am --- a/Makefile.am Thu Nov 25 12:45:55 2010 -0500 +++ b/Makefile.am Fri Nov 26 15:21:56 2010 +0000 @@ -17,11 +17,19 @@ IT_CLASS_TARGET_VERSION=6 IT_CLASS_TARGET_VERSION=6 IT_JAVACFLAGS=$(IT_JAVAC_SETTINGS) -source $(IT_LANGUAGE_SOURCE_VERSION) -target $(IT_CLASS_TARGET_VERSION) +# Fake update version to shut up the plugin detector hosted by Oracle. +# If Oracle ever release a JDK update greater than 50, this needs to be increased. JDK_UPDATE_VERSION=50 # Sources list PLUGIN_TEST_SRCS = $(abs_top_srcdir)/plugin/tests/LiveConnect/*.java + +NETX_PKGS = javax.jnlp net.sourceforge.nanoxml net.sourceforge.jnlp \ + net.sourceforge.jnlp.cache net.sourceforge.jnlp.event \ + net.sourceforge.jnlp.security net.sourceforge.jnlp.security.viewer \ + net.sourceforge.jnlp.services net.sourceforge.jnlp.tools \ + net.sourceforge.jnlp.util # Conditional defintions if ENABLE_PLUGIN @@ -32,6 +40,7 @@ LIVECONNECT_SRCS = $(PLUGIN_SRCDIR)/java LIVECONNECT_SRCS = $(PLUGIN_SRCDIR)/java ICEDTEAPLUGIN_TARGET = $(PLUGIN_DIR)/IcedTeaPlugin.so stamps/liveconnect-dist.stamp \ $(PLUGIN_DIR)/launcher/pluginappletviewer +PLUGIN_PKGS = sun.applet netscape.security netscape.javascript endif if CP_SUPPORTS_REFLINK @@ -49,6 +58,14 @@ endif endif if HAS_PKGVERSION ICEDTEA_PKG = $(EMPTY) (${PKGVERSION}) +endif + +if ENABLE_DOCS +JAVADOC_OPTS=-use -keywords -encoding UTF-8 -splitIndex \ + -bottom ' Submit a bug or feature' +if JAVADOC_SUPPORTS_J_OPTIONS +JAVADOC_MEM_OPTS=-J-Xmx1024m -J-Xms128m -J-XX:PermSize=32m -J-XX:MaxPermSize=160m +endif endif # Launcher @@ -72,13 +89,13 @@ EXTRA_DIST = $(NETX_SRCDIR) $(abs_top_sr # ================= all-local: stamps/netx-dist.stamp extra-lib/about.jar stamps/plugin.stamp $(NETX_DIR)/launcher/javaws \ - javaws.desktop + javaws.desktop stamps/docs.stamp clean-local: clean-netx clean-plugin clean-liveconnect clean-extra clean-bootstrap-directory \ - clean-native-ecj clean-desktop-files + clean-native-ecj clean-desktop-files clean-docs .PHONY: clean-IcedTeaPlugin clean-add-netx clean-add-netx-debug clean-add-plugin clean-add-plugin-debug \ - clean-bootstrap-directory clean-native-ecj clean-desktop-files + clean-bootstrap-directory clean-native-ecj clean-desktop-files clean-netx-docs clean-docs clean-plugin-docs install-exec-local: mkdir -p $(DESTDIR)$(bindir) @@ -96,6 +113,13 @@ install-data-local: mkdir -p $(DESTDIR)$(prefix)/man/man1 cp $(NETX_SRCDIR)/javaws.1 $(DESTDIR)$(prefix)/man/man1 cp $(NETX_RESOURCE_DIR)/about.jnlp $(DESTDIR)$(prefix)/jre/lib +if ENABLE_DOCS + mkdir -p $(DESTDIR)$(htmldir) + cp -pPRf ${abs_top_builddir}/docs/netx $(DESTDIR)$(htmldir) +if ENABLE_PLUGIN + cp -pPRf ${abs_top_builddir}/docs/plugin $(DESTDIR)$(htmldir) +endif +endif uninstall-local: rm -f $(DESTDIR)$(prefix)/jre/lib/$(INSTALL_ARCH_DIR)/IcedTeaPlugin.so @@ -285,6 +309,48 @@ javaws.desktop: javaws.desktop.in javaws.desktop: javaws.desktop.in sed "s#PATH_TO_JAVAWS#$(DESTDIR)$(bindir)/javaws#" < $(srcdir)/javaws.desktop.in > javaws.desktop +# documentation + +stamps/docs.stamp: stamps/netx-docs.stamp stamps/plugin-docs.stamp + touch stamps/docs.stamp + +clean-docs: clean-netx-docs clean-plugin-docs + rm -f stamps/docs.stamp + +stamps/netx-docs.stamp: stamps/bootstrap-directory.stamp +if ENABLE_DOCS + $(BOOT_DIR)/bin/javadoc $(JAVADOC_MEM_OPTS) $(JAVADOC_OPTS) \ + -d ${abs_top_builddir}/docs/netx -sourcepath $(NETX_SRCDIR) \ + -doctitle 'IcedTea-Web: NetX API Specification' \ + -windowtitle 'IcedTea-Web: NetX ' \ + -header 'IcedTea-Web
NetX
' \ + $(NETX_PKGS) +endif + mkdir -p stamps + touch stamps/netx-docs.stamp + +clean-netx-docs: + rm -rf ${abs_top_builddir}/docs/netx + rm -f stamps/netx-docs.stamp + +stamps/plugin-docs.stamp: stamps/bootstrap-directory.stamp +if ENABLE_DOCS +if ENABLE_PLUGIN + $(BOOT_DIR)/bin/javadoc $(JAVADOC_MEM_OPTS) $(JAVADOC_OPTS) \ + -d ${abs_top_builddir}/docs/plugin -sourcepath $(NETX_SRCDIR):$(LIVECONNECT_SRCS) \ + -doctitle 'IcedTea-Web: Plugin API Specification' \ + -windowtitle 'IcedTea-Web: Plugin ' \ + -header 'IcedTea-Web
Plugin
' \ + $(PLUGIN_PKGS) +endif +endif + mkdir -p stamps + touch stamps/plugin-docs.stamp + +clean-plugin-docs: + rm -rf ${abs_top_builddir}/docs/plugin + rm -f stamps/plugin-docs.stamp + # plugin tests if ENABLE_PLUGIN @@ -323,6 +389,7 @@ stamps/bootstrap-directory.stamp: stamps mkdir -p $(BOOT_DIR)/bin stamps/ ln -sf $(JAR) $(BOOT_DIR)/bin/jar ln -sf $(abs_top_builddir)/javac $(BOOT_DIR)/bin/javac + ln -sf $(JAVADOC) $(BOOT_DIR)/bin/javadoc mkdir -p $(BOOT_DIR)/jre/lib && \ ln -s $(SYSTEM_JDK_DIR)/jre/lib/rt.jar $(BOOT_DIR)/jre/lib && \ if [ -e $(SYSTEM_JDK_DIR)/jre/lib/jsse.jar ] ; then \ diff -r 918f525349b3 -r 243ab4185293 acinclude.m4 --- a/acinclude.m4 Thu Nov 25 12:45:55 2010 -0500 +++ b/acinclude.m4 Fri Nov 26 15:21:56 2010 +0000 @@ -543,3 +543,65 @@ AC_DEFUN_ONCE([IT_FIND_JAVA], AC_MSG_RESULT(${JAVA}) AC_SUBST(JAVA) ]) + +AC_DEFUN([IT_FIND_JAVADOC], +[ + AC_REQUIRE([IT_CHECK_FOR_JDK]) + AC_MSG_CHECKING([for javadoc]) + AC_ARG_WITH([javadoc], + [AS_HELP_STRING(--with-javadoc,specify location of Java documentation tool (javadoc))], + [ + JAVADOC="${withval}" + ], + [ + JAVADOC=${SYSTEM_JDK_DIR}/bin/javadoc + ]) + if ! test -f "${JAVADOC}"; then + AC_PATH_PROG(JAVADOC, "${JAVADOC}") + fi + if test -z "${JAVADOC}"; then + AC_PATH_PROG(JAVADOC, "javadoc") + fi + if test -z "${JAVADOC}"; then + AC_PATH_PROG(JAVADOC, "gjdoc") + fi + if test -z "${JAVADOC}" && test "x$ENABLE_DOCS" = "xyes"; then + AC_MSG_ERROR("No Java documentation tool was found.") + fi + AC_MSG_RESULT(${JAVADOC}) + AC_MSG_CHECKING([whether javadoc supports -J options]) + CLASS=pkg/Test.java + mkdir tmp.$$ + cd tmp.$$ + mkdir pkg + cat << \EOF > $CLASS +[/* [#]line __oline__ "configure" */ +package pkg; + +public class Test +{ + /** + * Does stuff. + * + * + * @param args arguments from cli. + */ + public static void main(String[] args) + { + System.out.println("Hello World!"); + } +} +] +EOF + if $JAVADOC -J-Xmx896m pkg >&AS_MESSAGE_LOG_FD 2>&1; then + JAVADOC_KNOWS_J_OPTIONS=yes + else + JAVADOC_KNOWS_J_OPTIONS=no + fi + cd .. + rm -rf tmp.$$ + AC_MSG_RESULT([${JAVADOC_KNOWS_J_OPTIONS}]) + AC_SUBST(JAVADOC) + AC_SUBST(JAVADOC_KNOWS_J_OPTIONS) + AM_CONDITIONAL([JAVADOC_SUPPORTS_J_OPTIONS], test x"${JAVADOC_KNOWS_J_OPTIONS}" = "xyes") +]) diff -r 918f525349b3 -r 243ab4185293 configure.ac --- a/configure.ac Thu Nov 25 12:45:55 2010 -0500 +++ b/configure.ac Fri Nov 26 15:21:56 2010 +0000 @@ -32,6 +32,7 @@ FIND_JAVAC FIND_JAVAC FIND_JAR FIND_ECJ_JAR +IT_FIND_JAVADOC AC_CONFIG_FILES([javac], [chmod +x javac]) IT_GET_PKGVERSION From ahughes at redhat.com Fri Nov 26 07:41:30 2010 From: ahughes at redhat.com (Dr Andrew John Hughes) Date: Fri, 26 Nov 2010 15:41:30 +0000 Subject: [icedtea-web] RFC: Add documentation support In-Reply-To: <20101126152055.GA6246@redhat.com> References: <20101126151012.GN17602@rivendell.middle-earth.co.uk> <20101126151318.GO17602@rivendell.middle-earth.co.uk> <20101126152055.GA6246@redhat.com> Message-ID: <20101126154130.GP17602@rivendell.middle-earth.co.uk> On 10:20 Fri 26 Nov , Deepak Bhole wrote: > * Dr Andrew John Hughes [2010-11-26 10:13]: > > On 15:10 Fri 26 Nov , Dr Andrew John Hughes wrote: > > > This adds API docs for the NetX and plugin packages, as promised > > > yesterday. We did do this before (it lurked deep in a patch to > > > the OpenJDK build) but I've expanded it to also cover the NetX > > > classes (which are quite well-documented) and the plugin. > > > > > > I haven't covered this in the patch, but we should also be installing > > > the architecture documentation provided by Deepak. > > > > > > 2010-11-25 Andrew John Hughes > > > > > > * Makefile.am: > > > (JDK_UPDATE_VERSION): Document. > > > (NETX_PKGS): NetX packages for documentation. > > > (PLUGIN_PKGS): Same for the plugin. > > > (JAVADOC_OPTS): Common options passed to javadoc. > > > (JAVADOC_MEM_OPTS): Memory options passed to JVM > > > if possible (taken from the previous OpenJDK build). > > > (all-local): Depend on docs.stamp. > > > (clean-local): Add clean-docs. > > > (.PHONY): Add clean-docs, clean-plugin-docs, clean-netx-docs. > > > (install-exec-local): Install the documentation if enabled. > > > (docs): Meta-dependency for netx-docs and plugin-docs. > > > (clean-docs): Likewise but for clean targets. > > > (netx-docs): Build documentation for the NetX API. > > > (clean-netx-docs): Remove the NetX docs. > > > (plugin-docs): Build documentation for the plugin API. > > > (clean-plugin-docs): Likewise. > > > (bootstrap-directory): Link to javadoc binary. > > > * acinclude.m4: > > > (IT_FIND_JAVADOC): Find a javadoc binary, first checking > > > user input, then the JDK and the path for 'javadoc' and > > > 'gjdoc'. Also sets JAVADOC_SUPPORTS_J_OPTIONS if it does. > > > * configure.ac: > > > Call IT_FIND_JAVADOC. > > > > > > Ok? > > > -- > > > Andrew :) > > > > > > Free Java Software Engineer > > > Red Hat, Inc. (http://www.redhat.com) > > > > > > Support Free Java! > > > Contribute to GNU Classpath and the OpenJDK > > > http://www.gnu.org/software/classpath > > > http://openjdk.java.net > > > PGP Key: 94EFD9D8 (http://subkeys.pgp.net) > > > Fingerprint = F8EF F1EA 401E 2E60 15FA 7927 142C 2591 94EF D9D8 > > > > Attaching a patch would be a good idea... > > > > Just a minor thing I noticed (missed it last time because I confused it > with plugin docs :/) .. the docs/ dir is left behind after a make clean. > Stamps are removed correctly though. > > So it just needs an rmdir in clean-docs > Yeah got your note on this on IRC. I'm going to do a make distcheck and cover all such issues with one patch. > Cheers, > Deepak > > > Seems Deepak already approved it anyway, and there are no additional changes. > > -- > > Andrew :) > > > > Free Java Software Engineer > > Red Hat, Inc. (http://www.redhat.com) > > > > Support Free Java! > > Contribute to GNU Classpath and the OpenJDK > > http://www.gnu.org/software/classpath > > http://openjdk.java.net > > PGP Key: 94EFD9D8 (http://subkeys.pgp.net) > > Fingerprint = F8EF F1EA 401E 2E60 15FA 7927 142C 2591 94EF D9D8 > > > diff -r dcd3d1728ff4 Makefile.am > > --- a/Makefile.am Wed Nov 24 15:47:50 2010 -0500 > > +++ b/Makefile.am Thu Nov 25 17:35:45 2010 +0000 > > @@ -17,12 +17,20 @@ > > IT_CLASS_TARGET_VERSION=6 > > IT_JAVACFLAGS=$(IT_JAVAC_SETTINGS) -source $(IT_LANGUAGE_SOURCE_VERSION) -target $(IT_CLASS_TARGET_VERSION) > > > > +# Fake update version to shut up the plugin detector hosted by Oracle. > > +# If Oracle ever release a JDK update greater than 50, this needs to be increased. > > JDK_UPDATE_VERSION=50 > > > > # Sources list > > > > PLUGIN_TEST_SRCS = $(abs_top_srcdir)/plugin/tests/LiveConnect/*.java > > > > +NETX_PKGS = javax.jnlp net.sourceforge.nanoxml net.sourceforge.jnlp \ > > + net.sourceforge.jnlp.cache net.sourceforge.jnlp.event \ > > + net.sourceforge.jnlp.security net.sourceforge.jnlp.security.viewer \ > > + net.sourceforge.jnlp.services net.sourceforge.jnlp.tools \ > > + net.sourceforge.jnlp.util > > + > > # Conditional defintions > > if ENABLE_PLUGIN > > ICEDTEAPLUGIN_CLEAN = clean-IcedTeaPlugin > > @@ -32,6 +40,7 @@ > > LIVECONNECT_SRCS = $(PLUGIN_SRCDIR)/java > > ICEDTEAPLUGIN_TARGET = $(PLUGIN_DIR)/IcedTeaPlugin.so stamps/liveconnect-dist.stamp \ > > $(PLUGIN_DIR)/launcher/pluginappletviewer > > +PLUGIN_PKGS = sun.applet netscape.security netscape.javascript > > endif > > > > if CP_SUPPORTS_REFLINK > > @@ -51,6 +60,14 @@ > > ICEDTEA_PKG = $(EMPTY) (${PKGVERSION}) > > endif > > > > +if ENABLE_DOCS > > +JAVADOC_OPTS=-use -keywords -encoding UTF-8 -splitIndex \ > > + -bottom ' Submit a bug or feature' > > +if JAVADOC_SUPPORTS_J_OPTIONS > > +JAVADOC_MEM_OPTS=-J-Xmx1024m -J-Xms128m -J-XX:PermSize=32m -J-XX:MaxPermSize=160m > > +endif > > +endif > > + > > # Launcher > > > > LAUNCHER_SRCDIR = $(abs_top_srcdir)/launcher > > @@ -72,13 +89,13 @@ > > # ================= > > > > all-local: stamps/netx-dist.stamp extra-lib/about.jar stamps/plugin.stamp $(NETX_DIR)/launcher/javaws \ > > - javaws.desktop > > + javaws.desktop stamps/docs.stamp > > > > clean-local: clean-netx clean-plugin clean-liveconnect clean-extra clean-bootstrap-directory \ > > - clean-native-ecj clean-desktop-files > > + clean-native-ecj clean-desktop-files clean-docs > > > > .PHONY: clean-IcedTeaPlugin clean-add-netx clean-add-netx-debug clean-add-plugin clean-add-plugin-debug \ > > - clean-bootstrap-directory clean-native-ecj clean-desktop-files > > + clean-bootstrap-directory clean-native-ecj clean-desktop-files clean-netx-docs clean-docs clean-plugin-docs > > > > install-exec-local: > > mkdir -p $(DESTDIR)$(bindir) > > @@ -96,6 +113,13 @@ > > mkdir -p $(DESTDIR)$(prefix)/man/man1 > > cp $(NETX_SRCDIR)/javaws.1 $(DESTDIR)$(prefix)/man/man1 > > cp $(NETX_RESOURCE_DIR)/about.jnlp $(DESTDIR)$(prefix)/jre/lib > > +if ENABLE_DOCS > > + mkdir -p $(DESTDIR)$(htmldir) > > + cp -pPRf ${abs_top_builddir}/docs/netx $(DESTDIR)$(htmldir) > > +if ENABLE_PLUGIN > > + cp -pPRf ${abs_top_builddir}/docs/plugin $(DESTDIR)$(htmldir) > > +endif > > +endif > > > > uninstall-local: > > rm -f $(DESTDIR)$(prefix)/jre/lib/$(INSTALL_ARCH_DIR)/IcedTeaPlugin.so > > @@ -284,6 +308,48 @@ > > javaws.desktop: javaws.desktop.in > > sed "s#PATH_TO_JAVAWS#$(DESTDIR)$(bindir)/javaws#" < $(srcdir)/javaws.desktop.in > javaws.desktop > > > > +# documentation > > + > > +stamps/docs.stamp: stamps/netx-docs.stamp stamps/plugin-docs.stamp > > + touch stamps/docs.stamp > > + > > +clean-docs: clean-netx-docs clean-plugin-docs > > + rm -f stamps/docs.stamp > > + > > +stamps/netx-docs.stamp: stamps/bootstrap-directory.stamp > > +if ENABLE_DOCS > > + $(BOOT_DIR)/bin/javadoc $(JAVADOC_MEM_OPTS) $(JAVADOC_OPTS) \ > > + -d ${abs_top_builddir}/docs/netx -sourcepath $(NETX_SRCDIR) \ > > + -doctitle 'IcedTea-Web: NetX API Specification' \ > > + -windowtitle 'IcedTea-Web: NetX ' \ > > + -header 'IcedTea-Web
NetX
' \ > > + $(NETX_PKGS) > > +endif > > + mkdir -p stamps > > + touch stamps/netx-docs.stamp > > + > > +clean-netx-docs: > > + rm -rf ${abs_top_builddir}/docs/netx > > + rm -f stamps/netx-docs.stamp > > + > > +stamps/plugin-docs.stamp: stamps/bootstrap-directory.stamp > > +if ENABLE_DOCS > > +if ENABLE_PLUGIN > > + $(BOOT_DIR)/bin/javadoc $(JAVADOC_MEM_OPTS) $(JAVADOC_OPTS) \ > > + -d ${abs_top_builddir}/docs/plugin -sourcepath $(NETX_SRCDIR):$(LIVECONNECT_SRCS) \ > > + -doctitle 'IcedTea-Web: Plugin API Specification' \ > > + -windowtitle 'IcedTea-Web: Plugin ' \ > > + -header 'IcedTea-Web
Plugin
' \ > > + $(PLUGIN_PKGS) > > +endif > > +endif > > + mkdir -p stamps > > + touch stamps/plugin-docs.stamp > > + > > +clean-plugin-docs: > > + rm -rf ${abs_top_builddir}/docs/plugin > > + rm -f stamps/plugin-docs.stamp > > + > > # plugin tests > > > > if ENABLE_PLUGIN > > @@ -322,6 +388,7 @@ > > mkdir -p $(BOOT_DIR)/bin stamps/ > > ln -sf $(JAR) $(BOOT_DIR)/bin/jar > > ln -sf $(abs_top_builddir)/javac $(BOOT_DIR)/bin/javac > > + ln -sf $(JAVADOC) $(BOOT_DIR)/bin/javadoc > > mkdir -p $(BOOT_DIR)/jre/lib && \ > > ln -s $(SYSTEM_JDK_DIR)/jre/lib/rt.jar $(BOOT_DIR)/jre/lib && \ > > if [ -e $(SYSTEM_JDK_DIR)/jre/lib/jsse.jar ] ; then \ > > diff -r dcd3d1728ff4 acinclude.m4 > > --- a/acinclude.m4 Wed Nov 24 15:47:50 2010 -0500 > > +++ b/acinclude.m4 Thu Nov 25 17:35:45 2010 +0000 > > @@ -543,3 +543,65 @@ > > AC_MSG_RESULT(${JAVA}) > > AC_SUBST(JAVA) > > ]) > > + > > +AC_DEFUN([IT_FIND_JAVADOC], > > +[ > > + AC_REQUIRE([IT_CHECK_FOR_JDK]) > > + AC_MSG_CHECKING([for javadoc]) > > + AC_ARG_WITH([javadoc], > > + [AS_HELP_STRING(--with-javadoc,specify location of Java documentation tool (javadoc))], > > + [ > > + JAVADOC="${withval}" > > + ], > > + [ > > + JAVADOC=${SYSTEM_JDK_DIR}/bin/javadoc > > + ]) > > + if ! test -f "${JAVADOC}"; then > > + AC_PATH_PROG(JAVADOC, "${JAVADOC}") > > + fi > > + if test -z "${JAVADOC}"; then > > + AC_PATH_PROG(JAVADOC, "javadoc") > > + fi > > + if test -z "${JAVADOC}"; then > > + AC_PATH_PROG(JAVADOC, "gjdoc") > > + fi > > + if test -z "${JAVADOC}" && test "x$ENABLE_DOCS" = "xyes"; then > > + AC_MSG_ERROR("No Java documentation tool was found.") > > + fi > > + AC_MSG_RESULT(${JAVADOC}) > > + AC_MSG_CHECKING([whether javadoc supports -J options]) > > + CLASS=pkg/Test.java > > + mkdir tmp.$$ > > + cd tmp.$$ > > + mkdir pkg > > + cat << \EOF > $CLASS > > +[/* [#]line __oline__ "configure" */ > > +package pkg; > > + > > +public class Test > > +{ > > + /** > > + * Does stuff. > > + * > > + * > > + * @param args arguments from cli. > > + */ > > + public static void main(String[] args) > > + { > > + System.out.println("Hello World!"); > > + } > > +} > > +] > > +EOF > > + if $JAVADOC -J-Xmx896m pkg >&AS_MESSAGE_LOG_FD 2>&1; then > > + JAVADOC_KNOWS_J_OPTIONS=yes > > + else > > + JAVADOC_KNOWS_J_OPTIONS=no > > + fi > > + cd .. > > + rm -rf tmp.$$ > > + AC_MSG_RESULT([${JAVADOC_KNOWS_J_OPTIONS}]) > > + AC_SUBST(JAVADOC) > > + AC_SUBST(JAVADOC_KNOWS_J_OPTIONS) > > + AM_CONDITIONAL([JAVADOC_SUPPORTS_J_OPTIONS], test x"${JAVADOC_KNOWS_J_OPTIONS}" = "xyes") > > +]) > > diff -r dcd3d1728ff4 configure.ac > > --- a/configure.ac Wed Nov 24 15:47:50 2010 -0500 > > +++ b/configure.ac Thu Nov 25 17:35:45 2010 +0000 > > @@ -32,6 +32,7 @@ > > FIND_JAVAC > > FIND_JAR > > FIND_ECJ_JAR > > +IT_FIND_JAVADOC > > AC_CONFIG_FILES([javac], [chmod +x javac]) > > > > IT_GET_PKGVERSION > -- Andrew :) Free Java Software Engineer Red Hat, Inc. (http://www.redhat.com) Support Free Java! Contribute to GNU Classpath and the OpenJDK http://www.gnu.org/software/classpath http://openjdk.java.net PGP Key: 94EFD9D8 (http://subkeys.pgp.net) Fingerprint = F8EF F1EA 401E 2E60 15FA 7927 142C 2591 94EF D9D8 From ahughes at redhat.com Fri Nov 26 07:42:06 2010 From: ahughes at redhat.com (Dr Andrew John Hughes) Date: Fri, 26 Nov 2010 15:42:06 +0000 Subject: [icedtea-web] RFC: Add documentation support In-Reply-To: <4CEFCF58.4070000@redhat.com> References: <20101126151012.GN17602@rivendell.middle-earth.co.uk> <4CEFCF58.4070000@redhat.com> Message-ID: <20101126154206.GQ17602@rivendell.middle-earth.co.uk> On 10:16 Fri 26 Nov , Omair Majid wrote: > On 11/26/2010 10:10 AM, Dr Andrew John Hughes wrote: > > This adds API docs for the NetX and plugin packages, as promised > > yesterday. We did do this before (it lurked deep in a patch to > > the OpenJDK build) but I've expanded it to also cover the NetX > > classes (which are quite well-documented) and the plugin. > > > > I haven't covered this in the patch, but we should also be installing > > the architecture documentation provided by Deepak. > > > > Thanks for the patch! > > Any chance that all these docs can be made available at (say,) > http://icedtea.classpath.org/ ? > Sure! That's a great idea! We'll put up the ones for 1.0 once it's released. > Cheers, > Omair -- Andrew :) Free Java Software Engineer Red Hat, Inc. (http://www.redhat.com) Support Free Java! Contribute to GNU Classpath and the OpenJDK http://www.gnu.org/software/classpath http://openjdk.java.net PGP Key: 94EFD9D8 (http://subkeys.pgp.net) Fingerprint = F8EF F1EA 401E 2E60 15FA 7927 142C 2591 94EF D9D8 From ptisnovs at redhat.com Fri Nov 26 10:41:05 2010 From: ptisnovs at redhat.com (Pavel Tisnovsky) Date: Fri, 26 Nov 2010 19:41:05 +0100 Subject: Reviewer needed - fix for regression test java/awt/Insets/WindowWithWarningTest/WindowWithWarning Message-ID: <4CEFFF41.7070400@redhat.com> Hi all, can anyone please review fix for regression test java/awt/Insets/WindowWithWarningTest/WindowWithWarning? Mercurial export for IcedTea6 HEAD (1.10pre) is included in this mail as attachment. Description of the fix: This test must be run in an environment similar to sandbox used for running regular applets, which among other things means that each window created by the test itself has to be labelled by warning message "Java Applet Window". But for the test to (probably successfuly) proceed it is also required that AWT Robot is enabled (and it is disabled by default for applets, which reasonable, of course). To guarantee both conditions to run this test I copied system security policy file, added new line to enable AWT robot and then configured the test itself to use this policy file, because JTreg harness usually starts such tests (applets) without security manager installed. PS: I've made this fix with great help of Andrew, Deepak and Omair - thank you very much colleagues! Cheers Pavel -------------- next part -------------- An embedded and charset-unspecified text was scrubbed... Name: hg_export Url: http://mail.openjdk.java.net/pipermail/distro-pkg-dev/attachments/20101126/00701744/hg_export.ksh From asu at redhat.com Fri Nov 26 13:11:53 2010 From: asu at redhat.com (Andrew Su) Date: Fri, 26 Nov 2010 16:11:53 -0500 (EST) Subject: [RFC][icedtea-web]: Adding control panel to icedtea-web In-Reply-To: <619585353.556241290805830632.JavaMail.root@zmail01.collab.prod.int.phx2.redhat.com> Message-ID: <670901322.556301290805913094.JavaMail.root@zmail01.collab.prod.int.phx2.redhat.com> Hello, I have attached a patch to add a control panel for icedtea-web. This can be used to modify deployments.properties. Current features: - Enable/Disable caching. - Set cache location. - Set max space cache may use. (in MB) - Set compression level of jar files. - Import/View/Export/Remove certificates. - Turn tracing on/off. - Turn debugging on/off. - Set behaviour of Java Console. - Set whether to create desktop shortcut for javaws or not. - Set proxy settings. - Set how security warning behaviours. ChangeLog: * Makefile.am: (CONTROLPANEL_DIR): Build directory for control panel. (CONTROLPANEL_SRCDIR): Source directory for control panel. (CONTROLPANEL_LAUNCHER_OBJECTS): Objects used to compile binary control panel. (all-local): Add stamps/controlpanel-dist.stamp stamps/controlpanel.stamp $(CONTROLPANEL_DIR)/launcher/controlpanel. (clean-local): Add clean-controlpanel. (install-exec-local): Install the control panel jar file and control panel binary. (uninstall-local): Delete controlpanel.jar and controlpanel binary from installed location. (controlpanel-source-files.txt): Get the list of source files for control panel. (stamps/controlpanel.stamp): Compile the java files for control panel. (stamps/controlpanel-dist.stamp): Depend on stamps/controlpanel.stamp. Create the jar file for control panel. ($(CONTROLPANEL_DIR)/launcher/%.o): Create the launcher objects. ($(CONTROLPANEL_DIR)/launcher/controlpanel): Link the objects to make the launcher. (clean-controlpanel): Remove the compiled control panel. (controlpanel): Calls stamps/controlpanel.stamp. (controlpanel-dist): Calls stamps/controlpanel-dist.stamp. * controlpanel/org/classpath/controlpanel/AboutPanel.java, * controlpanel/org/classpath/controlpanel/ComboItem.java, * controlpanel/org/classpath/controlpanel/ControlPanel.java, * controlpanel/org/classpath/controlpanel/DebuggingPanel.java, * controlpanel/org/classpath/controlpanel/DesktopShortcutPanel.java, * controlpanel/org/classpath/controlpanel/JREPanel.java, * controlpanel/org/classpath/controlpanel/NamedBorderPanel.java, * controlpanel/org/classpath/controlpanel/SecuritySettingsPanel.java, * controlpanel/org/classpath/controlpanel/TemporaryInternetFilesPanel.java, * controlpanel/org/classpath/controlpanel/network/AdvancedProxySettingsDialog.java, * controlpanel/org/classpath/controlpanel/network/AdvancedProxySettingsPane.java, * controlpanel/org/classpath/controlpanel/network/NetworkSettingsPanel.java, * controlpanel/org/classpath/controlpanel/security/viewer/CertificatePane.java, * controlpanel/org/classpath/controlpanel/security/viewer/CertificateViewer.java, * controlpanel/org/classpath/controlpanel/translator/Translator.java: New classes. All methods are new as well. * netx/net/sourceforge/jnlp/resources/Messages.properties: Added messages for control panel. Comments? Question? Concerns? Cheers, Andrew -------------- next part -------------- A non-text attachment was scrubbed... Name: 20101126_add_control_panel.patch Type: text/x-patch Size: 107613 bytes Desc: not available Url : http://mail.openjdk.java.net/pipermail/distro-pkg-dev/attachments/20101126/f57ab93a/20101126_add_control_panel.patch From dbhole at redhat.com Fri Nov 26 13:28:17 2010 From: dbhole at redhat.com (Deepak Bhole) Date: Fri, 26 Nov 2010 16:28:17 -0500 Subject: [RFC][icedtea-web]: Adding control panel to icedtea-web In-Reply-To: <670901322.556301290805913094.JavaMail.root@zmail01.collab.prod.int.phx2.redhat.com> References: <619585353.556241290805830632.JavaMail.root@zmail01.collab.prod.int.phx2.redhat.com> <670901322.556301290805913094.JavaMail.root@zmail01.collab.prod.int.phx2.redhat.com> Message-ID: <20101126212816.GA10699@redhat.com> Hi Andrew, * Andrew Su [2010-11-26 16:12]: > Hello, > > I have attached a patch to add a control panel for icedtea-web. This can be used to modify deployments.properties. > > Current features: > - Enable/Disable caching. > - Set cache location. > - Set max space cache may use. (in MB) > - Set compression level of jar files. > - Import/View/Export/Remove certificates. > - Turn tracing on/off. > - Turn debugging on/off. > - Set behaviour of Java Console. > - Set whether to create desktop shortcut for javaws or not. > - Set proxy settings. > - Set how security warning behaviours. > > + > +$(CONTROLPANEL_DIR)/launcher/%.o: $(LAUNCHER_SRCDIR)/%.c > + mkdir -p $(CONTROLPANEL_DIR)/launcher && \ > + $(CC) $(LAUNCHER_FLAGS) -DJAVA_ARGS='{ "-Xbootclasspath/a:$(DESTDIR)$(prefix)/jre/lib/controlpanel.jar", "-J-ms8m", "org.classpath.controlpanel.ControlPanel", }' -DPROGNAME="controlpanel" \ > + -c -o $@ $< > + Why does the controlpanel jar need to be on the bootclasspath? Just on normal classpath should do.. > +$(CONTROLPANEL_DIR)/launcher/controlpanel: $(CONTROLPANEL_LAUNCHER_OBJECTS) > + mkdir -p launcher > + $(CC) $(CONTROLPANEL_LAUNCHER_OBJECTS) $(LAUNCHER_LINK) > + > + for (int j = 0; j < javaConsoleItems.length; j++) { > + javaConsoleItems[j].setProperty("deployment.console.startup.mode"); I thought all property names had been stringified.. is that not the case? > + consoleComboBox.addItem(javaConsoleItems[j]); > + if (config.getProperty(javaConsoleItems[j].getProperty()).equals(javaConsoleItems[j].getValue())) consoleComboBox.setSelectedIndex(j); > + } > + consoleComboBox.addItemListener(this); > + add(consolePanel, c); > + } > + > + * > + */ > + at SuppressWarnings("serial") > +public class SecuritySettingsPanel extends NamedBorderPanel implements ActionListener { > + > + private DeploymentConfiguration config; > + > + // NOTE: All the ones listed with "Default" are in Oracle's implementation. > + // Not shown on deployments.properties webpage. Add support for these later! > + /** List of properties used by this panel */ > + private String[] properties = { "deployment.security.askgrantdialog.show", > + "deployment.security.askgrantdialog.notinca", > + "deployment.security.browser.keystore.use", // default TRUE > + "deployment.security.clientauth.keystore.auto", // Default FALSE > + "deployment.security.jsse.hostmismatch.warning", > + "deployment.security.https.warning.show", // Default FALSE > + "deployment.security.sandbox.awtwarningwindow", > + "deployment.security.sandbox.jnlp.enhanced", > + "deployment.security.validation.crl", // Default TRUE > + "deployment.security.validation.ocsp", // Default FALSE > + "deployment.security.pretrust.list", // Default TRUE > + "deployment.security.blacklist.check", // Default TRUE > + "deployment.security.password.cache", // Default TRUE > + "deployment.security.SSLv2Hello", // Default FALSE > + "deployment.security.SSLv3", // Default TRUE > + "deployment.security.TLSv1", // Default TRUE > +// "deployment.security.mixcode", // Default TRUE > + }; > + The above should definitely be made static strings. > + public SecuritySettingsPanel(DeploymentConfiguration config) { > + super(Translator.R("CPHeadSecurity"), new BorderLayout()); > + this.config = config; > + > + addComponents(); > + } > + The java files are also missing copyright headers. They need to be added, and the dates for copied files (like Cert*java) needs to be updated toi (i.e. make it 2008 -> 2008,2010). Please also add more comments (atleast per class) stating what they do. Cheers, Deepak From omajid at redhat.com Fri Nov 26 13:49:22 2010 From: omajid at redhat.com (Omair Majid) Date: Fri, 26 Nov 2010 16:49:22 -0500 Subject: [RFC][icedtea-web]: Adding control panel to icedtea-web In-Reply-To: <670901322.556301290805913094.JavaMail.root@zmail01.collab.prod.int.phx2.redhat.com> References: <670901322.556301290805913094.JavaMail.root@zmail01.collab.prod.int.phx2.redhat.com> Message-ID: <4CF02B62.2050009@redhat.com> On 11/26/2010 04:11 PM, Andrew Su wrote: > Hello, > > I have attached a patch to add a control panel for icedtea-web. This can be used to modify deployments.properties. > > Current features: > - Enable/Disable caching. > - Set cache location. > - Set max space cache may use. (in MB) > - Set compression level of jar files. > - Import/View/Export/Remove certificates. > - Turn tracing on/off. > - Turn debugging on/off. > - Set behaviour of Java Console. > - Set whether to create desktop shortcut for javaws or not. > - Set proxy settings. > - Set how security warning behaviours. > > ChangeLog: > > * Makefile.am: > (CONTROLPANEL_DIR): Build directory for control panel. > (CONTROLPANEL_SRCDIR): Source directory for control panel. > (CONTROLPANEL_LAUNCHER_OBJECTS): Objects used to compile binary > control panel. > (all-local): Add stamps/controlpanel-dist.stamp > stamps/controlpanel.stamp $(CONTROLPANEL_DIR)/launcher/controlpanel. > (clean-local): Add clean-controlpanel. > (install-exec-local): Install the control panel jar file and control > panel binary. > (uninstall-local): Delete controlpanel.jar and controlpanel binary > from installed location. > (controlpanel-source-files.txt): Get the list of source files for > control panel. > (stamps/controlpanel.stamp): Compile the java files for control panel. > (stamps/controlpanel-dist.stamp): Depend on stamps/controlpanel.stamp. > Create the jar file for control panel. > ($(CONTROLPANEL_DIR)/launcher/%.o): Create the launcher objects. > ($(CONTROLPANEL_DIR)/launcher/controlpanel): Link the objects to make > the launcher. > (clean-controlpanel): Remove the compiled control panel. > (controlpanel): Calls stamps/controlpanel.stamp. > (controlpanel-dist): Calls stamps/controlpanel-dist.stamp. > * controlpanel/org/classpath/controlpanel/AboutPanel.java, > * controlpanel/org/classpath/controlpanel/ComboItem.java, > * controlpanel/org/classpath/controlpanel/ControlPanel.java, > * controlpanel/org/classpath/controlpanel/DebuggingPanel.java, > * controlpanel/org/classpath/controlpanel/DesktopShortcutPanel.java, > * controlpanel/org/classpath/controlpanel/JREPanel.java, > * controlpanel/org/classpath/controlpanel/NamedBorderPanel.java, > * controlpanel/org/classpath/controlpanel/SecuritySettingsPanel.java, > * controlpanel/org/classpath/controlpanel/TemporaryInternetFilesPanel.java, > * controlpanel/org/classpath/controlpanel/network/AdvancedProxySettingsDialog.java, > * controlpanel/org/classpath/controlpanel/network/AdvancedProxySettingsPane.java, > * controlpanel/org/classpath/controlpanel/network/NetworkSettingsPanel.java, > * controlpanel/org/classpath/controlpanel/security/viewer/CertificatePane.java, > * controlpanel/org/classpath/controlpanel/security/viewer/CertificateViewer.java, > * controlpanel/org/classpath/controlpanel/translator/Translator.java: > New classes. All methods are new as well. > * netx/net/sourceforge/jnlp/resources/Messages.properties: Added > messages for control panel. > > Comments? Question? Concerns? > A few quick thoughts are listed below. Please dont let any of that discourage you. These are all thing that should be improved. But what you have so far is great work. It's just not perfect yet ;) We really needed something like this in netx/plugin though. Thanks for doing this! 1. Some of these settings dont do anything yet, right? I am looking at the cache stuff here. Perhaps you might want to leave it out for now, or clearly indicate that it does not do anything. 2. Why does the binary have the name controlpanel? I dont really care about the name itself, but if you are going to make it so close to the one used by proprietary JDK, why not just call it ControlPanel? 3. We should look into adding a desktop file so users would be able to launch it from the menu. 4. It is customary to have the package names be representative of the url. IcedTea is under the url icedtea.classpath.org. So itt would make a lot more sense to use org.classpath.icedtea.* rather than org.classpath.*. 5. Please get rid of CertificateViewer. CertificatePanel should be moved to org.classpath.controlpanel, along with the rest of the classes. 6. Please dont create copies of classes. There is already a translator class in netx. The new Translator class still has a dependency on JNLPRuntime, so I really dont see the point of duplicating it. Personally I think it would be best if we separate the user-visible strings in ControlPanel from those in netx. We should have a separate properties file in control panel. Then the translator class would not be an exact duplicate (since it would read strings from another location). 7. Typo in the patch to ChangeLog: + (load): Do a security check at start. * security exception 8. Nice work on the launcher! The -Xbootclasspath way avoids adding redundant things to boot classpath. 9. I see that some files list asu as the author. Please use your full name (and email address) instead. 10. You know you can do static imports right? Something like import static org.classpath.controlpanel.translator.Translator.R would mean you can just do R("foo") instead of Translator.R everytime. This is more of a style thing, so feel free to ignore it. Anyway, this looks great as a start! Thanks again for doing this. Cheers, Omair From dbhole at redhat.com Fri Nov 26 13:56:41 2010 From: dbhole at redhat.com (Deepak Bhole) Date: Fri, 26 Nov 2010 16:56:41 -0500 Subject: [RFC][icedtea-web]: Adding control panel to icedtea-web In-Reply-To: <4CF02B62.2050009@redhat.com> References: <670901322.556301290805913094.JavaMail.root@zmail01.collab.prod.int.phx2.redhat.com> <4CF02B62.2050009@redhat.com> Message-ID: <20101126215640.GB10699@redhat.com> * Omair Majid [2010-11-26 16:51]: > On 11/26/2010 04:11 PM, Andrew Su wrote: > >Hello, > > > >I have attached a patch to add a control panel for icedtea-web. This can be used to modify deployments.properties. > > > >Current features: > > - Enable/Disable caching. > > - Set cache location. > > - Set max space cache may use. (in MB) > > - Set compression level of jar files. > > - Import/View/Export/Remove certificates. > > - Turn tracing on/off. > > - Turn debugging on/off. > > - Set behaviour of Java Console. > > - Set whether to create desktop shortcut for javaws or not. > > - Set proxy settings. > > - Set how security warning behaviours. > > > >ChangeLog: > > > > * Makefile.am: > > (CONTROLPANEL_DIR): Build directory for control panel. > > (CONTROLPANEL_SRCDIR): Source directory for control panel. > > (CONTROLPANEL_LAUNCHER_OBJECTS): Objects used to compile binary > > control panel. > > (all-local): Add stamps/controlpanel-dist.stamp > > stamps/controlpanel.stamp $(CONTROLPANEL_DIR)/launcher/controlpanel. > > (clean-local): Add clean-controlpanel. > > (install-exec-local): Install the control panel jar file and control > > panel binary. > > (uninstall-local): Delete controlpanel.jar and controlpanel binary > > from installed location. > > (controlpanel-source-files.txt): Get the list of source files for > > control panel. > > (stamps/controlpanel.stamp): Compile the java files for control panel. > > (stamps/controlpanel-dist.stamp): Depend on stamps/controlpanel.stamp. > > Create the jar file for control panel. > > ($(CONTROLPANEL_DIR)/launcher/%.o): Create the launcher objects. > > ($(CONTROLPANEL_DIR)/launcher/controlpanel): Link the objects to make > > the launcher. > > (clean-controlpanel): Remove the compiled control panel. > > (controlpanel): Calls stamps/controlpanel.stamp. > > (controlpanel-dist): Calls stamps/controlpanel-dist.stamp. > > * controlpanel/org/classpath/controlpanel/AboutPanel.java, > > * controlpanel/org/classpath/controlpanel/ComboItem.java, > > * controlpanel/org/classpath/controlpanel/ControlPanel.java, > > * controlpanel/org/classpath/controlpanel/DebuggingPanel.java, > > * controlpanel/org/classpath/controlpanel/DesktopShortcutPanel.java, > > * controlpanel/org/classpath/controlpanel/JREPanel.java, > > * controlpanel/org/classpath/controlpanel/NamedBorderPanel.java, > > * controlpanel/org/classpath/controlpanel/SecuritySettingsPanel.java, > > * controlpanel/org/classpath/controlpanel/TemporaryInternetFilesPanel.java, > > * controlpanel/org/classpath/controlpanel/network/AdvancedProxySettingsDialog.java, > > * controlpanel/org/classpath/controlpanel/network/AdvancedProxySettingsPane.java, > > * controlpanel/org/classpath/controlpanel/network/NetworkSettingsPanel.java, > > * controlpanel/org/classpath/controlpanel/security/viewer/CertificatePane.java, > > * controlpanel/org/classpath/controlpanel/security/viewer/CertificateViewer.java, > > * controlpanel/org/classpath/controlpanel/translator/Translator.java: > > New classes. All methods are new as well. > > * netx/net/sourceforge/jnlp/resources/Messages.properties: Added > > messages for control panel. > > > >Comments? Question? Concerns? > > > > A few quick thoughts are listed below. Please dont let any of that > discourage you. These are all thing that should be improved. But > what you have so far is great work. It's just not perfect yet ;) We > really needed something like this in netx/plugin though. Thanks for > doing this! > > 1. Some of these settings dont do anything yet, right? I am looking > at the cache stuff here. Perhaps you might want to leave it out for > now, or clearly indicate that it does not do anything. > > 2. Why does the binary have the name controlpanel? I dont really > care about the name itself, but if you are going to make it so close > to the one used by proprietary JDK, why not just call it > ControlPanel? > Good point. Are there any other name suggestions? I will start off with my terrible suggestion :) .. "icedtea-settings" Deepak > 3. We should look into adding a desktop file so users would be able > to launch it from the menu. > > 4. It is customary to have the package names be representative of > the url. IcedTea is under the url icedtea.classpath.org. So itt > would make a lot more sense to use org.classpath.icedtea.* rather > than org.classpath.*. > > 5. Please get rid of CertificateViewer. CertificatePanel should be > moved to org.classpath.controlpanel, along with the rest of the > classes. > > 6. Please dont create copies of classes. There is already a > translator class in netx. The new Translator class still has a > dependency on JNLPRuntime, so I really dont see the point of > duplicating it. Personally I think it would be best if we separate > the user-visible strings in ControlPanel from those in netx. We > should have a separate properties file in control panel. Then the > translator class would not be an exact duplicate (since it would > read strings from another location). > > 7. Typo in the patch to ChangeLog: > + (load): Do a security check at start. * security exception > > 8. Nice work on the launcher! The -Xbootclasspath way avoids adding > redundant things to boot classpath. > > 9. I see that some files list asu as the author. Please use your > full name (and email address) instead. > > 10. You know you can do static imports right? Something like > import static org.classpath.controlpanel.translator.Translator.R > would mean you can just do R("foo") instead of Translator.R > everytime. This is more of a style thing, so feel free to ignore it. > > Anyway, this looks great as a start! Thanks again for doing this. > > Cheers, > Omair From omajid at redhat.com Fri Nov 26 13:58:02 2010 From: omajid at redhat.com (Omair Majid) Date: Fri, 26 Nov 2010 16:58:02 -0500 Subject: [RFC][icedtea-web]: Adding control panel to icedtea-web In-Reply-To: <20101126215640.GB10699@redhat.com> References: <670901322.556301290805913094.JavaMail.root@zmail01.collab.prod.int.phx2.redhat.com> <4CF02B62.2050009@redhat.com> <20101126215640.GB10699@redhat.com> Message-ID: <4CF02D6A.2090802@redhat.com> On 11/26/2010 04:56 PM, Deepak Bhole wrote: > * Omair Majid [2010-11-26 16:51]: >> On 11/26/2010 04:11 PM, Andrew Su wrote: >>> Hello, >>> >>> I have attached a patch to add a control panel for icedtea-web. This can be used to modify deployments.properties. >>> >>> Current features: >>> - Enable/Disable caching. >>> - Set cache location. >>> - Set max space cache may use. (in MB) >>> - Set compression level of jar files. >>> - Import/View/Export/Remove certificates. >>> - Turn tracing on/off. >>> - Turn debugging on/off. >>> - Set behaviour of Java Console. >>> - Set whether to create desktop shortcut for javaws or not. >>> - Set proxy settings. >>> - Set how security warning behaviours. >>> >>> ChangeLog: >>> >>> * Makefile.am: >>> (CONTROLPANEL_DIR): Build directory for control panel. >>> (CONTROLPANEL_SRCDIR): Source directory for control panel. >>> (CONTROLPANEL_LAUNCHER_OBJECTS): Objects used to compile binary >>> control panel. >>> (all-local): Add stamps/controlpanel-dist.stamp >>> stamps/controlpanel.stamp $(CONTROLPANEL_DIR)/launcher/controlpanel. >>> (clean-local): Add clean-controlpanel. >>> (install-exec-local): Install the control panel jar file and control >>> panel binary. >>> (uninstall-local): Delete controlpanel.jar and controlpanel binary >>> from installed location. >>> (controlpanel-source-files.txt): Get the list of source files for >>> control panel. >>> (stamps/controlpanel.stamp): Compile the java files for control panel. >>> (stamps/controlpanel-dist.stamp): Depend on stamps/controlpanel.stamp. >>> Create the jar file for control panel. >>> ($(CONTROLPANEL_DIR)/launcher/%.o): Create the launcher objects. >>> ($(CONTROLPANEL_DIR)/launcher/controlpanel): Link the objects to make >>> the launcher. >>> (clean-controlpanel): Remove the compiled control panel. >>> (controlpanel): Calls stamps/controlpanel.stamp. >>> (controlpanel-dist): Calls stamps/controlpanel-dist.stamp. >>> * controlpanel/org/classpath/controlpanel/AboutPanel.java, >>> * controlpanel/org/classpath/controlpanel/ComboItem.java, >>> * controlpanel/org/classpath/controlpanel/ControlPanel.java, >>> * controlpanel/org/classpath/controlpanel/DebuggingPanel.java, >>> * controlpanel/org/classpath/controlpanel/DesktopShortcutPanel.java, >>> * controlpanel/org/classpath/controlpanel/JREPanel.java, >>> * controlpanel/org/classpath/controlpanel/NamedBorderPanel.java, >>> * controlpanel/org/classpath/controlpanel/SecuritySettingsPanel.java, >>> * controlpanel/org/classpath/controlpanel/TemporaryInternetFilesPanel.java, >>> * controlpanel/org/classpath/controlpanel/network/AdvancedProxySettingsDialog.java, >>> * controlpanel/org/classpath/controlpanel/network/AdvancedProxySettingsPane.java, >>> * controlpanel/org/classpath/controlpanel/network/NetworkSettingsPanel.java, >>> * controlpanel/org/classpath/controlpanel/security/viewer/CertificatePane.java, >>> * controlpanel/org/classpath/controlpanel/security/viewer/CertificateViewer.java, >>> * controlpanel/org/classpath/controlpanel/translator/Translator.java: >>> New classes. All methods are new as well. >>> * netx/net/sourceforge/jnlp/resources/Messages.properties: Added >>> messages for control panel. >>> >>> Comments? Question? Concerns? >>> >> >> A few quick thoughts are listed below. Please dont let any of that >> discourage you. These are all thing that should be improved. But >> what you have so far is great work. It's just not perfect yet ;) We >> really needed something like this in netx/plugin though. Thanks for >> doing this! >> >> 1. Some of these settings dont do anything yet, right? I am looking >> at the cache stuff here. Perhaps you might want to leave it out for >> now, or clearly indicate that it does not do anything. >> >> 2. Why does the binary have the name controlpanel? I dont really >> care about the name itself, but if you are going to make it so close >> to the one used by proprietary JDK, why not just call it >> ControlPanel? >> > > Good point. Are there any other name suggestions? I will start off with > my terrible suggestion :) .. "icedtea-settings" > Certainly you meant icedtea-web-settings ;) Cheers, Omair From asu at redhat.com Fri Nov 26 13:59:59 2010 From: asu at redhat.com (Andrew Su) Date: Fri, 26 Nov 2010 16:59:59 -0500 (EST) Subject: [RFC][icedtea-web]: Adding control panel to icedtea-web In-Reply-To: <1698149220.556701290808577103.JavaMail.root@zmail01.collab.prod.int.phx2.redhat.com> Message-ID: <1950259370.556811290808799406.JavaMail.root@zmail01.collab.prod.int.phx2.redhat.com> Hello Deepak, ----- "Deepak Bhole" wrote: > From: "Deepak Bhole" > To: "Andrew Su" > Cc: distro-pkg-dev at openjdk.java.net > Sent: Friday, November 26, 2010 4:28:17 PM GMT -05:00 US/Canada Eastern > Subject: Re: [RFC][icedtea-web]: Adding control panel to icedtea-web > > Hi Andrew, > > * Andrew Su [2010-11-26 16:12]: > > Hello, > > > > I have attached a patch to add a control panel for icedtea-web. This > can be used to modify deployments.properties. > > > > Current features: > > - Enable/Disable caching. > > - Set cache location. > > - Set max space cache may use. (in MB) > > - Set compression level of jar files. > > - Import/View/Export/Remove certificates. > > - Turn tracing on/off. > > - Turn debugging on/off. > > - Set behaviour of Java Console. > > - Set whether to create desktop shortcut for javaws or not. > > - Set proxy settings. > > - Set how security warning behaviours. > > > > > + > > +$(CONTROLPANEL_DIR)/launcher/%.o: $(LAUNCHER_SRCDIR)/%.c > > + mkdir -p $(CONTROLPANEL_DIR)/launcher && \ > > + $(CC) $(LAUNCHER_FLAGS) -DJAVA_ARGS='{ > "-Xbootclasspath/a:$(DESTDIR)$(prefix)/jre/lib/controlpanel.jar", > "-J-ms8m", "org.classpath.controlpanel.ControlPanel", }' > -DPROGNAME="controlpanel" \ > > + -c -o $@ $< > > + > > Why does the controlpanel jar need to be on the bootclasspath? Just > on > normal classpath should do.. Using just classpath for the controlpanel will cause it to throw security exceptions from JNLPRuntime.initialize(). > > > +$(CONTROLPANEL_DIR)/launcher/controlpanel: > $(CONTROLPANEL_LAUNCHER_OBJECTS) > > + mkdir -p launcher > > + $(CC) $(CONTROLPANEL_LAUNCHER_OBJECTS) $(LAUNCHER_LINK) > > + > > > + for (int j = 0; j < > javaConsoleItems.length; j++) { > > + > javaConsoleItems[j].setProperty("deployment.console.startup.mode"); > > > I thought all property names had been stringified.. is that not the > case? This is to get the proper properties that this item in the combobox affects. Having it set the property is so that in the case we do say, add a new combobox we can reuse the listener without having to add to that. > > > + > consoleComboBox.addItem(javaConsoleItems[j]); > > + if > (config.getProperty(javaConsoleItems[j].getProperty()).equals(javaConsoleItems[j].getValue())) > consoleComboBox.setSelectedIndex(j); > > + } > > + consoleComboBox.addItemListener(this); > > + add(consolePanel, c); > > + } > > + > > > + * > > + */ > > + at SuppressWarnings("serial") > > +public class SecuritySettingsPanel extends NamedBorderPanel > implements ActionListener { > > + > > + private DeploymentConfiguration config; > > + > > + // NOTE: All the ones listed with "Default" are in Oracle's > implementation. > > + // Not shown on deployments.properties webpage. Add support for > these later! > > + /** List of properties used by this panel */ > > + private String[] properties = { > "deployment.security.askgrantdialog.show", > > + "deployment.security.askgrantdialog.notinca", > > + "deployment.security.browser.keystore.use", // default > TRUE > > + "deployment.security.clientauth.keystore.auto", // > Default FALSE > > + "deployment.security.jsse.hostmismatch.warning", > > + "deployment.security.https.warning.show", // Default > FALSE > > + "deployment.security.sandbox.awtwarningwindow", > > + "deployment.security.sandbox.jnlp.enhanced", > > + "deployment.security.validation.crl", // Default TRUE > > + "deployment.security.validation.ocsp", // Default > FALSE > > + "deployment.security.pretrust.list", // Default TRUE > > + "deployment.security.blacklist.check", // Default TRUE > > + "deployment.security.password.cache", // Default TRUE > > + "deployment.security.SSLv2Hello", // Default FALSE > > + "deployment.security.SSLv3", // Default TRUE > > + "deployment.security.TLSv1", // Default TRUE > > +// "deployment.security.mixcode", // Default TRUE > > + }; > > + > > The above should definitely be made static strings. > > > + public SecuritySettingsPanel(DeploymentConfiguration config) { > > + super(Translator.R("CPHeadSecurity"), new BorderLayout()); > > + this.config = config; > > + > > + addComponents(); > > + } > > + > > The java files are also missing copyright headers. They need to be > added, and the dates for copied files (like Cert*java) needs to be > updated toi (i.e. make it 2008 -> 2008,2010). > > Please also add more comments (atleast per class) stating what they > do. Will do these changes. > > Cheers, > Deepak Thanks for looking it over. Cheers, Andrew From dbhole at redhat.com Fri Nov 26 14:06:23 2010 From: dbhole at redhat.com (Deepak Bhole) Date: Fri, 26 Nov 2010 17:06:23 -0500 Subject: [RFC][icedtea-web]: Adding control panel to icedtea-web In-Reply-To: <1950259370.556811290808799406.JavaMail.root@zmail01.collab.prod.int.phx2.redhat.com> References: <1698149220.556701290808577103.JavaMail.root@zmail01.collab.prod.int.phx2.redhat.com> <1950259370.556811290808799406.JavaMail.root@zmail01.collab.prod.int.phx2.redhat.com> Message-ID: <20101126220622.GC10699@redhat.com> * Andrew Su [2010-11-26 16:59]: > Hello Deepak, > > > ----- "Deepak Bhole" wrote: > > > From: "Deepak Bhole" > > To: "Andrew Su" > > Cc: distro-pkg-dev at openjdk.java.net > > Sent: Friday, November 26, 2010 4:28:17 PM GMT -05:00 US/Canada Eastern > > Subject: Re: [RFC][icedtea-web]: Adding control panel to icedtea-web > > > > Hi Andrew, > > > > * Andrew Su [2010-11-26 16:12]: > > > Hello, > > > > > > I have attached a patch to add a control panel for icedtea-web. This > > can be used to modify deployments.properties. > > > > > > Current features: > > > - Enable/Disable caching. > > > - Set cache location. > > > - Set max space cache may use. (in MB) > > > - Set compression level of jar files. > > > - Import/View/Export/Remove certificates. > > > - Turn tracing on/off. > > > - Turn debugging on/off. > > > - Set behaviour of Java Console. > > > - Set whether to create desktop shortcut for javaws or not. > > > - Set proxy settings. > > > - Set how security warning behaviours. > > > > > > > > + > > > +$(CONTROLPANEL_DIR)/launcher/%.o: $(LAUNCHER_SRCDIR)/%.c > > > + mkdir -p $(CONTROLPANEL_DIR)/launcher && \ > > > + $(CC) $(LAUNCHER_FLAGS) -DJAVA_ARGS='{ > > "-Xbootclasspath/a:$(DESTDIR)$(prefix)/jre/lib/controlpanel.jar", > > "-J-ms8m", "org.classpath.controlpanel.ControlPanel", }' > > -DPROGNAME="controlpanel" \ > > > + -c -o $@ $< > > > + > > > > Why does the controlpanel jar need to be on the bootclasspath? Just > > on > > normal classpath should do.. > Using just classpath for the controlpanel will cause it to throw security exceptions from JNLPRuntime.initialize(). > Ah fair enough. Okay then we can leave it as bootclasspath. > > > > > +$(CONTROLPANEL_DIR)/launcher/controlpanel: > > $(CONTROLPANEL_LAUNCHER_OBJECTS) > > > + mkdir -p launcher > > > + $(CC) $(CONTROLPANEL_LAUNCHER_OBJECTS) $(LAUNCHER_LINK) > > > + > > > > > + for (int j = 0; j < > > javaConsoleItems.length; j++) { > > > + > > javaConsoleItems[j].setProperty("deployment.console.startup.mode"); > > > > > > I thought all property names had been stringified.. is that not the > > case? > This is to get the proper properties that this item in the combobox affects. > Having it set the property is so that in the case we do say, add a new combobox we can reuse the listener without having to > add to that. > No meant the property name string, "deployment.console.startup.mode" in this case... I thought we had strings for each of the name, but looking at net/sourceforge/jnlp/runtime/DeploymentConfiguration.java, I see that that is not the case. So nevermind in that case :) > > > > > + > > consoleComboBox.addItem(javaConsoleItems[j]); > > > + if > > (config.getProperty(javaConsoleItems[j].getProperty()).equals(javaConsoleItems[j].getValue())) > > consoleComboBox.setSelectedIndex(j); > > > + } > > > + consoleComboBox.addItemListener(this); > > > + add(consolePanel, c); > > > + } > > > + > > > > > + * > > > + */ > > > + at SuppressWarnings("serial") > > > +public class SecuritySettingsPanel extends NamedBorderPanel > > implements ActionListener { > > > + > > > + private DeploymentConfiguration config; > > > + > > > + // NOTE: All the ones listed with "Default" are in Oracle's > > implementation. > > > + // Not shown on deployments.properties webpage. Add support for > > these later! > > > + /** List of properties used by this panel */ > > > + private String[] properties = { > > "deployment.security.askgrantdialog.show", > > > + "deployment.security.askgrantdialog.notinca", > > > + "deployment.security.browser.keystore.use", // default > > TRUE > > > + "deployment.security.clientauth.keystore.auto", // > > Default FALSE > > > + "deployment.security.jsse.hostmismatch.warning", > > > + "deployment.security.https.warning.show", // Default > > FALSE > > > + "deployment.security.sandbox.awtwarningwindow", > > > + "deployment.security.sandbox.jnlp.enhanced", > > > + "deployment.security.validation.crl", // Default TRUE > > > + "deployment.security.validation.ocsp", // Default > > FALSE > > > + "deployment.security.pretrust.list", // Default TRUE > > > + "deployment.security.blacklist.check", // Default TRUE > > > + "deployment.security.password.cache", // Default TRUE > > > + "deployment.security.SSLv2Hello", // Default FALSE > > > + "deployment.security.SSLv3", // Default TRUE > > > + "deployment.security.TLSv1", // Default TRUE > > > +// "deployment.security.mixcode", // Default TRUE > > > + }; > > > + > > > > The above should definitely be made static strings. > > > > > + public SecuritySettingsPanel(DeploymentConfiguration config) { > > > + super(Translator.R("CPHeadSecurity"), new BorderLayout()); > > > + this.config = config; > > > + > > > + addComponents(); > > > + } > > > + > > > > The java files are also missing copyright headers. They need to be > > added, and the dates for copied files (like Cert*java) needs to be > > updated toi (i.e. make it 2008 -> 2008,2010). > > > > Please also add more comments (atleast per class) stating what they > > do. > Will do these changes. > > > > > Cheers, > > Deepak > > Thanks for looking it over. Thank YOU for writing it! Nice work! :) Deepak > > Cheers, > Andrew From asu at redhat.com Fri Nov 26 14:29:21 2010 From: asu at redhat.com (Andrew Su) Date: Fri, 26 Nov 2010 17:29:21 -0500 (EST) Subject: [RFC][icedtea-web]: Adding control panel to icedtea-web In-Reply-To: <1831871443.557191290809785750.JavaMail.root@zmail01.collab.prod.int.phx2.redhat.com> Message-ID: <489168816.557811290810561602.JavaMail.root@zmail01.collab.prod.int.phx2.redhat.com> ----- "Omair Majid" wrote: > From: "Omair Majid" > To: "Andrew Su" > Cc: distro-pkg-dev at openjdk.java.net > Sent: Friday, November 26, 2010 4:49:22 PM GMT -05:00 US/Canada Eastern > Subject: Re: [RFC][icedtea-web]: Adding control panel to icedtea-web > > On 11/26/2010 04:11 PM, Andrew Su wrote: > > Hello, > > > > I have attached a patch to add a control panel for icedtea-web. This > can be used to modify deployments.properties. > > > > Current features: > > - Enable/Disable caching. > > - Set cache location. > > - Set max space cache may use. (in MB) > > - Set compression level of jar files. > > - Import/View/Export/Remove certificates. > > - Turn tracing on/off. > > - Turn debugging on/off. > > - Set behaviour of Java Console. > > - Set whether to create desktop shortcut for javaws or not. > > - Set proxy settings. > > - Set how security warning behaviours. > > > > ChangeLog: > > > > * Makefile.am: > > (CONTROLPANEL_DIR): Build directory for control panel. > > (CONTROLPANEL_SRCDIR): Source directory for control panel. > > (CONTROLPANEL_LAUNCHER_OBJECTS): Objects used to compile binary > > control panel. > > (all-local): Add stamps/controlpanel-dist.stamp > > stamps/controlpanel.stamp > $(CONTROLPANEL_DIR)/launcher/controlpanel. > > (clean-local): Add clean-controlpanel. > > (install-exec-local): Install the control panel jar file and > control > > panel binary. > > (uninstall-local): Delete controlpanel.jar and controlpanel binary > > from installed location. > > (controlpanel-source-files.txt): Get the list of source files for > > control panel. > > (stamps/controlpanel.stamp): Compile the java files for control > panel. > > (stamps/controlpanel-dist.stamp): Depend on > stamps/controlpanel.stamp. > > Create the jar file for control panel. > > ($(CONTROLPANEL_DIR)/launcher/%.o): Create the launcher objects. > > ($(CONTROLPANEL_DIR)/launcher/controlpanel): Link the objects to > make > > the launcher. > > (clean-controlpanel): Remove the compiled control panel. > > (controlpanel): Calls stamps/controlpanel.stamp. > > (controlpanel-dist): Calls stamps/controlpanel-dist.stamp. > > * controlpanel/org/classpath/controlpanel/AboutPanel.java, > > * controlpanel/org/classpath/controlpanel/ComboItem.java, > > * controlpanel/org/classpath/controlpanel/ControlPanel.java, > > * controlpanel/org/classpath/controlpanel/DebuggingPanel.java, > > * > controlpanel/org/classpath/controlpanel/DesktopShortcutPanel.java, > > * controlpanel/org/classpath/controlpanel/JREPanel.java, > > * controlpanel/org/classpath/controlpanel/NamedBorderPanel.java, > > * > controlpanel/org/classpath/controlpanel/SecuritySettingsPanel.java, > > * > controlpanel/org/classpath/controlpanel/TemporaryInternetFilesPanel.java, > > * > controlpanel/org/classpath/controlpanel/network/AdvancedProxySettingsDialog.java, > > * > controlpanel/org/classpath/controlpanel/network/AdvancedProxySettingsPane.java, > > * > controlpanel/org/classpath/controlpanel/network/NetworkSettingsPanel.java, > > * > controlpanel/org/classpath/controlpanel/security/viewer/CertificatePane.java, > > * > controlpanel/org/classpath/controlpanel/security/viewer/CertificateViewer.java, > > * > controlpanel/org/classpath/controlpanel/translator/Translator.java: > > New classes. All methods are new as well. > > * netx/net/sourceforge/jnlp/resources/Messages.properties: Added > > messages for control panel. > > > > Comments? Question? Concerns? > > > > A few quick thoughts are listed below. Please dont let any of that > discourage you. These are all thing that should be improved. But what > > you have so far is great work. It's just not perfect yet ;) We really > > needed something like this in netx/plugin though. Thanks for doing > this! > > 1. Some of these settings dont do anything yet, right? I am looking at > > the cache stuff here. Perhaps you might want to leave it out for now, > or > clearly indicate that it does not do anything. Ah, yes. I will put on the description noting that it currently doesn't do anything but just sets the deployment.properties file. > > 2. Why does the binary have the name controlpanel? I dont really care > > about the name itself, but if you are going to make it so close to the > > one used by proprietary JDK, why not just call it ControlPanel? The proprietary JDK actually calls it jcontrol then symlinked to it calling ControlPanel :) > > 3. We should look into adding a desktop file so users would be able to > > launch it from the menu. > > 4. It is customary to have the package names be representative of the > > url. IcedTea is under the url icedtea.classpath.org. So itt would make > a > lot more sense to use org.classpath.icedtea.* rather than > org.classpath.*. I'll change this for the updated patch later. > > 5. Please get rid of CertificateViewer. CertificatePanel should be > moved > to org.classpath.controlpanel, along with the rest of the classes. Ah yes, I completely forgot about CertificateViewer not being used. Move will also be done. > > 6. Please dont create copies of classes. There is already a translator > > class in netx. The new Translator class still has a dependency on > JNLPRuntime, so I really dont see the point of duplicating it. > Personally I think it would be best if we separate the user-visible > strings in ControlPanel from those in netx. We should have a separate > > properties file in control panel. Then the translator class would not > be > an exact duplicate (since it would read strings from another > location). > > 7. Typo in the patch to ChangeLog: > + (load): Do a security check at start. * security exception Oops, replaced wrong text! I'll fix this. > > 8. Nice work on the launcher! The -Xbootclasspath way avoids adding > redundant things to boot classpath. > > 9. I see that some files list asu as the author. Please use your full > > name (and email address) instead. Ok. =) > > 10. You know you can do static imports right? Something like > import static org.classpath.controlpanel.translator.Translator.R > would mean you can just do R("foo") instead of Translator.R everytime. > > This is more of a style thing, so feel free to ignore it. > > Anyway, this looks great as a start! Thanks again for doing this. > > Cheers, > Omair Thanks for the review too Omair! Cheers, Andrew From ahughes at redhat.com Fri Nov 26 19:27:52 2010 From: ahughes at redhat.com (Dr Andrew John Hughes) Date: Sat, 27 Nov 2010 03:27:52 +0000 Subject: [RFC][icedtea-web]: Adding control panel to icedtea-web In-Reply-To: <670901322.556301290805913094.JavaMail.root@zmail01.collab.prod.int.phx2.redhat.com> References: <619585353.556241290805830632.JavaMail.root@zmail01.collab.prod.int.phx2.redhat.com> <670901322.556301290805913094.JavaMail.root@zmail01.collab.prod.int.phx2.redhat.com> Message-ID: <20101127032752.GR17602@rivendell.middle-earth.co.uk> On 16:11 Fri 26 Nov , Andrew Su wrote: > Hello, > > I have attached a patch to add a control panel for icedtea-web. This can be used to modify deployments.properties. > > Current features: > - Enable/Disable caching. > - Set cache location. > - Set max space cache may use. (in MB) > - Set compression level of jar files. > - Import/View/Export/Remove certificates. > - Turn tracing on/off. > - Turn debugging on/off. > - Set behaviour of Java Console. > - Set whether to create desktop shortcut for javaws or not. > - Set proxy settings. > - Set how security warning behaviours. > > ChangeLog: > > * Makefile.am: > (CONTROLPANEL_DIR): Build directory for control panel. > (CONTROLPANEL_SRCDIR): Source directory for control panel. > (CONTROLPANEL_LAUNCHER_OBJECTS): Objects used to compile binary > control panel. > (all-local): Add stamps/controlpanel-dist.stamp > stamps/controlpanel.stamp $(CONTROLPANEL_DIR)/launcher/controlpanel. > (clean-local): Add clean-controlpanel. > (install-exec-local): Install the control panel jar file and control > panel binary. > (uninstall-local): Delete controlpanel.jar and controlpanel binary > from installed location. > (controlpanel-source-files.txt): Get the list of source files for > control panel. > (stamps/controlpanel.stamp): Compile the java files for control panel. > (stamps/controlpanel-dist.stamp): Depend on stamps/controlpanel.stamp. > Create the jar file for control panel. > ($(CONTROLPANEL_DIR)/launcher/%.o): Create the launcher objects. > ($(CONTROLPANEL_DIR)/launcher/controlpanel): Link the objects to make > the launcher. > (clean-controlpanel): Remove the compiled control panel. > (controlpanel): Calls stamps/controlpanel.stamp. > (controlpanel-dist): Calls stamps/controlpanel-dist.stamp. > * controlpanel/org/classpath/controlpanel/AboutPanel.java, > * controlpanel/org/classpath/controlpanel/ComboItem.java, > * controlpanel/org/classpath/controlpanel/ControlPanel.java, > * controlpanel/org/classpath/controlpanel/DebuggingPanel.java, > * controlpanel/org/classpath/controlpanel/DesktopShortcutPanel.java, > * controlpanel/org/classpath/controlpanel/JREPanel.java, > * controlpanel/org/classpath/controlpanel/NamedBorderPanel.java, > * controlpanel/org/classpath/controlpanel/SecuritySettingsPanel.java, > * controlpanel/org/classpath/controlpanel/TemporaryInternetFilesPanel.java, > * controlpanel/org/classpath/controlpanel/network/AdvancedProxySettingsDialog.java, > * controlpanel/org/classpath/controlpanel/network/AdvancedProxySettingsPane.java, > * controlpanel/org/classpath/controlpanel/network/NetworkSettingsPanel.java, > * controlpanel/org/classpath/controlpanel/security/viewer/CertificatePane.java, > * controlpanel/org/classpath/controlpanel/security/viewer/CertificateViewer.java, > * controlpanel/org/classpath/controlpanel/translator/Translator.java: > New classes. All methods are new as well. > * netx/net/sourceforge/jnlp/resources/Messages.properties: Added > messages for control panel. > > Comments? Question? Concerns? > > Cheers, > Andrew Further comments inline but why does this need to introduce a completely new source tree and jar? Could it not just be part of the NetX trees? As others have said, you need proper copyright notices, authorship and org.classpath.icedtea as a package prefix if you insist on using a new hierarchy. You also need to add documentation targets -- another reason to use the netx trees if possible so you can just add a package rather than additional targets. > diff -r 243ab4185293 ChangeLog > --- a/ChangeLog Fri Nov 26 15:21:56 2010 +0000 > +++ b/ChangeLog Fri Nov 26 15:58:55 2010 -0500 > @@ -1,3 +1,47 @@ > +2010-11-26 Andrew Su > + > + * Makefile.am: > + (CONTROLPANEL_DIR): Build directory for control panel. > + (CONTROLPANEL_SRCDIR): Source directory for control panel. > + (CONTROLPANEL_LAUNCHER_OBJECTS): Objects used to compile binary > + control panel. > + (all-local): Add stamps/controlpanel-dist.stamp > + stamps/controlpanel.stamp $(CONTROLPANEL_DIR)/launcher/controlpanel. > + (clean-local): Add clean-controlpanel. > + (install-exec-local): Install the control panel jar file and control > + panel binary. > + (uninstall-local): Delete controlpanel.jar and controlpanel binary > + from installed location. > + (controlpanel-source-files.txt): Get the list of source files for > + control panel. > + (stamps/controlpanel.stamp): Compile the java files for control panel. > + (stamps/controlpanel-dist.stamp): Depend on stamps/controlpanel.stamp. > + Create the jar file for control panel. > + ($(CONTROLPANEL_DIR)/launcher/%.o): Create the launcher objects. > + ($(CONTROLPANEL_DIR)/launcher/controlpanel): Link the objects to make > + the launcher. > + (clean-controlpanel): Remove the compiled control panel. > + (controlpanel): Calls stamps/controlpanel.stamp. > + (controlpanel-dist): Calls stamps/controlpanel-dist.stamp. > + * controlpanel/org/classpath/controlpanel/AboutPanel.java, > + * controlpanel/org/classpath/controlpanel/ComboItem.java, > + * controlpanel/org/classpath/controlpanel/ControlPanel.java, > + * controlpanel/org/classpath/controlpanel/DebuggingPanel.java, > + * controlpanel/org/classpath/controlpanel/DesktopShortcutPanel.java, > + * controlpanel/org/classpath/controlpanel/JREPanel.java, > + * controlpanel/org/classpath/controlpanel/NamedBorderPanel.java, > + * controlpanel/org/classpath/controlpanel/SecuritySettingsPanel.java, > + * controlpanel/org/classpath/controlpanel/TemporaryInternetFilesPanel.java, > + * controlpanel/org/classpath/controlpanel/network/AdvancedProxySettingsDialog.java, > + * controlpanel/org/classpath/controlpanel/network/AdvancedProxySettingsPane.java, > + * controlpanel/org/classpath/controlpanel/network/NetworkSettingsPanel.java, > + * controlpanel/org/classpath/controlpanel/security/viewer/CertificatePane.java, > + * controlpanel/org/classpath/controlpanel/security/viewer/CertificateViewer.java, > + * controlpanel/org/classpath/controlpanel/translator/Translator.java: > + New classes. All methods are new as well. > + * netx/net/sourceforge/jnlp/resources/Messages.properties: Added > + messages for control panel. > + > 2010-11-25 Andrew John Hughes > > * Makefile.am: > @@ -566,7 +610,7 @@ > 2010-10-27 Omair Majid > > * netx/net/sourceforge/jnlp/runtime/DeploymentConfiguration.java > - (load): Do a security check at start. A security exception later on may > + (load): Do a security check at start. * security exception later on may > accidentally reveal a filename or a system property. > (save): Likewise. > > diff -r 243ab4185293 Makefile.am > --- a/Makefile.am Fri Nov 26 15:21:56 2010 +0000 > +++ b/Makefile.am Fri Nov 26 15:58:55 2010 -0500 > @@ -4,6 +4,8 @@ > NETX_SRCDIR = $(abs_top_srcdir)/netx > NETX_RESOURCE_DIR=$(NETX_SRCDIR)/net/sourceforge/jnlp/resources > NETX_EXTRA_DIR=$(abs_top_srcdir)/extra/net/sourceforge/jnlp/about/resources > +CONTROLPANEL_DIR=$(abs_top_builddir)/controlpanel.build > +CONTROLPANEL_SRCDIR=$(abs_top_srcdir)/controlpanel > > # Build directories > > @@ -74,6 +76,7 @@ > LAUNCHER_OBJECTS = java.o java_md.o splashscreen_stubs.o > PLUGIN_LAUNCHER_OBJECTS = $(addprefix $(PLUGIN_DIR)/launcher/,$(LAUNCHER_OBJECTS)) > NETX_LAUNCHER_OBJECTS = $(addprefix $(NETX_DIR)/launcher/,$(LAUNCHER_OBJECTS)) > +CONTROLPANEL_LAUNCHER_OBJECTS = $(addprefix $(CONTROLPANEL_DIR)/launcher/,$(LAUNCHER_OBJECTS)) > LAUNCHER_FLAGS = -O2 -fno-strict-aliasing -fPIC -pthread -W -Wall -Wno-unused -Wno-parentheses -pipe -fno-omit-frame-pointer \ > -g -D_LARGEFILE64_SOURCE -D_GNU_SOURCE -D_REENTRANT -DLAUNCHER_NAME='"java"' -I$(LAUNCHER_SRCDIR) \ > -DJDK_MAJOR_VERSION='"1"' -DJDK_MINOR_VERSION='"6"' -DLIBARCHNAME='"$(JRE_ARCH_DIR)"' > @@ -89,13 +92,15 @@ > # ================= > > all-local: stamps/netx-dist.stamp extra-lib/about.jar stamps/plugin.stamp $(NETX_DIR)/launcher/javaws \ > - javaws.desktop stamps/docs.stamp > + javaws.desktop stamps/docs.stamp stamps/controlpanel-dist.stamp stamps/controlpanel.stamp \ > + $(CONTROLPANEL_DIR)/launcher/controlpanel > You don't need stamps/controlpanel.stamp here as it's a dependency of controlpanel-dist.stamp. > clean-local: clean-netx clean-plugin clean-liveconnect clean-extra clean-bootstrap-directory \ > - clean-native-ecj clean-desktop-files clean-docs > + clean-native-ecj clean-desktop-files clean-docs clean-controlpanel > > .PHONY: clean-IcedTeaPlugin clean-add-netx clean-add-netx-debug clean-add-plugin clean-add-plugin-debug \ > - clean-bootstrap-directory clean-native-ecj clean-desktop-files clean-netx-docs clean-docs clean-plugin-docs > + clean-bootstrap-directory clean-native-ecj clean-desktop-files clean-netx-docs clean-docs clean-plugin-docs \ > + clean-controlpanel > > install-exec-local: > mkdir -p $(DESTDIR)$(bindir) > @@ -108,6 +113,8 @@ > cp -pPRf $(NETX_DIR)/lib/classes.jar $(DESTDIR)$(prefix)/jre/lib/netx.jar > cp -pPRf $(NETX_DIR)/launcher/javaws $(DESTDIR)$(bindir) > cp extra-lib/about.jar $(DESTDIR)$(prefix)/jre/lib > + cp -pPRf $(CONTROLPANEL_DIR)/lib/classes.jar $(DESTDIR)$(prefix)/jre/lib/controlpanel.jar > + cp -pPRf $(CONTROLPANEL_DIR)/launcher/controlpanel $(DESTDIR)$(bindir) > You'll need to modify these as I have in my forthcoming dist patch. Again, why do we need a separate jar for this? > install-data-local: > mkdir -p $(DESTDIR)$(prefix)/man/man1 > @@ -127,9 +134,11 @@ > rm -f $(DESTDIR)$(prefix)/jre/lib/netx.jar > rm -f $(DESTDIR)$(prefix)/jre/lib/about.jnlp > rm -f $(DESTDIR)$(prefix)/jre/lib/about.jar > + rm -f $(DESTDIR)$(prefix)/jre/lib/controlpanel.jar > rm -f $(DESTDIR)$(prefix)/man/man1/javaws.1 > rm -f $(DESTDIR)$(bindir)/pluginappletviewer > rm -f $(DESTDIR)$(bindir)/javaws > + rm -f $(DESTDIR)$(bindir)/controlpanel > > # Plugin > > @@ -309,6 +318,48 @@ > javaws.desktop: javaws.desktop.in > sed "s#PATH_TO_JAVAWS#$(DESTDIR)$(bindir)/javaws#" < $(srcdir)/javaws.desktop.in > javaws.desktop > > +# Control Panel > +# Requires some netx functionality to use. > +controlpanel-source-files.txt: > + find $(CONTROLPANEL_SRCDIR) -name '*.java' | sort > $@ > + > +stamps/controlpanel.stamp: controlpanel-source-files.txt stamps/bootstrap-directory.stamp > + mkdir -p $(CONTROLPANEL_DIR) > + $(BOOT_DIR)/bin/javac $(IT_JAVACFLAGS) \ > + -d $(CONTROLPANEL_DIR) \ > + -classpath $(NETX_DIR) \ > + -sourcepath $(CONTROLPANEL_SRCDIR) \ > + -bootclasspath $(RUNTIME) \ > + @controlpanel-source-files.txt > + mkdir -p stamps > + touch $@ > + > +stamps/controlpanel-dist.stamp: stamps/controlpanel.stamp > + (cd $(CONTROLPANEL_DIR) ; \ > + mkdir -p lib ; \ > + $(BOOT_DIR)/bin/jar cf lib/classes.jar org ; \ > + cp -pPR $(SRC_DIR_LINK) $(CONTROLPANEL_SRCDIR) src; \ > + find src -type f -exec chmod 640 '{}' ';' -o -type d -exec chmod 750 '{}' ';'; \ > + cd src ; \ > + $(ZIP) -qr $(CONTROLPANEL_DIR)/lib/src.zip org ) > + mkdir -p stamps > + touch $@ > + > +$(CONTROLPANEL_DIR)/launcher/%.o: $(LAUNCHER_SRCDIR)/%.c > + mkdir -p $(CONTROLPANEL_DIR)/launcher && \ > + $(CC) $(LAUNCHER_FLAGS) -DJAVA_ARGS='{ "-Xbootclasspath/a:$(DESTDIR)$(prefix)/jre/lib/controlpanel.jar", "-J-ms8m", "org.classpath.controlpanel.ControlPanel", }' -DPROGNAME="controlpanel" \ > + -c -o $@ $< > + The need for this to be on the bootclasspath is worrying. Is there not a more correct way around the security exception? Also, maybe line break this better? > +$(CONTROLPANEL_DIR)/launcher/controlpanel: $(CONTROLPANEL_LAUNCHER_OBJECTS) > + mkdir -p launcher > + $(CC) $(CONTROLPANEL_LAUNCHER_OBJECTS) $(LAUNCHER_LINK) > + > +clean-controlpanel: > + rm -rf $(CONTROLPANEL_DIR) > + rm -f stamps/controlpanel-dist.stamp > + rm -f controlpanel-source-files.txt > + rm -f stamps/controlpanel.stamp > + > # documentation > > stamps/docs.stamp: stamps/netx-docs.stamp stamps/plugin-docs.stamp > @@ -425,6 +476,10 @@ > > add-netx-debug: stamps/add-netx-debug.stamp > > +controlpanel: stamps/controlpanel.stamp > + > +controlpanel-dist: stamps/controlpanel-dist.stamp > + > netx: stamps/netx.stamp > > netx-dist: stamps/netx-dist.stamp > diff -r 243ab4185293 controlpanel/org/classpath/controlpanel/AboutPanel.java > --- /dev/null Thu Jan 01 00:00:00 1970 +0000 > +++ b/controlpanel/org/classpath/controlpanel/AboutPanel.java Fri Nov 26 15:58:55 2010 -0500 > @@ -0,0 +1,44 @@ > +package org.classpath.controlpanel; > + > +import java.awt.Component; > +import java.awt.Dimension; > +import java.awt.GridBagConstraints; > +import java.awt.GridBagLayout; > + > +import javax.swing.Box; > +import javax.swing.JLabel; > + > +import org.classpath.controlpanel.translator.Translator; > + > +/** > + * This class provides a GUI interface which shows some basic information on > + * this project. > + * > + * @author asu > + * > + */ > + at SuppressWarnings("serial") > +public class AboutPanel extends NamedBorderPanel { > + > + public AboutPanel() { > + super(Translator.R("CPHeadAbout"), new GridBagLayout()); > + GridBagConstraints c = new GridBagConstraints(); > + c.fill = GridBagConstraints.BOTH; > + c.gridy = 0; > + > + JLabel logo = new JLabel(); > + JLabel aboutLabel = new JLabel("" + Translator.R("CPAboutInfo") + ""); > + > + c.gridx = 0; > + c.weighty = 0; > + c.weightx = 0; > + add(logo, c); > + c.gridx = 1; > + c.weightx = 1; > + add(aboutLabel, c); > + Component filler = Box.createRigidArea(new Dimension(1, 1)); > + c.weighty = 1; > + c.gridy++; > + add(filler, c); > + } > +} > diff -r 243ab4185293 controlpanel/org/classpath/controlpanel/ComboItem.java > --- /dev/null Thu Jan 01 00:00:00 1970 +0000 > +++ b/controlpanel/org/classpath/controlpanel/ComboItem.java Fri Nov 26 15:58:55 2010 -0500 > @@ -0,0 +1,28 @@ > +package org.classpath.controlpanel; > + > +public class ComboItem { > + String text = null; > + private String property; > + private String value; > + > + public ComboItem(String text, String value) { > + this.text = text; > + this.value = value; > + } > + > + public String toString() { > + return this.text; > + } > + > + public void setProperty(String property) { > + this.property = property; > + } > + > + public String getProperty() { > + return this.property; > + } > + > + public String getValue() { > + return this.value; > + } > +} > diff -r 243ab4185293 controlpanel/org/classpath/controlpanel/ControlPanel.java > --- /dev/null Thu Jan 01 00:00:00 1970 +0000 > +++ b/controlpanel/org/classpath/controlpanel/ControlPanel.java Fri Nov 26 15:58:55 2010 -0500 > @@ -0,0 +1,291 @@ > +package org.classpath.controlpanel; > + > +import static net.sourceforge.jnlp.runtime.Translator.R; > + > +import java.awt.BorderLayout; > +import java.awt.CardLayout; > +import java.awt.Dimension; > +import java.awt.FlowLayout; > +import java.awt.GridLayout; > +import java.awt.Image; > +import java.awt.event.ActionEvent; > +import java.awt.event.ActionListener; > +import java.awt.event.MouseEvent; > +import java.awt.event.MouseListener; > +import java.io.IOException; > +import java.net.URL; > +import java.security.AccessController; > +import java.security.PrivilegedAction; > +import java.util.ArrayList; > +import java.util.Arrays; > +import java.util.List; > + > +import javax.imageio.ImageIO; > +import javax.naming.ConfigurationException; > +import javax.swing.ImageIcon; > +import javax.swing.JButton; > +import javax.swing.JCheckBox; > +import javax.swing.JComboBox; > +import javax.swing.JFrame; > +import javax.swing.JLabel; > +import javax.swing.JList; > +import javax.swing.JPanel; > +import javax.swing.JScrollPane; > +import javax.swing.SwingConstants; > +import javax.swing.SwingUtilities; > +import javax.swing.UIManager; > +import javax.swing.WindowConstants; > +import javax.swing.border.EmptyBorder; > +import javax.swing.event.ListSelectionEvent; > +import javax.swing.event.ListSelectionListener; > + > +import org.classpath.controlpanel.network.NetworkSettingsPanel; > +import org.classpath.controlpanel.security.viewer.CertificatePane; > +import org.classpath.controlpanel.translator.Translator; > + > +import net.sourceforge.jnlp.LaunchException; > +import net.sourceforge.jnlp.Launcher; > +import net.sourceforge.jnlp.cache.UpdatePolicy; > +import net.sourceforge.jnlp.runtime.Boot; > +import net.sourceforge.jnlp.runtime.DeploymentConfiguration; > +import net.sourceforge.jnlp.runtime.JNLPRuntime; > + > + at SuppressWarnings( { "unused", "serial" }) > +public class ControlPanel extends JFrame { > + > + private class SettingsPanel { > + final String value; > + final JPanel panel; > + > + public SettingsPanel(String value, JPanel panel) { > + this.value = value; > + this.panel = panel; > + } > + > + public JPanel getPanel() { > + return panel; > + } > + > + public String toString() { > + return value; > + } > + } > + > + private DeploymentConfiguration config = null; > + > + /* > + * actual configuration options > + */ > + private String configBrowserCommand = null; > + > + public ControlPanel(DeploymentConfiguration config) { > + super(); > + setTitle(Translator.R("CPHead")); > + > + this.config = config; > + > + JPanel mainPanel = createMainSettingsPanel(); > + JPanel buttonPanel = createButtonPanel(); > + > + add(mainPanel, BorderLayout.CENTER); > + add(buttonPanel, BorderLayout.SOUTH); > + setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE); > + pack(); > + setMinimumSize(getPreferredSize()); > + setResizable(false); > + } > + > + private JPanel createButtonPanel() { > + JPanel buttonPanel = new JPanel(new FlowLayout(FlowLayout.TRAILING)); > + > + List buttons = new ArrayList(); > + > + JButton okButton = new JButton(Translator.R("ButOk")); > + okButton.addActionListener(new ActionListener() { > + @Override > + public void actionPerformed(ActionEvent e) { > + ControlPanel.this.saveConfiguration(); > + ControlPanel.this.dispose(); > + } > + }); > + buttons.add(okButton); > + > + JButton applyButton = new JButton(Translator.R("ButApply")); > + applyButton.addActionListener(new ActionListener() { > + @Override > + public void actionPerformed(ActionEvent e) { > + ControlPanel.this.saveConfiguration(); > + } > + }); > + buttons.add(applyButton); > + > + JButton cancelButton = new JButton(Translator.R("ButCancel")); > + cancelButton.addActionListener(new ActionListener() { > + @Override > + public void actionPerformed(ActionEvent e) { > + ControlPanel.this.dispose(); > + } > + }); > + buttons.add(cancelButton); > + > + int maxWidth = 0; > + int maxHeight = 0; > + for (JButton button : buttons) { > + maxWidth = Math.max(button.getMinimumSize().width, maxWidth); > + maxHeight = Math.max(button.getMinimumSize().height, maxHeight); > + } > + > + int wantedWidth = maxWidth + 10; > + int wantedHeight = maxHeight + 2; > + for (JButton button : buttons) { > + button.setPreferredSize(new Dimension(wantedWidth, wantedHeight)); > + buttonPanel.add(button); > + } > + > + return buttonPanel; > + } > + > + private JPanel createMainSettingsPanel() { > + > + loadConfiguration(); > + > + SettingsPanel[] panels = new SettingsPanel[] { new SettingsPanel(Translator.R("CPTabAbout"), createAboutPanel()), > + new SettingsPanel(Translator.R("CPTabCache"), createCacheSettingsPanel()), > + new SettingsPanel(Translator.R("CPTabCertificate"), createCertificatesSettingsPanel()), > +// new SettingsPanel(Translator.R("CPTabClassLoader"), createClassLoaderSettingsPanel()), > + new SettingsPanel(Translator.R("CPTabDebugging"), createDebugSettingsPanel()), > + new SettingsPanel(Translator.R("CPTabDesktopIntegration"), createDesktopSettingsPanel()), > + new SettingsPanel(Translator.R("CPTabNetwork"), createNetworkSettingsPanel()), > + new SettingsPanel(Translator.R("CPTabRuntimes"), createRuntimesSettingsPanel()), > + new SettingsPanel(Translator.R("CPTabSecurity"), createSecuritySettingsPanel()), }; > + > + final JPanel settingsPanel = new JPanel(new CardLayout()); > + for (SettingsPanel panel : panels) { > + JPanel p = panel.getPanel(); > + p.setPreferredSize(new Dimension(530, 360)); > + settingsPanel.add(p, panel.toString()); > + } > + > + final JList settingsList = new JList(panels); > + settingsList.addListSelectionListener(new ListSelectionListener() { > + @Override > + public void valueChanged(ListSelectionEvent e) { > + JList list = (JList) e.getSource(); > + SettingsPanel panel = (SettingsPanel) list.getSelectedValue(); > + CardLayout cl = (CardLayout) settingsPanel.getLayout(); > + cl.show(settingsPanel, panel.toString()); > + } > + }); > + JScrollPane settingsListScrollPane = new JScrollPane(settingsList); > + settingsListScrollPane.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_NEVER); > + > + final JPanel settingsDetailPanel = new JPanel(); > + settingsDetailPanel.setLayout(new BorderLayout()); > + settingsDetailPanel.add(settingsPanel, BorderLayout.CENTER); > + settingsDetailPanel.setBorder(new EmptyBorder(0, 10, -3, 0)); > + > + JPanel mainPanel = new JPanel(); > + mainPanel.setLayout(new BorderLayout()); > + mainPanel.add(settingsListScrollPane, BorderLayout.LINE_START); > + mainPanel.add(settingsDetailPanel, BorderLayout.CENTER); > + mainPanel.setBorder(new EmptyBorder(10, 10, 10, 10)); > + > + settingsList.setSelectedIndex(0); > + > + return mainPanel; > + } > + > + private JPanel createAboutPanel() { > + return new AboutPanel(); > + } > + > + private JPanel createCacheSettingsPanel() { > + return new TemporaryInternetFilesPanel(this.config); > + } > + > + private JPanel createCertificatesSettingsPanel() { > + JPanel p = new NamedBorderPanel(Translator.R("CPHeadCertificates"), new BorderLayout()); > + p.add(new CertificatePane(null), BorderLayout.CENTER); > + return p; > + } > + > + private JPanel createClassLoaderSettingsPanel() { > + return createNotImplementedPanel(); > + } > + > + private JPanel createDebugSettingsPanel() { > + return new DebuggingPanel(this.config); > + } > + > + private JPanel createDesktopSettingsPanel() { > + return new DesktopShortcutPanel(this.config); > + } > + > + private JPanel createNetworkSettingsPanel() { > + return new NetworkSettingsPanel(this.config); > + } > + > + private JPanel createRuntimesSettingsPanel() { > + return new JREPanel(); > + } > + > + private JPanel createSecuritySettingsPanel() { > + return new SecuritySettingsPanel(this.config); > + } > + > + /** > + * This is a placeholder panel. > + * > + * @return > + */ > + private JPanel createNotImplementedPanel() { > + > + JPanel notImplementedPanel = new NamedBorderPanel("Unimplemented"); > + notImplementedPanel.setLayout(new BorderLayout()); > + > + URL imgUrl = getClass().getClassLoader().getResource("net/sourceforge/jnlp/resources/warning.png"); > + Image img; > + try { > + img = ImageIO.read(imgUrl); > + ImageIcon icon = new ImageIcon(img); > + JLabel label = new JLabel("Not Implemented", icon, SwingConstants.CENTER); > + notImplementedPanel.add(label); > + } catch (IOException e) { > + e.printStackTrace(); > + } > + return notImplementedPanel; > + } > + > + private void loadConfiguration() { > + configBrowserCommand = config.getProperty("deployment.browser.path"); > + if (configBrowserCommand == null) { > + configBrowserCommand = ""; > + } > + } > + > + private void saveConfiguration() { > + try { > + config.save(); > + } catch (IOException e) { > + e.printStackTrace(); > + } > + } > + > + public static void main(String[] args) throws Exception { > + JNLPRuntime.initialize(true); > + final DeploymentConfiguration config = JNLPRuntime.getConfiguration(); > + try { > + config.load(); > + } catch (ConfigurationException e) { > + // TODO Auto-generated catch block > + e.printStackTrace(); > + } > + SwingUtilities.invokeLater(new Runnable() { > + @Override > + public void run() { > + final ControlPanel editor = new ControlPanel(config); > + editor.setVisible(true); > + } > + }); > + } > +} > diff -r 243ab4185293 controlpanel/org/classpath/controlpanel/DebuggingPanel.java > --- /dev/null Thu Jan 01 00:00:00 1970 +0000 > +++ b/controlpanel/org/classpath/controlpanel/DebuggingPanel.java Fri Nov 26 15:58:55 2010 -0500 > @@ -0,0 +1,115 @@ > +package org.classpath.controlpanel; > + > +import java.awt.Component; > +import java.awt.Dimension; > +import java.awt.FlowLayout; > +import java.awt.GridBagConstraints; > +import java.awt.GridBagLayout; > +import java.awt.event.ItemEvent; > +import java.awt.event.ItemListener; > +import javax.swing.Box; > +import javax.swing.JCheckBox; > +import javax.swing.JComboBox; > +import javax.swing.JLabel; > +import javax.swing.JPanel; > + > +import org.classpath.controlpanel.translator.Translator; > + > +import net.sourceforge.jnlp.runtime.DeploymentConfiguration; > + > + at SuppressWarnings("serial") > +public class DebuggingPanel extends NamedBorderPanel implements ItemListener { > + > + /** List of properties used by this panel */ > + private String[] properties = { "deployment.trace", // Debugging > + "deployment.log", // Debugging > + "deployment.javapi.lifecycle.exception", // Debugging > + "deployment.console.startup.mode", // Java Console > + }; > + DeploymentConfiguration config; > + > + public DebuggingPanel(DeploymentConfiguration config) { > + super(Translator.R("CPHeadDebugging"), new GridBagLayout()); > + > + this.config = config; > + > + addComponents(); > + } > + > + private void addComponents() { > + GridBagConstraints c = new GridBagConstraints(); > + > + JLabel debuggingDescription = new JLabel("" + Translator.R("CPDebuggingDescription") + "

"); > + > + JCheckBox[] debuggingOptions = { new JCheckBox(Translator.R("DPEnableTracing")), > + new JCheckBox(Translator.R("DPEnableLogging")), > + new JCheckBox(Translator.R("DPLifeCycleExceptions")) }; > + > + ComboItem[] javaConsoleItems = { new ComboItem(Translator.R("DPDisable"), "DISABLE"), > + new ComboItem(Translator.R("DPHide"), "HIDE"), > + new ComboItem(Translator.R("DPShow"), "SHOW"), }; > + > + JLabel consoleLabel = new JLabel(Translator.R("DPJavaConsole")); > + JComboBox consoleComboBox = new JComboBox(); > + > + JPanel consolePanel = new JPanel(); > + consolePanel.setLayout(new FlowLayout(FlowLayout.LEADING)); > + consolePanel.add(consoleLabel); > + consolePanel.add(consoleComboBox); > + > + Component filler = Box.createRigidArea(new Dimension(1, 1)); > + c.fill = GridBagConstraints.BOTH; > + c.weightx = 1; > + c.gridx = 0; > + c.gridy = 0; > + add(debuggingDescription, c); > + > + for (int i = 0; i < properties.length; i++) { > + try { > + String s = config.getProperty(properties[i]); > + c.gridy = i + 1; > + > + switch (i) { > + case 0: > + case 1: > + case 2: > + debuggingOptions[i].setSelected(Boolean.parseBoolean(s)); > + debuggingOptions[i].setActionCommand(properties[i]); > + debuggingOptions[i].addItemListener(this); > + add(debuggingOptions[i], c); > + break; > + case 3: > + for (int j = 0; j < javaConsoleItems.length; j++) { > + javaConsoleItems[j].setProperty("deployment.console.startup.mode"); > + consoleComboBox.addItem(javaConsoleItems[j]); > + if (config.getProperty(javaConsoleItems[j].getProperty()).equals(javaConsoleItems[j].getValue())) consoleComboBox.setSelectedIndex(j); > + } > + consoleComboBox.addItemListener(this); > + add(consolePanel, c); > + } > + > + } catch (Exception e) { > + debuggingOptions[i] = null; > + } > + } > + > + c.gridy = properties.length; // Pack the bottom > + c.weighty = 1; > + add(filler, c); > + } > + > + @Override > + public void itemStateChanged(ItemEvent e) { > + > + Object o = e.getSource(); > + > + if (o instanceof JCheckBox) { > + JCheckBox jcb = (JCheckBox) o; > + config.setProperty(jcb.getActionCommand(), String.valueOf(jcb.isSelected())); > + } else if (o instanceof JComboBox) { > + ComboItem c = (ComboItem) e.getItem(); > + config.setProperty(c.getProperty(), c.getValue()); > + } > + > + } > +} > diff -r 243ab4185293 controlpanel/org/classpath/controlpanel/DesktopShortcutPanel.java > --- /dev/null Thu Jan 01 00:00:00 1970 +0000 > +++ b/controlpanel/org/classpath/controlpanel/DesktopShortcutPanel.java Fri Nov 26 15:58:55 2010 -0500 > @@ -0,0 +1,67 @@ > +package org.classpath.controlpanel; > + > +import java.awt.Component; > +import java.awt.Dimension; > +import java.awt.GridBagConstraints; > +import java.awt.GridBagLayout; > +import java.awt.event.ItemEvent; > +import java.awt.event.ItemListener; > + > +import javax.swing.Box; > +import javax.swing.JComboBox; > +import javax.swing.JLabel; > + > +import org.classpath.controlpanel.translator.Translator; > + > +import net.sourceforge.jnlp.runtime.DeploymentConfiguration; > + > + at SuppressWarnings("serial") > +public class DesktopShortcutPanel extends NamedBorderPanel implements ItemListener { > + > + private DeploymentConfiguration config; > + > + public DesktopShortcutPanel(DeploymentConfiguration config) { > + super(Translator.R("CPHeadDesktopIntegration"), new GridBagLayout()); > + this.config = config; > + > + addComponents(); > + } > + > + private void addComponents() { > + GridBagConstraints c = new GridBagConstraints(); > + JLabel description = new JLabel("" + Translator.R("CPDesktopIntegrationDescription") + "
"); > + JComboBox shortcutComboOptions = new JComboBox(); > + ComboItem[] items = { new ComboItem(Translator.R("DSPNeverCreate"), "NEVER"), > + new ComboItem(Translator.R("DSPAlwaysAllow"), "ALWAYS"), > + new ComboItem(Translator.R("DSPAskUser"), "ASK_USER"), > + new ComboItem(Translator.R("DSPAskIfHinted"), "ASK_IF_HINTED"), > + new ComboItem(Translator.R("DSPAlwaysIfHinted"), "ALWAYS_IF_HINTED") }; > + > + for (int j = 0; j < items.length; j++) { > + items[j].setProperty("deployment.javaws.shortcut"); > + shortcutComboOptions.addItem(items[j]); > + if (config.getProperty(items[j].getProperty()).equals(items[j].getValue())) shortcutComboOptions.setSelectedIndex(j); > + } > + > + shortcutComboOptions.addItemListener(this); > + > + c.fill = GridBagConstraints.BOTH; > + c.weightx = 1; > + c.gridx = 0; > + > + c.gridy = 0; > + add(description, c); > + c.gridy = 1; > + add(shortcutComboOptions, c); > + > + Component filler = Box.createRigidArea(new Dimension(1, 1)); > + c.weighty = 1; > + c.gridy++; > + add(filler, c); > + } > + > + public void itemStateChanged(ItemEvent e) { > + ComboItem c = (ComboItem) e.getItem(); > + config.setProperty(c.getProperty(), c.getValue()); > + } > +} > diff -r 243ab4185293 controlpanel/org/classpath/controlpanel/JREPanel.java > --- /dev/null Thu Jan 01 00:00:00 1970 +0000 > +++ b/controlpanel/org/classpath/controlpanel/JREPanel.java Fri Nov 26 15:58:55 2010 -0500 > @@ -0,0 +1,44 @@ > +package org.classpath.controlpanel; > + > +import java.awt.BorderLayout; > +import java.awt.FlowLayout; > + > +import javax.swing.JButton; > +import javax.swing.JLabel; > +import javax.swing.JPanel; > + > +import org.classpath.controlpanel.translator.Translator; > + > + > +/** > + * This panel is to allow access to setting the JRE but we currently do not > + * support this. > + * > + * @author asu > + * > + */ > +public class JREPanel extends NamedBorderPanel { > + /** > + * > + */ > + private static final long serialVersionUID = -712021664097515692L; > + > + public JREPanel() { > + super(Translator.R("CPHeadJRESettings")); > + setLayout(new BorderLayout()); > + > + JLabel jreLabel = new JLabel("" + Translator.R("CPJRESettingsDescription") + "
"); > + JButton viewButton = new JButton(Translator.R("CPButView")); > + viewButton.setEnabled(false); > + > + JPanel jreButtonPanel = new JPanel(); > + jreButtonPanel.setLayout(new FlowLayout(FlowLayout.TRAILING)); > + > + jreButtonPanel.add(viewButton); > + > + jreLabel = new JLabel("" + Translator.R("CPJRESupport") + ""); > + add(jreLabel, BorderLayout.NORTH); > + // add(jreButtonPanel, BorderLayout.CENTER); > + > + } > +} > diff -r 243ab4185293 controlpanel/org/classpath/controlpanel/NamedBorderPanel.java > --- /dev/null Thu Jan 01 00:00:00 1970 +0000 > +++ b/controlpanel/org/classpath/controlpanel/NamedBorderPanel.java Fri Nov 26 15:58:55 2010 -0500 > @@ -0,0 +1,28 @@ > +package org.classpath.controlpanel; > + > +import java.awt.LayoutManager; > + > +import javax.swing.BorderFactory; > +import javax.swing.JPanel; > + > +/** > + * This class provides the a panel that has a border with the name specified. > + * > + * @author asu > + * > + */ > + at SuppressWarnings("serial") > +public class NamedBorderPanel extends JPanel { > + > + public NamedBorderPanel(String title, LayoutManager layout) { > + this(title); > + setLayout(layout); > + } > + > + public NamedBorderPanel(String title) { > + super(); > + setBorder(BorderFactory.createCompoundBorder( > + BorderFactory.createTitledBorder(title), > + BorderFactory.createEmptyBorder(5, 5, 5, 5))); > + } > +} > diff -r 243ab4185293 controlpanel/org/classpath/controlpanel/SecuritySettingsPanel.java > --- /dev/null Thu Jan 01 00:00:00 1970 +0000 > +++ b/controlpanel/org/classpath/controlpanel/SecuritySettingsPanel.java Fri Nov 26 15:58:55 2010 -0500 > @@ -0,0 +1,113 @@ > +package org.classpath.controlpanel; > +import java.awt.BorderLayout; > +import java.awt.Component; > +import java.awt.Dimension; > +import java.awt.GridBagConstraints; > +import java.awt.GridBagLayout; > +import java.awt.event.ActionEvent; > +import java.awt.event.ActionListener; > + > +import javax.swing.Box; > +import javax.swing.JCheckBox; > +import javax.swing.JLabel; > +import javax.swing.JPanel; > + > +import org.classpath.controlpanel.translator.Translator; > + > +import net.sourceforge.jnlp.runtime.DeploymentConfiguration; > + > +/** > + * This provides a way for the user to modify the security settings. > + * > + * @author asu > + * > + */ > + at SuppressWarnings("serial") > +public class SecuritySettingsPanel extends NamedBorderPanel implements ActionListener { > + > + private DeploymentConfiguration config; > + > + // NOTE: All the ones listed with "Default" are in Oracle's implementation. > + // Not shown on deployments.properties webpage. Add support for these later! > + /** List of properties used by this panel */ > + private String[] properties = { "deployment.security.askgrantdialog.show", > + "deployment.security.askgrantdialog.notinca", > + "deployment.security.browser.keystore.use", // default TRUE > + "deployment.security.clientauth.keystore.auto", // Default FALSE > + "deployment.security.jsse.hostmismatch.warning", > + "deployment.security.https.warning.show", // Default FALSE > + "deployment.security.sandbox.awtwarningwindow", > + "deployment.security.sandbox.jnlp.enhanced", > + "deployment.security.validation.crl", // Default TRUE > + "deployment.security.validation.ocsp", // Default FALSE > + "deployment.security.pretrust.list", // Default TRUE > + "deployment.security.blacklist.check", // Default TRUE > + "deployment.security.password.cache", // Default TRUE > + "deployment.security.SSLv2Hello", // Default FALSE > + "deployment.security.SSLv3", // Default TRUE > + "deployment.security.TLSv1", // Default TRUE > +// "deployment.security.mixcode", // Default TRUE > + }; > + > + public SecuritySettingsPanel(DeploymentConfiguration config) { > + super(Translator.R("CPHeadSecurity"), new BorderLayout()); > + this.config = config; > + > + addComponents(); > + } > + > + private void addComponents() { > + JPanel topPanel = new JPanel(new GridBagLayout()); > + GridBagConstraints c = new GridBagConstraints(); > + > + JLabel description = new JLabel("" + Translator.R("CPSecurityDescription") + "
"); > + > + JCheckBox[] securityGeneralOptions = { new JCheckBox(Translator.R("SGPAllowUserGrantSigned")), > + new JCheckBox(Translator.R("SGPAllowUserGrantUntrust")), > + new JCheckBox(Translator.R("SGpUseBrowserKeystore")), > + new JCheckBox(Translator.R("SGPUsePersonalCertOneMatch")), > + new JCheckBox(Translator.R("SGPWarnCertHostMismatch")), > + new JCheckBox(Translator.R("SGPShowValid")), > + new JCheckBox(Translator.R("SGPShowSandboxWarning")), > + new JCheckBox(Translator.R("SGPAllowUserAcceptJNLPSecurityRequests")), > + new JCheckBox(Translator.R("SGPCheckCertRevocationList")), > + new JCheckBox(Translator.R("SGPEnableOnlineCertValidate")), > + new JCheckBox(Translator.R("SGPEnableTrustedPublisherList")), > + new JCheckBox(Translator.R("SGPEnableBlacklistRevocation")), > + new JCheckBox(Translator.R("SGPEnableCachingPassword")), > + new JCheckBox(Translator.R("SGPUseSSL2")), > + new JCheckBox(Translator.R("SGPUseSSL3")), > + new JCheckBox(Translator.R("SGPUseTLS1")), }; > + > + c.fill = GridBagConstraints.BOTH; > + c.gridx = 0; > + c.weightx = 1; > + > + topPanel.add(description, c); > + > + for (int i = 0; i < properties.length; i++) { > + try { > + String s = config.getProperty(properties[i]); > + securityGeneralOptions[i].setSelected(Boolean.parseBoolean(s)); > + securityGeneralOptions[i].setActionCommand(properties[i]); > + securityGeneralOptions[i].addActionListener(this); > + c.gridy = i + 1; > + topPanel.add(securityGeneralOptions[i], c); > + } catch (Exception e) { > + securityGeneralOptions[i] = null; > + } > + } > + > + Component filler = Box.createRigidArea(new Dimension(1, 1)); > + c.weighty = 1; > + c.gridy++; > + topPanel.add(filler, c); > + > + add(topPanel, BorderLayout.CENTER); > + } > + > + @Override > + public void actionPerformed(ActionEvent e) { > + config.setProperty(e.getActionCommand(), String.valueOf(((JCheckBox) e.getSource()).isSelected())); > + } > +} > diff -r 243ab4185293 controlpanel/org/classpath/controlpanel/TemporaryInternetFilesPanel.java > --- /dev/null Thu Jan 01 00:00:00 1970 +0000 > +++ b/controlpanel/org/classpath/controlpanel/TemporaryInternetFilesPanel.java Fri Nov 26 15:58:55 2010 -0500 > @@ -0,0 +1,230 @@ > +package org.classpath.controlpanel; > +import java.awt.BorderLayout; > +import java.awt.Dimension; > +import java.awt.FlowLayout; > +import java.awt.GridBagConstraints; > +import java.awt.GridBagLayout; > +import java.awt.event.ActionEvent; > +import java.awt.event.ActionListener; > +import java.awt.event.ItemEvent; > +import java.awt.event.ItemListener; > +import java.awt.event.KeyEvent; > +import java.awt.event.KeyListener; > + > +import javax.naming.ConfigurationException; > +import javax.swing.JButton; > +import javax.swing.JCheckBox; > +import javax.swing.JComboBox; > +import javax.swing.JComponent; > +import javax.swing.JDialog; > +import javax.swing.JFileChooser; > +import javax.swing.JLabel; > +import javax.swing.JPanel; > +import javax.swing.JSlider; > +import javax.swing.JSpinner; > +import javax.swing.JTextField; > +import javax.swing.SpinnerNumberModel; > +import javax.swing.event.ChangeEvent; > +import javax.swing.event.ChangeListener; > + > +import org.classpath.controlpanel.translator.Translator; > + > +import net.sourceforge.jnlp.runtime.DeploymentConfiguration; > + > +/** > + * The actual panel that contains the fields that the user can edit accordingly. > + * This is provided as a pane for inside the Panel itself, can also be used to > + * display as a dialog. > + * > + * @author asu > + * > + */ > + at SuppressWarnings("serial") > +public class TemporaryInternetFilesPanel extends NamedBorderPanel implements ChangeListener { > + > + private DeploymentConfiguration config; > + private int minSize = -1; > + private int maxSize = 1000; > + > + /** List of properties used by this panel */ > + private String[] properties = { "deployment.javapi.cache.enabled", // false == enabled > + "deployment.user.cachedir", > + "deployment.cache.max.size", // Specified in MB > + "deployment.cache.jarcompression", // Allows values 0-9 > + }; > + > + private JComponent defaultFocusComponent = null; > + JSpinner spCacheSize; > + JSlider slCacheSize; > + > + public TemporaryInternetFilesPanel(DeploymentConfiguration config) { > + super(Translator.R("CPHeadTempInternetFiles")); > + this.config = config; > + setLayout(new BorderLayout()); > + > + addComponents(); > + } > + > + private void addComponents() { > + JPanel topPanel = new JPanel(new GridBagLayout()); > + GridBagConstraints c = new GridBagConstraints(); > + c.fill = GridBagConstraints.BOTH; > + > + JLabel description = new JLabel("" + Translator.R("CPTempInternetFilesDescription") + "
"); > + > + JCheckBox enableCaching = new JCheckBox(Translator.R("TIFPEnableCache"), !Boolean.parseBoolean(this.config.getProperty(properties[0]))); > + enableCaching.addItemListener(new ItemListener() { > + @Override > + public void itemStateChanged(ItemEvent e) { > + config.setProperty(properties[0], String.valueOf(!(e.getStateChange() == ItemEvent.SELECTED))); > + } > + }); > + JPanel locationPanel = new NamedBorderPanel(Translator.R("TIFPLocation"), new GridBagLayout()); > + JLabel locationDescription = new JLabel(Translator.R("TIFPLocationLabel") + ":"); > + final JTextField location = new JTextField(this.config.getProperty(properties[1])); > + location.addKeyListener(new KeyListener() { > + @Override > + public void keyPressed(KeyEvent e) { > + } > + > + @Override > + public void keyReleased(KeyEvent e) { > + config.setProperty(properties[1], location.getText()); > + } > + > + @Override > + public void keyTyped(KeyEvent e) { > + } > + }); > + location.setEditable(false); > + JButton bLocation = new JButton(Translator.R("TIFPChange") + "..."); > + bLocation.addActionListener(new ActionListener() { > + @Override > + public void actionPerformed(ActionEvent e) { > + JFileChooser fileChooser = new JFileChooser(); > + fileChooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY); > + if (fileChooser.showOpenDialog(null) == JFileChooser.APPROVE_OPTION) { > + String result = fileChooser.getSelectedFile().getAbsolutePath(); > + location.setText(result); > + config.setProperty(properties[1], result); > + } > + } > + > + }); > + > + c.weightx = 1; > + c.gridwidth = GridBagConstraints.REMAINDER; > + c.gridx = 0; > + c.gridy = 0; > + locationPanel.add(locationDescription, c); > + c.gridwidth = 1; > + c.gridy = 1; > + locationPanel.add(location, c); > + c.gridx = 1; > + c.weightx = 0; > + locationPanel.add(bLocation, c); > + > + JPanel diskSpacePanel = new NamedBorderPanel(Translator.R("TIFPDiskSpace"), new GridBagLayout()); > + JLabel lCompression = new JLabel(Translator.R("TIFPCompressionLevel")); > + ComboItem[] compressionOptions = { new ComboItem(Translator.R("TIFPNone"), "0"), > + new ComboItem("1", "1"), > + new ComboItem("2", "2"), > + new ComboItem("3", "3"), > + new ComboItem("4", "4"), > + new ComboItem("5", "5"), > + new ComboItem("6", "6"), > + new ComboItem("7", "7"), > + new ComboItem("8", "8"), > + new ComboItem(Translator.R("TIFPMax"), "9"), }; > + JComboBox cbCompression = new JComboBox(compressionOptions); > + cbCompression.setSelectedIndex(Integer.parseInt(this.config.getProperty(properties[3]))); > + cbCompression.addItemListener(new ItemListener() { > + > + @Override > + public void itemStateChanged(ItemEvent e) { > + config.setProperty(properties[3], ((ComboItem) e.getItem()).getValue()); > + } > + > + }); > + JLabel lCacheSize = new JLabel(Translator.R("TIFPCacheSize") + ":"); > + slCacheSize = new JSlider(minSize, maxSize, Integer.parseInt(this.config.getProperty(properties[2]))); > + slCacheSize.setMinorTickSpacing(50); > + slCacheSize.setPaintTicks(true); > + SpinnerNumberModel snmCacheSize = new SpinnerNumberModel(Integer.parseInt(this.config.getProperty(properties[2])), minSize, maxSize, 1); > + spCacheSize = new JSpinner(snmCacheSize); > + > + slCacheSize.addChangeListener(this); > + spCacheSize.addChangeListener(this); > + > + c.gridy = 0; > + c.gridx = 0; > + c.weightx = 1; > + diskSpacePanel.add(lCompression, c); > + c.gridx = 1; > + c.weightx = 0; > + diskSpacePanel.add(cbCompression, c); > + > + c.gridy = 1; > + c.gridx = 0; > + c.gridwidth = GridBagConstraints.REMAINDER; > + c.weightx = 1; > + diskSpacePanel.add(lCacheSize, c); > + c.gridwidth = 1; > + c.gridy = 2; > + diskSpacePanel.add(slCacheSize, c); > + c.gridx = 1; > + diskSpacePanel.add(spCacheSize, c); > + > + JPanel buttonDeleteRestore = new JPanel(new FlowLayout(FlowLayout.TRAILING)); > + JButton bDelete = new JButton(Translator.R("TIFPDeleteFiles") + "..."); > + JButton bRestore = new JButton(Translator.R("TIFPResoreDefaults")); > + //TODO: Add functionality to restore and delete. Also need to add a view button! > + bDelete.setEnabled(false); > + bRestore.setEnabled(false); > + buttonDeleteRestore.add(bDelete); > + buttonDeleteRestore.add(bRestore); > + > + c.weighty = 0; > + c.gridx = 0; > + c.gridy = 0; > + topPanel.add(enableCaching, c); > + c.gridy = 1; > + topPanel.add(locationPanel, c); > + c.gridy = 2; > + topPanel.add(diskSpacePanel, c); > + c.weighty = 1; > + c.gridy = 3; > + topPanel.add(buttonDeleteRestore, c); > + add(description, BorderLayout.NORTH); > + add(topPanel, BorderLayout.CENTER); > + } > + > + public void focusOnDefaultButton() { > + if (defaultFocusComponent != null) { > + defaultFocusComponent.requestFocusInWindow(); > + } > + } > + > + public static void main(String[] args) throws ConfigurationException { > + final DeploymentConfiguration config = new DeploymentConfiguration(); > + config.load(); > + System.out.println("Adv Proxy Settings Test Dialog"); > + JDialog f = new JDialog(); > + f.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE); > + f.setPreferredSize(new Dimension(500, 300)); > + TemporaryInternetFilesPanel apsp = new TemporaryInternetFilesPanel(config); > + f.add(apsp); > + f.pack(); > + f.setVisible(true); > + } > + > + @Override > + public void stateChanged(ChangeEvent e) { > + Object o = e.getSource(); > + if (o instanceof JSlider) > + spCacheSize.setValue(((JSlider) o).getValue()); > + else if (o instanceof JSpinner) slCacheSize.setValue((Integer) ((JSpinner) o).getValue()); > + > + config.setProperty(properties[2], spCacheSize.getValue().toString()); > + } > +} > diff -r 243ab4185293 controlpanel/org/classpath/controlpanel/network/AdvancedProxySettingsDialog.java > --- /dev/null Thu Jan 01 00:00:00 1970 +0000 > +++ b/controlpanel/org/classpath/controlpanel/network/AdvancedProxySettingsDialog.java Fri Nov 26 15:58:55 2010 -0500 > @@ -0,0 +1,103 @@ > +package org.classpath.controlpanel.network; > + > +import java.awt.Container; > +import java.awt.Dimension; > +import java.awt.Frame; > +import java.awt.GridBagConstraints; > +import java.awt.GridBagLayout; > +import java.awt.Toolkit; > +import java.awt.event.WindowAdapter; > +import java.awt.event.WindowEvent; > + > +import javax.swing.JDialog; > +import javax.swing.UIManager; > + > +import org.classpath.controlpanel.translator.Translator; > + > +import net.sourceforge.jnlp.runtime.DeploymentConfiguration; > + > +/** > + * This dialog provides a means for user to edit more of the proxy settings. > + * > + * @author asu > + * > + */ > + at SuppressWarnings("serial") > +public class AdvancedProxySettingsDialog extends JDialog { > + > + private boolean initialized = false; > + private static final String dialogTitle = Translator.R("APSDialogTitle"); > + private DeploymentConfiguration config; > + > + AdvancedProxySettingsPane topPanel; > + > + public AdvancedProxySettingsDialog(DeploymentConfiguration config) { > + super((Frame) null, dialogTitle, true); > + this.config = config; > + Container contentPane = getContentPane(); > + contentPane.setLayout(new GridBagLayout()); > + setMinimumSize(new Dimension(456, 404)); > + setPreferredSize(new Dimension(456, 404)); > + setModal(true); > + GridBagConstraints c = new GridBagConstraints(); > + c.fill = GridBagConstraints.BOTH; > + c.weightx = 1; > + c.weighty = 1; > + c.gridx = 0; > + c.gridy = 0; > + topPanel = new AdvancedProxySettingsPane(this, this.config); > + contentPane.add(topPanel, c); > + > + pack(); > + > + WindowAdapter adapter = new WindowAdapter() { > + private boolean gotFocus = false; > + > + public void windowGainedFocus(WindowEvent we) { > + // Once window gets focus, set initial focus > + if (!gotFocus) { > + topPanel.focusOnDefaultButton(); > + gotFocus = true; > + } > + } > + }; > + addWindowFocusListener(adapter); > + > + initialized = true; > + } > + > + public boolean isInitialized() { > + return initialized; > + } > + > + private void centerDialog() { > + Dimension screen = Toolkit.getDefaultToolkit().getScreenSize(); > + Dimension dialogSize = getSize(); > + > + setLocation((screen.width - dialogSize.width) / 2, (screen.height - dialogSize.height) / 2); > + } > + > + public static void showNetworkSettingsDialog(DeploymentConfiguration config) throws Exception { > + setSystemLookAndFeel(); > + > + AdvancedProxySettingsDialog nsd = new AdvancedProxySettingsDialog(config); > + nsd.setResizable(false); > + nsd.centerDialog(); > + nsd.setVisible(true); > + nsd.dispose(); > + } > + > + private static void setSystemLookAndFeel() { > + try { > + UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); > + } catch (Exception e) { > + // don't worry if we can't. > + } > + } > + > + public static void main(String[] args) throws Exception { > + final DeploymentConfiguration config = new DeploymentConfiguration(); > + config.load(); > + showNetworkSettingsDialog(config); > + } > +} > diff -r 243ab4185293 controlpanel/org/classpath/controlpanel/network/AdvancedProxySettingsPane.java > --- /dev/null Thu Jan 01 00:00:00 1970 +0000 > +++ b/controlpanel/org/classpath/controlpanel/network/AdvancedProxySettingsPane.java Fri Nov 26 15:58:55 2010 -0500 > @@ -0,0 +1,420 @@ > +package org.classpath.controlpanel.network; > + > +import java.awt.BorderLayout; > +import java.awt.Dimension; > +import java.awt.FlowLayout; > +import java.awt.GridBagConstraints; > +import java.awt.GridBagLayout; > +import java.awt.event.ActionEvent; > +import java.awt.event.ActionListener; > +import java.awt.event.KeyEvent; > +import java.awt.event.KeyListener; > +import java.awt.event.MouseEvent; > +import java.awt.event.MouseListener; > +import java.util.ArrayList; > +import java.util.List; > + > +import javax.naming.ConfigurationException; > +import javax.swing.BoxLayout; > +import javax.swing.JButton; > +import javax.swing.JCheckBox; > +import javax.swing.JComponent; > +import javax.swing.JDialog; > +import javax.swing.JLabel; > +import javax.swing.JPanel; > +import javax.swing.JScrollPane; > +import javax.swing.JTextArea; > +import javax.swing.JTextField; > + > +import org.classpath.controlpanel.NamedBorderPanel; > +import org.classpath.controlpanel.translator.Translator; > + > +import net.sourceforge.jnlp.runtime.DeploymentConfiguration; > + > +/** > + * This is the pane that modifies the proxy settings in more detail. > + * > + * @author asu > + * > + */ > + at SuppressWarnings("serial") > +public class AdvancedProxySettingsPane extends JPanel { > + > + private JDialog parent; > + private DeploymentConfiguration config; > + > + /** List of properties used by this panel */ > + private String[] properties = { "deployment.proxy.http.host", > + "deployment.proxy.http.port", > + "deployment.proxy.https.host", > + "deployment.proxy.https.port", > + "deployment.proxy.ftp.host", > + "deployment.proxy.ftp.port", > + "deployment.proxy.socks.host", > + "deployment.proxy.socks.port", > + "deployment.proxy.same", > + "deployment.proxy.override.hosts" }; > + private String[] fields = new String[properties.length]; > + > + private JComponent defaultFocusComponent = null; > + > + public AdvancedProxySettingsPane(JDialog parent, DeploymentConfiguration config) { > + super(); > + this.parent = parent; > + this.config = config; > + setLayout(new BorderLayout()); > + > + getProperties(); > + addComponents(); > + } > + > + private void getProperties() { > + for (int i = 0; i < fields.length; i++) { > + fields[i] = this.config.getProperty(properties[i]); > + } > + } > + > + private void addComponents() { > + JPanel topPanel = new JPanel(new GridBagLayout()); > + GridBagConstraints c = new GridBagConstraints(); > + > + JPanel servers = new NamedBorderPanel(Translator.R("APSServersPanel")); > + servers.setLayout(new GridBagLayout()); > + c.fill = GridBagConstraints.BOTH; > + c.gridheight = 1; > + > + JLabel type = new JLabel(Translator.R("APSProxyTypeLabel")); > + JLabel proxyAddress = new JLabel(Translator.R("APSProxyAddress")); > + JLabel port = new JLabel(Translator.R("SPSProxyPortLabel")); > + > + JLabel http = new JLabel(Translator.R("APSLabelHTTP") + ":"); > + final JTextField httpAddressField = new JTextField(fields[0]); > + final JTextField httpPortField = new JTextField(fields[1]); > + httpAddressField.addKeyListener(new KeyListener() { > + @Override > + public void keyPressed(KeyEvent e) { > + } > + > + @Override > + public void keyReleased(KeyEvent e) { > + fields[0] = httpAddressField.getText(); > + } > + > + @Override > + public void keyTyped(KeyEvent e) { > + } > + }); > + httpPortField.addKeyListener(new KeyListener() { > + @Override > + public void keyPressed(KeyEvent e) { > + } > + > + @Override > + public void keyReleased(KeyEvent e) { > + fields[1] = httpPortField.getText(); > + } > + > + @Override > + public void keyTyped(KeyEvent e) { > + } > + }); > + > + httpAddressField.addMouseListener(new MiddleClickListener(this.config, properties[0])); > + httpPortField.addMouseListener(new MiddleClickListener(this.config, properties[1])); > + > + JLabel secure = new JLabel(Translator.R("APSLabelSecure") + ":"); > + final JTextField secureAddressField = new JTextField(fields[2]); > + final JTextField securePortField = new JTextField(fields[3]); > + secureAddressField.addKeyListener(new KeyListener() { > + @Override > + public void keyPressed(KeyEvent e) { > + } > + > + @Override > + public void keyReleased(KeyEvent e) { > + fields[2] = secureAddressField.getText(); > + } > + > + @Override > + public void keyTyped(KeyEvent e) { > + } > + }); > + securePortField.addKeyListener(new KeyListener() { > + @Override > + public void keyPressed(KeyEvent e) { > + } > + > + @Override > + public void keyReleased(KeyEvent e) { > + fields[3] = securePortField.getText(); > + } > + > + @Override > + public void keyTyped(KeyEvent e) { > + } > + }); > + secureAddressField.addMouseListener(new MiddleClickListener(this.config, properties[2])); > + securePortField.addMouseListener(new MiddleClickListener(this.config, properties[3])); > + > + JLabel ftp = new JLabel(Translator.R("APSLabelFTP") + ":"); > + final JTextField ftpAddressField = new JTextField(fields[4]); > + final JTextField ftpPortField = new JTextField(fields[5]); > + ftpAddressField.addKeyListener(new KeyListener() { > + @Override > + public void keyPressed(KeyEvent e) { > + } > + > + @Override > + public void keyReleased(KeyEvent e) { > + fields[4] = ftpAddressField.getText(); > + } > + > + @Override > + public void keyTyped(KeyEvent e) { > + } > + }); > + ftpPortField.addKeyListener(new KeyListener() { > + @Override > + public void keyPressed(KeyEvent e) { > + } > + > + @Override > + public void keyReleased(KeyEvent e) { > + fields[5] = ftpPortField.getText(); > + } > + > + @Override > + public void keyTyped(KeyEvent e) { > + } > + }); > + ftpAddressField.addMouseListener(new MiddleClickListener(this.config, properties[4])); > + ftpPortField.addMouseListener(new MiddleClickListener(this.config, properties[5])); > + > + JLabel socks = new JLabel(Translator.R("APSLabelSocks") + ":"); > + final JTextField socksAddressField = new JTextField(fields[6]); > + final JTextField socksPortField = new JTextField(fields[7]); > + socksAddressField.addKeyListener(new KeyListener() { > + @Override > + public void keyPressed(KeyEvent e) { > + } > + > + @Override > + public void keyReleased(KeyEvent e) { > + fields[6] = socksAddressField.getText(); > + } > + > + @Override > + public void keyTyped(KeyEvent e) { > + } > + }); > + socksPortField.addKeyListener(new KeyListener() { > + @Override > + public void keyPressed(KeyEvent e) { > + } > + > + @Override > + public void keyReleased(KeyEvent e) { > + fields[7] = socksPortField.getText(); > + } > + > + @Override > + public void keyTyped(KeyEvent e) { > + } > + }); > + socksAddressField.addMouseListener(new MiddleClickListener(this.config, properties[6])); > + socksPortField.addMouseListener(new MiddleClickListener(this.config, properties[7])); > + > + JCheckBox sameProxyForAll = new JCheckBox(Translator.R("APSSameProxyForAllProtocols"), Boolean.parseBoolean(fields[8])); > + > + JPanel p = new JPanel(); > + BoxLayout bl = new BoxLayout(p, BoxLayout.Y_AXIS); > + p.setLayout(bl); > + p.add(sameProxyForAll); > + > + c.gridy = 0; > + c.gridwidth = 1; > + c.weightx = 0; > + c.gridx = 0; > + servers.add(type, c); > + c.gridwidth = 2; > + c.weightx = 1; > + c.gridx = 1; > + servers.add(proxyAddress, c); > + c.gridwidth = 1; > + c.weightx = 1; > + c.gridx = 4; > + servers.add(port, c); > + > + plant(1, http, httpAddressField, httpPortField, servers, c); > + plant(2, secure, secureAddressField, securePortField, servers, c); > + plant(3, ftp, ftpAddressField, ftpPortField, servers, c); > + plant(4, socks, socksAddressField, socksPortField, servers, c); > + c.gridwidth = 5; > + c.gridx = 0; > + c.gridy = 5; > + servers.add(p, c); > + > + JPanel exceptions = new NamedBorderPanel(Translator.R("APSExceptionsLabel")); > + exceptions.setLayout(new BorderLayout()); > + JLabel exceptionDescription = new JLabel(Translator.R("APSExceptionsDescription")); > + final JTextArea exceptionListArea = new JTextArea(); > + exceptionListArea.setLineWrap(true); > + exceptionListArea.setText(fields[9]); > + exceptionListArea.addKeyListener(new KeyListener() { > + @Override > + public void keyPressed(KeyEvent e) { > + } > + > + @Override > + public void keyReleased(KeyEvent e) { > + fields[9] = exceptionListArea.getText(); > + } > + > + @Override > + public void keyTyped(KeyEvent e) { > + } > + }); > + exceptionListArea.addMouseListener(new MiddleClickListener(this.config, fields[9])); > + JLabel exceptionFormat = new JLabel(Translator.R("APSExceptionInstruction")); > + JScrollPane exceptionScroll = new JScrollPane(exceptionListArea, JScrollPane.VERTICAL_SCROLLBAR_ALWAYS, JScrollPane.HORIZONTAL_SCROLLBAR_NEVER); > + exceptions.add(exceptionDescription, BorderLayout.NORTH); > + exceptions.add(exceptionScroll, BorderLayout.CENTER); > + exceptions.add(exceptionFormat, BorderLayout.SOUTH); > + > + c.gridx = 0; > + c.weightx = 1; > + c.weighty = 0; > + c.gridy = 0; > + topPanel.add(servers, c); > + c.weighty = 1; > + c.gridy = 1; > + topPanel.add(exceptions, c); > + > + this.add(topPanel); > + this.add(createButtonPanel(), BorderLayout.SOUTH); > + > + } > + > + private void plant(int y, JLabel label, JTextField addr, JTextField port, JPanel addTo, GridBagConstraints c) { > + c.gridy = y; > + > + c.gridwidth = 1; > + c.weightx = 0; > + c.gridx = 0; > + addTo.add(label, c); > + c.gridwidth = 2; > + c.weightx = 1; > + c.gridx = 1; > + addTo.add(addr, c); > + c.gridwidth = 1; > + c.weightx = 0; > + c.gridx = 3; > + addTo.add(new JLabel(":"), c); > + c.gridwidth = 1; > + c.weightx = 0.3; > + c.gridx = 4; > + addTo.add(port, c); > + } > + > + private JPanel createButtonPanel() { > + JPanel buttonPanel = new JPanel(new FlowLayout(FlowLayout.TRAILING)); > + > + List buttons = new ArrayList(); > + > + JButton okButton = new JButton(Translator.R("ButOk")); > + okButton.addActionListener(new ActionListener() { > + @Override > + public void actionPerformed(ActionEvent e) { > + > + for (int i = 0; i < fields.length; i++) > + config.setProperty(properties[i], fields[i]); > + > + parent.dispose(); > + } > + }); > + buttons.add(okButton); > + > + JButton cancelButton = new JButton(Translator.R("ButCancel")); > + cancelButton.addActionListener(new ActionListener() { > + @Override > + public void actionPerformed(ActionEvent e) { > + parent.dispose(); > + } > + }); > + buttons.add(cancelButton); > + > + int maxWidth = 0; > + int maxHeight = 0; > + for (JButton button : buttons) { > + maxWidth = Math.max(button.getMinimumSize().width, maxWidth); > + maxHeight = Math.max(button.getMinimumSize().height, maxHeight); > + } > + > + int wantedWidth = maxWidth + 10; > + int wantedHeight = maxHeight; > + for (JButton button : buttons) { > + button.setPreferredSize(new Dimension(wantedWidth, wantedHeight)); > + buttonPanel.add(button); > + } > + > + return buttonPanel; > + } > + > + public void focusOnDefaultButton() { > + if (defaultFocusComponent != null) { > + defaultFocusComponent.requestFocusInWindow(); > + } > + } > + > + public static void main(String[] args) throws ConfigurationException { > + final DeploymentConfiguration config = new DeploymentConfiguration(); > + config.load(); > + System.out.println("Adv Proxy Settings Test Dialog"); > + JDialog f = new JDialog(); > + f.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE); > + f.setPreferredSize(new Dimension(300, 300)); > + AdvancedProxySettingsPane apsp = new AdvancedProxySettingsPane(f, config); > + f.add(apsp); > + f.pack(); > + f.setVisible(true); > + } > +} > + > +class MiddleClickListener implements MouseListener { > + > + DeploymentConfiguration config; > + private String property; > + > + public MiddleClickListener(DeploymentConfiguration config, String property) { > + this.config = config; > + this.property = property; > + } > + > + @Override > + public void mouseClicked(MouseEvent e) { > + Object obj = e.getSource(); > + String result = null; > + if (obj instanceof JTextField) > + result = ((JTextField) obj).getText(); > + else if (obj instanceof JTextArea) result = ((JTextArea) obj).getText(); > + > + config.setProperty(property, result); > + } > + > + @Override > + public void mousePressed(MouseEvent e) { > + } > + > + @Override > + public void mouseReleased(MouseEvent e) { > + } > + > + @Override > + public void mouseEntered(MouseEvent e) { > + } > + > + @Override > + public void mouseExited(MouseEvent e) { > + } > + > +} > diff -r 243ab4185293 controlpanel/org/classpath/controlpanel/network/NetworkSettingsPanel.java > --- /dev/null Thu Jan 01 00:00:00 1970 +0000 > +++ b/controlpanel/org/classpath/controlpanel/network/NetworkSettingsPanel.java Fri Nov 26 15:58:55 2010 -0500 > @@ -0,0 +1,288 @@ > +package org.classpath.controlpanel.network; > + > +import java.awt.BorderLayout; > +import java.awt.CardLayout; > +import java.awt.Component; > +import java.awt.Dimension; > +import java.awt.FlowLayout; > +import java.awt.GridBagConstraints; > +import java.awt.GridBagLayout; > +import java.awt.event.ActionEvent; > +import java.awt.event.ActionListener; > +import java.awt.event.ItemEvent; > +import java.awt.event.ItemListener; > +import java.awt.event.KeyEvent; > +import java.awt.event.KeyListener; > +import java.util.ArrayList; > + > +import javax.swing.Box; > +import javax.swing.ButtonGroup; > +import javax.swing.JButton; > +import javax.swing.JCheckBox; > +import javax.swing.JComponent; > +import javax.swing.JLabel; > +import javax.swing.JPanel; > +import javax.swing.JRadioButton; > +import javax.swing.JTextField; > + > +import org.classpath.controlpanel.NamedBorderPanel; > +import org.classpath.controlpanel.translator.Translator; > + > +import net.sourceforge.jnlp.runtime.DeploymentConfiguration; > + > +/** > + * This is the pane used with creating a JDialog version. This allows changing > + * the network configuration: Proxy > + * > + * @author asu > + * > + */ > + at SuppressWarnings("serial") > +public class NetworkSettingsPanel extends JPanel implements ActionListener { > + > + private DeploymentConfiguration config; > + > + private JPanel description; > + private ArrayList proxyPanels = new ArrayList(); // The stuff with editable fields > + > + private JComponent defaultFocusComponent = null; > + > + /** List of properties used by this panel */ > + private String[] properties = { "deployment.proxy.type", > + "deployment.proxy.http.host", > + "deployment.proxy.http.port", > + "deployment.proxy.bypass.local", > + "deployment.proxy.auto.config.url", }; > + private String[] fields = new String[properties.length]; > + > + public NetworkSettingsPanel(DeploymentConfiguration config) { > + super(); > + this.config = config; > + setLayout(new BorderLayout()); > + > + getProperties(); > + addComponents(); > + } > + > + private void getProperties() { > + > + for (int i = 0; i < properties.length; i++) > + fields[i] = this.config.getProperty(properties[i]); > + } > + > + // create the GUI here. > + protected void addComponents() { > + JPanel settingPanel = new NamedBorderPanel(Translator.R("CPHeadNetworkSettings")); > + settingPanel.setLayout(new GridBagLayout()); > + GridBagConstraints c = new GridBagConstraints(); > + c.fill = GridBagConstraints.BOTH; > + c.weightx = 1; > + c.weighty = 1; > + c.gridx = 0; > + > + JLabel networkDesc = new JLabel("" + Translator.R("CPNetworkSettingsDescription") + "
"); > + > + JLabel description = new JLabel("" + Translator.R("NSDescription-1") + ""); > + JLabel description0 = new JLabel("" + Translator.R("NSDescription0") + ""); > + JLabel description1 = new JLabel("" + Translator.R("NSDescription1") + ""); > + JLabel description2 = new JLabel("" + Translator.R("NSDescription2") + ""); > + JLabel description3 = new JLabel("" + Translator.R("NSDescription3") + ""); > + > + this.description = new JPanel(new CardLayout()); > + this.description.add(description, "-1"); > + this.description.add(description0, "0"); > + this.description.add(description1, "1"); > + this.description.add(description2, "2"); > + this.description.add(description3, "3"); > + > + // Settings for selecting Proxy Server > + JPanel proxyServerPanel = new JPanel(new BorderLayout()); > + JPanel proxyLocationPanel = new JPanel(new FlowLayout(FlowLayout.LEADING)); > + JPanel proxyBypassPanel = new JPanel(new FlowLayout(FlowLayout.LEADING)); > + > + JLabel addressLabel = new JLabel(Translator.R("NSAddress") + ":"); > + JLabel portLabel = new JLabel(Translator.R("NSPort") + ":"); > + final JTextField addressField = new JTextField(fields[1], 10); > + addressField.addKeyListener(new KeyListener() { > + @Override > + public void keyPressed(KeyEvent e) { > + } > + > + @Override > + public void keyReleased(KeyEvent e) { > + fields[1] = addressField.getText(); > + config.setProperty(properties[1], fields[1]); > + } > + > + @Override > + public void keyTyped(KeyEvent e) { > + } > + }); > + addressField.addMouseListener(new MiddleClickListener(this.config, properties[1])); > + final JTextField portField = new JTextField(fields[2], 3); > + portField.addKeyListener(new KeyListener() { > + @Override > + public void keyPressed(KeyEvent e) { > + } > + > + @Override > + public void keyReleased(KeyEvent e) { > + fields[2] = portField.getText(); > + config.setProperty(properties[2], fields[2]); > + } > + > + @Override > + public void keyTyped(KeyEvent e) { > + } > + }); > + JButton advancedProxyButton = new JButton(Translator.R("NSAdvanced") + "..."); > + > + advancedProxyButton.addActionListener(new ActionListener() { > + @Override > + public void actionPerformed(ActionEvent e) { > + try { > + AdvancedProxySettingsDialog.showNetworkSettingsDialog(config); > + } catch (Exception e1) { > + e1.printStackTrace(); > + } > + } > + }); > + > + JCheckBox bypassCheckBox = new JCheckBox(Translator.R("NSBypassLocal"), Boolean.parseBoolean(fields[3])); > + bypassCheckBox.addItemListener(new ItemListener() { > + @Override > + public void itemStateChanged(ItemEvent e) { > + fields[3] = String.valueOf(e.getStateChange() == ItemEvent.SELECTED); > + config.setProperty(properties[3], fields[3]); > + } > + > + }); > + proxyLocationPanel.add(Box.createRigidArea(new Dimension(13, 0))); > + proxyLocationPanel.add(addressLabel); > + proxyLocationPanel.add(addressField); > + proxyLocationPanel.add(portLabel); > + proxyLocationPanel.add(portField); > + proxyLocationPanel.add(advancedProxyButton); > + proxyBypassPanel.add(Box.createRigidArea(new Dimension(10, 0))); > + proxyBypassPanel.add(bypassCheckBox); > + > + proxyServerPanel.add(proxyLocationPanel, BorderLayout.CENTER); > + proxyServerPanel.add(proxyBypassPanel, BorderLayout.SOUTH); > + > + JRadioButton directConnection = new JRadioButton(Translator.R("NSDirectConnection"), fields[0].equals("0")); > + directConnection.setActionCommand("0"); > + directConnection.addActionListener(this); > + > + JRadioButton useProxyServer = new JRadioButton(Translator.R("NSManualProxy"), fields[0].equals("1")); > + useProxyServer.setActionCommand("1"); > + useProxyServer.addActionListener(this); > + > + JRadioButton useAutoProxyConfigScript = new JRadioButton(Translator.R("NSAutoProxy"), fields[0].equals("2")); > + useAutoProxyConfigScript.setActionCommand("2"); > + useAutoProxyConfigScript.addActionListener(this); > + > + JRadioButton useBrowserSettings = new JRadioButton(Translator.R("NSBrowserProxy"), fields[0].equals("3")); > + useBrowserSettings.setActionCommand("3"); > + useBrowserSettings.addActionListener(this); > + > + ButtonGroup modeSelect = new ButtonGroup(); > + modeSelect.add(useBrowserSettings); > + modeSelect.add(useProxyServer); > + modeSelect.add(useAutoProxyConfigScript); > + modeSelect.add(directConnection); > + > + // Settings for Automatic Proxy Configuration Script > + JPanel proxyAutoPanel = new JPanel(new FlowLayout(FlowLayout.LEADING)); > + JLabel locationLabel = new JLabel(Translator.R("NSScripLocation") + ":"); > + final JTextField locationField = new JTextField(fields[4], 20); > + locationField.addKeyListener(new KeyListener() { > + @Override > + public void keyPressed(KeyEvent e) { > + } > + > + @Override > + public void keyReleased(KeyEvent e) { > + String value = locationField.getText(); > + if (value.trim().equals("")) value = null; > + fields[4] = value; > + config.setProperty(properties[4], value); > + } > + > + @Override > + public void keyTyped(KeyEvent e) { > + } > + }); > + > + proxyAutoPanel.add(Box.createRigidArea(new Dimension(13, 0))); > + proxyAutoPanel.add(locationLabel); > + proxyAutoPanel.add(locationField); > + > + c.gridy = 0; > + settingPanel.add(networkDesc, c); > + c.gridy = 1; > + settingPanel.add(this.description, c); > + c.gridy = 2; > + settingPanel.add(directConnection, c); > + c.gridy = 3; > + settingPanel.add(useBrowserSettings, c); > + c.gridy = 4; > + settingPanel.add(useProxyServer, c); > + c.gridy = 5; > + settingPanel.add(proxyServerPanel, c); > + proxyPanels.add(proxyServerPanel); > + c.gridy = 6; > + settingPanel.add(useAutoProxyConfigScript, c); > + c.gridy = 7; > + settingPanel.add(proxyAutoPanel, c); > + proxyPanels.add(proxyAutoPanel); > + > + setState(); // depending on default setting we will enable or disable > + > + this.add(settingPanel, BorderLayout.CENTER); > + } > + > + public void focusOnDefaultButton() { > + if (defaultFocusComponent != null) { > + defaultFocusComponent.requestFocusInWindow(); > + } > + } > + > + private void enablePanel(JPanel panel, boolean enable) { > + // This will be used to enable all components in this panel recursively. > + // Ridiculously slow if lots of nested panels and may error, too many > + // calls? > + for (Component c : panel.getComponents()) { > + if (c instanceof JPanel) { > + enablePanel((JPanel) c, enable); > + } > + c.setEnabled(enable); > + } > + } > + > + @Override > + public void actionPerformed(ActionEvent e) { > + fields[0] = e.getActionCommand(); > + config.setProperty(properties[0], fields[0]); > + setState(); > + } > + > + /** > + * This enables and disables the appropriate panels. > + */ > + private void setState() { > + ((CardLayout) this.description.getLayout()).show(this.description, fields[0]); > + if (fields[0].equals("0")) { > + for (JPanel panel : proxyPanels) > + enablePanel(panel, false); > + } else if (fields[0].equals("1")) { > + enablePanel(proxyPanels.get(1), false); > + enablePanel(proxyPanels.get(0), true); > + } else if (fields[0].equals("2")) { > + enablePanel(proxyPanels.get(0), false); > + enablePanel(proxyPanels.get(1), true); > + } else if (fields[0].equals("3")) { > + for (JPanel panel : proxyPanels) > + enablePanel(panel, false); > + } > + } > +} > diff -r 243ab4185293 controlpanel/org/classpath/controlpanel/security/viewer/CertificatePane.java > --- /dev/null Thu Jan 01 00:00:00 1970 +0000 > +++ b/controlpanel/org/classpath/controlpanel/security/viewer/CertificatePane.java Fri Nov 26 15:58:55 2010 -0500 > @@ -0,0 +1,496 @@ > +/* CertificatePane.java > + Copyright (C) 2008 Red Hat, Inc. > + > +This file is part of IcedTea. > + > +IcedTea is free software; you can redistribute it and/or > +modify it under the terms of the GNU General Public License as published by > +the Free Software Foundation, version 2. > + > +IcedTea is distributed in the hope that it will be useful, > +but WITHOUT ANY WARRANTY; without even the implied warranty of > +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU > +General Public License for more details. > + > +You should have received a copy of the GNU General Public License > +along with IcedTea; see the file COPYING. If not, write to > +the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA > +02110-1301 USA. > + > +Linking this library statically or dynamically with other modules is > +making a combined work based on this library. Thus, the terms and > +conditions of the GNU General Public License cover the whole > +combination. > + > +As a special exception, the copyright holders of this library give you > +permission to link this library with independent modules to produce an > +executable, regardless of the license terms of these independent > +modules, and to copy and distribute the resulting executable under > +terms of your choice, provided that you also meet, for each linked > +independent module, the terms and conditions of the license of that > +module. An independent module is a module which is not derived from > +or based on this library. If you modify this library, you may extend > +this exception to your version of the library, but you are not > +obligated to do so. If you do not wish to do so, delete this > +exception statement from your version. > +*/ > + > +package org.classpath.controlpanel.security.viewer; > + > +import static net.sourceforge.jnlp.runtime.Translator.R; > + > +import java.awt.BorderLayout; > +import java.awt.Dimension; > +import java.awt.FlowLayout; > +import java.awt.event.ActionEvent; > +import java.awt.event.ActionListener; > +import java.awt.event.KeyEvent; > +import java.io.File; > +import java.io.FileOutputStream; > +import java.io.OutputStream; > +import java.io.PrintStream; > +import java.security.KeyStore; > +import java.security.cert.Certificate; > +import java.security.cert.X509Certificate; > +import java.util.ArrayList; > +import java.util.Enumeration; > +import java.util.List; > + > +import javax.swing.BorderFactory; > +import javax.swing.JButton; > +import javax.swing.JComboBox; > +import javax.swing.JComponent; > +import javax.swing.JDialog; > +import javax.swing.JFileChooser; > +import javax.swing.JLabel; > +import javax.swing.JOptionPane; > +import javax.swing.JPanel; > +import javax.swing.JScrollPane; > +import javax.swing.JTabbedPane; > +import javax.swing.JTable; > +import javax.swing.event.ChangeEvent; > +import javax.swing.event.ChangeListener; > +import javax.swing.table.DefaultTableModel; > + > +import net.sourceforge.jnlp.security.CertificateUtils; > +import net.sourceforge.jnlp.security.KeyStores; > +import net.sourceforge.jnlp.security.SecurityUtil; > +import net.sourceforge.jnlp.security.SecurityWarningDialog; > +import net.sourceforge.jnlp.security.KeyStores.Level; > +import net.sourceforge.jnlp.util.FileUtils; > + > +public class CertificatePane extends JPanel { > + > + /** > + * The certificates stored in the certificates file. > + */ > + private ArrayList certs = null; > + > + private static final Dimension TABLE_DIMENSION = new Dimension(500,200); > + > + /** > + * "Issued To" and "Issued By" string pairs for certs. > + */ > + private String[][] issuedToAndBy = null; > + private final String[] columnNames = { R("CVIssuedTo"), R("CVIssuedBy") }; > + > + private final CertificateType[] certificateTypes = new CertificateType[] { > + new CertificateType(KeyStores.Type.CA_CERTS), > + new CertificateType(KeyStores.Type.JSSE_CA_CERTS), > + new CertificateType(KeyStores.Type.CERTS), > + new CertificateType(KeyStores.Type.JSSE_CERTS), > + }; > + > + JTabbedPane tabbedPane; > + private final JTable userTable; > + private final JTable systemTable; > + private JComboBox certificateTypeCombo; > + private KeyStores.Type currentKeyStoreType; > + private KeyStores.Level currentKeyStoreLevel; > + > + /** JComponents that should be disbled for system store */ > + private final List disableForSystem; > + > + private JDialog parent; > + private JComponent defaultFocusComponent = null; > + > + /** > + * The Current KeyStore. Only one table/tab is visible for interaction to > + * the user. This KeyStore corresponds to that. > + */ > + private KeyStore keyStore = null; > + > + public CertificatePane(JDialog parent) { > + super(); > + this.parent = parent; > + > + userTable = new JTable(null); > + systemTable = new JTable(null); > + disableForSystem = new ArrayList(); > + > + addComponents(); > + > + currentKeyStoreType = ((CertificateType)(certificateTypeCombo.getSelectedItem())).getType(); > + if (tabbedPane.getSelectedIndex() == 0) { > + currentKeyStoreLevel = Level.USER; > + } else { > + currentKeyStoreLevel = Level.SYSTEM; > + } > + > + repopulateTables(); > + } > + > + /** > + * Reads the user's trusted.cacerts keystore. > + */ > + private void initializeKeyStore() { > + try { > + keyStore = KeyStores.getKeyStore(currentKeyStoreLevel, currentKeyStoreType); > + } catch (Exception e) { > + e.printStackTrace(); > + } > + } > + > + //create the GUI here. > + protected void addComponents() { > + > + JPanel main = new JPanel(new BorderLayout()); > + > + JPanel certificateTypePanel = new JPanel(new BorderLayout()); > + certificateTypePanel.setBorder(BorderFactory.createEmptyBorder(5,5,5,5)); > + > + JLabel certificateTypeLabel = new JLabel(R("CVCertificateType")); > + > + certificateTypeCombo = new JComboBox(certificateTypes); > + certificateTypeCombo.addActionListener(new CertificateTypeListener()); > + > + certificateTypePanel.add(certificateTypeLabel, BorderLayout.LINE_START); > + certificateTypePanel.add(certificateTypeCombo, BorderLayout.CENTER); > + > + JPanel tablePanel = new JPanel(new BorderLayout()); > + > + // User Table > + DefaultTableModel userTableModel > + = new DefaultTableModel(issuedToAndBy, columnNames); > + userTable.setModel(userTableModel); > + userTable.getTableHeader().setReorderingAllowed(false); > + userTable.setFillsViewportHeight(true); > + JScrollPane userTablePane = new JScrollPane(userTable); > + userTablePane.setPreferredSize(TABLE_DIMENSION); > + userTablePane.setSize(TABLE_DIMENSION); > + userTablePane.setBorder(BorderFactory.createEmptyBorder(10,10,10,10)); > + > + // System Table > + DefaultTableModel systemTableModel = new DefaultTableModel(issuedToAndBy, columnNames); > + systemTable.setModel(systemTableModel); > + systemTable.getTableHeader().setReorderingAllowed(false); > + systemTable.setFillsViewportHeight(true); > + JScrollPane systemTablePane = new JScrollPane(systemTable); > + systemTablePane.setPreferredSize(TABLE_DIMENSION); > + systemTablePane.setSize(TABLE_DIMENSION); > + systemTablePane.setBorder(BorderFactory.createEmptyBorder(10,10,10,10)); > + > + tabbedPane = new JTabbedPane(); > + tabbedPane.addTab(R("CVUser"), userTablePane); > + tabbedPane.addTab(R("CVSystem"), systemTablePane); > + tabbedPane.addChangeListener(new TabChangeListener()); > + > + JPanel buttonPanel = new JPanel(new FlowLayout()); > + > + String[] buttonNames = {R("CVImport"), R("CVExport"), R("CVRemove"), R("CVDetails")}; > + char[] buttonMnemonics = { KeyEvent.VK_I, > + KeyEvent.VK_E, > + KeyEvent.VK_M, > + KeyEvent.VK_D}; > + ActionListener[] listeners = { new ImportButtonListener(), > + new ExportButtonListener(), > + new RemoveButtonListener(), > + new DetailsButtonListener() }; > + JButton button; > + > + //get the max width > + int maxWidth = 0; > + for (int i = 0; i < buttonNames.length; i++) { > + button = new JButton(buttonNames[i]); > + maxWidth = Math.max(maxWidth, button.getMinimumSize().width); > + } > + > + for (int i = 0; i < buttonNames.length; i++) { > + button = new JButton(buttonNames[i]); > + button.setMnemonic(buttonMnemonics[i]); > + button.addActionListener(listeners[i]); > + button.setSize(maxWidth, button.getSize().height); > + // import and remove buttons > + if (i == 0 || i == 2) { > + disableForSystem.add(button); > + } > + buttonPanel.add(button); > + } > + > + tablePanel.add(tabbedPane, BorderLayout.CENTER); > + tablePanel.add(buttonPanel, BorderLayout.SOUTH); > + > + main.add(certificateTypePanel, BorderLayout.NORTH); > + main.add(tablePanel, BorderLayout.CENTER); > + if (parent != null){ > + JPanel closePanel = new JPanel(new BorderLayout()); > + closePanel.setBorder(BorderFactory.createEmptyBorder(7,7,7,7)); > + JButton closeButton = new JButton(R("ButClose")); > + closeButton.addActionListener(new CloseButtonListener()); > + defaultFocusComponent = closeButton; > + closePanel.add(closeButton, BorderLayout.EAST); > + main.add(closePanel, BorderLayout.SOUTH); > + } > + > + add(main); > + > + } > + > + /** > + * Read in the optionPane's keystore to issuedToAndBy. > + */ > + private void readKeyStore() { > + > + Enumeration aliases = null; > + certs = new ArrayList(); > + try { > + > + //Get all of the X509Certificates and put them into an ArrayList > + aliases = keyStore.aliases(); > + while (aliases.hasMoreElements()) { > + Certificate c = keyStore.getCertificate(aliases.nextElement()); > + if (c instanceof X509Certificate) > + certs.add((X509Certificate)c); > + } > + > + //get the publisher and root information > + issuedToAndBy = new String[certs.size()][2]; > + for (int i = 0; i < certs.size(); i++) { > + X509Certificate c = certs.get(i); > + issuedToAndBy[i][0] = > + SecurityUtil.getCN(c.getSubjectX500Principal().getName()); > + issuedToAndBy[i][1] = > + SecurityUtil.getCN(c.getIssuerX500Principal().getName()); > + } > + } catch (Exception e) { > + //TODO > + e.printStackTrace(); > + } > + } > + > + /** > + * Re-reads the certs file and repopulates the JTable. This is typically > + * called after a certificate was deleted from the keystore. > + */ > + private void repopulateTables() { > + initializeKeyStore(); > + readKeyStore(); > + DefaultTableModel tableModel > + = new DefaultTableModel(issuedToAndBy, columnNames); > + > + userTable.setModel(tableModel); > + > + tableModel = new DefaultTableModel(issuedToAndBy, columnNames); > + systemTable.setModel(tableModel); > + } > + > + public void focusOnDefaultButton() { > + if (defaultFocusComponent != null) { > + defaultFocusComponent.requestFocusInWindow(); > + } > + } > + > + /** Allows storing KeyStores.Types in a JComponent */ > + private class CertificateType { > + private final KeyStores.Type type; > + > + public CertificateType(KeyStores.Type type) { > + this.type = type; > + } > + > + public KeyStores.Type getType() { > + return type; > + } > + > + public String toString() { > + return KeyStores.toDisplayableString(null, type); > + } > + } > + > + /** Invoked when a user selects a different certificate type */ > + private class CertificateTypeListener implements ActionListener { > + @Override > + public void actionPerformed(ActionEvent e) { > + JComboBox source = (JComboBox) e.getSource(); > + CertificateType type = (CertificateType) source.getSelectedItem(); > + currentKeyStoreType = type.getType(); > + repopulateTables(); > + } > + } > + > + /** > + * Invoked when a user selects a different tab (switches from user to system > + * or vice versa). Changes the currentKeyStore Enables or disables buttons. > + */ > + private class TabChangeListener implements ChangeListener { > + @Override > + public void stateChanged(ChangeEvent e) { > + JTabbedPane source = (JTabbedPane) e.getSource(); > + switch (source.getSelectedIndex()) { > + case 0: > + currentKeyStoreLevel = Level.USER; > + for (JComponent component : disableForSystem) { > + component.setEnabled(true); > + } > + break; > + case 1: > + currentKeyStoreLevel = Level.SYSTEM; > + for (JComponent component : disableForSystem) { > + component.setEnabled(false); > + } > + break; > + } > + repopulateTables(); > + > + } > + } > + > + private class ImportButtonListener implements ActionListener { > + public void actionPerformed(ActionEvent e) { > + > + JFileChooser chooser = new JFileChooser(); > + int returnVal = chooser.showOpenDialog(parent); > + if(returnVal == JFileChooser.APPROVE_OPTION) { > + try { > + KeyStore ks = keyStore; > + CertificateUtils.addToKeyStore(chooser.getSelectedFile(), ks); > + File keyStoreFile = new File(KeyStores > + .getKeyStoreLocation(currentKeyStoreLevel, currentKeyStoreType)); > + if (!keyStoreFile.isFile()) { > + FileUtils.createRestrictedFile(keyStoreFile, true); > + } > + > + OutputStream os = new FileOutputStream(keyStoreFile); > + ks.store(os, KeyStores.getPassword()); > + repopulateTables(); > + } catch (Exception ex) { > + // TODO: handle exception > + ex.printStackTrace(); > + } > + } > + } > + } > + > + private class ExportButtonListener implements ActionListener { > + public void actionPerformed(ActionEvent e) { > + > + JTable table = null; > + if (currentKeyStoreLevel == Level.USER) { > + table = userTable; > + } else { > + table = systemTable; > + } > + > + //For now, let's just export in -rfc mode as keytool does. > + //we'll write to a file the exported certificate. > + > + > + try { > + int selectedRow = table.getSelectedRow(); > + if (selectedRow != -1) { > + JFileChooser chooser = new JFileChooser(); > + int returnVal = chooser.showOpenDialog(parent); > + if(returnVal == JFileChooser.APPROVE_OPTION) { > + String alias = keyStore.getCertificateAlias(certs > + .get(selectedRow)); > + if (alias != null) { > + Certificate c = keyStore.getCertificate(alias); > + PrintStream ps = new PrintStream(chooser.getSelectedFile().getAbsolutePath()); > + CertificateUtils.dump(c, ps); > + repopulateTables(); > + } > + } > + } > + } catch (Exception ex) { > + // TODO > + ex.printStackTrace(); > + } > + } > + } > + > + private class RemoveButtonListener implements ActionListener { > + > + /** > + * Removes a certificate from the keyStore and writes changes to disk. > + */ > + public void actionPerformed(ActionEvent e) { > + > + JTable table = null; > + if (currentKeyStoreLevel == Level.USER) { > + table = userTable; > + } else { > + table = systemTable; > + } > + try { > + int selectedRow = table.getSelectedRow(); > + > + if (selectedRow != -1){ > + String alias = keyStore.getCertificateAlias(certs.get(selectedRow)); > + if (alias != null) { > + > + int i = JOptionPane.showConfirmDialog(parent, > + R("CVRemoveConfirmMessage"), > + R("CVRemoveConfirmTitle"), > + JOptionPane.YES_NO_OPTION); > + if (i == 0) { > + keyStore.deleteEntry(alias); > + File keyStoreFile = new File(KeyStores > + .getKeyStoreLocation(currentKeyStoreLevel, currentKeyStoreType)); > + if (!keyStoreFile.isFile()) { > + FileUtils.createRestrictedFile(keyStoreFile, true); > + } > + FileOutputStream fos = new FileOutputStream(keyStoreFile); > + keyStore.store(fos, KeyStores.getPassword()); > + fos.close(); > + } > + } > + repopulateTables(); > + } > + } catch (Exception ex) { > + // TODO > + ex.printStackTrace(); > + } > + > + } > + } > + > + private class DetailsButtonListener implements ActionListener { > + > + /** > + * Shows the details of a trusted certificate. > + */ > + public void actionPerformed(ActionEvent e) { > + > + JTable table = null; > + if (currentKeyStoreLevel == Level.USER) { > + table = userTable; > + } else { > + table = systemTable; > + } > + > + int selectedRow = table.getSelectedRow(); > + if (selectedRow != -1 && selectedRow >= 0) { > + X509Certificate c = certs.get(selectedRow); > + SecurityWarningDialog.showSingleCertInfoDialog(c, parent); > + } > + } > + } > + > + private class CloseButtonListener implements ActionListener { > + @Override > + public void actionPerformed(ActionEvent e) { > + parent.dispose(); > + } > + } > + > +} > diff -r 243ab4185293 controlpanel/org/classpath/controlpanel/security/viewer/CertificateViewer.java > --- /dev/null Thu Jan 01 00:00:00 1970 +0000 > +++ b/controlpanel/org/classpath/controlpanel/security/viewer/CertificateViewer.java Fri Nov 26 15:58:55 2010 -0500 > @@ -0,0 +1,125 @@ > +/* CertificateViewer.java > + Copyright (C) 2008 Red Hat, Inc. > + > +This file is part of IcedTea. > + > +IcedTea is free software; you can redistribute it and/or > +modify it under the terms of the GNU General Public License as published by > +the Free Software Foundation, version 2. > + > +IcedTea is distributed in the hope that it will be useful, > +but WITHOUT ANY WARRANTY; without even the implied warranty of > +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU > +General Public License for more details. > + > +You should have received a copy of the GNU General Public License > +along with IcedTea; see the file COPYING. If not, write to > +the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA > +02110-1301 USA. > + > +Linking this library statically or dynamically with other modules is > +making a combined work based on this library. Thus, the terms and > +conditions of the GNU General Public License cover the whole > +combination. > + > +As a special exception, the copyright holders of this library give you > +permission to link this library with independent modules to produce an > +executable, regardless of the license terms of these independent > +modules, and to copy and distribute the resulting executable under > +terms of your choice, provided that you also meet, for each linked > +independent module, the terms and conditions of the license of that > +module. An independent module is a module which is not derived from > +or based on this library. If you modify this library, you may extend > +this exception to your version of the library, but you are not > +obligated to do so. If you do not wish to do so, delete this > +exception statement from your version. > +*/ > + > +package org.classpath.controlpanel.security.viewer; > + > +import static net.sourceforge.jnlp.runtime.Translator.R; > + > +import java.awt.BorderLayout; > +import java.awt.Container; > +import java.awt.Dimension; > +import java.awt.Frame; > +import java.awt.Toolkit; > +import java.awt.event.WindowAdapter; > +import java.awt.event.WindowEvent; > + > +import javax.swing.JDialog; > +import javax.swing.UIManager; > + > +import net.sourceforge.jnlp.runtime.JNLPRuntime; > + > +public class CertificateViewer extends JDialog { > + > + private boolean initialized = false; > + private static final String dialogTitle = R("CVCertificateViewer"); > + > + CertificatePane panel; > + > + public CertificateViewer() { > + super((Frame)null, dialogTitle, true); > + > + Container contentPane = getContentPane(); > + contentPane.setLayout(new BorderLayout()); > + > + panel = new CertificatePane(this); > + > + add(panel); > + > + pack(); > + > + WindowAdapter adapter = new WindowAdapter() { > + private boolean gotFocus = false; > + > + public void windowGainedFocus(WindowEvent we) { > + // Once window gets focus, set initial focus > + if (!gotFocus) { > + panel.focusOnDefaultButton(); > + gotFocus = true; > + } > + } > + }; > + addWindowFocusListener(adapter); > + > + initialized = true; > + } > + > + public boolean isInitialized(){ > + return initialized; > + } > + > + private void centerDialog() { > + Dimension screen = Toolkit.getDefaultToolkit().getScreenSize(); > + Dimension dialogSize = getSize(); > + > + setLocation((screen.width - dialogSize.width)/2, > + (screen.height - dialogSize.height)/2); > + } > + > + > + public static void showCertificateViewer() throws Exception { > + JNLPRuntime.initialize(true); > + setSystemLookAndFeel(); > + > + CertificateViewer cv = new CertificateViewer(); > + cv.setResizable(true); > + cv.centerDialog(); > + cv.setVisible(true); > + cv.dispose(); > + } > + > + private static void setSystemLookAndFeel() { > + try { > + UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); > + } catch (Exception e) { > + // don't worry if we can't. > + } > + } > + > + public static void main(String[] args) throws Exception { > + CertificateViewer.showCertificateViewer(); > + } > +} > diff -r 243ab4185293 controlpanel/org/classpath/controlpanel/translator/Translator.java > --- /dev/null Thu Jan 01 00:00:00 1970 +0000 > +++ b/controlpanel/org/classpath/controlpanel/translator/Translator.java Fri Nov 26 15:58:55 2010 -0500 > @@ -0,0 +1,42 @@ > +// Copyright (C) 2010 Red Hat, Inc. > +// > +// This library is free software; you can redistribute it and/or > +// modify it under the terms of the GNU Lesser General Public > +// License as published by the Free Software Foundation; either > +// version 2.1 of the License, or (at your option) any later version. > +// > +// This library is distributed in the hope that it will be useful, > +// but WITHOUT ANY WARRANTY; without even the implied warranty of > +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU > +// Lesser General Public License for more details. > +// > +// You should have received a copy of the GNU Lesser General Public > +// License along with this library; if not, write to the Free Software > +// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. > + > +package org.classpath.controlpanel.translator; > + > +import net.sourceforge.jnlp.runtime.JNLPRuntime; > + > +/** > + * Utility class to provide simple methods to help localize messages > + */ > +public class Translator { > + > + /** > + * @return the localized string for the message > + */ > + public static String R(String message, Object... params) { > + return JNLPRuntime.getMessage(message, params); > + } > + > + /** > + * Return a translated (localized) version of the message > + * @param message the message to translate > + * @return a string representing the localized message > + */ > + public static String R(String message) { > + return JNLPRuntime.getMessage(message); > + } > + > +} > diff -r 243ab4185293 netx/net/sourceforge/jnlp/resources/Messages.properties > --- a/netx/net/sourceforge/jnlp/resources/Messages.properties Fri Nov 26 15:21:56 2010 +0000 > +++ b/netx/net/sourceforge/jnlp/resources/Messages.properties Fri Nov 26 15:58:55 2010 -0500 > @@ -233,3 +233,130 @@ > KSCaCerts=Trusted Root CA Certificates > KSJsseCaCerts=Trusted JSSE Root CA Certificates, > KSClientCerts=Client Authentication Certificates > + > +# Control Panel - Tab Descriptions > +CPAboutDescription=View version information about Icedtea Control Panel. > +CPNetworkSettingsDescription=Configure network settings, including how IcedTea Web connects to the internet and whether to use any proxies. > +CPNetworkSettingsDescription2=Network settings are used when making internet connections. By default, Java will use the network settings in your web browser. Only advanced users should modify these settings. > +CPTempInternetFilesDescription=Java stores application data for faster execution the next time you run it. > +CPJRESettingsDescription=View and manage Java Runtime Environment versions and settings for Java applications and applets. > +CPCertificatesDescription=Use certificates to positively identify yourself, certifications, authorities, and plublishers. > +CPSecurityDescription=Use this to configure security settings. > +CPDebuggingDescription=Enable options here to help with debugging > +CPDesktopIntegrationDescription=Set whether or not to allow creation of desktop shortcut. > + > +# Control Panel - Buttons > +CPButAbout=About... > +CPButNetworkSettings=Network Settings... > +CPButSettings=Settings... > +CPButView=View... > +CPButCertificates=Certificates... > + > +# Control Panel - Headers > +CPHead=IcedTea Web Control Panel > +CPHeadAbout=About > +CPHeadNetworkSettings=Network Proxy Settings > +CPHeadTempInternetFiles=Temporary Internet Files > +CPHeadJRESettings=Java Runtime Environment Settings > +CPHeadCertificates=Certificates > +CPHeadDebugging=Debugging Settings > +CPHeadDesktopIntegration=Desktop Integrations > +CPHeadSecurity=Security Settings > + > +# Control Panel - Tabs > +CPTabAbout=About IcedTea-Web > +CPTabCache=Cache > +CPTabCertificate=Certificates > +CPTabClassLoader=Class Loaders > +CPTabDebugging=Debugging > +CPTabDesktopIntegration=Desktop Integration > +CPTabNetwork=Network > +CPTabRuntimes=Runtimes > +CPTabSecurity=Security > + > +# Control Panel - AboutPanel > +CPAboutInfo=This is the control panel for setting deployments.properties which is used by the plugin and netx and webstart. > + > +# Control Panel - AdvancedProxySettings > +APSDialogTitle=Network Settings > +APSServersPanel=Servers > +APSProxyTypeLabel=Type > +APSProxyAddressLabel=Proxy Address > +APSProxyPortLabel=Port > +APSLabelHTTP=HTTP > +APSLabelSecure=Secure > +APSLabelFTP=FTP > +APSLabelSocks=Socks > +APSSameProxyForAllProtocols=Use same proxy server for all protocols. > +APSExceptionsLabel=Exceptions > +APSExceptionsDescription=Do not use proxy server for addresses beginning with > +APSExceptionInstruction=Separate each entry with a semicolon. > + > +# Control Panel - DebugginPanel > +DPEnableTracing=Enable tracing > +DPEnableLogging=Enable logging > +DPLifeCycleExceptions=Show applet lifecycle exceptions > +DPDisable=Disable > +DPHide=Hide on startup > +DPShow=Show on startup > +DPJavaConsole=Java Console > + > +# Control Panel - DesktopShortcutPanel > +DSPNeverCreate=Never create > +DSPAlwaysAllow=Always allow > +DSPAskUser=Ask user > +DSPAskIfHinted=Ask if hinted > +DSPAlwaysIfHinted=Always if hinted > + > +# Control Panel - NetworkSettingsPanel > +NSDescription-1=Unknown Setting. > +NSDescription0=Use direct connection. > +NSDescription1=Override browser proxy settings. > +NSDescription2=Use automatic proxy configuration script at the specified location. > +NSDescription3=Use proxy settings from your default browser to connect to the internet. > +NSAddress=Address > +NSPort=Port > +NSAdvanced=Advanced > +NSBypassLocal=Bypass proxy server for local addresses > +NSDirectConnection=Direct connection > +NSManualProxy=Manual proxy server > +NSAutoProxy=Automatic proxy configuration script > +NSBrowserProxy=Use browser settings > +NSScripLocation=Script location > + > +# Control Panel - SecurityGeneralPanel > +SGPAllowUserGrantSigned=Allow users to grant permissions to signed content > +SGPAllowUserGrantUntrust=Allow users to grant permissions to content from an untrusted authority > +SGPUseBrowserKeystore=Use certificates and keys in browser keystore (Unsupported) > +SGPUsePersonalCertOneMatch=Use personal certificate automatically if only one matches server request (Unsupported) > +SGPWarnCertHostMismatch=Warn if site certificate does not match hostname > +SGPShowValid=Show site certificate even if it is valid (Unsupported) > +SGPShowSandboxWarning=Show sandbox warning banner > +SGPAllowUserAcceptJNLPSecurityRequests=Allow user to accept JNLP security requests > +SGPCheckCertRevocationList=Check certificates for revocation using Certificate Revocation Lists (CRLs) (Unsupported) > +SGPEnableOnlineCertValidate=Enable online certificate validation (Unsupported) > +SGPEnableTrustedPublisherList=Enable list of trusted publishers (Unsupported) > +SGPEnableBlacklistRevocation=Enable blacklist revocation check (Unsupported) > +SGPEnableCachingPassword=Enable caching password for authentication (Unsupported) > +SGPUseSSL2=Use SSL 2.0 compatible ClientHello format (Unsupported) > +SGPUseSSL3=Use SSL 3.0 (Unsupported) > +SGPUseTLS1=Use TLS 1.0 (Unsupported) > + > +# Control Panel - TemporaryInternetFilesPanel > +TIFPEnableCache=Keep temporary files on my computer > +TIFPLocation=Location > +TIFPLocationLabel=Select the location where temporary files are kept > +TIFPChange=Change > +TIFPDiskSpace=Disk space > +TIFPCompressionLevel=Select the compression level for JAR files > +TIFPNone=None > +TIFPMax=Max > +TIFPCacheSize=Set the amount of disk space for storing temporary files > +TIFPDeleteFiles=Delete files > +TIFPRestoreDefaults=Restore defaults > + > +# Control Panel - Misc. > +CPJRESupport=Icedtea-web currently does not support multiple JRE. > + > +# Buttons > +ButApply=Apply -- Andrew :) Free Java Software Engineer Red Hat, Inc. (http://www.redhat.com) Support Free Java! Contribute to GNU Classpath and the OpenJDK http://www.gnu.org/software/classpath http://openjdk.java.net PGP Key: 94EFD9D8 (http://subkeys.pgp.net) Fingerprint = F8EF F1EA 401E 2E60 15FA 7927 142C 2591 94EF D9D8 From ahughes at redhat.com Fri Nov 26 20:13:03 2010 From: ahughes at redhat.com (Dr Andrew John Hughes) Date: Sat, 27 Nov 2010 04:13:03 +0000 Subject: Reviewer needed - fix for regression test java/awt/Insets/WindowWithWarningTest/WindowWithWarning In-Reply-To: <4CEFFF41.7070400@redhat.com> References: <4CEFFF41.7070400@redhat.com> Message-ID: <20101127041303.GV17602@rivendell.middle-earth.co.uk> On 19:41 Fri 26 Nov , Pavel Tisnovsky wrote: > Hi all, > > can anyone please review fix for regression test > java/awt/Insets/WindowWithWarningTest/WindowWithWarning? Mercurial > export for IcedTea6 HEAD (1.10pre) is included in this mail as attachment. > > Description of the fix: > > This test must be run in an environment similar to sandbox used for > running regular applets, which among other things means that each window > created by the test itself has to be labelled by warning message "Java > Applet Window". > > But for the test to (probably successfuly) proceed it is also required > that AWT Robot is enabled (and it is disabled by default for applets, > which reasonable, of course). > > To guarantee both conditions to run this test I copied system security > policy file, added new line to enable AWT robot and then configured the > test itself to use this policy file, because JTreg harness usually > starts such tests (applets) without security manager installed. > > PS: I've made this fix with great help of Andrew, Deepak and Omair - > thank you very much colleagues! > > Cheers > Pavel This looks pretty standard, compared with other JDK tests. Could we not just allow the needed robot permission? Are all the ones for the policy file really needed? > # HG changeset patch > # User ptisnovs > # Date 1290793199 -3600 > # Node ID d3ed5f2fd6d8288cb693d66a29b6bb7b99c21149 > # Parent 0aab3837f513e527e79c2e8f779f0c93a4b47c7a > Regression test fix. > > diff -r 0aab3837f513 -r d3ed5f2fd6d8 ChangeLog > --- a/ChangeLog Wed Nov 24 22:44:32 2010 +0000 > +++ b/ChangeLog Fri Nov 26 18:39:59 2010 +0100 > @@ -1,3 +1,10 @@ > +2010-11-26 Pavel Tisnovsky > + > + * Makefile.am: > + * patches/jtreg-WindowWithWarningTest.patch: > + Regression test fix - setup of SecurityManager to > + run this test as regular applet but with AWT robot enabled. > + > 2010-11-24 Andrew John Hughes > > Final plugin & NetX cleanup. > diff -r 0aab3837f513 -r d3ed5f2fd6d8 Makefile.am > --- a/Makefile.am Wed Nov 24 22:44:32 2010 +0000 > +++ b/Makefile.am Fri Nov 26 18:39:59 2010 +0100 > @@ -300,7 +300,8 @@ > patches/openjdk/6850606-bigdecimal_regression.patch \ > patches/openjdk/6876282-bigdecimal_divide.patch \ > patches/f14-fonts.patch \ > - patches/jtreg-DeleteFont.patch > + patches/jtreg-DeleteFont.patch \ > + patches/jtreg-WindowWithWarningTest.patch > > if WITH_ALT_HSBUILD > ICEDTEA_PATCHES += \ > diff -r 0aab3837f513 -r d3ed5f2fd6d8 patches/jtreg-WindowWithWarningTest.patch > --- /dev/null Thu Jan 01 00:00:00 1970 +0000 > +++ b/patches/jtreg-WindowWithWarningTest.patch Fri Nov 26 18:39:59 2010 +0100 > @@ -0,0 +1,90 @@ > +diff -uN /jck/icedtea6/openjdk/jdk/test/java/awt/Insets/WindowWithWarningTest/applet.policy ./applet.policy > +--- /dev/null 1970-01-01 01:00:00.000000000 +0100 > ++++ openjdk/jdk/test/java/awt/Insets/WindowWithWarningTest/applet.policy 2010-11-26 18:01:32.000000000 +0100 > +@@ -0,0 +1,50 @@ > ++ > ++// Standard extensions get all permissions by default > ++ > ++grant codeBase "file:${{java.ext.dirs}}/*" { > ++ permission java.security.AllPermission; > ++}; > ++ > ++// default permissions granted to all domains > ++ > ++grant { > ++ // Allows any thread to stop itself using the java.lang.Thread.stop() > ++ // method that takes no argument. > ++ // Note that this permission is granted by default only to remain > ++ // backwards compatible. > ++ // It is strongly recommended that you either remove this permission > ++ // from this policy file or further restrict it to code sources > ++ // that you specify, because Thread.stop() is potentially unsafe. > ++ // See "http://java.sun.com/notes" for more information. > ++ permission java.lang.RuntimePermission "stopThread"; > ++ > ++ // allows anyone to listen on un-privileged ports > ++ permission java.net.SocketPermission "localhost:1024-", "listen"; > ++ > ++ // "standard" properies that can be read by anyone > ++ > ++ permission java.util.PropertyPermission "java.version", "read"; > ++ permission java.util.PropertyPermission "java.vendor", "read"; > ++ permission java.util.PropertyPermission "java.vendor.url", "read"; > ++ permission java.util.PropertyPermission "java.class.version", "read"; > ++ permission java.util.PropertyPermission "os.name", "read"; > ++ permission java.util.PropertyPermission "os.version", "read"; > ++ permission java.util.PropertyPermission "os.arch", "read"; > ++ permission java.util.PropertyPermission "file.separator", "read"; > ++ permission java.util.PropertyPermission "path.separator", "read"; > ++ permission java.util.PropertyPermission "line.separator", "read"; > ++ > ++ permission java.util.PropertyPermission "java.specification.version", "read"; > ++ permission java.util.PropertyPermission "java.specification.vendor", "read"; > ++ permission java.util.PropertyPermission "java.specification.name", "read"; > ++ > ++ permission java.util.PropertyPermission "java.vm.specification.version", "read"; > ++ permission java.util.PropertyPermission "java.vm.specification.vendor", "read"; > ++ permission java.util.PropertyPermission "java.vm.specification.name", "read"; > ++ permission java.util.PropertyPermission "java.vm.version", "read"; > ++ permission java.util.PropertyPermission "java.vm.vendor", "read"; > ++ permission java.util.PropertyPermission "java.vm.name", "read"; > ++ > ++ permission java.awt.AWTPermission "createRobot", "enabled"; > ++}; > ++ > +diff -uN /jck/icedtea6/openjdk/jdk/test/java/awt/Insets/WindowWithWarningTest/WindowWithWarningTest.html ./WindowWithWarningTest.html > +--- openjdk-old/jdk/test/java/awt/Insets/WindowWithWarningTest/WindowWithWarningTest.html 2010-06-21 23:15:49.000000000 +0200 > ++++ openjdk/jdk/test/java/awt/Insets/WindowWithWarningTest/WindowWithWarningTest.html 2010-11-26 18:29:25.622555000 +0100 > +@@ -4,7 +4,7 @@ > + @bug 6391770 > + @summary Content of the Window should be laid out in the area left after WarningWindow was added. > + @author Yuri Nesterenko > +- @run applet WindowWithWarningTest.html > ++ @run applet/othervm/policy=applet.policy WindowWithWarningTest.html > + --> > + > + > +diff -uN /jck/icedtea6/openjdk/jdk/test/java/awt/Insets/WindowWithWarningTest/WindowWithWarningTest.java ./WindowWithWarningTest.java > +--- openjdk-old/jdk/test/java/awt/Insets/WindowWithWarningTest/WindowWithWarningTest.java 2010-06-21 23:15:49.000000000 +0200 > ++++ openjdk/jdk/test/java/awt/Insets/WindowWithWarningTest/WindowWithWarningTest.java 2010-11-26 18:10:15.000000000 +0100 > +@@ -53,6 +53,7 @@ > + import java.awt.*; > + import java.awt.event.*; > + import javax.swing.*; > ++import java.security.*; > + > + //Automated tests should run as applet tests if possible because they > + // get their environments cleaned up, including AWT threads, any > +@@ -91,12 +92,6 @@ > + public void start () > + { > + //Get things going. Request focus, set size, et cetera > +- System.setSecurityManager( new SecurityManager() { > +- // deny AWTPermission("showWindowWithoutWarningBanner") > +- public boolean checkTopLevelWindow(Object window) { > +- return false; > +- } > +- }); > + JFrame frame = new JFrame("Window Test"); > + frame.setBounds(50, 50, 200, 200); > + frame.show(); -- Andrew :) Free Java Software Engineer Red Hat, Inc. (http://www.redhat.com) Support Free Java! Contribute to GNU Classpath and the OpenJDK http://www.gnu.org/software/classpath http://openjdk.java.net PGP Key: 94EFD9D8 (http://subkeys.pgp.net) Fingerprint = F8EF F1EA 401E 2E60 15FA 7927 142C 2591 94EF D9D8 From ahughes at redhat.com Fri Nov 26 20:18:04 2010 From: ahughes at redhat.com (Dr Andrew John Hughes) Date: Sat, 27 Nov 2010 04:18:04 +0000 Subject: [icedtea-web] RFC: Fix make distcheck Message-ID: <20101127041804.GW17602@rivendell.middle-earth.co.uk> This cleans up the icedtea-web build, mainly fixing install/uninstall issues such as the permission of installed files and the non-removal of documentation. 2010-11-26 Andrew John Hughes Make distcheck work. * Makefile.am: (EXTRA_DIST): Use relative paths for netx and the plugin. (clean-local): Remove empty stamps directory. (install-exec-local): Use install to install programs and data with the correct permissions. (install-data-local): Likewise. (uninstall-local): Remove documentation. (netx): Use ${INSTALL_DATA} to add resources so that read-only files aren't copied. (extra-files): Likewise. ($(NETX_DIR)/launcher/javaws): Don't create empty launcher directory. (clean-docs): Remove empty docs directory. (clean-bootstrap-directory): Remove empty bootstrap directory. Ok? -- Andrew :) Free Java Software Engineer Red Hat, Inc. (http://www.redhat.com) Support Free Java! Contribute to GNU Classpath and the OpenJDK http://www.gnu.org/software/classpath http://openjdk.java.net PGP Key: 94EFD9D8 (http://subkeys.pgp.net) Fingerprint = F8EF F1EA 401E 2E60 15FA 7927 142C 2591 94EF D9D8 -------------- next part -------------- diff -r 243ab4185293 Makefile.am --- a/Makefile.am Fri Nov 26 15:21:56 2010 +0000 +++ b/Makefile.am Sat Nov 27 04:04:56 2010 +0000 @@ -83,7 +83,7 @@ -Wl,\$$ORIGIN/../jre/lib/$(INSTALL_ARCH_DIR)/jli $(X11_CFLAGS) $(X11_LIBS) -ljli -ldl -lz PLUGIN_VERSION = IcedTea $(PACKAGE_VERSION)$(ICEDTEA_REV)$(ICEDTEA_PKG) -EXTRA_DIST = $(NETX_SRCDIR) $(abs_top_srcdir)/plugin javaws.png javaws.desktop.in extra launcher +EXTRA_DIST = $(top_srcdir)/netx $(top_srcdir)/plugin javaws.png javaws.desktop.in extra launcher # Top-Level Targets # ================= @@ -93,31 +93,41 @@ clean-local: clean-netx clean-plugin clean-liveconnect clean-extra clean-bootstrap-directory \ clean-native-ecj clean-desktop-files clean-docs + if [ -e stamps ] ; then \ + rmdir stamps ; \ + fi .PHONY: clean-IcedTeaPlugin clean-add-netx clean-add-netx-debug clean-add-plugin clean-add-plugin-debug \ clean-bootstrap-directory clean-native-ecj clean-desktop-files clean-netx-docs clean-docs clean-plugin-docs install-exec-local: - mkdir -p $(DESTDIR)$(bindir) - mkdir -p $(DESTDIR)$(prefix)/jre/lib/$(INSTALL_ARCH_DIR) + ${mkinstalldirs} $(DESTDIR)$(bindir) $(DESTDIR)$(prefix)/jre/lib/$(INSTALL_ARCH_DIR) if ENABLE_PLUGIN - cp -pPRf $(PLUGIN_DIR)/IcedTeaPlugin.so $(DESTDIR)$(prefix)/jre/lib/$(INSTALL_ARCH_DIR)/ - cp -pPRf $(PLUGIN_DIR)/launcher/pluginappletviewer $(DESTDIR)$(bindir) - cp -pPRf $(abs_top_builddir)/liveconnect/lib/classes.jar $(DESTDIR)$(prefix)/jre/lib/plugin.jar + ${INSTALL_PROGRAM} $(PLUGIN_DIR)/IcedTeaPlugin.so $(DESTDIR)$(prefix)/jre/lib/$(INSTALL_ARCH_DIR)/ + ${INSTALL_PROGRAM} $(PLUGIN_DIR)/launcher/pluginappletviewer $(DESTDIR)$(bindir) + ${INSTALL_PROGRAM} $(abs_top_builddir)/liveconnect/lib/classes.jar $(DESTDIR)$(prefix)/jre/lib/plugin.jar endif - cp -pPRf $(NETX_DIR)/lib/classes.jar $(DESTDIR)$(prefix)/jre/lib/netx.jar - cp -pPRf $(NETX_DIR)/launcher/javaws $(DESTDIR)$(bindir) - cp extra-lib/about.jar $(DESTDIR)$(prefix)/jre/lib + ${INSTALL_DATA} $(NETX_DIR)/lib/classes.jar $(DESTDIR)$(prefix)/jre/lib/netx.jar + ${INSTALL_PROGRAM} $(NETX_DIR)/launcher/javaws $(DESTDIR)$(bindir) + ${INSTALL_DATA} extra-lib/about.jar $(DESTDIR)$(prefix)/jre/lib install-data-local: - mkdir -p $(DESTDIR)$(prefix)/man/man1 - cp $(NETX_SRCDIR)/javaws.1 $(DESTDIR)$(prefix)/man/man1 - cp $(NETX_RESOURCE_DIR)/about.jnlp $(DESTDIR)$(prefix)/jre/lib + ${mkinstalldirs} -d $(DESTDIR)$(prefix)/man/man1 + ${INSTALL_DATA} $(NETX_SRCDIR)/javaws.1 $(DESTDIR)$(prefix)/man/man1 + ${INSTALL_DATA} $(NETX_RESOURCE_DIR)/about.jnlp $(DESTDIR)$(prefix)/jre/lib if ENABLE_DOCS - mkdir -p $(DESTDIR)$(htmldir) - cp -pPRf ${abs_top_builddir}/docs/netx $(DESTDIR)$(htmldir) + ${mkinstalldirs} $(DESTDIR)$(htmldir) + (cd ${abs_top_builddir}/docs/netx; \ + for files in $$(find . -type f); \ + do \ + ${INSTALL_DATA} -D $${files} $(DESTDIR)$(htmldir)/netx/$${files}; \ + done) if ENABLE_PLUGIN - cp -pPRf ${abs_top_builddir}/docs/plugin $(DESTDIR)$(htmldir) + (cd ${abs_top_builddir}/docs/plugin; \ + for files in $$(find . -type f); \ + do \ + ${INSTALL_DATA} -D $${files} $(DESTDIR)$(htmldir)/plugin/$${files}; \ + done) endif endif @@ -130,6 +140,7 @@ rm -f $(DESTDIR)$(prefix)/man/man1/javaws.1 rm -f $(DESTDIR)$(bindir)/pluginappletviewer rm -f $(DESTDIR)$(bindir)/javaws + rm -rf $(DESTDIR)$(htmldir) # Plugin @@ -250,7 +261,12 @@ -sourcepath $(NETX_SRCDIR) \ -bootclasspath $(RUNTIME) \ @netx-source-files.txt - cp -r $(NETX_RESOURCE_DIR) $(NETX_DIR)/net/sourceforge/jnlp + (cd $(NETX_RESOURCE_DIR); \ + for files in $$(find . -type f); \ + do \ + ${INSTALL_DATA} -D $${files} \ + $(NETX_DIR)/net/sourceforge/jnlp/resources/$${files}; \ + done) mkdir -p stamps touch $@ @@ -285,7 +301,12 @@ $(BOOT_DIR)/bin/javac $(IT_JAVACFLAGS) -d extra-lib \ -sourcepath $(abs_top_srcdir)/extra -cp netx.build \ -bootclasspath $(RUNTIME) @extra-source-files.txt - cp -r $(NETX_EXTRA_DIR) extra-lib/net/sourceforge/jnlp/about + (cd $(NETX_EXTRA_DIR); \ + for files in $$(find . -type f); \ + do \ + ${INSTALL_DATA} -D $${files} \ + ${abs_top_builddir}/extra-lib/net/sourceforge/jnlp/about/resources/$${files}; \ + done) mkdir -p stamps touch $@ @@ -303,7 +324,6 @@ -c -o $@ $< $(NETX_DIR)/launcher/javaws: $(NETX_LAUNCHER_OBJECTS) - mkdir -p launcher $(CC) $(NETX_LAUNCHER_OBJECTS) $(LAUNCHER_LINK) javaws.desktop: javaws.desktop.in @@ -315,6 +335,9 @@ touch stamps/docs.stamp clean-docs: clean-netx-docs clean-plugin-docs + if [ -e ${abs_top_builddir}/docs ] ; then \ + rmdir ${abs_top_builddir}/docs ; \ + fi rm -f stamps/docs.stamp stamps/netx-docs.stamp: stamps/bootstrap-directory.stamp @@ -416,6 +439,9 @@ clean-bootstrap-directory: rm -rf $(BOOT_DIR) + if [ -e ${abs_top_builddir}/bootstrap ] ; then \ + rmdir ${abs_top_builddir}/bootstrap ; \ + fi rm -f stamps/bootstrap-directory.stamp # Target Aliases From liuqi at icedtea.classpath.org Sun Nov 28 23:27:22 2010 From: liuqi at icedtea.classpath.org (liuqi at icedtea.classpath.org) Date: Mon, 29 Nov 2010 07:27:22 +0000 Subject: /hg/openjdk6-mips: Fix the deoptimization bug. Message-ID: changeset 9fdc8715b0a2 in /hg/openjdk6-mips details: http://icedtea.classpath.org/hg/openjdk6-mips?cmd=changeset;node=9fdc8715b0a2 author: Ao Qi date: Fri Nov 26 12:00:58 2010 +0800 Fix the deoptimization bug. Original PC of the deopt_frame may not be always in (fp - 1). Therefore, set RA to the deop_pc, which is the entry address of deopt_handler, and the frame::frame will handle it. diffstat: 2 files changed, 2 insertions(+), 2 deletions(-) hotspot/src/cpu/mips/vm/c1_LIRAssembler_mips.cpp | 2 +- hotspot/src/cpu/mips/vm/sharedRuntime_mips.cpp | 2 +- diffs (24 lines): diff -r ab0d284dc313 -r 9fdc8715b0a2 hotspot/src/cpu/mips/vm/c1_LIRAssembler_mips.cpp --- a/hotspot/src/cpu/mips/vm/c1_LIRAssembler_mips.cpp Thu Nov 18 16:19:42 2010 +0800 +++ b/hotspot/src/cpu/mips/vm/c1_LIRAssembler_mips.cpp Fri Nov 26 12:00:58 2010 +0800 @@ -433,7 +433,7 @@ void LIR_Assembler::emit_deopt_handler() compilation()->offsets()->set_value(CodeOffsets::Deopt, code_offset()); - __ jmp(SharedRuntime::deopt_blob()->unpack()); + __ call(SharedRuntime::deopt_blob()->unpack()); __ delayed()->nop(); assert(code_offset() - offset <= deopt_handler_size, "overflow"); diff -r ab0d284dc313 -r 9fdc8715b0a2 hotspot/src/cpu/mips/vm/sharedRuntime_mips.cpp --- a/hotspot/src/cpu/mips/vm/sharedRuntime_mips.cpp Thu Nov 18 16:19:42 2010 +0800 +++ b/hotspot/src/cpu/mips/vm/sharedRuntime_mips.cpp Fri Nov 26 12:00:58 2010 +0800 @@ -3233,7 +3233,7 @@ void SharedRuntime::generate_deopt_blob( // Prolog for non exception case! // Correct the return address we were given. //FIXME, return address is on the tos or Ra? - __ lw(RA, FP, (-1) * wordSize); + __ addi(RA, RA, - (NativeCall::return_address_offset)); // Save everything in sight. map = RegisterSaver::save_live_registers(masm, additional_words, &frame_size_in_words); // Normal deoptimization From doko at icedtea.classpath.org Sun Nov 28 23:48:47 2010 From: doko at icedtea.classpath.org (doko at icedtea.classpath.org) Date: Mon, 29 Nov 2010 07:48:47 +0000 Subject: /hg/release/icedtea6-1.9: Update params-cast-size_t.patch for hs19 Message-ID: changeset 9f1479361513 in /hg/release/icedtea6-1.9 details: http://icedtea.classpath.org/hg/release/icedtea6-1.9?cmd=changeset;node=9f1479361513 author: doko at ubuntu.com date: Mon Nov 29 08:48:38 2010 +0100 Update params-cast-size_t.patch for hs19 2010-11-29 Matthias Klose * patches/hotspot/hs19/params-cast-size_t.patch: Update for hs19. diffstat: 2 files changed, 15 insertions(+) ChangeLog | 4 ++++ patches/hotspot/hs19/params-cast-size_t.patch | 11 +++++++++++ diffs (29 lines): diff -r c39df2b1130f -r 9f1479361513 ChangeLog --- a/ChangeLog Wed Nov 24 15:00:11 2010 +0000 +++ b/ChangeLog Mon Nov 29 08:48:38 2010 +0100 @@ -1,3 +1,7 @@ 2010-11-24 Andrew John Hughes + + * patches/hotspot/hs19/params-cast-size_t.patch: Update for hs19. + 2010-11-24 Andrew John Hughes * configure.ac: Bump to 1.9.3pre. diff -r c39df2b1130f -r 9f1479361513 patches/hotspot/hs19/params-cast-size_t.patch --- a/patches/hotspot/hs19/params-cast-size_t.patch Wed Nov 24 15:00:11 2010 +0000 +++ b/patches/hotspot/hs19/params-cast-size_t.patch Mon Nov 29 08:48:38 2010 +0100 @@ -282,3 +282,14 @@ diff -Nru openjdk.orig/hotspot/src/share const size_t end_index = beg_index + stride; T* const base = (T*)a->base(); T* const beg = base + beg_index; +--- openjdk/hotspot/src/share/vm/gc_implementation/parNew/parNewGeneration.cpp~ 2010-10-08 20:29:24.000000000 +0000 ++++ openjdk/hotspot/src/share/vm/gc_implementation/parNew/parNewGeneration.cpp 2010-11-29 07:27:56.000000000 +0000 +@@ -163,7 +163,7 @@ + const size_t num_overflow_elems = of_stack->size(); + const size_t space_available = queue->max_elems() - queue->size(); + const size_t num_take_elems = MIN3(space_available / 4, +- ParGCDesiredObjsFromOverflowList, ++ (size_t) ParGCDesiredObjsFromOverflowList, + num_overflow_elems); + // Transfer the most recent num_take_elems from the overflow + // stack to our work queue. From doko at icedtea.classpath.org Sun Nov 28 23:50:46 2010 From: doko at icedtea.classpath.org (doko at icedtea.classpath.org) Date: Mon, 29 Nov 2010 07:50:46 +0000 Subject: /hg/icedtea6: Update params-cast-size_t.patch for hs19 Message-ID: changeset c3150835fe12 in /hg/icedtea6 details: http://icedtea.classpath.org/hg/icedtea6?cmd=changeset;node=c3150835fe12 author: doko at ubuntu.com date: Mon Nov 29 08:50:36 2010 +0100 Update params-cast-size_t.patch for hs19 2010-11-29 Matthias Klose * patches/hotspot/hs19/params-cast-size_t.patch: Update for hs19. diffstat: 2 files changed, 15 insertions(+) ChangeLog | 4 ++++ patches/hotspot/hs19/params-cast-size_t.patch | 11 +++++++++++ diffs (29 lines): diff -r 0aab3837f513 -r c3150835fe12 ChangeLog --- a/ChangeLog Wed Nov 24 22:44:32 2010 +0000 +++ b/ChangeLog Mon Nov 29 08:50:36 2010 +0100 @@ -1,3 +1,7 @@ 2010-11-24 Andrew John Hughes + + * patches/hotspot/hs19/params-cast-size_t.patch: Update for hs19. + 2010-11-24 Andrew John Hughes Final plugin & NetX cleanup. diff -r 0aab3837f513 -r c3150835fe12 patches/hotspot/hs19/params-cast-size_t.patch --- a/patches/hotspot/hs19/params-cast-size_t.patch Wed Nov 24 22:44:32 2010 +0000 +++ b/patches/hotspot/hs19/params-cast-size_t.patch Mon Nov 29 08:50:36 2010 +0100 @@ -282,3 +282,14 @@ diff -Nru openjdk.orig/hotspot/src/share const size_t end_index = beg_index + stride; T* const base = (T*)a->base(); T* const beg = base + beg_index; +--- openjdk/hotspot/src/share/vm/gc_implementation/parNew/parNewGeneration.cpp~ 2010-10-08 20:29:24.000000000 +0000 ++++ openjdk/hotspot/src/share/vm/gc_implementation/parNew/parNewGeneration.cpp 2010-11-29 07:27:56.000000000 +0000 +@@ -163,7 +163,7 @@ + const size_t num_overflow_elems = of_stack->size(); + const size_t space_available = queue->max_elems() - queue->size(); + const size_t num_take_elems = MIN3(space_available / 4, +- ParGCDesiredObjsFromOverflowList, ++ (size_t) ParGCDesiredObjsFromOverflowList, + num_overflow_elems); + // Transfer the most recent num_take_elems from the overflow + // stack to our work queue. From doko at ubuntu.com Mon Nov 29 00:06:00 2010 From: doko at ubuntu.com (Matthias Klose) Date: Mon, 29 Nov 2010 09:06:00 +0100 Subject: undefined ia64_double_zero in hs19 Message-ID: <4CF35EE8.8010700@ubuntu.com> The hotspot build fails on ia64, ia64_double_zero is not defined anymore. The code references a "IA64 gcc bug", but I cannot find any open GCC report for this issue. Is this fixed upstream, or is the workaround still necessary? If it's the latter, please restore the ia64_double_zero definition. Matthias -------------- next part -------------- A non-text attachment was scrubbed... Name: ia64.diff Type: text/x-diff Size: 1181 bytes Desc: not available Url : http://mail.openjdk.java.net/pipermail/distro-pkg-dev/attachments/20101129/28b695e5/ia64.diff From doko at ubuntu.com Mon Nov 29 01:24:58 2010 From: doko at ubuntu.com (Matthias Klose) Date: Mon, 29 Nov 2010 10:24:58 +0100 Subject: undefined ia64_double_zero in hs19 In-Reply-To: <4CF36FCE.7090708@oracle.com> References: <4CF35EE8.8010700@ubuntu.com> <4CF36FCE.7090708@oracle.com> Message-ID: <4CF3716A.5070206@ubuntu.com> On 29.11.2010 10:18, David Holmes wrote: > Matthias Klose said the following on 11/29/10 18:06: >> The hotspot build fails on ia64, ia64_double_zero is not defined anymore. The >> code references a "IA64 gcc bug", but I cannot find any open GCC report for >> this issue. Is this fixed upstream, or is the workaround still necessary? If >> it's the latter, please restore the ia64_double_zero definition. > > That was done a year ago: > > http://hg.openjdk.java.net/jdk7/hotspot-comp/hotspot/rev/8e7adf982378 > > I suspect it was seen as some opportune "clean up". apparently it's still in OpenJDK6. From David.Holmes at oracle.com Mon Nov 29 01:18:06 2010 From: David.Holmes at oracle.com (David Holmes) Date: Mon, 29 Nov 2010 19:18:06 +1000 Subject: undefined ia64_double_zero in hs19 In-Reply-To: <4CF35EE8.8010700@ubuntu.com> References: <4CF35EE8.8010700@ubuntu.com> Message-ID: <4CF36FCE.7090708@oracle.com> Matthias Klose said the following on 11/29/10 18:06: > The hotspot build fails on ia64, ia64_double_zero is not defined > anymore. The code references a "IA64 gcc bug", but I cannot find any > open GCC report for this issue. Is this fixed upstream, or is the > workaround still necessary? If it's the latter, please restore the > ia64_double_zero definition. That was done a year ago: http://hg.openjdk.java.net/jdk7/hotspot-comp/hotspot/rev/8e7adf982378 I suspect it was seen as some opportune "clean up". David Holmes From gbenson at redhat.com Mon Nov 29 03:05:03 2010 From: gbenson at redhat.com (Gary Benson) Date: Mon, 29 Nov 2010 11:05:03 +0000 Subject: undefined ia64_double_zero in hs19 In-Reply-To: <4CF3716A.5070206@ubuntu.com> References: <4CF35EE8.8010700@ubuntu.com> <4CF36FCE.7090708@oracle.com> <4CF3716A.5070206@ubuntu.com> Message-ID: <20101129110503.GA3437@redhat.com> Matthias Klose wrote: > On 29.11.2010 10:18, David Holmes wrote: > > Matthias Klose said the following on 11/29/10 18:06: > > > The hotspot build fails on ia64, ia64_double_zero is not defined > > > anymore. The code references a "IA64 gcc bug", but I cannot find > > > any open GCC report for this issue. Is this fixed upstream, or > > > is the workaround still necessary? If it's the latter, please > > > restore the ia64_double_zero definition. > > > > That was done a year ago: > > > > http://hg.openjdk.java.net/jdk7/hotspot-comp/hotspot/rev/8e7adf982378 > > > > I suspect it was seen as some opportune "clean up". > > apparently it's still in OpenJDK6. That surprises me... doesn't OpenJDK6 regularly get it's HotSpot replaced by the latest and greatest? This fix has been in HotSpot for almost as long as Zero, so it *should* be there... IcedTea always used to have a patch for this. Could it be that a now-unrequired IcedTea patch is being reversed? Cheers, Gary -- http://gbenson.net/ From doko at ubuntu.com Mon Nov 29 03:49:55 2010 From: doko at ubuntu.com (Matthias Klose) Date: Mon, 29 Nov 2010 12:49:55 +0100 Subject: undefined ia64_double_zero in hs19 In-Reply-To: <20101129110503.GA3437@redhat.com> References: <4CF35EE8.8010700@ubuntu.com> <4CF36FCE.7090708@oracle.com> <4CF3716A.5070206@ubuntu.com> <20101129110503.GA3437@redhat.com> Message-ID: <4CF39363.8010206@ubuntu.com> On 29.11.2010 12:05, Gary Benson wrote: > Matthias Klose wrote: >> On 29.11.2010 10:18, David Holmes wrote: >>> Matthias Klose said the following on 11/29/10 18:06: >>>> The hotspot build fails on ia64, ia64_double_zero is not defined >>>> anymore. The code references a "IA64 gcc bug", but I cannot find >>>> any open GCC report for this issue. Is this fixed upstream, or >>>> is the workaround still necessary? If it's the latter, please >>>> restore the ia64_double_zero definition. >>> >>> That was done a year ago: >>> >>> http://hg.openjdk.java.net/jdk7/hotspot-comp/hotspot/rev/8e7adf982378 >>> >>> I suspect it was seen as some opportune "clean up". >> >> apparently it's still in OpenJDK6. > > That surprises me... doesn't OpenJDK6 regularly get it's HotSpot > replaced by the latest and greatest? This fix has been in HotSpot > for almost as long as Zero, so it *should* be there... > > IcedTea always used to have a patch for this. Could it be that > a now-unrequired IcedTea patch is being reversed? icedtea6-1.8 has the chunk in patches/zero/6896043.patch Removed in 1.9: 2010-03-30 Andrew John Hughes * patches/zero/6896043.patch: Dropped, applied upstream. From doko at icedtea.classpath.org Mon Nov 29 05:01:03 2010 From: doko at icedtea.classpath.org (doko at icedtea.classpath.org) Date: Mon, 29 Nov 2010 13:01:03 +0000 Subject: /hg/icedtea6: Reapply ia64 build fix from patches/zero/6896043.p... Message-ID: changeset 19c298cbf34e in /hg/icedtea6 details: http://icedtea.classpath.org/hg/icedtea6?cmd=changeset;node=19c298cbf34e author: doko at ubuntu.com date: Mon Nov 29 14:00:48 2010 +0100 Reapply ia64 build fix from patches/zero/6896043.patch 2010-11-29 Matthias Klose * patches/hotspot/hs19/ia64-fix.patch: Reapply chunk from patches/zero/6896043.patch. diffstat: 3 files changed, 37 insertions(+), 1 deletion(-) ChangeLog | 5 +++++ Makefile.am | 3 ++- patches/hotspot/hs19/ia64-fix.patch | 30 ++++++++++++++++++++++++++++++ diffs (59 lines): diff -r c3150835fe12 -r 19c298cbf34e ChangeLog --- a/ChangeLog Mon Nov 29 08:50:36 2010 +0100 +++ b/ChangeLog Mon Nov 29 14:00:48 2010 +0100 @@ -1,3 +1,8 @@ 2010-11-29 Matthias Klose + + * patches/hotspot/hs19/ia64-fix.patch: Reapply chunk from + patches/zero/6896043.patch. + 2010-11-29 Matthias Klose * patches/hotspot/hs19/params-cast-size_t.patch: Update for hs19. diff -r c3150835fe12 -r 19c298cbf34e Makefile.am --- a/Makefile.am Mon Nov 29 08:50:36 2010 +0100 +++ b/Makefile.am Mon Nov 29 14:00:48 2010 +0100 @@ -306,7 +306,8 @@ ICEDTEA_PATCHES += \ ICEDTEA_PATCHES += \ patches/openjdk/6994130-ppc_fix.patch \ patches/disable-default-compoops.patch \ - patches/openjdk/6980392-fix_test6581734.patch + patches/openjdk/6980392-fix_test6581734.patch \ + patches/hotspot/hs19/ia64-fix.patch else ICEDTEA_PATCHES += \ patches/shark_do_nothing_on_stub_frame.patch \ diff -r c3150835fe12 -r 19c298cbf34e patches/hotspot/hs19/ia64-fix.patch --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/patches/hotspot/hs19/ia64-fix.patch Mon Nov 29 14:00:48 2010 +0100 @@ -0,0 +1,30 @@ +--- openjdk/hotspot/src/share/vm/interpreter/bytecodeInterpreter.cpp~ 2010-10-08 20:29:24.000000000 +0000 ++++ openjdk/hotspot/src/share/vm/interpreter/bytecodeInterpreter.cpp 2010-11-29 07:56:22.000000000 +0000 +@@ -1287,12 +1287,7 @@ + jfloat f; + jdouble r; + f = STACK_FLOAT(-1); +-#ifdef IA64 +- // IA64 gcc bug +- r = ( f == 0.0f ) ? (jdouble) f : (jdouble) f + ia64_double_zero; +-#else + r = (jdouble) f; +-#endif + MORE_STACK(-1); // POP + SET_STACK_DOUBLE(r, 1); + UPDATE_PC_AND_TOS_AND_CONTINUE(1, 2); +--- openjdk/hotspot/src/share/vm/opto/connode.cpp~ 2010-10-08 20:29:24.000000000 +0000 ++++ openjdk/hotspot/src/share/vm/opto/connode.cpp 2010-11-29 07:57:22.000000000 +0000 +@@ -712,12 +712,7 @@ + if( t == Type::TOP ) return Type::TOP; + if( t == Type::FLOAT ) return Type::DOUBLE; + const TypeF *tf = t->is_float_constant(); +-#ifndef IA64 + return TypeD::make( (double)tf->getf() ); +-#else +- float x = tf->getf(); +- return TypeD::make( (x == 0.0f) ? (double)x : (double)x + ia64_double_zero ); +-#endif + } + + //============================================================================= From ahughes at redhat.com Mon Nov 29 05:05:27 2010 From: ahughes at redhat.com (Dr Andrew John Hughes) Date: Mon, 29 Nov 2010 13:05:27 +0000 Subject: undefined ia64_double_zero in hs19 In-Reply-To: <4CF3716A.5070206@ubuntu.com> References: <4CF35EE8.8010700@ubuntu.com> <4CF36FCE.7090708@oracle.com> <4CF3716A.5070206@ubuntu.com> Message-ID: <20101129130527.GA5592@rivendell.middle-earth.co.uk> On 10:24 Mon 29 Nov , Matthias Klose wrote: > On 29.11.2010 10:18, David Holmes wrote: > > Matthias Klose said the following on 11/29/10 18:06: > >> The hotspot build fails on ia64, ia64_double_zero is not defined anymore. The > >> code references a "IA64 gcc bug", but I cannot find any open GCC report for > >> this issue. Is this fixed upstream, or is the workaround still necessary? If > >> it's the latter, please restore the ia64_double_zero definition. > > > > That was done a year ago: > > > > http://hg.openjdk.java.net/jdk7/hotspot-comp/hotspot/rev/8e7adf982378 > > > > I suspect it was seen as some opportune "clean up". > > apparently it's still in OpenJDK6. It's still right there in OpenJDK7 too, including hotspot-comp: #ifdef IA64 // IA64 gcc bug r = ( f == 0.0f ) ? (jdouble) f : (jdouble) f + ia64_double_zero; #else r = (jdouble) f; #endif It appears to have been resurrected by: changeset: 1892:126ea7725993 user: bobv date: Tue Aug 03 08:13:38 2010 -0400 summary: 6953477: Increase portability and flexibility of building Hotspot http://hg.openjdk.java.net/jdk7/hotspot-comp/hotspot/rev/126ea7725993 So gone in hs17 but brought back in hs19. -- Andrew :) Free Java Software Engineer Red Hat, Inc. (http://www.redhat.com) Support Free Java! Contribute to GNU Classpath and the OpenJDK http://www.gnu.org/software/classpath http://openjdk.java.net PGP Key: 94EFD9D8 (http://subkeys.pgp.net) Fingerprint = F8EF F1EA 401E 2E60 15FA 7927 142C 2591 94EF D9D8 From ahughes at redhat.com Mon Nov 29 05:12:16 2010 From: ahughes at redhat.com (Dr Andrew John Hughes) Date: Mon, 29 Nov 2010 13:12:16 +0000 Subject: undefined ia64_double_zero in hs19 In-Reply-To: <20101129110503.GA3437@redhat.com> References: <4CF35EE8.8010700@ubuntu.com> <4CF36FCE.7090708@oracle.com> <4CF3716A.5070206@ubuntu.com> <20101129110503.GA3437@redhat.com> Message-ID: <20101129131216.GB5592@rivendell.middle-earth.co.uk> On 11:05 Mon 29 Nov , Gary Benson wrote: > Matthias Klose wrote: > > On 29.11.2010 10:18, David Holmes wrote: > > > Matthias Klose said the following on 11/29/10 18:06: > > > > The hotspot build fails on ia64, ia64_double_zero is not defined > > > > anymore. The code references a "IA64 gcc bug", but I cannot find > > > > any open GCC report for this issue. Is this fixed upstream, or > > > > is the workaround still necessary? If it's the latter, please > > > > restore the ia64_double_zero definition. > > > > > > That was done a year ago: > > > > > > http://hg.openjdk.java.net/jdk7/hotspot-comp/hotspot/rev/8e7adf982378 > > > > > > I suspect it was seen as some opportune "clean up". > > > > apparently it's still in OpenJDK6. > > That surprises me... doesn't OpenJDK6 regularly get it's HotSpot > replaced by the latest and greatest? I regularly merge in the stable branches when they become available. We never merge from OpenJDK7 directly. > This fix has been in HotSpot > for almost as long as Zero, so it *should* be there... > It was. Someone decided to revert it... :-S Clearly they didn't actually build on ia64. > IcedTea always used to have a patch for this. Could it be that > a now-unrequired IcedTea patch is being reversed? > We removed the patch in IcedTea when it went upstream, first through our own backport and then through the import of the hs17 stable branch. Importing hs19 reverted the fix by bringing in 6953477. So can someone please fix this again? > Cheers, > Gary > > -- > http://gbenson.net/ -- Andrew :) Free Java Software Engineer Red Hat, Inc. (http://www.redhat.com) Support Free Java! Contribute to GNU Classpath and the OpenJDK http://www.gnu.org/software/classpath http://openjdk.java.net PGP Key: 94EFD9D8 (http://subkeys.pgp.net) Fingerprint = F8EF F1EA 401E 2E60 15FA 7927 142C 2591 94EF D9D8 From ahughes at redhat.com Mon Nov 29 05:28:11 2010 From: ahughes at redhat.com (Dr Andrew John Hughes) Date: Mon, 29 Nov 2010 13:28:11 +0000 Subject: /hg/icedtea6: Reapply ia64 build fix from patches/zero/6896043.p... In-Reply-To: References: Message-ID: <20101129132811.GE5592@rivendell.middle-earth.co.uk> On 13:01 Mon 29 Nov , doko at icedtea.classpath.org wrote: > changeset 19c298cbf34e in /hg/icedtea6 > details: http://icedtea.classpath.org/hg/icedtea6?cmd=changeset;node=19c298cbf34e > author: doko at ubuntu.com > date: Mon Nov 29 14:00:48 2010 +0100 > > Reapply ia64 build fix from patches/zero/6896043.patch > > 2010-11-29 Matthias Klose > > * patches/hotspot/hs19/ia64-fix.patch: Reapply chunk from > patches/zero/6896043.patch. > Thanks for catching this. Can you please also backport this to the 1.9 branch? > > diffstat: > > 3 files changed, 37 insertions(+), 1 deletion(-) > ChangeLog | 5 +++++ > Makefile.am | 3 ++- > patches/hotspot/hs19/ia64-fix.patch | 30 ++++++++++++++++++++++++++++++ > > diffs (59 lines): > > diff -r c3150835fe12 -r 19c298cbf34e ChangeLog > --- a/ChangeLog Mon Nov 29 08:50:36 2010 +0100 > +++ b/ChangeLog Mon Nov 29 14:00:48 2010 +0100 > @@ -1,3 +1,8 @@ 2010-11-29 Matthias Klose +2010-11-29 Matthias Klose > + > + * patches/hotspot/hs19/ia64-fix.patch: Reapply chunk from > + patches/zero/6896043.patch. > + > 2010-11-29 Matthias Klose > > * patches/hotspot/hs19/params-cast-size_t.patch: Update for hs19. > diff -r c3150835fe12 -r 19c298cbf34e Makefile.am > --- a/Makefile.am Mon Nov 29 08:50:36 2010 +0100 > +++ b/Makefile.am Mon Nov 29 14:00:48 2010 +0100 > @@ -306,7 +306,8 @@ ICEDTEA_PATCHES += \ > ICEDTEA_PATCHES += \ > patches/openjdk/6994130-ppc_fix.patch \ > patches/disable-default-compoops.patch \ > - patches/openjdk/6980392-fix_test6581734.patch > + patches/openjdk/6980392-fix_test6581734.patch \ > + patches/hotspot/hs19/ia64-fix.patch > else > ICEDTEA_PATCHES += \ > patches/shark_do_nothing_on_stub_frame.patch \ > diff -r c3150835fe12 -r 19c298cbf34e patches/hotspot/hs19/ia64-fix.patch > --- /dev/null Thu Jan 01 00:00:00 1970 +0000 > +++ b/patches/hotspot/hs19/ia64-fix.patch Mon Nov 29 14:00:48 2010 +0100 > @@ -0,0 +1,30 @@ > +--- openjdk/hotspot/src/share/vm/interpreter/bytecodeInterpreter.cpp~ 2010-10-08 20:29:24.000000000 +0000 > ++++ openjdk/hotspot/src/share/vm/interpreter/bytecodeInterpreter.cpp 2010-11-29 07:56:22.000000000 +0000 > +@@ -1287,12 +1287,7 @@ > + jfloat f; > + jdouble r; > + f = STACK_FLOAT(-1); > +-#ifdef IA64 > +- // IA64 gcc bug > +- r = ( f == 0.0f ) ? (jdouble) f : (jdouble) f + ia64_double_zero; > +-#else > + r = (jdouble) f; > +-#endif > + MORE_STACK(-1); // POP > + SET_STACK_DOUBLE(r, 1); > + UPDATE_PC_AND_TOS_AND_CONTINUE(1, 2); > +--- openjdk/hotspot/src/share/vm/opto/connode.cpp~ 2010-10-08 20:29:24.000000000 +0000 > ++++ openjdk/hotspot/src/share/vm/opto/connode.cpp 2010-11-29 07:57:22.000000000 +0000 > +@@ -712,12 +712,7 @@ > + if( t == Type::TOP ) return Type::TOP; > + if( t == Type::FLOAT ) return Type::DOUBLE; > + const TypeF *tf = t->is_float_constant(); > +-#ifndef IA64 > + return TypeD::make( (double)tf->getf() ); > +-#else > +- float x = tf->getf(); > +- return TypeD::make( (x == 0.0f) ? (double)x : (double)x + ia64_double_zero ); > +-#endif > + } > + > + //============================================================================= -- Andrew :) Free Java Software Engineer Red Hat, Inc. (http://www.redhat.com) Support Free Java! Contribute to GNU Classpath and the OpenJDK http://www.gnu.org/software/classpath http://openjdk.java.net PGP Key: 94EFD9D8 (http://subkeys.pgp.net) Fingerprint = F8EF F1EA 401E 2E60 15FA 7927 142C 2591 94EF D9D8 From doko at icedtea.classpath.org Mon Nov 29 05:33:34 2010 From: doko at icedtea.classpath.org (doko at icedtea.classpath.org) Date: Mon, 29 Nov 2010 13:33:34 +0000 Subject: /hg/release/icedtea6-1.9: Reapply ia64 fix from patches/zero/689... Message-ID: changeset c24725b417da in /hg/release/icedtea6-1.9 details: http://icedtea.classpath.org/hg/release/icedtea6-1.9?cmd=changeset;node=c24725b417da author: doko at ubuntu.com date: Mon Nov 29 14:33:22 2010 +0100 Reapply ia64 fix from patches/zero/6896043.patch 2010-11-29 Matthias Klose * patches/hotspot/hs19/ia64-fix.patch: Reapply chunk from patches/zero/6896043.patch. diffstat: 3 files changed, 37 insertions(+), 1 deletion(-) ChangeLog | 5 +++++ Makefile.am | 3 ++- patches/hotspot/hs19/ia64-fix.patch | 30 ++++++++++++++++++++++++++++++ diffs (59 lines): diff -r 9f1479361513 -r c24725b417da ChangeLog --- a/ChangeLog Mon Nov 29 08:48:38 2010 +0100 +++ b/ChangeLog Mon Nov 29 14:33:22 2010 +0100 @@ -1,3 +1,8 @@ 2010-11-29 Matthias Klose + + * patches/hotspot/hs19/ia64-fix.patch: Reapply chunk from + patches/zero/6896043.patch. + 2010-11-29 Matthias Klose * patches/hotspot/hs19/params-cast-size_t.patch: Update for hs19. diff -r 9f1479361513 -r c24725b417da Makefile.am --- a/Makefile.am Mon Nov 29 08:48:38 2010 +0100 +++ b/Makefile.am Mon Nov 29 14:33:22 2010 +0100 @@ -321,7 +321,8 @@ if WITH_ALT_HSBUILD if WITH_ALT_HSBUILD ICEDTEA_PATCHES += \ patches/openjdk/6994130-ppc_fix.patch \ - patches/disable-default-compoops.patch + patches/disable-default-compoops.patch \ + patches/hotspot/hs19/ia64-fix.patch else ICEDTEA_PATCHES += \ patches/shark_do_nothing_on_stub_frame.patch \ diff -r 9f1479361513 -r c24725b417da patches/hotspot/hs19/ia64-fix.patch --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/patches/hotspot/hs19/ia64-fix.patch Mon Nov 29 14:33:22 2010 +0100 @@ -0,0 +1,30 @@ +--- openjdk/hotspot/src/share/vm/interpreter/bytecodeInterpreter.cpp~ 2010-10-08 20:29:24.000000000 +0000 ++++ openjdk/hotspot/src/share/vm/interpreter/bytecodeInterpreter.cpp 2010-11-29 07:56:22.000000000 +0000 +@@ -1287,12 +1287,7 @@ + jfloat f; + jdouble r; + f = STACK_FLOAT(-1); +-#ifdef IA64 +- // IA64 gcc bug +- r = ( f == 0.0f ) ? (jdouble) f : (jdouble) f + ia64_double_zero; +-#else + r = (jdouble) f; +-#endif + MORE_STACK(-1); // POP + SET_STACK_DOUBLE(r, 1); + UPDATE_PC_AND_TOS_AND_CONTINUE(1, 2); +--- openjdk/hotspot/src/share/vm/opto/connode.cpp~ 2010-10-08 20:29:24.000000000 +0000 ++++ openjdk/hotspot/src/share/vm/opto/connode.cpp 2010-11-29 07:57:22.000000000 +0000 +@@ -712,12 +712,7 @@ + if( t == Type::TOP ) return Type::TOP; + if( t == Type::FLOAT ) return Type::DOUBLE; + const TypeF *tf = t->is_float_constant(); +-#ifndef IA64 + return TypeD::make( (double)tf->getf() ); +-#else +- float x = tf->getf(); +- return TypeD::make( (x == 0.0f) ? (double)x : (double)x + ia64_double_zero ); +-#endif + } + + //============================================================================= From ptisnovs at redhat.com Mon Nov 29 05:49:05 2010 From: ptisnovs at redhat.com (Pavel Tisnovsky) Date: Mon, 29 Nov 2010 14:49:05 +0100 Subject: Reviewer needed - fix for regression test java/awt/Insets/WindowWithWarningTest/WindowWithWarning In-Reply-To: <20101127041303.GV17602@rivendell.middle-earth.co.uk> References: <4CEFFF41.7070400@redhat.com> <20101127041303.GV17602@rivendell.middle-earth.co.uk> Message-ID: <4CF3AF51.909@redhat.com> Dr Andrew John Hughes wrote: > On 19:41 Fri 26 Nov , Pavel Tisnovsky wrote: >> Hi all, >> >> can anyone please review fix for regression test >> java/awt/Insets/WindowWithWarningTest/WindowWithWarning? Mercurial >> export for IcedTea6 HEAD (1.10pre) is included in this mail as attachment. >> >> Description of the fix: >> >> This test must be run in an environment similar to sandbox used for >> running regular applets, which among other things means that each window >> created by the test itself has to be labelled by warning message "Java >> Applet Window". >> >> But for the test to (probably successfuly) proceed it is also required >> that AWT Robot is enabled (and it is disabled by default for applets, >> which reasonable, of course). >> >> To guarantee both conditions to run this test I copied system security >> policy file, added new line to enable AWT robot and then configured the >> test itself to use this policy file, because JTreg harness usually >> starts such tests (applets) without security manager installed. >> >> PS: I've made this fix with great help of Andrew, Deepak and Omair - >> thank you very much colleagues! >> >> Cheers >> Pavel > > This looks pretty standard, compared with other JDK tests. > > Could we not just allow the needed robot permission? Are all the ones > for the policy file really needed? Hi Andrew, you are right, I've tried to run this test with simplified policy file. Second version of test fix is included in attachment - can you please review it? Btw, is it possible to use webrev instead of hg export to send changes for review? It might be easier to read (but I'm not sure if it's possible to use webrev tool from Sun/Oracle to another project than OpenJDK). Pavel -------------- next part -------------- An embedded and charset-unspecified text was scrubbed... Name: hg_export Url: http://mail.openjdk.java.net/pipermail/distro-pkg-dev/attachments/20101129/2fd0a00a/hg_export.ksh From doko at icedtea.classpath.org Mon Nov 29 06:54:37 2010 From: doko at icedtea.classpath.org (doko at icedtea.classpath.org) Date: Mon, 29 Nov 2010 14:54:37 +0000 Subject: /hg/icedtea6: Add `build' to .hgignore Message-ID: changeset 7940436316db in /hg/icedtea6 details: http://icedtea.classpath.org/hg/icedtea6?cmd=changeset;node=7940436316db author: doko at ubuntu.com date: Mon Nov 29 15:54:26 2010 +0100 Add `build' to .hgignore diffstat: 1 file changed, 1 insertion(+) .hgignore | 1 + diffs (11 lines): diff -r 19c298cbf34e -r 7940436316db .hgignore --- a/.hgignore Mon Nov 29 14:00:48 2010 +0100 +++ b/.hgignore Mon Nov 29 15:54:26 2010 +0100 @@ -8,6 +8,7 @@ netbeans netbeans visualvm bootstrap +build debian lib tools From doko at icedtea.classpath.org Mon Nov 29 06:55:29 2010 From: doko at icedtea.classpath.org (doko at icedtea.classpath.org) Date: Mon, 29 Nov 2010 14:55:29 +0000 Subject: /hg/icedtea: Add `build' to .hgignore Message-ID: changeset 68ccdcc3cbb1 in /hg/icedtea details: http://icedtea.classpath.org/hg/icedtea?cmd=changeset;node=68ccdcc3cbb1 author: doko at ubuntu.com date: Mon Nov 29 15:55:14 2010 +0100 Add `build' to .hgignore diffstat: 1 file changed, 1 insertion(+) .hgignore | 1 + diffs (10 lines): diff -r ca86748424fa -r 68ccdcc3cbb1 .hgignore --- a/.hgignore Wed Nov 24 13:13:23 2010 +0000 +++ b/.hgignore Mon Nov 29 15:55:14 2010 +0100 @@ -1,5 +1,6 @@ syntax: glob syntax: glob *~ +build configure missing aclocal.m4 From doko at icedtea.classpath.org Mon Nov 29 06:56:18 2010 From: doko at icedtea.classpath.org (doko at icedtea.classpath.org) Date: Mon, 29 Nov 2010 14:56:18 +0000 Subject: /hg/icedtea-web: Add `build' to .hgignore Message-ID: changeset 99f8df2ec04b in /hg/icedtea-web details: http://icedtea.classpath.org/hg/icedtea-web?cmd=changeset;node=99f8df2ec04b author: doko at ubuntu.com date: Mon Nov 29 15:56:06 2010 +0100 Add `build' to .hgignore diffstat: 1 file changed, 1 insertion(+) .hgignore | 1 + diffs (11 lines): diff -r 243ab4185293 -r 99f8df2ec04b .hgignore --- a/.hgignore Fri Nov 26 15:21:56 2010 +0000 +++ b/.hgignore Mon Nov 29 15:56:06 2010 +0100 @@ -1,6 +1,7 @@ Makefile.in Makefile.in aclocal.m4 autom4te.cache +build configure install-sh missing From doko at icedtea.classpath.org Mon Nov 29 06:56:55 2010 From: doko at icedtea.classpath.org (doko at icedtea.classpath.org) Date: Mon, 29 Nov 2010 14:56:55 +0000 Subject: /hg/release/icedtea6-1.9: Add `build' to .hgignore Message-ID: changeset fb7722abad72 in /hg/release/icedtea6-1.9 details: http://icedtea.classpath.org/hg/release/icedtea6-1.9?cmd=changeset;node=fb7722abad72 author: doko at ubuntu.com date: Mon Nov 29 15:56:43 2010 +0100 Add `build' to .hgignore diffstat: 1 file changed, 1 insertion(+) .hgignore | 1 + diffs (11 lines): diff -r c24725b417da -r fb7722abad72 .hgignore --- a/.hgignore Mon Nov 29 14:33:22 2010 +0100 +++ b/.hgignore Mon Nov 29 15:56:43 2010 +0100 @@ -7,6 +7,7 @@ cacao cacao netbeans visualvm +build bootstrap debian lib From doko at icedtea.classpath.org Mon Nov 29 07:09:43 2010 From: doko at icedtea.classpath.org (doko at icedtea.classpath.org) Date: Mon, 29 Nov 2010 15:09:43 +0000 Subject: /hg/release/icedtea6-1.8: Add `build' to .hgignore Message-ID: changeset e1dad8c51736 in /hg/release/icedtea6-1.8 details: http://icedtea.classpath.org/hg/release/icedtea6-1.8?cmd=changeset;node=e1dad8c51736 author: doko at ubuntu.com date: Mon Nov 29 16:09:28 2010 +0100 Add `build' to .hgignore diffstat: 1 file changed, 1 insertion(+) .hgignore | 1 + diffs (11 lines): diff -r adb3cb07d6fd -r e1dad8c51736 .hgignore --- a/.hgignore Wed Nov 24 14:58:50 2010 +0000 +++ b/.hgignore Mon Nov 29 16:09:28 2010 +0100 @@ -9,6 +9,7 @@ visualvm visualvm openjdk bootstrap +build debian lib tools From dbhole at icedtea.classpath.org Mon Nov 29 07:20:59 2010 From: dbhole at icedtea.classpath.org (dbhole at icedtea.classpath.org) Date: Mon, 29 Nov 2010 15:20:59 +0000 Subject: /hg/icedtea-web: Patch to permanantly fix frame pop-out issue fo... Message-ID: changeset c267c4e2b844 in /hg/icedtea-web details: http://icedtea.classpath.org/hg/icedtea-web?cmd=changeset;node=c267c4e2b844 author: Deepak Bhole date: Mon Nov 29 10:19:17 2010 -0500 Patch to permanantly fix frame pop-out issue for applets Also fixes inability to enter text in applet fields in certain cases diffstat: 2 files changed, 33 insertions(+), 45 deletions(-) ChangeLog | 11 ++ plugin/icedteanp/java/sun/applet/PluginAppletViewer.java | 67 ++++---------- diffs (138 lines): diff -r 99f8df2ec04b -r c267c4e2b844 ChangeLog --- a/ChangeLog Mon Nov 29 15:56:06 2010 +0100 +++ b/ChangeLog Mon Nov 29 10:19:17 2010 -0500 @@ -1,3 +1,14 @@ 2010-11-25 Andrew John Hughes + + * plugin/icedteanp/java/sun/applet/PluginAppletViewer.java + (createPanel): Call the new framePanel() method with the proper handle. + (framePanel): New method, renamed from reFrame. Changed to now do one-time + framing of panel into the plugin. + (handleMessage): Don't re-frame the panel. Panel is now framed only once. + (destroyApplet): Dispose the frame right away, and try to remove the panel + if possible. If not, handleMessage() will do it when the panel is + ready/removable. + 2010-11-25 Andrew John Hughes * Makefile.am: diff -r 99f8df2ec04b -r c267c4e2b844 plugin/icedteanp/java/sun/applet/PluginAppletViewer.java --- a/plugin/icedteanp/java/sun/applet/PluginAppletViewer.java Mon Nov 29 15:56:06 2010 +0100 +++ b/plugin/icedteanp/java/sun/applet/PluginAppletViewer.java Mon Nov 29 10:19:17 2010 -0500 @@ -138,7 +138,7 @@ import com.sun.jndi.toolkit.url.UrlUtil; }); // create the frame. - PluginAppletViewer.reFrame(null, identifier, System.out, 0, panel); + PluginAppletViewer.framePanel(identifier, System.out, handle, panel); panel.init(); @@ -368,42 +368,25 @@ import com.sun.jndi.toolkit.url.UrlUtil; public PluginAppletViewer() { } - public static void reFrame(PluginAppletViewer oldFrame, - int identifier, PrintStream statusMsgStream, - long handle, AppletViewerPanel panel) { + public static void framePanel(int identifier, PrintStream statusMsgStream, + long handle, AppletViewerPanel panel) { - PluginDebug.debug("Reframing " + panel); + PluginDebug.debug("Framing " + panel); // SecurityManager MUST be set, and only privileged code may call reFrame() System.getSecurityManager().checkPermission(new AllPermission()); - // Same handle => nothing to do - if (oldFrame != null && handle == oldFrame.handle) - return; + PluginAppletViewer appletFrame = new PluginAppletViewer(handle, identifier, statusMsgStream, panel); + + appletFrame.add("Center", panel); + appletFrame.pack(); - PluginAppletViewer newFrame = new PluginAppletViewer(handle, identifier, statusMsgStream, panel); - - if (oldFrame != null) { - applets.remove(oldFrame.identifier); - oldFrame.removeWindowListener(oldFrame.windowEventListener); - panel.removeAppletListener(oldFrame.appletEventListener); + appletFrame.appletEventListener = new AppletEventListener(appletFrame, appletFrame); + panel.addAppletListener(appletFrame.appletEventListener); - // Add first, remove later - newFrame.add("Center", panel); - oldFrame.remove(panel); - oldFrame.dispose(); - } else { - newFrame.add("Center", panel); - } + applets.put(identifier, appletFrame); - newFrame.pack(); - - newFrame.appletEventListener = new AppletEventListener(newFrame, newFrame); - panel.addAppletListener(newFrame.appletEventListener); - - applets.put(identifier, newFrame); - - PluginDebug.debug(panel + " reframed"); + PluginDebug.debug(panel + " framed"); } /** @@ -581,18 +564,9 @@ import com.sun.jndi.toolkit.url.UrlUtil; waitForAppletInit((NetxPanel) applets.get(identifier).panel); // Should we proceed with reframing? - if (status.get(identifier).equals(PAV_INIT_STATUS.INACTIVE)) { + if (updateStatus(identifier, PAV_INIT_STATUS.REFRAME_COMPLETE).equals(PAV_INIT_STATUS.INACTIVE)) { destroyApplet(identifier); return; - } - - // Proceed with re-framing - reFrame(oldFrame, identifier, System.out, handle, oldFrame.panel); - - // There is a slight chance that destroy can happen - // between the above and below line - if (updateStatus(identifier, PAV_INIT_STATUS.REFRAME_COMPLETE).equals(PAV_INIT_STATUS.INACTIVE)) { - destroyApplet(identifier); } } else if (message.startsWith("destroy")) { @@ -691,16 +665,19 @@ import com.sun.jndi.toolkit.url.UrlUtil; return; } - // If already disposed, return - if (applets.get(identifier).panel.applet == null) { - // Try to still dispose the panel itself -- no harm done with double dispose + PluginDebug.debug("Attempting to destroy frame " + identifier); + + // Try to dispose the panel right away + if (applets.containsKey(identifier)) applets.get(identifier).dispose(); - PluginDebug.debug(identifier + " inactive. Returning."); + // If panel is already disposed, return + if (applets.get(identifier).panel.applet == null) { + PluginDebug.debug(identifier + " panel inactive. Returning."); return; } - PluginDebug.debug("Attempting to destroy " + identifier); + PluginDebug.debug("Attempting to destroy panel " + identifier); final int fIdentifier = identifier; SwingUtilities.invokeLater(new Runnable() { @@ -1674,7 +1651,7 @@ import com.sun.jndi.toolkit.url.UrlUtil; public void run() { ThreadGroup tg = ((JNLPClassLoader) p.applet.getClass().getClassLoader()).getApplication().getThreadGroup(); - + appletShutdown(p); appletPanels.removeElement(p); dispose(); From ahughes at redhat.com Mon Nov 29 07:46:52 2010 From: ahughes at redhat.com (Dr Andrew John Hughes) Date: Mon, 29 Nov 2010 15:46:52 +0000 Subject: Reviewer needed - fix for regression test java/awt/Insets/WindowWithWarningTest/WindowWithWarning In-Reply-To: <4CF3AF51.909@redhat.com> References: <4CEFFF41.7070400@redhat.com> <20101127041303.GV17602@rivendell.middle-earth.co.uk> <4CF3AF51.909@redhat.com> Message-ID: <20101129154652.GF5592@rivendell.middle-earth.co.uk> On 14:49 Mon 29 Nov , Pavel Tisnovsky wrote: > Dr Andrew John Hughes wrote: > > On 19:41 Fri 26 Nov , Pavel Tisnovsky wrote: > >> Hi all, > >> > >> can anyone please review fix for regression test > >> java/awt/Insets/WindowWithWarningTest/WindowWithWarning? Mercurial > >> export for IcedTea6 HEAD (1.10pre) is included in this mail as attachment. > >> > >> Description of the fix: > >> > >> This test must be run in an environment similar to sandbox used for > >> running regular applets, which among other things means that each window > >> created by the test itself has to be labelled by warning message "Java > >> Applet Window". > >> > >> But for the test to (probably successfuly) proceed it is also required > >> that AWT Robot is enabled (and it is disabled by default for applets, > >> which reasonable, of course). > >> > >> To guarantee both conditions to run this test I copied system security > >> policy file, added new line to enable AWT robot and then configured the > >> test itself to use this policy file, because JTreg harness usually > >> starts such tests (applets) without security manager installed. > >> > >> PS: I've made this fix with great help of Andrew, Deepak and Omair - > >> thank you very much colleagues! > >> > >> Cheers > >> Pavel > > > > This looks pretty standard, compared with other JDK tests. > > > > Could we not just allow the needed robot permission? Are all the ones > > for the policy file really needed? > > Hi Andrew, > > you are right, I've tried to run this test with simplified policy file. > Second version of test fix is included in attachment - can you please > review it? > Changes look good. You need to add a comment for Makefile.am in the Changelog. Otherwise, ok for commit. > Btw, is it possible to use webrev instead of hg export to send changes > for review? It might be easier to read (but I'm not sure if it's > possible to use webrev tool from Sun/Oracle to another project than > OpenJDK). > It's possible, but I don't see why anyone would want to. It's much easier to review patches attached in e-mails IMHO; you don't have to find somewhere to upload to and the reviewer doesn't have to mess about with a web browser to view it. What's your issue with using hg diff/export? webrev does the same thing anyway. > Pavel > # HG changeset patch > # User ptisnovs > # Date 1291038232 -3600 > # Node ID 5bea2af2803f3bc5c5253e5e6255acea77834f2d > # Parent c3150835fe12e852c987f26440f86e65da40391d > Regression test fix - setup of SecurityManager to run this test as > regular applet but with AWT robot enabled. > > diff -r c3150835fe12 -r 5bea2af2803f ChangeLog > --- a/ChangeLog Mon Nov 29 08:50:36 2010 +0100 > +++ b/ChangeLog Mon Nov 29 14:43:52 2010 +0100 > @@ -1,3 +1,10 @@ > +2010-11-29 Pavel Tisnovsky > + > + * Makefile.am: > + * patches/jtreg-WindowWithWarningTest.patch: > + Regression test fix - setup of SecurityManager to > + run this test as regular applet but with AWT robot enabled. > + > 2010-11-29 Matthias Klose > > * patches/hotspot/hs19/params-cast-size_t.patch: Update for hs19. > diff -r c3150835fe12 -r 5bea2af2803f Makefile.am > --- a/Makefile.am Mon Nov 29 08:50:36 2010 +0100 > +++ b/Makefile.am Mon Nov 29 14:43:52 2010 +0100 > @@ -300,7 +300,8 @@ > patches/openjdk/6850606-bigdecimal_regression.patch \ > patches/openjdk/6876282-bigdecimal_divide.patch \ > patches/f14-fonts.patch \ > - patches/jtreg-DeleteFont.patch > + patches/jtreg-DeleteFont.patch \ > + patches/jtreg-WindowWithWarningTest.patch > > if WITH_ALT_HSBUILD > ICEDTEA_PATCHES += \ > diff -r c3150835fe12 -r 5bea2af2803f patches/jtreg-WindowWithWarningTest.patch > --- /dev/null Thu Jan 01 00:00:00 1970 +0000 > +++ b/patches/jtreg-WindowWithWarningTest.patch Mon Nov 29 14:43:52 2010 +0100 > @@ -0,0 +1,50 @@ > +--- /dev/null 1970-01-01 01:00:00.000000000 +0100 > ++++ openjdk/jdk/test/java/awt/Insets/WindowWithWarningTest/applet.policy 2010-11-26 18:01:32.000000000 +0100 > +@@ -0,0 +1,13 @@ > ++ > ++// Standard extensions get all permissions by default > ++ > ++grant codeBase "file:${{java.ext.dirs}}/*" { > ++ permission java.security.AllPermission; > ++}; > ++ > ++// default permissions granted to all domains > ++ > ++grant { > ++ permission java.awt.AWTPermission "createRobot", "enabled"; > ++}; > ++ > +--- openjdk-old/jdk/test/java/awt/Insets/WindowWithWarningTest/WindowWithWarningTest.html 2010-06-21 23:15:49.000000000 +0200 > ++++ openjdk/jdk/test/java/awt/Insets/WindowWithWarningTest/WindowWithWarningTest.html 2010-11-26 18:29:25.622555000 +0100 > +@@ -4,7 +4,7 @@ > + @bug 6391770 > + @summary Content of the Window should be laid out in the area left after WarningWindow was added. > + @author Yuri Nesterenko > +- @run applet WindowWithWarningTest.html > ++ @run applet/othervm/policy=applet.policy WindowWithWarningTest.html > + --> > + > + > +--- openjdk-old/jdk/test/java/awt/Insets/WindowWithWarningTest/WindowWithWarningTest.java 2010-06-21 23:15:49.000000000 +0200 > ++++ openjdk/jdk/test/java/awt/Insets/WindowWithWarningTest/WindowWithWarningTest.java 2010-11-26 18:10:15.000000000 +0100 > +@@ -53,6 +53,7 @@ > + import java.awt.*; > + import java.awt.event.*; > + import javax.swing.*; > ++import java.security.*; > + > + //Automated tests should run as applet tests if possible because they > + // get their environments cleaned up, including AWT threads, any > +@@ -91,12 +92,6 @@ > + public void start () > + { > + //Get things going. Request focus, set size, et cetera > +- System.setSecurityManager( new SecurityManager() { > +- // deny AWTPermission("showWindowWithoutWarningBanner") > +- public boolean checkTopLevelWindow(Object window) { > +- return false; > +- } > +- }); > + JFrame frame = new JFrame("Window Test"); > + frame.setBounds(50, 50, 200, 200); > + frame.show(); -- Andrew :) Free Java Software Engineer Red Hat, Inc. (http://www.redhat.com) Support Free Java! Contribute to GNU Classpath and the OpenJDK http://www.gnu.org/software/classpath http://openjdk.java.net PGP Key: 94EFD9D8 (http://subkeys.pgp.net) Fingerprint = F8EF F1EA 401E 2E60 15FA 7927 142C 2591 94EF D9D8 From dbhole at redhat.com Mon Nov 29 08:03:11 2010 From: dbhole at redhat.com (Deepak Bhole) Date: Mon, 29 Nov 2010 11:03:11 -0500 Subject: [icedtea-web] RFC: Fix make distcheck In-Reply-To: <20101127041804.GW17602@rivendell.middle-earth.co.uk> References: <20101127041804.GW17602@rivendell.middle-earth.co.uk> Message-ID: <20101129160311.GC24721@redhat.com> * Dr Andrew John Hughes [2010-11-26 23:21]: > This cleans up the icedtea-web build, mainly fixing install/uninstall > issues such as the permission of installed files and the non-removal > of documentation. > > 2010-11-26 Andrew John Hughes > > Make distcheck work. > * Makefile.am: > (EXTRA_DIST): Use relative paths for netx > and the plugin. > (clean-local): Remove empty stamps directory. > (install-exec-local): Use install to install > programs and data with the correct permissions. > (install-data-local): Likewise. > (uninstall-local): Remove documentation. > (netx): Use ${INSTALL_DATA} to add resources so > that read-only files aren't copied. > (extra-files): Likewise. > ($(NETX_DIR)/launcher/javaws): Don't create empty launcher > directory. > (clean-docs): Remove empty docs directory. > (clean-bootstrap-directory): Remove empty bootstrap > directory. > > Ok? I tested it with a clean icedtea-web build, tried a make distcheck and then tried building from resulting tarball -- everything seems to be working correctly. OK for HEAD. Thanks! Deepak > -- > Andrew :) > > Free Java Software Engineer > Red Hat, Inc. (http://www.redhat.com) > > Support Free Java! > Contribute to GNU Classpath and the OpenJDK > http://www.gnu.org/software/classpath > http://openjdk.java.net > PGP Key: 94EFD9D8 (http://subkeys.pgp.net) > Fingerprint = F8EF F1EA 401E 2E60 15FA 7927 142C 2591 94EF D9D8 > diff -r 243ab4185293 Makefile.am > --- a/Makefile.am Fri Nov 26 15:21:56 2010 +0000 > +++ b/Makefile.am Sat Nov 27 04:04:56 2010 +0000 > @@ -83,7 +83,7 @@ > -Wl,\$$ORIGIN/../jre/lib/$(INSTALL_ARCH_DIR)/jli $(X11_CFLAGS) $(X11_LIBS) -ljli -ldl -lz > PLUGIN_VERSION = IcedTea $(PACKAGE_VERSION)$(ICEDTEA_REV)$(ICEDTEA_PKG) > > -EXTRA_DIST = $(NETX_SRCDIR) $(abs_top_srcdir)/plugin javaws.png javaws.desktop.in extra launcher > +EXTRA_DIST = $(top_srcdir)/netx $(top_srcdir)/plugin javaws.png javaws.desktop.in extra launcher > > # Top-Level Targets > # ================= > @@ -93,31 +93,41 @@ > > clean-local: clean-netx clean-plugin clean-liveconnect clean-extra clean-bootstrap-directory \ > clean-native-ecj clean-desktop-files clean-docs > + if [ -e stamps ] ; then \ > + rmdir stamps ; \ > + fi > > .PHONY: clean-IcedTeaPlugin clean-add-netx clean-add-netx-debug clean-add-plugin clean-add-plugin-debug \ > clean-bootstrap-directory clean-native-ecj clean-desktop-files clean-netx-docs clean-docs clean-plugin-docs > > install-exec-local: > - mkdir -p $(DESTDIR)$(bindir) > - mkdir -p $(DESTDIR)$(prefix)/jre/lib/$(INSTALL_ARCH_DIR) > + ${mkinstalldirs} $(DESTDIR)$(bindir) $(DESTDIR)$(prefix)/jre/lib/$(INSTALL_ARCH_DIR) > if ENABLE_PLUGIN > - cp -pPRf $(PLUGIN_DIR)/IcedTeaPlugin.so $(DESTDIR)$(prefix)/jre/lib/$(INSTALL_ARCH_DIR)/ > - cp -pPRf $(PLUGIN_DIR)/launcher/pluginappletviewer $(DESTDIR)$(bindir) > - cp -pPRf $(abs_top_builddir)/liveconnect/lib/classes.jar $(DESTDIR)$(prefix)/jre/lib/plugin.jar > + ${INSTALL_PROGRAM} $(PLUGIN_DIR)/IcedTeaPlugin.so $(DESTDIR)$(prefix)/jre/lib/$(INSTALL_ARCH_DIR)/ > + ${INSTALL_PROGRAM} $(PLUGIN_DIR)/launcher/pluginappletviewer $(DESTDIR)$(bindir) > + ${INSTALL_PROGRAM} $(abs_top_builddir)/liveconnect/lib/classes.jar $(DESTDIR)$(prefix)/jre/lib/plugin.jar > endif > - cp -pPRf $(NETX_DIR)/lib/classes.jar $(DESTDIR)$(prefix)/jre/lib/netx.jar > - cp -pPRf $(NETX_DIR)/launcher/javaws $(DESTDIR)$(bindir) > - cp extra-lib/about.jar $(DESTDIR)$(prefix)/jre/lib > + ${INSTALL_DATA} $(NETX_DIR)/lib/classes.jar $(DESTDIR)$(prefix)/jre/lib/netx.jar > + ${INSTALL_PROGRAM} $(NETX_DIR)/launcher/javaws $(DESTDIR)$(bindir) > + ${INSTALL_DATA} extra-lib/about.jar $(DESTDIR)$(prefix)/jre/lib > > install-data-local: > - mkdir -p $(DESTDIR)$(prefix)/man/man1 > - cp $(NETX_SRCDIR)/javaws.1 $(DESTDIR)$(prefix)/man/man1 > - cp $(NETX_RESOURCE_DIR)/about.jnlp $(DESTDIR)$(prefix)/jre/lib > + ${mkinstalldirs} -d $(DESTDIR)$(prefix)/man/man1 > + ${INSTALL_DATA} $(NETX_SRCDIR)/javaws.1 $(DESTDIR)$(prefix)/man/man1 > + ${INSTALL_DATA} $(NETX_RESOURCE_DIR)/about.jnlp $(DESTDIR)$(prefix)/jre/lib > if ENABLE_DOCS > - mkdir -p $(DESTDIR)$(htmldir) > - cp -pPRf ${abs_top_builddir}/docs/netx $(DESTDIR)$(htmldir) > + ${mkinstalldirs} $(DESTDIR)$(htmldir) > + (cd ${abs_top_builddir}/docs/netx; \ > + for files in $$(find . -type f); \ > + do \ > + ${INSTALL_DATA} -D $${files} $(DESTDIR)$(htmldir)/netx/$${files}; \ > + done) > if ENABLE_PLUGIN > - cp -pPRf ${abs_top_builddir}/docs/plugin $(DESTDIR)$(htmldir) > + (cd ${abs_top_builddir}/docs/plugin; \ > + for files in $$(find . -type f); \ > + do \ > + ${INSTALL_DATA} -D $${files} $(DESTDIR)$(htmldir)/plugin/$${files}; \ > + done) > endif > endif > > @@ -130,6 +140,7 @@ > rm -f $(DESTDIR)$(prefix)/man/man1/javaws.1 > rm -f $(DESTDIR)$(bindir)/pluginappletviewer > rm -f $(DESTDIR)$(bindir)/javaws > + rm -rf $(DESTDIR)$(htmldir) > > # Plugin > > @@ -250,7 +261,12 @@ > -sourcepath $(NETX_SRCDIR) \ > -bootclasspath $(RUNTIME) \ > @netx-source-files.txt > - cp -r $(NETX_RESOURCE_DIR) $(NETX_DIR)/net/sourceforge/jnlp > + (cd $(NETX_RESOURCE_DIR); \ > + for files in $$(find . -type f); \ > + do \ > + ${INSTALL_DATA} -D $${files} \ > + $(NETX_DIR)/net/sourceforge/jnlp/resources/$${files}; \ > + done) > mkdir -p stamps > touch $@ > > @@ -285,7 +301,12 @@ > $(BOOT_DIR)/bin/javac $(IT_JAVACFLAGS) -d extra-lib \ > -sourcepath $(abs_top_srcdir)/extra -cp netx.build \ > -bootclasspath $(RUNTIME) @extra-source-files.txt > - cp -r $(NETX_EXTRA_DIR) extra-lib/net/sourceforge/jnlp/about > + (cd $(NETX_EXTRA_DIR); \ > + for files in $$(find . -type f); \ > + do \ > + ${INSTALL_DATA} -D $${files} \ > + ${abs_top_builddir}/extra-lib/net/sourceforge/jnlp/about/resources/$${files}; \ > + done) > mkdir -p stamps > touch $@ > > @@ -303,7 +324,6 @@ > -c -o $@ $< > > $(NETX_DIR)/launcher/javaws: $(NETX_LAUNCHER_OBJECTS) > - mkdir -p launcher > $(CC) $(NETX_LAUNCHER_OBJECTS) $(LAUNCHER_LINK) > > javaws.desktop: javaws.desktop.in > @@ -315,6 +335,9 @@ > touch stamps/docs.stamp > > clean-docs: clean-netx-docs clean-plugin-docs > + if [ -e ${abs_top_builddir}/docs ] ; then \ > + rmdir ${abs_top_builddir}/docs ; \ > + fi > rm -f stamps/docs.stamp > > stamps/netx-docs.stamp: stamps/bootstrap-directory.stamp > @@ -416,6 +439,9 @@ > > clean-bootstrap-directory: > rm -rf $(BOOT_DIR) > + if [ -e ${abs_top_builddir}/bootstrap ] ; then \ > + rmdir ${abs_top_builddir}/bootstrap ; \ > + fi > rm -f stamps/bootstrap-directory.stamp > > # Target Aliases From dbhole at redhat.com Mon Nov 29 08:09:10 2010 From: dbhole at redhat.com (Deepak Bhole) Date: Mon, 29 Nov 2010 11:09:10 -0500 Subject: /hg/icedtea-web: Patch to permanantly fix frame pop-out issue fo... In-Reply-To: References: Message-ID: <20101129160910.GD24721@redhat.com> Just an FYI.. this was approved a while ago.. I just forgot to commit it and noticed it now as I was going through my workspace gearing up for 1.0: http://mail.openjdk.java.net/pipermail/distro-pkg-dev/2010-November/010814.html Deepak * dbhole at icedtea.classpath.org [2010-11-29 10:39]: > changeset c267c4e2b844 in /hg/icedtea-web > details: http://icedtea.classpath.org/hg/icedtea-web?cmd=changeset;node=c267c4e2b844 > author: Deepak Bhole > date: Mon Nov 29 10:19:17 2010 -0500 > > Patch to permanantly fix frame pop-out issue for applets Also fixes > inability to enter text in applet fields in certain cases > > > diffstat: > > 2 files changed, 33 insertions(+), 45 deletions(-) > ChangeLog | 11 ++ > plugin/icedteanp/java/sun/applet/PluginAppletViewer.java | 67 ++++---------- > > diffs (138 lines): > > diff -r 99f8df2ec04b -r c267c4e2b844 ChangeLog > --- a/ChangeLog Mon Nov 29 15:56:06 2010 +0100 > +++ b/ChangeLog Mon Nov 29 10:19:17 2010 -0500 > @@ -1,3 +1,14 @@ 2010-11-25 Andrew John Hughes +2010-11-29 Deepak Bhole > + > + * plugin/icedteanp/java/sun/applet/PluginAppletViewer.java > + (createPanel): Call the new framePanel() method with the proper handle. > + (framePanel): New method, renamed from reFrame. Changed to now do one-time > + framing of panel into the plugin. > + (handleMessage): Don't re-frame the panel. Panel is now framed only once. > + (destroyApplet): Dispose the frame right away, and try to remove the panel > + if possible. If not, handleMessage() will do it when the panel is > + ready/removable. > + > 2010-11-25 Andrew John Hughes > > * Makefile.am: > diff -r 99f8df2ec04b -r c267c4e2b844 plugin/icedteanp/java/sun/applet/PluginAppletViewer.java > --- a/plugin/icedteanp/java/sun/applet/PluginAppletViewer.java Mon Nov 29 15:56:06 2010 +0100 > +++ b/plugin/icedteanp/java/sun/applet/PluginAppletViewer.java Mon Nov 29 10:19:17 2010 -0500 > @@ -138,7 +138,7 @@ import com.sun.jndi.toolkit.url.UrlUtil; > }); > > // create the frame. > - PluginAppletViewer.reFrame(null, identifier, System.out, 0, panel); > + PluginAppletViewer.framePanel(identifier, System.out, handle, panel); > > panel.init(); > > @@ -368,42 +368,25 @@ import com.sun.jndi.toolkit.url.UrlUtil; > public PluginAppletViewer() { > } > > - public static void reFrame(PluginAppletViewer oldFrame, > - int identifier, PrintStream statusMsgStream, > - long handle, AppletViewerPanel panel) { > + public static void framePanel(int identifier, PrintStream statusMsgStream, > + long handle, AppletViewerPanel panel) { > > - PluginDebug.debug("Reframing " + panel); > + PluginDebug.debug("Framing " + panel); > > // SecurityManager MUST be set, and only privileged code may call reFrame() > System.getSecurityManager().checkPermission(new AllPermission()); > > - // Same handle => nothing to do > - if (oldFrame != null && handle == oldFrame.handle) > - return; > + PluginAppletViewer appletFrame = new PluginAppletViewer(handle, identifier, statusMsgStream, panel); > + > + appletFrame.add("Center", panel); > + appletFrame.pack(); > > - PluginAppletViewer newFrame = new PluginAppletViewer(handle, identifier, statusMsgStream, panel); > - > - if (oldFrame != null) { > - applets.remove(oldFrame.identifier); > - oldFrame.removeWindowListener(oldFrame.windowEventListener); > - panel.removeAppletListener(oldFrame.appletEventListener); > + appletFrame.appletEventListener = new AppletEventListener(appletFrame, appletFrame); > + panel.addAppletListener(appletFrame.appletEventListener); > > - // Add first, remove later > - newFrame.add("Center", panel); > - oldFrame.remove(panel); > - oldFrame.dispose(); > - } else { > - newFrame.add("Center", panel); > - } > + applets.put(identifier, appletFrame); > > - newFrame.pack(); > - > - newFrame.appletEventListener = new AppletEventListener(newFrame, newFrame); > - panel.addAppletListener(newFrame.appletEventListener); > - > - applets.put(identifier, newFrame); > - > - PluginDebug.debug(panel + " reframed"); > + PluginDebug.debug(panel + " framed"); > } > > /** > @@ -581,18 +564,9 @@ import com.sun.jndi.toolkit.url.UrlUtil; > waitForAppletInit((NetxPanel) applets.get(identifier).panel); > > // Should we proceed with reframing? > - if (status.get(identifier).equals(PAV_INIT_STATUS.INACTIVE)) { > + if (updateStatus(identifier, PAV_INIT_STATUS.REFRAME_COMPLETE).equals(PAV_INIT_STATUS.INACTIVE)) { > destroyApplet(identifier); > return; > - } > - > - // Proceed with re-framing > - reFrame(oldFrame, identifier, System.out, handle, oldFrame.panel); > - > - // There is a slight chance that destroy can happen > - // between the above and below line > - if (updateStatus(identifier, PAV_INIT_STATUS.REFRAME_COMPLETE).equals(PAV_INIT_STATUS.INACTIVE)) { > - destroyApplet(identifier); > } > > } else if (message.startsWith("destroy")) { > @@ -691,16 +665,19 @@ import com.sun.jndi.toolkit.url.UrlUtil; > return; > } > > - // If already disposed, return > - if (applets.get(identifier).panel.applet == null) { > - // Try to still dispose the panel itself -- no harm done with double dispose > + PluginDebug.debug("Attempting to destroy frame " + identifier); > + > + // Try to dispose the panel right away > + if (applets.containsKey(identifier)) > applets.get(identifier).dispose(); > > - PluginDebug.debug(identifier + " inactive. Returning."); > + // If panel is already disposed, return > + if (applets.get(identifier).panel.applet == null) { > + PluginDebug.debug(identifier + " panel inactive. Returning."); > return; > } > > - PluginDebug.debug("Attempting to destroy " + identifier); > + PluginDebug.debug("Attempting to destroy panel " + identifier); > > final int fIdentifier = identifier; > SwingUtilities.invokeLater(new Runnable() { > @@ -1674,7 +1651,7 @@ import com.sun.jndi.toolkit.url.UrlUtil; > public void run() > { > ThreadGroup tg = ((JNLPClassLoader) p.applet.getClass().getClassLoader()).getApplication().getThreadGroup(); > - > + > appletShutdown(p); > appletPanels.removeElement(p); > dispose(); From ptisnovs at icedtea.classpath.org Mon Nov 29 08:11:26 2010 From: ptisnovs at icedtea.classpath.org (ptisnovs at icedtea.classpath.org) Date: Mon, 29 Nov 2010 16:11:26 +0000 Subject: /hg/icedtea6: Regression test fix - setup of SecurityManager to ... Message-ID: changeset d66a310d5c94 in /hg/icedtea6 details: http://icedtea.classpath.org/hg/icedtea6?cmd=changeset;node=d66a310d5c94 author: ptisnovs date: Mon Nov 29 17:15:17 2010 +0100 Regression test fix - setup of SecurityManager to run this test as regular applet but with AWT robot enabled. diffstat: 3 files changed, 60 insertions(+), 1 deletion(-) ChangeLog | 8 ++++ Makefile.am | 3 + patches/jtreg-WindowWithWarningTest.patch | 50 +++++++++++++++++++++++++++++ diffs (82 lines): diff -r 7940436316db -r d66a310d5c94 ChangeLog --- a/ChangeLog Mon Nov 29 15:54:26 2010 +0100 +++ b/ChangeLog Mon Nov 29 17:15:17 2010 +0100 @@ -1,3 +1,11 @@ 2010-11-29 Matthias Klose + + * Makefile.am: + (ICEDTEA_PATCHES): Updated. + * patches/jtreg-WindowWithWarningTest.patch: + Regression test fix - setup of SecurityManager to + run this test as regular applet but with AWT robot enabled. + 2010-11-29 Matthias Klose * patches/hotspot/hs19/ia64-fix.patch: Reapply chunk from diff -r 7940436316db -r d66a310d5c94 Makefile.am --- a/Makefile.am Mon Nov 29 15:54:26 2010 +0100 +++ b/Makefile.am Mon Nov 29 17:15:17 2010 +0100 @@ -300,7 +300,8 @@ ICEDTEA_PATCHES = \ patches/openjdk/6850606-bigdecimal_regression.patch \ patches/openjdk/6876282-bigdecimal_divide.patch \ patches/f14-fonts.patch \ - patches/jtreg-DeleteFont.patch + patches/jtreg-DeleteFont.patch \ + patches/jtreg-WindowWithWarningTest.patch if WITH_ALT_HSBUILD ICEDTEA_PATCHES += \ diff -r 7940436316db -r d66a310d5c94 patches/jtreg-WindowWithWarningTest.patch --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/patches/jtreg-WindowWithWarningTest.patch Mon Nov 29 17:15:17 2010 +0100 @@ -0,0 +1,50 @@ +--- /dev/null 1970-01-01 01:00:00.000000000 +0100 ++++ openjdk/jdk/test/java/awt/Insets/WindowWithWarningTest/applet.policy 2010-11-26 18:01:32.000000000 +0100 +@@ -0,0 +1,13 @@ ++ ++// Standard extensions get all permissions by default ++ ++grant codeBase "file:${{java.ext.dirs}}/*" { ++ permission java.security.AllPermission; ++}; ++ ++// default permissions granted to all domains ++ ++grant { ++ permission java.awt.AWTPermission "createRobot", "enabled"; ++}; ++ +--- openjdk-old/jdk/test/java/awt/Insets/WindowWithWarningTest/WindowWithWarningTest.html 2010-06-21 23:15:49.000000000 +0200 ++++ openjdk/jdk/test/java/awt/Insets/WindowWithWarningTest/WindowWithWarningTest.html 2010-11-26 18:29:25.622555000 +0100 +@@ -4,7 +4,7 @@ + @bug 6391770 + @summary Content of the Window should be laid out in the area left after WarningWindow was added. + @author Yuri Nesterenko +- @run applet WindowWithWarningTest.html ++ @run applet/othervm/policy=applet.policy WindowWithWarningTest.html + --> + + +--- openjdk-old/jdk/test/java/awt/Insets/WindowWithWarningTest/WindowWithWarningTest.java 2010-06-21 23:15:49.000000000 +0200 ++++ openjdk/jdk/test/java/awt/Insets/WindowWithWarningTest/WindowWithWarningTest.java 2010-11-26 18:10:15.000000000 +0100 +@@ -53,6 +53,7 @@ + import java.awt.*; + import java.awt.event.*; + import javax.swing.*; ++import java.security.*; + + //Automated tests should run as applet tests if possible because they + // get their environments cleaned up, including AWT threads, any +@@ -91,12 +92,6 @@ + public void start () + { + //Get things going. Request focus, set size, et cetera +- System.setSecurityManager( new SecurityManager() { +- // deny AWTPermission("showWindowWithoutWarningBanner") +- public boolean checkTopLevelWindow(Object window) { +- return false; +- } +- }); + JFrame frame = new JFrame("Window Test"); + frame.setBounds(50, 50, 200, 200); + frame.show(); From bugzilla-daemon at icedtea.classpath.org Mon Nov 29 10:24:20 2010 From: bugzilla-daemon at icedtea.classpath.org (bugzilla-daemon at icedtea.classpath.org) Date: Mon, 29 Nov 2010 18:24:20 +0000 Subject: [Bug 597] Entities are parsed incorrectly in PARAM tag in applet plugin Message-ID: http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=597 asu at redhat.com changed: What |Removed |Added ---------------------------------------------------------------------------- AssignedTo|unassigned at icedtea.classpath|asu at redhat.com |.org | Status|ASSIGNED |NEW -- Configure bugmail: http://icedtea.classpath.org/bugzilla/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are the assignee for the bug, or are watching the assignee. You are the assignee for the bug, or are watching the assignee. From asu at redhat.com Mon Nov 29 13:14:26 2010 From: asu at redhat.com (Andrew Su) Date: Mon, 29 Nov 2010 16:14:26 -0500 Subject: [RFC][icedtea-web]: Adding control panel to icedtea-web In-Reply-To: <20101127032752.GR17602@rivendell.middle-earth.co.uk> References: <619585353.556241290805830632.JavaMail.root@zmail01.collab.prod.int.phx2.redhat.com> <670901322.556301290805913094.JavaMail.root@zmail01.collab.prod.int.phx2.redhat.com> <20101127032752.GR17602@rivendell.middle-earth.co.uk> Message-ID: <4CF417B2.3060609@redhat.com> Hello, Here is the updated patch for adding the control panel. If I missed something let me know. Right now I've left netx/net/sourceforge/jnlp/security/viewer/* and not deleted them. It is currently copied into org/classpath/icedtea/controlpanel/ but I was looking at javaws, which uses the viewer. Our options are to either remove, the parameter "-viewer" for javaws (for now) then later re-place it back in... or to leave netx/net/sourceforge/jnlp/security/viewer/* as it is. Opinions? * Makefile.am: (CONTROLPANEL_DIR): Build directory for control panel. (CONTROLPANEL_SRCDIR): Source directory for control panel. (CONTROLPANEL_LAUNCHER_OBJECTS): Objects used to compile binary control panel. (all-local): Add stamps/controlpanel-dist.stamp stamps/controlpanel.stamp $(CONTROLPANEL_DIR)/launcher/controlpanel. (clean-local): Add clean-controlpanel. (install-exec-local): Install the control panel jar file and control panel binary. (uninstall-local): Delete controlpanel.jar and controlpanel binary from installed location. (controlpanel-source-files.txt): Get the list of source files for control panel. (stamps/controlpanel.stamp): Compile the java files for control panel. (stamps/controlpanel-dist.stamp): Depend on stamps/controlpanel.stamp. Create the jar file for control panel. ($(CONTROLPANEL_DIR)/launcher/%.o): Create the launcher objects. ($(CONTROLPANEL_DIR)/launcher/controlpanel): Link the objects to make the launcher. (clean-controlpanel): Remove the compiled control panel. (controlpanel): Calls stamps/controlpanel.stamp. (controlpanel-dist): Calls stamps/controlpanel-dist.stamp. (stamps/docs.stamp): Calls stamps/controlpanel-docs.stamp. (clean-docs): Calls clean-controlpanel-docs. (stamps/controlpanel-docs.stamp): Create the documentation for controlpanel. (clean-controlpanel-docs): Remove the documentation * controlpanel/org/classpath/icedtea/controlpanel/AboutPanel.java, * controlpanel/org/classpath/icedtea/controlpanel/ComboItem.java, * controlpanel/org/classpath/icedtea/controlpanel/ControlPanel.java, * controlpanel/org/classpath/icedtea/controlpanel/DebuggingPanel.java, * controlpanel/org/classpath/icedtea/controlpanel/DesktopShortcutPanel.java, * controlpanel/org/classpath/icedtea/controlpanel/JREPanel.java, * controlpanel/org/classpath/icedtea/controlpanel/NamedBorderPanel.java, * controlpanel/org/classpath/icedtea/controlpanel/SecuritySettingsPanel.java, * controlpanel/org/classpath/icedtea/controlpanel/TemporaryInternetFilesPanel.java, * controlpanel/org/classpath/icedtea/controlpanel/network/AdvancedProxySettingsDialog.java, * controlpanel/org/classpath/icedtea/controlpanel/network/AdvancedProxySettingsPane.java, * controlpanel/org/classpath/icedtea/controlpanel/network/NetworkSettingsPanel.java, * controlpanel/org/classpath/icedtea/controlpanel/security/viewer/CertificatePane.java, * controlpanel/org/classpath/icedtea/controlpanel/security/viewer/CertificateViewer.java: New classes. All methods are new as well. * controlpanel/org/classpath/icedtea/controlpanel/translator/Translator.java: Copied over from netx/net/sourceforge/jnlp/runtime/Translator.java and changed package. * netx/net/sourceforge/jnlp/resources/Messages.properties: Added messages for control panel. On 11/26/2010 10:27 PM, Dr Andrew John Hughes wrote: > On 16:11 Fri 26 Nov , Andrew Su wrote: >> Hello, >> >> I have attached a patch to add a control panel for icedtea-web. This can be used to modify deployments.properties. >> >> Current features: >> - Enable/Disable caching. >> - Set cache location. >> - Set max space cache may use. (in MB) >> - Set compression level of jar files. >> - Import/View/Export/Remove certificates. >> - Turn tracing on/off. >> - Turn debugging on/off. >> - Set behaviour of Java Console. >> - Set whether to create desktop shortcut for javaws or not. >> - Set proxy settings. >> - Set how security warning behaviours. >> >> ChangeLog: >> >> * Makefile.am: >> (CONTROLPANEL_DIR): Build directory for control panel. >> (CONTROLPANEL_SRCDIR): Source directory for control panel. >> (CONTROLPANEL_LAUNCHER_OBJECTS): Objects used to compile binary >> control panel. >> (all-local): Add stamps/controlpanel-dist.stamp >> stamps/controlpanel.stamp $(CONTROLPANEL_DIR)/launcher/controlpanel. >> (clean-local): Add clean-controlpanel. >> (install-exec-local): Install the control panel jar file and control >> panel binary. >> (uninstall-local): Delete controlpanel.jar and controlpanel binary >> from installed location. >> (controlpanel-source-files.txt): Get the list of source files for >> control panel. >> (stamps/controlpanel.stamp): Compile the java files for control panel. >> (stamps/controlpanel-dist.stamp): Depend on stamps/controlpanel.stamp. >> Create the jar file for control panel. >> ($(CONTROLPANEL_DIR)/launcher/%.o): Create the launcher objects. >> ($(CONTROLPANEL_DIR)/launcher/controlpanel): Link the objects to make >> the launcher. >> (clean-controlpanel): Remove the compiled control panel. >> (controlpanel): Calls stamps/controlpanel.stamp. >> (controlpanel-dist): Calls stamps/controlpanel-dist.stamp. >> * controlpanel/org/classpath/controlpanel/AboutPanel.java, >> * controlpanel/org/classpath/controlpanel/ComboItem.java, >> * controlpanel/org/classpath/controlpanel/ControlPanel.java, >> * controlpanel/org/classpath/controlpanel/DebuggingPanel.java, >> * controlpanel/org/classpath/controlpanel/DesktopShortcutPanel.java, >> * controlpanel/org/classpath/controlpanel/JREPanel.java, >> * controlpanel/org/classpath/controlpanel/NamedBorderPanel.java, >> * controlpanel/org/classpath/controlpanel/SecuritySettingsPanel.java, >> * controlpanel/org/classpath/controlpanel/TemporaryInternetFilesPanel.java, >> * controlpanel/org/classpath/controlpanel/network/AdvancedProxySettingsDialog.java, >> * controlpanel/org/classpath/controlpanel/network/AdvancedProxySettingsPane.java, >> * controlpanel/org/classpath/controlpanel/network/NetworkSettingsPanel.java, >> * controlpanel/org/classpath/controlpanel/security/viewer/CertificatePane.java, >> * controlpanel/org/classpath/controlpanel/security/viewer/CertificateViewer.java, >> * controlpanel/org/classpath/controlpanel/translator/Translator.java: >> New classes. All methods are new as well. >> * netx/net/sourceforge/jnlp/resources/Messages.properties: Added >> messages for control panel. >> >> Comments? Question? Concerns? >> >> Cheers, >> Andrew > Further comments inline but why does this need to introduce a completely new source tree > and jar? Could it not just be part of the NetX trees? Added some more comments to code, most of the variable names speak for themselves. I think it would be better to keep it separate from > As others have said, you need proper copyright notices, authorship and org.classpath.icedtea > as a package prefix if you insist on using a new hierarchy. Added copyrights and changed package. > You also need to add documentation targets -- another reason to use the netx trees if possible > so you can just add a package rather than additional targets. Added documentation targets. >> diff -r 243ab4185293 ChangeLog >> --- a/ChangeLog Fri Nov 26 15:21:56 2010 +0000 >> +++ b/ChangeLog Fri Nov 26 15:58:55 2010 -0500 >> @@ -1,3 +1,47 @@ >> +2010-11-26 Andrew Su >> + >> + * Makefile.am: >> + (CONTROLPANEL_DIR): Build directory for control panel. >> + (CONTROLPANEL_SRCDIR): Source directory for control panel. >> + (CONTROLPANEL_LAUNCHER_OBJECTS): Objects used to compile binary >> + control panel. >> + (all-local): Add stamps/controlpanel-dist.stamp >> + stamps/controlpanel.stamp $(CONTROLPANEL_DIR)/launcher/controlpanel. >> + (clean-local): Add clean-controlpanel. >> + (install-exec-local): Install the control panel jar file and control >> + panel binary. >> + (uninstall-local): Delete controlpanel.jar and controlpanel binary >> + from installed location. >> + (controlpanel-source-files.txt): Get the list of source files for >> + control panel. >> + (stamps/controlpanel.stamp): Compile the java files for control panel. >> + (stamps/controlpanel-dist.stamp): Depend on stamps/controlpanel.stamp. >> + Create the jar file for control panel. >> + ($(CONTROLPANEL_DIR)/launcher/%.o): Create the launcher objects. >> + ($(CONTROLPANEL_DIR)/launcher/controlpanel): Link the objects to make >> + the launcher. >> + (clean-controlpanel): Remove the compiled control panel. >> + (controlpanel): Calls stamps/controlpanel.stamp. >> + (controlpanel-dist): Calls stamps/controlpanel-dist.stamp. >> + * controlpanel/org/classpath/controlpanel/AboutPanel.java, >> + * controlpanel/org/classpath/controlpanel/ComboItem.java, >> + * controlpanel/org/classpath/controlpanel/ControlPanel.java, >> + * controlpanel/org/classpath/controlpanel/DebuggingPanel.java, >> + * controlpanel/org/classpath/controlpanel/DesktopShortcutPanel.java, >> + * controlpanel/org/classpath/controlpanel/JREPanel.java, >> + * controlpanel/org/classpath/controlpanel/NamedBorderPanel.java, >> + * controlpanel/org/classpath/controlpanel/SecuritySettingsPanel.java, >> + * controlpanel/org/classpath/controlpanel/TemporaryInternetFilesPanel.java, >> + * controlpanel/org/classpath/controlpanel/network/AdvancedProxySettingsDialog.java, >> + * controlpanel/org/classpath/controlpanel/network/AdvancedProxySettingsPane.java, >> + * controlpanel/org/classpath/controlpanel/network/NetworkSettingsPanel.java, >> + * controlpanel/org/classpath/controlpanel/security/viewer/CertificatePane.java, >> + * controlpanel/org/classpath/controlpanel/security/viewer/CertificateViewer.java, >> + * controlpanel/org/classpath/controlpanel/translator/Translator.java: >> + New classes. All methods are new as well. >> + * netx/net/sourceforge/jnlp/resources/Messages.properties: Added >> + messages for control panel. >> + >> 2010-11-25 Andrew John Hughes >> >> * Makefile.am: >> @@ -566,7 +610,7 @@ >> 2010-10-27 Omair Majid >> >> * netx/net/sourceforge/jnlp/runtime/DeploymentConfiguration.java >> - (load): Do a security check at start. A security exception later on may >> + (load): Do a security check at start. * security exception later on may >> accidentally reveal a filename or a system property. >> (save): Likewise. >> >> diff -r 243ab4185293 Makefile.am >> --- a/Makefile.am Fri Nov 26 15:21:56 2010 +0000 >> +++ b/Makefile.am Fri Nov 26 15:58:55 2010 -0500 >> @@ -4,6 +4,8 @@ >> NETX_SRCDIR = $(abs_top_srcdir)/netx >> NETX_RESOURCE_DIR=$(NETX_SRCDIR)/net/sourceforge/jnlp/resources >> NETX_EXTRA_DIR=$(abs_top_srcdir)/extra/net/sourceforge/jnlp/about/resources >> +CONTROLPANEL_DIR=$(abs_top_builddir)/controlpanel.build >> +CONTROLPANEL_SRCDIR=$(abs_top_srcdir)/controlpanel >> >> # Build directories >> >> @@ -74,6 +76,7 @@ >> LAUNCHER_OBJECTS = java.o java_md.o splashscreen_stubs.o >> PLUGIN_LAUNCHER_OBJECTS = $(addprefix $(PLUGIN_DIR)/launcher/,$(LAUNCHER_OBJECTS)) >> NETX_LAUNCHER_OBJECTS = $(addprefix $(NETX_DIR)/launcher/,$(LAUNCHER_OBJECTS)) >> +CONTROLPANEL_LAUNCHER_OBJECTS = $(addprefix $(CONTROLPANEL_DIR)/launcher/,$(LAUNCHER_OBJECTS)) >> LAUNCHER_FLAGS = -O2 -fno-strict-aliasing -fPIC -pthread -W -Wall -Wno-unused -Wno-parentheses -pipe -fno-omit-frame-pointer \ >> -g -D_LARGEFILE64_SOURCE -D_GNU_SOURCE -D_REENTRANT -DLAUNCHER_NAME='"java"' -I$(LAUNCHER_SRCDIR) \ >> -DJDK_MAJOR_VERSION='"1"' -DJDK_MINOR_VERSION='"6"' -DLIBARCHNAME='"$(JRE_ARCH_DIR)"' >> @@ -89,13 +92,15 @@ >> # ================= >> >> all-local: stamps/netx-dist.stamp extra-lib/about.jar stamps/plugin.stamp $(NETX_DIR)/launcher/javaws \ >> - javaws.desktop stamps/docs.stamp >> + javaws.desktop stamps/docs.stamp stamps/controlpanel-dist.stamp stamps/controlpanel.stamp \ >> + $(CONTROLPANEL_DIR)/launcher/controlpanel >> > You don't need stamps/controlpanel.stamp here as it's a dependency of controlpanel-dist.stamp. > Fixed. >> clean-local: clean-netx clean-plugin clean-liveconnect clean-extra clean-bootstrap-directory \ >> - clean-native-ecj clean-desktop-files clean-docs >> + clean-native-ecj clean-desktop-files clean-docs clean-controlpanel >> >> .PHONY: clean-IcedTeaPlugin clean-add-netx clean-add-netx-debug clean-add-plugin clean-add-plugin-debug \ >> - clean-bootstrap-directory clean-native-ecj clean-desktop-files clean-netx-docs clean-docs clean-plugin-docs >> + clean-bootstrap-directory clean-native-ecj clean-desktop-files clean-netx-docs clean-docs clean-plugin-docs \ >> + clean-controlpanel >> >> install-exec-local: >> mkdir -p $(DESTDIR)$(bindir) >> @@ -108,6 +113,8 @@ >> cp -pPRf $(NETX_DIR)/lib/classes.jar $(DESTDIR)$(prefix)/jre/lib/netx.jar >> cp -pPRf $(NETX_DIR)/launcher/javaws $(DESTDIR)$(bindir) >> cp extra-lib/about.jar $(DESTDIR)$(prefix)/jre/lib >> + cp -pPRf $(CONTROLPANEL_DIR)/lib/classes.jar $(DESTDIR)$(prefix)/jre/lib/controlpanel.jar >> + cp -pPRf $(CONTROLPANEL_DIR)/launcher/controlpanel $(DESTDIR)$(bindir) >> > You'll need to modify these as I have in my forthcoming dist patch. > Again, why do we need a separate jar for this? > >> install-data-local: >> mkdir -p $(DESTDIR)$(prefix)/man/man1 >> @@ -127,9 +134,11 @@ >> rm -f $(DESTDIR)$(prefix)/jre/lib/netx.jar >> rm -f $(DESTDIR)$(prefix)/jre/lib/about.jnlp >> rm -f $(DESTDIR)$(prefix)/jre/lib/about.jar >> + rm -f $(DESTDIR)$(prefix)/jre/lib/controlpanel.jar >> rm -f $(DESTDIR)$(prefix)/man/man1/javaws.1 >> rm -f $(DESTDIR)$(bindir)/pluginappletviewer >> rm -f $(DESTDIR)$(bindir)/javaws >> + rm -f $(DESTDIR)$(bindir)/controlpanel >> >> # Plugin >> >> @@ -309,6 +318,48 @@ >> javaws.desktop: javaws.desktop.in >> sed "s#PATH_TO_JAVAWS#$(DESTDIR)$(bindir)/javaws#"< $(srcdir)/javaws.desktop.in> javaws.desktop >> >> +# Control Panel >> +# Requires some netx functionality to use. >> +controlpanel-source-files.txt: >> + find $(CONTROLPANEL_SRCDIR) -name '*.java' | sort> $@ >> + >> +stamps/controlpanel.stamp: controlpanel-source-files.txt stamps/bootstrap-directory.stamp >> + mkdir -p $(CONTROLPANEL_DIR) >> + $(BOOT_DIR)/bin/javac $(IT_JAVACFLAGS) \ >> + -d $(CONTROLPANEL_DIR) \ >> + -classpath $(NETX_DIR) \ >> + -sourcepath $(CONTROLPANEL_SRCDIR) \ >> + -bootclasspath $(RUNTIME) \ >> + @controlpanel-source-files.txt >> + mkdir -p stamps >> + touch $@ >> + >> +stamps/controlpanel-dist.stamp: stamps/controlpanel.stamp >> + (cd $(CONTROLPANEL_DIR) ; \ >> + mkdir -p lib ; \ >> + $(BOOT_DIR)/bin/jar cf lib/classes.jar org ; \ >> + cp -pPR $(SRC_DIR_LINK) $(CONTROLPANEL_SRCDIR) src; \ >> + find src -type f -exec chmod 640 '{}' ';' -o -type d -exec chmod 750 '{}' ';'; \ >> + cd src ; \ >> + $(ZIP) -qr $(CONTROLPANEL_DIR)/lib/src.zip org ) >> + mkdir -p stamps >> + touch $@ >> + >> +$(CONTROLPANEL_DIR)/launcher/%.o: $(LAUNCHER_SRCDIR)/%.c >> + mkdir -p $(CONTROLPANEL_DIR)/launcher&& \ >> + $(CC) $(LAUNCHER_FLAGS) -DJAVA_ARGS='{ "-Xbootclasspath/a:$(DESTDIR)$(prefix)/jre/lib/controlpanel.jar", "-J-ms8m", "org.classpath.controlpanel.ControlPanel", }' -DPROGNAME="controlpanel" \ >> + -c -o $@ $< >> + > The need for this to be on the bootclasspath is worrying. Is there not a more correct way around the security exception? If anyone sees another way to do that let me know. > Also, maybe line break this better? Fixed. Cheers, Andrew >> +$(CONTROLPANEL_DIR)/launcher/controlpanel: $(CONTROLPANEL_LAUNCHER_OBJECTS) >> + mkdir -p launcher >> + $(CC) $(CONTROLPANEL_LAUNCHER_OBJECTS) $(LAUNCHER_LINK) >> + >> +clean-controlpanel: >> + rm -rf $(CONTROLPANEL_DIR) >> + rm -f stamps/controlpanel-dist.stamp >> + rm -f controlpanel-source-files.txt >> + rm -f stamps/controlpanel.stamp >> + >> # documentation >> >> stamps/docs.stamp: stamps/netx-docs.stamp stamps/plugin-docs.stamp >> @@ -425,6 +476,10 @@ >> >> add-netx-debug: stamps/add-netx-debug.stamp >> >> +controlpanel: stamps/controlpanel.stamp >> + >> +controlpanel-dist: stamps/controlpanel-dist.stamp >> + >> netx: stamps/netx.stamp >> >> netx-dist: stamps/netx-dist.stamp >> diff -r 243ab4185293 controlpanel/org/classpath/controlpanel/AboutPanel.java >> --- /dev/null Thu Jan 01 00:00:00 1970 +0000 >> +++ b/controlpanel/org/classpath/controlpanel/AboutPanel.java Fri Nov 26 15:58:55 2010 -0500 >> @@ -0,0 +1,44 @@ >> +package org.classpath.controlpanel; >> + >> +import java.awt.Component; >> +import java.awt.Dimension; >> +import java.awt.GridBagConstraints; >> +import java.awt.GridBagLayout; >> + >> +import javax.swing.Box; >> +import javax.swing.JLabel; >> + >> +import org.classpath.controlpanel.translator.Translator; >> + >> +/** >> + * This class provides a GUI interface which shows some basic information on >> + * this project. >> + * >> + * @author asu >> + * >> + */ >> + at SuppressWarnings("serial") >> +public class AboutPanel extends NamedBorderPanel { >> + >> + public AboutPanel() { >> + super(Translator.R("CPHeadAbout"), new GridBagLayout()); >> + GridBagConstraints c = new GridBagConstraints(); >> + c.fill = GridBagConstraints.BOTH; >> + c.gridy = 0; >> + >> + JLabel logo = new JLabel(); >> + JLabel aboutLabel = new JLabel("" + Translator.R("CPAboutInfo") +""); >> + >> + c.gridx = 0; >> + c.weighty = 0; >> + c.weightx = 0; >> + add(logo, c); >> + c.gridx = 1; >> + c.weightx = 1; >> + add(aboutLabel, c); >> + Component filler = Box.createRigidArea(new Dimension(1, 1)); >> + c.weighty = 1; >> + c.gridy++; >> + add(filler, c); >> + } >> +} >> diff -r 243ab4185293 controlpanel/org/classpath/controlpanel/ComboItem.java >> --- /dev/null Thu Jan 01 00:00:00 1970 +0000 >> +++ b/controlpanel/org/classpath/controlpanel/ComboItem.java Fri Nov 26 15:58:55 2010 -0500 >> @@ -0,0 +1,28 @@ >> +package org.classpath.controlpanel; >> + >> +public class ComboItem { >> + String text = null; >> + private String property; >> + private String value; >> + >> + public ComboItem(String text, String value) { >> + this.text = text; >> + this.value = value; >> + } >> + >> + public String toString() { >> + return this.text; >> + } >> + >> + public void setProperty(String property) { >> + this.property = property; >> + } >> + >> + public String getProperty() { >> + return this.property; >> + } >> + >> + public String getValue() { >> + return this.value; >> + } >> +} >> diff -r 243ab4185293 controlpanel/org/classpath/controlpanel/ControlPanel.java >> --- /dev/null Thu Jan 01 00:00:00 1970 +0000 >> +++ b/controlpanel/org/classpath/controlpanel/ControlPanel.java Fri Nov 26 15:58:55 2010 -0500 >> @@ -0,0 +1,291 @@ >> +package org.classpath.controlpanel; >> + >> +import static net.sourceforge.jnlp.runtime.Translator.R; >> + >> +import java.awt.BorderLayout; >> +import java.awt.CardLayout; >> +import java.awt.Dimension; >> +import java.awt.FlowLayout; >> +import java.awt.GridLayout; >> +import java.awt.Image; >> +import java.awt.event.ActionEvent; >> +import java.awt.event.ActionListener; >> +import java.awt.event.MouseEvent; >> +import java.awt.event.MouseListener; >> +import java.io.IOException; >> +import java.net.URL; >> +import java.security.AccessController; >> +import java.security.PrivilegedAction; >> +import java.util.ArrayList; >> +import java.util.Arrays; >> +import java.util.List; >> + >> +import javax.imageio.ImageIO; >> +import javax.naming.ConfigurationException; >> +import javax.swing.ImageIcon; >> +import javax.swing.JButton; >> +import javax.swing.JCheckBox; >> +import javax.swing.JComboBox; >> +import javax.swing.JFrame; >> +import javax.swing.JLabel; >> +import javax.swing.JList; >> +import javax.swing.JPanel; >> +import javax.swing.JScrollPane; >> +import javax.swing.SwingConstants; >> +import javax.swing.SwingUtilities; >> +import javax.swing.UIManager; >> +import javax.swing.WindowConstants; >> +import javax.swing.border.EmptyBorder; >> +import javax.swing.event.ListSelectionEvent; >> +import javax.swing.event.ListSelectionListener; >> + >> +import org.classpath.controlpanel.network.NetworkSettingsPanel; >> +import org.classpath.controlpanel.security.viewer.CertificatePane; >> +import org.classpath.controlpanel.translator.Translator; >> + >> +import net.sourceforge.jnlp.LaunchException; >> +import net.sourceforge.jnlp.Launcher; >> +import net.sourceforge.jnlp.cache.UpdatePolicy; >> +import net.sourceforge.jnlp.runtime.Boot; >> +import net.sourceforge.jnlp.runtime.DeploymentConfiguration; >> +import net.sourceforge.jnlp.runtime.JNLPRuntime; >> + >> + at SuppressWarnings( { "unused", "serial" }) >> +public class ControlPanel extends JFrame { >> + >> + private class SettingsPanel { >> + final String value; >> + final JPanel panel; >> + >> + public SettingsPanel(String value, JPanel panel) { >> + this.value = value; >> + this.panel = panel; >> + } >> + >> + public JPanel getPanel() { >> + return panel; >> + } >> + >> + public String toString() { >> + return value; >> + } >> + } >> + >> + private DeploymentConfiguration config = null; >> + >> + /* >> + * actual configuration options >> + */ >> + private String configBrowserCommand = null; >> + >> + public ControlPanel(DeploymentConfiguration config) { >> + super(); >> + setTitle(Translator.R("CPHead")); >> + >> + this.config = config; >> + >> + JPanel mainPanel = createMainSettingsPanel(); >> + JPanel buttonPanel = createButtonPanel(); >> + >> + add(mainPanel, BorderLayout.CENTER); >> + add(buttonPanel, BorderLayout.SOUTH); >> + setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE); >> + pack(); >> + setMinimumSize(getPreferredSize()); >> + setResizable(false); >> + } >> + >> + private JPanel createButtonPanel() { >> + JPanel buttonPanel = new JPanel(new FlowLayout(FlowLayout.TRAILING)); >> + >> + List buttons = new ArrayList(); >> + >> + JButton okButton = new JButton(Translator.R("ButOk")); >> + okButton.addActionListener(new ActionListener() { >> + @Override >> + public void actionPerformed(ActionEvent e) { >> + ControlPanel.this.saveConfiguration(); >> + ControlPanel.this.dispose(); >> + } >> + }); >> + buttons.add(okButton); >> + >> + JButton applyButton = new JButton(Translator.R("ButApply")); >> + applyButton.addActionListener(new ActionListener() { >> + @Override >> + public void actionPerformed(ActionEvent e) { >> + ControlPanel.this.saveConfiguration(); >> + } >> + }); >> + buttons.add(applyButton); >> + >> + JButton cancelButton = new JButton(Translator.R("ButCancel")); >> + cancelButton.addActionListener(new ActionListener() { >> + @Override >> + public void actionPerformed(ActionEvent e) { >> + ControlPanel.this.dispose(); >> + } >> + }); >> + buttons.add(cancelButton); >> + >> + int maxWidth = 0; >> + int maxHeight = 0; >> + for (JButton button : buttons) { >> + maxWidth = Math.max(button.getMinimumSize().width, maxWidth); >> + maxHeight = Math.max(button.getMinimumSize().height, maxHeight); >> + } >> + >> + int wantedWidth = maxWidth + 10; >> + int wantedHeight = maxHeight + 2; >> + for (JButton button : buttons) { >> + button.setPreferredSize(new Dimension(wantedWidth, wantedHeight)); >> + buttonPanel.add(button); >> + } >> + >> + return buttonPanel; >> + } >> + >> + private JPanel createMainSettingsPanel() { >> + >> + loadConfiguration(); >> + >> + SettingsPanel[] panels = new SettingsPanel[] { new SettingsPanel(Translator.R("CPTabAbout"), createAboutPanel()), >> + new SettingsPanel(Translator.R("CPTabCache"), createCacheSettingsPanel()), >> + new SettingsPanel(Translator.R("CPTabCertificate"), createCertificatesSettingsPanel()), >> +// new SettingsPanel(Translator.R("CPTabClassLoader"), createClassLoaderSettingsPanel()), >> + new SettingsPanel(Translator.R("CPTabDebugging"), createDebugSettingsPanel()), >> + new SettingsPanel(Translator.R("CPTabDesktopIntegration"), createDesktopSettingsPanel()), >> + new SettingsPanel(Translator.R("CPTabNetwork"), createNetworkSettingsPanel()), >> + new SettingsPanel(Translator.R("CPTabRuntimes"), createRuntimesSettingsPanel()), >> + new SettingsPanel(Translator.R("CPTabSecurity"), createSecuritySettingsPanel()), }; >> + >> + final JPanel settingsPanel = new JPanel(new CardLayout()); >> + for (SettingsPanel panel : panels) { >> + JPanel p = panel.getPanel(); >> + p.setPreferredSize(new Dimension(530, 360)); >> + settingsPanel.add(p, panel.toString()); >> + } >> + >> + final JList settingsList = new JList(panels); >> + settingsList.addListSelectionListener(new ListSelectionListener() { >> + @Override >> + public void valueChanged(ListSelectionEvent e) { >> + JList list = (JList) e.getSource(); >> + SettingsPanel panel = (SettingsPanel) list.getSelectedValue(); >> + CardLayout cl = (CardLayout) settingsPanel.getLayout(); >> + cl.show(settingsPanel, panel.toString()); >> + } >> + }); >> + JScrollPane settingsListScrollPane = new JScrollPane(settingsList); >> + settingsListScrollPane.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_NEVER); >> + >> + final JPanel settingsDetailPanel = new JPanel(); >> + settingsDetailPanel.setLayout(new BorderLayout()); >> + settingsDetailPanel.add(settingsPanel, BorderLayout.CENTER); >> + settingsDetailPanel.setBorder(new EmptyBorder(0, 10, -3, 0)); >> + >> + JPanel mainPanel = new JPanel(); >> + mainPanel.setLayout(new BorderLayout()); >> + mainPanel.add(settingsListScrollPane, BorderLayout.LINE_START); >> + mainPanel.add(settingsDetailPanel, BorderLayout.CENTER); >> + mainPanel.setBorder(new EmptyBorder(10, 10, 10, 10)); >> + >> + settingsList.setSelectedIndex(0); >> + >> + return mainPanel; >> + } >> + >> + private JPanel createAboutPanel() { >> + return new AboutPanel(); >> + } >> + >> + private JPanel createCacheSettingsPanel() { >> + return new TemporaryInternetFilesPanel(this.config); >> + } >> + >> + private JPanel createCertificatesSettingsPanel() { >> + JPanel p = new NamedBorderPanel(Translator.R("CPHeadCertificates"), new BorderLayout()); >> + p.add(new CertificatePane(null), BorderLayout.CENTER); >> + return p; >> + } >> + >> + private JPanel createClassLoaderSettingsPanel() { >> + return createNotImplementedPanel(); >> + } >> + >> + private JPanel createDebugSettingsPanel() { >> + return new DebuggingPanel(this.config); >> + } >> + >> + private JPanel createDesktopSettingsPanel() { >> + return new DesktopShortcutPanel(this.config); >> + } >> + >> + private JPanel createNetworkSettingsPanel() { >> + return new NetworkSettingsPanel(this.config); >> + } >> + >> + private JPanel createRuntimesSettingsPanel() { >> + return new JREPanel(); >> + } >> + >> + private JPanel createSecuritySettingsPanel() { >> + return new SecuritySettingsPanel(this.config); >> + } >> + >> + /** >> + * This is a placeholder panel. >> + * >> + * @return >> + */ >> + private JPanel createNotImplementedPanel() { >> + >> + JPanel notImplementedPanel = new NamedBorderPanel("Unimplemented"); >> + notImplementedPanel.setLayout(new BorderLayout()); >> + >> + URL imgUrl = getClass().getClassLoader().getResource("net/sourceforge/jnlp/resources/warning.png"); >> + Image img; >> + try { >> + img = ImageIO.read(imgUrl); >> + ImageIcon icon = new ImageIcon(img); >> + JLabel label = new JLabel("Not Implemented", icon, SwingConstants.CENTER); >> + notImplementedPanel.add(label); >> + } catch (IOException e) { >> + e.printStackTrace(); >> + } >> + return notImplementedPanel; >> + } >> + >> + private void loadConfiguration() { >> + configBrowserCommand = config.getProperty("deployment.browser.path"); >> + if (configBrowserCommand == null) { >> + configBrowserCommand = ""; >> + } >> + } >> + >> + private void saveConfiguration() { >> + try { >> + config.save(); >> + } catch (IOException e) { >> + e.printStackTrace(); >> + } >> + } >> + >> + public static void main(String[] args) throws Exception { >> + JNLPRuntime.initialize(true); >> + final DeploymentConfiguration config = JNLPRuntime.getConfiguration(); >> + try { >> + config.load(); >> + } catch (ConfigurationException e) { >> + // TODO Auto-generated catch block >> + e.printStackTrace(); >> + } >> + SwingUtilities.invokeLater(new Runnable() { >> + @Override >> + public void run() { >> + final ControlPanel editor = new ControlPanel(config); >> + editor.setVisible(true); >> + } >> + }); >> + } >> +} >> diff -r 243ab4185293 controlpanel/org/classpath/controlpanel/DebuggingPanel.java >> --- /dev/null Thu Jan 01 00:00:00 1970 +0000 >> +++ b/controlpanel/org/classpath/controlpanel/DebuggingPanel.java Fri Nov 26 15:58:55 2010 -0500 >> @@ -0,0 +1,115 @@ >> +package org.classpath.controlpanel; >> + >> +import java.awt.Component; >> +import java.awt.Dimension; >> +import java.awt.FlowLayout; >> +import java.awt.GridBagConstraints; >> +import java.awt.GridBagLayout; >> +import java.awt.event.ItemEvent; >> +import java.awt.event.ItemListener; >> +import javax.swing.Box; >> +import javax.swing.JCheckBox; >> +import javax.swing.JComboBox; >> +import javax.swing.JLabel; >> +import javax.swing.JPanel; >> + >> +import org.classpath.controlpanel.translator.Translator; >> + >> +import net.sourceforge.jnlp.runtime.DeploymentConfiguration; >> + >> + at SuppressWarnings("serial") >> +public class DebuggingPanel extends NamedBorderPanel implements ItemListener { >> + >> + /** List of properties used by this panel */ >> + private String[] properties = { "deployment.trace", // Debugging >> + "deployment.log", // Debugging >> + "deployment.javapi.lifecycle.exception", // Debugging >> + "deployment.console.startup.mode", // Java Console >> + }; >> + DeploymentConfiguration config; >> + >> + public DebuggingPanel(DeploymentConfiguration config) { >> + super(Translator.R("CPHeadDebugging"), new GridBagLayout()); >> + >> + this.config = config; >> + >> + addComponents(); >> + } >> + >> + private void addComponents() { >> + GridBagConstraints c = new GridBagConstraints(); >> + >> + JLabel debuggingDescription = new JLabel("" + Translator.R("CPDebuggingDescription") +"

"); >> + >> + JCheckBox[] debuggingOptions = { new JCheckBox(Translator.R("DPEnableTracing")), >> + new JCheckBox(Translator.R("DPEnableLogging")), >> + new JCheckBox(Translator.R("DPLifeCycleExceptions")) }; >> + >> + ComboItem[] javaConsoleItems = { new ComboItem(Translator.R("DPDisable"), "DISABLE"), >> + new ComboItem(Translator.R("DPHide"), "HIDE"), >> + new ComboItem(Translator.R("DPShow"), "SHOW"), }; >> + >> + JLabel consoleLabel = new JLabel(Translator.R("DPJavaConsole")); >> + JComboBox consoleComboBox = new JComboBox(); >> + >> + JPanel consolePanel = new JPanel(); >> + consolePanel.setLayout(new FlowLayout(FlowLayout.LEADING)); >> + consolePanel.add(consoleLabel); >> + consolePanel.add(consoleComboBox); >> + >> + Component filler = Box.createRigidArea(new Dimension(1, 1)); >> + c.fill = GridBagConstraints.BOTH; >> + c.weightx = 1; >> + c.gridx = 0; >> + c.gridy = 0; >> + add(debuggingDescription, c); >> + >> + for (int i = 0; i< properties.length; i++) { >> + try { >> + String s = config.getProperty(properties[i]); >> + c.gridy = i + 1; >> + >> + switch (i) { >> + case 0: >> + case 1: >> + case 2: >> + debuggingOptions[i].setSelected(Boolean.parseBoolean(s)); >> + debuggingOptions[i].setActionCommand(properties[i]); >> + debuggingOptions[i].addItemListener(this); >> + add(debuggingOptions[i], c); >> + break; >> + case 3: >> + for (int j = 0; j< javaConsoleItems.length; j++) { >> + javaConsoleItems[j].setProperty("deployment.console.startup.mode"); >> + consoleComboBox.addItem(javaConsoleItems[j]); >> + if (config.getProperty(javaConsoleItems[j].getProperty()).equals(javaConsoleItems[j].getValue())) consoleComboBox.setSelectedIndex(j); >> + } >> + consoleComboBox.addItemListener(this); >> + add(consolePanel, c); >> + } >> + >> + } catch (Exception e) { >> + debuggingOptions[i] = null; >> + } >> + } >> + >> + c.gridy = properties.length; // Pack the bottom >> + c.weighty = 1; >> + add(filler, c); >> + } >> + >> + @Override >> + public void itemStateChanged(ItemEvent e) { >> + >> + Object o = e.getSource(); >> + >> + if (o instanceof JCheckBox) { >> + JCheckBox jcb = (JCheckBox) o; >> + config.setProperty(jcb.getActionCommand(), String.valueOf(jcb.isSelected())); >> + } else if (o instanceof JComboBox) { >> + ComboItem c = (ComboItem) e.getItem(); >> + config.setProperty(c.getProperty(), c.getValue()); >> + } >> + >> + } >> +} >> diff -r 243ab4185293 controlpanel/org/classpath/controlpanel/DesktopShortcutPanel.java >> --- /dev/null Thu Jan 01 00:00:00 1970 +0000 >> +++ b/controlpanel/org/classpath/controlpanel/DesktopShortcutPanel.java Fri Nov 26 15:58:55 2010 -0500 >> @@ -0,0 +1,67 @@ >> +package org.classpath.controlpanel; >> + >> +import java.awt.Component; >> +import java.awt.Dimension; >> +import java.awt.GridBagConstraints; >> +import java.awt.GridBagLayout; >> +import java.awt.event.ItemEvent; >> +import java.awt.event.ItemListener; >> + >> +import javax.swing.Box; >> +import javax.swing.JComboBox; >> +import javax.swing.JLabel; >> + >> +import org.classpath.controlpanel.translator.Translator; >> + >> +import net.sourceforge.jnlp.runtime.DeploymentConfiguration; >> + >> + at SuppressWarnings("serial") >> +public class DesktopShortcutPanel extends NamedBorderPanel implements ItemListener { >> + >> + private DeploymentConfiguration config; >> + >> + public DesktopShortcutPanel(DeploymentConfiguration config) { >> + super(Translator.R("CPHeadDesktopIntegration"), new GridBagLayout()); >> + this.config = config; >> + >> + addComponents(); >> + } >> + >> + private void addComponents() { >> + GridBagConstraints c = new GridBagConstraints(); >> + JLabel description = new JLabel("" + Translator.R("CPDesktopIntegrationDescription") +"
"); >> + JComboBox shortcutComboOptions = new JComboBox(); >> + ComboItem[] items = { new ComboItem(Translator.R("DSPNeverCreate"), "NEVER"), >> + new ComboItem(Translator.R("DSPAlwaysAllow"), "ALWAYS"), >> + new ComboItem(Translator.R("DSPAskUser"), "ASK_USER"), >> + new ComboItem(Translator.R("DSPAskIfHinted"), "ASK_IF_HINTED"), >> + new ComboItem(Translator.R("DSPAlwaysIfHinted"), "ALWAYS_IF_HINTED") }; >> + >> + for (int j = 0; j< items.length; j++) { >> + items[j].setProperty("deployment.javaws.shortcut"); >> + shortcutComboOptions.addItem(items[j]); >> + if (config.getProperty(items[j].getProperty()).equals(items[j].getValue())) shortcutComboOptions.setSelectedIndex(j); >> + } >> + >> + shortcutComboOptions.addItemListener(this); >> + >> + c.fill = GridBagConstraints.BOTH; >> + c.weightx = 1; >> + c.gridx = 0; >> + >> + c.gridy = 0; >> + add(description, c); >> + c.gridy = 1; >> + add(shortcutComboOptions, c); >> + >> + Component filler = Box.createRigidArea(new Dimension(1, 1)); >> + c.weighty = 1; >> + c.gridy++; >> + add(filler, c); >> + } >> + >> + public void itemStateChanged(ItemEvent e) { >> + ComboItem c = (ComboItem) e.getItem(); >> + config.setProperty(c.getProperty(), c.getValue()); >> + } >> +} >> diff -r 243ab4185293 controlpanel/org/classpath/controlpanel/JREPanel.java >> --- /dev/null Thu Jan 01 00:00:00 1970 +0000 >> +++ b/controlpanel/org/classpath/controlpanel/JREPanel.java Fri Nov 26 15:58:55 2010 -0500 >> @@ -0,0 +1,44 @@ >> +package org.classpath.controlpanel; >> + >> +import java.awt.BorderLayout; >> +import java.awt.FlowLayout; >> + >> +import javax.swing.JButton; >> +import javax.swing.JLabel; >> +import javax.swing.JPanel; >> + >> +import org.classpath.controlpanel.translator.Translator; >> + >> + >> +/** >> + * This panel is to allow access to setting the JRE but we currently do not >> + * support this. >> + * >> + * @author asu >> + * >> + */ >> +public class JREPanel extends NamedBorderPanel { >> + /** >> + * >> + */ >> + private static final long serialVersionUID = -712021664097515692L; >> + >> + public JREPanel() { >> + super(Translator.R("CPHeadJRESettings")); >> + setLayout(new BorderLayout()); >> + >> + JLabel jreLabel = new JLabel("" + Translator.R("CPJRESettingsDescription") +"
"); >> + JButton viewButton = new JButton(Translator.R("CPButView")); >> + viewButton.setEnabled(false); >> + >> + JPanel jreButtonPanel = new JPanel(); >> + jreButtonPanel.setLayout(new FlowLayout(FlowLayout.TRAILING)); >> + >> + jreButtonPanel.add(viewButton); >> + >> + jreLabel = new JLabel("" + Translator.R("CPJRESupport") +""); >> + add(jreLabel, BorderLayout.NORTH); >> + // add(jreButtonPanel, BorderLayout.CENTER); >> + >> + } >> +} >> diff -r 243ab4185293 controlpanel/org/classpath/controlpanel/NamedBorderPanel.java >> --- /dev/null Thu Jan 01 00:00:00 1970 +0000 >> +++ b/controlpanel/org/classpath/controlpanel/NamedBorderPanel.java Fri Nov 26 15:58:55 2010 -0500 >> @@ -0,0 +1,28 @@ >> +package org.classpath.controlpanel; >> + >> +import java.awt.LayoutManager; >> + >> +import javax.swing.BorderFactory; >> +import javax.swing.JPanel; >> + >> +/** >> + * This class provides the a panel that has a border with the name specified. >> + * >> + * @author asu >> + * >> + */ >> + at SuppressWarnings("serial") >> +public class NamedBorderPanel extends JPanel { >> + >> + public NamedBorderPanel(String title, LayoutManager layout) { >> + this(title); >> + setLayout(layout); >> + } >> + >> + public NamedBorderPanel(String title) { >> + super(); >> + setBorder(BorderFactory.createCompoundBorder( >> + BorderFactory.createTitledBorder(title), >> + BorderFactory.createEmptyBorder(5, 5, 5, 5))); >> + } >> +} >> diff -r 243ab4185293 controlpanel/org/classpath/controlpanel/SecuritySettingsPanel.java >> --- /dev/null Thu Jan 01 00:00:00 1970 +0000 >> +++ b/controlpanel/org/classpath/controlpanel/SecuritySettingsPanel.java Fri Nov 26 15:58:55 2010 -0500 >> @@ -0,0 +1,113 @@ >> +package org.classpath.controlpanel; >> +import java.awt.BorderLayout; >> +import java.awt.Component; >> +import java.awt.Dimension; >> +import java.awt.GridBagConstraints; >> +import java.awt.GridBagLayout; >> +import java.awt.event.ActionEvent; >> +import java.awt.event.ActionListener; >> + >> +import javax.swing.Box; >> +import javax.swing.JCheckBox; >> +import javax.swing.JLabel; >> +import javax.swing.JPanel; >> + >> +import org.classpath.controlpanel.translator.Translator; >> + >> +import net.sourceforge.jnlp.runtime.DeploymentConfiguration; >> + >> +/** >> + * This provides a way for the user to modify the security settings. >> + * >> + * @author asu >> + * >> + */ >> + at SuppressWarnings("serial") >> +public class SecuritySettingsPanel extends NamedBorderPanel implements ActionListener { >> + >> + private DeploymentConfiguration config; >> + >> + // NOTE: All the ones listed with "Default" are in Oracle's implementation. >> + // Not shown on deployments.properties webpage. Add support for these later! >> + /** List of properties used by this panel */ >> + private String[] properties = { "deployment.security.askgrantdialog.show", >> + "deployment.security.askgrantdialog.notinca", >> + "deployment.security.browser.keystore.use", // default TRUE >> + "deployment.security.clientauth.keystore.auto", // Default FALSE >> + "deployment.security.jsse.hostmismatch.warning", >> + "deployment.security.https.warning.show", // Default FALSE >> + "deployment.security.sandbox.awtwarningwindow", >> + "deployment.security.sandbox.jnlp.enhanced", >> + "deployment.security.validation.crl", // Default TRUE >> + "deployment.security.validation.ocsp", // Default FALSE >> + "deployment.security.pretrust.list", // Default TRUE >> + "deployment.security.blacklist.check", // Default TRUE >> + "deployment.security.password.cache", // Default TRUE >> + "deployment.security.SSLv2Hello", // Default FALSE >> + "deployment.security.SSLv3", // Default TRUE >> + "deployment.security.TLSv1", // Default TRUE >> +// "deployment.security.mixcode", // Default TRUE >> + }; >> + >> + public SecuritySettingsPanel(DeploymentConfiguration config) { >> + super(Translator.R("CPHeadSecurity"), new BorderLayout()); >> + this.config = config; >> + >> + addComponents(); >> + } >> + >> + private void addComponents() { >> + JPanel topPanel = new JPanel(new GridBagLayout()); >> + GridBagConstraints c = new GridBagConstraints(); >> + >> + JLabel description = new JLabel("" + Translator.R("CPSecurityDescription") +"
"); >> + >> + JCheckBox[] securityGeneralOptions = { new JCheckBox(Translator.R("SGPAllowUserGrantSigned")), >> + new JCheckBox(Translator.R("SGPAllowUserGrantUntrust")), >> + new JCheckBox(Translator.R("SGpUseBrowserKeystore")), >> + new JCheckBox(Translator.R("SGPUsePersonalCertOneMatch")), >> + new JCheckBox(Translator.R("SGPWarnCertHostMismatch")), >> + new JCheckBox(Translator.R("SGPShowValid")), >> + new JCheckBox(Translator.R("SGPShowSandboxWarning")), >> + new JCheckBox(Translator.R("SGPAllowUserAcceptJNLPSecurityRequests")), >> + new JCheckBox(Translator.R("SGPCheckCertRevocationList")), >> + new JCheckBox(Translator.R("SGPEnableOnlineCertValidate")), >> + new JCheckBox(Translator.R("SGPEnableTrustedPublisherList")), >> + new JCheckBox(Translator.R("SGPEnableBlacklistRevocation")), >> + new JCheckBox(Translator.R("SGPEnableCachingPassword")), >> + new JCheckBox(Translator.R("SGPUseSSL2")), >> + new JCheckBox(Translator.R("SGPUseSSL3")), >> + new JCheckBox(Translator.R("SGPUseTLS1")), }; >> + >> + c.fill = GridBagConstraints.BOTH; >> + c.gridx = 0; >> + c.weightx = 1; >> + >> + topPanel.add(description, c); >> + >> + for (int i = 0; i< properties.length; i++) { >> + try { >> + String s = config.getProperty(properties[i]); >> + securityGeneralOptions[i].setSelected(Boolean.parseBoolean(s)); >> + securityGeneralOptions[i].setActionCommand(properties[i]); >> + securityGeneralOptions[i].addActionListener(this); >> + c.gridy = i + 1; >> + topPanel.add(securityGeneralOptions[i], c); >> + } catch (Exception e) { >> + securityGeneralOptions[i] = null; >> + } >> + } >> + >> + Component filler = Box.createRigidArea(new Dimension(1, 1)); >> + c.weighty = 1; >> + c.gridy++; >> + topPanel.add(filler, c); >> + >> + add(topPanel, BorderLayout.CENTER); >> + } >> + >> + @Override >> + public void actionPerformed(ActionEvent e) { >> + config.setProperty(e.getActionCommand(), String.valueOf(((JCheckBox) e.getSource()).isSelected())); >> + } >> +} >> diff -r 243ab4185293 controlpanel/org/classpath/controlpanel/TemporaryInternetFilesPanel.java >> --- /dev/null Thu Jan 01 00:00:00 1970 +0000 >> +++ b/controlpanel/org/classpath/controlpanel/TemporaryInternetFilesPanel.java Fri Nov 26 15:58:55 2010 -0500 >> @@ -0,0 +1,230 @@ >> +package org.classpath.controlpanel; >> +import java.awt.BorderLayout; >> +import java.awt.Dimension; >> +import java.awt.FlowLayout; >> +import java.awt.GridBagConstraints; >> +import java.awt.GridBagLayout; >> +import java.awt.event.ActionEvent; >> +import java.awt.event.ActionListener; >> +import java.awt.event.ItemEvent; >> +import java.awt.event.ItemListener; >> +import java.awt.event.KeyEvent; >> +import java.awt.event.KeyListener; >> + >> +import javax.naming.ConfigurationException; >> +import javax.swing.JButton; >> +import javax.swing.JCheckBox; >> +import javax.swing.JComboBox; >> +import javax.swing.JComponent; >> +import javax.swing.JDialog; >> +import javax.swing.JFileChooser; >> +import javax.swing.JLabel; >> +import javax.swing.JPanel; >> +import javax.swing.JSlider; >> +import javax.swing.JSpinner; >> +import javax.swing.JTextField; >> +import javax.swing.SpinnerNumberModel; >> +import javax.swing.event.ChangeEvent; >> +import javax.swing.event.ChangeListener; >> + >> +import org.classpath.controlpanel.translator.Translator; >> + >> +import net.sourceforge.jnlp.runtime.DeploymentConfiguration; >> + >> +/** >> + * The actual panel that contains the fields that the user can edit accordingly. >> + * This is provided as a pane for inside the Panel itself, can also be used to >> + * display as a dialog. >> + * >> + * @author asu >> + * >> + */ >> + at SuppressWarnings("serial") >> +public class TemporaryInternetFilesPanel extends NamedBorderPanel implements ChangeListener { >> + >> + private DeploymentConfiguration config; >> + private int minSize = -1; >> + private int maxSize = 1000; >> + >> + /** List of properties used by this panel */ >> + private String[] properties = { "deployment.javapi.cache.enabled", // false == enabled >> + "deployment.user.cachedir", >> + "deployment.cache.max.size", // Specified in MB >> + "deployment.cache.jarcompression", // Allows values 0-9 >> + }; >> + >> + private JComponent defaultFocusComponent = null; >> + JSpinner spCacheSize; >> + JSlider slCacheSize; >> + >> + public TemporaryInternetFilesPanel(DeploymentConfiguration config) { >> + super(Translator.R("CPHeadTempInternetFiles")); >> + this.config = config; >> + setLayout(new BorderLayout()); >> + >> + addComponents(); >> + } >> + >> + private void addComponents() { >> + JPanel topPanel = new JPanel(new GridBagLayout()); >> + GridBagConstraints c = new GridBagConstraints(); >> + c.fill = GridBagConstraints.BOTH; >> + >> + JLabel description = new JLabel("" + Translator.R("CPTempInternetFilesDescription") +"
"); >> + >> + JCheckBox enableCaching = new JCheckBox(Translator.R("TIFPEnableCache"), !Boolean.parseBoolean(this.config.getProperty(properties[0]))); >> + enableCaching.addItemListener(new ItemListener() { >> + @Override >> + public void itemStateChanged(ItemEvent e) { >> + config.setProperty(properties[0], String.valueOf(!(e.getStateChange() == ItemEvent.SELECTED))); >> + } >> + }); >> + JPanel locationPanel = new NamedBorderPanel(Translator.R("TIFPLocation"), new GridBagLayout()); >> + JLabel locationDescription = new JLabel(Translator.R("TIFPLocationLabel") + ":"); >> + final JTextField location = new JTextField(this.config.getProperty(properties[1])); >> + location.addKeyListener(new KeyListener() { >> + @Override >> + public void keyPressed(KeyEvent e) { >> + } >> + >> + @Override >> + public void keyReleased(KeyEvent e) { >> + config.setProperty(properties[1], location.getText()); >> + } >> + >> + @Override >> + public void keyTyped(KeyEvent e) { >> + } >> + }); >> + location.setEditable(false); >> + JButton bLocation = new JButton(Translator.R("TIFPChange") + "..."); >> + bLocation.addActionListener(new ActionListener() { >> + @Override >> + public void actionPerformed(ActionEvent e) { >> + JFileChooser fileChooser = new JFileChooser(); >> + fileChooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY); >> + if (fileChooser.showOpenDialog(null) == JFileChooser.APPROVE_OPTION) { >> + String result = fileChooser.getSelectedFile().getAbsolutePath(); >> + location.setText(result); >> + config.setProperty(properties[1], result); >> + } >> + } >> + >> + }); >> + >> + c.weightx = 1; >> + c.gridwidth = GridBagConstraints.REMAINDER; >> + c.gridx = 0; >> + c.gridy = 0; >> + locationPanel.add(locationDescription, c); >> + c.gridwidth = 1; >> + c.gridy = 1; >> + locationPanel.add(location, c); >> + c.gridx = 1; >> + c.weightx = 0; >> + locationPanel.add(bLocation, c); >> + >> + JPanel diskSpacePanel = new NamedBorderPanel(Translator.R("TIFPDiskSpace"), new GridBagLayout()); >> + JLabel lCompression = new JLabel(Translator.R("TIFPCompressionLevel")); >> + ComboItem[] compressionOptions = { new ComboItem(Translator.R("TIFPNone"), "0"), >> + new ComboItem("1", "1"), >> + new ComboItem("2", "2"), >> + new ComboItem("3", "3"), >> + new ComboItem("4", "4"), >> + new ComboItem("5", "5"), >> + new ComboItem("6", "6"), >> + new ComboItem("7", "7"), >> + new ComboItem("8", "8"), >> + new ComboItem(Translator.R("TIFPMax"), "9"), }; >> + JComboBox cbCompression = new JComboBox(compressionOptions); >> + cbCompression.setSelectedIndex(Integer.parseInt(this.config.getProperty(properties[3]))); >> + cbCompression.addItemListener(new ItemListener() { >> + >> + @Override >> + public void itemStateChanged(ItemEvent e) { >> + config.setProperty(properties[3], ((ComboItem) e.getItem()).getValue()); >> + } >> + >> + }); >> + JLabel lCacheSize = new JLabel(Translator.R("TIFPCacheSize") + ":"); >> + slCacheSize = new JSlider(minSize, maxSize, Integer.parseInt(this.config.getProperty(properties[2]))); >> + slCacheSize.setMinorTickSpacing(50); >> + slCacheSize.setPaintTicks(true); >> + SpinnerNumberModel snmCacheSize = new SpinnerNumberModel(Integer.parseInt(this.config.getProperty(properties[2])), minSize, maxSize, 1); >> + spCacheSize = new JSpinner(snmCacheSize); >> + >> + slCacheSize.addChangeListener(this); >> + spCacheSize.addChangeListener(this); >> + >> + c.gridy = 0; >> + c.gridx = 0; >> + c.weightx = 1; >> + diskSpacePanel.add(lCompression, c); >> + c.gridx = 1; >> + c.weightx = 0; >> + diskSpacePanel.add(cbCompression, c); >> + >> + c.gridy = 1; >> + c.gridx = 0; >> + c.gridwidth = GridBagConstraints.REMAINDER; >> + c.weightx = 1; >> + diskSpacePanel.add(lCacheSize, c); >> + c.gridwidth = 1; >> + c.gridy = 2; >> + diskSpacePanel.add(slCacheSize, c); >> + c.gridx = 1; >> + diskSpacePanel.add(spCacheSize, c); >> + >> + JPanel buttonDeleteRestore = new JPanel(new FlowLayout(FlowLayout.TRAILING)); >> + JButton bDelete = new JButton(Translator.R("TIFPDeleteFiles") + "..."); >> + JButton bRestore = new JButton(Translator.R("TIFPResoreDefaults")); >> + //TODO: Add functionality to restore and delete. Also need to add a view button! >> + bDelete.setEnabled(false); >> + bRestore.setEnabled(false); >> + buttonDeleteRestore.add(bDelete); >> + buttonDeleteRestore.add(bRestore); >> + >> + c.weighty = 0; >> + c.gridx = 0; >> + c.gridy = 0; >> + topPanel.add(enableCaching, c); >> + c.gridy = 1; >> + topPanel.add(locationPanel, c); >> + c.gridy = 2; >> + topPanel.add(diskSpacePanel, c); >> + c.weighty = 1; >> + c.gridy = 3; >> + topPanel.add(buttonDeleteRestore, c); >> + add(description, BorderLayout.NORTH); >> + add(topPanel, BorderLayout.CENTER); >> + } >> + >> + public void focusOnDefaultButton() { >> + if (defaultFocusComponent != null) { >> + defaultFocusComponent.requestFocusInWindow(); >> + } >> + } >> + >> + public static void main(String[] args) throws ConfigurationException { >> + final DeploymentConfiguration config = new DeploymentConfiguration(); >> + config.load(); >> + System.out.println("Adv Proxy Settings Test Dialog"); >> + JDialog f = new JDialog(); >> + f.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE); >> + f.setPreferredSize(new Dimension(500, 300)); >> + TemporaryInternetFilesPanel apsp = new TemporaryInternetFilesPanel(config); >> + f.add(apsp); >> + f.pack(); >> + f.setVisible(true); >> + } >> + >> + @Override >> + public void stateChanged(ChangeEvent e) { >> + Object o = e.getSource(); >> + if (o instanceof JSlider) >> + spCacheSize.setValue(((JSlider) o).getValue()); >> + else if (o instanceof JSpinner) slCacheSize.setValue((Integer) ((JSpinner) o).getValue()); >> + >> + config.setProperty(properties[2], spCacheSize.getValue().toString()); >> + } >> +} >> diff -r 243ab4185293 controlpanel/org/classpath/controlpanel/network/AdvancedProxySettingsDialog.java >> --- /dev/null Thu Jan 01 00:00:00 1970 +0000 >> +++ b/controlpanel/org/classpath/controlpanel/network/AdvancedProxySettingsDialog.java Fri Nov 26 15:58:55 2010 -0500 >> @@ -0,0 +1,103 @@ >> +package org.classpath.controlpanel.network; >> + >> +import java.awt.Container; >> +import java.awt.Dimension; >> +import java.awt.Frame; >> +import java.awt.GridBagConstraints; >> +import java.awt.GridBagLayout; >> +import java.awt.Toolkit; >> +import java.awt.event.WindowAdapter; >> +import java.awt.event.WindowEvent; >> + >> +import javax.swing.JDialog; >> +import javax.swing.UIManager; >> + >> +import org.classpath.controlpanel.translator.Translator; >> + >> +import net.sourceforge.jnlp.runtime.DeploymentConfiguration; >> + >> +/** >> + * This dialog provides a means for user to edit more of the proxy settings. >> + * >> + * @author asu >> + * >> + */ >> + at SuppressWarnings("serial") >> +public class AdvancedProxySettingsDialog extends JDialog { >> + >> + private boolean initialized = false; >> + private static final String dialogTitle = Translator.R("APSDialogTitle"); >> + private DeploymentConfiguration config; >> + >> + AdvancedProxySettingsPane topPanel; >> + >> + public AdvancedProxySettingsDialog(DeploymentConfiguration config) { >> + super((Frame) null, dialogTitle, true); >> + this.config = config; >> + Container contentPane = getContentPane(); >> + contentPane.setLayout(new GridBagLayout()); >> + setMinimumSize(new Dimension(456, 404)); >> + setPreferredSize(new Dimension(456, 404)); >> + setModal(true); >> + GridBagConstraints c = new GridBagConstraints(); >> + c.fill = GridBagConstraints.BOTH; >> + c.weightx = 1; >> + c.weighty = 1; >> + c.gridx = 0; >> + c.gridy = 0; >> + topPanel = new AdvancedProxySettingsPane(this, this.config); >> + contentPane.add(topPanel, c); >> + >> + pack(); >> + >> + WindowAdapter adapter = new WindowAdapter() { >> + private boolean gotFocus = false; >> + >> + public void windowGainedFocus(WindowEvent we) { >> + // Once window gets focus, set initial focus >> + if (!gotFocus) { >> + topPanel.focusOnDefaultButton(); >> + gotFocus = true; >> + } >> + } >> + }; >> + addWindowFocusListener(adapter); >> + >> + initialized = true; >> + } >> + >> + public boolean isInitialized() { >> + return initialized; >> + } >> + >> + private void centerDialog() { >> + Dimension screen = Toolkit.getDefaultToolkit().getScreenSize(); >> + Dimension dialogSize = getSize(); >> + >> + setLocation((screen.width - dialogSize.width) / 2, (screen.height - dialogSize.height) / 2); >> + } >> + >> + public static void showNetworkSettingsDialog(DeploymentConfiguration config) throws Exception { >> + setSystemLookAndFeel(); >> + >> + AdvancedProxySettingsDialog nsd = new AdvancedProxySettingsDialog(config); >> + nsd.setResizable(false); >> + nsd.centerDialog(); >> + nsd.setVisible(true); >> + nsd.dispose(); >> + } >> + >> + private static void setSystemLookAndFeel() { >> + try { >> + UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); >> + } catch (Exception e) { >> + // don't worry if we can't. >> + } >> + } >> + >> + public static void main(String[] args) throws Exception { >> + final DeploymentConfiguration config = new DeploymentConfiguration(); >> + config.load(); >> + showNetworkSettingsDialog(config); >> + } >> +} >> diff -r 243ab4185293 controlpanel/org/classpath/controlpanel/network/AdvancedProxySettingsPane.java >> --- /dev/null Thu Jan 01 00:00:00 1970 +0000 >> +++ b/controlpanel/org/classpath/controlpanel/network/AdvancedProxySettingsPane.java Fri Nov 26 15:58:55 2010 -0500 >> @@ -0,0 +1,420 @@ >> +package org.classpath.controlpanel.network; >> + >> +import java.awt.BorderLayout; >> +import java.awt.Dimension; >> +import java.awt.FlowLayout; >> +import java.awt.GridBagConstraints; >> +import java.awt.GridBagLayout; >> +import java.awt.event.ActionEvent; >> +import java.awt.event.ActionListener; >> +import java.awt.event.KeyEvent; >> +import java.awt.event.KeyListener; >> +import java.awt.event.MouseEvent; >> +import java.awt.event.MouseListener; >> +import java.util.ArrayList; >> +import java.util.List; >> + >> +import javax.naming.ConfigurationException; >> +import javax.swing.BoxLayout; >> +import javax.swing.JButton; >> +import javax.swing.JCheckBox; >> +import javax.swing.JComponent; >> +import javax.swing.JDialog; >> +import javax.swing.JLabel; >> +import javax.swing.JPanel; >> +import javax.swing.JScrollPane; >> +import javax.swing.JTextArea; >> +import javax.swing.JTextField; >> + >> +import org.classpath.controlpanel.NamedBorderPanel; >> +import org.classpath.controlpanel.translator.Translator; >> + >> +import net.sourceforge.jnlp.runtime.DeploymentConfiguration; >> + >> +/** >> + * This is the pane that modifies the proxy settings in more detail. >> + * >> + * @author asu >> + * >> + */ >> + at SuppressWarnings("serial") >> +public class AdvancedProxySettingsPane extends JPanel { >> + >> + private JDialog parent; >> + private DeploymentConfiguration config; >> + >> + /** List of properties used by this panel */ >> + private String[] properties = { "deployment.proxy.http.host", >> + "deployment.proxy.http.port", >> + "deployment.proxy.https.host", >> + "deployment.proxy.https.port", >> + "deployment.proxy.ftp.host", >> + "deployment.proxy.ftp.port", >> + "deployment.proxy.socks.host", >> + "deployment.proxy.socks.port", >> + "deployment.proxy.same", >> + "deployment.proxy.override.hosts" }; >> + private String[] fields = new String[properties.length]; >> + >> + private JComponent defaultFocusComponent = null; >> + >> + public AdvancedProxySettingsPane(JDialog parent, DeploymentConfiguration config) { >> + super(); >> + this.parent = parent; >> + this.config = config; >> + setLayout(new BorderLayout()); >> + >> + getProperties(); >> + addComponents(); >> + } >> + >> + private void getProperties() { >> + for (int i = 0; i< fields.length; i++) { >> + fields[i] = this.config.getProperty(properties[i]); >> + } >> + } >> + >> + private void addComponents() { >> + JPanel topPanel = new JPanel(new GridBagLayout()); >> + GridBagConstraints c = new GridBagConstraints(); >> + >> + JPanel servers = new NamedBorderPanel(Translator.R("APSServersPanel")); >> + servers.setLayout(new GridBagLayout()); >> + c.fill = GridBagConstraints.BOTH; >> + c.gridheight = 1; >> + >> + JLabel type = new JLabel(Translator.R("APSProxyTypeLabel")); >> + JLabel proxyAddress = new JLabel(Translator.R("APSProxyAddress")); >> + JLabel port = new JLabel(Translator.R("SPSProxyPortLabel")); >> + >> + JLabel http = new JLabel(Translator.R("APSLabelHTTP") + ":"); >> + final JTextField httpAddressField = new JTextField(fields[0]); >> + final JTextField httpPortField = new JTextField(fields[1]); >> + httpAddressField.addKeyListener(new KeyListener() { >> + @Override >> + public void keyPressed(KeyEvent e) { >> + } >> + >> + @Override >> + public void keyReleased(KeyEvent e) { >> + fields[0] = httpAddressField.getText(); >> + } >> + >> + @Override >> + public void keyTyped(KeyEvent e) { >> + } >> + }); >> + httpPortField.addKeyListener(new KeyListener() { >> + @Override >> + public void keyPressed(KeyEvent e) { >> + } >> + >> + @Override >> + public void keyReleased(KeyEvent e) { >> + fields[1] = httpPortField.getText(); >> + } >> + >> + @Override >> + public void keyTyped(KeyEvent e) { >> + } >> + }); >> + >> + httpAddressField.addMouseListener(new MiddleClickListener(this.config, properties[0])); >> + httpPortField.addMouseListener(new MiddleClickListener(this.config, properties[1])); >> + >> + JLabel secure = new JLabel(Translator.R("APSLabelSecure") + ":"); >> + final JTextField secureAddressField = new JTextField(fields[2]); >> + final JTextField securePortField = new JTextField(fields[3]); >> + secureAddressField.addKeyListener(new KeyListener() { >> + @Override >> + public void keyPressed(KeyEvent e) { >> + } >> + >> + @Override >> + public void keyReleased(KeyEvent e) { >> + fields[2] = secureAddressField.getText(); >> + } >> + >> + @Override >> + public void keyTyped(KeyEvent e) { >> + } >> + }); >> + securePortField.addKeyListener(new KeyListener() { >> + @Override >> + public void keyPressed(KeyEvent e) { >> + } >> + >> + @Override >> + public void keyReleased(KeyEvent e) { >> + fields[3] = securePortField.getText(); >> + } >> + >> + @Override >> + public void keyTyped(KeyEvent e) { >> + } >> + }); >> + secureAddressField.addMouseListener(new MiddleClickListener(this.config, properties[2])); >> + securePortField.addMouseListener(new MiddleClickListener(this.config, properties[3])); >> + >> + JLabel ftp = new JLabel(Translator.R("APSLabelFTP") + ":"); >> + final JTextField ftpAddressField = new JTextField(fields[4]); >> + final JTextField ftpPortField = new JTextField(fields[5]); >> + ftpAddressField.addKeyListener(new KeyListener() { >> + @Override >> + public void keyPressed(KeyEvent e) { >> + } >> + >> + @Override >> + public void keyReleased(KeyEvent e) { >> + fields[4] = ftpAddressField.getText(); >> + } >> + >> + @Override >> + public void keyTyped(KeyEvent e) { >> + } >> + }); >> + ftpPortField.addKeyListener(new KeyListener() { >> + @Override >> + public void keyPressed(KeyEvent e) { >> + } >> + >> + @Override >> + public void keyReleased(KeyEvent e) { >> + fields[5] = ftpPortField.getText(); >> + } >> + >> + @Override >> + public void keyTyped(KeyEvent e) { >> + } >> + }); >> + ftpAddressField.addMouseListener(new MiddleClickListener(this.config, properties[4])); >> + ftpPortField.addMouseListener(new MiddleClickListener(this.config, properties[5])); >> + >> + JLabel socks = new JLabel(Translator.R("APSLabelSocks") + ":"); >> + final JTextField socksAddressField = new JTextField(fields[6]); >> + final JTextField socksPortField = new JTextField(fields[7]); >> + socksAddressField.addKeyListener(new KeyListener() { >> + @Override >> + public void keyPressed(KeyEvent e) { >> + } >> + >> + @Override >> + public void keyReleased(KeyEvent e) { >> + fields[6] = socksAddressField.getText(); >> + } >> + >> + @Override >> + public void keyTyped(KeyEvent e) { >> + } >> + }); >> + socksPortField.addKeyListener(new KeyListener() { >> + @Override >> + public void keyPressed(KeyEvent e) { >> + } >> + >> + @Override >> + public void keyReleased(KeyEvent e) { >> + fields[7] = socksPortField.getText(); >> + } >> + >> + @Override >> + public void keyTyped(KeyEvent e) { >> + } >> + }); >> + socksAddressField.addMouseListener(new MiddleClickListener(this.config, properties[6])); >> + socksPortField.addMouseListener(new MiddleClickListener(this.config, properties[7])); >> + >> + JCheckBox sameProxyForAll = new JCheckBox(Translator.R("APSSameProxyForAllProtocols"), Boolean.parseBoolean(fields[8])); >> + >> + JPanel p = new JPanel(); >> + BoxLayout bl = new BoxLayout(p, BoxLayout.Y_AXIS); >> + p.setLayout(bl); >> + p.add(sameProxyForAll); >> + >> + c.gridy = 0; >> + c.gridwidth = 1; >> + c.weightx = 0; >> + c.gridx = 0; >> + servers.add(type, c); >> + c.gridwidth = 2; >> + c.weightx = 1; >> + c.gridx = 1; >> + servers.add(proxyAddress, c); >> + c.gridwidth = 1; >> + c.weightx = 1; >> + c.gridx = 4; >> + servers.add(port, c); >> + >> + plant(1, http, httpAddressField, httpPortField, servers, c); >> + plant(2, secure, secureAddressField, securePortField, servers, c); >> + plant(3, ftp, ftpAddressField, ftpPortField, servers, c); >> + plant(4, socks, socksAddressField, socksPortField, servers, c); >> + c.gridwidth = 5; >> + c.gridx = 0; >> + c.gridy = 5; >> + servers.add(p, c); >> + >> + JPanel exceptions = new NamedBorderPanel(Translator.R("APSExceptionsLabel")); >> + exceptions.setLayout(new BorderLayout()); >> + JLabel exceptionDescription = new JLabel(Translator.R("APSExceptionsDescription")); >> + final JTextArea exceptionListArea = new JTextArea(); >> + exceptionListArea.setLineWrap(true); >> + exceptionListArea.setText(fields[9]); >> + exceptionListArea.addKeyListener(new KeyListener() { >> + @Override >> + public void keyPressed(KeyEvent e) { >> + } >> + >> + @Override >> + public void keyReleased(KeyEvent e) { >> + fields[9] = exceptionListArea.getText(); >> + } >> + >> + @Override >> + public void keyTyped(KeyEvent e) { >> + } >> + }); >> + exceptionListArea.addMouseListener(new MiddleClickListener(this.config, fields[9])); >> + JLabel exceptionFormat = new JLabel(Translator.R("APSExceptionInstruction")); >> + JScrollPane exceptionScroll = new JScrollPane(exceptionListArea, JScrollPane.VERTICAL_SCROLLBAR_ALWAYS, JScrollPane.HORIZONTAL_SCROLLBAR_NEVER); >> + exceptions.add(exceptionDescription, BorderLayout.NORTH); >> + exceptions.add(exceptionScroll, BorderLayout.CENTER); >> + exceptions.add(exceptionFormat, BorderLayout.SOUTH); >> + >> + c.gridx = 0; >> + c.weightx = 1; >> + c.weighty = 0; >> + c.gridy = 0; >> + topPanel.add(servers, c); >> + c.weighty = 1; >> + c.gridy = 1; >> + topPanel.add(exceptions, c); >> + >> + this.add(topPanel); >> + this.add(createButtonPanel(), BorderLayout.SOUTH); >> + >> + } >> + >> + private void plant(int y, JLabel label, JTextField addr, JTextField port, JPanel addTo, GridBagConstraints c) { >> + c.gridy = y; >> + >> + c.gridwidth = 1; >> + c.weightx = 0; >> + c.gridx = 0; >> + addTo.add(label, c); >> + c.gridwidth = 2; >> + c.weightx = 1; >> + c.gridx = 1; >> + addTo.add(addr, c); >> + c.gridwidth = 1; >> + c.weightx = 0; >> + c.gridx = 3; >> + addTo.add(new JLabel(":"), c); >> + c.gridwidth = 1; >> + c.weightx = 0.3; >> + c.gridx = 4; >> + addTo.add(port, c); >> + } >> + >> + private JPanel createButtonPanel() { >> + JPanel buttonPanel = new JPanel(new FlowLayout(FlowLayout.TRAILING)); >> + >> + List buttons = new ArrayList(); >> + >> + JButton okButton = new JButton(Translator.R("ButOk")); >> + okButton.addActionListener(new ActionListener() { >> + @Override >> + public void actionPerformed(ActionEvent e) { >> + >> + for (int i = 0; i< fields.length; i++) >> + config.setProperty(properties[i], fields[i]); >> + >> + parent.dispose(); >> + } >> + }); >> + buttons.add(okButton); >> + >> + JButton cancelButton = new JButton(Translator.R("ButCancel")); >> + cancelButton.addActionListener(new ActionListener() { >> + @Override >> + public void actionPerformed(ActionEvent e) { >> + parent.dispose(); >> + } >> + }); >> + buttons.add(cancelButton); >> + >> + int maxWidth = 0; >> + int maxHeight = 0; >> + for (JButton button : buttons) { >> + maxWidth = Math.max(button.getMinimumSize().width, maxWidth); >> + maxHeight = Math.max(button.getMinimumSize().height, maxHeight); >> + } >> + >> + int wantedWidth = maxWidth + 10; >> + int wantedHeight = maxHeight; >> + for (JButton button : buttons) { >> + button.setPreferredSize(new Dimension(wantedWidth, wantedHeight)); >> + buttonPanel.add(button); >> + } >> + >> + return buttonPanel; >> + } >> + >> + public void focusOnDefaultButton() { >> + if (defaultFocusComponent != null) { >> + defaultFocusComponent.requestFocusInWindow(); >> + } >> + } >> + >> + public static void main(String[] args) throws ConfigurationException { >> + final DeploymentConfiguration config = new DeploymentConfiguration(); >> + config.load(); >> + System.out.println("Adv Proxy Settings Test Dialog"); >> + JDialog f = new JDialog(); >> + f.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE); >> + f.setPreferredSize(new Dimension(300, 300)); >> + AdvancedProxySettingsPane apsp = new AdvancedProxySettingsPane(f, config); >> + f.add(apsp); >> + f.pack(); >> + f.setVisible(true); >> + } >> +} >> + >> +class MiddleClickListener implements MouseListener { >> + >> + DeploymentConfiguration config; >> + private String property; >> + >> + public MiddleClickListener(DeploymentConfiguration config, String property) { >> + this.config = config; >> + this.property = property; >> + } >> + >> + @Override >> + public void mouseClicked(MouseEvent e) { >> + Object obj = e.getSource(); >> + String result = null; >> + if (obj instanceof JTextField) >> + result = ((JTextField) obj).getText(); >> + else if (obj instanceof JTextArea) result = ((JTextArea) obj).getText(); >> + >> + config.setProperty(property, result); >> + } >> + >> + @Override >> + public void mousePressed(MouseEvent e) { >> + } >> + >> + @Override >> + public void mouseReleased(MouseEvent e) { >> + } >> + >> + @Override >> + public void mouseEntered(MouseEvent e) { >> + } >> + >> + @Override >> + public void mouseExited(MouseEvent e) { >> + } >> + >> +} >> diff -r 243ab4185293 controlpanel/org/classpath/controlpanel/network/NetworkSettingsPanel.java >> --- /dev/null Thu Jan 01 00:00:00 1970 +0000 >> +++ b/controlpanel/org/classpath/controlpanel/network/NetworkSettingsPanel.java Fri Nov 26 15:58:55 2010 -0500 >> @@ -0,0 +1,288 @@ >> +package org.classpath.controlpanel.network; >> + >> +import java.awt.BorderLayout; >> +import java.awt.CardLayout; >> +import java.awt.Component; >> +import java.awt.Dimension; >> +import java.awt.FlowLayout; >> +import java.awt.GridBagConstraints; >> +import java.awt.GridBagLayout; >> +import java.awt.event.ActionEvent; >> +import java.awt.event.ActionListener; >> +import java.awt.event.ItemEvent; >> +import java.awt.event.ItemListener; >> +import java.awt.event.KeyEvent; >> +import java.awt.event.KeyListener; >> +import java.util.ArrayList; >> + >> +import javax.swing.Box; >> +import javax.swing.ButtonGroup; >> +import javax.swing.JButton; >> +import javax.swing.JCheckBox; >> +import javax.swing.JComponent; >> +import javax.swing.JLabel; >> +import javax.swing.JPanel; >> +import javax.swing.JRadioButton; >> +import javax.swing.JTextField; >> + >> +import org.classpath.controlpanel.NamedBorderPanel; >> +import org.classpath.controlpanel.translator.Translator; >> + >> +import net.sourceforge.jnlp.runtime.DeploymentConfiguration; >> + >> +/** >> + * This is the pane used with creating a JDialog version. This allows changing >> + * the network configuration: Proxy >> + * >> + * @author asu >> + * >> + */ >> + at SuppressWarnings("serial") >> +public class NetworkSettingsPanel extends JPanel implements ActionListener { >> + >> + private DeploymentConfiguration config; >> + >> + private JPanel description; >> + private ArrayList proxyPanels = new ArrayList(); // The stuff with editable fields >> + >> + private JComponent defaultFocusComponent = null; >> + >> + /** List of properties used by this panel */ >> + private String[] properties = { "deployment.proxy.type", >> + "deployment.proxy.http.host", >> + "deployment.proxy.http.port", >> + "deployment.proxy.bypass.local", >> + "deployment.proxy.auto.config.url", }; >> + private String[] fields = new String[properties.length]; >> + >> + public NetworkSettingsPanel(DeploymentConfiguration config) { >> + super(); >> + this.config = config; >> + setLayout(new BorderLayout()); >> + >> + getProperties(); >> + addComponents(); >> + } >> + >> + private void getProperties() { >> + >> + for (int i = 0; i< properties.length; i++) >> + fields[i] = this.config.getProperty(properties[i]); >> + } >> + >> + // create the GUI here. >> + protected void addComponents() { >> + JPanel settingPanel = new NamedBorderPanel(Translator.R("CPHeadNetworkSettings")); >> + settingPanel.setLayout(new GridBagLayout()); >> + GridBagConstraints c = new GridBagConstraints(); >> + c.fill = GridBagConstraints.BOTH; >> + c.weightx = 1; >> + c.weighty = 1; >> + c.gridx = 0; >> + >> + JLabel networkDesc = new JLabel("" + Translator.R("CPNetworkSettingsDescription") +"
"); >> + >> + JLabel description = new JLabel("" + Translator.R("NSDescription-1") +""); >> + JLabel description0 = new JLabel("" + Translator.R("NSDescription0") +""); >> + JLabel description1 = new JLabel("" + Translator.R("NSDescription1") +""); >> + JLabel description2 = new JLabel("" + Translator.R("NSDescription2") +""); >> + JLabel description3 = new JLabel("" + Translator.R("NSDescription3") +""); >> + >> + this.description = new JPanel(new CardLayout()); >> + this.description.add(description, "-1"); >> + this.description.add(description0, "0"); >> + this.description.add(description1, "1"); >> + this.description.add(description2, "2"); >> + this.description.add(description3, "3"); >> + >> + // Settings for selecting Proxy Server >> + JPanel proxyServerPanel = new JPanel(new BorderLayout()); >> + JPanel proxyLocationPanel = new JPanel(new FlowLayout(FlowLayout.LEADING)); >> + JPanel proxyBypassPanel = new JPanel(new FlowLayout(FlowLayout.LEADING)); >> + >> + JLabel addressLabel = new JLabel(Translator.R("NSAddress") + ":"); >> + JLabel portLabel = new JLabel(Translator.R("NSPort") + ":"); >> + final JTextField addressField = new JTextField(fields[1], 10); >> + addressField.addKeyListener(new KeyListener() { >> + @Override >> + public void keyPressed(KeyEvent e) { >> + } >> + >> + @Override >> + public void keyReleased(KeyEvent e) { >> + fields[1] = addressField.getText(); >> + config.setProperty(properties[1], fields[1]); >> + } >> + >> + @Override >> + public void keyTyped(KeyEvent e) { >> + } >> + }); >> + addressField.addMouseListener(new MiddleClickListener(this.config, properties[1])); >> + final JTextField portField = new JTextField(fields[2], 3); >> + portField.addKeyListener(new KeyListener() { >> + @Override >> + public void keyPressed(KeyEvent e) { >> + } >> + >> + @Override >> + public void keyReleased(KeyEvent e) { >> + fields[2] = portField.getText(); >> + config.setProperty(properties[2], fields[2]); >> + } >> + >> + @Override >> + public void keyTyped(KeyEvent e) { >> + } >> + }); >> + JButton advancedProxyButton = new JButton(Translator.R("NSAdvanced") + "..."); >> + >> + advancedProxyButton.addActionListener(new ActionListener() { >> + @Override >> + public void actionPerformed(ActionEvent e) { >> + try { >> + AdvancedProxySettingsDialog.showNetworkSettingsDialog(config); >> + } catch (Exception e1) { >> + e1.printStackTrace(); >> + } >> + } >> + }); >> + >> + JCheckBox bypassCheckBox = new JCheckBox(Translator.R("NSBypassLocal"), Boolean.parseBoolean(fields[3])); >> + bypassCheckBox.addItemListener(new ItemListener() { >> + @Override >> + public void itemStateChanged(ItemEvent e) { >> + fields[3] = String.valueOf(e.getStateChange() == ItemEvent.SELECTED); >> + config.setProperty(properties[3], fields[3]); >> + } >> + >> + }); >> + proxyLocationPanel.add(Box.createRigidArea(new Dimension(13, 0))); >> + proxyLocationPanel.add(addressLabel); >> + proxyLocationPanel.add(addressField); >> + proxyLocationPanel.add(portLabel); >> + proxyLocationPanel.add(portField); >> + proxyLocationPanel.add(advancedProxyButton); >> + proxyBypassPanel.add(Box.createRigidArea(new Dimension(10, 0))); >> + proxyBypassPanel.add(bypassCheckBox); >> + >> + proxyServerPanel.add(proxyLocationPanel, BorderLayout.CENTER); >> + proxyServerPanel.add(proxyBypassPanel, BorderLayout.SOUTH); >> + >> + JRadioButton directConnection = new JRadioButton(Translator.R("NSDirectConnection"), fields[0].equals("0")); >> + directConnection.setActionCommand("0"); >> + directConnection.addActionListener(this); >> + >> + JRadioButton useProxyServer = new JRadioButton(Translator.R("NSManualProxy"), fields[0].equals("1")); >> + useProxyServer.setActionCommand("1"); >> + useProxyServer.addActionListener(this); >> + >> + JRadioButton useAutoProxyConfigScript = new JRadioButton(Translator.R("NSAutoProxy"), fields[0].equals("2")); >> + useAutoProxyConfigScript.setActionCommand("2"); >> + useAutoProxyConfigScript.addActionListener(this); >> + >> + JRadioButton useBrowserSettings = new JRadioButton(Translator.R("NSBrowserProxy"), fields[0].equals("3")); >> + useBrowserSettings.setActionCommand("3"); >> + useBrowserSettings.addActionListener(this); >> + >> + ButtonGroup modeSelect = new ButtonGroup(); >> + modeSelect.add(useBrowserSettings); >> + modeSelect.add(useProxyServer); >> + modeSelect.add(useAutoProxyConfigScript); >> + modeSelect.add(directConnection); >> + >> + // Settings for Automatic Proxy Configuration Script >> + JPanel proxyAutoPanel = new JPanel(new FlowLayout(FlowLayout.LEADING)); >> + JLabel locationLabel = new JLabel(Translator.R("NSScripLocation") + ":"); >> + final JTextField locationField = new JTextField(fields[4], 20); >> + locationField.addKeyListener(new KeyListener() { >> + @Override >> + public void keyPressed(KeyEvent e) { >> + } >> + >> + @Override >> + public void keyReleased(KeyEvent e) { >> + String value = locationField.getText(); >> + if (value.trim().equals("")) value = null; >> + fields[4] = value; >> + config.setProperty(properties[4], value); >> + } >> + >> + @Override >> + public void keyTyped(KeyEvent e) { >> + } >> + }); >> + >> + proxyAutoPanel.add(Box.createRigidArea(new Dimension(13, 0))); >> + proxyAutoPanel.add(locationLabel); >> + proxyAutoPanel.add(locationField); >> + >> + c.gridy = 0; >> + settingPanel.add(networkDesc, c); >> + c.gridy = 1; >> + settingPanel.add(this.description, c); >> + c.gridy = 2; >> + settingPanel.add(directConnection, c); >> + c.gridy = 3; >> + settingPanel.add(useBrowserSettings, c); >> + c.gridy = 4; >> + settingPanel.add(useProxyServer, c); >> + c.gridy = 5; >> + settingPanel.add(proxyServerPanel, c); >> + proxyPanels.add(proxyServerPanel); >> + c.gridy = 6; >> + settingPanel.add(useAutoProxyConfigScript, c); >> + c.gridy = 7; >> + settingPanel.add(proxyAutoPanel, c); >> + proxyPanels.add(proxyAutoPanel); >> + >> + setState(); // depending on default setting we will enable or disable >> + >> + this.add(settingPanel, BorderLayout.CENTER); >> + } >> + >> + public void focusOnDefaultButton() { >> + if (defaultFocusComponent != null) { >> + defaultFocusComponent.requestFocusInWindow(); >> + } >> + } >> + >> + private void enablePanel(JPanel panel, boolean enable) { >> + // This will be used to enable all components in this panel recursively. >> + // Ridiculously slow if lots of nested panels and may error, too many >> + // calls? >> + for (Component c : panel.getComponents()) { >> + if (c instanceof JPanel) { >> + enablePanel((JPanel) c, enable); >> + } >> + c.setEnabled(enable); >> + } >> + } >> + >> + @Override >> + public void actionPerformed(ActionEvent e) { >> + fields[0] = e.getActionCommand(); >> + config.setProperty(properties[0], fields[0]); >> + setState(); >> + } >> + >> + /** >> + * This enables and disables the appropriate panels. >> + */ >> + private void setState() { >> + ((CardLayout) this.description.getLayout()).show(this.description, fields[0]); >> + if (fields[0].equals("0")) { >> + for (JPanel panel : proxyPanels) >> + enablePanel(panel, false); >> + } else if (fields[0].equals("1")) { >> + enablePanel(proxyPanels.get(1), false); >> + enablePanel(proxyPanels.get(0), true); >> + } else if (fields[0].equals("2")) { >> + enablePanel(proxyPanels.get(0), false); >> + enablePanel(proxyPanels.get(1), true); >> + } else if (fields[0].equals("3")) { >> + for (JPanel panel : proxyPanels) >> + enablePanel(panel, false); >> + } >> + } >> +} >> diff -r 243ab4185293 controlpanel/org/classpath/controlpanel/security/viewer/CertificatePane.java >> --- /dev/null Thu Jan 01 00:00:00 1970 +0000 >> +++ b/controlpanel/org/classpath/controlpanel/security/viewer/CertificatePane.java Fri Nov 26 15:58:55 2010 -0500 >> @@ -0,0 +1,496 @@ >> +/* CertificatePane.java >> + Copyright (C) 2008 Red Hat, Inc. >> + >> +This file is part of IcedTea. >> + >> +IcedTea is free software; you can redistribute it and/or >> +modify it under the terms of the GNU General Public License as published by >> +the Free Software Foundation, version 2. >> + >> +IcedTea is distributed in the hope that it will be useful, >> +but WITHOUT ANY WARRANTY; without even the implied warranty of >> +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU >> +General Public License for more details. >> + >> +You should have received a copy of the GNU General Public License >> +along with IcedTea; see the file COPYING. If not, write to >> +the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA >> +02110-1301 USA. >> + >> +Linking this library statically or dynamically with other modules is >> +making a combined work based on this library. Thus, the terms and >> +conditions of the GNU General Public License cover the whole >> +combination. >> + >> +As a special exception, the copyright holders of this library give you >> +permission to link this library with independent modules to produce an >> +executable, regardless of the license terms of these independent >> +modules, and to copy and distribute the resulting executable under >> +terms of your choice, provided that you also meet, for each linked >> +independent module, the terms and conditions of the license of that >> +module. An independent module is a module which is not derived from >> +or based on this library. If you modify this library, you may extend >> +this exception to your version of the library, but you are not >> +obligated to do so. If you do not wish to do so, delete this >> +exception statement from your version. >> +*/ >> + >> +package org.classpath.controlpanel.security.viewer; >> + >> +import static net.sourceforge.jnlp.runtime.Translator.R; >> + >> +import java.awt.BorderLayout; >> +import java.awt.Dimension; >> +import java.awt.FlowLayout; >> +import java.awt.event.ActionEvent; >> +import java.awt.event.ActionListener; >> +import java.awt.event.KeyEvent; >> +import java.io.File; >> +import java.io.FileOutputStream; >> +import java.io.OutputStream; >> +import java.io.PrintStream; >> +import java.security.KeyStore; >> +import java.security.cert.Certificate; >> +import java.security.cert.X509Certificate; >> +import java.util.ArrayList; >> +import java.util.Enumeration; >> +import java.util.List; >> + >> +import javax.swing.BorderFactory; >> +import javax.swing.JButton; >> +import javax.swing.JComboBox; >> +import javax.swing.JComponent; >> +import javax.swing.JDialog; >> +import javax.swing.JFileChooser; >> +import javax.swing.JLabel; >> +import javax.swing.JOptionPane; >> +import javax.swing.JPanel; >> +import javax.swing.JScrollPane; >> +import javax.swing.JTabbedPane; >> +import javax.swing.JTable; >> +import javax.swing.event.ChangeEvent; >> +import javax.swing.event.ChangeListener; >> +import javax.swing.table.DefaultTableModel; >> + >> +import net.sourceforge.jnlp.security.CertificateUtils; >> +import net.sourceforge.jnlp.security.KeyStores; >> +import net.sourceforge.jnlp.security.SecurityUtil; >> +import net.sourceforge.jnlp.security.SecurityWarningDialog; >> +import net.sourceforge.jnlp.security.KeyStores.Level; >> +import net.sourceforge.jnlp.util.FileUtils; >> + >> +public class CertificatePane extends JPanel { >> + >> + /** >> + * The certificates stored in the certificates file. >> + */ >> + private ArrayList certs = null; >> + >> + private static final Dimension TABLE_DIMENSION = new Dimension(500,200); >> + >> + /** >> + * "Issued To" and "Issued By" string pairs for certs. >> + */ >> + private String[][] issuedToAndBy = null; >> + private final String[] columnNames = { R("CVIssuedTo"), R("CVIssuedBy") }; >> + >> + private final CertificateType[] certificateTypes = new CertificateType[] { >> + new CertificateType(KeyStores.Type.CA_CERTS), >> + new CertificateType(KeyStores.Type.JSSE_CA_CERTS), >> + new CertificateType(KeyStores.Type.CERTS), >> + new CertificateType(KeyStores.Type.JSSE_CERTS), >> + }; >> + >> + JTabbedPane tabbedPane; >> + private final JTable userTable; >> + private final JTable systemTable; >> + private JComboBox certificateTypeCombo; >> + private KeyStores.Type currentKeyStoreType; >> + private KeyStores.Level currentKeyStoreLevel; >> + >> + /** JComponents that should be disbled for system store */ >> + private final List disableForSystem; >> + >> + private JDialog parent; >> + private JComponent defaultFocusComponent = null; >> + >> + /** >> + * The Current KeyStore. Only one table/tab is visible for interaction to >> + * the user. This KeyStore corresponds to that. >> + */ >> + private KeyStore keyStore = null; >> + >> + public CertificatePane(JDialog parent) { >> + super(); >> + this.parent = parent; >> + >> + userTable = new JTable(null); >> + systemTable = new JTable(null); >> + disableForSystem = new ArrayList(); >> + >> + addComponents(); >> + >> + currentKeyStoreType = ((CertificateType)(certificateTypeCombo.getSelectedItem())).getType(); >> + if (tabbedPane.getSelectedIndex() == 0) { >> + currentKeyStoreLevel = Level.USER; >> + } else { >> + currentKeyStoreLevel = Level.SYSTEM; >> + } >> + >> + repopulateTables(); >> + } >> + >> + /** >> + * Reads the user's trusted.cacerts keystore. >> + */ >> + private void initializeKeyStore() { >> + try { >> + keyStore = KeyStores.getKeyStore(currentKeyStoreLevel, currentKeyStoreType); >> + } catch (Exception e) { >> + e.printStackTrace(); >> + } >> + } >> + >> + //create the GUI here. >> + protected void addComponents() { >> + >> + JPanel main = new JPanel(new BorderLayout()); >> + >> + JPanel certificateTypePanel = new JPanel(new BorderLayout()); >> + certificateTypePanel.setBorder(BorderFactory.createEmptyBorder(5,5,5,5)); >> + >> + JLabel certificateTypeLabel = new JLabel(R("CVCertificateType")); >> + >> + certificateTypeCombo = new JComboBox(certificateTypes); >> + certificateTypeCombo.addActionListener(new CertificateTypeListener()); >> + >> + certificateTypePanel.add(certificateTypeLabel, BorderLayout.LINE_START); >> + certificateTypePanel.add(certificateTypeCombo, BorderLayout.CENTER); >> + >> + JPanel tablePanel = new JPanel(new BorderLayout()); >> + >> + // User Table >> + DefaultTableModel userTableModel >> + = new DefaultTableModel(issuedToAndBy, columnNames); >> + userTable.setModel(userTableModel); >> + userTable.getTableHeader().setReorderingAllowed(false); >> + userTable.setFillsViewportHeight(true); >> + JScrollPane userTablePane = new JScrollPane(userTable); >> + userTablePane.setPreferredSize(TABLE_DIMENSION); >> + userTablePane.setSize(TABLE_DIMENSION); >> + userTablePane.setBorder(BorderFactory.createEmptyBorder(10,10,10,10)); >> + >> + // System Table >> + DefaultTableModel systemTableModel = new DefaultTableModel(issuedToAndBy, columnNames); >> + systemTable.setModel(systemTableModel); >> + systemTable.getTableHeader().setReorderingAllowed(false); >> + systemTable.setFillsViewportHeight(true); >> + JScrollPane systemTablePane = new JScrollPane(systemTable); >> + systemTablePane.setPreferredSize(TABLE_DIMENSION); >> + systemTablePane.setSize(TABLE_DIMENSION); >> + systemTablePane.setBorder(BorderFactory.createEmptyBorder(10,10,10,10)); >> + >> + tabbedPane = new JTabbedPane(); >> + tabbedPane.addTab(R("CVUser"), userTablePane); >> + tabbedPane.addTab(R("CVSystem"), systemTablePane); >> + tabbedPane.addChangeListener(new TabChangeListener()); >> + >> + JPanel buttonPanel = new JPanel(new FlowLayout()); >> + >> + String[] buttonNames = {R("CVImport"), R("CVExport"), R("CVRemove"), R("CVDetails")}; >> + char[] buttonMnemonics = { KeyEvent.VK_I, >> + KeyEvent.VK_E, >> + KeyEvent.VK_M, >> + KeyEvent.VK_D}; >> + ActionListener[] listeners = { new ImportButtonListener(), >> + new ExportButtonListener(), >> + new RemoveButtonListener(), >> + new DetailsButtonListener() }; >> + JButton button; >> + >> + //get the max width >> + int maxWidth = 0; >> + for (int i = 0; i< buttonNames.length; i++) { >> + button = new JButton(buttonNames[i]); >> + maxWidth = Math.max(maxWidth, button.getMinimumSize().width); >> + } >> + >> + for (int i = 0; i< buttonNames.length; i++) { >> + button = new JButton(buttonNames[i]); >> + button.setMnemonic(buttonMnemonics[i]); >> + button.addActionListener(listeners[i]); >> + button.setSize(maxWidth, button.getSize().height); >> + // import and remove buttons >> + if (i == 0 || i == 2) { >> + disableForSystem.add(button); >> + } >> + buttonPanel.add(button); >> + } >> + >> + tablePanel.add(tabbedPane, BorderLayout.CENTER); >> + tablePanel.add(buttonPanel, BorderLayout.SOUTH); >> + >> + main.add(certificateTypePanel, BorderLayout.NORTH); >> + main.add(tablePanel, BorderLayout.CENTER); >> + if (parent != null){ >> + JPanel closePanel = new JPanel(new BorderLayout()); >> + closePanel.setBorder(BorderFactory.createEmptyBorder(7,7,7,7)); >> + JButton closeButton = new JButton(R("ButClose")); >> + closeButton.addActionListener(new CloseButtonListener()); >> + defaultFocusComponent = closeButton; >> + closePanel.add(closeButton, BorderLayout.EAST); >> + main.add(closePanel, BorderLayout.SOUTH); >> + } >> + >> + add(main); >> + >> + } >> + >> + /** >> + * Read in the optionPane's keystore to issuedToAndBy. >> + */ >> + private void readKeyStore() { >> + >> + Enumeration aliases = null; >> + certs = new ArrayList(); >> + try { >> + >> + //Get all of the X509Certificates and put them into an ArrayList >> + aliases = keyStore.aliases(); >> + while (aliases.hasMoreElements()) { >> + Certificate c = keyStore.getCertificate(aliases.nextElement()); >> + if (c instanceof X509Certificate) >> + certs.add((X509Certificate)c); >> + } >> + >> + //get the publisher and root information >> + issuedToAndBy = new String[certs.size()][2]; >> + for (int i = 0; i< certs.size(); i++) { >> + X509Certificate c = certs.get(i); >> + issuedToAndBy[i][0] = >> + SecurityUtil.getCN(c.getSubjectX500Principal().getName()); >> + issuedToAndBy[i][1] = >> + SecurityUtil.getCN(c.getIssuerX500Principal().getName()); >> + } >> + } catch (Exception e) { >> + //TODO >> + e.printStackTrace(); >> + } >> + } >> + >> + /** >> + * Re-reads the certs file and repopulates the JTable. This is typically >> + * called after a certificate was deleted from the keystore. >> + */ >> + private void repopulateTables() { >> + initializeKeyStore(); >> + readKeyStore(); >> + DefaultTableModel tableModel >> + = new DefaultTableModel(issuedToAndBy, columnNames); >> + >> + userTable.setModel(tableModel); >> + >> + tableModel = new DefaultTableModel(issuedToAndBy, columnNames); >> + systemTable.setModel(tableModel); >> + } >> + >> + public void focusOnDefaultButton() { >> + if (defaultFocusComponent != null) { >> + defaultFocusComponent.requestFocusInWindow(); >> + } >> + } >> + >> + /** Allows storing KeyStores.Types in a JComponent */ >> + private class CertificateType { >> + private final KeyStores.Type type; >> + >> + public CertificateType(KeyStores.Type type) { >> + this.type = type; >> + } >> + >> + public KeyStores.Type getType() { >> + return type; >> + } >> + >> + public String toString() { >> + return KeyStores.toDisplayableString(null, type); >> + } >> + } >> + >> + /** Invoked when a user selects a different certificate type */ >> + private class CertificateTypeListener implements ActionListener { >> + @Override >> + public void actionPerformed(ActionEvent e) { >> + JComboBox source = (JComboBox) e.getSource(); >> + CertificateType type = (CertificateType) source.getSelectedItem(); >> + currentKeyStoreType = type.getType(); >> + repopulateTables(); >> + } >> + } >> + >> + /** >> + * Invoked when a user selects a different tab (switches from user to system >> + * or vice versa). Changes the currentKeyStore Enables or disables buttons. >> + */ >> + private class TabChangeListener implements ChangeListener { >> + @Override >> + public void stateChanged(ChangeEvent e) { >> + JTabbedPane source = (JTabbedPane) e.getSource(); >> + switch (source.getSelectedIndex()) { >> + case 0: >> + currentKeyStoreLevel = Level.USER; >> + for (JComponent component : disableForSystem) { >> + component.setEnabled(true); >> + } >> + break; >> + case 1: >> + currentKeyStoreLevel = Level.SYSTEM; >> + for (JComponent component : disableForSystem) { >> + component.setEnabled(false); >> + } >> + break; >> + } >> + repopulateTables(); >> + >> + } >> + } >> + >> + private class ImportButtonListener implements ActionListener { >> + public void actionPerformed(ActionEvent e) { >> + >> + JFileChooser chooser = new JFileChooser(); >> + int returnVal = chooser.showOpenDialog(parent); >> + if(returnVal == JFileChooser.APPROVE_OPTION) { >> + try { >> + KeyStore ks = keyStore; >> + CertificateUtils.addToKeyStore(chooser.getSelectedFile(), ks); >> + File keyStoreFile = new File(KeyStores >> + .getKeyStoreLocation(currentKeyStoreLevel, currentKeyStoreType)); >> + if (!keyStoreFile.isFile()) { >> + FileUtils.createRestrictedFile(keyStoreFile, true); >> + } >> + >> + OutputStream os = new FileOutputStream(keyStoreFile); >> + ks.store(os, KeyStores.getPassword()); >> + repopulateTables(); >> + } catch (Exception ex) { >> + // TODO: handle exception >> + ex.printStackTrace(); >> + } >> + } >> + } >> + } >> + >> + private class ExportButtonListener implements ActionListener { >> + public void actionPerformed(ActionEvent e) { >> + >> + JTable table = null; >> + if (currentKeyStoreLevel == Level.USER) { >> + table = userTable; >> + } else { >> + table = systemTable; >> + } >> + >> + //For now, let's just export in -rfc mode as keytool does. >> + //we'll write to a file the exported certificate. >> + >> + >> + try { >> + int selectedRow = table.getSelectedRow(); >> + if (selectedRow != -1) { >> + JFileChooser chooser = new JFileChooser(); >> + int returnVal = chooser.showOpenDialog(parent); >> + if(returnVal == JFileChooser.APPROVE_OPTION) { >> + String alias = keyStore.getCertificateAlias(certs >> + .get(selectedRow)); >> + if (alias != null) { >> + Certificate c = keyStore.getCertificate(alias); >> + PrintStream ps = new PrintStream(chooser.getSelectedFile().getAbsolutePath()); >> + CertificateUtils.dump(c, ps); >> + repopulateTables(); >> + } >> + } >> + } >> + } catch (Exception ex) { >> + // TODO >> + ex.printStackTrace(); >> + } >> + } >> + } >> + >> + private class RemoveButtonListener implements ActionListener { >> + >> + /** >> + * Removes a certificate from the keyStore and writes changes to disk. >> + */ >> + public void actionPerformed(ActionEvent e) { >> + >> + JTable table = null; >> + if (currentKeyStoreLevel == Level.USER) { >> + table = userTable; >> + } else { >> + table = systemTable; >> + } >> + try { >> + int selectedRow = table.getSelectedRow(); >> + >> + if (selectedRow != -1){ >> + String alias = keyStore.getCertificateAlias(certs.get(selectedRow)); >> + if (alias != null) { >> + >> + int i = JOptionPane.showConfirmDialog(parent, >> + R("CVRemoveConfirmMessage"), >> + R("CVRemoveConfirmTitle"), >> + JOptionPane.YES_NO_OPTION); >> + if (i == 0) { >> + keyStore.deleteEntry(alias); >> + File keyStoreFile = new File(KeyStores >> + .getKeyStoreLocation(currentKeyStoreLevel, currentKeyStoreType)); >> + if (!keyStoreFile.isFile()) { >> + FileUtils.createRestrictedFile(keyStoreFile, true); >> + } >> + FileOutputStream fos = new FileOutputStream(keyStoreFile); >> + keyStore.store(fos, KeyStores.getPassword()); >> + fos.close(); >> + } >> + } >> + repopulateTables(); >> + } >> + } catch (Exception ex) { >> + // TODO >> + ex.printStackTrace(); >> + } >> + >> + } >> + } >> + >> + private class DetailsButtonListener implements ActionListener { >> + >> + /** >> + * Shows the details of a trusted certificate. >> + */ >> + public void actionPerformed(ActionEvent e) { >> + >> + JTable table = null; >> + if (currentKeyStoreLevel == Level.USER) { >> + table = userTable; >> + } else { >> + table = systemTable; >> + } >> + >> + int selectedRow = table.getSelectedRow(); >> + if (selectedRow != -1&& selectedRow>= 0) { >> + X509Certificate c = certs.get(selectedRow); >> + SecurityWarningDialog.showSingleCertInfoDialog(c, parent); >> + } >> + } >> + } >> + >> + private class CloseButtonListener implements ActionListener { >> + @Override >> + public void actionPerformed(ActionEvent e) { >> + parent.dispose(); >> + } >> + } >> + >> +} >> diff -r 243ab4185293 controlpanel/org/classpath/controlpanel/security/viewer/CertificateViewer.java >> --- /dev/null Thu Jan 01 00:00:00 1970 +0000 >> +++ b/controlpanel/org/classpath/controlpanel/security/viewer/CertificateViewer.java Fri Nov 26 15:58:55 2010 -0500 >> @@ -0,0 +1,125 @@ >> +/* CertificateViewer.java >> + Copyright (C) 2008 Red Hat, Inc. >> + >> +This file is part of IcedTea. >> + >> +IcedTea is free software; you can redistribute it and/or >> +modify it under the terms of the GNU General Public License as published by >> +the Free Software Foundation, version 2. >> + >> +IcedTea is distributed in the hope that it will be useful, >> +but WITHOUT ANY WARRANTY; without even the implied warranty of >> +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU >> +General Public License for more details. >> + >> +You should have received a copy of the GNU General Public License >> +along with IcedTea; see the file COPYING. If not, write to >> +the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA >> +02110-1301 USA. >> + >> +Linking this library statically or dynamically with other modules is >> +making a combined work based on this library. Thus, the terms and >> +conditions of the GNU General Public License cover the whole >> +combination. >> + >> +As a special exception, the copyright holders of this library give you >> +permission to link this library with independent modules to produce an >> +executable, regardless of the license terms of these independent >> +modules, and to copy and distribute the resulting executable under >> +terms of your choice, provided that you also meet, for each linked >> +independent module, the terms and conditions of the license of that >> +module. An independent module is a module which is not derived from >> +or based on this library. If you modify this library, you may extend >> +this exception to your version of the library, but you are not >> +obligated to do so. If you do not wish to do so, delete this >> +exception statement from your version. >> +*/ >> + >> +package org.classpath.controlpanel.security.viewer; >> + >> +import static net.sourceforge.jnlp.runtime.Translator.R; >> + >> +import java.awt.BorderLayout; >> +import java.awt.Container; >> +import java.awt.Dimension; >> +import java.awt.Frame; >> +import java.awt.Toolkit; >> +import java.awt.event.WindowAdapter; >> +import java.awt.event.WindowEvent; >> + >> +import javax.swing.JDialog; >> +import javax.swing.UIManager; >> + >> +import net.sourceforge.jnlp.runtime.JNLPRuntime; >> + >> +public class CertificateViewer extends JDialog { >> + >> + private boolean initialized = false; >> + private static final String dialogTitle = R("CVCertificateViewer"); >> + >> + CertificatePane panel; >> + >> + public CertificateViewer() { >> + super((Frame)null, dialogTitle, true); >> + >> + Container contentPane = getContentPane(); >> + contentPane.setLayout(new BorderLayout()); >> + >> + panel = new CertificatePane(this); >> + >> + add(panel); >> + >> + pack(); >> + >> + WindowAdapter adapter = new WindowAdapter() { >> + private boolean gotFocus = false; >> + >> + public void windowGainedFocus(WindowEvent we) { >> + // Once window gets focus, set initial focus >> + if (!gotFocus) { >> + panel.focusOnDefaultButton(); >> + gotFocus = true; >> + } >> + } >> + }; >> + addWindowFocusListener(adapter); >> + >> + initialized = true; >> + } >> + >> + public boolean isInitialized(){ >> + return initialized; >> + } >> + >> + private void centerDialog() { >> + Dimension screen = Toolkit.getDefaultToolkit().getScreenSize(); >> + Dimension dialogSize = getSize(); >> + >> + setLocation((screen.width - dialogSize.width)/2, >> + (screen.height - dialogSize.height)/2); >> + } >> + >> + >> + public static void showCertificateViewer() throws Exception { >> + JNLPRuntime.initialize(true); >> + setSystemLookAndFeel(); >> + >> + CertificateViewer cv = new CertificateViewer(); >> + cv.setResizable(true); >> + cv.centerDialog(); >> + cv.setVisible(true); >> + cv.dispose(); >> + } >> + >> + private static void setSystemLookAndFeel() { >> + try { >> + UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); >> + } catch (Exception e) { >> + // don't worry if we can't. >> + } >> + } >> + >> + public static void main(String[] args) throws Exception { >> + CertificateViewer.showCertificateViewer(); >> + } >> +} >> diff -r 243ab4185293 controlpanel/org/classpath/controlpanel/translator/Translator.java >> --- /dev/null Thu Jan 01 00:00:00 1970 +0000 >> +++ b/controlpanel/org/classpath/controlpanel/translator/Translator.java Fri Nov 26 15:58:55 2010 -0500 >> @@ -0,0 +1,42 @@ >> +// Copyright (C) 2010 Red Hat, Inc. >> +// >> +// This library is free software; you can redistribute it and/or >> +// modify it under the terms of the GNU Lesser General Public >> +// License as published by the Free Software Foundation; either >> +// version 2.1 of the License, or (at your option) any later version. >> +// >> +// This library is distributed in the hope that it will be useful, >> +// but WITHOUT ANY WARRANTY; without even the implied warranty of >> +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU >> +// Lesser General Public License for more details. >> +// >> +// You should have received a copy of the GNU Lesser General Public >> +// License along with this library; if not, write to the Free Software >> +// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. >> + >> +package org.classpath.controlpanel.translator; >> + >> +import net.sourceforge.jnlp.runtime.JNLPRuntime; >> + >> +/** >> + * Utility class to provide simple methods to help localize messages >> + */ >> +public class Translator { >> + >> + /** >> + * @return the localized string for the message >> + */ >> + public static String R(String message, Object... params) { >> + return JNLPRuntime.getMessage(message, params); >> + } >> + >> + /** >> + * Return a translated (localized) version of the message >> + * @param message the message to translate >> + * @return a string representing the localized message >> + */ >> + public static String R(String message) { >> + return JNLPRuntime.getMessage(message); >> + } >> + >> +} >> diff -r 243ab4185293 netx/net/sourceforge/jnlp/resources/Messages.properties >> --- a/netx/net/sourceforge/jnlp/resources/Messages.properties Fri Nov 26 15:21:56 2010 +0000 >> +++ b/netx/net/sourceforge/jnlp/resources/Messages.properties Fri Nov 26 15:58:55 2010 -0500 >> @@ -233,3 +233,130 @@ >> KSCaCerts=Trusted Root CA Certificates >> KSJsseCaCerts=Trusted JSSE Root CA Certificates, >> KSClientCerts=Client Authentication Certificates >> + >> +# Control Panel - Tab Descriptions >> +CPAboutDescription=View version information about Icedtea Control Panel. >> +CPNetworkSettingsDescription=Configure network settings, including how IcedTea Web connects to the internet and whether to use any proxies. >> +CPNetworkSettingsDescription2=Network settings are used when making internet connections. By default, Java will use the network settings in your web browser. Only advanced users should modify these settings. >> +CPTempInternetFilesDescription=Java stores application data for faster execution the next time you run it. >> +CPJRESettingsDescription=View and manage Java Runtime Environment versions and settings for Java applications and applets. >> +CPCertificatesDescription=Use certificates to positively identify yourself, certifications, authorities, and plublishers. >> +CPSecurityDescription=Use this to configure security settings. >> +CPDebuggingDescription=Enable options here to help with debugging >> +CPDesktopIntegrationDescription=Set whether or not to allow creation of desktop shortcut. >> + >> +# Control Panel - Buttons >> +CPButAbout=About... >> +CPButNetworkSettings=Network Settings... >> +CPButSettings=Settings... >> +CPButView=View... >> +CPButCertificates=Certificates... >> + >> +# Control Panel - Headers >> +CPHead=IcedTea Web Control Panel >> +CPHeadAbout=About >> +CPHeadNetworkSettings=Network Proxy Settings >> +CPHeadTempInternetFiles=Temporary Internet Files >> +CPHeadJRESettings=Java Runtime Environment Settings >> +CPHeadCertificates=Certificates >> +CPHeadDebugging=Debugging Settings >> +CPHeadDesktopIntegration=Desktop Integrations >> +CPHeadSecurity=Security Settings >> + >> +# Control Panel - Tabs >> +CPTabAbout=About IcedTea-Web >> +CPTabCache=Cache >> +CPTabCertificate=Certificates >> +CPTabClassLoader=Class Loaders >> +CPTabDebugging=Debugging >> +CPTabDesktopIntegration=Desktop Integration >> +CPTabNetwork=Network >> +CPTabRuntimes=Runtimes >> +CPTabSecurity=Security >> + >> +# Control Panel - AboutPanel >> +CPAboutInfo=This is the control panel for setting deployments.properties which is used by the plugin and netx and webstart. >> + >> +# Control Panel - AdvancedProxySettings >> +APSDialogTitle=Network Settings >> +APSServersPanel=Servers >> +APSProxyTypeLabel=Type >> +APSProxyAddressLabel=Proxy Address >> +APSProxyPortLabel=Port >> +APSLabelHTTP=HTTP >> +APSLabelSecure=Secure >> +APSLabelFTP=FTP >> +APSLabelSocks=Socks >> +APSSameProxyForAllProtocols=Use same proxy server for all protocols. >> +APSExceptionsLabel=Exceptions >> +APSExceptionsDescription=Do not use proxy server for addresses beginning with >> +APSExceptionInstruction=Separate each entry with a semicolon. >> + >> +# Control Panel - DebugginPanel >> +DPEnableTracing=Enable tracing >> +DPEnableLogging=Enable logging >> +DPLifeCycleExceptions=Show applet lifecycle exceptions >> +DPDisable=Disable >> +DPHide=Hide on startup >> +DPShow=Show on startup >> +DPJavaConsole=Java Console >> + >> +# Control Panel - DesktopShortcutPanel >> +DSPNeverCreate=Never create >> +DSPAlwaysAllow=Always allow >> +DSPAskUser=Ask user >> +DSPAskIfHinted=Ask if hinted >> +DSPAlwaysIfHinted=Always if hinted >> + >> +# Control Panel - NetworkSettingsPanel >> +NSDescription-1=Unknown Setting. >> +NSDescription0=Use direct connection. >> +NSDescription1=Override browser proxy settings. >> +NSDescription2=Use automatic proxy configuration script at the specified location. >> +NSDescription3=Use proxy settings from your default browser to connect to the internet. >> +NSAddress=Address >> +NSPort=Port >> +NSAdvanced=Advanced >> +NSBypassLocal=Bypass proxy server for local addresses >> +NSDirectConnection=Direct connection >> +NSManualProxy=Manual proxy server >> +NSAutoProxy=Automatic proxy configuration script >> +NSBrowserProxy=Use browser settings >> +NSScripLocation=Script location >> + >> +# Control Panel - SecurityGeneralPanel >> +SGPAllowUserGrantSigned=Allow users to grant permissions to signed content >> +SGPAllowUserGrantUntrust=Allow users to grant permissions to content from an untrusted authority >> +SGPUseBrowserKeystore=Use certificates and keys in browser keystore (Unsupported) >> +SGPUsePersonalCertOneMatch=Use personal certificate automatically if only one matches server request (Unsupported) >> +SGPWarnCertHostMismatch=Warn if site certificate does not match hostname >> +SGPShowValid=Show site certificate even if it is valid (Unsupported) >> +SGPShowSandboxWarning=Show sandbox warning banner >> +SGPAllowUserAcceptJNLPSecurityRequests=Allow user to accept JNLP security requests >> +SGPCheckCertRevocationList=Check certificates for revocation using Certificate Revocation Lists (CRLs) (Unsupported) >> +SGPEnableOnlineCertValidate=Enable online certificate validation (Unsupported) >> +SGPEnableTrustedPublisherList=Enable list of trusted publishers (Unsupported) >> +SGPEnableBlacklistRevocation=Enable blacklist revocation check (Unsupported) >> +SGPEnableCachingPassword=Enable caching password for authentication (Unsupported) >> +SGPUseSSL2=Use SSL 2.0 compatible ClientHello format (Unsupported) >> +SGPUseSSL3=Use SSL 3.0 (Unsupported) >> +SGPUseTLS1=Use TLS 1.0 (Unsupported) >> + >> +# Control Panel - TemporaryInternetFilesPanel >> +TIFPEnableCache=Keep temporary files on my computer >> +TIFPLocation=Location >> +TIFPLocationLabel=Select the location where temporary files are kept >> +TIFPChange=Change >> +TIFPDiskSpace=Disk space >> +TIFPCompressionLevel=Select the compression level for JAR files >> +TIFPNone=None >> +TIFPMax=Max >> +TIFPCacheSize=Set the amount of disk space for storing temporary files >> +TIFPDeleteFiles=Delete files >> +TIFPRestoreDefaults=Restore defaults >> + >> +# Control Panel - Misc. >> +CPJRESupport=Icedtea-web currently does not support multiple JRE. >> + >> +# Buttons >> +ButApply=Apply -------------- next part -------------- A non-text attachment was scrubbed... Name: makechange2.patch Type: text/x-patch Size: 6795 bytes Desc: not available Url : http://mail.openjdk.java.net/pipermail/distro-pkg-dev/attachments/20101129/2e5c155a/makechange2.patch -------------- next part -------------- A non-text attachment was scrubbed... Name: add_control_panel.patch Type: text/x-patch Size: 0 bytes Desc: not available Url : http://mail.openjdk.java.net/pipermail/distro-pkg-dev/attachments/20101129/2e5c155a/add_control_panel.patch -------------- next part -------------- A non-text attachment was scrubbed... Name: messages_update.patch Type: text/x-patch Size: 5763 bytes Desc: not available Url : http://mail.openjdk.java.net/pipermail/distro-pkg-dev/attachments/20101129/2e5c155a/messages_update.patch From omajid at redhat.com Mon Nov 29 13:53:40 2010 From: omajid at redhat.com (Omair Majid) Date: Mon, 29 Nov 2010 16:53:40 -0500 Subject: [RFC][icedtea-web]: Adding control panel to icedtea-web In-Reply-To: <4CF417B2.3060609@redhat.com> References: <619585353.556241290805830632.JavaMail.root@zmail01.collab.prod.int.phx2.redhat.com> <670901322.556301290805913094.JavaMail.root@zmail01.collab.prod.int.phx2.redhat.com> <20101127032752.GR17602@rivendell.middle-earth.co.uk> <4CF417B2.3060609@redhat.com> Message-ID: <4CF420E4.8080900@redhat.com> On 11/29/2010 04:14 PM, Andrew Su wrote: > Hello, > > Here is the updated patch for adding the control panel. If I missed > something let me know. > > Right now I've left netx/net/sourceforge/jnlp/security/viewer/* and not > deleted them. > It is currently copied into org/classpath/icedtea/controlpanel/ but I > was looking at javaws, which uses the viewer. > Our options are to either remove, the parameter "-viewer" for javaws > (for now) then later re-place it back in... > or to leave netx/net/sourceforge/jnlp/security/viewer/* as it is. > I dont see why netx should have a copy of certificate viewer. In my opinion, certificate viewer (CertficateViewer and CertificatePane) should be removed from netx. The "-viewer" option should be kept and it should invoke control panel if possible. FWIW, even removing the "-viewer" option might be acceptable. It is named exactly the same as the option in the proprietary javaws, but it does something quite different. IMO, we should try to avoid such surprises. > > * Makefile.am: > (CONTROLPANEL_DIR): Build directory for control panel. > (CONTROLPANEL_SRCDIR): Source directory for control panel. > (CONTROLPANEL_LAUNCHER_OBJECTS): Objects used to compile binary > control panel. > (all-local): Add stamps/controlpanel-dist.stamp > stamps/controlpanel.stamp $(CONTROLPANEL_DIR)/launcher/controlpanel. > (clean-local): Add clean-controlpanel. > (install-exec-local): Install the control panel jar file and control > panel binary. > (uninstall-local): Delete controlpanel.jar and controlpanel binary > from installed location. > (controlpanel-source-files.txt): Get the list of source files for > control panel. > (stamps/controlpanel.stamp): Compile the java files for control panel. > (stamps/controlpanel-dist.stamp): Depend on stamps/controlpanel.stamp. > Create the jar file for control panel. > ($(CONTROLPANEL_DIR)/launcher/%.o): Create the launcher objects. > ($(CONTROLPANEL_DIR)/launcher/controlpanel): Link the objects to make > the launcher. > (clean-controlpanel): Remove the compiled control panel. > (controlpanel): Calls stamps/controlpanel.stamp. > (controlpanel-dist): Calls stamps/controlpanel-dist.stamp. > (stamps/docs.stamp): Calls stamps/controlpanel-docs.stamp. > (clean-docs): Calls clean-controlpanel-docs. > (stamps/controlpanel-docs.stamp): Create the documentation for > controlpanel. > (clean-controlpanel-docs): Remove the documentation > * controlpanel/org/classpath/icedtea/controlpanel/AboutPanel.java, > * controlpanel/org/classpath/icedtea/controlpanel/ComboItem.java, > * controlpanel/org/classpath/icedtea/controlpanel/ControlPanel.java, > * controlpanel/org/classpath/icedtea/controlpanel/DebuggingPanel.java, > * > controlpanel/org/classpath/icedtea/controlpanel/DesktopShortcutPanel.java, > * controlpanel/org/classpath/icedtea/controlpanel/JREPanel.java, > * controlpanel/org/classpath/icedtea/controlpanel/NamedBorderPanel.java, > * > controlpanel/org/classpath/icedtea/controlpanel/SecuritySettingsPanel.java, > * > controlpanel/org/classpath/icedtea/controlpanel/TemporaryInternetFilesPanel.java, > > * > controlpanel/org/classpath/icedtea/controlpanel/network/AdvancedProxySettingsDialog.java, > > * > controlpanel/org/classpath/icedtea/controlpanel/network/AdvancedProxySettingsPane.java, > > * > controlpanel/org/classpath/icedtea/controlpanel/network/NetworkSettingsPanel.java, > > * > controlpanel/org/classpath/icedtea/controlpanel/security/viewer/CertificatePane.java, > > * > controlpanel/org/classpath/icedtea/controlpanel/security/viewer/CertificateViewer.java: > > New classes. All methods are new as well. > * > controlpanel/org/classpath/icedtea/controlpanel/translator/Translator.java: > Copied over from netx/net/sourceforge/jnlp/runtime/Translator.java and > changed package. Is there a reason for the tiny security.viewer and translator subackpages? Are there any problems with just adding CertificatePane and Translator to org.classpath.icedtea.controlpanel? CertificateViewer should be completely removed - are you even using it? Omair > * netx/net/sourceforge/jnlp/resources/Messages.properties: Added > messages for control panel. > > From asu at redhat.com Mon Nov 29 13:55:17 2010 From: asu at redhat.com (Andrew Su) Date: Mon, 29 Nov 2010 16:55:17 -0500 Subject: [RFC][icedtea-web]: Adding control panel to icedtea-web In-Reply-To: <4CF420E4.8080900@redhat.com> References: <619585353.556241290805830632.JavaMail.root@zmail01.collab.prod.int.phx2.redhat.com> <670901322.556301290805913094.JavaMail.root@zmail01.collab.prod.int.phx2.redhat.com> <20101127032752.GR17602@rivendell.middle-earth.co.uk> <4CF417B2.3060609@redhat.com> <4CF420E4.8080900@redhat.com> Message-ID: <4CF42145.1090401@redhat.com> On 11/29/2010 04:53 PM, Omair Majid wrote: > On 11/29/2010 04:14 PM, Andrew Su wrote: >> Hello, >> >> Here is the updated patch for adding the control panel. If I missed >> something let me know. >> >> Right now I've left netx/net/sourceforge/jnlp/security/viewer/* and not >> deleted them. >> It is currently copied into org/classpath/icedtea/controlpanel/ but I >> was looking at javaws, which uses the viewer. >> Our options are to either remove, the parameter "-viewer" for javaws >> (for now) then later re-place it back in... >> or to leave netx/net/sourceforge/jnlp/security/viewer/* as it is. >> > > I dont see why netx should have a copy of certificate viewer. In my > opinion, certificate viewer (CertficateViewer and CertificatePane) > should be removed from netx. The "-viewer" option should be kept and > it should invoke control panel if possible. > > FWIW, even removing the "-viewer" option might be acceptable. It is > named exactly the same as the option in the proprietary javaws, but it > does something quite different. IMO, we should try to avoid such > surprises. > >> >> * Makefile.am: >> (CONTROLPANEL_DIR): Build directory for control panel. >> (CONTROLPANEL_SRCDIR): Source directory for control panel. >> (CONTROLPANEL_LAUNCHER_OBJECTS): Objects used to compile binary >> control panel. >> (all-local): Add stamps/controlpanel-dist.stamp >> stamps/controlpanel.stamp $(CONTROLPANEL_DIR)/launcher/controlpanel. >> (clean-local): Add clean-controlpanel. >> (install-exec-local): Install the control panel jar file and control >> panel binary. >> (uninstall-local): Delete controlpanel.jar and controlpanel binary >> from installed location. >> (controlpanel-source-files.txt): Get the list of source files for >> control panel. >> (stamps/controlpanel.stamp): Compile the java files for control panel. >> (stamps/controlpanel-dist.stamp): Depend on stamps/controlpanel.stamp. >> Create the jar file for control panel. >> ($(CONTROLPANEL_DIR)/launcher/%.o): Create the launcher objects. >> ($(CONTROLPANEL_DIR)/launcher/controlpanel): Link the objects to make >> the launcher. >> (clean-controlpanel): Remove the compiled control panel. >> (controlpanel): Calls stamps/controlpanel.stamp. >> (controlpanel-dist): Calls stamps/controlpanel-dist.stamp. >> (stamps/docs.stamp): Calls stamps/controlpanel-docs.stamp. >> (clean-docs): Calls clean-controlpanel-docs. >> (stamps/controlpanel-docs.stamp): Create the documentation for >> controlpanel. >> (clean-controlpanel-docs): Remove the documentation >> * controlpanel/org/classpath/icedtea/controlpanel/AboutPanel.java, >> * controlpanel/org/classpath/icedtea/controlpanel/ComboItem.java, >> * controlpanel/org/classpath/icedtea/controlpanel/ControlPanel.java, >> * controlpanel/org/classpath/icedtea/controlpanel/DebuggingPanel.java, >> * >> controlpanel/org/classpath/icedtea/controlpanel/DesktopShortcutPanel.java, >> >> * controlpanel/org/classpath/icedtea/controlpanel/JREPanel.java, >> * controlpanel/org/classpath/icedtea/controlpanel/NamedBorderPanel.java, >> * >> controlpanel/org/classpath/icedtea/controlpanel/SecuritySettingsPanel.java, >> >> * >> controlpanel/org/classpath/icedtea/controlpanel/TemporaryInternetFilesPanel.java, >> >> >> * >> controlpanel/org/classpath/icedtea/controlpanel/network/AdvancedProxySettingsDialog.java, >> >> >> * >> controlpanel/org/classpath/icedtea/controlpanel/network/AdvancedProxySettingsPane.java, >> >> >> * >> controlpanel/org/classpath/icedtea/controlpanel/network/NetworkSettingsPanel.java, >> >> >> * >> controlpanel/org/classpath/icedtea/controlpanel/security/viewer/CertificatePane.java, >> >> >> * >> controlpanel/org/classpath/icedtea/controlpanel/security/viewer/CertificateViewer.java: >> >> >> New classes. All methods are new as well. >> * >> controlpanel/org/classpath/icedtea/controlpanel/translator/Translator.java: >> >> Copied over from netx/net/sourceforge/jnlp/runtime/Translator.java and >> changed package. > > Is there a reason for the tiny security.viewer and translator > subackpages? Are there any problems with just adding CertificatePane > and Translator to org.classpath.icedtea.controlpanel? > CertificateViewer should be completely removed - are you even using it? Oops sorry for confusion I forgot to change that in the change log. I moved everything to org/classpath/icedtea/controlpanel package. -- Andrew > > Omair > >> * netx/net/sourceforge/jnlp/resources/Messages.properties: Added >> messages for control panel. >> >> > From bugzilla-daemon at icedtea.classpath.org Mon Nov 29 16:32:44 2010 From: bugzilla-daemon at icedtea.classpath.org (bugzilla-daemon at icedtea.classpath.org) Date: Tue, 30 Nov 2010 00:32:44 +0000 Subject: [Bug 601] New: JRE failure with CollabNetSubversionEdge-1.3.0_linux-x86.tar.gz Message-ID: http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=601 Summary: JRE failure with CollabNetSubversionEdge-1.3.0_linux- x86.tar.gz Product: IcedTea Version: 6-1.7.5 Platform: all OS/Version: Linux Status: NEW Severity: normal Priority: P2 Component: IcedTea6 AssignedTo: unassigned at icedtea.classpath.org ReportedBy: Mark.C.Edwards at saic.com Installed CollabNetSubversionEdge-1.3.0_linux-x86.tar.gz under /opt/csvn, then added LD_LIBRARY_PATH=/opt/csvn to satisfy complaints about incompatible JavaHL native library support. The java -jar javahltests.jar tests 100% OK. At that point, I started Eclipse and attempted an import of an SVN project. Eclipse runs for a while, but eventually aborts. I've included the initial description at stack backtrace below. # # A fatal error has been detected by the Java Runtime Environment: # # SIGSEGV (0xb) at pc=0x00a0d22b, pid=10889, tid=3086083776 # # JRE version: 6.0_17-b17 # Java VM: OpenJDK Client VM (14.0-b16 mixed mode linux-x86 ) # Derivative: IcedTea6 1.7.5 # Distribution: Custom build (Tue Oct 12 00:18:47 EDT 2010) # Problematic frame: # C [libc.so.6+0x7122b] strncmp+0x5b # # If you would like to submit a bug report, please include # instructions how to reproduce the bug and visit: # http://icedtea.classpath.org/bugzilla # The crash happened outside the Java Virtual Machine in native code. # See problematic frame for where to report the bug. # Stack: [0xbf9b2000,0xbfa02000], sp=0xbf9fd894, free space=302k Native frames: (J=compiled Java code, j=interpreted, Vv=VM code, C=native code) C [libc.so.6+0x7122b] strncmp+0x5b C [libxml2.so.2+0x493d4] __xmlParserInputBufferCreateFilename+0x134 C [libxml2.so.2+0x49482] xmlParserInputBufferCreateFilename+0x52 C [libxml2.so.2+0xce94f] xmlNewTextReaderFilename+0x2f C [libgnomevfs-2.so.0+0x29a67] C [libgnomevfs-2.so.0+0x29d4c] C [libgnomevfs-2.so.0+0x29df7] gnome_vfs_mime_get_value+0x2c C [libgnomevfs-2.so.0+0x27116] gnome_vfs_mime_get_icon+0x27 C [libgnomeui-2.so.0+0x5e1c8] gnome_icon_lookup+0x288 C [libswt-gnome-gtk-3655.so+0x1874] Java_org_eclipse_swt_internal_gnome_GNOME__1gnome_1icon_1lookup+0xdb j org.eclipse.swt.internal.gnome.GNOME._gnome_icon_lookup(II[B[BI[BI[I)I+0 j org.eclipse.swt.internal.gnome.GNOME.gnome_icon_lookup(II[B[BI[BI[I)I+19 j org.eclipse.swt.program.Program.gnome_getProgram(Lorg/eclipse/swt/widgets/Display;Ljava/lang/String;)Lorg/eclipse/swt/program/Program;+173 j org.eclipse.swt.program.Program.findProgram(Lorg/eclipse/swt/widgets/Display;Ljava/lang/String;)Lorg/eclipse/swt/program/Program;+156 j org.eclipse.swt.program.Program.findProgram(Ljava/lang/String;)Lorg/eclipse/swt/program/Program;+4 j org.eclipse.ui.internal.registry.EditorRegistry.getSystemExternalEditorImageDescriptor(Ljava/lang/String;)Lorg/eclipse/jface/resource/ImageDescriptor;+18 j org.eclipse.ui.internal.registry.EditorRegistry.getImageDescriptor(Ljava/lang/String;Lorg/eclipse/core/runtime/content/IContentType;)Lorg/eclipse/jface/resource/ImageDescriptor;+207 j org.eclipse.ui.internal.ide.model.WorkbenchFile.getBaseImage(Lorg/eclipse/core/resources/IResource;)Lorg/eclipse/jface/resource/ImageDescriptor;+57 j org.eclipse.ui.internal.ide.model.WorkbenchResource.getImageDescriptor(Ljava/lang/Object;)Lorg/eclipse/jface/resource/ImageDescriptor;+16 j org.eclipse.jdt.internal.ui.viewsupport.JavaElementImageProvider.getWorkbenchImageDescriptor(Lorg/eclipse/core/runtime/IAdaptable;I)Lorg/eclipse/jface/resource/ImageDescriptor;+50 j org.eclipse.jdt.internal.ui.viewsupport.JavaElementImageProvider.computeDescriptor(Ljava/lang/Object;I)Lorg/eclipse/jface/resource/ImageDescriptor;+51 j org.eclipse.jdt.internal.ui.viewsupport.JavaElementImageProvider.getImageLabel(Ljava/lang/Object;I)Lorg/eclipse/swt/graphics/Image;+4 j org.eclipse.jdt.internal.ui.viewsupport.JavaUILabelProvider.getImage(Ljava/lang/Object;)Lorg/eclipse/swt/graphics/Image;+10 j org.eclipse.jdt.internal.ui.packageview.PackageExplorerLabelProvider.getImage(Ljava/lang/Object;)Lorg/eclipse/swt/graphics/Image;+85 j org.eclipse.jdt.internal.ui.navigator.JavaNavigatorLabelProvider.getImage(Ljava/lang/Object;)Lorg/eclipse/swt/graphics/Image;+5 j org.eclipse.ui.internal.navigator.NavigatorContentServiceLabelProvider.findImage(Lorg/eclipse/ui/internal/navigator/extensions/NavigatorContentExtension;Ljava/lang/Object;I)Lorg/eclipse/swt/graphics/Image;+41 j org.eclipse.ui.internal.navigator.NavigatorContentServiceLabelProvider.getColumnImage(Ljava/lang/Object;I)Lorg/eclipse/swt/graphics/Image;+36 j org.eclipse.ui.internal.navigator.NavigatorContentServiceLabelProvider.getImage(Ljava/lang/Object;)Lorg/eclipse/swt/graphics/Image;+3 j org.eclipse.ui.internal.navigator.NavigatorDecoratingLabelProvider$StyledLabelProviderAdapter.getImage(Ljava/lang/Object;)Lorg/eclipse/swt/graphics/Image;+5 j org.eclipse.jface.viewers.DelegatingStyledCellLabelProvider.getImage(Ljava/lang/Object;)Lorg/eclipse/swt/graphics/Image;+5 j org.eclipse.jface.viewers.DecoratingStyledCellLabelProvider.getImage(Ljava/lang/Object;)Lorg/eclipse/swt/graphics/Image;+2 j org.eclipse.jface.viewers.DelegatingStyledCellLabelProvider.update(Lorg/eclipse/jface/viewers/ViewerCell;)V+83 j org.eclipse.jface.viewers.DecoratingStyledCellLabelProvider.update(Lorg/eclipse/jface/viewers/ViewerCell;)V+11 j org.eclipse.jface.viewers.ViewerColumn.refresh(Lorg/eclipse/jface/viewers/ViewerCell;)V+40 j org.eclipse.jface.viewers.AbstractTreeViewer.doUpdateItem(Lorg/eclipse/swt/widgets/Item;Ljava/lang/Object;)V+122 j org.eclipse.jface.viewers.AbstractTreeViewer$UpdateItemSafeRunnable.run()V+12 J org.eclipse.core.runtime.SafeRunner.run(Lorg/eclipse/core/runtime/ISafeRunnable;)V j org.eclipse.ui.internal.JFaceUtil$1.run(Lorg/eclipse/core/runtime/ISafeRunnable;)V+1 j org.eclipse.jface.util.SafeRunnable.run(Lorg/eclipse/core/runtime/ISafeRunnable;)V+4 j org.eclipse.jface.viewers.AbstractTreeViewer.doUpdateItem(Lorg/eclipse/swt/widgets/Widget;Ljava/lang/Object;Z)V+82 j org.eclipse.jface.viewers.StructuredViewer$UpdateItemSafeRunnable.run()V+16 J org.eclipse.core.runtime.SafeRunner.run(Lorg/eclipse/core/runtime/ISafeRunnable;)V j org.eclipse.ui.internal.JFaceUtil$1.run(Lorg/eclipse/core/runtime/ISafeRunnable;)V+1 j org.eclipse.jface.util.SafeRunnable.run(Lorg/eclipse/core/runtime/ISafeRunnable;)V+4 j org.eclipse.jface.viewers.StructuredViewer.updateItem(Lorg/eclipse/swt/widgets/Widget;Ljava/lang/Object;)V+11 j org.eclipse.jface.viewers.AbstractTreeViewer.createTreeItem(Lorg/eclipse/swt/widgets/Widget;Ljava/lang/Object;I)V+13 j org.eclipse.jface.viewers.AbstractTreeViewer$1.run()V+172 j org.eclipse.swt.custom.BusyIndicator.showWhile(Lorg/eclipse/swt/widgets/Display;Ljava/lang/Runnable;)V+116 j org.eclipse.jface.viewers.AbstractTreeViewer.createChildren(Lorg/eclipse/swt/widgets/Widget;Z)V+63 j org.eclipse.jface.viewers.TreeViewer.createChildren(Lorg/eclipse/swt/widgets/Widget;Z)V+138 j org.eclipse.jface.viewers.AbstractTreeViewer.createChildren(Lorg/eclipse/swt/widgets/Widget;)V+3 j org.eclipse.jface.viewers.AbstractTreeViewer.handleTreeExpand(Lorg/eclipse/swt/events/TreeEvent;)V+5 j org.eclipse.jface.viewers.TreeViewer.handleTreeExpand(Lorg/eclipse/swt/events/TreeEvent;)V+84 j org.eclipse.jface.viewers.AbstractTreeViewer$4.treeExpanded(Lorg/eclipse/swt/events/TreeEvent;)V+5 j org.eclipse.swt.widgets.TypedListener.handleEvent(Lorg/eclipse/swt/widgets/Event;)V+443 J org.eclipse.swt.widgets.EventTable.sendEvent(Lorg/eclipse/swt/widgets/Event;)V J org.eclipse.swt.widgets.Widget.sendEvent(ILorg/eclipse/swt/widgets/Event;Z)V j org.eclipse.swt.widgets.Widget.sendEvent(ILorg/eclipse/swt/widgets/Event;)V+4 j org.eclipse.swt.widgets.Tree.gtk_test_expand_row(III)I+60 j org.eclipse.swt.widgets.Widget.windowProc(IIII)I+160 j org.eclipse.swt.widgets.Display.windowProc(IIII)I+21 v ~StubRoutines::call_stub ========================================================= --------------- S Y S T E M --------------- OS:Red Hat Enterprise Linux Server release 5.5 (Tikanga) uname:Linux 2.6.18-194.26.1.el5xen #1 SMP Fri Oct 29 14:36:51 EDT 2010 i686 libc:glibc 2.5 NPTL 2.5 rlimit: STACK 10240k, CORE 0k, NPROC 56626, NOFILE 1024, AS infinity load average:1.32 1.63 1.17 CPU:total 4 (8 cores per cpu, 2 threads per core) family 6 model 37 stepping 2, cmov, cx8, fxsr, mmx, sse, sse2, sse3, ssse3, sse4.1, sse4.2, ht Memory: 4k page, physical 3616048k(105144k free), swap 5668856k(5668856k free) vm_info: OpenJDK Client VM (14.0-b16) for linux-x86 JRE (1.6.0_17-b17), built on Oct 12 2010 00:33:11 by "mockbuild" with gcc 4.1.2 20080704 (Red Hat 4.1.2-48) time: Mon Nov 29 16:13:15 2010 ======================================== VM Arguments: jvm_args: -Dosgi.requiredJavaVersion=1.5 -XX:MaxPermSize=256m -Xms40m -Xmx512m java_command: Launcher Type: generic Environment Variables: JAVA_HOME=/usr/lib/jvm/java-1.6.0-openjdk PATH=/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/X11R6/bin:/root/bin:/usr/lib/jvm/java-1.6.0-openjdk/bin:/opt/groovy/bin:/opt/eclipse:/opt/maven/bin:/opt/pmd/bin:/opt/checkstyle/bin:/opt/grails/bin:/opt/nexus/bin/jsw/linux-x86-32 LD_LIBRARY_PATH=/usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0/jre/lib/i386/client:/usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0/jre/lib/i386:/opt/csvn/lib:/usr/lib/xulrunner-1.9.2:/usr/lib/xulrunner-1.9.2 SHELL=/bin/bash DISPLAY=:0.0 -- Configure bugmail: http://icedtea.classpath.org/bugzilla/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are the assignee for the bug, or are watching the assignee. From bugzilla-daemon at icedtea.classpath.org Mon Nov 29 16:34:10 2010 From: bugzilla-daemon at icedtea.classpath.org (bugzilla-daemon at icedtea.classpath.org) Date: Tue, 30 Nov 2010 00:34:10 +0000 Subject: [Bug 601] JRE failure with CollabNetSubversionEdge-1.3.0_linux-x86.tar.gz Message-ID: http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=601 ------- Comment #1 from Mark.C.Edwards at saic.com 2010-11-30 00:34 ------- Created an attachment (id=444) --> (http://icedtea.classpath.org/bugzilla/attachment.cgi?id=444&action=view) The complete dump log that was excerpted for the bug report -- Configure bugmail: http://icedtea.classpath.org/bugzilla/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are the assignee for the bug, or are watching the assignee. From David.Holmes at oracle.com Mon Nov 29 18:36:55 2010 From: David.Holmes at oracle.com (David Holmes) Date: Tue, 30 Nov 2010 12:36:55 +1000 Subject: undefined ia64_double_zero in hs19 In-Reply-To: <20101129131216.GB5592@rivendell.middle-earth.co.uk> References: <4CF35EE8.8010700@ubuntu.com> <4CF36FCE.7090708@oracle.com> <4CF3716A.5070206@ubuntu.com> <20101129110503.GA3437@redhat.com> <20101129131216.GB5592@rivendell.middle-earth.co.uk> Message-ID: <4CF46347.3060308@oracle.com> I've initiated the steps to getting this fixed. David Holmes Dr Andrew John Hughes said the following on 11/29/10 23:12: > On 11:05 Mon 29 Nov , Gary Benson wrote: >> Matthias Klose wrote: >>> On 29.11.2010 10:18, David Holmes wrote: >>>> Matthias Klose said the following on 11/29/10 18:06: >>>>> The hotspot build fails on ia64, ia64_double_zero is not defined >>>>> anymore. The code references a "IA64 gcc bug", but I cannot find >>>>> any open GCC report for this issue. Is this fixed upstream, or >>>>> is the workaround still necessary? If it's the latter, please >>>>> restore the ia64_double_zero definition. >>>> That was done a year ago: >>>> >>>> http://hg.openjdk.java.net/jdk7/hotspot-comp/hotspot/rev/8e7adf982378 >>>> >>>> I suspect it was seen as some opportune "clean up". >>> apparently it's still in OpenJDK6. >> That surprises me... doesn't OpenJDK6 regularly get it's HotSpot >> replaced by the latest and greatest? > > I regularly merge in the stable branches when they become available. > We never merge from OpenJDK7 directly. > >> This fix has been in HotSpot >> for almost as long as Zero, so it *should* be there... >> > > It was. Someone decided to revert it... :-S > Clearly they didn't actually build on ia64. > >> IcedTea always used to have a patch for this. Could it be that >> a now-unrequired IcedTea patch is being reversed? >> > > We removed the patch in IcedTea when it went upstream, first through > our own backport and then through the import of the hs17 stable branch. > > Importing hs19 reverted the fix by bringing in 6953477. > > So can someone please fix this again? > >> Cheers, >> Gary >> >> -- >> http://gbenson.net/ > From mark at klomp.org Tue Nov 30 06:13:22 2010 From: mark at klomp.org (Mark Wielaard) Date: Tue, 30 Nov 2010 15:13:22 +0100 Subject: Need reviewers and comments: 6989472: Provide simple jdk identification information in the install image In-Reply-To: <4CA9A8E8-0A2F-4F05-BF1F-5C2EF6168FD7@oracle.com> References: <4CA9A8E8-0A2F-4F05-BF1F-5C2EF6168FD7@oracle.com> Message-ID: <1291126402.2883.54.camel@springer.wildebeest.org> Hi Kelly, On Mon, 2010-11-29 at 14:44 -0800, Kelly O'Hair wrote: > Need reviewers and comments: > 6989472: Provide simple jdk identification information in the > install image > http://cr.openjdk.java.net/~ohair/openjdk7/jdk_release/webrev/ CCing distro-pkg-dev since we were recently discussing runtime identification on irc wrt the various IcedTea supported runtimes (hotspot client, server, zero, shark and cacao). > With JDK6 Updates we purposely resisted many rebranding changes that > could impacted > customers, however at one point we had accidently changed the Windows > DLL/EXE > COMPANY value thinking that no one would be looking at it. > We were wrong and this change cause Eclipse failures, so we are > looking for a solution, see: > https://bugs.eclipse.org/bugs/show_bug.cgi?id=321390 > So we went back and change JDK6 Updates back the way it was, and > learned a valuable lesson. > > But we have and will change JDK7 in this regard, so we wanted a better > way for an app to > know what it had it's hands on without using platform specific > information in the binary files. > > The above change creates a small text file called "jdk.release" at the > top of the install image > with some basic values that could help direct any app using the jdk in > constructing a command > line or even being assured that this jdk install image will even work > on your existing system. > In the Eclipse case it was looking for "Sun", but I suspect it really > wanted to know if the VM was > "Hotspot" because I think it was trying to set a Hotspot specific > PermGen option. If so, then I would leave out the confusing vendor strings from the jdk.release file. Because that isn't what people want to know. And might reintroduce the confusion. The os, arch, version of class library and runtime is what is selected on. Maybe this should be extended with the versions of jaxp, jaxws, corba and langtools that are included. > In any case I think this jdk.release file should provide the necessary > answers in the future. But I don't think this is specific enough yet. Hotspot comes in some variants (at least server and client), which might or might not be available on the platform. You can know which ones if you look at the jre/lib//jvm.cfg file. [IcedTea then extends this with shark, zero, cacao as alternatives]. The problem with that approach is that to get at this file you need to know the arch mapping/dir in use. Would it be possible to somehow merge or at least reference the jvm.cfg file with/in the jdk.release file? > The make variable COMPANY_NAME determines the vendor name during a > build, > so a Linux 64bit build from a make command line like: > make COMPANY_NAME="Test Company Name" > should result in a jdk.release file that looks something like: > > os.name = Linux > os.version = 2.6 > os.arch = amd64 > java.vendor = Test Company Name > java.version = 1.7.0-internal > java.vm.vendor = Test Company Name > java.vm.name = Hotspot(TM) > java.vm.version = 20.0-b02 > > A formal Oracle jdk7 EA build on Linux 64bit should look something like: > > os.name = Linux > os.version = 2.6 > os.arch = amd64 > java.vendor = Oracle Corporation > java.version = 1.7.0-ea > java.vm.vendor = Oracle Corporation > java.vm.name = Hotspot(TM) > java.vm.version = 20.0-b02 > > Comments are welcome. Although, polite constructive comments are > probably more what I'd like to see. ;^) From ahughes at redhat.com Tue Nov 30 06:16:28 2010 From: ahughes at redhat.com (Dr Andrew John Hughes) Date: Tue, 30 Nov 2010 14:16:28 +0000 Subject: [icedtea-web] RFC: Fix make distcheck In-Reply-To: <20101129160311.GC24721@redhat.com> References: <20101127041804.GW17602@rivendell.middle-earth.co.uk> <20101129160311.GC24721@redhat.com> Message-ID: <20101130141628.GE11042@rivendell.middle-earth.co.uk> On 11:03 Mon 29 Nov , Deepak Bhole wrote: > * Dr Andrew John Hughes [2010-11-26 23:21]: > > This cleans up the icedtea-web build, mainly fixing install/uninstall > > issues such as the permission of installed files and the non-removal > > of documentation. > > > > 2010-11-26 Andrew John Hughes > > > > Make distcheck work. > > * Makefile.am: > > (EXTRA_DIST): Use relative paths for netx > > and the plugin. > > (clean-local): Remove empty stamps directory. > > (install-exec-local): Use install to install > > programs and data with the correct permissions. > > (install-data-local): Likewise. > > (uninstall-local): Remove documentation. > > (netx): Use ${INSTALL_DATA} to add resources so > > that read-only files aren't copied. > > (extra-files): Likewise. > > ($(NETX_DIR)/launcher/javaws): Don't create empty launcher > > directory. > > (clean-docs): Remove empty docs directory. > > (clean-bootstrap-directory): Remove empty bootstrap > > directory. > > > > Ok? > > I tested it with a clean icedtea-web build, tried a make distcheck and > then tried building from resulting tarball -- everything seems to be > working correctly. > Good to hear. Err... you do realise that exactly what make distcheck does is build from the tarball, right? :-D > OK for HEAD. > Thanks! > Thanks! > Deepak > > > -- > > Andrew :) > > > > Free Java Software Engineer > > Red Hat, Inc. (http://www.redhat.com) > > > > Support Free Java! > > Contribute to GNU Classpath and the OpenJDK > > http://www.gnu.org/software/classpath > > http://openjdk.java.net > > PGP Key: 94EFD9D8 (http://subkeys.pgp.net) > > Fingerprint = F8EF F1EA 401E 2E60 15FA 7927 142C 2591 94EF D9D8 > > > diff -r 243ab4185293 Makefile.am > > --- a/Makefile.am Fri Nov 26 15:21:56 2010 +0000 > > +++ b/Makefile.am Sat Nov 27 04:04:56 2010 +0000 > > @@ -83,7 +83,7 @@ > > -Wl,\$$ORIGIN/../jre/lib/$(INSTALL_ARCH_DIR)/jli $(X11_CFLAGS) $(X11_LIBS) -ljli -ldl -lz > > PLUGIN_VERSION = IcedTea $(PACKAGE_VERSION)$(ICEDTEA_REV)$(ICEDTEA_PKG) > > > > -EXTRA_DIST = $(NETX_SRCDIR) $(abs_top_srcdir)/plugin javaws.png javaws.desktop.in extra launcher > > +EXTRA_DIST = $(top_srcdir)/netx $(top_srcdir)/plugin javaws.png javaws.desktop.in extra launcher > > > > # Top-Level Targets > > # ================= > > @@ -93,31 +93,41 @@ > > > > clean-local: clean-netx clean-plugin clean-liveconnect clean-extra clean-bootstrap-directory \ > > clean-native-ecj clean-desktop-files clean-docs > > + if [ -e stamps ] ; then \ > > + rmdir stamps ; \ > > + fi > > > > .PHONY: clean-IcedTeaPlugin clean-add-netx clean-add-netx-debug clean-add-plugin clean-add-plugin-debug \ > > clean-bootstrap-directory clean-native-ecj clean-desktop-files clean-netx-docs clean-docs clean-plugin-docs > > > > install-exec-local: > > - mkdir -p $(DESTDIR)$(bindir) > > - mkdir -p $(DESTDIR)$(prefix)/jre/lib/$(INSTALL_ARCH_DIR) > > + ${mkinstalldirs} $(DESTDIR)$(bindir) $(DESTDIR)$(prefix)/jre/lib/$(INSTALL_ARCH_DIR) > > if ENABLE_PLUGIN > > - cp -pPRf $(PLUGIN_DIR)/IcedTeaPlugin.so $(DESTDIR)$(prefix)/jre/lib/$(INSTALL_ARCH_DIR)/ > > - cp -pPRf $(PLUGIN_DIR)/launcher/pluginappletviewer $(DESTDIR)$(bindir) > > - cp -pPRf $(abs_top_builddir)/liveconnect/lib/classes.jar $(DESTDIR)$(prefix)/jre/lib/plugin.jar > > + ${INSTALL_PROGRAM} $(PLUGIN_DIR)/IcedTeaPlugin.so $(DESTDIR)$(prefix)/jre/lib/$(INSTALL_ARCH_DIR)/ > > + ${INSTALL_PROGRAM} $(PLUGIN_DIR)/launcher/pluginappletviewer $(DESTDIR)$(bindir) > > + ${INSTALL_PROGRAM} $(abs_top_builddir)/liveconnect/lib/classes.jar $(DESTDIR)$(prefix)/jre/lib/plugin.jar > > endif > > - cp -pPRf $(NETX_DIR)/lib/classes.jar $(DESTDIR)$(prefix)/jre/lib/netx.jar > > - cp -pPRf $(NETX_DIR)/launcher/javaws $(DESTDIR)$(bindir) > > - cp extra-lib/about.jar $(DESTDIR)$(prefix)/jre/lib > > + ${INSTALL_DATA} $(NETX_DIR)/lib/classes.jar $(DESTDIR)$(prefix)/jre/lib/netx.jar > > + ${INSTALL_PROGRAM} $(NETX_DIR)/launcher/javaws $(DESTDIR)$(bindir) > > + ${INSTALL_DATA} extra-lib/about.jar $(DESTDIR)$(prefix)/jre/lib > > > > install-data-local: > > - mkdir -p $(DESTDIR)$(prefix)/man/man1 > > - cp $(NETX_SRCDIR)/javaws.1 $(DESTDIR)$(prefix)/man/man1 > > - cp $(NETX_RESOURCE_DIR)/about.jnlp $(DESTDIR)$(prefix)/jre/lib > > + ${mkinstalldirs} -d $(DESTDIR)$(prefix)/man/man1 > > + ${INSTALL_DATA} $(NETX_SRCDIR)/javaws.1 $(DESTDIR)$(prefix)/man/man1 > > + ${INSTALL_DATA} $(NETX_RESOURCE_DIR)/about.jnlp $(DESTDIR)$(prefix)/jre/lib > > if ENABLE_DOCS > > - mkdir -p $(DESTDIR)$(htmldir) > > - cp -pPRf ${abs_top_builddir}/docs/netx $(DESTDIR)$(htmldir) > > + ${mkinstalldirs} $(DESTDIR)$(htmldir) > > + (cd ${abs_top_builddir}/docs/netx; \ > > + for files in $$(find . -type f); \ > > + do \ > > + ${INSTALL_DATA} -D $${files} $(DESTDIR)$(htmldir)/netx/$${files}; \ > > + done) > > if ENABLE_PLUGIN > > - cp -pPRf ${abs_top_builddir}/docs/plugin $(DESTDIR)$(htmldir) > > + (cd ${abs_top_builddir}/docs/plugin; \ > > + for files in $$(find . -type f); \ > > + do \ > > + ${INSTALL_DATA} -D $${files} $(DESTDIR)$(htmldir)/plugin/$${files}; \ > > + done) > > endif > > endif > > > > @@ -130,6 +140,7 @@ > > rm -f $(DESTDIR)$(prefix)/man/man1/javaws.1 > > rm -f $(DESTDIR)$(bindir)/pluginappletviewer > > rm -f $(DESTDIR)$(bindir)/javaws > > + rm -rf $(DESTDIR)$(htmldir) > > > > # Plugin > > > > @@ -250,7 +261,12 @@ > > -sourcepath $(NETX_SRCDIR) \ > > -bootclasspath $(RUNTIME) \ > > @netx-source-files.txt > > - cp -r $(NETX_RESOURCE_DIR) $(NETX_DIR)/net/sourceforge/jnlp > > + (cd $(NETX_RESOURCE_DIR); \ > > + for files in $$(find . -type f); \ > > + do \ > > + ${INSTALL_DATA} -D $${files} \ > > + $(NETX_DIR)/net/sourceforge/jnlp/resources/$${files}; \ > > + done) > > mkdir -p stamps > > touch $@ > > > > @@ -285,7 +301,12 @@ > > $(BOOT_DIR)/bin/javac $(IT_JAVACFLAGS) -d extra-lib \ > > -sourcepath $(abs_top_srcdir)/extra -cp netx.build \ > > -bootclasspath $(RUNTIME) @extra-source-files.txt > > - cp -r $(NETX_EXTRA_DIR) extra-lib/net/sourceforge/jnlp/about > > + (cd $(NETX_EXTRA_DIR); \ > > + for files in $$(find . -type f); \ > > + do \ > > + ${INSTALL_DATA} -D $${files} \ > > + ${abs_top_builddir}/extra-lib/net/sourceforge/jnlp/about/resources/$${files}; \ > > + done) > > mkdir -p stamps > > touch $@ > > > > @@ -303,7 +324,6 @@ > > -c -o $@ $< > > > > $(NETX_DIR)/launcher/javaws: $(NETX_LAUNCHER_OBJECTS) > > - mkdir -p launcher > > $(CC) $(NETX_LAUNCHER_OBJECTS) $(LAUNCHER_LINK) > > > > javaws.desktop: javaws.desktop.in > > @@ -315,6 +335,9 @@ > > touch stamps/docs.stamp > > > > clean-docs: clean-netx-docs clean-plugin-docs > > + if [ -e ${abs_top_builddir}/docs ] ; then \ > > + rmdir ${abs_top_builddir}/docs ; \ > > + fi > > rm -f stamps/docs.stamp > > > > stamps/netx-docs.stamp: stamps/bootstrap-directory.stamp > > @@ -416,6 +439,9 @@ > > > > clean-bootstrap-directory: > > rm -rf $(BOOT_DIR) > > + if [ -e ${abs_top_builddir}/bootstrap ] ; then \ > > + rmdir ${abs_top_builddir}/bootstrap ; \ > > + fi > > rm -f stamps/bootstrap-directory.stamp > > > > # Target Aliases > -- Andrew :) Free Java Software Engineer Red Hat, Inc. (http://www.redhat.com) Support Free Java! Contribute to GNU Classpath and the OpenJDK http://www.gnu.org/software/classpath http://openjdk.java.net PGP Key: 94EFD9D8 (http://subkeys.pgp.net) Fingerprint = F8EF F1EA 401E 2E60 15FA 7927 142C 2591 94EF D9D8 From doko at icedtea.classpath.org Tue Nov 30 07:31:40 2010 From: doko at icedtea.classpath.org (doko at icedtea.classpath.org) Date: Tue, 30 Nov 2010 15:31:40 +0000 Subject: /hg/icedtea: Remove obsolete patches. Message-ID: changeset 44d809890734 in /hg/icedtea details: http://icedtea.classpath.org/hg/icedtea?cmd=changeset;node=44d809890734 author: doko at ubuntu.com date: Tue Nov 30 16:31:02 2010 +0100 Remove obsolete patches. 2010-11-30 Matthias Klose * patches/icedtea-hotspot-6b11-7b24.patch: Remove. * patches/icedtea-hotspot-6b14-7b24.patch. Remove. diffstat: 3 files changed, 5 insertions(+), 70939 deletions(-) ChangeLog | 5 patches/icedtea-hotspot-6b11-7b24.patch |56973 ------------------------------- patches/icedtea-hotspot-6b14-7b24.patch |13966 ------- diffs (truncated from 70959 to 500 lines): diff -r 68ccdcc3cbb1 -r 44d809890734 ChangeLog --- a/ChangeLog Mon Nov 29 15:55:14 2010 +0100 +++ b/ChangeLog Tue Nov 30 16:31:02 2010 +0100 @@ -1,3 +1,8 @@ 2010-11-24 Andrew John Hughes + + * patches/icedtea-hotspot-6b11-7b24.patch: Remove. + * patches/icedtea-hotspot-6b14-7b24.patch. Remove. + 2010-11-24 Andrew John Hughes Bump to b117. Move to using drops from diff -r 68ccdcc3cbb1 -r 44d809890734 patches/icedtea-hotspot-6b11-7b24.patch --- a/patches/icedtea-hotspot-6b11-7b24.patch Mon Nov 29 15:55:14 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,56973 +0,0 @@ -diff -ruNb openjdk{6,}/hotspot/src/share -diff -ruNb openjdk{6,}/hotspot/src/os/linux - -diff -ruNb openjdk6/hotspot/src/share/tools/MakeDeps/BuildConfig.java openjdk/hotspot/src/share/tools/MakeDeps/BuildConfig.java ---- openjdk6/hotspot/src/share/tools/MakeDeps/BuildConfig.java 2008-07-10 22:04:28.000000000 +0200 -+++ openjdk/hotspot/src/share/tools/MakeDeps/BuildConfig.java 2007-12-14 08:57:02.000000000 +0100 -@@ -704,6 +704,3 @@ - receiver.add(attr); receiver.add(value); - } - } -- -- -- -diff -ruNb openjdk6/hotspot/src/share/tools/MakeDeps/Macro.java openjdk/hotspot/src/share/tools/MakeDeps/Macro.java ---- openjdk6/hotspot/src/share/tools/MakeDeps/Macro.java 2008-07-10 22:04:28.000000000 +0200 -+++ openjdk/hotspot/src/share/tools/MakeDeps/Macro.java 2007-12-14 08:57:02.000000000 +0100 -@@ -26,4 +26,3 @@ - public String name; - public String contents; - } -- -diff -ruNb openjdk6/hotspot/src/share/tools/MakeDeps/Platform.java openjdk/hotspot/src/share/tools/MakeDeps/Platform.java ---- openjdk6/hotspot/src/share/tools/MakeDeps/Platform.java 2008-07-10 22:04:28.000000000 +0200 -+++ openjdk/hotspot/src/share/tools/MakeDeps/Platform.java 2007-12-14 08:57:02.000000000 +0100 -@@ -169,7 +169,7 @@ - - /** max is 31 on mac, so warn */ - public int fileNameLengthLimit() { -- return 40; -+ return 45; - } - - public int defaultGrandIncludeThreshold() { -diff -ruNb openjdk6/hotspot/src/share/tools/MakeDeps/WinGammaPlatformVC6.java openjdk/hotspot/src/share/tools/MakeDeps/WinGammaPlatformVC6.java ---- openjdk6/hotspot/src/share/tools/MakeDeps/WinGammaPlatformVC6.java 2008-07-10 22:04:28.000000000 +0200 -+++ openjdk/hotspot/src/share/tools/MakeDeps/WinGammaPlatformVC6.java 2007-12-14 08:57:02.000000000 +0100 -@@ -236,7 +236,7 @@ - " /nologo /base:\"0x8000000\" /subsystem:windows /dll" + - " /export:JNI_GetDefaultJavaVMInitArgs /export:JNI_CreateJavaVM /export:JNI_GetCreatedJavaVMs "+ - " /export:jio_snprintf /export:jio_printf /export:jio_fprintf /export:jio_vfprintf "+ -- " /export:jio_vsnprintf /export:JVM_EnqueueOperation "); -+ " /export:jio_vsnprintf "); - rv.add("SUBTRACT LINK32 /pdb:none /map"); - - return rv; -diff -ruNb openjdk6/hotspot/src/share/tools/MakeDeps/WinGammaPlatformVC7.java openjdk/hotspot/src/share/tools/MakeDeps/WinGammaPlatformVC7.java ---- openjdk6/hotspot/src/share/tools/MakeDeps/WinGammaPlatformVC7.java 2008-07-10 22:04:28.000000000 +0200 -+++ openjdk/hotspot/src/share/tools/MakeDeps/WinGammaPlatformVC7.java 2007-12-14 08:57:02.000000000 +0100 -@@ -262,6 +262,8 @@ - - rv.add(new SpecificNameFilter("JVMTI Generated", new String[] {"^jvmti.+"})); - -+ rv.add(new SpecificNameFilter("C++ Interpreter Generated", new String[] {"^bytecodeInterpreterWithChecks.+"})); -+ - rv.add(new SpecificNameFilter("Include DBs", new String[] {"^includeDB_.+"})); - - // this one is to catch files not caught by other filters -@@ -574,8 +576,7 @@ - "/export:JNI_GetCreatedJavaVMs "+ - "/export:jio_snprintf /export:jio_printf "+ - "/export:jio_fprintf /export:jio_vfprintf "+ -- "/export:jio_vsnprintf "+ -- "/export:JVM_EnqueueOperation "); -+ "/export:jio_vsnprintf "); - addAttr(rv, "AdditionalDependencies", "Wsock32.lib winmm.lib"); - addAttr(rv, "OutputFile", outDll); - addAttr(rv, "LinkIncremental", "1"); -diff -ruNb openjdk6/hotspot/src/share/vm/adlc/adlc.hpp openjdk/hotspot/src/share/vm/adlc/adlc.hpp ---- openjdk6/hotspot/src/share/vm/adlc/adlc.hpp 2008-07-10 22:04:28.000000000 +0200 -+++ openjdk/hotspot/src/share/vm/adlc/adlc.hpp 2007-12-14 08:57:02.000000000 +0100 -@@ -1,6 +1,3 @@ --#ifdef USE_PRAGMA_IDENT_HDR --#pragma ident "@(#)adlc.hpp 1.28 07/05/05 17:04:59 JVM" --#endif - /* - * Copyright 1998-2006 Sun Microsystems, Inc. All Rights Reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. -diff -ruNb openjdk6/hotspot/src/share/vm/adlc/adlparse.cpp openjdk/hotspot/src/share/vm/adlc/adlparse.cpp ---- openjdk6/hotspot/src/share/vm/adlc/adlparse.cpp 2008-07-10 22:04:29.000000000 +0200 -+++ openjdk/hotspot/src/share/vm/adlc/adlparse.cpp 2007-12-14 08:57:02.000000000 +0100 -@@ -1,6 +1,3 @@ --#ifdef USE_PRAGMA_IDENT_SRC --#pragma ident "@(#)adlparse.cpp 1.205 07/05/05 17:05:00 JVM" --#endif - /* - * Copyright 1997-2007 Sun Microsystems, Inc. All Rights Reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. -diff -ruNb openjdk6/hotspot/src/share/vm/adlc/adlparse.hpp openjdk/hotspot/src/share/vm/adlc/adlparse.hpp ---- openjdk6/hotspot/src/share/vm/adlc/adlparse.hpp 2008-07-10 22:04:28.000000000 +0200 -+++ openjdk/hotspot/src/share/vm/adlc/adlparse.hpp 2007-12-14 08:57:02.000000000 +0100 -@@ -1,6 +1,3 @@ --#ifdef USE_PRAGMA_IDENT_HDR --#pragma ident "@(#)adlparse.hpp 1.79 07/05/05 17:05:00 JVM" --#endif - /* - * Copyright 1997-2007 Sun Microsystems, Inc. All Rights Reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. -@@ -273,5 +270,3 @@ - static bool is_int_token(const char* token, int& intval); - static void trim(char* &token); // trim leading & trailing spaces - }; -- -- -diff -ruNb openjdk6/hotspot/src/share/vm/adlc/archDesc.cpp openjdk/hotspot/src/share/vm/adlc/archDesc.cpp ---- openjdk6/hotspot/src/share/vm/adlc/archDesc.cpp 2008-07-10 22:04:29.000000000 +0200 -+++ openjdk/hotspot/src/share/vm/adlc/archDesc.cpp 2007-12-14 08:57:02.000000000 +0100 -@@ -22,6 +22,7 @@ - // - // - -+ - // archDesc.cpp - Internal format for architecture definition - #include "adlc.hpp" - -diff -ruNb openjdk6/hotspot/src/share/vm/adlc/arena.cpp openjdk/hotspot/src/share/vm/adlc/arena.cpp ---- openjdk6/hotspot/src/share/vm/adlc/arena.cpp 2008-07-10 22:04:29.000000000 +0200 -+++ openjdk/hotspot/src/share/vm/adlc/arena.cpp 2007-12-14 08:57:02.000000000 +0100 -@@ -1,6 +1,3 @@ --#ifdef USE_PRAGMA_IDENT_SRC --#pragma ident "@(#)arena.cpp 1.16 07/05/05 17:05:00 JVM" --#endif - /* - * Copyright 1998-2002 Sun Microsystems, Inc. All Rights Reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. -@@ -173,4 +170,3 @@ - void CHeapObj::operator delete(void* p){ - free(p); - } -- -diff -ruNb openjdk6/hotspot/src/share/vm/adlc/arena.hpp openjdk/hotspot/src/share/vm/adlc/arena.hpp ---- openjdk6/hotspot/src/share/vm/adlc/arena.hpp 2008-07-10 22:04:29.000000000 +0200 -+++ openjdk/hotspot/src/share/vm/adlc/arena.hpp 2007-12-14 08:57:02.000000000 +0100 -@@ -1,6 +1,3 @@ --#ifdef USE_PRAGMA_IDENT_HDR --#pragma ident "@(#)arena.hpp 1.17 07/05/05 17:05:00 JVM" --#endif - /* - * Copyright 1998-2002 Sun Microsystems, Inc. All Rights Reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. -@@ -158,4 +155,3 @@ - size_t size_in_bytes() const { return _size_in_bytes; } - void set_size_in_bytes(size_t size) { _size_in_bytes = size; } - }; -- -diff -ruNb openjdk6/hotspot/src/share/vm/adlc/dfa.cpp openjdk/hotspot/src/share/vm/adlc/dfa.cpp ---- openjdk6/hotspot/src/share/vm/adlc/dfa.cpp 2008-07-10 22:04:29.000000000 +0200 -+++ openjdk/hotspot/src/share/vm/adlc/dfa.cpp 2007-12-14 08:57:02.000000000 +0100 -@@ -1,6 +1,3 @@ --#ifdef USE_PRAGMA_IDENT_SRC --#pragma ident "@(#)dfa.cpp 1.83 07/05/05 17:04:59 JVM" --#endif - /* - * Copyright 1997-2004 Sun Microsystems, Inc. All Rights Reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. -@@ -1022,4 +1019,3 @@ - void ProductionState::print() { - _production.print(print_key, print_production); - } -- -diff -ruNb openjdk6/hotspot/src/share/vm/adlc/dict2.cpp openjdk/hotspot/src/share/vm/adlc/dict2.cpp ---- openjdk6/hotspot/src/share/vm/adlc/dict2.cpp 2008-07-10 22:04:29.000000000 +0200 -+++ openjdk/hotspot/src/share/vm/adlc/dict2.cpp 2007-12-14 08:57:02.000000000 +0100 -@@ -1,6 +1,3 @@ --#ifdef USE_PRAGMA_IDENT_SRC --#pragma ident "@(#)dict2.cpp 1.19 07/05/05 17:04:59 JVM" --#endif - /* - * Copyright 1998-2002 Sun Microsystems, Inc. All Rights Reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. -@@ -354,5 +351,3 @@ - } - _key = _value = NULL; - } -- -- -diff -ruNb openjdk6/hotspot/src/share/vm/adlc/dict2.hpp openjdk/hotspot/src/share/vm/adlc/dict2.hpp ---- openjdk6/hotspot/src/share/vm/adlc/dict2.hpp 2008-07-10 22:04:29.000000000 +0200 -+++ openjdk/hotspot/src/share/vm/adlc/dict2.hpp 2007-12-14 08:57:02.000000000 +0100 -@@ -1,6 +1,3 @@ --#ifdef USE_PRAGMA_IDENT_HDR --#pragma ident "@(#)dict2.hpp 1.16 07/05/05 17:05:01 JVM" --#endif - /* - * Copyright 1998-2000 Sun Microsystems, Inc. All Rights Reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. -@@ -121,5 +118,3 @@ - }; - - #endif // _DICT_ -- -- -diff -ruNb openjdk6/hotspot/src/share/vm/adlc/filebuff.cpp openjdk/hotspot/src/share/vm/adlc/filebuff.cpp ---- openjdk6/hotspot/src/share/vm/adlc/filebuff.cpp 2008-07-10 22:04:29.000000000 +0200 -+++ openjdk/hotspot/src/share/vm/adlc/filebuff.cpp 2007-12-14 08:57:02.000000000 +0100 -@@ -1,6 +1,3 @@ --#ifdef USE_PRAGMA_IDENT_SRC --#pragma ident "@(#)filebuff.cpp 1.30 07/05/05 17:05:01 JVM" --#endif - /* - * Copyright 1997-2002 Sun Microsystems, Inc. All Rights Reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. -@@ -297,4 +294,3 @@ - va_end(args); - _AD._no_output = 1; - } -- -diff -ruNb openjdk6/hotspot/src/share/vm/adlc/filebuff.hpp openjdk/hotspot/src/share/vm/adlc/filebuff.hpp ---- openjdk6/hotspot/src/share/vm/adlc/filebuff.hpp 2008-07-10 22:04:29.000000000 +0200 -+++ openjdk/hotspot/src/share/vm/adlc/filebuff.hpp 2007-12-14 08:57:02.000000000 +0100 -@@ -1,6 +1,3 @@ --#ifdef USE_PRAGMA_IDENT_HDR --#pragma ident "@(#)filebuff.hpp 1.27 07/05/05 17:05:01 JVM" --#endif - /* - * Copyright 1997-2004 Sun Microsystems, Inc. All Rights Reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. -diff -ruNb openjdk6/hotspot/src/share/vm/adlc/forms.cpp openjdk/hotspot/src/share/vm/adlc/forms.cpp ---- openjdk6/hotspot/src/share/vm/adlc/forms.cpp 2008-07-10 22:04:29.000000000 +0200 -+++ openjdk/hotspot/src/share/vm/adlc/forms.cpp 2007-12-14 08:57:02.000000000 +0100 -@@ -1,6 +1,3 @@ --#ifdef USE_PRAGMA_IDENT_SRC --#pragma ident "@(#)forms.cpp 1.161 07/05/05 17:04:59 JVM" --#endif - /* - * Copyright 1997-2007 Sun Microsystems, Inc. All Rights Reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. -@@ -386,4 +383,3 @@ - void SourceForm::output(FILE *fp) { - fprintf(fp,"\n//%s\n%s\n",classname(),(_code?_code:"")); - } -- -diff -ruNb openjdk6/hotspot/src/share/vm/adlc/forms.hpp openjdk/hotspot/src/share/vm/adlc/forms.hpp ---- openjdk6/hotspot/src/share/vm/adlc/forms.hpp 2008-07-10 22:04:29.000000000 +0200 -+++ openjdk/hotspot/src/share/vm/adlc/forms.hpp 2007-12-14 08:57:02.000000000 +0100 -@@ -1,6 +1,3 @@ --#ifdef USE_PRAGMA_IDENT_HDR --#pragma ident "@(#)forms.hpp 1.150 07/05/05 17:05:00 JVM" --#endif - /* - * Copyright 1997-2007 Sun Microsystems, Inc. All Rights Reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. -@@ -587,6 +584,3 @@ - void print_asserts(FILE *fp); - void dump(); - }; -- -- -- -diff -ruNb openjdk6/hotspot/src/share/vm/adlc/formsopt.cpp openjdk/hotspot/src/share/vm/adlc/formsopt.cpp ---- openjdk6/hotspot/src/share/vm/adlc/formsopt.cpp 2008-07-10 22:04:29.000000000 +0200 -+++ openjdk/hotspot/src/share/vm/adlc/formsopt.cpp 2007-12-14 08:57:02.000000000 +0100 -@@ -1,6 +1,3 @@ --#ifdef USE_PRAGMA_IDENT_SRC --#pragma ident "@(#)formsopt.cpp 1.53 07/05/05 17:05:01 JVM" --#endif - /* - * Copyright 1998-2006 Sun Microsystems, Inc. All Rights Reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. -@@ -725,4 +722,3 @@ - void PeepReplace::output(FILE *fp) { // Write info to output files - fprintf(fp,"PeepReplace:\n"); - } -- -diff -ruNb openjdk6/hotspot/src/share/vm/adlc/formsopt.hpp openjdk/hotspot/src/share/vm/adlc/formsopt.hpp ---- openjdk6/hotspot/src/share/vm/adlc/formsopt.hpp 2008-07-10 22:04:29.000000000 +0200 -+++ openjdk/hotspot/src/share/vm/adlc/formsopt.hpp 2007-12-14 08:57:02.000000000 +0100 -@@ -1,6 +1,3 @@ --#ifdef USE_PRAGMA_IDENT_HDR --#pragma ident "@(#)formsopt.hpp 1.54 07/05/05 17:05:01 JVM" --#endif - /* - * Copyright 1998-2006 Sun Microsystems, Inc. All Rights Reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. -@@ -549,4 +546,3 @@ - void dump(); - void output(FILE *fp); - }; -- -diff -ruNb openjdk6/hotspot/src/share/vm/adlc/formssel.cpp openjdk/hotspot/src/share/vm/adlc/formssel.cpp ---- openjdk6/hotspot/src/share/vm/adlc/formssel.cpp 2008-07-10 22:04:29.000000000 +0200 -+++ openjdk/hotspot/src/share/vm/adlc/formssel.cpp 2007-12-14 08:57:02.000000000 +0100 -@@ -1,6 +1,3 @@ --#ifdef USE_PRAGMA_IDENT_SRC --#pragma ident "@(#)formssel.cpp 1.183 07/09/06 15:24:29 JVM" --#endif - /* - * Copyright 1998-2007 Sun Microsystems, Inc. All Rights Reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. -@@ -236,23 +233,58 @@ - return _matrule ? _matrule->is_ideal_copy() : 0; - } - --// Return 'true' if this instruction matches an ideal 'CosD' node -+// Return 'true' if this instruction is too complex to rematerialize. - int InstructForm::is_expensive() const { -- if (_matrule == NULL) return 0; - // We can prove it is cheap if it has an empty encoding. - // This helps with platform-specific nops like ThreadLocal and RoundFloat. -+ if (is_empty_encoding()) -+ return 0; -+ -+ if (is_tls_instruction()) -+ return 1; -+ -+ if (_matrule == NULL) return 0; -+ -+ return _matrule->is_expensive(); -+} -+ -+// Has an empty encoding if _size is a constant zero or there -+// are no ins_encode tokens. -+int InstructForm::is_empty_encoding() const { - if (_insencode != NULL) { - _insencode->reset(); - if (_insencode->encode_class_iter() == NULL) { -- return 0; -+ return 1; - } - } - if (_size != NULL && strcmp(_size, "0") == 0) { -+ return 1; -+ } - return 0; -+} -+ -+int InstructForm::is_tls_instruction() const { -+ if (_ident != NULL && -+ ( ! strcmp( _ident,"tlsLoadP") || -+ ! strncmp(_ident,"tlsLoadP_",9)) ) { -+ return 1; - } -- return _matrule->is_expensive(); -+ -+ if (_matrule != NULL && _insencode != NULL) { -+ const char* opType = _matrule->_opType; -+ if (strcmp(opType, "Set")==0) -+ opType = _matrule->_rChild->_opType; -+ if (strcmp(opType,"ThreadLocal")==0) { -+ fprintf(stderr, "Warning: ThreadLocal instruction %s should be named 'tlsLoadP_*'\n", -+ (_ident == NULL ? "NULL" : _ident)); -+ return 1; -+ } -+ } -+ -+ return 0; - } - -+ - // Return 'true' if this instruction matches an ideal 'Copy*' node - bool InstructForm::is_ideal_unlock() const { - return _matrule ? _matrule->is_ideal_unlock() : false; -@@ -492,6 +524,10 @@ - if( _components.count() == 1 && _components[0]->is(Component::USE_DEF) ) - rematerialize = true; - -+ // Pseudo-constants (values easily available to the runtime) -+ if (is_empty_encoding() && is_tls_instruction()) -+ rematerialize = true; -+ - // 1-input, 1-output, such as copies or increments. - if( _components.count() == 2 && - _components[0]->is(Component::DEF) && -@@ -1171,9 +1207,9 @@ - // Output the format call for this operand - fprintf(fp,"opnd_array(%d)->",idx); - if (idx == 0) -- fprintf(fp,"int_format(ra, this); // %s\n", rep_var); -+ fprintf(fp,"int_format(ra, this, st); // %s\n", rep_var); - else -- fprintf(fp,"ext_format(ra, this,idx%d); // %s\n", idx, rep_var ); -+ fprintf(fp,"ext_format(ra, this,idx%d, st); // %s\n", idx, rep_var ); - } - } - -@@ -2329,11 +2365,11 @@ - - void OperandForm::format_constant(FILE *fp, uint const_index, uint const_type) { - switch(const_type) { -- case Form::idealI: fprintf(fp,"tty->print(\"#%%d\", _c%d);\n", const_index); break; -- case Form::idealP: fprintf(fp,"_c%d->dump();\n", const_index); break; -- case Form::idealL: fprintf(fp,"tty->print(\"#%%lld\", _c%d);\n", const_index); break; -- case Form::idealF: fprintf(fp,"tty->print(\"#%%f\", _c%d);\n", const_index); break; -- case Form::idealD: fprintf(fp,"tty->print(\"#%%f\", _c%d);\n", const_index); break; -+ case Form::idealI: fprintf(fp,"st->print(\"#%%d\", _c%d);\n", const_index); break; -+ case Form::idealP: fprintf(fp,"_c%d->dump_on(st);\n", const_index); break; -+ case Form::idealL: fprintf(fp,"st->print(\"#%%lld\", _c%d);\n", const_index); break; -+ case Form::idealF: fprintf(fp,"st->print(\"#%%f\", _c%d);\n", const_index); break; -+ case Form::idealD: fprintf(fp,"st->print(\"#%%f\", _c%d);\n", const_index); break; - default: - assert( false, "ShouldNotReachHere()"); - } -@@ -3725,6 +3761,17 @@ - int MatchRule::is_ideal_copy() const { - if( _rChild ) { - const char *opType = _rChild->_opType; -+ if( strcmp(opType,"CastII")==0 ) -+ return 1; -+ // Do not treat *CastPP this way, because it -+ // may transfer a raw pointer to an oop. -+ // If the register allocator were to coalesce this -+ // into a single LRG, the GC maps would be incorrect. -+ //if( strcmp(opType,"CastPP")==0 ) -+ // return 1; -+ //if( strcmp(opType,"CheckCastPP")==0 ) -+ // return 1; -+ // - // Do not treat CastX2P or CastP2X this way, because - // raw pointers and int types are treated differently - // when saving local & stack info for safepoints in -@@ -3773,7 +3820,6 @@ - strcmp(opType,"ConvL2I")==0 || - strcmp(opType,"RoundDouble")==0 || - strcmp(opType,"RoundFloat")==0 || -- strcmp(opType,"ThreadLocal")==0 || - strcmp(opType,"ReverseBytesI")==0 || - strcmp(opType,"ReverseBytesL")==0 || - strcmp(opType,"Replicate16B")==0 || -@@ -3951,4 +3997,3 @@ - fprintf(fp,"\nFormat Rule: \n%s", (_temp?_temp:"")); - fprintf(fp,"\n"); - } -- -diff -ruNb openjdk6/hotspot/src/share/vm/adlc/formssel.hpp openjdk/hotspot/src/share/vm/adlc/formssel.hpp ---- openjdk6/hotspot/src/share/vm/adlc/formssel.hpp 2008-07-10 22:04:29.000000000 +0200 -+++ openjdk/hotspot/src/share/vm/adlc/formssel.hpp 2007-12-14 08:57:02.000000000 +0100 -@@ -1,6 +1,3 @@ --#ifdef USE_PRAGMA_IDENT_HDR --#pragma ident "@(#)formssel.hpp 1.76 07/05/17 15:49:19 JVM" --#endif - /* - * Copyright 1998-2007 Sun Microsystems, Inc. All Rights Reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. -@@ -139,6 +136,8 @@ - // ideal opcode enumeration - virtual const char *ideal_Opcode(FormDict &globals) const; - virtual int is_expensive() const; // node matches ideal 'CosD' -+ virtual int is_empty_encoding() const; // _size=0 and/or _insencode empty -+ virtual int is_tls_instruction() const; // tlsLoadP rule or ideal ThreadLocal - virtual int is_ideal_copy() const; // node matches ideal 'Copy*' - virtual bool is_ideal_unlock() const; // node matches ideal 'Unlock' - virtual bool is_ideal_call_leaf() const; // node matches ideal 'CallLeaf' -diff -ruNb openjdk6/hotspot/src/share/vm/adlc/output_c.cpp openjdk/hotspot/src/share/vm/adlc/output_c.cpp ---- openjdk6/hotspot/src/share/vm/adlc/output_c.cpp 2008-07-10 22:04:29.000000000 +0200 -+++ openjdk/hotspot/src/share/vm/adlc/output_c.cpp 2007-12-14 08:57:02.000000000 +0100 -@@ -1,6 +1,3 @@ --#ifdef USE_PRAGMA_IDENT_SRC --#pragma ident "@(#)output_c.cpp 1.184 07/05/17 15:49:23 JVM" --#endif - /* - * Copyright 1998-2007 Sun Microsystems, Inc. All Rights Reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. -@@ -2199,7 +2196,7 @@ - const char* reg_conversion(const char* rep_var) { - if (strcmp(rep_var,"$Register") == 0) return "as_Register"; - if (strcmp(rep_var,"$FloatRegister") == 0) return "as_FloatRegister"; --#if defined(IA32) -+#if defined(IA32) || defined(AMD64) - if (strcmp(rep_var,"$XMMRegister") == 0) return "as_XMMRegister"; - #endif - return NULL; -diff -ruNb openjdk6/hotspot/src/share/vm/adlc/output_h.cpp openjdk/hotspot/src/share/vm/adlc/output_h.cpp ---- openjdk6/hotspot/src/share/vm/adlc/output_h.cpp 2008-07-10 22:04:29.000000000 +0200 -+++ openjdk/hotspot/src/share/vm/adlc/output_h.cpp 2007-12-14 08:57:02.000000000 +0100 -@@ -1,6 +1,3 @@ --#ifdef USE_PRAGMA_IDENT_SRC --#pragma ident "@(#)output_h.cpp 1.178 07/05/05 17:05:03 JVM" --#endif - /* - * Copyright 1998-2007 Sun Microsystems, Inc. All Rights Reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. -@@ -345,34 +342,34 @@ - - // Generate the format rule for condition codes - static void defineCCodeDump(FILE *fp, int i) { -- fprintf(fp, " if( _c%d == BoolTest::eq ) tty->print(\"eq\");\n",i); -- fprintf(fp, " else if( _c%d == BoolTest::ne ) tty->print(\"ne\");\n",i); -- fprintf(fp, " else if( _c%d == BoolTest::le ) tty->print(\"le\");\n",i); -- fprintf(fp, " else if( _c%d == BoolTest::ge ) tty->print(\"ge\");\n",i); -- fprintf(fp, " else if( _c%d == BoolTest::lt ) tty->print(\"lt\");\n",i); -- fprintf(fp, " else if( _c%d == BoolTest::gt ) tty->print(\"gt\");\n",i); -+ fprintf(fp, " if( _c%d == BoolTest::eq ) st->print(\"eq\");\n",i); -+ fprintf(fp, " else if( _c%d == BoolTest::ne ) st->print(\"ne\");\n",i); -+ fprintf(fp, " else if( _c%d == BoolTest::le ) st->print(\"le\");\n",i); -+ fprintf(fp, " else if( _c%d == BoolTest::ge ) st->print(\"ge\");\n",i); From doko at ubuntu.com Tue Nov 30 07:35:55 2010 From: doko at ubuntu.com (Matthias Klose) Date: Tue, 30 Nov 2010 16:35:55 +0100 Subject: [icedtea6] remove obsolete sparc patch Message-ID: <4CF519DB.3020608@ubuntu.com> This chunk can be removed, in the defs.make file it is preceded by # sparc ifneq (,$(filter $(ARCH), sparc sparc64)) ifeq ($(ARCH_DATA_MODEL), 64) ARCH_DATA_MODEL = 64 MAKE_ARGS += LP64=1 PLATFORM = linux-sparcv9 VM_PLATFORM = linux_sparcv9 else ARCH_DATA_MODEL = 32 PLATFORM = linux-sparc VM_PLATFORM = linux_sparc endif HS_ARCH = sparc endif which already cares about the settings. Matthias -------------- next part -------------- A non-text attachment was scrubbed... Name: sparc.diff Type: text/x-diff Size: 384 bytes Desc: not available Url : http://mail.openjdk.java.net/pipermail/distro-pkg-dev/attachments/20101130/db892a85/sparc.diff From ptisnovs at redhat.com Tue Nov 30 08:00:41 2010 From: ptisnovs at redhat.com (Pavel Tisnovsky) Date: Tue, 30 Nov 2010 17:00:41 +0100 Subject: Reviewer needed: fix for regression test tools/javac/generics/inference/6638712/T6638712a.java Message-ID: <4CF51FA9.1080601@redhat.com> Hi all, can anyone please review fix for regression test tools/javac/generics/inference/6638712/T6638712a.java. Mercurial export for IcedTea6 HEAD (1.10pre) is included in this mail as attachment. Brief description of the fix: This test is based on textual comparison of "raw" compiler error messages with pre-generated messages stored in .out files. These pre-generated messages were presumably prepared for source files which (in previous version) contained some copyright info at the beginning. This info (comments) was removed by this push to JDK7: changeset: 380:ed31953ca025 user: jjg date: Thu Aug 27 11:08:27 2009 -0700 summary: 6875336: some tests should use /nodynamiccopyright/ but the corresponding .out files were not updated (javac output also contains line and column number where error is detected and the line numbers were of course changed by removing licence comments). Cheers Pavel -------------- next part -------------- An embedded and charset-unspecified text was scrubbed... Name: hg_export Url: http://mail.openjdk.java.net/pipermail/distro-pkg-dev/attachments/20101130/a8a163c1/hg_export.ksh From asu at redhat.com Tue Nov 30 08:00:03 2010 From: asu at redhat.com (Andrew Su) Date: Tue, 30 Nov 2010 11:00:03 -0500 (EST) Subject: [RFC][icedtea-web]: Adding control panel to icedtea-web In-Reply-To: <1738146044.848511291132775127.JavaMail.root@zmail01.collab.prod.int.phx2.redhat.com> Message-ID: <612457092.848621291132803125.JavaMail.root@zmail01.collab.prod.int.phx2.redhat.com> Hello, The attached patch is to move the control panel into netx instead of having its own package. ChangeLog: * Makefile.am: (CONTROLPANEL_LAUNCHER_OBJECTS): Objects used to compile binary control panel. (all-local): Add $(NETX_DIR)/launcher/controlpanel/controlpanel. (install-exec-local): Install the control panel binary. (uninstall-local): Removes the compiled control panel binary. ($(NETX_DIR)/launcher/controlpanel/%.o): Create the launcher objects. ($(NETX_DIR)/launcher/controlpanel/controlpanel): Link the objects to make the launcher. * netx/net/sourceforge/jnlp/controlpanel/AboutPanel.java, * netx/net/sourceforge/jnlp/controlpanel/ComboItem.java, * netx/net/sourceforge/jnlp/controlpanel/ControlPanel.java, * netx/net/sourceforge/jnlp/controlpanel/DebuggingPanel.java, * netx/net/sourceforge/jnlp/controlpanel/DesktopShortcutPanel.java, * netx/net/sourceforge/jnlp/controlpanel/JREPanel.java, * netx/net/sourceforge/jnlp/controlpanel/NamedBorderPanel.java, * netx/net/sourceforge/jnlp/controlpanel/SecuritySettingsPanel.java, * netx/net/sourceforge/jnlp/controlpanel/TemporaryInternetFilesPanel.java, * netx/net/sourceforge/jnlp/controlpanel/network/AdvancedProxySettingsDialog.java, * netx/net/sourceforge/jnlp/controlpanel/network/AdvancedProxySettingsPane.java, * netx/net/sourceforge/jnlp/controlpanel/network/NetworkSettingsPanel.java,: New classes. All methods are new as well. * netx/net/sourceforge/jnlp/resources/Messages.properties: Added messages used by control panel. * netx/net/sourceforge/jnlp/security/viewer/CertificatePane.java: Changed to not display a close button if null parent frame. Questions? Comments? Concerns? --Andrew ----- "Andrew Su" wrote: > From: "Andrew Su" > To: distro-pkg-dev at openjdk.java.net > Sent: Monday, November 29, 2010 4:14:26 PM GMT -05:00 US/Canada Eastern > Subject: Re: [RFC][icedtea-web]: Adding control panel to icedtea-web > > Hello, > > Here is the updated patch for adding the control panel. If I missed > something let me know. > > Right now I've left netx/net/sourceforge/jnlp/security/viewer/* and > not > deleted them. > It is currently copied into org/classpath/icedtea/controlpanel/ but I > > was looking at javaws, which uses the viewer. > Our options are to either remove, the parameter "-viewer" for javaws > > (for now) then later re-place it back in... > or to leave netx/net/sourceforge/jnlp/security/viewer/* as it is. > > Opinions? > > * Makefile.am: > (CONTROLPANEL_DIR): Build directory for control panel. > (CONTROLPANEL_SRCDIR): Source directory for control panel. > (CONTROLPANEL_LAUNCHER_OBJECTS): Objects used to compile > binary > control panel. > (all-local): Add stamps/controlpanel-dist.stamp > stamps/controlpanel.stamp > $(CONTROLPANEL_DIR)/launcher/controlpanel. > (clean-local): Add clean-controlpanel. > (install-exec-local): Install the control panel jar file and > > control > panel binary. > (uninstall-local): Delete controlpanel.jar and controlpanel > binary > from installed location. > (controlpanel-source-files.txt): Get the list of source files > for > control panel. > (stamps/controlpanel.stamp): Compile the java files for > control > panel. > (stamps/controlpanel-dist.stamp): Depend on > stamps/controlpanel.stamp. > Create the jar file for control panel. > ($(CONTROLPANEL_DIR)/launcher/%.o): Create the launcher > objects. > ($(CONTROLPANEL_DIR)/launcher/controlpanel): Link the objects > > to make > the launcher. > (clean-controlpanel): Remove the compiled control panel. > (controlpanel): Calls stamps/controlpanel.stamp. > (controlpanel-dist): Calls stamps/controlpanel-dist.stamp. > (stamps/docs.stamp): Calls stamps/controlpanel-docs.stamp. > (clean-docs): Calls clean-controlpanel-docs. > (stamps/controlpanel-docs.stamp): Create the documentation > for > controlpanel. > (clean-controlpanel-docs): Remove the documentation > * > controlpanel/org/classpath/icedtea/controlpanel/AboutPanel.java, > * > controlpanel/org/classpath/icedtea/controlpanel/ComboItem.java, > * > controlpanel/org/classpath/icedtea/controlpanel/ControlPanel.java, > * > controlpanel/org/classpath/icedtea/controlpanel/DebuggingPanel.java, > * > controlpanel/org/classpath/icedtea/controlpanel/DesktopShortcutPanel.java, > * > controlpanel/org/classpath/icedtea/controlpanel/JREPanel.java, > * > controlpanel/org/classpath/icedtea/controlpanel/NamedBorderPanel.java, > * > controlpanel/org/classpath/icedtea/controlpanel/SecuritySettingsPanel.java, > * > controlpanel/org/classpath/icedtea/controlpanel/TemporaryInternetFilesPanel.java, > * > controlpanel/org/classpath/icedtea/controlpanel/network/AdvancedProxySettingsDialog.java, > * > controlpanel/org/classpath/icedtea/controlpanel/network/AdvancedProxySettingsPane.java, > * > controlpanel/org/classpath/icedtea/controlpanel/network/NetworkSettingsPanel.java, > * > controlpanel/org/classpath/icedtea/controlpanel/security/viewer/CertificatePane.java, > * > controlpanel/org/classpath/icedtea/controlpanel/security/viewer/CertificateViewer.java: > New classes. All methods are new as well. > * > controlpanel/org/classpath/icedtea/controlpanel/translator/Translator.java: > Copied over from > netx/net/sourceforge/jnlp/runtime/Translator.java and changed > package. > * netx/net/sourceforge/jnlp/resources/Messages.properties: > Added > messages for control panel. > > -- Snip -- -------------- next part -------------- A non-text attachment was scrubbed... Name: 20101130_controlpanel.patch Type: text/x-patch Size: 88709 bytes Desc: not available Url : http://mail.openjdk.java.net/pipermail/distro-pkg-dev/attachments/20101130/a8bb8246/20101130_controlpanel.patch From ahughes at redhat.com Tue Nov 30 08:44:33 2010 From: ahughes at redhat.com (Dr Andrew John Hughes) Date: Tue, 30 Nov 2010 16:44:33 +0000 Subject: Reviewer needed: fix for regression test tools/javac/generics/inference/6638712/T6638712a.java In-Reply-To: <4CF51FA9.1080601@redhat.com> References: <4CF51FA9.1080601@redhat.com> Message-ID: <20101130164433.GJ11042@rivendell.middle-earth.co.uk> On 17:00 Tue 30 Nov , Pavel Tisnovsky wrote: > Hi all, > > can anyone please review fix for regression test > tools/javac/generics/inference/6638712/T6638712a.java. Mercurial > export for IcedTea6 HEAD (1.10pre) is included in this mail as attachment. > > > Brief description of the fix: > > This test is based on textual comparison of "raw" compiler error > messages with pre-generated messages stored in .out files. These > pre-generated messages were presumably prepared for source files > which (in previous version) contained some copyright info at the > beginning. This info (comments) was removed by this push to JDK7: > > changeset: 380:ed31953ca025 > user: jjg > date: Thu Aug 27 11:08:27 2009 -0700 > summary: 6875336: some tests should use /nodynamiccopyright/ > > but the corresponding .out files were not updated (javac output also > contains line and column number where error is detected and the line > numbers were of course changed by removing licence comments). > > > Cheers > Pavel Thanks for tracking this one down. The diff is a bit hard for me to read, but if it fixes the error message test output so the tests now pass I'm happy for it to be committed to HEAD. > # HG changeset patch > # User ptisnovs > # Date 1291132200 -3600 > # Node ID a6b2ba2d971d16f1003bf23d87443568bc32dccf > # Parent d66a310d5c9464173357d284c930b9cc205868fe > Regression test fix - compilation results are checked against correct > .out files. > > diff -r d66a310d5c94 -r a6b2ba2d971d ChangeLog > --- a/ChangeLog Mon Nov 29 17:15:17 2010 +0100 > +++ b/ChangeLog Tue Nov 30 16:50:00 2010 +0100 > @@ -1,3 +1,11 @@ > +2010-11-30 Pavel Tisnovsky > + > + * Makefile.am: > + (ICEDTEA_PATCHES): Updated. > + * patches/jtreg-T6638712-fix.patch: > + Regression test fix - compilation results are checked against > + correct .out files. > + > 2010-11-29 Pavel Tisnovsky > > * Makefile.am: > diff -r d66a310d5c94 -r a6b2ba2d971d Makefile.am > --- a/Makefile.am Mon Nov 29 17:15:17 2010 +0100 > +++ b/Makefile.am Tue Nov 30 16:50:00 2010 +0100 > @@ -301,7 +301,8 @@ > patches/openjdk/6876282-bigdecimal_divide.patch \ > patches/f14-fonts.patch \ > patches/jtreg-DeleteFont.patch \ > - patches/jtreg-WindowWithWarningTest.patch > + patches/jtreg-WindowWithWarningTest.patch \ > + patches/jtreg-T6638712-fix.patch > > if WITH_ALT_HSBUILD > ICEDTEA_PATCHES += \ > diff -r d66a310d5c94 -r a6b2ba2d971d patches/jtreg-T6638712-fix.patch > --- /dev/null Thu Jan 01 00:00:00 1970 +0000 > +++ b/patches/jtreg-T6638712-fix.patch Tue Nov 30 16:50:00 2010 +0100 > @@ -0,0 +1,30 @@ > +--- openjdk-old/langtools/test/tools/javac/generics/inference/6638712/T6638712a.out 2010-11-30 14:44:29.000000000 +0100 > ++++ openjdk/langtools/test/tools/javac/generics/inference/6638712/T6638712a.out 2010-11-30 15:27:57.000000000 +0100 > +@@ -1,2 +1,2 @@ > +-T6638712a.java:39:41: compiler.err.invalid.inferred.types: T, (- compiler.misc.inferred.do.not.conform.to.params: java.lang.Iterable>, java.util.List>) > ++T6638712a.java:16:41: compiler.err.invalid.inferred.types: T, (- compiler.misc.inferred.do.not.conform.to.params: java.lang.Iterable>, java.util.List>) > + 1 error > +--- openjdk-old/langtools/test/tools/javac/generics/inference/6638712/T6638712b.out 2010-11-30 14:44:29.000000000 +0100 > ++++ openjdk/langtools/test/tools/javac/generics/inference/6638712/T6638712b.out 2010-11-30 15:27:58.000000000 +0100 > +@@ -1,2 +1,2 @@ > +-T6638712b.java:37:21: compiler.err.prob.found.req: (- compiler.misc.incompatible.types.1: (- compiler.misc.no.conforming.instance.exists: T, T, java.lang.String)), T, java.lang.String > ++T6638712b.java:14:21: compiler.err.prob.found.req: (- compiler.misc.incompatible.types.1: (- compiler.misc.no.conforming.instance.exists: T, T, java.lang.String)), T, java.lang.String > + 1 error > +--- openjdk-old/langtools/test/tools/javac/generics/inference/6638712/T6638712c.out 2010-11-30 14:44:29.000000000 +0100 > ++++ openjdk/langtools/test/tools/javac/generics/inference/6638712/T6638712c.out 2010-11-30 15:27:59.000000000 +0100 > +@@ -1,2 +1,2 @@ > +-T6638712c.java:39:9: compiler.err.cant.apply.symbol: sort(T[],java.util.Comparator), T6638712c, , java.lang.Enum[],java.util.Comparator>, null > ++T6638712c.java:16:9: compiler.err.cant.apply.symbol: sort(T[],java.util.Comparator), T6638712c, , java.lang.Enum[],java.util.Comparator>, null > + 1 error > +--- openjdk-old/langtools/test/tools/javac/generics/inference/6638712/T6638712d.out 2010-11-30 14:44:29.000000000 +0100 > ++++ openjdk/langtools/test/tools/javac/generics/inference/6638712/T6638712d.out 2010-11-30 15:28:01.000000000 +0100 > +@@ -1,2 +1,2 @@ > +-T6638712d.java:39:9: compiler.err.cant.apply.symbol: m(U,java.util.List>), T6638712d, , int,java.util.List>, null > ++T6638712d.java:16:9: compiler.err.cant.apply.symbol: m(U,java.util.List>), T6638712d, , int,java.util.List>, null > + 1 error > +--- openjdk-old/langtools/test/tools/javac/generics/inference/6638712/T6638712e.out 2010-11-30 14:44:29.000000000 +0100 > ++++ openjdk/langtools/test/tools/javac/generics/inference/6638712/T6638712e.out 2010-11-30 15:28:02.000000000 +0100 > +@@ -1,2 +1,2 @@ > +-T6638712e.java:40:27: compiler.err.prob.found.req: (- compiler.misc.incompatible.types.1: (- compiler.misc.no.conforming.instance.exists: X, T6638712e.Foo, T6638712e.Foo)), T6638712e.Foo, T6638712e.Foo > ++T6638712e.java:17:27: compiler.err.prob.found.req: (- compiler.misc.incompatible.types.1: (- compiler.misc.no.conforming.instance.exists: X, T6638712e.Foo, T6638712e.Foo)), T6638712e.Foo, T6638712e.Foo > + 1 error -- Andrew :) Free Java Software Engineer Red Hat, Inc. (http://www.redhat.com) Support Free Java! Contribute to GNU Classpath and the OpenJDK http://www.gnu.org/software/classpath http://openjdk.java.net PGP Key: 94EFD9D8 (http://subkeys.pgp.net) Fingerprint = F8EF F1EA 401E 2E60 15FA 7927 142C 2591 94EF D9D8 From andrew at icedtea.classpath.org Tue Nov 30 08:53:23 2010 From: andrew at icedtea.classpath.org (andrew at icedtea.classpath.org) Date: Tue, 30 Nov 2010 16:53:23 +0000 Subject: /hg/icedtea-web: Make distcheck work. Message-ID: changeset b1409d2cbd86 in /hg/icedtea-web details: http://icedtea.classpath.org/hg/icedtea-web?cmd=changeset;node=b1409d2cbd86 author: Andrew John Hughes date: Tue Nov 30 16:53:16 2010 +0000 Make distcheck work. 2010-11-26 Andrew John Hughes Make distcheck work. * Makefile.am: (EXTRA_DIST): Use relative paths for netx and the plugin. (clean-local): Remove empty stamps directory. (install-exec-local): Use install to install programs and data with the correct permissions. (install- data-local): Likewise. (uninstall-local): Remove documentation. (netx): Use ${INSTALL_DATA} to add resources so that read-only files aren't copied. (extra- files): Likewise. ($(NETX_DIR)/launcher/javaws): Don't create empty launcher directory. (clean-docs): Remove empty docs directory. (clean-bootstrap-directory): Remove empty bootstrap directory. diffstat: 2 files changed, 64 insertions(+), 18 deletions(-) ChangeLog | 20 +++++++++++++++++++ Makefile.am | 62 +++++++++++++++++++++++++++++++++++++++++------------------ diffs (159 lines): diff -r c267c4e2b844 -r b1409d2cbd86 ChangeLog --- a/ChangeLog Mon Nov 29 10:19:17 2010 -0500 +++ b/ChangeLog Tue Nov 30 16:53:16 2010 +0000 @@ -1,3 +1,23 @@ 2010-11-29 Deepak Bhole + + Make distcheck work. + * Makefile.am: + (EXTRA_DIST): Use relative paths for netx + and the plugin. + (clean-local): Remove empty stamps directory. + (install-exec-local): Use install to install + programs and data with the correct permissions. + (install-data-local): Likewise. + (uninstall-local): Remove documentation. + (netx): Use ${INSTALL_DATA} to add resources so + that read-only files aren't copied. + (extra-files): Likewise. + ($(NETX_DIR)/launcher/javaws): Don't create empty launcher + directory. + (clean-docs): Remove empty docs directory. + (clean-bootstrap-directory): Remove empty bootstrap + directory. + 2010-11-29 Deepak Bhole * plugin/icedteanp/java/sun/applet/PluginAppletViewer.java diff -r c267c4e2b844 -r b1409d2cbd86 Makefile.am --- a/Makefile.am Mon Nov 29 10:19:17 2010 -0500 +++ b/Makefile.am Tue Nov 30 16:53:16 2010 +0000 @@ -83,7 +83,7 @@ LAUNCHER_LINK = -o $@ -pthread -Xlinker -Wl,\$$ORIGIN/../jre/lib/$(INSTALL_ARCH_DIR)/jli $(X11_CFLAGS) $(X11_LIBS) -ljli -ldl -lz PLUGIN_VERSION = IcedTea $(PACKAGE_VERSION)$(ICEDTEA_REV)$(ICEDTEA_PKG) -EXTRA_DIST = $(NETX_SRCDIR) $(abs_top_srcdir)/plugin javaws.png javaws.desktop.in extra launcher +EXTRA_DIST = $(top_srcdir)/netx $(top_srcdir)/plugin javaws.png javaws.desktop.in extra launcher # Top-Level Targets # ================= @@ -93,31 +93,41 @@ all-local: stamps/netx-dist.stamp extra- clean-local: clean-netx clean-plugin clean-liveconnect clean-extra clean-bootstrap-directory \ clean-native-ecj clean-desktop-files clean-docs + if [ -e stamps ] ; then \ + rmdir stamps ; \ + fi .PHONY: clean-IcedTeaPlugin clean-add-netx clean-add-netx-debug clean-add-plugin clean-add-plugin-debug \ clean-bootstrap-directory clean-native-ecj clean-desktop-files clean-netx-docs clean-docs clean-plugin-docs install-exec-local: - mkdir -p $(DESTDIR)$(bindir) - mkdir -p $(DESTDIR)$(prefix)/jre/lib/$(INSTALL_ARCH_DIR) + ${mkinstalldirs} $(DESTDIR)$(bindir) $(DESTDIR)$(prefix)/jre/lib/$(INSTALL_ARCH_DIR) if ENABLE_PLUGIN - cp -pPRf $(PLUGIN_DIR)/IcedTeaPlugin.so $(DESTDIR)$(prefix)/jre/lib/$(INSTALL_ARCH_DIR)/ - cp -pPRf $(PLUGIN_DIR)/launcher/pluginappletviewer $(DESTDIR)$(bindir) - cp -pPRf $(abs_top_builddir)/liveconnect/lib/classes.jar $(DESTDIR)$(prefix)/jre/lib/plugin.jar + ${INSTALL_PROGRAM} $(PLUGIN_DIR)/IcedTeaPlugin.so $(DESTDIR)$(prefix)/jre/lib/$(INSTALL_ARCH_DIR)/ + ${INSTALL_PROGRAM} $(PLUGIN_DIR)/launcher/pluginappletviewer $(DESTDIR)$(bindir) + ${INSTALL_PROGRAM} $(abs_top_builddir)/liveconnect/lib/classes.jar $(DESTDIR)$(prefix)/jre/lib/plugin.jar endif - cp -pPRf $(NETX_DIR)/lib/classes.jar $(DESTDIR)$(prefix)/jre/lib/netx.jar - cp -pPRf $(NETX_DIR)/launcher/javaws $(DESTDIR)$(bindir) - cp extra-lib/about.jar $(DESTDIR)$(prefix)/jre/lib + ${INSTALL_DATA} $(NETX_DIR)/lib/classes.jar $(DESTDIR)$(prefix)/jre/lib/netx.jar + ${INSTALL_PROGRAM} $(NETX_DIR)/launcher/javaws $(DESTDIR)$(bindir) + ${INSTALL_DATA} extra-lib/about.jar $(DESTDIR)$(prefix)/jre/lib install-data-local: - mkdir -p $(DESTDIR)$(prefix)/man/man1 - cp $(NETX_SRCDIR)/javaws.1 $(DESTDIR)$(prefix)/man/man1 - cp $(NETX_RESOURCE_DIR)/about.jnlp $(DESTDIR)$(prefix)/jre/lib + ${mkinstalldirs} -d $(DESTDIR)$(prefix)/man/man1 + ${INSTALL_DATA} $(NETX_SRCDIR)/javaws.1 $(DESTDIR)$(prefix)/man/man1 + ${INSTALL_DATA} $(NETX_RESOURCE_DIR)/about.jnlp $(DESTDIR)$(prefix)/jre/lib if ENABLE_DOCS - mkdir -p $(DESTDIR)$(htmldir) - cp -pPRf ${abs_top_builddir}/docs/netx $(DESTDIR)$(htmldir) + ${mkinstalldirs} $(DESTDIR)$(htmldir) + (cd ${abs_top_builddir}/docs/netx; \ + for files in $$(find . -type f); \ + do \ + ${INSTALL_DATA} -D $${files} $(DESTDIR)$(htmldir)/netx/$${files}; \ + done) if ENABLE_PLUGIN - cp -pPRf ${abs_top_builddir}/docs/plugin $(DESTDIR)$(htmldir) + (cd ${abs_top_builddir}/docs/plugin; \ + for files in $$(find . -type f); \ + do \ + ${INSTALL_DATA} -D $${files} $(DESTDIR)$(htmldir)/plugin/$${files}; \ + done) endif endif @@ -130,6 +140,7 @@ uninstall-local: rm -f $(DESTDIR)$(prefix)/man/man1/javaws.1 rm -f $(DESTDIR)$(bindir)/pluginappletviewer rm -f $(DESTDIR)$(bindir)/javaws + rm -rf $(DESTDIR)$(htmldir) # Plugin @@ -250,7 +261,12 @@ stamps/netx.stamp: netx-source-files.txt -sourcepath $(NETX_SRCDIR) \ -bootclasspath $(RUNTIME) \ @netx-source-files.txt - cp -r $(NETX_RESOURCE_DIR) $(NETX_DIR)/net/sourceforge/jnlp + (cd $(NETX_RESOURCE_DIR); \ + for files in $$(find . -type f); \ + do \ + ${INSTALL_DATA} -D $${files} \ + $(NETX_DIR)/net/sourceforge/jnlp/resources/$${files}; \ + done) mkdir -p stamps touch $@ @@ -285,7 +301,12 @@ stamps/extra-class-files.stamp: extra-so $(BOOT_DIR)/bin/javac $(IT_JAVACFLAGS) -d extra-lib \ -sourcepath $(abs_top_srcdir)/extra -cp netx.build \ -bootclasspath $(RUNTIME) @extra-source-files.txt - cp -r $(NETX_EXTRA_DIR) extra-lib/net/sourceforge/jnlp/about + (cd $(NETX_EXTRA_DIR); \ + for files in $$(find . -type f); \ + do \ + ${INSTALL_DATA} -D $${files} \ + ${abs_top_builddir}/extra-lib/net/sourceforge/jnlp/about/resources/$${files}; \ + done) mkdir -p stamps touch $@ @@ -303,7 +324,6 @@ extra-lib/about.jar: stamps/extra-class- -c -o $@ $< $(NETX_DIR)/launcher/javaws: $(NETX_LAUNCHER_OBJECTS) - mkdir -p launcher $(CC) $(NETX_LAUNCHER_OBJECTS) $(LAUNCHER_LINK) javaws.desktop: javaws.desktop.in @@ -315,6 +335,9 @@ stamps/docs.stamp: stamps/netx-docs.stam touch stamps/docs.stamp clean-docs: clean-netx-docs clean-plugin-docs + if [ -e ${abs_top_builddir}/docs ] ; then \ + rmdir ${abs_top_builddir}/docs ; \ + fi rm -f stamps/docs.stamp stamps/netx-docs.stamp: stamps/bootstrap-directory.stamp @@ -416,6 +439,9 @@ stamps/bootstrap-directory.stamp: stamps clean-bootstrap-directory: rm -rf $(BOOT_DIR) + if [ -e ${abs_top_builddir}/bootstrap ] ; then \ + rmdir ${abs_top_builddir}/bootstrap ; \ + fi rm -f stamps/bootstrap-directory.stamp # Target Aliases From ahughes at redhat.com Tue Nov 30 08:59:40 2010 From: ahughes at redhat.com (Dr Andrew John Hughes) Date: Tue, 30 Nov 2010 16:59:40 +0000 Subject: [RFC][icedtea-web]: Adding control panel to icedtea-web In-Reply-To: <612457092.848621291132803125.JavaMail.root@zmail01.collab.prod.int.phx2.redhat.com> References: <1738146044.848511291132775127.JavaMail.root@zmail01.collab.prod.int.phx2.redhat.com> <612457092.848621291132803125.JavaMail.root@zmail01.collab.prod.int.phx2.redhat.com> Message-ID: <20101130165940.GL11042@rivendell.middle-earth.co.uk> On 11:00 Tue 30 Nov , Andrew Su wrote: > Hello, > > The attached patch is to move the control panel into netx instead of having its own package. > > ChangeLog: > * Makefile.am: > (CONTROLPANEL_LAUNCHER_OBJECTS): Objects used to compile binary > control panel. > (all-local): Add $(NETX_DIR)/launcher/controlpanel/controlpanel. > (install-exec-local): Install the control panel binary. > (uninstall-local): Removes the compiled control panel binary. > ($(NETX_DIR)/launcher/controlpanel/%.o): Create the launcher objects. > ($(NETX_DIR)/launcher/controlpanel/controlpanel): Link the objects to > make the launcher. > * netx/net/sourceforge/jnlp/controlpanel/AboutPanel.java, > * netx/net/sourceforge/jnlp/controlpanel/ComboItem.java, > * netx/net/sourceforge/jnlp/controlpanel/ControlPanel.java, > * netx/net/sourceforge/jnlp/controlpanel/DebuggingPanel.java, > * netx/net/sourceforge/jnlp/controlpanel/DesktopShortcutPanel.java, > * netx/net/sourceforge/jnlp/controlpanel/JREPanel.java, > * netx/net/sourceforge/jnlp/controlpanel/NamedBorderPanel.java, > * netx/net/sourceforge/jnlp/controlpanel/SecuritySettingsPanel.java, > * netx/net/sourceforge/jnlp/controlpanel/TemporaryInternetFilesPanel.java, > * netx/net/sourceforge/jnlp/controlpanel/network/AdvancedProxySettingsDialog.java, > * netx/net/sourceforge/jnlp/controlpanel/network/AdvancedProxySettingsPane.java, > * netx/net/sourceforge/jnlp/controlpanel/network/NetworkSettingsPanel.java,: > New classes. All methods are new as well. > * netx/net/sourceforge/jnlp/resources/Messages.properties: Added > messages used by control panel. > * netx/net/sourceforge/jnlp/security/viewer/CertificatePane.java: > Changed to not display a close button if null parent frame. > > Questions? Comments? Concerns? > I haven't looked at the code but good to see it back in a sensible place. I presume it compiles? As to the Makefile changes, you need to resync against current HEAD. The following updates are needed: * $(NETX_DIR)/launcher/controlpanel/controlpanel creates a useless launcher directory * The installation now uses $(INSTALL) Or in other words, make sure that make distcheck still works and you haven't just broken it. I don't think controlpanel is a very clear name for the binary. itweb-settings? Something that makes it clear what it controls. It's going to be quite confusing if this ends up on the main path as 'controlpanel'. Also in your Javadoc comments, use '(' and ')' for e-mail addresses as '<' and '>' are used for HTML tags. > --Andrew > > > > ----- "Andrew Su" wrote: > > > From: "Andrew Su" > > To: distro-pkg-dev at openjdk.java.net > > Sent: Monday, November 29, 2010 4:14:26 PM GMT -05:00 US/Canada Eastern > > Subject: Re: [RFC][icedtea-web]: Adding control panel to icedtea-web > > > > Hello, > > > > Here is the updated patch for adding the control panel. If I missed > > something let me know. > > > > Right now I've left netx/net/sourceforge/jnlp/security/viewer/* and > > not > > deleted them. > > It is currently copied into org/classpath/icedtea/controlpanel/ but I > > > > was looking at javaws, which uses the viewer. > > Our options are to either remove, the parameter "-viewer" for javaws > > > > (for now) then later re-place it back in... > > or to leave netx/net/sourceforge/jnlp/security/viewer/* as it is. > > > > Opinions? > > > > * Makefile.am: > > (CONTROLPANEL_DIR): Build directory for control panel. > > (CONTROLPANEL_SRCDIR): Source directory for control panel. > > (CONTROLPANEL_LAUNCHER_OBJECTS): Objects used to compile > > binary > > control panel. > > (all-local): Add stamps/controlpanel-dist.stamp > > stamps/controlpanel.stamp > > $(CONTROLPANEL_DIR)/launcher/controlpanel. > > (clean-local): Add clean-controlpanel. > > (install-exec-local): Install the control panel jar file and > > > > control > > panel binary. > > (uninstall-local): Delete controlpanel.jar and controlpanel > > binary > > from installed location. > > (controlpanel-source-files.txt): Get the list of source files > > for > > control panel. > > (stamps/controlpanel.stamp): Compile the java files for > > control > > panel. > > (stamps/controlpanel-dist.stamp): Depend on > > stamps/controlpanel.stamp. > > Create the jar file for control panel. > > ($(CONTROLPANEL_DIR)/launcher/%.o): Create the launcher > > objects. > > ($(CONTROLPANEL_DIR)/launcher/controlpanel): Link the objects > > > > to make > > the launcher. > > (clean-controlpanel): Remove the compiled control panel. > > (controlpanel): Calls stamps/controlpanel.stamp. > > (controlpanel-dist): Calls stamps/controlpanel-dist.stamp. > > (stamps/docs.stamp): Calls stamps/controlpanel-docs.stamp. > > (clean-docs): Calls clean-controlpanel-docs. > > (stamps/controlpanel-docs.stamp): Create the documentation > > for > > controlpanel. > > (clean-controlpanel-docs): Remove the documentation > > * > > controlpanel/org/classpath/icedtea/controlpanel/AboutPanel.java, > > * > > controlpanel/org/classpath/icedtea/controlpanel/ComboItem.java, > > * > > controlpanel/org/classpath/icedtea/controlpanel/ControlPanel.java, > > * > > controlpanel/org/classpath/icedtea/controlpanel/DebuggingPanel.java, > > * > > controlpanel/org/classpath/icedtea/controlpanel/DesktopShortcutPanel.java, > > * > > controlpanel/org/classpath/icedtea/controlpanel/JREPanel.java, > > * > > controlpanel/org/classpath/icedtea/controlpanel/NamedBorderPanel.java, > > * > > controlpanel/org/classpath/icedtea/controlpanel/SecuritySettingsPanel.java, > > * > > controlpanel/org/classpath/icedtea/controlpanel/TemporaryInternetFilesPanel.java, > > * > > controlpanel/org/classpath/icedtea/controlpanel/network/AdvancedProxySettingsDialog.java, > > * > > controlpanel/org/classpath/icedtea/controlpanel/network/AdvancedProxySettingsPane.java, > > * > > controlpanel/org/classpath/icedtea/controlpanel/network/NetworkSettingsPanel.java, > > * > > controlpanel/org/classpath/icedtea/controlpanel/security/viewer/CertificatePane.java, > > * > > controlpanel/org/classpath/icedtea/controlpanel/security/viewer/CertificateViewer.java: > > New classes. All methods are new as well. > > * > > controlpanel/org/classpath/icedtea/controlpanel/translator/Translator.java: > > Copied over from > > netx/net/sourceforge/jnlp/runtime/Translator.java and changed > > package. > > * netx/net/sourceforge/jnlp/resources/Messages.properties: > > Added > > messages for control panel. > > > > > -- Snip -- > diff -r c267c4e2b844 Makefile.am > --- a/Makefile.am Mon Nov 29 10:19:17 2010 -0500 > +++ b/Makefile.am Tue Nov 30 10:59:29 2010 -0500 > @@ -29,7 +29,7 @@ > net.sourceforge.jnlp.cache net.sourceforge.jnlp.event \ > net.sourceforge.jnlp.security net.sourceforge.jnlp.security.viewer \ > net.sourceforge.jnlp.services net.sourceforge.jnlp.tools \ > - net.sourceforge.jnlp.util > + net.sourceforge.jnlp.util net.sourceforge.jnlp.controlpanel > > # Conditional defintions > if ENABLE_PLUGIN > @@ -74,6 +74,7 @@ > LAUNCHER_OBJECTS = java.o java_md.o splashscreen_stubs.o > PLUGIN_LAUNCHER_OBJECTS = $(addprefix $(PLUGIN_DIR)/launcher/,$(LAUNCHER_OBJECTS)) > NETX_LAUNCHER_OBJECTS = $(addprefix $(NETX_DIR)/launcher/,$(LAUNCHER_OBJECTS)) > +CONTROLPANEL_LAUNCHER_OBJECTS = $(addprefix $(NETX_DIR)/launcher/controlpanel/,$(LAUNCHER_OBJECTS)) > LAUNCHER_FLAGS = -O2 -fno-strict-aliasing -fPIC -pthread -W -Wall -Wno-unused -Wno-parentheses -pipe -fno-omit-frame-pointer \ > -g -D_LARGEFILE64_SOURCE -D_GNU_SOURCE -D_REENTRANT -DLAUNCHER_NAME='"java"' -I$(LAUNCHER_SRCDIR) \ > -DJDK_MAJOR_VERSION='"1"' -DJDK_MINOR_VERSION='"6"' -DLIBARCHNAME='"$(JRE_ARCH_DIR)"' > @@ -89,7 +90,7 @@ > # ================= > > all-local: stamps/netx-dist.stamp extra-lib/about.jar stamps/plugin.stamp $(NETX_DIR)/launcher/javaws \ > - javaws.desktop stamps/docs.stamp > + $(NETX_DIR)/launcher/controlpanel/controlpanel javaws.desktop stamps/docs.stamp > > clean-local: clean-netx clean-plugin clean-liveconnect clean-extra clean-bootstrap-directory \ > clean-native-ecj clean-desktop-files clean-docs > @@ -107,6 +108,7 @@ > endif > cp -pPRf $(NETX_DIR)/lib/classes.jar $(DESTDIR)$(prefix)/jre/lib/netx.jar > cp -pPRf $(NETX_DIR)/launcher/javaws $(DESTDIR)$(bindir) > + cp -pPRf $(NETX_DIR)/launcher/controlpanel/controlpanel $(DESTDIR)$(bindir) > cp extra-lib/about.jar $(DESTDIR)$(prefix)/jre/lib > > install-data-local: > @@ -130,6 +132,7 @@ > rm -f $(DESTDIR)$(prefix)/man/man1/javaws.1 > rm -f $(DESTDIR)$(bindir)/pluginappletviewer > rm -f $(DESTDIR)$(bindir)/javaws > + rm -f $(DESTDIR)$(bindir)/controlpanel > > # Plugin > > @@ -302,10 +305,19 @@ > $(CC) $(LAUNCHER_FLAGS) -DJAVA_ARGS='{ "-J-ms8m", "net.sourceforge.jnlp.runtime.Boot", }' -DPROGNAME='"javaws"' \ > -c -o $@ $< > > +$(NETX_DIR)/launcher/controlpanel/%.o: $(LAUNCHER_SRCDIR)/%.c > + mkdir -p $(NETX_DIR)/launcher/controlpanel && \ > + $(CC) $(LAUNCHER_FLAGS) -DJAVA_ARGS='{ "-J-ms8m", "net.sourceforge.jnlp.controlpanel.ControlPanel", }' -DPROGNAME='"controlpanel"' \ > + -c -o $@ $< > + > $(NETX_DIR)/launcher/javaws: $(NETX_LAUNCHER_OBJECTS) > mkdir -p launcher > $(CC) $(NETX_LAUNCHER_OBJECTS) $(LAUNCHER_LINK) > > +$(NETX_DIR)/launcher/controlpanel/controlpanel: $(CONTROLPANEL_LAUNCHER_OBJECTS) > + mkdir -p launcher > + $(CC) $(CONTROLPANEL_LAUNCHER_OBJECTS) $(LAUNCHER_LINK) > + > javaws.desktop: javaws.desktop.in > sed "s#PATH_TO_JAVAWS#$(DESTDIR)$(bindir)/javaws#" < $(srcdir)/javaws.desktop.in > javaws.desktop > > diff -r c267c4e2b844 netx/net/sourceforge/jnlp/controlpanel/AboutPanel.java > --- /dev/null Thu Jan 01 00:00:00 1970 +0000 > +++ b/netx/net/sourceforge/jnlp/controlpanel/AboutPanel.java Tue Nov 30 10:59:29 2010 -0500 > @@ -0,0 +1,64 @@ > +/* AboutPanel.java -- Display information about the control panel and icedtea-web. > +Copyright (C) 2010 Red Hat > + > +This program is free software; you can redistribute it and/or modify > +it under the terms of the GNU General Public License as published by > +the Free Software Foundation; either version 2 of the License, or > +(at your option) any later version. > + > +This program is distributed in the hope that it will be useful, but > +WITHOUT ANY WARRANTY; without even the implied warranty of > +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU > +General Public License for more details. > + > +You should have received a copy of the GNU General Public License > +along with this program; if not, write to the Free Software > +Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA > + */ > + > +package net.sourceforge.jnlp.controlpanel; > + > +import java.awt.Component; > +import java.awt.Dimension; > +import java.awt.GridBagConstraints; > +import java.awt.GridBagLayout; > + > +import javax.swing.Box; > +import javax.swing.JLabel; > + > +import net.sourceforge.jnlp.runtime.Translator; > + > +/** > + * This class provides a GUI interface which shows some basic information on > + * this project. > + * > + * @author Andrew Su > + * > + */ > + at SuppressWarnings("serial") > +public class AboutPanel extends NamedBorderPanel { > + > + public AboutPanel() { > + super(Translator.R("CPHeadAbout"), new GridBagLayout()); > + GridBagConstraints c = new GridBagConstraints(); > + > + JLabel logo = new JLabel(); > + JLabel aboutLabel = new JLabel("" + Translator.R("CPAboutInfo") + ""); > + > + c.fill = GridBagConstraints.BOTH; > + c.gridy = 0; > + c.gridx = 0; > + c.weighty = 0; > + c.weightx = 0; > + add(logo, c); > + c.gridx = 1; > + c.weightx = 1; > + add(aboutLabel, c); > + > + /* Keep all the elements at the top of the panel (Extra padding) */ > + Component filler = Box.createRigidArea(new Dimension(1, 1)); > + c.weighty = 1; > + c.gridy++; > + add(filler, c); > + } > +} > diff -r c267c4e2b844 netx/net/sourceforge/jnlp/controlpanel/AdvancedProxySettingsDialog.java > --- /dev/null Thu Jan 01 00:00:00 1970 +0000 > +++ b/netx/net/sourceforge/jnlp/controlpanel/AdvancedProxySettingsDialog.java Tue Nov 30 10:59:29 2010 -0500 > @@ -0,0 +1,141 @@ > +/* AdvancedProxySettingsDialog.java -- Display the dialog for modifying proxy settings. > +Copyright (C) 2010 Red Hat > + > +This program is free software; you can redistribute it and/or modify > +it under the terms of the GNU General Public License as published by > +the Free Software Foundation; either version 2 of the License, or > +(at your option) any later version. > + > +This program is distributed in the hope that it will be useful, but > +WITHOUT ANY WARRANTY; without even the implied warranty of > +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU > +General Public License for more details. > + > +You should have received a copy of the GNU General Public License > +along with this program; if not, write to the Free Software > +Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA > + */ > + > +package net.sourceforge.jnlp.controlpanel; > + > +import java.awt.Container; > +import java.awt.Dimension; > +import java.awt.Frame; > +import java.awt.GridBagConstraints; > +import java.awt.GridBagLayout; > +import java.awt.Toolkit; > +import java.awt.event.WindowAdapter; > +import java.awt.event.WindowEvent; > + > +import javax.swing.JDialog; > +import javax.swing.UIManager; > + > +import net.sourceforge.jnlp.runtime.DeploymentConfiguration; > +import net.sourceforge.jnlp.runtime.Translator; > + > +/** > + * This dialog provides a means for user to edit more of the proxy settings. > + * > + * @author Andrew Su > + * > + */ > + at SuppressWarnings("serial") > +public class AdvancedProxySettingsDialog extends JDialog { > + > + private boolean initialized = false; > + private static final String dialogTitle = Translator.R("APSDialogTitle"); > + private DeploymentConfiguration config; // Configuration file which contains all the settings. > + > + AdvancedProxySettingsPane topPanel; > + > + public AdvancedProxySettingsDialog(DeploymentConfiguration config) { > + super((Frame) null, dialogTitle, true); // Don't need a parent. > + this.config = config; > + > + /* Prepare for adding components to dialog box */ > + Container contentPane = getContentPane(); > + contentPane.setLayout(new GridBagLayout()); > + setMinimumSize(new Dimension(456, 404)); > + setPreferredSize(new Dimension(456, 404)); > + > + GridBagConstraints c = new GridBagConstraints(); > + c.fill = GridBagConstraints.BOTH; > + c.weightx = 1; > + c.weighty = 1; > + c.gridx = 0; > + c.gridy = 0; > + topPanel = new AdvancedProxySettingsPane(this, this.config); > + contentPane.add(topPanel, c); > + > + pack(); > + > + /* Set focus to default button when first activated */ > + WindowAdapter adapter = new WindowAdapter() { > + private boolean gotFocus = false; > + > + public void windowGainedFocus(WindowEvent we) { > + // Once window gets focus, set initial focus > + if (!gotFocus) { > + topPanel.focusOnDefaultButton(); > + gotFocus = true; > + } > + } > + }; > + addWindowFocusListener(adapter); > + > + initialized = true; > + } > + > + /** > + * Check whether the dialog has finished being created. > + * > + * @return True if dialog is ready to be displayed. > + */ > + public boolean isInitialized() { > + return initialized; > + } > + > + /** > + * Center the dialog box. > + */ > + private void centerDialog() { > + Dimension screen = Toolkit.getDefaultToolkit().getScreenSize(); > + Dimension dialogSize = getSize(); > + > + setLocation((screen.width - dialogSize.width) / 2, (screen.height - dialogSize.height) / 2); > + } > + > + /** > + * Display the Proxy Settings Dialog. > + * > + * @param config > + * A loaded DeploymentConfiguration file. > + * @throws Exception > + */ > + public static void showAdvancedProxySettingsDialog(DeploymentConfiguration config) throws Exception { > + setSystemLookAndFeel(); > + > + AdvancedProxySettingsDialog nsd = new AdvancedProxySettingsDialog(config); > + nsd.setResizable(false); > + nsd.centerDialog(); > + nsd.setVisible(true); > + nsd.dispose(); > + } > + > + /** > + * Set the look and feel. > + */ > + private static void setSystemLookAndFeel() { > + try { > + UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); > + } catch (Exception e) { > + // don't worry if we can't. > + } > + } > + > + public static void main(String[] args) throws Exception { > + final DeploymentConfiguration config = new DeploymentConfiguration(); > + config.load(); > + showAdvancedProxySettingsDialog(config); > + } > +} > diff -r c267c4e2b844 netx/net/sourceforge/jnlp/controlpanel/AdvancedProxySettingsPane.java > --- /dev/null Thu Jan 01 00:00:00 1970 +0000 > +++ b/netx/net/sourceforge/jnlp/controlpanel/AdvancedProxySettingsPane.java Tue Nov 30 10:59:29 2010 -0500 > @@ -0,0 +1,473 @@ > +/* AdvancedProxySettingsPane.java -- Provides the panel which can modify proxy settings. > +Copyright (C) 2010 Red Hat > + > +This program is free software; you can redistribute it and/or modify > +it under the terms of the GNU General Public License as published by > +the Free Software Foundation; either version 2 of the License, or > +(at your option) any later version. > + > +This program is distributed in the hope that it will be useful, but > +WITHOUT ANY WARRANTY; without even the implied warranty of > +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU > +General Public License for more details. > + > +You should have received a copy of the GNU General Public License > +along with this program; if not, write to the Free Software > +Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA > + */ > + > +package net.sourceforge.jnlp.controlpanel; > + > +import java.awt.BorderLayout; > +import java.awt.Dimension; > +import java.awt.FlowLayout; > +import java.awt.GridBagConstraints; > +import java.awt.GridBagLayout; > +import java.awt.event.ActionEvent; > +import java.awt.event.ActionListener; > +import java.awt.event.ItemEvent; > +import java.awt.event.ItemListener; > +import java.awt.event.KeyEvent; > +import java.awt.event.KeyListener; > +import java.awt.event.MouseEvent; > +import java.awt.event.MouseListener; > +import java.util.ArrayList; > +import java.util.List; > + > +import javax.naming.ConfigurationException; > +import javax.swing.BoxLayout; > +import javax.swing.JButton; > +import javax.swing.JCheckBox; > +import javax.swing.JComponent; > +import javax.swing.JDialog; > +import javax.swing.JLabel; > +import javax.swing.JPanel; > +import javax.swing.JScrollPane; > +import javax.swing.JTextArea; > +import javax.swing.JTextField; > + > +import net.sourceforge.jnlp.runtime.DeploymentConfiguration; > +import net.sourceforge.jnlp.runtime.Translator; > + > +/** > + * This is the pane that modifies the proxy settings in more detail. > + * > + * @author Andrew Su > + * > + */ > + at SuppressWarnings("serial") > +public class AdvancedProxySettingsPane extends JPanel { > + > + private JDialog parent; > + private DeploymentConfiguration config; > + > + /** List of properties used by this panel */ > + public static String[] properties = { "deployment.proxy.http.host", > + "deployment.proxy.http.port", > + "deployment.proxy.https.host", > + "deployment.proxy.https.port", > + "deployment.proxy.ftp.host", > + "deployment.proxy.ftp.port", > + "deployment.proxy.socks.host", > + "deployment.proxy.socks.port", > + "deployment.proxy.same", > + "deployment.proxy.override.hosts" }; > + private String[] fields = new String[properties.length]; > + > + private JComponent defaultFocusComponent = null; > + > + public AdvancedProxySettingsPane(JDialog parent, DeploymentConfiguration config) { > + super(new BorderLayout()); > + this.parent = parent; > + this.config = config; > + > + getProperties(); > + addComponents(); > + } > + > + /** > + * Place properties into an array, this is so when cancel is hit. We don't > + * overwrite the original values. > + */ > + private void getProperties() { > + for (int i = 0; i < fields.length; i++) { > + fields[i] = this.config.getProperty(properties[i]); > + } > + } > + > + /** > + * Add the components to the panel. > + * FIXME: We should probably refactor the listeners and do them in a more > + * generic way. Also can change this from using textfield to using a table. > + */ > + private void addComponents() { > + JPanel topPanel = new JPanel(new GridBagLayout()); > + GridBagConstraints c = new GridBagConstraints(); > + > + JPanel servers = new NamedBorderPanel(Translator.R("APSServersPanel")); > + servers.setLayout(new GridBagLayout()); > + > + JLabel type = new JLabel(Translator.R("APSProxyTypeLabel")); > + JLabel proxyAddress = new JLabel(Translator.R("APSProxyAddress")); > + JLabel port = new JLabel(Translator.R("SPSProxyPortLabel")); > + > + // This addresses the HTTP proxy settings. > + JLabel http = new JLabel(Translator.R("APSLabelHTTP") + ":"); > + final JTextField httpAddressField = new JTextField(fields[0]); > + final JTextField httpPortField = new JTextField(fields[1]); > + httpAddressField.addKeyListener(new KeyListener() { > + @Override > + public void keyPressed(KeyEvent e) { > + } > + > + @Override > + public void keyReleased(KeyEvent e) { > + fields[0] = httpAddressField.getText(); > + } > + > + @Override > + public void keyTyped(KeyEvent e) { > + } > + }); > + httpPortField.addKeyListener(new KeyListener() { > + @Override > + public void keyPressed(KeyEvent e) { > + } > + > + @Override > + public void keyReleased(KeyEvent e) { > + fields[1] = httpPortField.getText(); > + } > + > + @Override > + public void keyTyped(KeyEvent e) { > + } > + }); > + httpAddressField.addMouseListener(new MiddleClickListener(this.config, properties[0])); > + httpPortField.addMouseListener(new MiddleClickListener(this.config, properties[1])); > + > + // This addresses the HTTPS proxy settings. > + JLabel secure = new JLabel(Translator.R("APSLabelSecure") + ":"); > + final JTextField secureAddressField = new JTextField(fields[2]); > + final JTextField securePortField = new JTextField(fields[3]); > + secureAddressField.addKeyListener(new KeyListener() { > + @Override > + public void keyPressed(KeyEvent e) { > + } > + > + @Override > + public void keyReleased(KeyEvent e) { > + fields[2] = secureAddressField.getText(); > + } > + > + @Override > + public void keyTyped(KeyEvent e) { > + } > + }); > + securePortField.addKeyListener(new KeyListener() { > + @Override > + public void keyPressed(KeyEvent e) { > + } > + > + @Override > + public void keyReleased(KeyEvent e) { > + fields[3] = securePortField.getText(); > + } > + > + @Override > + public void keyTyped(KeyEvent e) { > + } > + }); > + secureAddressField.addMouseListener(new MiddleClickListener(this.config, properties[2])); > + securePortField.addMouseListener(new MiddleClickListener(this.config, properties[3])); > + > + // This addresses the FTP proxy settings. > + JLabel ftp = new JLabel(Translator.R("APSLabelFTP") + ":"); > + final JTextField ftpAddressField = new JTextField(fields[4]); > + final JTextField ftpPortField = new JTextField(fields[5]); > + ftpAddressField.addKeyListener(new KeyListener() { > + @Override > + public void keyPressed(KeyEvent e) { > + } > + > + @Override > + public void keyReleased(KeyEvent e) { > + fields[4] = ftpAddressField.getText(); > + } > + > + @Override > + public void keyTyped(KeyEvent e) { > + } > + }); > + ftpPortField.addKeyListener(new KeyListener() { > + @Override > + public void keyPressed(KeyEvent e) { > + } > + > + @Override > + public void keyReleased(KeyEvent e) { > + fields[5] = ftpPortField.getText(); > + } > + > + @Override > + public void keyTyped(KeyEvent e) { > + } > + }); > + ftpAddressField.addMouseListener(new MiddleClickListener(this.config, properties[4])); > + ftpPortField.addMouseListener(new MiddleClickListener(this.config, properties[5])); > + > + // This addresses the Socks proxy settings. > + JLabel socks = new JLabel(Translator.R("APSLabelSocks") + ":"); > + final JTextField socksAddressField = new JTextField(fields[6]); > + final JTextField socksPortField = new JTextField(fields[7]); > + socksAddressField.addKeyListener(new KeyListener() { > + @Override > + public void keyPressed(KeyEvent e) { > + } > + > + @Override > + public void keyReleased(KeyEvent e) { > + fields[6] = socksAddressField.getText(); > + } > + > + @Override > + public void keyTyped(KeyEvent e) { > + } > + }); > + socksPortField.addKeyListener(new KeyListener() { > + @Override > + public void keyPressed(KeyEvent e) { > + } > + > + @Override > + public void keyReleased(KeyEvent e) { > + fields[7] = socksPortField.getText(); > + } > + > + @Override > + public void keyTyped(KeyEvent e) { > + } > + }); > + socksAddressField.addMouseListener(new MiddleClickListener(this.config, properties[6])); > + socksPortField.addMouseListener(new MiddleClickListener(this.config, properties[7])); > + > + JCheckBox sameProxyForAll = new JCheckBox(Translator.R("APSSameProxyForAllProtocols"), Boolean.parseBoolean(fields[8])); > + sameProxyForAll.addItemListener(new ItemListener() { > + @Override > + public void itemStateChanged(ItemEvent e) { > + fields[8] = String.valueOf(e.getStateChange() == ItemEvent.SELECTED); > + } > + }); > + > + JPanel p = new JPanel(); > + BoxLayout bl = new BoxLayout(p, BoxLayout.Y_AXIS); > + p.setLayout(bl); > + p.add(sameProxyForAll); > + > + c.fill = GridBagConstraints.BOTH; > + c.gridheight = 1; > + c.gridy = 0; > + c.gridwidth = 1; > + c.weightx = 0; > + c.gridx = 0; > + servers.add(type, c); > + c.gridwidth = 2; > + c.weightx = 1; > + c.gridx = 1; > + servers.add(proxyAddress, c); > + c.gridwidth = 1; > + c.weightx = 1; > + c.gridx = 4; > + servers.add(port, c); > + > + plant(1, http, httpAddressField, httpPortField, servers, c); > + plant(2, secure, secureAddressField, securePortField, servers, c); > + plant(3, ftp, ftpAddressField, ftpPortField, servers, c); > + plant(4, socks, socksAddressField, socksPortField, servers, c); > + c.gridwidth = 5; > + c.gridx = 0; > + c.gridy = 5; > + servers.add(p, c); > + > + JPanel exceptions = new NamedBorderPanel(Translator.R("APSExceptionsLabel")); > + exceptions.setLayout(new BorderLayout()); > + JLabel exceptionDescription = new JLabel(Translator.R("APSExceptionsDescription")); > + final JTextArea exceptionListArea = new JTextArea(); > + exceptionListArea.setLineWrap(true); > + exceptionListArea.setText(fields[9]); > + exceptionListArea.addKeyListener(new KeyListener() { > + @Override > + public void keyPressed(KeyEvent e) { > + } > + > + @Override > + public void keyReleased(KeyEvent e) { > + fields[9] = exceptionListArea.getText(); > + } > + > + @Override > + public void keyTyped(KeyEvent e) { > + } > + }); > + exceptionListArea.addMouseListener(new MiddleClickListener(this.config, fields[9])); > + JLabel exceptionFormat = new JLabel(Translator.R("APSExceptionInstruction")); > + JScrollPane exceptionScroll = new JScrollPane(exceptionListArea, JScrollPane.VERTICAL_SCROLLBAR_ALWAYS, JScrollPane.HORIZONTAL_SCROLLBAR_NEVER); > + exceptions.add(exceptionDescription, BorderLayout.NORTH); > + exceptions.add(exceptionScroll, BorderLayout.CENTER); > + exceptions.add(exceptionFormat, BorderLayout.SOUTH); > + > + c.gridx = 0; > + c.weightx = 1; > + c.weighty = 0; > + c.gridy = 0; > + topPanel.add(servers, c); > + c.weighty = 1; > + c.gridy = 1; > + topPanel.add(exceptions, c); > + > + this.add(topPanel); > + this.add(createButtonPanel(), BorderLayout.SOUTH); > + > + } > + > + /** > + * Helper method to help make adding component shorter. > + */ > + private void plant(int y, JLabel label, JTextField addr, JTextField port, JPanel addTo, GridBagConstraints c) { > + c.gridy = y; > + > + c.gridwidth = 1; > + c.weightx = 0; > + c.gridx = 0; > + addTo.add(label, c); > + c.gridwidth = 2; > + c.weightx = 1; > + c.gridx = 1; > + addTo.add(addr, c); > + c.gridwidth = 1; > + c.weightx = 0; > + c.gridx = 3; > + addTo.add(new JLabel(":"), c); > + c.gridwidth = 1; > + c.weightx = 0.3; > + c.gridx = 4; > + addTo.add(port, c); > + } > + > + /** > + * Make the button panel. > + * > + * @return > + */ > + private JPanel createButtonPanel() { > + JPanel buttonPanel = new JPanel(new FlowLayout(FlowLayout.TRAILING)); > + > + List buttons = new ArrayList(); > + > + JButton okButton = new JButton(Translator.R("ButOk")); > + okButton.addActionListener(new ActionListener() { > + @Override > + public void actionPerformed(ActionEvent e) { > + for (int i = 0; i < fields.length; i++) > + config.setProperty(properties[i], fields[i]); > + > + parent.dispose(); > + } > + }); > + buttons.add(okButton); > + > + JButton cancelButton = new JButton(Translator.R("ButCancel")); > + cancelButton.addActionListener(new ActionListener() { > + @Override > + public void actionPerformed(ActionEvent e) { > + parent.dispose(); > + } > + }); > + buttons.add(cancelButton); > + > + int maxWidth = 0; > + int maxHeight = 0; > + for (JButton button : buttons) { > + maxWidth = Math.max(button.getMinimumSize().width, maxWidth); > + maxHeight = Math.max(button.getMinimumSize().height, maxHeight); > + } > + > + int wantedWidth = maxWidth + 10; > + int wantedHeight = maxHeight; > + for (JButton button : buttons) { > + button.setPreferredSize(new Dimension(wantedWidth, wantedHeight)); > + buttonPanel.add(button); > + } > + > + return buttonPanel; > + } > + > + /** > + * Put focus onto default button. > + */ > + public void focusOnDefaultButton() { > + if (defaultFocusComponent != null) { > + defaultFocusComponent.requestFocusInWindow(); > + } > + } > + > + public static void main(String[] args) throws ConfigurationException { > + final DeploymentConfiguration config = new DeploymentConfiguration(); > + config.load(); > + System.out.println("Adv Proxy Settings Test Dialog"); > + JDialog f = new JDialog(); > + f.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE); > + f.setPreferredSize(new Dimension(300, 300)); > + AdvancedProxySettingsPane apsp = new AdvancedProxySettingsPane(f, config); > + f.add(apsp); > + f.pack(); > + f.setVisible(true); > + } > +} > + > +/** > + * When middle click pastes to the checkboxes it doesn't register it... This is > + * to fix that problem. Not needed in Windows. Not generic enough to be reused > + * anywhere else, so placing it in here should be fine. > + * > + * @author Andrew Su > + * > + */ > +class MiddleClickListener implements MouseListener { > + > + DeploymentConfiguration config; > + private String property; > + > + public MiddleClickListener(DeploymentConfiguration config, String property) { > + this.config = config; > + this.property = property; > + } > + > + @Override > + public void mouseClicked(MouseEvent e) { > + Object obj = e.getSource(); > + String result = null; > + if (obj instanceof JTextField) > + result = ((JTextField) obj).getText(); > + else if (obj instanceof JTextArea) result = ((JTextArea) obj).getText(); > + > + config.setProperty(property, result); > + } > + > + @Override > + public void mousePressed(MouseEvent e) { > + } > + > + @Override > + public void mouseReleased(MouseEvent e) { > + } > + > + @Override > + public void mouseEntered(MouseEvent e) { > + } > + > + @Override > + public void mouseExited(MouseEvent e) { > + } > + > +} > diff -r c267c4e2b844 netx/net/sourceforge/jnlp/controlpanel/ComboItem.java > --- /dev/null Thu Jan 01 00:00:00 1970 +0000 > +++ b/netx/net/sourceforge/jnlp/controlpanel/ComboItem.java Tue Nov 30 10:59:29 2010 -0500 > @@ -0,0 +1,44 @@ > +/* ComboItem.java -- Allow storage of an item whose name differs from its value. > +Copyright (C) 2010 Red Hat > + > +This program is free software; you can redistribute it and/or modify > +it under the terms of the GNU General Public License as published by > +the Free Software Foundation; either version 2 of the License, or > +(at your option) any later version. > + > +This program is distributed in the hope that it will be useful, but > +WITHOUT ANY WARRANTY; without even the implied warranty of > +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU > +General Public License for more details. > + > +You should have received a copy of the GNU General Public License > +along with this program; if not, write to the Free Software > +Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA > + */ > + > +package net.sourceforge.jnlp.controlpanel; > + > +/** > + * This is to be used with combobox items. Allows storing a value which differs > + * from the key. > + * > + * @author Andrew Su > + * > + */ > +public class ComboItem { > + String text = null; > + private String value; // Value to be compared with. > + > + public ComboItem(String text, String value) { > + this.text = text; > + this.value = value; > + } > + > + public String toString() { > + return this.text; > + } > + > + public String getValue() { > + return this.value; > + } > +} > diff -r c267c4e2b844 netx/net/sourceforge/jnlp/controlpanel/ControlPanel.java > --- /dev/null Thu Jan 01 00:00:00 1970 +0000 > +++ b/netx/net/sourceforge/jnlp/controlpanel/ControlPanel.java Tue Nov 30 10:59:29 2010 -0500 > @@ -0,0 +1,301 @@ > +/* ControlPanel.java -- Display the control panel for modifying deployment settings. > +Copyright (C) 2010 Red Hat > + > +This program is free software; you can redistribute it and/or modify > +it under the terms of the GNU General Public License as published by > +the Free Software Foundation; either version 2 of the License, or > +(at your option) any later version. > + > +This program is distributed in the hope that it will be useful, but > +WITHOUT ANY WARRANTY; without even the implied warranty of > +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU > +General Public License for more details. > + > +You should have received a copy of the GNU General Public License > +along with this program; if not, write to the Free Software > +Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA > + */ > + > +package net.sourceforge.jnlp.controlpanel; > + > +import java.awt.BorderLayout; > +import java.awt.CardLayout; > +import java.awt.Dimension; > +import java.awt.FlowLayout; > +import java.awt.Image; > +import java.awt.event.ActionEvent; > +import java.awt.event.ActionListener; > +import java.io.IOException; > +import java.net.URL; > +import java.util.ArrayList; > +import java.util.List; > + > +import javax.imageio.ImageIO; > +import javax.naming.ConfigurationException; > +import javax.swing.ImageIcon; > +import javax.swing.JButton; > +import javax.swing.JFrame; > +import javax.swing.JLabel; > +import javax.swing.JList; > +import javax.swing.JPanel; > +import javax.swing.JScrollPane; > +import javax.swing.SwingConstants; > +import javax.swing.SwingUtilities; > +import javax.swing.UIManager; > +import javax.swing.WindowConstants; > +import javax.swing.border.EmptyBorder; > +import javax.swing.event.ListSelectionEvent; > +import javax.swing.event.ListSelectionListener; > + > +import net.sourceforge.jnlp.runtime.DeploymentConfiguration; > +import net.sourceforge.jnlp.runtime.JNLPRuntime; > +import net.sourceforge.jnlp.runtime.Translator; > +import net.sourceforge.jnlp.security.viewer.CertificatePane; > + > +/** > + * This is the control panel for Java. It provides a GUI for modifying the > + * deployments.properties file. > + * > + * @author Andrew Su > + * > + */ > + at SuppressWarnings( { "unused", "serial" }) > +public class ControlPanel extends JFrame { > + > + private class SettingsPanel { > + final String value; > + final JPanel panel; > + > + public SettingsPanel(String value, JPanel panel) { > + this.value = value; > + this.panel = panel; > + } > + > + public JPanel getPanel() { > + return panel; > + } > + > + public String toString() { > + return value; > + } > + } > + > + private DeploymentConfiguration config = null; > + > + /* > + * actual configuration options > + */ > + private String configBrowserCommand = null; > + > + public ControlPanel(DeploymentConfiguration config) { > + super(); > + setTitle(Translator.R("CPHead")); > + > + this.config = config; > + > + JPanel mainPanel = createMainSettingsPanel(); > + JPanel buttonPanel = createButtonPanel(); > + > + add(mainPanel, BorderLayout.CENTER); > + add(buttonPanel, BorderLayout.SOUTH); > + setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE); > + pack(); > + setMinimumSize(getPreferredSize()); > + setResizable(false); > + } > + > + private JPanel createButtonPanel() { > + JPanel buttonPanel = new JPanel(new FlowLayout(FlowLayout.TRAILING)); > + > + List buttons = new ArrayList(); > + > + JButton okButton = new JButton(Translator.R("ButOk")); > + okButton.addActionListener(new ActionListener() { > + @Override > + public void actionPerformed(ActionEvent e) { > + ControlPanel.this.saveConfiguration(); > + ControlPanel.this.dispose(); > + } > + }); > + buttons.add(okButton); > + > + JButton applyButton = new JButton(Translator.R("ButApply")); > + applyButton.addActionListener(new ActionListener() { > + @Override > + public void actionPerformed(ActionEvent e) { > + ControlPanel.this.saveConfiguration(); > + } > + }); > + buttons.add(applyButton); > + > + JButton cancelButton = new JButton(Translator.R("ButCancel")); > + cancelButton.addActionListener(new ActionListener() { > + @Override > + public void actionPerformed(ActionEvent e) { > + ControlPanel.this.dispose(); > + } > + }); > + buttons.add(cancelButton); > + > + int maxWidth = 0; > + int maxHeight = 0; > + for (JButton button : buttons) { > + maxWidth = Math.max(button.getMinimumSize().width, maxWidth); > + maxHeight = Math.max(button.getMinimumSize().height, maxHeight); > + } > + > + int wantedWidth = maxWidth + 10; > + int wantedHeight = maxHeight + 2; > + for (JButton button : buttons) { > + button.setPreferredSize(new Dimension(wantedWidth, wantedHeight)); > + buttonPanel.add(button); > + } > + > + return buttonPanel; > + } > + > + private JPanel createMainSettingsPanel() { > + > + loadConfiguration(); > + > + SettingsPanel[] panels = new SettingsPanel[] { new SettingsPanel(Translator.R("CPTabAbout"), createAboutPanel()), > + new SettingsPanel(Translator.R("CPTabCache"), createCacheSettingsPanel()), > + new SettingsPanel(Translator.R("CPTabCertificate"), createCertificatesSettingsPanel()), > +// new SettingsPanel(Translator.R("CPTabClassLoader"), createClassLoaderSettingsPanel()), > + new SettingsPanel(Translator.R("CPTabDebugging"), createDebugSettingsPanel()), > + new SettingsPanel(Translator.R("CPTabDesktopIntegration"), createDesktopSettingsPanel()), > + new SettingsPanel(Translator.R("CPTabNetwork"), createNetworkSettingsPanel()), > + new SettingsPanel(Translator.R("CPTabRuntimes"), createRuntimesSettingsPanel()), > + new SettingsPanel(Translator.R("CPTabSecurity"), createSecuritySettingsPanel()), }; > + > + // Add panels. > + final JPanel settingsPanel = new JPanel(new CardLayout()); > + for (SettingsPanel panel : panels) { > + JPanel p = panel.getPanel(); > + p.setPreferredSize(new Dimension(530, 360)); > + settingsPanel.add(p, panel.toString()); > + } > + > + final JList settingsList = new JList(panels); > + settingsList.addListSelectionListener(new ListSelectionListener() { > + @Override > + public void valueChanged(ListSelectionEvent e) { > + JList list = (JList) e.getSource(); > + SettingsPanel panel = (SettingsPanel) list.getSelectedValue(); > + CardLayout cl = (CardLayout) settingsPanel.getLayout(); > + cl.show(settingsPanel, panel.toString()); > + } > + }); > + JScrollPane settingsListScrollPane = new JScrollPane(settingsList); > + settingsListScrollPane.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_NEVER); > + > + final JPanel settingsDetailPanel = new JPanel(); > + settingsDetailPanel.setLayout(new BorderLayout()); > + settingsDetailPanel.add(settingsPanel, BorderLayout.CENTER); > + settingsDetailPanel.setBorder(new EmptyBorder(0, 10, -3, 0)); > + > + JPanel mainPanel = new JPanel(); > + mainPanel.setLayout(new BorderLayout()); > + mainPanel.add(settingsListScrollPane, BorderLayout.LINE_START); > + mainPanel.add(settingsDetailPanel, BorderLayout.CENTER); > + mainPanel.setBorder(new EmptyBorder(10, 10, 10, 10)); > + > + settingsList.setSelectedIndex(0); > + > + return mainPanel; > + } > + > + private JPanel createAboutPanel() { > + return new AboutPanel(); > + } > + > + private JPanel createCacheSettingsPanel() { > + return new TemporaryInternetFilesPanel(this.config); > + } > + > + private JPanel createCertificatesSettingsPanel() { > + JPanel p = new NamedBorderPanel(Translator.R("CPHeadCertificates"), new BorderLayout()); > + p.add(new CertificatePane(null), BorderLayout.CENTER); > + return p; > + } > + > + private JPanel createClassLoaderSettingsPanel() { > + return createNotImplementedPanel(); > + } > + > + private JPanel createDebugSettingsPanel() { > + return new DebuggingPanel(this.config); > + } > + > + private JPanel createDesktopSettingsPanel() { > + return new DesktopShortcutPanel(this.config); > + } > + > + private JPanel createNetworkSettingsPanel() { > + return new NetworkSettingsPanel(this.config); > + } > + > + private JPanel createRuntimesSettingsPanel() { > + return new JREPanel(); > + } > + > + private JPanel createSecuritySettingsPanel() { > + return new SecuritySettingsPanel(this.config); > + } > + > + /** > + * This is a placeholder panel. > + * > + * @return > + */ > + private JPanel createNotImplementedPanel() { > + > + JPanel notImplementedPanel = new NamedBorderPanel("Unimplemented"); > + notImplementedPanel.setLayout(new BorderLayout()); > + > + URL imgUrl = getClass().getClassLoader().getResource("net/sourceforge/jnlp/resources/warning.png"); > + Image img; > + try { > + img = ImageIO.read(imgUrl); > + ImageIcon icon = new ImageIcon(img); > + JLabel label = new JLabel("Not Implemented", icon, SwingConstants.CENTER); > + notImplementedPanel.add(label); > + } catch (IOException e) { > + e.printStackTrace(); > + } > + return notImplementedPanel; > + } > + > + private void loadConfiguration() { > + configBrowserCommand = config.getProperty("deployment.browser.path"); > + if (configBrowserCommand == null) { > + configBrowserCommand = ""; > + } > + } > + > + private void saveConfiguration() { > + try { > + config.save(); > + } catch (IOException e) { > + e.printStackTrace(); > + } > + } > + > + public static void main(String[] args) throws Exception { > + JNLPRuntime.initialize(true); > + final DeploymentConfiguration config = JNLPRuntime.getConfiguration(); > + try { > + config.load(); > + } catch (ConfigurationException e) { > + // TODO Auto-generated catch block > + e.printStackTrace(); > + } > + SwingUtilities.invokeLater(new Runnable() { > + @Override > + public void run() { > + final ControlPanel editor = new ControlPanel(config); > + editor.setVisible(true); > + } > + }); > + } > +} > diff -r c267c4e2b844 netx/net/sourceforge/jnlp/controlpanel/DebuggingPanel.java > --- /dev/null Thu Jan 01 00:00:00 1970 +0000 > +++ b/netx/net/sourceforge/jnlp/controlpanel/DebuggingPanel.java Tue Nov 30 10:59:29 2010 -0500 > @@ -0,0 +1,141 @@ > +/* DebuggingPanel.java -- Displays and sets options for debugging. > +Copyright (C) 2010 Red Hat > + > +This program is free software; you can redistribute it and/or modify > +it under the terms of the GNU General Public License as published by > +the Free Software Foundation; either version 2 of the License, or > +(at your option) any later version. > + > +This program is distributed in the hope that it will be useful, but > +WITHOUT ANY WARRANTY; without even the implied warranty of > +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU > +General Public License for more details. > + > +You should have received a copy of the GNU General Public License > +along with this program; if not, write to the Free Software > +Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA > + */ > + > +package net.sourceforge.jnlp.controlpanel; > + > +import java.awt.Component; > +import java.awt.Dimension; > +import java.awt.FlowLayout; > +import java.awt.GridBagConstraints; > +import java.awt.GridBagLayout; > +import java.awt.event.ItemEvent; > +import java.awt.event.ItemListener; > + > +import javax.swing.Box; > +import javax.swing.JCheckBox; > +import javax.swing.JComboBox; > +import javax.swing.JLabel; > +import javax.swing.JPanel; > + > +import net.sourceforge.jnlp.runtime.DeploymentConfiguration; > +import net.sourceforge.jnlp.runtime.Translator; > + > + at SuppressWarnings("serial") > +public class DebuggingPanel extends NamedBorderPanel implements ItemListener { > + > + /** List of properties used by this panel */ > + public static String[] properties = { "deployment.trace", // Debugging > + "deployment.log", // Debugging > + "deployment.javapi.lifecycle.exception", // Debugging > + "deployment.console.startup.mode", // Java Console > + }; > + private DeploymentConfiguration config; > + > + public DebuggingPanel(DeploymentConfiguration config) { > + super(Translator.R("CPHeadDebugging"), new GridBagLayout()); > + > + this.config = config; > + > + addComponents(); > + } > + > + /** > + * Add components to panel. > + */ > + private void addComponents() { > + GridBagConstraints c = new GridBagConstraints(); > + > + JLabel debuggingDescription = new JLabel("" + Translator.R("CPDebuggingDescription") + "

"); > + > + JCheckBox[] debuggingOptions = { new JCheckBox(Translator.R("DPEnableTracing")), > + new JCheckBox(Translator.R("DPEnableLogging")), > + new JCheckBox(Translator.R("DPLifeCycleExceptions")) }; > + > + ComboItem[] javaConsoleItems = { new ComboItem(Translator.R("DPDisable"), "DISABLE"), > + new ComboItem(Translator.R("DPHide"), "HIDE"), > + new ComboItem(Translator.R("DPShow"), "SHOW"), }; > + > + JLabel consoleLabel = new JLabel(Translator.R("DPJavaConsole")); > + JComboBox consoleComboBox = new JComboBox(); > + consoleComboBox.setActionCommand("deployment.console.startup.mode"); // The property this comboBox affects. > + > + JPanel consolePanel = new JPanel(); > + consolePanel.setLayout(new FlowLayout(FlowLayout.LEADING)); > + consolePanel.add(consoleLabel); > + consolePanel.add(consoleComboBox); > + > + c.fill = GridBagConstraints.BOTH; > + c.weightx = 1; > + c.gridx = 0; > + c.gridy = 0; > + add(debuggingDescription, c); > + > + /* > + * Add the items to the panel unless we can not get the values for them. > + */ > + for (int i = 0; i < properties.length; i++) { > + try { > + String s = config.getProperty(properties[i]); > + c.gridy = i + 1; > + > + switch (i) { > + case 0: > + case 1: > + case 2: > + debuggingOptions[i].setSelected(Boolean.parseBoolean(s)); > + debuggingOptions[i].setActionCommand(properties[i]); > + debuggingOptions[i].addItemListener(this); > + add(debuggingOptions[i], c); > + break; > + case 3: > + for (int j = 0; j < javaConsoleItems.length; j++) { > + consoleComboBox.addItem(javaConsoleItems[j]); > + if (config.getProperty("deployment.console.startup.mode").equals(javaConsoleItems[j].getValue())) consoleComboBox.setSelectedIndex(j); > + } > + consoleComboBox.addItemListener(this); > + add(consolePanel, c); > + } > + > + } catch (Exception e) { > + debuggingOptions[i] = null; > + } > + } > + > + // pack the bottom so that it doesn't change size if resized. > + Component filler = Box.createRigidArea(new Dimension(1, 1)); > + c.gridy++; > + c.weighty = 1; > + add(filler, c); > + } > + > + @Override > + public void itemStateChanged(ItemEvent e) { > + > + Object o = e.getSource(); > + > + if (o instanceof JCheckBox) { > + JCheckBox jcb = (JCheckBox) o; > + config.setProperty(jcb.getActionCommand(), String.valueOf(jcb.isSelected())); > + } else if (o instanceof JComboBox) { > + JComboBox jcb = (JComboBox) o; > + ComboItem c = (ComboItem) e.getItem(); > + config.setProperty(jcb.getActionCommand(), c.getValue()); > + } > + > + } > +} > diff -r c267c4e2b844 netx/net/sourceforge/jnlp/controlpanel/DesktopShortcutPanel.java > --- /dev/null Thu Jan 01 00:00:00 1970 +0000 > +++ b/netx/net/sourceforge/jnlp/controlpanel/DesktopShortcutPanel.java Tue Nov 30 10:59:29 2010 -0500 > @@ -0,0 +1,91 @@ > +/* DesktopShortcutPanel.java -- Display option for adding desktop shortcut. > +Copyright (C) 2010 Red Hat > + > +This program is free software; you can redistribute it and/or modify > +it under the terms of the GNU General Public License as published by > +the Free Software Foundation; either version 2 of the License, or > +(at your option) any later version. > + > +This program is distributed in the hope that it will be useful, but > +WITHOUT ANY WARRANTY; without even the implied warranty of > +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU > +General Public License for more details. > + > +You should have received a copy of the GNU General Public License > +along with this program; if not, write to the Free Software > +Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA > + */ > + > +package net.sourceforge.jnlp.controlpanel; > + > +import java.awt.Component; > +import java.awt.Dimension; > +import java.awt.GridBagConstraints; > +import java.awt.GridBagLayout; > +import java.awt.event.ItemEvent; > +import java.awt.event.ItemListener; > + > +import javax.swing.Box; > +import javax.swing.JComboBox; > +import javax.swing.JLabel; > + > +import net.sourceforge.jnlp.runtime.DeploymentConfiguration; > +import net.sourceforge.jnlp.runtime.Translator; > + > +/** > + * This class provides the panel that allows the user to set whether they want > + * to create a desktop shortcut for javaws. > + * > + * @author Andrew Su > + * > + */ > + at SuppressWarnings("serial") > +public class DesktopShortcutPanel extends NamedBorderPanel implements ItemListener { > + > + private DeploymentConfiguration config; > + > + public DesktopShortcutPanel(DeploymentConfiguration config) { > + super(Translator.R("CPHeadDesktopIntegration"), new GridBagLayout()); > + this.config = config; > + > + addComponents(); > + } > + > + private void addComponents() { > + GridBagConstraints c = new GridBagConstraints(); > + JLabel description = new JLabel("" + Translator.R("CPDesktopIntegrationDescription") + "
"); > + JComboBox shortcutComboOptions = new JComboBox(); > + ComboItem[] items = { new ComboItem(Translator.R("DSPNeverCreate"), "NEVER"), > + new ComboItem(Translator.R("DSPAlwaysAllow"), "ALWAYS"), > + new ComboItem(Translator.R("DSPAskUser"), "ASK_USER"), > + new ComboItem(Translator.R("DSPAskIfHinted"), "ASK_IF_HINTED"), > + new ComboItem(Translator.R("DSPAlwaysIfHinted"), "ALWAYS_IF_HINTED") }; > + > + shortcutComboOptions.setActionCommand("deployment.javaws.shortcut"); // The configuration property this combobox affects. > + for (int j = 0; j < items.length; j++) { > + shortcutComboOptions.addItem(items[j]); > + if (config.getProperty("deployment.javaws.shortcut").equals(items[j].getValue())) shortcutComboOptions.setSelectedIndex(j); > + } > + > + shortcutComboOptions.addItemListener(this); > + > + c.fill = GridBagConstraints.BOTH; > + c.weightx = 1; > + c.gridx = 0; > + c.gridy = 0; > + add(description, c); > + c.gridy = 1; > + add(shortcutComboOptions, c); > + > + // This is to keep it from expanding vertically if resized. > + Component filler = Box.createRigidArea(new Dimension(1, 1)); > + c.gridy++; > + c.weighty = 1; > + add(filler, c); > + } > + > + public void itemStateChanged(ItemEvent e) { > + ComboItem c = (ComboItem) e.getItem(); > + config.setProperty(((JComboBox) e.getSource()).getActionCommand(), c.getValue()); > + } > +} > diff -r c267c4e2b844 netx/net/sourceforge/jnlp/controlpanel/JREPanel.java > --- /dev/null Thu Jan 01 00:00:00 1970 +0000 > +++ b/netx/net/sourceforge/jnlp/controlpanel/JREPanel.java Tue Nov 30 10:59:29 2010 -0500 > @@ -0,0 +1,47 @@ > +/* JREPanel.java - Displays option for changing to another Java Runtime. > +Copyright (C) 2010 Red Hat > + > +This program is free software; you can redistribute it and/or modify > +it under the terms of the GNU General Public License as published by > +the Free Software Foundation; either version 2 of the License, or > +(at your option) any later version. > + > +This program is distributed in the hope that it will be useful, but > +WITHOUT ANY WARRANTY; without even the implied warranty of > +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU > +General Public License for more details. > + > +You should have received a copy of the GNU General Public License > +along with this program; if not, write to the Free Software > +Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA > + */ > + > +package net.sourceforge.jnlp.controlpanel; > + > +import java.awt.BorderLayout; > + > +import javax.swing.JLabel; > + > +import net.sourceforge.jnlp.runtime.Translator; > + > +/** > + * This panel is to allow access to setting the JRE but we currently do not > + * support this. > + * > + * @author Andrew Su > + * > + */ > +public class JREPanel extends NamedBorderPanel { > + /** > + * > + */ > + private static final long serialVersionUID = -712021664097515692L; > + > + public JREPanel() { > + super(Translator.R("CPHeadJRESettings")); > + setLayout(new BorderLayout()); > + > + JLabel jreLabel = new JLabel("" + Translator.R("CPJRESupport") + ""); > + add(jreLabel, BorderLayout.NORTH); > + } > +} > diff -r c267c4e2b844 netx/net/sourceforge/jnlp/controlpanel/NamedBorderPanel.java > --- /dev/null Thu Jan 01 00:00:00 1970 +0000 > +++ b/netx/net/sourceforge/jnlp/controlpanel/NamedBorderPanel.java Tue Nov 30 10:59:29 2010 -0500 > @@ -0,0 +1,46 @@ > +/* NamedBorderPanel.java -- Makes a border which has a name. > +Copyright (C) 2010 Red Hat > + > +This program is free software; you can redistribute it and/or modify > +it under the terms of the GNU General Public License as published by > +the Free Software Foundation; either version 2 of the License, or > +(at your option) any later version. > + > +This program is distributed in the hope that it will be useful, but > +WITHOUT ANY WARRANTY; without even the implied warranty of > +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU > +General Public License for more details. > + > +You should have received a copy of the GNU General Public License > +along with this program; if not, write to the Free Software > +Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA > + */ > + > +package net.sourceforge.jnlp.controlpanel; > + > +import java.awt.LayoutManager; > + > +import javax.swing.BorderFactory; > +import javax.swing.JPanel; > + > +/** > + * This class provides the a panel that has a border with the name specified. > + * > + * @author Andrew Su > + * > + */ > + at SuppressWarnings("serial") > +public class NamedBorderPanel extends JPanel { > + > + public NamedBorderPanel(String title, LayoutManager layout) { > + this(title); > + setLayout(layout); > + } > + > + public NamedBorderPanel(String title) { > + super(); > + setBorder(BorderFactory.createCompoundBorder( > + BorderFactory.createTitledBorder(title), > + BorderFactory.createEmptyBorder(5, 5, 5, 5))); > + } > +} > diff -r c267c4e2b844 netx/net/sourceforge/jnlp/controlpanel/NetworkSettingsPanel.java > --- /dev/null Thu Jan 01 00:00:00 1970 +0000 > +++ b/netx/net/sourceforge/jnlp/controlpanel/NetworkSettingsPanel.java Tue Nov 30 10:59:29 2010 -0500 > @@ -0,0 +1,320 @@ > +/* NetworkSettingsPanel.java -- Sets proxy settings for network. > +Copyright (C) 2010 Red Hat > + > +This program is free software; you can redistribute it and/or modify > +it under the terms of the GNU General Public License as published by > +the Free Software Foundation; either version 2 of the License, or > +(at your option) any later version. > + > +This program is distributed in the hope that it will be useful, but > +WITHOUT ANY WARRANTY; without even the implied warranty of > +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU > +General Public License for more details. > + > +You should have received a copy of the GNU General Public License > +along with this program; if not, write to the Free Software > +Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA > + */ > + > +package net.sourceforge.jnlp.controlpanel; > + > +import java.awt.BorderLayout; > +import java.awt.CardLayout; > +import java.awt.Component; > +import java.awt.Dimension; > +import java.awt.FlowLayout; > +import java.awt.GridBagConstraints; > +import java.awt.GridBagLayout; > +import java.awt.event.ActionEvent; > +import java.awt.event.ActionListener; > +import java.awt.event.ItemEvent; > +import java.awt.event.ItemListener; > +import java.awt.event.KeyEvent; > +import java.awt.event.KeyListener; > +import java.util.ArrayList; > + > +import javax.swing.Box; > +import javax.swing.ButtonGroup; > +import javax.swing.JButton; > +import javax.swing.JCheckBox; > +import javax.swing.JComponent; > +import javax.swing.JLabel; > +import javax.swing.JPanel; > +import javax.swing.JRadioButton; > +import javax.swing.JTextField; > + > +import net.sourceforge.jnlp.runtime.DeploymentConfiguration; > +import net.sourceforge.jnlp.runtime.Translator; > + > +/** > + * This is the pane used with creating a JDialog version. This allows changing > + * the network configuration: Proxy > + * > + * @author Andrew Su > + * > + */ > + at SuppressWarnings("serial") > +public class NetworkSettingsPanel extends JPanel implements ActionListener { > + > + private DeploymentConfiguration config; > + > + private JPanel description; > + private ArrayList proxyPanels = new ArrayList(); // The stuff with editable fields > + > + private JComponent defaultFocusComponent = null; > + > + /** List of properties used by this panel */ > + public static String[] properties = { "deployment.proxy.type", > + "deployment.proxy.http.host", > + "deployment.proxy.http.port", > + "deployment.proxy.bypass.local", > + "deployment.proxy.auto.config.url", }; > + private String[] fields = new String[properties.length]; > + > + public NetworkSettingsPanel(DeploymentConfiguration config) { > + super(); > + this.config = config; > + setLayout(new BorderLayout()); > + > + getProperties(); > + addComponents(); > + } > + > + private void getProperties() { > + > + for (int i = 0; i < properties.length; i++) > + fields[i] = this.config.getProperty(properties[i]); > + } > + > + /** > + * This adds the components to the panel. > + */ > + protected void addComponents() { > + JPanel settingPanel = new NamedBorderPanel(Translator.R("CPHeadNetworkSettings")); > + settingPanel.setLayout(new GridBagLayout()); > + GridBagConstraints c = new GridBagConstraints(); > + c.fill = GridBagConstraints.BOTH; > + c.weightx = 1; > + c.weighty = 1; > + c.gridx = 0; > + > + JLabel networkDesc = new JLabel("" + Translator.R("CPNetworkSettingsDescription") + "
"); > + > + JLabel description = new JLabel("" + Translator.R("NSDescription-1") + ""); > + JLabel description0 = new JLabel("" + Translator.R("NSDescription0") + ""); > + JLabel description1 = new JLabel("" + Translator.R("NSDescription1") + ""); > + JLabel description2 = new JLabel("" + Translator.R("NSDescription2") + ""); > + JLabel description3 = new JLabel("" + Translator.R("NSDescription3") + ""); > + > + this.description = new JPanel(new CardLayout()); > + this.description.add(description, "-1"); > + this.description.add(description0, "0"); > + this.description.add(description1, "1"); > + this.description.add(description2, "2"); > + this.description.add(description3, "3"); > + > + // Settings for selecting Proxy Server > + JPanel proxyServerPanel = new JPanel(new BorderLayout()); > + JPanel proxyLocationPanel = new JPanel(new FlowLayout(FlowLayout.LEADING)); > + JPanel proxyBypassPanel = new JPanel(new FlowLayout(FlowLayout.LEADING)); > + > + JLabel addressLabel = new JLabel(Translator.R("NSAddress") + ":"); > + JLabel portLabel = new JLabel(Translator.R("NSPort") + ":"); > + final JTextField addressField = new JTextField(fields[1], 10); > + addressField.addKeyListener(new KeyListener() { > + @Override > + public void keyPressed(KeyEvent e) { > + } > + > + @Override > + public void keyReleased(KeyEvent e) { > + fields[1] = addressField.getText(); > + config.setProperty(properties[1], fields[1]); > + } > + > + @Override > + public void keyTyped(KeyEvent e) { > + } > + }); > + addressField.addMouseListener(new MiddleClickListener(this.config, properties[1])); > + final JTextField portField = new JTextField(fields[2], 3); > + portField.addKeyListener(new KeyListener() { > + @Override > + public void keyPressed(KeyEvent e) { > + } > + > + @Override > + public void keyReleased(KeyEvent e) { > + fields[2] = portField.getText(); > + config.setProperty(properties[2], fields[2]); > + } > + > + @Override > + public void keyTyped(KeyEvent e) { > + } > + }); > + // Create the button which allows setting of other types of proxy. > + JButton advancedProxyButton = new JButton(Translator.R("NSAdvanced") + "..."); > + advancedProxyButton.addActionListener(new ActionListener() { > + @Override > + public void actionPerformed(ActionEvent e) { > + try { > + AdvancedProxySettingsDialog.showAdvancedProxySettingsDialog(config); > + } catch (Exception e1) { > + e1.printStackTrace(); > + } > + } > + }); > + > + JCheckBox bypassCheckBox = new JCheckBox(Translator.R("NSBypassLocal"), Boolean.parseBoolean(fields[3])); > + bypassCheckBox.addItemListener(new ItemListener() { > + @Override > + public void itemStateChanged(ItemEvent e) { > + fields[3] = String.valueOf(e.getStateChange() == ItemEvent.SELECTED); > + config.setProperty(properties[3], fields[3]); > + } > + }); > + proxyLocationPanel.add(Box.createRigidArea(new Dimension(13, 0))); > + proxyLocationPanel.add(addressLabel); > + proxyLocationPanel.add(addressField); > + proxyLocationPanel.add(portLabel); > + proxyLocationPanel.add(portField); > + proxyLocationPanel.add(advancedProxyButton); > + proxyBypassPanel.add(Box.createRigidArea(new Dimension(10, 0))); > + proxyBypassPanel.add(bypassCheckBox); > + > + proxyServerPanel.add(proxyLocationPanel, BorderLayout.CENTER); > + proxyServerPanel.add(proxyBypassPanel, BorderLayout.SOUTH); > + > + JRadioButton directConnection = new JRadioButton(Translator.R("NSDirectConnection"), fields[0].equals("0")); > + directConnection.setActionCommand("0"); > + directConnection.addActionListener(this); > + > + JRadioButton useProxyServer = new JRadioButton(Translator.R("NSManualProxy"), fields[0].equals("1")); > + useProxyServer.setActionCommand("1"); > + useProxyServer.addActionListener(this); > + > + JRadioButton useAutoProxyConfigScript = new JRadioButton(Translator.R("NSAutoProxy"), fields[0].equals("2")); > + useAutoProxyConfigScript.setActionCommand("2"); > + useAutoProxyConfigScript.addActionListener(this); > + > + JRadioButton useBrowserSettings = new JRadioButton(Translator.R("NSBrowserProxy"), fields[0].equals("3")); > + useBrowserSettings.setActionCommand("3"); > + useBrowserSettings.addActionListener(this); > + > + ButtonGroup modeSelect = new ButtonGroup(); > + modeSelect.add(useBrowserSettings); > + modeSelect.add(useProxyServer); > + modeSelect.add(useAutoProxyConfigScript); > + modeSelect.add(directConnection); > + > + // Settings for Automatic Proxy Configuration Script > + JPanel proxyAutoPanel = new JPanel(new FlowLayout(FlowLayout.LEADING)); > + JLabel locationLabel = new JLabel(Translator.R("NSScriptLocation") + ":"); > + final JTextField locationField = new JTextField(fields[4], 20); > + locationField.addKeyListener(new KeyListener() { > + @Override > + public void keyPressed(KeyEvent e) { > + } > + > + @Override > + public void keyReleased(KeyEvent e) { > + String value = locationField.getText(); > + if (value.trim().equals("")) value = null; > + fields[4] = value; > + config.setProperty(properties[4], value); > + } > + > + @Override > + public void keyTyped(KeyEvent e) { > + } > + }); > + > + proxyAutoPanel.add(Box.createRigidArea(new Dimension(13, 0))); > + proxyAutoPanel.add(locationLabel); > + proxyAutoPanel.add(locationField); > + > + c.gridy = 0; > + settingPanel.add(networkDesc, c); > + c.gridy = 1; > + settingPanel.add(this.description, c); > + c.gridy = 2; > + settingPanel.add(directConnection, c); > + c.gridy = 3; > + settingPanel.add(useBrowserSettings, c); > + c.gridy = 4; > + settingPanel.add(useProxyServer, c); > + c.gridy = 5; > + settingPanel.add(proxyServerPanel, c); > + proxyPanels.add(proxyServerPanel); > + c.gridy = 6; > + settingPanel.add(useAutoProxyConfigScript, c); > + c.gridy = 7; > + settingPanel.add(proxyAutoPanel, c); > + proxyPanels.add(proxyAutoPanel); > + > + // Filler to pack the bottom of the panel. > + Component filler = Box.createRigidArea(new Dimension(1, 1)); > + c.gridy++; > + c.weighty = 1; > + settingPanel.add(filler, c); > + > + setState(); // depending on default setting we will enable or disable > + > + add(settingPanel, BorderLayout.CENTER); > + > + } > + > + public void focusOnDefaultButton() { > + if (defaultFocusComponent != null) { > + defaultFocusComponent.requestFocusInWindow(); > + } > + } > + > + /** > + * Enable/Disable the panel and all its children recursively. > + * > + * @param panel > + * JPanel which needs to be enabled or disabled. > + * @param enable > + * true if the panel and its children are to be enabled, false > + * otherwise. > + */ > + private void enablePanel(JPanel panel, boolean enable) { > + // This will be used to enable all components in this panel recursively. > + // Ridiculously slow if lots of nested panels. > + for (Component c : panel.getComponents()) { > + if (c instanceof JPanel) { > + enablePanel((JPanel) c, enable); > + } > + c.setEnabled(enable); > + } > + } > + > + @Override > + public void actionPerformed(ActionEvent e) { > + fields[0] = e.getActionCommand(); > + config.setProperty(properties[0], fields[0]); > + setState(); > + } > + > + /** > + * This enables and disables the appropriate panels. > + */ > + private void setState() { > + ((CardLayout) this.description.getLayout()).show(this.description, fields[0]); > + if (fields[0].equals("0")) { > + for (JPanel panel : proxyPanels) > + enablePanel(panel, false); > + } else if (fields[0].equals("1")) { > + enablePanel(proxyPanels.get(1), false); > + enablePanel(proxyPanels.get(0), true); > + } else if (fields[0].equals("2")) { > + enablePanel(proxyPanels.get(0), false); > + enablePanel(proxyPanels.get(1), true); > + } else if (fields[0].equals("3")) { > + for (JPanel panel : proxyPanels) > + enablePanel(panel, false); > + } > + } > +} > diff -r c267c4e2b844 netx/net/sourceforge/jnlp/controlpanel/SecuritySettingsPanel.java > --- /dev/null Thu Jan 01 00:00:00 1970 +0000 > +++ b/netx/net/sourceforge/jnlp/controlpanel/SecuritySettingsPanel.java Tue Nov 30 10:59:29 2010 -0500 > @@ -0,0 +1,135 @@ > +/* SecuritySettingsPanel.java -- Display possible security settings. > +Copyright (C) 2010 Red Hat > + > +This program is free software; you can redistribute it and/or modify > +it under the terms of the GNU General Public License as published by > +the Free Software Foundation; either version 2 of the License, or > +(at your option) any later version. > + > +This program is distributed in the hope that it will be useful, but > +WITHOUT ANY WARRANTY; without even the implied warranty of > +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU > +General Public License for more details. > + > +You should have received a copy of the GNU General Public License > +along with this program; if not, write to the Free Software > +Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA > + */ > +package net.sourceforge.jnlp.controlpanel; > + > +import java.awt.BorderLayout; > +import java.awt.Component; > +import java.awt.Dimension; > +import java.awt.GridBagConstraints; > +import java.awt.GridBagLayout; > +import java.awt.event.ActionEvent; > +import java.awt.event.ActionListener; > + > +import javax.swing.Box; > +import javax.swing.JCheckBox; > +import javax.swing.JLabel; > +import javax.swing.JPanel; > + > +import net.sourceforge.jnlp.runtime.DeploymentConfiguration; > +import net.sourceforge.jnlp.runtime.Translator; > + > +/** > + * This provides a way for the user to modify the security settings through a > + * GUI. > + * > + * @author Andrew Su > + * > + */ > + at SuppressWarnings("serial") > +public class SecuritySettingsPanel extends NamedBorderPanel implements ActionListener { > + > + private DeploymentConfiguration config; > + > + // NOTE: All the ones listed with "Default" are in Oracle's implementation. > + // Not shown on deployments.properties webpage. Add support for these later! > + /** List of properties used by this panel */ > + public static String[] properties = { "deployment.security.askgrantdialog.show", > + "deployment.security.askgrantdialog.notinca", > + "deployment.security.browser.keystore.use", // default TRUE > + "deployment.security.clientauth.keystore.auto", // Default FALSE > + "deployment.security.jsse.hostmismatch.warning", > + "deployment.security.https.warning.show", // Default FALSE > + "deployment.security.sandbox.awtwarningwindow", > + "deployment.security.sandbox.jnlp.enhanced", > + "deployment.security.validation.crl", // Default TRUE > + "deployment.security.validation.ocsp", // Default FALSE > + "deployment.security.pretrust.list", // Default TRUE > + "deployment.security.blacklist.check", // Default TRUE > + "deployment.security.password.cache", // Default TRUE > + "deployment.security.SSLv2Hello", // Default FALSE > + "deployment.security.SSLv3", // Default TRUE > + "deployment.security.TLSv1", // Default TRUE > +// "deployment.security.mixcode", // Default TRUE > + }; > + > + public SecuritySettingsPanel(DeploymentConfiguration config) { > + super(Translator.R("CPHeadSecurity"), new BorderLayout()); > + this.config = config; > + > + addComponents(); > + } > + > + /** > + * Add the components to the panel. > + */ > + private void addComponents() { > + JPanel topPanel = new JPanel(new GridBagLayout()); > + GridBagConstraints c = new GridBagConstraints(); > + > + JLabel description = new JLabel("" + Translator.R("CPSecurityDescription") + "
"); > + > + JCheckBox[] securityGeneralOptions = { new JCheckBox(Translator.R("SGPAllowUserGrantSigned")), > + new JCheckBox(Translator.R("SGPAllowUserGrantUntrust")), > + new JCheckBox(Translator.R("SGpUseBrowserKeystore")), > + new JCheckBox(Translator.R("SGPUsePersonalCertOneMatch")), > + new JCheckBox(Translator.R("SGPWarnCertHostMismatch")), > + new JCheckBox(Translator.R("SGPShowValid")), > + new JCheckBox(Translator.R("SGPShowSandboxWarning")), > + new JCheckBox(Translator.R("SGPAllowUserAcceptJNLPSecurityRequests")), > + new JCheckBox(Translator.R("SGPCheckCertRevocationList")), > + new JCheckBox(Translator.R("SGPEnableOnlineCertValidate")), > + new JCheckBox(Translator.R("SGPEnableTrustedPublisherList")), > + new JCheckBox(Translator.R("SGPEnableBlacklistRevocation")), > + new JCheckBox(Translator.R("SGPEnableCachingPassword")), > + new JCheckBox(Translator.R("SGPUseSSL2")), > + new JCheckBox(Translator.R("SGPUseSSL3")), > + new JCheckBox(Translator.R("SGPUseTLS1")), }; > + > + c.fill = GridBagConstraints.BOTH; > + c.gridx = 0; > + c.weightx = 1; > + > + topPanel.add(description, c); > + > + // Only display the ones with properties that are valid or existent. > + for (int i = 0; i < properties.length; i++) { > + try { > + String s = config.getProperty(properties[i]); > + securityGeneralOptions[i].setSelected(Boolean.parseBoolean(s)); > + securityGeneralOptions[i].setActionCommand(properties[i]); > + securityGeneralOptions[i].addActionListener(this); > + c.gridy = i + 1; > + topPanel.add(securityGeneralOptions[i], c); > + } catch (Exception e) { > + securityGeneralOptions[i] = null; > + } > + } > + > + Component filler = Box.createRigidArea(new Dimension(1, 1)); > + c.weighty = 1; > + c.gridy++; > + topPanel.add(filler, c); > + > + add(topPanel, BorderLayout.CENTER); > + } > + > + @Override > + public void actionPerformed(ActionEvent e) { > + config.setProperty(e.getActionCommand(), String.valueOf(((JCheckBox) e.getSource()).isSelected())); > + } > +} > diff -r c267c4e2b844 netx/net/sourceforge/jnlp/controlpanel/TemporaryInternetFilesPanel.java > --- /dev/null Thu Jan 01 00:00:00 1970 +0000 > +++ b/netx/net/sourceforge/jnlp/controlpanel/TemporaryInternetFilesPanel.java Tue Nov 30 10:59:29 2010 -0500 > @@ -0,0 +1,244 @@ > +/* TemporaryInternetFilesPanel.java -- Display and sets cache settings. > +Copyright (C) 2010 Red Hat > + > +This program is free software; you can redistribute it and/or modify > +it under the terms of the GNU General Public License as published by > +the Free Software Foundation; either version 2 of the License, or > +(at your option) any later version. > + > +This program is distributed in the hope that it will be useful, but > +WITHOUT ANY WARRANTY; without even the implied warranty of > +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU > +General Public License for more details. > + > +You should have received a copy of the GNU General Public License > +along with this program; if not, write to the Free Software > +Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA > + */ > + > +package net.sourceforge.jnlp.controlpanel; > + > +import java.awt.BorderLayout; > +import java.awt.Dimension; > +import java.awt.FlowLayout; > +import java.awt.GridBagConstraints; > +import java.awt.GridBagLayout; > +import java.awt.event.ActionEvent; > +import java.awt.event.ActionListener; > +import java.awt.event.ItemEvent; > +import java.awt.event.ItemListener; > +import java.awt.event.KeyEvent; > +import java.awt.event.KeyListener; > + > +import javax.naming.ConfigurationException; > +import javax.swing.JButton; > +import javax.swing.JCheckBox; > +import javax.swing.JComboBox; > +import javax.swing.JComponent; > +import javax.swing.JDialog; > +import javax.swing.JFileChooser; > +import javax.swing.JLabel; > +import javax.swing.JPanel; > +import javax.swing.JSlider; > +import javax.swing.JSpinner; > +import javax.swing.JTextField; > +import javax.swing.SpinnerNumberModel; > +import javax.swing.event.ChangeEvent; > +import javax.swing.event.ChangeListener; > + > +import net.sourceforge.jnlp.runtime.DeploymentConfiguration; > +import net.sourceforge.jnlp.runtime.Translator; > + > +/** > + * The actual panel that contains the fields that the user can edit accordingly. > + * This is provided as a pane for inside the Panel itself, can also be used to > + * display as a dialog. > + * TODO: Add functionality: > + * Delete Cache. > + * Restore Defaults. > + * > + * @author Andrew Su > + * > + */ > + at SuppressWarnings("serial") > +public class TemporaryInternetFilesPanel extends NamedBorderPanel implements ChangeListener { > + > + private DeploymentConfiguration config; > + private int minSize = -1; > + private int maxSize = 1000; > + > + /** List of properties used by this panel */ > + public static String[] properties = { "deployment.javapi.cache.enabled", // false == enabled > + "deployment.user.cachedir", > + "deployment.cache.max.size", // Specified in MB > + "deployment.cache.jarcompression", // Allows values 0-9 > + }; > + > + private JComponent defaultFocusComponent = null; > + JSpinner spCacheSize; > + JSlider slCacheSize; > + > + public TemporaryInternetFilesPanel(DeploymentConfiguration config) { > + super(Translator.R("CPHeadTempInternetFiles")); > + this.config = config; > + setLayout(new BorderLayout()); > + > + addComponents(); > + } > + > + /** > + * Add components to panel. > + */ > + private void addComponents() { > + JPanel topPanel = new JPanel(new GridBagLayout()); > + GridBagConstraints c = new GridBagConstraints(); > + c.fill = GridBagConstraints.BOTH; > + > + JLabel description = new JLabel("" + Translator.R("CPTempInternetFilesDescription") + "
"); > + > + JCheckBox enableCaching = new JCheckBox(Translator.R("TIFPEnableCache"), !Boolean.parseBoolean(this.config.getProperty(properties[0]))); > + enableCaching.addItemListener(new ItemListener() { > + @Override > + public void itemStateChanged(ItemEvent e) { > + config.setProperty(properties[0], String.valueOf(!(e.getStateChange() == ItemEvent.SELECTED))); > + } > + }); > + > + // This displays the option for changing location of cache > + // User can NOT edit the text field must do it through dialog. > + JPanel locationPanel = new NamedBorderPanel(Translator.R("TIFPLocation"), new GridBagLayout()); > + JLabel locationDescription = new JLabel(Translator.R("TIFPLocationLabel") + ":"); > + final JTextField location = new JTextField(this.config.getProperty(properties[1])); > + location.setEditable(false); // Can not c&p into the location field. > + JButton bLocation = new JButton(Translator.R("TIFPChange") + "..."); > + bLocation.addActionListener(new ActionListener() { > + @Override > + public void actionPerformed(ActionEvent e) { > + JFileChooser fileChooser = new JFileChooser(); > + fileChooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY); > + if (fileChooser.showOpenDialog(null) == JFileChooser.APPROVE_OPTION) { > + String result = fileChooser.getSelectedFile().getAbsolutePath(); > + location.setText(result); > + config.setProperty(properties[1], result); > + } > + } > + }); > + > + c.weightx = 1; > + c.gridwidth = GridBagConstraints.REMAINDER; > + c.gridx = 0; > + c.gridy = 0; > + locationPanel.add(locationDescription, c); > + c.gridwidth = 1; > + c.gridy = 1; > + locationPanel.add(location, c); > + c.gridx = 1; > + c.weightx = 0; > + locationPanel.add(bLocation, c); > + > + // This section deals with how to use the disk space. > + JPanel diskSpacePanel = new NamedBorderPanel(Translator.R("TIFPDiskSpace"), new GridBagLayout()); > + JLabel lCompression = new JLabel(Translator.R("TIFPCompressionLevel")); // Sets compression level for jar files. > + ComboItem[] compressionOptions = { new ComboItem(Translator.R("TIFPNone"), "0"), > + new ComboItem("1", "1"), > + new ComboItem("2", "2"), > + new ComboItem("3", "3"), > + new ComboItem("4", "4"), > + new ComboItem("5", "5"), > + new ComboItem("6", "6"), > + new ComboItem("7", "7"), > + new ComboItem("8", "8"), > + new ComboItem(Translator.R("TIFPMax"), "9"), }; > + JComboBox cbCompression = new JComboBox(compressionOptions); > + cbCompression.setSelectedIndex(Integer.parseInt(this.config.getProperty(properties[3]))); > + cbCompression.addItemListener(new ItemListener() { > + @Override > + public void itemStateChanged(ItemEvent e) { > + config.setProperty(properties[3], ((ComboItem) e.getItem()).getValue()); > + } > + }); > + > + // This is to work with how much space is available for caching. > + JLabel lCacheSize = new JLabel(Translator.R("TIFPCacheSize") + ":"); > + slCacheSize = new JSlider(minSize, maxSize, Integer.parseInt(this.config.getProperty(properties[2]))); > + slCacheSize.setMinorTickSpacing(50); > + slCacheSize.setPaintTicks(true); > + SpinnerNumberModel snmCacheSize = new SpinnerNumberModel(Integer.parseInt(this.config.getProperty(properties[2])), minSize, maxSize, 1); > + spCacheSize = new JSpinner(snmCacheSize); > + > + slCacheSize.addChangeListener(this); > + spCacheSize.addChangeListener(this); > + > + c.gridy = 0; > + c.gridx = 0; > + c.weightx = 1; > + diskSpacePanel.add(lCompression, c); > + c.gridx = 1; > + c.weightx = 0; > + diskSpacePanel.add(cbCompression, c); > + c.gridy = 1; > + c.gridx = 0; > + c.gridwidth = GridBagConstraints.REMAINDER; > + c.weightx = 1; > + diskSpacePanel.add(lCacheSize, c); > + c.gridwidth = 1; > + c.gridy = 2; > + diskSpacePanel.add(slCacheSize, c); > + c.gridx = 1; > + diskSpacePanel.add(spCacheSize, c); > + > + JPanel buttonDeleteRestore = new JPanel(new FlowLayout(FlowLayout.TRAILING)); > + JButton bDelete = new JButton(Translator.R("TIFPDeleteFiles") + "..."); > + JButton bRestore = new JButton(Translator.R("TIFPRestoreDefaults")); > + //TODO: Add functionality to restore and delete. Also need to add a view button! > + bDelete.setEnabled(false); > + bRestore.setEnabled(false); > + buttonDeleteRestore.add(bDelete); > + buttonDeleteRestore.add(bRestore); > + > + c.weighty = 0; > + c.gridx = 0; > + c.gridy = 0; > + topPanel.add(enableCaching, c); > + c.gridy = 1; > + topPanel.add(locationPanel, c); > + c.gridy = 2; > + topPanel.add(diskSpacePanel, c); > + c.weighty = 1; > + c.gridy = 3; > + topPanel.add(buttonDeleteRestore, c); > + add(description, BorderLayout.NORTH); > + add(topPanel, BorderLayout.CENTER); > + } > + > + /** > + * Give focus to the default button. > + */ > + public void focusOnDefaultButton() { > + if (defaultFocusComponent != null) { > + defaultFocusComponent.requestFocusInWindow(); > + } > + } > + > + public static void main(String[] args) throws ConfigurationException { > + final DeploymentConfiguration config = new DeploymentConfiguration(); > + config.load(); > + JDialog f = new JDialog(); > + f.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE); > + f.setPreferredSize(new Dimension(500, 300)); > + TemporaryInternetFilesPanel apsp = new TemporaryInternetFilesPanel(config); > + f.add(apsp); > + f.pack(); > + f.setVisible(true); > + } > + > + @Override > + public void stateChanged(ChangeEvent e) { > + Object o = e.getSource(); > + if (o instanceof JSlider) > + spCacheSize.setValue(((JSlider) o).getValue()); > + else if (o instanceof JSpinner) slCacheSize.setValue((Integer) ((JSpinner) o).getValue()); > + > + config.setProperty(properties[2], spCacheSize.getValue().toString()); > + } > +} > diff -r c267c4e2b844 netx/net/sourceforge/jnlp/resources/Messages.properties > --- a/netx/net/sourceforge/jnlp/resources/Messages.properties Mon Nov 29 10:19:17 2010 -0500 > +++ b/netx/net/sourceforge/jnlp/resources/Messages.properties Tue Nov 30 10:59:29 2010 -0500 > @@ -233,3 +233,129 @@ > KSCaCerts=Trusted Root CA Certificates > KSJsseCaCerts=Trusted JSSE Root CA Certificates, > KSClientCerts=Client Authentication Certificates > + > +# Control Panel - Tab Descriptions > +CPAboutDescription=View version information about Icedtea Control Panel. > +CPNetworkSettingsDescription=Configure network settings, including how IcedTea-Web connects to the internet and whether to use any proxies. > +CPTempInternetFilesDescription=Java stores application data for faster execution the next time you run it. > +CPJRESettingsDescription=View and manage Java Runtime Environment versions and settings for Java applications and applets. > +CPCertificatesDescription=Use certificates to positively identify yourself, certifications, authorities, and plublishers. > +CPSecurityDescription=Use this to configure security settings. > +CPDebuggingDescription=Enable options here to help with debugging > +CPDesktopIntegrationDescription=Set whether or not to allow creation of desktop shortcut. > + > +# Control Panel - Buttons > +CPButAbout=About... > +CPButNetworkSettings=Network Settings... > +CPButSettings=Settings... > +CPButView=View... > +CPButCertificates=Certificates... > + > +# Control Panel - Headers > +CPHead=IcedTea Web Control Panel > +CPHeadAbout=About > +CPHeadNetworkSettings=Network Proxy Settings > +CPHeadTempInternetFiles=Temporary Internet Files > +CPHeadJRESettings=Java Runtime Environment Settings > +CPHeadCertificates=Certificates > +CPHeadDebugging=Debugging Settings > +CPHeadDesktopIntegration=Desktop Integrations > +CPHeadSecurity=Security Settings > + > +# Control Panel - Tabs > +CPTabAbout=About IcedTea-Web > +CPTabCache=Cache > +CPTabCertificate=Certificates > +CPTabClassLoader=Class Loaders > +CPTabDebugging=Debugging > +CPTabDesktopIntegration=Desktop Integration > +CPTabNetwork=Network > +CPTabRuntimes=Runtimes > +CPTabSecurity=Security > + > +# Control Panel - AboutPanel > +CPAboutInfo=This is the control panel for setting deployments.properties.
Not all options will take effect until implemented.
Currently does not support multiple JRE.
> + > +# Control Panel - AdvancedProxySettings > +APSDialogTitle=Network Settings > +APSServersPanel=Servers > +APSProxyTypeLabel=Type > +APSProxyAddressLabel=Proxy Address > +APSProxyPortLabel=Port > +APSLabelHTTP=HTTP > +APSLabelSecure=Secure > +APSLabelFTP=FTP > +APSLabelSocks=Socks > +APSSameProxyForAllProtocols=Use the same proxy server for all protocols. > +APSExceptionsLabel=Exceptions > +APSExceptionsDescription=Do not use proxy server for addresses beginning with > +APSExceptionInstruction=Separate each entry with a semicolon. > + > +# Control Panel - DebugginPanel > +DPEnableTracing=Enable tracing > +DPEnableLogging=Enable logging > +DPLifeCycleExceptions=Show applet lifecycle exceptions > +DPDisable=Disable > +DPHide=Hide on startup > +DPShow=Show on startup > +DPJavaConsole=Java Console > + > +# Control Panel - DesktopShortcutPanel > +DSPNeverCreate=Never create > +DSPAlwaysAllow=Always allow > +DSPAskUser=Ask user > +DSPAskIfHinted=Ask if hinted > +DSPAlwaysIfHinted=Always if hinted > + > +# Control Panel - NetworkSettingsPanel > +NSDescription-1=Unknown Setting. > +NSDescription0=Use direct connection. > +NSDescription1=Override browser proxy settings. > +NSDescription2=Use automatic proxy configuration script at the specified location. > +NSDescription3=Use proxy settings from your default browser to connect to the internet. > +NSAddress=Address > +NSPort=Port > +NSAdvanced=Advanced > +NSBypassLocal=Bypass proxy server for local addresses > +NSDirectConnection=Direct connection > +NSManualProxy=Manual proxy server > +NSAutoProxy=Automatic proxy configuration script > +NSBrowserProxy=Use browser settings > +NSScriptLocation=Script location > + > +# Control Panel - SecurityGeneralPanel > +SGPAllowUserGrantSigned=Allow users to grant permissions to signed content > +SGPAllowUserGrantUntrust=Allow users to grant permissions to content from an untrusted authority > +SGPUseBrowserKeystore=Use certificates and keys in browser keystore (Unsupported) > +SGPUsePersonalCertOneMatch=Use personal certificate automatically if only one matches server request (Unsupported) > +SGPWarnCertHostMismatch=Warn if site certificate does not match hostname > +SGPShowValid=Show site certificate even if it is valid (Unsupported) > +SGPShowSandboxWarning=Show sandbox warning banner > +SGPAllowUserAcceptJNLPSecurityRequests=Allow user to accept JNLP security requests > +SGPCheckCertRevocationList=Check certificates for revocation using Certificate Revocation Lists (CRLs) (Unsupported) > +SGPEnableOnlineCertValidate=Enable online certificate validation (Unsupported) > +SGPEnableTrustedPublisherList=Enable list of trusted publishers (Unsupported) > +SGPEnableBlacklistRevocation=Enable blacklist revocation check (Unsupported) > +SGPEnableCachingPassword=Enable caching password for authentication (Unsupported) > +SGPUseSSL2=Use SSL 2.0 compatible ClientHello format (Unsupported) > +SGPUseSSL3=Use SSL 3.0 (Unsupported) > +SGPUseTLS1=Use TLS 1.0 (Unsupported) > + > +# Control Panel - TemporaryInternetFilesPanel > +TIFPEnableCache=Keep temporary files on my computer > +TIFPLocation=Location > +TIFPLocationLabel=Select the location where temporary files are kept > +TIFPChange=Change > +TIFPDiskSpace=Disk space > +TIFPCompressionLevel=Select the compression level for JAR files > +TIFPNone=None > +TIFPMax=Max > +TIFPCacheSize=Set the amount of disk space for storing temporary files > +TIFPDeleteFiles=Delete files > +TIFPRestoreDefaults=Restore defaults > + > +# Control Panel - Misc. > +CPJRESupport=Icedtea-web currently does not support multiple JRE. > + > +# Buttons > +ButApply=Apply > diff -r c267c4e2b844 netx/net/sourceforge/jnlp/security/viewer/CertificatePane.java > --- a/netx/net/sourceforge/jnlp/security/viewer/CertificatePane.java Mon Nov 29 10:19:17 2010 -0500 > +++ b/netx/net/sourceforge/jnlp/security/viewer/CertificatePane.java Tue Nov 30 10:59:29 2010 -0500 > @@ -230,17 +230,18 @@ > tablePanel.add(tabbedPane, BorderLayout.CENTER); > tablePanel.add(buttonPanel, BorderLayout.SOUTH); > > - JPanel closePanel = new JPanel(new BorderLayout()); > - closePanel.setBorder(BorderFactory.createEmptyBorder(7,7,7,7)); > - JButton closeButton = new JButton(R("ButClose")); > - closeButton.addActionListener(new CloseButtonListener()); > - defaultFocusComponent = closeButton; > - closePanel.add(closeButton, BorderLayout.EAST); > - > main.add(certificateTypePanel, BorderLayout.NORTH); > main.add(tablePanel, BorderLayout.CENTER); > - main.add(closePanel, BorderLayout.SOUTH); > - > + > + if (parent != null){ > + JPanel closePanel = new JPanel(new BorderLayout()); > + closePanel.setBorder(BorderFactory.createEmptyBorder(7,7,7,7)); > + JButton closeButton = new JButton(R("ButClose")); > + closeButton.addActionListener(new CloseButtonListener()); > + defaultFocusComponent = closeButton; > + closePanel.add(closeButton, BorderLayout.EAST); > + main.add(closePanel, BorderLayout.SOUTH); > + } > add(main); > > } -- Andrew :) Free Java Software Engineer Red Hat, Inc. (http://www.redhat.com) Support Free Java! Contribute to GNU Classpath and the OpenJDK http://www.gnu.org/software/classpath http://openjdk.java.net PGP Key: 94EFD9D8 (http://subkeys.pgp.net) Fingerprint = F8EF F1EA 401E 2E60 15FA 7927 142C 2591 94EF D9D8 From dbhole at redhat.com Tue Nov 30 09:01:22 2010 From: dbhole at redhat.com (Deepak Bhole) Date: Tue, 30 Nov 2010 12:01:22 -0500 Subject: [RFC][icedtea-web]: Adding control panel to icedtea-web In-Reply-To: <612457092.848621291132803125.JavaMail.root@zmail01.collab.prod.int.phx2.redhat.com> References: <1738146044.848511291132775127.JavaMail.root@zmail01.collab.prod.int.phx2.redhat.com> <612457092.848621291132803125.JavaMail.root@zmail01.collab.prod.int.phx2.redhat.com> Message-ID: <20101130170121.GE16755@redhat.com> * Andrew Su [2010-11-30 11:29]: > Hello, > > The attached patch is to move the control panel into netx instead of having its own package. > > ChangeLog: > * Makefile.am: > (CONTROLPANEL_LAUNCHER_OBJECTS): Objects used to compile binary > control panel. > (all-local): Add $(NETX_DIR)/launcher/controlpanel/controlpanel. > (install-exec-local): Install the control panel binary. > (uninstall-local): Removes the compiled control panel binary. > ($(NETX_DIR)/launcher/controlpanel/%.o): Create the launcher objects. > ($(NETX_DIR)/launcher/controlpanel/controlpanel): Link the objects to > make the launcher. > * netx/net/sourceforge/jnlp/controlpanel/AboutPanel.java, > * netx/net/sourceforge/jnlp/controlpanel/ComboItem.java, > * netx/net/sourceforge/jnlp/controlpanel/ControlPanel.java, > * netx/net/sourceforge/jnlp/controlpanel/DebuggingPanel.java, > * netx/net/sourceforge/jnlp/controlpanel/DesktopShortcutPanel.java, > * netx/net/sourceforge/jnlp/controlpanel/JREPanel.java, > * netx/net/sourceforge/jnlp/controlpanel/NamedBorderPanel.java, > * netx/net/sourceforge/jnlp/controlpanel/SecuritySettingsPanel.java, > * netx/net/sourceforge/jnlp/controlpanel/TemporaryInternetFilesPanel.java, > * netx/net/sourceforge/jnlp/controlpanel/network/AdvancedProxySettingsDialog.java, > * netx/net/sourceforge/jnlp/controlpanel/network/AdvancedProxySettingsPane.java, > * netx/net/sourceforge/jnlp/controlpanel/network/NetworkSettingsPanel.java,: > New classes. All methods are new as well. > * netx/net/sourceforge/jnlp/resources/Messages.properties: Added > messages used by control panel. > * netx/net/sourceforge/jnlp/security/viewer/CertificatePane.java: > Changed to not display a close button if null parent frame. > > Questions? Comments? Concerns? > > --Andrew > > There are failures when applying the patch to HEAD and they need to be fixed first. $ patch --dry-run -p1 < /tmp/20101130_controlpanel.patch patching file Makefile.am Hunk #4 FAILED at 108. Hunk #5 FAILED at 131. Hunk #6 FAILED at 303. 3 out of 6 hunks FAILED -- saving rejects to file Makefile.am.rej patching file netx/net/sourceforge/jnlp/controlpanel/AboutPanel.java patching file netx/net/sourceforge/jnlp/controlpanel/AdvancedProxySettingsDialog.java patching file netx/net/sourceforge/jnlp/controlpanel/AdvancedProxySettingsPane.java patching file netx/net/sourceforge/jnlp/controlpanel/ComboItem.java patching file netx/net/sourceforge/jnlp/controlpanel/ControlPanel.java patching file netx/net/sourceforge/jnlp/controlpanel/DebuggingPanel.java patching file netx/net/sourceforge/jnlp/controlpanel/DesktopShortcutPanel.java patching file netx/net/sourceforge/jnlp/controlpanel/JREPanel.java patching file netx/net/sourceforge/jnlp/controlpanel/NamedBorderPanel.java patching file netx/net/sourceforge/jnlp/controlpanel/NetworkSettingsPanel.java patching file netx/net/sourceforge/jnlp/controlpanel/SecuritySettingsPanel.java patching file netx/net/sourceforge/jnlp/controlpanel/TemporaryInternetFilesPanel.java patching file netx/net/sourceforge/jnlp/resources/Messages.properties Hunk #1 FAILED at 233. 1 out of 1 hunk FAILED -- saving rejects to file netx/net/sourceforge/jnlp/resources/Messages.properties.rej patching file netx/net/sourceforge/jnlp/security/viewer/CertificatePane.java Cheers, Deepak > > ----- "Andrew Su" wrote: > > > From: "Andrew Su" > > To: distro-pkg-dev at openjdk.java.net > > Sent: Monday, November 29, 2010 4:14:26 PM GMT -05:00 US/Canada Eastern > > Subject: Re: [RFC][icedtea-web]: Adding control panel to icedtea-web > > > > Hello, > > > > Here is the updated patch for adding the control panel. If I missed > > something let me know. > > > > Right now I've left netx/net/sourceforge/jnlp/security/viewer/* and > > not > > deleted them. > > It is currently copied into org/classpath/icedtea/controlpanel/ but I > > > > was looking at javaws, which uses the viewer. > > Our options are to either remove, the parameter "-viewer" for javaws > > > > (for now) then later re-place it back in... > > or to leave netx/net/sourceforge/jnlp/security/viewer/* as it is. > > > > Opinions? > > > > * Makefile.am: > > (CONTROLPANEL_DIR): Build directory for control panel. > > (CONTROLPANEL_SRCDIR): Source directory for control panel. > > (CONTROLPANEL_LAUNCHER_OBJECTS): Objects used to compile > > binary > > control panel. > > (all-local): Add stamps/controlpanel-dist.stamp > > stamps/controlpanel.stamp > > $(CONTROLPANEL_DIR)/launcher/controlpanel. > > (clean-local): Add clean-controlpanel. > > (install-exec-local): Install the control panel jar file and > > > > control > > panel binary. > > (uninstall-local): Delete controlpanel.jar and controlpanel > > binary > > from installed location. > > (controlpanel-source-files.txt): Get the list of source files > > for > > control panel. > > (stamps/controlpanel.stamp): Compile the java files for > > control > > panel. > > (stamps/controlpanel-dist.stamp): Depend on > > stamps/controlpanel.stamp. > > Create the jar file for control panel. > > ($(CONTROLPANEL_DIR)/launcher/%.o): Create the launcher > > objects. > > ($(CONTROLPANEL_DIR)/launcher/controlpanel): Link the objects > > > > to make > > the launcher. > > (clean-controlpanel): Remove the compiled control panel. > > (controlpanel): Calls stamps/controlpanel.stamp. > > (controlpanel-dist): Calls stamps/controlpanel-dist.stamp. > > (stamps/docs.stamp): Calls stamps/controlpanel-docs.stamp. > > (clean-docs): Calls clean-controlpanel-docs. > > (stamps/controlpanel-docs.stamp): Create the documentation > > for > > controlpanel. > > (clean-controlpanel-docs): Remove the documentation > > * > > controlpanel/org/classpath/icedtea/controlpanel/AboutPanel.java, > > * > > controlpanel/org/classpath/icedtea/controlpanel/ComboItem.java, > > * > > controlpanel/org/classpath/icedtea/controlpanel/ControlPanel.java, > > * > > controlpanel/org/classpath/icedtea/controlpanel/DebuggingPanel.java, > > * > > controlpanel/org/classpath/icedtea/controlpanel/DesktopShortcutPanel.java, > > * > > controlpanel/org/classpath/icedtea/controlpanel/JREPanel.java, > > * > > controlpanel/org/classpath/icedtea/controlpanel/NamedBorderPanel.java, > > * > > controlpanel/org/classpath/icedtea/controlpanel/SecuritySettingsPanel.java, > > * > > controlpanel/org/classpath/icedtea/controlpanel/TemporaryInternetFilesPanel.java, > > * > > controlpanel/org/classpath/icedtea/controlpanel/network/AdvancedProxySettingsDialog.java, > > * > > controlpanel/org/classpath/icedtea/controlpanel/network/AdvancedProxySettingsPane.java, > > * > > controlpanel/org/classpath/icedtea/controlpanel/network/NetworkSettingsPanel.java, > > * > > controlpanel/org/classpath/icedtea/controlpanel/security/viewer/CertificatePane.java, > > * > > controlpanel/org/classpath/icedtea/controlpanel/security/viewer/CertificateViewer.java: > > New classes. All methods are new as well. > > * > > controlpanel/org/classpath/icedtea/controlpanel/translator/Translator.java: > > Copied over from > > netx/net/sourceforge/jnlp/runtime/Translator.java and changed > > package. > > * netx/net/sourceforge/jnlp/resources/Messages.properties: > > Added > > messages for control panel. > > > > > -- Snip -- > diff -r c267c4e2b844 Makefile.am > --- a/Makefile.am Mon Nov 29 10:19:17 2010 -0500 > +++ b/Makefile.am Tue Nov 30 10:59:29 2010 -0500 > @@ -29,7 +29,7 @@ > net.sourceforge.jnlp.cache net.sourceforge.jnlp.event \ > net.sourceforge.jnlp.security net.sourceforge.jnlp.security.viewer \ > net.sourceforge.jnlp.services net.sourceforge.jnlp.tools \ > - net.sourceforge.jnlp.util > + net.sourceforge.jnlp.util net.sourceforge.jnlp.controlpanel > > # Conditional defintions > if ENABLE_PLUGIN > @@ -74,6 +74,7 @@ > LAUNCHER_OBJECTS = java.o java_md.o splashscreen_stubs.o > PLUGIN_LAUNCHER_OBJECTS = $(addprefix $(PLUGIN_DIR)/launcher/,$(LAUNCHER_OBJECTS)) > NETX_LAUNCHER_OBJECTS = $(addprefix $(NETX_DIR)/launcher/,$(LAUNCHER_OBJECTS)) > +CONTROLPANEL_LAUNCHER_OBJECTS = $(addprefix $(NETX_DIR)/launcher/controlpanel/,$(LAUNCHER_OBJECTS)) > LAUNCHER_FLAGS = -O2 -fno-strict-aliasing -fPIC -pthread -W -Wall -Wno-unused -Wno-parentheses -pipe -fno-omit-frame-pointer \ > -g -D_LARGEFILE64_SOURCE -D_GNU_SOURCE -D_REENTRANT -DLAUNCHER_NAME='"java"' -I$(LAUNCHER_SRCDIR) \ > -DJDK_MAJOR_VERSION='"1"' -DJDK_MINOR_VERSION='"6"' -DLIBARCHNAME='"$(JRE_ARCH_DIR)"' > @@ -89,7 +90,7 @@ > # ================= > > all-local: stamps/netx-dist.stamp extra-lib/about.jar stamps/plugin.stamp $(NETX_DIR)/launcher/javaws \ > - javaws.desktop stamps/docs.stamp > + $(NETX_DIR)/launcher/controlpanel/controlpanel javaws.desktop stamps/docs.stamp > > clean-local: clean-netx clean-plugin clean-liveconnect clean-extra clean-bootstrap-directory \ > clean-native-ecj clean-desktop-files clean-docs > @@ -107,6 +108,7 @@ > endif > cp -pPRf $(NETX_DIR)/lib/classes.jar $(DESTDIR)$(prefix)/jre/lib/netx.jar > cp -pPRf $(NETX_DIR)/launcher/javaws $(DESTDIR)$(bindir) > + cp -pPRf $(NETX_DIR)/launcher/controlpanel/controlpanel $(DESTDIR)$(bindir) > cp extra-lib/about.jar $(DESTDIR)$(prefix)/jre/lib > > install-data-local: > @@ -130,6 +132,7 @@ > rm -f $(DESTDIR)$(prefix)/man/man1/javaws.1 > rm -f $(DESTDIR)$(bindir)/pluginappletviewer > rm -f $(DESTDIR)$(bindir)/javaws > + rm -f $(DESTDIR)$(bindir)/controlpanel > > # Plugin > > @@ -302,10 +305,19 @@ > $(CC) $(LAUNCHER_FLAGS) -DJAVA_ARGS='{ "-J-ms8m", "net.sourceforge.jnlp.runtime.Boot", }' -DPROGNAME='"javaws"' \ > -c -o $@ $< > > +$(NETX_DIR)/launcher/controlpanel/%.o: $(LAUNCHER_SRCDIR)/%.c > + mkdir -p $(NETX_DIR)/launcher/controlpanel && \ > + $(CC) $(LAUNCHER_FLAGS) -DJAVA_ARGS='{ "-J-ms8m", "net.sourceforge.jnlp.controlpanel.ControlPanel", }' -DPROGNAME='"controlpanel"' \ > + -c -o $@ $< > + > $(NETX_DIR)/launcher/javaws: $(NETX_LAUNCHER_OBJECTS) > mkdir -p launcher > $(CC) $(NETX_LAUNCHER_OBJECTS) $(LAUNCHER_LINK) > > +$(NETX_DIR)/launcher/controlpanel/controlpanel: $(CONTROLPANEL_LAUNCHER_OBJECTS) > + mkdir -p launcher > + $(CC) $(CONTROLPANEL_LAUNCHER_OBJECTS) $(LAUNCHER_LINK) > + > javaws.desktop: javaws.desktop.in > sed "s#PATH_TO_JAVAWS#$(DESTDIR)$(bindir)/javaws#" < $(srcdir)/javaws.desktop.in > javaws.desktop > > diff -r c267c4e2b844 netx/net/sourceforge/jnlp/controlpanel/AboutPanel.java > --- /dev/null Thu Jan 01 00:00:00 1970 +0000 > +++ b/netx/net/sourceforge/jnlp/controlpanel/AboutPanel.java Tue Nov 30 10:59:29 2010 -0500 > @@ -0,0 +1,64 @@ > +/* AboutPanel.java -- Display information about the control panel and icedtea-web. > +Copyright (C) 2010 Red Hat > + > +This program is free software; you can redistribute it and/or modify > +it under the terms of the GNU General Public License as published by > +the Free Software Foundation; either version 2 of the License, or > +(at your option) any later version. > + > +This program is distributed in the hope that it will be useful, but > +WITHOUT ANY WARRANTY; without even the implied warranty of > +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU > +General Public License for more details. > + > +You should have received a copy of the GNU General Public License > +along with this program; if not, write to the Free Software > +Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA > + */ > + > +package net.sourceforge.jnlp.controlpanel; > + > +import java.awt.Component; > +import java.awt.Dimension; > +import java.awt.GridBagConstraints; > +import java.awt.GridBagLayout; > + > +import javax.swing.Box; > +import javax.swing.JLabel; > + > +import net.sourceforge.jnlp.runtime.Translator; > + > +/** > + * This class provides a GUI interface which shows some basic information on > + * this project. > + * > + * @author Andrew Su > + * > + */ > + at SuppressWarnings("serial") > +public class AboutPanel extends NamedBorderPanel { > + > + public AboutPanel() { > + super(Translator.R("CPHeadAbout"), new GridBagLayout()); > + GridBagConstraints c = new GridBagConstraints(); > + > + JLabel logo = new JLabel(); > + JLabel aboutLabel = new JLabel("" + Translator.R("CPAboutInfo") + ""); > + > + c.fill = GridBagConstraints.BOTH; > + c.gridy = 0; > + c.gridx = 0; > + c.weighty = 0; > + c.weightx = 0; > + add(logo, c); > + c.gridx = 1; > + c.weightx = 1; > + add(aboutLabel, c); > + > + /* Keep all the elements at the top of the panel (Extra padding) */ > + Component filler = Box.createRigidArea(new Dimension(1, 1)); > + c.weighty = 1; > + c.gridy++; > + add(filler, c); > + } > +} > diff -r c267c4e2b844 netx/net/sourceforge/jnlp/controlpanel/AdvancedProxySettingsDialog.java > --- /dev/null Thu Jan 01 00:00:00 1970 +0000 > +++ b/netx/net/sourceforge/jnlp/controlpanel/AdvancedProxySettingsDialog.java Tue Nov 30 10:59:29 2010 -0500 > @@ -0,0 +1,141 @@ > +/* AdvancedProxySettingsDialog.java -- Display the dialog for modifying proxy settings. > +Copyright (C) 2010 Red Hat > + > +This program is free software; you can redistribute it and/or modify > +it under the terms of the GNU General Public License as published by > +the Free Software Foundation; either version 2 of the License, or > +(at your option) any later version. > + > +This program is distributed in the hope that it will be useful, but > +WITHOUT ANY WARRANTY; without even the implied warranty of > +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU > +General Public License for more details. > + > +You should have received a copy of the GNU General Public License > +along with this program; if not, write to the Free Software > +Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA > + */ > + > +package net.sourceforge.jnlp.controlpanel; > + > +import java.awt.Container; > +import java.awt.Dimension; > +import java.awt.Frame; > +import java.awt.GridBagConstraints; > +import java.awt.GridBagLayout; > +import java.awt.Toolkit; > +import java.awt.event.WindowAdapter; > +import java.awt.event.WindowEvent; > + > +import javax.swing.JDialog; > +import javax.swing.UIManager; > + > +import net.sourceforge.jnlp.runtime.DeploymentConfiguration; > +import net.sourceforge.jnlp.runtime.Translator; > + > +/** > + * This dialog provides a means for user to edit more of the proxy settings. > + * > + * @author Andrew Su > + * > + */ > + at SuppressWarnings("serial") > +public class AdvancedProxySettingsDialog extends JDialog { > + > + private boolean initialized = false; > + private static final String dialogTitle = Translator.R("APSDialogTitle"); > + private DeploymentConfiguration config; // Configuration file which contains all the settings. > + > + AdvancedProxySettingsPane topPanel; > + > + public AdvancedProxySettingsDialog(DeploymentConfiguration config) { > + super((Frame) null, dialogTitle, true); // Don't need a parent. > + this.config = config; > + > + /* Prepare for adding components to dialog box */ > + Container contentPane = getContentPane(); > + contentPane.setLayout(new GridBagLayout()); > + setMinimumSize(new Dimension(456, 404)); > + setPreferredSize(new Dimension(456, 404)); > + > + GridBagConstraints c = new GridBagConstraints(); > + c.fill = GridBagConstraints.BOTH; > + c.weightx = 1; > + c.weighty = 1; > + c.gridx = 0; > + c.gridy = 0; > + topPanel = new AdvancedProxySettingsPane(this, this.config); > + contentPane.add(topPanel, c); > + > + pack(); > + > + /* Set focus to default button when first activated */ > + WindowAdapter adapter = new WindowAdapter() { > + private boolean gotFocus = false; > + > + public void windowGainedFocus(WindowEvent we) { > + // Once window gets focus, set initial focus > + if (!gotFocus) { > + topPanel.focusOnDefaultButton(); > + gotFocus = true; > + } > + } > + }; > + addWindowFocusListener(adapter); > + > + initialized = true; > + } > + > + /** > + * Check whether the dialog has finished being created. > + * > + * @return True if dialog is ready to be displayed. > + */ > + public boolean isInitialized() { > + return initialized; > + } > + > + /** > + * Center the dialog box. > + */ > + private void centerDialog() { > + Dimension screen = Toolkit.getDefaultToolkit().getScreenSize(); > + Dimension dialogSize = getSize(); > + > + setLocation((screen.width - dialogSize.width) / 2, (screen.height - dialogSize.height) / 2); > + } > + > + /** > + * Display the Proxy Settings Dialog. > + * > + * @param config > + * A loaded DeploymentConfiguration file. > + * @throws Exception > + */ > + public static void showAdvancedProxySettingsDialog(DeploymentConfiguration config) throws Exception { > + setSystemLookAndFeel(); > + > + AdvancedProxySettingsDialog nsd = new AdvancedProxySettingsDialog(config); > + nsd.setResizable(false); > + nsd.centerDialog(); > + nsd.setVisible(true); > + nsd.dispose(); > + } > + > + /** > + * Set the look and feel. > + */ > + private static void setSystemLookAndFeel() { > + try { > + UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); > + } catch (Exception e) { > + // don't worry if we can't. > + } > + } > + > + public static void main(String[] args) throws Exception { > + final DeploymentConfiguration config = new DeploymentConfiguration(); > + config.load(); > + showAdvancedProxySettingsDialog(config); > + } > +} > diff -r c267c4e2b844 netx/net/sourceforge/jnlp/controlpanel/AdvancedProxySettingsPane.java > --- /dev/null Thu Jan 01 00:00:00 1970 +0000 > +++ b/netx/net/sourceforge/jnlp/controlpanel/AdvancedProxySettingsPane.java Tue Nov 30 10:59:29 2010 -0500 > @@ -0,0 +1,473 @@ > +/* AdvancedProxySettingsPane.java -- Provides the panel which can modify proxy settings. > +Copyright (C) 2010 Red Hat > + > +This program is free software; you can redistribute it and/or modify > +it under the terms of the GNU General Public License as published by > +the Free Software Foundation; either version 2 of the License, or > +(at your option) any later version. > + > +This program is distributed in the hope that it will be useful, but > +WITHOUT ANY WARRANTY; without even the implied warranty of > +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU > +General Public License for more details. > + > +You should have received a copy of the GNU General Public License > +along with this program; if not, write to the Free Software > +Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA > + */ > + > +package net.sourceforge.jnlp.controlpanel; > + > +import java.awt.BorderLayout; > +import java.awt.Dimension; > +import java.awt.FlowLayout; > +import java.awt.GridBagConstraints; > +import java.awt.GridBagLayout; > +import java.awt.event.ActionEvent; > +import java.awt.event.ActionListener; > +import java.awt.event.ItemEvent; > +import java.awt.event.ItemListener; > +import java.awt.event.KeyEvent; > +import java.awt.event.KeyListener; > +import java.awt.event.MouseEvent; > +import java.awt.event.MouseListener; > +import java.util.ArrayList; > +import java.util.List; > + > +import javax.naming.ConfigurationException; > +import javax.swing.BoxLayout; > +import javax.swing.JButton; > +import javax.swing.JCheckBox; > +import javax.swing.JComponent; > +import javax.swing.JDialog; > +import javax.swing.JLabel; > +import javax.swing.JPanel; > +import javax.swing.JScrollPane; > +import javax.swing.JTextArea; > +import javax.swing.JTextField; > + > +import net.sourceforge.jnlp.runtime.DeploymentConfiguration; > +import net.sourceforge.jnlp.runtime.Translator; > + > +/** > + * This is the pane that modifies the proxy settings in more detail. > + * > + * @author Andrew Su > + * > + */ > + at SuppressWarnings("serial") > +public class AdvancedProxySettingsPane extends JPanel { > + > + private JDialog parent; > + private DeploymentConfiguration config; > + > + /** List of properties used by this panel */ > + public static String[] properties = { "deployment.proxy.http.host", > + "deployment.proxy.http.port", > + "deployment.proxy.https.host", > + "deployment.proxy.https.port", > + "deployment.proxy.ftp.host", > + "deployment.proxy.ftp.port", > + "deployment.proxy.socks.host", > + "deployment.proxy.socks.port", > + "deployment.proxy.same", > + "deployment.proxy.override.hosts" }; > + private String[] fields = new String[properties.length]; > + > + private JComponent defaultFocusComponent = null; > + > + public AdvancedProxySettingsPane(JDialog parent, DeploymentConfiguration config) { > + super(new BorderLayout()); > + this.parent = parent; > + this.config = config; > + > + getProperties(); > + addComponents(); > + } > + > + /** > + * Place properties into an array, this is so when cancel is hit. We don't > + * overwrite the original values. > + */ > + private void getProperties() { > + for (int i = 0; i < fields.length; i++) { > + fields[i] = this.config.getProperty(properties[i]); > + } > + } > + > + /** > + * Add the components to the panel. > + * FIXME: We should probably refactor the listeners and do them in a more > + * generic way. Also can change this from using textfield to using a table. > + */ > + private void addComponents() { > + JPanel topPanel = new JPanel(new GridBagLayout()); > + GridBagConstraints c = new GridBagConstraints(); > + > + JPanel servers = new NamedBorderPanel(Translator.R("APSServersPanel")); > + servers.setLayout(new GridBagLayout()); > + > + JLabel type = new JLabel(Translator.R("APSProxyTypeLabel")); > + JLabel proxyAddress = new JLabel(Translator.R("APSProxyAddress")); > + JLabel port = new JLabel(Translator.R("SPSProxyPortLabel")); > + > + // This addresses the HTTP proxy settings. > + JLabel http = new JLabel(Translator.R("APSLabelHTTP") + ":"); > + final JTextField httpAddressField = new JTextField(fields[0]); > + final JTextField httpPortField = new JTextField(fields[1]); > + httpAddressField.addKeyListener(new KeyListener() { > + @Override > + public void keyPressed(KeyEvent e) { > + } > + > + @Override > + public void keyReleased(KeyEvent e) { > + fields[0] = httpAddressField.getText(); > + } > + > + @Override > + public void keyTyped(KeyEvent e) { > + } > + }); > + httpPortField.addKeyListener(new KeyListener() { > + @Override > + public void keyPressed(KeyEvent e) { > + } > + > + @Override > + public void keyReleased(KeyEvent e) { > + fields[1] = httpPortField.getText(); > + } > + > + @Override > + public void keyTyped(KeyEvent e) { > + } > + }); > + httpAddressField.addMouseListener(new MiddleClickListener(this.config, properties[0])); > + httpPortField.addMouseListener(new MiddleClickListener(this.config, properties[1])); > + > + // This addresses the HTTPS proxy settings. > + JLabel secure = new JLabel(Translator.R("APSLabelSecure") + ":"); > + final JTextField secureAddressField = new JTextField(fields[2]); > + final JTextField securePortField = new JTextField(fields[3]); > + secureAddressField.addKeyListener(new KeyListener() { > + @Override > + public void keyPressed(KeyEvent e) { > + } > + > + @Override > + public void keyReleased(KeyEvent e) { > + fields[2] = secureAddressField.getText(); > + } > + > + @Override > + public void keyTyped(KeyEvent e) { > + } > + }); > + securePortField.addKeyListener(new KeyListener() { > + @Override > + public void keyPressed(KeyEvent e) { > + } > + > + @Override > + public void keyReleased(KeyEvent e) { > + fields[3] = securePortField.getText(); > + } > + > + @Override > + public void keyTyped(KeyEvent e) { > + } > + }); > + secureAddressField.addMouseListener(new MiddleClickListener(this.config, properties[2])); > + securePortField.addMouseListener(new MiddleClickListener(this.config, properties[3])); > + > + // This addresses the FTP proxy settings. > + JLabel ftp = new JLabel(Translator.R("APSLabelFTP") + ":"); > + final JTextField ftpAddressField = new JTextField(fields[4]); > + final JTextField ftpPortField = new JTextField(fields[5]); > + ftpAddressField.addKeyListener(new KeyListener() { > + @Override > + public void keyPressed(KeyEvent e) { > + } > + > + @Override > + public void keyReleased(KeyEvent e) { > + fields[4] = ftpAddressField.getText(); > + } > + > + @Override > + public void keyTyped(KeyEvent e) { > + } > + }); > + ftpPortField.addKeyListener(new KeyListener() { > + @Override > + public void keyPressed(KeyEvent e) { > + } > + > + @Override > + public void keyReleased(KeyEvent e) { > + fields[5] = ftpPortField.getText(); > + } > + > + @Override > + public void keyTyped(KeyEvent e) { > + } > + }); > + ftpAddressField.addMouseListener(new MiddleClickListener(this.config, properties[4])); > + ftpPortField.addMouseListener(new MiddleClickListener(this.config, properties[5])); > + > + // This addresses the Socks proxy settings. > + JLabel socks = new JLabel(Translator.R("APSLabelSocks") + ":"); > + final JTextField socksAddressField = new JTextField(fields[6]); > + final JTextField socksPortField = new JTextField(fields[7]); > + socksAddressField.addKeyListener(new KeyListener() { > + @Override > + public void keyPressed(KeyEvent e) { > + } > + > + @Override > + public void keyReleased(KeyEvent e) { > + fields[6] = socksAddressField.getText(); > + } > + > + @Override > + public void keyTyped(KeyEvent e) { > + } > + }); > + socksPortField.addKeyListener(new KeyListener() { > + @Override > + public void keyPressed(KeyEvent e) { > + } > + > + @Override > + public void keyReleased(KeyEvent e) { > + fields[7] = socksPortField.getText(); > + } > + > + @Override > + public void keyTyped(KeyEvent e) { > + } > + }); > + socksAddressField.addMouseListener(new MiddleClickListener(this.config, properties[6])); > + socksPortField.addMouseListener(new MiddleClickListener(this.config, properties[7])); > + > + JCheckBox sameProxyForAll = new JCheckBox(Translator.R("APSSameProxyForAllProtocols"), Boolean.parseBoolean(fields[8])); > + sameProxyForAll.addItemListener(new ItemListener() { > + @Override > + public void itemStateChanged(ItemEvent e) { > + fields[8] = String.valueOf(e.getStateChange() == ItemEvent.SELECTED); > + } > + }); > + > + JPanel p = new JPanel(); > + BoxLayout bl = new BoxLayout(p, BoxLayout.Y_AXIS); > + p.setLayout(bl); > + p.add(sameProxyForAll); > + > + c.fill = GridBagConstraints.BOTH; > + c.gridheight = 1; > + c.gridy = 0; > + c.gridwidth = 1; > + c.weightx = 0; > + c.gridx = 0; > + servers.add(type, c); > + c.gridwidth = 2; > + c.weightx = 1; > + c.gridx = 1; > + servers.add(proxyAddress, c); > + c.gridwidth = 1; > + c.weightx = 1; > + c.gridx = 4; > + servers.add(port, c); > + > + plant(1, http, httpAddressField, httpPortField, servers, c); > + plant(2, secure, secureAddressField, securePortField, servers, c); > + plant(3, ftp, ftpAddressField, ftpPortField, servers, c); > + plant(4, socks, socksAddressField, socksPortField, servers, c); > + c.gridwidth = 5; > + c.gridx = 0; > + c.gridy = 5; > + servers.add(p, c); > + > + JPanel exceptions = new NamedBorderPanel(Translator.R("APSExceptionsLabel")); > + exceptions.setLayout(new BorderLayout()); > + JLabel exceptionDescription = new JLabel(Translator.R("APSExceptionsDescription")); > + final JTextArea exceptionListArea = new JTextArea(); > + exceptionListArea.setLineWrap(true); > + exceptionListArea.setText(fields[9]); > + exceptionListArea.addKeyListener(new KeyListener() { > + @Override > + public void keyPressed(KeyEvent e) { > + } > + > + @Override > + public void keyReleased(KeyEvent e) { > + fields[9] = exceptionListArea.getText(); > + } > + > + @Override > + public void keyTyped(KeyEvent e) { > + } > + }); > + exceptionListArea.addMouseListener(new MiddleClickListener(this.config, fields[9])); > + JLabel exceptionFormat = new JLabel(Translator.R("APSExceptionInstruction")); > + JScrollPane exceptionScroll = new JScrollPane(exceptionListArea, JScrollPane.VERTICAL_SCROLLBAR_ALWAYS, JScrollPane.HORIZONTAL_SCROLLBAR_NEVER); > + exceptions.add(exceptionDescription, BorderLayout.NORTH); > + exceptions.add(exceptionScroll, BorderLayout.CENTER); > + exceptions.add(exceptionFormat, BorderLayout.SOUTH); > + > + c.gridx = 0; > + c.weightx = 1; > + c.weighty = 0; > + c.gridy = 0; > + topPanel.add(servers, c); > + c.weighty = 1; > + c.gridy = 1; > + topPanel.add(exceptions, c); > + > + this.add(topPanel); > + this.add(createButtonPanel(), BorderLayout.SOUTH); > + > + } > + > + /** > + * Helper method to help make adding component shorter. > + */ > + private void plant(int y, JLabel label, JTextField addr, JTextField port, JPanel addTo, GridBagConstraints c) { > + c.gridy = y; > + > + c.gridwidth = 1; > + c.weightx = 0; > + c.gridx = 0; > + addTo.add(label, c); > + c.gridwidth = 2; > + c.weightx = 1; > + c.gridx = 1; > + addTo.add(addr, c); > + c.gridwidth = 1; > + c.weightx = 0; > + c.gridx = 3; > + addTo.add(new JLabel(":"), c); > + c.gridwidth = 1; > + c.weightx = 0.3; > + c.gridx = 4; > + addTo.add(port, c); > + } > + > + /** > + * Make the button panel. > + * > + * @return > + */ > + private JPanel createButtonPanel() { > + JPanel buttonPanel = new JPanel(new FlowLayout(FlowLayout.TRAILING)); > + > + List buttons = new ArrayList(); > + > + JButton okButton = new JButton(Translator.R("ButOk")); > + okButton.addActionListener(new ActionListener() { > + @Override > + public void actionPerformed(ActionEvent e) { > + for (int i = 0; i < fields.length; i++) > + config.setProperty(properties[i], fields[i]); > + > + parent.dispose(); > + } > + }); > + buttons.add(okButton); > + > + JButton cancelButton = new JButton(Translator.R("ButCancel")); > + cancelButton.addActionListener(new ActionListener() { > + @Override > + public void actionPerformed(ActionEvent e) { > + parent.dispose(); > + } > + }); > + buttons.add(cancelButton); > + > + int maxWidth = 0; > + int maxHeight = 0; > + for (JButton button : buttons) { > + maxWidth = Math.max(button.getMinimumSize().width, maxWidth); > + maxHeight = Math.max(button.getMinimumSize().height, maxHeight); > + } > + > + int wantedWidth = maxWidth + 10; > + int wantedHeight = maxHeight; > + for (JButton button : buttons) { > + button.setPreferredSize(new Dimension(wantedWidth, wantedHeight)); > + buttonPanel.add(button); > + } > + > + return buttonPanel; > + } > + > + /** > + * Put focus onto default button. > + */ > + public void focusOnDefaultButton() { > + if (defaultFocusComponent != null) { > + defaultFocusComponent.requestFocusInWindow(); > + } > + } > + > + public static void main(String[] args) throws ConfigurationException { > + final DeploymentConfiguration config = new DeploymentConfiguration(); > + config.load(); > + System.out.println("Adv Proxy Settings Test Dialog"); > + JDialog f = new JDialog(); > + f.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE); > + f.setPreferredSize(new Dimension(300, 300)); > + AdvancedProxySettingsPane apsp = new AdvancedProxySettingsPane(f, config); > + f.add(apsp); > + f.pack(); > + f.setVisible(true); > + } > +} > + > +/** > + * When middle click pastes to the checkboxes it doesn't register it... This is > + * to fix that problem. Not needed in Windows. Not generic enough to be reused > + * anywhere else, so placing it in here should be fine. > + * > + * @author Andrew Su > + * > + */ > +class MiddleClickListener implements MouseListener { > + > + DeploymentConfiguration config; > + private String property; > + > + public MiddleClickListener(DeploymentConfiguration config, String property) { > + this.config = config; > + this.property = property; > + } > + > + @Override > + public void mouseClicked(MouseEvent e) { > + Object obj = e.getSource(); > + String result = null; > + if (obj instanceof JTextField) > + result = ((JTextField) obj).getText(); > + else if (obj instanceof JTextArea) result = ((JTextArea) obj).getText(); > + > + config.setProperty(property, result); > + } > + > + @Override > + public void mousePressed(MouseEvent e) { > + } > + > + @Override > + public void mouseReleased(MouseEvent e) { > + } > + > + @Override > + public void mouseEntered(MouseEvent e) { > + } > + > + @Override > + public void mouseExited(MouseEvent e) { > + } > + > +} > diff -r c267c4e2b844 netx/net/sourceforge/jnlp/controlpanel/ComboItem.java > --- /dev/null Thu Jan 01 00:00:00 1970 +0000 > +++ b/netx/net/sourceforge/jnlp/controlpanel/ComboItem.java Tue Nov 30 10:59:29 2010 -0500 > @@ -0,0 +1,44 @@ > +/* ComboItem.java -- Allow storage of an item whose name differs from its value. > +Copyright (C) 2010 Red Hat > + > +This program is free software; you can redistribute it and/or modify > +it under the terms of the GNU General Public License as published by > +the Free Software Foundation; either version 2 of the License, or > +(at your option) any later version. > + > +This program is distributed in the hope that it will be useful, but > +WITHOUT ANY WARRANTY; without even the implied warranty of > +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU > +General Public License for more details. > + > +You should have received a copy of the GNU General Public License > +along with this program; if not, write to the Free Software > +Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA > + */ > + > +package net.sourceforge.jnlp.controlpanel; > + > +/** > + * This is to be used with combobox items. Allows storing a value which differs > + * from the key. > + * > + * @author Andrew Su > + * > + */ > +public class ComboItem { > + String text = null; > + private String value; // Value to be compared with. > + > + public ComboItem(String text, String value) { > + this.text = text; > + this.value = value; > + } > + > + public String toString() { > + return this.text; > + } > + > + public String getValue() { > + return this.value; > + } > +} > diff -r c267c4e2b844 netx/net/sourceforge/jnlp/controlpanel/ControlPanel.java > --- /dev/null Thu Jan 01 00:00:00 1970 +0000 > +++ b/netx/net/sourceforge/jnlp/controlpanel/ControlPanel.java Tue Nov 30 10:59:29 2010 -0500 > @@ -0,0 +1,301 @@ > +/* ControlPanel.java -- Display the control panel for modifying deployment settings. > +Copyright (C) 2010 Red Hat > + > +This program is free software; you can redistribute it and/or modify > +it under the terms of the GNU General Public License as published by > +the Free Software Foundation; either version 2 of the License, or > +(at your option) any later version. > + > +This program is distributed in the hope that it will be useful, but > +WITHOUT ANY WARRANTY; without even the implied warranty of > +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU > +General Public License for more details. > + > +You should have received a copy of the GNU General Public License > +along with this program; if not, write to the Free Software > +Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA > + */ > + > +package net.sourceforge.jnlp.controlpanel; > + > +import java.awt.BorderLayout; > +import java.awt.CardLayout; > +import java.awt.Dimension; > +import java.awt.FlowLayout; > +import java.awt.Image; > +import java.awt.event.ActionEvent; > +import java.awt.event.ActionListener; > +import java.io.IOException; > +import java.net.URL; > +import java.util.ArrayList; > +import java.util.List; > + > +import javax.imageio.ImageIO; > +import javax.naming.ConfigurationException; > +import javax.swing.ImageIcon; > +import javax.swing.JButton; > +import javax.swing.JFrame; > +import javax.swing.JLabel; > +import javax.swing.JList; > +import javax.swing.JPanel; > +import javax.swing.JScrollPane; > +import javax.swing.SwingConstants; > +import javax.swing.SwingUtilities; > +import javax.swing.UIManager; > +import javax.swing.WindowConstants; > +import javax.swing.border.EmptyBorder; > +import javax.swing.event.ListSelectionEvent; > +import javax.swing.event.ListSelectionListener; > + > +import net.sourceforge.jnlp.runtime.DeploymentConfiguration; > +import net.sourceforge.jnlp.runtime.JNLPRuntime; > +import net.sourceforge.jnlp.runtime.Translator; > +import net.sourceforge.jnlp.security.viewer.CertificatePane; > + > +/** > + * This is the control panel for Java. It provides a GUI for modifying the > + * deployments.properties file. > + * > + * @author Andrew Su > + * > + */ > + at SuppressWarnings( { "unused", "serial" }) > +public class ControlPanel extends JFrame { > + > + private class SettingsPanel { > + final String value; > + final JPanel panel; > + > + public SettingsPanel(String value, JPanel panel) { > + this.value = value; > + this.panel = panel; > + } > + > + public JPanel getPanel() { > + return panel; > + } > + > + public String toString() { > + return value; > + } > + } > + > + private DeploymentConfiguration config = null; > + > + /* > + * actual configuration options > + */ > + private String configBrowserCommand = null; > + > + public ControlPanel(DeploymentConfiguration config) { > + super(); > + setTitle(Translator.R("CPHead")); > + > + this.config = config; > + > + JPanel mainPanel = createMainSettingsPanel(); > + JPanel buttonPanel = createButtonPanel(); > + > + add(mainPanel, BorderLayout.CENTER); > + add(buttonPanel, BorderLayout.SOUTH); > + setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE); > + pack(); > + setMinimumSize(getPreferredSize()); > + setResizable(false); > + } > + > + private JPanel createButtonPanel() { > + JPanel buttonPanel = new JPanel(new FlowLayout(FlowLayout.TRAILING)); > + > + List buttons = new ArrayList(); > + > + JButton okButton = new JButton(Translator.R("ButOk")); > + okButton.addActionListener(new ActionListener() { > + @Override > + public void actionPerformed(ActionEvent e) { > + ControlPanel.this.saveConfiguration(); > + ControlPanel.this.dispose(); > + } > + }); > + buttons.add(okButton); > + > + JButton applyButton = new JButton(Translator.R("ButApply")); > + applyButton.addActionListener(new ActionListener() { > + @Override > + public void actionPerformed(ActionEvent e) { > + ControlPanel.this.saveConfiguration(); > + } > + }); > + buttons.add(applyButton); > + > + JButton cancelButton = new JButton(Translator.R("ButCancel")); > + cancelButton.addActionListener(new ActionListener() { > + @Override > + public void actionPerformed(ActionEvent e) { > + ControlPanel.this.dispose(); > + } > + }); > + buttons.add(cancelButton); > + > + int maxWidth = 0; > + int maxHeight = 0; > + for (JButton button : buttons) { > + maxWidth = Math.max(button.getMinimumSize().width, maxWidth); > + maxHeight = Math.max(button.getMinimumSize().height, maxHeight); > + } > + > + int wantedWidth = maxWidth + 10; > + int wantedHeight = maxHeight + 2; > + for (JButton button : buttons) { > + button.setPreferredSize(new Dimension(wantedWidth, wantedHeight)); > + buttonPanel.add(button); > + } > + > + return buttonPanel; > + } > + > + private JPanel createMainSettingsPanel() { > + > + loadConfiguration(); > + > + SettingsPanel[] panels = new SettingsPanel[] { new SettingsPanel(Translator.R("CPTabAbout"), createAboutPanel()), > + new SettingsPanel(Translator.R("CPTabCache"), createCacheSettingsPanel()), > + new SettingsPanel(Translator.R("CPTabCertificate"), createCertificatesSettingsPanel()), > +// new SettingsPanel(Translator.R("CPTabClassLoader"), createClassLoaderSettingsPanel()), > + new SettingsPanel(Translator.R("CPTabDebugging"), createDebugSettingsPanel()), > + new SettingsPanel(Translator.R("CPTabDesktopIntegration"), createDesktopSettingsPanel()), > + new SettingsPanel(Translator.R("CPTabNetwork"), createNetworkSettingsPanel()), > + new SettingsPanel(Translator.R("CPTabRuntimes"), createRuntimesSettingsPanel()), > + new SettingsPanel(Translator.R("CPTabSecurity"), createSecuritySettingsPanel()), }; > + > + // Add panels. > + final JPanel settingsPanel = new JPanel(new CardLayout()); > + for (SettingsPanel panel : panels) { > + JPanel p = panel.getPanel(); > + p.setPreferredSize(new Dimension(530, 360)); > + settingsPanel.add(p, panel.toString()); > + } > + > + final JList settingsList = new JList(panels); > + settingsList.addListSelectionListener(new ListSelectionListener() { > + @Override > + public void valueChanged(ListSelectionEvent e) { > + JList list = (JList) e.getSource(); > + SettingsPanel panel = (SettingsPanel) list.getSelectedValue(); > + CardLayout cl = (CardLayout) settingsPanel.getLayout(); > + cl.show(settingsPanel, panel.toString()); > + } > + }); > + JScrollPane settingsListScrollPane = new JScrollPane(settingsList); > + settingsListScrollPane.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_NEVER); > + > + final JPanel settingsDetailPanel = new JPanel(); > + settingsDetailPanel.setLayout(new BorderLayout()); > + settingsDetailPanel.add(settingsPanel, BorderLayout.CENTER); > + settingsDetailPanel.setBorder(new EmptyBorder(0, 10, -3, 0)); > + > + JPanel mainPanel = new JPanel(); > + mainPanel.setLayout(new BorderLayout()); > + mainPanel.add(settingsListScrollPane, BorderLayout.LINE_START); > + mainPanel.add(settingsDetailPanel, BorderLayout.CENTER); > + mainPanel.setBorder(new EmptyBorder(10, 10, 10, 10)); > + > + settingsList.setSelectedIndex(0); > + > + return mainPanel; > + } > + > + private JPanel createAboutPanel() { > + return new AboutPanel(); > + } > + > + private JPanel createCacheSettingsPanel() { > + return new TemporaryInternetFilesPanel(this.config); > + } > + > + private JPanel createCertificatesSettingsPanel() { > + JPanel p = new NamedBorderPanel(Translator.R("CPHeadCertificates"), new BorderLayout()); > + p.add(new CertificatePane(null), BorderLayout.CENTER); > + return p; > + } > + > + private JPanel createClassLoaderSettingsPanel() { > + return createNotImplementedPanel(); > + } > + > + private JPanel createDebugSettingsPanel() { > + return new DebuggingPanel(this.config); > + } > + > + private JPanel createDesktopSettingsPanel() { > + return new DesktopShortcutPanel(this.config); > + } > + > + private JPanel createNetworkSettingsPanel() { > + return new NetworkSettingsPanel(this.config); > + } > + > + private JPanel createRuntimesSettingsPanel() { > + return new JREPanel(); > + } > + > + private JPanel createSecuritySettingsPanel() { > + return new SecuritySettingsPanel(this.config); > + } > + > + /** > + * This is a placeholder panel. > + * > + * @return > + */ > + private JPanel createNotImplementedPanel() { > + > + JPanel notImplementedPanel = new NamedBorderPanel("Unimplemented"); > + notImplementedPanel.setLayout(new BorderLayout()); > + > + URL imgUrl = getClass().getClassLoader().getResource("net/sourceforge/jnlp/resources/warning.png"); > + Image img; > + try { > + img = ImageIO.read(imgUrl); > + ImageIcon icon = new ImageIcon(img); > + JLabel label = new JLabel("Not Implemented", icon, SwingConstants.CENTER); > + notImplementedPanel.add(label); > + } catch (IOException e) { > + e.printStackTrace(); > + } > + return notImplementedPanel; > + } > + > + private void loadConfiguration() { > + configBrowserCommand = config.getProperty("deployment.browser.path"); > + if (configBrowserCommand == null) { > + configBrowserCommand = ""; > + } > + } > + > + private void saveConfiguration() { > + try { > + config.save(); > + } catch (IOException e) { > + e.printStackTrace(); > + } > + } > + > + public static void main(String[] args) throws Exception { > + JNLPRuntime.initialize(true); > + final DeploymentConfiguration config = JNLPRuntime.getConfiguration(); > + try { > + config.load(); > + } catch (ConfigurationException e) { > + // TODO Auto-generated catch block > + e.printStackTrace(); > + } > + SwingUtilities.invokeLater(new Runnable() { > + @Override > + public void run() { > + final ControlPanel editor = new ControlPanel(config); > + editor.setVisible(true); > + } > + }); > + } > +} > diff -r c267c4e2b844 netx/net/sourceforge/jnlp/controlpanel/DebuggingPanel.java > --- /dev/null Thu Jan 01 00:00:00 1970 +0000 > +++ b/netx/net/sourceforge/jnlp/controlpanel/DebuggingPanel.java Tue Nov 30 10:59:29 2010 -0500 > @@ -0,0 +1,141 @@ > +/* DebuggingPanel.java -- Displays and sets options for debugging. > +Copyright (C) 2010 Red Hat > + > +This program is free software; you can redistribute it and/or modify > +it under the terms of the GNU General Public License as published by > +the Free Software Foundation; either version 2 of the License, or > +(at your option) any later version. > + > +This program is distributed in the hope that it will be useful, but > +WITHOUT ANY WARRANTY; without even the implied warranty of > +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU > +General Public License for more details. > + > +You should have received a copy of the GNU General Public License > +along with this program; if not, write to the Free Software > +Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA > + */ > + > +package net.sourceforge.jnlp.controlpanel; > + > +import java.awt.Component; > +import java.awt.Dimension; > +import java.awt.FlowLayout; > +import java.awt.GridBagConstraints; > +import java.awt.GridBagLayout; > +import java.awt.event.ItemEvent; > +import java.awt.event.ItemListener; > + > +import javax.swing.Box; > +import javax.swing.JCheckBox; > +import javax.swing.JComboBox; > +import javax.swing.JLabel; > +import javax.swing.JPanel; > + > +import net.sourceforge.jnlp.runtime.DeploymentConfiguration; > +import net.sourceforge.jnlp.runtime.Translator; > + > + at SuppressWarnings("serial") > +public class DebuggingPanel extends NamedBorderPanel implements ItemListener { > + > + /** List of properties used by this panel */ > + public static String[] properties = { "deployment.trace", // Debugging > + "deployment.log", // Debugging > + "deployment.javapi.lifecycle.exception", // Debugging > + "deployment.console.startup.mode", // Java Console > + }; > + private DeploymentConfiguration config; > + > + public DebuggingPanel(DeploymentConfiguration config) { > + super(Translator.R("CPHeadDebugging"), new GridBagLayout()); > + > + this.config = config; > + > + addComponents(); > + } > + > + /** > + * Add components to panel. > + */ > + private void addComponents() { > + GridBagConstraints c = new GridBagConstraints(); > + > + JLabel debuggingDescription = new JLabel("" + Translator.R("CPDebuggingDescription") + "

"); > + > + JCheckBox[] debuggingOptions = { new JCheckBox(Translator.R("DPEnableTracing")), > + new JCheckBox(Translator.R("DPEnableLogging")), > + new JCheckBox(Translator.R("DPLifeCycleExceptions")) }; > + > + ComboItem[] javaConsoleItems = { new ComboItem(Translator.R("DPDisable"), "DISABLE"), > + new ComboItem(Translator.R("DPHide"), "HIDE"), > + new ComboItem(Translator.R("DPShow"), "SHOW"), }; > + > + JLabel consoleLabel = new JLabel(Translator.R("DPJavaConsole")); > + JComboBox consoleComboBox = new JComboBox(); > + consoleComboBox.setActionCommand("deployment.console.startup.mode"); // The property this comboBox affects. > + > + JPanel consolePanel = new JPanel(); > + consolePanel.setLayout(new FlowLayout(FlowLayout.LEADING)); > + consolePanel.add(consoleLabel); > + consolePanel.add(consoleComboBox); > + > + c.fill = GridBagConstraints.BOTH; > + c.weightx = 1; > + c.gridx = 0; > + c.gridy = 0; > + add(debuggingDescription, c); > + > + /* > + * Add the items to the panel unless we can not get the values for them. > + */ > + for (int i = 0; i < properties.length; i++) { > + try { > + String s = config.getProperty(properties[i]); > + c.gridy = i + 1; > + > + switch (i) { > + case 0: > + case 1: > + case 2: > + debuggingOptions[i].setSelected(Boolean.parseBoolean(s)); > + debuggingOptions[i].setActionCommand(properties[i]); > + debuggingOptions[i].addItemListener(this); > + add(debuggingOptions[i], c); > + break; > + case 3: > + for (int j = 0; j < javaConsoleItems.length; j++) { > + consoleComboBox.addItem(javaConsoleItems[j]); > + if (config.getProperty("deployment.console.startup.mode").equals(javaConsoleItems[j].getValue())) consoleComboBox.setSelectedIndex(j); > + } > + consoleComboBox.addItemListener(this); > + add(consolePanel, c); > + } > + > + } catch (Exception e) { > + debuggingOptions[i] = null; > + } > + } > + > + // pack the bottom so that it doesn't change size if resized. > + Component filler = Box.createRigidArea(new Dimension(1, 1)); > + c.gridy++; > + c.weighty = 1; > + add(filler, c); > + } > + > + @Override > + public void itemStateChanged(ItemEvent e) { > + > + Object o = e.getSource(); > + > + if (o instanceof JCheckBox) { > + JCheckBox jcb = (JCheckBox) o; > + config.setProperty(jcb.getActionCommand(), String.valueOf(jcb.isSelected())); > + } else if (o instanceof JComboBox) { > + JComboBox jcb = (JComboBox) o; > + ComboItem c = (ComboItem) e.getItem(); > + config.setProperty(jcb.getActionCommand(), c.getValue()); > + } > + > + } > +} > diff -r c267c4e2b844 netx/net/sourceforge/jnlp/controlpanel/DesktopShortcutPanel.java > --- /dev/null Thu Jan 01 00:00:00 1970 +0000 > +++ b/netx/net/sourceforge/jnlp/controlpanel/DesktopShortcutPanel.java Tue Nov 30 10:59:29 2010 -0500 > @@ -0,0 +1,91 @@ > +/* DesktopShortcutPanel.java -- Display option for adding desktop shortcut. > +Copyright (C) 2010 Red Hat > + > +This program is free software; you can redistribute it and/or modify > +it under the terms of the GNU General Public License as published by > +the Free Software Foundation; either version 2 of the License, or > +(at your option) any later version. > + > +This program is distributed in the hope that it will be useful, but > +WITHOUT ANY WARRANTY; without even the implied warranty of > +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU > +General Public License for more details. > + > +You should have received a copy of the GNU General Public License > +along with this program; if not, write to the Free Software > +Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA > + */ > + > +package net.sourceforge.jnlp.controlpanel; > + > +import java.awt.Component; > +import java.awt.Dimension; > +import java.awt.GridBagConstraints; > +import java.awt.GridBagLayout; > +import java.awt.event.ItemEvent; > +import java.awt.event.ItemListener; > + > +import javax.swing.Box; > +import javax.swing.JComboBox; > +import javax.swing.JLabel; > + > +import net.sourceforge.jnlp.runtime.DeploymentConfiguration; > +import net.sourceforge.jnlp.runtime.Translator; > + > +/** > + * This class provides the panel that allows the user to set whether they want > + * to create a desktop shortcut for javaws. > + * > + * @author Andrew Su > + * > + */ > + at SuppressWarnings("serial") > +public class DesktopShortcutPanel extends NamedBorderPanel implements ItemListener { > + > + private DeploymentConfiguration config; > + > + public DesktopShortcutPanel(DeploymentConfiguration config) { > + super(Translator.R("CPHeadDesktopIntegration"), new GridBagLayout()); > + this.config = config; > + > + addComponents(); > + } > + > + private void addComponents() { > + GridBagConstraints c = new GridBagConstraints(); > + JLabel description = new JLabel("" + Translator.R("CPDesktopIntegrationDescription") + "
"); > + JComboBox shortcutComboOptions = new JComboBox(); > + ComboItem[] items = { new ComboItem(Translator.R("DSPNeverCreate"), "NEVER"), > + new ComboItem(Translator.R("DSPAlwaysAllow"), "ALWAYS"), > + new ComboItem(Translator.R("DSPAskUser"), "ASK_USER"), > + new ComboItem(Translator.R("DSPAskIfHinted"), "ASK_IF_HINTED"), > + new ComboItem(Translator.R("DSPAlwaysIfHinted"), "ALWAYS_IF_HINTED") }; > + > + shortcutComboOptions.setActionCommand("deployment.javaws.shortcut"); // The configuration property this combobox affects. > + for (int j = 0; j < items.length; j++) { > + shortcutComboOptions.addItem(items[j]); > + if (config.getProperty("deployment.javaws.shortcut").equals(items[j].getValue())) shortcutComboOptions.setSelectedIndex(j); > + } > + > + shortcutComboOptions.addItemListener(this); > + > + c.fill = GridBagConstraints.BOTH; > + c.weightx = 1; > + c.gridx = 0; > + c.gridy = 0; > + add(description, c); > + c.gridy = 1; > + add(shortcutComboOptions, c); > + > + // This is to keep it from expanding vertically if resized. > + Component filler = Box.createRigidArea(new Dimension(1, 1)); > + c.gridy++; > + c.weighty = 1; > + add(filler, c); > + } > + > + public void itemStateChanged(ItemEvent e) { > + ComboItem c = (ComboItem) e.getItem(); > + config.setProperty(((JComboBox) e.getSource()).getActionCommand(), c.getValue()); > + } > +} > diff -r c267c4e2b844 netx/net/sourceforge/jnlp/controlpanel/JREPanel.java > --- /dev/null Thu Jan 01 00:00:00 1970 +0000 > +++ b/netx/net/sourceforge/jnlp/controlpanel/JREPanel.java Tue Nov 30 10:59:29 2010 -0500 > @@ -0,0 +1,47 @@ > +/* JREPanel.java - Displays option for changing to another Java Runtime. > +Copyright (C) 2010 Red Hat > + > +This program is free software; you can redistribute it and/or modify > +it under the terms of the GNU General Public License as published by > +the Free Software Foundation; either version 2 of the License, or > +(at your option) any later version. > + > +This program is distributed in the hope that it will be useful, but > +WITHOUT ANY WARRANTY; without even the implied warranty of > +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU > +General Public License for more details. > + > +You should have received a copy of the GNU General Public License > +along with this program; if not, write to the Free Software > +Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA > + */ > + > +package net.sourceforge.jnlp.controlpanel; > + > +import java.awt.BorderLayout; > + > +import javax.swing.JLabel; > + > +import net.sourceforge.jnlp.runtime.Translator; > + > +/** > + * This panel is to allow access to setting the JRE but we currently do not > + * support this. > + * > + * @author Andrew Su > + * > + */ > +public class JREPanel extends NamedBorderPanel { > + /** > + * > + */ > + private static final long serialVersionUID = -712021664097515692L; > + > + public JREPanel() { > + super(Translator.R("CPHeadJRESettings")); > + setLayout(new BorderLayout()); > + > + JLabel jreLabel = new JLabel("" + Translator.R("CPJRESupport") + ""); > + add(jreLabel, BorderLayout.NORTH); > + } > +} > diff -r c267c4e2b844 netx/net/sourceforge/jnlp/controlpanel/NamedBorderPanel.java > --- /dev/null Thu Jan 01 00:00:00 1970 +0000 > +++ b/netx/net/sourceforge/jnlp/controlpanel/NamedBorderPanel.java Tue Nov 30 10:59:29 2010 -0500 > @@ -0,0 +1,46 @@ > +/* NamedBorderPanel.java -- Makes a border which has a name. > +Copyright (C) 2010 Red Hat > + > +This program is free software; you can redistribute it and/or modify > +it under the terms of the GNU General Public License as published by > +the Free Software Foundation; either version 2 of the License, or > +(at your option) any later version. > + > +This program is distributed in the hope that it will be useful, but > +WITHOUT ANY WARRANTY; without even the implied warranty of > +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU > +General Public License for more details. > + > +You should have received a copy of the GNU General Public License > +along with this program; if not, write to the Free Software > +Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA > + */ > + > +package net.sourceforge.jnlp.controlpanel; > + > +import java.awt.LayoutManager; > + > +import javax.swing.BorderFactory; > +import javax.swing.JPanel; > + > +/** > + * This class provides the a panel that has a border with the name specified. > + * > + * @author Andrew Su > + * > + */ > + at SuppressWarnings("serial") > +public class NamedBorderPanel extends JPanel { > + > + public NamedBorderPanel(String title, LayoutManager layout) { > + this(title); > + setLayout(layout); > + } > + > + public NamedBorderPanel(String title) { > + super(); > + setBorder(BorderFactory.createCompoundBorder( > + BorderFactory.createTitledBorder(title), > + BorderFactory.createEmptyBorder(5, 5, 5, 5))); > + } > +} > diff -r c267c4e2b844 netx/net/sourceforge/jnlp/controlpanel/NetworkSettingsPanel.java > --- /dev/null Thu Jan 01 00:00:00 1970 +0000 > +++ b/netx/net/sourceforge/jnlp/controlpanel/NetworkSettingsPanel.java Tue Nov 30 10:59:29 2010 -0500 > @@ -0,0 +1,320 @@ > +/* NetworkSettingsPanel.java -- Sets proxy settings for network. > +Copyright (C) 2010 Red Hat > + > +This program is free software; you can redistribute it and/or modify > +it under the terms of the GNU General Public License as published by > +the Free Software Foundation; either version 2 of the License, or > +(at your option) any later version. > + > +This program is distributed in the hope that it will be useful, but > +WITHOUT ANY WARRANTY; without even the implied warranty of > +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU > +General Public License for more details. > + > +You should have received a copy of the GNU General Public License > +along with this program; if not, write to the Free Software > +Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA > + */ > + > +package net.sourceforge.jnlp.controlpanel; > + > +import java.awt.BorderLayout; > +import java.awt.CardLayout; > +import java.awt.Component; > +import java.awt.Dimension; > +import java.awt.FlowLayout; > +import java.awt.GridBagConstraints; > +import java.awt.GridBagLayout; > +import java.awt.event.ActionEvent; > +import java.awt.event.ActionListener; > +import java.awt.event.ItemEvent; > +import java.awt.event.ItemListener; > +import java.awt.event.KeyEvent; > +import java.awt.event.KeyListener; > +import java.util.ArrayList; > + > +import javax.swing.Box; > +import javax.swing.ButtonGroup; > +import javax.swing.JButton; > +import javax.swing.JCheckBox; > +import javax.swing.JComponent; > +import javax.swing.JLabel; > +import javax.swing.JPanel; > +import javax.swing.JRadioButton; > +import javax.swing.JTextField; > + > +import net.sourceforge.jnlp.runtime.DeploymentConfiguration; > +import net.sourceforge.jnlp.runtime.Translator; > + > +/** > + * This is the pane used with creating a JDialog version. This allows changing > + * the network configuration: Proxy > + * > + * @author Andrew Su > + * > + */ > + at SuppressWarnings("serial") > +public class NetworkSettingsPanel extends JPanel implements ActionListener { > + > + private DeploymentConfiguration config; > + > + private JPanel description; > + private ArrayList proxyPanels = new ArrayList(); // The stuff with editable fields > + > + private JComponent defaultFocusComponent = null; > + > + /** List of properties used by this panel */ > + public static String[] properties = { "deployment.proxy.type", > + "deployment.proxy.http.host", > + "deployment.proxy.http.port", > + "deployment.proxy.bypass.local", > + "deployment.proxy.auto.config.url", }; > + private String[] fields = new String[properties.length]; > + > + public NetworkSettingsPanel(DeploymentConfiguration config) { > + super(); > + this.config = config; > + setLayout(new BorderLayout()); > + > + getProperties(); > + addComponents(); > + } > + > + private void getProperties() { > + > + for (int i = 0; i < properties.length; i++) > + fields[i] = this.config.getProperty(properties[i]); > + } > + > + /** > + * This adds the components to the panel. > + */ > + protected void addComponents() { > + JPanel settingPanel = new NamedBorderPanel(Translator.R("CPHeadNetworkSettings")); > + settingPanel.setLayout(new GridBagLayout()); > + GridBagConstraints c = new GridBagConstraints(); > + c.fill = GridBagConstraints.BOTH; > + c.weightx = 1; > + c.weighty = 1; > + c.gridx = 0; > + > + JLabel networkDesc = new JLabel("" + Translator.R("CPNetworkSettingsDescription") + "
"); > + > + JLabel description = new JLabel("" + Translator.R("NSDescription-1") + ""); > + JLabel description0 = new JLabel("" + Translator.R("NSDescription0") + ""); > + JLabel description1 = new JLabel("" + Translator.R("NSDescription1") + ""); > + JLabel description2 = new JLabel("" + Translator.R("NSDescription2") + ""); > + JLabel description3 = new JLabel("" + Translator.R("NSDescription3") + ""); > + > + this.description = new JPanel(new CardLayout()); > + this.description.add(description, "-1"); > + this.description.add(description0, "0"); > + this.description.add(description1, "1"); > + this.description.add(description2, "2"); > + this.description.add(description3, "3"); > + > + // Settings for selecting Proxy Server > + JPanel proxyServerPanel = new JPanel(new BorderLayout()); > + JPanel proxyLocationPanel = new JPanel(new FlowLayout(FlowLayout.LEADING)); > + JPanel proxyBypassPanel = new JPanel(new FlowLayout(FlowLayout.LEADING)); > + > + JLabel addressLabel = new JLabel(Translator.R("NSAddress") + ":"); > + JLabel portLabel = new JLabel(Translator.R("NSPort") + ":"); > + final JTextField addressField = new JTextField(fields[1], 10); > + addressField.addKeyListener(new KeyListener() { > + @Override > + public void keyPressed(KeyEvent e) { > + } > + > + @Override > + public void keyReleased(KeyEvent e) { > + fields[1] = addressField.getText(); > + config.setProperty(properties[1], fields[1]); > + } > + > + @Override > + public void keyTyped(KeyEvent e) { > + } > + }); > + addressField.addMouseListener(new MiddleClickListener(this.config, properties[1])); > + final JTextField portField = new JTextField(fields[2], 3); > + portField.addKeyListener(new KeyListener() { > + @Override > + public void keyPressed(KeyEvent e) { > + } > + > + @Override > + public void keyReleased(KeyEvent e) { > + fields[2] = portField.getText(); > + config.setProperty(properties[2], fields[2]); > + } > + > + @Override > + public void keyTyped(KeyEvent e) { > + } > + }); > + // Create the button which allows setting of other types of proxy. > + JButton advancedProxyButton = new JButton(Translator.R("NSAdvanced") + "..."); > + advancedProxyButton.addActionListener(new ActionListener() { > + @Override > + public void actionPerformed(ActionEvent e) { > + try { > + AdvancedProxySettingsDialog.showAdvancedProxySettingsDialog(config); > + } catch (Exception e1) { > + e1.printStackTrace(); > + } > + } > + }); > + > + JCheckBox bypassCheckBox = new JCheckBox(Translator.R("NSBypassLocal"), Boolean.parseBoolean(fields[3])); > + bypassCheckBox.addItemListener(new ItemListener() { > + @Override > + public void itemStateChanged(ItemEvent e) { > + fields[3] = String.valueOf(e.getStateChange() == ItemEvent.SELECTED); > + config.setProperty(properties[3], fields[3]); > + } > + }); > + proxyLocationPanel.add(Box.createRigidArea(new Dimension(13, 0))); > + proxyLocationPanel.add(addressLabel); > + proxyLocationPanel.add(addressField); > + proxyLocationPanel.add(portLabel); > + proxyLocationPanel.add(portField); > + proxyLocationPanel.add(advancedProxyButton); > + proxyBypassPanel.add(Box.createRigidArea(new Dimension(10, 0))); > + proxyBypassPanel.add(bypassCheckBox); > + > + proxyServerPanel.add(proxyLocationPanel, BorderLayout.CENTER); > + proxyServerPanel.add(proxyBypassPanel, BorderLayout.SOUTH); > + > + JRadioButton directConnection = new JRadioButton(Translator.R("NSDirectConnection"), fields[0].equals("0")); > + directConnection.setActionCommand("0"); > + directConnection.addActionListener(this); > + > + JRadioButton useProxyServer = new JRadioButton(Translator.R("NSManualProxy"), fields[0].equals("1")); > + useProxyServer.setActionCommand("1"); > + useProxyServer.addActionListener(this); > + > + JRadioButton useAutoProxyConfigScript = new JRadioButton(Translator.R("NSAutoProxy"), fields[0].equals("2")); > + useAutoProxyConfigScript.setActionCommand("2"); > + useAutoProxyConfigScript.addActionListener(this); > + > + JRadioButton useBrowserSettings = new JRadioButton(Translator.R("NSBrowserProxy"), fields[0].equals("3")); > + useBrowserSettings.setActionCommand("3"); > + useBrowserSettings.addActionListener(this); > + > + ButtonGroup modeSelect = new ButtonGroup(); > + modeSelect.add(useBrowserSettings); > + modeSelect.add(useProxyServer); > + modeSelect.add(useAutoProxyConfigScript); > + modeSelect.add(directConnection); > + > + // Settings for Automatic Proxy Configuration Script > + JPanel proxyAutoPanel = new JPanel(new FlowLayout(FlowLayout.LEADING)); > + JLabel locationLabel = new JLabel(Translator.R("NSScriptLocation") + ":"); > + final JTextField locationField = new JTextField(fields[4], 20); > + locationField.addKeyListener(new KeyListener() { > + @Override > + public void keyPressed(KeyEvent e) { > + } > + > + @Override > + public void keyReleased(KeyEvent e) { > + String value = locationField.getText(); > + if (value.trim().equals("")) value = null; > + fields[4] = value; > + config.setProperty(properties[4], value); > + } > + > + @Override > + public void keyTyped(KeyEvent e) { > + } > + }); > + > + proxyAutoPanel.add(Box.createRigidArea(new Dimension(13, 0))); > + proxyAutoPanel.add(locationLabel); > + proxyAutoPanel.add(locationField); > + > + c.gridy = 0; > + settingPanel.add(networkDesc, c); > + c.gridy = 1; > + settingPanel.add(this.description, c); > + c.gridy = 2; > + settingPanel.add(directConnection, c); > + c.gridy = 3; > + settingPanel.add(useBrowserSettings, c); > + c.gridy = 4; > + settingPanel.add(useProxyServer, c); > + c.gridy = 5; > + settingPanel.add(proxyServerPanel, c); > + proxyPanels.add(proxyServerPanel); > + c.gridy = 6; > + settingPanel.add(useAutoProxyConfigScript, c); > + c.gridy = 7; > + settingPanel.add(proxyAutoPanel, c); > + proxyPanels.add(proxyAutoPanel); > + > + // Filler to pack the bottom of the panel. > + Component filler = Box.createRigidArea(new Dimension(1, 1)); > + c.gridy++; > + c.weighty = 1; > + settingPanel.add(filler, c); > + > + setState(); // depending on default setting we will enable or disable > + > + add(settingPanel, BorderLayout.CENTER); > + > + } > + > + public void focusOnDefaultButton() { > + if (defaultFocusComponent != null) { > + defaultFocusComponent.requestFocusInWindow(); > + } > + } > + > + /** > + * Enable/Disable the panel and all its children recursively. > + * > + * @param panel > + * JPanel which needs to be enabled or disabled. > + * @param enable > + * true if the panel and its children are to be enabled, false > + * otherwise. > + */ > + private void enablePanel(JPanel panel, boolean enable) { > + // This will be used to enable all components in this panel recursively. > + // Ridiculously slow if lots of nested panels. > + for (Component c : panel.getComponents()) { > + if (c instanceof JPanel) { > + enablePanel((JPanel) c, enable); > + } > + c.setEnabled(enable); > + } > + } > + > + @Override > + public void actionPerformed(ActionEvent e) { > + fields[0] = e.getActionCommand(); > + config.setProperty(properties[0], fields[0]); > + setState(); > + } > + > + /** > + * This enables and disables the appropriate panels. > + */ > + private void setState() { > + ((CardLayout) this.description.getLayout()).show(this.description, fields[0]); > + if (fields[0].equals("0")) { > + for (JPanel panel : proxyPanels) > + enablePanel(panel, false); > + } else if (fields[0].equals("1")) { > + enablePanel(proxyPanels.get(1), false); > + enablePanel(proxyPanels.get(0), true); > + } else if (fields[0].equals("2")) { > + enablePanel(proxyPanels.get(0), false); > + enablePanel(proxyPanels.get(1), true); > + } else if (fields[0].equals("3")) { > + for (JPanel panel : proxyPanels) > + enablePanel(panel, false); > + } > + } > +} > diff -r c267c4e2b844 netx/net/sourceforge/jnlp/controlpanel/SecuritySettingsPanel.java > --- /dev/null Thu Jan 01 00:00:00 1970 +0000 > +++ b/netx/net/sourceforge/jnlp/controlpanel/SecuritySettingsPanel.java Tue Nov 30 10:59:29 2010 -0500 > @@ -0,0 +1,135 @@ > +/* SecuritySettingsPanel.java -- Display possible security settings. > +Copyright (C) 2010 Red Hat > + > +This program is free software; you can redistribute it and/or modify > +it under the terms of the GNU General Public License as published by > +the Free Software Foundation; either version 2 of the License, or > +(at your option) any later version. > + > +This program is distributed in the hope that it will be useful, but > +WITHOUT ANY WARRANTY; without even the implied warranty of > +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU > +General Public License for more details. > + > +You should have received a copy of the GNU General Public License > +along with this program; if not, write to the Free Software > +Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA > + */ > +package net.sourceforge.jnlp.controlpanel; > + > +import java.awt.BorderLayout; > +import java.awt.Component; > +import java.awt.Dimension; > +import java.awt.GridBagConstraints; > +import java.awt.GridBagLayout; > +import java.awt.event.ActionEvent; > +import java.awt.event.ActionListener; > + > +import javax.swing.Box; > +import javax.swing.JCheckBox; > +import javax.swing.JLabel; > +import javax.swing.JPanel; > + > +import net.sourceforge.jnlp.runtime.DeploymentConfiguration; > +import net.sourceforge.jnlp.runtime.Translator; > + > +/** > + * This provides a way for the user to modify the security settings through a > + * GUI. > + * > + * @author Andrew Su > + * > + */ > + at SuppressWarnings("serial") > +public class SecuritySettingsPanel extends NamedBorderPanel implements ActionListener { > + > + private DeploymentConfiguration config; > + > + // NOTE: All the ones listed with "Default" are in Oracle's implementation. > + // Not shown on deployments.properties webpage. Add support for these later! > + /** List of properties used by this panel */ > + public static String[] properties = { "deployment.security.askgrantdialog.show", > + "deployment.security.askgrantdialog.notinca", > + "deployment.security.browser.keystore.use", // default TRUE > + "deployment.security.clientauth.keystore.auto", // Default FALSE > + "deployment.security.jsse.hostmismatch.warning", > + "deployment.security.https.warning.show", // Default FALSE > + "deployment.security.sandbox.awtwarningwindow", > + "deployment.security.sandbox.jnlp.enhanced", > + "deployment.security.validation.crl", // Default TRUE > + "deployment.security.validation.ocsp", // Default FALSE > + "deployment.security.pretrust.list", // Default TRUE > + "deployment.security.blacklist.check", // Default TRUE > + "deployment.security.password.cache", // Default TRUE > + "deployment.security.SSLv2Hello", // Default FALSE > + "deployment.security.SSLv3", // Default TRUE > + "deployment.security.TLSv1", // Default TRUE > +// "deployment.security.mixcode", // Default TRUE > + }; > + > + public SecuritySettingsPanel(DeploymentConfiguration config) { > + super(Translator.R("CPHeadSecurity"), new BorderLayout()); > + this.config = config; > + > + addComponents(); > + } > + > + /** > + * Add the components to the panel. > + */ > + private void addComponents() { > + JPanel topPanel = new JPanel(new GridBagLayout()); > + GridBagConstraints c = new GridBagConstraints(); > + > + JLabel description = new JLabel("" + Translator.R("CPSecurityDescription") + "
"); > + > + JCheckBox[] securityGeneralOptions = { new JCheckBox(Translator.R("SGPAllowUserGrantSigned")), > + new JCheckBox(Translator.R("SGPAllowUserGrantUntrust")), > + new JCheckBox(Translator.R("SGpUseBrowserKeystore")), > + new JCheckBox(Translator.R("SGPUsePersonalCertOneMatch")), > + new JCheckBox(Translator.R("SGPWarnCertHostMismatch")), > + new JCheckBox(Translator.R("SGPShowValid")), > + new JCheckBox(Translator.R("SGPShowSandboxWarning")), > + new JCheckBox(Translator.R("SGPAllowUserAcceptJNLPSecurityRequests")), > + new JCheckBox(Translator.R("SGPCheckCertRevocationList")), > + new JCheckBox(Translator.R("SGPEnableOnlineCertValidate")), > + new JCheckBox(Translator.R("SGPEnableTrustedPublisherList")), > + new JCheckBox(Translator.R("SGPEnableBlacklistRevocation")), > + new JCheckBox(Translator.R("SGPEnableCachingPassword")), > + new JCheckBox(Translator.R("SGPUseSSL2")), > + new JCheckBox(Translator.R("SGPUseSSL3")), > + new JCheckBox(Translator.R("SGPUseTLS1")), }; > + > + c.fill = GridBagConstraints.BOTH; > + c.gridx = 0; > + c.weightx = 1; > + > + topPanel.add(description, c); > + > + // Only display the ones with properties that are valid or existent. > + for (int i = 0; i < properties.length; i++) { > + try { > + String s = config.getProperty(properties[i]); > + securityGeneralOptions[i].setSelected(Boolean.parseBoolean(s)); > + securityGeneralOptions[i].setActionCommand(properties[i]); > + securityGeneralOptions[i].addActionListener(this); > + c.gridy = i + 1; > + topPanel.add(securityGeneralOptions[i], c); > + } catch (Exception e) { > + securityGeneralOptions[i] = null; > + } > + } > + > + Component filler = Box.createRigidArea(new Dimension(1, 1)); > + c.weighty = 1; > + c.gridy++; > + topPanel.add(filler, c); > + > + add(topPanel, BorderLayout.CENTER); > + } > + > + @Override > + public void actionPerformed(ActionEvent e) { > + config.setProperty(e.getActionCommand(), String.valueOf(((JCheckBox) e.getSource()).isSelected())); > + } > +} > diff -r c267c4e2b844 netx/net/sourceforge/jnlp/controlpanel/TemporaryInternetFilesPanel.java > --- /dev/null Thu Jan 01 00:00:00 1970 +0000 > +++ b/netx/net/sourceforge/jnlp/controlpanel/TemporaryInternetFilesPanel.java Tue Nov 30 10:59:29 2010 -0500 > @@ -0,0 +1,244 @@ > +/* TemporaryInternetFilesPanel.java -- Display and sets cache settings. > +Copyright (C) 2010 Red Hat > + > +This program is free software; you can redistribute it and/or modify > +it under the terms of the GNU General Public License as published by > +the Free Software Foundation; either version 2 of the License, or > +(at your option) any later version. > + > +This program is distributed in the hope that it will be useful, but > +WITHOUT ANY WARRANTY; without even the implied warranty of > +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU > +General Public License for more details. > + > +You should have received a copy of the GNU General Public License > +along with this program; if not, write to the Free Software > +Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA > + */ > + > +package net.sourceforge.jnlp.controlpanel; > + > +import java.awt.BorderLayout; > +import java.awt.Dimension; > +import java.awt.FlowLayout; > +import java.awt.GridBagConstraints; > +import java.awt.GridBagLayout; > +import java.awt.event.ActionEvent; > +import java.awt.event.ActionListener; > +import java.awt.event.ItemEvent; > +import java.awt.event.ItemListener; > +import java.awt.event.KeyEvent; > +import java.awt.event.KeyListener; > + > +import javax.naming.ConfigurationException; > +import javax.swing.JButton; > +import javax.swing.JCheckBox; > +import javax.swing.JComboBox; > +import javax.swing.JComponent; > +import javax.swing.JDialog; > +import javax.swing.JFileChooser; > +import javax.swing.JLabel; > +import javax.swing.JPanel; > +import javax.swing.JSlider; > +import javax.swing.JSpinner; > +import javax.swing.JTextField; > +import javax.swing.SpinnerNumberModel; > +import javax.swing.event.ChangeEvent; > +import javax.swing.event.ChangeListener; > + > +import net.sourceforge.jnlp.runtime.DeploymentConfiguration; > +import net.sourceforge.jnlp.runtime.Translator; > + > +/** > + * The actual panel that contains the fields that the user can edit accordingly. > + * This is provided as a pane for inside the Panel itself, can also be used to > + * display as a dialog. > + * TODO: Add functionality: > + * Delete Cache. > + * Restore Defaults. > + * > + * @author Andrew Su > + * > + */ > + at SuppressWarnings("serial") > +public class TemporaryInternetFilesPanel extends NamedBorderPanel implements ChangeListener { > + > + private DeploymentConfiguration config; > + private int minSize = -1; > + private int maxSize = 1000; > + > + /** List of properties used by this panel */ > + public static String[] properties = { "deployment.javapi.cache.enabled", // false == enabled > + "deployment.user.cachedir", > + "deployment.cache.max.size", // Specified in MB > + "deployment.cache.jarcompression", // Allows values 0-9 > + }; > + > + private JComponent defaultFocusComponent = null; > + JSpinner spCacheSize; > + JSlider slCacheSize; > + > + public TemporaryInternetFilesPanel(DeploymentConfiguration config) { > + super(Translator.R("CPHeadTempInternetFiles")); > + this.config = config; > + setLayout(new BorderLayout()); > + > + addComponents(); > + } > + > + /** > + * Add components to panel. > + */ > + private void addComponents() { > + JPanel topPanel = new JPanel(new GridBagLayout()); > + GridBagConstraints c = new GridBagConstraints(); > + c.fill = GridBagConstraints.BOTH; > + > + JLabel description = new JLabel("" + Translator.R("CPTempInternetFilesDescription") + "
"); > + > + JCheckBox enableCaching = new JCheckBox(Translator.R("TIFPEnableCache"), !Boolean.parseBoolean(this.config.getProperty(properties[0]))); > + enableCaching.addItemListener(new ItemListener() { > + @Override > + public void itemStateChanged(ItemEvent e) { > + config.setProperty(properties[0], String.valueOf(!(e.getStateChange() == ItemEvent.SELECTED))); > + } > + }); > + > + // This displays the option for changing location of cache > + // User can NOT edit the text field must do it through dialog. > + JPanel locationPanel = new NamedBorderPanel(Translator.R("TIFPLocation"), new GridBagLayout()); > + JLabel locationDescription = new JLabel(Translator.R("TIFPLocationLabel") + ":"); > + final JTextField location = new JTextField(this.config.getProperty(properties[1])); > + location.setEditable(false); // Can not c&p into the location field. > + JButton bLocation = new JButton(Translator.R("TIFPChange") + "..."); > + bLocation.addActionListener(new ActionListener() { > + @Override > + public void actionPerformed(ActionEvent e) { > + JFileChooser fileChooser = new JFileChooser(); > + fileChooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY); > + if (fileChooser.showOpenDialog(null) == JFileChooser.APPROVE_OPTION) { > + String result = fileChooser.getSelectedFile().getAbsolutePath(); > + location.setText(result); > + config.setProperty(properties[1], result); > + } > + } > + }); > + > + c.weightx = 1; > + c.gridwidth = GridBagConstraints.REMAINDER; > + c.gridx = 0; > + c.gridy = 0; > + locationPanel.add(locationDescription, c); > + c.gridwidth = 1; > + c.gridy = 1; > + locationPanel.add(location, c); > + c.gridx = 1; > + c.weightx = 0; > + locationPanel.add(bLocation, c); > + > + // This section deals with how to use the disk space. > + JPanel diskSpacePanel = new NamedBorderPanel(Translator.R("TIFPDiskSpace"), new GridBagLayout()); > + JLabel lCompression = new JLabel(Translator.R("TIFPCompressionLevel")); // Sets compression level for jar files. > + ComboItem[] compressionOptions = { new ComboItem(Translator.R("TIFPNone"), "0"), > + new ComboItem("1", "1"), > + new ComboItem("2", "2"), > + new ComboItem("3", "3"), > + new ComboItem("4", "4"), > + new ComboItem("5", "5"), > + new ComboItem("6", "6"), > + new ComboItem("7", "7"), > + new ComboItem("8", "8"), > + new ComboItem(Translator.R("TIFPMax"), "9"), }; > + JComboBox cbCompression = new JComboBox(compressionOptions); > + cbCompression.setSelectedIndex(Integer.parseInt(this.config.getProperty(properties[3]))); > + cbCompression.addItemListener(new ItemListener() { > + @Override > + public void itemStateChanged(ItemEvent e) { > + config.setProperty(properties[3], ((ComboItem) e.getItem()).getValue()); > + } > + }); > + > + // This is to work with how much space is available for caching. > + JLabel lCacheSize = new JLabel(Translator.R("TIFPCacheSize") + ":"); > + slCacheSize = new JSlider(minSize, maxSize, Integer.parseInt(this.config.getProperty(properties[2]))); > + slCacheSize.setMinorTickSpacing(50); > + slCacheSize.setPaintTicks(true); > + SpinnerNumberModel snmCacheSize = new SpinnerNumberModel(Integer.parseInt(this.config.getProperty(properties[2])), minSize, maxSize, 1); > + spCacheSize = new JSpinner(snmCacheSize); > + > + slCacheSize.addChangeListener(this); > + spCacheSize.addChangeListener(this); > + > + c.gridy = 0; > + c.gridx = 0; > + c.weightx = 1; > + diskSpacePanel.add(lCompression, c); > + c.gridx = 1; > + c.weightx = 0; > + diskSpacePanel.add(cbCompression, c); > + c.gridy = 1; > + c.gridx = 0; > + c.gridwidth = GridBagConstraints.REMAINDER; > + c.weightx = 1; > + diskSpacePanel.add(lCacheSize, c); > + c.gridwidth = 1; > + c.gridy = 2; > + diskSpacePanel.add(slCacheSize, c); > + c.gridx = 1; > + diskSpacePanel.add(spCacheSize, c); > + > + JPanel buttonDeleteRestore = new JPanel(new FlowLayout(FlowLayout.TRAILING)); > + JButton bDelete = new JButton(Translator.R("TIFPDeleteFiles") + "..."); > + JButton bRestore = new JButton(Translator.R("TIFPRestoreDefaults")); > + //TODO: Add functionality to restore and delete. Also need to add a view button! > + bDelete.setEnabled(false); > + bRestore.setEnabled(false); > + buttonDeleteRestore.add(bDelete); > + buttonDeleteRestore.add(bRestore); > + > + c.weighty = 0; > + c.gridx = 0; > + c.gridy = 0; > + topPanel.add(enableCaching, c); > + c.gridy = 1; > + topPanel.add(locationPanel, c); > + c.gridy = 2; > + topPanel.add(diskSpacePanel, c); > + c.weighty = 1; > + c.gridy = 3; > + topPanel.add(buttonDeleteRestore, c); > + add(description, BorderLayout.NORTH); > + add(topPanel, BorderLayout.CENTER); > + } > + > + /** > + * Give focus to the default button. > + */ > + public void focusOnDefaultButton() { > + if (defaultFocusComponent != null) { > + defaultFocusComponent.requestFocusInWindow(); > + } > + } > + > + public static void main(String[] args) throws ConfigurationException { > + final DeploymentConfiguration config = new DeploymentConfiguration(); > + config.load(); > + JDialog f = new JDialog(); > + f.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE); > + f.setPreferredSize(new Dimension(500, 300)); > + TemporaryInternetFilesPanel apsp = new TemporaryInternetFilesPanel(config); > + f.add(apsp); > + f.pack(); > + f.setVisible(true); > + } > + > + @Override > + public void stateChanged(ChangeEvent e) { > + Object o = e.getSource(); > + if (o instanceof JSlider) > + spCacheSize.setValue(((JSlider) o).getValue()); > + else if (o instanceof JSpinner) slCacheSize.setValue((Integer) ((JSpinner) o).getValue()); > + > + config.setProperty(properties[2], spCacheSize.getValue().toString()); > + } > +} > diff -r c267c4e2b844 netx/net/sourceforge/jnlp/resources/Messages.properties > --- a/netx/net/sourceforge/jnlp/resources/Messages.properties Mon Nov 29 10:19:17 2010 -0500 > +++ b/netx/net/sourceforge/jnlp/resources/Messages.properties Tue Nov 30 10:59:29 2010 -0500 > @@ -233,3 +233,129 @@ > KSCaCerts=Trusted Root CA Certificates > KSJsseCaCerts=Trusted JSSE Root CA Certificates, > KSClientCerts=Client Authentication Certificates > + > +# Control Panel - Tab Descriptions > +CPAboutDescription=View version information about Icedtea Control Panel. > +CPNetworkSettingsDescription=Configure network settings, including how IcedTea-Web connects to the internet and whether to use any proxies. > +CPTempInternetFilesDescription=Java stores application data for faster execution the next time you run it. > +CPJRESettingsDescription=View and manage Java Runtime Environment versions and settings for Java applications and applets. > +CPCertificatesDescription=Use certificates to positively identify yourself, certifications, authorities, and plublishers. > +CPSecurityDescription=Use this to configure security settings. > +CPDebuggingDescription=Enable options here to help with debugging > +CPDesktopIntegrationDescription=Set whether or not to allow creation of desktop shortcut. > + > +# Control Panel - Buttons > +CPButAbout=About... > +CPButNetworkSettings=Network Settings... > +CPButSettings=Settings... > +CPButView=View... > +CPButCertificates=Certificates... > + > +# Control Panel - Headers > +CPHead=IcedTea Web Control Panel > +CPHeadAbout=About > +CPHeadNetworkSettings=Network Proxy Settings > +CPHeadTempInternetFiles=Temporary Internet Files > +CPHeadJRESettings=Java Runtime Environment Settings > +CPHeadCertificates=Certificates > +CPHeadDebugging=Debugging Settings > +CPHeadDesktopIntegration=Desktop Integrations > +CPHeadSecurity=Security Settings > + > +# Control Panel - Tabs > +CPTabAbout=About IcedTea-Web > +CPTabCache=Cache > +CPTabCertificate=Certificates > +CPTabClassLoader=Class Loaders > +CPTabDebugging=Debugging > +CPTabDesktopIntegration=Desktop Integration > +CPTabNetwork=Network > +CPTabRuntimes=Runtimes > +CPTabSecurity=Security > + > +# Control Panel - AboutPanel > +CPAboutInfo=This is the control panel for setting deployments.properties.
Not all options will take effect until implemented.
Currently does not support multiple JRE.
> + > +# Control Panel - AdvancedProxySettings > +APSDialogTitle=Network Settings > +APSServersPanel=Servers > +APSProxyTypeLabel=Type > +APSProxyAddressLabel=Proxy Address > +APSProxyPortLabel=Port > +APSLabelHTTP=HTTP > +APSLabelSecure=Secure > +APSLabelFTP=FTP > +APSLabelSocks=Socks > +APSSameProxyForAllProtocols=Use the same proxy server for all protocols. > +APSExceptionsLabel=Exceptions > +APSExceptionsDescription=Do not use proxy server for addresses beginning with > +APSExceptionInstruction=Separate each entry with a semicolon. > + > +# Control Panel - DebugginPanel > +DPEnableTracing=Enable tracing > +DPEnableLogging=Enable logging > +DPLifeCycleExceptions=Show applet lifecycle exceptions > +DPDisable=Disable > +DPHide=Hide on startup > +DPShow=Show on startup > +DPJavaConsole=Java Console > + > +# Control Panel - DesktopShortcutPanel > +DSPNeverCreate=Never create > +DSPAlwaysAllow=Always allow > +DSPAskUser=Ask user > +DSPAskIfHinted=Ask if hinted > +DSPAlwaysIfHinted=Always if hinted > + > +# Control Panel - NetworkSettingsPanel > +NSDescription-1=Unknown Setting. > +NSDescription0=Use direct connection. > +NSDescription1=Override browser proxy settings. > +NSDescription2=Use automatic proxy configuration script at the specified location. > +NSDescription3=Use proxy settings from your default browser to connect to the internet. > +NSAddress=Address > +NSPort=Port > +NSAdvanced=Advanced > +NSBypassLocal=Bypass proxy server for local addresses > +NSDirectConnection=Direct connection > +NSManualProxy=Manual proxy server > +NSAutoProxy=Automatic proxy configuration script > +NSBrowserProxy=Use browser settings > +NSScriptLocation=Script location > + > +# Control Panel - SecurityGeneralPanel > +SGPAllowUserGrantSigned=Allow users to grant permissions to signed content > +SGPAllowUserGrantUntrust=Allow users to grant permissions to content from an untrusted authority > +SGPUseBrowserKeystore=Use certificates and keys in browser keystore (Unsupported) > +SGPUsePersonalCertOneMatch=Use personal certificate automatically if only one matches server request (Unsupported) > +SGPWarnCertHostMismatch=Warn if site certificate does not match hostname > +SGPShowValid=Show site certificate even if it is valid (Unsupported) > +SGPShowSandboxWarning=Show sandbox warning banner > +SGPAllowUserAcceptJNLPSecurityRequests=Allow user to accept JNLP security requests > +SGPCheckCertRevocationList=Check certificates for revocation using Certificate Revocation Lists (CRLs) (Unsupported) > +SGPEnableOnlineCertValidate=Enable online certificate validation (Unsupported) > +SGPEnableTrustedPublisherList=Enable list of trusted publishers (Unsupported) > +SGPEnableBlacklistRevocation=Enable blacklist revocation check (Unsupported) > +SGPEnableCachingPassword=Enable caching password for authentication (Unsupported) > +SGPUseSSL2=Use SSL 2.0 compatible ClientHello format (Unsupported) > +SGPUseSSL3=Use SSL 3.0 (Unsupported) > +SGPUseTLS1=Use TLS 1.0 (Unsupported) > + > +# Control Panel - TemporaryInternetFilesPanel > +TIFPEnableCache=Keep temporary files on my computer > +TIFPLocation=Location > +TIFPLocationLabel=Select the location where temporary files are kept > +TIFPChange=Change > +TIFPDiskSpace=Disk space > +TIFPCompressionLevel=Select the compression level for JAR files > +TIFPNone=None > +TIFPMax=Max > +TIFPCacheSize=Set the amount of disk space for storing temporary files > +TIFPDeleteFiles=Delete files > +TIFPRestoreDefaults=Restore defaults > + > +# Control Panel - Misc. > +CPJRESupport=Icedtea-web currently does not support multiple JRE. > + > +# Buttons > +ButApply=Apply > diff -r c267c4e2b844 netx/net/sourceforge/jnlp/security/viewer/CertificatePane.java > --- a/netx/net/sourceforge/jnlp/security/viewer/CertificatePane.java Mon Nov 29 10:19:17 2010 -0500 > +++ b/netx/net/sourceforge/jnlp/security/viewer/CertificatePane.java Tue Nov 30 10:59:29 2010 -0500 > @@ -230,17 +230,18 @@ > tablePanel.add(tabbedPane, BorderLayout.CENTER); > tablePanel.add(buttonPanel, BorderLayout.SOUTH); > > - JPanel closePanel = new JPanel(new BorderLayout()); > - closePanel.setBorder(BorderFactory.createEmptyBorder(7,7,7,7)); > - JButton closeButton = new JButton(R("ButClose")); > - closeButton.addActionListener(new CloseButtonListener()); > - defaultFocusComponent = closeButton; > - closePanel.add(closeButton, BorderLayout.EAST); > - > main.add(certificateTypePanel, BorderLayout.NORTH); > main.add(tablePanel, BorderLayout.CENTER); > - main.add(closePanel, BorderLayout.SOUTH); > - > + > + if (parent != null){ > + JPanel closePanel = new JPanel(new BorderLayout()); > + closePanel.setBorder(BorderFactory.createEmptyBorder(7,7,7,7)); > + JButton closeButton = new JButton(R("ButClose")); > + closeButton.addActionListener(new CloseButtonListener()); > + defaultFocusComponent = closeButton; > + closePanel.add(closeButton, BorderLayout.EAST); > + main.add(closePanel, BorderLayout.SOUTH); > + } > add(main); > > } From ptisnovs at icedtea.classpath.org Tue Nov 30 09:14:45 2010 From: ptisnovs at icedtea.classpath.org (ptisnovs at icedtea.classpath.org) Date: Tue, 30 Nov 2010 17:14:45 +0000 Subject: /hg/icedtea6: Regression test fix - compilation results are chec... Message-ID: changeset 0481c6a6d7ed in /hg/icedtea6 details: http://icedtea.classpath.org/hg/icedtea6?cmd=changeset;node=0481c6a6d7ed author: ptisnovs date: Tue Nov 30 18:16:07 2010 +0100 Regression test fix - compilation results are checked against correct .out files. diffstat: 3 files changed, 40 insertions(+), 1 deletion(-) ChangeLog | 8 ++++++++ Makefile.am | 3 ++- patches/jtreg-T6638712-fix.patch | 30 ++++++++++++++++++++++++++++++ diffs (62 lines): diff -r d66a310d5c94 -r 0481c6a6d7ed ChangeLog --- a/ChangeLog Mon Nov 29 17:15:17 2010 +0100 +++ b/ChangeLog Tue Nov 30 18:16:07 2010 +0100 @@ -1,3 +1,11 @@ 2010-11-29 Pavel Tisnovsky + + * Makefile.am: + (ICEDTEA_PATCHES): Updated. + * patches/jtreg-T6638712-fix.patch: + Regression test fix - compilation results are checked against + correct .out files. + 2010-11-29 Pavel Tisnovsky * Makefile.am: diff -r d66a310d5c94 -r 0481c6a6d7ed Makefile.am --- a/Makefile.am Mon Nov 29 17:15:17 2010 +0100 +++ b/Makefile.am Tue Nov 30 18:16:07 2010 +0100 @@ -301,7 +301,8 @@ ICEDTEA_PATCHES = \ patches/openjdk/6876282-bigdecimal_divide.patch \ patches/f14-fonts.patch \ patches/jtreg-DeleteFont.patch \ - patches/jtreg-WindowWithWarningTest.patch + patches/jtreg-WindowWithWarningTest.patch \ + patches/jtreg-T6638712-fix.patch if WITH_ALT_HSBUILD ICEDTEA_PATCHES += \ diff -r d66a310d5c94 -r 0481c6a6d7ed patches/jtreg-T6638712-fix.patch --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/patches/jtreg-T6638712-fix.patch Tue Nov 30 18:16:07 2010 +0100 @@ -0,0 +1,30 @@ +--- openjdk-old/langtools/test/tools/javac/generics/inference/6638712/T6638712a.out 2010-11-30 14:44:29.000000000 +0100 ++++ openjdk/langtools/test/tools/javac/generics/inference/6638712/T6638712a.out 2010-11-30 15:27:57.000000000 +0100 +@@ -1,2 +1,2 @@ +-T6638712a.java:39:41: compiler.err.invalid.inferred.types: T, (- compiler.misc.inferred.do.not.conform.to.params: java.lang.Iterable>, java.util.List>) ++T6638712a.java:16:41: compiler.err.invalid.inferred.types: T, (- compiler.misc.inferred.do.not.conform.to.params: java.lang.Iterable>, java.util.List>) + 1 error +--- openjdk-old/langtools/test/tools/javac/generics/inference/6638712/T6638712b.out 2010-11-30 14:44:29.000000000 +0100 ++++ openjdk/langtools/test/tools/javac/generics/inference/6638712/T6638712b.out 2010-11-30 15:27:58.000000000 +0100 +@@ -1,2 +1,2 @@ +-T6638712b.java:37:21: compiler.err.prob.found.req: (- compiler.misc.incompatible.types.1: (- compiler.misc.no.conforming.instance.exists: T, T, java.lang.String)), T, java.lang.String ++T6638712b.java:14:21: compiler.err.prob.found.req: (- compiler.misc.incompatible.types.1: (- compiler.misc.no.conforming.instance.exists: T, T, java.lang.String)), T, java.lang.String + 1 error +--- openjdk-old/langtools/test/tools/javac/generics/inference/6638712/T6638712c.out 2010-11-30 14:44:29.000000000 +0100 ++++ openjdk/langtools/test/tools/javac/generics/inference/6638712/T6638712c.out 2010-11-30 15:27:59.000000000 +0100 +@@ -1,2 +1,2 @@ +-T6638712c.java:39:9: compiler.err.cant.apply.symbol: sort(T[],java.util.Comparator), T6638712c, , java.lang.Enum[],java.util.Comparator>, null ++T6638712c.java:16:9: compiler.err.cant.apply.symbol: sort(T[],java.util.Comparator), T6638712c, , java.lang.Enum[],java.util.Comparator>, null + 1 error +--- openjdk-old/langtools/test/tools/javac/generics/inference/6638712/T6638712d.out 2010-11-30 14:44:29.000000000 +0100 ++++ openjdk/langtools/test/tools/javac/generics/inference/6638712/T6638712d.out 2010-11-30 15:28:01.000000000 +0100 +@@ -1,2 +1,2 @@ +-T6638712d.java:39:9: compiler.err.cant.apply.symbol: m(U,java.util.List>), T6638712d, , int,java.util.List>, null ++T6638712d.java:16:9: compiler.err.cant.apply.symbol: m(U,java.util.List>), T6638712d, , int,java.util.List>, null + 1 error +--- openjdk-old/langtools/test/tools/javac/generics/inference/6638712/T6638712e.out 2010-11-30 14:44:29.000000000 +0100 ++++ openjdk/langtools/test/tools/javac/generics/inference/6638712/T6638712e.out 2010-11-30 15:28:02.000000000 +0100 +@@ -1,2 +1,2 @@ +-T6638712e.java:40:27: compiler.err.prob.found.req: (- compiler.misc.incompatible.types.1: (- compiler.misc.no.conforming.instance.exists: X, T6638712e.Foo, T6638712e.Foo)), T6638712e.Foo, T6638712e.Foo ++T6638712e.java:17:27: compiler.err.prob.found.req: (- compiler.misc.incompatible.types.1: (- compiler.misc.no.conforming.instance.exists: X, T6638712e.Foo, T6638712e.Foo)), T6638712e.Foo, T6638712e.Foo + 1 error From bugzilla-daemon at icedtea.classpath.org Tue Nov 30 09:15:09 2010 From: bugzilla-daemon at icedtea.classpath.org (bugzilla-daemon at icedtea.classpath.org) Date: Tue, 30 Nov 2010 17:15:09 +0000 Subject: [Bug 601] JRE failure with CollabNetSubversionEdge-1.3.0_linux-x86.tar.gz Message-ID: http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=601 ------- Comment #2 from gnu_andrew at member.fsf.org 2010-11-30 17:15 ------- This is a very old version of HotSpot that's failing. It may be worth trying icedtea6-1.9.2 to see if that still fails. The failure also seems to be in the Eclipse native code, so I don't immediately see how it's any issue with IcedTea. It sounds more like a problem with the native code you're using. Have you tried recompiling it against IcedTea? What does the collabnet tarball have to do with Eclipse? I don't see how that tarball is related to an Eclipse crash. -- Configure bugmail: http://icedtea.classpath.org/bugzilla/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are the assignee for the bug, or are watching the assignee. From ahughes at redhat.com Tue Nov 30 09:21:08 2010 From: ahughes at redhat.com (Dr Andrew John Hughes) Date: Tue, 30 Nov 2010 17:21:08 +0000 Subject: [icedtea6] remove obsolete sparc patch In-Reply-To: <4CF519DB.3020608@ubuntu.com> References: <4CF519DB.3020608@ubuntu.com> Message-ID: <20101130172108.GO11042@rivendell.middle-earth.co.uk> On 16:35 Tue 30 Nov , Matthias Klose wrote: > This chunk can be removed, in the defs.make file it is preceded by > > # sparc > ifneq (,$(filter $(ARCH), sparc sparc64)) > ifeq ($(ARCH_DATA_MODEL), 64) > ARCH_DATA_MODEL = 64 > MAKE_ARGS += LP64=1 > PLATFORM = linux-sparcv9 > VM_PLATFORM = linux_sparcv9 > else > ARCH_DATA_MODEL = 32 > PLATFORM = linux-sparc > VM_PLATFORM = linux_sparc > endif > HS_ARCH = sparc > endif > > > which already cares about the settings. > > Matthias > --- openjdk/hotspot/src/cpu/sparc/vm/frame_sparc.hpp.orig 2010-08-27 18:01:43.000000000 +0000 > +++ openjdk/hotspot/src/cpu/sparc/vm/frame_sparc.hpp 2010-09-07 15:15:04.000000000 +0000 > @@ -264,7 +264,7 @@ > > private: > > - constantPoolCacheOop* frame::interpreter_frame_cpoolcache_addr() const; > + constantPoolCacheOop* interpreter_frame_cpoolcache_addr() const; > > #ifndef CC_INTERP > Err... which sparc patch? What's the filename? -- Andrew :) Free Java Software Engineer Red Hat, Inc. (http://www.redhat.com) Support Free Java! Contribute to GNU Classpath and the OpenJDK http://www.gnu.org/software/classpath http://openjdk.java.net PGP Key: 94EFD9D8 (http://subkeys.pgp.net) Fingerprint = F8EF F1EA 401E 2E60 15FA 7927 142C 2591 94EF D9D8 From doko at ubuntu.com Tue Nov 30 09:23:21 2010 From: doko at ubuntu.com (Matthias Klose) Date: Tue, 30 Nov 2010 18:23:21 +0100 Subject: [icedtea6] remove obsolete sparc patch In-Reply-To: <20101130172108.GO11042@rivendell.middle-earth.co.uk> References: <4CF519DB.3020608@ubuntu.com> <20101130172108.GO11042@rivendell.middle-earth.co.uk> Message-ID: <4CF53309.9070201@ubuntu.com> On 30.11.2010 18:21, Dr Andrew John Hughes wrote: > On 16:35 Tue 30 Nov , Matthias Klose wrote: >> This chunk can be removed, in the defs.make file it is preceded by >> >> # sparc >> ifneq (,$(filter $(ARCH), sparc sparc64)) >> ifeq ($(ARCH_DATA_MODEL), 64) >> ARCH_DATA_MODEL = 64 >> MAKE_ARGS += LP64=1 >> PLATFORM = linux-sparcv9 >> VM_PLATFORM = linux_sparcv9 >> else >> ARCH_DATA_MODEL = 32 >> PLATFORM = linux-sparc >> VM_PLATFORM = linux_sparc >> endif >> HS_ARCH = sparc >> endif >> >> >> which already cares about the settings. >> >> Matthias wrong attachment ... -------------- next part -------------- A non-text attachment was scrubbed... Name: sparc.diff Type: text/x-diff Size: 1518 bytes Desc: not available Url : http://mail.openjdk.java.net/pipermail/distro-pkg-dev/attachments/20101130/342c3d4f/sparc.diff From asu at redhat.com Tue Nov 30 10:28:19 2010 From: asu at redhat.com (Andrew Su) Date: Tue, 30 Nov 2010 13:28:19 -0500 Subject: [RFC][icedtea-web]: Adding control panel to icedtea-web In-Reply-To: <20101130165940.GL11042@rivendell.middle-earth.co.uk> References: <1738146044.848511291132775127.JavaMail.root@zmail01.collab.prod.int.phx2.redhat.com> <612457092.848621291132803125.JavaMail.root@zmail01.collab.prod.int.phx2.redhat.com> <20101130165940.GL11042@rivendell.middle-earth.co.uk> Message-ID: <4CF54243.90409@redhat.com> On 11/30/2010 11:59 AM, Dr Andrew John Hughes wrote: > On 11:00 Tue 30 Nov , Andrew Su wrote: >> Hello, >> >> The attached patch is to move the control panel into netx instead of having its own package. >> >> ChangeLog: >> * Makefile.am: >> (CONTROLPANEL_LAUNCHER_OBJECTS): Objects used to compile binary >> control panel. >> (all-local): Add $(NETX_DIR)/launcher/controlpanel/controlpanel. >> (install-exec-local): Install the control panel binary. >> (uninstall-local): Removes the compiled control panel binary. >> ($(NETX_DIR)/launcher/controlpanel/%.o): Create the launcher objects. >> ($(NETX_DIR)/launcher/controlpanel/controlpanel): Link the objects to >> make the launcher. >> * netx/net/sourceforge/jnlp/controlpanel/AboutPanel.java, >> * netx/net/sourceforge/jnlp/controlpanel/ComboItem.java, >> * netx/net/sourceforge/jnlp/controlpanel/ControlPanel.java, >> * netx/net/sourceforge/jnlp/controlpanel/DebuggingPanel.java, >> * netx/net/sourceforge/jnlp/controlpanel/DesktopShortcutPanel.java, >> * netx/net/sourceforge/jnlp/controlpanel/JREPanel.java, >> * netx/net/sourceforge/jnlp/controlpanel/NamedBorderPanel.java, >> * netx/net/sourceforge/jnlp/controlpanel/SecuritySettingsPanel.java, >> * netx/net/sourceforge/jnlp/controlpanel/TemporaryInternetFilesPanel.java, >> * netx/net/sourceforge/jnlp/controlpanel/network/AdvancedProxySettingsDialog.java, >> * netx/net/sourceforge/jnlp/controlpanel/network/AdvancedProxySettingsPane.java, >> * netx/net/sourceforge/jnlp/controlpanel/network/NetworkSettingsPanel.java,: >> New classes. All methods are new as well. >> * netx/net/sourceforge/jnlp/resources/Messages.properties: Added >> messages used by control panel. >> * netx/net/sourceforge/jnlp/security/viewer/CertificatePane.java: >> Changed to not display a close button if null parent frame. >> >> Questions? Comments? Concerns? >> > I haven't looked at the code but good to see it back in a sensible place. > I presume it compiles? Yes it compiles, installs, and executes. > As to the Makefile changes, you need to resync against current HEAD. The following > updates are needed: > > * $(NETX_DIR)/launcher/controlpanel/controlpanel creates a useless launcher directory > * The installation now uses $(INSTALL) Removed the mkdir -p launcher. Changed to use $(INSTALL). > Or in other words, make sure that make distcheck still works and you haven't just broken it. make distcheck fails to pass on head without my patch... > I don't think controlpanel is a very clear name for the binary. itweb-settings? Something > that makes it clear what it controls. It's going to be quite confusing if this ends up on > the main path as 'controlpanel'. name changed to itweb-settings as suggested. > Also in your Javadoc comments, use '(' and ')' for e-mail addresses as '<' and'>' are used > for HTML tags. Changed to '(' and ')'. Thanks for looking it over. Cheers, Andrew -------------- next part -------------- A non-text attachment was scrubbed... Name: 20101130_controlpanel_v2.patch Type: text/x-patch Size: 88815 bytes Desc: not available Url : http://mail.openjdk.java.net/pipermail/distro-pkg-dev/attachments/20101130/60f57f4f/20101130_controlpanel_v2.patch From bugzilla-daemon at icedtea.classpath.org Tue Nov 30 10:33:48 2010 From: bugzilla-daemon at icedtea.classpath.org (bugzilla-daemon at icedtea.classpath.org) Date: Tue, 30 Nov 2010 18:33:48 +0000 Subject: [Bug 601] JRE failure with CollabNetSubversionEdge-1.3.0_linux-x86.tar.gz Message-ID: http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=601 ------- Comment #3 from Mark.C.Edwards at saic.com 2010-11-30 18:33 ------- The Eclipse version is Helios 3.6.1. The subclipse plug-in was added for subversion access. When the subversion repository was accessed via Eclipse, a complaint was issued indicating the JavaHL native libraries were missing. A URL was presented to the Collabnet site to pull the tarball with the native libraries as a remedy to the missing library code. The testing with the javahltests.jar was performed to ensure the new library was good. Launching Eclipse with those new libraries prompts the crash. This system is based on Red Hat Enterprise Linux 5.4. My customer insists on buying Red Hat to have a "supported" system, thus the old copies of IcedTea. Getting a fresher release of IcedTea is wholly dependent on getting Red Hat to push it out the distribution channel. -- Configure bugmail: http://icedtea.classpath.org/bugzilla/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are the assignee for the bug, or are watching the assignee. From ahughes at redhat.com Tue Nov 30 11:40:51 2010 From: ahughes at redhat.com (Dr Andrew John Hughes) Date: Tue, 30 Nov 2010 19:40:51 +0000 Subject: [icedtea6] remove obsolete sparc patch In-Reply-To: <4CF53309.9070201@ubuntu.com> References: <4CF519DB.3020608@ubuntu.com> <20101130172108.GO11042@rivendell.middle-earth.co.uk> <4CF53309.9070201@ubuntu.com> Message-ID: <20101130194050.GR11042@rivendell.middle-earth.co.uk> On 18:23 Tue 30 Nov , Matthias Klose wrote: > On 30.11.2010 18:21, Dr Andrew John Hughes wrote: > > On 16:35 Tue 30 Nov , Matthias Klose wrote: > >> This chunk can be removed, in the defs.make file it is preceded by > >> > >> # sparc > >> ifneq (,$(filter $(ARCH), sparc sparc64)) > >> ifeq ($(ARCH_DATA_MODEL), 64) > >> ARCH_DATA_MODEL = 64 > >> MAKE_ARGS += LP64=1 > >> PLATFORM = linux-sparcv9 > >> VM_PLATFORM = linux_sparcv9 > >> else > >> ARCH_DATA_MODEL = 32 > >> PLATFORM = linux-sparc > >> VM_PLATFORM = linux_sparc > >> endif > >> HS_ARCH = sparc > >> endif > >> > >> > >> which already cares about the settings. > >> > >> Matthias > > wrong attachment ... > > Ah makes far more sense now! :-) Looks fine to commit. > diff -r 7940436316db ChangeLog > --- a/ChangeLog Mon Nov 29 15:54:26 2010 +0100 > +++ b/ChangeLog Tue Nov 30 16:33:43 2010 +0100 > @@ -1,3 +1,7 @@ > +2010-11-30 Matthias Klose > + > + * patches/icedtea-sparc64-linux.patch: Remove obsolete chunk. > + > 2010-11-29 Matthias Klose > > * patches/hotspot/hs19/ia64-fix.patch: Reapply chunk from > diff -r 7940436316db patches/icedtea-sparc64-linux.patch > --- a/patches/icedtea-sparc64-linux.patch Mon Nov 29 15:54:26 2010 +0100 > +++ b/patches/icedtea-sparc64-linux.patch Tue Nov 30 16:33:43 2010 +0100 > @@ -1,21 +1,3 @@ > -diff -Nru openjdk.orig/hotspot/make/linux/makefiles/defs.make openjdk/hotspot/make/linux/makefiles/defs.make > ---- openjdk.orig/hotspot/make/linux/makefiles/defs.make 2008-06-22 22:28:06.000000000 +0100 > -+++ openjdk/hotspot/make/linux/makefiles/defs.make 2008-06-22 22:35:27.000000000 +0100 > -@@ -73,6 +73,14 @@ > - HS_ARCH = sparc > - endif > - > -+# sparc > -+ifeq ($(ARCH), sparc) > -+ ARCH_DATA_MODEL = 32 > -+ PLATFORM = linux-sparc > -+ VM_PLATFORM = linux_sparc > -+ HS_ARCH = sparc > -+endif > -+ > - # x86_64 > - ifeq ($(ARCH), x86_64) > - ifeq ($(ARCH_DATA_MODEL), 64) > diff -Nru openjdk.orig/hotspot/src/cpu/sparc/vm/c1_LIRGenerator_sparc.cpp openjdk/hotspot/src/cpu/sparc/vm/c1_LIRGenerator_sparc.cpp > --- openjdk.orig/hotspot/src/cpu/sparc/vm/c1_LIRGenerator_sparc.cpp 2008-06-22 20:44:41.000000000 +0100 > +++ openjdk/hotspot/src/cpu/sparc/vm/c1_LIRGenerator_sparc.cpp 2008-06-22 22:35:27.000000000 +0100 -- Andrew :) Free Java Software Engineer Red Hat, Inc. (http://www.redhat.com) Support Free Java! Contribute to GNU Classpath and the OpenJDK http://www.gnu.org/software/classpath http://openjdk.java.net PGP Key: 94EFD9D8 (http://subkeys.pgp.net) Fingerprint = F8EF F1EA 401E 2E60 15FA 7927 142C 2591 94EF D9D8 From bugzilla-daemon at icedtea.classpath.org Tue Nov 30 11:48:52 2010 From: bugzilla-daemon at icedtea.classpath.org (bugzilla-daemon at icedtea.classpath.org) Date: Tue, 30 Nov 2010 19:48:52 +0000 Subject: [Bug 601] JRE failure with CollabNetSubversionEdge-1.3.0_linux-x86.tar.gz Message-ID: http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=601 ------- Comment #4 from gnu_andrew at member.fsf.org 2010-11-30 19:48 ------- I understand the constraints with using the RHEL package. From the perspective of diagnosis, it would be useful to know if the same failure occurs with a newer version. I'm not saying you have to switch to it. However, I'm not convinced this is related to OpenJDK anyway. The stack trace shows a failure in the native libraries. You say you downloaded the native libraries from somewhere? Is there not source code to build these libraries instead? While they may work in the test suite, I think they're causing your Eclipse crash. -- Configure bugmail: http://icedtea.classpath.org/bugzilla/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are the assignee for the bug, or are watching the assignee. From bugzilla-daemon at icedtea.classpath.org Tue Nov 30 11:50:23 2010 From: bugzilla-daemon at icedtea.classpath.org (bugzilla-daemon at icedtea.classpath.org) Date: Tue, 30 Nov 2010 19:50:23 +0000 Subject: [Bug 601] JRE failure with CollabNetSubversionEdge-1.3.0_linux-x86.tar.gz Message-ID: http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=601 ------- Comment #5 from gnu_andrew at member.fsf.org 2010-11-30 19:50 ------- BTW, the latest RHEL is 5.5 so your customer may want to consider updating. -- Configure bugmail: http://icedtea.classpath.org/bugzilla/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are the assignee for the bug, or are watching the assignee. From mark at klomp.org Tue Nov 30 12:14:20 2010 From: mark at klomp.org (Mark Wielaard) Date: Tue, 30 Nov 2010 21:14:20 +0100 Subject: Reviewer needed - two corrections in JTreg test harness In-Reply-To: <4CEA9D6C.8010505@redhat.com> References: <4CEA75DE.8050305@redhat.com> <1290435501.2833.5.camel@springer.wildebeest.org> <4CEA7DAA.5090407@redhat.com> <20101122143843.GD19794@rivendell.middle-earth.co.uk> <4CEA8769.3080200@redhat.com> <20101122151709.GE19794@rivendell.middle-earth.co.uk> <4CEA9D6C.8010505@redhat.com> Message-ID: <1291148061.28640.6.camel@hermans.wildebeest.org> Hi Pavel, On Mon, 2010-11-22 at 17:42 +0100, Pavel Tisnovsky wrote: > diff -r 789ec2d452bd -r eb0682d1be0d test/jtreg/com/sun/javatest/regtest/CompileAction.java > --- a/test/jtreg/com/sun/javatest/regtest/CompileAction.java Mon Nov 22 04:51:01 2010 +0100 > +++ b/test/jtreg/com/sun/javatest/regtest/CompileAction.java Mon Nov 22 17:42:59 2010 +0100 > [...] > + Properties p = System.getProperties(); > + for (Map.Entry e: props.entrySet()) { > + String name = e.getKey(); > + String value = e.getValue(); > + if (name.equals("test.class.path.prefix")) { > + System.err.println("*** java.class.path" + System.getProperty("java.class.path")); > + Path cp = new Path(value, System.getProperty("java.class.path")); > + p.put("java.class.path", cp.toString()); > + } else { > + System.err.println("prop: " + e.getKey() + "\t" + e.getValue()); > + p.put(e.getKey(), e.getValue()); > + } > + } > + System.setProperties(p); > + } > [... and a bit later in javatest/regtest/Action.java ...] > + // we just reset important props that were written in the test setup > + boolean resetAllSysProps; > + SecurityManager sm = System.getSecurityManager(); > + if (sm instanceof RegressionSecurityManager) { > + resetAllSysProps = ((RegressionSecurityManager) sm).isPropertiesAccessed(); > + } else { > + resetAllSysProps = true; > + } > + System.err.println("resetAllSysProps: " + resetAllSysProps); These System.err.println are a little noisy. Do we really need them? Thanks, Mark From ahughes at redhat.com Tue Nov 30 13:01:53 2010 From: ahughes at redhat.com (Dr Andrew John Hughes) Date: Tue, 30 Nov 2010 21:01:53 +0000 Subject: [icedtea-web] RFC: Allow 1.7 & 1.8 as build JDKs Message-ID: <20101130210153.GT11042@rivendell.middle-earth.co.uk> Simple patch attached. It moves NETX_DIR to the front of the bootclasspath so that the NetX classes in existing 1.7 and 1.8 installations don't get in the way of the newer versions just built. Ok to apply? *NOTE*: You still are unable to install the final IcedTea-Web product in that JDK. I think the launcher needs to prepend them to the bootclasspath to override the rt.jar versions. -- Andrew :) Free Java Software Engineer Red Hat, Inc. (http://www.redhat.com) Support Free Java! Contribute to GNU Classpath and the OpenJDK http://www.gnu.org/software/classpath http://openjdk.java.net PGP Key: 94EFD9D8 (http://subkeys.pgp.net) Fingerprint = F8EF F1EA 401E 2E60 15FA 7927 142C 2591 94EF D9D8 -------------- next part -------------- diff -r b1409d2cbd86 Makefile.am --- a/Makefile.am Tue Nov 30 16:53:16 2010 +0000 +++ b/Makefile.am Tue Nov 30 20:57:41 2010 +0000 @@ -220,8 +220,7 @@ mkdir -p $(abs_top_builddir)/liveconnect && \ $(BOOT_DIR)/bin/javac $(IT_JAVACFLAGS) \ -d $(abs_top_builddir)/liveconnect \ - -classpath $(NETX_DIR) \ - -bootclasspath $(RUNTIME) \ + -bootclasspath $(NETX_DIR):$(RUNTIME) \ -sourcepath $(LIVECONNECT_SRCS) \ @liveconnect-source-files.txt ; \ fi From dbhole at redhat.com Tue Nov 30 13:52:38 2010 From: dbhole at redhat.com (Deepak Bhole) Date: Tue, 30 Nov 2010 16:52:38 -0500 Subject: [icedtea-web] RFC: Allow 1.7 & 1.8 as build JDKs In-Reply-To: <20101130210153.GT11042@rivendell.middle-earth.co.uk> References: <20101130210153.GT11042@rivendell.middle-earth.co.uk> Message-ID: <20101130215238.GJ16755@redhat.com> * Dr Andrew John Hughes [2010-11-30 16:51]: > Simple patch attached. It moves NETX_DIR to the front of the bootclasspath > so that the NetX classes in existing 1.7 and 1.8 installations don't get in the > way of the newer versions just built. Ok to apply? > > *NOTE*: You still are unable to install the final IcedTea-Web product in that JDK. > I think the launcher needs to prepend them to the bootclasspath to override the > rt.jar versions. Looks fine to me.. missing ChangeLog entry though, which I assume you will add before commit :) Okay for HEAD with a CL entry. Cheers, Deepak > -- > Andrew :) > > Free Java Software Engineer > Red Hat, Inc. (http://www.redhat.com) > > Support Free Java! > Contribute to GNU Classpath and the OpenJDK > http://www.gnu.org/software/classpath > http://openjdk.java.net > PGP Key: 94EFD9D8 (http://subkeys.pgp.net) > Fingerprint = F8EF F1EA 401E 2E60 15FA 7927 142C 2591 94EF D9D8 > diff -r b1409d2cbd86 Makefile.am > --- a/Makefile.am Tue Nov 30 16:53:16 2010 +0000 > +++ b/Makefile.am Tue Nov 30 20:57:41 2010 +0000 > @@ -220,8 +220,7 @@ > mkdir -p $(abs_top_builddir)/liveconnect && \ > $(BOOT_DIR)/bin/javac $(IT_JAVACFLAGS) \ > -d $(abs_top_builddir)/liveconnect \ > - -classpath $(NETX_DIR) \ > - -bootclasspath $(RUNTIME) \ > + -bootclasspath $(NETX_DIR):$(RUNTIME) \ > -sourcepath $(LIVECONNECT_SRCS) \ > @liveconnect-source-files.txt ; \ > fi From dlila at redhat.com Tue Nov 30 14:16:26 2010 From: dlila at redhat.com (Denis Lila) Date: Tue, 30 Nov 2010 17:16:26 -0500 (EST) Subject: [RFC] bug 647674 fix In-Reply-To: <167908808.532811291155341413.JavaMail.root@zmail04.collab.prod.int.phx2.redhat.com> Message-ID: <648809217.532951291155386560.JavaMail.root@zmail04.collab.prod.int.phx2.redhat.com> Hello. Here's a webrev: http://icedtea.classpath.org/~dlila/webrevs/647674/ of a fix for: https://bugzilla.redhat.com/show_bug.cgi?id=647674 Ok to commit? Thank you, Denis. From kelly.ohair at oracle.com Tue Nov 30 14:56:47 2010 From: kelly.ohair at oracle.com (Kelly O'Hair) Date: Tue, 30 Nov 2010 14:56:47 -0800 Subject: Need reviewers and comments: 6989472: Provide simple jdk identification information in the install image In-Reply-To: <1291126402.2883.54.camel@springer.wildebeest.org> References: <4CA9A8E8-0A2F-4F05-BF1F-5C2EF6168FD7@oracle.com> <1291126402.2883.54.camel@springer.wildebeest.org> Message-ID: <38353036-D8B6-442D-BF79-8DEFB18BFB32@oracle.com> On Nov 30, 2010, at 6:13 AM, Mark Wielaard wrote: > Hi Kelly, > > On Mon, 2010-11-29 at 14:44 -0800, Kelly O'Hair wrote: >> Need reviewers and comments: >> 6989472: Provide simple jdk identification information in the >> install image >> http://cr.openjdk.java.net/~ohair/openjdk7/jdk_release/webrev/ > > CCing distro-pkg-dev since we were recently discussing runtime > identification on irc wrt the various IcedTea supported runtimes > (hotspot client, server, zero, shark and cacao). > >> With JDK6 Updates we purposely resisted many rebranding changes that >> could impacted >> customers, however at one point we had accidently changed the Windows >> DLL/EXE >> COMPANY value thinking that no one would be looking at it. >> We were wrong and this change cause Eclipse failures, so we are >> looking for a solution, see: >> https://bugs.eclipse.org/bugs/show_bug.cgi?id=321390 >> So we went back and change JDK6 Updates back the way it was, and >> learned a valuable lesson. >> >> But we have and will change JDK7 in this regard, so we wanted a >> better >> way for an app to >> know what it had it's hands on without using platform specific >> information in the binary files. >> >> The above change creates a small text file called "jdk.release" at >> the >> top of the install image >> with some basic values that could help direct any app using the jdk >> in >> constructing a command >> line or even being assured that this jdk install image will even work >> on your existing system. >> In the Eclipse case it was looking for "Sun", but I suspect it really >> wanted to know if the VM was >> "Hotspot" because I think it was trying to set a Hotspot specific >> PermGen option. > > If so, then I would leave out the confusing vendor strings from the > jdk.release file. Because that isn't what people want to know. And > might > reintroduce the confusion. The os, arch, version of class library and > runtime is what is selected on. Maybe this should be extended with the > versions of jaxp, jaxws, corba and langtools that are included. Ouch. jaxp? jaxws... Seems like a bigger hole than I wanted to dig. :^( I could see skipping the vendor ones, since Eclipse even wasn't really after "Sun" as much as 'Is this hotspot?'. The questions I wanted to answer, without actually running the jdk image was: Is this hotspot? What basic OS is this for? e.g. Windows, Linux, Solaris What minimal OS version is needed? e.g. Linux 2.6, SunOS 5.10, Windows 5.1, etc. What minimal arch is supported? e.g. x86, or sparc, or x64 (no x86 ability), ppc, etc. What jdk release is this? e.g. 1.7.0 I could probably also skip the VM version. > >> In any case I think this jdk.release file should provide the >> necessary >> answers in the future. > > But I don't think this is specific enough yet. Hotspot comes in some > variants (at least server and client), which might or might not be > available on the platform. You can know which ones if you look at the > jre/lib//jvm.cfg file. [IcedTea then extends this with shark, > zero, cacao as alternatives]. The problem with that approach is that > to > get at this file you need to know the arch mapping/dir in use. Would > it > be possible to somehow merge or at least reference the jvm.cfg file > with/in the jdk.release file? Ah... that might be interesting... If I provided the relative path to the jvm.cfg file, then I suppose the question of "Is it hotspot?" could be done looking into that file. I assume the similar questions of "Is it jrockit?" or "Is it j9?" could also be answered? In general, I was assuming a hotspot VM was a hotspot VM, server or client wasn't of interest as much as what specific VM implementation it was. -kto > >> The make variable COMPANY_NAME determines the vendor name during a >> build, >> so a Linux 64bit build from a make command line like: >> make COMPANY_NAME="Test Company Name" >> should result in a jdk.release file that looks something like: >> >> os.name = Linux >> os.version = 2.6 >> os.arch = amd64 >> java.vendor = Test Company Name >> java.version = 1.7.0-internal >> java.vm.vendor = Test Company Name >> java.vm.name = Hotspot(TM) >> java.vm.version = 20.0-b02 >> >> A formal Oracle jdk7 EA build on Linux 64bit should look something >> like: >> >> os.name = Linux >> os.version = 2.6 >> os.arch = amd64 >> java.vendor = Oracle Corporation >> java.version = 1.7.0-ea >> java.vm.vendor = Oracle Corporation >> java.vm.name = Hotspot(TM) >> java.vm.version = 20.0-b02 >> >> Comments are welcome. Although, polite constructive comments are >> probably more what I'd like to see. ;^) > > From andrew at icedtea.classpath.org Tue Nov 30 15:15:20 2010 From: andrew at icedtea.classpath.org (andrew at icedtea.classpath.org) Date: Tue, 30 Nov 2010 23:15:20 +0000 Subject: /hg/icedtea-web: Add NETX_DIR on the bootclasspath to avoid olde... Message-ID: changeset 2faf3ab9f3c6 in /hg/icedtea-web details: http://icedtea.classpath.org/hg/icedtea-web?cmd=changeset;node=2faf3ab9f3c6 author: Andrew John Hughes date: Tue Nov 30 23:15:11 2010 +0000 Add NETX_DIR on the bootclasspath to avoid older NetX releases in 1.7 and 1.8's rt.jar. 2010-11-30 Andrew John Hughes * Makefile.am: (liveconnect): Add NETX_DIR first on the bootclasspath so the plugin can be built against 1.7 and 1.8 branch releases of IcedTea6. diffstat: 2 files changed, 8 insertions(+), 2 deletions(-) ChangeLog | 7 +++++++ Makefile.am | 3 +-- diffs (27 lines): diff -r b1409d2cbd86 -r 2faf3ab9f3c6 ChangeLog --- a/ChangeLog Tue Nov 30 16:53:16 2010 +0000 +++ b/ChangeLog Tue Nov 30 23:15:11 2010 +0000 @@ -1,3 +1,10 @@ 2010-11-26 Andrew John Hughes + + * Makefile.am: + (liveconnect): Add NETX_DIR first on the bootclasspath + so the plugin can be built against 1.7 and 1.8 + branch releases of IcedTea6. + 2010-11-26 Andrew John Hughes Make distcheck work. diff -r b1409d2cbd86 -r 2faf3ab9f3c6 Makefile.am --- a/Makefile.am Tue Nov 30 16:53:16 2010 +0000 +++ b/Makefile.am Tue Nov 30 23:15:11 2010 +0000 @@ -220,8 +220,7 @@ stamps/liveconnect.stamp: liveconnect-so mkdir -p $(abs_top_builddir)/liveconnect && \ $(BOOT_DIR)/bin/javac $(IT_JAVACFLAGS) \ -d $(abs_top_builddir)/liveconnect \ - -classpath $(NETX_DIR) \ - -bootclasspath $(RUNTIME) \ + -bootclasspath $(NETX_DIR):$(RUNTIME) \ -sourcepath $(LIVECONNECT_SRCS) \ @liveconnect-source-files.txt ; \ fi From ahughes at redhat.com Tue Nov 30 15:15:51 2010 From: ahughes at redhat.com (Dr Andrew John Hughes) Date: Tue, 30 Nov 2010 23:15:51 +0000 Subject: [icedtea-web] RFC: Allow 1.7 & 1.8 as build JDKs In-Reply-To: <20101130215238.GJ16755@redhat.com> References: <20101130210153.GT11042@rivendell.middle-earth.co.uk> <20101130215238.GJ16755@redhat.com> Message-ID: <20101130231551.GA11042@rivendell.middle-earth.co.uk> On 16:52 Tue 30 Nov , Deepak Bhole wrote: > * Dr Andrew John Hughes [2010-11-30 16:51]: > > Simple patch attached. It moves NETX_DIR to the front of the bootclasspath > > so that the NetX classes in existing 1.7 and 1.8 installations don't get in the > > way of the newer versions just built. Ok to apply? > > > > *NOTE*: You still are unable to install the final IcedTea-Web product in that JDK. > > I think the launcher needs to prepend them to the bootclasspath to override the > > rt.jar versions. > > Looks fine to me.. missing ChangeLog entry though, which I assume you > will add before commit :) > > Okay for HEAD with a CL entry. > Yes, done. I just fired off the patch quickly because I was discussing it with Omair on IRC and assumed he would give a quick ack. But seems not. Thanks for doing so. > Cheers, > Deepak > > > -- > > Andrew :) > > > > Free Java Software Engineer > > Red Hat, Inc. (http://www.redhat.com) > > > > Support Free Java! > > Contribute to GNU Classpath and the OpenJDK > > http://www.gnu.org/software/classpath > > http://openjdk.java.net > > PGP Key: 94EFD9D8 (http://subkeys.pgp.net) > > Fingerprint = F8EF F1EA 401E 2E60 15FA 7927 142C 2591 94EF D9D8 > > > diff -r b1409d2cbd86 Makefile.am > > --- a/Makefile.am Tue Nov 30 16:53:16 2010 +0000 > > +++ b/Makefile.am Tue Nov 30 20:57:41 2010 +0000 > > @@ -220,8 +220,7 @@ > > mkdir -p $(abs_top_builddir)/liveconnect && \ > > $(BOOT_DIR)/bin/javac $(IT_JAVACFLAGS) \ > > -d $(abs_top_builddir)/liveconnect \ > > - -classpath $(NETX_DIR) \ > > - -bootclasspath $(RUNTIME) \ > > + -bootclasspath $(NETX_DIR):$(RUNTIME) \ > > -sourcepath $(LIVECONNECT_SRCS) \ > > @liveconnect-source-files.txt ; \ > > fi > -- Andrew :) Free Java Software Engineer Red Hat, Inc. (http://www.redhat.com) Support Free Java! Contribute to GNU Classpath and IcedTea http://www.gnu.org/software/classpath http://icedtea.classpath.org PGP Key: 94EFD9D8 (http://subkeys.pgp.net) Fingerprint = F8EF F1EA 401E 2E60 15FA 7927 142C 2591 94EF D9D8 From ahughes at redhat.com Tue Nov 30 15:26:27 2010 From: ahughes at redhat.com (Dr Andrew John Hughes) Date: Tue, 30 Nov 2010 23:26:27 +0000 Subject: [RFC] bug 647674 fix In-Reply-To: <648809217.532951291155386560.JavaMail.root@zmail04.collab.prod.int.phx2.redhat.com> References: <167908808.532811291155341413.JavaMail.root@zmail04.collab.prod.int.phx2.redhat.com> <648809217.532951291155386560.JavaMail.root@zmail04.collab.prod.int.phx2.redhat.com> Message-ID: <20101130232627.GB11042@rivendell.middle-earth.co.uk> On 17:16 Tue 30 Nov , Denis Lila wrote: > Hello. > > Here's a webrev: http://icedtea.classpath.org/~dlila/webrevs/647674/ > of a fix for: https://bugzilla.redhat.com/show_bug.cgi?id=647674 > > Ok to commit? > > Thank you, > Denis. Please post patches in e-mail. Otherwise, ok to commit with an appropriate update to NEWS including the two (Oracle & RH) bug IDs. -- Andrew :) Free Java Software Engineer Red Hat, Inc. (http://www.redhat.com) Support Free Java! Contribute to GNU Classpath and IcedTea http://www.gnu.org/software/classpath http://icedtea.classpath.org PGP Key: 94EFD9D8 (http://subkeys.pgp.net) Fingerprint = F8EF F1EA 401E 2E60 15FA 7927 142C 2591 94EF D9D8 From dbhole at redhat.com Tue Nov 30 15:31:45 2010 From: dbhole at redhat.com (Deepak Bhole) Date: Tue, 30 Nov 2010 18:31:45 -0500 Subject: [icedtea-web] RFC: Allow 1.7 & 1.8 as build JDKs In-Reply-To: <20101130231551.GA11042@rivendell.middle-earth.co.uk> References: <20101130210153.GT11042@rivendell.middle-earth.co.uk> <20101130215238.GJ16755@redhat.com> <20101130231551.GA11042@rivendell.middle-earth.co.uk> Message-ID: <20101130233145.GA23247@redhat.com> * Dr Andrew John Hughes [2010-11-30 18:15]: > On 16:52 Tue 30 Nov , Deepak Bhole wrote: > > * Dr Andrew John Hughes [2010-11-30 16:51]: > > > Simple patch attached. It moves NETX_DIR to the front of the bootclasspath > > > so that the NetX classes in existing 1.7 and 1.8 installations don't get in the > > > way of the newer versions just built. Ok to apply? > > > > > > *NOTE*: You still are unable to install the final IcedTea-Web product in that JDK. > > > I think the launcher needs to prepend them to the bootclasspath to override the > > > rt.jar versions. > > > > Looks fine to me.. missing ChangeLog entry though, which I assume you > > will add before commit :) > > > > Okay for HEAD with a CL entry. > > > > Yes, done. I just fired off the patch quickly because I was discussing it with Omair > on IRC and assumed he would give a quick ack. But seems not. > > Thanks for doing so. > I reviewed it within seconds of getting it actually.. mail is taking forever to get through though :( Cheers, Deepak > > Cheers, > > Deepak > > > > > -- > > > Andrew :) > > > > > > Free Java Software Engineer > > > Red Hat, Inc. (http://www.redhat.com) > > > > > > Support Free Java! > > > Contribute to GNU Classpath and the OpenJDK > > > http://www.gnu.org/software/classpath > > > http://openjdk.java.net > > > PGP Key: 94EFD9D8 (http://subkeys.pgp.net) > > > Fingerprint = F8EF F1EA 401E 2E60 15FA 7927 142C 2591 94EF D9D8 > > > > > diff -r b1409d2cbd86 Makefile.am > > > --- a/Makefile.am Tue Nov 30 16:53:16 2010 +0000 > > > +++ b/Makefile.am Tue Nov 30 20:57:41 2010 +0000 > > > @@ -220,8 +220,7 @@ > > > mkdir -p $(abs_top_builddir)/liveconnect && \ > > > $(BOOT_DIR)/bin/javac $(IT_JAVACFLAGS) \ > > > -d $(abs_top_builddir)/liveconnect \ > > > - -classpath $(NETX_DIR) \ > > > - -bootclasspath $(RUNTIME) \ > > > + -bootclasspath $(NETX_DIR):$(RUNTIME) \ > > > -sourcepath $(LIVECONNECT_SRCS) \ > > > @liveconnect-source-files.txt ; \ > > > fi > > > > -- > Andrew :) > > Free Java Software Engineer > Red Hat, Inc. (http://www.redhat.com) > > Support Free Java! > Contribute to GNU Classpath and IcedTea > http://www.gnu.org/software/classpath > http://icedtea.classpath.org > PGP Key: 94EFD9D8 (http://subkeys.pgp.net) > Fingerprint = F8EF F1EA 401E 2E60 15FA 7927 142C 2591 94EF D9D8 From doko at icedtea.classpath.org Tue Nov 30 15:54:38 2010 From: doko at icedtea.classpath.org (doko at icedtea.classpath.org) Date: Tue, 30 Nov 2010 23:54:38 +0000 Subject: /hg/icedtea6: Remove obsolete chunk from sparc64 patch Message-ID: changeset 4dbf4fd42544 in /hg/icedtea6 details: http://icedtea.classpath.org/hg/icedtea6?cmd=changeset;node=4dbf4fd42544 author: doko at ubuntu.com date: Wed Dec 01 00:54:22 2010 +0100 Remove obsolete chunk from sparc64 patch 2010-12-01 Matthias Klose * patches/icedtea-sparc64-linux.patch: Remove obsolete chunk. diffstat: 2 files changed, 4 insertions(+), 18 deletions(-) ChangeLog | 4 ++++ patches/icedtea-sparc64-linux.patch | 18 ------------------ diffs (36 lines): diff -r 0481c6a6d7ed -r 4dbf4fd42544 ChangeLog --- a/ChangeLog Tue Nov 30 18:16:07 2010 +0100 +++ b/ChangeLog Wed Dec 01 00:54:22 2010 +0100 @@ -1,3 +1,7 @@ 2010-11-30 Pavel Tisnovsky + + * patches/icedtea-sparc64-linux.patch: Remove obsolete chunk. + 2010-11-30 Pavel Tisnovsky * Makefile.am: diff -r 0481c6a6d7ed -r 4dbf4fd42544 patches/icedtea-sparc64-linux.patch --- a/patches/icedtea-sparc64-linux.patch Tue Nov 30 18:16:07 2010 +0100 +++ b/patches/icedtea-sparc64-linux.patch Wed Dec 01 00:54:22 2010 +0100 @@ -1,21 +1,3 @@ diff -Nru openjdk.orig/hotspot/make/linu -diff -Nru openjdk.orig/hotspot/make/linux/makefiles/defs.make openjdk/hotspot/make/linux/makefiles/defs.make ---- openjdk.orig/hotspot/make/linux/makefiles/defs.make 2008-06-22 22:28:06.000000000 +0100 -+++ openjdk/hotspot/make/linux/makefiles/defs.make 2008-06-22 22:35:27.000000000 +0100 -@@ -73,6 +73,14 @@ - HS_ARCH = sparc - endif - -+# sparc -+ifeq ($(ARCH), sparc) -+ ARCH_DATA_MODEL = 32 -+ PLATFORM = linux-sparc -+ VM_PLATFORM = linux_sparc -+ HS_ARCH = sparc -+endif -+ - # x86_64 - ifeq ($(ARCH), x86_64) - ifeq ($(ARCH_DATA_MODEL), 64) diff -Nru openjdk.orig/hotspot/src/cpu/sparc/vm/c1_LIRGenerator_sparc.cpp openjdk/hotspot/src/cpu/sparc/vm/c1_LIRGenerator_sparc.cpp --- openjdk.orig/hotspot/src/cpu/sparc/vm/c1_LIRGenerator_sparc.cpp 2008-06-22 20:44:41.000000000 +0100 +++ openjdk/hotspot/src/cpu/sparc/vm/c1_LIRGenerator_sparc.cpp 2008-06-22 22:35:27.000000000 +0100