LINUX.ORG.RU

Современный QtWebkit (5.212?) на Ubuntu 16.04 32 бит

 , , , ,


1

2

Собственно, сабж. Надо было обернуть веб-приложение во что-нибудь менее прожорливое, чем современные браузеры. Накидал проект в creator'e, все работает, кроме некоторых кусков js-лапши. Уже морально был готов не спать неделю и переписывать его под вебкит (параллельно изучая сам js), но вот сейчас скомпилил тот же проект на личном ноуте под манжарой, и диву дался, как идеально все работает. Тут же задумался, а можно ли скомпилировать/достать из ппа/деб-пакетов версию поновее, но релевантной инфы так и не нашел. Кто-нибудь когда-нибудь делал подобное? Может есть какие-то менее очевидные варианты? Спасибо за внимание.

Ответ на: комментарий от CrossFire

Решить проблему малой кровью, если это возможно. Вебкит собирается полдня, а готовых пакетов я не нашел, возможно, плохо искал. Можно ли вообще в 16.04 найти версию вебкита новее, чем из реп?

Man-o-Jar ()
Ответ на: комментарий от darkenshvein

Ну так рабочий ноут - не целевая платформа. Чем меньше потребление памяти, тем на большем количестве машин оно сможет завестись и нормально работать, не отправляя систему в своп.

Man-o-Jar ()
Ответ на: комментарий от Man-o-Jar

Вебкит собирается полдня

Какой комп? На хорошей для 2010 года конфигурации должно собраться за два часа.

Можно ли вообще в 16.04 найти версию вебкита новее, чем из реп?

В репах тебе и так 2.3.2 дали, разница с 2.3.4 минимальная

Если нужно реально новее, то только Qt 5

annulen ★★★★★ ()
Ответ на: комментарий от annulen
 sudo apt install libqt5webkit5
[sudo] пароль для kiosk: 
Чтение списков пакетов… Готово
Построение дерева зависимостей       
Чтение информации о состоянии… Готово
Уже установлен пакет libqt5webkit5 самой новой версии (5.5.1+dfsg-2ubuntu1).
libqt5webkit5 установлен вручную.
Man-o-Jar ()
Ответ на: комментарий от Man-o-Jar

Я вообще в этих пакетах запутался, несколько раз приходилось разрешать ад зависимостей через aptitude.

sudo aptitude install libqtwebkit4
libqtwebkit4 уже установлен запрошенной версии (2.3.2-0ubuntu11)
libqtwebkit4 уже установлен запрошенной версии (2.3.2-0ubuntu11)
Ни одного пакета не будет установлено, обновлено или удалено.
0 пакетов обновлено, 0 установлено новых, 0 пакетов отмечено для удаления, и 12 пакетов не обновлено.
Необходимо получить 0 Б архивов. После распаковки 0 Б будет занято.
Man-o-Jar ()
Ответ на: комментарий от Man-o-Jar

Один пакет для Qt4, другой для Qt5. Если нет острой необходимости юзать именно четверку, то не стоит этого делать - там все старее. Если надо вебкит еще новее - есть бинарники для Qt 5.9 официальных [1], или обновляй убанту, или собирай сорсы

[1] https://github.com/annulen/webkit/releases/tag/qtwebkit-5.212.0-alpha2

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

Стоп. То есть мне надо будет к ней еще и Qt соответствующей версии собирать (и не факт, что оно заработает на 32бит)?

При компиляции требует sqlite3, качал исходники, прописывал путь - бесполезно. Походу все же придется лезть в дебри js...

Man-o-Jar ()
Ответ на: комментарий от Man-o-Jar

То есть мне надо будет к ней еще и Qt соответствующей версии собирать

Для 32-х бит - да. Заработает точно, так как другие 32-битные платформы тестируются, и дистры еще не все выпилили 32-х битный x86.

Убунту обновить гораздо проще будет, поставил бинарники и все

При компиляции требует sqlite3

Все зависимости из репов можно поставить

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

Все зависимости из репов можно поставить

libsqlite3-dev? Я и ее ставил, и все из документации https://wiki.qt.io/Building_Qt_5_from_Git/, все равно не может найти. Был бы хобби-проект, наверное, разобрался бы рано или поздно. Но на работе постоянно подгоняют, нужно сделать максимально быстро.

Код, кстати, на jQuery 3.x. В нормальных браузерах работает и на 1.9, но на вебките ни в какую. Я раньше думал, что jQuery как раз создан для того, чтобы код нормально работал в устаревших браузерах.

Man-o-Jar ()
Ответ на: комментарий от Man-o-Jar

Я раньше думал, что jQuery как раз создан для того, чтобы код нормально работал в устаревших браузерах.

Я не веб-девелопер (я вижу эту кухню в основном «с изнанки», в виде примитивов которых не хватает), но емнип только jquery 1.x имел такую цель, а потом их понесло

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

