[cvs] / gkb / gkb.py  

cvs: gkb/gkb.py

Diff for /gkb/gkb.py between version 1.4 and 1.35

version 1.4, Thu Aug 12 05:11:30 2004 UTC version 1.35, Sat Dec 18 19:28:48 2004 UTC
Line 19 
Line 19 
 #  #
 # Ported from PHP version Copyright (c) Tobias McNulty 2000-2003  # Ported from PHP version Copyright (c) Tobias McNulty 2000-2003
   
 import sys, os, ConfigParser  import sys, os, ConfigParser, popen2
 import xml.parsers.expat  import xml.parsers.expat
 import md5  import md5, string
 from ftplib import FTP  from ftplib import FTP
 from commands import getoutput  from commands import getoutput
 from shutil import copy, move  from shutil import copy, move
Line 29 
Line 29 
 from urllib2 import urlopen  from urllib2 import urlopen
 from ClientForm import ParseResponse  from ClientForm import ParseResponse
   
   
 debug=0  debug=0
 clean=0  clean=1
   dont_build=0
 verbose=1  verbose=1
   
 # parse host-specific configuration information from gkb.cfg  # parse host-specific configuration information from gkb.cfg
Line 61 
Line 63 
 mastertrees={}  mastertrees={}
 builds={}  builds={}
   
   class Error(Exception):
           """Base class for exceptions in this module."""
           pass
   
   class BuildError(Error):
           """Exception raised for build-level errors.
   
           Attributes:
                   message -- explanation of the error
           """
   
           def __init__(self, message):
                   self.message = message
   
   class FatalError(Error):
           """Exception for fatal errors that prevent program continuation.
   
           Attributes:
                   message -- explanation of why the specific transition is not allowed
           """
   
           def __init__(self, message):
                   self.message = message
   
 def printverbose(myoutput):  def printverbose(myoutput):
         """Supporting method to output info to stdout if verbosity level is set"""          """Supporting method to output info to stdout if verbosity level is set"""
         if verbose==1:          if verbose==1:
                 print myoutput                  print myoutput
   
   def cleantext(text):
           """clean a string of passwords, etc. to make it suitable for logging"""
           result = string.replace(text,passwd,"XXXXXXXX")
           return result
   
   def linkpipes(input, output):
           """link two pipes together, writing all the data from input to output"""
           data = input.read(2048)
           while data:
                   output.write(data)
                   data = input.read(2048)
   
   def runcmd(cmd, kinfo=None, outfile=None, append=False, infile=None):
           """run the specified command, with the optional input and output documents"""
           log("  \_ running " + cleantext(cmd), kinfo)
   
           p4obj = popen2.Popen4(cmd)
   
           pin = p4obj.tochild
           pouterr = p4obj.fromchild
   
           if infile != None:
                   inobj = open(infile, "r")
                   linkpipes(inobj, pin)
                   inobj.close()
   
           if outfile != None:
                   if append:
                           mode = "a"
                   else:
                           mode = "w"
   
                   outobj = open(outfile, mode)
                   linkpipes(pouterr,outobj)
                   outobj.close()
   
           err = p4obj.wait()
   
           if err == None:
                   err = 0
   
           log("    \_ exit code: %i" %  err, kinfo)
   
           return err
   
 def log(text,kinfo=0):  def log(text,kinfo=0):
         if kinfo:          if kinfo:
                 printverbose(kinfo["name"] + " : " + text)                  printverbose(kinfo["name"] + " : " + text)
         else:          else:
                 printverbose("gkb : " + text)                  printverbose("gkb : " + text)
   
 def deathbyerror(mymsg):  
         """Supporting method to print error to stdout and return system error -1 on exit"""  
         print mymsg  
         sys.exit(-1)  
   
 def verifydir(mydir,kinfo=0):  def verifydir(mydir,kinfo=0):
         """Supporting method to verify a given  exists, if not it will create it"""          """Supporting method to verify a given  exists, if not it will create it"""
         log("verifying directory " + mydir,kinfo)          log("verifying directory " + mydir,kinfo)
         if not os.path.isdir(mydir):          if not os.path.isdir(mydir):
                 log("%s doesn't exist, creating" % mydir,kinfo)                  log("  \_ %s doesn't exist, creating" % mydir,kinfo)
                 os.mkdir(mydir)                  os.mkdir(mydir)
         return mydir          return mydir
   
