How the KDE community packages for SLE in PackageHub were done
This is a modal window.
The media could not be loaded, either because the server or network failed or because the format is not supported.
Formal Metadata
Title |
| |
Title of Series | ||
Number of Parts | 57 | |
Author | ||
Contributors | ||
License | CC Attribution 3.0 Unported: You are free to use, adapt and copy, distribute and transmit the work or content in adapted or unchanged form for any legal purpose as long as the work is attributed to the author in the manner specified by the author or licensor. | |
Identifiers | 10.5446/54473 (DOI) | |
Publisher | ||
Release Date | ||
Language |
Content Metadata
Subject Area | ||
Genre | ||
Abstract |
|
openSUSE Conference 201722 / 57
3
6
10
15
16
19
21
23
24
27
28
29
34
36
38
40
41
42
46
47
51
53
55
00:00
System of linear equationsSoftware developerHacker (term)Multiplication signSoftware developerProcess (computing)Sinc functionProjective planeOrder (biology)Point (geometry)Cartesian coordinate systemReal numberSoftware engineeringMobile appSystem administratorSoftware maintenanceSelf-organizationHacker (term)Open setComputer animationMeeting/Interview
03:31
Factory (trading post)Software frameworkState transition systemRevision controlSoftwareCartesian coordinate systemProjective planeFactory (trading post)Pattern languageArithmetic progressionRight angleSoftware frameworkCuboidFlow separationRevision controlMereologyCompilation albumService (economics)Doubling the cubeComputer animation
05:35
Service (economics)Direction (geometry)Cartesian coordinate systemDistribution (mathematics)Projective planeMultiplication signProduct (business)Software frameworkComputer animation
06:13
Decision theorySystem of linear equationsLibrary (computing)Macro (computer science)Factory (trading post)Revision controlPatch (Unix)Execution unitSystem of linear equationsProjective planeFactory (trading post)Distribution (mathematics)Revision controlTouch typingPatch (Unix)Software developerCartesian coordinate systemBuildingComputer fileLipschitz-StetigkeitEnterprise architectureLibrary (computing)CASE <Informatik>Macro (computer science)Mobile appData storage deviceSoftware development kitForcing (mathematics)Order (biology)Multiplication sign1 (number)Table (information)Link (knot theory)Error messageGame theoryProcess (computing)Computer animation
15:06
Interface (computing)Revision controlComputer configurationData structureVariable (mathematics)Function (mathematics)Patch (Unix)System of linear equationsPlasma displayTouchscreenSoftware testingState transition systemProcess (computing)Software framework1 (number)Flash memoryTouchscreenMultiplication signType theoryLipschitz-StetigkeitLoginSoftware maintenanceCartesian coordinate systemInterface (computing)Revision controlPattern languageKey (cryptography)Library (computing)Different (Kate Ryan album)Factory (trading post)Coefficient of determinationCASE <Informatik>Patch (Unix)Server (computing)Software frameworkOpen sourceSpecial unitary groupPoint (geometry)Binary codePhysical systemElectronic mailing listModule (mathematics)MathematicsOrder (biology)Session Initiation ProtocolKeyboard shortcutSelectivity (electronic)Statement (computer science)WeightWindowData managementBitConfiguration spaceComputer fileFile formatScripting languageLatent heatBuildingWeb pageStandard deviationSystem of linear equationsState transition systemComputer animation
23:50
System of linear equationsProduct (business)Extension (kinesiology)Pattern languageSoftware development kitCuboidProduct (business)Food energyExtension (kinesiology)Multiplication signPattern languageInformationPhysical systemInstallation artTouchscreenComputer animation
24:53
Configuration spaceElectronic visual displayVirtual machineServer (computing)MathematicsComputer animation
25:37
Computer fileView (database)BlogSystem of linear equationsData managementMathematicsCollisionProjective planeElectronic visual displayPhysical systemSource codeComputer animation
26:12
Multiplication signComputer animationMeeting/Interview
26:35
HypermediaComputer animation
Transcript: English(auto-generated)
00:08
So, let's start. I'm going to talk to you about the KDP packages for SV that we have done for package hub. I suppose that you have been in the other package hub talks that have been in the conference, but for this time, I'm going to talk only about the
00:24
KDP packages and about the whole process in order to get the KDP packages in package hub. So, that might be a starting point for you if you want to also collaborate with package hub and submit your applications there. It will be maybe an interesting talk
00:43
for you. So, let's start explaining who am I, because I suppose that most of you don't know me, at least I don't know most of you. So, I'm Antilar on IRC, Antonio Larosa on the real world. I've been a KDP developer since 20 years ago. I've been a SUSE user
01:05
since 98, something like that. At that time, SUSE sent DVDs to all KDP developers, so I started using it at that time. I've been a SUSE user since around 2004. In the
01:22
previous company I worked for before coming to SUSE, I used SLE as a maintainer, as a system administrator and also developed applications for SLE. I've been a SUSE developer, I've been working on SUSE for the last 4 years and also for a bit longer than a year,
01:43
around the year 2000. Currently, I'm at the SLE desktop team. So, I work most of the time with GTK applications, but also with KDP applications on Open SUSE. So, I'm working on it. How did this project begin about making KDP applications, KDP packages
02:06
for SLE? Mainly, it started as a Hack Week project. I suppose that most of you who have worked on a Hack Week, it also happened to you probably that the first day of the Hack Week, you still don't know what to do. Then, talking with some people, they
02:21
suggested that maybe it would be a good idea to make KDP packages for SLE and I thought, let's see, there are KDP packages for Open SUSE, so it shouldn't be much of a problem. I was wrong, okay? That's a spoiler of the talk. It started in Hack Week 12, to be
02:40
more precise. If you check the dates, I had to check it. It's around April 2015, so it's been a while now since I started working on this, but most of the work was actually done by the end of the year of 2015 and the beginning of 2016, okay? I worked obviously
03:03
during the Hack Week, but I was overwhelmed. There was a lot of work to be done and it was clear that it was not a project to be done in a week after I started. So, in a sense, this project has been kind of a guinea pig for package hub because we have
03:23
been testing things before package hub was released and I suppose it's not wrong to say something like that, okay? So, before beginning talking about how this is done, probably I should talk about how KDE is structured into OBS. I guess most of you
03:43
already know, maybe, so I will probably go faster on this. Basically, we have several projects for Qt packages. The main project for that is KDE Qt 5, which is a double project for Qt in factory, and then also we have Qt 5.6, Qt 5.7, and you know the progression,
04:06
right? You see the button there. Then we also have KDE projects. We have split that into Frameworks 5, which includes right now Frameworks and Plasma packages. Also, we have
04:27
KDE Frameworks 5 LTS, which is the LTS version of Plasma, and it includes a newer version of Frameworks, but not so new as in KDE Frameworks 5. Personally, I think
04:41
that we should also split that, but probably that will happen in the next weeks, months, months. But right now, Frameworks and Plasma are in the same project, okay? And then we have KDE applications, which is basically KDE applications, as the name says. The software, the application for KDE. Then, there's also KDE Extra, which is more
05:07
applications for KDE that are not part of the KDE application software compilation, okay? And then we also have kind of an obsolete project, which is KDE Distro Factory, which includes KDE 4 packages, which are still in use, and with a little luck, we will
05:24
stop using that soon, as soon as possible. Okay? Then we also have other projects in OBS for KDE, which are the unstable projects, which have the service to get the, sorry,
05:41
which have the services to get the packages from JIT directly. These are, as you see, something, something clear. Qt Frameworks, applications and extra, and they are updated mostly every day, okay? Sometimes even more than once per day. So these are the base
06:04
for OpenSUSE Krypton and Argon. Those distributions take the packages from these projects. So, with so many projects to take, to base our SLE packages from, what should we take?
06:22
Well, basically, at the beginning, I decided to go with KDE 5.4, .3, I think. But then, when OpenSUSE LIP was released, then, sorry, not when it was released, but when OpenSUSE LIP was updated, I changed it and used KDE 5.5.5. Basically, I used the double projects
06:47
for factory, which soon, well, not so soon, but I realised that that was kind of a bad decision, and for the, when I was making the packages for SP2, for SP2, I realized
07:02
to go and just use directly the packages from LIP, from LIP 42.2, okay? Because the 42.2 packages from KDE were, there was a lot of time invested into those packages, and it would be a pity not to use them. So, basically, at the beginning, I used this
07:29
project set as a base, and if we count the packages that are in each of these projects, then we see that there are quite a few packages there in each of the projects, and if we sum
07:44
them, we see that there are nearly 1,000 packages there. Of course, not all of them are currently in package hub. There are many packages that either not, they don't make sense in SLE, like, for example, discover or some of those app store applications that
08:01
use newer package kit dependencies, and which SLE users usually don't want to use app stores for that. There are also not so common applications that don't make sense on enterprise. Also games, for example. I included a few games, just in case. And, well, at the
08:27
end, basically, we put into package hub something like 350, 400 packages, okay? So, we already know what to base our project on, and then I started building everything, and
08:45
problems are rising. Some of the libraries that we were using, OBS couldn't resolve the dependencies. I mean, I had a project in which I built, let's say, Qt 5 base, and then
09:06
when I was going to build another application or another library that depended on that, OBS simply said that the dependency was unresolved, and it was in the same project, and this was what the fuck, okay? It was kind of a strange situation. Well, it turns out that
09:27
KDE uses dependencies, like, with capabilities instead of, like, using package names. Not all of them, but in many cases, it uses dependencies like that. And RPM in SLE was
09:41
creating the provides for those libraries, okay? So, the solution was simple. Once the problem was stated, was known, and only including the CMake RPM macro file from factory into the CMake package in SLE, and it was solved, and we had all the capabilities
10:05
included into the packages. So, we have a problem with packages missing in the CD12, there are many packages that were mainly missing there, the one there, and then there were other
10:26
packages that were too old. Maybe I should say too stable, because they were not updated with respect to factory, of course, but in any case, I needed newer things, and I needed things that weren't there. So, I learned about BSKK the hard way, because I didn't even
10:49
knew that was something, and it turns out that packages that are in SLE sometimes are used to build other packages, but are not included into the distribution. So, that was happening
11:03
there, and fortunately, I got in touch with Adria, and other developers who helped me move the applications to OBS so that I could use them around there. So, afterwards, well, this,
11:28
I think I've already been explaining in other talks, RPM complaint that many packages that I was building interfere with other packages that were already into SLE, release it or not. I
11:43
mean, even if it was only interfering with one package that was used to build other packages but were not released, then it didn't matter. I mean, I couldn't build that package, and RPM complaint, and the building of the package stopped. So, I, I couldn't build new
12:05
versions of Qt, of course. You have to remember that if you set Qt 531, and even if SP1 still uses 532, which is a very old Qt version, but fortunately, Max, I don't know if around here,
12:25
Max Lin, backported a lot of patches from upstream into Qt. He did a great job, and those versions were good enough for us. But there were also other packages, like CMake, which was
12:41
very old, KDLift4 was included, I mean, it's not in the distribution, but it's in BSK, libkippy, ffmpeg, mesa, lvm, there were old versions of that, of those packages, and something had to be done. So, as I said, no package in, in package hub can, can be
13:05
have the same name or include a file that is already included in any package in S3. So, that might look like a problem for us, if we are wanting, if we want to, to create a package, but it actually makes sense for, for users, and we have to think of users, so,
13:21
we have to, we have to find a solution that works for us. So, the main solution for this is to patch the package in S3, and include any feature that we need from the, later from the newer version, okay? To backport things, I should have said that, sorry. So, sometimes,
13:49
also, it's possible to force RMPM lint to ignore the error, and white list the package, and so that it will continue, of course, this is not a long-term solution, this is only a solution in order to continue building and continue working while the problem, the real
14:04
problem was fixed, okay? This is, this was done because if I could, if I would have had to stop for every package that had this problem, then I would still be building carry packages, okay? This way, I could continue working with other packages while someone else was fixing this,
14:26
applications. So, another problem, problem was the Wayland problem. It turns out KDE at that time required Wayland 1.3, but S3-12 only had 1.2. So, probably,
14:44
you are wondering now is, wait, S3-12 uses Wayland? The answer is, of course, no, okay? But it was used to build other packages, as I said before. So, the solution in this case was to patch Wayland and include some, quite a few patches from upstream. And, yeah, it got there,
15:05
and it will fine, so it could continue. Also, some other problem that I have was with Akonadi. I am showing you here a small selection of the problems that we have, but many more. But in this case, for example, Akonadi had a special requirement for SQLite 3,
15:28
which was some support for lock notify interface, which can only be enabled at compile time. So, the solution was easy to do, but it's also another change that we had to do in S3 in order
15:42
to support this. Then, Python SIP. Python SIP, as included in S3-12, which was the version 4.15.4, wasn't enough. In order to build Python Qt 5 bindings, we needed some features
16:01
from 4.15. So, these are the resources of features that we needed, and basically, I just have to backport all of them. Fortunately, Python SIP is not very used on S3, so it was mainly used only to build the Qt 4 bindings, and the Qt 4 bindings are only used by two
16:25
packages, FF-AO-mixer and HP-lib in S3. So, I tested the pages and saw that they worked fine, and we could go on. So, we reached a point in which lib42.2 was released, and, sorry,
16:47
it included a Plasma, I think, 5.4 something, and in the maintenance updates, it was upgraded to 5.5.5. So, okay, we hadn't released anything yet for package hub, so I thought,
17:06
let's upgrade it. Why not? There are many problems that are already fixed. It should be quite more straightforward, right? So, the problem was that this update brought new dependencies, and, for example, the Wayland problem returned, and this time, KD required
17:26
Wayland 1.7, which is a long leap from 1.2, which was still provided by S3. So, well, S3, SP1 included Wayland? No, of course, it didn't, but the solution was to backport
17:43
even more patches from upstream. At the end, I think I got something like 20 something patches from upstream in order to build everything, so it was quite a lot of work. The problem,
18:01
by the way, in case you're wondering why KD needs Wayland if KD still doesn't use Wayland even in leap or in factory, the problem is that, well, not problem, but the thing is that there is a dependency in KWin on some Wayland libraries that it uses internally to work, even in X11, so the Wayland libraries have to be there, okay? So, another problem was
18:27
the S3 branding packages, because, as you know, S3 has a different branding from OpenSUSE, so I couldn't use the Plasma 5 OpenSUSE branding packages, and what I did was to create a new
18:42
Plasma 5 SLE branding packages which were, of course, based on the OpenSUSE ones, but I changed the backgrounds with the standard SLE backgrounds, I changed the splash screens to include more SUSE log type, logos and this kind of thing, right? Okay. So, basically,
19:06
we reached to a point in which we could test some things, okay? And we found out that there were missing binaries. I mean, everything built fine, all the dependencies were there when
19:21
building, but when the user wanted to install the system, there was some dependencies that weren't available for him, because he's not using OBS, of course, so there were packages in OBS that were not available for the users. For example, that's a small list of them.
19:43
As you see, it's not only Q5 packages, the Q5 modules, but also Glue, also LMDB, also Flack, even, and some other libraries. In some cases, some of those libraries were available for SLE desktop, but not for SLE server. In other cases, some of those packages
20:02
were available for the SLE server, but not for the SLE desktop. In other cases, they were not available for any of them. Well, it had to be worked on, which also took time. So, the KDP packages finally arrived for SP1 after more than a year, in July last year.
20:28
And I thought, okay, this time, SP2 won't catch me off guard, and I will be prepared. So, together with Max, we upgraded Qt in SP2 to the LTS version, to 5.6.1,
20:45
which is a nice upgrade, and it also allowed us to remove many patches that were backported and just use the LTS version, which is easier to maintain. So, that's very nice.
21:01
Also, I got rid of the Wayland problem, and I said, okay, let's upgrade Wayland to 1.11, and that will solve everything. At least, the Wayland problem, not everything. I didn't do this, but it was nice that someone else did. I don't know if you are here. Thank
21:21
you. Someone else upgraded CMake to 3.5.2. Also, that helped a lot, because there were many packages in KDE, which were requiring a newer version of CMake. In some cases, there was a silly dependency that if we removed it, basically it worked. There was nothing else
21:42
to be done, just remove the dependency. But in other cases, it was really required. So, as I said, it wouldn't catch me off guard, but actually it did. Because I didn't thought at that time about the problem with the internal API usage of some
22:04
KDE applications. Some KDE applications and libraries use an internal API from Qt, because they need to use it. And this means that the KDE applications, like as important as
22:20
KWin, the window manager, or Plasma, just require a specific version of Qt. You cannot upgrade Qt without the recompiling, rebuilding, and reinstalling the KDE applications. So, that was a problem, because there were many users using S3 12 SP1 with the KDE packages, and when they upgraded to SP2, basically the desktop stopped working. Also, the KDE look
22:48
changed quite a bit. Many configuration files changed places, they changed the format. The QML files that define the look also changed a lot. And this means that the open
23:05
source branding was changed, and I was basically using some script to change the brandings from Open Source to S3, and this script stopped working. So, this meant a lot of work that had to be done. And this time, I said, okay, most of the dependency problems are
23:24
already solved, actually, in SP2. These are, okay, thanks. So, just use the lib42.2 packages, as I said before, were much nicer. So, this means that we upgraded in the SP2 change, we upgraded frameworks, we upgraded Plasma. Even during the SP2 maintenance, I
23:44
upgraded to 586. We upgraded some applications. So, can you use Plasma in S3? I'm going faster, because I've been told that my time is finishing, okay? So, don't ask for information. Just use it, okay? Just do it. The only thing you have to do is register
24:03
your S3 product, your S3 system, enable the package hub extension and the SDK. Actually, I'm not sure if SDK is actually needed, but it doesn't matter if you enable it. And then do cheaper install pattern kd, okay? Only that will install a whole kd desktop in
24:22
your S3 system, which is installing around 450 new packages and around 300 megabytes, okay? It's quite a few packages, but it's worth it. So, the idea after you install it is that you get this GVM version, this GVM screenshot, then in the gear box next
24:46
to sign in, you have to click it, and then a pop-up appears where you select Plasma and then you log in and you get into your Plasma desktop, which, as you see, is very similar to the genome desktop in S3, because I tried to make it as similar as possible.
25:06
Will SDVM work? In fact, I talked with Scott a few days ago about that, because I thought it didn't, but, actually, it does. I tried it these days in a virtual machine for S3
25:20
desktop and for S3 server, and, actually, it works quite well. As you see, basically, it's the same GVM meaning, the same GVM look, only you have to change the config display manager and change GVM with SDVM, and, as you see, the look is very similar. The only
25:44
known issue is that the shutdown button just locks out from your session. So, the solution is easy. Just do an extra click on your display manager and shut down the system from there. So, there are ready packages for this package hub. Just use them, and this is
26:03
not the key issue. There are many dependencies that were included in package hub thanks to this, so I think, and I hope, at least, that many other projects get easier into package hub thanks to this, and I would like to thank all these people for helping to get into, to get the packages into package hub. So, I don't know if we have time
26:25
for questions? No? Okay. So, thank you.