ALT Linux Team development discussions
 help / color / mirror / Atom feed
* [devel] Нехватка зависимостей на утилиты обслуживания общесистемных баз.
@ 2021-11-22 20:48 Igor Vlasenko
  2021-11-22 22:02 ` Yuri Sedunov
  2021-11-23  7:30 ` Sergey V Turchin
  0 siblings, 2 replies; 8+ messages in thread
From: Igor Vlasenko @ 2021-11-22 20:48 UTC (permalink / raw)
  To: devel

Нехватка зависимостей на утилиты обслуживания общесистемных баз.

Уважаемые коллеги,

приглашаю продолжить обсуждение политики
https://www.altlinux.org/Упаковка_WM.

Тезис.

В разделе Упаковка_WM#Зависимости_на_общие_утилиты_freedesktop
требовалось, чтобы DE вытягивали пакеты с утилитами
update-mime-database (пакет shared-mime-info),
update-desktop-database (пакет desktop-file-utils).
Это было введено еще в версии 1.0, но соблюдалось не всеми.

Мотивация была такая, что эти утилиты нужны для нормальной работы с
mime типами и их обработчиками в desktop файлах.

Ситуация с ними похожа на ситуацию с обычными пакетами и ядром.
У обычных пакетов не ставят зависимости на ядро, но ядро нужно для их
работы, поэтому нужно явно где-то контролировать, чтобы в итоге в
образе ядро было.

С утилитами выше ситуация хитрее, так как на них есть зависимости с пакетов.
Те же desktop-file-utils скорее всего придут в образ дистрибутива то
ли как зависимости wine, то ли как зависимости flatpak.

А могут и не прийти или быть снесены пользователями в простоте своей.
Надо как-то принуждать их наличие,
и(ли) на высшем уровне mkimage-profiles, и(ли) на среднем уровне DE,
и(ли) на низком уровне тулкитов.

Антитезис.

Оппонентом в дискуссии выступил уважаемый Сергей Турчин (zerg@),
который высказался за то, что в целом все это не нужно:

В обсуждении
https://lists.altlinux.org/pipermail/devel/2021-November/215821.html
> эти "системные БД" корявы самим своим существованием.

Я начал в ответ махать спецификацией freedesktop.org/shared-mime-info,
но в https://lists.altlinux.org/pipermail/devel/2021-November/215832.html
Сергей отметил, что из спецификации необходимость этих утилит не следует:

> > https://specifications.freedesktop.org/shared-mime-info-spec
> > и база и кеш в ~/.local/share/mime ее не заменяют, а дополняют.
> Нет там такого. Особенно про кэш.

> > Хотелось бы пруфы, действительно ли спецификация не рабочая в части
> > необходимиости общесистемных кешей.
> Там вообще нигде не сказано, что кэши должен кто-то читать. Только xml-данные.

что действительно так,
из спецификации необходимость этих утилит не следует.

Однако меня не покидало чувство, что где-то мы здесь накалываемся,
поэтому по пословице "raise your force, use the source" я взял паузу
на погружение в исходники.

И здесь меня ждал ряд открытий чудных.

Разбор полетов.

проследив за _xdg_mime_glob_read_from_file в
 glib-2.68.4/gio/xdgmime/xdgmime*
пришел к выводу, что в glib libgio вообще не читает xml-данные,
а только mmap-ит в память сгенерированный с помощью update-mime-database
кеш /mime.cache (который якобы не нужен) и другие сгенерированные
с помощью update-mime-database файлы: globs, magic, aliases, icons.

И это действительно хорошее дизайнерское решение. Приложениям не нужно
мониторить дерево в /usr/share/mime/ с десятками каталогов и тысячами файлов.
Достаточно менеджера пакетов и файл-триггера.

Получается, libgio без mime.cache корректно работать не будет.

Но при этом в libgio есть явная зависимость на update-mime-database
(пакет shared-mime-info), так что все в порядке.

Далее я полез в qt5, что вотчина уважаемого zerg@.
Оказалось, см.
qtbase-everywhere-src-5.15.2/src/corelib/mimetypes/qmime*
что "не нужный" /mime.cache предательски просочился и туда.
Если qt5 собран на нормальном Unix'е (#define QT_USE_MMAP)
то провайдер по умолчанию для базы mime просто mmap-ит mime.cache!

