Bug 29222 - При конвертации в x86_64-i586 теряются зависимости pkgconfig
Summary: При конвертации в x86_64-i586 теряются зависимости pkgconfig
Status: NEW
Alias: None
Product: Sisyphus
Classification: Development
Component: rpmrebuild-arepo (show other bugs)
Version: unstable
Hardware: all Linux
: P3 normal
Assignee: placeholder@altlinux.org
QA Contact: qa-sisyphus
URL:
Keywords:
Depends on: 38856
Blocks:
  Show dependency tree
 
Reported: 2013-07-24 11:59 MSK by Vitaly Lipatov
Modified: 2020-09-09 23:41 MSK (History)
4 users (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Vitaly Lipatov 2013-07-24 11:59:39 MSK
В 64-битной системе:
$ rpm -q --requires libgphoto2-devel
libgphoto2 = 2.5.2-alt1
/bin/sh  
/usr/lib64/pkgconfig  
coreutils  
pkgconfig(libexif) >= 0.6.13

Для сконвертированного i586- теряется зависимость pkgconfig(libexif)
и сборка ломается из-за отсутствия i586-libexif-devel
$ rpm -q --requires i586-libgphoto2-devel
libgphoto2-devel = 2.5.2-alt1
i586-libgphoto2 = 2.5.2-alt1
Comment 1 Dmitry V. Levin 2013-07-24 13:29:15 MSK
Если бы в i586-libexif-devel зависимость pkgconfig(libexif) сохранилась, это бы ничего не изменило, поскольку в libexif-devel такая зависимость уже есть.
Comment 2 Vitaly Lipatov 2013-07-24 20:46:26 MSK
Видимо, задачу можно было бы решить предоставлением i586-pkgconfig(libexif) в i586-libexif-devel и сохранении в i586-libgphoto2-devel зависимости на pkgconfig в сконвертированном к этому формату виде.

В каждом из пакетов мы имеем соответствующий libexif.pc:
/usr/lib64/pkgconfig/libexif.pc
/usr/lib/pkgconfig/libexif.pc
Видимо, разница их архитектур должна быть отражена в provides?
Comment 3 Dmitry V. Levin 2013-08-01 16:25:13 MSK
Какая-то сложная логика получается: если выполнены все нижеперечисленные условия:
- пакет 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)?
Comment 4 Vitaly Lipatov 2013-08-02 01:40:16 MSK
В других системах это вообще никак не продумано.

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
Comment 5 Vitaly Lipatov 2013-08-02 01:47:48 MSK
(В ответ на комментарий №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).