Subject: Re: [PATCH] gnu: webview: Tiny cross-platform webview library.

From: Liliana Marie Prikler <[email-masked]>
Date: Thu, 22 Jun 2023 20:29:22 +0200

Hi, Jose

Am Dienstag, dem 20.06.2023 um 18:28 -0700 schrieb Jose Ortiz:
> * gnu/packages/webview.scm (libwebview): Tiny cross-platform webview
> library for C/C++/Golang. Uses Webkit(Gtk/Cocoa) and Edge(Windows).
Please refer to section 22.6 of the Guix manual and 6.8.2 of the GNU
style manual on how to write commit messages :)

> ---
>  gnu/packages/webview.scm | 81
> ++++++++++++++++++++++++++++++++++++++++
>  1 file changed, 81 insertions(+)
>  create mode 100644 gnu/packages/webview.scm
> 
> diff --git a/gnu/packages/webview.scm b/gnu/packages/webview.scm
> new file mode 100644
> index 0000000000..ee3977ba6a
> --- /dev/null
> +++ b/gnu/packages/webview.scm
Creating a new file appears to me as somewhat overkill.  We do have
web.scm FWIW and it already pulls in Rust and Go if you need those for
future libraries on top of webview.

> @@ -0,0 +1,81 @@
> +;;; GNU Guix --- Functional package management for GNU
> +;;; Copyright © 2023 Jose Ortiz <[email-masked]>
> +;;;
> +;;; 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 webview)
> +  #:use-module (gnu packages)
> +  #:use-module (guix packages)
> +  #:use-module (guix build-system gnu)
> +  #:use-module (guix git-download)
> +  #:use-module (gnu packages pkg-config)
> +  #:use-module (gnu packages gtk)
> +  #:use-module (gnu packages webkit)
> +  #:use-module ((guix licenses) #:prefix license:))
> +
> +
> +(define-public webview
> +  (package
> +    (name "webview")
> +    (version "899018a")
A commit hash is not a version.  It turns out there was a release back
in 2020, though I don't know how reliable that is.
> +    (source (origin
> +              (method git-fetch)
> +              (uri (git-reference
> +                    (url "https://github.com/webview/webview")
> +                    (commit
> "899018ad0e5cc22a18cd734393ccae4d55e3b2b4")))
> +              (file-name (git-file-name name version))
> +              (sha256
> +               (base32
> +               
> "008bk2l6spsixsyk0dssnhnwdhmhwbm3qypk1rrz02rza28dzigb"))))
> +    (build-system gnu-build-system)
> +    (arguments
> +     `(#:tests? #f
Never #:tests? #f without an appropriate comment.
> +       #:phases (modify-phases %standard-phases
> +                  (delete 'configure)
> +                  (replace 'build
> +                    (lambda _
> +                      (use-modules (ice-9 popen)
> +                                   (ice-9 rdelim))
> +                      (define (webview-flags)
> +                        (let* ((port (open-input-pipe (string-append
> +                                                       "pkg-config -
> -cflags --libs "
> +                                                       "gtk+-3.0
> webkit2gtk-4.0")))
> +                               (results (string-split (read-line
> port) #\space)))
> +                          results))
> +                      (apply invoke
> +                             `("g++" "webview.cc"
> +                               "-fPIC"
> +                               "-shared"
> +                               "-DWEBVIEW_GTK"
> +                               "-std=c++11"
> +                               ,@(webview-flags)
> +                               "-o"
> +                               "libwebview.so"))))
> +                  (replace 'install
> +                    (lambda* (#:key outputs #:allow-other-keys)
> +                      (let* ((output (assoc-ref outputs "out"))
> +                             (lib (string-append output "/lib"))
> +                             (include (string-append output
> "/include")))
> +                        (install-file "libwebview.so" lib)
> +                        (mkdir-p include)
> +                        (install-file "webview.h" include)))))))
This looks like it could more correctly be implemented via copy-build-
system with a pre-install build phase.
> +    (native-inputs (list pkg-config))
> +    (inputs (list gtk+ webkitgtk-with-libsoup2))
> +    (home-page "https://github.com/webview/webview")
> +    (synopsis "Tiny cross-platform webview library")
> +    (description "Tiny cross-platform webview library for
> C/C++/Golang.
> +Uses WebKit (Gtk/Cocoa) and Edge (Windows).")
> +    (license license:expat)))
> 
> base-commit: d884fc9e2efecfba09af4694f5a13ad7fc6f704f

Cheers