Java Solaris Communities Sun Store Join SDN My Profile Why Join?
 
Bug Database
Bug Detail
Quick Lists
Top 25 Bugs
Top 25 RFE's
Recently Closed Bugs
Printable Page Printable Page


Bug Database
Bug ID: 6853806
Votes 0
Synopsis Prefer (cd $dir && jar) to jar -C for performance reasons
Category java:build
Reported Against
Release Fixed 7(b64)
State 10-Fix Delivered, request for enhancement
Priority: 3-Medium
Related Bugs
Submit Date 23-JUN-2009
Description
Remove the 16000 "-C" flags that makes jar's life "jar hell".
It would be nice not to have to chdir
(especially, we've been trained by the JDK not to),
but jar's -C flag simply has the wrong semantics.
It should be sticky.  But too late for that now.
Posted Date : 2009-06-23 01:16:23.0
Work Around
N/A
Evaluation
--- old/make/common/Release.gmk	2009-06-14 11:06:10.000000000 -0700
+++ new/make/common/Release.gmk	2009-06-14 11:06:09.000000000 -0700
@@ -97,7 +97,7 @@
   ifeq ($(PLATFORM), windows)
     LICENSE_DOCLIST_JDK = $(subst $(LICENSE_VERSION),,\
 		   $(shell $(CD) $(SHARE_JDK_DOC_SRC) && \
- 		           $(LS) *LICENSE*$(LICENSE_VERSION)))
+		           $(LS) *LICENSE*$(LICENSE_VERSION)))
     LICENSE_DOCLIST_JRE = $(subst $(LICENSE_VERSION),,\
 		   $(shell $(CD) $(SHARE_JRE_DOC_SRC) && \
 		           $(LS) *LICENSE*$(LICENSE_VERSION)))
@@ -401,7 +401,7 @@
 	sun/tools/jstack        \
 	sun/tools/jinfo         \
 	sun/tools/jmap
-	
+
 # classes that go into jsse.jar
 JSSE_CLASSES_DIRS = \
 	sun/security/provider/Sun.class \
@@ -645,7 +645,7 @@
 	@$(java-vm-cleanup)
 
 # Create the manifest file.
-JAR_MANIFEST_FILE=$(TEMPDIR)/manifest.tmp
+JAR_MANIFEST_FILE=$(ABS_TEMPDIR)/manifest.tmp
 $(JAR_MANIFEST_FILE): $(MAINMANIFEST) $(BEANMANIFEST)
 	$(prep-target)
 	$(SED) -e "s/@@RELEASE@@/$(RELEASE)/" $(MAINMANIFEST) >> $@
@@ -653,25 +653,22 @@
 	$(CAT) $(BEANMANIFEST) >> $@
 
 # Create resources.jar containing non-class files
-RESOURCES_JAR=$(TEMPDIR)/resources-orig.jar
-RES_JAR_ARGLIST=$(RES_JAR_FILELIST)_args
-$(RES_JAR_ARGLIST): $(RES_JAR_FILELIST)
+RESOURCES_JAR=$(ABS_TEMPDIR)/resources-orig.jar
+$(RESOURCES_JAR): $(RES_JAR_FILELIST) $(JAR_MANIFEST_FILE)
 	$(prep-target)
-	$(SED) -e "s@^@-C $(CLASSBINDIR) @" $< > $@
-$(RESOURCES_JAR): $(RES_JAR_ARGLIST) $(JAR_MANIFEST_FILE)
-	$(prep-target)
-	$(BOOT_JAR_CMD) c0mf $(JAR_MANIFEST_FILE) $@ \
-	    @$(RES_JAR_ARGLIST) $(BOOT_JAR_JFLAGS)
-	@$(java-vm-cleanup)
+	$(CD) $(CLASSBINDIR) && \
+	    $(BOOT_JAR_CMD) c0mf $(JAR_MANIFEST_FILE) $@ \
+	        @$(RES_JAR_FILELIST) $(BOOT_JAR_JFLAGS)
+	@$(CD) $(CLASSBINDIR) && $(java-vm-cleanup)
 
 # Create jsse.jar containing SunJSSE implementation classes
-JSSE_JAR=$(TEMPDIR)/jsse-orig.jar
+JSSE_JAR=$(ABS_TEMPDIR)/jsse-orig.jar
 $(JSSE_JAR): $(JAR_MANIFEST_FILE)
 	$(prep-target)
-	$(BOOT_JAR_CMD) c0mf $(JAR_MANIFEST_FILE) $@ \
-		$(JSSE_CLASSES_DIRS:%=-C $(CLASSBINDIR) %) \
-		$(BOOT_JAR_JFLAGS)
-	@$(java-vm-cleanup)
+	$(CD) $(CLASSBINDIR) && \
+	    $(BOOT_JAR_CMD) c0mf $(JAR_MANIFEST_FILE) $@ \
+		$(JSSE_CLASSES_DIRS) $(BOOT_JAR_JFLAGS)
+	@$(CD) $(CLASSBINDIR) && $(java-vm-cleanup)
 
 # Create sec-bin.zip
 SEC_FILES_ZIP=$(ABS_TEMPDIR)/sec-bin.zip
@@ -713,15 +710,12 @@
 
 # Create rt.jar
 RT_JAR=$(ABS_TEMPDIR)/rt-orig.jar
-RT_JAR_ARGLIST=$(RT_JAR_FILELIST)_args
-$(RT_JAR_ARGLIST): $(RT_JAR_FILELIST)
-	$(prep-target)
-	$(SED) -e "s@^@-C $(CLASSBINDIR) @" $< > $@
-$(RT_JAR): $(RT_JAR_ARGLIST) $(JAR_MANIFEST_FILE)
+$(RT_JAR): $(RT_JAR_FILELIST) $(JAR_MANIFEST_FILE)
 	$(prep-target)
-	$(BOOT_JAR_CMD) c0mf $(JAR_MANIFEST_FILE) $@ \
-	    @$(RT_JAR_ARGLIST) $(BOOT_JAR_JFLAGS)
-	@$(java-vm-cleanup)
+	$(CD) $(CLASSBINDIR) && \
+	    $(BOOT_JAR_CMD) c0mf $(JAR_MANIFEST_FILE) $@ \
+	        @$(RT_JAR_FILELIST) $(BOOT_JAR_JFLAGS)
+	@$(CD) $(CLASSBINDIR) && $(java-vm-cleanup)
 
 # Meta-index construction to make core class loaders lazier
 
@@ -944,10 +938,10 @@
 	@#
 	@# lib/tools.jar
 	@#
-	$(BOOT_JAR_CMD) c0f $(LIBDIR)/tools.jar $(addprefix \
-		-C $(CLASSBINDIR) , $(TOOLS)) \
-	        $(BOOT_JAR_JFLAGS)
-	@$(java-vm-cleanup)
+	$(CD) $(CLASSBINDIR) && \
+	    $(BOOT_JAR_CMD) c0f $(ABS_LIBDIR)/tools.jar \
+	        $(TOOLS) $(BOOT_JAR_JFLAGS)
+	@$(CD) $(CLASSBINDIR) && $(java-vm-cleanup)
 	$(CP) $(LIBDIR)/tools.jar $(JDK_IMAGE_DIR)/lib/tools.jar
 	@#
 	@# lib/ct.sym
Posted Date : 2009-06-23 01:16:23.0
Comments
  
  Include a link with my name & email   


PLEASE NOTE: JDK6 is formerly known as Project Mustang