Beispiel #1
0
 def _get_name(module):
     # Always use the frame of the current module, though.
     if craftr.module() != module:
         raise RuntimeError('target name deduction only available when '
                            'used from the currently executed module')
     return magic.get_assigned_name(
         magic.get_module_frame(module, allow_local=False))
Beispiel #2
0
 def __init__(self, inputs, frameworks, kwargs, meta=None,
     module=None, name=None, stacklevel=1):
   if meta is None:
     meta = {}
   if not isinstance(meta, dict):
     raise TypeError('meta must be a dictionary')
   self.meta = meta
   self.caller = magic.get_caller(stacklevel + 1)
   frameworks = list(frameworks)
   self.inputs = expand_inputs(inputs, frameworks)
   self.frameworks = expand_frameworks(frameworks)
   self.kwargs = kwargs
   self.options = FrameworkJoin(Framework(self.caller, kwargs), *self.frameworks)
   self.module = module or craftr.module()
   self.name = name
   self.target_attrs = {}
   if not self.name:
     try:
       self.name = Target._get_name(self.module)
     except ValueError:
       index = 0
       while True:
         name = '{0}_{1:0>4}'.format(self.caller, index)
         if self.module.project_name + '.' + name not in session.targets:
           break
         index += 1
       self.name = name
Beispiel #3
0
 def __init__(self,
              inputs,
              frameworks,
              kwargs,
              meta=None,
              module=None,
              name=None,
              stacklevel=1):
     if meta is None:
         meta = {}
     if not isinstance(meta, dict):
         raise TypeError('meta must be a dictionary')
     self.meta = meta
     self.caller = magic.get_caller(stacklevel + 1)
     frameworks = list(frameworks)
     self.inputs = expand_inputs(inputs, frameworks)
     self.frameworks = expand_frameworks(frameworks)
     self.kwargs = kwargs
     self.options = FrameworkJoin(Framework(self.caller, kwargs),
                                  *self.frameworks)
     self.module = module or craftr.module()
     self.name = name
     self.target_attrs = {}
     if not self.name:
         try:
             self.name = Target._get_name(self.module)
         except ValueError:
             index = 0
             while True:
                 name = '{0}_{1:0>4}'.format(self.caller, index)
                 if self.module.project_name + '.' + name not in session.targets:
                     break
                 index += 1
             self.name = name
Beispiel #4
0
    def __init__(self,
                 command,
                 inputs=None,
                 outputs=None,
                 implicit_deps=None,
                 order_only_deps=None,
                 requires=None,
                 foreach=False,
                 description=None,
                 pool=None,
                 var=None,
                 deps=None,
                 depfile=None,
                 msvc_deps_prefix=None,
                 explicit=False,
                 frameworks=None,
                 meta=None,
                 module=None,
                 name=None):

        if callable(command):
            # This target will be a task, alias RTS target.
            if not name:
                name = command.__name__
            if not description:
                description = command.__doc__
        elif isinstance(command, str):
            command = shell.split(command)
        else:
            command = _check_list_of_str('command', command)
        if not command:
            raise ValueError('command can not be empty')

        if not module and craftr.module:
            module = craftr.module()
        if not name:
            name = Target._get_name(module)

        if requires is not None:
            if isinstance(requires, Target):
                requires = [requires]
            else:
                requires = list(requires)
                for obj in requires:
                    if not isinstance(obj, Target):
                        raise TypeError(
                            'requires must contain only Target objects')

        def _expand(x, name):
            if x is None: return None
            if isinstance(x, str):
                x = [x]
            x = expand_inputs(x)
            x = _check_list_of_str(name, x)
            return x

        inputs = _expand(inputs, 'inputs')
        outputs = _expand(outputs, 'outputs')
        implicit_deps = _expand(implicit_deps, 'implicit_deps')
        order_only_deps = _expand(order_only_deps, 'order_only_deps')

        if foreach and len(inputs) != len(outputs):
            raise ValueError(
                'len(inputs) must match len(outputs) in foreach Target')

        if meta is None:
            meta = {}
        if not isinstance(meta, dict):
            raise TypeError('meta must be a dictionary')

        self.module = module
        self.name = name

        self.rts_func = None
        if callable(command):
            self.rts_func = command
            command = [RTS_COMMAND, self.fullname]

        self.command = command
        self.inputs = inputs
        self.outputs = outputs
        self.implicit_deps = implicit_deps or []
        self.order_only_deps = order_only_deps or []
        self.requires = requires or []
        self.foreach = foreach
        self.pool = pool
        self.description = description
        self.deps = deps
        self.depfile = depfile
        self.msvc_deps_prefix = msvc_deps_prefix
        self.frameworks = expand_frameworks(frameworks or [])
        self.explicit = explicit
        self.meta = meta
        self.graph = None

        if module:
            module.__session__.register_target(self)
