Gentoo Archives: gentoo-commits

From: "Fabian Groffen (grobian)" <grobian@g.o>
To: gentoo-commits@l.g.o
Subject: [gentoo-commits] portage r13713 - main/branches/prefix/pym/_emerge
Date: Sat, 27 Jun 2009 14:31:22
Message-Id: E1MKYw4-0002v4-6Y@stork.gentoo.org
1 Author: grobian
2 Date: 2009-06-27 14:31:19 +0000 (Sat, 27 Jun 2009)
3 New Revision: 13713
4
5 Added:
6 main/branches/prefix/pym/_emerge/changelog.py
7 Modified:
8 main/branches/prefix/pym/_emerge/Scheduler.py
9 main/branches/prefix/pym/_emerge/depgraph.py
10 Log:
11 Merged from trunk -r13675:13677
12
13 | 13676 | Bu #275217 - Part 1 - Resolve the circular dep between |
14 | zmedico | Scheduler and depgraph; mark all functions as local that |
15 | | aren't used outside of depgraph. Thanks to Sebastian |
16 | | Mingramm (few) <s.mingramm@×××.de> for this patch. |
17
18 | 13677 | Bug #275217 - Part 2 - Move changelog stuff stuff out of |
19 | zmedico | depgraph. Thanks to Sebastian Mingramm (few) |
20 | | <s.mingramm@×××.de> for this patch. |
21
22
23 Modified: main/branches/prefix/pym/_emerge/Scheduler.py
24 ===================================================================
25 --- main/branches/prefix/pym/_emerge/Scheduler.py 2009-06-27 14:28:34 UTC (rev 13712)
26 +++ main/branches/prefix/pym/_emerge/Scheduler.py 2009-06-27 14:31:19 UTC (rev 13713)
27 @@ -29,6 +29,7 @@
28 from _emerge.create_depgraph_params import create_depgraph_params
29 from _emerge.create_world_atom import create_world_atom
30 from _emerge.DepPriority import DepPriority
31 +from _emerge.depgraph import depgraph
32 from _emerge.EbuildFetcher import EbuildFetcher
33 from _emerge.EbuildPhase import EbuildPhase
34 from _emerge.emergelog import emergelog, _emerge_log_dir
35 @@ -44,12 +45,6 @@
36 from _emerge.SequentialTaskQueue import SequentialTaskQueue
37 from _emerge.show_invalid_depstring_notice import show_invalid_depstring_notice
38
39 -import portage.proxy.lazyimport
40 -import portage.proxy as proxy
41 -proxy.lazyimport.lazyimport(globals(),
42 - '_emerge.depgraph:depgraph',
43 -)
44 -
45 class Scheduler(PollScheduler):
46
47 _opts_ignore_blockers = \
48
49 Copied: main/branches/prefix/pym/_emerge/changelog.py (from rev 13677, main/trunk/pym/_emerge/changelog.py)
50 ===================================================================
51 --- main/branches/prefix/pym/_emerge/changelog.py (rev 0)
52 +++ main/branches/prefix/pym/_emerge/changelog.py 2009-06-27 14:31:19 UTC (rev 13713)
53 @@ -0,0 +1,63 @@
54 +import os
55 +import re
56 +
57 +# for an explanation on this logic, see pym/_emerge/__init__.py
58 +import os
59 +import sys
60 +if os.environ.__contains__("PORTAGE_PYTHONPATH"):
61 + sys.path.insert(0, os.environ["PORTAGE_PYTHONPATH"])
62 +else:
63 + sys.path.insert(0, os.path.join(os.path.dirname(os.path.dirname(os.path.realpath(__file__))), "pym"))
64 +import portage
65 +
66 +def calc_changelog(ebuildpath,current,next):
67 + if ebuildpath == None or not os.path.exists(ebuildpath):
68 + return []
69 + current = '-'.join(portage.catpkgsplit(current)[1:])
70 + if current.endswith('-r0'):
71 + current = current[:-3]
72 + next = '-'.join(portage.catpkgsplit(next)[1:])
73 + if next.endswith('-r0'):
74 + next = next[:-3]
75 + changelogpath = os.path.join(os.path.split(ebuildpath)[0],'ChangeLog')
76 + try:
77 + changelog = open(changelogpath).read()
78 + except SystemExit, e:
79 + raise # Needed else can't exit
80 + except:
81 + return []
82 + divisions = _find_changelog_tags(changelog)
83 + #print 'XX from',current,'to',next
84 + #for div,text in divisions: print 'XX',div
85 + # skip entries for all revisions above the one we are about to emerge
86 + for i in range(len(divisions)):
87 + if divisions[i][0]==next:
88 + divisions = divisions[i:]
89 + break
90 + # find out how many entries we are going to display
91 + for i in range(len(divisions)):
92 + if divisions[i][0]==current:
93 + divisions = divisions[:i]
94 + break
95 + else:
96 + # couldnt find the current revision in the list. display nothing
97 + return []
98 + return divisions
99 +
100 +def _find_changelog_tags(changelog):
101 + divs = []
102 + release = None
103 + while 1:
104 + match = re.search(r'^\*\ ?([-a-zA-Z0-9_.+]*)(?:\ .*)?\n',changelog,re.M)
105 + if match is None:
106 + if release is not None:
107 + divs.append((release,changelog))
108 + return divs
109 + if release is not None:
110 + divs.append((release,changelog[:match.start()]))
111 + changelog = changelog[match.end():]
112 + release = match.group(1)
113 + if release.endswith('.ebuild'):
114 + release = release[:-7]
115 + if release.endswith('-r0'):
116 + release = release[:-3]
117
118 Modified: main/branches/prefix/pym/_emerge/depgraph.py
119 ===================================================================
120 --- main/branches/prefix/pym/_emerge/depgraph.py 2009-06-27 14:28:34 UTC (rev 13712)
121 +++ main/branches/prefix/pym/_emerge/depgraph.py 2009-06-27 14:31:19 UTC (rev 13713)
122 @@ -26,6 +26,7 @@
123 from _emerge.Blocker import Blocker
124 from _emerge.BlockerCache import BlockerCache
125 from _emerge.BlockerDepPriority import BlockerDepPriority
126 +from _emerge.changelog import calc_changelog
127 from _emerge.countdown import countdown
128 from _emerge.create_world_atom import create_world_atom
129 from _emerge.Dependency import Dependency
130 @@ -49,12 +50,6 @@
131 from _emerge.UnmergeDepPriority import UnmergeDepPriority
132 from _emerge.visible import visible
133
134 -import portage.proxy.lazyimport
135 -import portage.proxy as proxy
136 -proxy.lazyimport.lazyimport(globals(),
137 - '_emerge.Scheduler:Scheduler',
138 -)
139 -#from _emerge.Scheduler import Scheduler
140 class depgraph(object):
141
142 pkg_tree_map = RootConfig.pkg_tree_map
143 @@ -71,7 +66,8 @@
144 self.edebug = 1
145 self.spinner = spinner
146 self._running_root = trees["/"]["root_config"]
147 - self._opts_no_restart = Scheduler._opts_no_restart
148 + self._opts_no_restart = frozenset(["--buildpkgonly",
149 + "--fetchonly", "--fetch-all-uri", "--pretend"])
150 self.pkgsettings = {}
151 # Maps slot atom to package for each Package added to the graph.
152 self._slot_pkg_map = {}
153 @@ -2237,7 +2233,7 @@
154 self._pkg_cache[pkg] = pkg
155 return pkg
156
157 - def validate_blockers(self):
158 + def _validate_blockers(self):
159 """Remove any blockers from the digraph that do not match any of the
160 packages within the graph. If necessary, create hard deps to ensure
161 correct merge order such that mutually blocking packages are never
162 @@ -2627,7 +2623,7 @@
163 if not self._complete_graph():
164 raise self._unknown_internal_error()
165
166 - if not self.validate_blockers():
167 + if not self._validate_blockers():
168 raise self._unknown_internal_error()
169
170 if self._slot_collision_info:
171 @@ -3774,7 +3770,7 @@
172 if "--changelog" in self.myopts:
173 inst_matches = vardb.match(pkg.slot_atom)
174 if inst_matches:
175 - changelogs.extend(self.calc_changelog(
176 + changelogs.extend(calc_changelog(
177 portdb.findname(pkg_key),
178 inst_matches[0], pkg_key))
179 else:
180 @@ -4269,58 +4265,6 @@
181 show_mask_docs()
182 print
183
184 - def calc_changelog(self,ebuildpath,current,next):
185 - if ebuildpath == None or not os.path.exists(ebuildpath):
186 - return []
187 - current = '-'.join(portage.catpkgsplit(current)[1:])
188 - if current.endswith('-r0'):
189 - current = current[:-3]
190 - next = '-'.join(portage.catpkgsplit(next)[1:])
191 - if next.endswith('-r0'):
192 - next = next[:-3]
193 - changelogpath = os.path.join(os.path.split(ebuildpath)[0],'ChangeLog')
194 - try:
195 - changelog = open(changelogpath).read()
196 - except SystemExit, e:
197 - raise # Needed else can't exit
198 - except:
199 - return []
200 - divisions = self.find_changelog_tags(changelog)
201 - #print 'XX from',current,'to',next
202 - #for div,text in divisions: print 'XX',div
203 - # skip entries for all revisions above the one we are about to emerge
204 - for i in range(len(divisions)):
205 - if divisions[i][0]==next:
206 - divisions = divisions[i:]
207 - break
208 - # find out how many entries we are going to display
209 - for i in range(len(divisions)):
210 - if divisions[i][0]==current:
211 - divisions = divisions[:i]
212 - break
213 - else:
214 - # couldnt find the current revision in the list. display nothing
215 - return []
216 - return divisions
217 -
218 - def find_changelog_tags(self,changelog):
219 - divs = []
220 - release = None
221 - while 1:
222 - match = re.search(r'^\*\ ?([-a-zA-Z0-9_.+]*)(?:\ .*)?\n',changelog,re.M)
223 - if match is None:
224 - if release is not None:
225 - divs.append((release,changelog))
226 - return divs
227 - if release is not None:
228 - divs.append((release,changelog[:match.start()]))
229 - changelog = changelog[match.end():]
230 - release = match.group(1)
231 - if release.endswith('.ebuild'):
232 - release = release[:-7]
233 - if release.endswith('-r0'):
234 - release = release[:-3]
235 -
236 def saveNomergeFavorites(self):
237 """Find atoms in favorites that are not in the mergelist and add them
238 to the world file if necessary."""
239 @@ -4378,7 +4322,7 @@
240 if world_locked:
241 world_set.unlock()
242
243 - def loadResumeCommand(self, resume_data, skip_masked=True,
244 + def _loadResumeCommand(self, resume_data, skip_masked=True,
245 skip_missing=True):
246 """
247 Add a resume command to the graph and validate it in the process. This
248 @@ -4804,7 +4748,7 @@
249 mydepgraph = depgraph(settings, trees,
250 myopts, myparams, spinner)
251 try:
252 - success = mydepgraph.loadResumeCommand(mtimedb["resume"],
253 + success = mydepgraph._loadResumeCommand(mtimedb["resume"],
254 skip_masked=skip_masked)
255 except depgraph.UnsatisfiedResumeDep, e:
256 if not skip_unsatisfied: