newvers.sh revision 289999
150477Speter#!/bin/sh -
22729Sdfr#
32729Sdfr# Copyright (c) 1984, 1986, 1990, 1993
42729Sdfr#	The Regents of the University of California.  All rights reserved.
52729Sdfr#
62729Sdfr# Redistribution and use in source and binary forms, with or without
72729Sdfr# modification, are permitted provided that the following conditions
82729Sdfr# are met:
92729Sdfr# 1. Redistributions of source code must retain the above copyright
102729Sdfr#    notice, this list of conditions and the following disclaimer.
1159839Speter# 2. Redistributions in binary form must reproduce the above copyright
1259839Speter#    notice, this list of conditions and the following disclaimer in the
132729Sdfr#    documentation and/or other materials provided with the distribution.
142729Sdfr# 4. Neither the name of the University nor the names of its contributors
1511626Sbde#    may be used to endorse or promote products derived from this software
162729Sdfr#    without specific prior written permission.
172729Sdfr#
1882607Sdillon# THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
1982607Sdillon# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
202729Sdfr# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
2169449Salfred# ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
2211626Sbde# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
2359839Speter# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
2459839Speter# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
2568024Srwatson# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
262729Sdfr# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
2759839Speter# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
2859839Speter# SUCH DAMAGE.
2969449Salfred#
3069449Salfred#	@(#)newvers.sh	8.1 (Berkeley) 4/20/94
3169449Salfred# $FreeBSD: releng/10.2/sys/conf/newvers.sh 289999 2015-10-26 11:36:55Z glebius $
3269449Salfred
3377461SddTYPE="FreeBSD"
3410358SjulianREVISION="10.2"
3512866SpeterBRANCH="RELEASE-p6"
3612866Speterif [ "X${BRANCH_OVERRIDE}" != "X" ]; then
3783366Sjulian	BRANCH=${BRANCH_OVERRIDE}
3811626Sbdefi
3983366SjulianRELEASE="${REVISION}-${BRANCH}"
4011626SbdeVERSION="${TYPE} ${RELEASE}"
4183366Sjulian
4212866Speterif [ "X${SYSDIR}" = "X" ]; then
4311626Sbde    SYSDIR=$(dirname $0)/..
4483366Sjulianfi
4583366Sjulian
4612819Sphkif [ "X${PARAMFILE}" != "X" ]; then
4712819Sphk	RELDATE=$(awk '/__FreeBSD_version.*propagated to newvers/ {print $3}' \
4811626Sbde		${PARAMFILE})
4911626Sbdeelse
5012819Sphk	RELDATE=$(awk '/__FreeBSD_version.*propagated to newvers/ {print $3}' \
5112866Speter		${SYSDIR}/sys/param.h)
5259828Speterfi
5311626Sbde
5411626Sbdeb=share/examples/etc/bsd-style-copyright
5512819Sphkyear=$(sed -Ee '/^Copyright .* The FreeBSD Project/!d;s/^.*1992-([0-9]*) .*$/\1/g' ${SYSDIR}/../COPYRIGHT)
5659839Speter# look for copyright template
5759839Speterfor bsd_copyright in ../$b ../../$b ../../../$b /usr/src/$b /usr/$b
5859839Speterdo
5959839Speter	if [ -r "$bsd_copyright" ]; then
602729Sdfr		COPYRIGHT=`sed \
6159839Speter		    -e "s/\[year\]/1992-$year/" \
6259839Speter		    -e 's/\[your name here\]\.* /The FreeBSD Project./' \
6359839Speter		    -e 's/\[your name\]\.*/The FreeBSD Project./' \
6459839Speter		    -e '/\[id for your version control system, if any\]/d' \
6559839Speter		    $bsd_copyright` 
6659839Speter		break
6759839Speter	fi
6859839Speterdone
6959839Speter
7059839Speter# no copyright found, use a dummy
7159839Speterif [ X"$COPYRIGHT" = X ]; then
7259839Speter	COPYRIGHT="/*-
7359839Speter * Copyright (c) 1992-$year The FreeBSD Project.
7459839Speter * All rights reserved.
7559839Speter *
7659839Speter */"
7759839Speterfi
7859839Speter
7959839Speter# add newline
8059839SpeterCOPYRIGHT="$COPYRIGHT
8159839Speter"
8259839Speter
8359839SpeterLC_ALL=C; export LC_ALL
8459839Speterif [ ! -r version ]
8559839Speterthen
8659839Speter	echo 0 > version
8759839Speterfi
8859839Speter
8959839Spetertouch version
9059839Speterv=`cat version` u=${USER:-root} d=`pwd` h=${HOSTNAME:-`hostname`} t=`date`
9159839Speteri=`${MAKE:-make} -V KERN_IDENT`
9259839Spetercompiler_v=$($(${MAKE:-make} -V CC) -v 2>&1 | grep 'version')
9359839Speter
9459839Speterfor dir in /usr/bin /usr/local/bin; do
9559839Speter	if [ ! -z "${svnversion}" ] ; then
9659839Speter		break
9759839Speter	fi
9859839Speter	if [ -x "${dir}/svnversion" ] && [ -z ${svnversion} ] ; then
9959839Speter		# Run svnversion from ${dir} on this script; if return code
10059839Speter		# is not zero, the checkout might not be compatible with the
10159839Speter		# svnversion being used.
10259839Speter		${dir}/svnversion $(realpath ${0}) >/dev/null 2>&1
10359839Speter		if [ $? -eq 0 ]; then
10459839Speter			svnversion=${dir}/svnversion
10559839Speter			break
10659839Speter		fi
10759839Speter	fi
10859839Speterdone
10959839Speter
11059839Speterif [ -z "${svnversion}" ] && [ -x /usr/bin/svnliteversion ] ; then
11159839Speter	/usr/bin/svnliteversion $(realpath ${0}) >/dev/null 2>&1
11259839Speter	if [ $? -eq 0 ]; then
11359839Speter		svnversion=/usr/bin/svnliteversion
11459839Speter	else
11559839Speter		svnversion=
11659839Speter	fi
11759839Speterfi
11859839Speter
11959839Speterfor dir in /usr/bin /usr/local/bin; do
12059839Speter	if [ -x "${dir}/p4" ] && [ -z ${p4_cmd} ] ; then
12159839Speter		p4_cmd=${dir}/p4
12259839Speter	fi
12359839Speterdone
12459839Speterif [ -d "${SYSDIR}/../.git" ] ; then
12559839Speter	for dir in /usr/bin /usr/local/bin; do
12659839Speter		if [ -x "${dir}/git" ] ; then
12759839Speter			git_cmd="${dir}/git --git-dir=${SYSDIR}/../.git"
12859839Speter			break
12959839Speter		fi
13059839Speter	done
13159839Speterfi
13259839Speter
13359839Speterif [ -d "${SYSDIR}/../.hg" ] ; then
13459839Speter	for dir in /usr/bin /usr/local/bin; do
13559839Speter		if [ -x "${dir}/hg" ] ; then
13659839Speter			hg_cmd="${dir}/hg -R ${SYSDIR}/.."
13759839Speter			break
13859839Speter		fi
13959839Speter	done
14059839Speterfi
14159839Speter
14259839Speterif [ -n "$svnversion" ] ; then
14359839Speter	svn=`cd ${SYSDIR} && $svnversion 2>/dev/null`
14459839Speter	case "$svn" in
14559839Speter	[0-9]*)	svn=" r${svn}" ;;
14659839Speter	*)	unset svn ;;
14759839Speter	esac
14859839Speterfi
14959839Speter
15059839Speterif [ -n "$git_cmd" ] ; then
15159839Speter	git=`$git_cmd rev-parse --verify --short HEAD 2>/dev/null`
15259839Speter	svn=`$git_cmd svn find-rev $git 2>/dev/null`
15359839Speter	if [ -n "$svn" ] ; then
15477461Sdd		svn=" r${svn}"
15577461Sdd		git="=${git}"
15659839Speter	else
15759839Speter		svn=`$git_cmd log | fgrep 'git-svn-id:' | head -1 | \
15859839Speter		     sed -n 's/^.*@\([0-9][0-9]*\).*$/\1/p'`
15959839Speter		if [ -z "$svn" ] ; then
16059839Speter			svn=`$git_cmd log --format='format:%N' | \
16159839Speter			     grep '^svn ' | head -1 | \
16259839Speter			     sed -n 's/^.*revision=\([0-9][0-9]*\).*$/\1/p'`
16359839Speter		fi
16459839Speter		if [ -n "$svn" ] ; then
16559839Speter			svn=" r${svn}"
16659839Speter			git="+${git}"
16759839Speter		else
16859839Speter			git=" ${git}"
16959839Speter		fi
17059839Speter	fi
17169449Salfred	git_b=`$git_cmd rev-parse --abbrev-ref HEAD`
1722729Sdfr	if [ -n "$git_b" ] ; then
1732729Sdfr		git="${git}(${git_b})"
1742729Sdfr	fi
17583413Smr	if $git_cmd --work-tree=${SYSDIR}/.. diff-index \
17683413Smr	    --name-only HEAD | read dummy; then
17783413Smr		git="${git}-dirty"
17883413Smr	fi
17983413Smrfi
18083413Smr
18183413Smrif [ -n "$p4_cmd" ] ; then
18283413Smr	p4version=`cd ${SYSDIR} && $p4_cmd changes -m1 "./...#have" 2>&1 | \
18383413Smr		awk '{ print $2 }'`
18483413Smr	case "$p4version" in
18583413Smr	[0-9]*)
18659839Speter		p4version=" ${p4version}"
18759839Speter		p4opened=`cd ${SYSDIR} && $p4_cmd opened ./... 2>&1`
18859839Speter		case "$p4opened" in
18959839Speter		File*) ;;
1902729Sdfr		//*)	p4version="${p4version}+edit" ;;
1912729Sdfr		esac
19259839Speter		;;
1932729Sdfr	*)	unset p4version ;;
1942729Sdfr	esac
1952729Sdfrfi
1962729Sdfr
1972729Sdfrif [ -n "$hg_cmd" ] ; then
1982729Sdfr	hg=`$hg_cmd id 2>/dev/null`
1992729Sdfr	svn=`$hg_cmd svn info 2>/dev/null | \
2002729Sdfr		awk -F': ' '/Revision/ { print $2 }'`
2012729Sdfr	if [ -n "$svn" ] ; then
2022729Sdfr		svn=" r${svn}"
2032729Sdfr	fi
2042729Sdfr	if [ -n "$hg" ] ; then
20569449Salfred		hg=" ${hg}"
2062729Sdfr	fi
2072729Sdfrfi
20869449Salfred
20969449Salfredcat << EOF > vers.c
21069449Salfred$COPYRIGHT
21169449Salfred#define SCCSSTR "@(#)${VERSION} #${v}${svn}${git}${hg}${p4version}: ${t}"
21269449Salfred#define VERSTR "${VERSION} #${v}${svn}${git}${hg}${p4version}: ${t}\\n    ${u}@${h}:${d}\\n"
21369449Salfred#define RELSTR "${RELEASE}"
21469449Salfred
21569449Salfredchar sccs[sizeof(SCCSSTR) > 128 ? sizeof(SCCSSTR) : 128] = SCCSSTR;
21669449Salfredchar version[sizeof(VERSTR) > 256 ? sizeof(VERSTR) : 256] = VERSTR;
21769449Salfredchar compiler_version[] = "${compiler_v}";
21869449Salfredchar ostype[] = "${TYPE}";
21969449Salfredchar osrelease[sizeof(RELSTR) > 32 ? sizeof(RELSTR) : 32] = RELSTR;
22069449Salfredint osreldate = ${RELDATE};
22169449Salfredchar kern_ident[] = "${i}";
22269449SalfredEOF
22369449Salfred
22469449Salfredecho $((v + 1)) > version
22569449Salfred