diff options
author | binji@chromium.org <binji@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-03-01 00:11:54 +0000 |
---|---|---|
committer | binji@chromium.org <binji@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-03-01 00:11:54 +0000 |
commit | 1a715fa709ebac5066c23dea36a810237205b3ab (patch) | |
tree | 2959983e4fe18720c2672622776aa341a5604a6b /native_client_sdk/src | |
parent | 76b138dfbf629d47be2b355dad10265bd4b849f9 (diff) | |
download | chromium_src-1a715fa709ebac5066c23dea36a810237205b3ab.zip chromium_src-1a715fa709ebac5066c23dea36a810237205b3ab.tar.gz chromium_src-1a715fa709ebac5066c23dea36a810237205b3ab.tar.bz2 |
[NaCl SDK] Don't write generated Makefile if it is identical to the existing one.
If we modify the timestamp of the Makefile, everything gets rebuilt.
BUG=none
R=sbc@chromium.org
NOTRY=true
Review URL: https://chromiumcodereview.appspot.com/12377019
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@185377 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'native_client_sdk/src')
-rwxr-xr-x | native_client_sdk/src/build_tools/easy_template.py | 7 | ||||
-rwxr-xr-x | native_client_sdk/src/build_tools/generate_make.py | 24 |
2 files changed, 27 insertions, 4 deletions
diff --git a/native_client_sdk/src/build_tools/easy_template.py b/native_client_sdk/src/build_tools/easy_template.py index 6ef2262..b2bfa71 100755 --- a/native_client_sdk/src/build_tools/easy_template.py +++ b/native_client_sdk/src/build_tools/easy_template.py @@ -65,6 +65,13 @@ def RunTemplateFile(srcfile, dstfile, template_dict, statement_re=None, RunTemplate(src, dst, template_dict, statement_re, expr_re) +def RunTemplateString(src, template_dict, statement_re=None, expr_re=None): + srcf = cStringIO.StringIO(src) + dstf = cStringIO.StringIO() + RunTemplate(srcf, dstf, template_dict, statement_re, expr_re) + return dstf.getvalue() + + def main(args): parser = optparse.OptionParser() _, args = parser.parse_args(args) diff --git a/native_client_sdk/src/build_tools/generate_make.py b/native_client_sdk/src/build_tools/generate_make.py index cc1e80f..ef37e97 100755 --- a/native_client_sdk/src/build_tools/generate_make.py +++ b/native_client_sdk/src/build_tools/generate_make.py @@ -3,11 +3,12 @@ # Use of this source code is governed by a BSD-style license that can be # found in the LICENSE file. -import buildbot_common +import cStringIO import optparse import os import sys +import buildbot_common from buildbot_common import ErrorExit import easy_template from generate_index import LandingPage @@ -52,6 +53,21 @@ def GenerateSourceCopyList(desc): return sources +def RunTemplateFile(srcfile, dstfile, replace): + dst = cStringIO.StringIO() + with open(srcfile) as srcf: + easy_template.RunTemplate(srcf, dst, replace) + + if os.path.exists(dstfile): + with open(dstfile) as dstf: + if dstf.read() == dst.getvalue(): + Trace('Generated %s is the same. Skipping' % dstfile) + return + + with open(dstfile, 'w') as dstf: + dstf.write(dst.getvalue()) + + def GetSourcesDict(sources): source_map = {} for key in ['.c', '.cc']: @@ -260,7 +276,7 @@ def ProcessHTML(srcroot, dstroot, desc, toolchains): 'data-name="%s" data-tools="%s" data-configs="%s" data-path="%s"' % ( name, ' '.join(tools), ' '.join(configs), path), } - easy_template.RunTemplateFile(srcfile, dstfile, replace) + RunTemplateFile(srcfile, dstfile, replace) def LoadProject(filename, toolchains): @@ -371,7 +387,7 @@ def ProcessProject(srcroot, dstroot, desc, toolchains): 'tools': tool_list, 'targets': desc['TARGETS'], } - easy_template.RunTemplateFile(template, make_path, template_dict) + RunTemplateFile(template, make_path, template_dict) outdir = os.path.dirname(os.path.abspath(make_path)) pepperdir = os.path.dirname(os.path.dirname(outdir)) @@ -383,7 +399,7 @@ def GenerateMasterMakefile(in_path, out_path, projects): """Generate a Master Makefile that builds all examples. """ project_names = [project['NAME'] for project in projects] template_dict = { 'projects': project_names } - easy_template.RunTemplateFile(in_path, out_path, template_dict) + RunTemplateFile(in_path, out_path, template_dict) outdir = os.path.dirname(os.path.abspath(out_path)) pepperdir = os.path.dirname(outdir) |