/[packages]/updates/8/vim/current/SPECS/vim.spec
ViewVC logotype

Contents of /updates/8/vim/current/SPECS/vim.spec

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1752007 - (show annotations) (download)
Sun Oct 17 19:10:01 2021 UTC (2 years, 6 months ago) by neoclust
File size: 16647 byte(s)
Bump subrel
1 # Notes / Warning :
2 # - this package is not prefixable
3 # - to update official patches, aka SOURCE4, see README.mga in SOURCE4
4
5 %define python3path %{_includedir}/%{python3}
6
7 %define patchlevel 2143
8
9 %define python_version %(rpm -q --qf '%%{epoch}:%%{version}' python)
10 %define ruby_version %(rpm -q --qf '%%{epoch}:%%{version}' ruby)
11
12 # Should we build X11 gui
13 %define buildgui 1
14
15 %{?_with_gui:%global buildgui 1}
16 %{?_without_gui:%global buildgui 0}
17
18 %define title VI editor
19 %define longtitle All-purpose text editor
20
21 %define baseversion 8.2
22 %define vimdir vim82
23
24 Name: vim
25 Version: %{baseversion}.%{patchlevel}
26 %define subrel 2
27 Release: %mkrel 3
28 Summary: VIsual editor iMproved
29 Url: http://www.vim.org/
30 License: Charityware
31 Group: Editors
32 # Generated with SOURCES/vim-update.sh
33 Source0: ftp://ftp.vim.org/pub/vim/unix/vim-%{baseversion}-%{patchlevel}.tar.bz2
34 # read README.mga prior updating official patches:
35 Source3: README.mga
36 # http://vim.sourceforge.net/scripts/script.php?script_id=98
37 Source56: http://trific.ath.cx/Ftp/vim/syntax/dhcpd.vim
38 # from apparmor-utils package
39 Source57: apparmor.vim
40 Source58: cfengine.vim
41 Source59: nagios.vim
42 # icon rendering is ugly in GNOME3, so, adding a svg icon
43 Source60: gvim.svg
44 # empty rpm spec template
45 Source61: template.spec
46
47 # for updating Source0:
48 Source100: vim-update.sh
49
50 # MDK patches
51 Patch2: vim-5.6a-paths.patch
52 Patch3: vim-8.0-rpm-spec-syntax.patch
53 Patch8: vim-6.0af-man-path.patch
54 Patch10: xxd-locale.patch
55 Patch20: vimrc_hebrew.patch
56 # autoload template when creating new rpm spec files
57 Patch21: vim-8.0-mga-vimrc-spec-template-autoload.patch
58 Patch22: vim-8.2-fix-xterms-comments.patch
59 Patch23: vim-8.2-remove-docs.patch
60 Patch24: vim-8.0-outline-mode.patch
61 Patch26: vim-7.4-changelog-mode.patch
62 Patch28: vim-8.0-po-mode.patch
63 Patch30: vim-8.0-add-dhcpd-syntax.patch
64 Patch31: vim70-CVE-2007-2438.patch
65 Patch32: vim-8.0-highligh-global.diff
66 Patch33: vim-8.2-add-haproxy-syntax.patch
67
68 # Fedora patches
69 Patch100: vim-8.0-fortify_warnings-1.patch
70 Patch101: vim-7.4-fstabsyntax.patch
71 Patch3016: vim-8.0-copy-paste.patch
72 # migrate shebangs in script to /usr/bin/python3 and use python2 when necessary
73 Patch3017: vim-python3-tests.patch
74
75 #
76 # Security patches
77 # P10000 -> ...
78 #
79 # CVE-2021-3770
80 Patch10000: b7081e135a16091c93f6f5f7525a5c58fb7ca9f9.patch
81 Patch10001: 2ddb89f8a94425cda1e5491efc80c1ccccb6e08e.patch
82 # CVE-2021-3778
83 Patch10002: 65b605665997fad54ef39a93199e305af2fe4d7f.patch
84 # CVE-2021-3796
85 Patch10003: 35a9a00afcb20897d462a766793ff45534810dc3.patch
86 BuildRequires: python3-devel
87 BuildRequires: gpm-devel
88 BuildRequires: pkgconfig(ruby)
89 BuildRequires: perl-devel
90 BuildRequires: pkgconfig(tinfo)
91 BuildRequires: acl-devel
92 %if %{buildgui}
93 # for sound support
94 BuildRequires: libcanberra-devel
95 BuildRequires: gtk3-devel
96 BuildRequires: pkgconfig(ncurses)
97 BuildRequires: pkgconfig(xt)
98 BuildRequires: tcl
99 BuildRequires: pkgconfig(tcl)
100 %endif
101 BuildRequires: pkgconfig(lua)
102
103 %global __requires_exclude perl\\(getopts.pl\\)
104
105 %description
106 VIM (VIsual editor iMproved) is an updated and improved version of the
107 vi editor. Vi was the first real screen-based editor for UNIX, and is
108 still very popular. VIM improves on vi by adding new features:
109 multiple windows, multi-level undo, block highlighting and more.
110
111 %package common
112 Summary: The common files needed by any version of the VIM editor
113 Group: Editors
114 Requires(pre): coreutils
115 Requires(post): coreutils
116 Requires(preun): coreutils
117 Requires(postun): coreutils
118 # <oden> Installation failed: file /usr/share/vim/syntax/asciidoc.vim from install of vim-common-7.4.052-2.mga4.x86_64 conflicts with file from package asciidoc-8.6.8-2.mga3.noarch
119 Conflicts: asciidoc < 8.6.8-4
120
121 %description common
122 VIM (VIsual editor iMproved) is an updated and improved version of the
123 vi editor. Vi was the first real screen-based editor for UNIX, and is
124 still very popular. VIM improves on vi by adding new features:
125 multiple windows, multi-level undo, block highlighting and more. The
126 vim-common package contains files which every VIM binary will need in
127 order to run.
128
129 %package minimal
130 Summary: A minimal version of the VIM editor
131 Group: Editors
132 Provides: vim
133 Requires(post): update-alternatives
134 Requires(postun): update-alternatives
135
136 %description minimal
137 VIM (VIsual editor iMproved) is an updated and improved version of the
138 vi editor. Vi was the first real screen-based editor for UNIX, and is
139 still very popular. VIM improves on vi by adding new features:
140 multiple windows, multi-level undo, block highlighting and more. The
141 vim-minimal package includes a minimal version of VIM, which is
142 installed into /bin/vi for use when only the root partition is
143 present. NOTE: The online help is only available when the vim-common
144 package is installed.
145
146 %package enhanced
147 Summary: A version of the VIM editor which includes recent enhancements
148 Group: Editors
149 Requires: vim-common >= %{version}-%{release}
150 Provides: vim
151 Requires(post): update-alternatives
152 Requires(postun): update-alternatives
153
154 %description enhanced
155 VIM (VIsual editor iMproved) is an updated and improved version of the
156 vi editor. Vi was the first real screen-based editor for UNIX, and is
157 still very popular. VIM improves on vi by adding new features:
158 multiple windows, multi-level undo, block highlighting and more. The
159 vim-enhanced package contains a version of VIM with extra, recently
160 introduced features like Python and Perl interpreters.
161
162 Install the vim-enhanced package if you'd like to use a version of the
163 VIM editor which includes recently added enhancements like
164 interpreters for the Python and Perl scripting languages. You'll also
165 need to install the vim-common package.
166
167 %if %{buildgui}
168 %package X11
169 Summary: The VIM version of the vi editor for the X Window System
170 Group: Editors
171 Provides: vim
172 Requires: vim-common >= %{version}-%{release}
173 Requires(post): desktop-file-utils
174 Requires(postun): desktop-file-utils
175
176 %description X11
177 VIM (VIsual editor iMproved) is an updated and improved version of the
178 vi editor. Vi was the first real screen-based editor for UNIX, and is
179 still very popular. VIM improves on vi by adding new features:
180 multiple windows, multi-level undo, block highlighting and
181 more. VIM-X11 is a version of the VIM editor which will run within the
182 X Window System. If you install this package, you can run VIM as an X
183 application with a full GUI interface and mouse support by command gvim.
184
185 Install the vim-X11 package if you'd like to try out a version of vi
186 with graphics and mouse capabilities. You'll also need to install the
187 vim-common package.
188 %endif
189
190 %define localedir %{buildroot}%{_datadir}/locale/
191
192 %prep
193 %setup -q -n %{vimdir}
194 # spec plugin
195 rm -f runtime/doc/pi_spec.txt
196 rm -f runtime/ftpplugin/spec.vim
197 cp -a %{SOURCE56} runtime/syntax/
198 cp -a %{SOURCE57} runtime/syntax/
199 cp -a %{SOURCE58} runtime/syntax/
200 cp -a %{SOURCE59} runtime/syntax/
201
202 #mdk patches
203 %patch2 -p1
204 %patch3 -p0 -b .spec
205 %patch8 -p1 -b .manpath
206 %patch10 -p1 -b .xxdloc
207 %patch20 -p1 -b .warly
208 %patch21 -p1 -b .spec-template-autoload
209 %patch22 -p0
210 %patch23 -p0 -b .doc
211 %patch24 -p0
212 %patch26 -p0
213 %patch28 -p1
214 %patch30 -p0
215 %patch32 -p1
216 %patch33 -p1 -b .add-haproxy-syntax
217 # Fedora patches
218 %patch100 -p1
219 %patch101 -p1
220 %patch3016 -p1
221 %patch3017 -p1
222
223 %patch10000 -p1
224 %patch10001 -p1
225 %patch10002 -p1
226 %patch10003 -p1
227
228 perl -pi -e 's|SYS_VIMRC_FILE "\$VIM/vimrc"|SYS_VIMRC_FILE "%_sysconfdir/vim/vimrc"|' src/os_unix.h
229 perl -pi -e 's|SYS_GVIMRC_FILE "\$VIM/gvimrc"|SYS_GVIMRC_FILE "%_sysconfdir/vim/gvimrc"|' src/os_unix.h
230 # disable command echo
231 for i in runtime/{gvimrc_example.vim,vimrc_example.vim,defaults.vim}; do
232 perl -pi -e 's!^set showcmd!set noshowcmd!' $i
233 done
234 perl -pi -e 's|\Qsvn-commit.*.tmp\E|svn-commit*.tmp|' ./runtime/filetype.vim
235
236 %build
237 # ensure xxd works with big files:
238 export CFLAGS="%{optflags} -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D_FORTIFY_SOURCE=2"
239 export CXXFLAGS="%{optflags} -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D_FORTIFY_SOURCE=2"
240
241 export LDFLAGS="%{ldflags} $(python3-config --libs --embed)"
242
243 %if %{buildgui}
244 # First build: gvim
245 LOCALEDIR=%{localedir} ./configure --prefix=%{_prefix} \
246 --enable-python3interp=dynamic \
247 --enable-perlinterp \
248 --enable-rubyinterp \
249 --enable-tclinterp \
250 --with-features=huge \
251 --enable-acl --with-x=yes --enable-gui=gtk3 --exec-prefix=%{_prefix}/X11R6 \
252 --enable-gtk3-check \
253 --enable-multibyte --enable-xim --enable-fontset --mandir=%{_mandir} \
254 --enable-canberra \
255 --libdir=%{_libdir} --with-compiledby="%packager"
256
257 echo "#define MAX_FEAT 1" >> src/config.h
258 echo "#define FEAT_GUI" >> src/config.h
259 # workaround buggy build system:
260 perl -pi -e 's!/usr/include long!/usr/include !' src/auto/config.mk
261
262 %make_build
263 mv src/vim src/gvim
264 make -C src clean
265 %endif
266
267 # Second build: vim-enhanced
268 ./configure --prefix=%{_prefix} \
269 --enable-acl --enable-rubyinterp --enable-tclinterp \
270 --enable-python3interp=dynamic \
271 --enable-perlinterp --with-features=huge \
272 --libdir=%{_libdir} --with-compiledby="%packager" \
273 --with-x=no --enable-gui=no --exec-prefix=%{_prefix} \
274 --disable-canberra
275
276 %make_build
277 mv src/vim src/vim-enhanced
278 make -C src/ clean
279
280 # Third build: vim-minimal
281 ./configure --prefix=%{_prefix} \
282 --with-features=tiny --disable-tclinterp --disable-cscope \
283 --disable-hangulinput --disable-xim --disable-fontset --disable-gui \
284 --disable-acl --disable-pythoninterp --disable-perlinterp \
285 --libdir=%{_libdir} --with-compiledby="%packager" \
286 --with-x=no --enable-gui=no --disable-gpm --exec-prefix=%{_prefix} --with-tlib=tinfo \
287 --disable-canberra
288
289 %make_build
290 cp src/vim src/vim-minimal
291 %make_build -C src
292
293 cp -al runtime/doc doc
294 # apply os_doc.diff
295 pushd doc
296 rm -f *.1
297 rm -f os_{390,dos,msdos,risc,win32,amiga,mac,os2,beos,mint,qnx,vms}.txt
298 rm -f gui_{w16,w32}.txt
299 rm -f vim2html.pl Makefile *awk
300 popd
301
302 # britton support
303 ln -s tutor.fr runtime/tutor/tutor.br
304 ln -s menu_fr_fr.iso_8859-15.vim runtime/lang/menu_br
305
306 %install
307 perl -pi -e 's!LOCALEDIR=\$\(DEST_LANG\)!LOCALEDIR=\$(DESTDIR)\$\(prefix\)/share/locale!g' src/Makefile
308
309 mkdir -p %{buildroot}{/bin,%{_bindir},%{_datadir}/{vim,locale},%{_mandir}/man1,%{localedir}}
310 # Adding STRIP=/bin/true, because Vim wants to strip the binaries by himself
311 # and put the stripped files into correct dirs. Build system (koji/brew)
312 # does it for us, so there is no need to do it in Vim
313 %make_install VIMRTDIR="" STRIP=/bin/true
314
315
316 make -C src installmacros prefix=%{buildroot}%{_prefix} VIMRTDIR=""
317
318 # fix unreadable files:
319 chmod a+r runtime/{autoload/{tar,netrw}.vim,doc/pi_{netrw,tar}.txt}
320
321 %if %{buildgui}
322 mkdir -p %{buildroot}%{_bindir}
323 install -m 755 src/gvim %{buildroot}%{_bindir}
324 %endif
325
326 install -m 755 src/vim-enhanced %{buildroot}%{_bindir}
327 install -m 755 src/vim-minimal %{buildroot}/bin/vim-minimal
328
329 cd %{buildroot}
330 rm -f ./bin/rvim
331 rm -f ./usr/bin/rview ./usr/bin/rvim ./usr/bin/view
332 for i in ex vimdiff; do
333 ln -sf vim-enhanced ./usr/bin/$i
334 done
335 rm -f ./usr/man/man1/rvim.*
336 rm -f ./usr/share/man/man1/evim.*
337 %if %{buildgui}
338 ln -sf gvim ./usr/bin/gvimdiff
339 ln -sf gvim ./usr/bin/vimx
340 %endif
341 rm -f ./usr/share/vim/*/cmake.vim
342 cd -
343
344 # installing man pages
345 for i in %{buildroot}%{_mandir}/man1/{vi,rvi}; do
346 cp %{buildroot}%{_mandir}/man1/vim.1 $i.1
347 done
348
349 %if %{buildgui}
350 cp %{buildroot}%{_mandir}/man1/vim.1 %{buildroot}%{_mandir}/man1/gvim.1
351 %endif
352
353 ln -sf defaults.vim %{buildroot}/usr/share/vim/vimrc
354
355 cd %{buildroot}/%{_prefix}/share/vim/tools
356 # i need to make a choice :(.
357 rm -f vim132
358 perl -p -i -e 's|#!/usr/bin/nawk|#!/usr/bin/gawk|' mve.awk
359 perl -p -i -e 's|#!/usr/local/bin/perl|#!/usr/bin/perl|' *.pl
360 perl -p -i -e 's|#!/usr/gnu/bin/perl|#!/usr/bin/perl|' *
361 cd -
362
363 # Be short-circuit aware :
364 ln -f runtime/macros/README.txt README_macros.txt
365 ln -f runtime/tools/README.txt README_tools.txt
366 perl -p -i -e "s|#!/usr/local/bin/perl|#!/usr/bin/perl|" runtime/doc/*.pl
367
368 # installing the menu icons & entry
369 %if %{buildgui}
370 install -D -p -m 0644 %{SOURCE60} %{buildroot}%{_datadir}/icons/hicolor/scalable/apps/gvim.svg
371
372 # gvim and fontset (from Pablo) 2001/03/19
373 echo 'set guifontset=-*-fixed-medium-r-normal--14-*-*-*-c-*-*-*,-*-*-medium-r-normal--14-*-*-*-c-*-*-*,-*-*-medium-r-normal--14-*-*-*-m-*-*-*,*' > %{buildroot}%{_datadir}/vim/gvimrc
374 %endif
375
376 # fix the paths in the man pages
377 for i in %{buildroot}/usr/share/man/man1/*.1; do
378 perl -p -i -e "s|%{buildroot}||" $i
379 done
380
381 # prevent including twice the doc
382 rm -fr %{buildroot}/usr/share/vim/doc
383 ln -sf ../../../%{_defaultdocdir}/%{name}-common/doc %{buildroot}/usr/share/vim/doc
384
385 %{find_lang} %{name} --with-man --all-name
386
387 find %{buildroot}%{_datadir}/vim/ -name "tutor.*" | egrep -v 'tutor(|\.vim)$' |
388 sed -e 's!^\(.*tutor.\)\(..\)!%lang(\2) \1\2!g' >> %{name}.lang
389
390 find %{buildroot}%{_datadir}/vim/lang -name "menu*" |
391 sed -e 's!^\(.*menu_\)\(..\)\(_\)!%lang(\2) \1\2\3!g' \
392 -e 's!^\(.*menu\)\(_chinese\)!%lang(zh) \1\2!g' \
393 -e 's!^\(.*menu\)\(_czech_\)!%lang(cs) \1\2!g' \
394 -e 's!^\(.*menu\)\(_french\)!%lang(fr) \1\2!g' \
395 -e 's!^\(.*menu\)\(_german\)!%lang(de) \1\2!g' \
396 -e 's!^\(.*menu\)\(_japanes\)!%lang(ja) \1\2!g' \
397 -e 's!^\(.*menu\)\(_polish\)!%lang(pl) \1\2!g' \
398 -e 's!^\(.*menu\)\(_slovak\)!%lang(sk) \1\2!g' \
399 -e 's!^\(.*menu\)\(_spanis\)!%lang(es) \1\2!g' \
400 >> %{name}.lang
401 # add softlinks:
402 find %{buildroot}%{_datadir}/vim/lang -type l >> %{name}.lang
403 # clean file list:
404 sed -i "s^%{buildroot}^^" %{name}.lang
405
406 rm -f %{buildroot}%{_bindir}/vim
407
408 mkdir -p %{buildroot}%{_sysconfdir}/vim/
409 MESSAGE='"Place your systemwide modification here.\n"%{_datadir}/vim/ files will be overwritten on update\n'
410 echo -e "$MESSAGE\nsource %_datadir/vim/vimrc" > %{buildroot}/%{_sysconfdir}/vim/vimrc
411 %if %{buildgui}
412 echo -e "$MESSAGE\nsource %_datadir/vim/gvimrc" > %{buildroot}/%{_sysconfdir}/vim/gvimrc
413 %endif
414
415 # create templates folder
416 mkdir -p %{buildroot}/%{_datadir}/%{name}/vimfiles
417 install -m 0644 %{SOURCE61} %{buildroot}/%{_datadir}/%{name}/vimfiles/
418
419 %post minimal
420 update-alternatives --install /bin/vi vi /bin/vim-minimal 10 \
421 --slave /bin/view view /bin/vim-minimal \
422 --slave /bin/ex ex /bin/vim-minimal \
423 --slave /bin/rvi rvi /bin/vim-minimal \
424 --slave /bin/rview rview /bin/vim-minimal
425 update-alternatives --install /bin/vim vim /bin/vim-minimal 10 \
426 --slave /bin/rvim rvim /bin/vim-minimal
427
428 %postun minimal
429 [ $1 = 0 ] || exit 0
430 update-alternatives --remove vi /bin/vim-minimal
431 update-alternatives --remove vim /bin/vim-minimal
432
433 %triggerpostun minimal -- vim-minimal < 7.3
434 update-alternatives --remove uvi /bin/vim-minimal
435 for i in view ex rvi rview rvim; do
436 update-alternatives --remove $i /bin/$i || :
437 done
438
439 %post enhanced
440 update-alternatives --install /bin/vi vi /usr/bin/vim-enhanced 20 \
441 --slave /bin/view view /usr/bin/vim-enhanced \
442 --slave /bin/ex ex /usr/bin/vim-enhanced \
443 --slave /bin/rvi rvi /usr/bin/vim-enhanced \
444 --slave /bin/rview rview /usr/bin/vim-enhanced
445 update-alternatives --install /bin/vim vim /usr/bin/vim-enhanced 20 \
446 --slave /bin/rvim rvim /usr/bin/vim-enhanced
447
448 %postun enhanced
449 [ $1 = 0 ] || exit 0
450 update-alternatives --remove vi /usr/bin/vim-enhanced
451 update-alternatives --remove vim /usr/bin/vim-enhanced
452
453 %triggerpostun enhanced -- vim-enhanced < 7.3
454 update-alternatives --remove uvi /usr/bin/vim-enhanced
455
456 %files common -f vim.lang
457 %doc README*.txt
458 #%doc --parents mandriva/README*
459 %doc doc
460 %{_datadir}/vim/doc
461 %dir %{_datadir}/vim/
462 %{_datadir}/vim/[^tlg]*
463 %{_datadir}/vim/gvimrc_example.vim
464 %{_datadir}/vim/lang/README.txt
465 %{_datadir}/vim/tools
466 %{_datadir}/vim/tutor/README.*
467 %{_datadir}/vim/tutor/tutor
468 %{_datadir}/vim/tutor/tutor.vim
469 %{_mandir}/man1/vim.1*
470 %{_mandir}/man1/ex.1*
471 %{_mandir}/man1/vi.1*
472 %{_mandir}/man1/view.1*
473 %{_mandir}/man1/rvi.1*
474 %{_mandir}/man1/rview.1*
475 %{_mandir}/man1/vimdiff.1*
476 %{_mandir}/man1/vimtutor.1*
477 %{_mandir}/man1/rvim.1*
478 %{_bindir}/vimtutor
479 %{_bindir}/xxd
480 %{_mandir}/man1/xxd.1*
481 %dir %{_sysconfdir}/vim/
482 %config(noreplace) %{_sysconfdir}/vim/*
483
484 %files minimal
485 %doc README*.txt
486 /bin/vim-minimal
487
488 %files enhanced
489 %doc README*.txt
490 %{_bindir}/ex
491 %{_bindir}/vimdiff
492 %{_bindir}/vim-enhanced
493
494 %if %{buildgui}
495 %files X11
496 %doc README*.txt
497 %{_bindir}/gvim
498 %{_bindir}/gvimdiff
499 %{_bindir}/vimx
500 %{_mandir}/man1/gvim.1*
501 %{_iconsdir}/hicolor/*/apps/gvim.*
502 %{_iconsdir}/locolor/*/apps/*
503 %{_datadir}/applications/*.desktop
504 %{_datadir}/vim/gvimrc
505 %else
506 %exclude %{_datadir}/applications/*.desktop
507 %exclude %{_iconsdir}/hicolor/*/apps/gvim.*
508 %exclude %{_iconsdir}/locolor/*/apps/*
509 %endif

  ViewVC Help
Powered by ViewVC 1.1.30