[Treepkg-commits] r474 - in trunk: recipes/kde/enterprise test treepkg
scm-commit@wald.intevation.org
scm-commit at wald.intevation.org
Tue Nov 9 18:20:48 CET 2010
Author: bricks
Date: 2010-11-09 18:20:47 +0100 (Tue, 09 Nov 2010)
New Revision: 474
Modified:
trunk/recipes/kde/enterprise/generic.py
trunk/test/test_info.py
trunk/test/test_listpackages.py
trunk/test/test_notifications.py
trunk/test/test_packager.py
trunk/test/test_readconfig.py
trunk/treepkg/packager.py
trunk/treepkg/readconfig.py
Log:
new variable to set choose the scm for sources and debian dirs
svn_url and git_url are now deprecated in favour of url and scm_type
added a tag detector for git in kde enterprise packager
Modified: trunk/recipes/kde/enterprise/generic.py
===================================================================
--- trunk/recipes/kde/enterprise/generic.py 2010-11-09 15:26:20 UTC (rev 473)
+++ trunk/recipes/kde/enterprise/generic.py 2010-11-09 17:20:47 UTC (rev 474)
@@ -14,6 +14,7 @@
import treepkg.packager
import treepkg.subversion as subversion
+import treepkg.git as git
class SourcePackager(treepkg.packager.SourcePackager):
@@ -59,20 +60,39 @@
extra_config_desc = [("tags_url", str, ""),
("tags_pattern", str, ""),
("tags_subdir", str, ""),
- ("tags_rules_subdir", str, "")]
+ ("tags_scm_type", str, scm_type),
+ ("tags_rules_url", str, None),
+ ("tags_rules_pattern", str, None),
+ ("tags_rules_subdir", str, ""),
+ ("tags_rules_scm_type", str, rules_scm_type)]
def __init__(self, *args, **kw):
tags_url = kw.pop("tags_url")
tags_pattern = kw.pop("tags_pattern")
tags_subdir = kw.pop("tags_subdir")
+ tags_rules_url = kw.pop("tags_rules_url")
+ tags_rules_pattern = kw.pop("tags_rules_pattern", tags_pattern)
tags_rules_subdir = kw.pop("tags_rules_subdir")
super(PackageTrack, self).__init__(*args, **kw)
- self.tag_detector = subversion.TagDetector(tags_url, tags_pattern,
+ if tags_scm_type == "git":
+ self.tag_detector = git.TagDetector(tags_url, tags_pattern)
+ elif tags_scm_type == "svn":
+ self.tag_detector = subversion.TagDetector(tags_url, tags_pattern,
tags_subdir)
- self.tag_rules_detector = subversion.TagDetector(tags_url, tags_pattern,
- tags_rules_subdir)
+ else:
+ raise packager.PackageError("Unknown scm type \"%s\" for tag" \
+ " sources set" % tags_scm_type)
+ if tags_rules_scm_type == "git":
+ self.tag_rules_detector = git.TagDetector(tags_rules_url,
+ tags_rules_pattern)
+ elif tags_rules_scm_type == "svn":
+ self.tag_rules_detector = subversion.TagDetector(tags_rules_url,
+ tags_rules_pattern, tags_rules_subdir)
+ else:
+ raise packager.PackageError("Unknown scm type \"%s\" for tag" \
+ " rules set" % tags_rules_scm_type)
self.found_tag_rules = False
- if tags_rules_subdir:
+ if tags_rules_url:
self.found_tag_rules = True
def packager_for_new_revision(self):
Modified: trunk/test/test_info.py
===================================================================
--- trunk/test/test_info.py 2010-11-09 15:26:20 UTC (rev 473)
+++ trunk/test/test_info.py 2010-11-09 17:20:47 UTC (rev 474)
@@ -37,7 +37,7 @@
[pkg_simple]
pkg_basename: simple1
-svn_url: svn://example.com/%(name)s/trunk
+url: svn://example.com/%(name)s/trunk
base_dir: %(tracks_dir)s/%(name)s
packager_class: treepkginfo_test.%(name)s
handle_dependencies: True
Modified: trunk/test/test_listpackages.py
===================================================================
--- trunk/test/test_listpackages.py 2010-11-09 15:26:20 UTC (rev 473)
+++ trunk/test/test_listpackages.py 2010-11-09 17:20:47 UTC (rev 474)
@@ -75,12 +75,12 @@
instructions_file:
[pkg_kdepim]
-svn_url: svn://anonsvn.kde.org/home/kde/branches/kdepim/enterprise/kdepim
+url: svn://anonsvn.kde.org/home/kde/branches/kdepim/enterprise/kdepim
base_dir: %%(tracks_dir)s/kdepim
packager_class: recipes.kde_enterprise_3_5.kdepim
[pkg_kdepimlibs]
-svn_url: svn://anonsvn.kde.org/home/kde/branches/kdepim/enterprise/kdepimlibs
+url: svn://anonsvn.kde.org/home/kde/branches/kdepim/enterprise/kdepimlibs
base_dir: %%(tracks_dir)s/kdepimlibs
packager_class: recipes.kde_enterprise_3_5.kdepim
"""
Modified: trunk/test/test_notifications.py
===================================================================
--- trunk/test/test_notifications.py 2010-11-09 15:26:20 UTC (rev 473)
+++ trunk/test/test_notifications.py 2010-11-09 17:20:47 UTC (rev 474)
@@ -32,7 +32,7 @@
instructions_file:
[pkg_kdepim]
-svn_url: svn://anonsvn.kde.org/home/kde/branches/kdepim/enterprise/kdepim
+url: svn://anonsvn.kde.org/home/kde/branches/kdepim/enterprise/kdepim
base_dir: %%(tracks_dir)s/kdepim
packager_class: recipes.kde_enterprise_3_5.kdepim
"""
Modified: trunk/test/test_packager.py
===================================================================
--- trunk/test/test_packager.py 2010-11-09 15:26:20 UTC (rev 473)
+++ trunk/test/test_packager.py 2010-11-09 17:20:47 UTC (rev 474)
@@ -112,7 +112,7 @@
rootcmd = os.path.join(os.path.dirname(__file__), os.pardir, "test",
"mocksudopbuilder.py")
track = PackageTrack(name="testpkg", base_dir=self.trackdir,
- svn_url=self.svn_url, builderconfig="",
+ url=self.svn_url, builderconfig="",
root_cmd=[sys.executable, rootcmd],
deb_email="treepkg at example.com",
deb_fullname="treepkg tester",
@@ -593,7 +593,7 @@
def __init__(self, name, handle_dependencies, requires, provides):
defaults = dict(base_dir="/home/builder/tracks/" + name,
- svn_url="svn://example.com",
+ url="svn://example.com",
root_cmd=["false"],
builderconfig="/home/builder/pbuilderrc",
deb_email="treepkg at example.com", deb_fullname="treepkg",
Modified: trunk/test/test_readconfig.py
===================================================================
--- trunk/test/test_readconfig.py 2010-11-09 15:26:20 UTC (rev 473)
+++ trunk/test/test_readconfig.py 2010-11-09 17:20:47 UTC (rev 474)
@@ -38,7 +38,7 @@
[pkg_simple]
pkg_basename: simple1
-svn_url: svn://example.com/%(name)s/trunk
+url: svn://example.com/%(name)s/trunk
base_dir: %(tracks_dir)s/%(name)s
packager_class: readconfig_test.%(name)s
handle_dependencies: True
@@ -49,14 +49,14 @@
status_hook: echo simple hook
[pkg_extraargs]
-svn_url: svn://example.com/%(name)s/trunk
+url: svn://example.com/%(name)s/trunk
svn_subset: -N .
subdir
svn_externals: scripts admin
base_dir: %(tracks_dir)s/%(name)s
packager_class: readconfig_test.extraargs
orig_tarball: %(base_dir)s/mytarball.tgz
-rules_svn_url: file:///tmp/my-debian-repository
+rules_url: file:///tmp/my-debian-repository
deb_build_options: parallel=2
os: bar os
status_hook: echo extra hook
@@ -112,13 +112,12 @@
signing_key_id="",
svn_externals=["scripts", "admin"],
svn_subset=[(".", False), ("subdir", True)],
- svn_url="svn://example.com/extraargs/trunk",
- rules_svn_url="file:///tmp/my-debian-repository",
+ url="svn://example.com/extraargs/trunk",
+ rules_url="file:///tmp/my-debian-repository",
version_template="%(revision)s",
orig_tarball=("/home/builder/mill/"
"tracks/extraargs/mytarball.tgz"),
- git_url="",
- git_branch="",
+ branch="",
builder_cls="PBuilder",
os="bar os",
status_hook="echo extra hook"),
@@ -129,7 +128,7 @@
deb_email="treepkg at example.com",
deb_fullname="TreePKG",
deb_build_options="",
- rules_svn_url="",
+ rules_url="",
pkg_revision_template="treepkg%(pkg_revision)s",
handle_dependencies=True,
packager_class="readconfig_test.simple",
@@ -139,10 +138,9 @@
signing_key_id="abcd1234",
svn_externals=[],
svn_subset=[],
- svn_url="svn://example.com/simple/trunk",
+ url="svn://example.com/simple/trunk",
version_template="1.0.svn%(revision)s",
- git_url="",
- git_branch="",
+ branch="",
builder_cls="PBuilder",
os="foo os",
status_hook="echo simple hook")])
Modified: trunk/treepkg/packager.py
===================================================================
--- trunk/treepkg/packager.py 2010-11-09 15:26:20 UTC (rev 473)
+++ trunk/treepkg/packager.py 2010-11-09 17:20:47 UTC (rev 474)
@@ -36,6 +36,11 @@
return property(get)
+
+class PackagerError(Exception):
+
+ """Base class for Packager specific errors raised by TreePKG"""
+
class SourcePackager(object):
pkg_basename = property(lambda self: self.track.pkg_basename)
@@ -485,14 +490,15 @@
extra_config_desc = []
def __init__(self, name, base_dir, root_cmd, builderconfig, deb_email,
- deb_fullname, svn_url="", packager_class="treepkg.packager",
+ deb_fullname, url="", packager_class="treepkg.packager",
version_template="%(revision)s", builder_cls="PBuilder",
pkg_revision_template="treepkg%(pkg_revision)s",
handle_dependencies=False, signing_key_id="", do_build=True,
- rules_svn_url=None, deb_build_options="", pkg_basename="",
+ rules_url=None, deb_build_options="", pkg_basename="",
changelog_msg_template="Update to r%(revision)s",
- svn_subset=(), svn_externals=(), git_branch="", git_url="",
- os="", status_hook="", rules_git_url=None):
+ svn_subset=(), svn_externals=(), branch="",
+ scm_type="svn", rules_scm_type="svn",
+ os="", status_hook="", svn_url=None):
self.name = name
# Convert the builder_cls option to a class
@@ -528,28 +534,48 @@
self.pkg_dir_regex = re.compile(r"(?P<revision>[0-9a-f]+)"
r"-(?P<rules_revision>[0-9a-f]+)$")
self.status_hook = status_hook
+
+ if svn_url:
+ url = svn_url
+ scm_type = "svn"
+ logging.warning("Track: %s options contain svn_url which is " \
+ "deprecated. Please use url together with scm_type " \
+ "svn instead." % name)
+
+ # use local debian dir if rules url is not set
+ if not rules_url:
+ rules_scm_type = "local"
+
externals = svn_externals
if not externals:
externals = self.svn_external_subdirs
- if svn_url:
- repo = SvnRepository(svn_url, externals, subset=svn_subset)
+ if scm_type == "svn":
+ repo = SvnRepository(url, externals, subset=svn_subset)
self.working_copy = SvnWorkingCopy(repo, self.checkout_dir,
logger=logging)
- elif git_url:
- repo = GitRepository(git_url, branch=git_branch)
+ elif scm_type == "git":
+ repo = GitRepository(url, branch=branch)
self.working_copy = GitWorkingCopy(repo, self.checkout_dir,
logger=logging)
- if rules_svn_url:
- repo = SvnRepository(rules_svn_url)
+ else:
+ raise PackagerError("Unknown scm type \"%s\" for sources" %
+ scm_type)
+
+ if rules_scm_type == "svn":
+ repo = SvnRepository(rules_url)
self.rules_working_copy = SvnWorkingCopy(repo, self.debian_dir,
logger=logging)
- elif rules_git_url:
- repo = GitRepository(rules_git_url)
+ elif rules_scm_type == "git":
+ repo = GitRepository(rules_url)
self.rules_working_copy = GitWorkingCopy(repo, self.debian_dir,
loggger=logging)
- else:
+ elif rules_scm_type == "local":
self.rules_working_copy = ManualWorkingCopy(self.debian_dir)
+ else:
+ raise PackagerError("Unknown scm type \"%s\" for rules" %
+ scm_type)
+
checkout_dir = util.filenameproperty("checkout")
debian_dir = util.filenameproperty("debian")
pkg_dir = util.filenameproperty("pkg")
Modified: trunk/treepkg/readconfig.py
===================================================================
--- trunk/treepkg/readconfig.py 2010-11-09 15:26:20 UTC (rev 473)
+++ trunk/treepkg/readconfig.py 2010-11-09 17:20:47 UTC (rev 474)
@@ -27,7 +27,7 @@
def convert_subversion_subset(raw):
"""Converts the string representation an svn subset into internal form
The format in the config file is typically:
- svn_url: svn://example.com/repository/trunk
+ url: svn://example.com/repository/trunk
svn_subset: -N .
subdir1
subdir2
@@ -66,10 +66,11 @@
packager_desc = [
"name", "base_dir",
- ("svn_url", str,""),
+ ("url", str, ""),
+ ("svn_url", str, ""),
("svn_subset", convert_subversion_subset, ""),
("svn_externals", shlex.split, ""),
- ("rules_svn_url", str, ""), ("packager_class", str, "treepkg.packager"),
+ ("rules_url", str, ""), ("packager_class", str, "treepkg.packager"),
("root_cmd", shlex.split, "sudo"), "builderconfig",
"deb_email", "deb_fullname", ("deb_build_options", str, ""),
("version_template", str, "%(revision)s"),
@@ -77,8 +78,7 @@
("handle_dependencies", convert_bool),
("signing_key_id", str, ""),
("changelog_msg_template", str, "Update to revision %(revision)s"),
- ("git_branch", str,""),
- ("git_url", str,""),
+ ("branch", str,""),
("os", str, ""),
("builder_cls", str, "PBuilder"),
("status_hook", str, "")
@@ -148,16 +148,11 @@
desc = packager_desc + module.PackageTrack.extra_config_desc
packager_options = read_config_section(parser, section, desc,
defaults=vars)
- if not packager_options.get("svn_url") \
- and not packager_options.get('git_url'):
+ if not packager_options.get("url") and \
+ not packager_options.get("svn_url"):
print >>sys.stderr, "Missing repository URL in section %r" \
% (section)
sys.exit(1)
- elif packager_options.get("svn_url") \
- and packager_options.get('git_url'):
- print >>sys.stderr, \
- "Warning: git_url in section %r will be ignored" \
- % (section)
packagers.append(packager_options)
# main config
More information about the Treepkg-commits
mailing list