view roundup/dist/command/build.py @ 5748:943e61bc26d5

Fix issue2551029 (Jinja2 template install error) by deleting config.ini from all templates. Looks like classic and minimal never included a config.ini. Presence of config.ini stopped 'roundup-admin install' from generating an up to date config.ini. Created special option class for backend database. Comment now uses roundup.backend.list_backends to give user indication of valid values. Also we now get an error if user specifies invalid backend. Moved backend setting to top or [rdbms] section. It is the most important thing in there and if set to anydbm (or some other non-rdbm) the rest of the settings can be ignored. Change rdbms config section comment to indicate that the backend setting was used by other database backends. (e.g. if set to anydbm).
author John Rouillard <rouilj@ieee.org>
date Sat, 01 Jun 2019 09:05:23 -0400
parents f2fade4552c5
children 42bf0a707763
line wrap: on
line source

#
# Copyright (C) 2009 Stefan Seefeld
# All rights reserved.
# For license terms see the file COPYING.txt.
#
from __future__ import print_function
from roundup import msgfmt
from distutils.command.build import build as base
import os
from glob import glob

def list_message_files(suffix=".po"):
    """Return list of all found message files and their intallation paths"""
    _files = glob("locale/*" + suffix)
    _list = []
    for _file in _files:
        # basename (without extension) is a locale name
        _locale = os.path.splitext(os.path.basename(_file))[0]
        _list.append((_file, os.path.join(
            "share", "locale", _locale, "LC_MESSAGES", "roundup.mo")))
    return _list

def check_manifest():
    """Check that the files listed in the MANIFEST are present when the
    source is unpacked.
    """
    try:
        f = open('MANIFEST')
    except:
        print('\n*** SOURCE WARNING: The MANIFEST file is missing!')
        return
    try:
        manifest = [l.strip() for l in f.readlines()]
    finally:
        f.close()
    err = set([line for line in manifest if not os.path.exists(line)])
    # ignore auto-generated files
    err = err - set(['roundup-admin', 'roundup-demo', 'roundup-gettext',
        'roundup-mailgw', 'roundup-server', 'roundup-xmlrpc-server'])
    if err:
        n = len(manifest)
        print('\n*** SOURCE WARNING: There are files missing (%d/%d found)!'%(
            n-len(err), n))
        print('Missing:', '\nMissing: '.join(err))

def build_message_files(command):
    """For each locale/*.po, build .mo file in target locale directory"""
    for (_src, _dst) in list_message_files():
        _build_dst = os.path.join("build", _dst)
        command.mkpath(os.path.dirname(_build_dst))
        command.announce("Compiling %s -> %s" % (_src, _build_dst))
        mo = msgfmt.Msgfmt(_src).get()
        open(_build_dst, 'wb').write(mo)


class build(base):

    def run(self):
        check_manifest()
        build_message_files(self)
        base.run(self)


Roundup Issue Tracker: http://roundup-tracker.org/