Beispiel #5
0
 def __init__(self, module=None):
     self.module = module or craftr.module()
Beispiel #6
0
 def __init__(self, module=None):
   self.module = module or craftr.module()
Beispiel #7
0
 def _get_name(module):
   # Always use the frame of the current module, though.
   if craftr.module() != module:
     raise RuntimeError('target name deduction only available when '
       'used from the currently executed module')
   return magic.get_assigned_name(magic.get_module_frame(module, allow_local=False))
Beispiel #8
0
  def __init__(self, command, inputs=None, outputs=None, implicit_deps=None,
      order_only_deps=None, foreach=False, description=None, pool=None,
      var=None, deps=None, depfile=None, msvc_deps_prefix=None,
      explicit=False, frameworks=None, meta=None, module=None, name=None):

    if not module and craftr.module:
      module = craftr.module()
    if not name:
      name = Target._get_name(module)

    if isinstance(command, str):
      command = shell.split(command)
    else:
      command = _check_list_of_str('command', command)
    if not command:
      raise ValueError('command can not be empty')

    if inputs is not None:
      if isinstance(inputs, str):
        inputs = [inputs]
      inputs = expand_inputs(inputs)
      inputs = _check_list_of_str('inputs', inputs)
    if outputs is not None:
      if isinstance(outputs, str):
        outputs = [outputs]
      elif callable(outputs):
        outputs = outputs(inputs)
      outputs = _check_list_of_str('outputs', outputs)

    if foreach and len(inputs) != len(outputs):
      raise ValueError('len(inputs) must match len(outputs) in foreach Target')

    if implicit_deps is not None:
      implicit_deps = _check_list_of_str('implicit_deps', implicit_deps)
    if order_only_deps is not None:
      order_only_deps = _check_list_of_str('order_only_deps', order_only_deps)

    if meta is None:
      meta = {}
    if not isinstance(meta, dict):
      raise TypeError('meta must be a dictionary')

    self.module = module
    self.name = name
    self.command = command
    self.inputs = inputs
    self.outputs = outputs
    self.implicit_deps = implicit_deps or []
    self.order_only_deps = order_only_deps or []
    self.foreach = foreach
    self.pool = pool
    self.description = description
    self.deps = deps
    self.depfile = depfile
    self.msvc_deps_prefix = msvc_deps_prefix
    self.frameworks = expand_frameworks(frameworks or [])
    self.explicit = explicit
    self.meta = meta

    if module:
      targets = module.__session__.targets
      if self.fullname in targets:
        raise ValueError('target {0!r} already exists'.format(self.fullname))
      targets[self.fullname] = self
