[SeaBIOS] [PATCH 0/3] Don't allow version override; use reproducible by default
Matt DeVillier
matt.devillier at gmail.com
Fri Oct 23 00:21:49 CEST 2015
On 10/21/2015 7:41:36 PM, "Kevin O'Connor" <kevin at koconnor.net> wrote:
>On Wed, Oct 21, 2015 at 10:41:20PM +0000, Matt DeVillier wrote:
>> Kevin,
>>
>> what toolchain is needed to generate a clean build / without
>> hostname/datestamp in the version string? Can coreboots toolchain be
>>used?
>> I'm using Ubuntu 15.04's default apparently (I'd have to check
>>versions),
>> which results in cleanbuild = false.
>
>Looks like there are greater differences in the various version
>strings than I was aware of. I think the patch below should fix it.
>
>Thanks,
>-Kevin
Kevin,
this patch, along with the one you posted on IRC just prior, both
produce a clean version string on my Ubuntu-based build machine
thanks,
Matt
>
>
>commit f1356349b8c7b631b5c815d5d69f780fc733bcf6
>Author: Kevin O'Connor <kevin at koconnor.net>
>Date: Wed Oct 21 20:35:50 2015 -0400
>
> build: Be more permissive in buildversion.py version scan
>
> There is some variation in version strings between various tool
>chain
> builds. Make the version tool scan more permissive to attempt to
> handle these variations.
>
> Signed-off-by: Kevin O'Connor <kevin at koconnor.net>
>
>diff --git a/scripts/buildversion.py b/scripts/buildversion.py
>index c3a83b0..da66151 100755
>--- a/scripts/buildversion.py
>+++ b/scripts/buildversion.py
>@@ -4,7 +4,7 @@
> # Copyright (C) 2015 Kevin O'Connor <kevin at koconnor.net>
> #
> # This file may be distributed under the terms of the GNU GPLv3
>license.
>-import sys, os, subprocess, time, socket, optparse, re
>+import sys, os, subprocess, time, socket, optparse
>
> VERSION_FORMAT = """
> /* DO NOT EDIT! This is an autogenerated file. See
>scripts/buildversion.py. */
>@@ -42,39 +42,33 @@ def write_version(outfile, version, toolstr):
> f.write(VERSION_FORMAT % (version, toolstr))
> f.close()
>
>-re_gcc = re.compile(r'^(?P<prog>.*) \(GCC\) (?P<version>.*)$')
>-re_binutils = re.compile(r'^GNU (?P<prog>.*) version
>(?P<version>.*)$')
>-
> # Run "tool --version" for each specified tool and extract versions
> def tool_versions(tools):
> tools = [t.strip() for t in tools.split(';')]
>- gcc = binutils = ""
>+ versions = ['', '']
> success = 0
> for tool in tools:
> try:
> ver = subprocess.check_output([tool,
>'--version']).decode()
> except:
> continue
>- ver = ver.split('\n')[0]
>- m = re_gcc.match(ver)
>- if m:
>- ver = m.group('version')
>- if gcc and gcc != ver:
>- gcc = "mixed"
>- continue
>- gcc = ver
>- success += 1
>+ verstr = ver.split('\n')[0]
>+ isbinutils = 0
>+ if verstr.startswith('GNU '):
>+ isbinutils = 1
>+ verstr = verstr[4:]
>+ if ' ' not in verstr:
>+ continue
>+ prog, ver = verstr.split(' ', 1)
>+ if not prog or not ver:
>+ continue
>+ if versions[isbinutils] and versions[isbinutils] != ver:
>+ vers[isbinutils] = "mixed"
> continue
>- m = re_binutils.match(ver)
>- if m:
>- ver = m.group('version')
>- if binutils and binutils != ver:
>- binutils = "mixed"
>- continue
>- binutils = ver
>- success += 1
>- cleanbuild = binutils and gcc and success == len(tools)
>- return cleanbuild, "gcc: %s binutils: %s" % (gcc, binutils)
>+ versions[isbinutils] = ver
>+ success += 1
>+ cleanbuild = versions[0] and versions[1] and success == len(tools)
>+ return cleanbuild, "gcc: %s binutils: %s" % (versions[0],
>versions[1])
>
> def main():
> usage = "%prog [options] <outputheader.h>"
More information about the SeaBIOS
mailing list