diff options
author | Nicolas "Pixel" Noble <pixel@nobis-crew.org> | 2015-01-23 02:06:18 +0100 |
---|---|---|
committer | Nicolas "Pixel" Noble <pixel@nobis-crew.org> | 2015-01-23 02:06:18 +0100 |
commit | b049ba8fc4792f283db410caf561d05c361d43d2 (patch) | |
tree | 2d56bade7205322e7b00dc440687ad0683ce825b /tools/buildgen | |
parent | cc0994c8cbd302aa99483e42d6d2855b0cd59fd4 (diff) | |
parent | fdd76ba414cde7e7ae827183fcf04c9b2874adf6 (diff) |
Merge branch 'master' of github.com:google/grpc into vsprojects
Conflicts:
templates/vsprojects/vs2013/grpc.sln.template
Diffstat (limited to 'tools/buildgen')
-rwxr-xr-x | tools/buildgen/build-cleaner.py | 63 | ||||
-rwxr-xr-x | tools/buildgen/generate_projects.sh | 4 | ||||
-rwxr-xr-x | tools/buildgen/plugins/generate_vsprojects.py | 2 |
3 files changed, 66 insertions, 3 deletions
diff --git a/tools/buildgen/build-cleaner.py b/tools/buildgen/build-cleaner.py new file mode 100755 index 0000000000..f9307360c3 --- /dev/null +++ b/tools/buildgen/build-cleaner.py @@ -0,0 +1,63 @@ +#!/usr/bin/python +# produces cleaner build.json files + +import collections +import json +import os +import sys + +TEST = (os.environ.get('TEST', 'false') == 'true') + +_TOP_LEVEL_KEYS = ['settings', 'filegroups', 'libs', 'targets'] +_VERSION_KEYS = ['major', 'minor', 'micro', 'build'] +_ELEM_KEYS = [ + 'name', + 'build', + 'language', + 'public_headers', + 'headers', + 'src', + 'deps'] + +def rebuild_as_ordered_dict(indict, special_keys): + outdict = collections.OrderedDict() + for key in special_keys: + if key in indict: + outdict[key] = indict[key] + for key in sorted(indict.keys()): + if key in special_keys: continue + outdict[key] = indict[key] + return outdict + +def clean_elem(indict): + for name in ['public_headers', 'headers', 'src']: + if name not in indict: continue + inlist = indict[name] + protos = set(x for x in inlist if os.path.splitext(x)[1] == '.proto') + others = set(x for x in inlist if x not in protos) + indict[name] = sorted(protos) + sorted(others) + return rebuild_as_ordered_dict(indict, _ELEM_KEYS) + +for filename in sys.argv[1:]: + with open(filename) as f: + js = json.load(f) + js = rebuild_as_ordered_dict(js, _TOP_LEVEL_KEYS) + js['settings']['version'] = rebuild_as_ordered_dict( + js['settings']['version'], _VERSION_KEYS) + for grp in ['filegroups', 'libs', 'targets']: + if grp not in js: continue + js[grp] = sorted([clean_elem(x) for x in js[grp]], + key=lambda x: (x.get('language', '_'), x['name'])) + output = json.dumps(js, indent = 2) + # massage out trailing whitespace + lines = [] + for line in output.splitlines(): + lines.append(line.rstrip() + '\n') + output = ''.join(lines) + if TEST: + with open(filename) as f: + assert f.read() == output + else: + with open(filename, 'w') as f: + f.write(output) + diff --git a/tools/buildgen/generate_projects.sh b/tools/buildgen/generate_projects.sh index 42b161388a..2e0636fcbe 100755 --- a/tools/buildgen/generate_projects.sh +++ b/tools/buildgen/generate_projects.sh @@ -1,6 +1,6 @@ #!/bin/bash -set -x +set -e if [ "x$TEST" == "x" ] ; then TEST=false @@ -32,7 +32,7 @@ for dir in . ; do data=`for i in $json_files; do echo -n "-d $i "; done` if [ $TEST == true ] ; then actual_out=$out - out=`mktemp` + out=`mktemp /tmp/gentXXXXXX` fi $mako_renderer $plugins $data -o $out $file if [ $TEST == true ] ; then diff --git a/tools/buildgen/plugins/generate_vsprojects.py b/tools/buildgen/plugins/generate_vsprojects.py index 36eb8f7008..021b843868 100755 --- a/tools/buildgen/plugins/generate_vsprojects.py +++ b/tools/buildgen/plugins/generate_vsprojects.py @@ -30,7 +30,7 @@ def mako_plugin(dictionary): projects = [project for project in projects if project.get('vs_project_guid', None)] ## Exclude C++ projects for now - projects = [project for project in projects if not project.get('c++', False)] + projects = [project for project in projects if not project.language == 'c++'] project_dict = dict([(p['name'], p) for p in projects]) |