vim.spec 8.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269
  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 023
  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: 20081002
  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. Patch10: ftp://ftp.vim.org/pub/vim/patches/%{V_vl}/%{V_vl}.010
  62. Patch11: ftp://ftp.vim.org/pub/vim/patches/%{V_vl}/%{V_vl}.011
  63. Patch12: ftp://ftp.vim.org/pub/vim/patches/%{V_vl}/%{V_vl}.012
  64. Patch13: ftp://ftp.vim.org/pub/vim/patches/%{V_vl}/%{V_vl}.013
  65. Patch14: ftp://ftp.vim.org/pub/vim/patches/%{V_vl}/%{V_vl}.014
  66. Patch15: ftp://ftp.vim.org/pub/vim/patches/%{V_vl}/%{V_vl}.015
  67. Patch16: ftp://ftp.vim.org/pub/vim/patches/%{V_vl}/%{V_vl}.016
  68. Patch17: ftp://ftp.vim.org/pub/vim/patches/%{V_vl}/%{V_vl}.017
  69. Patch18: ftp://ftp.vim.org/pub/vim/patches/%{V_vl}/%{V_vl}.018
  70. Patch19: ftp://ftp.vim.org/pub/vim/patches/%{V_vl}/%{V_vl}.019
  71. Patch20: ftp://ftp.vim.org/pub/vim/patches/%{V_vl}/%{V_vl}.020
  72. Patch21: ftp://ftp.vim.org/pub/vim/patches/%{V_vl}/%{V_vl}.021
  73. Patch22: ftp://ftp.vim.org/pub/vim/patches/%{V_vl}/%{V_vl}.022
  74. Patch23: ftp://ftp.vim.org/pub/vim/patches/%{V_vl}/%{V_vl}.023
  75. # build information
  76. Prefix: %{l_prefix}
  77. BuildRoot: %{l_buildroot}
  78. BuildPreReq: OpenPKG, openpkg >= 20060823, ncurses
  79. PreReq: OpenPKG, openpkg >= 20060823, ncurses
  80. %if "%{with_x11}" == "yes"
  81. BuildPreReq: X11, gtk
  82. PreReq: X11, gtk
  83. %endif
  84. %if "%{with_perl}" == "yes"
  85. BuildPreReq: perl
  86. PreReq: perl
  87. %endif
  88. %if "%{with_python}" == "yes"
  89. BuildPreReq: python
  90. PreReq: python
  91. %endif
  92. %if "%{with_tcl}" == "yes"
  93. BuildPreReq: tcl
  94. PreReq: tcl
  95. %endif
  96. %if "%{with_ruby}" == "yes"
  97. BuildPreReq: ruby
  98. PreReq: ruby
  99. %endif
  100. AutoReq: no
  101. AutoReqProv: no
  102. %description
  103. Vim (Vi Improved) is a text editor that is upwards compatible
  104. with the classical Unix Vi. It can be used to edit any ASCII
  105. text. It is especially useful for editing programs. Vim offers
  106. a lot of enhancements not available in the traditional Vi. For
  107. example, Vim has multi level undo, multi windows and buffers, syntax
  108. highlighting, command line editing, filename completion, on-line
  109. help, and visual selection.
  110. %track
  111. prog vim = {
  112. version = %{V_vl}
  113. url = ftp://ftp.vim.org/pub/vim/unix/
  114. regex = vim-(\d+.\d+)\.tar\.(gz|bz2)
  115. }
  116. prog vim:patchlevel = {
  117. version = %{V_vl}.%{V_pl}
  118. url = ftp://ftp.vim.org/pub/vim/patches/%{V_vl}/
  119. regex = (%{V_vl}\.\d+)
  120. }
  121. %prep
  122. # unpack base distribution parts
  123. %setup -q -c
  124. %patch -p0
  125. # apply remaining single patches
  126. i=1
  127. while [ $i -le %{V_pl} ]; do
  128. cat $RPM_SOURCE_DIR/%{V_vl}.`echo $i | awk '{ printf("%03d", $0); }'` |\
  129. %{l_patch} -p0 -E -t -s >/dev/null 2>&1 || true
  130. i=`expr $i + 1`
  131. done
  132. # adjust introduction text for OpenPKG branding
  133. %{l_shtool} subst \
  134. -e 's;Modified by;Packaged by;' \
  135. vim%{V_vs}/src/version.c
  136. # adjust paths to global configuraton files
  137. %{l_shtool} subst \
  138. -e 's;^/\* \(#define SYS_VIMRC_FILE\).*$;\1 "%{l_prefix}/etc/vim/vimrc";' \
  139. -e 's;^/\* \(#define SYS_GVIMRC_FILE\).*$;\1 "%{l_prefix}/etc/vim/gvimrc";' \
  140. vim%{V_vs}/src/feature.h
  141. %if "%{with_python}" == "yes"
  142. # fix Python includes
  143. %{l_shtool} subst \
  144. -e 's;PYTHON_CFLAGS=.*$;PYTHON_CFLAGS="`python-config --includes`";' \
  145. vim%{V_vs}/src/auto/configure
  146. %endif
  147. %build
  148. # configure package
  149. cd vim%{V_vs}/src
  150. CC="%{l_cc}" \
  151. CFLAGS="%{l_cflags -O}" \
  152. CPPFLAGS="%{l_cppflags}" \
  153. LDFLAGS="%{l_ldflags}" \
  154. ./configure \
  155. --prefix=%{l_prefix} \
  156. --mandir=%{l_prefix}/man \
  157. --with-global-runtime=%{l_prefix}/etc/vim \
  158. --with-modified-by='%{l_openpkg_release}' \
  159. %if "%{with_x11}" == "yes"
  160. --with-x \
  161. --x-includes=`%{l_rc} --query x11_incdir` \
  162. --x-libraries=`%{l_rc} --query x11_libdir` \
  163. --enable-gui=gtk \
  164. --with-gtk-prefix=%{l_prefix} \
  165. --disable-gtktest \
  166. --without-gnome \
  167. %else
  168. --without-x \
  169. --disable-gui \
  170. %endif
  171. %if "%{with_features}" == "huge"
  172. --with-features=huge \
  173. %else
  174. %if "%{with_features}" == "big"
  175. --with-features=big \
  176. %else
  177. %if "%{with_features}" == "small"
  178. --with-features=small \
  179. %else
  180. --with-features=normal \
  181. %endif
  182. %endif
  183. %endif
  184. %if "%{with_multibyte}" == "yes"
  185. --enable-multibyte \
  186. %endif
  187. %if "%{with_perl}" == "yes"
  188. --enable-perlinterp \
  189. %endif
  190. %if "%{with_python}" == "yes"
  191. --enable-pythoninterp \
  192. --with-python-config-dir=%{l_prefix}/lib/python/config \
  193. %endif
  194. %if "%{with_tcl}" == "yes"
  195. --enable-tclinterp \
  196. %endif
  197. %if "%{with_ruby}" == "yes"
  198. --enable-rubyinterp \
  199. %endif
  200. --disable-nls
  201. %{l_shtool} subst \
  202. -e 's;^\(VIMRTDIR[^=]*=\).*;\1;' \
  203. Makefile
  204. # build package
  205. %{l_make} %{l_mflags -O}
  206. %install
  207. # perform package installation procedure
  208. rm -rf $RPM_BUILD_ROOT
  209. ( cd vim%{V_vs}/src
  210. %{l_make} %{l_mflags} install \
  211. prefix=$RPM_BUILD_ROOT%{l_prefix} \
  212. MANDIR=$RPM_BUILD_ROOT%{l_prefix}/man
  213. ) || exit $?
  214. # strip down installation hierarchy
  215. strip $RPM_BUILD_ROOT%{l_prefix}/bin/vim >/dev/null 2>&1 || true
  216. rm -f $RPM_BUILD_ROOT%{l_prefix}/bin/xxd
  217. rm -f $RPM_BUILD_ROOT%{l_prefix}/man/man1/xxd.1
  218. rm -rf $RPM_BUILD_ROOT%{l_prefix}/share/vim/tools
  219. rm -rf $RPM_BUILD_ROOT%{l_prefix}/share/vim/macros
  220. # add links for program runtime variants
  221. for link in vi ex rview rvim view vimdiff; do
  222. rm -f $RPM_BUILD_ROOT%{l_prefix}/bin/$link
  223. ln $RPM_BUILD_ROOT%{l_prefix}/bin/vim \
  224. $RPM_BUILD_ROOT%{l_prefix}/bin/$link
  225. rm -f $RPM_BUILD_ROOT%{l_prefix}/man/man1/$link.1
  226. ln $RPM_BUILD_ROOT%{l_prefix}/man/man1/vim.1 \
  227. $RPM_BUILD_ROOT%{l_prefix}/man/man1/$link.1
  228. done
  229. # install run-command script
  230. %{l_shtool} mkdir -f -p -m 755 \
  231. $RPM_BUILD_ROOT%{l_prefix}/etc/rc.d
  232. %{l_shtool} install -c -m 755 %{l_value -s -a} \
  233. %{SOURCE rc.vim} $RPM_BUILD_ROOT%{l_prefix}/etc/rc.d/
  234. # install default configuration
  235. %{l_shtool} mkdir -f -p -m 755 \
  236. $RPM_BUILD_ROOT%{l_prefix}/etc/vim
  237. %{l_shtool} install -c -m 755 %{l_value -s -a} \
  238. %{SOURCE vimrc} $RPM_BUILD_ROOT%{l_prefix}/etc/vim/
  239. # determine installation files
  240. %{l_rpmtool} files -v -ofiles -r$RPM_BUILD_ROOT \
  241. %{l_files_std} \
  242. '%config %{l_prefix}/etc/vim/vimrc'
  243. %files -f files
  244. %clean
  245. rm -rf $RPM_BUILD_ROOT