# # spec file for package vim # # Copyright (c) 2018 SUSE LINUX GmbH, Nuernberg, Germany. # # 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 http://bugs.opensuse.org/ # %define pkg_version 8.0 %define patchlevel 1568 %define patchlevel_compact %{patchlevel} %define VIM_SUBDIR vim80 %define site_runtimepath %{_datadir}/vim/site %define make make VIMRCLOC=%{_sysconfdir} VIMRUNTIMEDIR=%{_datadir}/vim/current MAKE="make -e" %{?_smp_mflags} %bcond_without python2 Name: vim Version: %{pkg_version}.%{patchlevel_compact} Release: 0 Summary: Vi IMproved License: Vim Group: Productivity/Editors/Vi 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 Source23: apparmor.vim Source24: gvim.svg 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 Patch100: vim73-no-static-libpython.patch Patch101: vim-8.0.1568-defaults.patch BuildRequires: autoconf BuildRequires: db-devel BuildRequires: fdupes BuildRequires: gettext-devel BuildRequires: gpm-devel BuildRequires: krb5-mini BuildRequires: libacl-devel BuildRequires: ncurses-devel BuildRequires: perl BuildRequires: pkgconfig %if %{with python2} BuildRequires: python2-devel %endif # Needed to convert svg to png BuildRequires: rsvg-view BuildRequires: ruby-devel BuildRequires: update-desktop-files BuildRequires: pkgconfig(gtk+-3.0) BuildRequires: pkgconfig(lua) BuildRequires: pkgconfig(python3) BuildRequires: pkgconfig(xt) Requires(post): update-alternatives Requires(postun): update-alternatives Recommends: vim-data = %{version}-%{release} Requires: vim-data-common = %{version}-%{release} Conflicts: vim-base < 8.0 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} %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 # Used to be in vim-plugins package Group: Productivity/Editors/Vi Obsoletes: vim-plugin-matchit <= 1.13.2 Provides: vim-plugin-matchit = 1.13.2 Requires: vim-data-common = %{version}-%{release} 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/Editors/Vi BuildArch: noarch %description data-common This package contains common runtime & syntax files for vim and gvim. %package -n gvim Summary: A GUI for Vi Group: Productivity/Editors/Vi Requires: gvim_client Requires: vim-data = %{version}-%{release} Requires(post): update-alternatives Requires(postun): update-alternatives Conflicts: gvim < 8.0 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. %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 %patch100 -p1 %patch101 -p1 cp %{SOURCE3} %{SOURCE4} %{SOURCE5} %{SOURCE8} %{SOURCE10} . # Unreliable tests # See also disable-unreliable-tests.patch rm src/testdir/test_cmdline.* rm src/testdir/test_channel.* rm src/testdir/gen_opt_test.vim rm src/testdir/test_options.* rm src/testdir/test_terminal* 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-features=huge \ --with-compiledby='http://www.opensuse.org/' \ %if 0%{?suse_version} > 1210 --with-tlib=tinfo \ %else --with-tlib=ncurses \ %endif --with-global-runtime=%{site_runtimepath} \ --enable-luainterp=dynamic \ --enable-perlinterp=yes \ --enable-python3interp=dynamic \ --enable-rubyinterp=dynamic" %if %{with python2} COMMON_OPTIONS="${COMMON_OPTIONS} --enable-pythoninterp=yes" %else COMMON_OPTIONS="${COMMON_OPTIONS} --enable-pythoninterp=no" %endif export GUI_OPTIONS="\ --disable-icon-cache-update \ --enable-xim \ --enable-fontset \ --enable-gui=gtk3" pushd src autoconf popd # build vim %configure ${COMMON_OPTIONS} --disable-gui --disable-gpm --with-x=no 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 ${COMMON_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 directory to have the icons installed and convert them to all hicolor expected sizes. for size in %{_datadir}/icons/hicolor/*[0-9]x[0-9]*; do SIZE=$(echo $size | awk -Fx {'print $2}') install -d -m 0755 %{buildroot}%{_datadir}/icons/hicolor/${SIZE}x${SIZE}/apps rsvg-convert -h ${SIZE} -w ${SIZE} %{SOURCE24} -o %{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 and # fix its symlinks. e* was added here as it doesnt make much sense in # console mv %{buildroot}%{_bindir}/vim %{buildroot}%{_bindir}/gvim for f in egvim egview eview evim gex gvi gview gvimdiff rgview rgvim ; do ln -s -vf gvim %{buildroot}%{_bindir}/$f done # install vim install -D -m 0755 vim-nox11 %{buildroot}%{_bindir}/vim-nox11 mkdir -p %{buildroot}%{_sysconfdir}/alternatives ln -s -f %{_sysconfdir}/alternatives/vim %{buildroot}%{_bindir}/vim # compat symlinks mkdir %{buildroot}/bin ln -s -f %{_bindir}/vim %{buildroot}/bin/vi ln -s -f %{_bindir}/vim %{buildroot}/bin/vim ln -s -f vim %{buildroot}%{_bindir}/vi ln -s -f vim %{buildroot}%{_bindir}/edit ln -s -f %{_bindir}/vim %{buildroot}/bin/ex # 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}%{_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 # 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/ cp runtime/doc/uganda.txt LICENSE 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/ # 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 %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=linux # Reset the terminal scrolling region left behind by the testsuite trap "printf '\e[r'" EXIT # Look for "TEST FAILURE" in the build log %ifarch ppc ppc64 ppc64le LC_ALL=en_US.UTF-8 make -j1 test || { echo "Ignore transient errors for PowerPC. boo#1072651"; } %else LC_ALL=en_US.UTF-8 make -j1 test %endif %post %{_sbindir}/update-alternatives --install %{_bindir}/vim vim %{_bindir}/vim-nox11 20 %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 %icon_theme_cache_post %postun -n gvim if [ ! -e %{_bindir}/gvim ] ; then %{_sbindir}/update-alternatives --remove vim %{_bindir}/gvim fi %icon_theme_cache_postun %files %config(noreplace) %{_sysconfdir}/vimrc %ghost %{_sysconfdir}/alternatives/vim %{_bindir}/vim-nox11 %{_bindir}/vim # symlinks /bin/vi /bin/vim /bin/ex %{_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}/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/* # docs and data file %license LICENSE %doc %{_docdir}/vim # %{_datadir}/vim/current %dir %{_datadir}/vim/ %dir %{_datadir}/vim/%{VIM_SUBDIR}/ %dir %{_datadir}/vim/%{VIM_SUBDIR}/autoload/ %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}/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}/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}/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 %{_datadir}/vim/%{VIM_SUBDIR}/autoload/dist/ft.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 %{_datadir}/vim/%{VIM_SUBDIR}/rgb.txt %files -n gvim %doc runtime/doc/gui_x11.txt %ghost %config(missingok) %{_sysconfdir}/gvimrc %ghost %{_sysconfdir}/alternatives/vim %{_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 %changelog