# # spec file for package vim # # Copyright (c) 2023 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 1270 %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 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 %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.* rm runtime/indent/testdir/vim.* %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 < %{buildroot}%{_datadir}/libalternatives/$f/30.conf < %{buildroot}%{_datadir}/libalternatives/$f/19.conf <