aboutsummaryrefslogtreecommitdiff
path: root/scripts
diff options
context:
space:
mode:
authorKevin O'Connor <kevin@koconnor.net>2015-10-13 15:09:40 -0400
committerKevin O'Connor <kevin@koconnor.net>2015-10-15 10:55:03 -0400
commita6c877401b748092e2e7799bfb4a4bd84729b1da (patch)
tree4d194c555df8d6f8181459f2b37e82144ef7532c /scripts
parent5d91226e897b8209f7acefc1806a3cbf90a5394e (diff)
downloadseabios-hppa-a6c877401b748092e2e7799bfb4a4bd84729b1da.zip
seabios-hppa-a6c877401b748092e2e7799bfb4a4bd84729b1da.tar.gz
seabios-hppa-a6c877401b748092e2e7799bfb4a4bd84729b1da.tar.bz2
build: Rework version generation; don't allow make version override
Convert the script to generate the build version from a shell script to a python script. Remove the ability to override the version at build time via "make VERSION=xyz". Replace it with ability to add extra version information at build time via "make EXTRAVERSION=xyz". Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
Diffstat (limited to 'scripts')
-rwxr-xr-xscripts/buildversion.py66
-rwxr-xr-xscripts/buildversion.sh31
2 files changed, 66 insertions, 31 deletions
diff --git a/scripts/buildversion.py b/scripts/buildversion.py
new file mode 100755
index 0000000..b948134
--- /dev/null
+++ b/scripts/buildversion.py
@@ -0,0 +1,66 @@
+#!/usr/bin/env python
+# Generate version information for a program
+#
+# 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
+
+VERSION_FORMAT = """
+/* DO NOT EDIT! This is an autogenerated file. See scripts/buildversion.py. */
+#define BUILD_VERSION "%s"
+"""
+
+# 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
+
+# Look for version in a ".version" file
+def file_version():
+ if not os.path.isfile('.version'):
+ return ""
+ try:
+ f = open('.version', 'r')
+ ver = f.readline().strip()
+ f.close()
+ except:
+ return ""
+ return ver
+
+# Generate an output file with the version information
+def write_version(outfile, version):
+ sys.stdout.write("Version: %s\n" % (version,))
+ f = open(outfile, 'w')
+ f.write(VERSION_FORMAT % (version,))
+ f.close()
+
+def main():
+ usage = "%prog [options] <outputheader.h>"
+ opts = optparse.OptionParser(usage)
+ opts.add_option("-e", "--extra", dest="extra", default="",
+ help="extra version string to append to version")
+
+ options, args = opts.parse_args()
+ if len(args) != 1:
+ opts.error("Incorrect arguments")
+ outfile = args[0]
+
+ ver = git_version()
+ if not ver:
+ ver = file_version()
+ if not ver:
+ ver = "?"
+ btime = time.strftime("%Y%m%d_%H%M%S")
+ hostname = socket.gethostname()
+ ver = "%s-%s-%s%s" % (ver, btime, hostname, options.extra)
+ write_version(outfile, ver)
+
+if __name__ == '__main__':
+ main()
diff --git a/scripts/buildversion.sh b/scripts/buildversion.sh
deleted file mode 100755
index 516aff5..0000000
--- a/scripts/buildversion.sh
+++ /dev/null
@@ -1,31 +0,0 @@
-#!/bin/sh
-# Script to generate a C file with version information.
-OUTFILE="$1"
-VAR16MODE="$2"
-
-# Extract version info
-if [ -z "$BUILD_VERSION" ]; then
- if [ -d .git -o -f .git ]; then
- VERSION="`git describe --tags --long --dirty`"
- elif [ -f .version ]; then
- VERSION="`cat .version`"
- else
- VERSION="?"
- fi
- VERSION="${VERSION}-`date +"%Y%m%d_%H%M%S"`-`hostname`"
-else
- VERSION="$BUILD_VERSION"
-fi
-echo "Version: ${VERSION}"
-
-# Build header file
-if [ "$VAR16MODE" = "VAR16" ]; then
- cat > ${OUTFILE} <<EOF
-#include "types.h"
-char VERSION[] VAR16 = "${VERSION}";
-EOF
-else
- cat > ${OUTFILE} <<EOF
-char VERSION[] = "${VERSION}";
-EOF
-fi