Line 93 
Line 159 
 def verifyfile(myfile,kinfo):  def verifyfile(myfile,kinfo):
         """Supporting method to verify file exists, if not it will exit with error"""          """Supporting method to verify file exists, if not it will exit with error"""
         if not os.path.isfile(myfile):          if not os.path.isfile(myfile):
                 deathbyerror("%s : cannot find file expected at %s, exiting" % (kinfo["name"],myfile))                  raise BuildError("cannot find file expected at %s, exiting" % myfile)
         return myfile          return myfile
   
 def md5sum(fileobj):  def md5sum(fileobj):
Line 107 
Line 173 
         digest = md.hexdigest()          digest = md.hexdigest()
         return digest          return digest
   
 def krn_querymgr(command,kinfo):  def krn_querymgr(command,kinfo,extra=""):
         """queries the build host manager with a variety of commands, such as checkout, checkin, etc."""          """queries the build host manager with a variety of commands, such as checkout, checkin, etc."""
         version=krn_localversion(kinfo)          version=krn_localversion(kinfo)
         log("querying distribution site manager with command '%s' (kernel version=%s)" % (command,version),kinfo)          log("querying distribution site manager with command '%s' (kernel version=%s)" % (command,version),kinfo)
         result=getoutput("wget --quiet --output-document=- \"%s/manager.php?cmd=%s&host=%s&pass=%s&build=%s&version=%s\"" % (msite,command,host,passwd,kinfo["name"],version))          result=getoutput("wget --quiet --output-document=- \"%s/manager.php?cmd=%s&host=%s&pass=%s&build=%s&version=%s%s\"" % (msite,command,host,passwd,kinfo["name"],version,extra))
         log("result: '"+result+"'",kinfo)          log("  \_ result: '"+result+"'",kinfo)
         return result=="1"          return result=="1"
   
   def krn_modulesenabled(kinfo):
           """Checks the source to see if modules are enabled"""
           output=getoutput("""awk -F '=' '/^CONFIG_MODULES/{v=$2} END { printf("%s\\n", v) }' """ + kinfo["workdir"] + """/.config | sed "s/ //g" """)
           if (output=='y'):
                   result=1
           else:
                   result=0
   
           return result
   
 def krn_localversion(kinfo):  def krn_localversion(kinfo):
         """Checks the version of the local source tree specified in kinfo"""          """Checks the version of the local source tree specified in kinfo"""
         version=getoutput("""awk -F '=' '/^VERSION/{v=$2} /^PATCHLEVEL/{p=$2} /^SUBLEVEL/{s=$2} /^EXTRAVERSION/{e=$2} END { printf("%s.%s.%s%s\\n", v, p, s, e) }' """ + kinfo["workdir"] + """/Makefile | sed "s/ //g" """)          version=getoutput("""awk -F '=' '/^VERSION/{v=$2} /^PATCHLEVEL/{p=$2} /^SUBLEVEL/{s=$2} /^EXTRAVERSION/{e=$2} END { printf("%s.%s.%s%s\\n", v, p, s, e) }' """ + kinfo["workdir"] + """/Makefile | sed "s/ //g" """)
Line 129 
Line 205 
         verifydir("%s/%s" % (patchdir, kinfo["name"]),kinfo)          verifydir("%s/%s" % (patchdir, kinfo["name"]),kinfo)
   
         # sync the source to make sure we are up to date ...          # sync the source to make sure we are up to date ...
         log("calling gkb_getsource",kinfo)          log("fetching latest source",kinfo)
         gkb_getsource(kinfo)          gkb_getsource(kinfo)
   
         # now we'll go into the work          # go into the work directory
           #chdir(workdir, kinfo)
   
           # archive the clean source for later uploading
           #log("archiving source to " + kinfo["mastertree"] + ".tar.bz2", kinfo)
           #runcmd("tar cjf " + kinfo["mastertree"] + ".tar.bz2 " + kinfo["mastertree"], kinfo)
   
           # now we'll go into the tree's work dir
         chdir(kinfo["workdir"],kinfo)          chdir(kinfo["workdir"],kinfo)
   
         # check for patches and apply if necessary          # check for patches and apply if necessary
