bh@204: # Copyright (C) 2007, 2008 by Intevation GmbH bh@204: # Authors: bh@204: # Bernhard Herzog bh@204: # bh@204: # This program is free software under the GPL (>=v2) bh@204: # Read the file COPYING coming with the software for details. bh@204: bh@204: """Packager that builds KDE-PIM debian packages from the enterprise35 branch. bh@204: """ bh@204: bh@204: import os bh@204: import time bh@204: import re bh@204: bh@204: import treepkg.util bh@204: import treepkg.packager bh@204: bh@204: bh@204: class SourcePackager(treepkg.packager.SourcePackager): bh@204: bh@204: pkg_basename = "kdepim" bh@204: bh@204: def __init__(self, *args, **kw): bh@204: super(SourcePackager, self).__init__(*args, **kw) bh@204: self.enterprise_version = (time.strftime("%Y%m%d", time.localtime()) \ bh@204: + "." + str(self.revision)) bh@204: bh@204: def determine_package_version(self, directory): bh@204: enterprise_version = self.enterprise_version bh@204: return self.track.version_template % locals() bh@204: bh@204: def update_version_numbers(self, pkgbasedir): bh@204: """Overrides the inherited method to update version numbers in the code bh@204: """ bh@214: versionstring = "(enterprise4 %s)" % self.enterprise_version bh@204: failed = [] bh@214: for versionfile in ["kaddressbook/kabcore.cpp", bh@214: "kmail/kmversion.h", bh@214: "kontact/src/main.cpp", bh@204: "korganizer/version.h"]: bh@204: if not treepkg.util.replace_in_file(os.path.join(pkgbasedir, bh@204: versionfile), bh@214: "\(enterprise4 ([^)]*)\)", bh@204: versionstring): bh@204: failed.append(versionfile) bh@204: if failed: bh@204: raise RuntimeError("kdepim: failed to update version numbers in %s" bh@204: % (", ".join(failed),)) bh@204: bh@204: def do_package(self): bh@204: pkgbaseversion, pkgbasedir = self.export_sources() bh@204: self.update_version_numbers(pkgbasedir) bh@204: bh@204: pkgbasename = "kdepim_" + pkgbaseversion bh@204: origtargz = os.path.join(self.work_dir, bh@204: pkgbasename + ".orig.tar.gz") bh@204: self.create_tarball(origtargz, self.work_dir, bh@204: os.path.basename(pkgbasedir)) bh@204: bh@204: changemsg = ("Update to SVN enterprise35 branch rev. %d" bh@204: % (self.revision,)) bh@204: self.copy_debian_directory(pkgbasedir, pkgbaseversion, bh@204: changemsg) bh@204: bh@204: self.create_source_package(pkgbasedir, origtargz) bh@204: self.move_source_package(pkgbasename) bh@204: bh@204: bh@204: class RevisionPackager(treepkg.packager.RevisionPackager): bh@204: bh@204: source_packager_cls = SourcePackager bh@204: bh@204: bh@204: class PackageTrack(treepkg.packager.PackageTrack): bh@204: bh@204: extra_config_desc = ["version_template"] bh@204: bh@204: revision_packager_cls = RevisionPackager bh@204: bh@204: def __init__(self, *args, **kw): bh@204: self.version_template = kw.pop("version_template") bh@204: super(PackageTrack, self).__init__(*args, **kw)