code: def __set_target_variables_aux (manager, rule_or_module, ps):
      
      assert isinstance(rule_or_module, basestring)
      assert isinstance(ps, property_set.PropertySet)
      result = []
  
      for f in __flags.get(rule_or_module, []):
  
          if not f.condition or find_satisfied_condition (f.condition, ps):
              processed = []
              for v in f.values:
                  # The value might be <feature-name> so needs special
                  # treatment.
                  processed += __handle_flag_value (manager, v, ps)
  
              for r in processed:
                  result.append ((f.variable_name, r))
  
      # strip away last dot separated part and recurse.
      next = __re_split_last_segment.match(rule_or_module)
  
      if next:
          result.extend(__set_target_variables_aux(
              manager, next.group(1), ps))
  
      return result
docs: Given a rule name and a property set, returns a list of tuples of
          variables names and values, which must be set on targets for that
          rule/properties combination.