1 |
commit: d6bde84bd02aba99bbf7ee5a6a0e55d2be4216ff |
2 |
Author: Zac Medico <zmedico <AT> gentoo <DOT> org> |
3 |
AuthorDate: Sat Dec 29 07:44:39 2012 +0000 |
4 |
Commit: Zac Medico <zmedico <AT> gentoo <DOT> org> |
5 |
CommitDate: Sat Dec 29 07:44:39 2012 +0000 |
6 |
URL: http://git.overlays.gentoo.org/gitweb/?p=proj/portage.git;a=commit;h=d6bde84b |
7 |
|
8 |
Use run_main_scheduler where possible. |
9 |
|
10 |
--- |
11 |
bin/egencache | 62 +++++------------------------------------------ |
12 |
pym/_emerge/actions.py | 32 +++--------------------- |
13 |
2 files changed, 11 insertions(+), 83 deletions(-) |
14 |
|
15 |
diff --git a/bin/egencache b/bin/egencache |
16 |
index 79a996d..110c47d 100755 |
17 |
--- a/bin/egencache |
18 |
+++ b/bin/egencache |
19 |
@@ -50,6 +50,7 @@ from portage.cache.cache_errors import CacheError, StatCollision |
20 |
from portage.manifest import guessManifestFileType |
21 |
from portage.package.ebuild._parallel_manifest.ManifestScheduler import ManifestScheduler |
22 |
from portage.util import cmp_sort_key, writemsg_level |
23 |
+from portage.util._async.run_main_scheduler import run_main_scheduler |
24 |
from portage.util._eventloop.global_event_loop import global_event_loop |
25 |
from portage import cpv_getkey |
26 |
from portage.dep import Atom, isjustname |
27 |
@@ -357,34 +358,9 @@ class GenCache(object): |
28 |
level=logging.ERROR, noiselevel=-1) |
29 |
|
30 |
def run(self): |
31 |
- |
32 |
- received_signal = [] |
33 |
- |
34 |
- def sighandler(signum, frame): |
35 |
- signal.signal(signal.SIGINT, signal.SIG_IGN) |
36 |
- signal.signal(signal.SIGTERM, signal.SIG_IGN) |
37 |
- self._regen.terminate() |
38 |
- received_signal.append(128 + signum) |
39 |
- |
40 |
- earlier_sigint_handler = signal.signal(signal.SIGINT, sighandler) |
41 |
- earlier_sigterm_handler = signal.signal(signal.SIGTERM, sighandler) |
42 |
- |
43 |
- try: |
44 |
- self._regen.start() |
45 |
- self._regen.wait() |
46 |
- finally: |
47 |
- # Restore previous handlers |
48 |
- if earlier_sigint_handler is not None: |
49 |
- signal.signal(signal.SIGINT, earlier_sigint_handler) |
50 |
- else: |
51 |
- signal.signal(signal.SIGINT, signal.SIG_DFL) |
52 |
- if earlier_sigterm_handler is not None: |
53 |
- signal.signal(signal.SIGTERM, earlier_sigterm_handler) |
54 |
- else: |
55 |
- signal.signal(signal.SIGTERM, signal.SIG_DFL) |
56 |
- |
57 |
- if received_signal: |
58 |
- sys.exit(received_signal[0]) |
59 |
+ signum = run_main_scheduler(self._regen) |
60 |
+ if signum is not None: |
61 |
+ sys.exit(128 + signum) |
62 |
|
63 |
self.returncode |= self._regen.returncode |
64 |
|
65 |
@@ -1058,33 +1034,9 @@ def egencache_main(args): |
66 |
max_load=options.load_average, |
67 |
event_loop=event_loop) |
68 |
|
69 |
- received_signal = [] |
70 |
- |
71 |
- def sighandler(signum, frame): |
72 |
- signal.signal(signal.SIGINT, signal.SIG_IGN) |
73 |
- signal.signal(signal.SIGTERM, signal.SIG_IGN) |
74 |
- received_signal.append(128 + signum) |
75 |
- scheduler.terminate() |
76 |
- |
77 |
- earlier_sigint_handler = signal.signal(signal.SIGINT, sighandler) |
78 |
- earlier_sigterm_handler = signal.signal(signal.SIGTERM, sighandler) |
79 |
- |
80 |
- try: |
81 |
- scheduler.start() |
82 |
- scheduler.wait() |
83 |
- finally: |
84 |
- # Restore previous handlers |
85 |
- if earlier_sigint_handler is not None: |
86 |
- signal.signal(signal.SIGINT, earlier_sigint_handler) |
87 |
- else: |
88 |
- signal.signal(signal.SIGINT, signal.SIG_DFL) |
89 |
- if earlier_sigterm_handler is not None: |
90 |
- signal.signal(signal.SIGTERM, earlier_sigterm_handler) |
91 |
- else: |
92 |
- signal.signal(signal.SIGTERM, signal.SIG_DFL) |
93 |
- |
94 |
- if received_signal: |
95 |
- sys.exit(received_signal[0]) |
96 |
+ signum = run_main_scheduler(scheduler) |
97 |
+ if signum is not None: |
98 |
+ sys.exit(128 + signum) |
99 |
|
100 |
if options.tolerant: |
101 |
ret.append(os.EX_OK) |
102 |
|
103 |
diff --git a/pym/_emerge/actions.py b/pym/_emerge/actions.py |
104 |
index 982197b..a498ae4 100644 |
105 |
--- a/pym/_emerge/actions.py |
106 |
+++ b/pym/_emerge/actions.py |
107 |
@@ -55,6 +55,7 @@ from portage._sets.base import InternalPackageSet |
108 |
from portage.util import cmp_sort_key, writemsg, varexpand, \ |
109 |
writemsg_level, writemsg_stdout |
110 |
from portage.util.digraph import digraph |
111 |
+from portage.util._async.run_main_scheduler import run_main_scheduler |
112 |
from portage.util._async.SchedulerInterface import SchedulerInterface |
113 |
from portage.util._eventloop.global_event_loop import global_event_loop |
114 |
from portage._global_updates import _global_updates |
115 |
@@ -1951,35 +1952,10 @@ def action_regen(settings, portdb, max_jobs, max_load): |
116 |
|
117 |
regen = MetadataRegen(portdb, max_jobs=max_jobs, |
118 |
max_load=max_load, main=True) |
119 |
- received_signal = [] |
120 |
|
121 |
- def emergeexitsig(signum, frame): |
122 |
- signal.signal(signal.SIGINT, signal.SIG_IGN) |
123 |
- signal.signal(signal.SIGTERM, signal.SIG_IGN) |
124 |
- portage.util.writemsg("\n\nExiting on signal %(signal)s\n" % \ |
125 |
- {"signal":signum}) |
126 |
- regen.terminate() |
127 |
- received_signal.append(128 + signum) |
128 |
- |
129 |
- earlier_sigint_handler = signal.signal(signal.SIGINT, emergeexitsig) |
130 |
- earlier_sigterm_handler = signal.signal(signal.SIGTERM, emergeexitsig) |
131 |
- |
132 |
- try: |
133 |
- regen.start() |
134 |
- regen.wait() |
135 |
- finally: |
136 |
- # Restore previous handlers |
137 |
- if earlier_sigint_handler is not None: |
138 |
- signal.signal(signal.SIGINT, earlier_sigint_handler) |
139 |
- else: |
140 |
- signal.signal(signal.SIGINT, signal.SIG_DFL) |
141 |
- if earlier_sigterm_handler is not None: |
142 |
- signal.signal(signal.SIGTERM, earlier_sigterm_handler) |
143 |
- else: |
144 |
- signal.signal(signal.SIGTERM, signal.SIG_DFL) |
145 |
- |
146 |
- if received_signal: |
147 |
- sys.exit(received_signal[0]) |
148 |
+ signum = run_main_scheduler(regen) |
149 |
+ if signum is not None: |
150 |
+ sys.exit(128 + signum) |
151 |
|
152 |
portage.writemsg_stdout("done!\n") |
153 |
return regen.returncode |