svn commit: r213077 - head/sys/conf

Warner Losh imp at FreeBSD.org
Thu Sep 23 17:12:47 UTC 2010


Author: imp
Date: Thu Sep 23 17:12:47 2010
New Revision: 213077
URL: http://svn.freebsd.org/changeset/base/213077

Log:
  Simplify how we find the kernel source.  Rather than depending on sys,
  or some variation in the path, the new version assumes that $0 is
  newvers.sh path, and that dirname $0/.. is the same as $S aka $SYSDIR.
  It also removes knowledge of ${MACHINE} and ${MACHINE_ARCH}, which is
  also good.
  
  # I've had this in my tree for about 6 months now, which is why I
  # didn't notice that I broke it in r209510 and that was fixed in
  # r212954.  This should finally resolve the issues people had with
  # r204824 as well as address the issues that motivated r204824.

Modified:
  head/sys/conf/newvers.sh

Modified: head/sys/conf/newvers.sh
==============================================================================
--- head/sys/conf/newvers.sh	Thu Sep 23 15:10:28 2010	(r213076)
+++ head/sys/conf/newvers.sh	Thu Sep 23 17:12:47 2010	(r213077)
@@ -38,13 +38,14 @@ if [ "X${BRANCH_OVERRIDE}" != "X" ]; the
 fi
 RELEASE="${REVISION}-${BRANCH}"
 VERSION="${TYPE} ${RELEASE}"
+SYSDIR=$(dirname $0)/..
 
 if [ "X${PARAMFILE}" != "X" ]; then
 	RELDATE=$(awk '/__FreeBSD_version.*propagated to newvers/ {print $3}' \
 		${PARAMFILE})
 else
 	RELDATE=$(awk '/__FreeBSD_version.*propagated to newvers/ {print $3}' \
-		$(dirname $0)/../sys/param.h)
+		${SYSDIR}/sys/param.h)
 fi
 
 
@@ -87,51 +88,43 @@ touch version
 v=`cat version` u=${USER:-root} d=`pwd` h=${HOSTNAME:-`hostname`} t=`date`
 i=`${MAKE:-make} -V KERN_IDENT`
 
-case "$d" in
-*/sys/*)
-	SRCDIR=${d##*obj}
-	if [ -n "$MACHINE" ]; then
-		SRCDIR=${SRCDIR##/$MACHINE.$MACHINE_ARCH}
+for dir in /bin /usr/bin /usr/local/bin; do
+	if [ -d "${SYSDIR}/.svn" -a -x "${dir}/svnversion" ] ; then
+		svnversion=${dir}/svnversion
+		break
+	fi
+	if [ -d "${SYSDIR}/../.git" -a -x "${dir}/git" ] ; then
+		git_cmd="${dir}/git --git-dir=${SYSDIR}/../.git"
+		break
 	fi
-	SRCDIR=${SRCDIR%%/sys/*}
+done
 
-	for dir in /bin /usr/bin /usr/local/bin; do
-		if [ -d "${SRCDIR}/sys/.svn" -a -x "${dir}/svnversion" ] ; then
-			svnversion=${dir}/svnversion
-			break
-		fi
-		if [ -d "${SRCDIR}/.git" -a -x "${dir}/git" ] ; then
-			git_cmd="${dir}/git --git-dir=${SRCDIR}/.git"
-			break
-		fi
-	done
+if [ -n "$svnversion" ] ; then
+    echo "$svnversion"
+	svn=" r`cd ${SYSDIR} && $svnversion`"
+fi
 
-	if [ -n "$svnversion" ] ; then
-		svn=" r`cd ${SRCDIR}/sys && $svnversion`"
-	fi
-	if [ -n "$git_cmd" ] ; then
-		git=`$git_cmd rev-parse --verify --short HEAD 2>/dev/null`
-		svn=`$git_cmd svn find-rev $git 2>/dev/null`
-		if [ -n "$svn" ] ; then
+if [ -n "$git_cmd" ] ; then
+	git=`$git_cmd rev-parse --verify --short HEAD 2>/dev/null`
+	svn=`$git_cmd svn find-rev $git 2>/dev/null`
+	if [ -n "$svn" ] ; then
+		svn=" r${svn}"
+		git="=${git}"
+	else
+		svn=`$git_cmd log | fgrep 'git-svn-id:' | head -1 | \
+		     sed -n 's/^.*@\([0-9][0-9]*\).*$/\1/p'`
+		if [ -n $svn ] ; then
 			svn=" r${svn}"
-			git="=${git}"
+			git="+${git}"
 		else
-			svn=`$git_cmd log | fgrep 'git-svn-id:' | head -1 | \
-			     sed -n 's/^.*@\([0-9][0-9]*\).*$/\1/p'`
-			if [ -n $svn ] ; then
-				svn=" r${svn}"
-				git="+${git}"
-			else
-				git=" ${git}"
-			fi
-		fi
-		if $git_cmd --work-tree=${SRCDIR} diff-index \
-		    --name-only HEAD | read dummy; then
-			git="${git}-dirty"
+			git=" ${git}"
 		fi
 	fi
-	;;
-esac
+	if $git_cmd --work-tree=${SYSDIR}/.. diff-index \
+	    --name-only HEAD | read dummy; then
+		git="${git}-dirty"
+	fi
+fi
 
 cat << EOF > vers.c
 $COPYRIGHT


More information about the svn-src-head mailing list