Skip to content

Build error due to pybind11_mkdoc #121

@jstmn

Description

@jstmn

Hi,

I'm trying to build from source but am getting some errors.

My build instructions:

conda create --name mplib python=3.10
conda activate mplib
conda install -c conda-forge 'eigen=3.4.0' ompl fcl 'pinocchio=2.7.*' assimp orocos-kdl urdfdom pybind11 llvmdev clang hpp-fcl mkdocs -y
git submodule update --init --recursive
export CMAKE_BUILD_PARALLEL_LEVEL=10
python setup.py install

A few questions:

  1. Are there build instructions anywhere?
  2. Is there a docker image anywhere?
  3. How can I fix this issue? This looks like a mkdoc issue but i'm not seeing an exact error

Thanks

Error:

(mplib)  [ branch: main ] jstm ~/Projects/MPlib $ python setup.py install
/home/jstm/miniconda3/envs/mplib/lib/python3.10/site-packages/setuptools/config/_apply_pyprojecttoml.py:82: SetuptoolsDeprecationWarning: `project.license` as a TOML table is deprecated
!!

        ********************************************************************************
        Please use a simple string containing a SPDX expression for `project.license`. You can also use `project.license-files`. (Both options available on setuptools>=77.0.0).

        By 2026-Feb-18, you need to update your project and remove deprecated calls
        or your builds will no longer be supported.

        See https://packaging.python.org/en/latest/guides/writing-pyproject-toml/#license for details.
        ********************************************************************************

!!
  corresp(dist, value, root_dir)
/home/jstm/miniconda3/envs/mplib/lib/python3.10/site-packages/setuptools/config/_apply_pyprojecttoml.py:61: SetuptoolsDeprecationWarning: License classifiers are deprecated.
!!

        ********************************************************************************
        Please consider removing the following classifiers in favor of a SPDX license expression:

        License :: OSI Approved :: MIT License

        See https://packaging.python.org/en/latest/guides/writing-pyproject-toml/#license for details.
        ********************************************************************************

!!
  dist._finalize_license_expression()
/home/jstm/miniconda3/envs/mplib/lib/python3.10/site-packages/setuptools/dist.py:759: SetuptoolsDeprecationWarning: License classifiers are deprecated.
!!

        ********************************************************************************
        Please consider removing the following classifiers in favor of a SPDX license expression:

        License :: OSI Approved :: MIT License

        See https://packaging.python.org/en/latest/guides/writing-pyproject-toml/#license for details.
        ********************************************************************************

!!
  self._finalize_license_expression()
running install
/home/jstm/miniconda3/envs/mplib/lib/python3.10/site-packages/setuptools/_distutils/cmd.py:90: SetuptoolsDeprecationWarning: setup.py install is deprecated.
!!

        ********************************************************************************
        Please avoid running ``setup.py`` directly.
        Instead, use pypa/build, pypa/installer or other
        standards-based tools.

        This deprecation is overdue, please update your project and remove deprecated
        calls to avoid build errors in the future.

        See https://blog.ganssle.io/articles/2021/10/setup-py-deprecated.html for details.
        ********************************************************************************

!!
  self.initialize_options()
