View Issue Details Jump to Notes ] Print ]
IDProjectCategoryView StatusDate SubmittedLast Update
0014019CMakeCMakepublic2013-03-15 10:062016-06-10 14:31
ReporterLuc J. Bourhis 
Assigned ToKitware Robot 
PrioritynormalSeverityfeatureReproducibilityN/A
StatusclosedResolutionmoved 
PlatformOSOS Version
Product VersionCMake 2.8.10 
Target VersionFixed in Version 
Summary0014019: ExternalProject_Add: please support python setup.py style of install
DescriptionMany python extensions are installed by relying on a distutils scheme. They ship with a Python script setup.py and the installation proceeds with python setup.py install in the simplest case. The most general scheme is a two-step process: python setup.py build [options] (or build_ext instead) and then python setup.py install [options]. Performing the latter without options always does the right thing.

It would be nice if ExternalProject_Add supported new arguments to set it up out of the box.
I propose the following:

ExternalProject_Add(
...
  PYTHON_SETUP 1 # switch distutils style of installing on/off
  PYTHON_EXECUTABLE path # which Python interpreter to use
                                            # default: ${PYTHON_EXECUTABLE} as found by FindPython
  PYTHON_BUILD_COMMAND # arguments passed to python setup.py for the build stage
                                                # default: build
  PYTHON_INSTALL_COMMAND # arguments passed to python setup.py for the install stage
                                                 # default: install
)
TagsNo tags attached.
Attached Files

 Relationships

  Notes
(0032640)
David Cole (manager)
2013-03-15 11:53

Isn't this just as simple, and already out of the box?

    find_package(PythonInterp REQUIRED)

    ExternalProject_Add(
      # ... download stuff for the project ...
      CONFIGURE_COMMAND ""
      BUILD_COMMAND ${PYTHON_EXECUTABLE} setup.py build
      INSTALL_COMMAND ${PYTHON_EXECUTABLE} setup.py install

      BUILD_IN_SOURCE 1
        # I assume for python setup.py to work, the source directory
        # and the build directory must be the same?
    )

Why complicate ExternalProject with special keywords for python projects?

Should it also support Ruby gems, and Java jar files, and other languages too, each with their own special case keywords and default build and install command lines?
(0032641)
Luc J. Bourhis (reporter)
2013-03-15 12:00

You are correct about BUILD_IN_SOURCE. Then that's 4 lines when it could be just 1. For a project with a significant number of external dependencies of this kind to install (I have got one with more than a dozen), that matters in term of readability. As for supporting for Ruby gems and Java jar files, why not indeed, if somebody requests it. The strong point of CMake is to cater for common scenarios out-of-the-box imho.
(0042251)
Kitware Robot (administrator)
2016-06-10 14:28

Resolving issue as `moved`.

This issue tracker is no longer used. Further discussion of this issue may take place in the current CMake Issues page linked in the banner at the top of this page.

 Issue History
Date Modified Username Field Change
2013-03-15 10:06 Luc J. Bourhis New Issue
2013-03-15 11:53 David Cole Note Added: 0032640
2013-03-15 12:00 Luc J. Bourhis Note Added: 0032641
2016-06-10 14:28 Kitware Robot Note Added: 0042251
2016-06-10 14:28 Kitware Robot Status new => resolved
2016-06-10 14:28 Kitware Robot Resolution open => moved
2016-06-10 14:28 Kitware Robot Assigned To => Kitware Robot
2016-06-10 14:31 Kitware Robot Status resolved => closed


Copyright © 2000 - 2018 MantisBT Team