| # Copyright 1999-2013 Gentoo Foundation |
| # Distributed under the terms of the GNU General Public License v2 |
| |
| from _emerge.DepPriority import DepPriority |
| class DepPrioritySatisfiedRange(object): |
| """ |
| DepPriority Index Category |
| |
| not satisfied and buildtime HARD |
| not satisfied and runtime 7 MEDIUM |
| not satisfied and runtime_post 6 MEDIUM_SOFT |
| satisfied and buildtime_slot_op 5 SOFT |
| satisfied and buildtime 4 SOFT |
| satisfied and runtime 3 SOFT |
| satisfied and runtime_post 2 SOFT |
| optional 1 SOFT |
| (none of the above) 0 NONE |
| """ |
| MEDIUM = 7 |
| MEDIUM_SOFT = 6 |
| SOFT = 5 |
| NONE = 0 |
| |
| @classmethod |
| def _ignore_optional(cls, priority): |
| if priority.__class__ is not DepPriority: |
| return False |
| return bool(priority.optional) |
| |
| @classmethod |
| def _ignore_satisfied_runtime_post(cls, priority): |
| if priority.__class__ is not DepPriority: |
| return False |
| if priority.optional: |
| return True |
| if not priority.satisfied: |
| return False |
| return bool(priority.runtime_post) |
| |
| @classmethod |
| def _ignore_satisfied_runtime(cls, priority): |
| if priority.__class__ is not DepPriority: |
| return False |
| if priority.optional: |
| return True |
| if not priority.satisfied: |
| return False |
| return not priority.buildtime |
| |
| @classmethod |
| def _ignore_satisfied_buildtime(cls, priority): |
| if priority.__class__ is not DepPriority: |
| return False |
| if priority.optional: |
| return True |
| if priority.buildtime_slot_op: |
| return False |
| return bool(priority.satisfied) |
| |
| @classmethod |
| def _ignore_satisfied_buildtime_slot_op(cls, priority): |
| if priority.__class__ is not DepPriority: |
| return False |
| return bool(priority.optional or \ |
| priority.satisfied) |
| |
| @classmethod |
| def _ignore_runtime_post(cls, priority): |
| if priority.__class__ is not DepPriority: |
| return False |
| return bool(priority.optional or \ |
| priority.satisfied or \ |
| priority.runtime_post) |
| |
| @classmethod |
| def _ignore_runtime(cls, priority): |
| if priority.__class__ is not DepPriority: |
| return False |
| return bool(priority.satisfied or \ |
| priority.optional or \ |
| not priority.buildtime) |
| |
| ignore_medium = _ignore_runtime |
| ignore_medium_soft = _ignore_runtime_post |
| ignore_soft = _ignore_satisfied_buildtime |
| |
| |
| DepPrioritySatisfiedRange.ignore_priority = ( |
| None, |
| DepPrioritySatisfiedRange._ignore_optional, |
| DepPrioritySatisfiedRange._ignore_satisfied_runtime_post, |
| DepPrioritySatisfiedRange._ignore_satisfied_runtime, |
| DepPrioritySatisfiedRange._ignore_satisfied_buildtime, |
| DepPrioritySatisfiedRange._ignore_satisfied_buildtime_slot_op, |
| DepPrioritySatisfiedRange._ignore_runtime_post, |
| DepPrioritySatisfiedRange._ignore_runtime |
| ) |