unofficial mirror of guix-devel@gnu.org 
 help / color / mirror / code / Atom feed
* [PATCH] gnu: Add vis, libtermkey and lua-lpeg.
@ 2016-12-07 17:33 José Miguel Sánchez García
  2016-12-07 22:23 ` Marius Bakke
  0 siblings, 1 reply; 3+ messages in thread
From: José Miguel Sánchez García @ 2016-12-07 17:33 UTC (permalink / raw)
  To: guix-devel

[-- Attachment #1: Type: text/plain, Size: 420 bytes --]

Let's see if these patches get accepted now! I think I've taken into 
account
every single detail.

These patches add three packages: vis, lua and libtermkey. vis depends 
on lua
and libtermkey, so add them before adding vis.

vis is being added in a new file, gnu/text-editors.scm , as requested 
here
<https://lists.gnu.org/archive/html/guix-devel/2016-12/msg00242.html>

-- 
José Miguel Sánchez García

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: 0001-gnu-Add-libtermkey.patch --]
[-- Type: text/x-diff; name=0001-gnu-Add-libtermkey.patch, Size: 2245 bytes --]

From ce03e4d1418580d353cdb58233550ece380ff2ba Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Jos=C3=A9=20Miguel=20S=C3=A1nchez=20Garc=C3=ADa?=
 <jmi2k@openmailbox.org>
Date: Wed, 7 Dec 2016 18:03:09 +0100
Subject: [PATCH] gnu: Add libtermkey.

---
 gnu/packages/terminals.scm | 30 ++++++++++++++++++++++++++++++
 1 file changed, 30 insertions(+)

diff --git a/gnu/packages/terminals.scm b/gnu/packages/terminals.scm
index e1076c7..907fc7b 100644
--- a/gnu/packages/terminals.scm
+++ b/gnu/packages/terminals.scm
@@ -4,6 +4,7 @@
 ;;; Copyright © 2016 Alex Griffin <a@ajgrf.com>
 ;;; Copyright © 2016 David Craven <david@craven.ch>
 ;;; Copyright © 2016 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2016 José Miguel Sánchez García <jmi2k@openmailbox.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -261,6 +262,35 @@ multi-seat support, a replacement for @command{mingetty}, and more.")
     (supported-systems (filter (cut string-suffix? "-linux" <>)
                                %supported-systems))))
 
+(define-public libtermkey
+  (package
+    (name "libtermkey")
+    (version "0.18")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "http://www.leonerd.org.uk/code/"
+                                  name "/" name "-" version ".tar.gz"))
+              (sha256
+                (base32 "09ir16kaarv55mnc4jn2sqnjjhzpb1aha51wpd9ayif887g4d5r3"))))
+    (build-system gnu-build-system)
+    (arguments
+      '(#:make-flags (list
+          "CC=gcc"
+          (string-append "PREFIX=" (assoc-ref %outputs "out")))
+        #:phases (modify-phases %standard-phases
+          (delete 'configure))
+        ;; `make test` isn't available
+        #:tests? #f))
+    (inputs `(("ncurses", ncurses)))
+    (native-inputs `(("libtool", libtool)
+                     ("pkg-config", pkg-config)))
+    (synopsis "Keyboard entry processing library for terminal-based programs")
+    (description
+      "Libtermkey handles all the necessary logic to recognise special keys, UTF-8
+combining, and so on, with a simple interface.")
+    (home-page "http://www.leonerd.org.uk/code/libtermkey")
+    (license license:expat)))
+
 (define-public picocom
   (package
     (name "picocom")
-- 
2.9.2


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #3: 0001-gnu-Add-lua-lpeg.patch --]
[-- Type: text/x-diff; name=0001-gnu-Add-lua-lpeg.patch, Size: 2226 bytes --]

From d3903d74e6ff21afcfd401ed99c7957b3d7dbf16 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Jos=C3=A9=20Miguel=20S=C3=A1nchez=20Garc=C3=ADa?=
 <jmi2k@openmailbox.org>
Date: Wed, 7 Dec 2016 18:06:22 +0100
Subject: [PATCH] gnu: Add lua-lpeg.

---
 gnu/packages/lua.scm | 30 ++++++++++++++++++++++++++++++
 1 file changed, 30 insertions(+)

diff --git a/gnu/packages/lua.scm b/gnu/packages/lua.scm
index f95da35..222e655 100644
--- a/gnu/packages/lua.scm
+++ b/gnu/packages/lua.scm
@@ -7,6 +7,7 @@
 ;;; Copyright © 2016 Ricardo Wurmus <rekado@elephly.net>
 ;;; Copyright © 2016 doncatnip <gnopap@gmail.com>
 ;;; Copyright © 2016 Clément Lassieur <clement@lassieur.org>
+;;; Copyright © 2016 José Miguel Sánchez García <jmi2k@openmailbox.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -365,3 +366,32 @@ secure session between the peers.")
 based libraries.  It allows using GObject-based libraries directly from Lua.
 Notable examples are GTK+, GStreamer and Webkit.")
     (license license:expat)))
+
+(define-public lua-lpeg
+  (package
+    (name "lua-lpeg")
+    (version "1.0.0")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "http://www.inf.puc-rio.br/~roberto/lpeg/lpeg-"
+                                  version ".tar.gz"))
+              (sha256
+                (base32 "13mz18s359wlkwm9d9iqlyyrrwjc6iqfpa99ai0icam2b3khl68h"))))
+    (build-system gnu-build-system)
+    (arguments
+      '(#:phases (modify-phases %standard-phases
+            (delete 'configure)
+            ;; `make install` isn't available, so we have to do it manually
+            (replace 'install (lambda _
+              (let ((out (assoc-ref %outputs "out")))
+                (install-file "lpeg.so" (string-append out "/lib/lua/5.3"))
+                (install-file "re.lua" (string-append out "/share/lua/5.3"))))))
+          ;; `make test` isn't available
+          #:tests? #f))
+    (inputs `(("lua", lua)))
+    (synopsis "Pattern-matching library for Lua")
+    (description
+      "LPeg is a pattern-matching library for Lua, based on Parsing Expression
+Grammars (PEGs).")
+    (home-page "http://www.inf.puc-rio.br/~roberto/lpeg")
+    (license license:expat)))
-- 
2.9.2


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #4: 0001-gnu-Add-vis.patch --]
[-- Type: text/x-diff; name=0001-gnu-Add-vis.patch, Size: 3442 bytes --]

