[Midnightbsd-cvs] src [10151] trunk/sys/conf/newvers.sh: update newvars to allow more version control systems

laffer1 at midnightbsd.org laffer1 at midnightbsd.org
Wed May 30 17:15:37 EDT 2018


Revision: 10151
          http://svnweb.midnightbsd.org/src/?rev=10151
Author:   laffer1
Date:     2018-05-30 17:15:36 -0400 (Wed, 30 May 2018)
Log Message:
-----------
update newvars to allow more version control systems

Modified Paths:
--------------
    trunk/sys/conf/newvers.sh

Modified: trunk/sys/conf/newvers.sh
===================================================================
--- trunk/sys/conf/newvers.sh	2018-05-30 21:10:05 UTC (rev 10150)
+++ trunk/sys/conf/newvers.sh	2018-05-30 21:15:36 UTC (rev 10151)
@@ -28,7 +28,7 @@
 # SUCH DAMAGE.
 #
 #	@(#)newvers.sh	8.1 (Berkeley) 4/20/94
-# $FreeBSD: src/sys/conf/newvers.sh,v 1.69.2.10 2006/02/01 18:04:43 kensmith Exp $
+# $FreeBSD: stable/10/sys/conf/newvers.sh 324238 2017-10-03 13:20:17Z marius $
 # $MidnightBSD$
 
 TYPE="MidnightBSD"
@@ -35,8 +35,11 @@
 REVISION="1.0"
 RELEASE="${REVISION}"
 VERSION="${TYPE} ${RELEASE}"
-SYSDIR=$(/usr/bin/dirname $0)/..
 
+if [ "X${SYSDIR}" = "X" ]; then
+    SYSDIR=$(dirname $0)/..
+fi
+
 if [ "X${PARAMFILE}" != "X" ]; then
 	RELDATE=$(awk '/__MidnightBSD_version.*propagated to newvers/ {print $3}' \
 		${PARAMFILE})
@@ -46,7 +49,7 @@
 fi
 
 b=share/examples/etc/bsd-style-copyright
-year=`date '+%Y'`
+year=$(sed -Ee '/^Copyright .* The MidnightBSD Project/!d;s/^.*1992-([0-9]*) .*$/\1/g' ${SYSDIR}/../COPYRIGHT)
 # look for copyright template
 for bsd_copyright in ../$b ../../$b ../../../$b /usr/src/$b /usr/$b
 do
@@ -74,6 +77,12 @@
 COPYRIGHT="$COPYRIGHT
 "
 
+# VARS_ONLY means no files should be generated, this is just being
+# included.
+if [ -n "$VARS_ONLY" ]; then
+	return 0
+fi
+
 LC_ALL=C; export LC_ALL
 if [ ! -r version ]
 then
@@ -80,19 +89,51 @@
 	echo 0 > version
 fi
 
-/usr/bin/touch version
-v=`/bin/cat version` u=${USER:-root} d=`pwd` h=${HOSTNAME:-`hostname`} t=`date`
+touch version
+v=`cat version` u=${USER:-root} d=`pwd` h=${HOSTNAME:-`hostname`}
+if [ -n "$SOURCE_DATE_EPOCH" ]; then
+	if ! t=`date -r $SOURCE_DATE_EPOCH 2>/dev/null`; then
+		echo "Invalid SOURCE_DATE_EPOCH" >&2
+		exit 1
+	fi
+else
+	t=`date`
+fi
 i=`${MAKE:-make} -V KERN_IDENT`
 compiler_v=$($(${MAKE:-make} -V CC) -v 2>&1 | grep 'version')
 
-for dir in /bin /usr/bin /usr/local/bin; do
-	if [ -x "${dir}/svnversion" ] ; then
-		svnversion=${dir}/svnversion
+for dir in /usr/bin /usr/local/bin; do
+	if [ ! -z "${svnversion}" ] ; then
 		break
 	fi
+	if [ -x "${dir}/svnversion" ] && [ -z ${svnversion} ] ; then
+		# Run svnversion from ${dir} on this script; if return code
+		# is not zero, the checkout might not be compatible with the
+		# svnversion being used.
+		${dir}/svnversion $(realpath ${0}) >/dev/null 2>&1
+		if [ $? -eq 0 ]; then
+			svnversion=${dir}/svnversion
+			break
+		fi
+	fi
 done
