On Wed, Nov 05, 2014 at 10:18:18PM +0100, Andreas Enge wrote:
> It definitely sounds like a good idea. We could add the rpath linker flags
> for Qt and for KDE via -DCMAKE_SHARED_LINKER_FLAGS and
> -DCMAKE_EXE_LINKER_FLAGS to the kde build system. I would like to give
> it a try.

It works! I am attaching the updated kdelibs patch (still not finished,
just for your information; but I took Ludovic's suggestions into account).

So for the kde build system, we could add such lines to code the Qt and KDE
libraries into the rpath. Different submodules (at least kdegames)
also come with their own additional libraries. Anyway, I had the intention
of creating separate guile modules for them to keep a manageable number of
packages per module. So one could imagine a KDE build system, and a local
extended variant in each module inheriting from it.

So is this a solution we should implement, or does anyone have a better idea
or an argument why this would be bad?

Andreas

>From 4c82ecb734da93dbe8d41a0466b1cd20ab52981f Mon Sep 17 00:00:00 2001
From: Andreas Enge <andr...@enge.fr>
Date: Tue, 4 Nov 2014 21:44:16 +0100
Subject: [PATCH] gnu: kde: Add kdelibs.

* gnu/packages/kde.scm (kdelibs): New variable.
---
 gnu/packages/kde.scm | 122 +++++++++++++++++++++++++++++++++++++++++++++++----
 1 file changed, 114 insertions(+), 8 deletions(-)

diff --git a/gnu/packages/kde.scm b/gnu/packages/kde.scm
index e97ac27..27838f2 100644
--- a/gnu/packages/kde.scm
+++ b/gnu/packages/kde.scm
@@ -17,14 +17,23 @@
 ;;; along with GNU Guix.  If not, see <http://www.gnu.org/licenses/>.
 
 (define-module (gnu packages kde)
-  #:use-module ((guix licenses) #:select (bsd-2 lgpl2.0+ lgpl2.1 lgpl2.1+ 
lgpl3+))
+  #:use-module ((guix licenses) #:prefix license:)
   #:use-module (guix packages)
   #:use-module (guix download)
   #:use-module (guix build-system cmake)
+  #:use-module (gnu packages avahi)
+  #:use-module (gnu packages bison)
   #:use-module (gnu packages compression)
+  #:use-module (gnu packages docbook)
   #:use-module (gnu packages doxygen)
+  #:use-module (gnu packages flex)
   #:use-module (gnu packages geeqie)
   #:use-module (gnu packages glib)
+  #:use-module (gnu packages gnome)
+  #:use-module (gnu packages image)
+  #:use-module (gnu packages linux)
+  #:use-module (gnu packages openssl)
+  #:use-module (gnu packages pcre)
   #:use-module (gnu packages perl)
   #:use-module (gnu packages pkg-config)
   #:use-module (gnu packages pulseaudio)
@@ -55,7 +64,7 @@
     (home-page "http://techbase.kde.org/Development/Tools/Automoc4";)
     (synopsis "Build tool for KDE")
     (description "AutoMoc4 automatically generates moc-files for KDE.")
