Bug 18023 - gear не использует параметры переданные rpm или hasher
Summary: gear не использует параметры переданные rpm или hasher
Status: CLOSED NOTABUG
Alias: None
Product: Sisyphus
Classification: Development
Component: gear (show other bugs)
Version: unstable
Hardware: all Linux
: P2 normal
Assignee: Dmitry V. Levin
QA Contact: qa-sisyphus
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2008-11-27 17:12 MSK by rlz
Modified: 2008-11-27 19:21 MSK (History)
5 users (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description rlz 2008-11-27 17:12:19 MSK
С помощью gear запускаю rpm или hsh с параметрами

--define="<some_name> <some_value>"

в первом случае, и 

--build-args '--define="geet_build_counter 2"'

во втором.

Этот макрос используется в формировании версии пакета. Но gear создает архив, в котором этот define не учтен. Тогда как макросы внутри спека учитываются.
Comment 1 Dmitry V. Levin 2008-11-27 17:25:00 MSK
--define=args никогда не пробовал, --define args работает.
Comment 2 rlz 2008-11-27 18:32:39 MSK
У меня не работает. Пример.

Кусок спек файла:

%ifdef geet_build_counter
%define build_version .%geet_build_counter
%else
%define build_version .r1
%endif

Version: 0.8%build_version
Release: alt1

Запуск geet и его вывод:

$ gear --rpmbuild -v -- rpmbuild -bb --define "geet_build_counter 2"
mkdir: создан каталог `/home/rlz/tmp/gear.P7YUDaH8/out'
gear: Extracted archive: Tartarus-clients-core-0.8.r1.tar
gear: Wrote archive: Tartarus-clients-core-0.8.r1.tar
gear: Extracted specfile: Tartarus-clients-core.spec
gear: Executing: gear-command-rpmbuild rpmbuild -bb --define geet_build_counter 2
gear-command-rpmbuild: Executing: rpmbuild -bb --define geet_build_counter 2 --define _specdir /home/rlz/tmp/gear.P7YUDaH8/out --define _sourcedir /home/rlz/tmp/gear.P7YUDaH8/out /home/rlz/tmp/gear.P7YUDaH8/out/Tartarus-clients-core.spec
ошибка: Файл /home/rlz/tmp/gear.P7YUDaH8/out/Tartarus-clients-core-0.8.2.tar: Нет такого файла или каталога

Видно, что при создании архива при определении версии макрос geet_build_counter не использовался, а при сборке он уже используется.
Comment 3 Dmitry V. Levin 2008-11-27 18:47:43 MSK
(In reply to comment #2)
> У меня не работает. Пример.
> 
> Кусок спек файла:
> 
> %ifdef geet_build_counter
> %define build_version .%geet_build_counter
> %else
> %define build_version .r1
> %endif
> 
> Version: 0.8%build_version
> Release: alt1
> 
> Запуск geet и его вывод:
> 
> $ gear --rpmbuild -v -- rpmbuild -bb --define "geet_build_counter 2"
> mkdir: создан каталог `/home/rlz/tmp/gear.P7YUDaH8/out'
> gear: Extracted archive: Tartarus-clients-core-0.8.r1.tar
> gear: Wrote archive: Tartarus-clients-core-0.8.r1.tar
> gear: Extracted specfile: Tartarus-clients-core.spec
> gear: Executing: gear-command-rpmbuild rpmbuild -bb --define geet_build_counter 2
> gear-command-rpmbuild: Executing: rpmbuild -bb --define geet_build_counter 2 --define _specdir /home/rlz/tmp/gear.P7YUDaH8/out --define
> _sourcedir /home/rlz/tmp/gear.P7YUDaH8/out /home/rlz/tmp/gear.P7YUDaH8/out/Tartarus-clients-core.spec
> ошибка: Файл /home/rlz/tmp/gear.P7YUDaH8/out/Tartarus-clients-core-0.8.2.tar: Нет такого файла или
> каталога
> 
> Видно, что при создании архива при определении версии макрос geet_build_counter не
> использовался, а при сборке он уже используется.

Теперь понятно, о чём вы говорите.

Конечно, gear не использует параметры, передаваемые rpmbuild, hasher и другим программам, которые он запускает.  Эти параметры могут быть любыми, он просто ничего о них не знает, их обработка -- это не его дело.

У gear возможности интерпретировать spec-файл для вычисления name/version/release ограничены по определению: он не может для этих целей запускать rpmbuild.
Comment 4 Evgeny Sinelnikov 2008-11-27 18:58:00 MSK
Идея как раз была в том, чтобы делать автоматические билды из gear... Может быть можно в .gear/rules пробрасывать другие макросы, кроме NVR ?
Comment 5 Alexey Gladkov 2008-11-27 19:03:33 MSK
(In reply to comment #4)
> можно в .gear/rules пробрасывать другие макросы, кроме NVR ?

Не получится. gear не пользуется rpmquery для раскрытия макросов. NVR он получает с помощью sed. Это принципиальная вещь. gear не заточен на тип спека ... это может быть и текстовый файл, содержащий только три эти поля.
Comment 6 Dmitry V. Levin 2008-11-27 19:21:20 MSK
(In reply to comment #4)
> Идея как раз была в том, чтобы делать автоматические билды из gear... Может быть
> можно в .gear/rules пробрасывать другие макросы, кроме NVR ?

Этот вопрос перекликается с FR #12387 (с первоначальным вопросом, а не тем, что там написали позднее).  У меня нет идей, как это можно было бы реализовать в рамках базового требования к gear не запускать rpmbuild с пользовательскими входными данными.