Да, если shared-mime-info не будет, или их снесет наивный
пользователь (а ведь из-за несоблюдения полиси пакет
shared-mime-info в KDE втягивается чудом, сбоку,
через кривую зависимость в plasma5-bluedevil)
то в qt5 на этот случай предусмотрен альтернативный провайдер,
который ползает по дереву /usr/share/mime и парсит xml'ы.
К сожалению, он не будет работать, так как пакет shared-mime-info
снесет большую часть этих самых xml'ов.

Но на этот случай в qt предусмотрена сферическая в вакууме
"mimetype-database". это готовый абстрактный набор типов mime, для
Windows, \macos, and iOS systems, у которых своей системной XDG MIME
database нету.
Она статически влинковывается в libQt5Core.so.5 через файл
qmimeprovider_database.cpp (1.5Mb), генерируемый из xml исходника
src/corelib/mimetypes/mime/packages/freedesktop.org.xml (2.2Mb)
в итоге утяжеляя получившийся бинарник libQt5Core.so.5 (6Mb) на 256Kb
сжатого блоба (~ 5%).

Так что, по хорошему, в qt5base надо добавить явную зависимость на
update-mime-database (пакет shared-mime-info).

Тогда по сути зависимости на update-mime-database уйдут на нижний
уровень (тулкитов), и на среднем уровне требование зависимости на них
можно будет ослабить до рекомендации.

И чтобы 2 раза не вставать, хотел бы отметить, что начиная с qt 5.13
появилась опция сборки -no-mimetype-database,
смысл которой не таскать внутри libQt5Core.so.5 блоб из сжатого
freedesktop.org.xml, так как все равно используется /usr/share/mime.

Хорошо бы собирать libqt5-core c этой опцией.

 - QMimeDatabase:
   * Added configure option -no-mimetype-database that tells Qt not to
     bundle its own copy of the XDG MIME database. If this option is
     passed, QMimeDatabase will only work if there's a system copy in
     $XDG_DATA_DIRS/mime. This option is useful for Linux distributions
     that ensure the data is always present.

qtbase-everywhere-src-5.15.2/src/corelib/mimetypes/qmimedatabase.cpp

/*!
    \class QMimeDatabase
    \inmodule QtCore
    \brief The QMimeDatabase class maintains a database of MIME types.

    \since 5.0

    The MIME type database is provided by the freedesktop.org shared-mime-info
    project. If the MIME type database cannot be found on the system, as is the case
    on most Windows, \macos, and iOS systems, Qt will use its own copy of it.
    ...
    On Unix systems, a binary cache is used for more performance. This cache is generated
    by the command "update-mime-database path", where path would be /opt/myapp/share/mime
    in the above example. Make sure to run this command when installing the MIME type
    definition file.
 */

Аналогично было бы хорошо добавить зависимость на desktop-file-utils в
libgio. В libgio кеш от update-desktop-database используется, для
случаев, не покрываемых mimeapps.list.
В qt5 и kde5 кеш от update-desktop-database не используется, и понятно
почему - нет поддержки системы специальных для KDE desktop файлов.

Будь прописаны зависимости на нижнем уровне тулкитов, требования к DE
можно было бы ослабить.

Но не следует их выбрасывать. Не забываем, что кроме glib+gtk и qt
есть и другие тулкиты (начиная с Enligtenment), и для них справедлива
та же петрушка: Разработчики либо уже внедрили, либо внедряют,
либо собираются внедрять стандарты Freedesktop.
Поэтому они либо уже должны бы тащить ту же update-mime-database,
либо собираются зависеть от update-mime-database,
либо будут зависеть от update-mime-database в будущем.

Поэтому условие, чтобы в дистрибутив вытягивались
update-mime-database (пакет shared-mime-info),
update-desktop-database (пакет desktop-file-utils)
стоит, IMHO, продублировать и на более высоких уровнях,
чтобы не стоять с палкой над каждым тулкитом.

В том числе в mkimage-profiles, как минимум для дистрибутивов с графической средой.

-- 

I V


^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [devel] Нехватка зависимостей на утилиты обслуживания общесистемных баз.
  2021-11-22 20:48 [devel] Нехватка зависимостей на утилиты обслуживания общесистемных баз Igor Vlasenko
