diff options
author | Björn Baumbach <bb@sernet.de> | 2012-06-14 19:07:23 +0200 |
---|---|---|
committer | Andrew Bartlett <abartlet@samba.org> | 2012-07-03 15:32:09 +0200 |
commit | f48f65e695da57cb12e68a5b1d82d05874863344 (patch) | |
tree | 3a646f356ea6511086c9d978827e7b36b9ae711b | |
parent | ec3d1f09fa7ad50297e832cd25e2859cafbf00c5 (diff) | |
download | samba-f48f65e695da57cb12e68a5b1d82d05874863344.tar.gz |
wafsamba: samba_version: add samba version suffix to vcs_fields
Signed-off-by: Andrew Bartlett <abartlet@samba.org>
-rw-r--r-- | buildtools/wafsamba/samba_dist.py | 24 | ||||
-rw-r--r-- | buildtools/wafsamba/samba_version.py | 38 | ||||
-rwxr-xr-x | wscript | 13 |
3 files changed, 74 insertions, 1 deletions
diff --git a/buildtools/wafsamba/samba_dist.py b/buildtools/wafsamba/samba_dist.py index 79cb721b257..1f56f2e3ec2 100644 --- a/buildtools/wafsamba/samba_dist.py +++ b/buildtools/wafsamba/samba_dist.py @@ -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: @@ -195,6 +212,13 @@ def DIST_DIRS(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''' global dist_blacklist diff --git a/buildtools/wafsamba/samba_version.py b/buildtools/wafsamba/samba_version.py index 9dae23a9084..e82fd4723ee 100644 --- a/buildtools/wafsamba/samba_version.py +++ b/buildtools/wafsamba/samba_version.py @@ -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 = {} @@ -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(): |