LINUX.ORG.RU

harfbuzz и freetype2: кольцевая зависимость, prelink не работает

 , ,


0

1

Сабж.

$ ldd /lib/libfreetype.so | grep harf
        libharfbuzz.so.0 => /usr/lib/libharfbuzz.so.0 (0x00007f3a53466000)
$ ldd /lib/libharfbuzz.so | grep free
        libfreetype.so.6 => /usr/lib/libfreetype.so.6 (0x00007f4e7906b000)

Всё бы ничего, но prelink сходит с ума и отказывается прелинковать половину бинарников, потому что они все зависят от freetype:

$ sudo prelink -avmR |& grep -E 'harf|free'
prelink: /usr/lib/libharfbuzz.so.0.929.0 has a dependency cycle
prelink: /usr/lib32/libharfbuzz.so.0.928.0 has a dependency cycle
prelink: Could not prelink /usr/lib/libQtGui.so.4 because its dependency /usr/lib/libfreetype.so.6 could not be prelinked

Что делать? Вариант «забыть про prelink» рассматривается, если кто-нибудь расскажет, почему он не нужен. (Хинт: машинка — ARMv7 800MHz, производительность всё же важна.)

★★★★★

Последнее исправление: CYB3R (всего исправлений: 2)

Вы, конечно, уже проверили наличие указанного файла в системе и посмотрели хотя бы man страницу по prelink?

                                                 ... If
    prelink finds a dependent library of some binary or
    other library which is not present in  any  of  the
    directories  specified  either in /etc/prelink.conf
    or  on  the  command  line,  then  it   cannot   be
    prelinked. 
...

kostik87 ★★★★★
()

Ну так собери freetype без harfbuzz. Это дополнительный шейпер, растеризатор без него не сломается. Программы и библиотеки, которым нужны всякие эффекты на шрифтах обычно умеют использовать harfbuzz напрямую.

PS. Вручную что ли всё собиралось, прямо на целевой системе? В песочнице такую циклическую зависимость не получить.

d_a ★★★★★
()
Последнее исправление: d_a (всего исправлений: 1)
Ответ на: комментарий от kostik87

Файлы в системе присутствуют, как минимум потому что я на них ldd запускал. Собственно, из лога prelink следует, что он сфейлился из-за кольцевых зависимостей, а не из-за отсутствующих файлов.

intelfx ★★★★★
() автор топика
Ответ на: комментарий от liaonau

Будет тот же эффект — прекомпоновать бинарник можно только тогда, когда все его зависимости прекомпонованы.

intelfx ★★★★★
() автор топика
Ответ на: комментарий от d_a

А каковы исключения? Другими словами, что всё-таки сломается?

Это арчовские пакеты. Там так собрано.

intelfx ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.