First Last Prev Next    No search results available      Search page      Enter new bug
Bug#: 275217
Alias:
Product:
Component:
Status: RESOLVED
Resolution: FIXED
Assigned To: Portage team <dev-portage@gentoo.org>
Hardware:
OS:
Version:
Priority:
Severity:
Reporter: Sebastian Mingramm (few) <s.mingramm@gmx.de>
Add CC:
CC:
URL:
Summary:
Status Whiteboard:
Keywords:

Filename Description Type Creator Created Size Actions
part1.patch resolve the circular dep between Scheduler and depgraph; mark all functions as local that aren't used outside of depgraph patch Sebastian Mingramm (few) 2009-06-23 19:57 0000 3.80 KB Details | Diff
part2.patch move changelog stuff stuff out of depgraph (needs changelog.py) patch Sebastian Mingramm (few) 2009-06-23 20:17 0000 2.61 KB Details | Diff
changelog.py changelog.py for part2 patch Sebastian Mingramm (few) 2009-06-23 20:17 0000 1.74 KB Details | Diff
depgraph-split-select_files.patch splits depgraph.select_files into select_files and _resolve patch Sebastian Mingramm (few) 2009-06-24 11:38 0000 1.73 KB Details | Diff
portage-_emerge-depgraph-move-memeber-vars-into-config-classes.patch Move all memeber variables of _emerge.depgraph into frozen_config or dynamic_config. patch Sebastian Mingramm (few) 2009-06-30 21:49 0000 92.96 KB Details | Diff
portage-emerge-backtrack-on-slot-collision.patch Make emerge mask the first package pulled into the tree in case of a slot conflict and restart the dependency calculation patch Sebastian Mingramm (few) 2009-07-03 21:32 0000 5.72 KB Details | Diff
Create a New Attachment (proposed patch, testcase, etc.) View All

Bug 275217 depends on: Show dependency tree
Bug 275217 blocks: 210077 288499
Votes: 0    Show votes for this bug    Vote for this bug

Additional Comments: (this is where you put emerge --info)


Not eligible to see or edit group visibility for this bug.






View Bug Activity   |   Format For Printing   |   XML   |   Clone This Bug


Description:   Opened: 2009-06-23 19:56 0000
Another tale in the quest for a easier to follow portage code.

------- Comment #1 From Sebastian Mingramm (few) 2009-06-23 19:57:40 0000 -------
Created an attachment (id=195594) [details]
resolve the circular dep between Scheduler and depgraph; mark all functions as
local that aren't used outside of depgraph

------- Comment #2 From Sebastian Mingramm (few) 2009-06-23 20:17:06 0000 -------
Created an attachment (id=195595) [details]
move changelog stuff stuff out of depgraph (needs changelog.py)

------- Comment #3 From Sebastian Mingramm (few) 2009-06-23 20:17:33 0000 -------
Created an attachment (id=195597) [details]
changelog.py for part2

------- Comment #4 From Zac Medico 2009-06-23 20:45:14 0000 -------
(In reply to comment #1)
> Created an attachment (id=195594) [edit] [details]
> resolve the circular dep between Scheduler and depgraph; mark all functions as
> local that aren't used outside of depgraph

Thanks, this is in svn r13676.

(In reply to comment #2)
> Created an attachment (id=195595) [edit] [details]
> move changelog stuff stuff out of depgraph (needs changelog.py)

Thanks, this is in svn r13677.

------- Comment #5 From Sebastian Mingramm (few) 2009-06-24 11:38:00 0000 -------
Created an attachment (id=195653) [details]
splits depgraph.select_files into select_files and _resolve

In the long term all decision making shall be made in _resolve. select_files
converts its input to args and _resolve uses the args to pull in the root nodes
now.

------- Comment #6 From Zac Medico 2009-06-24 21:08:15 0000 -------
(In reply to comment #5)
> Created an attachment (id=195653) [edit] [details]
> splits depgraph.select_files into select_files and _resolve

Thanks, this is in svn r13685.

------- Comment #7 From Sebastian Mingramm (few) 2009-06-30 21:49:54 0000 -------
Created an attachment (id=196212) [details]
Move all memeber variables of _emerge.depgraph into frozen_config or
dynamic_config.

This patch creates two classes in _emerge/depgraph.py: _frozen_depgraph_config
and _dynamic_depgraph_config. They are supposed to hold all member variables of
_emerge.depgraph. Those that may change after initialization belong to
_dynamic_depgraph_config, others to _frozen_depgraph_config. depgraph itself
holds only instances of these two classes.

------- Comment #8 From Zac Medico 2009-06-30 22:06:46 0000 -------
(In reply to comment #7)
> Created an attachment (id=196212) [edit] [details]
> Move all memeber variables of _emerge.depgraph into frozen_config or
> dynamic_config.

Thanks, this is in svn r13747.

------- Comment #9 From Sebastian Mingramm (few) 2009-07-01 19:28:27 0000 -------
Just for reference:

What is left? 
1) Write wrapper functions for _dynamic_config to track changes to it.
2) Write a function that searches the point where offending packages were
selected and reverts the dynamic_config to this point.
3) Write a function that figures out what to mask if something goes wrong.
4) modify _resolve to be somehow state less, so we can simply restart from any
state.

------- Comment #10 From Zac Medico 2009-07-03 00:04:20 0000 -------
As discussed on irc, the simplest way implement backtracking (at least
initially) is to try saving choices from depgraph, and then creating a whole
new depgraph with slightly different choices. Right now I'm working on making
the depgraph constructor take a _frozen_depgraph_config instance as a
parameter, so that we can use a single instance for each depgraph we create.

------- Comment #11 From Zac Medico 2009-07-03 01:33:08 0000 -------
(In reply to comment #10)
> Right now I'm working on making
> the depgraph constructor take a _frozen_depgraph_config instance as a
> parameter, so that we can use a single instance for each depgraph we create.

This is done in svn r13760, and it's used to optimize resume_depgraph() in
r13761.

------- Comment #12 From Zac Medico 2009-07-03 03:35:11 0000 -------
I looked at your backtracking patch with the _pref_list_lookup() function and I
think that it would be better to use an approach similar to the one used to
solve bug #253904, in which _dep_check_composite_db._visible() is used to
influence the behavior of dep_zapdeps(). When a package is masked by
_dep_check_composite_db._visible(), it appears to dep_zapdeps() that the
package is unavailable, and so any choice which pulls in that package will be
avoided.

------- Comment #13 From Sebastian Mingramm (few) 2009-07-03 21:32:58 0000 -------
Created an attachment (id=196543) [details]
Make emerge mask the first package pulled into the tree in case of a slot
conflict and restart the dependency calculation

------- Comment #14 From Zac Medico 2009-07-04 05:34:48 0000 -------
(In reply to comment #13)
> Created an attachment (id=196543) [edit] [details]
> Make emerge mask the first package pulled into the tree in case of a slot
> conflict and restart the dependency calculation

Thanks, that's in svn r13769. I added some additional features:

 * display message about missed updates
 * cache frozen_config instance, to optimize performance
 * disable backtracking if it fails, fall back to a normal

------- Comment #15 From Zac Medico 2009-08-03 23:08:53 0000 -------
This is fixed in 2.2_rc34.

------- Comment #16 From Zac Medico 2009-08-05 20:40:20 0000 -------
Reopening until this is an unmasked release.

------- Comment #17 From Zac Medico 2009-10-11 00:49:26 0000 -------
This is fixed in 2.1.7.

First Last Prev Next    No search results available      Search page      Enter new bug