Skip to content

Commit 8a70298

Browse files
committed
fix: resolve rpmfusion URL handling and repo failure checks
1 parent dbf21f1 commit 8a70298

1 file changed

Lines changed: 90 additions & 88 deletions

File tree

src/backend/nvidia/installer.cpp

Lines changed: 90 additions & 88 deletions
Original file line numberDiff line numberDiff line change
@@ -1,103 +1,105 @@
11
#include "installer.h"
22
#include "system/commandrunner.h"
33

4-
NvidiaInstaller::NvidiaInstaller(QObject *parent)
5-
: QObject(parent)
6-
{}
7-
8-
void NvidiaInstaller::install()
9-
{
10-
CommandRunner runner;
11-
12-
// CommandRunner'dan gelen her satırı QML'e ilet
13-
connect(&runner, &CommandRunner::outputLine,
14-
this, &NvidiaInstaller::progressMessage);
15-
16-
emit progressMessage(QStringLiteral("RPM Fusion deposu kontrol ediliyor..."));
17-
18-
// Fedora sürümünü al — QProcess shell expansion yapmaz,
19-
// bu yüzden $(rpm -E %fedora) çalışmaz, önce manual alıyoruz
20-
CommandRunner rpmRunner;
21-
const auto fedoraResult = rpmRunner.run(
22-
QStringLiteral("rpm"),
23-
{ QStringLiteral("-E"), QStringLiteral("%fedora") }
24-
);
25-
26-
const QString fedoraVer = fedoraResult.stdout.trimmed();
27-
if (fedoraVer.isEmpty()) {
28-
emit installFinished(false, QStringLiteral("Fedora sürümü tespit edilemedi."));
29-
return;
30-
}
31-
32-
// Adım 1: RPM Fusion reposunu etkinleştir
33-
auto result = runner.runAsRoot(
34-
QStringLiteral("dnf"),
35-
{ QStringLiteral("install"), QStringLiteral("-y"),
36-
QStringLiteral("https://mirrors.rpmfusion.org/free/fedora/rpmfusion-free-release-%1.noarch.rpm").arg(fedoraVer),
37-
QStringLiteral("https://mirrors.rpmfusion.org/nonfree/fedora/rpmfusion-nonfree-release-%1.noarch.rpm").arg(fedoraVer) }
38-
);
39-
40-
if (!result.success()) {
41-
emit installFinished(false, QStringLiteral("RPM Fusion deposu eklenemedi: ") + result.stderr);
42-
return;
43-
}
44-
45-
emit progressMessage(QStringLiteral("NVIDIA sürücüsü kuruluyor (akmod-nvidia)..."));
46-
47-
// Adım 2: akmod-nvidia kur
48-
result = runner.runAsRoot(
49-
QStringLiteral("dnf"),
50-
{ QStringLiteral("install"), QStringLiteral("-y"), QStringLiteral("akmod-nvidia") }
51-
);
52-
53-
if (!result.success()) {
54-
emit installFinished(false, QStringLiteral("Kurulum başarısız: ") + result.stderr);
55-
return;
56-
}
57-
58-
emit progressMessage(QStringLiteral("Kernel modülü derleniyor (bu birkaç dakika sürebilir)..."));
59-
60-
// Adım 3: akmods ile modülü derle
61-
runner.runAsRoot(QStringLiteral("akmods"), { QStringLiteral("--force") });
62-
63-
emit installFinished(true, QStringLiteral("NVIDIA sürücüsü başarıyla kuruldu. Lütfen sistemi yeniden başlatın."));
4+
NvidiaInstaller::NvidiaInstaller(QObject *parent) : QObject(parent) {}
5+
6+
void NvidiaInstaller::install() {
7+
CommandRunner runner;
8+
9+
// CommandRunner'dan gelen her satırı QML'e ilet
10+
connect(&runner, &CommandRunner::outputLine, this,
11+
&NvidiaInstaller::progressMessage);
12+
13+
emit progressMessage(QStringLiteral("RPM Fusion deposu kontrol ediliyor..."));
14+
15+
CommandRunner rpmRunner;
16+
const auto fedora = rpmRunner.run(QStringLiteral("rpm"),
17+
{QStringLiteral("-E"), QStringLiteral("%fedora")});
18+
const QString fedoraVersion = fedora.stdout.trimmed();
19+
20+
if (fedoraVersion.isEmpty()) {
21+
emit installFinished(false, QStringLiteral("Fedora surumu tespit edilemedi."));
22+
return;
23+
}
24+
25+
// Adım 1: RPM Fusion reposunu etkinleştir
26+
auto result = runner.runAsRoot(
27+
QStringLiteral("dnf"),
28+
{QStringLiteral("install"), QStringLiteral("-y"),
29+
QStringLiteral("https://mirrors.rpmfusion.org/free/fedora/"
30+
"rpmfusion-free-release-%1.noarch.rpm")
31+
.arg(fedoraVersion),
32+
QStringLiteral(
33+
"https://mirrors.rpmfusion.org/nonfree/fedora/"
34+
"rpmfusion-nonfree-release-%1.noarch.rpm")
35+
.arg(fedoraVersion)});
36+
37+
if (!result.success()) {
38+
emit installFinished(false, QStringLiteral("RPM Fusion repo eklenemedi: ") +
39+
result.stderr);
40+
return;
41+
}
42+
43+
emit progressMessage(
44+
QStringLiteral("NVIDIA sürücüsü kuruluyor (akmod-nvidia)..."));
45+
46+
// Adım 2: akmod-nvidia kur
47+
result = runner.runAsRoot(QStringLiteral("dnf"),
48+
{QStringLiteral("install"), QStringLiteral("-y"),
49+
QStringLiteral("akmod-nvidia")});
50+
51+
if (!result.success()) {
52+
emit installFinished(false,
53+
QStringLiteral("Kurulum başarısız: ") + result.stderr);
54+
return;
55+
}
56+
57+
emit progressMessage(QStringLiteral(
58+
"Kernel modülü derleniyor (bu birkaç dakika sürebilir)..."));
59+
60+
// Adım 3: akmods ile modülü derle
61+
runner.runAsRoot(QStringLiteral("akmods"), {QStringLiteral("--force")});
62+
63+
emit installFinished(true,
64+
QStringLiteral("NVIDIA sürücüsü başarıyla kuruldu. "
65+
"Lütfen sistemi yeniden başlatın."));
6466
}
6567

66-
void NvidiaInstaller::remove()
67-
{
68-
CommandRunner runner;
69-
connect(&runner, &CommandRunner::outputLine,
70-
this, &NvidiaInstaller::progressMessage);
68+
void NvidiaInstaller::remove() {
69+
CommandRunner runner;
70+
connect(&runner, &CommandRunner::outputLine, this,
71+
&NvidiaInstaller::progressMessage);
7172

72-
emit progressMessage(QStringLiteral("NVIDIA sürücüsü kaldırılıyor..."));
73+
emit progressMessage(QStringLiteral("NVIDIA sürücüsü kaldırılıyor..."));
7374

74-
const auto result = runner.runAsRoot(
75-
QStringLiteral("dnf"),
76-
{ QStringLiteral("remove"), QStringLiteral("-y"), QStringLiteral("akmod-nvidia"), QStringLiteral("xorg-x11-drv-nvidia*") }
77-
);
75+
const auto result = runner.runAsRoot(
76+
QStringLiteral("dnf"),
77+
{QStringLiteral("remove"), QStringLiteral("-y"),
78+
QStringLiteral("akmod-nvidia"), QStringLiteral("xorg-x11-drv-nvidia*")});
7879

79-
emit removeFinished(result.success(),
80-
result.success()
81-
? QStringLiteral("Sürücü başarıyla kaldırıldı.")
82-
: QStringLiteral("Kaldırma başarısız: ") + result.stderr);
80+
emit removeFinished(result.success(),
81+
result.success()
82+
? QStringLiteral("Sürücü başarıyla kaldırıldı.")
83+
: QStringLiteral("Kaldırma başarısız: ") +
84+
result.stderr);
8385
}
8486

85-
void NvidiaInstaller::deepClean()
86-
{
87-
CommandRunner runner;
88-
connect(&runner, &CommandRunner::outputLine,
89-
this, &NvidiaInstaller::progressMessage);
87+
void NvidiaInstaller::deepClean() {
88+
CommandRunner runner;
89+
connect(&runner, &CommandRunner::outputLine, this,
90+
&NvidiaInstaller::progressMessage);
9091

91-
emit progressMessage(QStringLiteral("Eski sürücü kalıntıları temizleniyor..."));
92+
emit progressMessage(
93+
QStringLiteral("Eski sürücü kalıntıları temizleniyor..."));
9294

93-
// Tüm nvidia paketlerini kaldır
94-
runner.runAsRoot(QStringLiteral("dnf"), {
95-
QStringLiteral("remove"), QStringLiteral("-y"),
96-
QStringLiteral("*nvidia*"), QStringLiteral("*akmod*")
97-
});
95+
// Tüm nvidia paketlerini kaldır
96+
runner.runAsRoot(QStringLiteral("dnf"),
97+
{QStringLiteral("remove"), QStringLiteral("-y"),
98+
QStringLiteral("*nvidia*"), QStringLiteral("*akmod*")});
9899

99-
// DNF cache temizle
100-
runner.runAsRoot(QStringLiteral("dnf"), { QStringLiteral("clean"), QStringLiteral("all") });
100+
// DNF cache temizle
101+
runner.runAsRoot(QStringLiteral("dnf"),
102+
{QStringLiteral("clean"), QStringLiteral("all")});
101103

102-
emit progressMessage(QStringLiteral("Temizlik tamamlandı."));
104+
emit progressMessage(QStringLiteral("Temizlik tamamlandı."));
103105
}

0 commit comments

Comments
 (0)