[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