Skip to content

Vanilla unstructured via uvx fails with Failed to build llvmlite #4390

Description

@amotl

Describe the bug
When installing unstructured with uv, we are occasionally hit by such error messages, both on Python 3.13/3.14 on macOS, and on CI/GHA.

`llvmlite` (v0.36.0) was included because `pueblo[all]` (v0.0.0) depends on `unstructured` (v0.18.32) which depends on `numba` (v0.53.1) which depends on `llvmlite`

To Reproduce

uvx --python=3.14 unstructured --version

Expected behavior
Vanilla unstructured installs without ado, and sheds any problematic dependencies under corresponding extra sections, so they can be optionally selected.

References

Screenshots

Details
  × Failed to build `llvmlite==0.48.0`
  ├─▶ The build backend returned an error
  ╰─▶ Call to `setuptools.build_meta:__legacy__.build_wheel` failed (exit status: 1)

      [stdout]
      running bdist_wheel
      -- Configuring incomplete, errors occurred!
      Running: cmake -G Unix Makefiles /Users/amo/.cache/uv/sdists-v9/pypi/llvmlite/0.48.0/x4aIZFmv-9FKFAEu/src/ffi

      [stderr]
      /Users/amo/.cache/uv/builds-v0/.tmpDuVfmH/lib/python3.14/site-packages/setuptools/_vendor/wheel/bdist_wheel.py:4: FutureWarning: The 'wheel' package is
      no longer the canonical location of the 'bdist_wheel' command, and will be removed in a future release. Please update to setuptools v70.1 or later which
      contains an integrated version of this command.
        warn(
      CMake Error at CMakeLists.txt:21 (find_package):
        Could not find a package configuration file provided by "LLVM" with any of
        the following names:

          LLVM.cps
          llvm.cps
          LLVMConfig.cmake
          llvm-config.cmake

        Add the installation prefix of "LLVM" to CMAKE_PREFIX_PATH or set
        "LLVM_DIR" to a directory containing one of the above files.  If "LLVM"
        provides a separate development package or SDK, be sure it has been
        installed.


      Traceback (most recent call last):
        File "/Users/amo/.cache/uv/sdists-v9/pypi/llvmlite/0.48.0/x4aIZFmv-9FKFAEu/src/ffi/build.py", line 213, in <module>
          main()
          ~~~~^^
        File "/Users/amo/.cache/uv/sdists-v9/pypi/llvmlite/0.48.0/x4aIZFmv-9FKFAEu/src/ffi/build.py", line 207, in main
          main_posix('.dylib')
          ~~~~~~~~~~^^^^^^^^^^
        File "/Users/amo/.cache/uv/sdists-v9/pypi/llvmlite/0.48.0/x4aIZFmv-9FKFAEu/src/ffi/build.py", line 193, in main_posix
          try_cmake(here_dir, build_dir, generator)
          ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
        File "/Users/amo/.cache/uv/sdists-v9/pypi/llvmlite/0.48.0/x4aIZFmv-9FKFAEu/src/ffi/build.py", line 127, in try_cmake
          subprocess.check_call(args)
          ~~~~~~~~~~~~~~~~~~~~~^^^^^^
        File "/usr/local/Cellar/python@3.14/3.14.6/Frameworks/Python.framework/Versions/3.14/lib/python3.14/subprocess.py", line 420, in check_call
          raise CalledProcessError(retcode, cmd)
      subprocess.CalledProcessError: Command '['cmake', '-G', 'Unix Makefiles', '/Users/amo/.cache/uv/sdists-v9/pypi/llvmlite/0.48.0/x4aIZFmv-9FKFAEu/src/ffi']'
      returned non-zero exit status 1.
      Traceback (most recent call last):
        File "<string>", line 11, in <module>
          wheel_filename = backend.build_wheel("/Users/amo/.cache/uv/builds-v0/.tmpwbF1Qg", {}, None)
        File "/Users/amo/.cache/uv/builds-v0/.tmpDuVfmH/lib/python3.14/site-packages/setuptools/build_meta.py", line 438, in build_wheel
          return _build(['bdist_wheel'])
        File "/Users/amo/.cache/uv/builds-v0/.tmpDuVfmH/lib/python3.14/site-packages/setuptools/build_meta.py", line 429, in _build
          return self._build_with_temp_dir(
                 ~~~~~~~~~~~~~~~~~~~~~~~~~^
              cmd,
              ^^^^
          ...<3 lines>...
              self._arbitrary_args(config_settings),
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
          )
          ^
        File "/Users/amo/.cache/uv/builds-v0/.tmpDuVfmH/lib/python3.14/site-packages/setuptools/build_meta.py", line 410, in _build_with_temp_dir
          self.run_setup()
          ~~~~~~~~~~~~~~^^
        File "/Users/amo/.cache/uv/builds-v0/.tmpDuVfmH/lib/python3.14/site-packages/setuptools/build_meta.py", line 520, in run_setup
          super().run_setup(setup_script=setup_script)
          ~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^
        File "/Users/amo/.cache/uv/builds-v0/.tmpDuVfmH/lib/python3.14/site-packages/setuptools/build_meta.py", line 317, in run_setup
          exec(code, locals())
          ~~~~^^^^^^^^^^^^^^^^
        File "<string>", line 200, in <module>
        File "/Users/amo/.cache/uv/builds-v0/.tmpDuVfmH/lib/python3.14/site-packages/setuptools/__init__.py", line 117, in setup
          return distutils.core.setup(**attrs)  # type: ignore[return-value]
                 ~~~~~~~~~~~~~~~~~~~~^^^^^^^^^
        File "/Users/amo/.cache/uv/builds-v0/.tmpDuVfmH/lib/python3.14/site-packages/setuptools/_distutils/core.py", line 186, in setup
          return run_commands(dist)
        File "/Users/amo/.cache/uv/builds-v0/.tmpDuVfmH/lib/python3.14/site-packages/setuptools/_distutils/core.py", line 202, in run_commands
          dist.run_commands()
          ~~~~~~~~~~~~~~~~~^^
        File "/Users/amo/.cache/uv/builds-v0/.tmpDuVfmH/lib/python3.14/site-packages/setuptools/_distutils/dist.py", line 1001, in run_commands
          self.run_command(cmd)
          ~~~~~~~~~~~~~~~~^^^^^
        File "/Users/amo/.cache/uv/builds-v0/.tmpDuVfmH/lib/python3.14/site-packages/setuptools/dist.py", line 1107, in run_command
          super().run_command(command)
          ~~~~~~~~~~~~~~~~~~~^^^^^^^^^
        File "/Users/amo/.cache/uv/builds-v0/.tmpDuVfmH/lib/python3.14/site-packages/setuptools/_distutils/dist.py", line 1020, in run_command
          cmd_obj.run()
          ~~~~~~~~~~~^^
        File "<string>", line 170, in run
        File "<string>", line 62, in build_library_files
        File "/usr/local/Cellar/python@3.14/3.14.6/Frameworks/Python.framework/Versions/3.14/lib/python3.14/subprocess.py", line 578, in run
          raise CalledProcessError(retcode, process.args,
                                   output=stdout, stderr=stderr)
      subprocess.CalledProcessError: Command '['/Users/amo/.cache/uv/builds-v0/.tmpDuVfmH/bin/python',
      '/Users/amo/.cache/uv/sdists-v9/pypi/llvmlite/0.48.0/x4aIZFmv-9FKFAEu/src/ffi/build.py']' returned non-zero exit status 1.


hint: `llvmlite` (v0.48.0) was included because `unstructured` (v0.23.1) depends on `numba` (v0.66.0) which depends on `llvmlite`
hint: Build failures usually indicate a problem with the package or the build environment

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions