vim/vim.spec
Ondřej Súkup 9b21c2e7ed - Updated to version 9.0.0453, fixes the following problems
- boo#1203194 - CVE-2022-3134
- boo#1203110 - CVE-2022-3099
  * Writefile test leaves files behind.
  * Freeing the wrong string on failure.
  * Coverity complains about unused value.
  * Covertity still complains about using return value of getc().
  * GUI: when CTRL-D is mapped in Insert mode it gets inserted. (Yasuhiro
  Matsumoto)
  * Some code blocks are nested too deep.
  * repeating a <ScriptCmd> mapping does not use the right script context.
  * The do_arg_all() function is too long.
  * Crash when 'tagfunc' closes the window.
  * Cannot use a partial with :defer.
  * Using separate delete() call instead of writefile() 'D' flag.
  * Inverted condition is a bit confusing.
  * Signals test often fails on FreeBSD.
  * Cygwin: multibyte characters may be broken in terminal window.
  * Clang warnings for function prototypes.
  * :findrepl does not escape '&' and '~' properly.
  * :defer not tested with exceptions and ":qa!".
  * Members of funccall_T are inconsistently named.
  * Using :defer in expression funcref not tested.
  * GUI test sometimes hangs on CI.
  * CI uses older clang version.
  * Javascript module files are not recoginzed.
  * 'equalalways' may be off when 'laststatus' is zero.
  * Crash when passing invalid arguments to assert_fails().
  * Arguments in a partial not used by a :def function.
  * Deferred functions not invoked when partial func exits.

OBS-URL: https://build.opensuse.org/package/show/editors/vim?expand=0&rev=745
2022-09-13 07:50:39 +00:00

787 lines
25 KiB
RPMSpec

#
# spec file for package vim
#
# Copyright (c) 2022 SUSE LLC
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
# upon. The license for this file, and modifications and additions to the
# file, is the same license as for the pristine package itself (unless the
# license for the pristine package is not an Open Source License, in which
# case the license is the MIT License). An "Open Source License" is a
# license that conforms to the Open Source Definition (Version 1.9)
# published by the Open Source Initiative.
# Please submit bugfixes or comments via https://bugs.opensuse.org/
#
%define pkg_version 9.0
%define patchlevel 0453
%define patchlevel_compact %{patchlevel}
%define VIM_SUBDIR vim90
%define site_runtimepath %{_datadir}/vim/site
%define make make VIMRCLOC=%{_sysconfdir} VIMRUNTIMEDIR=%{_datadir}/vim/current MAKE="make -e" %{?_smp_mflags}
%bcond_without python2
%if 0%{?suse_version} > 1500
%bcond_without libalternatives
%else
%bcond_with libalternatives
%endif
Name: vim
Version: %{pkg_version}.%{patchlevel_compact}
Release: 0
Summary: Vi IMproved
License: Vim
Group: Productivity/Text/Editors
URL: http://www.vim.org/
Source: https://github.com/vim/vim/archive/v%{pkg_version}.%{patchlevel}.tar.gz#/vim-%{pkg_version}.%{patchlevel}.tar.gz
Source3: suse.vimrc
Source4: vimrc_example1
Source5: vimrc_example2
Source8: suse.gvimrc
Source10: README.Japanese-XIM
Source13: vitmp.c
Source14: vitmp.1
Source15: vim132
Source19: gvim.desktop
Source20: spec.skeleton
Source21: spec.vim
Source23: apparmor.vim
Source24: gvim.svg
Source25: gvim_24.png
Source26: gvim_32.png
Source27: gvim_48.png
Source28: gvim_64.png
Source29: gvim_96.png
Source98: vim-changelog.sh
Source99: %{name}-7.4-rpmlintrc
Patch3: %{name}-7.4-disable_lang_no.patch
Patch4: %{name}-7.3-gvimrc_fontset.patch
Patch5: %{name}-7.4-highlight_fstab.patch
Patch6: %{name}-7.3-sh_is_bash.patch
Patch7: %{name}-7.3-filetype_ftl.patch
Patch8: %{name}-7.3-help_tags.patch
Patch9: %{name}-7.3-use_awk.patch
Patch10: %{name}-7.3-name_vimrc.patch
Patch11: %{name}-7.3-mktemp_tutor.patch
Patch15: %{name}-7.4-filetype_apparmor.patch
Patch18: %{name}-7.3-filetype_spec.patch
Patch21: %{name}-7.3-filetype_changes.patch
Patch22: %{name}-7.4-filetype_mine.patch
Patch23: vim-8.0-ttytype-test.patch
Patch24: disable-unreliable-tests.patch
Patch25: ignore-flaky-test-failure.patch
Patch100: vim73-no-static-libpython.patch
Patch101: vim-8.0.1568-defaults.patch
# https://github.com/vim/vim/issues/3348 - problem more probadly in buildenv than in test
Patch102: vim-8.1.0297-dump3.patch
Patch104: vim-8.2.2411-globalvimrc.patch
BuildRequires: autoconf
BuildRequires: db-devel
BuildRequires: fdupes
BuildRequires: gettext-devel
BuildRequires: gpm-devel
BuildRequires: libacl-devel
BuildRequires: libtool
BuildRequires: ncurses-devel
BuildRequires: perl
BuildRequires: pkgconfig
BuildRequires: ruby-devel
BuildRequires: update-desktop-files
BuildRequires: pkgconfig(gtk+-3.0)
BuildRequires: pkgconfig(krb5)
BuildRequires: pkgconfig(lua)
BuildRequires: pkgconfig(python3)
BuildRequires: pkgconfig(xt)
Requires: vim-data-common = %{version}-%{release}
%if %{with libalternatives}
Requires: alts
%else
Requires(post): update-alternatives
Requires(postun):update-alternatives
%endif
Recommends: vim-data = %{version}-%{release}
Conflicts: vim-base < 8.2
Provides: vi
Provides: vim-base = %{version}-%{release}
Provides: vim-enhanced = %{version}-%{release}
Provides: vim-python = %{version}-%{release}
Obsoletes: vim-base < %{version}-%{release}
Obsoletes: vim-enhanced < %{version}-%{release}
Obsoletes: vim-python < %{version}-%{release}
Provides: vim_client
%{?libperl_requires}
%if %{with python2}
BuildRequires: python2-devel
%endif
%description
Vim (Vi IMproved) is an almost compatible version of the UNIX editor
vi. Almost every possible command can be performed using only ASCII
characters. Only the 'Q' command is missing (you do not need it). Many
new features have been added: multilevel undo, command line history,
file name completion, block operations, and editing of binary data.
%package data
Summary: Data files needed for extended vim functionality
Group: Productivity/Text/Editors
Requires: vim-data-common = %{version}-%{release}
# Used to be in vim-plugins package
Obsoletes: vim-plugin-matchit <= 1.13.2
Provides: vim-plugin-matchit = 1.13.2
# conflicts with nginx own plugin
Obsoletes: vim-plugin-nginx < %{version}
Provides: vim-plugin-nginx = %{version}
BuildArch: noarch
%description data
This package contains optional runtime & syntax files for vim.
%package data-common
Summary: Common Data files for vim & gvim
Group: Productivity/Text/Editors
BuildArch: noarch
%description data-common
This package contains basic runtime & syntax files for vim
%package -n gvim
Summary: A GUI for Vi
Group: Productivity/Text/Editors
Requires: gvim_client
Requires: vim-data = %{version}-%{release}
%if %{with libalternatives}
BuildRequires: alts
Requires: alts
%else
Requires(post): update-alternatives
Requires(postun):update-alternatives
%endif
Conflicts: gvim < 8.2
Provides: gvim-base = %{version}-%{release}
Provides: gvim-enhanced = %{version}-%{release}
Obsoletes: gvim-base < %{version}-%{release}
Obsoletes: gvim-enhanced < %{version}-%{release}
Provides: gvim_client
Provides: vi
Provides: vim_client
%description -n gvim
Package gvim contains the largest set of features of vim, which is
graphical windows and language interpreter, like python, ruby, or perl.
You need package vim for the help and other documentation too. If you
want less features, you might want to install vim instead.
%package small
Summary: Vim with reduced features
Group: Productivity/Text/Editors
%if %{with libalternatives}
BuildRequires: alts
Requires: alts
%else
Requires(post): update-alternatives
Requires(postun):update-alternatives
%endif
Provides: vi
Provides: vim_client
Requires: vim-data-common = %{version}-%{release}
%description small
Vim compiled with reduced feature set such as no script
interpreters built in
%prep
%setup -q -n %{name}-%{pkg_version}.%{patchlevel}
%patch3 -p1
%patch4 -p1
%patch5 -p1
%patch6 -p1
%patch7 -p1
%patch8 -p1
%patch9 -p1
%patch10 -p1
%patch11 -p1
cp %{SOURCE23} runtime/syntax/apparmor.vim
%patch15 -p1
%patch18 -p1
%patch21 -p1
%patch22 -p1
%patch23 -p1
%patch24 -p1
%patch25 -p1
%patch100 -p1
%patch101 -p1
%patch102 -p1
%patch104 -p1
cp %{SOURCE3} %{SOURCE4} %{SOURCE5} %{SOURCE8} %{SOURCE10} .
# Unreliable tests
# See also disable-unreliable-tests.patch
rm src/testdir/test_arglist.*
rm src/testdir/test_command_count.*
rm src/testdir/test_cmdline.*
rm src/testdir/test_channel.*
rm src/testdir/test_diffmode.*
rm src/testdir/test_mksession.*
rm src/testdir/gen_opt_test.*
rm src/testdir/test_options.*
rm src/testdir/test_popupwin.*
rm src/testdir/test_startup.*
rm src/testdir/test_terminal*
rm src/testdir/test_textprop.*
rm src/testdir/test_window_cmd.*
rm src/testdir/test_writefile.*
%build
export CFLAGS="%{optflags} -Wall -pipe -fno-strict-aliasing"
export CFLAGS=${CFLAGS/-D_FORTIFY_SOURCE=2/-D_FORTIFY_SOURCE=1}
export COMMON_OPTIONS="\
--with-vim-name=vim \
--with-ex-name=ex \
--with-view-name=view \
--enable-cscope \
--enable-multibyte \
--with-compiledby='http://www.opensuse.org/' \
--with-tlib=tinfo \
--with-global-runtime=%{site_runtimepath} \
"
# yeah kind of weird to call this small when we then use the
# "normal" set. Calling the package vim-normal is weird though as
# huge is our default.
export SMALL_OPTIONS="\
$COMMON_OPTIONS \
--with-features=small \
--enable-luainterp=no \
--enable-pythoninterp=no \
--enable-perlinterp=no \
--enable-python3interp=no \
--enable-rubyinterp=no"
export HUGE_OPTIONS="\
$COMMON_OPTIONS \
--with-features=huge \
--enable-luainterp=dynamic \
--enable-perlinterp=yes \
--enable-python3interp=dynamic \
--enable-rubyinterp=dynamic
--enable-pythoninterp=%{?with_python2:yes}%{!?with_python2:no}"
export GUI_OPTIONS="\
--disable-icon-cache-update \
--enable-xim \
--enable-fontset \
--enable-gui=gtk3"
export NOGUI_OPTIONS="\
--disable-gui \
--disable-gpm \
--with-x=no \
"
pushd src
autoconf
popd
# build smaller vim
%configure ${SMALL_OPTIONS} ${NOGUI_OPTIONS}
sed -i -e 's|define HAVE_DATE_TIME 1|undef HAVE_DATE_TIME|' src/auto/config.h
make %{?_smp_mflags}
cp src/vim vim-small
# build normal vim
make -j1 distclean
%configure ${HUGE_OPTIONS} ${NOGUI_OPTIONS}
sed -i -e 's|define HAVE_DATE_TIME 1|undef HAVE_DATE_TIME|' src/auto/config.h
make %{?_smp_mflags}
cp src/vim vim-nox11
# build gvim
make -j1 distclean
%configure ${HUGE_OPTIONS} ${GUI_OPTIONS}
sed -i -e 's|define HAVE_DATE_TIME 1|undef HAVE_DATE_TIME|' src/auto/config.h
make %{?_smp_mflags}
#
# build vitmp
gcc %{optflags} %{SOURCE13} -o vitmp
%install
%make_install STRIP=:
# create icon directories and install the icons into it
for SIZE in 24 32 48 64 96; do
install -d -m 0755 %{buildroot}%{_datadir}/icons/hicolor/${SIZE}x${SIZE}/apps
install -m 0644 %{_sourcedir}/gvim_${SIZE}.png %{buildroot}%{_datadir}/icons/hicolor/${SIZE}x${SIZE}/apps/gvim.png
done
install -d -m 0755 %{buildroot}%{_datadir}/icons/hicolor/scalable/apps
install -m 0644 %{SOURCE24} %{buildroot}%{_datadir}/icons/hicolor/scalable/apps/gvim.svg
# the last installed binary is gvim. preserve it
mv %{buildroot}%{_bindir}/vim %{buildroot}%{_bindir}/gvim
%if %{with libalternatives}
for f in vimdiff ex view rview rvim; do
rm %{buildroot}%{_bindir}/$f
done
%else
# fix gvim symlinks. e* was added here as it doesnt make much sense in
# console
for f in egvim egview eview evim gex gvi gview gvimdiff rgview rgvim ; do
ln -s -vf gvim %{buildroot}%{_bindir}/$f
done
%endif
# install vim
install -D -m 0755 vim-small %{buildroot}%{_bindir}/vim-small
install -D -m 0755 vim-nox11 %{buildroot}%{_bindir}/vim-nox11
%if ! %{with libalternatives}
mkdir -p %{buildroot}%{_sysconfdir}/alternatives
ln -s -f %{_sysconfdir}/alternatives/vim %{buildroot}%{_bindir}/vim
ln -s -f %{_sysconfdir}/alternatives/vi %{buildroot}%{_bindir}/vi
%else
for f in vi vim rvim evim eview egview view rview vimdiff edit ex egvim gex gvi gview gvimdiff rgview rgvim ; do
ln -sf %{_bindir}/alts %{buildroot}%{_bindir}/$f
mkdir -p %{buildroot}%{_datadir}/libalternatives/$f
done
for f in vi vim rvim view rview vimdiff edit ex; do
cat > %{buildroot}%{_datadir}/libalternatives/$f/20.conf <<EOF
binary=%{_bindir}/vim-nox11
group=vim,vi
options=KeepArgv0
EOF
done
for f in vi vim evim rvim egview eview view rview vimdiff edit ex egvim gex gvi gview gvimdiff rgview rgvim ; do
cat > %{buildroot}%{_datadir}/libalternatives/$f/30.conf <<EOF
binary=%{_bindir}/gvim
group=vi,vim
options=KeepArgv0
EOF
done
for f in vim vi ; do
cat > %{buildroot}%{_datadir}/libalternatives/$f/19.conf <<EOF
binary=%{_bindir}/vim-small
group=vim,vi
options=KeepArgv0
EOF
done
%endif
# compat symlinks
mkdir %{buildroot}/bin
%if !0%{?usrmerged}
ln -s -f %{_bindir}/vim %{buildroot}/bin/vi
ln -s -f %{_bindir}/vim %{buildroot}/bin/vim
%endif
ln -s -f vim %{buildroot}%{_bindir}/edit
%if !0%{?usrmerged}
ln -s -f %{_bindir}/vim %{buildroot}/bin/ex
%endif
# man pages
ln -s -f vim.1.gz %{buildroot}%{_mandir}/man1/vi.1.gz
ln -s -f vim.1.gz %{buildroot}%{_mandir}/man1/ex.1.gz
# vitmp
install -m 0755 vitmp %{buildroot}%{_bindir}/vitmp
install -m 0644 %{SOURCE14} %{buildroot}%{_mandir}/man1/vitmp.1
install -m 0755 %{SOURCE15} %{buildroot}%{_datadir}/vim/%{VIM_SUBDIR}/tools/vim132
# make the vim settings more generic
ln -s -f %{VIM_SUBDIR} %{buildroot}%{_datadir}/vim/current
# additional files
install -D -m 0644 %{SOURCE3} %{buildroot}%{_datadir}/vim/current/suse.vimrc
#install -D -m 0644 /dev/null %{buildroot}%{_sysconfdir}/vimrc
install -D -m 0644 %{SOURCE8} %{buildroot}%{_sysconfdir}/gvimrc
# create site wide runtime directory
mkdir -p -m 0755 %{buildroot}%{site_runtimepath}/after
mkdir -m 0755 %{buildroot}%{site_runtimepath}/autoload
mkdir -m 0755 %{buildroot}%{site_runtimepath}/colors
mkdir -m 0755 %{buildroot}%{site_runtimepath}/doc
mkdir -m 0755 %{buildroot}%{site_runtimepath}/plugin
mkdir -m 0755 %{buildroot}%{site_runtimepath}/syntax
mkdir -m 0755 %{buildroot}%{site_runtimepath}/ftdetect
mkdir -m 0755 %{buildroot}%{site_runtimepath}/after/syntax
mkdir -m 0755 %{buildroot}%{_datadir}/vim/current/skeletons
mkdir -m 0755 %{buildroot}%{_sysconfdir}/skel
# install spec helper
install -m 0644 %{SOURCE20} %{buildroot}%{_datadir}/vim/current/skeletons/skeleton.spec
install -m 0644 %{SOURCE21} %{buildroot}%{_datadir}/vim/current/plugin/spec.vim
# desktop file for gvim
install -D -m 0644 %{SOURCE19} %{buildroot}%{_datadir}/applications/gvim.desktop
%suse_update_desktop_file gvim Utility TextEditor
#
# documentation
install -d -m 0755 %{buildroot}%{_docdir}/{,g}vim/
install -D -m 0644 \
vimrc_example1 vimrc_example2 suse.vimrc \
README.txt READMEdir/README_src.txt READMEdir/README_unix.txt \
%{buildroot}%{_docdir}/vim/
# gvim
install -D -m 0644 \
README.Japanese-XIM runtime/gvimrc_example.vim suse.gvimrc \
%{buildroot}%{_docdir}/gvim/
# remove unecessary duplicate manpages
rm -rf %{buildroot}%{_mandir}/fr.ISO8859-1/
rm -rf %{buildroot}%{_mandir}/fr.UTF-8/
rm -rf %{buildroot}%{_mandir}/pl.ISO8859-2/
rm -rf %{buildroot}%{_mandir}/pl.UTF-8/
rm -rf %{buildroot}%{_mandir}/ru.KOI8-R/
rm -rf %{buildroot}%{_mandir}/it.ISO8859-1/
rm -rf %{buildroot}%{_mandir}/it.UTF-8/
rm -rf %{buildroot}%{_mandir}/da.UTF-8/
rm -rf %{buildroot}%{_mandir}/de.UTF-8/
rm -rf %{buildroot}%{_mandir}/da.ISO8859-1/
rm -rf %{buildroot}%{_mandir}/de.ISO8859-1/
rm -Rf %{buildroot}%{_mandir}/tr.ISO8859-9/
rm -Rf %{buildroot}%{_mandir}/tr.UTF-8/
# remove unnecessary files
rm -rf %{buildroot}%{_datadir}/applications/vim.desktop
rm -rf %{buildroot}%{_datadir}/icons/locolor
# and move russian manpages to a place where they can be found
mv %{buildroot}%{_mandir}/ru.UTF-8 %{buildroot}%{_mandir}/ru
# remove some c source files
rm -f %{buildroot}%{_datadir}/vim/%{VIM_SUBDIR}/tools/*.c
rm -f %{buildroot}%{_datadir}/vim/%{VIM_SUBDIR}/macros/maze/*.c
# Remove sample server to avoid python dependency
rm %{buildroot}%{_datadir}/vim/%{VIM_SUBDIR}/tools/demoserver.py
# Create ghost files (see vim.conf)
mkdir -p %{buildroot}%{_localstatedir}/run/vi.recover
%fdupes -s %{buildroot}%{_datadir}/vim/%{VIM_SUBDIR}/lang
%fdupes -s %{buildroot}%{_datadir}/vim/%{VIM_SUBDIR}/tutor
%fdupes -s %{buildroot}%{_datadir}/vim/%{VIM_SUBDIR}/ftplugin
sed -i "s@%{_bindir}/env perl@%{_bindir}/perl@" %{buildroot}%{_datadir}/vim/%{VIM_SUBDIR}/tools/*.pl
sed -i "s@%{_bindir}/env perl@%{_bindir}/perl@" %{buildroot}%{_datadir}/vim/%{VIM_SUBDIR}/doc/vim2html.pl
%check
# vim does quite an extensive test relying on a full fledged terminal
# inside OBS, stdio is redirected to a serial console (where the build log
# is being recorded/extracted. Systemd set non-local tty by default to vt220
# in upcoming versions
export TERM=xterm
# Reset the terminal scrolling region left behind by the testsuite
trap "printf '\e[r'" EXIT
TEST_IGNORE_FLAKY=1 LC_ALL=en_US.UTF-8 make -j1 test
%if %{with libalternatives}
# with libalternatives
%pre
# removing old update-alternatives entries
if [ "$1" -gt 0 ] && [ -f %{_sbindir}/update-alternatives ] && [ ! -e %{_bindir}/vim-nox11 ]; then
%{_sbindir}/update-alternatives --remove vim %{_bindir}/vim-nox11
fi
%pre -n gvim
if [ "$1" -gt 0 ] && [ -f %{_sbindir}/update-alternatives ] && [ ! -e %{_bindir}/gvim ] ; then
%{_sbindir}/update-alternatives --remove vim %{_bindir}/gvim
fi
%pre small
if [ "$1" -gt 0 ] && [ -f %{_sbindir}/update-alternatives ] && [ ! -e %{_bindir}/vim-small ]; then
%{_sbindir}/update-alternatives --remove vim %{_bindir}/vim-small
fi
%if 0%{?suse_version} <= 1315
%post -n gvim
%icon_theme_cache_post
%postun -n gvim
%icon_theme_cache_postun
%endif
%else
# without libalternatives
%post
%{_sbindir}/update-alternatives \
--install %{_bindir}/vim vim %{_bindir}/vim-nox11 20 \
--slave %{_bindir}/vi vi %{_bindir}/vim-nox11
%postun
if [ ! -e %{_bindir}/vim-nox11 ] ; then
%{_sbindir}/update-alternatives --remove vim %{_bindir}/vim-nox11
fi
%post -n gvim
%{_sbindir}/update-alternatives \
--install %{_bindir}/vim vim %{_bindir}/gvim 30 \
--slave %{_bindir}/vi vi %{_bindir}/gvim
%if 0%{?suse_version} <= 1315
%icon_theme_cache_post
%endif
%postun -n gvim
if [ ! -e %{_bindir}/gvim ] ; then
%{_sbindir}/update-alternatives --remove vim %{_bindir}/gvim
fi
%if 0%{?suse_version} <= 1315
%icon_theme_cache_postun
%endif
%post small
%{_sbindir}/update-alternatives \
--install %{_bindir}/vim vim %{_bindir}/vim-small 19 \
--slave %{_bindir}/vi vi %{_bindir}/vim-small
%postun small
if [ ! -e %{_bindir}/vim-small ] ; then
%{_sbindir}/update-alternatives --remove vim %{_bindir}/vim-small
fi
%endif
%files
%if ! %{with libalternatives}
%ghost %{_sysconfdir}/alternatives/vim
%ghost %{_sysconfdir}/alternatives/vi
%else
%dir %{_datadir}/libalternatives
%dir %{_datadir}/libalternatives/vi
%{_datadir}/libalternatives/vi/20.conf
%dir %{_datadir}/libalternatives/vim
%{_datadir}/libalternatives/vim/20.conf
%dir %{_datadir}/libalternatives/rvim
%{_datadir}/libalternatives/rvim/20.conf
%dir %{_datadir}/libalternatives/view
%{_datadir}/libalternatives/view/20.conf
%dir %{_datadir}/libalternatives/rview
%{_datadir}/libalternatives/rview/20.conf
%dir %{_datadir}/libalternatives/ex
%{_datadir}/libalternatives/ex/20.conf
%dir %{_datadir}/libalternatives/edit
%{_datadir}/libalternatives/edit/20.conf
%dir %{_datadir}/libalternatives/vimdiff
%{_datadir}/libalternatives/vimdiff/20.conf
%endif
%{_bindir}/vim-nox11
%{_bindir}/vim
# symlinks
%if !0%{?usrmerged}
/bin/vi
/bin/vim
/bin/ex
%endif
%{_bindir}/edit
%{_bindir}/ex
%{_bindir}/rview
%{_bindir}/rvim
%{_bindir}/vi
%{_bindir}/view
%{_bindir}/vimdiff
# additional binaries
%{_bindir}/vitmp
%{_bindir}/vimtutor
%{_bindir}/gvimtutor
%{_bindir}/xxd
# man pages
%{_mandir}/man1/*
%dir %{_mandir}/da
%dir %{_mandir}/da/man1/
%{_mandir}/da/man1/*
%dir %{_mandir}/de
%dir %{_mandir}/de/man1/
%{_mandir}/de/man1/*
%dir %{_mandir}/fr
%dir %{_mandir}/fr/man1/
%{_mandir}/fr/man1/*
%dir %{_mandir}/it
%dir %{_mandir}/it/man1/
%{_mandir}/it/man1/*
%dir %{_mandir}/ru
%dir %{_mandir}/ru/man1/
%{_mandir}/ru/man1/*
%dir %{_mandir}/pl
%dir %{_mandir}/pl/man1/
%{_mandir}/pl/man1/*
%dir %{_mandir}/ja
%dir %{_mandir}/ja/man1/
%{_mandir}/ja/man1/*
%dir %{_mandir}/tr
%dir %{_mandir}/tr/man1/
%{_mandir}/tr/man1/*
# docs and data file
%license LICENSE
%doc %{_docdir}/vim
#
%dir %{_datadir}/vim/%{VIM_SUBDIR}/colors/
%dir %{_datadir}/vim/%{VIM_SUBDIR}/compiler/
%dir %{_datadir}/vim/%{VIM_SUBDIR}/doc/
%dir %{_datadir}/vim/%{VIM_SUBDIR}/ftplugin/
%dir %{_datadir}/vim/%{VIM_SUBDIR}/indent/
%dir %{_datadir}/vim/%{VIM_SUBDIR}/import/
%dir %{_datadir}/vim/%{VIM_SUBDIR}/import/dist/
%dir %{_datadir}/vim/%{VIM_SUBDIR}/keymap/
%dir %{_datadir}/vim/%{VIM_SUBDIR}/lang/
%dir %{_datadir}/vim/%{VIM_SUBDIR}/macros/
%dir %{_datadir}/vim/%{VIM_SUBDIR}/pack/
%dir %{_datadir}/vim/%{VIM_SUBDIR}/plugin/
%dir %{_datadir}/vim/%{VIM_SUBDIR}/print/
%dir %{_datadir}/vim/%{VIM_SUBDIR}/spell/
%dir %{_datadir}/vim/%{VIM_SUBDIR}/syntax/
%dir %{_datadir}/vim/%{VIM_SUBDIR}/tools/
%dir %{_datadir}/vim/%{VIM_SUBDIR}/tutor/
%dir %{_datadir}/vim/%{VIM_SUBDIR}/skeletons/
%dir %{site_runtimepath}
%dir %{site_runtimepath}/autoload/
%dir %{site_runtimepath}/colors/
%dir %{site_runtimepath}/doc/
%dir %{site_runtimepath}/plugin/
%dir %{site_runtimepath}/syntax/
%dir %{site_runtimepath}/ftdetect/
%dir %{site_runtimepath}/after/
%dir %{site_runtimepath}/after/syntax/
%files data
# exclude common files
%exclude %{_datadir}/vim/%{VIM_SUBDIR}/autoload/dist/ft.vim
%exclude %{_datadir}/vim/%{VIM_SUBDIR}/autoload/dist/script.vim
%exclude %{_datadir}/vim/%{VIM_SUBDIR}/colors/lists/default.vim
%exclude %{_datadir}/vim/%{VIM_SUBDIR}/syntax/nosyntax.vim
%exclude %{_datadir}/vim/%{VIM_SUBDIR}/syntax/resolv.vim
%exclude %{_datadir}/vim/%{VIM_SUBDIR}/syntax/sh.vim
%exclude %{_datadir}/vim/%{VIM_SUBDIR}/syntax/syncolor.vim
%exclude %{_datadir}/vim/%{VIM_SUBDIR}/syntax/synload.vim
%exclude %{_datadir}/vim/%{VIM_SUBDIR}/syntax/syntax.vim
%exclude %{_datadir}/vim/%{VIM_SUBDIR}/syntax/vim.vim
# data files
%{_datadir}/vim/%{VIM_SUBDIR}/autoload/*
%{_datadir}/vim/%{VIM_SUBDIR}/colors/*
%{_datadir}/vim/%{VIM_SUBDIR}/compiler/*
%{_datadir}/vim/%{VIM_SUBDIR}/doc/*
%{_datadir}/vim/%{VIM_SUBDIR}/ftplugin/*
%{_datadir}/vim/%{VIM_SUBDIR}/indent/*
%{_datadir}/vim/%{VIM_SUBDIR}/import/dist/*
%{_datadir}/vim/%{VIM_SUBDIR}/keymap/*
%{_datadir}/vim/%{VIM_SUBDIR}/lang/*
%{_datadir}/vim/%{VIM_SUBDIR}/macros/*
%{_datadir}/vim/%{VIM_SUBDIR}/pack/*
%{_datadir}/vim/%{VIM_SUBDIR}/plugin/*
%{_datadir}/vim/%{VIM_SUBDIR}/print/*
%{_datadir}/vim/%{VIM_SUBDIR}/skeletons/*
%{_datadir}/vim/%{VIM_SUBDIR}/spell/*
%{_datadir}/vim/%{VIM_SUBDIR}/syntax/*
%{_datadir}/vim/%{VIM_SUBDIR}/tools/*
%{_datadir}/vim/%{VIM_SUBDIR}/tutor/*
%files data-common
# we can't currently own /etc/vimrc. If we keep owning it, an
# existing, unmodified vimrc would not be removed. That results in a
# duplicated definition of SKEL_spec().
# see also https://github.com/rpm-software-management/rpm/issues/1296
#%ghost %config(noreplace) %{_sysconfdir}/vimrc
%{_datadir}/vim/current
%dir %{_datadir}/vim/
%dir %{_datadir}/vim/%{VIM_SUBDIR}/
%dir %{_datadir}/vim/%{VIM_SUBDIR}/autoload/
%dir %{_datadir}/vim/%{VIM_SUBDIR}/autoload/dist/
%dir %{_datadir}/vim/%{VIM_SUBDIR}/syntax/
%{_datadir}/vim/%{VIM_SUBDIR}/suse.vimrc
%{_datadir}/vim/%{VIM_SUBDIR}/autoload/dist/ft.vim
%{_datadir}/vim/%{VIM_SUBDIR}/autoload/dist/script.vim
%{_datadir}/vim/%{VIM_SUBDIR}/colors/lists/default.vim
%{_datadir}/vim/%{VIM_SUBDIR}/syntax/nosyntax.vim
%{_datadir}/vim/%{VIM_SUBDIR}/syntax/resolv.vim
%{_datadir}/vim/%{VIM_SUBDIR}/syntax/sh.vim
%{_datadir}/vim/%{VIM_SUBDIR}/syntax/syncolor.vim
%{_datadir}/vim/%{VIM_SUBDIR}/syntax/synload.vim
%{_datadir}/vim/%{VIM_SUBDIR}/syntax/syntax.vim
%{_datadir}/vim/%{VIM_SUBDIR}/syntax/vim.vim
%{_datadir}/vim/%{VIM_SUBDIR}/*.vim
%files -n gvim
%doc runtime/doc/gui_x11.txt
%ghost %config(missingok) %{_sysconfdir}/gvimrc
%if ! %{with libalternatives}
%ghost %{_sysconfdir}/alternatives/vim
%ghost %{_sysconfdir}/alternatives/vi
%else
%dir %{_datadir}/libalternatives
%dir %{_datadir}/libalternatives/vi
%{_datadir}/libalternatives/vi/30.conf
%dir %{_datadir}/libalternatives/vim
%{_datadir}/libalternatives/vim/30.conf
%dir %{_datadir}/libalternatives/rvim
%{_datadir}/libalternatives/rvim/30.conf
%dir %{_datadir}/libalternatives/view
%{_datadir}/libalternatives/view/30.conf
%dir %{_datadir}/libalternatives/rview
%{_datadir}/libalternatives/rview/30.conf
%dir %{_datadir}/libalternatives/eview
%{_datadir}/libalternatives/eview/30.conf
%dir %{_datadir}/libalternatives/ex
%{_datadir}/libalternatives/ex/30.conf
%dir %{_datadir}/libalternatives/edit
%{_datadir}/libalternatives/edit/30.conf
%dir %{_datadir}/libalternatives/vimdiff
%{_datadir}/libalternatives/vimdiff/30.conf
%dir %{_datadir}/libalternatives/egvim
%{_datadir}/libalternatives/egvim/30.conf
%dir %{_datadir}/libalternatives/egview
%{_datadir}/libalternatives/egview/30.conf
%dir %{_datadir}/libalternatives/evim
%{_datadir}/libalternatives/evim/30.conf
%dir %{_datadir}/libalternatives/gex
%{_datadir}/libalternatives/gex/30.conf
%dir %{_datadir}/libalternatives/gvi
%{_datadir}/libalternatives/gvi/30.conf
%dir %{_datadir}/libalternatives/gview
%{_datadir}/libalternatives/gview/30.conf
%dir %{_datadir}/libalternatives/gvimdiff
%{_datadir}/libalternatives/gvimdiff/30.conf
%dir %{_datadir}/libalternatives/rgvim
%{_datadir}/libalternatives/rgvim/30.conf
%dir %{_datadir}/libalternatives/rgview
%{_datadir}/libalternatives/rgview/30.conf
%endif
%{_bindir}/vi
%{_bindir}/vim
%{_bindir}/egview
%{_bindir}/egvim
%{_bindir}/eview
%{_bindir}/evim
%{_bindir}/gex
%{_bindir}/gvi
%{_bindir}/gview
%{_bindir}/gvim
%{_bindir}/gvimdiff
%{_bindir}/rgview
%{_bindir}/rgvim
# menu icon
%{_datadir}/applications/gvim.desktop
%{_datadir}/icons/hicolor/*/apps/gvim.*
%doc %{_docdir}/gvim
%files small
%license LICENSE
%if ! %{with libalternatives}
%ghost %{_sysconfdir}/alternatives/vim
%ghost %{_sysconfdir}/alternatives/vi
%else
%dir %{_datadir}/libalternatives
%dir %{_datadir}/libalternatives/vi
%{_datadir}/libalternatives/vi/19.conf
%dir %{_datadir}/libalternatives/vim
%{_datadir}/libalternatives/vim/19.conf
%endif
%{_bindir}/vi
%{_bindir}/vim
%{_bindir}/vim-small
%changelog