Mercurial > treepkg
diff recipes/kde_enterprise_4/base.py @ 216:89ca9ba349e5
New module with code common to almost all kdepim enterprise 4 recipes
author | Bernhard Herzog <bh@intevation.de> |
---|---|
date | Tue, 06 Jan 2009 16:01:11 +0000 |
parents | |
children | 9c0131d2e0e1 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/recipes/kde_enterprise_4/base.py Tue Jan 06 16:01:11 2009 +0000 @@ -0,0 +1,74 @@ +# 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 treepkg.packager + + +class BaseSourcePackager(treepkg.packager.SourcePackager): + + 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 do_package(self): + pkgbaseversion, pkgbasedir = self.export_sources() + self.update_version_numbers(pkgbasedir) + + pkgbasename = self.pkg_basename + "_" + pkgbaseversion + origtargz = os.path.join(self.work_dir, + pkgbasename + ".orig.tar.gz") + self.create_tarball(origtargz, self.work_dir, + os.path.basename(pkgbasedir)) + + changemsg = ("Update to SVN enterprise4 branch rev. %d" + % (self.revision,)) + self.copy_debian_directory(pkgbasedir, pkgbaseversion, + changemsg) + + self.create_source_package(pkgbasedir, origtargz) + self.move_source_package(pkgbasename) + + +class BasePackageTrack(treepkg.packager.PackageTrack): + + extra_config_desc = ["version_template"] + + def __init__(self, *args, **kw): + self.version_template = kw.pop("version_template") + super(BasePackageTrack, self).__init__(*args, **kw) + + +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