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

  • Open
  • quality assurance status badge
Details
3 participants
  • Jose Ortiz
  • Liliana Marie Prikler
  • Ludovic Courtès
Owner
unassigned
Submitted by
Jose Ortiz
Severity
normal
J
J
Jose Ortiz wrote on 21 Jun 2023 03:28
(address . guix-patches@gnu.org)(name . Jose Ortiz)(address . kotshie@gmail.com)
b954cdeac839e861108cce23f29127905589e547.1687310903.git.kotshie@gmail.com
* 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

Toggle diff (91 lines)
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)))

base-commit: d884fc9e2efecfba09af4694f5a13ad7fc6f704f
--
2.40.1
L
L
Liliana Marie Prikler wrote on 22 Jun 2023 20:29
aae5bc57be98e24397af0d1ddd2380b66daa05ae.camel@gmail.com
Hi, Jose

Am Dienstag, dem 20.06.2023 um 18:28 -0700 schrieb Jose Ortiz:
Toggle quote (2 lines)
> * 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 :)

Toggle quote (11 lines)
> ---
>  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.

Toggle quote (39 lines)
> @@ -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.
Toggle quote (14 lines)
> +    (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.
Toggle quote (33 lines)
> +       #: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.
Toggle quote (11 lines)
> +    (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
L
L
Ludovic Courtès wrote on 8 Oct 2023 23:32
control message for bug #64206
(address . control@debbugs.gnu.org)
87zg0sx0kt.fsf@gnu.org
tags 64206 + moreinfo
quit
?