Line 155 
Line 238 
         """build a kernel, version 2.4.x"""          """build a kernel, version 2.4.x"""
   
         if krn_querymgr("checkout",kinfo):          if krn_querymgr("checkout",kinfo):
                   try:
                 myversion=krn_localversion(kinfo)                  myversion=krn_localversion(kinfo)
   
                 # fetch and cp the config file to work/.config                  # fetch and cp the config file to work/.config
Line 162 
Line 246 
   
                 # **Note** : we set the preprocessing command to premake inline instead                  # **Note** : we set the preprocessing command to premake inline instead
                 # of globally as it is only needed in this target                  # of globally as it is only needed in this target
                           if dont_build==0:
                 gkb_runmake("oldconfig",kinfo,premake+" /bin/cat %s/newlines | " % buildroot,makeopts)                  gkb_runmake("oldconfig",kinfo,premake+" /bin/cat %s/newlines | " % buildroot,makeopts)
   
                 # give option to only repackage for testing purposes, comment out clean=1 at top of this file to use this feature                  # give option to only repackage for testing purposes, comment out clean=1 at top of this file to use this feature
                 if clean==1:                          if (clean==1 and dont_build==0):
                         gkb_runmake("clean", kinfo, premake, makeopts)                          gkb_runmake("clean", kinfo, premake, makeopts)
   
                           if dont_build==0:
                 gkb_runmake("dep", kinfo, premake, makeopts)                  gkb_runmake("dep", kinfo, premake, makeopts)
   
                 gkb_runmake(kinfo["binname"], kinfo, premake, makeopts)                  gkb_runmake(kinfo["binname"], kinfo, premake, makeopts)
   
                 # We should check to see if binary built ok, if not bail out                  # We should check to see if binary built ok, if not bail out
