Re: [U-Boot] [PATCH v3] tools/setlocalversion: Update from the Linux Kernel

2011-12-17 Thread Wolfgang Denk
Dear Kyle Moffett,

In message 1324070080-16827-1-git-send-email-kyle.d.moff...@boeing.com you 
wrote:
 Several bugfixes have occurred upstream since this script was imported
 into U-Boot.  In particular, the script currently in U-Boot does not
 describe commit f8bbb4dad0e9d91b7a51d6cc54dcf66d142f50fe correctly,
 resulting in a version of 2011.09 instead of 2011.09-01460-gf8bbb4d.
 
 With that commit checked out, the command git name-rev --tags HEAD
 gives this result:
   HEAD tags/v2011.12-rc1~30^2
 
 Then the changes regex does not match because of the trailing '^2':
   grep -E '^HEAD[[:space:]]+(.*~[0-9]*|undefined)$'
 
 The new version of tools/setlocalversion in the kernel correctly handles
 those situations by using different plumbing commands.
 
 The version from the kernel is not directly usable as it does not append
 the full GIT version that U-Boot expects unless the right config options
 are set (CONFIG_LOCALVERSION_AUTO=y).  Other than a few minor changes
 for Kconfig, the imported version is very similar to Linux v3.2-rc4.
 
 Signed-off-by: Kyle Moffett kyle.d.moff...@boeing.com
 Cc: Wolfgang Denk w...@denx.de
 Cc: Mike Frysinger vap...@gentoo.org
 
 --
 Changelog:
   v3:  Fix localversion-* file support and minimize kernel delta.
 ---
  tools/setlocalversion |  185 
 ++---
  1 files changed, 161 insertions(+), 24 deletions(-)

Applied, thanks.

Best regards,

Wolfgang Denk

-- 
DENX Software Engineering GmbH, MD: Wolfgang Denk  Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: w...@denx.de
The C-shell doesn't parse. It adhoculates.
- casper@holland.sun.com in 3ol96k$b...@engnews2.eng.sun.com
___
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot


[U-Boot] [PATCH v3] tools/setlocalversion: Update from the Linux Kernel

2011-12-16 Thread Kyle Moffett
Several bugfixes have occurred upstream since this script was imported
into U-Boot.  In particular, the script currently in U-Boot does not
describe commit f8bbb4dad0e9d91b7a51d6cc54dcf66d142f50fe correctly,
resulting in a version of 2011.09 instead of 2011.09-01460-gf8bbb4d.

With that commit checked out, the command git name-rev --tags HEAD
gives this result:
  HEAD tags/v2011.12-rc1~30^2

Then the changes regex does not match because of the trailing '^2':
  grep -E '^HEAD[[:space:]]+(.*~[0-9]*|undefined)$'

The new version of tools/setlocalversion in the kernel correctly handles
those situations by using different plumbing commands.

The version from the kernel is not directly usable as it does not append
the full GIT version that U-Boot expects unless the right config options
are set (CONFIG_LOCALVERSION_AUTO=y).  Other than a few minor changes
for Kconfig, the imported version is very similar to Linux v3.2-rc4.

Signed-off-by: Kyle Moffett kyle.d.moff...@boeing.com
Cc: Wolfgang Denk w...@denx.de
Cc: Mike Frysinger vap...@gentoo.org

--
Changelog:
  v3:  Fix localversion-* file support and minimize kernel delta.
---
 tools/setlocalversion |  185 ++---
 1 files changed, 161 insertions(+), 24 deletions(-)

diff --git a/tools/setlocalversion b/tools/setlocalversion
index e11f54f..f551b4c 100755
--- a/tools/setlocalversion
+++ b/tools/setlocalversion
@@ -1,40 +1,177 @@
 #!/bin/sh
-# Print additional version information for non-release trees.
+#
+# This scripts adds local version information from the version
+# control systems git, mercurial (hg) and subversion (svn).
+#
+# It was originally copied from the Linux kernel v3.2.0-rc4 and modified
+# to support the U-Boot build-system.
+#
 
 usage() {
-   echo Usage: $0 [srctree] 2
+   echo Usage: $0 [--save-scmversion] [srctree] 2
exit 1
 }
 
-cd ${1:-.} || usage
+scm_only=false
+srctree=.
+if test $1 = --save-scmversion; then
+   scm_only=true
+   shift
+fi
+if test $# -gt 0; then
+   srctree=$1
+   shift
+fi
+if test $# -gt 0 -o ! -d $srctree; then
+   usage
+fi
+
+scm_version()
+{
+   local short
+   short=false
+
+   cd $srctree
+   if test -e .scmversion; then
+   cat .scmversion
+   return
+   fi
+   if test $1 = --short; then
+   short=true
+   fi
+
+   # Check for git and a git repo.
+   if test -e .git  head=`git rev-parse --verify --short HEAD 
2/dev/null`; then
+
+   # If we are at a tagged commit (like v2.6.30-rc6), we ignore
+   # it, because this version is defined in the top level Makefile.
+   if [ -z `git describe --exact-match 2/dev/null` ]; then
+
+   # If only the short version is requested, don't bother
+   # running further git commands
+   if $short; then
+   echo +
+   return
+   fi
+   # If we are past a tagged commit (like
+   # v2.6.30-rc5-302-g72357d5), we pretty print it.
+   if atag=`git describe 2/dev/null`; then
+   echo $atag | awk -F- '{printf(-%05d-%s, 
$(NF-1),$(NF))}'
+
+   # If we don't have a tag at all we print -g{commitish}.
+   else
+   printf '%s%s' -g $head
+   fi
+   fi
+
+   # Is this git on svn?
+   if git config --get svn-remote.svn.url /dev/null; then
+   printf -- '-svn%s' `git svn find-rev $head`
+   fi
+
+   # Update index only on r/w media
+   [ -w . ]  git update-index --refresh --unmerged  /dev/null
+
+   # Check for uncommitted changes
+   if git diff-index --name-only HEAD | grep -v ^scripts/package 
\
+   | read dummy; then
+   printf '%s' -dirty
+   fi
 
-# Check for git and a git repo.
-if head=`git rev-parse --verify HEAD 2/dev/null`; then
-   # Do we have an untagged version?
-   if git name-rev --tags HEAD | \
-  grep -E '^HEAD[[:space:]]+(.*~[0-9]*|undefined)$'  /dev/null; then
-   (git describe || git describe --tags || git describe --all 
--long) \
-   2/dev/null | awk -F- '{printf(-%05d-%s, 
$(NF-1),$(NF))}'
+   # All done with git
+   return
fi
 
-   # Are there uncommitted changes?
-   git update-index --refresh --unmerged  /dev/null
-   if git diff-index --name-only HEAD | grep -v ^scripts/package \
-   | read dummy; then
-   printf '%s' -dirty
+   # Check for mercurial and a mercurial repo.
+   if test -d .hg  hgid=`hg id 2/dev/null`; then
+   # Do we have an tagged version?  If so, latesttagdistance 

Re: [U-Boot] [PATCH v3] tools/setlocalversion: Update from the Linux Kernel

2011-12-16 Thread Mike Frysinger
Acked-by: Mike Frysinger vap...@gentoo.org
-mike


signature.asc
Description: This is a digitally signed message part.
___
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot