Mercurial > treepkg
view recipes/kde_enterprise_4/base.py @ 275:c0cbd133b607
Define changemsg_template in BaseSourcePackager and not in the kdepim
specific derived classe
author | Bernhard Herzog <bh@intevation.de> |
---|---|
date | Thu, 07 May 2009 15:35:28 +0000 |
parents | 2676abfc0e1d |
children | f3dee156e3e3 |
line wrap: on
line source
# Copyright (C) 2007, 2008, 2009 by Intevation GmbH # Authors: # Bernhard Herzog <bh@intevation.de> # # This program is free software under the GPL (>=v2) # Read the file COPYING coming with the software for details. """Base classes for all kdepim packagers""" import os import time import inspect import logging import treepkg.packager import treepkg.subversion class BaseSourcePackager(treepkg.packager.SourcePackager): changemsg_template = "Update to SVN enterprise4 branch rev. %(revision)d" def __init__(self, *args, **kw): super(BaseSourcePackager, self).__init__(*args, **kw) self.enterprise_version = (time.strftime("%Y%m%d", time.localtime()) \ + "." + str(self.revision)) def determine_package_version(self, directory): enterprise_version = self.enterprise_version return self.track.version_template % locals() def prepare_sources_for_tarball(self, pkgbasedir): self.update_version_numbers(pkgbasedir) def update_version_numbers(self, pkgbasedir): """Updates the version numbers in the code in pkgbasedir. The default implementation does nothing. Derived classes should override this method if necessary. """ class BasePackageTrack(treepkg.packager.PackageTrack): extra_config_desc = ["version_template", ("tags_url", str, ""), ("tags_pattern", str, ""), ("tags_subdir", str, "")] def __init__(self, *args, **kw): self.version_template = kw.pop("version_template") tags_url = kw.pop("tags_url") tags_pattern = kw.pop("tags_pattern") tags_subdir = kw.pop("tags_subdir") super(BasePackageTrack, self).__init__(*args, **kw) self.tag_detector = treepkg.subversion.TagDetector(tags_url, tags_pattern, tags_subdir) def packager_for_new_revision(self): logging.info("Checking tags") self.tag_url = None tag_url, tag_revision = self.tag_detector.newest_tag_revision() logging.info("Found: %s: %s", tag_url, tag_revision) if tag_url is not None: revision = (tag_revision, self.rules_working_copy.last_changed_revision()) logging.info("New revision is %s", revision) if revision not in self.get_revision_numbers(): logging.info("Revision %s has not been packaged yet", revision) self.tag_url = tag_url return self.revision_packager_cls(self, tag=tag_url, *revision) else: logging.info("Revision %s has already been packaged.", revision) return super(BasePackageTrack, self).packager_for_new_revision() def export_sources(self, to_dir): if self.tag_url is not None: self.export_tag(self.tag_url, to_dir) else: super(BasePackageTrack, self).export_sources(to_dir) def export_tag(self, tag_url, to_dir): logging.info("Exporting sources from %s to %r", tag_url, to_dir) treepkg.subversion.export(tag_url, to_dir) def define_kdepim_packager(basename=None, external_subdirs=None): caller_globals = inspect.currentframe().f_back.f_globals SourcePackager = caller_globals.get("SourcePackager") if SourcePackager is None: class SourcePackager(BaseSourcePackager): pkg_basename = basename class RevisionPackager(treepkg.packager.RevisionPackager): source_packager_cls = SourcePackager class PackageTrack(BasePackageTrack): revision_packager_cls = RevisionPackager if external_subdirs is not None: svn_external_subdirs = external_subdirs caller_globals["PackageTrack"] = PackageTrack