mirror of https://github.com/acidanthera/audk.git
OvmfPkg: retire "create-release.py"
Bugzilla: https://bugzilla.tianocore.org/show_bug.cgi?id=1653 "create-release.py" generates a 2-BSDL copyright block that will no longer apply once we fix <https://bugzilla.tianocore.org/show_bug.cgi?id=1373>. Rather than update "create-release.py", remove it. We haven't used it in several years now, plus source releases of upstream edk2 are now covered by the edk2 stable tags <https://github.com/tianocore/tianocore.github.io/wiki/EDK-II#stable-tags>. Regarding binary releases of upstream OVMF: OVMF and ArmVirtQemu binaries built at the edk2 stable tags are being bundled with upstream QEMU, similarly to other firmware that runs on QEMU platforms: <https://lists.gnu.org/archive/html/qemu-devel/2019-03/msg06148.html>. Furthermore, the Xen project has provided its own builds of OVMF and ArmVirtXen for a good while now. Cc: Anthony Perard <anthony.perard@citrix.com> Cc: Ard Biesheuvel <ard.biesheuvel@linaro.org> Cc: Jordan Justen <jordan.l.justen@intel.com> Cc: Julien Grall <julien.grall@arm.com> Contributed-under: TianoCore Contribution Agreement 1.1 Signed-off-by: Laszlo Ersek <lersek@redhat.com> Acked-by: Ard Biesheuvel <ard.biesheuvel@linaro.org> Acked-by: Jordan Justen <jordan.l.justen@intel.com>
This commit is contained in:
parent
b669adebd0
commit
cf85ba23d5
|
@ -1,208 +0,0 @@
|
||||||
#!/usr/bin/python
|
|
||||||
#
|
|
||||||
# Copyright (c) 2010 - 2013, Intel Corporation. All rights reserved.<BR>
|
|
||||||
#
|
|
||||||
# This program and the accompanying materials
|
|
||||||
# are licensed and made available under the terms and conditions of the BSD License
|
|
||||||
# which accompanies this distribution. The full text of the license may be found at
|
|
||||||
# http://opensource.org/licenses/bsd-license.php
|
|
||||||
#
|
|
||||||
# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
|
|
||||||
# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
|
|
||||||
#
|
|
||||||
|
|
||||||
import os
|
|
||||||
import re
|
|
||||||
import StringIO
|
|
||||||
import subprocess
|
|
||||||
import sys
|
|
||||||
import zipfile
|
|
||||||
|
|
||||||
is_unix = not sys.platform.startswith('win')
|
|
||||||
|
|
||||||
if not is_unix:
|
|
||||||
print "This script currently only supports unix-like systems"
|
|
||||||
sys.exit(-1)
|
|
||||||
|
|
||||||
if os.path.exists('OvmfPkgX64.dsc'):
|
|
||||||
os.chdir('..')
|
|
||||||
|
|
||||||
if not os.path.exists(os.path.join('OvmfPkg', 'OvmfPkgX64.dsc')):
|
|
||||||
print "OvmfPkg/OvmfPkgX64.dsc doesn't exist"
|
|
||||||
sys.exit(-1)
|
|
||||||
|
|
||||||
def run_and_capture_output(args, checkExitCode = True):
|
|
||||||
p = subprocess.Popen(args=args, stdout=subprocess.PIPE)
|
|
||||||
stdout = p.stdout.read()
|
|
||||||
ret_code = p.wait()
|
|
||||||
if checkExitCode:
|
|
||||||
assert ret_code == 0
|
|
||||||
return stdout
|
|
||||||
|
|
||||||
gcc_version = run_and_capture_output(args=('gcc', '--version'))
|
|
||||||
gcc_re = re.compile(r'\s*\S+\s+\([^\)]+?\)\s+(\d+(?:\.\d+)*)(?:\s+.*)?')
|
|
||||||
mo = gcc_re.match(gcc_version)
|
|
||||||
if not mo:
|
|
||||||
print "Unable to find GCC version"
|
|
||||||
sys.exit(-1)
|
|
||||||
gcc_version = map(lambda n: int(n), mo.group(1).split('.'))
|
|
||||||
|
|
||||||
if 'TOOLCHAIN' in os.environ:
|
|
||||||
TOOLCHAIN = os.environ['TOOLCHAIN']
|
|
||||||
else:
|
|
||||||
assert(gcc_version[0] == 4)
|
|
||||||
minor = max(4, min(7, gcc_version[1]))
|
|
||||||
TOOLCHAIN = 'GCC4' + str(minor)
|
|
||||||
|
|
||||||
def git_based_version():
|
|
||||||
dir = os.getcwd()
|
|
||||||
if not os.path.exists('.git'):
|
|
||||||
os.chdir('OvmfPkg')
|
|
||||||
stdout = run_and_capture_output(args=('git', 'log',
|
|
||||||
'-n', '1',
|
|
||||||
'--abbrev-commit'))
|
|
||||||
regex = re.compile(r'^\s*git-svn-id:\s+\S+@(\d+)\s+[0-9a-f\-]+$',
|
|
||||||
re.MULTILINE)
|
|
||||||
mo = regex.search(stdout)
|
|
||||||
if mo:
|
|
||||||
version = 'r' + mo.group(1)
|
|
||||||
else:
|
|
||||||
version = stdout.split(None, 3)[1]
|
|
||||||
os.chdir(dir)
|
|
||||||
return version
|
|
||||||
|
|
||||||
def svn_info():
|
|
||||||
dir = os.getcwd()
|
|
||||||
os.chdir('OvmfPkg')
|
|
||||||
stdout = run_and_capture_output(args=('svn', 'info'))
|
|
||||||
os.chdir(dir)
|
|
||||||
return stdout
|
|
||||||
|
|
||||||
def svn_based_version():
|
|
||||||
buf = svn_info()
|
|
||||||
revision_re = re.compile('^Revision\:\s*([\da-f]+)$', re.MULTILINE)
|
|
||||||
mo = revision_re.search(buf)
|
|
||||||
assert(mo is not None)
|
|
||||||
return 'r' + mo.group(1)
|
|
||||||
|
|
||||||
def get_revision():
|
|
||||||
if os.path.exists(os.path.join('OvmfPkg', '.svn')):
|
|
||||||
return svn_based_version()
|
|
||||||
else:
|
|
||||||
return git_based_version()
|
|
||||||
|
|
||||||
revision = get_revision()
|
|
||||||
|
|
||||||
newline_re = re.compile(r'(\n|\r\n|\r(?!\n))', re.MULTILINE)
|
|
||||||
def to_dos_text(str):
|
|
||||||
return newline_re.sub('\r\n', str)
|
|
||||||
|
|
||||||
def gen_build_info():
|
|
||||||
distro = run_and_capture_output(args=('lsb_release', '-sd')).strip()
|
|
||||||
|
|
||||||
machine = run_and_capture_output(args=('uname', '-m')).strip()
|
|
||||||
|
|
||||||
gcc_version_str = '.'.join(map(lambda v: str(v), gcc_version))
|
|
||||||
|
|
||||||
ld_version = run_and_capture_output(args=('ld', '--version'))
|
|
||||||
ld_version = ld_version.split('\n')[0].split()[-1]
|
|
||||||
|
|
||||||
iasl_version = run_and_capture_output(args=('iasl'), checkExitCode=False)
|
|
||||||
iasl_version = filter(lambda s: s.find(' version ') >= 0, iasl_version.split('\n'))[0]
|
|
||||||
iasl_version = iasl_version.split(' version ')[1].strip()
|
|
||||||
|
|
||||||
sb = StringIO.StringIO()
|
|
||||||
print >> sb, 'edk2: ', revision
|
|
||||||
print >> sb, 'compiler: GCC', gcc_version_str, '(' + TOOLCHAIN + ')'
|
|
||||||
print >> sb, 'binutils:', ld_version
|
|
||||||
print >> sb, 'iasl: ', iasl_version
|
|
||||||
print >> sb, 'system: ', distro, machine.replace('_', '-')
|
|
||||||
return to_dos_text(sb.getvalue())
|
|
||||||
|
|
||||||
def read_file(filename):
|
|
||||||
f = open(filename)
|
|
||||||
d = f.read()
|
|
||||||
f.close()
|
|
||||||
return d
|
|
||||||
|
|
||||||
LICENSE = to_dos_text(
|
|
||||||
'''This OVMF binary release is built from source code licensed under
|
|
||||||
the BSD open source license. The BSD license is documented at
|
|
||||||
http://opensource.org/licenses/bsd-license.php, and a copy is
|
|
||||||
shown below.
|
|
||||||
|
|
||||||
One sub-component of the OVMF project is a FAT filesystem driver. The FAT
|
|
||||||
filesystem driver code is also BSD licensed, but the code license contains
|
|
||||||
one additional term. This license can be found at
|
|
||||||
https://github.com/tianocore/tianocore.github.io/wiki/Edk2-fat-driver
|
|
||||||
and a copy is shown below (following the normal BSD license).
|
|
||||||
|
|
||||||
=== BSD license: START ===
|
|
||||||
|
|
||||||
''')
|
|
||||||
|
|
||||||
LICENSE += read_file(os.path.join('MdePkg', 'License.txt'))
|
|
||||||
|
|
||||||
LICENSE += to_dos_text(
|
|
||||||
'''
|
|
||||||
=== BSD license: END ===
|
|
||||||
|
|
||||||
=== FAT filesystem driver license: START ===
|
|
||||||
|
|
||||||
''')
|
|
||||||
|
|
||||||
LICENSE += read_file(os.path.join('FatBinPkg', 'License.txt'))
|
|
||||||
|
|
||||||
LICENSE += to_dos_text(
|
|
||||||
'''
|
|
||||||
=== FAT filesystem driver license: END ===
|
|
||||||
''')
|
|
||||||
|
|
||||||
def build(arch):
|
|
||||||
args = (
|
|
||||||
'OvmfPkg/build.sh',
|
|
||||||
'-t', TOOLCHAIN,
|
|
||||||
'-a', arch,
|
|
||||||
'-b', 'RELEASE'
|
|
||||||
)
|
|
||||||
logname = 'build-%s.log' % arch
|
|
||||||
build_log = open(logname, 'w')
|
|
||||||
print 'Building OVMF for', arch, '(%s)' % logname, '...',
|
|
||||||
sys.stdout.flush()
|
|
||||||
p = subprocess.Popen(args=args, stdout=build_log, stderr=build_log)
|
|
||||||
ret_code = p.wait()
|
|
||||||
if ret_code == 0:
|
|
||||||
print '[done]'
|
|
||||||
else:
|
|
||||||
print '[error 0x%x]' % ret_code
|
|
||||||
return ret_code
|
|
||||||
|
|
||||||
def create_zip(arch):
|
|
||||||
global build_info
|
|
||||||
filename = 'OVMF-%s-%s.zip' % (arch, revision)
|
|
||||||
print 'Creating', filename, '...',
|
|
||||||
sys.stdout.flush()
|
|
||||||
if os.path.exists(filename):
|
|
||||||
os.remove(filename)
|
|
||||||
zipf = zipfile.ZipFile(filename, 'w', zipfile.ZIP_DEFLATED)
|
|
||||||
|
|
||||||
zipf.writestr('BUILD_INFO', build_info)
|
|
||||||
zipf.writestr('LICENSE', LICENSE)
|
|
||||||
zipf.write(os.path.join('OvmfPkg', 'README'), 'README')
|
|
||||||
FV_DIR = os.path.join(
|
|
||||||
'Build',
|
|
||||||
'Ovmf' + arch.title(),
|
|
||||||
'RELEASE_' + TOOLCHAIN,
|
|
||||||
'FV'
|
|
||||||
)
|
|
||||||
zipf.write(os.path.join(FV_DIR, 'OVMF.fd'), 'OVMF.fd')
|
|
||||||
zipf.close()
|
|
||||||
print '[done]'
|
|
||||||
|
|
||||||
build_info = gen_build_info()
|
|
||||||
build('IA32')
|
|
||||||
build('X64')
|
|
||||||
create_zip('IA32')
|
|
||||||
create_zip('X64')
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue