bh@216: # Copyright (C) 2007, 2008, 2009 by Intevation GmbH bh@216: # Authors: bh@216: # Bernhard Herzog bh@216: # bh@216: # This program is free software under the GPL (>=v2) bh@216: # Read the file COPYING coming with the software for details. bh@216: bh@216: """Base classes for all kdepim packagers""" bh@216: bh@216: import os bh@216: import time bh@216: import inspect bh@216: bh@216: import treepkg.packager bh@216: bh@216: bh@216: class BaseSourcePackager(treepkg.packager.SourcePackager): bh@216: bh@216: def __init__(self, *args, **kw): bh@216: super(BaseSourcePackager, self).__init__(*args, **kw) bh@216: self.enterprise_version = (time.strftime("%Y%m%d", time.localtime()) \ bh@216: + "." + str(self.revision)) bh@216: bh@216: def determine_package_version(self, directory): bh@216: enterprise_version = self.enterprise_version bh@216: return self.track.version_template % locals() bh@216: bh@216: def do_package(self): bh@216: pkgbaseversion, pkgbasedir = self.export_sources() bh@216: self.update_version_numbers(pkgbasedir) bh@216: bh@216: pkgbasename = self.pkg_basename + "_" + pkgbaseversion bh@216: origtargz = os.path.join(self.work_dir, bh@216: pkgbasename + ".orig.tar.gz") bh@216: self.create_tarball(origtargz, self.work_dir, bh@216: os.path.basename(pkgbasedir)) bh@216: bh@216: changemsg = ("Update to SVN enterprise4 branch rev. %d" bh@216: % (self.revision,)) bh@216: self.copy_debian_directory(pkgbasedir, pkgbaseversion, bh@216: changemsg) bh@216: bh@216: self.create_source_package(pkgbasedir, origtargz) bh@216: self.move_source_package(pkgbasename) bh@216: bh@216: bh@216: class BasePackageTrack(treepkg.packager.PackageTrack): bh@216: bh@216: extra_config_desc = ["version_template"] bh@216: bh@216: def __init__(self, *args, **kw): bh@216: self.version_template = kw.pop("version_template") bh@216: super(BasePackageTrack, self).__init__(*args, **kw) bh@216: bh@216: bh@216: def define_kdepim_packager(basename=None, external_subdirs=None): bh@216: bh@216: caller_globals = inspect.currentframe().f_back.f_globals bh@216: bh@216: SourcePackager = caller_globals.get("SourcePackager") bh@216: if SourcePackager is None: bh@216: class SourcePackager(BaseSourcePackager): bh@216: pkg_basename = basename bh@216: bh@216: class RevisionPackager(treepkg.packager.RevisionPackager): bh@216: source_packager_cls = SourcePackager bh@216: bh@216: class PackageTrack(BasePackageTrack): bh@216: revision_packager_cls = RevisionPackager bh@216: bh@216: if external_subdirs is not None: bh@216: svn_external_subdirs = external_subdirs bh@216: bh@216: caller_globals["PackageTrack"] = PackageTrack