blob: 78be895afc1d9d44f8f00f4c1242b7d091cfaaf1 [file] [log] [blame]
#!/usr/bin/env python
"""Version utility"""
import subprocess
import os
import sys
def generate_version_string(libname):
version_numbers = []
tokens = []
gitcmd = 'git'
if sys.platform.startswith('win'):
gitcmd = 'git.exe'
try:
git_version = subprocess.check_output( [ gitcmd, 'describe', '--tags', '--long' ], stderr = subprocess.STDOUT ).strip()
tokens = git_version.decode().split( '-' )
version_numbers = tokens[0].split( '.' )
except Exception:
pass
version_major = "0"
version_minor = "0"
version_revision = "1"
version_build = "0"
version_scm = "0"
if version_numbers and len( version_numbers ) > 2:
version_major = version_numbers[0]
version_minor = version_numbers[1]
version_revision = version_numbers[2]
if tokens and len( tokens ) > 2:
version_build = tokens[1]
version_scm = tokens[2][1:]
module = ""
if not libname == "foundation":
module = "_module"
source = """/* ****** AUTOMATICALLY GENERATED, DO NOT EDIT ******
This file is generated from the git describe command.
Run the configure script to regenerate this file */
#include <foundation/version.h>
#include <""" + libname + "/" + libname + """.h>
version_t
""" + libname + module + """_version(void) {
"""
source += " return version_make(" + version_major + ", " + version_minor + ", " + version_revision + ", " + version_build + ", 0x" + version_scm + ");\n}\n"
return source
def read_version_string(input_path):
try:
file = open( os.path.join( input_path, 'version.c' ), "r" )
str = file.read()
file.close()
except IOError:
str = ""
return str
def write_version_string(output_path, str):
file = open( os.path.join( output_path, 'version.c' ), "w" )
file.write( str )
file.close
def generate_version(libname, output_path):
generated = generate_version_string(libname)
if generated == None:
return
previous = read_version_string(output_path)
if generated != previous:
write_version_string(output_path, generated)
if __name__ == "__main__":
generate_version(sys.argv[1], sys.argv[2])