Line 181 
Line 266 
                 if verifyfile(kbinloc,kinfo):                  if verifyfile(kbinloc,kinfo):
                         # the binary exists, so let's cp it to bin...                          # the binary exists, so let's cp it to bin...
                         copy(kbinloc,mybindir+"/boot/"+kinfo["binname"]+"-"+myversion)                          copy(kbinloc,mybindir+"/boot/"+kinfo["binname"]+"-"+myversion)
                                   copy("%s/System.map" % kinfo["workdir"],mybindir+"/boot/System.map-"+myversion)
                 else:                  else:
                         # the binary is not there, inform user and bail out with error                          # the binary is not there, inform user and bail out with error
                         deathbyerror("%s : %s is not present, assuming build failure and exiting.  See log for details." % (kinfo["name"], kbinloc))                                  raise BuildError("%s is not present, assuming build failure and exiting.  See log for details." % kbinloc)
   
                           if krn_modulesenabled(kinfo):
                 # now that we know he binary built, let's continue                  # now that we know he binary built, let's continue
                                   if dont_build==0:
                 gkb_runmake("modules",kinfo, premake, makeopts)                  gkb_runmake("modules",kinfo, premake, makeopts)
   
                 # **Note** : we prepend the INSTALL_MOD_PATH to the makeopts inline instead                  # **Note** : we prepend the INSTALL_MOD_PATH to the makeopts inline instead
                 # of globally as it is only needed in this target                  # of globally as it is only needed in this target
                 gkb_runmake("modules_install", kinfo, premake, "INSTALL_MOD_PATH=%s %s" % (mybindir, makeopts))                  gkb_runmake("modules_install", kinfo, premake, "INSTALL_MOD_PATH=%s %s" % (mybindir, makeopts))
                           else:
                                   log("skipping make modules (disabled in .config)",kinfo)
   
                           # compress and upload source archive
                           chdir(kinfo["workdir"]+"/..",kinfo)
                           archive_name = "src-%s.tar.bz2" % kinfo["mastertree"],
   
                           # compress and upload kernel binary
                 chdir(bindir,kinfo)                  chdir(bindir,kinfo)
                 archive_name = "linux-%s-%s.tar.bz2" % (kinfo["name"], myversion)                  archive_name = "linux-%s-%s.tar.bz2" % (kinfo["name"], myversion)
   
                 log("compressing binary archive "+archive_name,kinfo)                  log("compressing binary archive "+archive_name,kinfo)
   
                 if os.system("tar cjf "+archive_name+" "+os.path.basename(mybindir)):                          if runcmd("tar cjf "+archive_name+" "+os.path.basename(mybindir), kinfo):
                         deathbyerror("%s : failed to `tar cjf %s`" % (kinfo["name"], archive_name))                                  raise BuildError("failed to `tar cjf %s`" %  archive_name)
   
                 os.system("rm -rf %s" % mybindir)                          runcmd("rm -rf %s" % mybindir, kinfo)
   
                 krn_upload(archive_name,myversion,kinfo)  
   
                           krn_upload(archive_name,"kernel",myversion,kinfo)
                 krn_querymgr("checkin",kinfo)                  krn_querymgr("checkin",kinfo)
   
                           if os.fork() == 0:
                                   #in child
                                   try:
                                           # sync the source to make sure we are up to date ...
                                           log("re-fetching latest source",kinfo)
                                           gkb_getsource(kinfo)
   
                                           # go into the work directory
                                           chdir(workdir, kinfo)
   
                                           # archive the clean source for later uploading
                                           log("archiving source to " + kinfo["mastertree"] + ".tar.bz2", kinfo)
                                           runcmd("tar cjf " + kinfo["mastertree"] + ".tar.bz2 " + kinfo["mastertree"], kinfo)
   
                                           krn_upload(workdir + "/" + kinfo["mastertree"] + ".tar.bz2", "source", myversion, kinfo)
                                   finally:
                                           sys.exit(0)
   
                   except BuildError, e:
                           log(e.message, kinfo)
                           krn_querymgr("checkin",kinfo,"&failed=%s" % krn_localversion(kinfo))
                   except:
                           krn_querymgr("checkin",kinfo,"&failed=%s" % krn_localversion(kinfo))
                           raise
   
 def krn_build26(kinfo):  def krn_build26(kinfo):
         """build a kernel, version 2.6"""          """build a kernel, version 2.6"""
   
Line 233 
Line 352 
   
         syncline=args+" "+kinfo["workdir"]          syncline=args+" "+kinfo["workdir"]
   
         log("running rsync : %s %s" % (syncoptions, syncline),kinfo)          #logging now in runcmd
         if os.system("%s %s > %s/%s/rsync.log 2>&1" % (syncoptions, syncline, logdir, kinfo["name"])):          #log("running rsync : %s %s" % (syncoptions, syncline),kinfo)
                 deathbyerror("%s : sync failed, tried %s.  See log for details." % (kinfo["name"], syncline) )          if runcmd("%s %s" % (syncoptions, syncline), kinfo, "%s/%s/rsync.log" % (logdir, kinfo["name"])):
                   raise BuildError("sync failed, tried %s.  See log for details." %  syncline)
         # Gerk comment:  
         # This above might cause problems ... it (I think) relies on anything coming from stderr to tell  
         # if it has in fact died... we should test this out.  If this is the case me might need to make  
         # a stub of some sorts to handle the build/error return process...  
   
   
 def get_wget(kinfo):  def get_wget(kinfo):
         #needs work          #needs work
