Bug 8089

Summary: Make rpmbuild fail on unknown macros
Product: Sisyphus Reporter: Sir Raorn <raorn>
Component: rpm-buildAssignee: placeholder <placeholder>
Status: CLOSED FIXED QA Contact: qa-sisyphus
Severity: enhancement    
Priority: P2 CC: arseny, glebfm, imz, ktirf, ldv, mike, placeholder, sbolshakov, vt
Version: unstable   
Hardware: all   
OS: Linux   
URL: http://lists.altlinux.ru/pipermail/devel/2005-October/025229.html
Attachments:
Description Flags
rpm-4_0-4.0.4-alt-fail-on-unknown-macros.patch none

Description Sir Raorn 2005-09-29 14:54:30 MSD
Unknown macros should generate error when parsing spec.
Comment 1 Sir Raorn 2005-09-29 14:55:28 MSD
Created attachment 1151 [details]
rpm-4_0-4.0.4-alt-fail-on-unknown-macros.patch

patch against rpm-4.0.4-alt48
Comment 2 Dmitry V. Levin 2005-09-29 17:22:49 MSD
Вероятно, этот патч неполный, там, кажется, есть ещё один случай, но суть не в
этом.

Я так понял, никто не возражает и последствий не боится?
Comment 3 Alexey Gladkov 2005-09-29 17:41:33 MSD
Я думаю ничего страшного не случится ... отваляться пакеты которые сейчас
работают неправильно... если они вообще работают.
Comment 4 Sir Raorn 2005-09-29 17:48:58 MSD
Поступило предположение, что сломается sandman в некоторых местах из-за
отсутствия /etc/rpm/macros.d/*...
Comment 5 Sir Raorn 2005-09-29 18:26:44 MSD
(In reply to comment #2)
> Вероятно, этот патч неполный, там, кажется, есть ещё один случай, но суть не в
> этом.

Там ещё чуть выше есть, сразу после case(){}...  Обновить патч?
Comment 6 Sir Raorn 2005-09-29 18:31:48 MSD
(In reply to comment #4)
> Поступило предположение, что сломается sandman в некоторых местах из-за
> отсутствия /etc/rpm/macros.d/*...

sandman желает знать Name-Version-Release, все Source/Patch и BuildRequires. 
Если какие-то макросы влияли на содержимое этих тегов раньше, значит они все
раскрывались.  Всё остальное можно скопировать после минимально необходимой
информации, думаю таких случаев будет немного и решаться это будет мантейнерами
этих пакетов...

Мне кажется что конечный результат в какой-то степени оправдывает это количество
геммороя.
Comment 7 Sergey Bolshakov 2005-09-29 18:54:45 MSD
sandman рассчитывает на то, что rpm -bE выдаст значения
некоторых тэгов (см. предыдущий комментарий), даже
если в процессе препроцессинга есть ошибки.
Иными словами, вывод команды не будет прекращён на первой
нераскрывшейся конструкции.
Если предлагаемый патч изменяет это поведение,
то для sandman это закончится плохо.

Comment 8 Dmitry V. Levin 2005-09-29 19:33:46 MSD
Нет, предлагаемый патч работать не будет совершенно: если сделать нечто
подобное, то все тэги пойдут лесом.
Comment 9 Dmitry V. Levin 2005-09-29 21:15:17 MSD
Чтобы было понятно:
error: Macro %description not found
Comment 10 Sir Raorn 2005-09-29 22:54:34 MSD
(In reply to comment #9)
> Чтобы было понятно:
> error: Macro %description not found

Ох, как всё запущено...  Я сходу придумал три варианта обхода этой проблемы и
все три кривые до безобразия...
Comment 11 Sir Raorn 2005-09-30 11:09:28 MSD
> Ох, как всё запущено...  Я сходу придумал три варианта обхода этой проблемы и
> все три кривые до безобразия...

1. subst 's/^%\(package\|description\|...\)/%%\1/' *.spec

2. где-то в macros:
%global package %%package
%global description %%description
...

3. как-то проверять имена секций в expandMacro(), например по
build/parseSpec.c:partList[]

Учитывая comment #7 нужен режим, где нераскрытые макросы не будут генерить
ошибку, тоже слабо представляю как такое реализовать...

P.S. Наверно пока RESOLVED/LATER...
Comment 12 Dmitry V. Levin 2005-10-06 23:19:15 MSD
Как насчёт --define '_allow_undefined_macros 1', с помощью которого можно будет
обрабатывать неопределённые макросы?
Comment 13 Dmitry V. Levin 2005-10-07 18:33:51 MSD
Implemented in 4.0.4-alt49.