X-Git-Url: http://code.vuplus.com/gitweb/?a=blobdiff_plain;f=classes%2Ftinderclient.bbclass;h=a45c1e679bc8d28579f94340541455780369c1a0;hb=HEAD;hp=1c8079ebc99d2e98a443a6c35a4fa7121cbd3fee;hpb=74b7777259487e83caba871c7b77cf43ac12fa82;p=vuplus_openembedded diff --git a/classes/tinderclient.bbclass b/classes/tinderclient.bbclass index 1c8079e..a45c1e6 100644 --- a/classes/tinderclient.bbclass +++ b/classes/tinderclient.bbclass @@ -1,10 +1,19 @@ -def tinder_http_post(server, selector, content_type, body): +def tinder_http_post(d, server, selector, content_type, body): import httplib # now post it for i in range(0,5): try: - h = httplib.HTTP(server) - h.putrequest('POST', selector) + proxy = data.getVar('HTTP_PROXY', d, True ) + if (proxy): + if (proxy.endswith('/')): + proxy = proxy[:-1] + if (proxy.startswith('http://')): + proxy = proxy[7:] + h = httplib.HTTP(proxy) + h.putrequest('POST', 'http://%s%s' % (server, selector)) + else: + h = httplib.HTTP(server) + h.putrequest('POST', selector) h.putheader('content-type', content_type) h.putheader('content-length', str(len(body))) h.endheaders() @@ -12,8 +21,8 @@ def tinder_http_post(server, selector, content_type, body): errcode, errmsg, headers = h.getreply() #print errcode, errmsg, headers return (errcode,errmsg, headers, h.file) - except: - print "Error sending the report!" + except Exception, e: + print "Error sending the report! ", e # try again pass @@ -24,6 +33,7 @@ def tinder_form_data(bound, dict, log): output = [] # for each key in the dictionary for name in dict: + assert dict[name] output.append( "--" + bound ) output.append( 'Content-Disposition: form-data; name="%s"' % name ) output.append( "" ) @@ -50,8 +60,7 @@ def tinder_format_http_post(d,status,log): for the tinderbox to be happy. """ - from bb import data, build - import os,random + import random # the variables we will need to send on this form post variables = { @@ -60,7 +69,17 @@ def tinder_format_http_post(d,status,log): "os" : os.uname()[0], "os_version" : os.uname()[2], "compiler" : "gcc", - "clobber" : data.getVar('TINDER_CLOBBER', d, True) + "clobber" : data.getVar('TINDER_CLOBBER', d, True) or "0", + "srcdate" : data.getVar('SRCDATE', d, True), + "PN" : data.getVar('PN', d, True), + "PV" : data.getVar('PV', d, True), + "PR" : data.getVar('PR', d, True), + "FILE" : data.getVar('FILE', d, True) or "N/A", + "TARGETARCH" : data.getVar('TARGET_ARCH', d, True), + "TARGETFPU" : data.getVar('TARGET_FPU', d, True) or "Unknown", + "TARGETOS" : data.getVar('TARGET_OS', d, True) or "Unknown", + "MACHINE" : data.getVar('MACHINE', d, True) or "Unknown", + "DISTRO" : data.getVar('DISTRO', d, True) or "Unknown", } # optionally add the status @@ -104,7 +123,7 @@ def tinder_build_start(d): #print "selector %s and url %s" % (selector, url) # now post it - errcode, errmsg, headers, h_file = tinder_http_post(server,selector,content_type, body) + errcode, errmsg, headers, h_file = tinder_http_post(d,server,selector,content_type, body) #print errcode, errmsg, headers report = h_file.read() @@ -139,7 +158,7 @@ def tinder_send_http(d, status, _log): new_log = _log while len(new_log) > 0: content_type, body = tinder_format_http_post(d,status,new_log[0:18000]) - errcode, errmsg, headers, h_file = tinder_http_post(server,selector,content_type, body) + errcode, errmsg, headers, h_file = tinder_http_post(d,server,selector,content_type, body) #print errcode, errmsg, headers #print h.file.read() new_log = new_log[18000:] @@ -240,8 +259,8 @@ def tinder_tinder_start(d, event): output.append( "---> TINDERBOX BUILDING '%(packages)s'" ) output.append( "<--- TINDERBOX STARTING BUILD NOW" ) - output.append( "" ) - + output.append( "" ) + return "\n".join(output) % vars() def tinder_do_tinder_report(event): @@ -311,13 +330,13 @@ def tinder_do_tinder_report(event): elif name == "TaskFailed": log += "<--- TINDERBOX Task %s failed (FAILURE)\n" % event.task elif name == "PkgStarted": - log += "---> TINDERBOX Package %s started\n" % data.getVar('P', event.data, True) + log += "---> TINDERBOX Package %s started\n" % data.getVar('PF', event.data, True) elif name == "PkgSucceeded": - log += "<--- TINDERBOX Package %s done (SUCCESS)\n" % data.getVar('P', event.data, True) + log += "<--- TINDERBOX Package %s done (SUCCESS)\n" % data.getVar('PF', event.data, True) elif name == "PkgFailed": if not data.getVar('TINDER_AUTOBUILD', event.data, True) == "0": - build.exec_task('do_clean', event.data) - log += "<--- TINDERBOX Package %s failed (FAILURE)\n" % data.getVar('P', event.data, True) + build.exec_func('do_clean', event.data) + log += "<--- TINDERBOX Package %s failed (FAILURE)\n" % data.getVar('PF', event.data, True) status = 200 # remember the failure for the -k case h = file(data.getVar('TMPDIR', event.data, True)+"/tinder-status", 'w') @@ -359,7 +378,11 @@ def tinder_do_tinder_report(event): addhandler tinderclient_eventhandler python tinderclient_eventhandler() { from bb import note, error, data - from bb.event import NotHandled + from bb.event import NotHandled, getName + + if e.data is None or getName(e) == "MsgNote": + return NotHandled + do_tinder_report = data.getVar('TINDER_REPORT', e.data, True) if do_tinder_report and do_tinder_report == "1": tinder_do_tinder_report(e)