plasma-desktop в kde 4.10 падает при добавлении плазмоида systray
gorthauer 6 февраля, 2013 - 22:12
Обновился до 4.10 и сразу упал, потом разобрался, что падает именно этот плазмоид, попытался трейс стека вызовов сделать, а он даже при сборке Qt с дебагом выдает что-то такое. Как бороться я не представляю. Qt собирал без сильно злых флагов оптимизации и с ними, ошибка осталась. При этом такой трейс и в багтрекер не отправишь, он бесполезный. Пересборка с debug не помогает.
http://pastebin.kde.org/666284/
Кто-нибудь еще сталкивался?
»
- Для комментирования войдите или зарегистрируйтесь

У меня тоже падает. Решения
У меня тоже падает. Решения не нашел.
Сначала не стартовало вообще, из-за Icon-Task.
Возможно, это оно:
Возможно, это оно: https://bugs.gentoo.org/show_bug.cgi?id=450818
UPD: На домашней машине у меня тоже падало. Тогда еще патча не было, и я плюнул, и откатил на 4.9. На рабочей машине не падает. Может быть имеет значение, какой версией gcc собрано: дома тогда был 4.5, а на работе 4.7.
Похоже на то.
У меня тоже падало. Накатил патч на qt-core из багзиллы вручную (ebuild .. unpack; patch; ebuild .. merge) - стало нормально.
Думаю, проблема будет достаточно глобальная, и не сегодня-завтра патч этот для qt-core попадёт в portage.
.
Ну ты силён. И неленив ;)
Почто не задействовал механизм user-patch? Он же как раз для такого случая и придуман...
:wq
--
Live free or die
Потому как через пару дней
Потому как через пару дней этот патч и так появится (моё мнение), и тогда механизм user-patch будет давать сбой на src_unpack.
А так я эту фичу давно использую — у меня все версии ядер и xf86-input-synaptics патчатся на предмет поддержки отключения/включения тачпада по двойному тапу в верхнем левом углу (на моём HP Probook 4720 для этого даже светодиод есть в этом углу тачпада, загорающийся при отключении оного).
патч появится для новой
патч появится для новой версии, а юзерпатчу можно указать «диапазон влияния». Так что операция вполне может быть одноразовой и безопасной.
Присоединяюсь к просьбе
Присоединяюсь к просьбе описать поподробнее, скилл в таких вещах невелик :-( А без трея сидеть действительно задница полная, простите.
upd: Сейчас попробую сделать по аналогии с:
http://klaig.blogspot.ru/2011/07/how-to-apply-user-patches-in-portage.html
отпишусь, что получится по результату.
Bitte, lasst die linux leben!
Да собственно все просто
Да собственно все просто очень: кладем патч в /etc/portage/patches/category/package (можно указать версию и т.д) и пересобираем.
Некоторые «старые» ебилды могут не поддерживать «юзерпатчение», но на практике не попадалось. «Подхват» патча будет виден как минимум в выводе emerge.
не получилось ничерта, я так
не получилось ничерта, я так и сделала. Создала
/etc/portage/patches/x11-libs/qt-core-4.8.4-r1/
сделала
wget -O /etc/portage/patches/x11-libs/qt-core/fix1.patch https://bugs.gentoo.org/attachment.cgi?id=335314
вот его содержимое:
--- /dev/null +++ qt-core/files/qpropertyanimation-setProperty.patch @@ -0,0 +1,17 @@ +--- src/corelib/animation/qpropertyanimation.cpp ++++ src/corelib/animation/qpropertyanimation.cpp +@@ -133,13 +133,7 @@ + return; + } + +- if (newValue.userType() == propertyType) { +- //no conversion is needed, we directly call the QMetaObject::metacall +- void *data = const_cast<void*>(newValue.constData()); +- QMetaObject::metacall(targetValue, QMetaObject::WriteProperty, propertyIndex, &data); +- } else { +- targetValue->setProperty(propertyName.constData(), newValue); +- } ++ targetValue->setProperty(propertyName.constData(), newValue); + } + + /*! Index: qt-core/qt-core-4.8.4-r2.ebuild =================================================================== --- /dev/null +++ qt-core/qt-core-4.8.4-r2.ebuild @@ -0,0 +1,181 @@ +# Copyright 1999-2013 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# $Header: /var/cvsroot/gentoo-x86/x11-libs/qt-core/qt-core-4.8.4-r1.ebuild,v 1.1 2013/01/03 15:30:58 kensington Exp $ + +EAPI=5 + +inherit qt4-build + +DESCRIPTION="The Qt toolkit is a comprehensive C++ application development framework" +SLOT="4" +if [[ ${QT4_BUILD_TYPE} == live ]]; then + KEYWORDS="" +else + KEYWORDS="~alpha ~amd64 ~arm ~hppa ~ia64 ~mips ~ppc ~ppc64 ~sparc ~x86 ~amd64-fbsd ~x86-fbsd ~x86-freebsd ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos ~x86-macos ~x64-solaris ~x86-solaris" +fi +IUSE="+glib iconv icu qt3support ssl" + +DEPEND=" + sys-libs/zlib + glib? ( dev-libs/glib:2 ) + icu? ( >=dev-libs/icu-49:= ) + ssl? ( dev-libs/openssl ) + !<x11-libs/cairo-1.10.2-r2 + !x11-libs/qt:4 +" +RDEPEND="${DEPEND}" +PDEPEND=" + qt3support? ( ~x11-libs/qt-gui-${PV}[aqua=,debug=,glib=,qt3support] ) +" + +PATCHES=( + "${FILESDIR}/moc-workaround-for-boost-1.48.patch" + "${FILESDIR}/qpropertyanimation-setProperty.patch" +) + +pkg_setup() { + QT4_TARGET_DIRECTORIES=" + src/tools/bootstrap + src/tools/moc + src/tools/rcc + src/tools/uic + src/corelib + src/xml + src/network + src/plugins/codecs + tools/linguist/lconvert + tools/linguist/lrelease + tools/linguist/lupdate" + + QT4_EXTRACT_DIRECTORIES="${QT4_TARGET_DIRECTORIES} + include/Qt + include/QtCore + include/QtDeclarative + include/QtGui + include/QtNetwork + include/QtScript + include/QtXml + src/plugins/plugins.pro + src/plugins/qpluginbase.pri + src/src.pro + src/3rdparty/des + src/3rdparty/harfbuzz + src/3rdparty/md4 + src/3rdparty/md5 + src/3rdparty/sha1 + src/3rdparty/easing + src/3rdparty/zlib_dependency.pri + src/declarative + src/gui + src/script + tools/shared + tools/linguist/shared + translations" + + qt4-build_pkg_setup +} + +src_prepare() { + # Don't pre-strip, bug 235026 + for i in kr jp cn tw; do + echo "CONFIG+=nostrip" >> "${S}"/src/plugins/codecs/${i}/${i}.pro + done + + qt4-build_src_prepare + + # bug 172219 + sed -i -e "s:CXXFLAGS.*=:CXXFLAGS=${CXXFLAGS} :" \ + "${S}/qmake/Makefile.unix" || die "sed qmake/Makefile.unix CXXFLAGS failed" + sed -i -e "s:LFLAGS.*=:LFLAGS=${LDFLAGS} :" \ + "${S}/qmake/Makefile.unix" || die "sed qmake/Makefile.unix LDFLAGS failed" + + # bug 427782 + sed -i -e "/^CPPFLAGS/s/-g//" \ + "${S}/qmake/Makefile.unix" || die "sed qmake/Makefile.unix CPPFLAGS failed" + sed -i -e "s/setBootstrapVariable QMAKE_CFLAGS_RELEASE/QMakeVar set QMAKE_CFLAGS_RELEASE/" \ + -e "s/setBootstrapVariable QMAKE_CXXFLAGS_RELEASE/QMakeVar set QMAKE_CXXFLAGS_RELEASE/" \ + "${S}/configure" || die "sed configure setBootstrapVariable failed" +} + +src_configure() { + myconf+=" + -no-accessibility -no-xmlpatterns -no-multimedia -no-audio-backend -no-phonon + -no-phonon-backend -no-svg -no-webkit -no-script -no-scripttools -no-declarative + -system-zlib -no-gif -no-libtiff -no-libpng -no-libmng -no-libjpeg + -no-cups -no-dbus -no-gtkstyle -no-nas-sound -no-opengl -no-openvg + -no-sm -no-xshape -no-xvideo -no-xsync -no-xinerama -no-xcursor -no-xfixes + -no-xrandr -no-xrender -no-mitshm -no-fontconfig -no-freetype -no-xinput -no-xkb + $(qt_use glib) + $(qt_use iconv) + $(qt_use icu) + $(use ssl && echo -openssl-linked || echo -no-openssl) + $(qt_use qt3support)" + + qt4-build_src_configure +} + +src_install() { + dobin bin/{qmake,moc,rcc,uic,lconvert,lrelease,lupdate} + + install_directories src/{corelib,xml,network,plugins/codecs} + + emake INSTALL_ROOT="${D}" install_mkspecs + + # install private headers + insinto "${QTHEADERDIR#${EPREFIX}}"/QtCore/private + find "${S}"/src/corelib -type f -name "*_p.h" -exec doins {} + + + # use freshly built libraries + local DYLD_FPATH= + [[ -d "${S}"/lib/QtCore.framework ]] \ + && DYLD_FPATH=$(for x in "${S}"/lib/*.framework; do echo -n ":$x"; done) + DYLD_LIBRARY_PATH="${S}/lib${DYLD_FPATH}" \ + LD_LIBRARY_PATH="${S}/lib" \ + "${S}"/bin/lrelease translations/*.ts \ + || die "generating translations failed" + insinto "${QTTRANSDIR#${EPREFIX}}" + doins translations/*.qm + + setqtenv + fix_library_files + + # List all the multilib libdirs + local libdirs= + for libdir in $(get_all_libdirs); do + libdirs+=":${EPREFIX}/usr/${libdir}/qt4" + done + + cat <<-EOF > "${T}"/44qt4 + LDPATH="${libdirs:1}" + EOF + doenvd "${T}"/44qt4 + + dodir "${QTDATADIR#${EPREFIX}}"/mkspecs/gentoo + mv "${D}/${QTDATADIR}"/mkspecs/qconfig.pri "${D}${QTDATADIR}"/mkspecs/gentoo \ + || die "failed to move qconfig.pri" + + # Framework hacking + if use aqua && [[ ${CHOST#*-darwin} -ge 9 ]]; then + # TODO: do this better + sed -i -e '2a#include <QtCore/Gentoo/gentoo-qconfig.h>\n' \ + "${D}${QTLIBDIR}"/QtCore.framework/Headers/qconfig.h \ + || die "sed for qconfig.h failed." + dosym "${QTHEADERDIR#${EPREFIX}}"/Gentoo "${QTLIBDIR#${EPREFIX}}"/QtCore.framework/Headers/Gentoo + else + sed -i -e '2a#include <Gentoo/gentoo-qconfig.h>\n' \ + "${D}${QTHEADERDIR}"/QtCore/qconfig.h \ + "${D}${QTHEADERDIR}"/Qt/qconfig.h \ + || die "sed for qconfig.h failed" + fi + + QCONFIG_DEFINE="QT_ZLIB" + install_qconfigs + + # remove .la files + prune_libtool_files + + keepdir "${QTSYSCONFDIR#${EPREFIX}}" + + # Framework magic + fix_includes +}далее
#emerge -l qt-core
в процессе было:
Applying user patches from /etc/portage/patches//x11-libs/qt-core-4.8.4-r1 ...
fix1.patch ... [ok]
Done with patching
>>> Source prepared
то есть как я поняла - патч успешно применился на исходник.
И тем не менее после установки и перезагрузки все по старому :-( Плазма орет:
Процесс: kdeinit4 PID: 8014 Сигнал завершения: Segmentation fault (11)
Bitte, lasst die linux leben!
Простыню, конечно, можно было
Простыню, конечно, можно было бы и не развешивать тут.
Если патч «применился», но не помогло — значит не тот патч? Кед у меня нет, так что мое намерение было лишь прояснить ситуацию с юзерпатчами, коль скоро о них заговорили.
Этот патч не применился,
Этот патч не применился, видимо, из-за того, что это - не патч для qt-core, а патч для создания ebuild-а и patch-а qt-core-r2.
Сделайте patch -p0 < этот.patch в пустом каталоге, и уже результат — файл qpropertyanimation-setProperty.patch — используйте как user patch.
Можно по подробней как
Можно по подробней как патчили? А то без трея сидеть совсем не в кайф.
А какой именно накатили
А какой именно накатили патчик? Тот что выше указан? А то мне он не помог.
Bitte, lasst die linux leben!
Для тех, кто не следит за
Для тех, кто не следит за багом на b.g.o
Попробуйте просто пересобрать qt-core c -Os (ничего патчить не надо)
Как ни странно, но мне
Как ни странно, но мне помогло.
Аналогично - пересбор с этим
Аналогично - пересбор с этим флагом помог. А что это за флаг такой?
Bitte, lasst die linux leben!
/
http://gcc.gnu.org/onlinedocs/gcc/Optimize-Options.html
:wq
--
Live free or die
.
Ничего не патчил, всё и так хорошо с моими общими флагами CXXFLAGS="-O2 -pipe -g0 -march=core-avx-i -mtune=native -fno-align-labels -fno-align-loops -fomit-frame-pointer -fpredictive-commoning -ftree-vectorize -s" (разве что не собирается с -fgraphite-identity и -flto,- пришлось занести данный пакет в package.env)
Мы тоже не всего читали Шнитке!.. © В. Вишневский
Поставил
Поставил plasma-workspace-4.10.0-r1 из оверлея. Помогло.
mony написал(а): Поставил
Аналогично (забросил ебилд в локальный оверлей).
В 4.10 наконец нативно живет appmenu, а то надоело по оверлеям собирать.
Да пребудет с тобой великий Linux.
Собрал на домашней машине
Собрал на домашней машине qt-core с помощью gcc-4.7.2. Не падает :) Флаги обычные:
Баг исправили в апстриме и в
Баг исправили в апстриме и в портаже, обновляйте qt-core. Я пока не проверял - для этого надо кеды перезапустить.