+
+if [ -z "${svnversion}" ] && [ -x /usr/bin/svnliteversion ] ; then
+	/usr/bin/svnliteversion $(realpath ${0}) >/dev/null 2>&1
+	if [ $? -eq 0 ]; then
+		svnversion=/usr/bin/svnliteversion
+	else
+		svnversion=
+	fi
+fi
+
+for dir in /usr/bin /usr/local/bin; do
+	if [ -x "${dir}/p4" ] && [ -z ${p4_cmd} ] ; then
+		p4_cmd=${dir}/p4
+	fi
+done
 if [ -d "${SYSDIR}/../.git" ] ; then
-	for dir in /bin /usr/bin /usr/local/bin; do
+	for dir in /usr/bin /usr/local/bin; do
 		if [ -x "${dir}/git" ] ; then
 			git_cmd="${dir}/git --git-dir=${SYSDIR}/../.git"
 			break
@@ -100,9 +141,17 @@
 	done
 fi
 
+if [ -d "${SYSDIR}/../.hg" ] ; then
+	for dir in /usr/bin /usr/local/bin; do
+		if [ -x "${dir}/hg" ] ; then
+			hg_cmd="${dir}/hg -R ${SYSDIR}/.."
+			break
+		fi
+	done
+fi
+
 if [ -n "$svnversion" ] ; then
-	echo "$svnversion"
-	svn=`cd ${SYSDIR} && $svnversion`
+	svn=`cd ${SYSDIR} && $svnversion 2>/dev/null`
 	case "$svn" in
 	[0-9]*)	svn=" r${svn}" ;;
 	*)	unset svn ;;
@@ -118,7 +167,12 @@
 	else
 		svn=`$git_cmd log | fgrep 'git-svn-id:' | head -1 | \
 		     sed -n 's/^.*@\([0-9][0-9]*\).*$/\1/p'`
-		if [ -n $svn ] ; then
+		if [ -z "$svn" ] ; then
+			svn=`$git_cmd log --format='format:%N' | \
+			     grep '^svn ' | head -1 | \
+			     sed -n 's/^.*revision=\([0-9][0-9]*\).*$/\1/p'`
+		fi
+		if [ -n "$svn" ] ; then
 			svn=" r${svn}"
 			git="+${git}"
 		else
@@ -125,6 +179,10 @@
 			git=" ${git}"
 		fi
 	fi
+	git_b=`$git_cmd rev-parse --abbrev-ref HEAD`
+	if [ -n "$git_b" ] ; then
+		git="${git}(${git_b})"
+	fi
 	if $git_cmd --work-tree=${SYSDIR}/.. diff-index \
 	    --name-only HEAD | read dummy; then
 		git="${git}-dirty"
@@ -131,10 +189,38 @@
 	fi
 fi
 
+if [ -n "$p4_cmd" ] ; then
+	p4version=`cd ${SYSDIR} && $p4_cmd changes -m1 "./...#have" 2>&1 | \
+		awk '{ print $2 }'`
+	case "$p4version" in
+	[0-9]*)
+		p4version=" ${p4version}"
+		p4opened=`cd ${SYSDIR} && $p4_cmd opened ./... 2>&1`
+		case "$p4opened" in
+		File*) ;;
+		//*)	p4version="${p4version}+edit" ;;
+		esac
+		;;
+	*)	unset p4version ;;
+	esac
+fi
+
+if [ -n "$hg_cmd" ] ; then
+	hg=`$hg_cmd id 2>/dev/null`
+	svn=`$hg_cmd svn info 2>/dev/null | \
+		awk -F': ' '/Revision/ { print $2 }'`
+	if [ -n "$svn" ] ; then
+		svn=" r${svn}"
+	fi
+	if [ -n "$hg" ] ; then
+		hg=" ${hg}"
+	fi
+fi
+
 cat << EOF > vers.c
 $COPYRIGHT
-#define SCCSSTR "@(#)${VERSION} #${v}${svn}${git}: ${t}"
-#define VERSTR "${VERSION} #${v}${svn}${git}: ${t}\\n    ${u}@${h}:${d}\\n"
+#define SCCSSTR "@(#)${VERSION} #${v}${svn}${git}${hg}${p4version}: ${t}"
+#define VERSTR "${VERSION} #${v}${svn}${git}${hg}${p4version}: ${t}\\n    ${u}@${h}:${d}\\n"
 #define RELSTR "${RELEASE}"
 
 char sccs[sizeof(SCCSSTR) > 128 ? sizeof(SCCSSTR) : 128] = SCCSSTR;



More information about the Midnightbsd-cvs mailing list