@ 2021-11-22 22:02 ` Yuri Sedunov
  2021-11-22 23:09   ` Alexey V. Vissarionov
  2021-11-24 20:05   ` Igor Vlasenko
  2021-11-23  7:30 ` Sergey V Turchin
  1 sibling, 2 replies; 8+ messages in thread
From: Yuri Sedunov @ 2021-11-22 22:02 UTC (permalink / raw)
  To: devel

В Пн, 22/11/2021 в 22:48 +0200, Igor Vlasenko пишет:

...
> Нехватка зависимостей на утилиты обслуживания общесистемных баз.
> 
> Будь прописаны зависимости на нижнем уровне тулкитов, требования к DE
> можно было бы ослабить.
> 
> Но не следует их выбрасывать. Не забываем, что кроме glib+gtk и qt
> есть и другие тулкиты (начиная с Enligtenment), 

Как раз у Enlightenment в зависимостях есть wm-common-freedesktop, как
и у некоторых других VM/DE.

$ ACWD wm-common-freedesktop
wm-common-freedesktop-1.3-alt1@1303402115
  lxde-common-0.99.2-alt5:sisyphus+287084.300.3.1@1634272513
    Требует: wm-common-freedesktop
  altlinux-freedesktop-menu-common-0.68-
alt1:sisyphus+278095.100.1.1@1626024693
    Требует: wm-common-freedesktop
  xfce4-session-4.16.0-alt2:sisyphus+279258.100.1.3@1626483465
    Требует: wm-common-freedesktop
  libfm4-1.3.2-alt1:sisyphus+274479.100.1.1@1623568081
    Требует: wm-common-freedesktop
  enlightenment-1:0.24.2-alt1:sisyphus+260559.500.4.1@1613086281
    Требует: wm-common-freedesktop


Может быть просто включить wm-common-freedesktop в базовую систему, не
смотря на наличие/отсутствие графической среды?



-- 
Yuri N. Sedunov



^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [devel] Нехватка зависимостей на утилиты обслуживания общесистемных баз.
  2021-11-22 22:02 ` Yuri Sedunov
@ 2021-11-22 23:09   ` Alexey V. Vissarionov
  2021-11-26 14:17     ` Yuri Sedunov
  2021-11-24 20:05   ` Igor Vlasenko
  1 sibling, 1 reply; 8+ messages in thread
From: Alexey V. Vissarionov @ 2021-11-22 23:09 UTC (permalink / raw)
  To: ALT Linux Team development discussions

On 2021-11-23 01:02:14 +0300, Yuri Sedunov wrote:

 > Может быть просто включить wm-common-freedesktop в базовую систему,
 > не смотря на наличие/отсутствие графической среды?

Отказать, отменить и запретить! Оно, конечно, пустое, но очень уж много
всякого за собой тянет:

gremlin@ws:~ > rpm -qlp ~/repo/Sisyphus/noarch/RPMS.classic/wm-common-freedesktop-1.3-alt1.noarch.rpm 
(contains no files)

gremlin@ws:~ > rpm -qRp !$
desktop-file-utils
shared-mime-info
xdg-utils
url_handler
altlinux-mime-defaults
rpmlib(PayloadIsLzma)

Как минимум desktop-file-utils, url_handler и xdg-utils на серверах
(настоящих, где даже видеоадаптера нет) точно не место, не говоря уж
про встроенные системы.


-- 
Alexey V. Vissarionov
gremlin ПРИ altlinux ТЧК org; +vii-cmiii-ccxxix-lxxix-xlii
GPG: 0D92F19E1C0DC36E27F61A29CD17E2B43D879005 @ hkp://keys.gnupg.net


^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [devel] Нехватка зависимостей на утилиты обслуживания общесистемных баз.
  2021-11-22 20:48 [devel] Нехватка зависимостей на утилиты обслуживания общесистемных баз Igor Vlasenko
  2021-11-22 22:02 ` Yuri Sedunov
@ 2021-11-23  7:30 ` Sergey V Turchin
  1 sibling, 0 replies; 8+ messages in thread
From: Sergey V Turchin @ 2021-11-23  7:30 UTC (permalink / raw)
  To: ALT Linux Team development discussions

On Monday, 22 November 2021 23:48:32 MSK Igor Vlasenko wrote:

[...]
> хотел бы отметить, что начиная с qt 5.13
> появилась опция сборки -no-mimetype-database,
> смысл которой не таскать внутри libQt5Core.so.5 блоб из сжатого
> freedesktop.org.xml, так как все равно используется /usr/share/mime.
> 
> Хорошо бы собирать libqt5-core c этой опцией.
Ок. Всё равно избежать системный mime.cache по умолчанию сложно.

[...]

-- 
Regards, Sergey.

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [devel] Нехватка зависимостей на утилиты обслуживания общесистемных баз.
  2021-11-22 22:02 ` Yuri Sedunov
  2021-11-22 23:09   ` Alexey V. Vissarionov
@ 2021-11-24 20:05   ` Igor Vlasenko
  1 sibling, 0 replies; 8+ messages in thread
From: Igor Vlasenko @ 2021-11-24 20:05 UTC (permalink / raw)
  To: ALT Linux Team development discussions

On Tue, Nov 23, 2021 at 01:02:14AM +0300, Yuri Sedunov wrote:
> Как раз у Enlightenment в зависимостях есть wm-common-freedesktop, как
> и у некоторых других VM/DE.

Да, спасибо большое! Я упомянул Enlightenment не конкретно, а как пример тулкита, который и не glib/gtk, и не qt/kde.


-- 

I V


^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [devel] Нехватка зависимостей на утилиты обслуживания общесистемных баз.
  2021-11-22 23:09   ` Alexey V. Vissarionov
@ 2021-11-26 14:17     ` Yuri Sedunov
  2021-11-26 17:18       ` Yuri Sedunov
  2021-11-27  6:10       ` Alexey V. Vissarionov
  0 siblings, 2 replies; 8+ messages in thread
From: Yuri Sedunov @ 2021-11-26 14:17 UTC (permalink / raw)
  To: devel

В Вт, 23/11/2021 в 02:09 +0300, Alexey V. Vissarionov пишет:
> On 2021-11-23 01:02:14 +0300, Yuri Sedunov wrote:
> 
>  > Может быть просто включить wm-common-freedesktop в базовую
> систему,
>  > не смотря на наличие/отсутствие графической среды?
> 
> Отказать, отменить и запретить! Оно, конечно, пустое, но очень уж
> много
> всякого за собой тянет:
> 
> gremlin@ws:~ > rpm -qlp ~/repo/Sisyphus/noarch/RPMS.classic/wm-
> common-freedesktop-1.3-alt1.noarch.rpm
> (contains no files)
> 
> gremlin@ws:~ > rpm -qRp !$
> desktop-file-utils
> shared-mime-info
> xdg-utils
> url_handler
> altlinux-mime-defaults
> rpmlib(PayloadIsLzma)
> 
> Как минимум desktop-file-utils, url_handler и xdg-utils на серверах
> (настоящих, где даже видеоадаптера нет) точно не место, не говоря уж
> про встроенные системы.

А видеокарточки-та причем тут? url_handler мешает? Встроенные системы?
это ардуинки что-ль?

-- 
Yuri N. Sedunov



^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [devel] Нехватка зависимостей на утилиты обслуживания общесистемных баз.
  2021-11-26 14:17     ` Yuri Sedunov
@ 2021-11-26 17:18       ` Yuri Sedunov
  2021-11-27  6:10       ` Alexey V. Vissarionov
  1 sibling, 0 replies; 8+ messages in thread
From: Yuri Sedunov @ 2021-11-26 17:18 UTC (permalink / raw)
  To: devel

