LINUX.ORG.RU

Ошибка при сборке QtWebkit 5.4.0

 ,


0

1

Лог. Opensuse 12.2, x86_64.

Что пробовал сделать: вставлял #include <iostream>, #include <cctype>, #include <ctype.h> и #include <locale> в сам TextBreakIteratorWchar.cpp, в TextBreakIterator.h и в config.h, лежащий в «WebCore» - не помогло. Не помогло. Хотя предыдущую ошибку компиляции удалось решить с помощью #include <locale> в файл Source/WTF/wtf/unicode/wchar/UnicodeWchar.h Оставаться на QtWebkit 5.3.2 не вариант из-за того что 2gis требует 5.4.

Оставаться на QtWebkit 5.3.2 не вариант из-за того что 2gis требует 5.4.

ДваГИС же тянет с собой собственные либы Qt 5.x.x, очень советую их и использовать. Так как они этот самый Qt могут патчить на свой лад.

EXL ★★★★★ ()
Ответ на: комментарий от ZenitharChampion

Весь срез из гита бери. Ряд багов поправили. У меня, например, релизные тарболы вообще не стали собирать вебкит. пришлось всё тянуть из гита.

mkam ()
Ответ на: комментарий от mkam

Я скачал версию из GIT, начал собирать. Проявилась ошибка, которая была ещё в релизе 5.4.0:

