summaryrefslogtreecommitdiff
path: root/tools/resolver-visualize
AgeCommit message (Collapse)AuthorFilesLines
2009-04-13If a promotion was backpropagated to a step more than once, suppress all but ↵Daniel Burrows2-17/+65
one of the prropagations.
2009-04-13Detect when the same solution is visited twice, and backpropagate ↵Daniel Burrows1-1/+1
information from it to *all* of its parents.
2009-04-12Better logging of everything related to backpropagation.Daniel Burrows1-1/+1
One of the log messages I chose conflicts with the "processing" line emitted at the start of a search step, so I had to tweak the regular expression the log parser uses to recognize search steps.
2009-04-12Add support for "dependency-scoped" install-version choices, which match the ↵Daniel Burrows6-39/+56
same install as long as it was done for the same dependency, and use them to inject promotions related to approval user constraints. Approvals are violated by search steps that choose a different solution to a dependency than the approved one. So to represent these in the condition of a promotion, we have to be able to match installing a particular version *but only if the install was for a particular dep*. In other words, install_version choices now have four levels of specificity: (no dep) -> (unscoped) -> (dep-scoped) -> (from-dep-source) Choices with no dep "contain" any other choice that installs the same version, and so do choices that are unscoped (but have a dep). Choices that are dep-scoped "contain" choices that have the same dep (so no-dep choices are out, but some unscoped choices can match). Choices in the from-dep-source category "contain" choices that have the same dep and that are also from-dep-source. This commit adds the code necessary to represent these extra types of choices, to manipulate them in the resolver, and to parse them in the log analyzer. It also uses these new abilities to generate promotions to the "defer" tier when successors violate a user constraint.
2009-04-12Show *all* backpropagated constraints, marking already-seen ones with dashed ↵Daniel Burrows2-19/+22
lines. This should make it a bit clearer what's happening in complicated search trees.
2009-04-12Another improvement to the label that gets shown for large promotions.Daniel Burrows1-1/+1
2009-04-12Better rendering of large promotions.Daniel Burrows1-1/+1
2009-04-09Treat "found solution" lines as the beginning of a step, so all the ↵Daniel Burrows1-2/+2
solutions are marked in the output graph.
2009-04-08Always display the structural edges to backpropagations, instead of hiding ↵Daniel Burrows1-5/+6
them if there weren't any normal propagations.
2009-04-08Finish adding clouds for parent nodes that were excluded from the diagram.Daniel Burrows1-13/+29
2009-04-08Don't make newly generated backpropagations strict in their step parameter.Daniel Burrows1-2/+2
This led to an infinite loop if there were any backpropagations (since the step parameter closes a cycle).
2009-04-08Add some more strictness where the program should be stricter.Daniel Burrows1-1/+2
2009-04-08The other half of the fix for detecting forced dependencies in the new log ↵Daniel Burrows1-2/+2
format.
2009-04-08Be more strict when generated backpropagations.Daniel Burrows1-1/+4
2009-04-08Fix recognizing forced dependency lines with the new log format.Daniel Burrows1-1/+1
2009-04-08Fix a wrong comment.Daniel Burrows1-1/+1
2009-04-07Fix the regex that matches the start of a backpropagation sequence.Daniel Burrows1-1/+1
2009-04-07If parts of the graph have been cut off, show missing parents of nodes as ↵Daniel Burrows1-2/+19
clouds.
2009-04-07Add support for parsing and rendering backpropagations.Daniel Burrows2-11/+125
Currently this is turned on whenever promotions are being shown. It's not 100% clear to me that it actually works.
2009-04-05Build a tree of resolver steps as the resolver runs.Daniel Burrows1-6/+6
This is in preparation for backpropagating conflict/promotion information, and in fact much of the code for that is already implemented in this commit (just not activated yet). I decided to use integer references into a deque to keep things a little more compact instead of having a huge number of structures on the heap: the resolver is already memory-hungry enough, no need to make things even worse.
2009-04-05Tweak how tiers are written, to be a bit more readable.Daniel Burrows1-3/+4
2009-04-05Try to speed up reading files a bit by using a hash table to store the ↵Daniel Burrows2-15/+104
already-seen promotions. This didn't actually make anything faster on my test cases -- maybe this isn't actually the bottleneck? Anyway, this should make the code perform better in the face of large numbers of promotions.
2009-04-05Add support for displaying when promotions are added in the graph rendering ↵Daniel Burrows5-7/+61
of a search trace.
2009-04-05Use extra outlining to highlight solutions.Daniel Burrows1-0/+2
2009-04-05Record which promotions have been previously seen in the current run, and ↵Daniel Burrows1-29/+66
only attach new promotions to output steps. To do this, I had to split the runs during the parse rather than in a post-processing step; otherwise the seen-promotions set would have carried over. (I could have just reset a few state variables, but this is cleaner anyway) Ideally I would actually track whether a promotion was redundant and only show non-redundant ones, but that takes a lot more code.
2009-04-05Show user-friendly names for the top and bottom tiers.Daniel Burrows1-10/+16
2009-04-05Optimize comparing solutions by explicitly stating the order in which ↵Daniel Burrows1-1/+24
comparisons are to be performed.
2009-04-05Represent forced edges with two parallel lines instead of changing the color ↵Daniel Burrows1-3/+3
and making them bold. This shows up much better on black&white printers, and it's what I wanted to do when it was clear that bolding was too little; I hadn't figured out how to do it until now.
2009-04-05Fix how forced edges are processed.Daniel Burrows1-28/+52
Sometimes several edges are forced before the resolver outputs a new Processing line; they were all being linked as successors to the starting solution, when in fact they represent a *sequence* of steps.
2009-04-04Display dep, choice, and parent information in the chronological view, and ↵Daniel Burrows2-14/+73
display dep information in the tree view.
2009-04-04Fix support for showing a graph starting at a particular step.Daniel Burrows1-1/+1
2009-04-04Highlight forced dependency resolutions.Daniel Burrows1-2/+9
These can, by design, force the search down in score or even to a higher tier, so some apparent anomalies make more sense when the forced steps are indicated. Currently they're bolded and (because that's not very visible) also displayed in green.
2009-04-04Split out a bunch of code from the main function, particularly the code to ↵Daniel Burrows6-145/+190
render .dot files, and also overhaul the Dot interface to allow a more streamlined renderer. The changes to Dot alter how attributes are defined: attribute operations are now represented explicitly, and have their own mini-language with functions to create attributes and operators to apply them to objects or combine them. The main motivation for this is the new combinator `thenDo`, which takes a Boolean value and an operation, returning a new operation that does nothing if the Boolean is "false" and is equivalent to the operation is the Boolean is "true".
2009-04-04Display the name of the loaded file in a status bar and in the window title.Daniel Burrows3-6/+89
Should save time hunting around to figure out which file is which in the future.
2009-04-03Add support for exporting a .dot file at runtime.Daniel Burrows2-3/+316
2009-04-03Display the first step of each pruned branch.Daniel Burrows1-1/+1
2009-04-03Add dotted edges that follow the order of the search rather than the hierarchy.Daniel Burrows1-2/+11
2009-04-03Let the user set the target output format (defaults to PS; used to select ↵Daniel Burrows1-3/+27
the format of images that are inserted into the dot graph).
2009-04-03Fill in solutions using light gray.Daniel Burrows1-13/+20
2009-04-03Add support for generating dot renders of a (portion of) a resolver run.Daniel Burrows4-4/+208
2009-04-03Write an extra convenience operator for adding attributes, and export all ↵Daniel Burrows1-1/+6
the convenience operators.
2009-04-03Fix a silly typo in a function declaration.Daniel Burrows1-1/+1
2009-04-03Don't doubly quote byte-strings that are attribute values.Daniel Burrows1-2/+2
2009-04-03Add a convenience routine to make an attributeless digraph.Daniel Burrows1-1/+6
2009-04-02Add --max-steps and --first-step options to the visualizer that can be used ↵Daniel Burrows1-84/+161
to select the steps to display. The whole file is always loaded, so we can display stats about how many nodes we aren't displaying; this is just a UI tweak, to filter excessive information, and not an optimization. TODO: add options to root the tree at a given node, and to actually drop / skip nodes entirely.
2009-04-02Add a module to the resolver visualizer that will be used to make it easier ↵Daniel Burrows1-0/+134
to generate Dot renderings of the resolution process.
2009-03-29Make tiers be tuples of integers (lexicographically ordered) instead of ↵Daniel Burrows2-17/+40
plain integers. This allows us to classify solutions in a more fine-grained way. In particular, it provides a not-horrible way to integrate apt pin priorities into the resolver's decisions, by making them a subordinate level of ranking to the main tiering system. The current plan is that the first level of tiering is the only one the user sees (by default) and the only one that can be directly configured. The subordinate levels are filled in automatically (pin priorities are all I have in mind now, but I don't discount the possibility of introducing more levels in the future).
2009-03-26Make the log parser strict in the parse state, just to be safe.Daniel Burrows1-1/+1
2009-03-23Log soft dependencies as "A -S> B" and parse them in the visualizer.Daniel Burrows4-10/+15
2009-03-23Do the legwork necessary to intern strings and structures that were parsed ↵Daniel Burrows2-21/+184
from the log file. This drastically cuts down on the memory usage of the viewer, and provides a nice speed boost too. Loading larger log files will be practical now. It would be nice if we could use a hashtable for the strings, but how to do that? Probably too much work for a little tool like this.