Gentoo Archives: gentoo-commits

From: "Zac Medico (zmedico)" <zmedico@g.o>
To: gentoo-commits@l.g.o
Subject: [gentoo-commits] portage r11679 - main/trunk/pym/_emerge
Date: Sun, 12 Oct 2008 00:09:45
Message-Id: E1KooWk-0007GE-9M@stork.gentoo.org
1 Author: zmedico
2 Date: 2008-10-12 00:09:40 +0000 (Sun, 12 Oct 2008)
3 New Revision: 11679
4
5 Modified:
6 main/trunk/pym/_emerge/__init__.py
7 Log:
8 Make the Scheduler class treat failed fetches the same as other failed
9 packages, and don't bail out due to a failure when in --fetchonly mode.
10 This fixes an issue with --fetchonly bailing out instead of continuing
11 to fetch.
12
13
14 Modified: main/trunk/pym/_emerge/__init__.py
15 ===================================================================
16 --- main/trunk/pym/_emerge/__init__.py 2008-10-11 20:31:48 UTC (rev 11678)
17 +++ main/trunk/pym/_emerge/__init__.py 2008-10-12 00:09:40 UTC (rev 11679)
18 @@ -3484,7 +3484,7 @@
19
20 __slots__ = ("args_set",
21 "binpkg_opts", "build_opts", "config_pool", "emerge_opts",
22 - "failed_fetches", "find_blockers", "logger", "mtimedb", "pkg",
23 + "find_blockers", "logger", "mtimedb", "pkg",
24 "pkg_count", "pkg_to_replace", "prefetcher",
25 "settings", "statusMessage", "world_atom") + \
26 ("_install_task",)
27 @@ -3544,7 +3544,7 @@
28 settings=settings, world_atom=world_atom)
29
30 self._install_task = build
31 - self._start_task(build, self._ebuild_exit)
32 + self._start_task(build, self._default_final_exit)
33 return
34
35 elif pkg.type_name == "binary":
36 @@ -3560,12 +3560,6 @@
37 self._start_task(binpkg, self._default_final_exit)
38 return
39
40 - def _ebuild_exit(self, build):
41 - if self._final_exit(build) != os.EX_OK:
42 - if self.build_opts.fetchonly:
43 - self.failed_fetches.append(self.pkg.cpv)
44 - self.wait()
45 -
46 def _poll(self):
47 self._install_task.poll()
48 return self.returncode
49 @@ -3578,7 +3572,6 @@
50
51 pkg = self.pkg
52 build_opts = self.build_opts
53 - failed_fetches = self.failed_fetches
54 find_blockers = self.find_blockers
55 logger = self.logger
56 mtimedb = self.mtimedb
57 @@ -9082,7 +9075,6 @@
58 self._failed_pkgs = []
59 self._failed_pkgs_all = []
60 self._failed_pkgs_die_msgs = []
61 - self._failed_fetches = []
62 self._parallel_fetch = False
63 merge_count = len([x for x in mergelist \
64 if isinstance(x, Package) and x.operation == "merge"])
65 @@ -9441,34 +9433,6 @@
66
67 return prefetcher
68
69 - def _show_failed_fetches(self):
70 - failed_fetches = self._failed_fetches
71 - if not failed_fetches or not \
72 - ("--fetchonly" in self.myopts or \
73 - "--fetch-all-uri" in self.myopts):
74 - return
75 -
76 - if self._background:
77 - msg = "Some fetch errors were " + \
78 - "encountered. Please see %s for details." % \
79 - self._fetch_log
80 - else:
81 - msg = "Some fetch errors were " + \
82 - "encountered. Please see above for details."
83 -
84 - prefix = bad(" * ")
85 - msg = "".join("%s%s\n" % (prefix, line) \
86 - for line in textwrap.wrap(msg, 70))
87 - writemsg_level(msg, level=logging.ERROR, noiselevel=-1)
88 -
89 - msg = []
90 - msg.append("")
91 - for cpv in failed_fetches:
92 - msg.append(" %s" % cpv)
93 - msg.append("")
94 - writemsg_level("".join("%s%s\n" % (prefix, line) \
95 - for line in msg), level=logging.ERROR, noiselevel=-1)
96 -
97 def _is_restart_scheduled(self):
98 """
99 Check if the merge list contains a replacement
100 @@ -9567,15 +9531,13 @@
101 return rval
102
103 keep_going = "--keep-going" in self.myopts
104 + fetchonly = self._build_opts.fetchonly
105 mtimedb = self._mtimedb
106 failed_pkgs = self._failed_pkgs
107
108 while True:
109 rval = self._merge()
110 - self._show_failed_fetches()
111 - del self._failed_fetches[:]
112 -
113 - if rval == os.EX_OK or not keep_going:
114 + if rval == os.EX_OK or fetchonly or not keep_going:
115 break
116 if "resume" not in mtimedb:
117 break
118 @@ -9963,6 +9925,10 @@
119 if self._poll_event_handlers:
120 self._poll_loop()
121
122 + def _keep_scheduling(self):
123 + return bool(self._pkg_queue and \
124 + not (self._failed_pkgs and not self._build_opts.fetchonly))
125 +
126 def _schedule_tasks(self):
127 self._schedule_tasks_imp()
128 self._status_display.display()
129 @@ -9974,7 +9940,7 @@
130
131 # Cancel prefetchers if they're the only reason
132 # the main poll loop is still running.
133 - if self._failed_pkgs and \
134 + if self._failed_pkgs and not self._build_opts.fetchonly and \
135 not (self._jobs or self._task_queues.merge) and \
136 self._task_queues.fetch:
137 self._task_queues.fetch.clear()
138 @@ -9984,7 +9950,7 @@
139 self._schedule_tasks_imp()
140 self._status_display.display()
141
142 - return bool(self._pkg_queue and not self._failed_pkgs)
143 + return self._keep_scheduling()
144
145 def _job_delay(self):
146 """
147 @@ -10014,7 +9980,7 @@
148
149 while True:
150
151 - if not self._pkg_queue or self._failed_pkgs:
152 + if not self._keep_scheduling():
153 return bool(state_change)
154
155 if self._choose_pkg_return_early or \
156 @@ -10071,7 +10037,6 @@
157 config_pool=self._ConfigPool(pkg.root,
158 self._allocate_config, self._deallocate_config),
159 emerge_opts=self.myopts,
160 - failed_fetches=self._failed_fetches,
161 find_blockers=self._find_blockers(pkg), logger=self._logger,
162 mtimedb=self._mtimedb, pkg=pkg, pkg_count=self._pkg_count.copy(),
163 pkg_to_replace=pkg_to_replace,