make[2]: Entering directory `/home/zenitur/rpmbuild/BUILD/qt-qtwebkit/Source/JavaScriptCore'
g++ -Wl,-O1 -o ../../bin/jsc .obj/jsc.o   -L/usr/lib64 -Wl,-whole-archive -lJavaScriptCore -Wl,-no-whole-archive -L/home/zenitur/rpmbuild/BUILD/qt-qtwebkit/Source/JavaScriptCore/ -Wl,-whole-archive -lWTF -Wl,-no-whole-archive -L/home/zenitur/rpmbuild/BUILD/qt-qtwebkit/Source/WTF/ -lQt5Core -L/usr/lib64 -lpthread -lpthread
/usr/lib64/gcc/x86_64-suse-linux/4.7/../../../../x86_64-suse-linux/bin/ld: /home/zenitur/rpmbuild/BUILD/qt-qtwebkit/Source/WTF//.obj/wtf/gobject/GRefPtr.o: undefined reference to symbol 'g_main_loop_unref'
/usr/lib64/libglib-2.0.so.0: error adding symbols: DSO missing from command line
collect2: error: ld returned 1 exit status
make[2]: *** [../../bin/jsc] Error 1
make[2]: Leaving directory `/home/zenitur/rpmbuild/BUILD/qt-qtwebkit/Source/JavaScriptCore'
make[1]: *** [sub-jsc-pro-make_first-ordered] Error 2
make[1]: Leaving directory `/home/zenitur/rpmbuild/BUILD/qt-qtwebkit/Source/JavaScriptCore'
make: *** [sub-Source-JavaScriptCore-JavaScriptCore-pro-make_first-ordered] Error 2

Я так и не нашёл в какой файл добавить "-lglib-2.0 -lgio-2.0" и добавил прямо в /usr/lib64/qt5/mkspecs/qmodule.pri:

-INCLUDEPATH +=  "/usr/include/pgsql/" "/usr/include/pgsql/server" "/usr/include/mysql/"
+INCLUDEPATH +=  "/usr/include/pgsql/" "/usr/include/pgsql/server" "/usr/include/mysql/" "/usr/include/glib-2.0/" "/usr/lib64/glib-2.0/include/"

Компиляция 5.4.0 продолжилась, а git - нет. Не подскажешь куда добавить параметр?

Причём в этом же файле pri есть условие QT_CFLAGS_QGTK2, в котором есть -lglib-2.0. Но configure не определяет что это нужно включить.

ZenitharChampion ★★★★★ ()
Ответ на: комментарий от mkam

Запустил команду руками (пакет RPM соберу потом), и вот что увидел:

platform/text/wchar/TextBreakIteratorWchar.cpp: В функции-члене «virtual int WebCore::WordBreakIterator::next()»:
platform/text/wchar/TextBreakIteratorWchar.cpp:117:53: ошибка: нет декларации «isSpace» в этой области видимости
platform/text/wchar/TextBreakIteratorWchar.cpp:119:39: ошибка: нет декларации «isSpace» в этой области видимости
platform/text/wchar/TextBreakIteratorWchar.cpp: В функции-члене «virtual int WebCore::WordBreakIterator::previous()»:
platform/text/wchar/TextBreakIteratorWchar.cpp:134:53: ошибка: нет декларации «isSpace» в этой области видимости
platform/text/wchar/TextBreakIteratorWchar.cpp:136:39: ошибка: нет декларации «isSpace» в этой области видимости
platform/text/wchar/TextBreakIteratorWchar.cpp: In destructor «WebCore::NonSharedCharacterBreakIterator::~NonSharedCharacterBreakIterator()»:
platform/text/wchar/TextBreakIteratorWchar.cpp:254:16: предупреждение: deleting object of abstract class type «WebCore::TextBreakIterator» which has non-virtual destructor will cause undefined behaviour [-Wdelete-non-virtual-dtor]
platform/text/wchar/TextBreakIteratorWchar.cpp: В функции «void WebCore::releaseLineBreakIterator(WebCore::TextBreakIterator*)»:
platform/text/wchar/TextBreakIteratorWchar.cpp:288:16: предупреждение: deleting object of abstract class type «WebCore::TextBreakIterator» which has non-virtual destructor will cause undefined behaviour [-Wdelete-non-virtual-dtor]
make[2]: *** [.obj/platform/text/wchar/TextBreakIteratorWchar.o] Ошибка 1
make[2]: *** Ожидание завершения заданий...
make[2]: Выход из каталога `/home/zenitur/rpmbuild/BUILD/qt-qtwebkit/Source/WebCore'
make[1]: *** [sub-Target-pri-make_first-ordered] Ошибка 2
make[1]: Выход из каталога `/home/zenitur/rpmbuild/BUILD/qt-qtwebkit/Source/WebCore'
make: *** [sub-Source-WebCore-WebCore-pro-make_first-ordered] Ошибка 2

Это очень странно, потому что ты говорил что этой функции в текущей редакции кода нет. Может когда ты смотрел GIT, там была версия 4.x? Или я скачал другую ветку кода?

ZenitharChampion ★★★★★ ()
Последнее исправление: ZenitharChampion (всего исправлений: 1)
Ответ на: комментарий от ZenitharChampion

Для начала расскажи как ты это собираешь. Что-то у тебя всё очень страшно выглядит. Вечером могу поставить в виртуалку сусю и конпельнуть сам.
Сейчас качну на убунту и гляну сборку и исходники.

mkam ()
Ответ на: комментарий от mkam

Качал отсюда: https://qt.gitorious.org/qt/qtwebkit/commits/5.4 кнопкой Download. Скачался этот коммит от 3 декабря. Я подозреваю что я скачал релиз, а не предварительную версию 5.4.1.

Собираю с помощью rpmbuild (не хочу локальный OBS) пакеты qtbase, qtdeclarative, qtquick, qtscript, qtsensors, qtxmlpatterns, qtwebkit. SRPM от более новой версии Opensuse 13.1. Qtbase собираю без icu, qtwebkit собираю с патчами noicu. Версия 5.3.1 собралась успешно. После попытки обновления до 5.4.0 её пришлось удалить: возникла ошибка компиляции, Google подсказал что уже установленный Qt5 мешает сборке. Qtwebkit 5.4.0 (а точнее его SRPM) захотел две новые зависимости: qtlocation и qtwebchannel (последний, в свою очередь, захотел qtwebsockets).

ZenitharChampion ★★★★★ ()
Последнее исправление: ZenitharChampion (всего исправлений: 2)
Ответ на: комментарий от ZenitharChampion

Qtlocation попросил чтобы я доустановил -devel пакеты gconf-2.0, geoclue и gypsy - так появилась зависимость от GTK, которую qmake, похоже, не замечает. Наверное надо пересобрать qtbase с каким-нибудь ключом, и тогда ключ -lglib-2.0 начнёт добавляться сам.

ZenitharChampion ★★★★★ ()
Последнее исправление: ZenitharChampion (всего исправлений: 1)
Ответ на: комментарий от ZenitharChampion

Извини за пропажу - редкая жопа на работе.
Я собирал в выходные исходники из гита. Всё собралось отлично.
Но я не использовал rpmbuild. Чем тебя не устраивает сборка ручками и рамещение где-нибудь в ~/opt?

mkam ()
Ответ на: комментарий от ZenitharChampion

Я устанавливал пакеты сугубо упоминаемые в вики про сборки из гита. Более того, я просто копипастил приведённые там команды :)

mkam ()
Ответ на: комментарий от mkam

Можно, конечно. Если не соберётся - зарепорчу багрепорт. Для 5.3.1 репортил - исправили.

ZenitharChampion ★★★★★ ()
Ответ на: комментарий от ZenitharChampion

Я так понимаю, что это вынужденный костыль, что бы пользователь не забывал, что стандартные средства здесь не уместны.


// The behavior of many of the functions in the <ctype.h> header is dependent
// on the current locale. But in the WebKit project, all uses of those functions
// are in code processing something that's not locale-specific. These equivalents
// for some of the <ctype.h> functions are named more explicitly, not dependent
// on the C library locale, and we should also optimize them as needed.

mkam ()
Ответ на: комментарий от mkam

Я всё понял. Поискал с помощью kfind слово «isSpace» в каталоге WebCore, нашёл хедеры icu. А у меня наложены патчи noicu. Видимо, патчи noicu для 5.3 не подходят к 5.4. Жду обновления. Ставлю «решено».

ZenitharChampion ★★★★★ ()
Последнее исправление: ZenitharChampion (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.