diff options
author | Andrew Tridgell <tridge@samba.org> | 2010-06-28 13:40:32 +1000 |
---|---|---|
committer | Andrew Tridgell <tridge@samba.org> | 2010-06-29 14:28:08 +1000 |
commit | 30dc87dab98a864ea640fb1df693b6eb8df6a920 (patch) | |
tree | 15346580ebdda6bf5ff94b798382424fd832a258 | |
parent | 3774ba350e6b828512e693b982e0927877cd13eb (diff) | |
download | samba-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.py | 7 | ||||
-rw-r--r-- | buildtools/wafsamba/samba_version.py | 26 | ||||
-rw-r--r-- | source4/wscript | 19 |
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') |