Review Request 126618: Make CMake macro kcoreaddons_desktop_to_json() work on windows.

Alex Richardson arichardson.kde at gmail.com
Mon Jan 4 14:10:39 UTC 2016



> On Jan. 3, 2016, 3:22 p.m., Alex Richardson wrote:
> > According to the documentation AppLocalDataLocation is the following: "C:/Users/<USER>/AppData/Local/<APPNAME>", "C:/ProgramData/<APPNAME>", "<APPDIR>", "<APPDIR>/data"
> > 
> > In which directory are the desktop files? Unfortunately I can't check as my Windows machine broke a while back and I haven't compiled KF5 on Windows since.
> > 
> > Patch looks good to me otherwise as it will still check the same directories change behaviour on Linux. Only minor issue is that the error message is a little bit confusing now.
> 
> Christoph Cullmann wrote:
>     hi, same problem occurs on mac, too, i think a better fallback would be something install prefix relative, that would work on win + mac.
> 
> Alex Richardson wrote:
>     Would checking `${KDE_INSTALL_FULL_KSERVICETYPES5DIR} + path` first and then fall back to GenericDataLocation work on Windows and Mac? Or do we still need the AppDataLocation for runtime detection of the paths?
> 
> Ralf Habacker wrote:
>     From https://build.opensuse.org/build/home:rhabacker:branches:windows:mingw:win32:KF516/openSUSE_13.2/x86_64/mingw32-umbrello5/_log
>     ... 
>     Installing: /home/abuild/rpmbuild/BUILDROOT/mingw32-umbrello5-2.18.99.6f6891a-2.25.x86_64/usr/i686-w64-mingw32/sys-root/mingw/share/applications/org.kde.umbrello.desktop
> 
> Christoph Cullmann wrote:
>     KDE_INSTALL_FULL_KSERVICETYPES5DIR  should be good enough to have something working to be able to build KF5 on win/mac without patching. If the desktoptojson program should work even after packed into some installer/application bundle I guess we would need the appdata fallback, too. The question is: is that a use case needed. For me it is enough to be able to have it working in a devel setup.
> 
> Alex Richardson wrote:
>     This code can also be used at runtime through [KPluginMetaData::fromDesktopFile()](http://api.kde.org/frameworks-api/frameworks5-apidocs/kcoreaddons/html/classKPluginMetaData.html#ac6e87c110b4743ce1b16044c649838ba) although any users should probably be using JSON files directly.
> 
> Kåre Särs wrote:
>     The kpart.desktop file that KTextEditor was looking for is in <installdir>/share/kservicetypes5/.
>     
>     I added AppLocalData to get the <APPDI> path which is normally "<installdir>/bin/" for KDE aplications. I could also live with KDE_INSTALL_FULL_KSERVICETYPES5DIR, but generally I would try to avoid absolute paths hardcoded into binaries...
>     
>     I'll update the error printout.
> 
> Sebastian Kügler wrote:
>     Plasma packages use KPluginMetaData::fromDesktopFile(), this cannot be changed easily, as almost all packages around (our own, and third party) are using .desktop files. We're slowly transitioning, but it will take time. Removing that would mean a lot of our stuff would break, and even more 3rd party plasmoids, kwin scripts, etc..
> 
> Christoph Cullmann wrote:
>     We won't remove what works atm and I guess it will not matter that much if plasmoids/kwin stuff works "better" on win/mac or like they do atm.
> 
> Sebastian Kügler wrote:
>     It was just an example, the code in question is in the kpackage framework, meaning it's not plasma or kwin specific, but holds for any app using it. (I understand those don't work on Windows, due to this problem?)

>From what I can see by grepping over kpackage it doesn't use the service type parameter but just interprets it as a standard KPluginInfo .desktop file with no custom types. So that's fine. I'd vote for adding  KDE_INSTALL_FULL_KSERVICETYPES5DIR as a first check, and then falling back to GenericDataLocation/kservicetypes5 (and/or possibly AppLocalDataLocation/../share on Mac/Windows)


- Alex


-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://git.reviewboard.kde.org/r/126618/#review90496
-----------------------------------------------------------


On Jan. 3, 2016, 1:22 p.m., Kåre Särs wrote:
> 
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> https://git.reviewboard.kde.org/r/126618/
> -----------------------------------------------------------
> 
> (Updated Jan. 3, 2016, 1:22 p.m.)
> 
> 
> Review request for KDE Frameworks.
> 
> 
> Repository: kcoreaddons
> 
> 
> Description
> -------
> 
> Without this patch kcoreaddons_desktop_to_json() will not find the destop file.
> 
> On windows GenericDataLocation returns "C:/Users/<USER>/AppData/Local" or "C:/ProgramData". That is not a path that contains any destip files ;)
> 
> This patch adds AppLocalDataLocation to the seach if the previous search does not return a match. 
> 
> Another option would be to hardcode the absolute path to all places that uses kcoreaddons_desktop_to_json(), but that does not feel too nice...
> 
> What other options do we have?
> 
> 
> Diffs
> -----
> 
>   src/lib/plugin/desktopfileparser.cpp 1122af8 
> 
> Diff: https://git.reviewboard.kde.org/r/126618/diff/
> 
> 
> Testing
> -------
> 
> KTextEditor compiles again on windows
> 
> 
> Thanks,
> 
> Kåre Särs
> 
>

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.kde.org/pipermail/kde-frameworks-devel/attachments/20160104/6aef0fc3/attachment-0001.html>


More information about the Kde-frameworks-devel mailing list