From: Leo Famulari <l...@famulari.name>
Subject: Re: [PATCH] gnu: Add qtwebkit.
Date: Sat, 5 Nov 2016 14:45:38 -0400
Can you add a code comment mentioning that this package is not
officially supported by the Qt project?
done!
I've attached an updated patch, as well as a follow-up patch for the
texmaker package.
cheers,
Thomas
From 68a4c4accb53cb11c70d242d78e14259e788ac86 Mon Sep 17 00:00:00 2001
From: Thomas Danckaert <thomas.dancka...@gmail.com>
Date: Sat, 5 Nov 2016 21:18:13 +0100
Subject: [PATCH 2/2] gnu: texmaker: Use modular qt and qtwebkit.
* gnu/packages/tex.scm (texmaker)[inputs]: Use modular qt and qtwebkit.
---
gnu/packages/tex.scm | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/gnu/packages/tex.scm b/gnu/packages/tex.scm
index c8114c2..9186e46 100644
--- a/gnu/packages/tex.scm
+++ b/gnu/packages/tex.scm
@@ -5,6 +5,7 @@
;;; Copyright © 2016 Roel Janssen <r...@gnu.org>
;;; Copyright © 2016 Efraim Flashner <efr...@flashner.co.il>
;;; Copyright © 2016 Federico Beffa <be...@fbengineering.ch>
+;;; Copyright © 2016 Thomas Danckaert <p...@thomasdanckaert.be>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -439,7 +440,9 @@ PDF documents.")
"texmaker.pro"))))))))
(inputs
`(("poppler-qt5" ,poppler-qt5)
- ("qt" ,qt)
+ ("qtbase" ,qtbase)
+ ("qtscript" ,qtscript)
+ ("qtwebkit" ,qtwebkit)
("zlib" ,zlib)))
(native-inputs
`(("pkg-config" ,pkg-config)))
--
2.7.4
From 0348e13d0aaae4034e8a76f47512e64432b1f84f Mon Sep 17 00:00:00 2001
From: Thomas Danckaert <thomas.dancka...@gmail.com>
Date: Wed, 26 Oct 2016 11:11:01 +0200
Subject: [PATCH 1/2] gnu: Add qtwebkit.
* gnu/packages/qt.scm (qtwebkit): New variable.
---
gnu/packages/qt.scm | 114 ++++++++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 114 insertions(+)
diff --git a/gnu/packages/qt.scm b/gnu/packages/qt.scm
index a1e5fde..cf6af6a 100644
--- a/gnu/packages/qt.scm
+++ b/gnu/packages/qt.scm
@@ -4,6 +4,7 @@
;;; Copyright © 2015 Ludovic Courtès <l...@gnu.org>
;;; Copyright © 2015, 2016 Efraim Flashner <efr...@flashner.co.il>
;;; Copyright © 2016 ng0 <n...@we.make.ritual.n0.is>
+;;; Copyright © 2016 Thomas Danckaert <p...@thomasdanckaert.be>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -1112,3 +1113,116 @@ contain over 620 classes.")
"QtKeychain is a Qt library to store passwords and other secret data
securely. It will not store any data unencrypted unless explicitly requested.")
(license license:bsd-3)))
+
+(define-public qtwebkit
+ (package
+ (name "qtwebkit")
+ (version "5.7.0")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append "http://download.qt.io/community_releases/"
+ (version-major+minor version)
+ "/" version "/qtwebkit-opensource-src-" version
+ ".tar.xz"))
+ ;; note: since Qt 5.6, Qt no longer officially supports qtwebkit
+ (sha256
+ (base32
+ "1prlpl3zslzpr1iv7m3irvxjxn3v8nlxh21v9k2kaq4fpwy2b8y7"))))
+ (build-system gnu-build-system)
+ (native-inputs
+ `(("perl" ,perl)
+ ("python" ,python-2.7)
+ ("ruby" ,ruby)
+ ("bison" ,bison)
+ ("flex" ,flex)
+ ("gperf" ,gperf)
+ ("pkg-config" ,pkg-config)))
+ (inputs
+ `(("icu" ,icu4c)
+ ("libjpeg" ,libjpeg)
+ ("libpng" ,libpng)
+ ("libwebp" ,libwebp)
+ ("sqlite" ,sqlite)
+ ("fontconfig" ,fontconfig)
+ ("libxrender", libxrender)
+ ("qtbase" ,qtbase)
+ ("qtdeclarative" ,qtdeclarative)
+ ("qtmultimedia" ,qtmultimedia)
+ ("libxml2" ,libxml2)
+ ("libxslt" ,libxslt)
+ ("libx11" ,libx11)
+ ("libxcomposite" ,libxcomposite)))
+ (arguments
+ `(#:phases
+ (modify-phases %standard-phases
+ (replace 'configure
+ (lambda* (#:key outputs #:allow-other-keys)
+ (let ((out (assoc-ref outputs "out")))
+ (setenv "QMAKEPATH"
+ (string-append (getcwd) "/Tools/qmake:"
+ (getenv "QMAKEPATH")))
+ (system* "qmake"))))
+ ;; prevent webkit from trying to install into the qtbase store directory,
+ ;; and replace references to the build directory in linker options:
+ (add-before 'build 'patch-installpaths
+ (lambda* (#:key outputs inputs #:allow-other-keys)
+ (let* ((out (assoc-ref outputs "out"))
+ (qtbase (assoc-ref inputs "qtbase"))
+ (builddir (getcwd))
+ (linkbuild (string-append "-L" builddir))
+ (linkout (string-append "-L" out))
+ (makefiles
+ (map-in-order
+ (lambda (i)
+ (let* ((in (car i))
+ (mf (string-append (dirname in) "/"
+ (cdr i))))
+ ;; by default, these Makefiles are
+ ;; generated during install, but we need
+ ;; to generate them now
+ (system* "qmake" in "-o" mf)
+ mf))
+ '(("Source/api.pri" . "Makefile.api")
+ ("Source/widgetsapi.pri"
+ . "Makefile.widgetsapi")
+ ("Source/WebKit2/WebProcess.pro"
+ . "Makefile.WebProcess")
+ ("Source/WebKit2/PluginProcess.pro"
+ . "Makefile.PluginProcess")
+ ("Source/WebKit/qt/declarative/public.pri"
+ . "Makefile.declarative.public")
+ ("Source/WebKit/qt/declarative/experimental/experimental.pri"
+ . "Makefile.declarative.experimental")
+ ("Source/WebKit/qt/examples/platformplugin/platformplugin.pro"
+ . "Makefile")))))
+ ;; Order of qmake calls and substitutions matters here.
+ (system* "qmake" "-prl" "Source/widgetsapi.pri"
+ "-o" "Source/Makefile")
+ (substitute* (find-files "lib" "libQt5.*\\.prl")
+ ((linkbuild) linkout))
+ (substitute* (find-files "lib"
+ "libQt5WebKit.*\\.la")
+ (("libdir='.*'")
+ (string-append "libdir='" out "/lib'"))
+ ((linkbuild) linkout))
+ (substitute* (find-files "lib/pkgconfig"
+ "Qt5WebKit.*\\.pc")
+ (((string-append "prefix=" qtbase))
+ (string-append "prefix=" out))
+ ((linkbuild) linkout))
+ ;; Makefiles must be modified after .prl/.la/.pc
+ ;; files, lest they get rebuilt:
+ (substitute* makefiles
+ (((string-append "\\$\\(INSTALL_ROOT\\)" qtbase))
+ out )
+ (((string-append "-Wl,-rpath," builddir))
+ (string-append "-Wl,-rpath," out)))))))))
+ (home-page "https://www.webkit.org")
+ (synopsis "Web browser engine and classes to render and interact with web
+content")
+ (description "QtWebKit provides a Web browser engine that makes it easy to
+embed content from the World Wide Web into your Qt application. At the same
+time Web content can be enhanced with native controls.")
+
+ (license license:lgpl2.1+)))
--
2.7.4