vim.spec 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328
  1. ##
  2. ## vim.spec -- OpenPKG RPM Package Specification
  3. ## Copyright (c) 2000-2016 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 8.0
  25. %define V_vs 80
  26. %define V_pl 0065
  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: 20161106
  39. # package options
  40. %option with_features normal
  41. %option with_multibyte yes
  42. %option with_perl no
  43. %option with_python no
  44. %option with_tcl no
  45. %option with_ruby no
  46. %option with_shell 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: vim.patch.shell
  53. Patch101: ftp://ftp.vim.org/pub/vim/patches/%{V_vl}/%{V_vl}.0001
  54. Patch102: ftp://ftp.vim.org/pub/vim/patches/%{V_vl}/%{V_vl}.0002
  55. Patch103: ftp://ftp.vim.org/pub/vim/patches/%{V_vl}/%{V_vl}.0003
  56. Patch104: ftp://ftp.vim.org/pub/vim/patches/%{V_vl}/%{V_vl}.0004
  57. Patch105: ftp://ftp.vim.org/pub/vim/patches/%{V_vl}/%{V_vl}.0005
  58. Patch106: ftp://ftp.vim.org/pub/vim/patches/%{V_vl}/%{V_vl}.0006
  59. Patch107: ftp://ftp.vim.org/pub/vim/patches/%{V_vl}/%{V_vl}.0007
  60. Patch108: ftp://ftp.vim.org/pub/vim/patches/%{V_vl}/%{V_vl}.0008
  61. Patch109: ftp://ftp.vim.org/pub/vim/patches/%{V_vl}/%{V_vl}.0009
  62. Patch110: ftp://ftp.vim.org/pub/vim/patches/%{V_vl}/%{V_vl}.0010
  63. Patch111: ftp://ftp.vim.org/pub/vim/patches/%{V_vl}/%{V_vl}.0011
  64. Patch112: ftp://ftp.vim.org/pub/vim/patches/%{V_vl}/%{V_vl}.0012
  65. Patch113: ftp://ftp.vim.org/pub/vim/patches/%{V_vl}/%{V_vl}.0013
  66. Patch114: ftp://ftp.vim.org/pub/vim/patches/%{V_vl}/%{V_vl}.0014
  67. Patch115: ftp://ftp.vim.org/pub/vim/patches/%{V_vl}/%{V_vl}.0015
  68. Patch116: ftp://ftp.vim.org/pub/vim/patches/%{V_vl}/%{V_vl}.0016
  69. Patch117: ftp://ftp.vim.org/pub/vim/patches/%{V_vl}/%{V_vl}.0017
  70. Patch118: ftp://ftp.vim.org/pub/vim/patches/%{V_vl}/%{V_vl}.0018
  71. Patch119: ftp://ftp.vim.org/pub/vim/patches/%{V_vl}/%{V_vl}.0019
  72. Patch120: ftp://ftp.vim.org/pub/vim/patches/%{V_vl}/%{V_vl}.0020
  73. Patch121: ftp://ftp.vim.org/pub/vim/patches/%{V_vl}/%{V_vl}.0021
  74. Patch122: ftp://ftp.vim.org/pub/vim/patches/%{V_vl}/%{V_vl}.0022
  75. Patch123: ftp://ftp.vim.org/pub/vim/patches/%{V_vl}/%{V_vl}.0023
  76. Patch124: ftp://ftp.vim.org/pub/vim/patches/%{V_vl}/%{V_vl}.0024
  77. Patch125: ftp://ftp.vim.org/pub/vim/patches/%{V_vl}/%{V_vl}.0025
  78. Patch126: ftp://ftp.vim.org/pub/vim/patches/%{V_vl}/%{V_vl}.0026
  79. Patch127: ftp://ftp.vim.org/pub/vim/patches/%{V_vl}/%{V_vl}.0027
  80. Patch128: ftp://ftp.vim.org/pub/vim/patches/%{V_vl}/%{V_vl}.0028
  81. Patch129: ftp://ftp.vim.org/pub/vim/patches/%{V_vl}/%{V_vl}.0029
  82. Patch130: ftp://ftp.vim.org/pub/vim/patches/%{V_vl}/%{V_vl}.0030
  83. Patch131: ftp://ftp.vim.org/pub/vim/patches/%{V_vl}/%{V_vl}.0031
  84. Patch132: ftp://ftp.vim.org/pub/vim/patches/%{V_vl}/%{V_vl}.0032
  85. Patch133: ftp://ftp.vim.org/pub/vim/patches/%{V_vl}/%{V_vl}.0033
  86. Patch134: ftp://ftp.vim.org/pub/vim/patches/%{V_vl}/%{V_vl}.0034
  87. Patch135: ftp://ftp.vim.org/pub/vim/patches/%{V_vl}/%{V_vl}.0035
  88. Patch136: ftp://ftp.vim.org/pub/vim/patches/%{V_vl}/%{V_vl}.0036
  89. Patch137: ftp://ftp.vim.org/pub/vim/patches/%{V_vl}/%{V_vl}.0037
  90. Patch138: ftp://ftp.vim.org/pub/vim/patches/%{V_vl}/%{V_vl}.0038
  91. Patch139: ftp://ftp.vim.org/pub/vim/patches/%{V_vl}/%{V_vl}.0039
  92. Patch140: ftp://ftp.vim.org/pub/vim/patches/%{V_vl}/%{V_vl}.0040
  93. Patch141: ftp://ftp.vim.org/pub/vim/patches/%{V_vl}/%{V_vl}.0041
  94. Patch142: ftp://ftp.vim.org/pub/vim/patches/%{V_vl}/%{V_vl}.0042
  95. Patch143: ftp://ftp.vim.org/pub/vim/patches/%{V_vl}/%{V_vl}.0043
  96. Patch144: ftp://ftp.vim.org/pub/vim/patches/%{V_vl}/%{V_vl}.0044
  97. Patch145: ftp://ftp.vim.org/pub/vim/patches/%{V_vl}/%{V_vl}.0045
  98. Patch146: ftp://ftp.vim.org/pub/vim/patches/%{V_vl}/%{V_vl}.0046
  99. Patch147: ftp://ftp.vim.org/pub/vim/patches/%{V_vl}/%{V_vl}.0047
  100. Patch148: ftp://ftp.vim.org/pub/vim/patches/%{V_vl}/%{V_vl}.0048
  101. Patch149: ftp://ftp.vim.org/pub/vim/patches/%{V_vl}/%{V_vl}.0049
  102. Patch150: ftp://ftp.vim.org/pub/vim/patches/%{V_vl}/%{V_vl}.0050
  103. Patch151: ftp://ftp.vim.org/pub/vim/patches/%{V_vl}/%{V_vl}.0051
  104. Patch152: ftp://ftp.vim.org/pub/vim/patches/%{V_vl}/%{V_vl}.0052
  105. Patch153: ftp://ftp.vim.org/pub/vim/patches/%{V_vl}/%{V_vl}.0053
  106. Patch154: ftp://ftp.vim.org/pub/vim/patches/%{V_vl}/%{V_vl}.0054
  107. Patch155: ftp://ftp.vim.org/pub/vim/patches/%{V_vl}/%{V_vl}.0055
  108. Patch156: ftp://ftp.vim.org/pub/vim/patches/%{V_vl}/%{V_vl}.0056
  109. Patch157: ftp://ftp.vim.org/pub/vim/patches/%{V_vl}/%{V_vl}.0057
  110. Patch158: ftp://ftp.vim.org/pub/vim/patches/%{V_vl}/%{V_vl}.0058
  111. Patch159: ftp://ftp.vim.org/pub/vim/patches/%{V_vl}/%{V_vl}.0059
  112. Patch160: ftp://ftp.vim.org/pub/vim/patches/%{V_vl}/%{V_vl}.0060
  113. Patch161: ftp://ftp.vim.org/pub/vim/patches/%{V_vl}/%{V_vl}.0061
  114. Patch162: ftp://ftp.vim.org/pub/vim/patches/%{V_vl}/%{V_vl}.0062
  115. Patch163: ftp://ftp.vim.org/pub/vim/patches/%{V_vl}/%{V_vl}.0063
  116. Patch164: ftp://ftp.vim.org/pub/vim/patches/%{V_vl}/%{V_vl}.0064
  117. Patch165: ftp://ftp.vim.org/pub/vim/patches/%{V_vl}/%{V_vl}.0065
  118. # build information
  119. BuildPreReq: OpenPKG, openpkg >= 20160101, ncurses
  120. PreReq: OpenPKG, openpkg >= 20160101, ncurses
  121. %if "%{with_perl}" == "yes"
  122. BuildPreReq: perl
  123. PreReq: perl
  124. %endif
  125. %if "%{with_python}" == "yes"
  126. BuildPreReq: python
  127. PreReq: python
  128. %endif
  129. %if "%{with_tcl}" == "yes"
  130. BuildPreReq: tcl
  131. PreReq: tcl
  132. %endif
  133. %if "%{with_ruby}" == "yes"
  134. BuildPreReq: ruby
  135. PreReq: ruby
  136. %endif
  137. %if "%{with_shell}" == "yes"
  138. BuildPreReq: autoconf
  139. %endif
  140. %description
  141. Vim (Vi Improved) is a text editor that is upwards compatible
  142. with the classical Unix Vi. It can be used to edit any ASCII
  143. text. It is especially useful for editing programs. Vim offers
  144. a lot of enhancements not available in the traditional Vi. For
  145. example, Vim has multi level undo, multi windows and buffers, syntax
  146. highlighting, command line editing, filename completion, on-line
  147. help, and visual selection.
  148. %track
  149. prog vim = {
  150. version = %{V_vl}
  151. url = ftp://ftp.vim.org/pub/vim/unix/
  152. regex = vim-(\d+.\d+)\.tar\.(gz|bz2)
  153. }
  154. prog vim:patchlevel = {
  155. version = %{V_vl}.%{V_pl}
  156. url = ftp://ftp.vim.org/pub/vim/patches/%{V_vl}/
  157. regex = (%{V_vl}\.\d+)
  158. }
  159. %prep
  160. # unpack base distribution parts
  161. %setup -q -c
  162. %patch -p0
  163. %if "%{with_shell}" == "yes"
  164. %patch -p0 -d vim%{V_vs} -P 1
  165. %endif
  166. # apply bundle patchsets
  167. # for patchset in 0001-1000; do
  168. # %{l_gzip} -d -c $RPM_SOURCE_DIR/%{V_vl}.$patchset.gz |\
  169. # %{l_patch} -p0 -E -t -s >/dev/null 2>&1 || true
  170. # done
  171. # apply remaining single patches
  172. i=1
  173. while [ $i -le %{V_pl} ]; do
  174. cat $RPM_SOURCE_DIR/%{V_vl}.`echo $i | awk '{ printf("%04d", $0); }'` |\
  175. %{l_patch} -p0 -E -t -s >/dev/null 2>&1 || true
  176. i=`expr $i + 1`
  177. done
  178. # adjust introduction text for OpenPKG branding
  179. %{l_shtool} subst \
  180. -e 's;Modified by;Packaged by;' \
  181. vim%{V_vs}/src/version.c
  182. # adjust paths to global configuration files
  183. %{l_shtool} subst \
  184. -e 's;^/\* \(#define SYS_VIMRC_FILE\).*$;\1 "%{l_prefix}/etc/vim/vimrc";' \
  185. -e 's;^/\* \(#define SYS_GVIMRC_FILE\).*$;\1 "%{l_prefix}/etc/vim/gvimrc";' \
  186. vim%{V_vs}/src/feature.h
  187. %if "%{with_python}" == "yes"
  188. # fix Python includes
  189. %{l_shtool} subst \
  190. -e 's;PYTHON_CFLAGS=.*$;PYTHON_CFLAGS="`python-config --includes`";' \
  191. vim%{V_vs}/src/auto/configure
  192. %endif
  193. %build
  194. # configure package
  195. cd vim%{V_vs}/src
  196. %if "%{with_shell}" == "yes"
  197. %{l_make} %{l_mflags} autoconf
  198. %endif
  199. CC="%{l_cc}" \
  200. CFLAGS="%{l_cflags -O}" \
  201. CPPFLAGS="%{l_cppflags}" \
  202. LDFLAGS="%{l_ldflags}" \
  203. GREP="grep" \
  204. ./configure \
  205. --prefix=%{l_prefix} \
  206. --mandir=%{l_prefix}/man \
  207. --with-local-dir=%{l_prefix} \
  208. --with-global-runtime=%{l_prefix}/lib/vim \
  209. --with-modified-by='%{l_openpkg_release}' \
  210. --with-tlib=ncurses \
  211. --without-x \
  212. --disable-gui \
  213. %if "%{with_features}" == "huge"
  214. --with-features=huge \
  215. %else
  216. %if "%{with_features}" == "big"
  217. --with-features=big \
  218. %else
  219. %if "%{with_features}" == "small"
  220. --with-features=small \
  221. %else
  222. --with-features=normal \
  223. %endif
  224. %endif
  225. %endif
  226. %if "%{with_multibyte}" == "yes"
  227. --enable-multibyte \
  228. %endif
  229. %if "%{with_perl}" == "yes"
  230. --enable-perlinterp \
  231. %else
  232. --disable-perlinterp \
  233. %endif
  234. %if "%{with_python}" == "yes"
  235. --enable-pythoninterp \
  236. --with-python-config-dir=%{l_prefix}/lib/python/config \
  237. %else
  238. --disable-pythoninterp \
  239. %endif
  240. %if "%{with_tcl}" == "yes"
  241. --enable-tclinterp \
  242. %else
  243. --disable-tclinterp \
  244. %endif
  245. %if "%{with_ruby}" == "yes"
  246. --enable-rubyinterp \
  247. %else
  248. --disable-rubyinterp \
  249. %endif
  250. --disable-nls
  251. %{l_shtool} subst \
  252. -e 's;^\(VIMRTDIR[^=]*=\).*;\1;' \
  253. Makefile
  254. # build package
  255. %{l_make} %{l_mflags -O}
  256. %install
  257. # perform package installation procedure
  258. ( cd vim%{V_vs}/src
  259. %{l_make} %{l_mflags} install \
  260. prefix=$RPM_BUILD_ROOT%{l_prefix} \
  261. MANDIR=$RPM_BUILD_ROOT%{l_prefix}/man
  262. ) || exit $?
  263. # strip down installation hierarchy
  264. strip $RPM_BUILD_ROOT%{l_prefix}/bin/vim >/dev/null 2>&1 || true
  265. rm -f $RPM_BUILD_ROOT%{l_prefix}/bin/xxd
  266. rm -f $RPM_BUILD_ROOT%{l_prefix}/man/man1/xxd.1
  267. rm -rf $RPM_BUILD_ROOT%{l_prefix}/share/vim/tools
  268. rm -rf $RPM_BUILD_ROOT%{l_prefix}/share/vim/macros
  269. # add links for program runtime variants
  270. for link in vi ex rview rvim view vimdiff; do
  271. rm -f $RPM_BUILD_ROOT%{l_prefix}/bin/$link
  272. ln $RPM_BUILD_ROOT%{l_prefix}/bin/vim \
  273. $RPM_BUILD_ROOT%{l_prefix}/bin/$link
  274. rm -f $RPM_BUILD_ROOT%{l_prefix}/man/man1/$link.1
  275. ln $RPM_BUILD_ROOT%{l_prefix}/man/man1/vim.1 \
  276. $RPM_BUILD_ROOT%{l_prefix}/man/man1/$link.1
  277. done
  278. # create installation area for addon packages
  279. %{l_shtool} mkdir -f -p -m 755 \
  280. $RPM_BUILD_ROOT%{l_prefix}/lib/vim
  281. # install run-command script
  282. %{l_shtool} mkdir -f -p -m 755 \
  283. $RPM_BUILD_ROOT%{l_prefix}/etc/rc.d
  284. %{l_shtool} install -c -m 755 %{l_value -s -a} \
  285. %{SOURCE rc.vim} $RPM_BUILD_ROOT%{l_prefix}/etc/rc.d/
  286. # install default configuration
  287. %{l_shtool} mkdir -f -p -m 755 \
  288. $RPM_BUILD_ROOT%{l_prefix}/etc/vim
  289. %{l_shtool} install -c -m 755 %{l_value -s -a} \
  290. %{SOURCE vimrc} $RPM_BUILD_ROOT%{l_prefix}/etc/vim/
  291. # determine installation files
  292. %{l_rpmtool} files -v -ofiles -r$RPM_BUILD_ROOT \
  293. %{l_files_std} \
  294. '%config %{l_prefix}/etc/vim/vimrc'
  295. %files -f files
  296. %clean
  297. %preun
  298. if [ $1 -eq 0 ]; then
  299. # remove a (usually empty) "helptags" file of addon packages
  300. rm -f $RPM_INSTALL_PREFIX/lib/vim/doc/tags >/dev/null 2>&1 || true
  301. fi