-
Notifications
You must be signed in to change notification settings - Fork 5
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
glib2.0 + libdnf #6
Comments
Суть в том, что поддержка его неполноценная, для С это работает. Для C++ этот cleanup как-то мешается с деструкторами и в C++ его поддерживать не стали. В итоге компилятор выводит ворнинг, что не знает такого атрибута. А в программе будут утечки памяти, ведь ресурсы не освобождаются. Из-за того как сделан g_autofree - исправить это невозможно. Я сделал макросы для помощи в исправлении, надо через sed фильтры исходники пропускать. А вместо ворнинга на cleanup будет уже ошибка, так что можно будет найти и исправить утечки памяти. В Альте сейчас 8 пакетов с такими патчами: mate-system-monitor Примеры sed патчей: sed -i "s|g_autofree char \*|g_autofree_edg(char) |" src/sysinfo.cpp
sed -i "/g_autofree gchar/{s|g_autofree gchar|g_autofree_edg(gchar)|;s|\*||g}" src/load-graph.cpp
sed -i "s|g_autofree gchar \*|g_autofree_edg_ex(gchar,std::string) |" eiskaltdcpp-gtk/src/{adlsearch,hub,mainwindow,uploadqueue}.cc
sed -i "s|g_autofree gchar\*|g_autofree_edg_ex(gchar,Glib::ustring) |" src/ct/ct_{misc_utils,storage_xml}.cc
sed -i "s|g_autofree gchar\*|g_autofree_edg_ex(gchar,std::string) |" src/ct/ct_*.cc
sed -i "s|pConverted+|(gchar*)&|" src/ct/ct_misc_utils.cc
sed -i "s|save_to_buffer(|&(gchar*\&)|" src/ct/ct_{imports,image,parser_html}.cc
sed -i "s|filename(pOutStr|filename((gchar*)pOutStr|" src/ct/ct_filesystem.cc |
Вот спека https://packages.altlinux.org/ru/sisyphus_e2k/srpms/libdnf/specfiles/ Пришлось потрудиться это пропатчить, там еще и свой макрос придумали с cleanup под названием |
Попробовал применить
В коде патча к glib2.0 вижу такое
Но от чего-то все равно не работает |
У вас версия 0.70, а я исправлял 0.60. Так что дорабатывайте исправления. |
Глянул патч для glib2.0, я так понял он добавляет возможность использовать всякие g_autoptr
в lcc
Однако вот пытаюсь собрать libdnf-0.70.0
и там лезет
в участках кода типа
Можно подсказать куда копнуть тут? Проблема в glib2.0 или непосредственно в libdnf?
Пример упавшей сборки
https://file-store.rosalinux.ru/api/v1/file_stores/295646e84de0ec62a601993c58219e1509cd7b69
The text was updated successfully, but these errors were encountered: