vim/vim.spec

483 lines
15 KiB
RPMSpec
Raw Normal View History

#
# 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 1428
- Updated to revision 1390, fixes the following problems * Balloon shows when cursor is in WinBar. * terminal test hangs, executing abcde. (Stucki) * Cannot drag status line or vertical separator of new terminal window. (UncleBill) * MS-Windows: drawing underline, curl and strike-throw is slow, mFallbackDC not properly updated. * Channel test for callback is flaky. * Shift-Insert doesn't always work in MS-Windows console. * Profile log may be truncated halfway a character. * No error when settting 'renderoptions' to an invalid value before starting the GUI. * CTRL-A does not work with an empty line. (Alex) * Window size wrong after maximizing with WinBar. (Lifepillar) * Cursor in terminal not always updated. * Cannot call a dict function in autoloaded dict. * Autoload script sources itself when defining function. * Configure check for selinux does not check for header file. * When recovering a file with "vim -r swapfile" the hit-enter prompt is at the top of the window. * ch_readraw() waits for NL if channel mode is NL. * Get "no write since last change" message if a terminal is open. * Local additions in help skips some files. (joshklod) * Not enough quickfix help; confusing winid. * Python 3.5 is getting old. * Cannot select modified buffers with getbufinfo(). * Wordcount test is old style. * Char not overwritten with ambiguous width char, if the ambiguous char is single width but we reserve double-width space. * getqflist() items are missing if not set, that makes it more difficult OBS-URL: https://build.opensuse.org/package/show/editors/vim?expand=0&rev=464
2017-12-15 14:24:10 +01:00
%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
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
Requires: vim-data = %{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: Vi IMproved
# Used to be in vim-plugins package
2017-06-06 12:28:21 +02:00
Group: Productivity/Editors/Vi
Obsoletes: vim-plugin-matchit <= 1.13.2
Provides: vim-plugin-matchit = 1.13.2
BuildArch: noarch
%description data
This package contains optional runtime & syntax files for vim.
%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}
- Use mercurial tags instead of applying patches one by one. This reduces unexpected failures. - Updated to revision 417, fixes the following problems * Can't build with Perl on Fedora 20. * Fold does not open after search when there is a CmdwinLeave autocommand. * "foo bar" sorts before "foo" with sort(). (John Little) * Cannot define a command only when it's used. * Cannot build. Warning for shadowed variable. (John Little) * Problem with breakindent/showbreak and tabs. * After splitting a window and setting 'breakindent' the default minimum with is not respected. * Screen updating is slow when using matches. * Inserting text for Visual block mode, with cursor movement, repeats the wrong text. (Aleksandar Ivanov) * Visual block insert breaks a multi-byte character. * Compiler warning for unused argument and unused variable. * Character after "fb" command not mapped if it might be a composing character. * Test 63 fails when run with GUI-only Vim. * Popup menu flickers too much. * When 'equalalways' is set a split may report "no room" even though there is plenty of room. * Title of quickfist list is not kept for setqflist(list, 'r'). * Accessing freed memory after using setqflist(list, 'r'). (Lcd) * Loading python may cause Vim to exit. * Get u_undo error when backspacing in Insert mode deletes more than one line break. (Ayberk Ozgur) * Mapping characters may not work after typing Esc in Insert mode. * Bad interaction between preview window and omnifunc. OBS-URL: https://build.opensuse.org/package/show/editors/vim?expand=0&rev=224
2014-08-25 13:50:01 +02:00
%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
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 %{?_smp_mflags} 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 \
LICENSE 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
make -j1 test
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
%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
# 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/*
%{_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