code: def spawn(
      cmd, search_path=1, verbose=0, dry_run=0, env=None
  ):  # noqa: C901
      """Run another program, specified as a command list 'cmd', in a new process.
  
      'cmd' is just the argument list for the new process, ie.
      cmd[0] is the program to run and cmd[1:] are the rest of its arguments.
      There is no way to run a program with a name different from that of its
      executable.
  
      If 'search_path' is true (the default), the system's executable
      search path will be used to find the program; otherwise, cmd[0]
      must be the exact path to the executable.  If 'dry_run' is true,
      the command will not actually be run.
  
      Raise DistutilsExecError if running the program fails in any way; just
      return on success.
      """
      # cmd is documented as a list, but just in case some code passes a tuple
      # in, protect our %-formatting code against horrible death
      cmd = list(cmd)
  
      log.info(subprocess.list2cmdline(cmd))
      if dry_run:
          return
  
      if search_path:
          executable = find_executable(cmd[0])
          if executable is not None:
              cmd[0] = executable
  
      env = env if env is not None else dict(os.environ)
  
      if sys.platform == "darwin":
          from distutils.util import (
              MACOSX_VERSION_VAR,
              get_macosx_target_ver,
          )
  
          macosx_target_ver = get_macosx_target_ver()
          if macosx_target_ver:
              env[MACOSX_VERSION_VAR] = macosx_target_ver
  
      try:
          proc = subprocess.Popen(cmd, env=env)
          proc.wait()
          exitcode = proc.returncode
      except OSError as exc:
          if not DEBUG:
              cmd = cmd[0]
          raise DistutilsExecError(
              "command {!r} failed: {}".format(cmd, exc.args[-1])
          ) from exc
  
      if exitcode:
          if not DEBUG:
              cmd = cmd[0]
          raise DistutilsExecError(
              "command {!r} failed with exit code {}".format(
                  cmd, exitcode
              )
          )
  
file_path: catboost/contrib/python/setuptools/py3/setuptools/_distutils/spawn.py
imports: import sys
  import os
  import subprocess
  from .errors import DistutilsExecError
  from .debug import DEBUG
  from ._log import log
label_desc: Use image node_id 1 for calling a global function with example usage: spawn(cmd, search_path, verbose, dry_run, env) without return types