Mercurial > treepkg > treepkg
comparison treepkg/packager.py @ 378:41226e427823
Added an option to configure the used builder class from the treepkg.cfg. This
should reduce the need for platform specific recipes.
author | Andre Heinecke <aheinecke@intevation.de> |
---|---|
date | Mon, 21 Jun 2010 13:05:26 +0000 |
parents | ef87d30468b6 |
children | 09d6d11d7043 c1f3be727f9d |
comparison
equal
deleted
inserted
replaced
377:1af2aff54563 | 378:41226e427823 |
---|---|
21 import run | 21 import run |
22 import status | 22 import status |
23 import debian | 23 import debian |
24 from cmdexpand import cmdexpand | 24 from cmdexpand import cmdexpand |
25 from builder import PBuilder | 25 from builder import PBuilder |
26 from sbuilder import SbdmockBuilder | |
26 | 27 |
27 def _fromparent(attr): | 28 def _fromparent(attr): |
28 """Creates a property that delegates its value to self.parent.<attr>""" | 29 """Creates a property that delegates its value to self.parent.<attr>""" |
29 def get(self): | 30 def get(self): |
30 return getattr(self.parent, attr) | 31 return getattr(self.parent, attr) |
389 | 390 |
390 class PackageTrack(object): | 391 class PackageTrack(object): |
391 | 392 |
392 revision_packager_cls = RevisionPackager | 393 revision_packager_cls = RevisionPackager |
393 | 394 |
394 builder_cls = PBuilder | |
395 | |
396 svn_external_subdirs = [] | 395 svn_external_subdirs = [] |
397 | 396 |
398 extra_config_desc = [] | 397 extra_config_desc = [] |
399 | 398 |
400 def __init__(self, name, base_dir, root_cmd, builderconfig, deb_email, | 399 def __init__(self, name, base_dir, root_cmd, builderconfig, deb_email, |
401 deb_fullname, svn_url="", packager_class="treepkg.packager", | 400 deb_fullname, svn_url="", packager_class="treepkg.packager", |
402 version_template="%(revision)s", | 401 version_template="%(revision)s", builder_cls="PBuilder", |
403 pkg_revision_template="treepkg%(pkg_revision)s", | 402 pkg_revision_template="treepkg%(pkg_revision)s", |
404 handle_dependencies=False, signing_key_id="", do_build=True, | 403 handle_dependencies=False, signing_key_id="", do_build=True, |
405 rules_svn_url=None, deb_build_options="", pkg_basename="", | 404 rules_svn_url=None, deb_build_options="", pkg_basename="", |
406 changelog_msg_template="Update to r%(revision)s", | 405 changelog_msg_template="Update to r%(revision)s", |
407 svn_subset=(), svn_externals=(), git_branch="", git_url=""): | 406 svn_subset=(), svn_externals=(), git_branch="", git_url=""): |
408 self.name = name | 407 self.name = name |
408 | |
409 # Convert the builder_cls option to a class | |
410 if builder_cls.upper() == "SBDMOCKBUILDER" or \ | |
411 builder_cls.upper() == "SBDMOCK": | |
412 builder_class = SbdmockBuilder | |
413 elif builder_cls.upper() == "PBUILDER": | |
414 builder_class = PBuilder | |
415 else: | |
416 # If the builder option is explicitly set with an unknown builder | |
417 # a warning is printed. | |
418 logging.warning("Track: %s Builder option %s could not be parsed \ | |
419 defaulting to pbuilder" % (name, builder_cls)) | |
420 builder_class = PBuilder | |
409 if not pkg_basename: | 421 if not pkg_basename: |
410 pkg_basename = name | 422 pkg_basename = name |
411 self.pkg_basename = pkg_basename | 423 self.pkg_basename = pkg_basename |
412 self.changelog_msg_template = changelog_msg_template | 424 self.changelog_msg_template = changelog_msg_template |
413 self.base_dir = base_dir | 425 self.base_dir = base_dir |
414 self.builder = self.builder_cls(builderconfig, root_cmd, | 426 self.builder = builder_class(builderconfig, root_cmd, |
415 release_signing_keyid=signing_key_id) | 427 release_signing_keyid=signing_key_id) |
416 self.deb_email = deb_email | 428 self.deb_email = deb_email |
417 self.deb_fullname = deb_fullname | 429 self.deb_fullname = deb_fullname |
418 self.deb_build_options = deb_build_options | 430 self.deb_build_options = deb_build_options |
419 self.version_template = version_template | 431 self.version_template = version_template |