X-Git-Url: https://git.hcoop.net/jackhill/guix/guix.git/blobdiff_plain/ab0ede51c041927a1c35535aec3504f84d7a9751..c1ab9e881a0a5ba840ddb998dd7c60f6649f0f69:/gnu/packages/web-browsers.scm diff --git a/gnu/packages/web-browsers.scm b/gnu/packages/web-browsers.scm index ae63ca6cc5..b61ed7f3ca 100644 --- a/gnu/packages/web-browsers.scm +++ b/gnu/packages/web-browsers.scm @@ -1,13 +1,17 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2014 John Darrington -;;; Copyright © 2014 Mark H Weaver -;;; Copyright © 2015, 2016 Efraim Flashner +;;; Copyright © 2014, 2019 Mark H Weaver +;;; Copyright © 2015, 2016, 2019 Efraim Flashner ;;; Copyright © 2016 Kei Kebreau ;;; Copyright © 2017 Eric Bavier ;;; Copyright © 2018, 2019 Tobias Geerinckx-Rice ;;; Copyright © 2018 Rutger Helling ;;; Copyright © 2018 Timo Eisenmann ;;; Copyright © 2018 Pierre Neidhardt +;;; Copyright © 2019 Clément Lassieur +;;; Copyright © 2019 Brett Gilio +;;; Copyright © 2020 Raghav Gururajan +;;; Copyright © 2020 B. Wilson ;;; ;;; This file is part of GNU Guix. ;;; @@ -28,17 +32,22 @@ #:use-module ((guix licenses) #:prefix license:) #:use-module (guix packages) #:use-module (gnu packages) + #:use-module (gnu packages backup) #:use-module (gnu packages compression) #:use-module (gnu packages documentation) #:use-module (gnu packages fltk) #:use-module (gnu packages fontutils) + #:use-module (gnu packages freedesktop) + #:use-module (gnu packages glib) #:use-module (gnu packages gtk) #:use-module (gnu packages gnupg) #:use-module (gnu packages libevent) #:use-module (gnu packages libidn) #:use-module (gnu packages lisp) + #:use-module (gnu packages lisp-xyz) #:use-module (gnu packages lua) #:use-module (gnu packages gnome) + #:use-module (gnu packages gnome-xyz) #:use-module (gnu packages ncurses) #:use-module (gnu packages perl) #:use-module (gnu packages pkg-config) @@ -54,10 +63,68 @@ #:use-module (gnu packages gcc) #:use-module (guix download) #:use-module (guix git-download) + #:use-module (guix build-system cmake) #:use-module (guix build-system gnu) #:use-module (guix build-system glib-or-gtk) #:use-module (guix build-system python) - #:use-module (guix build-system asdf)) + #:use-module (guix build-system asdf) + #:use-module (guix build-system go)) + +(define-public midori + (package + (name "midori") + (version "9.0") + (source + (origin + (method url-fetch) + (uri + (string-append "https://github.com/midori-browser/core/releases/" + "download/v" version "/" name "-v" version ".tar.gz")) + (sha256 + (base32 + "05i04qa83dnarmgkx4xsk6fga5lw1lmslh4rb3vhyyy4ala562jy")))) + (build-system cmake-build-system) + (arguments + `(#:imported-modules + (,@%cmake-build-system-modules + (guix build glib-or-gtk-build-system)) + #:modules + ((guix build cmake-build-system) + ((guix build glib-or-gtk-build-system) #:prefix glib-or-gtk:) + (guix build utils)) + #:phases + (modify-phases %standard-phases + (add-after 'install 'glib-or-gtk-compile-schemas + (assoc-ref glib-or-gtk:%standard-phases + 'glib-or-gtk-compile-schemas)) + (add-after 'install 'glib-or-gtk-wrap + (assoc-ref glib-or-gtk:%standard-phases + 'glib-or-gtk-wrap))))) + (native-inputs + `(("glib:bin" ,glib "bin") + ("gtk+:bin" ,gtk+ "bin") + ("intltool" ,intltool) + ("pkg-config" ,pkg-config))) + (inputs + `(("adwaita-icon-theme" ,adwaita-icon-theme) + ("gcr" ,gcr) + ("glib" ,glib) + ("glib-networking" ,glib-networking) + ("gsettings-desktop-schemas" ,gsettings-desktop-schemas) + ("gtk+" ,gtk+) + ("json-glib" ,json-glib) + ("libarchive" ,libarchive) + ("libpeas" ,libpeas) + ("libsoup" ,libsoup) + ("sqlite" ,sqlite) + ("vala" ,vala) + ("webkitgtk" ,webkitgtk))) + (synopsis "Lightweight graphical web browser") + (description "@code{Midori} is a lightweight, Webkit-based web browser. +It features integration with GTK+3, configurable web search engine, bookmark +management, extensions such as advertisement blocker and colorful tabs.") + (home-page "https://www.midori-browser.org") + (license license:lgpl2.1+))) (define-public dillo (package @@ -65,8 +132,8 @@ (version "3.0.5") (source (origin (method url-fetch) - (uri (string-append "http://www.dillo.org/download/" - name "-" version ".tar.bz2")) + (uri (string-append "https://www.dillo.org/download/" + "dillo-" version ".tar.bz2")) (sha256 (base32 "12ql8n1lypv3k5zqgwjxlw1md90ixz3ag6j1gghfnhjq3inf26yv")))) @@ -75,32 +142,32 @@ (native-inputs `(("pkg-config" ,pkg-config))) (inputs `(("fltk" ,fltk) ("fontconfig" ,fontconfig) - ("libjpeg" ,libjpeg) + ("libjpeg" ,libjpeg-turbo) ("libpng" ,libpng) ("libxcursor" ,libxcursor) ("libxft" ,libxft) ("libxi" ,libxi) ("libxinerama" ,libxinerama) - ("openssl" ,openssl) + ("openssl" ,openssl-1.0) ;XXX try latest openssl for dillo > 3.0.5 ("perl" ,perl) ("zlib" ,zlib))) (synopsis "Very small and fast graphical web browser") (description "Dillo is a minimalistic web browser particularly intended for older or slower computers and embedded systems.") - (home-page "http://www.dillo.org") + (home-page "https://www.dillo.org") (license license:gpl3+))) (define-public links (package (name "links") - (version "2.20.1") + (version "2.20.2") (source (origin (method url-fetch) (uri (string-append "http://links.twibright.com/download/" "links-" version ".tar.bz2")) - (sha256 + (sha256 (base32 - "0184g59cxxhg9dqg5gv66f30f1wg8sx957pp5rs7b8icnwnafa5v")))) + "097ll98ympzfx7qfdyhc52yzvsp167x5nnjs6v8ih496wv80fksb")))) (build-system gnu-build-system) (arguments `(#:phases @@ -123,7 +190,7 @@ older or slower computers and embedded systems.") (native-inputs `(("pkg-config" ,pkg-config))) (inputs `(("zlib" ,zlib) ("openssl" ,openssl) - ("libjpeg" ,libjpeg) + ("libjpeg" ,libjpeg-turbo) ("libtiff" ,libtiff) ("libevent" ,libevent) ("libpng" ,libpng) @@ -146,13 +213,14 @@ features including, tables, builtin image display, bookmarks, SSL and more.") (name "luakit") (version "2.1") (source (origin - (method url-fetch) - (uri (string-append "https://github.com/luakit/luakit/archive/" version - ".tar.gz")) + (method git-fetch) + (uri (git-reference + (url "https://github.com/luakit/luakit.git") + (commit version))) + (file-name (git-file-name name version)) (sha256 (base32 - "09kgsm2w2xa4xwylsi0bwjvdl9k6hkyjyyrq2i3l8bvi2qrs5gzc")) - (file-name (string-append name "-" version ".tar.gz")))) + "1qa90caxv1k6ak88fn0a7n7h0c4iv8szw6zn2axch8ig83i86az2")))) (inputs `(("lua-5.1" ,lua-5.1) ("gtk+" ,gtk+) @@ -222,7 +290,7 @@ and the GTK+ toolkit.") ("perl" ,perl))) (inputs `(("ncurses" ,ncurses) ("libidn" ,libidn) - ("gnutls" ,gnutls) + ("openssl" ,openssl) ("libgcrypt" ,libgcrypt) ("unzip" ,unzip) ("zlib" ,zlib) @@ -230,12 +298,12 @@ and the GTK+ toolkit.") ("bzip2" ,bzip2))) (arguments `(#:configure-flags - (let ((gnutls (assoc-ref %build-inputs "gnutls"))) + (let ((openssl (assoc-ref %build-inputs "openssl"))) `("--with-pkg-config" "--with-screen=ncurses" "--with-zlib" "--with-bzlib" - ,(string-append "--with-gnutls=" gnutls) + ,(string-append "--with-ssl=" openssl) ;; "--with-socks5" ; XXX TODO "--enable-widec" "--enable-ascii-ctypes" @@ -265,24 +333,26 @@ nntp, finger, or cso/ph/qi servers. Lynx can be used to access information on the WWW, or to build information systems intended primarily for local access.") (home-page "https://lynx.invisible-island.net/") + ;; This was fixed in 2.8.9dev.10. + (properties `((lint-hidden-cve . ("CVE-2016-9179")))) (license license:gpl2))) (define-public qutebrowser (package (name "qutebrowser") - (version "0.11.0") + (version "1.11.0") (source (origin (method url-fetch) - (uri (string-append "https://github.com/The-Compiler/" + (uri (string-append "https://github.com/qutebrowser/" "qutebrowser/releases/download/v" version "/" "qutebrowser-" version ".tar.gz")) (sha256 (base32 - "13ihx66jm1dd6vx8px7pm0kbzf2sf9x43hhivc1rp17kahnxxdyv")))) + "0b0qlki9bp9mm41lrh6rc6qqvm4nsz8da63sby3a1f2xm9b9vvg2")))) (build-system python-build-system) (native-inputs - `(("asciidoc" ,asciidoc))) + `(("python-attrs" ,python-attrs))) ; for tests (inputs `(("python-colorama" ,python-colorama) ("python-cssutils" ,python-cssutils) @@ -291,21 +361,31 @@ access.") ("python-pygments" ,python-pygments) ("python-pypeg2" ,python-pypeg2) ("python-pyyaml" ,python-pyyaml) + ;; FIXME: python-pyqtwebengine needs to come before python-pyqt so + ;; that it's __init__.py is used first. + ("python-pyqtwebengine" ,python-pyqtwebengine) ("python-pyqt" ,python-pyqt) - ("qtwebkit" ,qtwebkit))) + ;; While qtwebengine is provided by python-pyqtwebengine, it's + ;; included here so we can wrap QTWEBENGINEPROCESS_PATH. + ("qtwebengine" ,qtwebengine))) (arguments - `(#:tests? #f ;no tests + `(;; FIXME: With the existance of qtwebengine, tests can now run. But + ;; they are still disabled because test phase hangs. It's not readily + ;; apparent as to why. + #:tests? #f #:phases (modify-phases %standard-phases + (add-before 'check 'set-env-offscreen + (lambda _ + (setenv "QT_QPA_PLATFORM" "offscreen") + #t)) (add-after 'install 'install-more (lambda* (#:key outputs #:allow-other-keys) (let* ((out (assoc-ref outputs "out")) (app (string-append out "/share/applications")) (hicolor (string-append out "/share/icons/hicolor"))) - (invoke "a2x" "-f" "manpage" "doc/qutebrowser.1.asciidoc") (install-file "doc/qutebrowser.1" (string-append out "/share/man/man1")) - (for-each (lambda (i) (let ((src (format #f "icons/qutebrowser-~dx~d.png" i i)) @@ -316,22 +396,31 @@ access.") '(16 24 32 48 64 128 256 512)) (install-file "icons/qutebrowser.svg" (string-append hicolor "/scalable/apps")) - - (substitute* "qutebrowser.desktop" + (substitute* "misc/org.qutebrowser.qutebrowser.desktop" (("Exec=qutebrowser") (string-append "Exec=" out "/bin/qutebrowser"))) - (install-file "qutebrowser.desktop" app) + (install-file "misc/org.qutebrowser.qutebrowser.desktop" app) + #t))) + (add-after 'wrap 'wrap-qt-process-path + (lambda* (#:key inputs outputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out")) + (bin (string-append out "/bin/qutebrowser")) + (qt-process-path (string-append + (assoc-ref inputs "qtwebengine") + "/lib/qt5/libexec/QtWebEngineProcess"))) + (wrap-program bin + `("QTWEBENGINEPROCESS_PATH" ":" prefix (,qt-process-path))) #t)))))) (home-page "https://qutebrowser.org/") (synopsis "Minimal, keyboard-focused, vim-like web browser") (description "qutebrowser is a keyboard-focused browser with a minimal -GUI. It is based on PyQt5 and QtWebKit.") +GUI. It is based on PyQt5 and QtWebEngine.") (license license:gpl3+))) (define-public vimb (package (name "vimb") - (version "3.5.0") + (version "3.6.0") (source (origin (method git-fetch) @@ -339,7 +428,7 @@ GUI. It is based on PyQt5 and QtWebKit.") (url "https://github.com/fanglingsu/vimb/") (commit version))) (sha256 - (base32 "13q7mk1hhjri0s30a98r8ncy0skf6m6lrnbqaf0jimf6sbwgiirf")) + (base32 "0228khh3lqbal046k6akqah7s5igq9s0wjfjbdjam75kjj42pbhj")) (file-name (git-file-name name version)))) (build-system glib-or-gtk-build-system) (arguments @@ -367,7 +456,7 @@ driven and does not detract you from your daily work.") (define next-gtk-webkit (package (name "next-gtk-webkit") - (version "1.3.3") + (version "1.5.0") (source (origin (method git-fetch) @@ -378,16 +467,13 @@ driven and does not detract you from your daily work.") (commit version))) (sha256 (base32 - "0vxjihldvif147l2kjd83kk1wcs4ixgv1yxjnpn3wgg8306pgnlh")) + "1gqkp185wcwaxr8py90hqk44nqjblrrdwvig19gizrbzr2gx2zhy")) (file-name (git-file-name "next" version)))) (build-system glib-or-gtk-build-system) (arguments `(#:tests? #f ; no tests #:make-flags (list "gtk-webkit" - (string-append - "CC=" - (assoc-ref %build-inputs "gcc-7") - "/bin/gcc") + "CC=gcc" (string-append "PREFIX=" %output)) #:phases (modify-phases %standard-phases @@ -398,16 +484,14 @@ driven and does not detract you from your daily work.") (inputs `(("glib-networking" ,glib-networking) ("gsettings-desktop-schemas" ,gsettings-desktop-schemas) - ("webkitgtk" ,webkitgtk-2.26))) + ("webkitgtk" ,webkitgtk))) (native-inputs - `(("gcc-7" ,gcc-7) ; needed because webkitgtk-2.24 and above are compiled with gcc-7 - ("pkg-config" ,pkg-config))) + `(("pkg-config" ,pkg-config))) (home-page "https://next.atlas.engineer") - (synopsis "Infinitely extensible web-browser (user interface only)") + (synopsis "Extensible web-browser in Common Lisp") (description "Next is a keyboard-oriented, extensible web-browser -inspired by Emacs and designed for power users. The application has familiar -key-bindings, is fully configurable and extensible in Lisp, and has powerful -features for productive professionals.") +designed for power users. The application has familiar Emacs and VI +key-bindings and is fully configurable and extensible in Common Lisp.") (license license:bsd-3))) (define sbcl-next-download-manager @@ -429,7 +513,7 @@ features for productive professionals.") (native-inputs `(("trivial-features" ,sbcl-trivial-features) ("prove-asdf" ,sbcl-prove-asdf))) - (synopsis "Infinitely extensible web-browser (download manager)"))) + (synopsis "Extensible web-browser in Common Lisp (download manager)"))) (define sbcl-next-ring (package @@ -443,7 +527,7 @@ features for productive professionals.") (native-inputs `(("trivial-features" ,sbcl-trivial-features) ("prove-asdf" ,sbcl-prove-asdf))) - (synopsis "Infinitely extensible web-browser (ring)"))) + (synopsis "Extensible web-browser in Common Lisp (ring)"))) (define sbcl-next-history-tree (package @@ -457,7 +541,7 @@ features for productive professionals.") (native-inputs `(("trivial-features" ,sbcl-trivial-features) ("prove-asdf" ,sbcl-prove-asdf))) - (synopsis "Infinitely extensible web-browser (history-tree)"))) + (synopsis "Extensible web-browser in Common Lisp (history-tree)"))) (define sbcl-next-password-manager (package @@ -477,7 +561,24 @@ features for productive professionals.") (native-inputs `(("trivial-features" ,sbcl-trivial-features) ("prove-asdf" ,sbcl-prove-asdf))) - (synopsis "Infinitely extensible web-browser (password manager)"))) + (synopsis "Extensible web-browser in Common Lisp (password manager)"))) + +(define sbcl-next-hooks + (package + (inherit next-gtk-webkit) + (name "sbcl-next-hooks") + (build-system asdf-build-system/sbcl) + (arguments + `(#:tests? #t + #:asd-file "next.asd" + #:asd-system-name "next/hooks")) + (inputs + `(("alexandria" ,sbcl-alexandria) + ("serapeum" ,sbcl-serapeum))) + (native-inputs + `(("trivial-features" ,sbcl-trivial-features) + ("prove-asdf" ,sbcl-prove-asdf))) + (synopsis "Infinitely extensible web-browser (hooks)"))) (define-public next (let ((version (package-version next-gtk-webkit))) @@ -538,14 +639,23 @@ features for productive professionals.") (format #t "~a" ,(package-version next-gtk-webkit)))) (invoke "make" "install-assets" (string-append "PREFIX=" - (assoc-ref outputs "out")))))))) + (assoc-ref outputs "out"))))) + (add-after 'unpack 'fix-lambda-list + ;; Starting from SBCL 2.0.2, Next 1.5.0 won't build + ;; because of a weird lambda list type. + (lambda _ + (substitute* "source/keymap.lisp" + (("^\\(declaim .* define-key\\)\\)") "")) + (substitute* "source/search-buffer.lisp" + (("define-key :keymap keymap \"C-s\"") "define-key \"C-s\"") + (("\\(update-selection-highlight-hint :follow t :scroll t\\)\\)\\)") + "(update-selection-highlight-hint :follow t :scroll t)) :keymap keymap)"))))))) (inputs `(("alexandria" ,sbcl-alexandria) ("bordeaux-threads" ,sbcl-bordeaux-threads) ("cl-annot" ,sbcl-cl-annot) ("cl-ansi-text" ,sbcl-cl-ansi-text) ("cl-css" ,sbcl-cl-css) - ("cl-hooks" ,sbcl-cl-hooks) ("cl-json" ,sbcl-cl-json) ("cl-markup" ,sbcl-cl-markup) ("cl-ppcre" ,sbcl-cl-ppcre) @@ -560,7 +670,9 @@ features for productive professionals.") ("lparallel" ,sbcl-lparallel) ("mk-string-metrics" ,sbcl-mk-string-metrics) ("parenscript" ,sbcl-parenscript) + ("plump" ,sbcl-plump) ("quri" ,sbcl-quri) + ("serapeum" ,sbcl-serapeum) ("sqlite" ,sbcl-cl-sqlite) ("str" ,sbcl-cl-str) ("swank" ,sbcl-slime-swank) @@ -572,11 +684,56 @@ features for productive professionals.") ("next-download-manager" ,sbcl-next-download-manager) ("next-ring" ,sbcl-next-ring) ("next-history-tree" ,sbcl-next-history-tree) - ("next-password-manager" ,sbcl-next-password-manager))) + ("next-password-manager" ,sbcl-next-password-manager) + ("next-hooks" ,sbcl-next-hooks))) (native-inputs `(("trivial-features" ,sbcl-trivial-features) + ("trivial-types" ,sbcl-trivial-types) ("prove-asdf" ,sbcl-prove-asdf))) - (synopsis "Infinitely extensible web-browser (with Lisp development files)")))) + (synopsis "Extensible web-browser in Common Lisp")))) (define-public sbcl-next (deprecated-package "sbcl-next" next)) + +(define-public bombadillo + (package + (name "bombadillo") + (version "2.2.0") + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://tildegit.org/sloum/bombadillo") + (commit version))) + (sha256 + (base32 + "1m52b1wk48gkqmjy8l0x3jaksrx2v8w6w59lhr7zaw2i0n4f5k0z")) + (file-name (git-file-name name version)))) + (build-system go-build-system) + (arguments + `(#:import-path "tildegit.org/sloum/bombadillo" + #:install-source? #f + #:phases (modify-phases %standard-phases + (add-after 'install 'install-data + (lambda* (#:key outputs #:allow-other-keys) + (let* ((builddir "src/tildegit.org/sloum/bombadillo") + (out (assoc-ref outputs "out")) + (pkg (strip-store-file-name out)) + (sharedir (string-append out "/share")) + (appdir (string-append sharedir "/applications")) + (docdir (string-append sharedir "/doc/" pkg)) + (mandir (string-append sharedir "/man/man1")) + (pixdir (string-append sharedir "/pixmaps"))) + (with-directory-excursion builddir + (install-file "bombadillo.desktop" appdir) + (install-file "LICENSE" docdir) + (install-file "bombadillo.1" mandir) + (install-file "bombadillo-icon.png" pixdir) + #t))))))) + (home-page "http://bombadillo.colorfield.space") + (synopsis "Terminal browser for the gopher, gemini, and finger protocols") + (description "Bombadillo is a non-web browser for the terminal with +vim-like key bindings, a document pager, configurable settings, and robust +command selection. The following protocols are supported as first-class +citizens: gopher, gemini, finger, and local. There is also support for telnet, +http, and https via third-party applications.") + (license license:gpl3+)))