1 |
diff -Nur plague-0.4.4.1-fe/builder/builder.py plague-0.4.4.1/builder/builder.py |
2 |
--- plague-0.4.4.1-fe/builder/builder.py 2007-11-14 18:41:33.000000000 +0100 |
3 |
+++ plague-0.4.4.1/builder/builder.py 2007-11-14 18:46:29.000000000 +0100 |
4 |
@@ -108,9 +108,7 @@ |
5 |
if not os.path.exists(self._result_dir): |
6 |
os.makedirs(self._result_dir) |
7 |
|
8 |
- self._state_dir = os.path.join(self._work_dir, self._uniqid, "mock-state") |
9 |
- if not os.path.exists(self._state_dir): |
10 |
- os.makedirs(self._state_dir) |
11 |
+ self._state_file = os.path.join(self._result_dir,"state.log") |
12 |
|
13 |
logfile = os.path.join(self._result_dir, "job.log") |
14 |
self._log_fd = open(logfile, "w+") |
15 |
@@ -218,12 +216,12 @@ |
16 |
args.append(arg) |
17 |
cmd = os.path.abspath(arg_list[0]) |
18 |
args.append(builder_cmd) |
19 |
+ args.append("rebuild") |
20 |
args.append("-r") |
21 |
args.append(self.buildroot) |
22 |
args.append("--arch") |
23 |
args.append(self.buildarch) |
24 |
args.append("--resultdir=%s" % self._result_dir) |
25 |
- args.append("--statedir=%s" % self._state_dir) |
26 |
args.append("--uniqueext=%s" % self._uniqid) |
27 |
args.append(self._srpm_path) |
28 |
self._log(" %s\n" % string.join(args)) |
29 |
@@ -257,33 +255,14 @@ |
30 |
def _mock_is_prepping(self): |
31 |
mock_status = self._get_mock_status() |
32 |
if mock_status: |
33 |
- if mock_status == 'prep': |
34 |
- return True |
35 |
- elif mock_status == 'setu': |
36 |
- return True |
37 |
- return False |
38 |
- |
39 |
- def _mock_using_repo(self): |
40 |
- mock_status = self._get_mock_status() |
41 |
- if mock_status: |
42 |
- if mock_status == 'init': |
43 |
- return True |
44 |
- elif mock_status == 'clea': |
45 |
- return True |
46 |
- elif mock_status == 'prep': |
47 |
- return True |
48 |
- elif mock_status == 'setu': |
49 |
- return True |
50 |
- return False |
51 |
- |
52 |
- def _mock_is_closed(self): |
53 |
- mock_status = self._get_mock_status() |
54 |
- if mock_status and mock_status == "done": |
55 |
- return True |
56 |
+ prepstates = ['enabl','creating cache','unpacking cache','setup'] |
57 |
+ for s in prepstates: |
58 |
+ if mock_status.startswith(s): |
59 |
+ return True |
60 |
return False |
61 |
|
62 |
def _get_mock_status(self): |
63 |
- mockstatusfile = os.path.join(self._state_dir, 'status') |
64 |
+ mockstatusfile = self._state_file |
65 |
if not os.path.exists(mockstatusfile): |
66 |
return None |
67 |
|
68 |
@@ -292,8 +271,7 @@ |
69 |
|
70 |
while True: |
71 |
try: |
72 |
- f.seek(0, 0) |
73 |
- string = f.read(4) |
74 |
+ lines = f.readlines() |
75 |
except OSError, e: |
76 |
if e.errno == errno.EAGAIN: |
77 |
try: |
78 |
@@ -302,12 +280,19 @@ |
79 |
pass |
80 |
continue |
81 |
else: |
82 |
- if len(string) < 4: |
83 |
+ if not len(lines): |
84 |
continue |
85 |
break |
86 |
f.close() |
87 |
- string = string.lower() |
88 |
- return string |
89 |
+ mockstat = None |
90 |
+ lastline = lines[len(lines)-1].lower() |
91 |
+ statedelim = "state changed:" |
92 |
+ stateidx = lastline.rfind(statedelim) |
93 |
+ if stateidx>0: |
94 |
+ mockstat = lastline[stateidx+len(statedelim):].lstrip() |
95 |
+ return mockstat |
96 |
+ else: |
97 |
+ return None |
98 |
|
99 |
def _read_mock_config(self): |
100 |
mockconfigfile = os.path.join(self._result_dir, 'mockconfig.log') |
101 |
@@ -373,8 +358,7 @@ |
102 |
# Refresh mock status to see whether it changed during sleep. |
103 |
# Avoid mock/plague race condition. |
104 |
if not self._mock_is_prepping(): |
105 |
- if not self._mock_using_repo(): # status changed during sleep |
106 |
- self._status = 'building' |
107 |
+ self._status = 'building' |
108 |
return |
109 |
# Mock shouldn't exit at all during the prepping stage, if it does |
110 |
# something is wrong |
111 |
@@ -384,8 +368,7 @@ |
112 |
|
113 |
# We need to make sure that mock has dumped the status file withing a certain |
114 |
# amount of time, otherwise we can't tell what it's doing |
115 |
- mockstatusfile = os.path.join(self._state_dir, 'status') |
116 |
- if not os.path.exists(mockstatusfile): |
117 |
+ if not os.path.exists(self._state_file): |
118 |
# something is wrong if mock takes more than 15s to write the status file |
119 |
if time.time() > self._mockstarttime + 15: |
120 |
self._mockstarttime = 0 |
121 |
@@ -410,9 +393,6 @@ |
122 |
if mock_root_dir.endswith(self._uniqid): |
123 |
shutil.rmtree(mock_root_dir, ignore_errors=True) |
124 |
|
125 |
- if self._mock_config.has_key('statedir'): |
126 |
- shutil.rmtree(self._mock_config['statedir'], ignore_errors=True) |
127 |
- |
128 |
source_dir = os.path.abspath(os.path.join(self._mock_config['rootdir'], "../source")) |
129 |
# Ensure we're actually deleteing the job's sourcedir |
130 |
if source_dir.endswith(os.path.join(self._uniqid, "source")): |