running build
running build_py
copying mplib/__init__.py -> build/lib.linux-x86_64-cpython-310/mplib
copying mplib/planner.py -> build/lib.linux-x86_64-cpython-310/mplib
copying mplib/urdf_utils.py -> build/lib.linux-x86_64-cpython-310/mplib
copying mplib/collision_detection/fcl.py -> build/lib.linux-x86_64-cpython-310/mplib/collision_detection
copying mplib/collision_detection/__init__.py -> build/lib.linux-x86_64-cpython-310/mplib/collision_detection
copying mplib/examples/__init__.py -> build/lib.linux-x86_64-cpython-310/mplib/examples
copying mplib/examples/demo_setup.py -> build/lib.linux-x86_64-cpython-310/mplib/examples
copying mplib/examples/moving_robot.py -> build/lib.linux-x86_64-cpython-310/mplib/examples
copying mplib/examples/constrained_planning.py -> build/lib.linux-x86_64-cpython-310/mplib/examples
copying mplib/examples/collision_avoidance.py -> build/lib.linux-x86_64-cpython-310/mplib/examples
copying mplib/examples/two_stage_motion.py -> build/lib.linux-x86_64-cpython-310/mplib/examples
copying mplib/examples/demo.py -> build/lib.linux-x86_64-cpython-310/mplib/examples
copying mplib/examples/detect_collision.py -> build/lib.linux-x86_64-cpython-310/mplib/examples
copying mplib/sapien_utils/urdf_exporter.py -> build/lib.linux-x86_64-cpython-310/mplib/sapien_utils
copying mplib/sapien_utils/conversion.py -> build/lib.linux-x86_64-cpython-310/mplib/sapien_utils
copying mplib/sapien_utils/__init__.py -> build/lib.linux-x86_64-cpython-310/mplib/sapien_utils
copying mplib/sapien_utils/srdf_exporter.py -> build/lib.linux-x86_64-cpython-310/mplib/sapien_utils
copying mplib/kinematics/__init__.py -> build/lib.linux-x86_64-cpython-310/mplib/kinematics
copying mplib/kinematics/pinocchio.py -> build/lib.linux-x86_64-cpython-310/mplib/kinematics
copying mplib/kinematics/kdl.py -> build/lib.linux-x86_64-cpython-310/mplib/kinematics
copying mplib/planning/__init__.py -> build/lib.linux-x86_64-cpython-310/mplib/planning
copying mplib/planning/ompl.py -> build/lib.linux-x86_64-cpython-310/mplib/planning
running egg_info
writing mplib.egg-info/PKG-INFO
writing dependency_links to mplib.egg-info/dependency_links.txt
writing requirements to mplib.egg-info/requires.txt
writing top-level names to mplib.egg-info/top_level.txt
reading manifest file 'mplib.egg-info/SOURCES.txt'
adding license file 'LICENSE'
writing manifest file 'mplib.egg-info/SOURCES.txt'
/home/jstm/miniconda3/envs/mplib/lib/python3.10/site-packages/setuptools/command/build_py.py:212: _Warning: Package 'mplib.pymp' is absent from the `packages` configuration.
!!

        ********************************************************************************
        ############################
        # Package would be ignored #
        ############################
        Python recognizes 'mplib.pymp' as an importable package[^1],
        but it is absent from setuptools' `packages` configuration.

        This leads to an ambiguous overall configuration. If you want to distribute this
        package, please make sure that 'mplib.pymp' is explicitly added
        to the `packages` configuration field.

        Alternatively, you can also rely on setuptools' discovery methods
        (for example by using `find_namespace_packages(...)`/`find_namespace:`
        instead of `find_packages(...)`/`find:`).

        You can read more about "package discovery" on setuptools documentation page:

        - https://setuptools.pypa.io/en/latest/userguide/package_discovery.html

        If you don't want 'mplib.pymp' to be distributed and are
        already explicitly excluding 'mplib.pymp' via
        `find_namespace_packages(...)/find_namespace` or `find_packages(...)/find`,
        you can try to use `exclude_package_data`, or `include-package-data=False` in
        combination with a more fine grained `package-data` configuration.

        You can read more about "package data files" on setuptools documentation page:

        - https://setuptools.pypa.io/en/latest/userguide/datafiles.html


        [^1]: For Python, any directory (with suitable naming) can be imported,
              even if it does not contain any `.py` files.
              On the other hand, currently there is no concept of package data
              directory, all directories are treated like packages.
        ********************************************************************************

!!
  check.warn(importable)
/home/jstm/miniconda3/envs/mplib/lib/python3.10/site-packages/setuptools/command/build_py.py:212: _Warning: Package 'mplib.pymp.collision_detection' is absent from the `packages` configuration.
!!

        ********************************************************************************
        ############################
        # Package would be ignored #
        ############################
        Python recognizes 'mplib.pymp.collision_detection' as an importable package[^1],
        but it is absent from setuptools' `packages` configuration.

        This leads to an ambiguous overall configuration. If you want to distribute this
        package, please make sure that 'mplib.pymp.collision_detection' is explicitly added
        to the `packages` configuration field.

        Alternatively, you can also rely on setuptools' discovery methods
        (for example by using `find_namespace_packages(...)`/`find_namespace:`
        instead of `find_packages(...)`/`find:`).

        You can read more about "package discovery" on setuptools documentation page:

        - https://setuptools.pypa.io/en/latest/userguide/package_discovery.html

        If you don't want 'mplib.pymp.collision_detection' to be distributed and are
        already explicitly excluding 'mplib.pymp.collision_detection' via
        `find_namespace_packages(...)/find_namespace` or `find_packages(...)/find`,
        you can try to use `exclude_package_data`, or `include-package-data=False` in
        combination with a more fine grained `package-data` configuration.

        You can read more about "package data files" on setuptools documentation page:

        - https://setuptools.pypa.io/en/latest/userguide/datafiles.html


        [^1]: For Python, any directory (with suitable naming) can be imported,
              even if it does not contain any `.py` files.
              On the other hand, currently there is no concept of package data
              directory, all directories are treated like packages.
        ********************************************************************************

