ALT Linux Team development discussions
 help / color / mirror / Atom feed
* [devel] gtk-update-icon-cache filetrigger (+ libtcl deficiency)
@ 2008-09-09 20:23 Alexey Tourbin
  2008-09-09 21:04 ` Dmitry V. Levin
                   ` (3 more replies)
  0 siblings, 4 replies; 20+ messages in thread
From: Alexey Tourbin @ 2008-09-09 20:23 UTC (permalink / raw)
  To: devel

[-- Attachment #1: Type: text/plain, Size: 9778 bytes --]

Напомню, что filetriggers -- это скрипты /usr/lib/rpm/*.filetrigger,
которые запускаются после успешного завершения транзакции.  Они получают
на вход список файлов, затронутых транзакцией (построчно на stdin),
то есть как бы вывод 'rpm -ql' от вновь установленных, обновлённых
и удалённых пакетов.  Механизм специально сделан максимально упрощенным
(дополнительную информацию можно получить естественным образом --
например, чтобы определить, был ли файл добавлен/обновлен или же удалён,
можно использовать простой тест типа [ -f "$f"] ).

* * *

Посмотрим, какой расклад мы имеем с кешем gtk2.  Библиотека libgtk+2
использует кеш по умолчанию, если он существует (это ускоряет запуск
приложений, а также экономит память, т.к. иконки расшариваются между
приложениями).  Есть стандартная программа обновления кеша
gtk-update-icon-cache.  Кроме библиотеки libgtk+2 этот кеш больше никто
не использует.

Следуя принципу правильной группировки файлов в пакетах, можно
заключить, что библиотеку libgtk+2, программу gtk-update-icon-cache
и триггер /usr/lib/rpm/gtk-icon-cache.filetrigger следует запаковать
в один и тот же пакет (libgtk+2).

Принцип правильной группировки файлов между пакетами состоит в том,
что совместно используемые файлы нужно паковать в один и тот же пакет.
Действительно, программа gtk-update-icon-cache сама по себе, по
отдельности, имеет мало смысла (т.к. результат её работы представляет
интерес только для библиотеки libgtk+2).  А триггер
/usr/lib/rpm/gtk-icon-cache.filetrigger, в свою очередь, сможет сделать
что-либо только при наличии программы gtk-update-icon-cache.  Короче,
эти две программы просто "обслуживают" библиотеку libgtk+2.

С другой стороны, этот принцип не является настолько однозначным, чтобы
можно было применять его механически.  Нужно думать.  Ведь библиотека
libgtk+2, хотя и использует кеш иконок по умолчанию, всё же обходится
без него, если кеш отсутствует.  Так что кто-то может возразить, что
мы кладём в libgtk+2 лишние файлы, без которых, строго говоря, можно
обойтись.  На что мы можем парировать позитивной интерпретацией: кеш
иконок работает "из коробки" (а в противном случае возможны проблемы
с инвалидацией кеша, то есть битые иконки в приложениях).

* * *

Хотя принцип правильной группировки файлов не всегда можно толковать
однозначно, на практике он имеет большое значение.  Приведу пример
пакета, в котором принцип правильной группировки файлов между пакетами
явно нарушен -- это пакет libtcl.  Tcl может использоваться как embedded
language, т.е. приложения пишут обёртку для libtcl и дальше Tcl как язык
может использоваться внутри приложения.  Такие приложения получают
зависимость на libtcl soname.

Напишем простейшую программу, которая встраивает libtcl.

$ cat test.c
#include <tcl.h>
int main(int argc, char **argv)
{
        Tcl_Main(argc,argv,Tcl_Init);
        return 0;
}
$ gcc -Wall test.c -o test -ltcl
$

Теперь посмотрим, будет ли она работать в среде, где установлена
одна только библиотека libtcl.

$ hsh --init
$ hsh-install 
...
$ hsh-install libtcl
<13>Sep  9 23:05:07 rpmi: libtcl-8.5.4-alt1 installed
$ cp -pv ./test ~tmp/build/chroot/.in/ && hsh-run ./test
`./test' -> `/tmp/.private/at/build/chroot/.in/test'
application-specific initialization failed: Can't find a usable init.tcl in the following directories: 
    /usr/share/tcl/tcl8.5 /lib/tcl8.5 /lib/tcl8.5 /library /library /tcl8.5.4/library /tcl8.5.4/library
This probably means that Tcl wasn't installed properly.
$ 

Увы.  Приложения, слинковавшиеся с libtcl, громко обломятся (с диагностикой
"Tcl wasn't installed properly"!).  Если же установить пакет tcl, то уже
всё работает.

$ cp -pv ./test ~tmp/build/chroot/.in/ && hsh-run ./test && echo $? 
`./test' -> `/tmp/.private/at/build/chroot/.in/test'
0
$

Библиотека libtcl имеет "непрозрачную" зависимость на init.tcl, этот
файл загружается при инициализации библиотеки.  Без init.tcl приложения,
слинованные c libtcl, обламываются; а файл init.tcl имеет смысл только
в связи с наличием конкретной библиотеки libtcl.  Это достаточное
основание для того, чтобы применить принцип правильной группировки
файлов между пакетами -- файлы libtcl*so* и init.tcl должны быть
запакованы в один и тот же пакет.  На практике возможны два решения:
либо перенести init.tcl (и, возможно, ещё некоторые файлы) из пакета tcl
в пакет libtcl, либо полностью внести libtcl в tcl (то есть исключить
отдельный пакет с библиотекой, если библиотека "сама по себе"
не работает).

* * *

Вернёмся к кешу иконок libgtk+2 и его специфике.  Кеш создаётся для
каждой отдельной "темы" иконок, а темы раскладываются по отдельным
каталогам.  Для каждой темы должен существовать файл index.theme
(для темы "hicolor", используемой по умолчанию, это будет
/usr/share/icons/hicolor/index.theme в пакете icon-theme-hicolor).
Программа gtk-update-icon-cache по умолчанию отказывается создавать 
кеш, если отсутствует файл index.theme.

Однако пакет libgtk+2 не имеет зависимости на icon-theme-hicolor,
то есть в базовой установке для дефолтной темы hicolor отсутствует файл
index.theme.  Хотелось бы выяснить, в какой степени файл index.theme
реально необходим для использования иконок (и для создания кеша иконок).

Кроме того, тема hicolor является "расширяемой", т.е. пакеты приложений
кладут свои дополнительные иконки в /usr/share/icons/hicolor.  Остальные
темы являются как бы замкнутыми и независимыми (например, всё содержимое
каталога /usr/share/icons/gnome принадлежит пакету gnome-icon-theme,
а другие приложения туда иконок не кладут.

Короче, для триггера возможна следующая логика обновления кеша иконок:
1) каталог /usr/share/icons/hicolor обрабатывается специально;
2) остальные темы обрабатываются по факту наличия в траназкции файла
index.theme.

Тогда возможна следующая реализация /usr/lib/rpm/gtk-icon-cache.filetrigger:
	#!/bin/sh
	hicolor=
	while read -r f; do
		case "$f" in
			/usr/share/icons/hicolor/*)
				hicolor=1
				;;
			/usr/share/icons/*/index.theme)
				if [ -f "$f" ]; then
					gtk-update-icon-cache "${f%/*}"
				else
					rm -f "${f%/*}"/icon-theme.cache
				fi
				;;
		esac
	done
	if [ -n "$hicolor" ]; then
		gtk-update-icon-cache --ignore-theme-index /usr/share/icons/hicolor
	fi

То есть для любых изменений в /usr/share/icons/hicolor вызывается
gtk-update-icon-cache с опцией --ignore-theme-index (отключается
проверка наличия index.theme).  Все остальные темы обрабатываются по
файлу index.theme: если он добавился или обновился, то gtk-update-icon-cache
запускается обычным способом; если же файл index.theme удалился, то
удаляется и соответствующий ему кеш icon-theme.cache.

Мы исходили из предположения, что все остальные темы, кроме hicolor,
являются замкнутыми и независимыми, поэтому обновления кеша этих тем
можно привязать к соответствующему файлу index.theme.  Я сейчас на
всякий случай проверил, и оказалось, что предположение не всегда
выполняется.

$ grep /usr/share/icons/gnome/ ~tmp/build/cache/contents/contents_index_all |awk '$2!="gnome-icon-theme"'
/usr/share/icons/gnome/32x32    /usr/share/icons/gnome/32x32
/usr/share/icons/gnome/32x32/apps       /usr/share/icons/gnome/32x32/apps
/usr/share/icons/gnome/48x48    /usr/share/icons/gnome/48x48
/usr/share/icons/gnome/48x48/apps       /usr/share/icons/gnome/48x48/apps
/usr/share/icons/gnome/48x48/mimetypes  gdesklets
/usr/share/icons/gnome/48x48/mimetypes/gnome-mime-application-x-anjuta.png      anjuta2
/usr/share/icons/gnome/48x48/mimetypes/gnome-mime-application-x-codeblocks-workspace.png        codeblocks
/usr/share/icons/gnome/48x48/mimetypes/gnome-mime-application-x-codeblocks.png  codeblocks
/usr/share/icons/gnome/48x48/mimetypes/gnome-mime-application-x-gdesklets-display.png   gdesklets
/usr/share/icons/gnome/48x48/mimetypes/gnome-mime-application-x-littlewizard.png        littlewizard
/usr/share/icons/gnome/48x48/mimetypes/gnome-mime-application-x-ptoptimizer-script.png  hugin
/usr/share/icons/gnome/scalable/mimetypes/gnome-mime-application-x-anjuta.svg   anjuta2
/usr/share/icons/gnome/scalable/mimetypes/gnome-mime-application-x-littlewizard.svg     littlewizard
$ 

То есть существуют приложения, хотя и немногочисленные, которые кладут
иконки в тему "gnome".  По-видимому, в таких случаях кеш темы gnome
также следует обновлять; так что предложенная логика обновления
дополнительных тем уже оказывается недостаточной.

* * *

Триггер после транзакции -- это хорошо, но нужно также рассмотреть
вопрос, что происходит в самом начале и в самом конце.  Когда библиотека
libgtk+2 устанавливается в первый раз, некоторые темы иконок уже могут
быть установлены (в более ранних транзакциях).  Также, при обновлении
библиотеки libgtk+2 формат кеша может измениться (более или менее
совместимым образом).  Короче, после установки или обновления libgtk+2
желательно обновить кеш всех существующих тем.  Смотрите, как красиво
это можно сделать:

%post
find /usr/share/icons -type f |/usr/lib/rpm/gtk-icon-cache.filetrigger

То есть мы запускаем триггер от имени %post-скрипта и как бы говорим
ему: "посмотри, все эти иконки как будто только что добавились".
Дальше триггер уже сам решит, какие там есть темы и как обновлять кеш.

А при окончательном удалении библиотеки libgtk+2 кеш иконок больше
никому не нужен.  Так что можно написать

