xfce-applications.menu содержит недопустимую конструкцию <MergeDir>applications-merged</MergeDir> , из-за которой в xfce падает kbuildsycoca4 и ничего не запускается из kde4-шного.
То же самое во всех остальных файлах, содержащих такую конструкцию.
А почему она недопустимая?
(В ответ на комментарий №2) > А почему она недопустимая? Ее быть не должно, т.к. в спецификации написано, что она _обязана_ обрабатываться автоматически. То же самое, что <MergeDir>/</MergeDir>. Давайте и такую включим.
Хотя, вру. В примере есть http://standards.freedesktop.org/menu-spec/latest/ar01s08.html .
http://standards.freedesktop.org/menu-spec/menu-spec-latest.html $XDG_CONFIG_DIRS/menus/applications-merged/ The default merge directories included in the <DefaultMergeDirs> element.
<MergeDir>xfce-applications-merged</MergeDir> тоже не должно быть, т.к. оно должно автоматом обрабатываться при XDG_CONFIG_PREFIX="xfce-"
(В ответ на комментарий №6) > <MergeDir>xfce-applications-merged</MergeDir> тоже не должно быть, т.к. оно > должно автоматом обрабатываться при XDG_CONFIG_PREFIX="xfce-" Хотя, это вряд ли.
Прошу прощения за назойливость, а когда примерно исправление будет? Привык к K3b, а оно в Simply не работает.
сорри, пропустил баг, был в отъезде.
отправил altlinux-freedesktop-menu-0.65-alt1
При этом garcon applications-merged не использует совсем. Я не уверен, что конструкция <MergeDir>applications-merged</MergeDir> ошибочна, если я правильно понимаю, то это аналог <DefaultMergeDirs/>. В стандарте написано именно это, а не то, что applications-merged обрабатывается всегда.
(В ответ на комментарий №11) > При этом garcon applications-merged не использует совсем. > Я не уверен, что конструкция <MergeDir>applications-merged</MergeDir> ошибочна, > если я правильно понимаю, то это аналог <DefaultMergeDirs/>. В стандарте > написано именно это, а не то, что applications-merged обрабатывается всегда. Я так понимаю, что конструкция <MergeDir>applications-merged</MergeDir> вполне допустимая, но поскольку kbuildsycoca4 на ней глючит, лучше ее убрать пока, чтобы не страдали пользователи. 2 года назад, когда писал эти меню, kbuildsycoca4 даже на некоторых комментарях глючил, пришлось чистить меню файлы от комментариев :(
можно сказать, есть 2 бага: 1) крошится kbuildsycoca4 2) в garkon не хватает поддержки <DefaultMergeDirs/> == <MergeDir>applications-merged</MergeDir> повесить оба бага в апстримы, если починят kbuildsycoca4 - верну <MergeDir>applications-merged</MergeDir> если починят garkon - то <DefaultMergeDirs/> уже есть, поэтму можно будет не возвращать <MergeDir>applications-merged</MergeDir>.
(В ответ на комментарий №12) > > Я не уверен, что конструкция >> <MergeDir>applications-merged</MergeDir> ошибочна, Явно не видно нигде запрета, но исходя из спецификации -- _абсолютно_ лишняя. > > если я правильно понимаю, то это аналог <DefaultMergeDirs/>. Она обязана быть в нее встроена по спецификации. > > В стандарте написано именно это, > > а не то, что applications-merged обрабатывается всегда. Написано, что обрабатывается всегда: "$XDG_CONFIG_DIRS/menus/applications-merged/ The default merge directories included in the <DefaultMergeDirs> element." > 2 года назад, когда писал эти меню, > kbuildsycoca4 даже на некоторых комментарях глючил, > пришлось чистить меню файлы от комментариев :( Это я припоминаю.
(В ответ на комментарий №11) > При этом garcon applications-merged не использует совсем. Что можно запустить через strace, чтоб посмотреть, где он шерстит?
Вообще, я из спецификации понял, что XDG_MENU_PREFIX относится только к appllications.menu и более ни к чему. Т.е. к applications-merged не относится. Нужно проверить не применяет ли его garcon к applications-merged.
(В ответ на комментарий №15) > Что можно запустить через strace, чтоб посмотреть, где он шерстит? Если только xfce4-panel с плагином меню (garcon - это библиотека). (В ответ на комментарий №16) > Вообще, я из спецификации понял, что XDG_MENU_PREFIX относится только к > appllications.menu и более ни к чему. Т.е. к applications-merged не относится. > Нужно проверить не применяет ли его garcon к applications-merged. Да, похоже что применяет. Я вижу попытки открыть /etc/xdg/menus/altlinux-application-merged в выводе strace. Сейчас проблема в том, что текущий вариант ломает использование меню в SL (там свое меню). Поэтому я предлагаю пока откатить изменение (или написать <DefaultMergeDirs/> в этом месте, так тоже работает). И дальше уже разбираться в менее авральном режиме.
Переоткрываю.
(В ответ на комментарий №17) > /etc/xdg/menus/altlinux-application-merged в выводе strace. Если не "application", а "applications", то, вроде, нормально. IIRC на каждый X.menu должно проверять X-application-merged .
(В ответ на комментарий №19) > IIRC на каждый X.menu должно проверять X-application-merged . Точнее, на каждый X.menu должно проверять X-merged .
" For example in a system that uses a preferences.menu file to describe an additional menu, the default merge directories included in the <DefaultMergeDirs> element in the preferences.menu file would become $XDG_CONFIG_DIRS/menus/preferences-merged/ "
А так же " gnome-applications.menu or kde-applications.menu depending on the desktop environment in use must still use applications-merged as the default merge directory in both cases "
Т.е. каталоги типа xfce4-applications-merged нужно включать явно.
(В ответ на комментарий №21) > " For example in a system that uses a preferences.menu file to describe an > additional menu, the default merge directories included in the > <DefaultMergeDirs> element in the preferences.menu file would become > $XDG_CONFIG_DIRS/menus/preferences-merged/ " Да, я тоже только что это читал. Т.е. получается, что раскрытие <DefaultMergeDirs> в altlinux-application-merged из altlinux-application.menu как раз правильно. Из xfce-applications.menu же <DefaultMergeDirs> раскрывается в applications-merged видимо по аналогии с gnome-applications.menu и kde-applications.menu.
(В ответ на комментарий №24) > получается, что раскрытие > <DefaultMergeDirs> в altlinux-application-merged из altlinux-application.menu > как раз правильно. Да. Только просьба на всякий не путать буквы. applicationS, а не application. > Из xfce-applications.menu же <DefaultMergeDirs> раскрывается в > applications-merged видимо по аналогии с gnome-applications.menu и > kde-applications.menu. Если раскрывается, то явно включать applications-merged не нужно, что исправляет падение kbuildsycoca4.
(В ответ на комментарий №25) > (В ответ на комментарий №24) > > получается, что раскрытие > > <DefaultMergeDirs> в altlinux-application-merged из altlinux-application.menu > > как раз правильно. > Да. Только просьба на всякий не путать буквы. > applicationS, а не application. Да, действительно, извиняюсь. > > Из xfce-applications.menu же <DefaultMergeDirs> раскрывается в > > applications-merged видимо по аналогии с gnome-applications.menu и > > kde-applications.menu. > Если раскрывается, то явно включать applications-merged не нужно, что > исправляет падение kbuildsycoca4. Нет. Я не вижу в спецификации, чтобы applications-merged использовался всегда. Там лишь написано, что <DefaultMergeDirs> по умолчанию раскрывается в applications-merged и что также должно быть в случае использования gnome-applications.menu или kde-applications.menu. То, что garcon ведет себя аналогично и в случае xfce-applications.menu - это уже самодеятельность, впрочем вреда от этого нет. Но другие реализации не обязаны знать, что <DefaultMergeDirs> из xfce-applications.menu должно раскрываться в applications-merged, поэтому явно прописать <MergeDir>applications-merged</MergeDir> как раз самый правильный способ. Бага в kbuildsycoca4, он должен корректно обрабатывать такую ситуацию.
(В ответ на комментарий №26) > Нет. Я не вижу в спецификации, > чтобы applications-merged использовался всегда. Всегда. applications.menu используется всегда, занчит и applications-merged используется всегда, как любой X.menu c X-merged. Исключение -- к applications.menu может быть добавлен XDG_MENU_PREFIX, но на applications-merged это не влияет. > Там лишь написано, что <DefaultMergeDirs> по умолчанию раскрывается в > applications-merged Нет. Написаано, что applications-merged _всегда_ входит в <DefaultMergeDirs>. > и что также должно быть в случае использования > gnome-applications.menu или kde-applications.menu. Они так называются из-за XDG_MENU_PREFIX. > То, что garcon ведет себя > аналогично и в случае xfce-applications.menu - это уже самодеятельность, Если не цепляет applications-merged при наличии <DefaultMergeDirs>, то да. > впрочем вреда от этого нет. Если приходится явно включать applications-merged, то, как видмте, есть. > Но другие реализации не обязаны знать, что > <DefaultMergeDirs> из xfce-applications.menu должно раскрываться в > applications-merged, Обязаны, т.к. всем им сказали считать главным файлом именно xfce-applications.menu . > поэтому явно прописать > <MergeDir>applications-merged</MergeDir> как раз самый правильный способ. Нет, т.к. присутствует <DefaultMergeDirs> . > Бага в kbuildsycoca4, он должен корректно обрабатывать такую ситуацию. Некорректную ситуацию не должен.
(В ответ на комментарий №27) > (В ответ на комментарий №26) > > Нет. Я не вижу в спецификации, > > чтобы applications-merged использовался всегда. > Всегда. > applications.menu используется всегда, занчит и applications-merged > используется всегда, как любой X.menu c X-merged. > Исключение -- к applications.menu может быть добавлен XDG_MENU_PREFIX, но на > applications-merged это не влияет. > > Там лишь написано, что <DefaultMergeDirs> по умолчанию раскрывается в > > applications-merged > Нет. Написаано, что applications-merged _всегда_ входит в <DefaultMergeDirs>. Там ниже же сказано, что the first part of the name of the default merge directory is derived from the name of the .menu file. Впрочем, похоже в главном меню оно действительно должно раскрываться в applications-merged, в спецификации это как-то не слишком ясно написано. > > Но другие реализации не обязаны знать, что > > <DefaultMergeDirs> из xfce-applications.menu должно раскрываться в > > applications-merged, > Обязаны, т.к. всем им сказали считать главным файлом именно > xfce-applications.menu . Да, может быть, см. выше. > > поэтому явно прописать > > <MergeDir>applications-merged</MergeDir> как раз самый правильный способ. > Нет, т.к. присутствует <DefaultMergeDirs> . Не присутствует. Поэтому applications-merged сейчас и не используется совсем. Я же говорю, если на место <MergeDir>applications-merged</MergeDir> поставить <DefaultMergeDirs/>, то все опять работает как надо. > > Бага в kbuildsycoca4, он должен корректно обрабатывать такую ситуацию. > Некорректную ситуацию не должен. Вообще любая программа должна корректно обрабатывать неправильные входные данные и не падать, это же основы. Но да ладно, на самом деле он падает на меню SL, похоже. Если его убрать, то вроде не падает и с <MergeDir>applications-merged</MergeDir>. Так что прошу вернуть как было (ну или вместо <MergeDir>applications-merged</MergeDir> написать <DefaultMergeDirs/>, даже не знаю как лучше/правильнее). С меню же SL будем разбираться отдельно, я сейчас его почитаю.
(В ответ на комментарий №28) > Так что прошу вернуть как было (ну или вместо > <MergeDir>applications-merged</MergeDir> написать <DefaultMergeDirs/>, даже не > знаю как лучше/правильнее). Решите уж как лучше и проверьте, чтобы viy@ еще раз не дергать.
(В ответ на комментарий №28) > Там ниже же сказано, что the first part of the name of the default merge > directory is derived from the name of the .menu file. X.menu --> X-merged > Впрочем, похоже в главном меню оно действительно должно раскрываться в > applications-merged, в спецификации это как-то не слишком ясно написано. applications.menu --> applications-merged Исключение: $XDG_MENU_PREFIX может добавляться к applications.menu и только к нему. Вполне ясно. > > Нет, т.к. присутствует <DefaultMergeDirs> . > Не присутствует. Блин! Присутствует. <MergeFile>altlinux-applications.menu</MergeFile> что делает там тогда?
> Но да ладно, на самом деле он падает на меню SL, похоже. Не, это я не туда смотрел куда-то. Так и падает и с <MergeDir>applications-merged</MergeDir>, и с <DefaultMergeDirs/>. (В ответ на комментарий №30) > > Там ниже же сказано, что the first part of the name of the default merge > > directory is derived from the name of the .menu file. > X.menu --> X-merged Ну да. > > > Нет, т.к. присутствует <DefaultMergeDirs> . > > Не присутствует. > Блин! Присутствует. Нет. В xfce-applications.menu <DefaultMergeDirs> нет. > <MergeFile>altlinux-applications.menu</MergeFile> что делает там тогда? <DefaultMergeDirs> в нем раскрывается в altlinux-applications-merged в полном соответствии со спецификацией. Ведь XDG_MENU_PREFIX="xfce-".
(В ответ на комментарий №31) > > > > Нет, т.к. присутствует <DefaultMergeDirs> . > > > Не присутствует. > > Блин! Присутствует. > Нет. В xfce-applications.menu <DefaultMergeDirs> нет. Он есть в altlinux-applications.menu, т.е. присутствует. > > <MergeFile>altlinux-applications.menu</MergeFile> что делает там тогда? > <DefaultMergeDirs> в нем раскрывается в altlinux-applications-merged в полном > соответствии со спецификацией. Не имеет значения по теме. > Ведь XDG_MENU_PREFIX="xfce-". Поэтому xfce-applications.menu обязан раскрываться в applications-merged, значит явно мержить не нужно.
Кстати, ln -s applications-merged/ /etc/xdg/menus/altlinux-applications-merged может быть workaround'ом.
А-а-а. Я понял, в чем мои непонятки с <DefaultMergeDirs>. Я считаю, что он глобальный.
(В ответ на комментарий №32) > (В ответ на комментарий №31) > > > > > Нет, т.к. присутствует <DefaultMergeDirs> . > > > > Не присутствует. > > > Блин! Присутствует. > > Нет. В xfce-applications.menu <DefaultMergeDirs> нет. > Он есть в altlinux-applications.menu, т.е. присутствует. Не уверен, что спецификацию нужно трактовать именно так. Надо внимательно почитать стандарт по поводу merge.
(В ответ на комментарий №34) > А-а-а. Я понял, в чем мои непонятки с <DefaultMergeDirs>. > Я считаю, что он глобальный. Я сужу по оригинальной реализации -- KDE. applications-merged там подхватывается в любом случае. Даже если <DefaultMergeDirs> не глобальный, чего не следует из спецификации.
(В ответ на комментарий №36) > (В ответ на комментарий №34) > > А-а-а. Я понял, в чем мои непонятки с <DefaultMergeDirs>. > > Я считаю, что он глобальный. > Я сужу по оригинальной реализации -- KDE. Судить надо по стандартам. > applications-merged там подхватывается в любом случае. Даже если > <DefaultMergeDirs> не глобальный, чего не следует из спецификации. В каком смысле глобальный? Всегда присутствует неявно, что ли? Не вижу такого в стандарте. Это такой же элемент как и любой другой, как, например, <Menu>. И должен быть прописан явно в нужном месте (потому что от места тоже многое зависит). Другое дело, что надо разобраться во что он должен раскрываться в случае включения в меню другого меню через MergeFile. Если MergeFile - тупо загрузка содержимого из файла и интерпретация всех элементов происходит уже после, то garcon неправ и <DefaultMergeDirs> должен раскрываться как будто он стоит в самом xfce-applications.menu. Если же раскрытие <DefaultMergeDirs> происходит во время merge, то он ведет себя корректно.
(В ответ на комментарий №37) > В каком смысле глобальный? Значит, если присутствует, то обрабатывается не только применительно к файлу, в котором включен, а ко всем.
В KDE при загрузке любого "X.menu" список для DefaultMergeDirs дополняется элементом "X-merge".
(В ответ на комментарий №39) > В KDE при загрузке любого "X.menu" список для DefaultMergeDirs дополняется > элементом "X-merge". Нигде не сказано, что дополняется. В стандарте написано не слишком внятно, но судя по фразе: For example in a system that uses a preferences.menu file to describe an additional menu, the default merge directories included in the <DefaultMergeDirs> element in the preferences.menu file would become $XDG_CONFIG_DIRS/menus/preferences-merged/ я скорее согласен с авторами garcon'а, default merge directories _становятся_ X-merged, т.е. default меняется с applications-merged на X-merged. Согласно http://standards.freedesktop.org/menu-spec/menu-spec-1.0.html#merge-algorithm при включении меню через MergeFile рекурсивно обрабатываются все <MergeFile>, <MergeDir>, <LegacyDir> во включаемом файле. Про DefaultMergeDirs ничего не сказано, но очевидно, что элемент надо раскрыть, чтобы обработать и построить "combined menu". А значит раскрывается он в X-merged (т.е. в altlinux-applications-merged в нашем случае). В самом же xfce-applications.menu <DefaultMergeDirs/> нет, поэтому applications-merged не используется. Правильным решением будет заменить <DefaultMergeDirs/> в altlinux-applications.menu на <MergeDir>applications-merged</MergeDir> (потому что именно это там и имелось в виду, я так понимаю). При этом у меня kbuildsycoca4 не падает и garcon работает правильно. Сама же конструкция <MergeDir>applications-merged</MergeDir> вполне корректна, конечно, она есть тут, например: http://standards.freedesktop.org/menu-spec/menu-spec-1.0.html#merge-algorithm. В любом случае решать с этой багой что-то надо, т.к. меню в xfce сейчас сломано, причем сломано и в p7, что задерживает выпуск SL-7.0.1. А я в отпуск хочу :).
(В ответ на комментарий №40) > В любом случае решать с этой багой что-то надо, т.к. меню в xfce сейчас > сломано, причем сломано и в p7, что задерживает выпуск SL-7.0.1. А я в отпуск > хочу :). 2sem@: viy@ сейчас очень-очень занят, хорошо бы решить без него или с его минимальным участием (консультативным).
(В ответ на комментарий №40) > т.е. default меняется с applications-merged на X-merged. Никогда не меняется. " $XDG_CONFIG_DIRS/menus/applications-merged/ The default merge directories included in the <DefaultMergeDirs> element. " Исходя из этого applications-merged обязан быть в него включен! Исходя из этого же было бы глупо его включать 10 раз при каждом <DefaultMergeDirs> на файл.
(В ответ на комментарий №42) > Исходя из этого же было бы глупо его включать 10 раз при каждом > <DefaultMergeDirs> на файл. Следовательно, достаточно одного <DefaultMergeDirs> на всё.
(В ответ на комментарий №40) > http://standards.freedesktop.org/menu-spec/menu-spec-1.0.html#merge-algorithm > при включении меню через MergeFile рекурсивно > обрабатываются все <MergeFile>, > <MergeDir>, <LegacyDir> во включаемом файле. > Про DefaultMergeDirs ничего не > сказано, но очевидно, что элемент надо раскрыть Значит, это нужно сделать 1 раз глобально.
(В ответ на комментарий №42) > (В ответ на комментарий №40) > > т.е. default меняется с applications-merged на X-merged. > Никогда не меняется. > " $XDG_CONFIG_DIRS/menus/applications-merged/ > The default merge directories included in the <DefaultMergeDirs> element. " > Исходя из этого applications-merged обязан быть в него включен! Нет, написано что в DefaultMergeDirs default merge directories - $XDG_CONFIG_DIRS/menus/applications-merged/ Но the default merge directories included in the <DefaultMergeDirs> element in the preferences.menu file would become $XDG_CONFIG_DIRS/menus/preferences-merged/ Те.е. default merge directories теперь $XDG_CONFIG_DIRS/menus/preferences-merged/. X-merged > Исходя из этого же было бы глупо его включать 10 раз при каждом > <DefaultMergeDirs> на файл. Если нужно включить только applications-merged, то <DefaultMergeDirs> достаточно один раз в файле главного меню.
(В ответ на комментарий №41) > 2sem@: viy@ сейчас очень-очень занят, хорошо бы решить без него или с его > минимальным участием (консультативным). Ok, task #100189.
(В ответ на комментарий №46) > Ok, task #100189. " When expanding <DefaultMergeDirs> to a list of <MergeDir>, the default locations " Их много, а вы сейчас в task#100189 сделали ошибку, заменив на один "applications-merged".
(В ответ на комментарий №45) > написано что в DefaultMergeDirs default merge directories - > $XDG_CONFIG_DIRS/menus/applications-merged/ DIRS, а не DIR.
(В ответ на комментарий №47) > (В ответ на комментарий №46) > > Ok, task #100189. > " When expanding <DefaultMergeDirs> to a list of <MergeDir>, the default > locations " > Их много, а вы сейчас в task#100189 сделали ошибку, заменив на один > "applications-merged". Ок, вобщем вопрос спорный, я по прежнему не вижу, что applications-merged всегда включен в <DefaultMergeDirs>. Возможно убирание <DefaultMergeDirs> действительно приведет к неожиданным эффектам. И вообще не стоит ставить такие эксперименты в p7. Я бы просто откатил изменения в p7, ломать меню xfce ради запуска в xfce kde-приложений - это странно. К тому же kbuildsycoca4 все равно надо чинить, падать оно не должно. Пока я просто в SL-меню буду использовать altlinux-applications-merged вместо applications-merged. Это грязный хак, конечно, меню все равно остается сломанным, но я не вижу сейчас других вариантов.
(В ответ на комментарий №49) > не вижу, что applications-merged > всегда включен в <DefaultMergeDirs> Это черным по белому написано. А так же DIRS DIRS DIRS DIRS DIRS DIRS. > в SL-меню буду использовать altlinux-applications-merged вместо > applications-merged. Да не вместо, а вместе! В какой из них класть меню-хи -- уже не важно, если структура меню останется в задуманном виде.
*** Bug 27893 has been marked as a duplicate of this bug. ***
При множественных DefaultMergeDirs тоже падает. Когда убрал дубли, в LXDE стало возможно пользовать kde4-k3b, например.
Народ, уже два года баге. Чего не исправляете ?
Вопрос, от меня что-то нужно? 2 года назад я <MergeDir>applications-merged</MergeDir> убрал из altlinux-freedesktop-menu-xfce, что сейчас убрать? в каком меню дубликаты DefaultMergeDirs вылезают?
(В ответ на комментарий №54) > в каком меню дубликаты DefaultMergeDirs вылезают? Если дубликатов больше нигде нет, то закрывайте. P.S. kbuildsycoca4 можете сами попробовать.
т.е. чтобы воспроизвести креш, что надо? установить XFCE и под ним запустить kbuildsycoca4?
(В ответ на комментарий №56) > т.е. чтобы воспроизвести креш, что надо? Установить все DE , пользующиеся /etc/xdg/menus, кроме KDE4 и запустить в каждом kbuildsycoca4.
С текущим altlinux-freedesktop-menu-xfce в garcon не работает applications-merged/ совсем. В SL я это объехал использованием xfce-applications-merged/ вместо applications-merged/. Почитав же стандарт, я был скорее согласен с авторами garcon в их трактовке этого стандарта. Сейчас я уже плохо все это помню, надо опять читать стандарт и код.
Я тоже на вскижку уже не помню, должени ли цепляться applications-merged/ при указании XDG_MENU_PREFIX. (В ответ на комментарий №58) > я был скорее согласен с авторами garcon в их трактовке > этого стандарта. Если их тарактовка никому из правильно трактующих не мешает жить, то мне всё равно.
Судя по спецификации -- должен. http://standards.freedesktop.org/menu-spec/latest/ar01s02.html
(В ответ на комментарий №57) > (В ответ на комментарий №56) > > т.е. чтобы воспроизвести креш, что надо? > Установить все DE , пользующиеся /etc/xdg/menus, кроме KDE4 и запустить в > каждом kbuildsycoca4. ок, понял, спасибо.
(В ответ на комментарий №57) > запустить в каждом kbuildsycoca4. Для уверенности даже лучше запускать kbuildsycoca4 --noincremental
*** Bug 26017 has been marked as a duplicate of this bug. ***