| OLD | NEW | 
|    1 # Copyright (c) 2009 The Chromium OS Authors. All rights reserved. |    1 # Copyright (c) 2009 The Chromium OS Authors. All rights reserved. | 
|    2 # Use of this source code is governed by a BSD-style license that can be |    2 # Use of this source code is governed by a BSD-style license that can be | 
|    3 # found in the LICENSE file. |    3 # found in the LICENSE file. | 
|    4  |    4  | 
|    5 import os |    5 import os | 
|    6  |    6  | 
|    7 # Protobuffer compilation |    7 # Protobuffer compilation | 
|    8 """ Inputs: |  | 
|    9         target: list of targets to compile to |  | 
|   10         source: list of sources to compile |  | 
|   11         env: the scons environment in which we are compiling |  | 
|   12     Outputs: |  | 
|   13         target: the list of targets we'll emit |  | 
|   14         source: the list of sources we'll compile""" |  | 
|   15 def ProtocolBufferEmitter(target, source, env): |    8 def ProtocolBufferEmitter(target, source, env): | 
 |    9   """ Inputs: | 
 |   10           target: list of targets to compile to | 
 |   11           source: list of sources to compile | 
 |   12           env: the scons environment in which we are compiling | 
 |   13       Outputs: | 
 |   14           target: the list of targets we'll emit | 
 |   15           source: the list of sources we'll compile""" | 
|   16   output = str(source[0]) |   16   output = str(source[0]) | 
|   17   output = output[0:output.rfind('.proto')] |   17   output = output[0:output.rfind('.proto')] | 
|   18   target = [ |   18   target = [ | 
|   19     output + '.pb.cc', |   19     output + '.pb.cc', | 
|   20     output + '.pb.h', |   20     output + '.pb.h', | 
|   21   ] |   21   ] | 
|   22   return target, source |   22   return target, source | 
|   23  |   23  | 
|   24 """ Inputs: |  | 
|   25         source: list of sources to process |  | 
|   26         target: list of targets to generate |  | 
|   27         env: scons environment in which we are working |  | 
|   28         for_signature: unused |  | 
|   29     Outputs: a list of commands to execute to generate the targets from |  | 
|   30              the sources.""" |  | 
|   31 def ProtocolBufferGenerator(source, target, env, for_signature): |   24 def ProtocolBufferGenerator(source, target, env, for_signature): | 
 |   25   """ Inputs: | 
 |   26           source: list of sources to process | 
 |   27           target: list of targets to generate | 
 |   28           env: scons environment in which we are working | 
 |   29           for_signature: unused | 
 |   30       Outputs: a list of commands to execute to generate the targets from | 
 |   31                the sources.""" | 
|   32   commands = [ |   32   commands = [ | 
|   33     '/usr/bin/protoc ' |   33     '/usr/bin/protoc ' | 
|   34     ' --proto_path . ${SOURCES} --cpp_out .'] |   34     ' --proto_path . ${SOURCES} --cpp_out .'] | 
|   35   return commands |   35   return commands | 
|   36  |   36  | 
|   37 proto_builder = Builder(generator = ProtocolBufferGenerator, |   37 proto_builder = Builder(generator = ProtocolBufferGenerator, | 
|   38                         emitter = ProtocolBufferEmitter, |   38                         emitter = ProtocolBufferEmitter, | 
|   39                         single_source = 1, |   39                         single_source = 1, | 
|   40                         suffix = '.pb.cc') |   40                         suffix = '.pb.cc') | 
|   41  |   41  | 
|   42 """ Inputs: |  | 
|   43         target: unused |  | 
|   44         source: list containing the source .xml file |  | 
|   45         env: the scons environment in which we are compiling |  | 
|   46     Outputs: |  | 
|   47         target: the list of targets we'll emit |  | 
|   48         source: the list of sources we'll process""" |  | 
|   49 def DbusBindingsEmitter(target, source, env): |   42 def DbusBindingsEmitter(target, source, env): | 
 |   43   """ Inputs: | 
 |   44           target: unused | 
 |   45           source: list containing the source .xml file | 
 |   46           env: the scons environment in which we are compiling | 
 |   47       Outputs: | 
 |   48           target: the list of targets we'll emit | 
 |   49           source: the list of sources we'll process""" | 
