get build path for package within setup.py

asked 2017-07-12 06:25:20 -0500

LorenzH gravatar image

updated 2017-07-12 06:29:03 -0500

Hi,

I want to redirect the c-files coming from cython to the build directory during the installation step. I am experimenting with the following, which is ok,

import os.path
from catkin_tools.context import Context
subfolder = 'cython_build'
ctx = Context.load()
build_dir = os.path.join(ctx.build_space_abs, subfolder)

This results for in a cython build_path approx. like "/home/user/catkin_ws/build/cython_build/src/package_name"

but I am wondering if I could (should) just use the following, instead of recreating the same function:

build_dir =  ctx.package_build_space(package)

and hopefully the path ends up to something like: "/home/user/catkin_ws/build/package_name/cython_build/..."

but I don't know what the argument 'package' is. It is definitely not the (String) name_of_package

Background:

I created a setup.py which "cythonizes" my python modules and installs them. However, the created c-files(1) are placed next to the python files per default. This makes trouble during the travis build with industrial_ci, since the source-folder is read-only.

(1) I don't want to keep the c-files right now, so I don't consider them source files and more intermediate build products.

PS: If someone is interested, I am happy to share the lessons-learned for this catkin-cython procedures as soon as my experiments converge. Please, let me know.

This question is somewhat related to http://answers.ros.org/question/26467...

Full example setup.py

#!/usr/bin/env python
## ! DO NOT MANUALLY INVOKE THIS setup.py, USE CATKIN INSTEAD

from distutils.core import setup
from catkin_pkg.python_setup import generate_distutils_setup
from Cython.Build import cythonize
from catkin_tools.context import Context

# fetch values from package.xml
setup_args = generate_distutils_setup(
    packages=['my_driver'],
    package_dir={'': 'scripts'})

ctx = Context.load()
build_path = ctx.build_space_abs + "/cython_build"

setup(ext_modules = cythonize("scripts/my_driver/*.py",
                              build_dir=build_path),
      **setup_args)
edit retag flag offensive close merge delete