How can I run a Makefile in setup.py?

distutils, python

Solution

The method I normally use is to override the command in question:

from distutils.command.install import install as DistutilsInstall

class MyInstall(DistutilsInstall):
    def run(self):
        do_pre_install_stuff()
        DistutilsInstall.run(self)
        do_post_install_stuff()

...

setup(..., cmdclass={'install': MyInstall}, ...)

This took me quite a while to figure out from the `distutils` documentation and source, so I hope it saves you the pain.

Note: you can also use this `cmdclass` parameter to add new commands.

Problem

I need to compile ICU using it's own build mechanism. Therefore the question: How can I run a Makefile from `setup.py`? Obviously, I only want it to run during the build process, not while installing.

Original source

Related problems