Subject: [PATCH] gnu: Add edbrowse.

From: "B. Wilson" <[email-masked]>
Date: Thu, 14 Sep 2023 15:42:55 +0900

* gnu/packages/web-browsers.scm (edbrowse): New variable.
---
 gnu/packages/web-browsers.scm | 61 +++++++++++++++++++++++++++++++++++
 1 file changed, 61 insertions(+)

diff --git a/gnu/packages/web-browsers.scm b/gnu/packages/web-browsers.scm
index a8ef7099f5..b0d0a1cae0 100644
--- a/gnu/packages/web-browsers.scm
+++ b/gnu/packages/web-browsers.scm
@@ -57,6 +57,7 @@ (define-module (gnu packages web-browsers)
   #:use-module (gnu packages bison)
   #:use-module (gnu packages compression)
   #:use-module (gnu packages curl)
+  #:use-module (gnu packages databases)
   #:use-module (gnu packages documentation)
   #:use-module (gnu packages fltk)
   #:use-module (gnu packages fontutils)
@@ -72,6 +73,7 @@ (define-module (gnu packages web-browsers)
   #:use-module (gnu packages gtk)
   #:use-module (gnu packages image)
   #:use-module (gnu packages imagemagick)
+  #:use-module (gnu packages javascript)
   #:use-module (gnu packages libevent)
   #:use-module (gnu packages libidn)
   #:use-module (gnu packages libunistring)
@@ -93,9 +95,11 @@ (define-module (gnu packages web-browsers)
   #:use-module (gnu packages python-web)
   #:use-module (gnu packages python-xyz)
   #:use-module (gnu packages qt)
+  #:use-module (gnu packages readline)
   #:use-module (gnu packages sdl)
   #:use-module (gnu packages sqlite)
   #:use-module (gnu packages tls)
+  #:use-module (gnu packages web)
   #:use-module (gnu packages webkit)
   #:use-module (gnu packages xorg))
 
@@ -1022,3 +1026,60 @@ (define-public av-98
 @item Support for any character encoding recognised by Python.
 @end itemize")
     (license license:bsd-2)))
+
+(define-public edbrowse
+  (package
+    (name "edbrowse")
+    (version "3.8.7")
+    (source
+      (origin
+        (method git-fetch)
+        (uri (git-reference
+               (url "https://github.com/CMB/edbrowse.git")
+               (commit (string-append "v" version))))
+        (file-name (git-file-name name version))
+        (sha256
+          (base32 "1bbh619aii0fma18yj05i8bb5xmnn907ffx6zfyn5a323s35nvn5"))
+        (modules '((guix build utils)))
+        (snippet
+          '(begin
+             (for-each
+               (lambda (file)
+                 (substitute* file
+                   (("\"quickjs-libc.h\"") "<quickjs/quickjs-libc.h>")))
+               '("src/js_hello_quick.c" "src/jseng-quick.c"))
+             #t))))
+    (build-system gnu-build-system)
+    (inputs (list curl-ssh pcre2 quickjs openssl readline-7 tidy-html
+                  unixodbc))
+    (native-inputs (list perl pkg-config))
+    (arguments
+     `(#:make-flags (list (string-append "CC=" ,(cc-for-target))
+                          "EBDEBUG=1" ; Prevent upstream makefile from stipping
+                          (string-append "QUICKJS_DIR="
+                                         (assoc-ref %build-inputs "quickjs")
+                                         "/lib/quickjs"))
+       #:phases
+       (modify-phases %standard-phases
+         (delete 'configure)
+         (delete 'check)
+         (replace 'install
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let* ((out (assoc-ref outputs "out"))
+                    (bin (string-append out "/bin"))
+                    (doc (string-append out "/doc/" ,name)))
+               (mkdir-p doc)
+               (install-file "doc/usersguide.html" doc)
+               (install-file "src/edbrowse" bin)))))))
+    (home-page "https://edbrowse.org/")
+    (synopsis "Command-line editor and web browser")
+    (description "Edbrowse is a combination editor, browser, and mail client
+that is 100% text based.  The interface is similar to /bin/ed, though there are
+many more features, such as editing multiple files simultaneously, and
+rendering html.  This program was originally written for blind users, but many
+sighted users have taken advantage of the unique scripting capabilities of this
+program, which can be found nowhere else.  A batch job, or cron job, can access
+web pages on the internet, submit forms, and send email, with no human
+intervention whatsoever.  edbrowse can also tap into databases through odbc.
+It was primarily written by Karl Dahlke.")
+    (license license:gpl2+)))
-- 
2.41.0