From 0fc7b46f30c4f621528c3b06d6e857d4a9d223a5 Mon Sep 17 00:00:00 2001 From: K900 Date: Wed, 7 Aug 2024 10:09:22 +0300 Subject: [PATCH] kdePackages.plasma-workspace: hardcode even more dependency paths --- pkgs/kde/plasma/plasma-workspace/default.nix | 19 ++- .../plasma-workspace/dependency-paths.patch | 149 ++++++++++++++++++ .../plasma/plasma-workspace/tool-paths.patch | 68 -------- 3 files changed, 164 insertions(+), 72 deletions(-) create mode 100644 pkgs/kde/plasma/plasma-workspace/dependency-paths.patch delete mode 100644 pkgs/kde/plasma/plasma-workspace/tool-paths.patch diff --git a/pkgs/kde/plasma/plasma-workspace/default.nix b/pkgs/kde/plasma/plasma-workspace/default.nix index e89063876a86..a8dfdd9a9e12 100644 --- a/pkgs/kde/plasma/plasma-workspace/default.nix +++ b/pkgs/kde/plasma/plasma-workspace/default.nix @@ -2,7 +2,9 @@ lib, mkKdeDerivation, substituteAll, + fontconfig, xorg, + lsof, pkg-config, spirv-tools, qtsvg, @@ -19,10 +21,13 @@ mkKdeDerivation { patches = [ (substituteAll { - src = ./tool-paths.patch; - xmessage = "${lib.getBin xorg.xmessage}/bin/xmessage"; - xsetroot = "${lib.getBin xorg.xsetroot}/bin/xsetroot"; - qdbus = "${lib.getBin qttools}/bin/qdbus"; + src = ./dependency-paths.patch; + fc-match = lib.getExe' fontconfig "fc-match"; + lsof = lib.getExe lsof; + qdbus = lib.getExe' qttools "qdbus"; + xmessage = lib.getExe xorg.xmessage; + xrdb = lib.getExe xorg.xrdb; + xsetroot = lib.getExe xorg.xsetroot; }) ]; @@ -50,5 +55,11 @@ mkKdeDerivation { gpsd ]; + # Hardcoded as QStrings, which are UTF-16 so Nix can't pick these up automatically + postFixup = '' + mkdir -p $out/nix-support + echo "${lsof} ${xorg.xmessage} ${xorg.xsetroot}" > $out/nix-support/depends + ''; + passthru.providedSessions = ["plasma" "plasmax11"]; } diff --git a/pkgs/kde/plasma/plasma-workspace/dependency-paths.patch b/pkgs/kde/plasma/plasma-workspace/dependency-paths.patch new file mode 100644 index 000000000000..e54aaa131b9f --- /dev/null +++ b/pkgs/kde/plasma/plasma-workspace/dependency-paths.patch @@ -0,0 +1,149 @@ +diff --git a/applets/devicenotifier/plugin/ksolidnotify.cpp b/applets/devicenotifier/plugin/ksolidnotify.cpp +index bcbb58a034..be2570ce97 100644 +--- a/applets/devicenotifier/plugin/ksolidnotify.cpp ++++ b/applets/devicenotifier/plugin/ksolidnotify.cpp +@@ -169,7 +169,7 @@ void KSolidNotify::queryBlockingApps(const QString &devicePath) + Q_EMIT blockingAppsReady(blockApps); + p->deleteLater(); + }); +- p->start(QStringLiteral("lsof"), {QStringLiteral("-t"), devicePath}); ++ p->start(QStringLiteral("@lsof@"), {QStringLiteral("-t"), devicePath}); + // p.start(QStringLiteral("fuser"), {QStringLiteral("-m"), devicePath}); + } + +diff --git a/kcms/fonts/fontinit.cpp b/kcms/fonts/fontinit.cpp +index e27e21a7bd..abbf7f32e1 100644 +--- a/kcms/fonts/fontinit.cpp ++++ b/kcms/fonts/fontinit.cpp +@@ -27,7 +27,7 @@ Q_DECL_EXPORT void kcminit() + + const QByteArray input = "Xft.dpi: " + QByteArray::number(dpi); + QProcess p; +- p.start(QStringLiteral("xrdb"), {QStringLiteral("-quiet"), QStringLiteral("-merge"), QStringLiteral("-nocpp")}); ++ p.start(QStringLiteral("@xrdb@"), {QStringLiteral("-quiet"), QStringLiteral("-merge"), QStringLiteral("-nocpp")}); + p.setProcessChannelMode(QProcess::ForwardedChannels); + p.write(input); + p.closeWriteChannel(); +diff --git a/kcms/fonts/fonts.cpp b/kcms/fonts/fonts.cpp +index 92d8fadd44..2a973d76ef 100644 +--- a/kcms/fonts/fonts.cpp ++++ b/kcms/fonts/fonts.cpp +@@ -135,7 +135,7 @@ void KFonts::save() + if (fontsAASettings()->forceFontDPI() == 0 && forceFontDPIChanged && KWindowSystem::isPlatformX11()) { + QProcess proc; + proc.setProcessChannelMode(QProcess::ForwardedChannels); +- proc.start("xrdb", ++ proc.start("@xrdb@", + QStringList() << "-quiet" + << "-remove" + << "-nocpp"); +diff --git a/kcms/kfontinst/kcmfontinst/FcQuery.cpp b/kcms/kfontinst/kcmfontinst/FcQuery.cpp +index 771c790c74..1be64b0527 100644 +--- a/kcms/kfontinst/kcmfontinst/FcQuery.cpp ++++ b/kcms/kfontinst/kcmfontinst/FcQuery.cpp +@@ -44,7 +44,7 @@ void CFcQuery::run(const QString &query) + connect(m_proc, SIGNAL(finished(int, QProcess::ExitStatus)), SLOT(procExited())); + connect(m_proc, &QProcess::readyReadStandardOutput, this, &CFcQuery::data); + +- m_proc->start("fc-match", args); ++ m_proc->start("@fc-match@", args); + } + + void CFcQuery::procExited() +diff --git a/kcms/krdb/krdb.cpp b/kcms/krdb/krdb.cpp +index 8fdd99f9ed..1bd7d552a5 100644 +--- a/kcms/krdb/krdb.cpp ++++ b/kcms/krdb/krdb.cpp +@@ -423,7 +423,7 @@ void runRdb(unsigned int flags) + contents += "Xft.dpi: " + QString::number(dpi) + '\n'; + else { + KProcess queryProc; +- queryProc << QStringLiteral("xrdb") << QStringLiteral("-query"); ++ queryProc << QStringLiteral("@xrdb@") << QStringLiteral("-query"); + queryProc.setOutputChannelMode(KProcess::OnlyStdoutChannel); + queryProc.start(); + if (queryProc.waitForFinished()) { +@@ -443,7 +443,7 @@ void runRdb(unsigned int flags) + } + + KProcess loadProc; +- loadProc << QStringLiteral("xrdb") << QStringLiteral("-quiet") << QStringLiteral("-load") << QStringLiteral("-nocpp"); ++ loadProc << QStringLiteral("@xrdb@") << QStringLiteral("-quiet") << QStringLiteral("-load") << QStringLiteral("-nocpp"); + loadProc.start(); + if (loadProc.waitForStarted()) { + loadProc.write(db); +@@ -461,16 +461,16 @@ void runRdb(unsigned int flags) + + KProcess proc; + #ifndef NDEBUG +- proc << QStringLiteral("xrdb") << QStringLiteral("-merge") << tmpFile.fileName(); ++ proc << QStringLiteral("@xrdb@") << QStringLiteral("-merge") << tmpFile.fileName(); + #else +- proc << "xrdb" ++ proc << "@xrdb@" + << "-quiet" + << "-merge" << tmpFile.fileName(); + #endif + proc.execute(); + + // Needed for applications that don't set their own cursor. +- QProcess::execute(QStringLiteral("xsetroot"), {QStringLiteral("-cursor_name"), QStringLiteral("left_ptr")}); ++ QProcess::execute(QStringLiteral("@xsetroot@"), {QStringLiteral("-cursor_name"), QStringLiteral("left_ptr")}); + + applyGtkStyles(1); + applyGtkStyles(2); +diff --git a/ksmserver/plasma-restoresession.service.in b/ksmserver/plasma-restoresession.service.in +index 2c52a4b87d..fd7fdc8ac1 100644 +--- a/ksmserver/plasma-restoresession.service.in ++++ b/ksmserver/plasma-restoresession.service.in +@@ -5,5 +5,5 @@ RefuseManualStart=yes + + [Service] + Type=oneshot +-ExecStart=-@QtBinariesDir@/qdbus org.kde.ksmserver /KSMServer org.kde.KSMServerInterface.restoreSession ++ExecStart=-@qdbus@ org.kde.ksmserver /KSMServer org.kde.KSMServerInterface.restoreSession + Slice=session.slice +diff --git a/startkde/kcminit/plasma-kcminit-phase1.service.in b/startkde/kcminit/plasma-kcminit-phase1.service.in +index 7218628ce9..9126475ea4 100644 +--- a/startkde/kcminit/plasma-kcminit-phase1.service.in ++++ b/startkde/kcminit/plasma-kcminit-phase1.service.in +@@ -6,5 +6,5 @@ PartOf=graphical-session.target + + [Service] + Type=oneshot +-ExecStart=@QtBinariesDir@/qdbus org.kde.kcminit /kcminit org.kde.KCMInit.runPhase1 ++ExecStart=@qdbus@ org.kde.kcminit /kcminit org.kde.KCMInit.runPhase1 + Slice=session.slice +diff --git a/startkde/startplasma.cpp b/startkde/startplasma.cpp +index 0bd4511189..602b7e9eb0 100644 +--- a/startkde/startplasma.cpp ++++ b/startkde/startplasma.cpp +@@ -57,7 +57,7 @@ void sigtermHandler(int signalNumber) + void messageBox(const QString &text) + { + out << text; +- runSync(QStringLiteral("xmessage"), {QStringLiteral("-geometry"), QStringLiteral("500x100"), text}); ++ runSync(QStringLiteral("@xmessage@"), {QStringLiteral("-geometry"), QStringLiteral("500x100"), text}); + } + + QStringList allServices(const QLatin1String &prefix) +@@ -507,7 +507,7 @@ QProcess *setupKSplash() + if (ksplashCfg.readEntry("Engine", QStringLiteral("KSplashQML")) == QLatin1String("KSplashQML")) { + p = new QProcess; + p->setProcessChannelMode(QProcess::ForwardedChannels); +- p->start(QStringLiteral("ksplashqml"), {ksplashCfg.readEntry("Theme", QStringLiteral("Breeze"))}); ++ p->start(QStringLiteral(CMAKE_INSTALL_FULL_BINDIR "/ksplashqml"), {ksplashCfg.readEntry("Theme", QStringLiteral("Breeze"))}); + } + } + return p; +diff --git a/startkde/systemd/plasma-ksplash-ready.service.in b/startkde/systemd/plasma-ksplash-ready.service.in +index 3f6744f378..c51266794d 100644 +--- a/startkde/systemd/plasma-ksplash-ready.service.in ++++ b/startkde/systemd/plasma-ksplash-ready.service.in +@@ -6,5 +6,5 @@ PartOf=graphical-session.target + + [Service] + Type=oneshot +-ExecStart=-@QtBinariesDir@/qdbus org.kde.KSplash /KSplash org.kde.KSplash.setStage ready ++ExecStart=-@qdbus@ org.kde.KSplash /KSplash org.kde.KSplash.setStage ready + Slice=session.slice diff --git a/pkgs/kde/plasma/plasma-workspace/tool-paths.patch b/pkgs/kde/plasma/plasma-workspace/tool-paths.patch deleted file mode 100644 index d750028200b2..000000000000 --- a/pkgs/kde/plasma/plasma-workspace/tool-paths.patch +++ /dev/null @@ -1,68 +0,0 @@ -diff --git a/kcms/krdb/krdb.cpp b/kcms/krdb/krdb.cpp -index 46363ddcb..d787f9993 100644 ---- a/kcms/krdb/krdb.cpp -+++ b/kcms/krdb/krdb.cpp -@@ -468,7 +468,7 @@ void runRdb(unsigned int flags) - proc.execute(); - - // Needed for applications that don't set their own cursor. -- QProcess::execute(QStringLiteral("xsetroot"), {QStringLiteral("-cursor_name"), QStringLiteral("left_ptr")}); -+ QProcess::execute(QStringLiteral("@xsetroot@"), {QStringLiteral("-cursor_name"), QStringLiteral("left_ptr")}); - - applyGtkStyles(1); - applyGtkStyles(2); -diff --git a/startkde/startplasma.cpp b/startkde/startplasma.cpp -index b0158c97d..c8f7fe223 100644 ---- a/startkde/startplasma.cpp -+++ b/startkde/startplasma.cpp -@@ -50,7 +50,7 @@ void sigtermHandler(int signalNumber) - void messageBox(const QString &text) - { - out << text; -- runSync(QStringLiteral("xmessage"), {QStringLiteral("-geometry"), QStringLiteral("500x100"), text}); -+ runSync(QStringLiteral("@xmessage@"), {QStringLiteral("-geometry"), QStringLiteral("500x100"), text}); - } - - QStringList allServices(const QLatin1String &prefix) -@@ -484,7 +484,7 @@ QProcess *setupKSplash() - if (ksplashCfg.readEntry("Engine", QStringLiteral("KSplashQML")) == QLatin1String("KSplashQML")) { - p = new QProcess; - p->setProcessChannelMode(QProcess::ForwardedChannels); -- p->start(QStringLiteral("ksplashqml"), {ksplashCfg.readEntry("Theme", QStringLiteral("Breeze"))}); -+ p->start(QStringLiteral(CMAKE_INSTALL_FULL_BINDIR "/ksplashqml"), {ksplashCfg.readEntry("Theme", QStringLiteral("Breeze"))}); - } - } - return p; -diff --git a/ksmserver/plasma-restoresession.service.in b/ksmserver/plasma-restoresession.service.in -index 2c52a4b87..fd7fdc8ac 100644 ---- a/ksmserver/plasma-restoresession.service.in -+++ b/ksmserver/plasma-restoresession.service.in -@@ -5,5 +5,5 @@ RefuseManualStart=yes - - [Service] - Type=oneshot --ExecStart=-@QtBinariesDir@/qdbus org.kde.ksmserver /KSMServer org.kde.KSMServerInterface.restoreSession -+ExecStart=-@qdbus@ org.kde.ksmserver /KSMServer org.kde.KSMServerInterface.restoreSession - Slice=session.slice -diff --git a/startkde/kcminit/plasma-kcminit-phase1.service.in b/startkde/kcminit/plasma-kcminit-phase1.service.in -index 7218628ce..9126475ea 100644 ---- a/startkde/kcminit/plasma-kcminit-phase1.service.in -+++ b/startkde/kcminit/plasma-kcminit-phase1.service.in -@@ -6,5 +6,5 @@ PartOf=graphical-session.target - - [Service] - Type=oneshot --ExecStart=@QtBinariesDir@/qdbus org.kde.kcminit /kcminit org.kde.KCMInit.runPhase1 -+ExecStart=@qdbus@ org.kde.kcminit /kcminit org.kde.KCMInit.runPhase1 - Slice=session.slice -diff --git a/startkde/systemd/plasma-ksplash-ready.service.in b/startkde/systemd/plasma-ksplash-ready.service.in -index 3f6744f37..c51266794 100644 ---- a/startkde/systemd/plasma-ksplash-ready.service.in -+++ b/startkde/systemd/plasma-ksplash-ready.service.in -@@ -6,5 +6,5 @@ PartOf=graphical-session.target - - [Service] - Type=oneshot --ExecStart=-@QtBinariesDir@/qdbus org.kde.KSplash /KSplash org.kde.KSplash.setStage ready -+ExecStart=-@qdbus@ org.kde.KSplash /KSplash org.kde.KSplash.setStage ready - Slice=session.slice