https://qqmash.github.io/keys/ Клик по текстовому полю вообще не отрабатывается.

Код рабочий (проверял в фаерфоксе) на jquery 1.9, но в вебките никак не идет. Свежий Qt не компилируется даже по инструкции, написанной специально для Ubuntu 16.04.

Man-o-Jar ()
Ответ на: комментарий от Man-o-Jar

Установил 5.10 из PPA: https://launchpad.net/~beineri/ archive/ubuntu/opt-qt-5.10.0-xenial

В creator'е профиль определяется, но не может найти g++. Обновил уже все, что можно (кроме самого creator'а). Неужели ни у кого в мире больше нет необходимости в свежем 32-битном вебките на убунту?

Man-o-Jar ()
Ответ на: комментарий от Man-o-Jar

Спустя пару часов после начала компиляции qtwebkit-opensource-src-5.8.0:

Makefile.widgetsapi:1122: ошибка выполнения рецепта для цели «.obj/WebKit/qt/WidgetApi/qwebpage.o»
make[2]: *** [.obj/WebKit/qt/WidgetApi/qwebpage.o] Ошибка 1
make[2]: выход из каталога «/home/kiosk/WEBKIT/qtwebkit-opensource-src-5.8.0/Source»
Makefile.QtWebKit:75: ошибка выполнения рецепта для цели «sub-widgetsapi-pri-make_first-ordered»
make[1]: *** [sub-widgetsapi-pri-make_first-ordered] Ошибка 2
make[1]: выход из каталога «/home/kiosk/WEBKIT/qtwebkit-opensource-src-5.8.0/Source»
Makefile:353: ошибка выполнения рецепта для цели «sub-Source-QtWebKit-pro-make_first-ordered»
make: *** [sub-Source-QtWebKit-pro-make_first-ordered] Ошибка 2

Man-o-Jar ()
Ответ на: комментарий от Man-o-Jar

qt-everywhere-src5.11.0 Снова после нескольких часов сборки: A suitable version of dbus could not be found. QtWebEngine will not be built.

Попробую, конечно, собрать без него (хотя, переход на webengine теперь мне кажется одним из лучших вариантов), но чет уже энтузиазм подутихает.

Man-o-Jar ()
Ответ на: комментарий от former_anonymous

Я в курсе. Но если вебкит и дальше не будет собираться, придется попробовать. Qt 5.11, кстати, уже благополучно собрался, сейчас собираю на нем webkit 5.8. Продолжаю держать в курсе.

Man-o-Jar ()
Ответ на: комментарий от former_anonymous

C libsqlite3-dev я уже как-то разобрался (другие сорцы вроде скачал). Вот свежая порция ошибок при построении qtwebkit-opensource-src-5.8.0 с помощью Qt 5.11:

Makefile.widgetsapi:1144: ошибка выполнения рецепта для цели «.obj/WebKit/qt/WidgetApi/qwebpage.o»
make[2]: *** [.obj/WebKit/qt/WidgetApi/qwebpage.o] Ошибка 1
make[2]: *** Ожидание завершения заданий…
make[2]: выход из каталога «/home/kiosk/WEBKIT/qtwebkit-opensource-src-5.8.0/BUILD/Source»
Makefile.QtWebKit:75: ошибка выполнения рецепта для цели «sub-widgetsapi-pri-make_first-ordered»
make[1]: *** [sub-widgetsapi-pri-make_first-ordered] Ошибка 2
make[1]: выход из каталога «/home/kiosk/WEBKIT/qtwebkit-opensource-src-5.8.0/BUILD/Source»
Makefile:353: ошибка выполнения рецепта для цели «sub-Source-QtWebKit-pro-make_first-ordered»
make: *** [sub-Source-QtWebKit-pro-make_first-ordered] Ошибка 2

Man-o-Jar ()
Ответ на: комментарий от former_anonymous

Уже собираю webkit 5.9.1. Если и в этот раз не получится, сниму полный лог. Может, я собираю как дебил через qmake - make? Может, настройки какие тонкие нужны?

Спасибо вам за поддержку.

Man-o-Jar ()
Ответ на: комментарий от former_anonymous

Вот лог последнего билда:

https://pastebin.com/q8ymWkhY

Копировал напрямую из терминала, вроде даже собралось и установилось, когда запускал make install с sudo. Но вот при попытке сделать make в папке проекта:

g++ -c -pipe -O2 -Wall -W -D_REENTRANT -fPIC -DQT_DEPRECATED_WARNINGS -DQT_NO_DEBUG -DQT_WEBKITWIDGETS_LIB -DQT_WIDGETS_LIB -DQT_WEBKIT_LIB -DQT_GUI_LIB -DQT_NETWORK_LIB -DQT_CORE_LIB -I. -I/opt/Qt5.11/include -I/opt/Qt5.11/include/QtWebKitWidgets -I/opt/Qt5.11/include/QtWidgets -I/opt/Qt5.11/include/QtWebKit -I/opt/Qt5.11/include/QtGui -I/opt/Qt5.11/include/QtNetwork -I/opt/Qt5.11/include/QtCore -I. -isystem /usr/include/libdrm -I. -I/opt/Qt5.11/mkspecs/linux-g++ -o mainwindow.o mainwindow.cpp
In file included from mainwindow.cpp:2:0:
ui_mainwindow.h:13:36: fatal error: QtWebKitWidgets/QWebView: Нет такого файла или каталога
 #include <QtWebKitWidgets/QWebView>
                                    ^
compilation terminated.
Makefile:1054: ошибка выполнения рецепта для цели «mainwindow.o»
make: *** [mainwindow.o] Ошибка 1

Очень странно, мне теперь отдельно qwebview компилировать?

Man-o-Jar ()
Ответ на: комментарий от Man-o-Jar
kiosk@kiosk:~/WEBKIT/qtwebview-opensource-src-5.9.1/build$ make
Some of the required modules (android|ios|winrt|qtHaveModule(webengine)) are not available.
Skipped.

Ну офигеть вообще. Отключил webengine, чтобы скомпилился qt 5.11.

Осталась последняя надежда - попробую собрать Qt 5.9.1 и на нем webkit той же версии. Если нет - иду убиваться об стену. Всем добра.

Man-o-Jar ()
Ответ на: комментарий от Man-o-Jar

Зависит от приложения и количества дочерних процессов.

У меня сейчас довольно жирный инстанс Riot (клиент для сети Matrix) с кучей открытых чатов и прогруженных сообщений кушает примерно 240 MB RAM.

spijet ★★ ()
Ответ на: комментарий от Man-o-Jar

попробую собрать Qt 5.9.1 и на нем webkit той же версии

на самом деле для самосборных версий Qt достаточно распаковать исходники webkit в дерево исходников Qt в каталог с именем webkit, и при сборке Qt он подцепится автоматом.

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

Не судьба с Qt 5.9.1:

config.log: https://pastebin.com/i0U0gYYE

Хвост от build.log: https://pastebin.com/KHv5wDWU

Насчет исходников webkit спасибо. Но подойдут ли они от другой версии? Как в моем случае, webkit 5.9.1 на qt 5.11? Неужто webview в новых версиях работает на webengine? (тогда смысл вообще в дублировании?)

Man-o-Jar ()
Ответ на: комментарий от former_anonymous

по логу видно что не установилось

В том логе я sudo забыл, конечно не установилось.

kiosk@kiosk:~$ ls /opt/Qt5.11/include/QtWebKitWidgets/
5.9.1               QtWebKitWidgetsDepends    qwebinspector.h
qgraphicswebview.h  qtwebkitwidgetsversion.h  qwebpage.h
QtWebKitWidgets     qwebframe.h               qwebview.h

QWebView должен быть директорией?

Мне тут в голову шальная идея пришла - возможно ли адаптировать ебилды с генты для сборки на убунту?

Man-o-Jar ()
Ответ на: комментарий от Man-o-Jar

не установились промежуточные заголовки типа <QWebView>. Видимо это побочный эффект компиляции не внутри дерева Qt. Подключай или всеобщий заголовок <QtWebKitWidgets>, который включит всё что есть в webkit widgets, или напрямую <QtWebKitWidgets/qwebview.h>

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

Я дико извиняюсь, но... куда подключать? Компиляция внутри дерева - это скопировать сорцы в директорию webkit (или qtwebkit, я сделал и то, и то - вообще перестало компилироваться)?

Man-o-Jar ()
Ответ на: комментарий от former_anonymous
g++ -Wl,-O1 -Wl,-rpath-link,/usr/lib/i386-linux-gnu -o nebro main.o mainwindow.o moc_mainwindow.o   -lQt5WebKitWidgets -lQt5Widgets -lQt5WebKit -lQt5Gui -lQt5Network -lQt5Core -lGL -lpthread
main.o:(.qtversion[qt_version_tag]+0x0): undefined reference to `qt_version_tag'
collect2: error: ld returned 1 exit status
Makefile:149: ошибка выполнения рецепта для цели «nebro»
make: *** [nebro] Ошибка 1

Побежал гуглить, хоть и не думаю, что смогу найти что-то релевантное (или я тупой, или тут реально в разы сложнее получить готовое решение, чем в вебне). Параллельно думаю уже на электрон перекатываться (если смогу в 32 бит) и пусть себе память жрет, если она хотя бы утекать не будет.

Man-o-Jar ()

Разрешить репозиторий Source, выполнить sudo apt-get build-dep название_пакета, скачать DEB-SRC пакет от новой Убунты, скомпилировать.

anonymous ()