The recent update in slackware-current of the icu4c and boost packages caused some 3rd-party package breakage. The new versions of icu4c and boost come with incompatible library ABI changes.
Let me first elaborate a bit on the strategies that are available to a Slackware user on how to deal with incompatible library updates in -current.
One of the reasons people are wary of installing and running Slackware-current is the fact that at any given moment, distro updates can break 3rd-party packages (i.e. packages you have installed that are not part of the Slackware distribution itself). Slackware-current is in constant flux, it is our development environment, and software versions can make sudden jumps with unexpected consequences.
Big tip: before running any update on a slackware-current system, first check the ChangeLog.txt and scan the updates since your previous upgrade for the text “Shared library .so-version bump.” which is another way of saying “incompatible ABI change”.
If this text accompanies a package update you can be pretty certain that some 3rd-party packages that depend on it will stop working. And if that particular package is boost, icu4c or poppler, expect massive breakage. The safest approach in a case like this, is: wait with upgrading your Slackware-current; check for packages that have a dependency on the package with the ABI breakage: and track the 3rd-party repositories for updates that address the ABI breakage.
There is another strategy- one which allows you to upgrade to the latest -current while avoiding broken packages. That is to keep the older libraries on your system – the libraries your 3rd-party packages are depending on. You can simply extract these older libraries from the previous version(s) of the upgraded Slackware package. Darren Austen and I worked together to create a package repository containing historical Slackware-current packages (32bit, 64bit official packages and my own multilib archive). See https://slackware.uk/cumulative/ if you are in need of older package versions.
And in the special case of incompatible icu4c, boost and poppler updates, the easiest (short-term) workaround is to install my icu4c-compat, boost-compat and poppler-compat packages. Essentially, these convenience packages wrap the libraries of several older (original Slackware) icu4c, boost and poppler packages.
Applications that depend on these older libraries will keep on running and in the meantime you can wait for the 3rd-party packager to recompile the affected packages (or recompile yourself at your leisure). I update these packages immediately after updates to their Slackware originals. The process takes almost no time, compared with recompiling all the broken stuff.
NOTE: These ‘compat’ packages do not replace Slackware’s own icu4c, boost and poppler packages! They should be installed in parallel.
Libreoffice
The most obvious package breakage in my own repository is of course LibreOffice. It is a big package and many people do not want to recompile this themselves. A good decision, because the LibreOffice package would not compile against the new icu4c 65.1 and I needed to find the cause and create a patch first.
Since I had to compile new packages anyway, I went for the latest 6.3.2 release of LibreOffice which was announced two weeks ago.
Note that the new packages for LibreOffice 6.3.2 in my repository, do contain “libreoffice-kde-integration”, containing Qt5 and KDE5 (aka Plasma5) support.
If you do not have KDE5 packages installed at all, don’t worry. LibreOffice will work great – the KDE integration package just will not add anything useful for you. On the other hand, if you have Plasma5 installed you will benefit from native file selection dialog windows and other integration features. And even if you do not have Plasma5 but you do have Qt5 installed, then you will be able to run LibreOffice with Qt5 User Interface elements instead of defaulting to GTK3.
If you want to compile Libreoffice 6.3.2 packages yourself using my SlackBuild, then be aware that by default the KDE5 support is disabled. You will have to set the value of the script parameter “ADD_KDE5” to “YES”. Additionally you will have to install the packages that this functionality depends on otherwise the compilation will fail.
Read the ‘README.kde5‘ file in the source directory for the list of packages you’ll need. All of them can be found in my ‘ktown’ repository: https://slackware.nl/alien-kde/current/latest/
Enjoy! Eric
Recent comments