code: def execute(self, target, source, env, executor=None):
          escape_list = SCons.Subst.escape_list
          flatten_sequence = SCons.Util.flatten_sequence
          try:
              shell = env['SHELL']
          except KeyError:
              raise SCons.Errors.UserError('Missing SHELL construction variable.')
          try:
              spawn = env['SPAWN']
          except KeyError:
              raise SCons.Errors.UserError('Missing SPAWN construction variable.')
          else:
              if is_String(spawn):
                  spawn = env.subst(spawn, raw=1, conv=lambda x: x)
          escape = env.get('ESCAPE', lambda x: x)
          ENV = get_default_ENV(env)
          for key, value in ENV.items():
              if not is_String(value):
                  if is_List(value):
                      value = flatten_sequence(value)
                      ENV[key] = os.pathsep.join(map(str, value))
                  else:
                      ENV[key] = str(value)
          if executor:
              target = executor.get_all_targets()
              source = executor.get_all_sources()
          cmd_list, ignore, silent = self.process(target, list(map(rfile, source)), env, executor)
          for cmd_line in filter(len, cmd_list):
              cmd_line = escape_list(cmd_line, escape)
              result = spawn(shell, escape, cmd_line[0], cmd_line, ENV)
              if not ignore and result:
                  msg = "Error %s" % result
                  return SCons.Errors.BuildError(errstr=msg,
                                                 status=result,
                                                 action=self,
                                                 command=cmd_line)
          return 0