United StatesChange Country, Oracle Worldwide Web Sites Communities I am a... I want to...
JDK-6685160 : fix cscope build with hg

Details
Type:
Bug
Submit Date:
2008-04-07
Status:
Closed
Updated Date:
2012-10-08
Project Name:
JDK
Resolved Date:
2008-05-21
Component:
hotspot
OS:
generic
Sub-Component:
runtime
CPU:
generic
Priority:
P4
Resolution:
Fixed
Affected Versions:
hs12
Fixed Versions:
hs13 (b01)

Related Reports
Backport:
Backport:

Sub Tasks

Description
Since the transition to hg, cscope has stopped building because it
used teamware's nametable. This change makes it work with hg.

                                    

Comments
EVALUATION

See suggested fix section.
                                     
2008-04-07
SUGGESTED FIX

Identical changes to the solaris and linux cscope.make files;
here are the git-style diffs:


diff --git a/build/linux/makefiles/cscope.make b/build/linux/makefiles/cscope.make
--- a/build/linux/makefiles/cscope.make
+++ b/build/linux/makefiles/cscope.make
@@ -38,6 +38,7 @@ include $(GAMMADIR)/make/scm.make
 
 NAWK   = awk
 RM     = rm -f
+HG     = hg
 CS_TOP = ../..
 
 CSDIRS = $(CS_TOP)/src $(CS_TOP)/build
@@ -140,13 +141,17 @@ TAGS.clean:  nametable.clean
 
 # .nametable.files and .nametable.files.tmp are used to determine if any files
 # were added to/deleted from/renamed in the workspace.  If not, then there's
-# normally no need to run find.  To force a 'find':  gmake nametable.clean.
+# normally no need to rebuild the cscope database. To force a rebuild of
+# the cscope database: gmake nametable.clean.
 .nametable.files:  .nametable.files.tmp
-       cmp -s $@ $< || cp $< $@
+       ( cmp -s $@ $< ) || ( cp $< $@ )
+       -$(RM) $<
 
-.nametable.files.tmp:  $(CS_TOP)/Codemgr_wsdata/nametable
-       $(NAWK) \
-       '{ if (sub("( [a-z0-9]{2,8}){4}$$", "")) print $$0; }' $< > $@
+# `hg status' is slightly faster than `hg fstatus'. Both are
+# quite a bit slower on an NFS mounted file system, so this is
+# really geared towards repos on local file systems.
+.nametable.files.tmp:
+       -$(HG) fstatus -acmn > $@
 
 nametable.clean:
        -$(RM) .nametable.files .nametable.files.tmp
diff --git a/build/solaris/makefiles/cscope.make b/build/solaris/makefiles/cscope.make
--- a/build/solaris/makefiles/cscope.make
+++ b/build/solaris/makefiles/cscope.make
@@ -38,6 +38,7 @@ include $(GAMMADIR)/make/scm.make
 
 NAWK   = /usr/xpg4/bin/awk
 RM     = rm -f
+HG     = hg
 CS_TOP = ../..
 
 CSDIRS = $(CS_TOP)/src $(CS_TOP)/build
@@ -141,13 +142,17 @@ TAGS.clean:  nametable.clean
 
 # .nametable.files and .nametable.files.tmp are used to determine if any files
 # were added to/deleted from/renamed in the workspace.  If not, then there's
-# normally no need to run find.  To force a 'find':  gmake nametable.clean.
+# normally no need to rebuild the cscope database. To force a rebuild of
+# the cscope database: gmake nametable.clean.
 .nametable.files:  .nametable.files.tmp
-       cmp -s $@ $< || cp $< $@
+       ( cmp -s $@ $< ) || ( cp $< $@ )
+       -$(RM) $<
 
-.nametable.files.tmp:  $(CS_TOP)/Codemgr_wsdata/nametable
-       $(NAWK) \
-       '{ if (sub("( [a-z0-9]{2,8}){4}$$", "")) print $$0; }' $< > $@
+# `hg status' is slightly faster than `hg fstatus'. Both are
+# quite a bit slower on an NFS mounted file system, so this is
+# really geared towards repos on local file systems.
+.nametable.files.tmp:
+       -$(HG) fstatus -acmn > $@
 
 nametable.clean:
        -$(RM) .nametable.files .nametable.files.tmp
                                     
2008-04-07
SUGGESTED FIX

repo:       /net/jano2/export2/hotspot/hg/hotspot-gc.clean
changeset:  86:7747916a0945
user:       ysr
date:       Tue Apr 08 12:10:35 2008 -0700
description:
6685160: fix cscope build with hg
Summary: Use hg's fstatus instead of teamware's nametable to trigger cscope database rebuild
Reviewed-by: jcoomes, kamg

files:
build/linux/makefiles/cscope.make build/solaris/makefiles/cscope.make
                                     
2008-04-11



Hardware and Software, Engineered to Work Together