From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:32895) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ejYI1-0002IH-U4 for guix-patches@gnu.org; Wed, 07 Feb 2018 17:34:08 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ejYHy-0006iI-Mm for guix-patches@gnu.org; Wed, 07 Feb 2018 17:34:05 -0500 Received: from debbugs.gnu.org ([208.118.235.43]:53896) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1ejYHy-0006iC-GS for guix-patches@gnu.org; Wed, 07 Feb 2018 17:34:02 -0500 Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1ejYHy-0005q0-9u for guix-patches@gnu.org; Wed, 07 Feb 2018 17:34:02 -0500 Subject: [bug#30385] Add vim-build-system Resent-Message-ID: Received: from eggs.gnu.org ([2001:4830:134:3::10]:60720) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ejYEr-0000pG-Gy for guix-patches@gnu.org; Wed, 07 Feb 2018 17:30:52 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ejYEo-0004vt-8A for guix-patches@gnu.org; Wed, 07 Feb 2018 17:30:49 -0500 Received: from aibo.runbox.com ([91.220.196.211]:50438) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1ejYEn-0004vM-Mn for guix-patches@gnu.org; Wed, 07 Feb 2018 17:30:46 -0500 Received: from [10.9.9.212] (helo=mailfront12.runbox.com) by mailtransmit03.runbox with esmtp (Exim 4.86_2) (envelope-from ) id 1ejYEl-0000aC-E9 for guix-patches@gnu.org; Wed, 07 Feb 2018 23:30:43 +0100 Received: from dslb-088-078-082-190.088.078.pools.vodafone-ip.de ([88.78.82.190] helo=localhost) by mailfront12.runbox.com with esmtpsa (uid:892961 ) (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) id 1ejYET-0001iO-MW for guix-patches@gnu.org; Wed, 07 Feb 2018 23:30:26 +0100 From: ng0@crash.cx Date: Wed, 07 Feb 2018 22:30:30 +0000 Message-ID: <87a7wkv3eh.fsf@abyayala.i-did-not-set--mail-host-address--so-tickle-me> MIME-Version: 1.0 Content-Type: multipart/signed; boundary="==-=-="; micalg=pgp-sha512; protocol="application/pgp-signature" List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: guix-patches-bounces+kyle=kyleam.com@gnu.org Sender: "Guix-patches" To: 30385@debbugs.gnu.org --==-=-= Content-Type: multipart/mixed; boundary="=-=-=" --=-=-= Content-Type: text/plain Content-Transfer-Encoding: quoted-printable This adds a first version of a functional vim-build-system. As explained today on IRC, and as you can guess by reading gnu/packages/vim.scm Vim has a concept of folders and files in standard places, but Makefiles and similar tools are an exception. Usually you have to copy them somewhere (or use external Vim package managers that pull the files for yoz and set the "run time path" (rtp) for you). There's also (to my best knowledge, keep in mind I've last read into Vim when I did the last commits in the Vim module) no ENV VAR or anything we could export, you have to manually set set rtp+=3D~/.guix-profile/share/vim/vimfiles/ in your $home/.vimrc The build system comes with a FIXME note, but it works. I'm in the middle of tests and exams, so this is the best I can correct from my earlier attempt in '17 on this. What I can apply are changes and adjustments to what I submit now. 4 Patches attached, 3 of them are for proof of work. --=-=-= Content-Type: text/x-patch; charset=utf-8 Content-Disposition: inline; filename=0001-build-system-Add-vim-build-system.patch Content-Transfer-Encoding: quoted-printable From=20617fc10671c18c35c0e3fcd6bc0c9d06a96a4ebf Mon Sep 17 00:00:00 2001 From: ng0 Date: Sun, 2 Jul 2017 16:07:48 +0000 Subject: [PATCH 1/4] build-system: Add 'vim-build-system'. * Makefile.am (MODULES): Add 'guix/build-system/vim.scm' and 'guix/build/vim-build-system.scm'. * guix/build-system/vim.scm: New file. * guix/build/vim-build-system.scm: New file. =2D-- Makefile.am | 4 +- guix/build-system/vim.scm | 129 ++++++++++++++++++++++++++++++++++++= ++++ guix/build/vim-build-system.scm | 93 +++++++++++++++++++++++++++++ 3 files changed, 225 insertions(+), 1 deletion(-) create mode 100644 guix/build-system/vim.scm create mode 100644 guix/build/vim-build-system.scm diff --git a/Makefile.am b/Makefile.am index eb5d38231..72ad184ef 100644 =2D-- a/Makefile.am +++ b/Makefile.am @@ -9,7 +9,7 @@ # Copyright =C2=A9 2017 Ricardo Wurmus # Copyright =C2=A9 2017 Jan Nieuwenhuizen # Copyright =C2=A9 2017 Arun Isaac =2D# Copyright =C2=A9 2018 ng0 +# Copyright =C2=A9 2018 ng0 # # This file is part of GNU Guix. # @@ -106,6 +106,7 @@ MODULES =3D \ guix/build-system/perl.scm \ guix/build-system/python.scm \ guix/build-system/ocaml.scm \ + guix/build-system/vim.scm \ guix/build-system/waf.scm \ guix/build-system/r.scm \ guix/build-system/ruby.scm \ @@ -134,6 +135,7 @@ MODULES =3D \ guix/build/font-build-system.scm \ guix/build/go-build-system.scm \ guix/build/asdf-build-system.scm \ + guix/build/vim-build-system.scm \ guix/build/git.scm \ guix/build/hg.scm \ guix/build/glib-or-gtk-build-system.scm \ diff --git a/guix/build-system/vim.scm b/guix/build-system/vim.scm new file mode 100644 index 000000000..67657c7d8 =2D-- /dev/null +++ b/guix/build-system/vim.scm @@ -0,0 +1,129 @@ +;;; GNU Guix --- Functional package management for GNU +;;; Copyright =C2=A9 2018 ng0 +;;; +;;; This file is part of GNU Guix. +;;; +;;; GNU Guix is free software; you can redistribute it and/or modify it +;;; under the terms of the GNU General Public License as published by +;;; the Free Software Foundation; either version 3 of the License, or (at +;;; your option) any later version. +;;; +;;; GNU Guix is distributed in the hope that it will be useful, but +;;; WITHOUT ANY WARRANTY; without even the implied warranty of +;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;;; GNU General Public License for more details. +;;; +;;; You should have received a copy of the GNU General Public License +;;; along with GNU Guix. If not, see . + +(define-module (guix build-system vim) + #:use-module (guix utils) + #:use-module (guix packages) + #:use-module (guix derivations) + #:use-module (guix store) + #:use-module (guix search-paths) + #:use-module (guix build-system) + #:use-module (guix build-system gnu) + #:use-module (ice-9 match) + #:export (%vim-build-system-modules + vim-build + vim-build-system)) + +;; Commentary: +;; +;; Standard build procedure for vim packages. This is +;; implemented as an extension of 'gnu-build-system'. +;; +;; Code: + +(define %vim-build-system-modules + ;; Build-side modules imported by default. + `((guix build vim-build-system) + ,@%gnu-build-system-modules)) + +(define* (lower name + #:key source inputs native-inputs outputs system target + #:allow-other-keys + #:rest arguments) + "Return a bag for NAME." + (define private-keywords + '(#:target #:inputs #:native-inputs)) + + (bag + (name name) + (system system) + (host-inputs `(,@(if source + `(("source" ,source)) + '()) + ,@inputs + ,(list "tar" (module-ref (resolve-interface '(gnu packa= ges base)) 'tar)) + ,@(let ((compression (resolve-interface '(gnu packages = compression)))) + (map (match-lambda + ((name package) + (list name (module-ref compression package)= ))) + `(("gzip" gzip) + ("bzip2" bzip2) + ("unzip" unzip) + ("xz" xz)))))) + (build-inputs native-inputs) + (outputs outputs) + (build vim-build) + (arguments (strip-keyword-arguments private-keywords arguments)))) + +(define* (vim-build store name inputs + #:key source + (tests? #t) + (test-target "test") + (configure-flags ''()) + (phases '(@ (guix build vim-build-system) + %standard-phases)) + (outputs '("out")) + (search-paths '()) + (system (%current-system)) + (guile #f) + (imported-modules %vim-build-system-modules) + (modules '((guix build vim-build-system) + (guix build utils)))) + "Build SOURCE with INPUTS." + (define builder + `(begin + (use-modules ,@modules) + (vim-build #:name ,name + #:source ,(match (assoc-ref inputs "source") + (((? derivation? source)) + (derivation->output-path source)) + ((source) + source) + (source + source)) + #:configure-flags ,configure-flags + #:system ,system + #:test-target ,test-target + #:tests? ,tests? + #:phases ,phases + #:outputs %outputs + #:search-paths ',(map search-path-specification->sexp + search-paths) + #:inputs %build-inputs))) + + (define guile-for-build + (match guile + ((? package?) + (package-derivation store guile system #:graft? #f)) + (#f ; the default + (let* ((distro (resolve-interface '(gnu packages commencement))) + (guile (module-ref distro 'guile-final))) + (package-derivation store guile system #:graft? #f))))) + + (build-expression->derivation store name builder + #:inputs inputs + #:system system + #:modules imported-modules + #:outputs outputs + #:guile-for-build guile-for-build)) + +(define vim-build-system + (build-system + (name 'vim) + (description "The build system for vim packages") + (lower lower))) diff --git a/guix/build/vim-build-system.scm b/guix/build/vim-build-system.= scm new file mode 100644 index 000000000..70e8129df =2D-- /dev/null +++ b/guix/build/vim-build-system.scm @@ -0,0 +1,93 @@ +;;; GNU Guix --- Functional package management for GNU +;;; Copyright =C2=A9 2018 ng0 +;;; +;;; This file is part of GNU Guix. +;;; +;;; GNU Guix is free software; you can redistribute it and/or modify it +;;; under the terms of the GNU General Public License as published by +;;; the Free Software Foundation; either version 3 of the License, or (at +;;; your option) any later version. +;;; +;;; GNU Guix is distributed in the hope that it will be useful, but +;;; WITHOUT ANY WARRANTY; without even the implied warranty of +;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;;; GNU General Public License for more details. +;;; +;;; You should have received a copy of the GNU General Public License +;;; along with GNU Guix. If not, see . + +(define-module (guix build vim-build-system) + #:use-module ((guix build gnu-build-system) #:prefix gnu:) + #:use-module (guix build utils) + #:use-module (srfi srfi-1) + #:use-module (srfi srfi-11) + #:use-module (srfi srfi-26) + #:export (%standard-phases + %default-exclude + vim-build)) + +;; Commentary: +;; +;; Builder-side code of the build procedure for vim packages. +;; +;; Code: + +;; These are the default inclusion/exclusion regexps for the install phase. +(define %default-exclude '("^\\.github$" "^.*\\.md$" "LICENSE" "COPYING" + "^.*\\README.*$" "^\\.travis\\.yml$" + "^.*\\Makefile.*$")) + +(define gnu:unpack (assoc-ref gnu:%standard-phases 'unpack)) + +(define (store-file->vim-source-file file) + "Convert FILE, a store file name for an Vim source file, into a file +name that has been stripped of the hash and version number." + (let ((suffix ".vim")) + (let-values (((name version) + (package-name->name+version + (basename + (strip-store-file-name file) suffix)))) + (string-append name suffix)))) + +(define* (unpack #:key source #:allow-other-keys) + "Unpack SOURCE into the build directory. SOURCE may be a compressed +archive, a directory or a '.vim' file." + (if (string-suffix? ".vim" source) + (begin + (mkdir "source") + (chdir "source") + (copy-file source (store-file->vim-source-file source)) + #t) + (gnu:unpack #:source source))) + +;; FIXME: Files like README.md and other, more unpredictable file names, +;; are currently being installed. Because there is no concept of a +;; standardized build-system in Vim extensions, we have to find a long-term +;; solution to exclusion of files that are not used at runtime. +(define* (install #:key outputs + (exclude %default-exclude) + #:allow-other-keys) + "Install the package contents." + (let* ((out (assoc-ref outputs "out")) + (source (getcwd)) + (vimfiles (string-append out "/share/vim/vimfiles"))) + (for-each delete-file-recursively + (find-files source "^\\.git$")) + (for-each delete-file-recursively + (find-files source "^\\.gitignore$")) + (mkdir out) + (copy-recursively "." vimfiles) + #t)) + +(define %standard-phases + (modify-phases gnu:%standard-phases + (replace 'unpack unpack) + (delete 'configure) + (delete 'check) + (delete 'build) + (replace 'install install))) + +(define* (vim-build #:key inputs (phases %standard-phases) + #:allow-other-keys #:rest args) + "Build the given vim package, applying all of PHASES in order." + (apply gnu:gnu-build #:inputs inputs #:phases phases args)) =2D-=20 2.16.1 --=-=-= Content-Type: text/x-patch Content-Disposition: inline; filename=0002-gnu-vim-neocomplete-Use-vim-build-system.patch Content-Transfer-Encoding: quoted-printable From=201b0a5ec5e59f65cfd6424a53e3bb24ad40586ed5 Mon Sep 17 00:00:00 2001 From: ng0 Date: Sun, 2 Jul 2017 16:11:19 +0000 Subject: [PATCH 2/4] gnu: vim-neocomplete: Use 'vim-build-system'. * gnu/packages/vim.scm (vim-neocomplete): Switch to 'vim-build-system'. =2D-- gnu/packages/vim.scm | 20 ++------------------ 1 file changed, 2 insertions(+), 18 deletions(-) diff --git a/gnu/packages/vim.scm b/gnu/packages/vim.scm index abd25bc9d..7a843a0ab 100644 =2D-- a/gnu/packages/vim.scm +++ b/gnu/packages/vim.scm @@ -29,6 +29,7 @@ #:use-module (guix git-download) #:use-module (guix build-system cmake) #:use-module (guix build-system gnu) + #:use-module (guix build-system vim) #:use-module (gnu packages) #:use-module (gnu packages acl) #:use-module (gnu packages admin) ; For GNU hostname @@ -209,24 +210,7 @@ with the editor vim."))) (sha256 (base32 "1307gbrdwam2akq9w2lpijc41740i4layk2qkd9sjkqxfch5lni2")))) =2D (build-system gnu-build-system) =2D (arguments =2D `(#:tests? #f =2D #:phases =2D (modify-phases %standard-phases =2D (delete 'configure) =2D (delete 'build) =2D (replace 'install =2D (lambda* (#:key outputs #:allow-other-keys) =2D (let* ((out (assoc-ref outputs "out")) =2D (vimfiles (string-append out "/share/vim/vimfiles")) =2D (autoload (string-append vimfiles "/autoload")) =2D (doc (string-append vimfiles "/doc")) =2D (plugin (string-append vimfiles "/plugin"))) =2D (copy-recursively "autoload" autoload) =2D (copy-recursively "doc" doc) =2D (copy-recursively "plugin" plugin) =2D #t)))))) + (build-system vim-build-system) (synopsis "Next generation completion framework for Vim") (description "@code{neocomplete}, an abbreviation of 'neo-completion with cache', =2D-=20 2.16.1 --=-=-= Content-Type: text/x-patch; charset=utf-8 Content-Disposition: inline; filename=0003-gnu-vim-neosnippet-snippets-Use-vim-build-system.patch Content-Transfer-Encoding: quoted-printable From=20cdbd15cf00e0bc1489437845f6c7f60fd517ab9a Mon Sep 17 00:00:00 2001 From: ng0 Date: Wed, 7 Feb 2018 22:07:14 +0000 Subject: [PATCH 3/4] gnu: vim-neosnippet-snippets: Use 'vim-build-system'. * gnu/packages/vim.scm (vim-neosnippet-snippets): Switch to 'vim-build-syst= em'. =2D-- gnu/packages/vim.scm | 17 ++--------------- 1 file changed, 2 insertions(+), 15 deletions(-) diff --git a/gnu/packages/vim.scm b/gnu/packages/vim.scm index 7a843a0ab..13afbaeb4 100644 =2D-- a/gnu/packages/vim.scm +++ b/gnu/packages/vim.scm @@ -1,7 +1,7 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright =C2=A9 2013 Cyril Roelandt ;;; Copyright =C2=A9 2016, 2017, 2018 Efraim Flashner =2D;;; Copyright =C2=A9 2016, 2017 ng0 +;;; Copyright =C2=A9 2016, 2017, 2018 ng0 ;;; Copyright =C2=A9 2017 Ricardo Wurmus ;;; Copyright =C2=A9 2017 Marius Bakke ;;; Copyright =C2=A9 2018 Tobias Geerinckx-Rice @@ -238,20 +238,7 @@ features than Vim's built-in completion.") (sha256 (base32 "151wpvbj6jb9jdkbhj3b77f5sq7y328spvwfbqyj1y32rg4ifmc6")))) =2D (build-system gnu-build-system) =2D (arguments =2D `(#:tests? #f =2D #:phases =2D (modify-phases %standard-phases =2D (delete 'configure) =2D (delete 'build) =2D (replace 'install =2D (lambda* (#:key outputs #:allow-other-keys) =2D (let* ((out (assoc-ref outputs "out")) =2D (vimfiles (string-append out "/share/vim/vimfiles"= ))) =2D (copy-recursively "neosnippets" =2D (string-append vimfiles "/neosnippets= ")) =2D #t)))))) + (build-system vim-build-system) (synopsis "Snippets for neosnippet") (description "@code{neosnippet-snippets} provides standard snippets for the Vim pl= ugin =2D-=20 2.16.1 --=-=-= Content-Type: text/x-patch Content-Disposition: inline; filename=0004-gnu-vim-neosnippet-Use-vim-build-system.patch Content-Transfer-Encoding: quoted-printable From=2009cc9c735da27d0adb1ef141bbd2b7d37e1d6754 Mon Sep 17 00:00:00 2001 From: ng0 Date: Wed, 7 Feb 2018 22:14:58 +0000 Subject: [PATCH 4/4] gnu: vim-neosnippet: Use 'vim-build-system'. * gnu/packages/vim.scm (vim-neosnippet): Switch to 'vim-build-system'. =2D-- gnu/packages/vim.scm | 29 +---------------------------- 1 file changed, 1 insertion(+), 28 deletions(-) diff --git a/gnu/packages/vim.scm b/gnu/packages/vim.scm index 13afbaeb4..99361fa5d 100644 =2D-- a/gnu/packages/vim.scm +++ b/gnu/packages/vim.scm @@ -264,34 +264,7 @@ you can fill in on the fly.") (sha256 (base32 "0k80syscmpnj38ks1fq02ds59g0r4jlg9ll7z4qc048mgi35alw5")))) =2D (build-system gnu-build-system) =2D (arguments =2D `(#:tests? #f =2D #:phases =2D (modify-phases %standard-phases =2D (delete 'configure) =2D (delete 'build) =2D (replace 'install =2D (lambda* (#:key outputs #:allow-other-keys) =2D (let* ((out (assoc-ref outputs "out")) =2D (vimfiles (string-append out "/share/vim/vimfiles")) =2D (autoload (string-append vimfiles "/autoload")) =2D (doc (string-append vimfiles "/doc")) =2D (ftdetect (string-append vimfiles "/ftdetect")) =2D (ftplugin (string-append vimfiles "/ftplugin")) =2D (indent (string-append vimfiles "/indent")) =2D (plugin (string-append vimfiles "/plugin")) =2D (rplugin (string-append vimfiles "/rplugin")) =2D (syntax (string-append vimfiles "/syntax"))) =2D (copy-recursively "autoload" autoload) =2D (copy-recursively "doc" doc) =2D (copy-recursively "ftdetect" ftdetect) =2D (copy-recursively "ftplugin" ftplugin) =2D (copy-recursively "indent" indent) =2D (copy-recursively "plugin" plugin) =2D (copy-recursively "rplugin" rplugin) =2D (copy-recursively "syntax" syntax) =2D #t)))))) + (build-system vim-build-system) (synopsis "Snippet support for Vim") (description "@code{neosnippet}, is a plugin for Vim which adds snippet support to= Vim. =2D-=20 2.16.1 --=-=-= Content-Type: text/plain Content-Transfer-Encoding: quoted-printable =2D-=20 ng0 :: https://ea.n0.is A88C8ADD129828D7EAC02E52E22F9BBFEE348588 :: https://ea.n0.is/keys/ --=-=-=-- --==-=-= Content-Type: application/pgp-signature; name="signature.asc" -----BEGIN PGP SIGNATURE----- iQIzBAEBCgAdFiEEqIyK3RKYKNfqwC5S4i+bv+40hYgFAlp7fgYACgkQ4i+bv+40 hYjf0RAAhUe72DTRU8UhnbKsKqqC2T6bBgB6OrfZe7srKRJnOlWxrUA3WyVoZ0SB f2sRlknTQz6ESQhPwbDqqqaR4KLd7hWuAtImWrnO/Y8H+W2ydCMqOCgN85SZ1Dgs fAFAee0LoI1MUMADEV0u9W/YNYv0GlEAVw9fuMbxq2pAZJjpgGfkDGDFG4iosxDP vWZkVNPBWuLb3vTdsyl1pO3UeoKo2n/9X0AmJezIVg4eqmtCZmieoMfYERVNerpD V3pqZTJWksiUwIxVyJL/dX/1a56PnsbGEl9Sypgg3/efuH4Itfpts1mttCkrsSB+ AbdSY8KPIwwJsplYtmdJuJjfCEV+ZxoS692ARYpPcjR2KNCLu9Mwhg2EzoIiVFFW mCYziYIIE+BiLiMDVmuFtZH4/IhFb4f4b6w6o3a6V9qqihbV81MrYPAYChIFEBHh 2EiCzQ40Y17Oj4XaHuX0YfhocSJsiqi3UqXKWZi6ZDhSKYmH6+niwLTEOuJwNof/ 4bsgFsWy5tscDCZB/wHhfxHfDVmjqM5DrmjK7EFKeoPRo9vZukaKfOySY9GHhvdJ g4GSW1xmdtIsCWuw0XUavegTwZ+1hvvwgzXzX0hmTp3y4CgxCDHk7todI/SeoS50 KjlFnepyQt/I4RYwIsX5km7TJehcIV7db0QS7QfA1VpTC41qyzE= =4NjI -----END PGP SIGNATURE----- --==-=-=--