Mercurial > treepkg > treepkg
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 |