python3-module-clang-15.0.6.1-alt1.noarch Alt Education 10.2-x86-64-kde Alt Kworkstation 10.2.1 x86-64 Alt Workstation 10.1 x86-64 Alt Education 10.2-x86-64 Alt Server 10.1-x86-64 Шаги воспроизведения: 1. Создать файл тестовый файл test.cpp со следующим содержимым : #include <iostream> using namespace std; int main() { cout << "Hello World!"; return 0; } 2. Создать файл test-clang.py для теста библиотеки python3-module-clang со следующим содержимым : import clang.cindex import typing index = clang.cindex.Index.create() translation_unit = index.parse('test-clang.cpp', args=['-std=c++17']) def filter_node_list_by_node_kind( nodes: typing.Iterable[clang.cindex.Cursor], kinds: list ) -> typing.Iterable[clang.cindex.Cursor]: result = [] for i in nodes: if i.kind in kinds: result.append(i) return result all_classes = filter_node_list_by_node_kind(translation_unit.cursor.get_children(), [clang.cindex.CursorKind.CLASS_DECL, clang.cindex.CursorKind.STRUCT_DECL]) for i in all_classes: print (i.spelling) 3. Запустить файл для теста python3-module-clang : $ python3 test-clang.py Ожидаемый результат : В консоли появляется вывод с анализом исходного кода по AST Реальный результат : Ошибка, невозможно найти файл libclang.so, хотя он присутствует Вывод в консоли : Traceback (most recent call last): File "/usr/lib/python3/site-packages/clang/cindex.py", line 4293, in get_cindex_library library = cdll.LoadLibrary(self.get_filename()) File "/usr/lib64/python3.9/ctypes/__init__.py", line 452, in LoadLibrary return self._dlltype(name) File "/usr/lib64/python3.9/ctypes/__init__.py", line 374, in __init__ self._handle = _dlopen(self._name, mode) OSError: libclang.so: cannot open shared object file: No such file or directory During handling of the above exception, another exception occurred: Traceback (most recent call last): File "/usr/lib/llvm-11.0/lib64/clang-test-so.py", line 3, in <module> index = clang.cindex.Index.create() File "/usr/lib/python3/site-packages/clang/cindex.py", line 2819, in create return Index(conf.lib.clang_createIndex(excludeDecls, 0)) File "/usr/lib/python3/site-packages/clang/cindex.py", line 212, in __get__ value = self.wrapped(instance) File "/usr/lib/python3/site-packages/clang/cindex.py", line 4267, in lib lib = self.get_cindex_library() File "/usr/lib/python3/site-packages/clang/cindex.py", line 4298, in get_cindex_library raise LibclangError(msg) clang.cindex.LibclangError: libclang.so: cannot open shared object file: No such file or directory. To provide a path to libclang use Config.set_library_path() or Config.set_library_file().
Дополнительная информация : 1. Ошибка так же воспроизводится с версией llvm15.0 2. Файл libclang.so лежит в каталоге /usr/lib/llvm-15.0/lib64/
https://git.altlinux.org/tasks/334997/ Пофиксил. Проверил. Работает.