Subject: [PATCH v2] gnu: Add edbrowse.

From: Christina O'Donnell <[email-masked]>
Date: Wed, 3 Apr 2024 10:59:11 +0100

From: "Christina O'Donnell" <[email-masked]>

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

Dear B. Wilson,

Thank you for this patch that you submitted in September. Sorry it's
been a while since you sent this in, Guix is a bit short of developers
and reviewers at the moment.

I'm a new contributor trying to help with the backlog of patches, so
you can take my points with a grain of salt.

This package is good. It applies, builds and runs. The formatting is
more or less right.

I have no idea how to use or test edbrowse but it runs at least and
passes `guix lint`.

I've made the following changes:

 - I've reformatted the code to the guix style.
 - I've updated from 3.8.7 to 3.8.9.
 - I've removed the EBDEBUG make flag as this is a release build.
 - I've changed QUICKJS_DIR to QUICKJS_LIB as this was changed
   between 3.8.7 and 3.8.9.
 - I've opted for passing '#:tests #f' instead of deleting 'check.
 - I've set the doc path to /share/doc/ instead of /doc/.

Aside from these points, I think this patch is ready to be pushed.

Kind regards,
Christina

diff --git a/gnu/packages/web-browsers.scm b/gnu/packages/web-browsers.scm
index e6bc6a0c7b..23a85107ee 100644
--- a/gnu/packages/web-browsers.scm
+++ b/gnu/packages/web-browsers.scm
@@ -58,6 +58,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)
@@ -74,6 +75,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)
@@ -94,11 +96,13 @@ (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 tcl)
   #:use-module (gnu packages text-editors)
   #:use-module (gnu packages tls)
+  #:use-module (gnu packages web)
   #:use-module (gnu packages webkit)
   #:use-module (gnu packages xorg))
 
@@ -1022,3 +1026,58 @@ (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.9")
+    (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 "0hxvdvplmbnn0jzw4ls8a03k2s7qdylghln74910yljzjf392mld"))
+       (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))
+                          (string-append "QUICKJS_LIB="
+                                         (assoc-ref %build-inputs "quickjs")
+                                         "/lib/quickjs"))
+       #:tests? #f ; Edbrowse doesn't have tests
+       #:phases
+       (modify-phases %standard-phases
+         (delete 'configure)
+         (replace 'install
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let* ((out (assoc-ref outputs "out"))
+                    (bin (string-append out "/bin"))
+                    (doc (string-append out "/share/doc/" ,name "-" ,version)))
+               (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+)))

base-commit: 4d994f98a49e1a6e58b9b0b512a05efc1c431a50
-- 
2.41.0