diff options
author | Kevin O'Connor <kevin@koconnor.net> | 2015-11-09 09:23:26 -0500 |
---|---|---|
committer | Kevin O'Connor <kevin@koconnor.net> | 2015-11-09 17:55:40 -0500 |
commit | 8c12694b8a12300c223d14045a271f46fb1cbca3 (patch) | |
tree | 0523859c4e522649bab7fc20cf289a1d775b1bbb | |
parent | cfc17bd88ea4902f129f91c59785e5da19fc96f9 (diff) | |
download | seabios-8c12694b8a12300c223d14045a271f46fb1cbca3.zip seabios-8c12694b8a12300c223d14045a271f46fb1cbca3.tar.gz seabios-8c12694b8a12300c223d14045a271f46fb1cbca3.tar.bz2 |
buildversion: Avoid subprocess.check_output() as that requires python2.7
Don't require python2.7 in buildversion.py. Also, ignore only those
exceptions that are known to be possible.
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
-rwxr-xr-x | scripts/buildversion.py | 32 |
1 files changed, 19 insertions, 13 deletions
diff --git a/scripts/buildversion.py b/scripts/buildversion.py index d61fc9e..1045049 100755 --- a/scripts/buildversion.py +++ b/scripts/buildversion.py @@ -4,7 +4,7 @@ # Copyright (C) 2015 Kevin O'Connor <kevin@koconnor.net> # # This file may be distributed under the terms of the GNU GPLv3 license. -import sys, os, subprocess, time, socket, optparse +import sys, os, subprocess, shlex, time, socket, optparse VERSION_FORMAT = """ /* DO NOT EDIT! This is an autogenerated file. See scripts/buildversion.py. */ @@ -12,16 +12,26 @@ VERSION_FORMAT = """ #define BUILD_TOOLS "%s" """ +# Run program and return the specified output +def check_output(prog): + try: + process = subprocess.Popen(shlex.split(prog), stdout=subprocess.PIPE) + output = process.communicate()[0] + retcode = process.poll() + except OSError: + return "" + if retcode: + return "" + try: + return output.decode() + except UnicodeError: + return "" + # Obtain version info from "git" program def git_version(): if not os.path.exists('.git'): return "" - params = "git describe --tags --long --dirty".split() - try: - ver = subprocess.check_output(params).decode().strip() - except: - return "" - return ver + return check_output("git describe --tags --long --dirty").strip() # Look for version in a ".version" file. Official release tarballs # have this file (see scripts/tarball.sh). @@ -32,7 +42,7 @@ def file_version(): f = open('.version', 'r') ver = f.readline().strip() f.close() - except: + except OSError: return "" return ver @@ -50,11 +60,7 @@ def tool_versions(tools): success = 0 for tool in tools: # Extract first line from "tool --version" output - try: - ver = subprocess.check_output([tool, '--version']).decode() - except: - continue - verstr = ver.split('\n')[0] + verstr = check_output("%s --version" % (tool,)).split('\n')[0] # Check if this tool looks like a binutils program isbinutils = 0 if verstr.startswith('GNU '): |