Building the KDE4 for Slackware 15.0 in the KTown style - a build based on the PBSLACKS patches
SlackwareThis Forum is for the discussion of Slackware Linux.
Notices
Welcome to LinuxQuestions.org, a friendly and active Linux Community.
You are currently viewing LQ as a guest. By joining our community you will have the ability to post topics, receive our newsletter, use the advanced search, subscribe to threads and access many other special features. Registration is quick, simple and absolutely free. Join our community today!
Note that registered members see fewer ads, and ContentLink is completely disabled once you log in.
If you have any problems with the registration process or your account login, please contact us. If you need to reset your password, click here.
Having a problem logging in? Please visit this page to clear all LQ-related cookies.
Get a virtual cloud desktop with the Linux distro that you want in less than five minutes with Shells! With over 10 pre-installed distros to choose from, the worry-free installation life is here! Whether you are a digital nomad or just looking for flexibility, Shells can put your Linux machine on the device that you want to use.
Exclusive for LQ members, get up to 45% off per month. Click here for more info.
cd /var/log/packages/ && ls * > ~/Documents/list1.txt && ls *_SBo > ~/Documents/list2.txt && ls -rt *_SBo > ~/Documents/list3.txt
and export here the list1.txt, list2.txt and list3.txt.
Did you download the kde4town.tar tarball?
This tarball contains something like a Ktown tree, with all sources and packages. And it seems that LuckyCyborg used the _SBo tag for 221 of his packages included in that tarball. Being curious why this, I found out that PBSLACKS itself uses this tag.
And as far as I know, LuckyCyborg uses a very limited number of SBo packages. I can bet that he has installed only Chromium, LibreOffice, SMPlayer and MPV with its dependencies.
So I think it's best to hear what he says about the development system: a fresh full install of Slackware 15.0 excluding the KDE series.
I intend myself to prepare a system for this KDE4 town this weekend, to test it and I think maybe I can help with something regarding the problem with KDM's autologin. Because I think it's something related to the integration with LinuxPAM or KDM's scripts.
Last edited by ZhaoLin1457; 02-17-2023 at 01:57 AM.
cd /var/log/packages/ && ls * > ~/Documents/list1.txt && ls *_SBo > ~/Documents/list2.txt && ls -rt *_SBo > ~/Documents/list3.txt
and export here the list1.txt, list2.txt and list3.txt.
You have attached at this post those 3 files requested.
BUT, like ZhaoLin1457 said, because I used the SlackBuilds from PBSLACKS as base, I have now that tag _SBo for all of my packages, excluding the ones from KDEI. Be also warned about what tag those builds use by default. Certainly in the final build I should use another tag.
In other hand, just like I have said already and he noted, to setup a system for testing this KDE4 build, it's enough a full install excluding the KDE series which contains the Plasma5, as you know.
I for one, I have some additional packages installed, but I do not think that they interfere with the build. They are already enumerated by ZhaoLin1457. In fact, I did not made a secret of what additional packages I have usually.
Please also note that for this experiment I do NOT use my main computer, but some of my boxes from my laboratory garage, so they are quite clean installs. I am confident that the issues from this KDE4 build are generated by the age of KDE4 source code compared with the software present on Slackware 15.0 - anyway, treat this build as something in an alpha stage.
Last edited by LuckyCyborg; 02-17-2023 at 04:10 AM.
Speaking about the Plasma widgets on my KDE4 build, I have noticed that they in fact works, but they just aren't presented for management.
By copying the file ~/.kde/share/config/plasma-desktop-appletsrc from a Slackware 14.2 LiveSlak flash drive, I got working two widgets which usually I setup: System Load Viewer and Show the Desktop, as seen in the attached screenshot. So, the issue is basically that they are not present in that list bar to manage them.
In other hand, I have noticed that the desktop behaves different when I do auto-login from KDM or (simple) user login.
Apparently, there is a problem of communication over D-BUS, when it's done the auto-login and this means that some applications (KTorrent, KMix, Klipper) does not show in the systray or power buttons waits for minutes until react, with freezing the taskbar.
However, when it's used SDDM, everything is OK, and this in the both cases.
Yes it's the management which is broken. I have I think all the applets. For dbus and kdm I had think about it. I have the plan to look after it.
I think I know what to do. May be the management of applets is correlated because it uses dbus with QCM. But there is also QT5 which override QT4 for QCM in some obscure way.
Applet are not present for managing because there is some errors with QCM. They are managed with qcm.
Regarding the NetworkManager integration from my build, with using the libnm-qt-1.0.0.tar.xz, seems like there's still a problem.
Long story short, seem like the systray widget and the connections editor does their job, BUT their graphical interface is not updated when a change is made or happens.
I have connected at the testing box an USB WiFi dongle (known to work well on Linux) and after booting it, I have got the available WiFi connections in widget. Connecting to one of my WiFi routers (I have 3 of them, one with bare Internet, another with Internet over a VPN, both for the house, and lastly another one for my garage) seems like it connected properly, BUT no changes happened to interface.
So, I connect the ethernet cable, which seems to works, BUT again, no interface changes.
Looks like the graphical interface(s) are updated only on startup of applications.
So, until now I have found 4 issues in the overall desktop functionality:
- no suspend/hibernate functionality (and the associated buttons)
- issues with the desktop behavior when the KDE4 desktop is started via autologin on KDM
- the Widgets Explorer does not work, then you can't add Plasma widgets to the desktop
- the NetworkManager's systray widget and connections editor have the interface updated only on startup
And of course, are those few applications which can't be compiled yet: Lokalize, Calligra, Amarok, Rocs, Step
BUT, excluding those issues, the rest of KDE4 works as expected and you remember from Slackware 14.2.
For me libnm-qt seems to work on my pre 15 Slackware. I will retest. It maybe also some changes in NetworkManager. It may have been upgraded. Or just I didn't see your type of problem. I have also some temporary networks I saw in the applet.
I had also modified polkit-kde (as libnm-qt) and patches some others I think you have grabbed.
Distribution: slackware, slackware from scratch, LFS, slackware [arm], linux Mint...
Posts: 1,564
Rep:
Here are my investigations on kde4town:
- libbluedevil nok with qt5
- PyQT nok with qt5
- qtscriptgenerator nok with qt5
- install the latest virtuoso-ose package from https://slackware.uk/cumulative/slac...slackware64/l/ (package needed by nepomuk)
- replaced the libnm-qt-0.9.9.3 package with libnm-qt-1.0.0 version.
- remove qt5 and qt5-webkit before trying to build because of libbluedevil, PyQT and qtscriptgenerator.They will be reintalled at the end the kde4town build.
- Having both libraries qt4 and qt5 at the same time is not a good choice.
- grantlee needs qt4
- removepkg qt5-* (qt5 and qt5-webkit)
- libraries qt and qtwebkit need to be built before eveything else to be able to link packages to qt4
- I then looked at SFS and recovered the sfsbuild.sh of that date 07/12/2020,
- I modified the extragear modules to be able to build calligra
And 'voilą'.
You put the build-kde4.sh in /source/kde, you copy the deps, kde and kdei source in that directory to have:
- /source/kde/desp
- /source/kde/kde
- /source/kde/kdei
You first build all the deps in the new BUILDORDER below.
You then execute the following and wait till the end:
time ./build-kde4.sh
I enclose the build-kde4.sh script and the list.diff between my installation and LuckyCyborg installation (his list1.txt).
Everything builds fine.
At the end reinstall the qt5 and qt5-webkit packages.
Hope this helps LuckyCyborg.
Here are my investigations on kde4town:
- libbluedevil nok with qt5
- PyQT nok with qt5
- qtscriptgenerator nok with qt5
- install the latest virtuoso-ose package from https://slackware.uk/cumulative/slac...slackware64/l/ (package needed by nepomuk)
- replaced the libnm-qt-0.9.9.3 package with libnm-qt-1.0.0 version.
- remove qt5 and qt5-webkit before trying to build because of libbluedevil, PyQT and qtscriptgenerator.They will be reintalled at the end the kde4town build.
- Having both libraries qt4 and qt5 at the same time is not a good choice.
- grantlee needs qt4
- removepkg qt5-* (qt5 and qt5-webkit)
- libraries qt and qtwebkit need to be built before eveything else to be able to link packages to qt4
- I then looked at SFS and recovered the sfsbuild.sh of that date 07/12/2020,
- I modified the extragear modules to be able to build calligra
And 'voilą'.
You put the build-kde4.sh in /source/kde, you copy the deps, kde and kdei source in that directory to have:
- /source/kde/desp
- /source/kde/kde
- /source/kde/kdei
You first build all the deps in the new BUILDORDER below.
You then execute the following and wait till the end:
time ./build-kde4.sh
I enclose the build-kde4.sh script and the list.diff between my installation and LuckyCyborg installation (his list1.txt).
Everything builds fine.
At the end reinstall the qt5 and qt5-webkit packages.
Hope this helps LuckyCyborg.
Thank you, Monsieur Nobodino! I can confirm that the "-std=c++11" addition on CXXFLAGS fixes the Calligra compilation, so it's a step forward.
HOWEVER, there are still several packages which fails, and they aren't also present in your list diff:
LOCALIZE of KDESDK fails on cmake config, by not finding HUNSPELL. ROCS and STEP of KDEEDU fails on compilation. AMAROK of EXTRAGEAR fails on cmake config, by not finding TAGLIB.
I did a full (re)build respecting all your notes - without Qt5 (and Qt5-webkit) being installed, also to test the BrunoLafleur's hypothesis regarding that the Widgets Browser is being disturbed by Qt5. And unfortunately that Plasma widgets bar is empty also in this case.
In fact, no one of these known 4 issues of KDE4 desktop are fixed with a build without Qt5. Nothing changed - maybe because BrunoLafleur did special measures on this KDE4 build from PBSLACKS for tagging along with Qt5 applications.
PS. I have news from that friend of mine (who made the custom patches added by me in this KDE4 build) and he said that there's already support for Power Management via systemd(-logind) on the KDE4 source code and that in few days he will show me also a patch for making suspend/hibernate working with our elogind.
PS2. And what we do with the virtuoso-ose package? The SlackBuild grabbed from Slackware (14.2 -current) does not compile on Slackware 15.0 because OpenSSL errors in compilation.
Distribution: slackware, slackware from scratch, LFS, slackware [arm], linux Mint...
Posts: 1,564
Rep:
- lokalize: you can fool the system by downgrading to hunspell-1.6.2
- rocs: you can fool the system by downgrading to boost-1.74.0
- step: you can fool the system by installing eigen2-2.0.17
then upgradepkg hunspell and boost, removepkg eigen2
the last one, amarok: I still looking for a smart solution.
- lokalize: you can fool the system by downgrading to hunspell-1.6.2
- rocs: you can fool the system by downgrading to boost-1.74.0
- step: you can fool the system by installing eigen2-2.0.17
then upgradepkg hunspell and boost, removepkg eigen2
the last one, amarok: I still looking for a smart solution.
BUT, I do NOT want to "fool the system" ...
What I want is to compile KDE4 on (and for) Slackware 15.0 as cleanly as possible, eventually patching it where's the case.
For me, the virtuoso-ose package grabbed from Slackware 14.2 already looks quite suspicious, as it needs for building the OpenSSL 1.0 libraries, from what I understand. Then, either I should find a patch for it to build it on Slackware 15.0 either I should find a way to KDE4 to work without it. Most likely I will drop it.
In the end, same did our BDFL on Fri Sep 21 18:51:07 UTC 2018
Code:
l/soprano-2.9.4-x86_64-3.txz: Rebuilt.
Recompiled to drop virtuoso dependency.
l/virtuoso-ose-6.1.8-x86_64-9.txz: Removed.
Even KDE4 has migrated away from actually using this for anything. The last
thing in Slackware that was dependent on it was Soprano, which has been
recompiled to no longer use it.
So, no, thanks! No rolling back stock Slackware packages, please!
Speaking of patches, I have just received the one for kde-workspace which adds support for elogind managed suspend/hibernate.
Code:
diff -urN kde-workspace-4.11.22.orig/khotkeys/libkhotkeysprivate/windows_helper/window_selection_rules.cpp kde-workspace-4.11.22/khotkeys/libkhotkeysprivate/windows_helper/window_selection_rules.cpp
--- kde-workspace-4.11.22.orig/khotkeys/libkhotkeysprivate/windows_helper/window_selection_rules.cpp 2015-08-12 10:03:15.000000000 +0300
+++ kde-workspace-4.11.22/khotkeys/libkhotkeysprivate/windows_helper/window_selection_rules.cpp 2023-02-20 10:23:26.116021645 +0200
@@ -91,7 +91,7 @@
case NOT_IMPORTANT :
return true;
case CONTAINS :
- return str1_P.contains( str2_P ) > 0;
+ return str1_P.contains( str2_P );
case IS :
return str1_P == str2_P;
case REGEXP :
@@ -100,7 +100,7 @@
return rg.indexIn( str1_P ) >= 0;
}
case CONTAINS_NOT :
- return str1_P.contains( str2_P ) == 0;
+ return ! str1_P.contains( str2_P );
case IS_NOT :
return str1_P != str2_P;
case REGEXP_NOT :
diff -urN kde-workspace-4.11.22.orig/libs/taskmanager/task.cpp kde-workspace-4.11.22/libs/taskmanager/task.cpp
--- kde-workspace-4.11.22.orig/libs/taskmanager/task.cpp 2015-08-12 10:03:15.000000000 +0300
+++ kde-workspace-4.11.22/libs/taskmanager/task.cpp 2023-02-20 10:23:26.134021646 +0200
@@ -478,10 +478,7 @@
if (id1.isEmpty() || id2.isEmpty())
return false;
- if (id1.contains(id2) > 0)
- return true;
-
- if (id2.contains(id1) > 0)
+ if (id1.contains(id2) || id2.contains(id1))
return true;
return false;
diff -urN kde-workspace-4.11.22.orig/plasma/generic/dataengines/weather/ions/bbcukmet/ion_bbcukmet.cpp kde-workspace-4.11.22/plasma/generic/dataengines/weather/ions/bbcukmet/ion_bbcukmet.cpp
--- kde-workspace-4.11.22.orig/plasma/generic/dataengines/weather/ions/bbcukmet/ion_bbcukmet.cpp 2015-08-12 10:03:15.000000000 +0300
+++ kde-workspace-4.11.22/plasma/generic/dataengines/weather/ions/bbcukmet/ion_bbcukmet.cpp 2023-02-20 10:23:26.134021646 +0200
@@ -312,11 +312,11 @@
while (!stream.atEnd()) {
line = stream.readLine();
- if (line.contains("<p class=\"response\">") > 0) {
+ if (line.contains("<p class=\"response\">")) {
flag = 1;
}
- if (line.contains("There are no forecasts matching") > 0) {
+ if (line.contains("There are no forecasts matching")) {
break;
}
@@ -342,7 +342,7 @@
}
}
- if (line.contains("<div class=\"line\">") > 0) {
+ if (line.contains("<div class=\"line\">")) {
flag = 0;
}
}
diff -urN kde-workspace-4.11.22.orig/powerdevil/daemon/backends/upower/powerdevilupowerbackend.cpp kde-workspace-4.11.22/powerdevil/daemon/backends/upower/powerdevilupowerbackend.cpp
--- kde-workspace-4.11.22.orig/powerdevil/daemon/backends/upower/powerdevilupowerbackend.cpp 2015-08-12 10:03:15.000000000 +0300
+++ kde-workspace-4.11.22/powerdevil/daemon/backends/upower/powerdevilupowerbackend.cpp 2023-02-20 11:26:34.073008563 +0200
@@ -38,41 +38,6 @@
#define HELPER_ID "org.kde.powerdevil.backlighthelper"
-bool checkSystemdVersion(uint requiredVersion)
-{
-
- QDBusInterface systemdIface("org.freedesktop.systemd1", "/org/freedesktop/systemd1", "org.freedesktop.systemd1.Manager",
- QDBusConnection::systemBus(), 0);
-
- const QString reply = systemdIface.property("Version").toString();
-
- QRegExp expsd("(systemd )?([0-9]+)");
-
- if (expsd.exactMatch(reply)) {
- const uint version = expsd.cap(2).toUInt();
- return (version >= requiredVersion);
- }
-
- // Since version 1.11 Upstart user sessions implement the exact same API as logind
- // and are going to the maintain the API in future releases.
- // Hence, powerdevil can support this init system as well
- // This has no effect on systemd integration since the check is done after systemd
- ComUbuntuUpstart0_6Interface upstartInterface(QLatin1String("com.ubuntu.Upstart"),
- QLatin1String("/com/ubuntu/Upstart"),
- QDBusConnection::sessionBus());
-
- QRegExp exp("(?:init \\()?upstart ([0-9.]+)(?:\\))?");
- if(exp.exactMatch(upstartInterface.version())) {
- // Only keep the X.Y part of a X.Y.Z version
- QStringList items = exp.cap(1).split('.').mid(0, 2);
- const float upstartVersion = items.join(QString('.')).toFloat();
- return upstartVersion >= 1.1;
- }
-
- kDebug() << "No appropriate systemd version or upstart version found";
- return false;
-}
-
PowerDevilUPowerBackend::PowerDevilUPowerBackend(QObject* parent)
: BackendInterface(parent),
m_brightnessControl(0), m_kbdMaxBrightness(0),
@@ -231,7 +196,7 @@
// Supported suspend methods
SuspendMethods supported = UnknownSuspendMethod;
- if (m_login1Interface && checkSystemdVersion(195)) {
+ if (m_login1Interface) {
QDBusPendingReply<QString> canSuspend = m_login1Interface.data()->asyncCall("CanSuspend");
canSuspend.waitForFinished();
if (canSuspend.isValid() && (canSuspend.value() == "yes" || canSuspend.value() == "challenge"))
@@ -246,7 +211,10 @@
canHybridSleep.waitForFinished();
if (canHybridSleep.isValid() && (canHybridSleep.value() == "yes" || canHybridSleep.value() == "challenge"))
supported |= HybridSuspend;
- } else {
+ }
+
+ // Check if we can suspend/hibernate with UPower < 0.99
+ if (supported == UnknownSuspendMethod) {
if (m_upowerInterface->canSuspend() && m_upowerInterface->SuspendAllowed()) {
kDebug() << "Can suspend";
supported |= ToRam;
@@ -256,10 +224,14 @@
kDebug() << "Can hibernate";
supported |= ToDisk;
}
+
+ if (supported != UnknownSuspendMethod) {
+ m_useUPowerSuspend = true;
+ }
}
// "resuming" signal
- if (m_login1Interface && checkSystemdVersion(198)) {
+ if (m_login1Interface && !m_useUPowerSuspend) {
connect(m_login1Interface.data(), SIGNAL(PrepareForSleep(bool)), this, SLOT(slotLogin1Resuming(bool)));
} else {
connect(m_upowerInterface, SIGNAL(Resuming()), this, SIGNAL(resumeFromSuspend()));
@@ -431,7 +403,7 @@
KJob* PowerDevilUPowerBackend::suspend(PowerDevil::BackendInterface::SuspendMethod method)
{
- if (m_login1Interface && checkSystemdVersion(195)) {
+ if (m_login1Interface && !m_useUPowerSuspend) {
return new Login1SuspendJob(m_login1Interface.data(), method, supportedSuspendMethods());
} else {
return new UPowerSuspendJob(m_upowerInterface, method, supportedSuspendMethods());
diff -urN kde-workspace-4.11.22.orig/powerdevil/daemon/backends/upower/powerdevilupowerbackend.h kde-workspace-4.11.22/powerdevil/daemon/backends/upower/powerdevilupowerbackend.h
--- kde-workspace-4.11.22.orig/powerdevil/daemon/backends/upower/powerdevilupowerbackend.h 2015-08-12 10:03:15.000000000 +0300
+++ kde-workspace-4.11.22/powerdevil/daemon/backends/upower/powerdevilupowerbackend.h 2023-02-20 11:19:26.070359333 +0200
@@ -96,6 +96,7 @@
// login1 interface
QWeakPointer<QDBusInterface> m_login1Interface;
+ bool m_useUPowerSuspend = false;
// buttons
bool m_lidIsPresent;
This patch is supposed to replace the gzipped kde-workspace-4.11.22.diff.
My friend said that basically the Slackware 15.0 ships the login1 API from systemd 246.10, so there is no need for some systemd version checks on that code. Hence the logic of this patch.
I have tested it already and both suspend and hibernate works properly on my KDE4 build, and of course, the associated buttons are back.
So, one of the KDE4 desktop issues could be considered solved.
Last edited by LuckyCyborg; 02-20-2023 at 08:21 AM.
LinuxQuestions.org is looking for people interested in writing
Editorials, Articles, Reviews, and more. If you'd like to contribute
content, let us know.