view roundup/dist/command/build.py @ 6459:0e86ea84e59d

Debugging and test fixes for CI test_compression_br worked on my box under python 3.6. In CI it worked in 3.4 but failed on all other versions 3.6,7,8,9,dev. Error: json_dict = json.loads(b2s(brotli.decompress(f.content))) E brotli.error: BrotliDecompress failed so print f.content. Also restructured the code to not check for type of f.content. Instead try json.loads(f.content) and if we get an exception try decompressing. Use this for br and zstd tests.
author John Rouillard <rouilj@ieee.org>
date Sat, 24 Jul 2021 18:23:21 -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/