parameters: (self)
docstring: Called to execute the task.
  
          This method is called from multiple threads in a parallel build,
          so only do thread safe stuff here.  Do thread unsafe stuff in
          prepare(), executed() or failed().
docstring_summary: Called to execute the task.
docstring_tokens: Called to execute the task .
function: def execute(self):
          """
          Called to execute the task.
  
          This method is called from multiple threads in a parallel build,
          so only do thread safe stuff here.  Do thread unsafe stuff in
          prepare(), executed() or failed().
          """
          T = self.tm.trace
          if T: T.write(self.trace_message(u'Task.execute()', self.node))
  
          try:
              cached_targets = []
              for t in self.targets:
                  if not t.retrieve_from_cache():
                      break
                  cached_targets.append(t)
              if len(cached_targets) < len(self.targets):
                  # Remove targets before building. It's possible that we
                  # partially retrieved targets from the cache, leaving
                  # them in read-only mode. That might cause the command
                  # to fail.
                  #
                  for t in cached_targets:
                      try:
                          t.fs.unlink(t.get_internal_path())
                      except (IOError, OSError):
                          pass
                  self.targets[0].build()
              else:
                  for t in cached_targets:
                      t.cached = 1
          except SystemExit:
              exc_value = sys.exc_info()[1]
              raise SCons.Errors.ExplicitExit(self.targets[0], exc_value.code)
          except SCons.Errors.UserError:
              raise
          except SCons.Errors.BuildError:
              raise
          except Exception as e:
              buildError = SCons.Errors.convert_to_BuildError(e)
              buildError.node = self.targets[0]
              buildError.exc_info = sys.exc_info()
              raise buildError
function_tokens: def execute ( self ) : T = self . tm . trace if T : T . write ( self . trace_message ( u'Task.execute()' , self . node ) ) try : cached_targets = [ ] for t in self . targets : if not t . retrieve_from_cache ( ) : break cached_targets . append ( t ) if len ( cached_targets ) < len ( self . targets ) : # Remove targets before building. It's possible that we # partially retrieved targets from the cache, leaving # them in read-only mode. That might cause the command # to fail. # for t in cached_targets : try : t . fs . unlink ( t . get_internal_path ( ) ) except ( IOError , OSError ) : pass self . targets [ 0 ] . build ( ) else : for t in cached_targets : t . cached = 1 except SystemExit : exc_value = sys . exc_info ( ) [ 1 ] raise SCons . Errors . ExplicitExit ( self . targets [ 0 ] , exc_value . code ) except SCons . Errors . UserError : raise except SCons . Errors . BuildError : raise except Exception as e : buildError = SCons . Errors . convert_to_BuildError ( e ) buildError . node = self . targets [ 0 ] buildError . exc_info = sys . exc_info ( ) raise buildError