ng0 writes: > * gnu/packages/vim.scm (vim-full): New variable. > * gnu/packages/patches/vim-8.0.0003.patch: New file. > * gnu/packages/patches/vim-8.0.0004.patch: New file. > * gnu/packages/patches/vim-8.0.0005.patch: New file. > * gnu/local.mk (dist_patch_DATA): Add patches. > --- > gnu/local.mk | 3 ++ > gnu/packages/patches/vim-8.0.0003.patch | 87 +++++++++++++++++++++++++++++++++ > gnu/packages/patches/vim-8.0.0004.patch | 60 +++++++++++++++++++++++ > gnu/packages/patches/vim-8.0.0005.patch | 45 +++++++++++++++++ > gnu/packages/vim.scm | 81 ++++++++++++++++++++++++++++++ > 5 files changed, 276 insertions(+) > create mode 100644 gnu/packages/patches/vim-8.0.0003.patch > create mode 100644 gnu/packages/patches/vim-8.0.0004.patch > create mode 100644 gnu/packages/patches/vim-8.0.0005.patch > > diff --git a/gnu/local.mk b/gnu/local.mk > index 526756f..79c1326 100644 > --- a/gnu/local.mk > +++ b/gnu/local.mk > @@ -874,6 +874,9 @@ dist_patch_DATA = \ > %D%/packages/patches/util-linux-tests.patch \ > %D%/packages/patches/upower-builddir.patch \ > %D%/packages/patches/valgrind-enable-arm.patch \ > + %D%/packages/patches/vim-8.0.0003.patch \ > + %D%/packages/patches/vim-8.0.0004.patch \ > + %D%/packages/patches/vim-8.0.0005.patch \ > %D%/packages/patches/vorbis-tools-CVE-2014-9638+CVE-2014-9639.patch \ > %D%/packages/patches/vorbis-tools-CVE-2014-9640.patch \ > %D%/packages/patches/vorbis-tools-CVE-2015-6749.patch \ > diff --git a/gnu/packages/patches/vim-8.0.0003.patch b/gnu/packages/patches/vim-8.0.0003.patch > new file mode 100644 > index 0000000..11e9c91 > --- /dev/null > +++ b/gnu/packages/patches/vim-8.0.0003.patch > @@ -0,0 +1,87 @@ > +To: vim_dev@googlegroups.com > +Subject: Patch 8.0.0003 > +Fcc: outbox > +From: Bram Moolenaar > +Mime-Version: 1.0 > +Content-Type: text/plain; charset=UTF-8 > +Content-Transfer-Encoding: 8bit > +------------ > + > +Patch 8.0.0003 > +Problem: getwinvar() returns wrong Value of boolean and number options, > + especially non big endian systems. (James McCoy) > +Solution: Cast the pointer to long or int. (closes #1060) > +Files: src/option.c, src/testdir/test_bufwintabinfo.vim > + > + > +*** vim80/src/option.c 2016-09-02 19:26:03.000000000 +0200 > +--- vim80/src/option.c 2016-09-12 19:20:38.051099762 +0200 > +*************** > +*** 12363,12370 **** > + { > + if (opt->flags & P_STRING) > + dict_add_nr_str(d, opt->fullname, 0L, *(char_u **)varp); > + else > +! dict_add_nr_str(d, opt->fullname, *varp, NULL); > + } > + } > + } > +--- 12363,12372 ---- > + { > + if (opt->flags & P_STRING) > + dict_add_nr_str(d, opt->fullname, 0L, *(char_u **)varp); > ++ else if (opt->flags & P_NUM) > ++ dict_add_nr_str(d, opt->fullname, *(long *)varp, NULL); > + else > +! dict_add_nr_str(d, opt->fullname, *(int *)varp, NULL); > + } > + } > + } > +*** vim80/src/testdir/test_bufwintabinfo.vim 2016-08-27 21:14:58.000000000 +0200 > +--- vim80/src/testdir/test_bufwintabinfo.vim 2016-09-12 19:31:06.346360420 +0200 > +*************** > +*** 87,95 **** > +--- 87,103 ---- > + endfunc > + > + function Test_get_win_options() > ++ if has('folding') > ++ set foldlevel=999 > ++ endif > ++ set list > + let opts = getwinvar(1, '&') > + call assert_equal(v:t_dict, type(opts)) > + call assert_equal(0, opts.linebreak) > ++ call assert_equal(1, opts.list) > ++ if has('folding') > ++ call assert_equal(999, opts.foldlevel) > ++ endif > + if has('signs') > + call assert_equal('auto', opts.signcolumn) > + endif > +*************** > +*** 97,103 **** > +--- 105,116 ---- > + let opts = gettabwinvar(1, 1, '&') > + call assert_equal(v:t_dict, type(opts)) > + call assert_equal(0, opts.linebreak) > ++ call assert_equal(1, opts.list) > + if has('signs') > + call assert_equal('auto', opts.signcolumn) > + endif > ++ set list& > ++ if has('folding') > ++ set foldlevel=0 > ++ endif > + endfunc > +*** vim80/src/version.c 2016-09-12 16:30:42.348454179 +0200 > +--- vim80/src/version.c 2016-09-12 19:24:10.184148642 +0200 > +*************** > +*** 766,767 **** > +--- 766,769 ---- > + { /* Add new patch number below this line */ > ++ /**/ > ++ 3, > + /**/ > + > +-- > diff --git a/gnu/packages/patches/vim-8.0.0004.patch b/gnu/packages/patches/vim-8.0.0004.patch > new file mode 100644 > index 0000000..5d4071b > --- /dev/null > +++ b/gnu/packages/patches/vim-8.0.0004.patch > @@ -0,0 +1,60 @@ > +To: vim_dev@googlegroups.com > +Subject: Patch 8.0.0004 > +Fcc: outbox > +From: Bram Moolenaar > +Mime-Version: 1.0 > +Content-Type: text/plain; charset=UTF-8 > +Content-Transfer-Encoding: 8bit > +------------ > + > +Patch 8.0.0004 > +Problem: A string argument for function() that is not a function name > + results in an error message with NULL. (Christian Brabandt) > +Solution: Use the argument for the error message. > +Files: src/evalfunc.c, src/testdir/test_expr.vim > + > + > +*** vim80/src/evalfunc.c 2016-09-10 13:39:30.000000000 +0200 > +--- vim80/src/evalfunc.c 2016-09-13 23:04:02.917786784 +0200 > +*************** > +*** 3612,3618 **** > + > + if (s == NULL || *s == NUL || (use_string && VIM_ISDIGIT(*s)) > + || (is_funcref && trans_name == NULL)) > +! EMSG2(_(e_invarg2), s); > + /* Don't check an autoload name for existence here. */ > + else if (trans_name != NULL && (is_funcref > + ? find_func(trans_name) == NULL > +--- 3612,3618 ---- > + > + if (s == NULL || *s == NUL || (use_string && VIM_ISDIGIT(*s)) > + || (is_funcref && trans_name == NULL)) > +! EMSG2(_(e_invarg2), use_string ? get_tv_string(&argvars[0]) : s); > + /* Don't check an autoload name for existence here. */ > + else if (trans_name != NULL && (is_funcref > + ? find_func(trans_name) == NULL > +*** vim80/src/testdir/test_expr.vim 2016-09-04 21:41:26.000000000 +0200 > +--- vim80/src/testdir/test_expr.vim 2016-09-13 23:03:20.426385157 +0200 > +*************** > +*** 439,444 **** > +--- 439,447 ---- > + let s:fref = function(s:f) > + call assert_equal(v:t_string, s:fref('x')) > + call assert_fails("call function('s:f')", 'E700:') > ++ > ++ call assert_fails("call function('foo()')", 'E475:') > ++ call assert_fails("call function('foo()')", 'foo()') > + endfunc > + > + func Test_funcref() > +*** vim80/src/version.c 2016-09-12 19:51:07.689659657 +0200 > +--- vim80/src/version.c 2016-09-14 22:06:19.364036465 +0200 > +*************** > +*** 766,767 **** > +--- 766,769 ---- > + { /* Add new patch number below this line */ > ++ /**/ > ++ 4, > + /**/ > + > +-- > diff --git a/gnu/packages/patches/vim-8.0.0005.patch b/gnu/packages/patches/vim-8.0.0005.patch > new file mode 100644 > index 0000000..ee2b831 > --- /dev/null > +++ b/gnu/packages/patches/vim-8.0.0005.patch > @@ -0,0 +1,45 @@ > +To: vim_dev@googlegroups.com > +Subject: Patch 8.0.0005 > +Fcc: outbox > +From: Bram Moolenaar > +Mime-Version: 1.0 > +Content-Type: text/plain; charset=UTF-8 > +Content-Transfer-Encoding: 8bit > +------------ > + > +Patch 8.0.0005 > +Problem: Netbeans test fails with Python 3. (Jonathonf) > +Solution: Encode the string before sending it. (closes #1070) > +Files: src/testdir/test_netbeans.py > + > + > +*** vim80/src/testdir/test_netbeans.py 2016-09-09 15:27:58.000000000 +0200 > +--- vim80/src/testdir/test_netbeans.py 2016-09-14 22:22:03.574860055 +0200 > +*************** > +*** 52,58 **** > + return > + > + if len(response) > 0: > +! self.request.sendall(response) > + # Write the respoinse into the file, so that the test can knows > + # the command was sent. > + with open("Xnetbeans", "a") as myfile: > +--- 52,58 ---- > + return > + > + if len(response) > 0: > +! self.request.sendall(response.encode('utf-8')) > + # Write the respoinse into the file, so that the test can knows > + # the command was sent. > + with open("Xnetbeans", "a") as myfile: > +*** vim80/src/version.c 2016-09-14 22:16:09.863803610 +0200 > +--- vim80/src/version.c 2016-09-14 22:22:39.922351477 +0200 > +*************** > +*** 766,767 **** > +--- 766,769 ---- > + { /* Add new patch number below this line */ > ++ /**/ > ++ 5, > + /**/ > + > +-- > diff --git a/gnu/packages/vim.scm b/gnu/packages/vim.scm > index b1ee527..1b1fe60 100644 > --- a/gnu/packages/vim.scm > +++ b/gnu/packages/vim.scm > @@ -1,6 +1,7 @@ > ;;; GNU Guix --- Functional package management for GNU > ;;; Copyright © 2013 Cyril Roelandt > ;;; Copyright © 2016 Efraim Flashner > +;;; Copyright © 2016 ng0 > ;;; > ;;; This file is part of GNU Guix. > ;;; > @@ -26,6 +27,21 @@ > #:use-module (gnu packages gawk) > #:use-module (gnu packages ncurses) > #:use-module (gnu packages perl) > + #:use-module (gnu packages ruby) > + #:use-module (gnu packages acl) > + #:use-module (gnu packages attr) > + #:use-module (gnu packages fontutils) > + #:use-module (gnu packages gettext) > + #:use-module (gnu packages glib) > + #:use-module (gnu packages gtk) > + #:use-module (gnu packages image) > + #:use-module (gnu packages linux) > + #:use-module (gnu packages lua) > + #:use-module (gnu packages pkg-config) > + #:use-module (gnu packages python) > + #:use-module (gnu packages tcl) > + #:use-module (gnu packages xdisorg) > + #:use-module (gnu packages xorg) > #:use-module (gnu packages admin) ; For GNU hostname > #:use-module (gnu packages shells)) > > @@ -79,3 +95,68 @@ that many consider it an entire IDE. It's not just for programmers, though. > Vim is perfect for all kinds of text editing, from composing email to editing > configuration files.") > (license license:vim))) > + > +(define-public vim-full > + (package > + (inherit vim) > + (name "vim-full") > + (version (package-version vim)) > + (source > + (origin > + (method url-fetch) > + (uri (string-append "ftp://ftp.vim.org/pub/vim/unix/vim-" > + version ".tar.bz2")) > + (sha256 > + (base32 > + "1s34rf8089klsbdx5l0iw7vjymir0kzfrx8wb30s31wygnq29axc")) > + ;; Patches need to be applied sequentially. 8.0 is the release of > + ;; vim version 8.0.0002 so we start at 8.0.0003 > + (patches (search-patches "vim-8.0.0003.patch" > + "vim-8.0.0004.patch" > + "vim-8.0.0005.patch")))) > + (arguments > + `(#:configure-flags > + (list (string-append "--with-lua-prefix=" > + (assoc-ref %build-inputs "lua")) > + "--with-features=huge" > + "--enable-python3interp=yes" > + "--enable-perlinterp=yes" > + "--enable-rubyinterp=yes" > + "--enable-tclinterp=yes" > + "--enable-luainterp=yes" > + "--enable-cscope" > + "--enable-sniff" > + "--enable-multibyte" > + "--enable-xim" > + "--disable-selinux" > + "--enable-gui") > + ,@(package-arguments vim))) > + (native-inputs > + `(("pkg-config" ,pkg-config))) > + (inputs > + `(("acl" ,acl) > + ("atk" ,atk) > + ("attr" ,attr) > + ("cairo" ,cairo) > + ("fontconfig" ,fontconfig) > + ("freetype" ,freetype) > + ("gdk-pixbuf" ,gdk-pixbuf) > + ("gettext" ,gnu-gettext) > + ("glib" ,glib) > + ("gpm" ,gpm) > + ("gtk" ,gtk+-2) > + ("harfbuzz" ,harfbuzz) > + ("libice" ,libice) > + ("libpng" ,libpng) > + ("libsm" ,libsm) > + ("libx11" ,libx11) > + ("libxdmcp" ,libxdmcp) > + ("libxt" ,libxt) > + ("libxpm" ,libxpm) > + ("lua" ,lua) > + ("pango" ,pango) > + ("pixman" ,pixman) > + ("python" ,python) > + ("ruby" ,ruby) > + ("tcl" ,tcl) > + ,@(package-inputs vim))))) "guix lint" complains about the patches not starting with the package name ("vim-full" in this case), but otherwise everything looks good.