С помощью gear запускаю rpm или hsh с параметрами --define="<some_name> <some_value>" в первом случае, и --build-args '--define="geet_build_counter 2"' во втором. Этот макрос используется в формировании версии пакета. Но gear создает архив, в котором этот define не учтен. Тогда как макросы внутри спека учитываются.
--define=args никогда не пробовал, --define args работает.
У меня не работает. Пример. Кусок спек файла: %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 не использовался, а при сборке он уже используется.
(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.
Идея как раз была в том, чтобы делать автоматические билды из gear... Может быть можно в .gear/rules пробрасывать другие макросы, кроме NVR ?
(In reply to comment #4) > можно в .gear/rules пробрасывать другие макросы, кроме NVR ? Не получится. gear не пользуется rpmquery для раскрытия макросов. NVR он получает с помощью sed. Это принципиальная вещь. gear не заточен на тип спека ... это может быть и текстовый файл, содержащий только три эти поля.
(In reply to comment #4) > Идея как раз была в том, чтобы делать автоматические билды из gear... Может быть > можно в .gear/rules пробрасывать другие макросы, кроме NVR ? Этот вопрос перекликается с FR #12387 (с первоначальным вопросом, а не тем, что там написали позднее). У меня нет идей, как это можно было бы реализовать в рамках базового требования к gear не запускать rpmbuild с пользовательскими входными данными.