Merge pull request #332933 from K900/more-kde-hardcoding

kdePackages: hardcode locations of more binaries
This commit is contained in:
K900 2024-08-07 11:28:25 +03:00 committed by GitHub
commit 09db61de02
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
6 changed files with 208 additions and 73 deletions

View File

@ -1,5 +1,9 @@
{
lib,
mkKdeDerivation,
substituteAll,
procps,
xsettingsd,
pkg-config,
wrapGAppsHook3,
sass,
@ -11,7 +15,17 @@ mkKdeDerivation {
# The gtkconfig KDED module will crash the daemon if the GSettings schemas
# aren't found.
patches = [./0001-gsettings-schemas-path.patch];
patches = [
./0001-gsettings-schemas-path.patch
(
substituteAll {
src = ./dependency-paths.patch;
pgrep = lib.getExe' procps "pgrep";
xsettingsd = lib.getExe xsettingsd;
}
)
];
preConfigure = ''
NIX_CFLAGS_COMPILE+=" -DGSETTINGS_SCHEMAS_PATH=\"$GSETTINGS_SCHEMAS_PATH\""
'';
@ -21,4 +35,10 @@ mkKdeDerivation {
dontWrapGApps = true; # There is nothing to wrap
extraCmakeFlags = ["-DGLIB_SCHEMAS_DIR=${gsettings-desktop-schemas.out}/"];
# Hardcoded as QStrings, which are UTF-16 so Nix can't pick these up automatically
postFixup = ''
mkdir -p $out/nix-support
echo "${procps} ${xsettingsd}" > $out/nix-support/depends
'';
}

View File

@ -0,0 +1,22 @@
diff --git a/kded/config_editor/xsettings.cpp b/kded/config_editor/xsettings.cpp
index 1f9fe5b..9824973 100644
--- a/kded/config_editor/xsettings.cpp
+++ b/kded/config_editor/xsettings.cpp
@@ -46,7 +46,7 @@ void replaceValueInXSettingsdContents(QString &xSettingsdContents, const QString
pid_t pidOfXSettingsd()
{
QProcess pgrep;
- pgrep.start(QStringLiteral("pgrep"),
+ pgrep.start(QStringLiteral("@pgrep@"),
QStringList{
QStringLiteral("-u"),
QString::number(getuid()),
@@ -67,7 +67,7 @@ reloadXSettingsd(void *)
{
pid_t xSettingsdPid = pidOfXSettingsd();
if (xSettingsdPid == 0) {
- QProcess::startDetached(QStandardPaths::findExecutable(QStringLiteral("xsettingsd")), QStringList());
+ QProcess::startDetached(QStringLiteral("@xsettingsd@"), QStringList());
} else {
kill(xSettingsdPid, SIGHUP);
}

View File

@ -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"];
}

View File

@ -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

View File

@ -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

View File

@ -27,5 +27,6 @@ stdenv.mkDerivation rec {
license = licenses.bsd3;
maintainers = with maintainers; [ romildo ];
platforms = platforms.linux;
mainProgram = "xsettingsd";
};
}