From 95a8998917591fdd77009f606bd55ece22f84950 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Remko=20Tron=C3=A7on?= Date: Tue, 25 May 2010 22:46:13 +0200 Subject: Pick up build version from git tag (if present). diff --git a/BuildTools/SCons/Tools/BuildVersion.py b/BuildTools/SCons/Tools/BuildVersion.py index 530ef8a..5edc79e 100644 --- a/BuildTools/SCons/Tools/BuildVersion.py +++ b/BuildTools/SCons/Tools/BuildVersion.py @@ -3,11 +3,11 @@ import SCons.Util import Version def generate(env) : - def createBuildVersion(env, target, version = None) : + def createBuildVersion(env, target, project) : buildVersion = """#pragma once static const char* buildVersion = \"%(buildVersion)s\";\n -""" % { "buildVersion" : Version.getBuildVersion(version) } +""" % { "buildVersion" : Version.getBuildVersion(project) } env.WriteVal(target, env.Value(buildVersion)) env.AddMethod(createBuildVersion, "BuildVersion") diff --git a/BuildTools/SCons/Version.py b/BuildTools/SCons/Version.py index 02edcc9..f4affd4 100644 --- a/BuildTools/SCons/Version.py +++ b/BuildTools/SCons/Version.py @@ -1,15 +1,26 @@ import subprocess, os, datetime -def getGitBuildVersion() : - p = subprocess.Popen("git rev-parse HEAD", shell=True, stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE, close_fds=(os.name != "nt")) - gitVersion = p.stdout.read().rstrip()[0:7] +def getGitBuildVersion(project) : + headVersion = git("rev-parse HEAD") + if headVersion : + tags = git("tag --contains HEAD -l " + project + "-*") + if len(tags) > 0 : + for tag in tags.split("\n") : + tagVersion = git("rev-parse " + tag + "^{commit}") + if tagVersion == headVersion : + return tag + return None + +def git(cmd) : + p = subprocess.Popen("git " + cmd, shell=True, stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE, close_fds=(os.name != "nt")) + gitVersion = p.stdout.read() p.stdin.close() return gitVersion if p.wait() == 0 else None -def getBuildVersion(version = None) : - if version : - return version - gitVersion = getGitBuildVersion() +def getBuildVersion(project) : + gitVersion = getGitBuildVersion(project) if gitVersion : return gitVersion + # TODO: Add the current branch + # TODO: Pick up a version number from a file (for distributing) return datetime.date.today().strftime("%Y%m%d") diff --git a/Slimber/Qt/SConscript b/Slimber/Qt/SConscript index 6fced8b..f59a0ba 100644 --- a/Slimber/Qt/SConscript +++ b/Slimber/Qt/SConscript @@ -22,7 +22,7 @@ if env["PLATFORM"] == "win32" : myenv.Append(LINKFLAGS = ["/SUBSYSTEM:WINDOWS"]) myenv.Append(LIBS = "qtmain") -myenv.BuildVersion("BuildVersion.h", version = env["SLIMBER_VERSION"]) +myenv.BuildVersion("BuildVersion.h", project = "slimber") sources = [ "main.cpp", diff --git a/Swift/QtUI/SConscript b/Swift/QtUI/SConscript index d4acc50..b35668b 100644 --- a/Swift/QtUI/SConscript +++ b/Swift/QtUI/SConscript @@ -109,7 +109,9 @@ sources = [ ] -myenv.BuildVersion("BuildVersion.h", version = env["SWIFT_VERSION"]) +env["SWIFT_VERSION"] = Version.getBuildVersion("swift") +print env["SWIFT_VERSION"] +myenv.BuildVersion("BuildVersion.h", project = "swift") if env["PLATFORM"] == "win32" : myenv.RES("../resources/Windows/Swift.rc") diff --git a/Swift/SConscript b/Swift/SConscript index 8f1fa26..0064eee 100644 --- a/Swift/SConscript +++ b/Swift/SConscript @@ -9,8 +9,5 @@ if env["SCONS_STAGE"] == "build" : print "Error: Swift requires OpenSSL support, and OpenSSL was not found." Exit(1) - - env["SWIFT_VERSION"] = "0.9.9." + datetime.date.today().strftime("%Y%m%d") - if env["target"] == "native": SConscript("QtUI/SConscript") -- cgit v0.10.2-6-g49f6