|
|
|
#!/usr/bin/env python
|
|
|
|
|
|
|
|
def substitute(build, output_dir):
|
|
|
|
|
|
|
|
# setup the template engine
|
|
|
|
template_dir = os.path.join(os.path.dirname(__file__), 'templates')
|
|
|
|
jtemplate = Environment(loader=FileSystemLoader(template_dir), trim_blocks=True, lstrip_blocks=True)
|
|
|
|
|
|
|
|
# add the filters
|
|
|
|
jtemplate.filters['csv'] = csv
|
|
|
|
jtemplate.filters['stripExtraSpaces'] = stripExtraSpaces
|
|
|
|
|
|
|
|
# load the template
|
|
|
|
template = jtemplate.get_template('template_build_info.m')
|
|
|
|
|
|
|
|
# create the build directory
|
|
|
|
output_dir = output_dir+'/+cv'
|
|
|
|
if not os.path.isdir(output_dir):
|
|
|
|
os.mkdir(output_dir)
|
|
|
|
|
|
|
|
# populate template
|
|
|
|
populated = template.render(build=build, time=time)
|
|
|
|
with open(os.path.join(output_dir, 'buildInformation.m'), 'wb') as f:
|
|
|
|
f.write(populated)
|
|
|
|
|
|
|
|
if __name__ == "__main__":
|
|
|
|
"""
|
|
|
|
Usage: python build_info.py --jinja2 /path/to/jinja2/engine
|
|
|
|
--os os_version_string
|
|
|
|
--arch [bitness processor]
|
|
|
|
--compiler [id version]
|
|
|
|
--mex_arch arch_string
|
|
|
|
--mex_script /path/to/mex/script
|
|
|
|
--cxx_flags [-list -of -flags -to -passthrough]
|
|
|
|
--opencv_version version_string
|
|
|
|
--commit commit_hash_if_using_git
|
|
|
|
--modules [core imgproc highgui etc]
|
|
|
|
--configuration Debug/Release
|
|
|
|
--outdir /path/to/write/build/info
|
|
|
|
|
|
|
|
build_info.py generates a Matlab function that can be invoked with a call to
|
|
|
|
>> cv.buildInformation();
|
|
|
|
|
|
|
|
This function prints a summary of the user's OS, OpenCV and Matlab build
|
|
|
|
given the information passed to this module. build_info.py invokes Jinja2
|
|
|
|
on the template_build_info.m template.
|
|
|
|
"""
|
|
|
|
|
|
|
|
# parse the input options
|
|
|
|
import sys, re, os, time
|
|
|
|
from argparse import ArgumentParser
|
|
|
|
parser = ArgumentParser()
|
|
|
|
parser.add_argument('--jinja2')
|
|
|
|
parser.add_argument('--os')
|
|
|
|
parser.add_argument('--arch', nargs=2)
|
|
|
|
parser.add_argument('--compiler', nargs='+')
|
|
|
|
parser.add_argument('--mex_arch')
|
|
|
|
parser.add_argument('--mex_script')
|
|
|
|
parser.add_argument('--mex_opts', default=['-largeArrayDims'], nargs='*')
|
|
|
|
parser.add_argument('--cxx_flags', default=[], nargs='*')
|
|
|
|
parser.add_argument('--opencv_version', default='', nargs='?')
|
|
|
|
parser.add_argument('--commit', default='Not in working git tree', nargs='?')
|
|
|
|
parser.add_argument('--modules', nargs='+')
|
|
|
|
parser.add_argument('--configuration')
|
|
|
|
parser.add_argument('--outdir')
|
|
|
|
build = parser.parse_args()
|
|
|
|
|
|
|
|
# add jinja to the path
|
|
|
|
sys.path.append(build.jinja2)
|
|
|
|
|
|
|
|
from filters import *
|
|
|
|
from jinja2 import Environment, FileSystemLoader
|
|
|
|
|
|
|
|
# populate the build info template
|
|
|
|
substitute(build, build.outdir)
|