view recipes/kde/maemo/kde_l10n.py @ 362:7a1385c1207c

packageer for kde_l10n on maemo
author Bjoern Ricks <bricks@intevation.de>
date Fri, 21 May 2010 12:45:58 +0000
parents
children 51c447a6792e
line wrap: on
line source
# Copyright (C) 2007, 2008, 2009 by Intevation GmbH
# Authors:
# Bernhard Herzog <bh@intevation.de>
# Bjoern Ricks <bjoern.ricks@intevation.de>
#
# This program is free software under the GPL (>=v2)
# Read the file COPYING coming with the software for details.

import os
import logging
import shutil
import time

import treepkg.util
from treepkg.cmdexpand import cmdexpand
from treepkg import run

import recipes.kde.maemo.generic as generic


class SourcePackager(generic.SourcePackager):

    """Creates the debian source package for the l10n files

    This is a bit more complicated than for other packages.  The
    orig.tar.gz file of the debian source package contains one .tar.bz2
    file for every language.  Those .tar.bz files are the kde-18n-<lang>
    files released by the KDE project.  For now, we only have the German
    localization in the enterprise source package, so the orig.tar.gz
    file will have the following contents:

      kde-l10n-<version>/
      kde-l10n-<version>/kde-l10n-de-<version>.tar.bz2

    <version> is the same everywhere.
    """

    createtarball_script = """\
#! /bin/bash
set -e

#fakeroot apt-get --assume-yes --force-yes install %(builddeps)s

# copy the source tree to a directory that's under pbuilder control so
# that it gets removed along with the build environment.  Otherwise we
# end up with a directory containing files that cannot be removed by
# treepkg
workdir=/tmp/work
cp -a %(basedir)s $workdir
cd $workdir

# only handle the de subdirectory
echo de > subdirs

# create the CMakeFiles
./scripts/autogen.sh
mv de kde-l10n-de-%(version)s
tar cjf %(tarball)s kde-l10n-de-%(version)s
cd ..
rm -rf $workdir
"""


    def __init__(self, *args, **kw):
        super(SourcePackager, self).__init__(*args, **kw)
        self.enterprise_version = (time.strftime("%Y%m%d", time.localtime())
                                   + "." + str(self.revision))
        self.maemo_version =  "%s.%s" % (self.revision,
                              self.parent.pkg_date)

    def determine_package_version(self, directory):
        enterprise_version = self.enterprise_version
        maemo_version = self.maemo_version
        revision = self.revision
        rules_revision = self.parent.rules_revision
        pkg_revision = self.parent.pkg_revision
        pkg_date = self.parent.pkg_date

        return self.track.version_template % locals()

    def create_l10n_de_tarball(self, pkgbasedir, pkgbaseversion):
        logging.info("Creating kde-l10n-de tarball")
        de_tarball = os.path.join(self.work_dir,
                                  "kde-l10n-de-" + pkgbaseversion + ".tar.bz2")
        # xutils-dev is needed for the revpath script used by
        # scripts/autogen.sh
        script = (self.createtarball_script
                  % dict(builddeps="xutils-dev",  tarball=de_tarball,
                         basedir=pkgbasedir, version=pkgbaseversion))
        script_name = os.path.join(self.work_dir, "createtarball")
        treepkg.util.writefile(script_name, script, 0755)
        treepkg.util.ensure_directory(self.src_dir)
        treepkg.util.ensure_directory(self.log_dir)
        #self.track.builder.run_script([script_name],
        #                              logfile=os.path.join(self.log_dir,
        #                                                   "tarball_log.txt"),
        #                              bindmounts=[self.work_dir])
        self.run_script([script_name], logfile=os.path.join(self.log_dir,
                                       "tarball_log.txt"))
 
        return de_tarball

    def run_script(self, script_name, logfile):
        run.call(cmdexpand("@script", script=script_name),
                 suppress_output=False, logfile=logfile)

    def prepare_sources_for_tarball(self, pkgbasedir, pkgbaseversion):
        de_tarball = self.create_l10n_de_tarball(pkgbasedir, pkgbaseversion)
        shutil.rmtree(pkgbasedir)
        os.mkdir(pkgbasedir)
        os.rename(de_tarball,
                  os.path.join(pkgbasedir, os.path.basename(de_tarball)))


class RevisionPackager(generic.RevisionPackager):

    source_packager_cls = SourcePackager


class PackageTrack(generic.PackageTrack):

    revision_packager_cls = RevisionPackager
This site is hosted by Intevation GmbH (Datenschutzerklärung und Impressum | Privacy Policy and Imprint)