LogoopenSUSE Build Service > Projects
Sign Up | Log In

View File vim.spec of Package vim (Project editors)

#
# spec file for package vim
#
# Copyright (c) 2013 SUSE LINUX Products 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 7.4
%define official_ptchlvl 052
%define VIM_SUBDIR vim74
%define site_runtimepath /usr/share/vim/site
%define make make VIMRCLOC=/etc VIMRUNTIMEDIR=/usr/share/vim/current MAKE="make -e" %{?_smp_mflags}

Name:           vim
Version:        7.4.%{official_ptchlvl}
Release:        0
BuildRequires:  db-devel
%if 0%{?suse_version} > 1020
BuildRequires:  fdupes
%endif
BuildRequires:  autoconf
BuildRequires:  gettext-devel
BuildRequires:  gtk2-devel
%if 0%{?suse_version} > 1200
BuildRequires:  pkgconfig(xt)
%endif
BuildRequires:  krb5-mini
BuildRequires:  libacl-devel
BuildRequires:  lua-devel
BuildRequires:  ncurses-devel
BuildRequires:  perl
BuildRequires:  pkgconfig
BuildRequires:  python-devel
BuildRequires:  python3-devel
BuildRequires:  ruby-devel
BuildRequires:  update-desktop-files
#
BuildRoot:      %{_tmppath}/%{name}-%{version}-build
%if 0%{?suse_version} > 1130
BuildRequires:  gpm-devel
%else
BuildRequires:  gpm
%endif
#
PreReq:         fileutils
PreReq:         sh-utils
#
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
#
%if 0%{?suse_version} >= 1010
Recommends:     vim-data = %{version}-%{release}
%endif
Summary:        Vi IMproved
License:        SUSE-Vim
Group:          Productivity/Editors/Vi
#
Url:            http://www.vim.org/
Source:         ftp://ftp.vim.org/pub/vim/unix/vim-%{pkg_version}.tar.bz2
Source3:        suse.vimrc
Source4:        vimrc_example1
Source5:        vimrc_example2
Source8:        suse.gvimrc
Source10:       README.Japanese-XIM
Source13:       vitmp.c
Source14:       vitmp.1
Source15:       vim132
Source18:       missing-vim-client
Source19:       gvim.desktop
Source20:       spec.skeleton
Source23:       apparmor.vim
Source98:       %{name}-7.4-patches.tar.bz2
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
Patch19:        %{name}-7.3-diff_check.patch
Patch21:        %{name}-7.3-filetype_changes.patch
Patch22:        %{name}-7.4-filetype_mine.patch
Patch23:        %{name}-7.4-python-decl.patch
Patch100:       vim-7.1.314-CVE-2009-0316-debian.patch
Patch101:       vim73-no-static-libpython.patch
%{perl_requires}
%{?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.

Vi is available for the AMIGA, MS-DOS, Windows NT, and various versions
of UNIX.

For SUSE Linux, Vim is used as /usr/bin/vi.

%package data
Summary:        Vi IMproved
Group:          Productivity/Editors/Vi
%if 0%{?suse_version} >= 1120
BuildArch:      noarch
%endif
# Used to be in vim-plugins package
Obsoletes:      vim-plugin-matchit <= 1.13.2
Provides:       vim-plugin-matchit = 1.13.2

%description data
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.

Vi is available for the AMIGA, MS-DOS, Windows NT, and various versions
of UNIX.

For SUSE Linux, Vim is used as /usr/bin/vi.

Package vim-data contains the runtime files.

%package -n gvim
Summary:        A GUI for Vi
Group:          Productivity/Editors/Vi
Requires:       gvim_client
Requires:       vim-data
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
%{perl_requires}
%{?libperl_requires}

%description -n gvim
Copy and modify /usr/share/vim/current/gvimrc to ~/.gvimrc if needed.

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 %{VIM_SUBDIR} -b 98
for p in ../vim-%{pkg_version}-patches/%{pkg_version}*; do
    test -e $p || break
    test ${p#*/%{pkg_version}.} -le %{official_ptchlvl} || exit 1
    echo Patch $p
    patch -s -p0 < $p
done
unset p
%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
%patch19 -p1
%patch21 -p1
%patch22 -p1
%patch23 -p1
%patch100 -p1
%patch101
cp %{SOURCE3} %{SOURCE4} %{SOURCE5} %{SOURCE8} %{SOURCE10} .

# newer perl? ugly hack to fix build anyway.
%if 0%{?suse_version} > 1210
sed -i -e 's/^XS(XS_/XS_INTERNAL(XS_/' src/if_perl.xs
%endif

%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 \
    --enable-sniff \
    --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-pythoninterp=dynamic \
    --enable-python3interp=dynamic \
    --enable-rubyinterp=dynamic"

export GUI_OPTIONS="\
    --enable-xim \
    --enable-fontset \
    --enable-gui=gtk2 \
    --enable-gtk2-check"

pushd src
autoconf
popd

# build vim
%configure ${COMMON_OPTIONS} --without-x --disable-gui --disable-gpm
sed -i -e 's|define HAVE_DATE_TIME 1|undef HAVE_DATE_TIME|' src/auto/config.h
%make
cp src/vim vim

# build gvim
make distclean
%configure ${COMMON_OPTIONS} ${GUI_OPTIONS}
sed -i -e 's|define HAVE_DATE_TIME 1|undef HAVE_DATE_TIME|' src/auto/config.h
%make

#
# build vitmp
gcc %{optflags} %{SOURCE13} -o vitmp

%install
# create icon directory to have the icon from the tarball installed
install -d -m 0755 %{buildroot}%{_datadir}/icons/hicolor/48x48/apps
%makeinstall STRIP=:

# 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 %{buildroot}/bin/vim

# compat symlinks
ln -s -f /bin/vim   %{buildroot}/bin/vi
ln -s -f /bin/vim   %{buildroot}%{_bindir}/vim
ln -s -f /bin/vim   %{buildroot}%{_bindir}/vi
ln -s -f vim        %{buildroot}%{_bindir}/edit
ln -s -f /bin/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 README_src.txt README_unix.txt \
  %{buildroot}%{_docdir}/vim/
# gvim
install -D -m 0644 \
    README.Japanese-XIM runtime/gvimrc_example.vim suse.gvimrc \
  %{buildroot}%{_docdir}/gvim/
#
# stupid helper
install -m 0755 %{SOURCE18} %{buildroot}%{_datadir}/vim/current/tools/missing-vim-client
# 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/

# 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
#
# Create ghost files (see vim.conf)
mkdir -p %{buildroot}/var/run/vi.recover

%if 0%{?suse_version} > 1020
%fdupes -s %{buildroot}%{_datadir}/vim/%{VIM_SUBDIR}/lang
%fdupes -s %{buildroot}%{_datadir}/vim/%{VIM_SUBDIR}/tutor
%fdupes -s %{buildroot}%{_datadir}/vim/%{VIM_SUBDIR}/ftplugin
%endif

%check
# Look for "TEST FAILURE" in the build log
# Currently all tests pass
make test

%files
%defattr(-,root,root,-)
%config(noreplace) %{_sysconfdir}/vimrc
# symlinks
/bin/vi
/bin/vim
/bin/ex
%{_bindir}/edit
%{_bindir}/ex
%{_bindir}/rview
%{_bindir}/rvim
%{_bindir}/vi
%{_bindir}/vim
%{_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}/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/
#
%{_datadir}/vim/%{VIM_SUBDIR}/bugreport.vim
%{_datadir}/vim/%{VIM_SUBDIR}/evim.vim
%{_datadir}/vim/%{VIM_SUBDIR}/filetype.vim
%{_datadir}/vim/%{VIM_SUBDIR}/ftoff.vim
%{_datadir}/vim/%{VIM_SUBDIR}/ftplugin.vim
%{_datadir}/vim/%{VIM_SUBDIR}/ftplugof.vim
%{_datadir}/vim/%{VIM_SUBDIR}/indent.vim
%{_datadir}/vim/%{VIM_SUBDIR}/indoff.vim
%{_datadir}/vim/%{VIM_SUBDIR}/optwin.vim
%{_datadir}/vim/%{VIM_SUBDIR}/scripts.vim
%{_datadir}/vim/%{VIM_SUBDIR}/syntax/syntax.vim
%{_datadir}/vim/%{VIM_SUBDIR}/skeletons/skeleton.spec
# stupid helper
# THIS BREAKS THE BUILD: %{_datadir}/vim/current/tools/missing-vim-client
%{_datadir}/vim/%{VIM_SUBDIR}/tools/missing-vim-client

%files data
%defattr(-,root,root,-)
# 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}/plugin/*
%{_datadir}/vim/%{VIM_SUBDIR}/print/*
%{_datadir}/vim/%{VIM_SUBDIR}/spell/*
%{_datadir}/vim/%{VIM_SUBDIR}/syntax/*
%exclude %{_datadir}/vim/%{VIM_SUBDIR}/syntax/syntax.vim
#%{_datadir}/vim/%{VIM_SUBDIR}/tools/blink.c
%{_datadir}/vim/%{VIM_SUBDIR}/tools/ccfilter.1
#%{_datadir}/vim/%{VIM_SUBDIR}/tools/ccfilter.c
%{_datadir}/vim/%{VIM_SUBDIR}/tools/ccfilter_README.txt
%{_datadir}/vim/%{VIM_SUBDIR}/tools/efm_filter.pl
%{_datadir}/vim/%{VIM_SUBDIR}/tools/efm_filter.txt
%{_datadir}/vim/%{VIM_SUBDIR}/tools/efm_perl.pl
%{_datadir}/vim/%{VIM_SUBDIR}/tools/mve.awk
%{_datadir}/vim/%{VIM_SUBDIR}/tools/mve.txt
%{_datadir}/vim/%{VIM_SUBDIR}/tools/pltags.pl
%{_datadir}/vim/%{VIM_SUBDIR}/tools/README.txt
%{_datadir}/vim/%{VIM_SUBDIR}/tools/ref
%{_datadir}/vim/%{VIM_SUBDIR}/tools/shtags.1
%{_datadir}/vim/%{VIM_SUBDIR}/tools/shtags.pl
%{_datadir}/vim/%{VIM_SUBDIR}/tools/unicode.vim
%{_datadir}/vim/%{VIM_SUBDIR}/tools/vim132
%{_datadir}/vim/%{VIM_SUBDIR}/tools/vimm
%{_datadir}/vim/%{VIM_SUBDIR}/tools/vimspell.sh
%{_datadir}/vim/%{VIM_SUBDIR}/tools/vimspell.txt
%{_datadir}/vim/%{VIM_SUBDIR}/tools/vim_vs_net.cmd
#%{_datadir}/vim/%{VIM_SUBDIR}/tools/xcmdsrv_client.c
%{_datadir}/vim/%{VIM_SUBDIR}/tutor/*
%{_datadir}/vim/%{VIM_SUBDIR}/delmenu.vim
%{_datadir}/vim/%{VIM_SUBDIR}/gvimrc_example.vim
%{_datadir}/vim/%{VIM_SUBDIR}/menu.vim
%{_datadir}/vim/%{VIM_SUBDIR}/mswin.vim
%{_datadir}/vim/%{VIM_SUBDIR}/synmenu.vim
%{_datadir}/vim/%{VIM_SUBDIR}/vimrc_example.vim

%files -n gvim
%defattr(-,root,root,-)
%ghost %config(missingok) %{_sysconfdir}/gvimrc
%{_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/48x48/apps/gvim.png
%doc %{_docdir}/gvim

%changelog