Line 251 
Line 365 
         log("fetching source archive " % args,kinfo)          log("fetching source archive " % args,kinfo)
         mysourcefile="%s/%s.tar.bz2" % (kinfo["workdir"],kinfo["name"])          mysourcefile="%s/%s.tar.bz2" % (kinfo["workdir"],kinfo["name"])
   
         if os.system("wget --quiet --output-document=%s %s/configs/%s" % (myconfigfile,msite,kinfo["name"])):          if runcmd("wget --quiet --output-document=%s %s/configs/%s" % (myconfigfile,msite,kinfo["name"]), kinfo):
                 deathbyerror("%s : unable to download configfile, aborting." % (kinfo["name"]))                  raise BuildError("unable to download configfile, aborting.")
   
         log("decompressing source file",kinfo)          log("decompressing source file",kinfo)
         if os.system("tar xjf " % (myconfigfile,msite,kinfo["name"])):          if runcmd("tar xjf " % (myconfigfile,msite,kinfo["name"]), kinfo):
                 deathbyerror("%s : unable to decompress source file, aborting." % (kinfo["name"]))                  raise BuildError("unable to decompress source file, aborting.")
   
 def get_vanilla(kinfo):  def get_vanilla(kinfo):
         args=mastertrees[kinfo["mastertree"]]["args"]          args=mastertrees[kinfo["mastertree"]]["args"]
Line 264 
Line 378 
         log("fetching source archive %s" % args)          log("fetching source archive %s" % args)
         mysourcefile="%s/%s.tar.bz2" % (workdir,kinfo["name"])          mysourcefile="%s/%s.tar.bz2" % (workdir,kinfo["name"])
   
         if os.system("wget -c --output-document=%s %s" % (mysourcefile,args)):          if runcmd("wget -c --output-document=%s %s" % (mysourcefile,args), kinfo):
                 deathbyerror("%s : unable to download source file %s, aborting." % (kinfo["name"], args))                  raise BuildError("unable to download source file %s, aborting." %  args)
   
         log("decompressing source file %s" % mysourcefile,kinfo)          log("decompressing source file %s" % mysourcefile,kinfo)
   
Line 280 
Line 394 
                 trash=pfd.read(4096)                  trash=pfd.read(4096)
   
         if pfd.close():          if pfd.close():
                 deathbyerror("%s : unable to decompress source file, aborting." % (kinfo["name"]))                  raise BuildError("unable to decompress source file, aborting.")
   
         fnames=split(data)          fnames=split(data)
         name=fnames[0]          name=fnames[0]
   
         os.system("rm -rf %s" % kinfo["workdir"])          runcmd("rm -rf %s" % kinfo["workdir"], kinfo)
         move(work + "/" + dirname, kinfo["workdir"])          move(work + "/" + dirname, kinfo["workdir"])
   
         #restore the previous working ectory          #restore the previous working ectory
