From 69880924309fc0b916febd6f2494ac4fb7653020 Mon Sep 17 00:00:00 2001 From: David Holmes Date: Fri, 27 May 2011 19:04:48 -0400 Subject: [PATCH] 7024120: Verify reduced JRE contents for java 7 Stripped all symbols from libs and executables to reduce JRE size. Restored missing classes needed to pass JCK in headless mode Reviewed-by: bobv, ohair --- jdk/make/common/Defs-embedded.gmk | 11 ++++++++ jdk/make/common/Release-embedded.gmk | 40 +++++++++++++--------------- 2 files changed, 30 insertions(+), 21 deletions(-) diff --git a/jdk/make/common/Defs-embedded.gmk b/jdk/make/common/Defs-embedded.gmk index f196e2f4fed..ce574a74b60 100644 --- a/jdk/make/common/Defs-embedded.gmk +++ b/jdk/make/common/Defs-embedded.gmk @@ -49,5 +49,16 @@ RUNTIME_NAME = $(PRODUCT_NAME) $(PRODUCT_SUFFIX) JRE_REDUCED_HEADLESS_IMAGE_DIR = $(ABS_OUTPUTDIR)/j2re-reduced-headless-image JRE_REDUCED_IMAGE_DIR = $(ABS_OUTPUTDIR)/j2re-reduced-image +# Override on linux to further reduce binary/lib sizes in product build +ifeq ($(PLATFORM), linux) + ifeq ($(VARIANT), OPT) + ifneq ($(NO_STRIP), true) + ifneq ($(DEBUG_BINARIES), true) + POST_STRIP_PROCESS = $(STRIP) --strip-unneeded + endif + endif + endif +endif + endif # JAVASE_EMBEDDED diff --git a/jdk/make/common/Release-embedded.gmk b/jdk/make/common/Release-embedded.gmk index 06e2127ecf3..655b324d265 100644 --- a/jdk/make/common/Release-embedded.gmk +++ b/jdk/make/common/Release-embedded.gmk @@ -53,25 +53,30 @@ $(NOT_HEADLESS_RT_JAR_LIST): $(NOT_RT_JAR_LIST) $(RM) $(HEADLESS_CLASSLIST) $(RM) $(NOT_HEADLESS_RT_JAR_LIST) $(CP) $(NOT_RT_JAR_LIST) $(NOT_HEADLESS_RT_JAR_LIST) +# List all the packages to be excluded $(ECHO) "sun/awt/motif/" >> $@ $(ECHO) "sun/awt/X11/" >> $@ $(ECHO) "sun/applet/" >> $@ $(ECHO) "sun/java2d/opengl/" >> $@ $(ECHO) "com/sun/java/swing/plaf/" >> $@ - $(ECHO) "sun/awt/motif/MFontConfiguration" >$(HEADLESS_CLASSLIST) - $(ECHO) "sun/applet/AppContextCreator" >>$(HEADLESS_CLASSLIST) - $(ECHO) "sun/applet/AppletAudioClip" >>$(HEADLESS_CLASSLIST) - $(ECHO) "sun/java2d/opengl/GLXSurfaceData" >>$(HEADLESS_CLASSLIST) - $(ECHO) "sun/java2d/opengl/GLXSurfaceData"\$$"GLXOffScreenSurfaceData" >>$(HEADLESS_CLASSLIST) - $(ECHO) "sun/java2d/opengl/GLXVolatileSurfaceManager" >>$(HEADLESS_CLASSLIST) - $(ECHO) "sun/java2d/opengl/OGLSurfaceData" >>$(HEADLESS_CLASSLIST) +# List all the individual classes to be included + $(ECHO) "sun/awt/motif/MFontConfiguration.class" >$(HEADLESS_CLASSLIST) + $(ECHO) "sun/applet/AppContextCreator.class" >>$(HEADLESS_CLASSLIST) + $(ECHO) "sun/applet/AppletAudioClip.class" >>$(HEADLESS_CLASSLIST) + $(ECHO) "sun/java2d/opengl/GLXSurfaceData.class" >>$(HEADLESS_CLASSLIST) + $(ECHO) "sun/java2d/opengl/GLXSurfaceData"\$$"GLXOffScreenSurfaceData.class" >>$(HEADLESS_CLASSLIST) + $(ECHO) "sun/java2d/opengl/GLXVolatileSurfaceManager.class" >>$(HEADLESS_CLASSLIST) + $(ECHO) "sun/java2d/opengl/OGLSurfaceData.class" >>$(HEADLESS_CLASSLIST) + $(TOTAL_HEADLESS_JAR_FILELIST): $(JARREORDER_JARFILE) $(NOT_HEADLESS_RT_JAR_LIST) $(prep-target) $(RM) $@.temp $(CD) $(CLASSBINDIR) ; \ $(BOOT_JAVA_CMD) -jar $(JARREORDER_JARFILE) \ - -o $@.temp $(HEADLESS_CLASSLIST) $(NOT_HEADLESS_RT_JAR_LIST) . + -o $@.temp - $(NOT_HEADLESS_RT_JAR_LIST) . +# Add on the explicitly included class files from the otherwise excluded packages + $(CAT) $(HEADLESS_CLASSLIST) >> $@.temp $(MV) $@.temp $@ @$(CD) $(CLASSBINDIR); $(java-vm-cleanup) @@ -124,13 +129,9 @@ NOT_REDUCEDJRE_LIB = \ $(LIBARCH)/libjavaplugin_nscp.so \ $(LIBARCH)/libjavaplugin_oji.so - -ifeq ($(PLATFORM), linux) - STRIP_OPTS = --strip-unneeded -else - STRIP_OPTS = -x -endif - +# JRE docs that don't get included in reduced jre image top directory +NOT_REDUCEDJRE_DOC = \ + Welcome.html reduced-image-jre:: @$(ECHO) Starting to Produce Reduced JRE @@ -142,12 +143,6 @@ reduced-image-jre:: $(CD) $(JRE_IMAGE_DIR); \ $(TAR) cf - . | ($(CD) $(JRE_REDUCED_IMAGE_DIR); $(TAR) xf - ); - @# strip the main .so files - $(STRIP) $(STRIP_OPTS) $(JRE_REDUCED_IMAGE_DIR)/lib/$(LIBARCH)/client/libjvm.so -ifndef BUILD_CLIENT_ONLY - $(STRIP) $(STRIP_OPTS) $(JRE_REDUCED_IMAGE_DIR)/lib/$(LIBARCH)/server/libjvm.so -endif - @# @# Remove all of the files that are not needed for the @# reduced JRE @@ -158,6 +153,9 @@ endif for l in $(NOT_REDUCEDJRE_LIB) ; do \ $(RM) $(JRE_REDUCED_IMAGE_DIR)/lib/$$l ; \ done + for l in $(NOT_REDUCEDJRE_DOC) ; do \ + $(RM) $(JRE_REDUCED_IMAGE_DIR)/$$l ; \ + done @# Remove misc. other files $(RM) -r $(JRE_REDUCED_IMAGE_DIR)/man