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)