Index: sys/conf/newvers.sh =================================================================== --- sys/conf/newvers.sh +++ sys/conf/newvers.sh @@ -50,11 +50,17 @@ savedir=$(pwd) cd ${SYSDIR}/.. while [ $(pwd) != "/" ]; do - if [ -d "./$1" ]; then - VCSDIR=$(pwd)"/$1" - cd ${savedir} - return 0 - fi + echo "NOW TRYING $(pwd)" + for vcs in git hg svn p4; do + echo "For $vcs looking for ./.$vcs" + if [ -d "./.$vcs" ]; then + echo "Found $vcs" + VCSDIR=$(pwd)"/.$vcs" + VCS=$vcs + cd ${savedir} + return 0 + fi + done cd .. done cd ${savedir} @@ -134,122 +140,123 @@ i=`${MAKE:-make} -V KERN_IDENT` compiler_v=$($(${MAKE:-make} -V CC) -v 2>&1 | grep -w 'version') -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 +if findvcs; then + case "$VCS" in + git) + for dir in /usr/bin /usr/local/bin; do + if [ -x "${dir}/git" ] ; then + git_cmd="${dir}/git --git-dir=${VCSDIR}" + break + fi + done + 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 [ -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 + 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=${VCSDIR}/.. diff-index \ + --name-only HEAD | read dummy; then + git="${git}-dirty" + fi 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 findvcs .git; then - for dir in /usr/bin /usr/local/bin; do - if [ -x "${dir}/git" ] ; then - git_cmd="${dir}/git --git-dir=${VCSDIR}" - break + ;; + hg) + for dir in /usr/bin /usr/local/bin; do + if [ -x "${dir}/hg" ] ; then + hg_cmd="${dir}/hg -R ${VCSDIR}/.." + break + fi + done + 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 - done -fi - -if findvcs .hg; then - for dir in /usr/bin /usr/local/bin; do - if [ -x "${dir}/hg" ] ; then - hg_cmd="${dir}/hg -R ${VCSDIR}" - break + ;; + svn) + 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 - done -fi - -if [ -n "$svnversion" ] ; then - svn=`cd ${SYSDIR} && $svnversion 2>/dev/null` - case "$svn" in - [0-9]*) svn=" r${svn}" ;; - *) unset svn ;; - esac -fi + if [ -n "$svnversion" ] ; then + svn=`cd ${SYSDIR} && $svnversion 2>/dev/null` + case "$svn" in + [0-9]*) svn=" r${svn}" ;; + *) unset svn ;; + esac + fi + ;; + p4) + for dir in /usr/bin /usr/local/bin; do + if [ -x "${dir}/p4" ] && [ -z ${p4_cmd} ] ; then + p4_cmd=${dir}/p4 + fi + done -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 [ -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 - git=" ${git}" + 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 - 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=${VCSDIR}/.. diff-index \ - --name-only HEAD | read dummy; then - git="${git}-dirty" - 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}${hg}${p4version}: ${t}"