gnu: kinit: Use the store paths for dynamically loaded libs.

Transfer the NixOS "kdeinit-extra_libs" patch for kinit as of
2018-02-17.

* gnu/packages/patches/kinit-kdeinit-extra_libs.patch: New filee.
* gnu/local.mk (dist_patch_DATA): Add it.
* gnu/packages/kde-frameworks.scm (kinit)[source]: Use it.
  <patch-paths>: New phase.
  [inputs]: Add kparts, plasma-framework.
This commit is contained in:
Hartmut Goebel 2017-10-22 21:25:36 +02:00
parent a6e532815d
commit f8a0f3ac70
No known key found for this signature in database
GPG Key ID: 634A8DFFD3F631DF
3 changed files with 73 additions and 1 deletions

View File

@ -855,6 +855,7 @@ dist_patch_DATA = \
%D%/packages/patches/kiki-makefile.patch \ %D%/packages/patches/kiki-makefile.patch \
%D%/packages/patches/kiki-missing-includes.patch \ %D%/packages/patches/kiki-missing-includes.patch \
%D%/packages/patches/kiki-portability-64bit.patch \ %D%/packages/patches/kiki-portability-64bit.patch \
%D%/packages/patches/kinit-kdeinit-extra_libs.patch \
%D%/packages/patches/kio-search-smbd-on-PATH.patch \ %D%/packages/patches/kio-search-smbd-on-PATH.patch \
%D%/packages/patches/kmod-module-directory.patch \ %D%/packages/patches/kmod-module-directory.patch \
%D%/packages/patches/kobodeluxe-paths.patch \ %D%/packages/patches/kobodeluxe-paths.patch \

View File

@ -2526,8 +2526,22 @@ in applications using the KDE Frameworks.")
name "-" version ".tar.xz")) name "-" version ".tar.xz"))
(sha256 (sha256
(base32 (base32
"1rq9b59gdgcpvwd694l8h55sqahpdaky0n7ag5psjlfn5myf1d95")))) "1rq9b59gdgcpvwd694l8h55sqahpdaky0n7ag5psjlfn5myf1d95"))
;; Use the store paths for other packages and dynamically loaded
;; libs
(patches (search-patches "kinit-kdeinit-extra_libs.patch"))))
(build-system cmake-build-system) (build-system cmake-build-system)
(arguments
`(#:phases
(modify-phases %standard-phases
(add-after 'unpack 'patch-paths
(lambda* (#:key inputs outputs #:allow-other-keys)
;; Set patched-in values:
(substitute* "src/kdeinit/kinit.cpp"
(("GUIX_PKGS_KF5_KIO") (assoc-ref inputs "kio"))
(("GUIX_PKGS_KF5_PARTS") (assoc-ref inputs "kparts"))
(("GUIX_PKGS_KF5_PLASMA") (assoc-ref inputs "plasma-framework")))
#t)))))
(native-inputs (native-inputs
`(("extra-cmake-modules" ,extra-cmake-modules) `(("extra-cmake-modules" ,extra-cmake-modules)
("pkg-config" ,pkg-config))) ("pkg-config" ,pkg-config)))
@ -2545,11 +2559,13 @@ in applications using the KDE Frameworks.")
("kitemviews" ,kitemviews) ("kitemviews" ,kitemviews)
("ki18n" ,ki18n) ("ki18n" ,ki18n)
("kjobwidgets" ,kjobwidgets) ("kjobwidgets" ,kjobwidgets)
("kparts" ,kparts)
("kservice" ,kservice) ("kservice" ,kservice)
("kwidgetsaddons" ,kwidgetsaddons) ("kwidgetsaddons" ,kwidgetsaddons)
("kwindowsystem" ,kwindowsystem) ("kwindowsystem" ,kwindowsystem)
("kxmlgui" ,kxmlgui) ("kxmlgui" ,kxmlgui)
("libcap" ,libcap) ; to install start_kdeinit with CAP_SYS_RESOURCE ("libcap" ,libcap) ; to install start_kdeinit with CAP_SYS_RESOURCE
("plasma-framework" ,plasma-framework)
("qtbase" ,qtbase) ("qtbase" ,qtbase)
("solid" ,solid))) ("solid" ,solid)))
(home-page "https://community.kde.org/Frameworks") (home-page "https://community.kde.org/Frameworks")

View File

@ -0,0 +1,55 @@
Search the "extra libs" in GUIX_KF5INIT_LIB_PATH (which basically is a
collection of all /lib directories). We can not hard-code the full path to the
libsKF5Plasam, since adding palse-workspace
Adopted from NixOS
pkgs/development/libraries/kde-frameworks/kinit/kdeinit-extra_libs.patch
===================================================================
--- kinit-5.32.0/src/kdeinit/kinit-5.32.0/src/kdeinit/.orig
+++ kinit-5.32.0/src/kdeinit/kinit.cpp
@@ -96,11 +96,9 @@
"libKF5Parts.5.dylib",
"libKF5Plasma.5.dylib"
#else
- "libKF5KIOCore.so.5",
- "libKF5Parts.so.5",
-//#ifdef __KDE_HAVE_GCC_VISIBILITY // Removed for KF5, we'll see.
- "libKF5Plasma.so.5"
-//#endif
+ "GUIX_PKGS_KF5_KIO/lib/libKF5KIOCore.so.5",
+ "GUIX_PKGS_KF5_PARTS/lib/libKF5Parts.so.5",
+ "GUIX_PKGS_KF5_PLASMA/lib/libKF5Plasma.so.5"
#endif
};
#endif
@@ -1533,20 +1531,6 @@ static int initXconnection()
}
#endif
-#ifndef Q_OS_OSX
-// Find a shared lib in the lib dir, e.g. libkio.so.
-// Completely unrelated to plugins.
-static QString findSharedLib(const QString &lib)
-{
- QString path = QFile::decodeName(CMAKE_INSTALL_PREFIX "/" LIB_INSTALL_DIR "/") + lib;
- if (QFile::exists(path)) {
- return path;
- }
- // We could also look in LD_LIBRARY_PATH, but really, who installs the main libs in different prefixes?
- return QString();
-}
-#endif
-
extern "C" {
static void secondary_child_handler(int)
@@ -1689,7 +1693,7 @@
if (!d.suicide && qEnvironmentVariableIsEmpty("KDE_IS_PRELINKED")) {
const int extrasCount = sizeof(extra_libs) / sizeof(extra_libs[0]);
for (int i = 0; i < extrasCount; i++) {
- const QString extra = findSharedLib(QString::fromLatin1(extra_libs[i]));
+ const QString extra = QString::fromLatin1(extra_libs[i]);
if (!extra.isEmpty()) {
QLibrary l(extra);
l.setLoadHints(QLibrary::ExportExternalSymbolsHint);