-    (license bsd-2)))
+    (license license:bsd-2)))
 
 (define-public phonon
   (package
@@ -85,7 +94,7 @@
     (home-page "http://phonon.kde.org/";)
     (synopsis "Qt 4 multimedia API")
     (description "KDE desktop environment")
-    (license lgpl2.1+)))
+    (license license:lgpl2.1+)))
 
 (define-public qjson
   (package
@@ -108,7 +117,7 @@
     (description "QJson is a Qt-based library that maps JSON data to QVariant
 objects and vice versa.  JSON arrays are mapped to QVariantList instances,
 while JSON objects are mapped to QVariantMap.")
-    (license lgpl2.1+)))
+    (license license:lgpl2.1+)))
 
 (define-public libdbusmenu-qt
   (package
@@ -136,7 +145,7 @@ while JSON objects are mapped to QVariantMap.")
     (description "The library provides a Qt implementation of the DBusMenu
 protocol.  The DBusMenu protocol makes it possible for applications to export
 and import their menus over DBus.")
-    (license lgpl2.0+)))
+    (license license:lgpl2.0+)))
 
 (define-public attica
   (package
@@ -160,7 +169,7 @@ Collaboration Services API version 1.6.  It grants easy 
access to the
 services such as querying information about persons and contents.  The
 library is used in KNewStuff3 as content provider.  In order to integrate
 with KDE's Plasma Desktop, a platform plugin exists in kdebase.")
-    (license lgpl2.1+)))
+    (license license:lgpl2.1+)))
 
 (define-public strigi
   (package
@@ -204,7 +213,7 @@ currently a simple socket;
 simple interface for implementing plugins for extracting information;
 calculation of sha1 for every file crawled
 (allows fast finding of duplicates).")
-    (license lgpl2.0+)))
+    (license license:lgpl2.0+)))
 
 (define-public oxygen-icons
   (package
@@ -224,4 +233,101 @@ calculation of sha1 for every file crawled
     (home-page "http://www.kde.org/";)
     (synopsis "oxygen icon theme for the KDE desktop")
     (description "KDE desktop environment")
-    (license lgpl3+)))
+    (license license:lgpl3+)))
+
+(define-public kdelibs
+  (package
+    (name "kdelibs")
+    (version "4.14.2")
+    (source (origin
+             (method url-fetch)
+             (uri (string-append "http://download.kde.org/stable/"; version
+                                "/src/" name "-"
+                                 version ".tar.xz"))
+             (sha256
+              (base32
+               "0nw9zl54wdzw26l9l1a520ykjqgrzc1dx9aa6y015k0ry1vmlx1r"))))
+    (build-system cmake-build-system)
+    (native-inputs
+     `(("automoc4" ,automoc4)
+       ("bison" ,bison)
+       ("docbook-xml" ,docbook-xml)
+       ("docbook-xsl" ,docbook-xsl)
+       ("flex" ,flex)
+       ("pkg-config" ,pkg-config)))
+    (inputs
+     `(("attica" ,attica)
+       ("avahi" ,avahi)
+       ("giflib" ,giflib)
+       ("libdbusmenu-qt" ,libdbusmenu-qt)
+       ("libice" ,libice)
+       ("libjpeg" ,libjpeg-8)
+       ("libpng" ,libpng)
+       ("libsm" ,libsm)
+       ("libx11" ,libx11)
+       ("libxau" ,libxau)
+       ("libxcomposite" ,libxcomposite)
+       ("libxcursor" ,libxcursor)
+       ("libxdamage" ,libxdamage)
+       ("libxdmcp" ,libxdmcp)
+       ("libxext" ,libxext)
+       ("libxfixes" ,libxfixes)
+       ("libxft" ,libxft)
+       ("libxi" ,libxi)
+       ("libxinerama" ,libxinerama)
+       ("libxkbfile" ,libxkbfile)
+       ("libxml2" ,libxml2)
+       ("libxpm" ,libxpm)
+       ("libxrandr" ,libxrandr)
+       ("libxrender" ,libxrender)
+       ("libxscrnsaver" ,libxscrnsaver)
+       ("libxslt" ,libxslt)
+       ("libxt" ,libxt)
+       ("libxtst" ,libxtst)
+       ("libxv" ,libxv)
+       ("libxxf86vm" ,libxxf86vm)
+       ("openssl" ,openssl)
+       ("pcre" ,pcre)
+       ("perl" ,perl)
+       ("phonon" ,phonon)
+       ("python" ,python-wrapper)
+       ("qt" ,qt-4)
+       ("shared-mime-info" ,shared-mime-info)
+       ("soprano" ,soprano)
+       ("strigi" ,strigi)
+       ("eudev" ,eudev)
+       ("zlib" ,zlib)))
+    (arguments
+     `(#:tests? #f ; FIXME: some tests currently time out or fail
+       #:configure-flags
+        (let*
+          ((docbook-xsl (assoc-ref %build-inputs "docbook-xsl"))
+           (docbook-xsl-version ,(package-version docbook-xsl))
+           (qt (assoc-ref %build-inputs "qt"))
+           (qt-lib (string-append qt "/lib")))
+          (list
+            (string-append "-DCMAKE_SHARED_LINKER_FLAGS=-Wl,-rpath=" qt-lib)
+            (string-append "-DCMAKE_EXE_LINKER_FLAGS=-Wl,-rpath=" qt-lib)
+            (string-append "-DDOCBOOKXML_CURRENTDTD_DIR="
+                           (assoc-ref %build-inputs "docbook-xml")
+                           "/xml/dtd/docbook/")
+            (string-append "-DDOCBOOKXSL_DIR=" docbook-xsl
+                           "/xml/xsl/docbook-xsl-" docbook-xsl-version
+                           "/")))
+       #:phases
+        (alist-cons-before
+         'configure 'patch-bin-sh
+         (lambda _
+           (substitute* "cmake/modules/kde4_exec_via_sh.cmake"
+                        (("/bin/sh") (which "sh"))))
+         %standard-phases)))
+    (home-page "http://www.kde.org/";)
+    (synopsis "KDE libraries")
+    (description "This package includes libraries that are central to the
+development and execution of a KDE program, as well as internationalization
+files for these libraries, HTML documentation, theme modules, and
+regression tests.")
+    ;; The different files are under various licenses; libraries under
+    ;; lgpl2.0 or lgpl2.0+, other programs under gpl.
+    ;; For details, see the file README in the source.
+    (license license:lgpl2.0)))
-- 
2.1.2

Reply via email to