buildversion: Add debugging messages

Add ability to output debug messages from the buildversion.py build
script.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
This commit is contained in:
Kevin O'Connor 2015-11-10 09:26:52 -05:00
parent 8c12694b8a
commit fa7545ab2d
1 changed files with 19 additions and 2 deletions

View File

@ -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, shlex, time, socket, optparse
import sys, os, subprocess, shlex, time, socket, optparse, logging, traceback
VERSION_FORMAT = """
/* DO NOT EDIT! This is an autogenerated file. See scripts/buildversion.py. */
@ -14,40 +14,51 @@ VERSION_FORMAT = """
# Run program and return the specified output
def check_output(prog):
logging.debug("Running %s" % (repr(prog),))
try:
process = subprocess.Popen(shlex.split(prog), stdout=subprocess.PIPE)
output = process.communicate()[0]
retcode = process.poll()
except OSError:
logging.debug("Exception on run: %s" % (traceback.format_exc(),))
return ""
logging.debug("Got (code=%s): %s" % (retcode, repr(output)))
if retcode:
return ""
try:
return output.decode()
except UnicodeError:
logging.debug("Exception on decode: %s" % (traceback.format_exc(),))
return ""
# Obtain version info from "git" program
def git_version():
if not os.path.exists('.git'):
logging.debug("No '.git' file/directory found")
return ""
return check_output("git describe --tags --long --dirty").strip()
ver = check_output("git describe --tags --long --dirty").strip()
logging.debug("Got git version: %s" % (repr(ver),))
return ver
# Look for version in a ".version" file. Official release tarballs
# have this file (see scripts/tarball.sh).
def file_version():
if not os.path.isfile('.version'):
logging.debug("No '.version' file found")
return ""
try:
f = open('.version', 'r')
ver = f.readline().strip()
f.close()
except OSError:
logging.debug("Exception on read: %s" % (traceback.format_exc(),))
return ""
logging.debug("Got .version: %s" % (repr(ver),))
return ver
# Generate an output file with the version information
def write_version(outfile, version, toolstr):
logging.debug("Write file %s and %s" % (repr(version), repr(toolstr)))
sys.stdout.write("Version: %s\n" % (version,))
f = open(outfile, 'w')
f.write(VERSION_FORMAT % (version, toolstr))
@ -74,6 +85,8 @@ def tool_versions(tools):
continue
# Check for any version conflicts
if versions[isbinutils] and versions[isbinutils] != ver:
logging.debug("Mixed version %s vs %s" % (
repr(versions[isbinutils]), repr(ver)))
vers[isbinutils] = "mixed"
continue
versions[isbinutils] = ver
@ -88,11 +101,15 @@ def main():
help="extra version string to append to version")
opts.add_option("-t", "--tools", dest="tools", default="",
help="list of build programs to extract version from")
opts.add_option("-v", action="store_true", dest="verbose",
help="enable debug messages")
options, args = opts.parse_args()
if len(args) != 1:
opts.error("Incorrect arguments")
outfile = args[0]
if options.verbose:
logging.basicConfig(level=logging.DEBUG)
cleanbuild, toolstr = tool_versions(options.tools)