vim.spec 7.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255
  1. ##
  2. ## vim.spec -- OpenPKG RPM Package Specification
  3. ## Copyright (c) 2000-2008 OpenPKG Foundation e.V. <http://openpkg.net/>
  4. ##
  5. ## Permission to use, copy, modify, and distribute this software for
  6. ## any purpose with or without fee is hereby granted, provided that
  7. ## the above copyright notice and this permission notice appear in all
  8. ## copies.
  9. ##
  10. ## THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
  11. ## WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
  12. ## MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
  13. ## IN NO EVENT SHALL THE AUTHORS AND COPYRIGHT HOLDERS AND THEIR
  14. ## CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
  15. ## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
  16. ## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
  17. ## USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
  18. ## ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
  19. ## OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
  20. ## OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  21. ## SUCH DAMAGE.
  22. ##
  23. # package versions
  24. %define V_vl 7.2
  25. %define V_vs 72
  26. %define V_pl 009
  27. # package information
  28. Name: vim
  29. Summary: The Vi (Improved) Text Editor
  30. URL: http://www.vim.org/
  31. Vendor: Bram Moolenaar et al.
  32. Packager: OpenPKG Foundation e.V.
  33. Distribution: OpenPKG Community
  34. Class: CORE
  35. Group: Editor
  36. License: Charityware
  37. Version: %{V_vl}.%{V_pl}
  38. Release: 20080902
  39. # package options
  40. %option with_x11 no
  41. %option with_features normal
  42. %option with_multibyte no
  43. %option with_perl no
  44. %option with_python no
  45. %option with_tcl no
  46. %option with_ruby no
  47. # list of sources
  48. Source0: ftp://ftp.vim.org/pub/vim/unix/vim-%{V_vl}.tar.bz2
  49. Source2: rc.vim
  50. Source3: vimrc
  51. Patch0: vim.patch
  52. Patch1: ftp://ftp.vim.org/pub/vim/patches/%{V_vl}/%{V_vl}.001
  53. Patch2: ftp://ftp.vim.org/pub/vim/patches/%{V_vl}/%{V_vl}.002
  54. Patch3: ftp://ftp.vim.org/pub/vim/patches/%{V_vl}/%{V_vl}.003
  55. Patch4: ftp://ftp.vim.org/pub/vim/patches/%{V_vl}/%{V_vl}.004
  56. Patch5: ftp://ftp.vim.org/pub/vim/patches/%{V_vl}/%{V_vl}.005
  57. Patch6: ftp://ftp.vim.org/pub/vim/patches/%{V_vl}/%{V_vl}.006
  58. Patch7: ftp://ftp.vim.org/pub/vim/patches/%{V_vl}/%{V_vl}.007
  59. Patch8: ftp://ftp.vim.org/pub/vim/patches/%{V_vl}/%{V_vl}.008
  60. Patch9: ftp://ftp.vim.org/pub/vim/patches/%{V_vl}/%{V_vl}.009
  61. # build information
  62. Prefix: %{l_prefix}
  63. BuildRoot: %{l_buildroot}
  64. BuildPreReq: OpenPKG, openpkg >= 20060823, ncurses
  65. PreReq: OpenPKG, openpkg >= 20060823, ncurses
  66. %if "%{with_x11}" == "yes"
  67. BuildPreReq: X11, gtk
  68. PreReq: X11, gtk
  69. %endif
  70. %if "%{with_perl}" == "yes"
  71. BuildPreReq: perl
  72. PreReq: perl
  73. %endif
  74. %if "%{with_python}" == "yes"
  75. BuildPreReq: python
  76. PreReq: python
  77. %endif
  78. %if "%{with_tcl}" == "yes"
  79. BuildPreReq: tcl
  80. PreReq: tcl
  81. %endif
  82. %if "%{with_ruby}" == "yes"
  83. BuildPreReq: ruby
  84. PreReq: ruby
  85. %endif
  86. AutoReq: no
  87. AutoReqProv: no
  88. %description
  89. Vim (Vi Improved) is a text editor that is upwards compatible
  90. with the classical Unix Vi. It can be used to edit any ASCII
  91. text. It is especially useful for editing programs. Vim offers
  92. a lot of enhancements not available in the traditional Vi. For
  93. example, Vim has multi level undo, multi windows and buffers, syntax
  94. highlighting, command line editing, filename completion, on-line
  95. help, and visual selection.
  96. %track
  97. prog vim = {
  98. version = %{V_vl}
  99. url = ftp://ftp.vim.org/pub/vim/unix/
  100. regex = vim-(\d+.\d+)\.tar\.(gz|bz2)
  101. }
  102. prog vim:patchlevel = {
  103. version = %{V_vl}.%{V_pl}
  104. url = ftp://ftp.vim.org/pub/vim/patches/%{V_vl}/
  105. regex = (%{V_vl}\.\d+)
  106. }
  107. %prep
  108. # unpack base distribution parts
  109. %setup -q -c
  110. %patch -p0
  111. # apply remaining single patches
  112. i=1
  113. while [ $i -le %{V_pl} ]; do
  114. cat $RPM_SOURCE_DIR/%{V_vl}.`echo $i | awk '{ printf("%03d", $0); }'` |\
  115. %{l_patch} -p0 -E -t -s >/dev/null 2>&1 || true
  116. i=`expr $i + 1`
  117. done
  118. # adjust introduction text for OpenPKG branding
  119. %{l_shtool} subst \
  120. -e 's;Modified by;Packaged by;' \
  121. vim%{V_vs}/src/version.c
  122. # adjust paths to global configuraton files
  123. %{l_shtool} subst \
  124. -e 's;^/\* \(#define SYS_VIMRC_FILE\).*$;\1 "%{l_prefix}/etc/vim/vimrc";' \
  125. -e 's;^/\* \(#define SYS_GVIMRC_FILE\).*$;\1 "%{l_prefix}/etc/vim/gvimrc";' \
  126. vim%{V_vs}/src/feature.h
  127. %if "%{with_python}" == "yes"
  128. # fix Python includes
  129. %{l_shtool} subst \
  130. -e 's;PYTHON_CFLAGS=.*$;PYTHON_CFLAGS="`python-config --includes`";' \
  131. vim%{V_vs}/src/auto/configure
  132. %endif
  133. %build
  134. # configure package
  135. cd vim%{V_vs}/src
  136. CC="%{l_cc}" \
  137. CFLAGS="%{l_cflags -O}" \
  138. CPPFLAGS="%{l_cppflags}" \
  139. LDFLAGS="%{l_ldflags}" \
  140. ./configure \
  141. --prefix=%{l_prefix} \
  142. --mandir=%{l_prefix}/man \
  143. --with-global-runtime=%{l_prefix}/etc/vim \
  144. --with-modified-by='%{l_openpkg_release}' \
  145. %if "%{with_x11}" == "yes"
  146. --with-x \
  147. --x-includes=`%{l_rc} --query x11_incdir` \
  148. --x-libraries=`%{l_rc} --query x11_libdir` \
  149. --enable-gui=gtk \
  150. --with-gtk-prefix=%{l_prefix} \
  151. --disable-gtktest \
  152. --without-gnome \
  153. %else
  154. --without-x \
  155. --disable-gui \
  156. %endif
  157. %if "%{with_features}" == "huge"
  158. --with-features=huge \
  159. %else
  160. %if "%{with_features}" == "big"
  161. --with-features=big \
  162. %else
  163. %if "%{with_features}" == "small"
  164. --with-features=small \
  165. %else
  166. --with-features=normal \
  167. %endif
  168. %endif
  169. %endif
  170. %if "%{with_multibyte}" == "yes"
  171. --enable-multibyte \
  172. %endif
  173. %if "%{with_perl}" == "yes"
  174. --enable-perlinterp \
  175. %endif
  176. %if "%{with_python}" == "yes"
  177. --enable-pythoninterp \
  178. --with-python-config-dir=%{l_prefix}/lib/python/config \
  179. %endif
  180. %if "%{with_tcl}" == "yes"
  181. --enable-tclinterp \
  182. %endif
  183. %if "%{with_ruby}" == "yes"
  184. --enable-rubyinterp \
  185. %endif
  186. --disable-nls
  187. %{l_shtool} subst \
  188. -e 's;^\(VIMRTDIR[^=]*=\).*;\1;' \
  189. Makefile
  190. # build package
  191. %{l_make} %{l_mflags -O}
  192. %install
  193. # perform package installation procedure
  194. rm -rf $RPM_BUILD_ROOT
  195. ( cd vim%{V_vs}/src
  196. %{l_make} %{l_mflags} install \
  197. prefix=$RPM_BUILD_ROOT%{l_prefix} \
  198. MANDIR=$RPM_BUILD_ROOT%{l_prefix}/man
  199. ) || exit $?
  200. # strip down installation hierarchy
  201. strip $RPM_BUILD_ROOT%{l_prefix}/bin/vim >/dev/null 2>&1 || true
  202. rm -f $RPM_BUILD_ROOT%{l_prefix}/bin/xxd
  203. rm -f $RPM_BUILD_ROOT%{l_prefix}/man/man1/xxd.1
  204. rm -rf $RPM_BUILD_ROOT%{l_prefix}/share/vim/tools
  205. rm -rf $RPM_BUILD_ROOT%{l_prefix}/share/vim/macros
  206. # add links for program runtime variants
  207. for link in vi ex rview rvim view vimdiff; do
  208. rm -f $RPM_BUILD_ROOT%{l_prefix}/bin/$link
  209. ln $RPM_BUILD_ROOT%{l_prefix}/bin/vim \
  210. $RPM_BUILD_ROOT%{l_prefix}/bin/$link
  211. rm -f $RPM_BUILD_ROOT%{l_prefix}/man/man1/$link.1
  212. ln $RPM_BUILD_ROOT%{l_prefix}/man/man1/vim.1 \
  213. $RPM_BUILD_ROOT%{l_prefix}/man/man1/$link.1
  214. done
  215. # install run-command script
  216. %{l_shtool} mkdir -f -p -m 755 \
  217. $RPM_BUILD_ROOT%{l_prefix}/etc/rc.d
  218. %{l_shtool} install -c -m 755 %{l_value -s -a} \
  219. %{SOURCE rc.vim} $RPM_BUILD_ROOT%{l_prefix}/etc/rc.d/
  220. # install default configuration
  221. %{l_shtool} mkdir -f -p -m 755 \
  222. $RPM_BUILD_ROOT%{l_prefix}/etc/vim
  223. %{l_shtool} install -c -m 755 %{l_value -s -a} \
  224. %{SOURCE vimrc} $RPM_BUILD_ROOT%{l_prefix}/etc/vim/
  225. # determine installation files
  226. %{l_rpmtool} files -v -ofiles -r$RPM_BUILD_ROOT \
  227. %{l_files_std} \
  228. '%config %{l_prefix}/etc/vim/vimrc'
  229. %files -f files
  230. %clean
  231. rm -rf $RPM_BUILD_ROOT