summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrew Tridgell <tridge@samba.org>2010-06-28 13:40:32 +1000
committerAndrew Tridgell <tridge@samba.org>2010-06-29 14:28:08 +1000
commit30dc87dab98a864ea640fb1df693b6eb8df6a920 (patch)
tree15346580ebdda6bf5ff94b798382424fd832a258
parent3774ba350e6b828512e693b982e0927877cd13eb (diff)
downloadsamba-30dc87dab98a864ea640fb1df693b6eb8df6a920.tar.gz
samba-30dc87dab98a864ea640fb1df693b6eb8df6a920.tar.bz2
samba-30dc87dab98a864ea640fb1df693b6eb8df6a920.zip
build: only use git when found by configure
this rebuilds version.h whenever the git version changes, so we always get the right version with samba -V. That adds about 15s to the build time on each git commit, which shouldn't be too onerous
-rw-r--r--buildtools/wafsamba/samba_patterns.py7
-rw-r--r--buildtools/wafsamba/samba_version.py26
-rw-r--r--source4/wscript19
3 files changed, 35 insertions, 17 deletions
diff --git a/buildtools/wafsamba/samba_patterns.py b/buildtools/wafsamba/samba_patterns.py
index ae0dbe2cf8..4307bf2585 100644
--- a/buildtools/wafsamba/samba_patterns.py
+++ b/buildtools/wafsamba/samba_patterns.py
@@ -10,7 +10,9 @@ def write_version_header(task):
src = task.inputs[0].srcpath(task.env)
tgt = task.outputs[0].bldpath(task.env)
- version = samba_version_file(src)
+ have_git = 'GIT' in task.env
+
+ version = samba_version_file(src, have_git=have_git)
string = str(version)
f = open(tgt, 'w')
@@ -24,5 +26,6 @@ def SAMBA_MKVERSION(bld, target):
t = bld.SAMBA_GENERATOR('VERSION',
rule=write_version_header,
source= 'VERSION',
- target=target)
+ target=target,
+ always=True)
Build.BuildContext.SAMBA_MKVERSION = SAMBA_MKVERSION
diff --git a/buildtools/wafsamba/samba_version.py b/buildtools/wafsamba/samba_version.py
index 9832c79f28..398f6eee60 100644
--- a/buildtools/wafsamba/samba_version.py
+++ b/buildtools/wafsamba/samba_version.py
@@ -1,8 +1,7 @@
-import os;
-import subprocess;
+import Utils;
class samba_version(object):
- def __init__(self, version_dict):
+ def __init__(self, version_dict, have_git=False):
'''Determine the version number of samba
See VERSION for the format. Entries on that file are
@@ -63,19 +62,21 @@ also accepted as dictionary entries here
if self.IS_GIT_SNAPSHOT:
#Get version from GIT
- try:
- git = subprocess.Popen('git show --pretty=format:"%h%n%ct%n%H%n%cd" --stat HEAD', stdout=subprocess.PIPE, close_fds=True, shell=True)
- (output, errors) = git.communicate()
- lines = output.splitlines();
+ if have_git:
+ git = Utils.cmd_output('git show --pretty=format:"%h%n%ct%n%H%n%cd" --stat HEAD', silent=True)
+ else:
+ git = ''
+
+ if git == '':
+ SAMBA_VERSION_STRING += "-GIT-UNKNOWN"
+ else:
+ lines = git.splitlines();
self.GIT_COMMIT_ABBREV = lines[0]
self.GIT_COMMIT_TIME = lines[1]
self.GIT_COMMIT_FULLREV = lines[2]
self.GIT_COMMIT_DATE = lines[3]
SAMBA_VERSION_STRING += ("-GIT-" + self.GIT_COMMIT_ABBREV)
- except IndexError:
- SAMBA_VERSION_STRING += "-GIT-UNKNOWN"
- pass
self.OFFICIAL_STRING=SAMBA_VERSION_STRING
@@ -147,7 +148,7 @@ also accepted as dictionary entries here
class samba_version_file(samba_version):
- def __init__(self, version_file):
+ def __init__(self, version_file, have_git=False):
'''Parse the version information from a VERSION file'''
f = open(version_file, 'r')
version_dict = {}
@@ -166,5 +167,4 @@ class samba_version_file(samba_version):
print "Failed to parse line %s from %s" % (line, version_file)
raise
- super(samba_version_file, self).__init__(version_dict)
-
+ super(samba_version_file, self).__init__(version_dict, have_git=have_git)
diff --git a/source4/wscript b/source4/wscript
index e973d6f0ac..6bf8663d6c 100644
--- a/source4/wscript
+++ b/source4/wscript
@@ -4,14 +4,24 @@ srcdir = '..'
blddir = 'bin'
APPNAME='samba'
+VERSION=None
import sys, os
sys.path.insert(0, srcdir+"/buildtools/wafsamba")
import wafsamba, Options, samba_dist, Scripting
-version = wafsamba.samba_version_file("./VERSION")
-VERSION=version.STRING
+def load_version(have_git=False):
+ '''load samba versions either from ./VERSION or git
+ return a version object for detailed breakdown'''
+ import samba_utils, Utils
+ if not have_git:
+ env = samba_utils.LOAD_ENVIRONMENT()
+ have_git = 'GIT' in env
+ version = wafsamba.samba_version_file("./VERSION", have_git=have_git)
+ Utils.g_module.VERSION = version.STRING
+ return version
+
samba_dist.DIST_DIRS('.')
@@ -51,6 +61,8 @@ def set_options(opt):
def configure(conf):
+ version = load_version(have_git=True)
+
conf.DEFINE('PACKAGE_NAME', 'samba', quote=True)
conf.DEFINE('PACKAGE_STRING', 'Samba ' + version.STRING, quote=True)
conf.DEFINE('PACKAGE_TARNAME', 'samba', quote=True)
@@ -129,6 +141,7 @@ def ctags(ctx):
# of commands in --help
def build(bld):
'''build all targets'''
+ load_version()
pass
@@ -154,10 +167,12 @@ def wafdocs(ctx):
def dist():
'''makes a tarball for distribution'''
+ load_version()
samba_dist.dist()
def distcheck():
'''test that distribution tarball builds and installs'''
+ load_version()
import Scripting
d = Scripting.distcheck
d(subdir='source4')