Bug 46587

Summary: alterator: сломанные зависимости
Product: Sisyphus Reporter: Alexey Sheplyakov <asheplyakov>
Component: alteratorAssignee: manowar <manowar>
Status: ASSIGNED --- QA Contact: qa-sisyphus
Severity: normal    
Priority: P5 CC: asheplyakov, boyarsh, imz, iv, manowar, sem, sin
Version: unstable   
Hardware: all   
OS: Linux   
Attachments:
Description Flags
патч
none
Вычисление относительного пути вместо константы в коде none

Description Alexey Sheplyakov 2023-06-19 11:52:44 MSK
Собрал alterator для loongarch64. Пытаюсь установить - получаю ошибку:
The following packages have unmet dependencies:
  alterator: Depends: /usr/lib/alterator/interfaces/guile but it is not installable
E: Broken packages
hsh-install: Failed to calculate package file list.
hsh-install: Failed to generate package file list.

Возможно проблема вызвана тем, что в спеке используются макросы %_alterator_libdir, %_alterator_datadir и прочие, которые нигде не определены.
Comment 1 Alexey Sheplyakov 2023-06-19 12:40:24 MSK
(Ответ для Alexey Sheplyakov на комментарий #0)

> Возможно проблема вызвана тем, что в спеке используются макросы
> %_alterator_libdir, %_alterator_datadir и прочие, которые нигде не
> определены.

Нет, это отдельная проблема.
Comment 2 Alexey Sheplyakov 2023-06-19 12:41:16 MSK
Created attachment 13542 [details]
патч
Comment 3 manowar@altlinux.org 2023-06-27 17:42:23 MSK
Так исправлять в данном случае нельзя: в проекте используется макрос %makeinstall, который переопределяет все директории с префиксом %buildroot. Поэтому, видимо, и использовались относительные пути.
Comment 4 manowar@altlinux.org 2023-06-28 13:26:13 MSK
Created attachment 13627 [details]
Вычисление относительного пути вместо константы в коде

Посмотрите, пожалуйста, решает ли вашу проблему такой патч.
Comment 5 Alexey Sheplyakov 2023-06-28 13:37:29 MSK
(Ответ для manowar@altlinux.org на комментарий #4)
> Создано вложение 13627 [details] [подробности]
> Вычисление относительного пути вместо константы в коде
> 
> Посмотрите, пожалуйста, решает ли вашу проблему такой патч.

Нет, не решает. Потому что путает libdir и libexecdir (/usr/libexec)
Comment 6 Alexey Sheplyakov 2023-06-28 13:45:49 MSK
(Ответ для manowar@altlinux.org на комментарий #3)
> Так исправлять в данном случае нельзя: в проекте используется макрос
> %makeinstall, который переопределяет все директории с префиксом %buildroot.

Обратите внимание, что команда `ln -sr` создаёт ссылку с относительным путём.

> Поэтому, видимо, и использовались относительные пути.

Я тоже использую относительные пути, хотя при беглом взгляде это может быть и не совсем очевидно.
Comment 7 Alexey Sheplyakov 2023-06-28 13:46:25 MSK
(Ответ для Alexey Sheplyakov на комментарий #5)
> (Ответ для manowar@altlinux.org на комментарий #4)
> > Создано вложение 13627 [details] [подробности]
> > Вычисление относительного пути вместо константы в коде
> > 
> > Посмотрите, пожалуйста, решает ли вашу проблему такой патч.
> 
> Нет, не решает. Потому что путает libdir и libexecdir (/usr/libexec)

... в чём изначально и была проблема.
Comment 8 manowar@altlinux.org 2023-06-28 13:48:13 MSK
(Ответ для Alexey Sheplyakov на комментарий #6)
> (Ответ для manowar@altlinux.org на комментарий #3)
> > Так исправлять в данном случае нельзя: в проекте используется макрос
> > %makeinstall, который переопределяет все директории с префиксом %buildroot.
> 
> Обратите внимание, что команда `ln -sr` создаёт ссылку с относительным путём.
> 
> > Поэтому, видимо, и использовались относительные пути.
> 
> Я тоже использую относительные пути, хотя при беглом взгляде это может быть
> и не совсем очевидно.

Ой, точно.
Comment 9 manowar@altlinux.org 2023-06-28 14:17:04 MSK
(Ответ для Alexey Sheplyakov на комментарий #5)
> (Ответ для manowar@altlinux.org на комментарий #4)
> > Создано вложение 13627 [details] [подробности]
> > Вычисление относительного пути вместо константы в коде
> > 
> > Посмотрите, пожалуйста, решает ли вашу проблему такой патч.
> 
> Нет, не решает. Потому что путает libdir и libexecdir (/usr/libexec)

А откуда берётся /usr/libexec? Я вижу, что вы предлагаете относительный путь до $(libexecdir)/alterator/interfaces/guile. Я предлагал использовать $(ALTERATOR_LIBDIR)/interfaces/guile, но это то же самое, потому что ALTERATOR_LIBDIR=$(libexecdir)/alterator. В обоих выражениях фигурирует $(libexecdir), но он у нас при установке определяется как libexecdir=%buildroot/usr/lib, а не /usr/libexec. Я так понимаю, что именно исходя из этого в коде было задано константой ../lib/alterator.

Судя по тому, что у вас возникает "/usr/lib/alterator/interfaces/guile but it is not installable", файлы устанавливаются в другое место. В какое? Можете показать, пожалуйста, вывод rpm -qlp на собранный пакет?
Установка происходит в alterator/build/backend.mak, но там тоже libexecdir = /usr/lib даже по умолчанию (при вызове из %makeinstall должно прилететь то же самое).