wafsamba: samba_version: add samba version suffix to vcs_fields
authorBjörn Baumbach <bb@sernet.de>
Thu, 14 Jun 2012 17:07:23 +0000 (19:07 +0200)
committerAndrew Bartlett <abartlet@samba.org>
Tue, 3 Jul 2012 13:32:09 +0000 (15:32 +0200)
Signed-off-by: Andrew Bartlett <abartlet@samba.org>
buildtools/wafsamba/samba_dist.py
buildtools/wafsamba/samba_version.py
wscript

index 79cb721..1f56f2e 100644 (file)
@@ -5,6 +5,7 @@ import Utils, os, sys, tarfile, stat, Scripting, Logs, Options
 from samba_utils import *
 
 dist_dirs = None
+dist_files = None
 dist_blacklist = ""
 
 def add_symlink(tar, fname, abspath, basedir):
@@ -157,6 +158,22 @@ def dist(appname='',version=''):
             fname = dist_base + '/' + f
             add_tarfile(tar, fname, abspath, dir)
 
+    if dist_files:
+        for file in dist_files.split():
+            if file.find(':') != -1:
+                destfile = file.split(':')[1]
+                file = file.split(':')[0]
+            else:
+                destfile = file
+
+            absfile = os.path.join(srcdir, file)
+
+            if destfile != file:
+                file = destfile
+
+            fname = dist_base + '/' + file
+            add_tarfile(tar, fname, absfile, file)
+
     tar.close()
 
     if Options.options.SIGN_RELEASE:
@@ -194,6 +211,13 @@ def DIST_DIRS(dirs):
     if not dist_dirs:
         dist_dirs = dirs
 
+@conf
+def DIST_FILES(files):
+    '''set additional files for packaging, relative to top srcdir'''
+    global dist_files
+    if not dist_files:
+        dist_files = files
+
 @conf
 def DIST_BLACKLIST(blacklist):
     '''set the files to exclude from packaging, relative to top srcdir'''
index 9dae23a..e82fd47 100644 (file)
@@ -92,6 +92,41 @@ def git_version_summary(path, env=None):
     return (ret, fields)
 
 
+def distversion_version_summary(path):
+    #get version from .distversion file
+    f = open(path + '/.distversion', 'r')
+    suffix = None
+    fields = {}
+
+    for line in f:
+        line = line.strip()
+        if line == '':
+            continue
+        if line.startswith("#"):
+            continue
+        try:
+            split_line = line.split("=")
+            if split_line[1] != "":
+                key = split_line[0]
+                value = split_line[1]
+                if key == "SUFFIX":
+                    suffix = value
+                    continue
+                fields[key] = value
+        except:
+            print("Failed to parse line %s from .distversion file." % (line))
+            raise
+    f.close()
+
+    if "COMMIT_TIME" in fields:
+        fields["COMMIT_TIME"] = int(fields["COMMIT_TIME"])
+
+    if suffix is None:
+        return ("UNKNOWN", fields)
+
+    return (suffix, fields)
+
+
 class SambaVersion(object):
 
     def __init__(self, version_dict, path, env=None, is_install=True):
@@ -167,9 +202,12 @@ also accepted as dictionary entries here
                 suffix, self.vcs_fields = git_version_summary(path, env=env)
             elif os.path.exists(os.path.join(path, ".bzr")):
                 suffix, self.vcs_fields = bzr_version_summary(path)
+            elif os.path.exists(os.path.join(path, ".distversion")):
+                suffix, self.vcs_fields = distversion_version_summary(path)
             else:
                 suffix = "UNKNOWN"
                 self.vcs_fields = {}
+            self.vcs_fields["SUFFIX"] = suffix
             SAMBA_VERSION_STRING += "-" + suffix
         else:
             self.vcs_fields = {}
diff --git a/wscript b/wscript
index 0a7a85b..1238eb6 100755 (executable)
--- a/wscript
+++ b/wscript
@@ -239,7 +239,18 @@ def wafdocs(ctx):
 
 def dist():
     '''makes a tarball for distribution'''
-    samba_version.load_version(env=None)
+    sambaversion = samba_version.load_version(env=None)
+
+    if sambaversion.IS_SNAPSHOT:
+        # write .distversion file and add to tar
+        f = '.distversion'
+        distversionf = open(f, 'w')
+        for field in sambaversion.vcs_fields:
+            distveroption = field + '=' + str(sambaversion.vcs_fields[field])
+            distversionf.write(distveroption + '\n')
+        distversionf.close()
+        samba_dist.DIST_FILES('.distversion')
+
     samba_dist.dist()
 
 def distcheck():