!!
  check.warn(importable)
/home/jstm/miniconda3/envs/mplib/lib/python3.10/site-packages/setuptools/command/build_py.py:212: _Warning: Package 'mplib.pymp.kinematics' is absent from the `packages` configuration.
!!

        ********************************************************************************
        ############################
        # Package would be ignored #
        ############################
        Python recognizes 'mplib.pymp.kinematics' as an importable package[^1],
        but it is absent from setuptools' `packages` configuration.

        This leads to an ambiguous overall configuration. If you want to distribute this
        package, please make sure that 'mplib.pymp.kinematics' is explicitly added
        to the `packages` configuration field.

        Alternatively, you can also rely on setuptools' discovery methods
        (for example by using `find_namespace_packages(...)`/`find_namespace:`
        instead of `find_packages(...)`/`find:`).

        You can read more about "package discovery" on setuptools documentation page:

        - https://setuptools.pypa.io/en/latest/userguide/package_discovery.html

        If you don't want 'mplib.pymp.kinematics' to be distributed and are
        already explicitly excluding 'mplib.pymp.kinematics' via
        `find_namespace_packages(...)/find_namespace` or `find_packages(...)/find`,
        you can try to use `exclude_package_data`, or `include-package-data=False` in
        combination with a more fine grained `package-data` configuration.

        You can read more about "package data files" on setuptools documentation page:

        - https://setuptools.pypa.io/en/latest/userguide/datafiles.html


        [^1]: For Python, any directory (with suitable naming) can be imported,
              even if it does not contain any `.py` files.
              On the other hand, currently there is no concept of package data
              directory, all directories are treated like packages.
        ********************************************************************************

!!
  check.warn(importable)
/home/jstm/miniconda3/envs/mplib/lib/python3.10/site-packages/setuptools/command/build_py.py:212: _Warning: Package 'mplib.pymp.planning' is absent from the `packages` configuration.
!!

        ********************************************************************************
        ############################
        # Package would be ignored #
        ############################
        Python recognizes 'mplib.pymp.planning' as an importable package[^1],
        but it is absent from setuptools' `packages` configuration.

        This leads to an ambiguous overall configuration. If you want to distribute this
        package, please make sure that 'mplib.pymp.planning' is explicitly added
        to the `packages` configuration field.

        Alternatively, you can also rely on setuptools' discovery methods
        (for example by using `find_namespace_packages(...)`/`find_namespace:`
        instead of `find_packages(...)`/`find:`).

        You can read more about "package discovery" on setuptools documentation page:

        - https://setuptools.pypa.io/en/latest/userguide/package_discovery.html

        If you don't want 'mplib.pymp.planning' to be distributed and are
        already explicitly excluding 'mplib.pymp.planning' via
        `find_namespace_packages(...)/find_namespace` or `find_packages(...)/find`,
        you can try to use `exclude_package_data`, or `include-package-data=False` in
        combination with a more fine grained `package-data` configuration.

        You can read more about "package data files" on setuptools documentation page:

        - https://setuptools.pypa.io/en/latest/userguide/datafiles.html


        [^1]: For Python, any directory (with suitable naming) can be imported,
              even if it does not contain any `.py` files.
              On the other hand, currently there is no concept of package data
              directory, all directories are treated like packages.
        ********************************************************************************

!!
  check.warn(importable)
copying mplib/py.typed -> build/lib.linux-x86_64-cpython-310/mplib
copying mplib/pymp/__init__.pyi -> build/lib.linux-x86_64-cpython-310/mplib/pymp
copying mplib/pymp/collision_detection/__init__.pyi -> build/lib.linux-x86_64-cpython-310/mplib/pymp/collision_detection
copying mplib/pymp/collision_detection/fcl.pyi -> build/lib.linux-x86_64-cpython-310/mplib/pymp/collision_detection
copying mplib/pymp/kinematics/__init__.pyi -> build/lib.linux-x86_64-cpython-310/mplib/pymp/kinematics
copying mplib/pymp/kinematics/kdl.pyi -> build/lib.linux-x86_64-cpython-310/mplib/pymp/kinematics
copying mplib/pymp/kinematics/pinocchio.pyi -> build/lib.linux-x86_64-cpython-310/mplib/pymp/kinematics
copying mplib/pymp/planning/__init__.pyi -> build/lib.linux-x86_64-cpython-310/mplib/pymp/planning
copying mplib/pymp/planning/ompl.pyi -> build/lib.linux-x86_64-cpython-310/mplib/pymp/planning
running build_ext
['-DCMAKE_LIBRARY_OUTPUT_DIRECTORY=/home/jstm/Projects/MPlib/build/lib.linux-x86_64-cpython-310/mplib/', '-DPYTHON_EXECUTABLE=/home/jstm/miniconda3/envs/mplib/bin/python', '-DCMAKE_BUILD_TYPE=Release'] []
-- Found Boost: /home/jstm/miniconda3/envs/mplib/lib/cmake/Boost-1.82.0/BoostConfig.cmake (found version "1.82.0") found components: system filesystem 
-- pinocchio not FOUND.
-- boost_filesystem FOUND. boost_filesystem at /home/jstm/miniconda3/envs/mplib/lib/libboost_filesystem.so
-- boost_serialization FOUND. boost_serialization at /home/jstm/miniconda3/envs/mplib/lib/libboost_serialization.so
-- boost_system FOUND. boost_system at /home/jstm/miniconda3/envs/mplib/lib/libboost_system.so
CMake Warning at /usr/share/cmake-3.16/Modules/FindBoost.cmake:1161 (message):
  New Boost version may have incorrect or missing dependencies and imported
  targets
Call Stack (most recent call first):
  /usr/share/cmake-3.16/Modules/FindBoost.cmake:1283 (_Boost_COMPONENT_DEPENDENCIES)
  /usr/share/cmake-3.16/Modules/FindBoost.cmake:1921 (_Boost_MISSING_DEPENDENCIES)
  /usr/share/cmake-3.16/Modules/CMakeFindDependencyMacro.cmake:47 (find_package)
  /home/jstm/miniconda3/envs/mplib/lib/cmake/pinocchio/pinocchioConfig.cmake:159 (find_dependency)
  CMakeLists.txt:31 (find_package)


CMake Warning at /usr/share/cmake-3.16/Modules/FindBoost.cmake:1161 (message):
  New Boost version may have incorrect or missing dependencies and imported
  targets
Call Stack (most recent call first):
  /usr/share/cmake-3.16/Modules/FindBoost.cmake:1283 (_Boost_COMPONENT_DEPENDENCIES)
  /usr/share/cmake-3.16/Modules/FindBoost.cmake:1921 (_Boost_MISSING_DEPENDENCIES)
  /usr/share/cmake-3.16/Modules/CMakeFindDependencyMacro.cmake:47 (find_package)
  /home/jstm/miniconda3/envs/mplib/lib/cmake/pinocchio/pinocchioConfig.cmake:159 (find_dependency)
  CMakeLists.txt:31 (find_package)


CMake Warning at /usr/share/cmake-3.16/Modules/FindBoost.cmake:1161 (message):
  New Boost version may have incorrect or missing dependencies and imported
  targets
Call Stack (most recent call first):
  /usr/share/cmake-3.16/Modules/FindBoost.cmake:1283 (_Boost_COMPONENT_DEPENDENCIES)
  /usr/share/cmake-3.16/Modules/FindBoost.cmake:1921 (_Boost_MISSING_DEPENDENCIES)
  /usr/share/cmake-3.16/Modules/CMakeFindDependencyMacro.cmake:47 (find_package)
  /home/jstm/miniconda3/envs/mplib/lib/cmake/pinocchio/pinocchioConfig.cmake:159 (find_dependency)
  CMakeLists.txt:31 (find_package)


-- Found Boost: /home/jstm/miniconda3/envs/mplib/include (found version "1.82.0") found components: filesystem serialization system 
-- eigenpy not FOUND.
-- For CMake < 3.18, Development.Module is not available. Falling back to Development
-- PythonLibraryDirs: /home/jstm/miniconda3/envs/mplib/lib
-- PythonLibVersionString: 3.10.19
-- Python site lib: lib/python3.10/site-packages
-- Python include dirs: /home/jstm/miniconda3/envs/mplib/include/python3.10
-- Checking for NumPy
--   NUMPY_INCLUDE_DIRS=/home/jstm/miniconda3/envs/mplib/lib/python3.10/site-packages/numpy/core/include
--   NUMPY_VERSION=1.26.4
-- NumPy include dir: /home/jstm/miniconda3/envs/mplib/lib/python3.10/site-packages/numpy/core/include
CMake Warning at /usr/share/cmake-3.16/Modules/FindBoost.cmake:1161 (message):
  New Boost version may have incorrect or missing dependencies and imported
  targets
Call Stack (most recent call first):
  /usr/share/cmake-3.16/Modules/FindBoost.cmake:1283 (_Boost_COMPONENT_DEPENDENCIES)
  /usr/share/cmake-3.16/Modules/FindBoost.cmake:1921 (_Boost_MISSING_DEPENDENCIES)
  /home/jstm/miniconda3/envs/mplib/lib/cmake/eigenpy/boost.cmake:144 (find_package)
  /home/jstm/miniconda3/envs/mplib/lib/cmake/eigenpy/eigenpyConfig.cmake:149 (SEARCH_FOR_BOOST_PYTHON)
  /usr/share/cmake-3.16/Modules/CMakeFindDependencyMacro.cmake:47 (find_package)
  /home/jstm/miniconda3/envs/mplib/lib/cmake/pinocchio/pinocchioConfig.cmake:160 (find_dependency)
  CMakeLists.txt:31 (find_package)


CMake Warning at /usr/share/cmake-3.16/Modules/FindBoost.cmake:2020 (message):
  No header defined for python310; skipping header check (note: header-only
  libraries have no designated component)
Call Stack (most recent call first):
  /home/jstm/miniconda3/envs/mplib/lib/cmake/eigenpy/boost.cmake:144 (find_package)
  /home/jstm/miniconda3/envs/mplib/lib/cmake/eigenpy/eigenpyConfig.cmake:149 (SEARCH_FOR_BOOST_PYTHON)
  /usr/share/cmake-3.16/Modules/CMakeFindDependencyMacro.cmake:47 (find_package)
  /home/jstm/miniconda3/envs/mplib/lib/cmake/pinocchio/pinocchioConfig.cmake:160 (find_dependency)
  CMakeLists.txt:31 (find_package)


-- Found Boost: /home/jstm/miniconda3/envs/mplib/include (found version "1.82.0") found components: python310 
-- Boost_PYTHON_LIBRARY: /home/jstm/miniconda3/envs/mplib/lib/libboost_python310.so
-- Default C++ standard: 201703
-- C++ standard sufficient: Minimal required 14, currently defined: 17
-- hpp-fcl not FOUND.
CMake Warning at /usr/share/cmake-3.16/Modules/FindBoost.cmake:1161 (message):
  New Boost version may have incorrect or missing dependencies and imported
  targets
Call Stack (most recent call first):
  /usr/share/cmake-3.16/Modules/FindBoost.cmake:1283 (_Boost_COMPONENT_DEPENDENCIES)
  /usr/share/cmake-3.16/Modules/FindBoost.cmake:1921 (_Boost_MISSING_DEPENDENCIES)
  /usr/share/cmake-3.16/Modules/CMakeFindDependencyMacro.cmake:47 (find_package)
  /home/jstm/miniconda3/envs/mplib/lib/cmake/hpp-fcl/hpp-fclConfig.cmake:154 (find_dependency)
  /usr/share/cmake-3.16/Modules/CMakeFindDependencyMacro.cmake:47 (find_package)
  /home/jstm/miniconda3/envs/mplib/lib/cmake/pinocchio/pinocchioConfig.cmake:161 (find_dependency)
  CMakeLists.txt:31 (find_package)