%postun
if [ $1 = 0 ]; then
	rm -f /usr/share/icons/*/icon-theme.cache
fi

* * *

Что до самой библиотеки libgtk+2, то, во-первых, недавно вышла новая
версия 2.14.  Во-вторых, мне не нравится существующий распил на libgtk+2
и libgtk+2-common.  Может быть, вместе с триггером я бы посмотрел новую
версию и попилил бы её на свой вкус.

[-- Attachment #2: Type: application/pgp-signature, Size: 197 bytes --]

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

* Re: [devel] gtk-update-icon-cache filetrigger (+ libtcl deficiency)
  2008-09-09 20:23 [devel] gtk-update-icon-cache filetrigger (+ libtcl deficiency) Alexey Tourbin
@ 2008-09-09 21:04 ` Dmitry V. Levin
  2008-09-09 21:18   ` Alexey Tourbin
  2008-09-09 21:25   ` Led
  2008-09-09 21:37 ` Sergey Bolshakov
                   ` (2 subsequent siblings)
  3 siblings, 2 replies; 20+ messages in thread
From: Dmitry V. Levin @ 2008-09-09 21:04 UTC (permalink / raw)
  To: ALT Devel discussion list

[-- Attachment #1: Type: text/plain, Size: 2164 bytes --]

On Wed, Sep 10, 2008 at 12:23:45AM +0400, Alexey Tourbin wrote:
[...]
> Посмотрим, какой расклад мы имеем с кешем gtk2.  Библиотека libgtk+2
> использует кеш по умолчанию, если он существует (это ускоряет запуск
> приложений, а также экономит память, т.к. иконки расшариваются между
> приложениями).  Есть стандартная программа обновления кеша
> gtk-update-icon-cache.  Кроме библиотеки libgtk+2 этот кеш больше никто
> не использует.
> 
> Следуя принципу правильной группировки файлов в пакетах, можно
> заключить, что библиотеку libgtk+2, программу gtk-update-icon-cache
> и триггер /usr/lib/rpm/gtk-icon-cache.filetrigger следует запаковать
> в один и тот же пакет (libgtk+2).
> 
> Принцип правильной группировки файлов между пакетами состоит в том,
> что совместно используемые файлы нужно паковать в один и тот же пакет.
> Действительно, программа gtk-update-icon-cache сама по себе, по
> отдельности, имеет мало смысла (т.к. результат её работы представляет
> интерес только для библиотеки libgtk+2).  А триггер
> /usr/lib/rpm/gtk-icon-cache.filetrigger, в свою очередь, сможет сделать
> что-либо только при наличии программы gtk-update-icon-cache.  Короче,
> эти две программы просто "обслуживают" библиотеку libgtk+2.
> 
> С другой стороны, этот принцип не является настолько однозначным, чтобы
> можно было применять его механически.  Нужно думать.  Ведь библиотека
> libgtk+2, хотя и использует кеш иконок по умолчанию, всё же обходится
> без него, если кеш отсутствует.  Так что кто-то может возразить, что
> мы кладём в libgtk+2 лишние файлы, без которых, строго говоря, можно
> обойтись.  На что мы можем парировать позитивной интерпретацией: кеш
> иконок работает "из коробки" (а в противном случае возможны проблемы
> с инвалидацией кеша, то есть битые иконки в приложениях).

Существует как минимум один распространённый тип использования libgtk+2,
при котором кэш иконок не используется совершенно: libgtk+2-devel.  Так
что в библиотеке libgtk+2, запакованной без вспомогательных инструментов
обновления этого кэша, есть вполне понятный смысл.

Тоже самое, наверное, можно сказать и про libtcl.


-- 
ldv

[-- Attachment #2: Type: application/pgp-signature, Size: 197 bytes --]

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

* Re: [devel] gtk-update-icon-cache filetrigger (+ libtcl deficiency)
  2008-09-09 21:04 ` Dmitry V. Levin
@ 2008-09-09 21:18   ` Alexey Tourbin
  2008-09-09 21:32     ` Dmitry V. Levin
  2008-09-09 21:25   ` Led
  1 sibling, 1 reply; 20+ messages in thread
From: Alexey Tourbin @ 2008-09-09 21:18 UTC (permalink / raw)
  To: ALT Devel discussion list

[-- Attachment #1: Type: text/plain, Size: 2611 bytes --]

On Wed, Sep 10, 2008 at 01:04:08AM +0400, Dmitry V. Levin wrote:
> On Wed, Sep 10, 2008 at 12:23:45AM +0400, Alexey Tourbin wrote:
> [...]
> > Посмотрим, какой расклад мы имеем с кешем gtk2.  Библиотека libgtk+2
> > использует кеш по умолчанию, если он существует (это ускоряет запуск
> > приложений, а также экономит память, т.к. иконки расшариваются между
> > приложениями).  Есть стандартная программа обновления кеша
> > gtk-update-icon-cache.  Кроме библиотеки libgtk+2 этот кеш больше никто
> > не использует.
> > 
> > Следуя принципу правильной группировки файлов в пакетах, можно
> > заключить, что библиотеку libgtk+2, программу gtk-update-icon-cache
> > и триггер /usr/lib/rpm/gtk-icon-cache.filetrigger следует запаковать
> > в один и тот же пакет (libgtk+2).
> > 
> > Принцип правильной группировки файлов между пакетами состоит в том,
> > что совместно используемые файлы нужно паковать в один и тот же пакет.
> > Действительно, программа gtk-update-icon-cache сама по себе, по
> > отдельности, имеет мало смысла (т.к. результат её работы представляет
> > интерес только для библиотеки libgtk+2).  А триггер
> > /usr/lib/rpm/gtk-icon-cache.filetrigger, в свою очередь, сможет сделать
> > что-либо только при наличии программы gtk-update-icon-cache.  Короче,
> > эти две программы просто "обслуживают" библиотеку libgtk+2.
> > 
> > С другой стороны, этот принцип не является настолько однозначным, чтобы
> > можно было применять его механически.  Нужно думать.  Ведь библиотека
> > libgtk+2, хотя и использует кеш иконок по умолчанию, всё же обходится
> > без него, если кеш отсутствует.  Так что кто-то может возразить, что
> > мы кладём в libgtk+2 лишние файлы, без которых, строго говоря, можно
> > обойтись.  На что мы можем парировать позитивной интерпретацией: кеш
> > иконок работает "из коробки" (а в противном случае возможны проблемы
> > с инвалидацией кеша, то есть битые иконки в приложениях).
> 
> Существует как минимум один распространённый тип использования libgtk+2,
> при котором кэш иконок не используется совершенно: libgtk+2-devel.  Так
> что в библиотеке libgtk+2, запакованной без вспомогательных инструментов
> обновления этого кэша, есть вполне понятный смысл.

То есть это использование libgtk+2 в сборочной среде только для
линковки, но не для запуска настоящих приложений?  Ну, по-моему,
это очень специфический паттерн использования разделяемых библиотек,
хотя нам он и кажется распространенным. :)

> Тоже самое, наверное, можно сказать и про libtcl.

Нет, имеет место быть цепочка зависимостей
tcl-devel -> tcl -> libtcl

[-- Attachment #2: Type: application/pgp-signature, Size: 197 bytes --]

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

* Re: [devel] gtk-update-icon-cache filetrigger (+ libtcl deficiency)
  2008-09-09 21:04 ` Dmitry V. Levin
  2008-09-09 21:18   ` Alexey Tourbin
@ 2008-09-09 21:25   ` Led
  1 sibling, 0 replies; 20+ messages in thread
From: Led @ 2008-09-09 21:25 UTC (permalink / raw)
  To: ALT Devel discussion list

On Wednesday, 10 September 2008 00:04:08 Dmitry V. Levin wrote:
> On Wed, Sep 10, 2008 at 12:23:45AM +0400, Alexey Tourbin wrote:
> [...]
>
> > Посмотрим, какой расклад мы имеем с кешем gtk2.  Библиотека libgtk+2
> > использует кеш по умолчанию, если он существует (это ускоряет запуск
> > приложений, а также экономит память, т.к. иконки расшариваются между
> > приложениями).  Есть стандартная программа обновления кеша
> > gtk-update-icon-cache.  Кроме библиотеки libgtk+2 этот кеш больше никто
> > не использует.
> >
> > Следуя принципу правильной группировки файлов в пакетах, можно
> > заключить, что библиотеку libgtk+2, программу gtk-update-icon-cache
> > и триггер /usr/lib/rpm/gtk-icon-cache.filetrigger следует запаковать
> > в один и тот же пакет (libgtk+2).
> >
> > Принцип правильной группировки файлов между пакетами состоит в том,
> > что совместно используемые файлы нужно паковать в один и тот же пакет.
> > Действительно, программа gtk-update-icon-cache сама по себе, по
> > отдельности, имеет мало смысла (т.к. результат её работы представляет
> > интерес только для библиотеки libgtk+2).  А триггер
> > /usr/lib/rpm/gtk-icon-cache.filetrigger, в свою очередь, сможет сделать
> > что-либо только при наличии программы gtk-update-icon-cache.  Короче,
> > эти две программы просто "обслуживают" библиотеку libgtk+2.
> >
> > С другой стороны, этот принцип не является настолько однозначным, чтобы
> > можно было применять его механически.  Нужно думать.  Ведь библиотека
> > libgtk+2, хотя и использует кеш иконок по умолчанию, всё же обходится
> > без него, если кеш отсутствует.  Так что кто-то может возразить, что
> > мы кладём в libgtk+2 лишние файлы, без которых, строго говоря, можно
> > обойтись.  На что мы можем парировать позитивной интерпретацией: кеш
> > иконок работает "из коробки" (а в противном случае возможны проблемы
> > с инвалидацией кеша, то есть битые иконки в приложениях).
>
> Существует как минимум один распространённый тип использования libgtk+2,
> при котором кэш иконок не используется совершенно: libgtk+2-devel.  Так
> что в библиотеке libgtk+2, запакованной без вспомогательных инструментов
> обновления этого кэша, есть вполне понятный смысл.
>
> Тоже самое, наверное, можно сказать и про libtcl.

Врядли. Там ещё кроме названных at@ есть "тщательно разложенные и 
замаскированные грабли":
https://bugzilla.altlinux.org/show_bug.cgi?id=16657

-- 
Led

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

* Re: [devel] gtk-update-icon-cache filetrigger (+ libtcl deficiency)
  2008-09-09 21:18   ` Alexey Tourbin
@ 2008-09-09 21:32     ` Dmitry V. Levin
  2008-09-09 21:45       ` Alexey Tourbin
  0 siblings, 1 reply; 20+ messages in thread
From: Dmitry V. Levin @ 2008-09-09 21:32 UTC (permalink / raw)
  To: ALT Devel discussion list

[-- Attachment #1: Type: text/plain, Size: 1244 bytes --]

On Wed, Sep 10, 2008 at 01:18:04AM +0400, Alexey Tourbin wrote:
> On Wed, Sep 10, 2008 at 01:04:08AM +0400, Dmitry V. Levin wrote:
[...]
> > Существует как минимум один распространённый тип использования libgtk+2,
> > при котором кэш иконок не используется совершенно: libgtk+2-devel.  Так
> > что в библиотеке libgtk+2, запакованной без вспомогательных инструментов
> > обновления этого кэша, есть вполне понятный смысл.
> 
> То есть это использование libgtk+2 в сборочной среде только для
> линковки, но не для запуска настоящих приложений?  Ну, по-моему,
> это очень специфический паттерн использования разделяемых библиотек,
> хотя нам он и кажется распространенным. :)

Я думаю, что этот "очень специфический паттерн использования разделяемых
библиотек" широко распространён в наших узких кругах.  Поэтому давайте
будем паковать вспомогательные инструменты, обслуживающие кэш иконок,
отдельно от библиотеки.  Тем более что это ничего по существу дела
поддержки кэша иконок не меняет.

> > Тоже самое, наверное, можно сказать и про libtcl.
> 
> Нет, имеет место быть цепочка зависимостей
> tcl-devel -> tcl -> libtcl

Там используется конструкция, отличная от традиционной для библиотек
формы -ltcl?


-- 
ldv

[-- Attachment #2: Type: application/pgp-signature, Size: 197 bytes --]

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

* Re: [devel] gtk-update-icon-cache filetrigger (+ libtcl deficiency)
  2008-09-09 20:23 [devel] gtk-update-icon-cache filetrigger (+ libtcl deficiency) Alexey Tourbin
  2008-09-09 21:04 ` Dmitry V. Levin
@ 2008-09-09 21:37 ` Sergey Bolshakov
  2008-09-09 21:52   ` Alexey Tourbin
  2008-09-10  6:52 ` [devel] Q: gtk-update-icon-cache index.theme Alexey Tourbin
  2008-09-10 10:57 ` [devel] gtk-update-icon-cache filetrigger (+ libtcl deficiency) Sergey V Turchin
  3 siblings, 1 reply; 20+ messages in thread
From: Sergey Bolshakov @ 2008-09-09 21:37 UTC (permalink / raw)
  To: devel

>>>>> "Alexey" == Alexey Tourbin <at-u2l5PoMzF/Uox3rIn2DAYQ@public.gmane.org> writes:
[skipped]
 > * * *

 > Хотя принцип правильной группировки файлов не всегда можно толковать
 > однозначно, на практике он имеет большое значение.  Приведу пример
 > пакета, в котором принцип правильной группировки файлов между пакетами
 > явно нарушен -- это пакет libtcl.  Tcl может использоваться как embedded
 > language, т.е. приложения пишут обёртку для libtcl и дальше Tcl как язык
 > может использоваться внутри приложения.  Такие приложения получают
 > зависимость на libtcl soname.

 > Напишем простейшую программу, которая встраивает libtcl.

[skipped]

 > Библиотека libtcl имеет "непрозрачную" зависимость на init.tcl, этот
 > файл загружается при инициализации библиотеки.  Без init.tcl приложения,
 > слинованные c libtcl, обламываются; а файл init.tcl имеет смысл только
 > в связи с наличием конкретной библиотеки libtcl.  Это достаточное
 > основание для того, чтобы применить принцип правильной группировки
 > файлов между пакетами -- файлы libtcl*so* и init.tcl должны быть
 > запакованы в один и тот же пакет.  На практике возможны два решения:
 > либо перенести init.tcl (и, возможно, ещё некоторые файлы) из пакета tcl
 > в пакет libtcl, либо полностью внести libtcl в tcl (то есть исключить
 > отдельный пакет с библиотекой, если библиотека "сама по себе"
 > не работает).

библиотека "сама по себе" работает, если приложение, в которое
встроена libtcl, потрудится установить в своё окружение переменную
TCL_LIBRARY, указывающую на специфический init.tcl -- например.
Есть и другие способы, желающие да насладятся разбором исходников tcl,
в районе generic/tclInterp.c и unix/tclUnix.Init.c

Кроме того, я был бы признателен, если бы ты избирал для иллюстрации
своих, безусловно, интересных размышлений более подходящие примеры.

[rest skipped]

-- 


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

* Re: [devel] gtk-update-icon-cache filetrigger (+ libtcl deficiency)
  2008-09-09 21:32     ` Dmitry V. Levin
@ 2008-09-09 21:45       ` Alexey Tourbin
  2008-09-09 21:50         ` Led
  2008-09-10  9:45         ` Alexey Shabalin
  0 siblings, 2 replies; 20+ messages in thread
From: Alexey Tourbin @ 2008-09-09 21:45 UTC (permalink / raw)
  To: ALT Devel discussion list

[-- Attachment #1: Type: text/plain, Size: 2321 bytes --]

On Wed, Sep 10, 2008 at 01:32:14AM +0400, Dmitry V. Levin wrote:
> On Wed, Sep 10, 2008 at 01:18:04AM +0400, Alexey Tourbin wrote:
> > On Wed, Sep 10, 2008 at 01:04:08AM +0400, Dmitry V. Levin wrote:
> [...]
> > > Существует как минимум один распространённый тип использования libgtk+2,
> > > при котором кэш иконок не используется совершенно: libgtk+2-devel.  Так
> > > что в библиотеке libgtk+2, запакованной без вспомогательных инструментов
> > > обновления этого кэша, есть вполне понятный смысл.
> > 
> > То есть это использование libgtk+2 в сборочной среде только для
> > линковки, но не для запуска настоящих приложений?  Ну, по-моему,
> > это очень специфический паттерн использования разделяемых библиотек,
> > хотя нам он и кажется распространенным. :)
> 
> Я думаю, что этот "очень специфический паттерн использования разделяемых
> библиотек" широко распространён в наших узких кругах.  Поэтому давайте
> будем паковать вспомогательные инструменты, обслуживающие кэш иконок,
> отдельно от библиотеки.  Тем более что это ничего по существу дела
> поддержки кэша иконок не меняет.

Оно уже "туда" запаковано.

$ rpm -qf /usr/bin/gtk-update-icon-cache 
libgtk+2-common-2.12.11-alt2
$ 

У меня просто стоял вопрос, куда паковать триггер (Юрий Седунов думал,
что его надо паковать в пакет rpm, а я здесь постарался объяснить, что
его нужно паковать туда, куда он относится, а не в rpm).

И всё равно я не понял, чем плохо паковать вспомогательные инструменты
типа gtk-update-icon-cache в библиотечные пакеты.  Ты не дал аргумента,
или же rationale ("существует распространенный тип использования" -- это
только предпосылка).  Очень плохо, если при установке в сборочный чрут
отработает gtk-update-icon-cache?  А то что ldconfig отработает это
хорошо, потому что кое-какие прграммы в чруте всё-таки запускаются,
а вот иконочный кеш скорее всего не потребуется...

> > > Тоже самое, наверное, можно сказать и про libtcl.
> > 
> > Нет, имеет место быть цепочка зависимостей
> > tcl-devel -> tcl -> libtcl
> 
> Там используется конструкция, отличная от традиционной для библиотек
> формы -ltcl?

С точки зрения минимизации сборочных зависимостей нет смысла отпиливать
libtcl от пакета tcl, т.к. сборочный пакет называется tcl-devel (а не
libtcl-devel) и он требует tcl.

[-- Attachment #2: Type: application/pgp-signature, Size: 197 bytes --]

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

* Re: [devel] gtk-update-icon-cache filetrigger (+ libtcl deficiency)
  2008-09-09 21:45       ` Alexey Tourbin
@ 2008-09-09 21:50         ` Led
  2008-09-10  9:45         ` Alexey Shabalin
  1 sibling, 0 replies; 20+ messages in thread
From: Led @ 2008-09-09 21:50 UTC (permalink / raw)
  To: ALT Devel discussion list

On Wednesday, 10 September 2008 00:45:37 Alexey Tourbin wrote:
> On Wed, Sep 10, 2008 at 01:32:14AM +0400, Dmitry V. Levin wrote:
> > On Wed, Sep 10, 2008 at 01:18:04AM +0400, Alexey Tourbin wrote:
> > > On Wed, Sep 10, 2008 at 01:04:08AM +0400, Dmitry V. Levin wrote:
> >
> > [...]
> >
> > > > Существует как минимум один распространённый тип использования
> > > > libgtk+2, при котором кэш иконок не используется совершенно:
> > > > libgtk+2-devel.  Так что в библиотеке libgtk+2, запакованной без
> > > > вспомогательных инструментов обновления этого кэша, есть вполне
> > > > понятный смысл.
> > >
> > > То есть это использование libgtk+2 в сборочной среде только для
> > > линковки, но не для запуска настоящих приложений?  Ну, по-моему,
> > > это очень специфический паттерн использования разделяемых библиотек,
> > > хотя нам он и кажется распространенным. :)
> >
> > Я думаю, что этот "очень специфический паттерн использования разделяемых
> > библиотек" широко распространён в наших узких кругах.  Поэтому давайте
> > будем паковать вспомогательные инструменты, обслуживающие кэш иконок,
> > отдельно от библиотеки.  Тем более что это ничего по существу дела
> > поддержки кэша иконок не меняет.
>
> Оно уже "туда" запаковано.
>
> $ rpm -qf /usr/bin/gtk-update-icon-cache
> libgtk+2-common-2.12.11-alt2
> $
>
> У меня просто стоял вопрос, куда паковать триггер (Юрий Седунов думал,
> что его надо паковать в пакет rpm, а я здесь постарался объяснить, что
> его нужно паковать туда, куда он относится, а не в rpm).
>
> И всё равно я не понял, чем плохо паковать вспомогательные инструменты
> типа gtk-update-icon-cache в библиотечные пакеты.

Извините, что встреваю. Но... например, для того, чтобы 
libgtk+2-%version-%release.i586.rpm можно было поставить в x86_64 систему.

> Ты не дал аргумента, 
> или же rationale ("существует распространенный тип использования" -- это
> только предпосылка).  Очень плохо, если при установке в сборочный чрут
> отработает gtk-update-icon-cache?  А то что ldconfig отработает это
> хорошо, потому что кое-какие прграммы в чруте всё-таки запускаются,
> а вот иконочный кеш скорее всего не потребуется...
>
> > > > Тоже самое, наверное, можно сказать и про libtcl.
> > >
> > > Нет, имеет место быть цепочка зависимостей
> > > tcl-devel -> tcl -> libtcl
> >
> > Там используется конструкция, отличная от традиционной для библиотек
> > формы -ltcl?
>
> С точки зрения минимизации сборочных зависимостей нет смысла отпиливать
> libtcl от пакета tcl, т.к. сборочный пакет называется tcl-devel (а не
> libtcl-devel) и он требует tcl.



-- 
Led

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

* Re: [devel] gtk-update-icon-cache filetrigger (+ libtcl deficiency)
  2008-09-09 21:37 ` Sergey Bolshakov
@ 2008-09-09 21:52   ` Alexey Tourbin
  2008-09-09 22:10     ` Sergey Bolshakov
  0 siblings, 1 reply; 20+ messages in thread
From: Alexey Tourbin @ 2008-09-09 21:52 UTC (permalink / raw)
  To: devel

[-- Attachment #1: Type: text/plain, Size: 3835 bytes --]

On Wed, Sep 10, 2008 at 01:37:33AM +0400, Sergey Bolshakov wrote:
>  > Библиотека libtcl имеет "непрозрачную" зависимость на init.tcl, этот
>  > файл загружается при инициализации библиотеки.  Без init.tcl приложения,
>  > слинованные c libtcl, обламываются; а файл init.tcl имеет смысл только
>  > в связи с наличием конкретной библиотеки libtcl.  Это достаточное
>  > основание для того, чтобы применить принцип правильной группировки
>  > файлов между пакетами -- файлы libtcl*so* и init.tcl должны быть
>  > запакованы в один и тот же пакет.  На практике возможны два решения:
>  > либо перенести init.tcl (и, возможно, ещё некоторые файлы) из пакета tcl
>  > в пакет libtcl, либо полностью внести libtcl в tcl (то есть исключить
>  > отдельный пакет с библиотекой, если библиотека "сама по себе"
>  > не работает).
> 
> библиотека "сама по себе" работает, если приложение, в которое
> встроена libtcl, потрудится установить в своё окружение переменную
> TCL_LIBRARY, указывающую на специфический init.tcl -- например.
> Есть и другие способы, желающие да насладятся разбором исходников tcl,
> в районе generic/tclInterp.c и unix/tclUnix.Init.c
> 
> Кроме того, я был бы признателен, если бы ты избирал для иллюстрации
> своих, безусловно, интересных размышлений более подходящие примеры.

$ hsh --init
<86>Sep 10 01:49:26 userdel[31245]: delete user `rooter'
<86>Sep 10 01:49:26 userdel[31245]: remove group `rooter'
<86>Sep 10 01:49:26 groupadd[31246]: new group: name=rooter, gid=505
<86>Sep 10 01:49:26 useradd[31247]: new user: name=rooter, uid=505, gid=505, home=/root, shell=/bin/bash
<86>Sep 10 01:49:26 userdel[31249]: delete user `builder'
<86>Sep 10 01:49:26 userdel[31249]: remove group `builder'
<86>Sep 10 01:49:26 groupadd[31250]: new group: name=builder, gid=506
<86>Sep 10 01:49:26 useradd[31251]: new user: name=builder, uid=506, gid=506, home=/usr/src, shell=/bin/bash
$ hsh-install xauth
<13>Sep 10 01:49:35 rpmi: libX11-locales-3:1.1.5-alt1 installed
<13>Sep 10 01:49:35 rpmi: libXau-1.0.4-alt1 installed
<13>Sep 10 01:49:36 rpmi: libXdmcp-1.0.2-alt1.0 installed
<13>Sep 10 01:49:36 rpmi: libxcb-1.1-alt4 installed
<13>Sep 10 01:49:36 rpmi: libX11-3:1.1.5-alt1 installed
<13>Sep 10 01:49:36 rpmi: libXext-1.0.4-alt1 installed
<13>Sep 10 01:49:36 rpmi: libICE-1.0.4-alt1 installed
<13>Sep 10 01:49:36 rpmi: libSM-1.1.0-alt1 installed
<13>Sep 10 01:49:36 rpmi: libXt-1.0.5-alt1 installed
<13>Sep 10 01:49:36 rpmi: libXmu-1.0.4-alt1 installed
<13>Sep 10 01:49:36 rpmi: xauth-1:1.0.3-alt1 installed
$ hsh-install ocamlbrowser
<13>Sep 10 01:49:44 rpmi: ocaml-runtime-3.10.2-alt3.1 installed
<13>Sep 10 01:49:44 rpmi: libtcl-8.5.4-alt1 installed
<13>Sep 10 01:49:44 rpmi: libXrender-0.9.4-alt1 installed
<13>Sep 10 01:49:44 rpmi: libexpat-2.0.1-alt0.1 installed
<13>Sep 10 01:49:44 rpmi: libfreetype-2.3.7-alt1 installed
<13>Sep 10 01:49:44 rpmi: fontconfig-2.6.0-alt1 installed
Updating fonts cache: <29>Sep 10 01:49:46 fontconfig: Updating fonts cache: succeeded
[ DONE ]
<13>Sep 10 01:49:46 rpmi: libXft-2.1.13-alt1 installed
<13>Sep 10 01:49:46 rpmi: libXScrnSaver-1.1.3-alt1 installed
<13>Sep 10 01:49:46 rpmi: libtk-8.5.4-alt1 installed
<13>Sep 10 01:49:46 rpmi: labltk-runtime-3.10.2-alt3.1 installed
<13>Sep 10 01:49:46 rpmi: rpm-build-ocaml-1.1.1-alt1 installed
<13>Sep 10 01:49:56 rpmi: ocaml-3.10.2-alt3.1 installed
<13>Sep 10 01:49:59 rpmi: ocamlbrowser-3.10.2-alt3.1 installed
$ hsh-run -X ocamlbrowser
xauth:  creating new authority file /usr/src/.Xauthority
Fatal error: exception Protocol.TkError("Can't find a usable init.tcl in the following directories: 
    /usr/share/tcl/tcl8.5 /usr/lib/tcl8.5 /lib/tcl8.5 /usr/library /library /tcl8.5.4/library /tcl8.5.4/library

This probably means that Tcl wasn't installed properly.
")
$ 

[-- Attachment #2: Type: application/pgp-signature, Size: 197 bytes --]

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

* Re: [devel] gtk-update-icon-cache filetrigger (+ libtcl deficiency)
  2008-09-09 21:52   ` Alexey Tourbin
@ 2008-09-09 22:10     ` Sergey Bolshakov
  2008-09-10  5:50       ` Alexey Tourbin
  0 siblings, 1 reply; 20+ messages in thread
From: Sergey Bolshakov @ 2008-09-09 22:10 UTC (permalink / raw)
  To: devel

>>>>> "Alexey" == Alexey Tourbin <at-u2l5PoMzF/Uox3rIn2DAYQ@public.gmane.org> writes:

 > On Wed, Sep 10, 2008 at 01:37:33AM +0400, Sergey Bolshakov wrote:
 >> > Библиотека libtcl имеет "непрозрачную" зависимость на init.tcl, этот
 >> > файл загружается при инициализации библиотеки.  Без init.tcl приложения,
 >> > слинованные c libtcl, обламываются; а файл init.tcl имеет смысл только
 >> > в связи с наличием конкретной библиотеки libtcl.  Это достаточное
 >> > основание для того, чтобы применить принцип правильной группировки
 >> > файлов между пакетами -- файлы libtcl*so* и init.tcl должны быть
 >> > запакованы в один и тот же пакет.  На практике возможны два решения:
 >> > либо перенести init.tcl (и, возможно, ещё некоторые файлы) из пакета tcl
 >> > в пакет libtcl, либо полностью внести libtcl в tcl (то есть исключить
 >> > отдельный пакет с библиотекой, если библиотека "сама по себе"
 >> > не работает).
 >> 
 >> библиотека "сама по себе" работает, если приложение, в которое
 >> встроена libtcl, потрудится установить в своё окружение переменную
 >> TCL_LIBRARY, указывающую на специфический init.tcl -- например.
 >> Есть и другие способы, желающие да насладятся разбором исходников tcl,
 >> в районе generic/tclInterp.c и unix/tclUnix.Init.c
 >> 
 >> Кроме того, я был бы признателен, если бы ты избирал для иллюстрации
 >> своих, безусловно, интересных размышлений более подходящие примеры.

 > $ hsh --init
[skipped]

 > $ hsh-run -X ocamlbrowser
 > xauth:  creating new authority file /usr/src/.Xauthority
 > Fatal error: exception Protocol.TkError("Can't find a usable init.tcl in the following directories: 
 >     /usr/share/tcl/tcl8.5 /usr/lib/tcl8.5 /lib/tcl8.5 /usr/library /library /tcl8.5.4/library /tcl8.5.4/library

 > This probably means that Tcl wasn't installed properly.
 > ")
 > $ 

Что же это иллюстрирует ?
На мой взгляд, неполные зависимости в ocamlbrowser.

Бишь, в ответ на моё разъяснение, каким именно способом _возможно_
использовать libtcl без tcl, ты продолжаешь меня уверять, что если
ничего этакого в приложении не делается, то оно и не работает -- ну
так я этого и не оспариваю.

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

-- 


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

* Re: [devel] gtk-update-icon-cache filetrigger (+ libtcl deficiency)
  2008-09-09 22:10     ` Sergey Bolshakov
@ 2008-09-10  5:50       ` Alexey Tourbin
  2008-09-10  9:52         ` Sergey Bolshakov
  0 siblings, 1 reply; 20+ messages in thread
From: Alexey Tourbin @ 2008-09-10  5:50 UTC (permalink / raw)
  To: devel

[-- Attachment #1: Type: text/plain, Size: 2483 bytes --]

On Wed, Sep 10, 2008 at 02:10:08AM +0400, Sergey Bolshakov wrote:
>  >> библиотека "сама по себе" работает, если приложение, в которое
>  >> встроена libtcl, потрудится установить в своё окружение переменную
>  >> TCL_LIBRARY, указывающую на специфический init.tcl -- например.
>  >> Есть и другие способы, желающие да насладятся разбором исходников tcl,
>  >> в районе generic/tclInterp.c и unix/tclUnix.Init.c
>  >> 
>  >> Кроме того, я был бы признателен, если бы ты избирал для иллюстрации
>  >> своих, безусловно, интересных размышлений более подходящие примеры.
> 
>  > $ hsh --init
> [skipped]
> 
>  > $ hsh-run -X ocamlbrowser
>  > xauth:  creating new authority file /usr/src/.Xauthority
>  > Fatal error: exception Protocol.TkError("Can't find a usable init.tcl in the following directories: 
>  >     /usr/share/tcl/tcl8.5 /usr/lib/tcl8.5 /lib/tcl8.5 /usr/library /library /tcl8.5.4/library /tcl8.5.4/library
> 
>  > This probably means that Tcl wasn't installed properly.
>  > ")
>  > $ 
> 
> Что же это иллюстрирует ?

Просили более подходящий пример для иллюстрации, нежели чем макетная
программа.  Есть реальный пример, который иллюстрирует проблему.

> На мой взгляд, неполные зависимости в ocamlbrowser.

Что же, в ocamlbrowser нужно добавить зависимость на tcl(init)?
Но ведь эта зависимость "сидит" в бинарном коде libtcl.

На самом деле tcl не предоставляет зависимость вида tcl(init),
так что даже нет хорошего способа указать именно эту зависимость.
Как тогда предлагается дополнить зависимости ocamlbrowser?

> Бишь, в ответ на моё разъяснение, каким именно способом _возможно_
> использовать libtcl без tcl, ты продолжаешь меня уверять, что если
> ничего этакого в приложении не делается, то оно и не работает -- ну
> так я этого и не оспариваю.
> 
> Для выделения libtcl в отдельный подпакет мне было достаточно
> знания того, что такие способы существуют и практикуются.
> Что должно значиться в зависимостях некоего пакета Пэ,
> слинкованного с libtcl -- решать уважаемому майнтайнеру Пэ,
> не мне.

$ nm -D /usr/lib64/ocaml/stublibs/dlllabltk.so |grep Tcl_Init
	U Tcl_Init
$

Вызов Tcl_Init приводит к облому, так что программы, "честно"
слинковавшиеся с libtcl, имеют недостаточные зависимости.

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

[-- Attachment #2: Type: application/pgp-signature, Size: 197 bytes --]

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

* [devel] Q: gtk-update-icon-cache index.theme
  2008-09-09 20:23 [devel] gtk-update-icon-cache filetrigger (+ libtcl deficiency) Alexey Tourbin
  2008-09-09 21:04 ` Dmitry V. Levin
  2008-09-09 21:37 ` Sergey Bolshakov
@ 2008-09-10  6:52 ` Alexey Tourbin
  2008-09-11 20:47   ` Yuri N. Sedunov
  2008-09-10 10:57 ` [devel] gtk-update-icon-cache filetrigger (+ libtcl deficiency) Sergey V Turchin
  3 siblings, 1 reply; 20+ messages in thread
From: Alexey Tourbin @ 2008-09-10  6:52 UTC (permalink / raw)
  To: devel

[-- Attachment #1: Type: text/plain, Size: 948 bytes --]

On Wed, Sep 10, 2008 at 12:23:45AM +0400, Alexey Tourbin wrote:
> Вернёмся к кешу иконок libgtk+2 и его специфике.  Кеш создаётся для
> каждой отдельной "темы" иконок, а темы раскладываются по отдельным
> каталогам.  Для каждой темы должен существовать файл index.theme
> (для темы "hicolor", используемой по умолчанию, это будет
> /usr/share/icons/hicolor/index.theme в пакете icon-theme-hicolor).
> Программа gtk-update-icon-cache по умолчанию отказывается создавать 
> кеш, если отсутствует файл index.theme.
> 
> Однако пакет libgtk+2 не имеет зависимости на icon-theme-hicolor,
> то есть в базовой установке для дефолтной темы hicolor отсутствует файл
> index.theme.  Хотелось бы выяснить, в какой степени файл index.theme
> реально необходим для использования иконок (и для создания кеша иконок).

Хотелось бы выяснить, в какой степени файл index.theme реально необходим
для использования иконок (и для создания кеша иконок).

[-- Attachment #2: Type: application/pgp-signature, Size: 197 bytes --]

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

* Re: [devel] gtk-update-icon-cache filetrigger (+ libtcl deficiency)
  2008-09-09 21:45       ` Alexey Tourbin
  2008-09-09 21:50         ` Led
@ 2008-09-10  9:45         ` Alexey Shabalin
  1 sibling, 0 replies; 20+ messages in thread
From: Alexey Shabalin @ 2008-09-10  9:45 UTC (permalink / raw)
  To: ALT Linux Team development discussions

> У меня просто стоял вопрос, куда паковать триггер (Юрий Седунов думал,
> что его надо паковать в пакет rpm, а я здесь постарался объяснить, что
> его нужно паковать туда, куда он относится, а не в rpm).
может и глупость выскажу, а почему бы этот тригер не запаковать в
gnome-icon-theme (подсмотрено в mandriva)

> И всё равно я не понял, чем плохо паковать вспомогательные инструменты
> типа gtk-update-icon-cache в библиотечные пакеты.  Ты не дал аргумента,
> или же rationale ("существует распространенный тип использования" -- это
> только предпосылка).  Очень плохо, если при установке в сборочный чрут
> отработает gtk-update-icon-cache?  А то что ldconfig отработает это
> хорошо, потому что кое-какие прграммы в чруте всё-таки запускаются,
> а вот иконочный кеш скорее всего не потребуется...



-- 
Alexey Shabalin

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

* Re: [devel] gtk-update-icon-cache filetrigger (+ libtcl deficiency)
  2008-09-10  5:50       ` Alexey Tourbin
@ 2008-09-10  9:52         ` Sergey Bolshakov
  2008-09-10 10:01           ` Dmitry V. Levin
  0 siblings, 1 reply; 20+ messages in thread
From: Sergey Bolshakov @ 2008-09-10  9:52 UTC (permalink / raw)
  To: devel

>>>>> "Alexey" == Alexey Tourbin <at-u2l5PoMzF/Uox3rIn2DAYQ@public.gmane.org> writes:
[skipped]
 >> 
 >> > $ hsh-run -X ocamlbrowser
 >> > xauth:  creating new authority file /usr/src/.Xauthority
 >> > Fatal error: exception Protocol.TkError("Can't find a usable init.tcl in the following directories: 
 >> >     /usr/share/tcl/tcl8.5 /usr/lib/tcl8.5 /lib/tcl8.5 /usr/library /library /tcl8.5.4/library /tcl8.5.4/library
 >> 
 >> > This probably means that Tcl wasn't installed properly.
 >> > ")
 >> > $ 
 >> 
 >> Что же это иллюстрирует ?

 > Просили более подходящий пример для иллюстрации, нежели чем макетная
 > программа.  Есть реальный пример, который иллюстрирует проблему.

Проблема проиллюстрирована, а именно:
 >> На мой взгляд, неполные зависимости в ocamlbrowser.

 > Что же, в ocamlbrowser нужно добавить зависимость на tcl(init)?
 > Но ведь эта зависимость "сидит" в бинарном коде libtcl.
Нет, такой сущности, как tcl(init), не существует (во всяком случае
локализованной на файловой системе)

 > На самом деле tcl не предоставляет зависимость вида tcl(init),
 > так что даже нет хорошего способа указать именно эту зависимость.
 > Как тогда предлагается дополнить зависимости ocamlbrowser?
В этом конкретном случае (и, допускаю, в нескольких подобных)
зависимость на tcl должна быть выставлена руками.
 
 >> Бишь, в ответ на моё разъяснение, каким именно способом _возможно_
 >> использовать libtcl без tcl, ты продолжаешь меня уверять, что если
 >> ничего этакого в приложении не делается, то оно и не работает -- ну
 >> так я этого и не оспариваю.
 >> 
 >> Для выделения libtcl в отдельный подпакет мне было достаточно
 >> знания того, что такие способы существуют и практикуются.
 >> Что должно значиться в зависимостях некоего пакета Пэ,
 >> слинкованного с libtcl -- решать уважаемому майнтайнеру Пэ,
 >> не мне.

 > $ nm -D /usr/lib64/ocaml/stublibs/dlllabltk.so |grep Tcl_Init
 > 	U Tcl_Init
 > $

 > Вызов Tcl_Init приводит к облому, так что программы, "честно"
 > слинковавшиеся с libtcl, имеют недостаточные зависимости.

Есть масса _штатных_ способов повлиять на поведение Tcl_Init так, что
содержимое пакета tcl будет не нужно -- ты бы мог заглянуть наконец в
исходники и убедиться в этом.

 > С одной стороны, программы, слинкованные с libtcl, могут и не
 > использовать Tcl_Init.  С другой стороны, можно ожидать, что
 > программы будут использовать именно эту стандартную процедуру
 > инициализации.

Вот для этого у программ есть авторы и майнтайнеры.
В общем, я полагаю, обсуждать тут нечего.

-- 


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

* Re: [devel] gtk-update-icon-cache filetrigger (+ libtcl deficiency)
  2008-09-10  9:52         ` Sergey Bolshakov
@ 2008-09-10 10:01           ` Dmitry V. Levin
  2008-09-10 10:08             ` Mikhail Gusarov
  0 siblings, 1 reply; 20+ messages in thread
From: Dmitry V. Levin @ 2008-09-10 10:01 UTC (permalink / raw)
  To: ALT Devel discussion list

[-- Attachment #1: Type: text/plain, Size: 773 bytes --]

On Wed, Sep 10, 2008 at 01:52:57PM +0400, Sergey Bolshakov wrote:
[...]
>  > Что же, в ocamlbrowser нужно добавить зависимость на tcl(init)?
>  > Но ведь эта зависимость "сидит" в бинарном коде libtcl.
> Нет, такой сущности, как tcl(init), не существует (во всяком случае
> локализованной на файловой системе)
> 
>  > На самом деле tcl не предоставляет зависимость вида tcl(init),
>  > так что даже нет хорошего способа указать именно эту зависимость.
>  > Как тогда предлагается дополнить зависимости ocamlbrowser?
> В этом конкретном случае (и, допускаю, в нескольких подобных)
> зависимость на tcl должна быть выставлена руками.

А не слишком ли это рутинная задача для мантейнера, который привык к
автоматически проставляемым зависимостям?


-- 
ldv

[-- Attachment #2: Type: application/pgp-signature, Size: 197 bytes --]

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

* Re: [devel] gtk-update-icon-cache filetrigger (+ libtcl deficiency)
  2008-09-10 10:01           ` Dmitry V. Levin
@ 2008-09-10 10:08             ` Mikhail Gusarov
  2008-09-10 13:50               ` Michael Shigorin
  0 siblings, 1 reply; 20+ messages in thread
From: Mikhail Gusarov @ 2008-09-10 10:08 UTC (permalink / raw)
  To: ALT Devel discussion list

[-- Attachment #1: Type: text/plain, Size: 483 bytes --]

Twas brillig at 14:01:17 10.09.2008 UTC+04 when ldv@altlinux.org did gyre and gimble:

 DVL> А не слишком ли это рутинная задача для мантейнера, который привык
 DVL> к автоматически проставляемым зависимостям?

Вывести автоматически, какой конкретно toplevel нужен данному пакету -
задача нетривиальная.

-- 

[-- Attachment #2: Type: application/pgp-signature, Size: 196 bytes --]

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

* Re: [devel] gtk-update-icon-cache filetrigger (+ libtcl deficiency)
  2008-09-09 20:23 [devel] gtk-update-icon-cache filetrigger (+ libtcl deficiency) Alexey Tourbin
                   ` (2 preceding siblings ...)
  2008-09-10  6:52 ` [devel] Q: gtk-update-icon-cache index.theme Alexey Tourbin
@ 2008-09-10 10:57 ` Sergey V Turchin
  3 siblings, 0 replies; 20+ messages in thread
From: Sergey V Turchin @ 2008-09-10 10:57 UTC (permalink / raw)
  To: devel

[-- Attachment #1: Type: text/plain, Size: 517 bytes --]

On Wednesday 10 September 2008, Alexey Tourbin wrote:

[...]
> заключить, что библиотеку libgtk+2, программу
> gtk-update-icon-cache и триггер
> /usr/lib/rpm/gtk-icon-cache.filetrigger следует запаковать в один
> и тот же пакет (libgtk+2).
Не надо, а то от arepo никогда не откажемся.

[...]

-- 
Regards, Sergey, ALT Linux Team, http://www.altlinux.ru
http://stinkfoot.org:11371/pks/lookup?op=get&search=0x1C2A3F08

[-- Attachment #2: This is a digitally signed message part. --]
[-- Type: application/pgp-signature, Size: 197 bytes --]

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

* Re: [devel] gtk-update-icon-cache filetrigger (+ libtcl deficiency)
  2008-09-10 10:08             ` Mikhail Gusarov
@ 2008-09-10 13:50               ` Michael Shigorin
  2008-09-10 14:22                 ` Evgeny Sinelnikov
  0 siblings, 1 reply; 20+ messages in thread
From: Michael Shigorin @ 2008-09-10 13:50 UTC (permalink / raw)
  To: ALT Devel discussion list

On Wed, Sep 10, 2008 at 05:08:16PM +0700, Mikhail Gusarov wrote:
> > А не слишком ли это рутинная задача для мантейнера, который
> > привык к автоматически проставляемым зависимостям?
> Вывести автоматически, какой конкретно toplevel нужен данному
> пакету - задача нетривиальная.

Возможно ли реализовать разумный дефолт, не отказывая при этом
желающим пальнуть в ногу?

-- 
 ---- WBR, Michael Shigorin <mike@altlinux.ru>
  ------ Linux.Kiev http://www.linux.kiev.ua/


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

* Re: [devel] gtk-update-icon-cache filetrigger (+ libtcl deficiency)
  2008-09-10 13:50               ` Michael Shigorin
@ 2008-09-10 14:22                 ` Evgeny Sinelnikov
  0 siblings, 0 replies; 20+ messages in thread
From: Evgeny Sinelnikov @ 2008-09-10 14:22 UTC (permalink / raw)
  To: ALT Linux Team development discussions

10 сентября 2008 г. 17:50 пользователь Michael Shigorin
<mike@osdn.org.ua> написал:
> On Wed, Sep 10, 2008 at 05:08:16PM +0700, Mikhail Gusarov wrote:
>> > А не слишком ли это рутинная задача для мантейнера, который
>> > привык к автоматически проставляемым зависимостям?
>> Вывести автоматически, какой конкретно toplevel нужен данному
>> пакету - задача нетривиальная.
>
> Возможно ли реализовать разумный дефолт, не отказывая при этом
> желающим пальнуть в ногу?

а смысл? Я так понял, что зависимость есть, а библиотека не
работает... и каждый, кто по воле случая собирёт пакет линкующийся с
такой библиотекой, будет вынужден проставлять дополнительную не явную
зависимость. То есть каждый раз одни и те же грабли, при цене вопроса
в один файл...


-- 
Sin (Sinelnikov Evgeny)

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

* Re: [devel] Q: gtk-update-icon-cache index.theme
  2008-09-10  6:52 ` [devel] Q: gtk-update-icon-cache index.theme Alexey Tourbin
@ 2008-09-11 20:47   ` Yuri N. Sedunov
  0 siblings, 0 replies; 20+ messages in thread
From: Yuri N. Sedunov @ 2008-09-11 20:47 UTC (permalink / raw)
  To: ALT Linux Team development discussions

В Срд, 10/09/2008 в 10:52 +0400, Alexey Tourbin пишет:
> On Wed, Sep 10, 2008 at 12:23:45AM +0400, Alexey Tourbin wrote:
> > Вернёмся к кешу иконок libgtk+2 и его специфике.  Кеш создаётся для
> > каждой отдельной "темы" иконок, а темы раскладываются по отдельным
> > каталогам.  Для каждой темы должен существовать файл index.theme
> > (для темы "hicolor", используемой по умолчанию, это будет
> > /usr/share/icons/hicolor/index.theme в пакете icon-theme-hicolor).
> > Программа gtk-update-icon-cache по умолчанию отказывается создавать 
> > кеш, если отсутствует файл index.theme.
> > 
> > Однако пакет libgtk+2 не имеет зависимости на icon-theme-hicolor,
> > то есть в базовой установке для дефолтной темы hicolor отсутствует файл
> > index.theme.  Хотелось бы выяснить, в какой степени файл index.theme
> > реально необходим для использования иконок (и для создания кеша иконок).
> 
> Хотелось бы выяснить, в какой степени файл index.theme реально необходим
> для использования иконок (и для создания кеша иконок).

Результат работы gtk-update-icon-cache не зависит от наличия
index.theme.

-- 
Yuri N. Sedunov



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

end of thread, other threads:[~2008-09-11 20:47 UTC | newest]

Thread overview: 20+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2008-09-09 20:23 [devel] gtk-update-icon-cache filetrigger (+ libtcl deficiency) Alexey Tourbin
2008-09-09 21:04 ` Dmitry V. Levin
2008-09-09 21:18   ` Alexey Tourbin
2008-09-09 21:32     ` Dmitry V. Levin
2008-09-09 21:45       ` Alexey Tourbin
2008-09-09 21:50         ` Led
2008-09-10  9:45         ` Alexey Shabalin
2008-09-09 21:25   ` Led
2008-09-09 21:37 ` Sergey Bolshakov
2008-09-09 21:52   ` Alexey Tourbin
2008-09-09 22:10     ` Sergey Bolshakov
2008-09-10  5:50       ` Alexey Tourbin
2008-09-10  9:52         ` Sergey Bolshakov
2008-09-10 10:01           ` Dmitry V. Levin
2008-09-10 10:08             ` Mikhail Gusarov
2008-09-10 13:50               ` Michael Shigorin
2008-09-10 14:22                 ` Evgeny Sinelnikov
2008-09-10  6:52 ` [devel] Q: gtk-update-icon-cache index.theme Alexey Tourbin
2008-09-11 20:47   ` Yuri N. Sedunov
2008-09-10 10:57 ` [devel] gtk-update-icon-cache filetrigger (+ libtcl deficiency) 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