TypicalPackagingErrors/StrikeOutMacro: различия между версиями
(Import from freesource.info) |
Ilis (обсуждение | вклад) (→Ссылки) |
||
(не показаны 2 промежуточные версии 2 участников) | |||
Строка 1: | Строка 1: | ||
[[Category:Devel]] | [[Category:Devel]] | ||
== | == Макросы в комментариях == | ||
Бывает, что какая-либо часть спек-файла в процессе работы комментируется, дописывается что-то выше, что-то ниже. Если при этом не учитывать такую особенность препроцессора rpm, как нечувствительность к контексту при замене макросов -- могут выйти накладки. | Бывает, что какая-либо часть спек-файла в процессе работы комментируется, дописывается что-то выше, что-то ниже. Если при этом не учитывать такую особенность препроцессора rpm, как нечувствительность к контексту при замене макросов -- могут выйти накладки с теми макросами, результат обработки которых воздействует на среду, а не просто передаётся дальше в составе скрипта шеллу (например, <tt>%add_findreq_skiplist</tt>/<tt>%add_findprov_skiplist</tt>). | ||
Проще говоря, если надо закомментировать строчку с макросом -- '''не следует''' делать это так: | Проще говоря, если надо закомментировать строчку с макросом -- '''не следует''' делать это так: | ||
Строка 19: | Строка 18: | ||
=== Ссылки === | === Ссылки === | ||
* [http://lists.altlinux.org/pipermail/sisyphus/2006-March/079002.html Пример неожиданного поведения] | * [http://lists.altlinux.org/pipermail/sisyphus/2006-March/079002.html Пример неожиданного поведения] | ||
[[Категория:TypicalPackagingErrors|{{SUBPAGENAME}}]] |
Текущая версия от 18:49, 13 марта 2009
Макросы в комментариях
Бывает, что какая-либо часть спек-файла в процессе работы комментируется, дописывается что-то выше, что-то ниже. Если при этом не учитывать такую особенность препроцессора rpm, как нечувствительность к контексту при замене макросов -- могут выйти накладки с теми макросами, результат обработки которых воздействует на среду, а не просто передаётся дальше в составе скрипта шеллу (например, %add_findreq_skiplist/%add_findprov_skiplist).
Проще говоря, если надо закомментировать строчку с макросом -- не следует делать это так:
#%some_macro <--
а следует так: #%%some_macro <-- первый % экранирует второй
или так: #some_macro
То же самое относится к использованию ссылок, скажем, на %_datadir/%name или %update_menus в секции %changelog -- могут получиться самые что ни на есть очаровательные врезки строк по десять. Если на каталоги и %name порой так ссылаться удобнее (памятуя про то, что длина строки в итоге увеличится), то другие макросы лучше экранировать по привычке.