3 Small script finalize the "-pre" tags into regular tags for the packages in Gaudi.
5 See https://twiki.cern.ch/twiki/bin/view/Gaudi/GaudiSVNRepository for a
6 description of the repository structure.
8 __author__ =
"Marco Clemencic <Marco.Clemencic@cern.ch>"
11 import tempfile, shutil, re
12 from subprocess
import Popen, PIPE
16 cwd = kwargs.get(
"cwd", os.getcwd())
17 print ">>>> %s: %s" % (cwd, cmd)
18 return apply(Popen, (cmd,), kwargs)
20 return apply(_spawn, args, kwargs).wait()
22 kwargs[
"stdout"] = PIPE
23 p = apply(_spawn, args, kwargs)
24 out = p.communicate()[0]
25 return out, p.returncode
27 def svn(*args, **kwargs):
28 return apply(_exec_cmd, [
"svn"] + list(args), kwargs)
31 return apply(_exec_cmd_output, [
"svn"] + list(args), kwargs)
33 for c
in [
"co",
"up",
"ci",
"ls",
"add",
"rm",
"cp",
"mkdir",
"mv",
"pg"]:
35 def svn_%(cmd)s(*args, **kwargs):
36 return apply(svn, ["%(cmd)s"] + list(args), kwargs)
37 def svn_%(cmd)s_output(*args, **kwargs):
38 return apply(svn_output, ["%(cmd)s"] + list(args), kwargs)
43 cmd = [
"svn",
"ci"] + args
44 print "(n)> %s: %s" % (cwd, cmd)
48 return url.rsplit(
"/", 1)[-1]
51 return url.rsplit(
"/", 1)[1]
54 d,b = url.rsplit(
"/", 1)
55 l = [x.rstrip(
"/")
for x
in svn_ls(d)]
59 def checkout_level(base):
60 dirs = [
"%s/%s" % (base, d)
for d
in svn_ls_output(base)[0].splitlines()
if d.endswith(
"/")]
61 apply(svn, [
"up",
"-N"] + dirs)
64 svn(
"co",
"-N", url, root)
71 for x
in svn_pg_output(
"packages",
".")[0].splitlines()]
72 if x
and not x.startswith(
"#") ]
74 pkg_tag_dirs = [ proj +
"/tags/" + pkg
for pkg
in packages ]
75 apply(svn, [
"up",
"-N", proj, proj +
"/tags"] + pkg_tag_dirs)
80 return [f.rstrip(
"/")
for f
in svn_ls_output(path)[0].splitlines()]
83 url =
"svn+ssh://svn.cern.ch/reps/gaudi"
85 tempdir = tempfile.mkdtemp()
93 pre_rx = re.compile(
"(v[0-9]+r[0-9]+(p[0-9]+)?)-pre([0-9]*)")
97 pre_tags = [ (t.group(0), t.group(1), t.group(3))
98 for t
in map(pre_rx.match, entries)
102 for pt, t, ptv
in pre_tags:
107 if (t
not in tags)
or (tags[t][0] < ptv):
110 tags = dict(zip(tags.keys(),
map(
lambda a: a[1], tags.values())))
112 pretagdir =
"%s/tags/%s/%s" %(proj, p, tags[tag])
113 tagdir =
"%s/tags/%s/%s" %(proj, p, tag)
114 if tag
not in entries:
115 svn_up(
"-N", pretagdir)
116 svn_cp(pretagdir, tagdir)
121 shutil.rmtree(tempdir, ignore_errors =
True)
124 if __name__ ==
'__main__':