CMake Warning at /usr/share/cmake-3.16/Modules/FindBoost.cmake:1161 (message):
  New Boost version may have incorrect or missing dependencies and imported
  targets
Call Stack (most recent call first):
  /usr/share/cmake-3.16/Modules/FindBoost.cmake:1283 (_Boost_COMPONENT_DEPENDENCIES)
  /usr/share/cmake-3.16/Modules/FindBoost.cmake:1921 (_Boost_MISSING_DEPENDENCIES)
  /usr/share/cmake-3.16/Modules/CMakeFindDependencyMacro.cmake:47 (find_package)
  /home/jstm/miniconda3/envs/mplib/lib/cmake/hpp-fcl/hpp-fclConfig.cmake:154 (find_dependency)
  /usr/share/cmake-3.16/Modules/CMakeFindDependencyMacro.cmake:47 (find_package)
  /home/jstm/miniconda3/envs/mplib/lib/cmake/pinocchio/pinocchioConfig.cmake:161 (find_dependency)
  CMakeLists.txt:31 (find_package)


CMake Warning at /usr/share/cmake-3.16/Modules/FindBoost.cmake:1161 (message):
  New Boost version may have incorrect or missing dependencies and imported
  targets
Call Stack (most recent call first):
  /usr/share/cmake-3.16/Modules/FindBoost.cmake:1283 (_Boost_COMPONENT_DEPENDENCIES)
  /usr/share/cmake-3.16/Modules/FindBoost.cmake:1921 (_Boost_MISSING_DEPENDENCIES)
  /usr/share/cmake-3.16/Modules/CMakeFindDependencyMacro.cmake:47 (find_package)
  /home/jstm/miniconda3/envs/mplib/lib/cmake/hpp-fcl/hpp-fclConfig.cmake:154 (find_dependency)
  /usr/share/cmake-3.16/Modules/CMakeFindDependencyMacro.cmake:47 (find_package)
  /home/jstm/miniconda3/envs/mplib/lib/cmake/pinocchio/pinocchioConfig.cmake:161 (find_dependency)
  CMakeLists.txt:31 (find_package)


-- Found Boost: /home/jstm/miniconda3/envs/mplib/include (found version "1.82.0") found components: chrono serialization filesystem 
-- C++ standard sufficient: Minimal required 14, currently defined: 17
-- C++ standard sufficient: Minimal required 14, currently defined: 17
-- pybind11 v2.12.0 dev1
-- Configuring done
-- Generating done
-- Build files have been written to: /home/jstm/Projects/MPlib/build/temp.linux-x86_64-cpython-310/mplib.pymp
Traceback (most recent call last):
  File "/home/jstm/Projects/MPlib/dev/mkdoc.py", line 59, in <module>
    from clang import cindex
ModuleNotFoundError: No module named 'clang'
...
Traceback (most recent call last):
  File "/home/jstm/Projects/MPlib/dev/mkdoc.py", line 59, in <module>
    from clang import cindex
ModuleNotFoundError: No module named 'clang'
Traceback (most recent call last):
  File "/home/jstm/Projects/MPlib/dev/mkdoc.py", line 59, in <module>
    from clang import cindex
ModuleNotFoundError: No module named 'clang'

Caught error in /home/jstm/Projects/MPlib/dev/mkdoc.sh:51 ('wait $(jobs -rp)' exited with status 1)
Traceback (most recent call last, command might not be complete):
  (0) /home/jstm/Projects/MPlib/dev/mkdoc.sh:51 'wait $(jobs -rp)'
make[2]: *** [CMakeFiles/pybind11_mkdoc.dir/build.make:78: CMakeFiles/pybind11_mkdoc] Error 1
make[1]: *** [CMakeFiles/Makefile2:157: CMakeFiles/pybind11_mkdoc.dir/all] Error 2
make[1]: *** Waiting for unfinished jobs....
[  2%] Building CXX object CMakeFiles/mp.dir/src/collision_detection/fcl/collision_common.cpp.o
[  5%] Building CXX object CMakeFiles/mp.dir/src/kinematics/pinocchio/pinocchio_model.cpp.o
 

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions