]> git.proxmox.com Git - mirror_edk2.git/blobdiff - OvmfPkg/create-release.py
BaseTools/Capsule: Do not support -o with --dump-info
[mirror_edk2.git] / OvmfPkg / create-release.py
index 6a6017a9f2d5cead0e123aa7e848bf7e4c861a45..82d8e7b0a2b8f7ba49046229dc94398656cfabff 100755 (executable)
@@ -1,6 +1,6 @@
 #!/usr/bin/python\r
 #\r
-# Copyright (c) 2010 - 2012, Intel Corporation. All rights reserved.<BR>\r
+# Copyright (c) 2010 - 2013, Intel Corporation. All rights reserved.<BR>\r
 #\r
 # This program and the accompanying materials\r
 # are licensed and made available under the terms and conditions of the BSD License\r
@@ -11,8 +11,6 @@
 # WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
 #\r
 \r
-release_type = 'alpha'\r
-\r
 import os\r
 import re\r
 import StringIO\r
@@ -33,11 +31,6 @@ if not os.path.exists(os.path.join('OvmfPkg', 'OvmfPkgX64.dsc')):
     print "OvmfPkg/OvmfPkgX64.dsc doesn't exist"\r
     sys.exit(-1)\r
 \r
-if 'TOOLCHAIN' in os.environ:\r
-    TOOLCHAIN = os.environ['TOOLCHAIN']\r
-else:\r
-    TOOLCHAIN = 'GCC44'\r
-\r
 def run_and_capture_output(args, checkExitCode = True):\r
     p = subprocess.Popen(args=args, stdout=subprocess.PIPE)\r
     stdout = p.stdout.read()\r
@@ -46,12 +39,37 @@ def run_and_capture_output(args, checkExitCode = True):
         assert ret_code == 0\r
     return stdout\r
 \r
-def git_svn_info():\r
+gcc_version = run_and_capture_output(args=('gcc', '--version'))\r
+gcc_re = re.compile(r'\s*\S+\s+\([^\)]+?\)\s+(\d+(?:\.\d+)*)(?:\s+.*)?')\r
+mo = gcc_re.match(gcc_version)\r
+if not mo:\r
+    print "Unable to find GCC version"\r
+    sys.exit(-1)\r
+gcc_version = map(lambda n: int(n), mo.group(1).split('.'))\r
+\r
+if 'TOOLCHAIN' in os.environ:\r
+    TOOLCHAIN = os.environ['TOOLCHAIN']\r
+else:\r
+    assert(gcc_version[0] == 4)\r
+    minor = max(4, min(7, gcc_version[1]))\r
+    TOOLCHAIN = 'GCC4' + str(minor)\r
+\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
@@ -60,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
@@ -84,8 +102,7 @@ def gen_build_info():
 \r
     machine = run_and_capture_output(args=('uname', '-m')).strip()\r
 \r
-    gcc_version = run_and_capture_output(args=('gcc', '--version'))\r
-    gcc_version = gcc_version.split('\n')[0].split()[-1]\r
+    gcc_version_str = '.'.join(map(lambda v: str(v), gcc_version))\r
 \r
     ld_version = run_and_capture_output(args=('ld', '--version'))\r
     ld_version = ld_version.split('\n')[0].split()[-1]\r
@@ -95,13 +112,19 @@ 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, 'compiler: GCC', gcc_version\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
     print >> sb, 'system:  ', distro, machine.replace('_', '-')\r
     return to_dos_text(sb.getvalue())\r
 \r
+def read_file(filename):\r
+    f = open(filename)\r
+    d = f.read()\r
+    f.close()\r
+    return d\r
+\r
 LICENSE = to_dos_text(\r
 '''This OVMF binary release is built from source code licensed under\r
 the BSD open source license.  The BSD license is documented at\r
@@ -111,81 +134,27 @@ shown below.
 One sub-component of the OVMF project is a FAT filesystem driver.  The FAT\r
 filesystem driver code is also BSD licensed, but the code license contains\r
 one additional term.  This license can be found at\r
-http://sourceforge.net/apps/mediawiki/tianocore/index.php?title=Edk2-fat-driver,\r
+https://github.com/tianocore/tianocore.github.io/wiki/Edk2-fat-driver\r
 and a copy is shown below (following the normal BSD license).\r
 \r
 === BSD license: START ===\r
 \r
-Copyright (c) 2009 - 2011, Intel Corporation. All rights reserved.\r
-\r
-Redistribution and use in source and binary forms, with or without\r
-modification, are permitted provided that the following conditions\r
-are met:\r
-\r
-* Redistributions of source code must retain the above copyright\r
-  notice, this list of conditions and the following disclaimer.\r
-* Redistributions in binary form must reproduce the above copyright\r
-  notice, this list of conditions and the following disclaimer in\r
-  the documentation and/or other materials provided with the\r
-  distribution.\r
-* Neither the name of the Intel Corporation nor the names of its\r
-  contributors may be used to endorse or promote products derived\r
-  from this software without specific prior written permission.\r
-\r
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\r
-"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\r
-LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS\r
-FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE\r
-COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,\r
-INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,\r
-BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\r
-LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\r
-CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT\r
-LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN\r
-ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\r
-POSSIBILITY OF SUCH DAMAGE.\r
+''')\r
+\r
+LICENSE += read_file(os.path.join('MdePkg', 'License.txt'))\r
 \r
+LICENSE += to_dos_text(\r
+'''\r
 === BSD license: END ===\r
 \r
 === FAT filesystem driver license: START ===\r
 \r
-Copyright (c) 2004, Intel Corporation. All rights reserved.\r
-\r
-Redistribution and use in source and binary forms, with or without\r
-modification, are permitted provided that the following conditions\r
-are met:\r
-\r
-* Redistributions of source code must retain the above copyright\r
-  notice, this list of conditions and the following disclaimer.\r
-* Redistributions in binary form must reproduce the above copyright\r
-  notice, this list of conditions and the following disclaimer in\r
-  the documentation and/or other materials provided with the\r
-  distribution.\r
-* Neither the name of Intel nor the names of its\r
-  contributors may be used to endorse or promote products derived\r
-  from this software without specific prior written permission.\r
-\r
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\r
-"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\r
-LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS\r
-FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE\r
-COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,\r
-INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,\r
-BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\r
-LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\r
-CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT\r
-LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN\r
-ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\r
-POSSIBILITY OF SUCH DAMAGE.\r
-\r
-Additional terms:\r
-In addition to the forgoing, redistribution and use of the code is\r
-conditioned upon the FAT 32 File System Driver and all derivative\r
-works thereof being used for and designed only to read and/or write\r
-to a file system that is directly managed by an Extensible Firmware\r
-Interface (EFI) implementation or by an emulator of an EFI\r
-implementation.\r
+''')\r
+\r
+LICENSE += read_file(os.path.join('FatBinPkg', 'License.txt'))\r
 \r
+LICENSE += to_dos_text(\r
+'''\r
 === FAT filesystem driver license: END ===\r
 ''')\r
 \r
@@ -210,7 +179,7 @@ def build(arch):
 \r
 def create_zip(arch):\r
     global build_info\r
-    filename = 'OVMF-%s-r%d-%s.zip' % (arch, revision, release_type)\r
+    filename = 'OVMF-%s-%s.zip' % (arch, revision)\r
     print 'Creating', filename, '...',\r
     sys.stdout.flush()\r
     if os.path.exists(filename):\r