Bug 48566 - Ошибка при запуске .py файла для теста модуля
Summary: Ошибка при запуске .py файла для теста модуля
Status: CLOSED FIXED
Alias: None
Product: Sisyphus
Classification: Development
Component: python3-module-clang (show other bugs)
Version: unstable
Hardware: x86_64 Linux
: P5 normal
Assignee: Anton Vyatkin
QA Contact: qa-sisyphus
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2023-11-23 15:39 MSK by Величко София
Modified: 2023-11-24 11:37 MSK (History)
19 users (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Величко София 2023-11-23 15:39:10 MSK
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().
Comment 1 Величко София 2023-11-23 15:58:17 MSK
Дополнительная информация :
  1. Ошибка так же воспроизводится с версией llvm15.0
  2. Файл libclang.so лежит в каталоге /usr/lib/llvm-15.0/lib64/
Comment 2 Anton Vyatkin 2023-11-24 11:37:32 MSK
https://git.altlinux.org/tasks/334997/
Пофиксил. Проверил. Работает.