|   50   output = str(source[0]) |   50   output = str(source[0]) | 
|   51   output = output[0:output.rfind('.xml')] |   51   output = output[0:output.rfind('.xml')] | 
|   52   target = [ |   52   target = [ | 
|   53     output + '.dbusserver.h', |   53     output + '.dbusserver.h', | 
|   54     output + '.dbusclient.h' |   54     output + '.dbusclient.h' | 
|   55   ] |   55   ] | 
|   56   return target, source |   56   return target, source | 
|   57  |   57  | 
|   58 """ Inputs: |  | 
|   59         source: list of sources to process |  | 
|   60         target: list of targets to generate |  | 
|   61         env: scons environment in which we are working |  | 
|   62         for_signature: unused |  | 
|   63     Outputs: a list of commands to execute to generate the targets from |  | 
|   64              the sources.""" |  | 
|   65 def DbusBindingsGenerator(source, target, env, for_signature): |   58 def DbusBindingsGenerator(source, target, env, for_signature): | 
 |   59   """ Inputs: | 
 |   60           source: list of sources to process | 
 |   61           target: list of targets to generate | 
 |   62           env: scons environment in which we are working | 
 |   63           for_signature: unused | 
 |   64       Outputs: a list of commands to execute to generate the targets from | 
 |   65                the sources.""" | 
|   66   commands = [] |   66   commands = [] | 
|   67   for target_file in target: |   67   for target_file in target: | 
|   68     if str(target_file).endswith('.dbusserver.h'): |   68     if str(target_file).endswith('.dbusserver.h'): | 
|   69       mode_flag = '--mode=glib-server ' |   69       mode_flag = '--mode=glib-server ' | 
|   70     else: |   70     else: | 
|   71       mode_flag = '--mode=glib-client ' |   71       mode_flag = '--mode=glib-client ' | 
|   72     cmd = '/usr/bin/dbus-binding-tool %s --prefix=update_engine_service ' \ |   72     cmd = '/usr/bin/dbus-binding-tool %s --prefix=update_engine_service ' \ | 
|   73           '%s > %s' % (mode_flag, str(source[0]), str(target_file)) |   73           '%s > %s' % (mode_flag, str(source[0]), str(target_file)) | 
|   74     commands.append(cmd) |   74     commands.append(cmd) | 
|   75   return commands |   75   return commands | 
|   76  |   76  | 
|   77 dbus_bindings_builder = Builder(generator = DbusBindingsGenerator, |   77 dbus_bindings_builder = Builder(generator = DbusBindingsGenerator, | 
|   78                                 emitter = DbusBindingsEmitter, |   78                                 emitter = DbusBindingsEmitter, | 
|   79                                 single_source = 1, |   79                                 single_source = 1, | 
|   80                                 suffix = 'dbusclient.h') |   80                                 suffix = 'dbusclient.h') | 
|   81  |   81  | 
 |   82 def GlibMarshalEmitter(target, source, env): | 
 |   83   """ Inputs: | 
 |   84           target: unused | 
 |   85           source: list containing the source .list file | 
 |   86           env: the scons environment in which we are compiling | 
 |   87       Outputs: | 
 |   88           target: the list of targets we'll emit | 
 |   89           source: the list of sources we'll process""" | 
 |   90   output = str(source[0]) | 
 |   91   output = output[0:output.rfind('.list')] | 
 |   92   target = [ | 
 |   93     output + '.glibmarshal.c', | 
 |   94     output + '.glibmarshal.h' | 
 |   95   ] | 
 |   96   return target, source | 
 |   97  | 
 |   98 def GlibMarshalGenerator(source, target, env, for_signature): | 
 |   99   """ Inputs: | 
 |  100           source: list of sources to process | 
 |  101           target: list of targets to generate | 
 |  102           env: scons environment in which we are working | 
 |  103           for_signature: unused | 
 |  104       Outputs: a list of commands to execute to generate the targets from | 
 |  105                the sources.""" | 
 |  106   commands = [] | 
 |  107   for target_file in target: | 
 |  108     if str(target_file).endswith('.glibmarshal.h'): | 
 |  109       mode_flag = '--header ' | 
 |  110     else: | 
 |  111       mode_flag = '--body ' | 
 |  112     cmd = '/usr/bin/glib-genmarshal %s --prefix=update_engine ' \ | 
 |  113           '%s > %s' % (mode_flag, str(source[0]), str(target_file)) | 
 |  114     commands.append(cmd) | 
 |  115   return commands | 
 |  116  | 
 |  117 glib_marshal_builder = Builder(generator = GlibMarshalGenerator, | 
 |  118                                emitter = GlibMarshalEmitter, | 
 |  119                                single_source = 1, | 
 |  120                                suffix = 'glibmarshal.c') | 
 |  121  | 
|   82 env = Environment() |  122 env = Environment() | 
|   83 for key in Split('CC CXX AR RANLIB LD NM'): |  123 for key in Split('CC CXX AR RANLIB LD NM'): | 
|   84   value = os.environ.get(key) |  124   value = os.environ.get(key) | 
|   85   if value != None: |  125   if value != None: | 
|   86     env[key] = value |  126     env[key] = value | 
|   87 for key in Split('CFLAGS CCFLAGS CPPPATH LIBPATH'): |  127 for key in Split('CFLAGS CCFLAGS CPPPATH LIBPATH'): | 
|   88   value = os.environ.get(key) |  128   value = os.environ.get(key) | 
|   89   if value != None: |  129   if value != None: | 
|   90     env[key] = Split(value) |  130     env[key] = Split(value) | 
|   91  |  131  | 
| (...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  124                        libpcrecpp |  164                        libpcrecpp | 
|  125                        protobuf |  165                        protobuf | 
|  126                        pthread |  166                        pthread | 
|  127                        ssl |  167                        ssl | 
|  128                        xml2 |  168                        xml2 | 
|  129                        z""") |  169                        z""") | 
|  130 env['CPPPATH'] = ['..', '../../third_party/chrome/files', '../../common'] |  170 env['CPPPATH'] = ['..', '../../third_party/chrome/files', '../../common'] | 
|  131 env['LIBPATH'] = ['../../third_party/chrome'] |  171 env['LIBPATH'] = ['../../third_party/chrome'] | 
|  132 env['BUILDERS']['ProtocolBuffer'] = proto_builder |  172 env['BUILDERS']['ProtocolBuffer'] = proto_builder | 
|  133 env['BUILDERS']['DbusBindings'] = dbus_bindings_builder |  173 env['BUILDERS']['DbusBindings'] = dbus_bindings_builder | 
 |  174 env['BUILDERS']['GlibMarshal'] = glib_marshal_builder | 
|  134  |  175  | 
|  135 # Fix issue with scons not passing pkg-config vars through the environment. |  176 # Fix issue with scons not passing pkg-config vars through the environment. | 
|  136 for key in Split('PKG_CONFIG_LIBDIR PKG_CONFIG_PATH'): |  177 for key in Split('PKG_CONFIG_LIBDIR PKG_CONFIG_PATH'): | 
|  137   if os.environ.has_key(key): |  178   if os.environ.has_key(key): | 
|  138     env['ENV'][key] = os.environ[key] |  179     env['ENV'][key] = os.environ[key] | 
|  139  |  180  | 
|  140 env.ParseConfig('pkg-config --cflags --libs ' |  181 env.ParseConfig('pkg-config --cflags --libs ' | 
|  141                 'dbus-1 dbus-glib-1 gio-2.0 gio-unix-2.0 glib-2.0') |  182                 'dbus-1 dbus-glib-1 gio-2.0 gio-unix-2.0 glib-2.0') | 
|  142 env.ProtocolBuffer('update_metadata.pb.cc', 'update_metadata.proto') |  183 env.ProtocolBuffer('update_metadata.pb.cc', 'update_metadata.proto') | 
|  143  |  184  | 
|  144 env.DbusBindings('update_engine.dbusclient.h', 'update_engine.xml') |  185 env.DbusBindings('update_engine.dbusclient.h', 'update_engine.xml') | 
|  145  |  186  | 
 |  187 env.GlibMarshal('marshal.glibmarshal.c', 'marshal.list') | 
 |  188  | 
