Автор Тема: Непонятный макрос %lang  (Прочитано 1895 раз)

Оффлайн gBopHuk

  • alt linux team
  • ***
  • Сообщений: 584
  • Simply LInux
Непонятный макрос %lang
« : 01.12.2011 19:53:36 »
Пытаюсь собрать пакет из src.rpm, у него хитрый spec файл - подходит как для suse, так и для redhat. Ещё в теле этого spec файла вручную создаётся name.lang?, в следствии чего в секцию %files добавлена такая фишка "%lang(en_US) %_datadir/umplayer/translations/umplayer_en_US.qm"

Вот как раз на этот макрос %lang  и ругается hasher при сборке:
warning: Macro %lang not found
warning: Macro %lang not found
error: line 120: Second %files list
hsh-rebuild: pkg.tar: failed to fetch build dependencies.

Spec чистил сначала rpmcs, затем немного вручную.

Как быть с этим макросом?

Ещё пытался найти инструкцию по созданию этих самых списоков %name.lang - нашёл только поверхностное описание у suse, о том что там формируются списки файлов с макросами %lang и %doc, но в каком порядке и последовательности не написано.

Оффлайн asy

  • alt linux team
  • ***
  • Сообщений: 8 368
Re: Непонятный макрос %lang
« Ответ #1 : 02.12.2011 00:57:13 »
Цитировать
Ещё пытался найти инструкцию по созданию этих самых списоков %name.lang
Как-то так. Это в %install:

%find_lang %name

И, дальше

%files locales -f %name.lang

Или  %files -f %name.lang, если пакет один на выходе.

Оффлайн gBopHuk

  • alt linux team
  • ***
  • Сообщений: 584
  • Simply LInux
Re: Непонятный макрос %lang
« Ответ #2 : 02.12.2011 01:26:36 »
То есть %find_lang понимает файлы с расширением .qm? Насколько я понял в этом и заключается смысл того что .lang создают в spec'е?

Оффлайн Skull

  • Глобальный модератор
  • *****
  • Сообщений: 20 159
    • Домашняя страница
Re: Непонятный макрос %lang
« Ответ #3 : 02.12.2011 13:00:22 »
То есть %find_lang понимает файлы с расширением .qm? Насколько я понял в этом и заключается смысл того что .lang создают в spec'е?
Нет, это программа. И .qm она не поддерживает. Во всех своих Qt-шных программах я их сам раскладываю, потому что стандартов их расположения и именования (как в KDE или GNOME) нет.
[cas@cas ~]$ rpm --eval '%find_lang'
/usr/lib/rpm/find-lang

Посмотрите код программы.
Андрей Черепанов (cas@)

Оффлайн gBopHuk

  • alt linux team
  • ***
  • Сообщений: 584
  • Simply LInux
Re: Непонятный макрос %lang
« Ответ #4 : 02.12.2011 16:50:59 »
Подскажите хотя бы ссылку, как делать спек с .qm файлами. Я чего-то не догоняю, каким образом из раскидывать?


Оффлайн gBopHuk

  • alt linux team
  • ***
  • Сообщений: 584
  • Simply LInux
Re: Непонятный макрос %lang
« Ответ #6 : 21.12.2011 15:51:21 »
Ответ нашёл в спеке пакета qucs из Сизифа

for l in $(find %buildroot%_datadir/%name/lang -name \*.qm); do
    echo -n $l | sed 's,.*_\(.*\)\.qm,%lang\(\1\) ,' >> %name.lang
    echo $l | sed "s,%buildroot,," >> %name.lang
done


Было бы прикольно замутить поиск по спекам Сизифа, там по идее много готовых решений.

Всем спасибо!!!
« Последнее редактирование: 26.12.2011 15:18:17 от Skull »