|
Gaudi Framework, version v22r0 |
| Home | Generated: 9 Feb 2011 |
Classes | |
| class | PatchData |
| class | SavannahParser |
| parse the More... | |
| class | TempDir |
Functions | |
| def | get_patch_info_x |
| def | get_patch_info |
| def | get_patch_data |
| def | check_out_gaudi |
| def | apply_patch |
| def | check |
| def | build |
| def | test |
| def | main |
Variables | |
| string | __author__ = "Marco Clemencic <marco.clemencic@cern.ch>" |
| def validate_patch::apply_patch | ( | patch_data, | ||
| path | ||||
| ) |
Definition at line 147 of file validate_patch.py.
| def validate_patch::build | ( | path | ) |
Definition at line 155 of file validate_patch.py.
00156 : 00157 if "LBCONFIGURATIONROOT" in os.environ: 00158 cmd = ["make", 00159 "-f", os.path.join(os.environ["LBCONFIGURATIONROOT"], "data", "Makefile")] 00160 if "use-distcc" in os.environ.get("CMTEXTRATAGS",""): 00161 cmd += ["-j", "6"] 00162 else: 00163 cmd = ["cmt", "-pack=GaudiRelease", "broadcast", "cmt", "make", "all_groups"] 00164 return Popen(" ".join(cmd), 00165 shell = True, cwd = path).wait()
| def validate_patch::check | ( | path | ) |
Definition at line 152 of file validate_patch.py.
| def validate_patch::check_out_gaudi | ( | path | ) |
Definition at line 144 of file validate_patch.py.
| def validate_patch::get_patch_data | ( | file_id | ) |
Definition at line 107 of file validate_patch.py.
| def validate_patch::get_patch_info | ( | patch | ) |
Definition at line 100 of file validate_patch.py.
| def validate_patch::get_patch_info_x | ( | patch | ) |
Definition at line 83 of file validate_patch.py.
00084 : 00085 patch = int(patch) 00086 server = "savannah.cern.ch" 00087 path = "/patch/?%d" % patch 00088 conn = httplib.HTTPSConnection(server) 00089 conn.request("GET", path) 00090 r = conn.getresponse() 00091 if r.status == 200: 00092 pass 00093 else: 00094 raise RuntimeError(r.status, r.reason, "https://" + server + path) 00095 parser = SavannahParser() 00096 parser.feed(r.read()) 00097 parser.close() 00098 conn.close() 00099 return parser.patch
| def validate_patch::main | ( | ) |
Definition at line 193 of file validate_patch.py.
00194 : 00195 logging.basicConfig() 00196 if len(sys.argv) != 2: 00197 print """Usage: 00198 validate_patch.py <savannah patch id> 00199 validate_patch.py file.patch 00200 """ 00201 return 2 00202 patch_id = sys.argv[1] 00203 if os.path.isfile(patch_id): 00204 patch_data = open(patch_id, "rb").read() 00205 else: 00206 patch = get_patch_info(patch_id) 00207 patch_file_id = patch.files[0][1] 00208 patch_data = get_patch_data(patch_file_id) 00209 00210 td = TempDir(prefix = patch_id + "-") 00211 if check_out_gaudi(str(td)) != 0: 00212 print "Sorry, problems checking out Gaudi. Try again." 00213 return 0 00214 top_dir = os.path.join(str(td), "Gaudi") 00215 open(os.path.join(top_dir, patch_id) ,"wb").write(patch_data) 00216 00217 revision = -1 00218 for l in Popen(["svn", "info", top_dir], stdout = PIPE).communicate()[0].splitlines(): 00219 if l.startswith("Revision:"): 00220 revision = int(l.split()[-1]) 00221 break 00222 00223 actions = [(lambda path: apply_patch(patch_data, path), "application of the patch"), 00224 (check, "check of the configuration"), 00225 (build, "build"), 00226 (test, "test"), 00227 ] 00228 failure = False 00229 for action, title in actions: 00230 if action(top_dir) != 0: 00231 failure = title 00232 break 00233 00234 if failure: 00235 print "*** Patch %s failed during %s (using revision r%d) ***" % (patch_id, failure, revision) 00236 return 1 00237 00238 print "*** Patch %s succeeded (using revision r%d) ***" % (patch_id, revision) 00239 return 0
| def validate_patch::test | ( | path | ) |
Definition at line 166 of file validate_patch.py.
00167 : 00168 cmd = ["cmt", "-pack=GaudiRelease", "TestProject"] 00169 proc = Popen(" ".join(cmd), 00170 stdout = PIPE, 00171 shell = True, 00172 cwd = path) 00173 output = [] 00174 while proc.poll() is None: 00175 chunk = proc.stdout.read(256) 00176 output.append(chunk) 00177 sys.stdout.write(chunk) 00178 sys.stdout.flush() 00179 chunk = proc.stdout.read(256) 00180 output.append(chunk) 00181 sys.stdout.write(chunk) 00182 sys.stdout.flush() 00183 if proc.returncode: 00184 # immediately return in case of failure 00185 return proc.returncode 00186 # look for failures in the output 00187 output = ("".join(output)).splitlines() 00188 for l in output: 00189 l = l.strip() 00190 if ": FAIL" in l or ": ERROR" in l: 00191 return 1 00192 return 0
| string validate_patch::__author__ = "Marco Clemencic <marco.clemencic@cern.ch>" |
Definition at line 10 of file validate_patch.py.