## ## vim.spec -- OpenPKG RPM Package Specification ## Copyright (c) 2000-2016 OpenPKG Foundation e.V. ## ## Permission to use, copy, modify, and distribute this software for ## any purpose with or without fee is hereby granted, provided that ## the above copyright notice and this permission notice appear in all ## copies. ## ## THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED ## WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF ## MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. ## IN NO EVENT SHALL THE AUTHORS AND COPYRIGHT HOLDERS AND THEIR ## CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF ## USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ## ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, ## OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT ## OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF ## SUCH DAMAGE. ## # package versions %define V_vl 8.0 %define V_vs 80 %define V_pl 0088 # package information Name: vim Summary: The Vi (Improved) Text Editor URL: http://www.vim.org/ Vendor: Bram Moolenaar et al. Packager: OpenPKG Foundation e.V. Distribution: OpenPKG Community Class: CORE Group: Editor License: Charityware Version: %{V_vl}.%{V_pl} Release: 20161117 # package options %option with_features normal %option with_multibyte yes %option with_perl no %option with_python no %option with_tcl no %option with_ruby no %option with_shell no # list of sources Source0: ftp://ftp.vim.org/pub/vim/unix/vim-%{V_vl}.tar.bz2 Source2: rc.vim Source3: vimrc Patch0: vim.patch Patch1: vim.patch.shell Patch101: ftp://ftp.vim.org/pub/vim/patches/%{V_vl}/%{V_vl}.0001 Patch102: ftp://ftp.vim.org/pub/vim/patches/%{V_vl}/%{V_vl}.0002 Patch103: ftp://ftp.vim.org/pub/vim/patches/%{V_vl}/%{V_vl}.0003 Patch104: ftp://ftp.vim.org/pub/vim/patches/%{V_vl}/%{V_vl}.0004 Patch105: ftp://ftp.vim.org/pub/vim/patches/%{V_vl}/%{V_vl}.0005 Patch106: ftp://ftp.vim.org/pub/vim/patches/%{V_vl}/%{V_vl}.0006 Patch107: ftp://ftp.vim.org/pub/vim/patches/%{V_vl}/%{V_vl}.0007 Patch108: ftp://ftp.vim.org/pub/vim/patches/%{V_vl}/%{V_vl}.0008 Patch109: ftp://ftp.vim.org/pub/vim/patches/%{V_vl}/%{V_vl}.0009 Patch110: ftp://ftp.vim.org/pub/vim/patches/%{V_vl}/%{V_vl}.0010 Patch111: ftp://ftp.vim.org/pub/vim/patches/%{V_vl}/%{V_vl}.0011 Patch112: ftp://ftp.vim.org/pub/vim/patches/%{V_vl}/%{V_vl}.0012 Patch113: ftp://ftp.vim.org/pub/vim/patches/%{V_vl}/%{V_vl}.0013 Patch114: ftp://ftp.vim.org/pub/vim/patches/%{V_vl}/%{V_vl}.0014 Patch115: ftp://ftp.vim.org/pub/vim/patches/%{V_vl}/%{V_vl}.0015 Patch116: ftp://ftp.vim.org/pub/vim/patches/%{V_vl}/%{V_vl}.0016 Patch117: ftp://ftp.vim.org/pub/vim/patches/%{V_vl}/%{V_vl}.0017 Patch118: ftp://ftp.vim.org/pub/vim/patches/%{V_vl}/%{V_vl}.0018 Patch119: ftp://ftp.vim.org/pub/vim/patches/%{V_vl}/%{V_vl}.0019 Patch120: ftp://ftp.vim.org/pub/vim/patches/%{V_vl}/%{V_vl}.0020 Patch121: ftp://ftp.vim.org/pub/vim/patches/%{V_vl}/%{V_vl}.0021 Patch122: ftp://ftp.vim.org/pub/vim/patches/%{V_vl}/%{V_vl}.0022 Patch123: ftp://ftp.vim.org/pub/vim/patches/%{V_vl}/%{V_vl}.0023 Patch124: ftp://ftp.vim.org/pub/vim/patches/%{V_vl}/%{V_vl}.0024 Patch125: ftp://ftp.vim.org/pub/vim/patches/%{V_vl}/%{V_vl}.0025 Patch126: ftp://ftp.vim.org/pub/vim/patches/%{V_vl}/%{V_vl}.0026 Patch127: ftp://ftp.vim.org/pub/vim/patches/%{V_vl}/%{V_vl}.0027 Patch128: ftp://ftp.vim.org/pub/vim/patches/%{V_vl}/%{V_vl}.0028 Patch129: ftp://ftp.vim.org/pub/vim/patches/%{V_vl}/%{V_vl}.0029 Patch130: ftp://ftp.vim.org/pub/vim/patches/%{V_vl}/%{V_vl}.0030 Patch131: ftp://ftp.vim.org/pub/vim/patches/%{V_vl}/%{V_vl}.0031 Patch132: ftp://ftp.vim.org/pub/vim/patches/%{V_vl}/%{V_vl}.0032 Patch133: ftp://ftp.vim.org/pub/vim/patches/%{V_vl}/%{V_vl}.0033 Patch134: ftp://ftp.vim.org/pub/vim/patches/%{V_vl}/%{V_vl}.0034 Patch135: ftp://ftp.vim.org/pub/vim/patches/%{V_vl}/%{V_vl}.0035 Patch136: ftp://ftp.vim.org/pub/vim/patches/%{V_vl}/%{V_vl}.0036 Patch137: ftp://ftp.vim.org/pub/vim/patches/%{V_vl}/%{V_vl}.0037 Patch138: ftp://ftp.vim.org/pub/vim/patches/%{V_vl}/%{V_vl}.0038 Patch139: ftp://ftp.vim.org/pub/vim/patches/%{V_vl}/%{V_vl}.0039 Patch140: ftp://ftp.vim.org/pub/vim/patches/%{V_vl}/%{V_vl}.0040 Patch141: ftp://ftp.vim.org/pub/vim/patches/%{V_vl}/%{V_vl}.0041 Patch142: ftp://ftp.vim.org/pub/vim/patches/%{V_vl}/%{V_vl}.0042 Patch143: ftp://ftp.vim.org/pub/vim/patches/%{V_vl}/%{V_vl}.0043 Patch144: ftp://ftp.vim.org/pub/vim/patches/%{V_vl}/%{V_vl}.0044 Patch145: ftp://ftp.vim.org/pub/vim/patches/%{V_vl}/%{V_vl}.0045 Patch146: ftp://ftp.vim.org/pub/vim/patches/%{V_vl}/%{V_vl}.0046 Patch147: ftp://ftp.vim.org/pub/vim/patches/%{V_vl}/%{V_vl}.0047 Patch148: ftp://ftp.vim.org/pub/vim/patches/%{V_vl}/%{V_vl}.0048 Patch149: ftp://ftp.vim.org/pub/vim/patches/%{V_vl}/%{V_vl}.0049 Patch150: ftp://ftp.vim.org/pub/vim/patches/%{V_vl}/%{V_vl}.0050 Patch151: ftp://ftp.vim.org/pub/vim/patches/%{V_vl}/%{V_vl}.0051 Patch152: ftp://ftp.vim.org/pub/vim/patches/%{V_vl}/%{V_vl}.0052 Patch153: ftp://ftp.vim.org/pub/vim/patches/%{V_vl}/%{V_vl}.0053 Patch154: ftp://ftp.vim.org/pub/vim/patches/%{V_vl}/%{V_vl}.0054 Patch155: ftp://ftp.vim.org/pub/vim/patches/%{V_vl}/%{V_vl}.0055 Patch156: ftp://ftp.vim.org/pub/vim/patches/%{V_vl}/%{V_vl}.0056 Patch157: ftp://ftp.vim.org/pub/vim/patches/%{V_vl}/%{V_vl}.0057 Patch158: ftp://ftp.vim.org/pub/vim/patches/%{V_vl}/%{V_vl}.0058 Patch159: ftp://ftp.vim.org/pub/vim/patches/%{V_vl}/%{V_vl}.0059 Patch160: ftp://ftp.vim.org/pub/vim/patches/%{V_vl}/%{V_vl}.0060 Patch161: ftp://ftp.vim.org/pub/vim/patches/%{V_vl}/%{V_vl}.0061 Patch162: ftp://ftp.vim.org/pub/vim/patches/%{V_vl}/%{V_vl}.0062 Patch163: ftp://ftp.vim.org/pub/vim/patches/%{V_vl}/%{V_vl}.0063 Patch164: ftp://ftp.vim.org/pub/vim/patches/%{V_vl}/%{V_vl}.0064 Patch165: ftp://ftp.vim.org/pub/vim/patches/%{V_vl}/%{V_vl}.0065 Patch166: ftp://ftp.vim.org/pub/vim/patches/%{V_vl}/%{V_vl}.0066 Patch167: ftp://ftp.vim.org/pub/vim/patches/%{V_vl}/%{V_vl}.0067 Patch168: ftp://ftp.vim.org/pub/vim/patches/%{V_vl}/%{V_vl}.0068 Patch169: ftp://ftp.vim.org/pub/vim/patches/%{V_vl}/%{V_vl}.0069 Patch170: ftp://ftp.vim.org/pub/vim/patches/%{V_vl}/%{V_vl}.0070 Patch171: ftp://ftp.vim.org/pub/vim/patches/%{V_vl}/%{V_vl}.0071 Patch172: ftp://ftp.vim.org/pub/vim/patches/%{V_vl}/%{V_vl}.0072 Patch173: ftp://ftp.vim.org/pub/vim/patches/%{V_vl}/%{V_vl}.0073 Patch174: ftp://ftp.vim.org/pub/vim/patches/%{V_vl}/%{V_vl}.0074 Patch175: ftp://ftp.vim.org/pub/vim/patches/%{V_vl}/%{V_vl}.0075 Patch176: ftp://ftp.vim.org/pub/vim/patches/%{V_vl}/%{V_vl}.0076 Patch177: ftp://ftp.vim.org/pub/vim/patches/%{V_vl}/%{V_vl}.0077 Patch178: ftp://ftp.vim.org/pub/vim/patches/%{V_vl}/%{V_vl}.0078 Patch179: ftp://ftp.vim.org/pub/vim/patches/%{V_vl}/%{V_vl}.0079 Patch180: ftp://ftp.vim.org/pub/vim/patches/%{V_vl}/%{V_vl}.0080 Patch181: ftp://ftp.vim.org/pub/vim/patches/%{V_vl}/%{V_vl}.0081 Patch182: ftp://ftp.vim.org/pub/vim/patches/%{V_vl}/%{V_vl}.0082 Patch183: ftp://ftp.vim.org/pub/vim/patches/%{V_vl}/%{V_vl}.0083 Patch184: ftp://ftp.vim.org/pub/vim/patches/%{V_vl}/%{V_vl}.0084 Patch185: ftp://ftp.vim.org/pub/vim/patches/%{V_vl}/%{V_vl}.0085 Patch186: ftp://ftp.vim.org/pub/vim/patches/%{V_vl}/%{V_vl}.0086 Patch187: ftp://ftp.vim.org/pub/vim/patches/%{V_vl}/%{V_vl}.0087 Patch188: ftp://ftp.vim.org/pub/vim/patches/%{V_vl}/%{V_vl}.0088 # build information BuildPreReq: OpenPKG, openpkg >= 20160101, ncurses PreReq: OpenPKG, openpkg >= 20160101, ncurses %if "%{with_perl}" == "yes" BuildPreReq: perl PreReq: perl %endif %if "%{with_python}" == "yes" BuildPreReq: python PreReq: python %endif %if "%{with_tcl}" == "yes" BuildPreReq: tcl PreReq: tcl %endif %if "%{with_ruby}" == "yes" BuildPreReq: ruby PreReq: ruby %endif %if "%{with_shell}" == "yes" BuildPreReq: autoconf %endif %description Vim (Vi Improved) is a text editor that is upwards compatible with the classical Unix Vi. It can be used to edit any ASCII text. It is especially useful for editing programs. Vim offers a lot of enhancements not available in the traditional Vi. For example, Vim has multi level undo, multi windows and buffers, syntax highlighting, command line editing, filename completion, on-line help, and visual selection. %track prog vim = { version = %{V_vl} url = ftp://ftp.vim.org/pub/vim/unix/ regex = vim-(\d+.\d+)\.tar\.(gz|bz2) } prog vim:patchlevel = { version = %{V_vl}.%{V_pl} url = ftp://ftp.vim.org/pub/vim/patches/%{V_vl}/ regex = (%{V_vl}\.\d+) } %prep # unpack base distribution parts %setup -q -c %patch -p0 %if "%{with_shell}" == "yes" %patch -p0 -d vim%{V_vs} -P 1 %endif # apply bundle patchsets # for patchset in 0001-1000; do # %{l_gzip} -d -c $RPM_SOURCE_DIR/%{V_vl}.$patchset.gz |\ # %{l_patch} -p0 -E -t -s >/dev/null 2>&1 || true # done # apply remaining single patches i=1 while [ $i -le %{V_pl} ]; do cat $RPM_SOURCE_DIR/%{V_vl}.`echo $i | awk '{ printf("%04d", $0); }'` |\ %{l_patch} -p0 -E -t -s >/dev/null 2>&1 || true i=`expr $i + 1` done # adjust introduction text for OpenPKG branding %{l_shtool} subst \ -e 's;Modified by;Packaged by;' \ vim%{V_vs}/src/version.c # adjust paths to global configuration files %{l_shtool} subst \ -e 's;^/\* \(#define SYS_VIMRC_FILE\).*$;\1 "%{l_prefix}/etc/vim/vimrc";' \ -e 's;^/\* \(#define SYS_GVIMRC_FILE\).*$;\1 "%{l_prefix}/etc/vim/gvimrc";' \ vim%{V_vs}/src/feature.h %if "%{with_python}" == "yes" # fix Python includes %{l_shtool} subst \ -e 's;PYTHON_CFLAGS=.*$;PYTHON_CFLAGS="`python-config --includes`";' \ vim%{V_vs}/src/auto/configure %endif %build # configure package cd vim%{V_vs}/src %if "%{with_shell}" == "yes" %{l_make} %{l_mflags} autoconf %endif CC="%{l_cc}" \ CFLAGS="%{l_cflags -O}" \ CPPFLAGS="%{l_cppflags}" \ LDFLAGS="%{l_ldflags}" \ GREP="grep" \ ./configure \ --prefix=%{l_prefix} \ --mandir=%{l_prefix}/man \ --with-local-dir=%{l_prefix} \ --with-global-runtime=%{l_prefix}/lib/vim \ --with-modified-by='%{l_openpkg_release}' \ --with-tlib=ncurses \ --without-x \ --disable-gui \ %if "%{with_features}" == "huge" --with-features=huge \ %else %if "%{with_features}" == "big" --with-features=big \ %else %if "%{with_features}" == "small" --with-features=small \ %else --with-features=normal \ %endif %endif %endif %if "%{with_multibyte}" == "yes" --enable-multibyte \ %endif %if "%{with_perl}" == "yes" --enable-perlinterp \ %else --disable-perlinterp \ %endif %if "%{with_python}" == "yes" --enable-pythoninterp \ --with-python-config-dir=%{l_prefix}/lib/python/config \ %else --disable-pythoninterp \ %endif %if "%{with_tcl}" == "yes" --enable-tclinterp \ %else --disable-tclinterp \ %endif %if "%{with_ruby}" == "yes" --enable-rubyinterp \ %else --disable-rubyinterp \ %endif --disable-nls %{l_shtool} subst \ -e 's;^\(VIMRTDIR[^=]*=\).*;\1;' \ Makefile # build package %{l_make} %{l_mflags -O} %install # perform package installation procedure ( cd vim%{V_vs}/src %{l_make} %{l_mflags} install \ prefix=$RPM_BUILD_ROOT%{l_prefix} \ MANDIR=$RPM_BUILD_ROOT%{l_prefix}/man ) || exit $? # strip down installation hierarchy strip $RPM_BUILD_ROOT%{l_prefix}/bin/vim >/dev/null 2>&1 || true rm -f $RPM_BUILD_ROOT%{l_prefix}/bin/xxd rm -f $RPM_BUILD_ROOT%{l_prefix}/man/man1/xxd.1 rm -rf $RPM_BUILD_ROOT%{l_prefix}/share/vim/tools rm -rf $RPM_BUILD_ROOT%{l_prefix}/share/vim/macros # add links for program runtime variants for link in vi ex rview rvim view vimdiff; do rm -f $RPM_BUILD_ROOT%{l_prefix}/bin/$link ln $RPM_BUILD_ROOT%{l_prefix}/bin/vim \ $RPM_BUILD_ROOT%{l_prefix}/bin/$link rm -f $RPM_BUILD_ROOT%{l_prefix}/man/man1/$link.1 ln $RPM_BUILD_ROOT%{l_prefix}/man/man1/vim.1 \ $RPM_BUILD_ROOT%{l_prefix}/man/man1/$link.1 done # create installation area for addon packages %{l_shtool} mkdir -f -p -m 755 \ $RPM_BUILD_ROOT%{l_prefix}/lib/vim # install run-command script %{l_shtool} mkdir -f -p -m 755 \ $RPM_BUILD_ROOT%{l_prefix}/etc/rc.d %{l_shtool} install -c -m 755 %{l_value -s -a} \ %{SOURCE rc.vim} $RPM_BUILD_ROOT%{l_prefix}/etc/rc.d/ # install default configuration %{l_shtool} mkdir -f -p -m 755 \ $RPM_BUILD_ROOT%{l_prefix}/etc/vim %{l_shtool} install -c -m 755 %{l_value -s -a} \ %{SOURCE vimrc} $RPM_BUILD_ROOT%{l_prefix}/etc/vim/ # determine installation files %{l_rpmtool} files -v -ofiles -r$RPM_BUILD_ROOT \ %{l_files_std} \ '%config %{l_prefix}/etc/vim/vimrc' %files -f files %clean %preun if [ $1 -eq 0 ]; then # remove a (usually empty) "helptags" file of addon packages rm -f $RPM_INSTALL_PREFIX/lib/vim/doc/tags >/dev/null 2>&1 || true fi