Gentoo Archives: gentoo-commits

From: "Zac Medico (zmedico)" <zmedico@g.o>
To: gentoo-commits@l.g.o
Subject: [gentoo-commits] portage r10910 - main/trunk/pym/_emerge
Date: Thu, 03 Jul 2008 09:30:12
Message-Id: E1KEL8g-0003rG-NG@stork.gentoo.org
1 Author: zmedico
2 Date: 2008-07-03 09:30:05 +0000 (Thu, 03 Jul 2008)
3 New Revision: 10910
4
5 Modified:
6 main/trunk/pym/_emerge/__init__.py
7 Log:
8 Clean up Scheduler.merge() and split out a _save_resume_list() method.
9
10
11 Modified: main/trunk/pym/_emerge/__init__.py
12 ===================================================================
13 --- main/trunk/pym/_emerge/__init__.py 2008-07-03 09:05:38 UTC (rev 10909)
14 +++ main/trunk/pym/_emerge/__init__.py 2008-07-03 09:30:05 UTC (rev 10910)
15 @@ -7241,36 +7241,16 @@
16 colorize("GOOD", "*** Resuming merge...\n"), noiselevel=-1)
17 self._logger.log(" *** Resuming merge...")
18
19 + self._save_resume_list()
20 rval = self._check_manifests()
21 if rval != os.EX_OK:
22 return rval
23
24 keep_going = "--keep-going" in self.myopts
25 - running_tasks = self._running_tasks
26 mtimedb = self._mtimedb
27
28 while True:
29 -
30 - # Do this before verifying the ebuild Manifests since it might
31 - # be possible for the user to use --resume --skipfirst get past
32 - # a non-essential package with a broken digest.
33 - mtimedb["resume"]["mergelist"] = [list(x) \
34 - for x in self._mergelist \
35 - if isinstance(x, Package) and x.operation == "merge"]
36 -
37 - mtimedb.commit()
38 -
39 - self._add_prefetchers()
40 -
41 - try:
42 - rval = self._merge()
43 - finally:
44 - # clean up child process if necessary
45 - self._task_queue.clear()
46 - while running_tasks:
47 - task = running_tasks.pop()
48 - task.cancel()
49 -
50 + self._merge()
51 self._show_failed_fetches()
52 del self._failed_fetches[:]
53
54 @@ -7318,6 +7298,7 @@
55 del _eerror, msg
56 del dropped_tasks
57 self._mergelist = mylist
58 + self._save_resume_list()
59 self._pkg_count.curval = 0
60 self._pkg_count.maxval = len(mylist)
61
62 @@ -7325,6 +7306,38 @@
63
64 return rval
65
66 + def _merge(self):
67 +
68 + self._add_prefetchers()
69 +
70 + try:
71 + for task in self._mergelist:
72 + try:
73 + self._execute_task(task)
74 + except self._pkg_failure, e:
75 + return e.status
76 + finally:
77 + # clean up child process if necessary
78 + self._task_queue.clear()
79 + running_tasks = self._running_tasks
80 + while running_tasks:
81 + task = running_tasks.pop()
82 + task.cancel()
83 + return os.EX_OK
84 +
85 + def _save_resume_list(self):
86 + """
87 + Do this before verifying the ebuild Manifests since it might
88 + be possible for the user to use --resume --skipfirst get past
89 + a non-essential package with a broken digest.
90 + """
91 + mtimedb = self._mtimedb
92 + mtimedb["resume"]["mergelist"] = [list(x) \
93 + for x in self._mergelist \
94 + if isinstance(x, Package) and x.operation == "merge"]
95 +
96 + mtimedb.commit()
97 +
98 def _calc_resume_list(self):
99 """
100 Use the current resume list to calculate a new one,
101 @@ -7402,60 +7415,6 @@
102
103 return state_changed
104
105 - def _merge(self):
106 - mylist = self._mergelist
107 - favorites = self._favorites
108 - mtimedb = self._mtimedb
109 - buildpkgonly = "--buildpkgonly" in self.myopts
110 - fetchonly = "--fetchonly" in self.myopts or \
111 - "--fetch-all-uri" in self.myopts
112 - oneshot = "--oneshot" in self.myopts or \
113 - "--onlydeps" in self.myopts
114 - pretend = "--pretend" in self.myopts
115 - ldpath_mtimes = mtimedb["ldpath"]
116 - logger = self._logger
117 -
118 - root_config = self.trees[self.target_root]["root_config"]
119 - mymergelist = mylist
120 - myfeat = self.settings.features[:]
121 - metadata_keys = [k for k in portage.auxdbkeys \
122 - if not k.startswith("UNUSED_")] + ["USE"]
123 -
124 - task_list = mymergelist
125 - # Filter mymergelist so that all the len(mymergelist) calls
126 - # below (for display) do not count Uninstall instances.
127 - mymergelist = [x for x in mymergelist if x[-1] == "merge"]
128 -
129 - for x in task_list:
130 - if x[0] == "blocks":
131 - continue
132 - pkg_type, myroot, pkg_key, operation = x
133 - built = pkg_type != "ebuild"
134 - installed = pkg_type == "installed"
135 - portdb = self.trees[myroot]["porttree"].dbapi
136 - bindb = self.trees[myroot]["bintree"].dbapi
137 - vartree = self.trees[myroot]["vartree"]
138 - vardb = vartree.dbapi
139 - root_config = self.trees[myroot]["root_config"]
140 - if pkg_type == "blocks":
141 - pass
142 - elif pkg_type == "ebuild":
143 - mydbapi = portdb
144 - else:
145 - if pkg_type == "binary":
146 - mydbapi = bindb
147 - elif pkg_type == "installed":
148 - mydbapi = vardb
149 - else:
150 - raise AssertionError("Package type: '%s'" % pkg_type)
151 -
152 - try:
153 - self._execute_task(x)
154 - except self._pkg_failure, e:
155 - return e.status
156 -
157 - return os.EX_OK
158 -
159 def _execute_task(self, pkg):
160 favorites = self._favorites
161 mtimedb = self._mtimedb
162
163 --
164 gentoo-commits@l.g.o mailing list