mrzv / dionysus

Library for computing persistent homology
http://mrzv.org/software/dionysus2
Other
144 stars 31 forks source link

Dionysus does not installs into NVIDIA-supplied containers #60

Closed oleg-kachan closed 10 months ago

oleg-kachan commented 10 months ago

I'm using the latest NVIDIA-supplied container based on Ubuntu 22.04, Python 3.10, G++ 11.4.0, CMake 3.22.1, and is unable to install GUDHI via pip, getting the following message

pip install dionysus
Looking in indexes: https://pypi.org/simple, https://pypi.ngc.nvidia.com
Collecting dionysus
  Downloading dionysus-2.0.10.tar.gz (1.8 MB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 1.8/1.8 MB 5.2 MB/s eta 0:00:00
  Preparing metadata (setup.py) ... done
Building wheels for collected packages: dionysus
  Building wheel for dionysus (setup.py) ... error
  error: subprocess-exited-with-error

  × python setup.py bdist_wheel did not run successfully.
  │ exit code: 1
  ╰─> [103 lines of output]
      /usr/local/lib/python3.10/dist-packages/setuptools/dist.py:745: SetuptoolsDeprecationWarning: Invalid dash-separated options
      !!

              ********************************************************************************
              Usage of dash-separated 'description-file' will not be supported in future
              versions. Please use the underscore name 'description_file' instead.

              By 2023-Sep-26, you need to update your project and remove deprecated calls
              or your builds will no longer be supported.

              See https://setuptools.pypa.io/en/latest/userguide/declarative_config.html for details.
              ********************************************************************************

      !!
        opt = self.warn_dash_deprecation(opt, section)
      running bdist_wheel
      running build
      running build_py
      creating build
      creating build/lib.linux-aarch64-3.10
      creating build/lib.linux-aarch64-3.10/dionysus
      copying bindings/python/dionysus/_version.py -> build/lib.linux-aarch64-3.10/dionysus
      copying bindings/python/dionysus/plot.py -> build/lib.linux-aarch64-3.10/dionysus
      copying bindings/python/dionysus/__init__.py -> build/lib.linux-aarch64-3.10/dionysus
      running build_ext
      -- The C compiler identification is GNU 11.4.0
      -- The CXX compiler identification is GNU 11.4.0
      -- Detecting C compiler ABI info
      -- Detecting C compiler ABI info - done
      -- Check for working C compiler: /bin/cc - skipped
      -- Detecting C compile features
      -- Detecting C compile features - done
      -- Detecting CXX compiler ABI info
      -- Detecting CXX compiler ABI info - done
      -- Check for working CXX compiler: /bin/c++ - skipped
      -- Detecting CXX compile features
      -- Detecting CXX compile features - done
      -- Could NOT find Boost (missing: Boost_INCLUDE_DIR)
      -- pybind11 v2.11.0 dev1
      -- Found PythonInterp: /usr/bin/python3 (found suitable version "3.10.12", minimum required is "3.6")
      -- Found PythonLibs: /usr/lib/aarch64-linux-gnu/libpython3.10.so
      -- Performing Test HAS_FLTO
      -- Performing Test HAS_FLTO - Success
      -- Configuring done
      CMake Error: The following variables are used in this project, but they are set to NOTFOUND.
      Please set them or make sure they are set and tested correctly in the CMake files:
      Boost_INCLUDE_DIR (ADVANCED)
         used as include directory in directory /tmp/pip-install-e_c0rjw3/dionysus_2f990050e1ee45e987e1db6dd3981f14
         used as include directory in directory /tmp/pip-install-e_c0rjw3/dionysus_2f990050e1ee45e987e1db6dd3981f14
         used as include directory in directory /tmp/pip-install-e_c0rjw3/dionysus_2f990050e1ee45e987e1db6dd3981f14/bindings/python
         used as include directory in directory /tmp/pip-install-e_c0rjw3/dionysus_2f990050e1ee45e987e1db6dd3981f14/bindings/python
         used as include directory in directory /tmp/pip-install-e_c0rjw3/dionysus_2f990050e1ee45e987e1db6dd3981f14/bindings/python
         used as include directory in directory /tmp/pip-install-e_c0rjw3/dionysus_2f990050e1ee45e987e1db6dd3981f14/bindings/python
         used as include directory in directory /tmp/pip-install-e_c0rjw3/dionysus_2f990050e1ee45e987e1db6dd3981f14/bindings/python/pybind11
         used as include directory in directory /tmp/pip-install-e_c0rjw3/dionysus_2f990050e1ee45e987e1db6dd3981f14/bindings/python/pybind11

      CMake Error in bindings/python/CMakeLists.txt:
        Found relative path while evaluating include directories of "_dionysus":

          "Boost_INCLUDE_DIR-NOTFOUND"

      -- Generating done
      CMake Generate step failed.  Build files cannot be regenerated correctly.
      Traceback (most recent call last):
        File "<string>", line 2, in <module>
        File "<pip-setuptools-caller>", line 34, in <module>
        File "/tmp/pip-install-e_c0rjw3/dionysus_2f990050e1ee45e987e1db6dd3981f14/setup.py", line 67, in <module>
          setup(
        File "/usr/local/lib/python3.10/dist-packages/setuptools/__init__.py", line 107, in setup
          return distutils.core.setup(**attrs)
        File "/usr/lib/python3.10/distutils/core.py", line 148, in setup
          dist.run_commands()
        File "/usr/lib/python3.10/distutils/dist.py", line 966, in run_commands
          self.run_command(cmd)
        File "/usr/local/lib/python3.10/dist-packages/setuptools/dist.py", line 1234, in run_command
          super().run_command(command)
        File "/usr/lib/python3.10/distutils/dist.py", line 985, in run_command
          cmd_obj.run()
        File "/usr/local/lib/python3.10/dist-packages/wheel/bdist_wheel.py", line 349, in run
          self.run_command("build")
        File "/usr/lib/python3.10/distutils/cmd.py", line 313, in run_command
          self.distribution.run_command(command)
        File "/usr/local/lib/python3.10/dist-packages/setuptools/dist.py", line 1234, in run_command
          super().run_command(command)
        File "/usr/lib/python3.10/distutils/dist.py", line 985, in run_command
          cmd_obj.run()
        File "/usr/lib/python3.10/distutils/command/build.py", line 135, in run
          self.run_command(cmd_name)
        File "/usr/lib/python3.10/distutils/cmd.py", line 313, in run_command
          self.distribution.run_command(command)
        File "/usr/local/lib/python3.10/dist-packages/setuptools/dist.py", line 1234, in run_command
          super().run_command(command)
        File "/usr/lib/python3.10/distutils/dist.py", line 985, in run_command
          cmd_obj.run()
        File "/tmp/pip-install-e_c0rjw3/dionysus_2f990050e1ee45e987e1db6dd3981f14/setup.py", line 39, in run
          self.build_extension(ext)
        File "/tmp/pip-install-e_c0rjw3/dionysus_2f990050e1ee45e987e1db6dd3981f14/setup.py", line 64, in build_extension
          subprocess.check_call(['cmake', ext.sourcedir] + cmake_args, cwd=self.build_temp, env=env)
        File "/usr/lib/python3.10/subprocess.py", line 369, in check_call
          raise CalledProcessError(retcode, cmd)
      subprocess.CalledProcessError: Command '['cmake', '/tmp/pip-install-e_c0rjw3/dionysus_2f990050e1ee45e987e1db6dd3981f14', '-DCMAKE_LIBRARY_OUTPUT_DIRECTORY=/tmp/pip-install-e_c0rjw3/dionysus_2f990050e1ee45e987e1db6dd3981f14/build/lib.linux-aarch64-3.10', '-DPYTHON_EXECUTABLE=/usr/bin/python3', '-Dbuild_examples=OFF', '-DCMAKE_BUILD_TYPE=Release']' returned non-zero exit status 1.
      [end of output]

  note: This error originates from a subprocess, and is likely not a problem with pip.
  ERROR: Failed building wheel for dionysus
  Running setup.py clean for dionysus
Failed to build dionysus
ERROR: Could not build wheels for dionysus, which is required to install pyproject.toml-based projects
oleg-kachan commented 10 months ago

Obviously, it had asked for Boost, resolved by installing it

apt install libboost-system-dev libboost-thread-dev libboost-filesystem-dev libboost-program-options-dev libboost-test-dev
mrzv commented 10 months ago

Is this resolved? Can this issue be closed?