]> git.proxmox.com Git - mirror_edk2.git/commitdiff
OvmfPkg/create-release.py: Support git hash versions
authorJordan Justen <jordan.l.justen@intel.com>
Fri, 3 Jan 2014 19:19:38 +0000 (19:19 +0000)
committerjljusten <jljusten@6f19259b-4bc3-4df7-8a09-765794883524>
Fri, 3 Jan 2014 19:19:38 +0000 (19:19 +0000)
Previously we would run 'git svn info' if a .svn directory
wasn't found. This would fail if the current local commit
was not from git-svn.

Now we look for the svn info in the output from git log.
If the svn version is not in a git-svn-id tag from
git log, then we use the git commit hash.

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Jordan Justen <jordan.l.justen@intel.com>
Reviewed-by: Laszlo Ersek <lersek@redhat.com>
git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@15042 6f19259b-4bc3-4df7-8a09-765794883524

OvmfPkg/create-release.py

index 3099d27d6cd6fe3d661f97d8f13a9bb15339a825..fa00cb75c0fcbc3e386a3b3bb35b1aaaf78d00a9 100755 (executable)
@@ -54,12 +54,22 @@ else:
     minor = max(4, min(7, gcc_version[1]))\r
     TOOLCHAIN = 'GCC4' + str(minor)\r
 \r
-def git_svn_info():\r
+def git_based_version():\r
     dir = os.getcwd()\r
-    os.chdir('OvmfPkg')\r
-    stdout = run_and_capture_output(args=('git', 'svn', 'info'))\r
+    if not os.path.exists('.git'):\r
+        os.chdir('OvmfPkg')\r
+    stdout = run_and_capture_output(args=('git', 'log',\r
+                                          '-n', '1',\r
+                                          '--abbrev-commit'))\r
+    regex = re.compile(r'^\s*git-svn-id:\s+\S+@(\d+)\s+[0-9a-f\-]+$',\r
+                       re.MULTILINE)\r
+    mo = regex.search(stdout)\r
+    if mo:\r
+        version = 'r' + mo.group(1)\r
+    else:\r
+        version = stdout.split(None, 3)[1]\r
     os.chdir(dir)\r
-    return stdout\r
+    return version\r
 \r
 def svn_info():\r
     dir = os.getcwd()\r
@@ -68,18 +78,18 @@ def svn_info():
     os.chdir(dir)\r
     return stdout\r
 \r
-def get_svn_info_output():\r
-    if os.path.exists(os.path.join('OvmfPkg', '.svn')):\r
-        return svn_info()\r
-    else:\r
-        return git_svn_info()\r
+def svn_based_version():\r
+        buf = svn_info()\r
+        revision_re = re.compile('^Revision\:\s*([\da-f]+)$', re.MULTILINE)\r
+        mo = revision_re.search(buf)\r
+        assert(mo is not None)\r
+        return 'r' + mo.group(1)\r
 \r
 def get_revision():\r
-    buf = get_svn_info_output()\r
-    revision_re = re.compile('^Revision\:\s*(\d+)$', re.MULTILINE)\r
-    mo = revision_re.search(buf)\r
-    if mo is not None:\r
-        return int(mo.group(1))\r
+    if os.path.exists(os.path.join('OvmfPkg', '.svn')):\r
+        return svn_based_version()\r
+    else:\r
+        return git_based_version()\r
 \r
 revision = get_revision()\r
 \r
@@ -102,7 +112,7 @@ def gen_build_info():
     iasl_version = iasl_version.split(' version ')[1].strip()\r
 \r
     sb = StringIO.StringIO()\r
-    print >> sb, 'edk2:    ', 'r%d' % revision\r
+    print >> sb, 'edk2:    ', revision\r
     print >> sb, 'compiler: GCC', gcc_version_str, '(' + TOOLCHAIN + ')'\r
     print >> sb, 'binutils:', ld_version\r
     print >> sb, 'iasl:    ', iasl_version\r
@@ -217,7 +227,7 @@ def build(arch):
 \r
 def create_zip(arch):\r
     global build_info\r
-    filename = 'OVMF-%s-r%d.zip' % (arch, revision)\r
+    filename = 'OVMF-%s-%s.zip' % (arch, revision)\r
     print 'Creating', filename, '...',\r
     sys.stdout.flush()\r
     if os.path.exists(filename):\r