From dc0b71eb1b13ef26240165536bdcb33a089cfb2f Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Jos=C3=A9=20Miguel=20S=C3=A1nchez=20Garc=C3=ADa?=
 <jmi2k@openmailbox.org>
Date: Wed, 7 Dec 2016 17:53:22 +0100
Subject: [PATCH] gnu: Add vis.

* gnu/packages/text-editors.scm: New file.
* gnu/local.mk (text-editors.scm): Add it.
---
 gnu/local.mk                  |  1 +
 gnu/packages/text-editors.scm | 57 +++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 58 insertions(+)
 create mode 100644 gnu/packages/text-editors.scm

diff --git a/gnu/local.mk b/gnu/local.mk
index bc9b06d..974f867 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -358,6 +358,7 @@ GNU_SYSTEM_MODULES =				\
   %D%/packages/texinfo.scm			\
   %D%/packages/tex.scm				\
   %D%/packages/textutils.scm			\
+  %D%/packages/text-editors.scm   		\
   %D%/packages/time.scm				\
   %D%/packages/tls.scm				\
   %D%/packages/tmux.scm				\
diff --git a/gnu/packages/text-editors.scm b/gnu/packages/text-editors.scm
new file mode 100644
index 0000000..0d9e7f9
--- /dev/null
+++ b/gnu/packages/text-editors.scm
@@ -0,0 +1,57 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2016 José Miguel Sánchez García <jmi2k@openmailbox.org>
+;;;
+;;; 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 <http://www.gnu.org/licenses/>.
+
+(define-module (gnu packages text-editors)
+  #:use-module (guix packages)
+  #:use-module (guix download)
+  #:use-module (guix build-system gnu)
+  #:use-module (guix licenses)
+  #:use-module (gnu packages ncurses)
+  #:use-module (gnu packages terminals)
+  #:use-module (gnu packages lua)
+  #:use-module (gnu packages lua-lpeg))
+
+(define-public vis
+  ;; TODO: Installation succeeds, but vis complains about not finding
+  ;;       themes/default-16
+  (package
+    (name "vis")
+    (version "0.2")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "https://github.com/martanne/"
+                                  name "/archive/v" version ".tar.gz"))
+              (sha256
+                (base32 "0bbmkblpndc53pvr8xcfywdn8g351yxfj8c46zp5d744c3bq2nry"))))
+    (build-system gnu-build-system)
+    (arguments
+      '(#:make-flags '("CFLAGS=-pie")
+        ;; `make test` isn't available
+        #:tests? #f))
+    (inputs `(("lua", lua)
+              ("ncurses", ncurses)
+              ("libtermkey", libtermkey)
+              ("lua-lpeg", lua-lpeg)))
+    (synopsis "Vim-like text editor")
+    (description
+      "Vis aims to be a modern, legacy free, simple yet efficient vim-like text
+editor.  It extends vim's modal editing with built-in support for multiple
+cursors/selecctions and combines it with sam's structural regular expression
+based command language.")
+    (home-page "https://github.com/martanne/vis")
+    (license isc)))
-- 
2.9.2


^ permalink raw reply related	[flat|nested] 3+ messages in thread

* Re: [PATCH] gnu: Add vis, libtermkey and lua-lpeg.
  2016-12-07 17:33 [PATCH] gnu: Add vis, libtermkey and lua-lpeg José Miguel Sánchez García
@ 2016-12-07 22:23 ` Marius Bakke
       [not found]   ` <dfce56f98ee68c2f45f67b03c87076da@openmailbox.org>
  0 siblings, 1 reply; 3+ messages in thread
From: Marius Bakke @ 2016-12-07 22:23 UTC (permalink / raw)
  To: José Miguel Sánchez García, guix-devel


[-- Attachment #1.1: Type: text/plain, Size: 1790 bytes --]

José Miguel Sánchez García <jmi2k@openmailbox.org> writes:

> Let's see if these patches get accepted now! I think I've taken into 
> account
> every single detail.
>
> These patches add three packages: vis, lua and libtermkey. vis depends 
> on lua
> and libtermkey, so add them before adding vis.
>
> vis is being added in a new file, gnu/text-editors.scm , as requested 
> here
> <https://lists.gnu.org/archive/html/guix-devel/2016-12/msg00242.html>

Thanks for these patches!

I've committed the first two packages with some minor edits:

* Indentation ran through emacs (e.g. M-x indent-region). We follow
  emacs indentation rules religiously. :-)
* Updated commit messages to match the GNU changelog style.
* libtermkey and lua-lpeg actually had tests. 'gnu-build-system' runs
  "make check" by default, whereas they expected "make test". This can
  be overridden with the #:test-target argument.
* Avoided hard coding the lua version in lpeg install path.

'vis' was a little more tricky. On startup it could not find the "visrc"
file, which you probably had in ~/.config or similar. I solved that by
adding a "native-search-path" for VIS_PATH so Guix sets up this variable
when installed (this seems to be an undocumented feature of Guix :-)).

In a perfect world, the same trick could be used for LUA_PATH and
LUA_CPATH to discover the optional "lpeg" module, but they don't seem to
behave like normal PATH specifications and requires a pattern match,
which in turn appears to get ignored by guix' search-path-specification.

Instead I wrapped the binary with the lpeg paths. This also seems to
have fixed the problem finding themes. Can you try the attached patch
and see if that works for you, especially if you have a custom config?


[-- Attachment #1.2: signature.asc --]
[-- Type: application/pgp-signature, Size: 487 bytes --]

[-- Attachment #2: 0001-gnu-Add-vis.patch --]
[-- Type: text/x-patch, Size: 4625 bytes --]

From 3fbbe7d6c9de4cde01f2e6aa2b7df96b067e33d7 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Jos=C3=A9=20Miguel=20S=C3=A1nchez=20Garc=C3=ADa?=
 <jmi2k@openmailbox.org>
Date: Wed, 7 Dec 2016 17:53:22 +0100
Subject: [PATCH] gnu: Add vis.

* gnu/packages/text-editors.scm: New file.
* gnu/local.mk (GNU_SYSTEM_MODULES): Add it.

Co-authored-by: Marius Bakke <mbakke@fastmail.com>
---
 gnu/local.mk                  |  1 +
 gnu/packages/text-editors.scm | 75 +++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 76 insertions(+)
 create mode 100644 gnu/packages/text-editors.scm

diff --git a/gnu/local.mk b/gnu/local.mk
index 1f98513ca..e8137a538 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -359,6 +359,7 @@ GNU_SYSTEM_MODULES =				\
   %D%/packages/texinfo.scm			\
   %D%/packages/tex.scm				\
   %D%/packages/textutils.scm			\
+  %D%/packages/text-editors.scm   		\
   %D%/packages/time.scm				\
   %D%/packages/tls.scm				\
   %D%/packages/tmux.scm				\
diff --git a/gnu/packages/text-editors.scm b/gnu/packages/text-editors.scm
new file mode 100644
index 000000000..4b047f3d7
--- /dev/null
+++ b/gnu/packages/text-editors.scm
@@ -0,0 +1,75 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2016 José Miguel Sánchez García <jmi2k@openmailbox.org>
+;;;
+;;; 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 <http://www.gnu.org/licenses/>.
+
+(define-module (gnu packages text-editors)
+  #:use-module (guix packages)
+  #:use-module (guix download)
+  #:use-module (guix utils)
+  #:use-module (guix build-system gnu)
+  #:use-module ((guix licenses) #:prefix license:)
+  #:use-module (gnu packages ncurses)
+  #:use-module (gnu packages terminals)
+  #:use-module (gnu packages lua))
+
+(define-public vis
+  (package
+    (name "vis")
+    (version "0.2")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "https://github.com/martanne/"
+                                  name "/archive/v" version ".tar.gz"))
+              (sha256
+               (base32 "0bbmkblpndc53pvr8xcfywdn8g351yxfj8c46zp5d744c3bq2nry"))))
+    (build-system gnu-build-system)
+    (arguments
+     `(#:make-flags '("CFLAGS=-pie")
+       #:tests? #f ; No tests.
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'install 'wrap-binary
+           (lambda* (#:key inputs outputs #:allow-other-keys)
+             (let* ((out (assoc-ref outputs "out"))
+                    (lpeg (assoc-ref inputs "lua-lpeg"))
+                    (lua-version ,(version-major+minor (package-version lua)))
+                    (LUA_PATH (string-append lpeg "/share/lua/"
+                                             lua-version "/?.lua"))
+                    (LUA_CPATH (string-append lpeg "/lib/lua/"
+                                              lua-version "/?.so")))
+               (wrap-program (string-append out "/bin/vis")
+                 `("LUA_PATH" ":" prefix (,LUA_PATH))
+                 `("LUA_CPATH" ":" prefix (,LUA_CPATH)))
+               #t))))))
+    (native-search-paths
+     (list (search-path-specification
+            (variable "VIS_PATH")
+            (files '("share/vis")))))
+    (inputs `(("lua", lua)
+              ("ncurses", ncurses)
+              ("libtermkey", libtermkey)
+              ("lua-lpeg", lua-lpeg)))
+    (synopsis "Vim-like text editor")
+    (description
+     "Vis aims to be a modern, legacy free, simple yet efficient vim-like text
+editor.  It extends vim's modal editing with built-in support for multiple
+cursors/selecctions and combines it with sam's structural regular expression
+based command language.")
+    (home-page "https://github.com/martanne/vis")
+    (license (list license:isc               ; Main distribution.
+                   license:public-domain     ; map.[ch]
+                   license:expat))))         ; lexers and libutf.[ch]
-- 
2.11.0


^ permalink raw reply related	[flat|nested] 3+ messages in thread

* Re: [PATCH] gnu: Add vis, libtermkey and lua-lpeg.
       [not found]   ` <dfce56f98ee68c2f45f67b03c87076da@openmailbox.org>
@ 2016-12-08 14:17     ` Marius Bakke
  0 siblings, 0 replies; 3+ messages in thread
From: Marius Bakke @ 2016-12-08 14:17 UTC (permalink / raw)
  To: José Miguel Sánchez García; +Cc: guix-devel

[-- Attachment #1: Type: text/plain, Size: 2969 bytes --]

José Miguel Sánchez García <jmi2k@openmailbox.org> writes:

> On 2016-12-07 23:23, Marius Bakke wrote:
>> José Miguel Sánchez García <jmi2k@openmailbox.org> writes:
>> 
>>> Let's see if these patches get accepted now! I think I've taken into
>>> account
>>> every single detail.
>>> 
>>> These patches add three packages: vis, lua and libtermkey. vis depends
>>> on lua
>>> and libtermkey, so add them before adding vis.
>>> 
>>> vis is being added in a new file, gnu/text-editors.scm , as requested
>>> here
>>> <https://lists.gnu.org/archive/html/guix-devel/2016-12/msg00242.html>
>> 
>> Thanks for these patches!
>> 
>> I've committed the first two packages with some minor edits:
>> 
>> * Indentation ran through emacs (e.g. M-x indent-region). We follow
>>   emacs indentation rules religiously. :-)
>> * Updated commit messages to match the GNU changelog style.
>> * libtermkey and lua-lpeg actually had tests. 'gnu-build-system' runs
>>   "make check" by default, whereas they expected "make test". This can
>>   be overridden with the #:test-target argument.
>> * Avoided hard coding the lua version in lpeg install path.
>> 
>> 'vis' was a little more tricky. On startup it could not find the 
>> "visrc"
>> file, which you probably had in ~/.config or similar. I solved that by
>> adding a "native-search-path" for VIS_PATH so Guix sets up this 
>> variable
>> when installed (this seems to be an undocumented feature of Guix :-)).
>> 
>> In a perfect world, the same trick could be used for LUA_PATH and
>> LUA_CPATH to discover the optional "lpeg" module, but they don't seem 
>> to
>> behave like normal PATH specifications and requires a pattern match,
>> which in turn appears to get ignored by guix' 
>> search-path-specification.
>> 
>> Instead I wrapped the binary with the lpeg paths. This also seems to
>> have fixed the problem finding themes. Can you try the attached patch
>> and see if that works for you, especially if you have a custom config?
> I'm in a VM, so my home directory is pretty much empty, but you're 
> right: weeks
> back when I was trying to get it working on my machine I created an 
> empty
> config file, so I forgot about it when I submitted the patches.
>
> I tested it, and it works fine. I'll take a look at the modifications 
> you did
> to learn more about what to do for future patches.
>
> Finally, thanks for finally accepting these packages. I worked really 
> hard to
> prepare them (I didn't know any Scheme before starting!), but the 
> community has
> proven to be very helpful :D.

Thanks for checking (it seems you forgot to CC the list) :-)

I tested it with a custom config just now, but it seems to load the one
from VIS_PATH before checking ~/.config. I'm not sure how to fix that
without breaking the lexer integration, so I've committed it as-is.
Would be nice to have a fix for that though ;-)

Thanks again for contributing!

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 487 bytes --]

^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2016-12-08 14:18 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2016-12-07 17:33 [PATCH] gnu: Add vis, libtermkey and lua-lpeg José Miguel Sánchez García
2016-12-07 22:23 ` Marius Bakke
     [not found]   ` <dfce56f98ee68c2f45f67b03c87076da@openmailbox.org>
2016-12-08 14:17     ` Marius Bakke

Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/guix.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).