xref: /titanic_44/usr/src/cmd/sgs/packages/common/readme_revision (revision 24b9abbad58fdd63dad716fd35a99a7944c4e3eb)
1 #!/usr/bin/perl -w
2 #
3 # Copyright 2008 Sun Microsystems, Inc.  All rights reserved.
4 # Use is subject to license terms.
5 #
6 # CDDL HEADER START
7 #
8 # The contents of this file are subject to the terms of the
9 # Common Development and Distribution License (the "License").
10 # You may not use this file except in compliance with the License.
11 #
12 # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
13 # or http://www.opensolaris.org/os/licensing.
14 # See the License for the specific language governing permissions
15 # and limitations under the License.
16 #
17 # When distributing Covered Code, include this CDDL HEADER in each
18 # file and include the License file at usr/src/OPENSOLARIS.LICENSE.
19 # If applicable, add the following below this CDDL HEADER, with the
20 # fields enclosed by brackets "[]" replaced with your own identifying
21 # information: Portions Copyright [yyyy] [name of copyright owner]
22 #
23 # CDDL HEADER END
24 #
25 #pragma ident	"%Z%%M%	%I%	%E% SMI"
26 
27 
28 #
29 # Generate a revision number for the sgs linker components, based
30 # on usr/src/cmd/sgs/packages/common/SUNWonld-README.
31 #
32 #	usage: readme_revision [-d] [readme-file]
33 #
34 # This revision number used to be the SCCS revision id for that file,
35 # in the form 1.xxx (where xxx was the revision). There were two benefits:
36 #
37 #	(1) You could examine the sccs revision log to determine the CR
38 #		of the putback that created the revision.
39 #	(2) The revisions were monotonically increasing.
40 #
41 # In order to remove the hard wired dependence on sccs, this script generates
42 # a replacement revision number, by returning the string '1.xxx', where
43 # xxx is an integer giving the number of unique CR lines found in the file.
44 # This means that the revision goes up by one for each CR we fix, which
45 # makes intutive sense, and is similar to the way the SCCS revision worked.
46 #
47 # If this is a debug/development build (-d option), then we include
48 # additional information at the end of the revision:
49 #
50 #	- Workspace name
51 #	- user
52 #	- CR # of last item in the readme file
53 #	- date,
54 #
55 # This extra information is useful when we need to identify SUNWonld
56 # linker packages in the field, and provides the information previously
57 # supplied by (1) above.
58 #
59 
60 use vars qw($script $usage $readme $cnt);
61 use vars qw($debug $last_cr $wsname $date);
62 
63 # Use the basename of the name we're invoked under as the script name
64 @_ = split /\//, $0;
65 $script = $_[$#_];
66 $usage = "usage: $script [-d] [readme-file]\n";
67 
68 $debug = 0;
69 # Process the options
70 while ((scalar(@ARGV) > 0) && ($_ = $ARGV[0],/^-/)) {
71   ARG: {
72 	if (/^-d$/) {
73 		$debug = 1;
74 		last ARG;
75 	}
76 
77 
78       # If it gets here, the option is unknown.
79       die $usage;
80   }
81     shift;
82 }
83 
84 # Plain argument
85 $cnt = scalar @ARGV;
86 {
87 	if ($cnt == 0) {
88 		$readme = 'SUNWonld-README';
89 		next;
90 	}
91 
92 	if ($cnt == 1) {
93 		$readme = $ARGV[0];
94 		next;
95 	}
96 
97 	die $usage;
98 }
99 
100 
101 open(FILE, $readme) || die "$script: Unable to open $readme\n";
102 
103 # At the date this script was put into service, the SCCS revision
104 # of SUNWonld-README was 1.627, and SUNWonld-README had 588 unique
105 # CRs. Revisions are supposed to always increase monotonically, so
106 # we add 1000 to the number of unique CRs.
107 #
108 # This means that any linker with a version <1000 was built using
109 # the SCCS revision, and any linker with version >=1000 was built
110 # with this script.
111 $cnt = 1000;
112 
113 while ($_ = <FILE>) {
114 	chomp $_;
115 
116 	# If the line starts with a number, it is taken as a CR.
117 	if ($_ =~ /^(\d+)\s/) {
118 		$cnt++;
119 		$last_cr = $1;
120 	}
121 }
122 close FILE;
123 
124 # If this is a standard build, the revision # is all we want
125 if ($debug == 0) {
126 	print "1.$cnt\n";
127 	exit 0;
128 }
129 
130 # For debug mode, add diagnostic data
131 #
132 ($wsname = $ENV{'CODEMGR_WS'}) ne '' || ($wsname = 'unknown');
133 @wsname = split /\//, $wsname;
134 $wsname = $wsname[$#wsname];
135 
136 $date = `date +%m/%d/%y`;
137 
138 print "1.$cnt:$wsname-$ENV{USER}-$last_cr-$date\n";
139 
140 exit 0;
141