solver: rewrite backtracking and scoring system

* properly do absolute scoring now, the previous scoring where
  preference could get reduced could have caused incorrect early
  pruning of search tree

* backtracking is now separated from package state, and first
  branching point is the decision if a name is left unassigned
  or if something _has_ to be assigned. this allows multiple future
  search tree optimizations like handling of common dependencies
  early.

* merge common dependency names early to provide deeper forward
  checking.
cute-signatures
Timo Teräs 2012-02-18 11:54:17 +02:00
parent a9d526836e
commit 6ae573887d
2 changed files with 694 additions and 405 deletions

View File

@ -257,6 +257,11 @@ static inline int list_hashed(const struct list_head *n)
return n->next != n && n->next != NULL; return n->next != n && n->next != NULL;
} }
static inline int list_empty(const struct list_head *n)
{
return n->next == n;
}
#define list_entry(ptr, type, member) container_of(ptr,type,member) #define list_entry(ptr, type, member) container_of(ptr,type,member)
#define list_for_each(pos, head) \ #define list_for_each(pos, head) \

File diff suppressed because it is too large Load Diff