On Sun, Oct 11, 2009 at 05:10:17PM +0400, Alexey I. Froloff wrote: > 58 %define oname vim > 59 %define major 7 > 60 %define minor 2 > 61 #define pre > 62 %define patchlevel 262 > 67 Version: %major.%minor%{?pre:.000.%pre}%{?patchlevel:.%patchlevel} > > Не самый удачный способ кодирования версии. Во первых такую > конструкцию не понимает gear, во вторых она не работает как надо. Да, %{?...} в gear не работает (хотя простая подстановка строк сработает правильно, за исключением случая, когда используемые там макросы определяются внутри какого-нибудь %if... - в этом случае gear не сможет выбрать из нескольких определений макроса нужное и молча подставит не то, что нужно). Ещё один способ борьбы с gear - не собирать Version: из компонентов, а писать в окончательном виде, после чего разбирать на нужные компоненты, используя что-то типа %( echo %version | sed ... ). > 401 PreReq: alternatives >= 0.2.0-alt0.7 > 402 Requires: gtk+ >= 1.2.3 > > Алексей Турбин совершенно зря потратил кучу времени пркручивая > версионирование символов к библиотекам. К ископаемому gtk1 они ещё не прикручивались. Впрочем, сборка пакета vim-X11-gtk всё равно отключена с 2006 года; возможно, его стоит похоронить окончательно. Ну а alternatives - это совсем отдельный вопрос; если древние версии этого пакета ещё рано объявлять несуществующими, возможно, получится хотя бы проставлять эту зависимость автоматически. > 719 cat <%buildroot%_rpmmacrosdir/vim > 720 # Global runtime > 721 %%vim_dir %_datadir/vim > > Когда макросы делаются через HEREDOC надо не забывать > экранировать % там где нужно. И $ (хотя против этого есть средства - см. далее; а вот от %% уже никуда не деться). > 726 %%mkvimspell(L:a) %%{!-L:%%{!-a:%%{error:mkvimspell: neither language nor -a is specified} }}%%{-L:env LANG="%%{-L*}"} %_bindir/vim-console -E -X -N -n -i NONE -u NONE -U NONE -c 'mkspell! %%{-a:-ascii} %%*' -c q > > Макрос использует vim-console, однако rpm-build-vim от него не > зависит. С другой стороны, не всем пользователям rpm-build-vim нужен этот макрос... > 768 cat <%buildroot%_bindir/update-vimhelp > 774 [ -x "\$VIM" ] || exit 1 > > Когда шелл-скрипты делаются через HEREDOC надо не забывать > экранировать $ там где нужно. Лучше подобные вещи делать > отдельным Source. Можно ещё cat <<'EOF' - тогда от sh ничего экранировать не нужно. Вариант с отдельным Source не всегда удобен - иногда нужно раскрыть какие-нибудь %macros в содержимом файла, тогда может быть проще сделать heredoc, чем плодить sed.