vim.spec 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318
  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 0055
  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: 20161031
  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. # build information
  109. BuildPreReq: OpenPKG, openpkg >= 20160101, ncurses
  110. PreReq: OpenPKG, openpkg >= 20160101, ncurses
  111. %if "%{with_perl}" == "yes"
  112. BuildPreReq: perl
  113. PreReq: perl
  114. %endif
  115. %if "%{with_python}" == "yes"
  116. BuildPreReq: python
  117. PreReq: python
  118. %endif
  119. %if "%{with_tcl}" == "yes"
  120. BuildPreReq: tcl
  121. PreReq: tcl
  122. %endif
  123. %if "%{with_ruby}" == "yes"
  124. BuildPreReq: ruby
  125. PreReq: ruby
  126. %endif
  127. %if "%{with_shell}" == "yes"
  128. BuildPreReq: autoconf
  129. %endif
  130. %description
  131. Vim (Vi Improved) is a text editor that is upwards compatible
  132. with the classical Unix Vi. It can be used to edit any ASCII
  133. text. It is especially useful for editing programs. Vim offers
  134. a lot of enhancements not available in the traditional Vi. For
  135. example, Vim has multi level undo, multi windows and buffers, syntax
  136. highlighting, command line editing, filename completion, on-line
  137. help, and visual selection.
  138. %track
  139. prog vim = {
  140. version = %{V_vl}
  141. url = ftp://ftp.vim.org/pub/vim/unix/
  142. regex = vim-(\d+.\d+)\.tar\.(gz|bz2)
  143. }
  144. prog vim:patchlevel = {
  145. version = %{V_vl}.%{V_pl}
  146. url = ftp://ftp.vim.org/pub/vim/patches/%{V_vl}/
  147. regex = (%{V_vl}\.\d+)
  148. }
  149. %prep
  150. # unpack base distribution parts
  151. %setup -q -c
  152. %patch -p0
  153. %if "%{with_shell}" == "yes"
  154. %patch -p0 -d vim%{V_vs} -P 1
  155. %endif
  156. # apply bundle patchsets
  157. # for patchset in 0001-1000; do
  158. # %{l_gzip} -d -c $RPM_SOURCE_DIR/%{V_vl}.$patchset.gz |\
  159. # %{l_patch} -p0 -E -t -s >/dev/null 2>&1 || true
  160. # done
  161. # apply remaining single patches
  162. i=1
  163. while [ $i -le %{V_pl} ]; do
  164. cat $RPM_SOURCE_DIR/%{V_vl}.`echo $i | awk '{ printf("%04d", $0); }'` |\
  165. %{l_patch} -p0 -E -t -s >/dev/null 2>&1 || true
  166. i=`expr $i + 1`
  167. done
  168. # adjust introduction text for OpenPKG branding
  169. %{l_shtool} subst \
  170. -e 's;Modified by;Packaged by;' \
  171. vim%{V_vs}/src/version.c
  172. # adjust paths to global configuration files
  173. %{l_shtool} subst \
  174. -e 's;^/\* \(#define SYS_VIMRC_FILE\).*$;\1 "%{l_prefix}/etc/vim/vimrc";' \
  175. -e 's;^/\* \(#define SYS_GVIMRC_FILE\).*$;\1 "%{l_prefix}/etc/vim/gvimrc";' \
  176. vim%{V_vs}/src/feature.h
  177. %if "%{with_python}" == "yes"
  178. # fix Python includes
  179. %{l_shtool} subst \
  180. -e 's;PYTHON_CFLAGS=.*$;PYTHON_CFLAGS="`python-config --includes`";' \
  181. vim%{V_vs}/src/auto/configure
  182. %endif
  183. %build
  184. # configure package
  185. cd vim%{V_vs}/src
  186. %if "%{with_shell}" == "yes"
  187. %{l_make} %{l_mflags} autoconf
  188. %endif
  189. CC="%{l_cc}" \
  190. CFLAGS="%{l_cflags -O}" \
  191. CPPFLAGS="%{l_cppflags}" \
  192. LDFLAGS="%{l_ldflags}" \
  193. GREP="grep" \
  194. ./configure \
  195. --prefix=%{l_prefix} \
  196. --mandir=%{l_prefix}/man \
  197. --with-local-dir=%{l_prefix} \
  198. --with-global-runtime=%{l_prefix}/lib/vim \
  199. --with-modified-by='%{l_openpkg_release}' \
  200. --with-tlib=ncurses \
  201. --without-x \
  202. --disable-gui \
  203. %if "%{with_features}" == "huge"
  204. --with-features=huge \
  205. %else
  206. %if "%{with_features}" == "big"
  207. --with-features=big \
  208. %else
  209. %if "%{with_features}" == "small"
  210. --with-features=small \
  211. %else
  212. --with-features=normal \
  213. %endif
  214. %endif
  215. %endif
  216. %if "%{with_multibyte}" == "yes"
  217. --enable-multibyte \
  218. %endif
  219. %if "%{with_perl}" == "yes"
  220. --enable-perlinterp \
  221. %else
  222. --disable-perlinterp \
  223. %endif
  224. %if "%{with_python}" == "yes"
  225. --enable-pythoninterp \
  226. --with-python-config-dir=%{l_prefix}/lib/python/config \
  227. %else
  228. --disable-pythoninterp \
  229. %endif
  230. %if "%{with_tcl}" == "yes"
  231. --enable-tclinterp \
  232. %else
  233. --disable-tclinterp \
  234. %endif
  235. %if "%{with_ruby}" == "yes"
  236. --enable-rubyinterp \
  237. %else
  238. --disable-rubyinterp \
  239. %endif
  240. --disable-nls
  241. %{l_shtool} subst \
  242. -e 's;^\(VIMRTDIR[^=]*=\).*;\1;' \
  243. Makefile
  244. # build package
  245. %{l_make} %{l_mflags -O}
  246. %install
  247. # perform package installation procedure
  248. ( cd vim%{V_vs}/src
  249. %{l_make} %{l_mflags} install \
  250. prefix=$RPM_BUILD_ROOT%{l_prefix} \
  251. MANDIR=$RPM_BUILD_ROOT%{l_prefix}/man
  252. ) || exit $?
  253. # strip down installation hierarchy
  254. strip $RPM_BUILD_ROOT%{l_prefix}/bin/vim >/dev/null 2>&1 || true
  255. rm -f $RPM_BUILD_ROOT%{l_prefix}/bin/xxd
  256. rm -f $RPM_BUILD_ROOT%{l_prefix}/man/man1/xxd.1
  257. rm -rf $RPM_BUILD_ROOT%{l_prefix}/share/vim/tools
  258. rm -rf $RPM_BUILD_ROOT%{l_prefix}/share/vim/macros
  259. # add links for program runtime variants
  260. for link in vi ex rview rvim view vimdiff; do
  261. rm -f $RPM_BUILD_ROOT%{l_prefix}/bin/$link
  262. ln $RPM_BUILD_ROOT%{l_prefix}/bin/vim \
  263. $RPM_BUILD_ROOT%{l_prefix}/bin/$link
  264. rm -f $RPM_BUILD_ROOT%{l_prefix}/man/man1/$link.1
  265. ln $RPM_BUILD_ROOT%{l_prefix}/man/man1/vim.1 \
  266. $RPM_BUILD_ROOT%{l_prefix}/man/man1/$link.1
  267. done
  268. # create installation area for addon packages
  269. %{l_shtool} mkdir -f -p -m 755 \
  270. $RPM_BUILD_ROOT%{l_prefix}/lib/vim
  271. # install run-command script
  272. %{l_shtool} mkdir -f -p -m 755 \
  273. $RPM_BUILD_ROOT%{l_prefix}/etc/rc.d
  274. %{l_shtool} install -c -m 755 %{l_value -s -a} \
  275. %{SOURCE rc.vim} $RPM_BUILD_ROOT%{l_prefix}/etc/rc.d/
  276. # install default configuration
  277. %{l_shtool} mkdir -f -p -m 755 \
  278. $RPM_BUILD_ROOT%{l_prefix}/etc/vim
  279. %{l_shtool} install -c -m 755 %{l_value -s -a} \
  280. %{SOURCE vimrc} $RPM_BUILD_ROOT%{l_prefix}/etc/vim/
  281. # determine installation files
  282. %{l_rpmtool} files -v -ofiles -r$RPM_BUILD_ROOT \
  283. %{l_files_std} \
  284. '%config %{l_prefix}/etc/vim/vimrc'
  285. %files -f files
  286. %clean
  287. %preun
  288. if [ $1 -eq 0 ]; then
  289. # remove a (usually empty) "helptags" file of addon packages
  290. rm -f $RPM_INSTALL_PREFIX/lib/vim/doc/tags >/dev/null 2>&1 || true
  291. fi