|  146 if ARGUMENTS.get('debug', 0): |  189 if ARGUMENTS.get('debug', 0): | 
|  147   env['CCFLAGS'] += ' -fprofile-arcs -ftest-coverage' |  190   env['CCFLAGS'] += ' -fprofile-arcs -ftest-coverage' | 
|  148   env['LIBS'] += ['bz2', 'gcov'] |  191   env['LIBS'] += ['bz2', 'gcov'] | 
|  149  |  192  | 
|  150 sources = Split("""action_processor.cc |  193 sources = Split("""action_processor.cc | 
|  151                    bzip.cc |  194                    bzip.cc | 
|  152                    bzip_extent_writer.cc |  195                    bzip_extent_writer.cc | 
|  153                    cycle_breaker.cc |  196                    cycle_breaker.cc | 
|  154                    dbus_service.cc |  197                    dbus_service.cc | 
|  155                    decompressing_file_writer.cc |  198                    decompressing_file_writer.cc | 
|  156                    delta_diff_generator.cc |  199                    delta_diff_generator.cc | 
|  157                    delta_performer.cc |  200                    delta_performer.cc | 
|  158                    download_action.cc |  201                    download_action.cc | 
|  159                    extent_mapper.cc |  202                    extent_mapper.cc | 
|  160                    extent_writer.cc |  203                    extent_writer.cc | 
|  161                    filesystem_copier_action.cc |  204                    filesystem_copier_action.cc | 
|  162                    filesystem_iterator.cc |  205                    filesystem_iterator.cc | 
|  163                    file_writer.cc |  206                    file_writer.cc | 
|  164                    graph_utils.cc |  207                    graph_utils.cc | 
|  165                    gzip.cc |  208                    gzip.cc | 
|  166                    libcurl_http_fetcher.cc |  209                    libcurl_http_fetcher.cc | 
 |  210                    marshal.glibmarshal.c | 
|  167                    omaha_hash_calculator.cc |  211                    omaha_hash_calculator.cc | 
|  168                    omaha_request_prep_action.cc |  212                    omaha_request_prep_action.cc | 
|  169                    omaha_response_handler_action.cc |  213                    omaha_response_handler_action.cc | 
|  170                    postinstall_runner_action.cc |  214                    postinstall_runner_action.cc | 
|  171                    set_bootable_flag_action.cc |  215                    set_bootable_flag_action.cc | 
|  172                    split_file_writer.cc |  216                    split_file_writer.cc | 
|  173                    subprocess.cc |  217                    subprocess.cc | 
|  174                    tarjan.cc |  218                    tarjan.cc | 
|  175                    topological_sort.cc |  219                    topological_sort.cc | 
|  176                    update_attempter.cc |  220                    update_attempter.cc | 
| (...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  227                                   delta_generator_main) |  271                                   delta_generator_main) | 
|  228  |  272  | 
|  229 http_server_cmd = env.Program('test_http_server', 'test_http_server.cc') |  273 http_server_cmd = env.Program('test_http_server', 'test_http_server.cc') | 
|  230  |  274  | 
|  231 unittest_env = env.Clone() |  275 unittest_env = env.Clone() | 
|  232 unittest_env.Append(LIBS=['gtest']) |  276 unittest_env.Append(LIBS=['gtest']) | 
|  233 unittest_cmd = unittest_env.Program('update_engine_unittests', |  277 unittest_cmd = unittest_env.Program('update_engine_unittests', | 
|  234                            unittest_sources + unittest_main) |  278                            unittest_sources + unittest_main) | 
|  235 Clean(unittest_cmd, Glob('*.gcda') + Glob('*.gcno') + Glob('*.gcov') + |  279 Clean(unittest_cmd, Glob('*.gcda') + Glob('*.gcno') + Glob('*.gcov') + | 
|  236                     Split('html app.info')) |  280                     Split('html app.info')) | 
| OLD | NEW |