В Пт, 26/11/2021 в 17:17 +0300, Yuri Sedunov пишет:
> В Вт, 23/11/2021 в 02:09 +0300, Alexey V. Vissarionov пишет:
> > On 2021-11-23 01:02:14 +0300, Yuri Sedunov wrote:
> > 
> >  > Может быть просто включить wm-common-freedesktop в базовую
> > систему,
> >  > не смотря на наличие/отсутствие графической среды?
> > 
> > Отказать, отменить и запретить! Оно, конечно, пустое, но очень уж
> > много
> > всякого за собой тянет:
> > 
> > gremlin@ws:~ > rpm -qlp ~/repo/Sisyphus/noarch/RPMS.classic/wm-
> > common-freedesktop-1.3-alt1.noarch.rpm
> > (contains no files)
> > 
> > gremlin@ws:~ > rpm -qRp !$
> > desktop-file-utils
> > shared-mime-info
> > xdg-utils
> > url_handler
> > altlinux-mime-defaults
> > rpmlib(PayloadIsLzma)
> > 
> > Как минимум desktop-file-utils, url_handler и xdg-utils на серверах
> > (настоящих, где даже видеоадаптера нет) точно не место, не говоря
> > уж
> > про встроенные системы.
> 
> А видеокарточки-та причем тут? url_handler мешает? Встроенные
> системы?
> это ардуинки что-ль?
> 

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

-- 
Yuri N. Sedunov



^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [devel] Нехватка зависимостей на утилиты обслуживания общесистемных баз.
  2021-11-26 14:17     ` Yuri Sedunov
  2021-11-26 17:18       ` Yuri Sedunov
@ 2021-11-27  6:10       ` Alexey V. Vissarionov
  1 sibling, 0 replies; 8+ messages in thread
From: Alexey V. Vissarionov @ 2021-11-27  6:10 UTC (permalink / raw)
  To: ALT Linux Team development discussions; +Cc: gremlin

On 2021-11-26 17:17:40 +0300, Yuri Sedunov wrote:

 >>> Может быть просто включить wm-common-freedesktop в базовую
 >>> систему, не смотря на наличие/отсутствие графической среды?
 >> Отказать, отменить и запретить! Оно, конечно, пустое, но очень
 >> уж много всякого за собой тянет:
 >> gremlin@ws:~ > rpm -qlp ~/repo/Sisyphus/noarch/RPMS.classic/
 >> wm-common-freedesktop-1.3-alt1.noarch.rpm
 >> (contains no files)
 >> gremlin@ws:~ > rpm -qRp !$
 >> desktop-file-utils
 >> shared-mime-info
 >> xdg-utils
 >> url_handler
 >> altlinux-mime-defaults
 >> rpmlib(PayloadIsLzma)
 >> Как минимум desktop-file-utils, url_handler и xdg-utils на
 >> серверах (настоящих, где даже видеоадаптера нет) точно не
 >> место, не говоря уж про встроенные системы.
 > А видеокарточки-та причем тут?

Это отличительная особенность десктопов. Они без видеоадаптера
не бывают.

 > url_handler мешает?

И он тоже. У нас и без него лишних зависимостей в пакетах полно.

 > Встроенные системы? это ардуинки что-ль?

Это, например, сетевое оборудование.


-- 
Alexey V. Vissarionov
gremlin ПРИ altlinux ТЧК org; +vii-cmiii-ccxxix-lxxix-xlii
GPG: 0D92F19E1C0DC36E27F61A29CD17E2B43D879005 @ hkp://keys.gnupg.net


^ permalink raw reply	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2021-11-27  6:10 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-11-22 20:48 [devel] Нехватка зависимостей на утилиты обслуживания общесистемных баз Igor Vlasenko
2021-11-22 22:02 ` Yuri Sedunov
2021-11-22 23:09   ` Alexey V. Vissarionov
2021-11-26 14:17     ` Yuri Sedunov
2021-11-26 17:18       ` Yuri Sedunov
2021-11-27  6:10       ` Alexey V. Vissarionov
2021-11-24 20:05   ` Igor Vlasenko
2021-11-23  7:30 ` Sergey V Turchin

ALT Linux Team development discussions

This inbox may be cloned and mirrored by anyone:

	git clone --mirror http://lore.altlinux.org/devel/0 devel/git/0.git

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V2 devel devel/ http://lore.altlinux.org/devel \
		devel@altlinux.org devel@altlinux.ru devel@lists.altlinux.org devel@lists.altlinux.ru devel@linux.iplabs.ru mandrake-russian@linuxteam.iplabs.ru sisyphus@linuxteam.iplabs.ru
	public-inbox-index devel

Example config snippet for mirrors.
Newsgroup available over NNTP:
	nntp://lore.altlinux.org/org.altlinux.lists.devel


AGPL code for this site: git clone https://public-inbox.org/public-inbox.git