Line 303 
Line 417 
                         mypatchfile="%s/%s/%s.patch" % (patchdir,kinfo["name"],patch)                          mypatchfile="%s/%s/%s.patch" % (patchdir,kinfo["name"],patch)
   
                         # download pathfile or bail                          # download pathfile or bail
                         if os.system("wget --quiet --output-document=%s %s/patches/%s/%s" % (mypatchfile,msite,kinfo["name"],patch)):                          if runcmd("wget --quiet --output-document=%s %s/patches/%s/%s" % (mypatchfile,msite,kinfo["name"],patch), kinfo):
                                 deathbyerror("%s : unable to download patchfile %s, aborting." % (kinfo["name"],patch))                                  raise BuildError("unable to download patchfile %s, aborting." % patch)
   
                         # we have a patch file, apply it or bail                          # we have a patch file, apply it or bail
                         log("perfoming patch with %s" % patch,kinfo)                          log("perfoming patch with %s" % patch,kinfo)
                         patchcommand="patch -p1 < %s > %s/%s/patch-%s.log 2>&1" % (mypatchfile,logdir,kinfo["name"],patch)  
                         log("using %s from %s" % (patchcommand,kinfo["workdir"]),kinfo)                          # former patchcommand was:
                           #patchcommand="patch -p1 < %s > %s/%s/patch-%s.log 2>&1" % (mypatchfile,logdir,kinfo["name"],patch)
                           #log("using %s from %s" % (patchcommand,kinfo["workdir"]),kinfo)
   
                         chdir(kinfo["workdir"],kinfo)                          chdir(kinfo["workdir"],kinfo)
                         if os.system(patchcommand):                          if runcmd("patch -p1", kinfo, "%s/%s/patch-%s.log" % (logdir,kinfo["name"],patch), False, mypatchfile):
                                 deathbyerror("%s : patchfile %s failed, aborting.  See patch log for details." % (kinfo["name"],patch))                                  raise BuildError("patchfile %s failed, aborting.  See patch log for details." % patch)
         else:          else:
                 log("no patchfiles, continuing",kinfo)                  log("no patchfiles, continuing",kinfo)
   
 def krn_config(kinfo):  def krn_config(kinfo):
         """method to fetch and place config file for running kernel build"""          """method to fetch and place config file for running kernel build"""
   
         if kinfo["config"]==1:          if kinfo["configpath"]:
                   log("using config file %s" % kinfo["configpath"],kinfo)
                   myconfigfile="%s/%s" % (kinfo["workdir"],kinfo["configpath"])
   
                   log("copying config file to %s/.config" % kinfo["workdir"],kinfo)
                   copy(verifyfile(myconfigfile,kinfo),"%s/.config" % kinfo["workdir"])
   
           elif kinfo["config"]==1:
                 log("fetching config file",kinfo)                  log("fetching config file",kinfo)
                 myconfigfile="%s/%s.config" % (configdir,kinfo["name"])                  myconfigfile="%s/%s.config" % (configdir,kinfo["name"])
   
                 if os.system("wget --quiet --output-document=%s %s/configs/%s" % (myconfigfile,msite,kinfo["name"])):                  if runcmd("wget --quiet --output-document=%s %s/configs/%s" % (myconfigfile,msite,kinfo["name"]), kinfo):
                         deathbyerror("%s : unable to download configfile, aborting." % (kinfo["name"]))                          raise BuildError("unable to download configfile, aborting.")
   
                 log("copying config file to %s/.config" % kinfo["workdir"],kinfo)                  log("copying config file to %s/.config" % kinfo["workdir"],kinfo)
                 copy(verifyfile(myconfigfile,kinfo),"%s/.config" % kinfo["workdir"])                  copy(verifyfile(myconfigfile,kinfo),"%s/.config" % kinfo["workdir"])
Line 333 
Line 457 
 def gkb_runmake(command, kinfo, premake, makeopts):  def gkb_runmake(command, kinfo, premake, makeopts):
         """Supporting method for build() ... a stub to run a make target and auto log it, given make target (command) and name (kernel name)"""          """Supporting method for build() ... a stub to run a make target and auto log it, given make target (command) and name (kernel name)"""
         log("running make %s" % command,kinfo)          log("running make %s" % command,kinfo)
         if os.system("%s make %s %s > %s/%s/make-%s.log 2>&1" % (premake, makeopts, command, logdir, kinfo["name"], command)):  
                 deathbyerror("%s : unable to run make %s, aborting." % (kinfo["name"],command))          # check to see if we need to run a simple make
           # for some reason 2.2 kernels can't handle premake, makeopts, etc.
           localversion = krn_localversion(kinfo)
   
           if (string.find(localversion,"2.2") == 0):
                   if runcmd("%s make %s" % (premake,command), kinfo, "%s/%s/make-%s.log" % (logdir, kinfo["name"], command)):
                           raise BuildError("unable to run make %s, aborting." % command)
           else:
                   if runcmd("%s make %s %s" % (premake, makeopts, command), kinfo, "%s/%s/make-%s.log" % (logdir, kinfo["name"], command)):
                           raise BuildError("unable to run make %s, aborting." % command)
   
 def gkb_parsexml(name):  def gkb_parsexml(name):
         """parse the xml build file into mastertrees and builds"""          """parse the xml build file into mastertrees and builds"""
