comparison treepkg/packager.py @ 511:e5b66539f893

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
author Bjoern Ricks <bricks@intevation.de>
date Tue, 09 Nov 2010 17:20:47 +0000
parents 1f04bd88fca3
children 0c2cc67a29aa
comparison
equal deleted inserted replaced
510:1f04bd88fca3 511:e5b66539f893
33 """Creates a property that delegates its value to self.parent.<attr>""" 33 """Creates a property that delegates its value to self.parent.<attr>"""
34 def get(self): 34 def get(self):
35 return getattr(self.parent, attr) 35 return getattr(self.parent, attr)
36 return property(get) 36 return property(get)
37 37
38
39
40 class PackagerError(Exception):
41
42 """Base class for Packager specific errors raised by TreePKG"""
38 43
39 class SourcePackager(object): 44 class SourcePackager(object):
40 45
41 pkg_basename = property(lambda self: self.track.pkg_basename) 46 pkg_basename = property(lambda self: self.track.pkg_basename)
42 changemsg_template = property(lambda self: 47 changemsg_template = property(lambda self:
483 svn_external_subdirs = [] 488 svn_external_subdirs = []
484 489
485 extra_config_desc = [] 490 extra_config_desc = []
486 491
487 def __init__(self, name, base_dir, root_cmd, builderconfig, deb_email, 492 def __init__(self, name, base_dir, root_cmd, builderconfig, deb_email,
488 deb_fullname, svn_url="", packager_class="treepkg.packager", 493 deb_fullname, url="", packager_class="treepkg.packager",
489 version_template="%(revision)s", builder_cls="PBuilder", 494 version_template="%(revision)s", builder_cls="PBuilder",
490 pkg_revision_template="treepkg%(pkg_revision)s", 495 pkg_revision_template="treepkg%(pkg_revision)s",
491 handle_dependencies=False, signing_key_id="", do_build=True, 496 handle_dependencies=False, signing_key_id="", do_build=True,
492 rules_svn_url=None, deb_build_options="", pkg_basename="", 497 rules_url=None, deb_build_options="", pkg_basename="",
493 changelog_msg_template="Update to r%(revision)s", 498 changelog_msg_template="Update to r%(revision)s",
494 svn_subset=(), svn_externals=(), git_branch="", git_url="", 499 svn_subset=(), svn_externals=(), branch="",
495 os="", status_hook="", rules_git_url=None): 500 scm_type="svn", rules_scm_type="svn",
501 os="", status_hook="", svn_url=None):
496 self.name = name 502 self.name = name
497 503
498 # Convert the builder_cls option to a class 504 # Convert the builder_cls option to a class
499 if builder_cls.upper() == "SBDMOCKBUILDER" or \ 505 if builder_cls.upper() == "SBDMOCKBUILDER" or \
500 builder_cls.upper() == "SBDMOCK": 506 builder_cls.upper() == "SBDMOCK":
526 self.os = os 532 self.os = os
527 self.pkg_dir_template = "%(revision)s-%(rules_revision)s" 533 self.pkg_dir_template = "%(revision)s-%(rules_revision)s"
528 self.pkg_dir_regex = re.compile(r"(?P<revision>[0-9a-f]+)" 534 self.pkg_dir_regex = re.compile(r"(?P<revision>[0-9a-f]+)"
529 r"-(?P<rules_revision>[0-9a-f]+)$") 535 r"-(?P<rules_revision>[0-9a-f]+)$")
530 self.status_hook = status_hook 536 self.status_hook = status_hook
537
538 if svn_url:
539 url = svn_url
540 scm_type = "svn"
541 logging.warning("Track: %s options contain svn_url which is " \
542 "deprecated. Please use url together with scm_type " \
543 "svn instead." % name)
544
545 # use local debian dir if rules url is not set
546 if not rules_url:
547 rules_scm_type = "local"
548
531 externals = svn_externals 549 externals = svn_externals
532 if not externals: 550 if not externals:
533 externals = self.svn_external_subdirs 551 externals = self.svn_external_subdirs
534 if svn_url: 552 if scm_type == "svn":
535 repo = SvnRepository(svn_url, externals, subset=svn_subset) 553 repo = SvnRepository(url, externals, subset=svn_subset)
536 self.working_copy = SvnWorkingCopy(repo, self.checkout_dir, 554 self.working_copy = SvnWorkingCopy(repo, self.checkout_dir,
537 logger=logging) 555 logger=logging)
538 elif git_url: 556 elif scm_type == "git":
539 repo = GitRepository(git_url, branch=git_branch) 557 repo = GitRepository(url, branch=branch)
540 self.working_copy = GitWorkingCopy(repo, self.checkout_dir, 558 self.working_copy = GitWorkingCopy(repo, self.checkout_dir,
541 logger=logging) 559 logger=logging)
542 if rules_svn_url: 560 else:
543 repo = SvnRepository(rules_svn_url) 561 raise PackagerError("Unknown scm type \"%s\" for sources" %
562 scm_type)
563
564 if rules_scm_type == "svn":
565 repo = SvnRepository(rules_url)
544 self.rules_working_copy = SvnWorkingCopy(repo, self.debian_dir, 566 self.rules_working_copy = SvnWorkingCopy(repo, self.debian_dir,
545 logger=logging) 567 logger=logging)
546 elif rules_git_url: 568 elif rules_scm_type == "git":
547 repo = GitRepository(rules_git_url) 569 repo = GitRepository(rules_url)
548 self.rules_working_copy = GitWorkingCopy(repo, self.debian_dir, 570 self.rules_working_copy = GitWorkingCopy(repo, self.debian_dir,
549 loggger=logging) 571 loggger=logging)
572 elif rules_scm_type == "local":
573 self.rules_working_copy = ManualWorkingCopy(self.debian_dir)
574
550 else: 575 else:
551 self.rules_working_copy = ManualWorkingCopy(self.debian_dir) 576 raise PackagerError("Unknown scm type \"%s\" for rules" %
577 scm_type)
552 578
553 checkout_dir = util.filenameproperty("checkout") 579 checkout_dir = util.filenameproperty("checkout")
554 debian_dir = util.filenameproperty("debian") 580 debian_dir = util.filenameproperty("debian")
555 pkg_dir = util.filenameproperty("pkg") 581 pkg_dir = util.filenameproperty("pkg")
556 582
This site is hosted by Intevation GmbH (Datenschutzerklärung und Impressum | Privacy Policy and Imprint)