diff mbox series

[bug#64206] gnu: webview: Tiny cross-platform webview library.

Message ID b954cdeac839e861108cce23f29127905589e547.1687310903.git.kotshie@gmail.com
State New
Headers show
Series [bug#64206] gnu: webview: Tiny cross-platform webview library. | expand

Commit Message

Jose Ortiz June 21, 2023, 1:28 a.m. UTC
* gnu/packages/webview.scm (libwebview): Tiny cross-platform webview
library for C/C++/Golang. Uses Webkit(Gtk/Cocoa) and Edge(Windows).
---
 gnu/packages/webview.scm | 81 ++++++++++++++++++++++++++++++++++++++++
 1 file changed, 81 insertions(+)
 create mode 100644 gnu/packages/webview.scm


base-commit: d884fc9e2efecfba09af4694f5a13ad7fc6f704f

Comments

Liliana Marie Prikler June 22, 2023, 6:29 p.m. UTC | #1
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 <kotshie@gmail.com>
> +;;;
> +;;; 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
diff mbox series

Patch

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
@@ -0,0 +1,81 @@ 
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2023 Jose Ortiz <kotshie@gmail.com>
+;;;
+;;; 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")
+    (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
+       #: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)))))))
+    (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)))