Форум » RusXMMS Project » Зависимости между компонентами в librcc » Ответить

Зависимости между компонентами в librcc

Lazy_Kent: Помогите, пожалуйста, разобраться с зависимостями между компонентами при сборке пакетов librcc. GTK GUI я не собираю. Поэтому, на данный момент, имеется два пакета: librcc0 и librcc-devel. Согласно политики упаковки разделяемых библиотек http://en.opensuse.org/Packaging/Shared_Library_Packaging_Policy в librcc0 можно включить только %{_libdir}/librcc.so.* и %{_libdir}/librccui.so.* %{_libdir}/rcc с содержимым и документация не должны находиться в этом пакете. Я делаю отдельный пакет, например rcc-engines. Туда отправляются %{_libdir}/rcc, %{_sysconfdir}/rcc.xml и файлы документации за исключением каталога examples. В librcc-devel упаковываются заголовочные файлы, ссылки на библиотеки и каталог examples. Правильно ли такое решение с точки зрения функционала? Будет ли работать librcc.so.0 без пакета с engines и конфигурационного файла? И нужна ли librcc.so.0 для engines?

Ответов - 10

darksoft: rcc-engines - это дополнительные движки авто-определения. Без них не будет авто-определение работать, но библиотека будет запускаться и использовать кодировку по умолчанию, а это может приводить к неправильной перекодировке. Впрочем, Enca и LibRCD можно вкомпилировать прямо внутрь, но скажем western, который определяет ISO8859-1 или UTF-8, - нет. Кроме engines там, кстати, еще есть rcc-external в /usr/bin, который тоже нужен библиотеке. Используется модулем перевода (тут штука хитрая: libtranslate который переводит юзает glib2; xmms, для которого все изначально и делалось - glib1; а если слинковать вместе в одном процессе glib1 и glib2, то все падает, - поэтому мне пришлось выносить код работающий с libtranslate в отдельный процесс). При отсутсвии думаю будет ругаться, но падать не будет, но надо проверять. Резюмируя: rcc-engines и rcc-external являются неотъемлимой частью библиотеки и она особого смысла без них не имеет. Но, если требование не включать ничего кроме /usr/lib/lib* невозможно обойти, то в принципе можно завернуть и одну библиотеку, но стоит хотя бы выпатчить английский язык из дефолтового конфига в src/rccconfig.c

Lazy_Kent: Всё понял. Я соберу rcc-engines и rcc-external (я его как-то упустил) отдельным пакетом rcc-runtime и пропишу жёстко в зависимости к librcc.

Lazy_Kent: Что-то я не вижу rcc-external. При какой конфигурации он должен компилироваться? Сейчас у меня выглядит так: [pre2]Configuration: POSIX Threading Support: yes External IConv Library: no LibCharset Library: no Dynamic Engine Loading Support: yes Enca Charset Detection Support: dynamic LibRCD Charset Detection Support: yes LibGUESS Charset Detection Support: no Multilanguage support with DB4: no Language autodetection using aspell: yes Libtranslate support: no Libtranslate Timed Translate: no User Interfaces: GTK User Interface: no GTK2 User Interface: no Directories: RCC Data Directory: /usr/lib/rcc/[/pre2] Ещё такое предупреждение rpmlint: [pre2]I: A function overflows or underflows an array access. This could be a real error, but occasionaly this condition is also misdetected due to loop unrolling or strange pointer handling. So this is warning only, please review. W: librcc0 arraysubscript rccstring.c:67[/pre2]


Lazy_Kent: Ключи конфигурации: [pre2]%{configure} \ --disable-static \ --disable-bdb \ --disable-libtranslate \ --disable-gtk2[/pre2]

darksoft: 0. Да такое решение видится мне оптимальным. 1. Сори попутал, rcc-external тоже кладется в '/usr/lib/rcc/' 2. В настоящий момент rcc-external используется только для модуля перевода. Т.е. если вырубать libtranslate, то rcc-external не нужен.

Lazy_Kent: При сборке в Factory (GCC 4.5) вот такие ошибки: [pre2]I: A function overflows or underflows an array access. This could be a real error, but occasionaly this condition is also misdetected due to loop unrolling or strange pointer handling. So this is warning only, please review. W: librcc0 arraysubscript rccstring.c:67 I: Program causes undefined operation (likely same variable used twiceand post/pre incremented in the same expression). e.g. x = x++; Split it in two operations. W: librcc0 sequence-point librcc.c:404, 511[/pre2] Меня это очень беспокоит. Хотелось бы получить безукоризненный пакет.

darksoft: Какой хороший в SuSE lint. Спасибо, исправил. Патч http://dside.dyndns.org/tmp/suse-lint.diff

Lazy_Kent: Второе предупреждение пока осталось, в 511 строке.

darksoft: Извиняюсь, не заметил вторую строчку. Поправил патч, лежит там-же.

Lazy_Kent: Большое спасибо. Теперь всё замечательно.



полная версия страницы