Beispiel #9
0
    def __init__(self,
                 command,
                 inputs=None,
                 outputs=None,
                 implicit_deps=None,
                 order_only_deps=None,
                 foreach=False,
                 description=None,
                 pool=None,
                 var=None,
                 deps=None,
                 depfile=None,
                 msvc_deps_prefix=None,
                 explicit=False,
                 frameworks=None,
                 meta=None,
                 module=None,
                 name=None):

        if not module and craftr.module:
            module = craftr.module()
        if not name:
            name = Target._get_name(module)

        if isinstance(command, str):
            command = shell.split(command)
        else:
            command = _check_list_of_str('command', command)
        if not command:
            raise ValueError('command can not be empty')

        if inputs is not None:
            if isinstance(inputs, str):
                inputs = [inputs]
            inputs = expand_inputs(inputs)
            inputs = _check_list_of_str('inputs', inputs)
        if outputs is not None:
            if isinstance(outputs, str):
                outputs = [outputs]
            elif callable(outputs):
                outputs = outputs(inputs)
            outputs = _check_list_of_str('outputs', outputs)

        if foreach and len(inputs) != len(outputs):
            raise ValueError(
                'len(inputs) must match len(outputs) in foreach Target')

        if implicit_deps is not None:
            implicit_deps = _check_list_of_str('implicit_deps', implicit_deps)
        if order_only_deps is not None:
            order_only_deps = _check_list_of_str('order_only_deps',
                                                 order_only_deps)

        if meta is None:
            meta = {}
        if not isinstance(meta, dict):
            raise TypeError('meta must be a dictionary')

        self.module = module
        self.name = name
        self.command = command
        self.inputs = inputs
        self.outputs = outputs
        self.implicit_deps = implicit_deps or []
        self.order_only_deps = order_only_deps or []
        self.foreach = foreach
        self.pool = pool
        self.description = description
        self.deps = deps
        self.depfile = depfile
        self.msvc_deps_prefix = msvc_deps_prefix
        self.frameworks = expand_frameworks(frameworks or [])
        self.explicit = explicit
        self.meta = meta

        if module:
            targets = module.__session__.targets
            if self.fullname in targets:
                raise ValueError('target {0!r} already exists'.format(
                    self.fullname))
            targets[self.fullname] = self
Beispiel #10
0
  def __init__(self, command, inputs=None, outputs=None, implicit_deps=None,
      order_only_deps=None, requires=None, foreach=False, description=None,
      pool=None, var=None, deps=None, depfile=None, msvc_deps_prefix=None,
      explicit=False, frameworks=None, meta=None, module=None, name=None):

    if callable(command):
      # This target will be a task, alias RTS target.
      if not name:
        name = command.__name__
      if not description:
        description = command.__doc__
    elif isinstance(command, str):
      command = shell.split(command)
    else:
      command = _check_list_of_str('command', command)
    if not command:
      raise ValueError('command can not be empty')

    if not module and craftr.module:
      module = craftr.module()
    if not name:
      name = Target._get_name(module)

    if requires is not None:
      if isinstance(requires, Target):
        requires = [requires]
      else:
        requires = list(requires)
        for obj in requires:
          if not isinstance(obj, Target):
            raise TypeError('requires must contain only Target objects')

    def _expand(x, name):
      if x is None: return None
      if isinstance(x, str):
        x = [x]
      x = expand_inputs(x)
      x = _check_list_of_str(name, x)
      return x

    inputs = _expand(inputs, 'inputs')
    outputs = _expand(outputs, 'outputs')
    implicit_deps = _expand(implicit_deps, 'implicit_deps')
    order_only_deps = _expand(order_only_deps, 'order_only_deps')

    if foreach and len(inputs) != len(outputs):
      raise ValueError('len(inputs) must match len(outputs) in foreach Target')

    if meta is None:
      meta = {}
    if not isinstance(meta, dict):
      raise TypeError('meta must be a dictionary')

    self.module = module
    self.name = name

    self.rts_func = None
    if callable(command):
      self.rts_func = command
      command = [RTS_COMMAND, self.fullname]

    self.command = command
    self.inputs = inputs
    self.outputs = outputs
    self.implicit_deps = implicit_deps or []
    self.order_only_deps = order_only_deps or []
    self.requires = requires or []
    self.foreach = foreach
    self.pool = pool
    self.description = description
    self.deps = deps
    self.depfile = depfile
    self.msvc_deps_prefix = msvc_deps_prefix
    self.frameworks = expand_frameworks(frameworks or [])
    self.explicit = explicit
    self.meta = meta
    self.graph = None

    if module:
      module.__session__.register_target(self)