diff --git a/.gitignore b/.gitignore
index 18b6d4a9629..b465d22a73f 100644
--- a/.gitignore
+++ b/.gitignore
@@ -10,3 +10,5 @@ override
premium
.metadata
dist
+*~
+*.bak
diff --git a/build.xml b/build.xml
index 17fa54c3cbc..bf633f6cdf8 100755
--- a/build.xml
+++ b/build.xml
@@ -35,7 +35,7 @@
-
+
diff --git a/cloud.spec b/cloud.spec
index 7f8ee77a47a..b164ab03b7e 100644
--- a/cloud.spec
+++ b/cloud.spec
@@ -44,6 +44,7 @@ intelligent cloud implementation.
%package utils
Summary: Cloud.com utility library
Requires: java >= 1.6.0
+Requires: python
Group: System Environment/Libraries
Obsoletes: vmops-utils < %{version}-%{release}
%description utils
@@ -447,6 +448,8 @@ fi
%defattr(0644,root,root,0755)
%{_javadir}/%{name}-utils.jar
%{_javadir}/%{name}-api.jar
+%attr(755,root,root) %{_bindir}/cloud-sccs
+%attr(755,root,root) %{_bindir}/cloud-gitrevs
%doc %{_docdir}/%{name}-%{version}/sccs-info
%doc %{_docdir}/%{name}-%{version}/version-info
%doc %{_docdir}/%{name}-%{version}/configure-info
diff --git a/debian/cloud-utils.install b/debian/cloud-utils.install
index 14204856b57..b552626efcd 100644
--- a/debian/cloud-utils.install
+++ b/debian/cloud-utils.install
@@ -3,3 +3,5 @@
/usr/share/doc/cloud/sccs-info
/usr/share/doc/cloud/version-info
/usr/share/doc/cloud/configure-info
+/usr/bin/cloud-sccs
+/usr/bin/cloud-gitrevs
diff --git a/debian/control b/debian/control
index ef4e379e20d..27e53bae905 100644
--- a/debian/control
+++ b/debian/control
@@ -22,7 +22,7 @@ Provides: vmops-utils
Conflicts: vmops-utils
Replaces: vmops-utils
Architecture: any
-Depends: openjdk-6-jre
+Depends: openjdk-6-jre, python
Description: Cloud.com utility library
The Cloud.com utility libraries provide a set of Java classes used
in the Cloud.com Cloud Stack.
diff --git a/utils/bindir/cloud-gitrevs.in b/utils/bindir/cloud-gitrevs.in
new file mode 100644
index 00000000000..ffa17be9bf8
--- /dev/null
+++ b/utils/bindir/cloud-gitrevs.in
@@ -0,0 +1,13 @@
+#!/usr/bin/env python
+
+import os, sys
+
+path = os.path.join("@DOCDIR@","sccs-info")
+try: text = file(path).read(-1)
+except IOError,e:
+ if e.errno == 2:
+ sys.stderr.write("error: SCCS info file %r cannot be found\n"%path)
+ sys.exit(1)
+ else: raise
+lines = [ s.strip() for s in text.split("\n") if s.startswith('Git Revision: ') ]
+print " ".join( [ s[14:] for s in lines ] )
\ No newline at end of file
diff --git a/utils/bindir/cloud-sccs.in b/utils/bindir/cloud-sccs.in
new file mode 100755
index 00000000000..cfd40d5fb58
--- /dev/null
+++ b/utils/bindir/cloud-sccs.in
@@ -0,0 +1,12 @@
+#!/usr/bin/env python
+
+import os, sys
+
+path = os.path.join("@DOCDIR@","sccs-info")
+try: text = file(path).read(-1)
+except IOError,e:
+ if e.errno == 2:
+ sys.stderr.write("error: SCCS info file %r cannot be found\n"%path)
+ sys.exit(1)
+ else: raise
+print text
\ No newline at end of file
diff --git a/wscript b/wscript
index 2d42fed035b..a84948cf57e 100644
--- a/wscript
+++ b/wscript
@@ -144,8 +144,9 @@ def svninfo(*args):
else: url = "SVN " + url[0].strip()
return rev + "\n" + url
-def gitinfo(*args):
- try: p = _Popen(['git','remote','show','-n','origin']+list(args),stdin=PIPE,stdout=PIPE,stderr=PIPE)
+def gitinfo(dir=None):
+ if dir and not _isdir(dir): return ''
+ try: p = _Popen(['git','remote','show','-n','origin'],stdin=PIPE,stdout=PIPE,stderr=PIPE,cwd=dir)
except OSError,e:
if e.errno == 2: return '' # svn command is not installed
raise
@@ -158,7 +159,7 @@ def gitinfo(*args):
except IndexError: url = [ s[5:] for s in stdout if s.startswith("URL") ][0]
assert url
- p = _Popen(['git','log','-1']+list(args),stdin=PIPE,stdout=PIPE,stderr=PIPE)
+ p = _Popen(['git','log','-1'],stdin=PIPE,stdout=PIPE,stderr=PIPE,cwd=dir)
stdout,stderr = p.communicate('')
retcode = p.wait()
if retcode: return
@@ -169,6 +170,15 @@ def gitinfo(*args):
return "Git Revision: %s"%commitid + "\n" + "Git URL: %s"%url
+def allgitinfo():
+ t = gitinfo()
+ if not t: return t
+
+ u = gitinfo(_join(pardir,"cloudstack-proprietary"))
+ if not u: return t
+
+ return t + "\n\ncloustack-proprietary:\n" + u
+
def _getbuildnumber(): # FIXME implement for git
n = Options.options.BUILDNUMBER
if n:
@@ -230,6 +240,7 @@ def discover_ant_targets_and_properties(files):
propsinpropfiles = [ l.strip().split("=",1) for f in files if f.endswith(".properties") for l in file(f).readlines() if "=" in l and not l.startswith("#") ]
props = dict( propsinxml + propsinpropfiles )
props["base.dir"] = '.'
+ props["p.base.dir"] = '.'
result = []
for name,target in targets.items():
@@ -528,7 +539,7 @@ def dist_hook():
if Options.options.OSS:
[ shutil.rmtree(f) for f in "cloudstack-proprietary".split() if _exists(f) ]
- stdout = svninfo("..") or gitinfo()
+ stdout = svninfo("..") or allgitinfo()
if stdout:
f = file("sccs-info","w")
f.write(stdout)