fonttools / skia-pathops

Python bindings for the Skia library's Path Ops
https://skia.org/docs/dev/present/pathops/
BSD 3-Clause "New" or "Revised" License
47 stars 14 forks source link

Errors with building the wheel while installing #73

Open M0tix opened 5 months ago

M0tix commented 5 months ago

Hello everyone. I apologize in advance if this issue might be a bit stupid. I am not much of a developer, and I dont know a lot about python. Im on Debian GNU/Linux 12 (bookworm) i686, my CPU is a Intel i7 M 620 (4) @ 2.667GHz. When I try to install skia-pathops, I get the following error log:

pip3 install --upgrade skia-pathops --break-system-packages
Defaulting to user installation because normal site-packages is not writeable
Collecting skia-pathops
  Using cached skia-pathops-0.8.0.post1.zip (67.0 MB)
  Installing build dependencies ... done
  Getting requirements to build wheel ... done
  Preparing metadata (pyproject.toml) ... done
Building wheels for collected packages: skia-pathops
  Building wheel for skia-pathops (pyproject.toml) ... error
  error: subprocess-exited-with-error

  × Building wheel for skia-pathops (pyproject.toml) did not run successfully.
  │ exit code: 1
  ╰─> [111 lines of output]
      <string>:7: DeprecationWarning: dep_util is Deprecated. Use functions from setuptools instead.
      <string>:11: DeprecationWarning: pkg_resources is deprecated as an API. See https://setuptools.pypa.io/en/latest/pkg_resources.html
      WARNING setuptools_scm._integration.setuptools pyproject.toml does not contain a tool.setuptools_scm section
      WARNING setuptools_scm.pyproject_reading toml section missing 'pyproject.toml does not contain a tool.setuptools_scm section'
      running bdist_wheel
      running build
      running build_py
      creating build
      creating build/lib.linux-i686-cpython-311
      creating build/lib.linux-i686-cpython-311/pathops
      copying src/python/pathops/__init__.py -> build/lib.linux-i686-cpython-311/pathops
      copying src/python/pathops/_version.py -> build/lib.linux-i686-cpython-311/pathops
      copying src/python/pathops/operations.py -> build/lib.linux-i686-cpython-311/pathops
      running build_ext
      building 'pathops._pathops' extension
      creating build/temp.linux-i686-cpython-311
      creating build/temp.linux-i686-cpython-311/src
      creating build/temp.linux-i686-cpython-311/src/python
      creating build/temp.linux-i686-cpython-311/src/python/pathops
      i686-linux-gnu-gcc -Wsign-compare -DNDEBUG -g -fwrapv -O2 -Wall -g -fstack-protector-strong -Wformat -Werror=format-security -g -fwrapv -O2 -fPIC -Isrc/cpp/skia-builder/skia -Isrc/cpp/skia-builder/skia/src -I/usr/include/python3.11 -c src/python/pathops/_pathops.cpp -o build/temp.linux-i686-cpython-311/src/python/pathops/_pathops.o -std=c++17
      In file included from src/cpp/skia-builder/skia/include/pathops/SkPathOps.h:12,
                       from src/python/pathops/_pathops.cpp:1292:
      src/cpp/skia-builder/skia/include/private/base/SkTArray.h:518:33: warning: ‘cfi’ attribute directive ignored [-Wattributes]
        518 |     static T* TCast(void* buffer) {
            |                                 ^
      building 'skia' library
      created virtual environment CPython3.11.2.final.0-32 in 2044ms
        creator CPython3Posix(dest=/tmp/pip-install-vs65uuau/skia-pathops_30569824bef04a5f805a99134b3f6430/build/temp.linux-i686-cpython-311/src/cpp/skia-builder/skia/venv, clear=False, no_vcs_ignore=False, global=False)
        seeder FromAppData(download=False, pip=bundle, setuptools=bundle, wheel=bundle, via=copy, app_data_dir=/home/tom/.local/share/virtualenv)
          added seed packages: pip==24.0, setuptools==69.1.0, wheel==0.42.0
        activators BashActivator,CShellActivator,FishActivator,NushellActivator,PowerShellActivator,PythonActivator
      Collecting ninja
        Using cached ninja-1.11.1.1-py2.py3-none-manylinux1_i686.manylinux_2_5_i686.whl.metadata (5.3 kB)
      Using cached ninja-1.11.1.1-py2.py3-none-manylinux1_i686.manylinux_2_5_i686.whl (324 kB)
      Installing collected packages: ninja
      Successfully installed ninja-1.11.1.1
      Traceback (most recent call last):
        File "/tmp/pip-install-vs65uuau/skia-pathops_30569824bef04a5f805a99134b3f6430/src/cpp/skia-builder/skia/bin/fetch-gn", line 26, in <module>
          cpu = {'aarch64': 'arm64', 'amd64': 'amd64', 'arm64': 'arm64', 'x86_64': 'amd64'}[platform.machine().lower()]
                ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^
      KeyError: 'i686'
      Traceback (most recent call last):
        File "/tmp/pip-install-vs65uuau/skia-pathops_30569824bef04a5f805a99134b3f6430/src/cpp/skia-builder/build_skia.py", line 220, in <module>
          subprocess.check_call(
        File "/usr/lib/python3.11/subprocess.py", line 413, in check_call
          raise CalledProcessError(retcode, cmd)
      subprocess.CalledProcessError: Command '['python', 'bin/fetch-gn']' returned non-zero exit status 1.
      Traceback (most recent call last):
        File "/usr/lib/python3/dist-packages/pip/_vendor/pyproject_hooks/_in_process/_in_process.py", line 353, in <module>
          main()
        File "/usr/lib/python3/dist-packages/pip/_vendor/pyproject_hooks/_in_process/_in_process.py", line 335, in main
          json_out['return_val'] = hook(**hook_input['kwargs'])
                                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
        File "/usr/lib/python3/dist-packages/pip/_vendor/pyproject_hooks/_in_process/_in_process.py", line 251, in build_wheel
          return _build_backend().build_wheel(wheel_directory, config_settings,
                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
        File "/tmp/pip-build-env-vlu0bz3b/overlay/local/lib/python3.11/dist-packages/setuptools/build_meta.py", line 410, in build_wheel
          return self._build_with_temp_dir(
                 ^^^^^^^^^^^^^^^^^^^^^^^^^^
        File "/tmp/pip-build-env-vlu0bz3b/overlay/local/lib/python3.11/dist-packages/setuptools/build_meta.py", line 395, in _build_with_temp_dir
          self.run_setup()
        File "/tmp/pip-build-env-vlu0bz3b/overlay/local/lib/python3.11/dist-packages/setuptools/build_meta.py", line 487, in run_setup
          super().run_setup(setup_script=setup_script)
        File "/tmp/pip-build-env-vlu0bz3b/overlay/local/lib/python3.11/dist-packages/setuptools/build_meta.py", line 311, in run_setup
          exec(code, locals())
        File "<string>", line 410, in <module>
        File "/tmp/pip-build-env-vlu0bz3b/overlay/local/lib/python3.11/dist-packages/setuptools/__init__.py", line 104, in setup
          return distutils.core.setup(**attrs)
                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
        File "/tmp/pip-build-env-vlu0bz3b/overlay/local/lib/python3.11/dist-packages/setuptools/_distutils/core.py", line 185, in setup
          return run_commands(dist)
                 ^^^^^^^^^^^^^^^^^^
        File "/tmp/pip-build-env-vlu0bz3b/overlay/local/lib/python3.11/dist-packages/setuptools/_distutils/core.py", line 201, in run_commands
          dist.run_commands()
        File "/tmp/pip-build-env-vlu0bz3b/overlay/local/lib/python3.11/dist-packages/setuptools/_distutils/dist.py", line 969, in run_commands
          self.run_command(cmd)
        File "/tmp/pip-build-env-vlu0bz3b/overlay/local/lib/python3.11/dist-packages/setuptools/dist.py", line 967, in run_command
          super().run_command(command)
        File "/tmp/pip-build-env-vlu0bz3b/overlay/local/lib/python3.11/dist-packages/setuptools/_distutils/dist.py", line 988, in run_command
          cmd_obj.run()
        File "/tmp/pip-build-env-vlu0bz3b/overlay/local/lib/python3.11/dist-packages/wheel/bdist_wheel.py", line 368, in run
          self.run_command("build")
        File "/tmp/pip-build-env-vlu0bz3b/overlay/local/lib/python3.11/dist-packages/setuptools/_distutils/cmd.py", line 318, in run_command
          self.distribution.run_command(command)
        File "/tmp/pip-build-env-vlu0bz3b/overlay/local/lib/python3.11/dist-packages/setuptools/dist.py", line 967, in run_command
          super().run_command(command)
        File "/tmp/pip-build-env-vlu0bz3b/overlay/local/lib/python3.11/dist-packages/setuptools/_distutils/dist.py", line 988, in run_command
          cmd_obj.run()
        File "/tmp/pip-build-env-vlu0bz3b/overlay/local/lib/python3.11/dist-packages/setuptools/_distutils/command/build.py", line 131, in run
          self.run_command(cmd_name)
        File "/tmp/pip-build-env-vlu0bz3b/overlay/local/lib/python3.11/dist-packages/setuptools/_distutils/cmd.py", line 318, in run_command
          self.distribution.run_command(command)
        File "/tmp/pip-build-env-vlu0bz3b/overlay/local/lib/python3.11/dist-packages/setuptools/dist.py", line 967, in run_command
          super().run_command(command)
        File "/tmp/pip-build-env-vlu0bz3b/overlay/local/lib/python3.11/dist-packages/setuptools/_distutils/dist.py", line 988, in run_command
          cmd_obj.run()
        File "<string>", line 216, in run
        File "/tmp/pip-build-env-vlu0bz3b/overlay/local/lib/python3.11/dist-packages/setuptools/command/build_ext.py", line 91, in run
          _build_ext.run(self)
        File "/tmp/pip-build-env-vlu0bz3b/overlay/local/lib/python3.11/dist-packages/setuptools/_distutils/command/build_ext.py", line 345, in run
          self.build_extensions()
        File "/tmp/pip-build-env-vlu0bz3b/overlay/local/lib/python3.11/dist-packages/setuptools/_distutils/command/build_ext.py", line 467, in build_extensions
          self._build_extensions_serial()
        File "/tmp/pip-build-env-vlu0bz3b/overlay/local/lib/python3.11/dist-packages/setuptools/_distutils/command/build_ext.py", line 493, in _build_extensions_serial
          self.build_extension(ext)
        File "<string>", line 193, in build_extension
        File "<string>", line 210, in get_libraries
        File "<string>", line 279, in build_skia
        File "/usr/lib/python3.11/subprocess.py", line 571, in run
          raise CalledProcessError(retcode, process.args,
      subprocess.CalledProcessError: Command '['/usr/bin/python3', 'src/cpp/skia-builder/build_skia.py', 'build/temp.linux-i686-cpython-311/src/cpp/skia-builder/skia', '--no-sync-deps']' 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 skia-pathops
Failed to build skia-pathops
ERROR: Could not build wheels for skia-pathops, which is required to install pyproject.toml-based projects
anthrotype commented 5 months ago

looks like the https://github.com/fonttools/skia-builder that we use to build the libskia does not support 32-bit Linux (i686). I'm afraid I don't know how to help with this.

Is there a reason you can't use the 64-bit version of Python, for which we do already publish pre-compiled wheels?