Summary: | При конвертации в x86_64-i586 теряются зависимости pkgconfig | ||
---|---|---|---|
Product: | Sisyphus | Reporter: | Vitaly Lipatov <lav> |
Component: | rpmrebuild-arepo | Assignee: | placeholder <placeholder> |
Status: | NEW --- | QA Contact: | qa-sisyphus |
Severity: | normal | ||
Priority: | P3 | CC: | glebfm, ldv, placeholder, vitty |
Version: | unstable | ||
Hardware: | all | ||
OS: | Linux | ||
Bug Depends on: | 38856 | ||
Bug Blocks: |
Description
Vitaly Lipatov
2013-07-24 11:59:39 MSK
Если бы в i586-libexif-devel зависимость pkgconfig(libexif) сохранилась, это бы ничего не изменило, поскольку в libexif-devel такая зависимость уже есть. Видимо, задачу можно было бы решить предоставлением i586-pkgconfig(libexif) в i586-libexif-devel и сохранении в i586-libgphoto2-devel зависимости на pkgconfig в сконвертированном к этому формату виде. В каждом из пакетов мы имеем соответствующий libexif.pc: /usr/lib64/pkgconfig/libexif.pc /usr/lib/pkgconfig/libexif.pc Видимо, разница их архитектур должна быть отражена в provides? Какая-то сложная логика получается: если выполнены все нижеперечисленные условия: - пакет L.i586 contains /usr/lib/pkgconfig/foo.pc - пакет L.i586 provides pkgconfig(foo) - пакет L.x86_64 contains /usr/lib64/pkgconfig/foo.pc - пакет L.x8664 provides pkgconfig(foo), то в пакет i586-L.i586 следует добавить provides i586-pkgconfig(foo)? Далее, если пакет C.i586 requires pkgconfig(foo), и при этом какой-то пакет i586-L.i586 provides i586-pkgconfig(foo), то в пакет i586-C.i586 следует добавить requires i586-pkgconfig(foo)? В других системах это вообще никак не продумано. Fedora 19: # rpm -q --provides libpng-devel-1.5.13-2.fc19.i686 libpng-devel = 2:1.5.13-2.fc19 libpng-devel(x86-32) = 2:1.5.13-2.fc19 pkgconfig(libpng) = 1.5.13 pkgconfig(libpng15) = 1.5.13 # rpm -q --provides libpng-devel-1.5.13-2.fc19.x86_64 libpng-devel = 2:1.5.13-2.fc19 libpng-devel(x86-64) = 2:1.5.13-2.fc19 pkgconfig(libpng) = 1.5.13 pkgconfig(libpng15) = 1.5.13 При этом у пакетов разных архитектур одинаковые зависимости: # rpm -q --requires gtk2-devel-0:2.24.19-3.fc19.x86_64 | grep png libpng-devel # rpm -q --requires gtk2-devel-0:2.24.19-3.fc19.i686 | grep png libpng-devel В SUSE вообще очень неполноценно: SUSE 12: # rpm -q --provides libpng14-devel-32bit-1.4.11-2.5.1.x86_64 libpng14-devel-32bit = 1.4.11-2.5.1 libpng14-devel-32bit(x86-32) = 1.4.11-2.5.1 # rpm -q --provides libpng14-devel-1.4.11-2.5.1.x86_64 pkgconfig(libpng14) = 1.4.11 libpng14-devel = 1.4.11-2.5.1 libpng14-devel(x86-64) = 1.4.11-2.5.1 (В ответ на комментарий №3) > то в пакет i586-L.i586 следует добавить provides i586-pkgconfig(foo)? > > то в пакет i586-C.i586 следует добавить requires i586-pkgconfig(foo)? Один вариант — для 64-битной платформы стоит переделать все pkgconfig(some) на pkgconfig64(some). Это сохранит возможность ставить неисправленные 32-битные devel-пакеты, но добавит лишнюю несовместимость для 64-битной архитектуры. Но раз это не нужно, стоит без условий из i586-libNAME-devel делать provides i586-pkgconfig и ставить i586-pkgconfig requires. Вообще мне казалось, что в какой-то момент pkgconfig стали становиться архитектурно независимым (в /usr/share/pkgconfig). |