Summary: | Нет зависимости wine ot libpng15 | ||
---|---|---|---|
Product: | Sisyphus | Reporter: | Andrey Cherepanov <cas> |
Component: | wine | Assignee: | Vitaly Lipatov <lav> |
Status: | CLOSED FIXED | QA Contact: | qa-sisyphus |
Severity: | normal | ||
Priority: | P3 | CC: | lav |
Version: | unstable | ||
Hardware: | all | ||
OS: | Linux | ||
Bug Depends on: | 38856 | ||
Bug Blocks: | 40797, 31991 |
Description
Andrey Cherepanov
2016-04-18 23:16:20 MSK
Была такая проблема. В Сизифе исправлена в wine-vanilla-2.14 (Requires уже libpng16), но я не уверен, что это повлияет на 32-битую версию. В wine-2.14 также будет добавлено. $ apt-cache depends libwine-vanilla | grep libpng Требует: libpng16 при этом пакет после arepo не имеет зависимостей: $ apt-cache depends i586-libwine-vanilla <i586-libwine-vanilla> Что тут можно сделать? (В ответ на комментарий №2) > $ apt-cache depends libwine-vanilla | grep libpng > Требует: libpng16 > > при этом пакет после arepo не имеет зависимостей: > $ apt-cache depends i586-libwine-vanilla > <i586-libwine-vanilla> > > Что тут можно сделать? Для этого есть трюк: симлинк на системную библиотеку под 32-битной сборкой. После этого в arepo форируется ссылка на arepную библиотеку. Для примеры: skype-preinstall. На данный момент зависимости не теряются: $ rpm -q --requires i586-libwine i586-libpng16 Но для обеспечения идентичности пакетов i586-*wine и оригинальных 32-битных *wine я бы перешёл на преобразование в путь к библиотеке. Насколько я понимаю, создание ссылки, которая при упаковке породит зависимость на файл, на который она ссылается, ничем не отличается от добавления зависимости на файл. План такой: Название библиотеки, указываемое при линковке превращать в зависимость на файл, который будет реально линковаться при запуске. То есть # png -> /usr/lib/libpng16.so.16 а не /usr/lib/libpng16.so.16.37.0 Пример кода: get_linking_lib() { # get full path to lib.so local ll=%_libdir/lib$1.so test -f "$ll" || return 1 # real lib file (WHY it links not to linked file??) local ee=$(readlink -e $ll) test -f "$ee" || return 1 # get third file (not last, not just .so) in a hope there are only one file local ee1=${ee/.so*/.so} test -f "$ee1" || return 1 local ee2=$(ls -1 $ee1.* | grep -v "^$ee") # if there are no third file, just return one if [ "$ee" = "$ee2" ] ; then echo "$ee" test -f "$ee" else echo "$ee2" test -f "$ee2" fi } L=$(get_linking_lib png) || exit ln -s $L %buildroot%_libdir/%name/$(basename $L) %files %_libdir/%name/ Начиная с wine 7.5 используется встроенный libpng, внешняя зависимость больше не нужна. |