Frameworks/Coinstallability: Difference between revisions

From KDE Community Wiki
(Add windows note)
 
(28 intermediate revisions by 3 users not shown)
Line 3: Line 3:
It should be possible to install a kde frameworks 5 runtime alonside a kdelibs 4 runtime so apps can use either one
It should be possible to install a kde frameworks 5 runtime alonside a kdelibs 4 runtime so apps can use either one


= Dependencies: =
Many paths have changed by default so there is no clash
* kdelibs 4 CONFIG_INSTALL_DIR: /usr/share/config
* kf5 CONFIG_INSTALL_DIR: /etc/xdg
* kdelibs 4 DATA_INSTALL_DIR: /usr/share/apps
* kf5 DATA_INSTALL_DIR: /usr/share


Qt libraries it depends on already have two versions with different sonames or different names
HTML_INSTALL_DIR does clash as /usr/share/doc/HTML to allow khelpcentre to find docs from both kdelibs4 land and kf5 land


* phonon - rename done
In addition, under Windows, the file names of the executables provided by the framework must differ from those of the KDE4 counterpart, as the 'libexecdir' directory is mapped to the 'bin' directory.
* attica - rename done
* dbusmenu - rename done
* oxygen-icons - just install the latest version
* qimageblitz - rename done
* libstream and libstreamanalyzer - not qt libraries so ABI the same and no rename needed
* grantlee - not ported to Qt 5 but it is only used for a test which is disabled.
* polkit-qt-1 - '''collides''' with Qt4 counterpart, both by name and soname


= KDE Frameworks 5 =
[[Plasma/Coinstallability|Plasma Next coinstallability page]]
== data files: ==


Most install into DATA_INSTALL_DIR which can be made version specific, e.g. /usr/share/kde4/ and /usr/share/kdeframeworks5
= kactivities =


* share/LICENSES/  DATA_INSTALL_DIR
The libraries are co-installable, but the daemon is not.
* share/kcharselect/kcharselect-data  DATA_INSTALL_DIR
* share/ksgmltools2  DATA_INSTALL_DIR
* share/xmlgui/pics/aboutkde.png DATA_INSTALL_DIR
* share/khtml/ DATA_INSTALL_DIR
* share/kssl/ DATA_INSTALL_DIR
* share/kauth/
* share/cmake/modules/
* share/kconfigwidgets DATA_INSTALL_DIR (and changed dir name)
* share/knewstuff/pics DATA_INSTALL_DIR
* share/kconf_update DATA_INSTALL_DIR
* share/kjava DATA_INSTALL_DIR
* share/proxyscout/ DATA_INSTALL_DIR
* share/kcm_componentchooser/ DATA_INSTALL_DIR
* share/kdewidgets/ DATA_INSTALL_DIR


'''Note''' default DATA_INSTALL_DIR from kdelibs4 was ${SHARE_INSTALL_PREFIX}/apps, with KF5 it is same as ${SHARE_INSTALL_PREFIX}, and it completely depends on $XDG_DATA_DIRS/xdgDataDirs (for anything other than default, env variables need to be exported, both during buildtime, and runtime). But, on default configuration, data does not collide!
* libkactivities/qt5 requires kactivitymanagerd/qt5
* libkactivities/qt4 works with both kactivitymanagerd/qt4 and kactivitymanagerd/qt5 (though, the later is advised since it is more stable)


These are files which could be shared between kdelibs 4 and kde frameworks 5
In order to build only the library part of kactivities/qt4, you can pass -DKACTIVITIES_LIBRARY_ONLY=true to cmake. libkactivities/qt4 works with the qt5 version of the daemon.


* share/locale/
* link to the original discussion: https://git.reviewboard.kde.org/r/115602/
Currently, share/locale/all_languages and share/locale/en_US/entry.desktop are provided by both kdelibs4 and kf5.
 
* share/mime/packages/
Currently, kdelibs installs share/mime/packages/kde.xml and KF5 installs share/mime/packages/kde5.xml
 
* share/icons/hicolor/
ATM seems that no icons are installed with KF5
 
* share/doc
HTML_INSTALL_DIR  is the same in both generations of libraries: currently kio docs collide
 
* etc/xdg/
Both kdelibs and KF5 provide etc/xdg/menus/applications.menu
 
* share/dbus-1/interfaces/
Several Frameworks install same XML files for their DBus interfaces with the same name as kdelibs counterparts.
 
* etc/dbus-1/system.d/org.kde.auth.conf
KAuth framework still uses same DBus configuration file as in KDE4 era
 
== binaries: ==
 
