From debbugs-submit-bounces@debbugs.gnu.org Thu Jun 28 00:56:30 2018 Received: (at 31989) by debbugs.gnu.org; 28 Jun 2018 04:56:30 +0000 Received: from localhost ([127.0.0.1]:38082 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1fYOyk-0001gk-DF for submit@debbugs.gnu.org; Thu, 28 Jun 2018 00:56:29 -0400 Received: from static.195.114.201.195.clients.your-server.de ([195.201.114.195]:47704 helo=conspiracy.of.n0.is) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1fYOyg-0001gY-CM for 31989@debbugs.gnu.org; Thu, 28 Jun 2018 00:56:20 -0400 Received: by conspiracy.of.n0.is (OpenSMTPD) with ESMTPSA id 36e983eb (TLSv1.2:ECDHE-RSA-AES256-GCM-SHA384:256:NO); Thu, 28 Jun 2018 04:56:13 +0000 (UTC) Date: Thu, 28 Jun 2018 04:56:53 +0000 From: Nils Gillmann To: Efraim Flashner Subject: Re: [bug#31989] vim-build-system Message-ID: <20180628045653.kai2zkfi7caevgkw@abyayala> References: <20180627200454.GC1537@macbook41> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <20180627200454.GC1537@macbook41> X-Spam-Score: -0.0 (/) X-Debbugs-Envelope-To: 31989 Cc: 31989@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) Efraim Flashner transcribed 16K bytes: > This patch got forgotten about a year ago > > -- > Efraim Flashner אפרים פלשנר > GPG key = A28B F40C 3E55 1372 662D 14F7 41AA E7DC CA3D 8351 > Confidentiality cannot be guaranteed on emails sent or received unencrypted > Date: Sun, 2 Jul 2017 19:56:07 +0000 > From: ng0 > To: Efraim Flashner , guix-devel@gnu.org > Subject: Re: PATCH in need for discussion: vim-build-system > > ng0 transcribed 1.3K bytes: > > I found the mistake, a simple typo. Updated patch coming soon. > > That would've been too easy, but there was a typo. hm... right, July 2017. Time flies. I think I'll look at the differences and fix it. So here's something with regards to the 'test' phase: it seems like the few packages using tests, use a Makefile. When it is a rare exception, does it still count as part of the system? We would run gnu's make there. > -- > ng0 > GnuPG: A88C8ADD129828D7EAC02E52E22F9BBFEE348588 > GnuPG: https://n0is.noblogs.org/my-keys > https://www.infotropique.org https://krosos.org > From 1596e2ca4b9d237359287e35a65acdfd99a48879 Mon Sep 17 00:00:00 2001 > From: ng0 > Date: Sun, 2 Jul 2017 16:07:48 +0000 > Subject: [PATCH 1/2] 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. > --- > Makefile.am | 2 + > guix/build-system/vim.scm | 127 ++++++++++++++++++++++++++++++++++++++++ > guix/build/vim-build-system.scm | 70 ++++++++++++++++++++++ > 3 files changed, 199 insertions(+) > 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 f6059d94b..cb36bd849 100644 > --- a/Makefile.am > +++ b/Makefile.am > @@ -85,6 +85,7 @@ MODULES = \ > 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 \ > @@ -106,6 +107,7 @@ MODULES = \ > guix/build/emacs-build-system.scm \ > guix/build/font-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..b3f9831c0 > --- /dev/null > +++ b/guix/build-system/vim.scm > @@ -0,0 +1,127 @@ > +;;; GNU Guix --- Functional package management for GNU > +;;; Copyright © 2017 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 search-paths) > + #: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 packages 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..ca863cef8 > --- /dev/null > +++ b/guix/build/vim-build-system.scm > @@ -0,0 +1,70 @@ > +;;; GNU Guix --- Functional package management for GNU > +;;; Copyright © 2017 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-26) > + #:export (%standard-phases > + vim-build)) > + > +;; Commentary: > +;; > +;; Builder-side code of the build procedure for vim packages. > +;; > +;; Code: > + > +(define gnu:unpack (assoc-ref gnu:%standard-phases 'unpack)) > + > +(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 (any (cut string-suffix? <> source) > + (list ".vim" ".vital")) > + (begin > + (mkdir "source") > + (chdir "source") > + (copy-file source (strip-store-file-name source)) > + #t) > + (gnu:unpack #:source source))) > + > +(define* (install #:key outputs #:allow-other-keys) > + "Install the package contents." > + (let* ((out (assoc-ref outputs "out")) > + (source (getcwd)) > + (vimfiles (string-append out "/share/vim/vimfiles"))) > + (lambda (dir) > + (when (file-exists? dir) > + (copy-recursively dir (string-append vimfiles "/" dir)))) > + (list "autoload" "after" "doc" "ftdetect" "ftplugin" > + "indent" "plugin" "rplugin" "syntax") > + #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)) > -- > 2.13.2 > > From bb8cf78af6569d2fc9beb1d766d6d748c488e012 Mon Sep 17 00:00:00 2001 > From: ng0 > Date: Sun, 2 Jul 2017 16:11:19 +0000 > Subject: [PATCH 2/2] gnu: vim-neocomplete: Use 'vim-build-system'. > > * gnu/packages/vim.scm (vim-neocomplete): Switch to 'vim-build-system'. > --- > gnu/packages/vim.scm | 22 +++------------------- > 1 file changed, 3 insertions(+), 19 deletions(-) > > diff --git a/gnu/packages/vim.scm b/gnu/packages/vim.scm > index 27c0b0da9..5672fab69 100644 > --- a/gnu/packages/vim.scm > +++ b/gnu/packages/vim.scm > @@ -1,7 +1,7 @@ > ;;; GNU Guix --- Functional package management for GNU > ;;; Copyright © 2013 Cyril Roelandt > ;;; Copyright © 2016 Efraim Flashner > -;;; Copyright © 2016, 2017 ng0 > +;;; Copyright © 2016, 2017 ng0 > ;;; Copyright © 2017 Ricardo Wurmus > ;;; Copyright © 2017 Marius Bakke > ;;; > @@ -28,6 +28,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 > @@ -195,24 +196,7 @@ configuration files.") > (sha256 > (base32 > "1307gbrdwam2akq9w2lpijc41740i4layk2qkd9sjkqxfch5lni2")))) > - (build-system gnu-build-system) > - (arguments > - `(#:tests? #f > - #:phases > - (modify-phases %standard-phases > - (delete 'configure) > - (delete 'build) > - (replace 'install > - (lambda* (#:key outputs #:allow-other-keys) > - (let* ((out (assoc-ref outputs "out")) > - (vimfiles (string-append out "/share/vim/vimfiles")) > - (autoload (string-append vimfiles "/autoload")) > - (doc (string-append vimfiles "/doc")) > - (plugin (string-append vimfiles "/plugin"))) > - (copy-recursively "autoload" autoload) > - (copy-recursively "doc" doc) > - (copy-recursively "plugin" plugin) > - #t)))))) > + (build-system vim-build-system) > (synopsis "Next generation completion framework for Vim") > (description > "@code{neocomplete}, an abbreviation of 'neo-completion with cache', > -- > 2.13.2 >