view recipes/kde/maemo/kde_l10n.py @ 430:4aaf73a6225e treepkg-status

introduced after_copy_hook and made rsync upload to publishdir optional
author Bjoern Ricks <bricks@intevation.de>
date Thu, 29 Jul 2010 12:07:57 +0000
parents 51c447a6792e
children
line wrap: on
line source
# Copyright (C) 2007 - 2010 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.enterprise.kde_l10n 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)

    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)
        # do not run scratchbox
        #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 script outside of scratchbox '''
        run.call(cmdexpand("@script", script=script_name),
                 suppress_output=False, logfile=logfile)

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)