]>
git.proxmox.com Git - mirror_edk2.git/blob - OvmfPkg/create-release.py
3 # Copyright (c) 2010 - 2013, Intel Corporation. All rights reserved.<BR>
5 # This program and the accompanying materials
6 # are licensed and made available under the terms and conditions of the BSD License
7 # which accompanies this distribution. The full text of the license may be found at
8 # http://opensource.org/licenses/bsd-license.php
10 # THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
11 # WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
21 is_unix
= not sys
.platform
.startswith('win')
24 print "This script currently only supports unix-like systems"
27 if os
.path
.exists('OvmfPkgX64.dsc'):
30 if not os
.path
.exists(os
.path
.join('OvmfPkg', 'OvmfPkgX64.dsc')):
31 print "OvmfPkg/OvmfPkgX64.dsc doesn't exist"
34 def run_and_capture_output(args
, checkExitCode
= True):
35 p
= subprocess
.Popen(args
=args
, stdout
=subprocess
.PIPE
)
36 stdout
= p
.stdout
.read()
42 gcc_version
= run_and_capture_output(args
=('gcc', '--version'))
43 gcc_re
= re
.compile(r
'\s*\S+\s+\([^\)]+?\)\s+(\d+(?:\.\d+)*)(?:\s+.*)?')
44 mo
= gcc_re
.match(gcc_version
)
46 print "Unable to find GCC version"
48 gcc_version
= map(lambda n
: int(n
), mo
.group(1).split('.'))
50 if 'TOOLCHAIN' in os
.environ
:
51 TOOLCHAIN
= os
.environ
['TOOLCHAIN']
53 assert(gcc_version
[0] == 4)
54 minor
= max(4, min(7, gcc_version
[1]))
55 TOOLCHAIN
= 'GCC4' + str(minor
)
60 stdout
= run_and_capture_output(args
=('git', 'svn', 'info'))
67 stdout
= run_and_capture_output(args
=('svn', 'info'))
71 def get_svn_info_output():
72 if os
.path
.exists(os
.path
.join('OvmfPkg', '.svn')):
78 buf
= get_svn_info_output()
79 revision_re
= re
.compile('^Revision\:\s*(\d+)$', re
.MULTILINE
)
80 mo
= revision_re
.search(buf
)
82 return int(mo
.group(1))
84 revision
= get_revision()
86 newline_re
= re
.compile(r
'(\n|\r\n|\r(?!\n))', re
.MULTILINE
)
88 return newline_re
.sub('\r\n', str)
91 distro
= run_and_capture_output(args
=('lsb_release', '-sd')).strip()
93 machine
= run_and_capture_output(args
=('uname', '-m')).strip()
95 gcc_version_str
= '.'.join(map(lambda v
: str(v
), gcc_version
))
97 ld_version
= run_and_capture_output(args
=('ld', '--version'))
98 ld_version
= ld_version
.split('\n')[0].split()[-1]
100 iasl_version
= run_and_capture_output(args
=('iasl'), checkExitCode
=False)
101 iasl_version
= filter(lambda s
: s
.find(' version ') >= 0, iasl_version
.split('\n'))[0]
102 iasl_version
= iasl_version
.split(' version ')[1].strip()
104 sb
= StringIO
.StringIO()
105 print >> sb
, 'edk2: ', 'r%d' % revision
106 print >> sb
, 'compiler: GCC', gcc_version_str
, '(' + TOOLCHAIN
+ ')'
107 print >> sb
, 'binutils:', ld_version
108 print >> sb
, 'iasl: ', iasl_version
109 print >> sb
, 'system: ', distro
, machine
.replace('_', '-')
110 return to_dos_text(sb
.getvalue())
112 LICENSE
= to_dos_text(
113 '''This OVMF binary release is built from source code licensed under
114 the BSD open source license. The BSD license is documented at
115 http://opensource.org/licenses/bsd-license.php, and a copy is
118 One sub-component of the OVMF project is a FAT filesystem driver. The FAT
119 filesystem driver code is also BSD licensed, but the code license contains
120 one additional term. This license can be found at
121 http://sourceforge.net/apps/mediawiki/tianocore/index.php?title=Edk2-fat-driver,
122 and a copy is shown below (following the normal BSD license).
124 === BSD license: START ===
126 Copyright (c) 2009 - 2011, Intel Corporation. All rights reserved.
128 Redistribution and use in source and binary forms, with or without
129 modification, are permitted provided that the following conditions
132 * Redistributions of source code must retain the above copyright
133 notice, this list of conditions and the following disclaimer.
134 * Redistributions in binary form must reproduce the above copyright
135 notice, this list of conditions and the following disclaimer in
136 the documentation and/or other materials provided with the
138 * Neither the name of the Intel Corporation nor the names of its
139 contributors may be used to endorse or promote products derived
140 from this software without specific prior written permission.
142 THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
143 "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
144 LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
145 FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
146 COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
147 INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
148 BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
149 LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
150 CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
151 LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
152 ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
153 POSSIBILITY OF SUCH DAMAGE.
155 === BSD license: END ===
157 === FAT filesystem driver license: START ===
159 Copyright (c) 2004, Intel Corporation. All rights reserved.
161 Redistribution and use in source and binary forms, with or without
162 modification, are permitted provided that the following conditions
165 * Redistributions of source code must retain the above copyright
166 notice, this list of conditions and the following disclaimer.
167 * Redistributions in binary form must reproduce the above copyright
168 notice, this list of conditions and the following disclaimer in
169 the documentation and/or other materials provided with the
171 * Neither the name of Intel nor the names of its
172 contributors may be used to endorse or promote products derived
173 from this software without specific prior written permission.
175 THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
176 "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
177 LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
178 FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
179 COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
180 INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
181 BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
182 LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
183 CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
184 LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
185 ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
186 POSSIBILITY OF SUCH DAMAGE.
189 In addition to the forgoing, redistribution and use of the code is
190 conditioned upon the FAT 32 File System Driver and all derivative
191 works thereof being used for and designed only to read and/or write
192 to a file system that is directly managed by an Extensible Firmware
193 Interface (EFI) implementation or by an emulator of an EFI
196 === FAT filesystem driver license: END ===
206 logname
= 'build-%s.log' % arch
207 build_log
= open(logname
, 'w')
208 print 'Building OVMF for', arch
, '(%s)' % logname
, '...',
210 p
= subprocess
.Popen(args
=args
, stdout
=build_log
, stderr
=build_log
)
215 print '[error 0x%x]' % ret_code
218 def create_zip(arch
):
220 filename
= 'OVMF-%s-r%d.zip' % (arch
, revision
)
221 print 'Creating', filename
, '...',
223 if os
.path
.exists(filename
):
225 zipf
= zipfile
.ZipFile(filename
, 'w', zipfile
.ZIP_DEFLATED
)
227 zipf
.writestr('BUILD_INFO', build_info
)
228 zipf
.writestr('LICENSE', LICENSE
)
229 zipf
.write(os
.path
.join('OvmfPkg', 'README'), 'README')
230 FV_DIR
= os
.path
.join(
232 'Ovmf' + arch
.title(),
233 'RELEASE_' + TOOLCHAIN
,
236 zipf
.write(os
.path
.join(FV_DIR
, 'OVMF.fd'), 'OVMF.fd')
240 build_info
= gen_build_info()