CMake kauth_install_* with system kauth and user CMAKE_INSTALL_PREFIX

Milian Wolff mail at milianw.de
Mon Oct 19 16:06:57 BST 2020


On Montag, 19. Oktober 2020 16:56:27 CEST Harald Sitter wrote:
> On 19.10.20 12:30, Milian Wolff wrote:
> > On Montag, 19. Oktober 2020 11:27:29 CEST Harald Sitter wrote:
> >> Yo
> >> 
> >> On 18.10.20 10:11, Milian Wolff wrote:
> >>> Hey all,
> >>> 
> >>> since some time now I'm only compiling parts of KF5 selectively into a
> >>> custom prefix. Most notably, I'm only interested in ktexteditor and
> >>> syntax- highlighting, and would like to obtain all other frameworks
> >>> through my distribution packages.
> >>> 
> >>> Sadly, this doesn't work as easily, as ktexteditor is trying to do this:
> >>> 
> >>> ```
> >>> install(TARGETS kauth_ktexteditor_helper DESTINATION $
> >>> {KAUTH_HELPER_INSTALL_DIR} )
> >>> kauth_install_helper_files(kauth_ktexteditor_helper
> >>> org.kde.ktexteditor.katetextbuffer root)
> >>> kauth_install_actions(org.kde.ktexteditor.katetextbuffer buffer/
> >>> org.kde.ktexteditor.katetextbuffer.actions)
> >>> ```
> >>> 
> >>> Because my KAuth is a system-provided installation, and KTextEditor
> >>> should
> >>> be installed into a user-writable prefix, I get this error on `ninja
> >>> install`:
> >>> 
> >>> ```
> >>> 
> >>> CMake Error at src/cmake_install.cmake:143 (file):
> >>>   file INSTALL cannot copy file
> >>>   "/home/milian/projects/kf5/build/frameworks/ktexteditor/src/
> >>> 
> >>> org.kde.ktexteditor.katetextbuffer.policy"
> >>> 
> >>>   to
> >>>   "/usr/share/polkit-1/actions/org.kde.ktexteditor.katetextbuffer.policy
> >>>   "
> >>>   
> >>>   Permission denied.
> >>> 
> >>> Call Stack (most recent call first):
> >>>   cmake_install.cmake:77 (include)
> >>> 
> >>> ```
> >>> 
> >>> I can workaround this by either commenting out the kauth install bits in
> >>> ktexteditor or by installing kauth seperately too. But both are in my
> >>> opinion not ideal.
> >>> 
> >>> I don't think it's currently possible to overwrite the KAuth install
> >>> directory at cmake configure time. I would like to change that, unless
> >>> there is something I'm missing which would prevent this? I am hoping
> >>> that
> >>> any folder works as long as it's listed in the `XDG_DATA_DIRS` env var -
> >>> can someone confirm this?
> >> 
> >> Alas, the path is hardcoded at buildtime from what I see:
> >> https://gitlab.freedesktop.org/polkit/polkit/-/blob/master/src/polkitback
> >> end /polkitbackendinteractiveauthority.c#L302
> >> 
> >> Relevant: https://bugs.kde.org/show_bug.cgi?id=425272
> > 
> > So the path that needs to be used is actually the polkit path?
> 
> That's my understanding of the code, yes.
>
> > Meaning the
> > question where KAuth is being installed to doesn't really matter? That
> > would imply that KAuth is broken anyways when it's not installed to the
> > same prefix that polkit is being installed to, no?
> 
> Nope. If the policy was installed to a different path it would be
> broken, but the very error you posted is because kauth is insisting on
> putting the policy in the correct path rather than the prefix the rest
> of the build is installing to.

No, it's using the install location of kauth, it doesn't query polkit itself. 
I.e. if I hand-compile KAuth and install into a custom prefix, then I will 
have:

```
$ grep INSTALL /home/milian/projects/compiled/kf5-dbg/lib/cmake/KF5Auth/
KF5AuthConfig.cmake
set(KAUTH_POLICY_FILES_INSTALL_DIR "/home/milian/projects/compiled/kf5/share/
polkit-1/actions")
set(KAUTH_HELPER_INSTALL_DIR "lib/libexec/kauth")
set(KAUTH_HELPER_INSTALL_ABSOLUTE_DIR "/home/milian/projects/compiled/kf5/lib/
libexec/kauth")
```

Now I can happily compile e.g. ktexteditor against this, but it would be just 
as broken as the polkit files it installed will never be found anyways.

So, I guess there are two things to solve here:

a) make it easy to opt-out / disable kauth polkit file installation via a 
cache var in the `kauth_install_*` cmake macros, such that I can just disable 
that when building ktexteditor.

b) find a way to query polkit for the right path to use and use that by 
default instead of the kauth install prefix.

Or?
-- 
Milian Wolff
mail at milianw.de
http://milianw.de
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 833 bytes
Desc: This is a digitally signed message part.
URL: <http://mail.kde.org/pipermail/kde-core-devel/attachments/20201019/3a5dfc36/attachment.sig>


More information about the kde-core-devel mailing list