[bug#34761] gnu: Add eternalterminal.

Message ID 20190305192429.9165-1-efraim@flashner.co.il
State Accepted
Headers show
Series [bug#34761] gnu: Add eternalterminal. | expand

Checks

Context Check Description
cbaines/comparison success View comparison
cbaines/applying patch success Successfully applied

Commit Message

Efraim Flashner March 5, 2019, 7:24 p.m. UTC
* gnu/packages/terminals.scm (eternalterminal): New variable.
---
 gnu/packages/terminals.scm | 47 +++++++++++++++++++++++++++++++++++++-
 1 file changed, 46 insertions(+), 1 deletion(-)

Comments

Tobias Geerinckx-Rice March 5, 2019, 9:39 p.m. UTC | #1
Efraim,

As an avid mosh user, I'm intrigued!  Mosh with working 
scoll-back?  Can it be?  :-)

Just a quick metadata-only¹ review (sorry):

Efraim Flashner wrote:
> +    (synopsis "Re-Connectable secure remote shell")

‘Re-[c]onnectable’ sounds forced and vague at the same time.

I also found these (and particularly like the first one):
- Remote shell that reconnects without interrupting the session
- Remote shell that survives disconnection and IP roaming

> +    (description "Eternal Terminal is a remote shell that 
> automatically
> +reconnects without interrupting the session.")

Can we elongate?  Looking at the home page:

  @acronym{ET, Eternal Terminal} is a remote shell that 
  automatically
  reconnects without interrupting the session.

  It uses SSH to initialize a secure connection.  However, an ET 
  session
  will survive network outages and IP roaming while SSH sessions 
  must be
  killed and reconnected after a network outage.

  ET provides the same core functionality as @command{mosh}, while 
  also
  supporting native scrolling and @command{tmux} control mode
  (@code{tmux -CC}).

The rest LGTM at first glance but I can't test it yet…

Kind regards,

T G-R

[1]: And not even the licence, which would be, like, actual work.
Efraim Flashner March 11, 2019, 8:32 a.m. UTC | #2
Thanks. Pushed with your suggestions

Patch

diff --git a/gnu/packages/terminals.scm b/gnu/packages/terminals.scm
index 59cbe7cec7..adae78513c 100644
--- a/gnu/packages/terminals.scm
+++ b/gnu/packages/terminals.scm
@@ -1,5 +1,5 @@ 
 ;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2015, 2016, 2017, 2018 Efraim Flashner <efraim@flashner.co.il>
+;;; Copyright © 2015, 2016, 2017, 2018, 2019 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2016 Mckinley Olsen <mck.olsen@gmail.com>
 ;;; Copyright © 2016, 2017 Alex Griffin <a@ajgrf.com>
 ;;; Copyright © 2016 David Craven <david@craven.ch>
@@ -44,6 +44,7 @@ 
   #:use-module (gnu packages autotools)
   #:use-module (gnu packages check)
   #:use-module (gnu packages compression)
+  #:use-module (gnu packages crypto)
   #:use-module (gnu packages docbook)
   #:use-module (gnu packages fontutils)
   #:use-module (gnu packages freedesktop)
@@ -60,6 +61,8 @@ 
   #:use-module (gnu packages perl)
   #:use-module (gnu packages perl-check)
   #:use-module (gnu packages pkg-config)
+  #:use-module (gnu packages popt)
+  #:use-module (gnu packages protobuf)
   #:use-module (gnu packages python)
   #:use-module (gnu packages python-web)
   #:use-module (gnu packages python-xyz)
@@ -1014,3 +1017,45 @@  arbitrary programs of your choice.  This is useful for browsing the history
 comfortably in a pager or editor.
 @end itemize")
     (license license:gpl3+)))
+
+(define-public eternalterminal
+  (package
+    (name "eternalterminal")
+    (version "5.1.9")
+    (source
+      (origin
+        (method git-fetch)
+        (uri (git-reference
+               (url "https://github.com/MisterTea/EternalTerminal.git")
+               (commit (string-append "et-v" version))))
+        (file-name (git-file-name name version))
+       (sha256
+        (base32
+         "07ynkcnk3z6wafdlnzdxcd308cw1rzabxyq47ybj79lyji3wsgk7"))))
+    (build-system cmake-build-system)
+    (arguments
+     '(#:configure-flags '("-DBUILD_TEST=ON")
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'insert-googletests
+           (lambda* (#:key inputs #:allow-other-keys)
+             (let ((tests (assoc-ref inputs "googletest")))
+               (invoke "tar" "xvf" tests "-C" "external/googletest"
+                       "--strip-components=1"))))
+         (add-after 'install 'dont-provide-gtest-libraries
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let ((out (assoc-ref outputs "out")))
+               (delete-file-recursively (string-append out "/include"))
+               (delete-file-recursively (string-append out "/lib")))
+             #t)))))
+    (inputs
+     `(("gflags" ,gflags)
+       ("libsodium" ,libsodium)
+       ("protobuf" ,protobuf)))
+    (native-inputs
+     `(("googletest" ,(package-source googletest))))
+    (home-page "https://mistertea.github.io/EternalTerminal/")
+    (synopsis "Re-Connectable secure remote shell")
+    (description "Eternal Terminal is a remote shell that automatically
+reconnects without interrupting the session.")
+    (license license:asl2.0)))