Unknown macros should generate error when parsing spec.
Created attachment 1151 [details] rpm-4_0-4.0.4-alt-fail-on-unknown-macros.patch patch against rpm-4.0.4-alt48
Вероятно, этот патч неполный, там, кажется, есть ещё один случай, но суть не в этом. Я так понял, никто не возражает и последствий не боится?
Я думаю ничего страшного не случится ... отваляться пакеты которые сейчас работают неправильно... если они вообще работают.
Поступило предположение, что сломается sandman в некоторых местах из-за отсутствия /etc/rpm/macros.d/*...
(In reply to comment #2) > Вероятно, этот патч неполный, там, кажется, есть ещё один случай, но суть не в > этом. Там ещё чуть выше есть, сразу после case(){}... Обновить патч?
(In reply to comment #4) > Поступило предположение, что сломается sandman в некоторых местах из-за > отсутствия /etc/rpm/macros.d/*... sandman желает знать Name-Version-Release, все Source/Patch и BuildRequires. Если какие-то макросы влияли на содержимое этих тегов раньше, значит они все раскрывались. Всё остальное можно скопировать после минимально необходимой информации, думаю таких случаев будет немного и решаться это будет мантейнерами этих пакетов... Мне кажется что конечный результат в какой-то степени оправдывает это количество геммороя.
sandman рассчитывает на то, что rpm -bE выдаст значения некоторых тэгов (см. предыдущий комментарий), даже если в процессе препроцессинга есть ошибки. Иными словами, вывод команды не будет прекращён на первой нераскрывшейся конструкции. Если предлагаемый патч изменяет это поведение, то для sandman это закончится плохо.
Нет, предлагаемый патч работать не будет совершенно: если сделать нечто подобное, то все тэги пойдут лесом.
Чтобы было понятно: error: Macro %description not found
(In reply to comment #9) > Чтобы было понятно: > error: Macro %description not found Ох, как всё запущено... Я сходу придумал три варианта обхода этой проблемы и все три кривые до безобразия...
> Ох, как всё запущено... Я сходу придумал три варианта обхода этой проблемы и > все три кривые до безобразия... 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...
Как насчёт --define '_allow_undefined_macros 1', с помощью которого можно будет обрабатывать неопределённые макросы?
Implemented in 4.0.4-alt49.