Gaudi Framework, version v21r4

Home   Generated: 7 Sep 2009

tag_release Namespace Reference


Functions

def extract_version
def gather_new_versions
def svn
def svn_ls
def main

Variables

string __author__ = "Marco Clemencic <Marco.Clemencic@cern.ch>"
tuple _req_version_pattern = re.compile(r"^\s*version\s*(v[0-9]+r[0-9]+(?:p[0-9]+)?)\s*$")
tuple _use_pattern = re.compile(r"^\s*use\s*(\w+)\s*(v[0-9]+r[0-9]+(?:p[0-9]+)?)\s*(\w+)?\s*$")


Function Documentation

def tag_release::extract_version (   f  ) 

Find the version number in a requirements file.

Definition at line 14 of file tag_release.py.

00014                       :
00015     """
00016     Find the version number in a requirements file.
00017     """ 
00018     global _req_version_pattern
00019     for l in open(f):
00020         m = _req_version_pattern.match(l)
00021         if m:
00022             return m.group(1)
00023     return None
00024 
_use_pattern = re.compile(r"^\s*use\s*(\w+)\s*(v[0-9]+r[0-9]+(?:p[0-9]+)?)\s*(\w+)?\s*$")

def tag_release::gather_new_versions (   f  ) 

Definition at line 26 of file tag_release.py.

00026                           :
00027     global _use_pattern
00028     versions = {}
00029     for l in open(f):
00030         m = _use_pattern.match(l)
00031         if m:
00032             versions[m.group(1)] = m.group(2)
00033     return versions
00034 
def svn(*args, **kwargs):

def tag_release::main (  ) 

Definition at line 42 of file tag_release.py.

00042           :
00043     use_pre = len(sys.argv) > 1 and 'pre' in  sys.argv
00044     url = "svn+ssh://svn.cern.ch/reps/gaudi"
00045     puburl = "https://svnweb.cern.ch/guest/gaudi"
00046     packages = gather_new_versions("requirements")
00047     packages["GaudiRelease"] = extract_version("requirements")
00048     tempdir = tempfile.mkdtemp()
00049     try:
00050         os.chdir(tempdir)
00051         # prepare root dir
00052         svn("co","-N", url, "gaudi").wait()
00053         os.chdir("gaudi")
00054         
00055         pvers = packages["GaudiRelease"]
00056         if use_pre:
00057             pvers += "-pre"
00058         
00059         to_commit = []
00060         
00061         # prepare project tag
00062         if (pvers + "/") not in svn_ls("%s/projects/GAUDI/tags" % url):
00063             svn("co", "-N", "%s/projects/GAUDI/tags" % url, "ProjTags").wait()
00064             svn("cp", "%s/projects/GAUDI/trunk" % url, os.path.join("ProjTags",pvers)).wait()
00065             to_commit.append("ProjTags")
00066         
00067         # prepare package tags
00068         for p in packages:
00069             tagsdir = "%s/packages/%s/tags" % (url, p) 
00070             tags = svn_ls(tagsdir)
00071             tag = packages[p]
00072             pre_tag = tag + "-pre"
00073             # I have to make the tag if it doesn't exist and (if we use -pre tags)
00074             # neither the -pre tag exists.
00075             make_tag = (tag+"/") not in tags and (use_pre and (pre_tag+"/") not in tags)
00076             if make_tag:
00077                 svn("co", "-N", tagsdir, "%s_Tags" % p).wait()
00078                 if use_pre:
00079                     tag = pre_tag
00080                 svn("cp", "%s/packages/%s/trunk" % (url, p), "%s_Tags/%s" % (p, tag)).wait()
00081                 to_commit.append("%s_Tags" % p)
00082         
00083         # prepare "distribution" dir
00084         distvers = pvers
00085         if ("GAUDI_%s/" % distvers) not in svn_ls("%s/distribution/tags/GAUDI" % url):
00086             svn("co","-N", "%s/distribution/tags/GAUDI" % url, "DistTags").wait()
00087             svn("mkdir", os.path.join("DistTags", "GAUDI_%s" % distvers)).wait()
00088             externals = open(os.path.join(tempdir, "svn_externals"), "w")
00089             pks = packages.keys()
00090             pks.sort()
00091             for p in pks:
00092                 externals.write("%(pack)-20s %(url)s/packages/%(pack)s/tags/%(vers)s\n" % { "pack": p,
00093                                                                                             "vers": packages[p],
00094                                                                                             "url" : puburl })
00095             externals.write("%(dir)-20s %(url)s/projects/%(proj)s/tags/%(vers)s\n" % { "dir" : "cmt",
00096                                                                                        "proj": "GAUDI",
00097                                                                                        "vers": pvers,
00098                                                                                        "url" : puburl })
00099             externals.close()
00100             svn("ps", "-F", externals.name, "svn:externals", os.path.join("DistTags", "GAUDI_%s" % distvers)).wait()
00101             to_commit.append("DistTags")
00102         
00103         if to_commit:
00104             apply(svn, ["ci"] + to_commit).wait()
00105         else:
00106             print "Nothing to commit"
00107         
00108     finally:
00109         shutil.rmtree(tempdir, ignore_errors = True)
00110     
00111     return 0
00112 
if __name__ == '__main__':

def tag_release::svn (   args,
  kwargs 
)

Definition at line 35 of file tag_release.py.

00035                         :
00036     print "> svn", " ".join(args)
00037     return apply(Popen, (["svn"] + list(args),), kwargs)
00038 
def svn_ls(url):

def tag_release::svn_ls (   url  ) 

Definition at line 39 of file tag_release.py.

00039                :
00040     return svn("ls", url, stdout = PIPE).communicate()[0].splitlines()
00041     
def main():


Variable Documentation

string tag_release::__author__ = "Marco Clemencic <Marco.Clemencic@cern.ch>"

Definition at line 8 of file tag_release.py.

tuple tag_release::_req_version_pattern = re.compile(r"^\s*version\s*(v[0-9]+r[0-9]+(?:p[0-9]+)?)\s*$")

Definition at line 13 of file tag_release.py.

tuple tag_release::_use_pattern = re.compile(r"^\s*use\s*(\w+)\s*(v[0-9]+r[0-9]+(?:p[0-9]+)?)\s*(\w+)?\s*$")

Definition at line 25 of file tag_release.py.


Generated at Mon Sep 7 18:27:41 2009 for Gaudi Framework, version v21r4 by Doxygen version 1.5.6 written by Dimitri van Heesch, © 1997-2004