Some are renamed already or a new:
* bin/checkXML -> * bin/checkXML5
* bin/kdeinit4_shutdown -> bin/kdeinit5_shutdown
* bin/kbuildsycoca4 -> bin/kbuildsycoca5
* bin/kdeinit4_wrapper -> bin/kdeinit5_wrapper
* bin/meinproc4 -> bin/meinproc5
* bin/kdeinit4 -> bin/kdeinit5
* bin/kde4-config -> bin/kf5-config
* bin/kded4 -> bin/kded5
* New binary -> bin/desktoptojson
* bin/kshell4 -> bin/kshell5
* bin/kwrapper4 -> bin/kwrapper5
* bin/kcookiejar4 -> bin/kcookiejar5
* bin/kross -> bin/kf5kross
* bin/kmailservice -> bin/kmailservice5
* bin/ktelnetservice -> bin/ktelnetservice5
* bin/kjs -> bin/kjs5
* bin/kjscmd -> * bin/kjscmd5
* bin/kconfig_compiler -> bin/kconfig_compiler_kf5
* bin/makekdewidgets ->  bin/kgendesignerplugin
* bin/kwalletd -> bin/kwalletd5
* bin/preparetips -> * bin/preparetips5
 
== libraries: ==
All libraries renamed and versioned to 5.0.0
 
set some cmake variables to keep various bits separate
* plugins/  needs QT_PLUGIN_INSTALL_DIR set
* lib/cmake needs CMAKECONFIG_INSTALL_DIR set
* lib/qml/org/kde/solid/libsolidextensionplugin.so  new file
* libexec can be put in a kf5 directory with LIBEXEC_INSTALL_DIR
 
= KActivities =
kdelibs 4 and kde frameworks 5 versions are co-installable
* plugins installed into plugins/kf5 to keep them separate
* kactivities library has been renamed with capital letters and new SONAME
* kactivitymanagerd can be shared between libkactivities in kde4 and in kf5, it has the same same dbus interface
* share/ontologies has been removed
 
= kde-runtime =
Much of kde-runtime is yet to be ported
 
== binaries ==
renamed binaries
* kcmshell5
 
interchangeable binaries, packagers should use the version from kde sc 5 and drop the version from kde sc 4
* kdecp
* kdemv
* kdeopen
* kioclient
* ktrash
 
== plugins ==
* kioexec set a separate LIBEXEC_INSTALL_DIR
* plugins/kf5 set a separate PLUGIN_INSTALL_DIR
 
== data files ==
* jpegcreatorsettings.kcfg set a separate KCFG_INSTALL_DIR e.g.  /usr/share/kf5/config.kcfg
* kcmlocale/pics/background.png  set a separate DATA_INSTALL_DIR
* .desktop and .protocol files set SERVICES_INSTALL_DIR to e.g. /usr/share/kde5/services
 
== developer files ==
* org.kde.KTimeZoned.xml  interface file, no longer installed https://git.reviewboard.kde.org/r/113819/
 
= KDE Workspace =
 
Not co-installable, the whole point is to have Plasma 2 and the workspace ported to KF5
 
= KControl Modules =
 
Various KControl modules in kde-runtime and kde-workspace need ported to KF5.
 
They will then edit files in the kf5 settings directory ~/.config/kf5 and not kde 4 settings.  For some it might be useful to share settings, a symlink from e.g. ~/.kde/share/config/kdeglobals to ~/.config/kf5/kdeglobals may work if the config values are the same.

Latest revision as of 12:01, 21 September 2020

KDE Frameworks 5 and Plasma 2 co-installability

It should be possible to install a kde frameworks 5 runtime alonside a kdelibs 4 runtime so apps can use either one

Many paths have changed by default so there is no clash

  • kdelibs 4 CONFIG_INSTALL_DIR: /usr/share/config
  • kf5 CONFIG_INSTALL_DIR: /etc/xdg
  • kdelibs 4 DATA_INSTALL_DIR: /usr/share/apps
  • kf5 DATA_INSTALL_DIR: /usr/share

HTML_INSTALL_DIR does clash as /usr/share/doc/HTML to allow khelpcentre to find docs from both kdelibs4 land and kf5 land

In addition, under Windows, the file names of the executables provided by the framework must differ from those of the KDE4 counterpart, as the 'libexecdir' directory is mapped to the 'bin' directory.

Plasma Next coinstallability page

kactivities

The libraries are co-installable, but the daemon is not.

  • libkactivities/qt5 requires kactivitymanagerd/qt5
  • libkactivities/qt4 works with both kactivitymanagerd/qt4 and kactivitymanagerd/qt5 (though, the later is advised since it is more stable)

In order to build only the library part of kactivities/qt4, you can pass -DKACTIVITIES_LIBRARY_ONLY=true to cmake. libkactivities/qt4 works with the qt5 version of the daemon.