[Distutils] converting a distutil command to setuptools

Jorge Vargas jorge.vargas at gmail.com
Sat Jun 30 10:47:45 CEST 2007


hi

I'm porting a distutils package to setuptools they have a Command that
takes the po files and compiles them and then they are feeding a cmd
Class to distutils, I read in the docs that the way of doing this in
setuptools is with an entry point and that the entry point should be
provided by a preinstalled package, the problem I see with that is
that we'll need 2 packages to install one so is there a better way to
do the following?

from distutils.command.build import build as _build
import msgfmt #this is the compiler


class build_trans(cmd.Command):
    description = 'Compile .po files into .mo files'

    def initialize_options(self):
        pass

    def finalize_options(self):
        pass

    def run(self):
        po_dir = os.path.join(os.path.dirname(__file__), 'po')
        for path, names, filenames in os.walk(po_dir):
            for f in filenames:
                if f.endswith('.po'):
                    lang = f[:len(f) - 3]
                    src = os.path.join(path, f)
                    dest_path = os.path.join('build', 'locale', lang,
'LC_MESSAGES')
                    dest = os.path.join(dest_path, 'deluge.mo')
                    if not os.path.exists(dest_path):
                        os.makedirs(dest_path)
                    if not os.path.exists(dest):
                        print 'Compiling %s' % src
                        msgfmt.make(src, dest)
                    else:
                        src_mtime = os.stat(src)[8]
                        dest_mtime = os.stat(dest)[8]
                        if src_mtime > dest_mtime:
                            print 'Compiling %s' % src
                            msgfmt.make(src, dest)

class build(_build):
    sub_commands = _build.sub_commands + [('build_trans', None)]
    def run(self):
        _build.run(self)


Also is there any setuptools enhancement to Extension, to handle C++
compilation and dependencies check?


More information about the Distutils-SIG mailing list