From f13664468e01dbac458762412ba9be3afb4f543c Mon Sep 17 00:00:00 2001 From: "tc@google.com" Date: Fri, 6 Feb 2009 20:17:54 +0000 Subject: Add a Repack tool to scons. This is used to compile linux resources together (kind of like the windows RES builder). I also moved the GRIT builder into the chromium site_scons since we import it in lots of places. This seems cleaner. Review URL: http://codereview.chromium.org/21115 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@9331 0039d316-1c4b-4281-b951-d872f2087c98 --- tools/data_pack/scons.py | 54 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 54 insertions(+) create mode 100644 tools/data_pack/scons.py (limited to 'tools/data_pack') diff --git a/tools/data_pack/scons.py b/tools/data_pack/scons.py new file mode 100644 index 0000000..6bd2d31 --- /dev/null +++ b/tools/data_pack/scons.py @@ -0,0 +1,54 @@ +#!/usr/bin/python +# +# Copyright (c) 2009 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +import sys + +def _SConsNodeToFile(file_node): + '''Convert a scons file Node object to a path on disk.''' + return str(file_node.rfile()) + + +def _Build(target, source, env): + '''Run the repack script.''' + data_pack_root_dir = env.subst('$CHROME_SRC_DIR/tools/data_pack') + sys.path.append(data_pack_root_dir) + import repack + sources = [_SConsNodeToFile(s) for s in source] + repack.RePack(_SConsNodeToFile(target[0]), sources) + + +def _BuildStr(targets, sources, env): + '''This message gets printed each time the builder runs.''' + return "Repacking data files into %s" % str(targets[0].rfile()) + + +def _Scanner(file_node, env, path): + '''Repack files if repack.py or data_pack.py have changed.''' + data_pack_root_dir = env.subst('$CHROME_SRC_DIR/tools/data_pack') + + files = [] + for f in ('repack.py', 'data_pack.py'): + files.append(os.path.join(data_pack_root_dir, f)) + return files + + +############################################################################# +## SCons Tool api methods below. +def generate(env): + action = env.Action(_Build, _BuildStr) + scanner = env.Scanner(function=_Scanner, skeys=['.pak']) + + builder = env.Builder(action=action, + source_scanner=scanner, + src_suffix='.pak') + + # add our builder and scanner to the environment + env.Append(BUILDERS = {'Repack': builder}) + + +# Function name is mandated by newer versions of SCons. +def exists(env): + return 1 -- cgit v1.1