[devel] [spec-lynch] vim.spec

Alexey I. Froloff raorn at altlinux.org
Sun Oct 11 13:10:17 UTC 2009


Присоединюсь к Дамиру в плане линчевания и начну с себя.  Это
спек с многолетней историей, многие вещи уже успели устареть.

   4 # {{{ Perl/Python/Ruby/Tcl/MzScheme support

Folding это хорошая, годная фича.  Так гораздо удобнее читать
спек.

  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, во вторых она не работает как надо.

Немного расскажу про версионирование vim.  Есть Версия вида
MAJOR.MINOR.  Для этой версии периодически выходят Патчи.  Сам
vim показывает это как

VIM - Vi IMproved 7.2 (2008 Aug 9, compiled Sep 23 2009 09:55:52)
Included patches: 1-262

При смене Версии сначала выкладывается серия пререлизов, у
которых к Версии добавляются буквы (a, b, ..., z, aa, ab, ...)
обозначающие пререлиз.  Для этих пререлизов тоже могут выходить
патчи.  Условия для обновления пакета следующие:

 - версия с патчами должна быть больше версии первого релиза;
 - версия пререлиза должна быть больше версии предыдущего релиза
   с любыми патчами;
 - версия пререлиза должна быть больше версии предыдущего
   пререлиза с любыми патчами;
 - версия релиза должна быть больше версии любого пререлиза этой
   ветки;

С такой версией пакета эти правила не выполняются чуть более чем
наполовину и огребается куча проблем с gear.

  90 # Automatically added by buildreq on Mon Apr 28 2003 and filtered by raorn

Комментарий немного не соответствует действительности.  Все
сборочные зависимости были добавлены полуавтоматически и
отсортированы вручную.  Давно не обновлялись.

 101 # man commandline check
 102 BuildPreReq: man
 103 # ctags commandline check
 104 BuildPreReq: ctags

Не самый оптимальный способ сказать configure где находится та
или иная программа.  Лучше экспортировать переменные ac_cv_foo.

 167 %package common
 171 PreReq: coreutils

Зачем нужна эта зависимость?  Никто не помнит, но есть нехорошее
подозрение, что из-за скриптов и триггеров.  Выкинуть к чёртовой
матери, потому как уже давно есть поиск зависимостей в
пост-установочных скриптах.

 172 PreReq: %name
 173 PreReq: %_bindir/vim

Опять засорение базы rpm.  Подобные PreReq были актуальны когда
обновление helptags выполнялось из postinstall скрипта.  С тех
пор как эта процедура перенесена в файлтриггер, необходимость в
подобных зависимостях отпала.

 175 Requires: xxd = %serial:%version-%release

Утилита xxd вынесена из vim-common в отдельный пакет.  Эта
зависимость нужна чтобы не потерять xxd при обновлении пакета
vim-common.  Через несколько лет её можно будет удалить.

 212 %description common
 213 VIM (VIsual editor iMproved) is an updated and improved version of the vi
 214 editor.  Vi was the first real screen-based editor for UNIX, and is still
 215 very popular.  VIM improves on vi by adding new features: multiple windows,
 216 multi-level undo, block highlighting and more.  The vim-common package
 217 contains files which every VIM binary will need in order to run.
 218
 219 If you are installing any version of the VIM editor, you'll also need to
 220 the vim-common package installed.

Большое количество копипасты, да ещё с комментариями в стиле 90-х
"поставьте этот пакет если вы хотите foo".  Только занимает
лишнее место в базе rpm и индексах.

 305 %description console
 ...
 313 Install the vim-console package if you'd like to use a full-featured
 314 VIM, but you don't use X11 or don't want to use GUI version of VIM nor want
 315 to use perl/python/ruby/tcl interface.  You'll also need to install the
 316 vim-common package.

RPM сам знает, что надо поставить vim-common.  Это не шлякварь.

 357 %description X11-athena
 ...
 367 Install the vim-X11 package if you'd like to use a full-featured VIM with both
 368 terminal and X11 Xaw interface.  You'll also need to install the vim-X11
 369 package.

Про копипасту я уже сказал, а тут ещё и vim-X11 вместо
vim-X11-athena.  "И всё у них так" (ц)

 397 %package X11-gtk
 400 PreReq: coreutils

См. выше про скрипты и триггеры.

 401 PreReq: alternatives >= 0.2.0-alt0.7
 402 Requires: gtk+ >= 1.2.3

Алексей Турбин совершенно зря потратил кучу времени пркручивая
версионирование символов к библиотекам.

 555 %add_optflags -DSYS_VIMRC_FILE=\\\"%_sysconfdir/vim/vimrc\\\"
 556 %add_optflags -DSYS_GVIMRC_FILE=\\\"%_sysconfdir/vim/gvimrc\\\"

В этом месте надо быть очень внимательным с кавычками и
экранированием.  If unsure, make patch.

 653 %make_install install DESTDIR=%buildroot -C src

Уже можно заменить на %makeinstall_std -C src .

 661 %strip_executable -p -g %buildroot/bin/vi
 667         %strip_executable -p -g "%buildroot%_bindir/vim-$ui"

С этим не справляется brp-strip?

 690 ln -s -f ../../vim/doc %buildroot%_customdocdir/doc

Лучше использовать relative(1).

 699 pushd %buildroot%_datadir/vim/tools
 700     # i need to make a choice :(.
 701     subst 's|#!/usr/bin/nawk|#!/usr/bin/gawk|' mve.awk
 702     subst 's,#!/bin/csh.*.*,#!/bin/sh,' vim132
 703     chmod a-x vimspell* ref*
 704 popd

Это лучше делать патчем.

 719 cat <<EOF >%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 от него не
зависит.

 768 cat <<EOF >%buildroot%_bindir/update-vimhelp
 774 [ -x "\$VIM" ] || exit 1

Когда шелл-скрипты делаются через HEREDOC надо не забывать
экранировать $ там где нужно.  Лучше подобные вещи делать
отдельным Source.

 886 %triggerpostun minimal -- vim-minimal < 6.0.118

Версия < 6.0.118 была собрана Thu Jan 03 2002.  Уже наверно никто
не сможет обновить подобную систему до current sisyphus.

1076 - Official patches (228)
1077  + (after 7.2.215) BufEnter "cd" autocommand causes problems
...
1083  + cscope is limited to 8 connections

Копировать апстримный changelog в changelog пакета - очень,
очень, очень плохая идея.  Для этого есть docdir.


Автору спека глубоко пофиг на метаданные своих пакетов и он не
любит директиву Source.  Попытка сделать универсальный спек себя
не оправдывает, а только создаёт проблемы, в первую очередь самом
автору.  Надо придерживаться принципа K.I.S.S.

-- 
Regards,
Sir Raorn.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 198 bytes
Desc: Digital signature
URL: <http://lists.altlinux.org/pipermail/devel/attachments/20091011/9603a99f/attachment.bin>


More information about the Devel mailing list