#!/usr/bin/python\r
#\r
-# Copyright (c) 2010 - 2011, 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
# 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
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
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
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
\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
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
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
\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
'FV'\r
)\r
zipf.write(os.path.join(FV_DIR, 'OVMF.fd'), 'OVMF.fd')\r
- zipf.write(os.path.join(FV_DIR, 'CirrusLogic5446.rom'), 'CirrusLogic5446.rom')\r
zipf.close()\r
print '[done]'\r
\r