aMule Forum

Please login or register.

Login with username, password and session length
Advanced search  

News:

We're back! (IN POG FORM)

Author Topic: python script for download and compile svn version of amule  (Read 1644 times)

FreeToGo

  • Jr. Member
  • **
  • Karma: 3
  • Offline Offline
  • Posts: 65
python script for download and compile svn version of amule
« on: December 12, 2008, 10:05:37 PM »

#! /usr/bin/python
import os
import re
import urllib2
svnHttp="http://amule.uw.hu/tarballs/tarballs.xml"
tarHttp="http://amule.uw.hu/tarballs"

def regexMatches(matchstr,rawstr):
   #match_obj = re.search(rawstr, matchstr)
   match_objs = re.findall(rawstr, matchstr)   
   return match_objs   
   
def getCurrentRevisionNum():
   stdout_handle = os.popen("amule --version","r")
   matchstr = stdout_handle.read()
   rawstr = r"""rev.*(?P<rev>\d{4,4})"""
   m = regexMatches(matchstr,rawstr)
   if len(m) ==1 :   
      return int(m[0])
   else:
      return -1
def getWebPage():
   res = urllib2.urlopen(svnHttp)
   page = res.read()
   #print page
   return page

def getMostUpdatedSvnRevisionNum(wpage):
   
   rawstr = r"""revision='(?P<rev>\d{4,4})'"""
   m = regexMatches(wpage,rawstr)
   m.sort()
   m.reverse()
   return int(m[0])

def getNewerSvnRevisionNum(wpage):
   ret={}
   ret["currentRevision"] = getCurrentRevisionNum()
   ret["mostUpdatedRevision"] = getMostUpdatedSvnRevisionNum(wpage)
   ret["branch"]=None
   ret["outdated"]=True
   if (not ret["currentRevision"]) or \
      (not ret["mostUpdatedRevision"]) or \
      (ret["mostUpdatedRevision"] <= ret["currentRevision"]):
         ret["outdated"]=False
      
   revPos=wpage.rfind("%04d"%ret["mostUpdatedRevision"])
   s = wpage[revPos:-1].split(">")[0]
   #print s
   pos= s.rfind("branch=")
   if pos > 0:
      branch=s[pos+8:-2]
      ret["branch"] = branch
   #print ret
   return ret

def downloadSVN(revNum,branch):
   
   fBasename="aMule-SVN-r%04d"%revNum
   if branch:
      fBasename+="-%s"%branch
   fName=fBasename+".tar.bz2"
   bashScript="cd /tmp; rm aMule* -Rf;"
   if os.path.exists("/usr/bin/axel"):
      downloader="axel"
   else:
      downloader="wget"
   bashScript+="%s %s/%s; "%(downloader,tarHttp,fName)
   bashScript+="tar jxvf %s; "%fName
   bashScript+="cd /tmp/%s ;"%fBasename
   bashScript+="./configure --prefix=/usr --enable-geoip --enable-amule-gui --enable-amule-daemon --enable-optimize --enable-alc --enable-webserver &&  "
   bashScript+= " make -j 4 && sudo make install"
   #bashScript = ("bash -c \"%s\" |zenity --text-info")%bashScript
   print bashScript
   stdout_handle = os.system(bashScript)
   print stdout_handle

def main():
   wpage=getWebPage()
   ret = getNewerSvnRevisionNum(wpage)
   print "Installed Revision=%04d"%ret["currentRevision"]
   print "Newest Revision=%04d"%ret["mostUpdatedRevision"]
   if ret["branch"]:
      print "Branch=%s"%ret["branch"]
   if not ret["outdated"]:
      print "You have already got the newest SVN Revision!"
      
      return
   else:
      downloadSVN(ret["mostUpdatedRevision"],ret["branch"])
      #print "dummy"
   


if __name__ == '__main__':
   main()
« Last Edit: December 16, 2008, 04:10:26 PM by FreeToGo »
Logged
You can mock me. I can take it.