xref: /dragonfly/sys/conf/newvers.sh (revision e1acdbad)
1#!/bin/sh -
2#
3# Copyright (c) 1984, 1986, 1990, 1993
4#	The Regents of the University of California.  All rights reserved.
5#
6# Redistribution and use in source and binary forms, with or without
7# modification, are permitted provided that the following conditions
8# are met:
9# 1. Redistributions of source code must retain the above copyright
10#    notice, this list of conditions and the following disclaimer.
11# 2. Redistributions in binary form must reproduce the above copyright
12#    notice, this list of conditions and the following disclaimer in the
13#    documentation and/or other materials provided with the distribution.
14# 3. All advertising materials mentioning features or use of this software
15#    must display the following acknowledgement:
16#	This product includes software developed by the University of
17#	California, Berkeley and its contributors.
18# 4. Neither the name of the University nor the names of its contributors
19#    may be used to endorse or promote products derived from this software
20#    without specific prior written permission.
21#
22# THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
23# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
24# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
25# ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
26# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
27# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
28# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
29# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
30# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
31# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
32# SUCH DAMAGE.
33#
34#	@(#)newvers.sh	8.1 (Berkeley) 4/20/94
35# $FreeBSD: src/sys/conf/newvers.sh,v 1.44.2.30 2003/04/04 07:02:46 murray Exp $
36# $DragonFly: src/sys/conf/newvers.sh,v 1.12 2005/04/08 06:12:11 dillon Exp $
37
38tag="\$Name:  $"
39
40# Extract the tag name, if any.
41#
42BRANCH=$(echo $tag | awk '{ print $2; }')
43
44# Remove any DragonFly_ prefix or _Slip suffix.  Release branches are
45# typically extracted using a slip tag rather then the branch tag in order
46# to guarentee that the subversion file is synchronized with the files being
47# extracted.
48#
49BRANCH=${BRANCH#DragonFly_}
50BRANCH=${BRANCH%_Slip}
51
52# This case occurs if we have checked out without a tag (i.e. HEAD), either
53# implicitly or explicitly.
54#
55if [ "X${BRANCH}" = "X$" ]; then
56    BRANCH="DEVELOPMENT"
57fi
58if [ "X${BRANCH}" = "XHEAD" ]; then
59    BRANCH="DEVELOPMENT"
60fi
61
62# This case occurs if the $Name:  $ field has not been expanded.
63#
64if [ "X${BRANCH}" = "X" ]; then
65    BRANCH="UNKNOWN"
66fi
67
68TYPE="DragonFly"
69
70# The SHORTTAG is inclusive of the BLAH_X_Y version (if any)
71#
72SHORTTAG=${BRANCH}
73
74# Figure out the revision and subversion, if any.  If the tag is in
75# the form NAME_X_Y the revision is extracted from X and Y and the branch
76# tag is truncated to just NAME.  Otherwise we are on the HEAD branch and
77# we are either HEAD or PREVIEW and the programmed revision is used.
78#
79# If we are on a branch-tag we must also figure out the sub-version.  The
80# sub-version is extracted from the 'subvers-${SHORTTAG}' file.  This file
81# typically only exists within branches.
82#
83REVISION=${BRANCH#*_}
84BRANCH=${BRANCH%%_*}
85
86if [ "${REVISION}" != "${BRANCH}" ]; then
87    REVISION=$(echo $REVISION | sed -e 's/_/./g')
88    for chkdir in machine/../../.. .. ../.. ../../.. /usr/src; do
89	if [ -f ${chkdir}/sys/conf/subvers-${SHORTTAG} ]; then
90	    SUBVER=$(tail -1 ${chkdir}/sys/conf/subvers-${SHORTTAG} | awk '{ print $1; }')
91	    if [ "X${SUBVER}" != "X" ]; then
92		REVISION="${REVISION}.${SUBVER}"
93		break
94	    fi
95	fi
96    done
97else
98    # Applies to HEAD branch or tags on the HEAD branch only, ignored when
99    # run on a branch.
100    #
101    REVISION="1.3"
102fi
103
104RELEASE="${REVISION}-${BRANCH}"
105VERSION="${TYPE} ${RELEASE}"
106
107if [ "X${PARAMFILE}" != "X" ]; then
108	RELDATE=$(awk '/__DragonFly_version.*propagated to newvers/ {print $3}' \
109		${PARAMFILE})
110else
111	RELDATE=$(awk '/__DragonFly_version.*propagated to newvers/ {print $3}' \
112		$(dirname $0)/../sys/param.h)
113fi
114
115
116b=share/examples/etc/bsd-style-copyright
117year=`date '+%Y'`
118# look for copyright template
119for bsd_copyright in ../$b ../../$b ../../../$b /usr/src/$b /usr/$b
120do
121	if [ -r "$bsd_copyright" ]; then
122		COPYRIGHT=`sed \
123		    -e "s/\[year\]/$year/" \
124		    -e 's/\[your name here\]\.* /DragonFly Inc./' \
125		    -e 's/\[your name\]\.*/DragonFly Inc./' \
126		    -e '/\[id for your version control system, if any\]/d' \
127		    $bsd_copyright`
128		break
129	fi
130done
131
132# no copyright found, use a dummy
133if [ X"$COPYRIGHT" = X ]; then
134	COPYRIGHT="/*
135 * Copyright (c) $year
136 *	DragonFly Inc. All rights reserved.
137 *
138 */"
139fi
140
141# add newline
142COPYRIGHT="$COPYRIGHT
143"
144
145LC_ALL=C; export LC_ALL
146if [ ! -r version ]
147then
148	echo 0 > version
149fi
150
151touch version
152v=`cat version` u=${USER-root} d=`pwd` h=`hostname` t=`date`
153i=`make -V KERN_IDENT`
154cat << EOF > vers.c
155$COPYRIGHT
156char sccspad[32 - 4 /* sizeof(sccs) */] = { '\\0' };
157char sccs[4] = { '@', '(', '#', ')' };
158char version[] = "${VERSION} #${v}: ${t}\\n    ${u}@${h}:${d}\\n";
159char ostype[] = "${TYPE}";
160char osrelease[] = "${RELEASE}";
161int osreldate = ${RELDATE};
162char kern_ident[] = "${i}";
163EOF
164
165echo `expr ${v} + 1` > version
166