Line 349 
Line 482 
         p.StartElementHandler = start_element          p.StartElementHandler = start_element
         p.ParseFile(open(name))          p.ParseFile(open(name))
   
 def krn_upload(file, version, kinfo):  def krn_upload(file, type, version, kinfo):
         """upload the indicated file to the distribution site (kernel archives)"""          """upload the indicated file to the distribution site (kernel archives)"""
         forms = ParseResponse(urlopen(msite+"/fileupload.html"))  
           if type=="kernel":
                   log("uploading kernel version "+version+" to "+msite,kinfo)
           elif type=="source":
                   log("uploading source "+kinfo["mastertree"]+" to "+msite,kinfo)
           else:
                   raise BuildException, "invalid file upload type: " + type
   
           forms = ParseResponse(urlopen(msite+"/upload.html"))
         form = forms[0]          form = forms[0]
   
         form["host"] = host          form["host"] = host
         form["pass"] = passwd          form["pass"] = passwd
           form["type"] = type
           form["tree"] = kinfo["mastertree"]
         form["build"] = kinfo["name"]          form["build"] = kinfo["name"]
         form["version"] = version          form["version"] = version
   
         form.add_file(open(file), None, os.path.basename(file))          form.add_file(open(file), "application/x-bzip2", os.path.basename(file))
   
         log("uploading kernel version "+version+" to "+msite,kinfo)  
         # form.click() returns a urllib2.Request object          # form.click() returns a urllib2.Request object
         # (see HTMLForm.click.__doc__ if you don't have urllib2)          # (see HTMLForm.click.__doc__ if you don't have urllib2)
         response2 = urlopen(form.click("cmd"))          response = urlopen(form.click("cmd"))
   
           if debug:
                   print response.geturl()
                   print response.info()  # headers
                   print response.read()  # body
   
         #print response2.geturl()          log("  \_ response: " + response.read(),kinfo)
         #print response2.info()  # headers  
         #print response2.read()  # body  
         log("response: " + response2.read(),kinfo)  
   
         response2.close()          response.close()
   
 def main():  def main():
         """ main program gets executed here """          """ main program gets executed here """
Line 382 
Line 526 
         today=getoutput("date +%D")          today=getoutput("date +%D")
         buildtime=getoutput("date +'%R:%S %Z'")          buildtime=getoutput("date +'%R:%S %Z'")
   
         print "GKB started %s %s" % (today,buildtime)          print "GNU Kernel Builder started %s %s" % (today,buildtime)
   
         # verify the existence important directories, and create if necessary          # verify the existence important directories, and create if necessary
         verifydir(logdir)          verifydir(logdir)
Line 392 
Line 536 
         verifydir("%s/work" % buildroot) # build dir, make sure it exists          verifydir("%s/work" % buildroot) # build dir, make sure it exists
   
         # download the build jobs from the master site          # download the build jobs from the master site
         if os.system("wget --quiet --output-document=gkb.xml \"%s/manager.php?cmd=getjobs&host=%s&pass=%s\"" % (msite,host,passwd)):          log("fetching build jobs from master site")
                 deathbyerror("Unable to download build config from master site %s, aborting." % msite)          if runcmd("wget --quiet --output-document=gkb.xml \"%s/manager.php?cmd=getjobs&host=%s&pass=%s\"" % (msite,host,passwd)):
                   raise FatalError, "Unable to download build jobs from master site %s, aborting." % msite
   
         # sets up 'mastertrees' and 'builds' dicts          # sets up 'mastertrees' and 'builds' dicts
         gkb_parsexml('gkb.xml')          gkb_parsexml('gkb.xml')
Line 402 
Line 547 
                 myworkdir="%s/%s" % (workdir,bdict["mastertree"])                  myworkdir="%s/%s" % (workdir,bdict["mastertree"])
                 bdict["workdir"]=myworkdir                  bdict["workdir"]=myworkdir
   
                   try:
                 # for now just call the build                  # for now just call the build
                 gkb_build(root, bdict)                  gkb_build(root, bdict)
                   except BuildError, e:
                           log(e.message, bdict)
                   except KeyboardInterrupt, e:
                           log("Caught keyboard interrupt, exiting...")
                           break
   
         endtime=getoutput("date +'%R:%S %Z'")          endtime=getoutput("date +'%R:%S %Z'")
   


Generate output suitable for use with a patch program
Legend:
Removed from v.1.4  
changed lines
  Added in v.1.35

Tobias McNulty

Powered by ViewCVS 1.0-dev
(Powered by ViewCVS)

ViewCVS and CVS Help