CMake kauth_install_* with system kauth and user CMAKE_INSTALL_PREFIX

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


On Montag, 19. Oktober 2020 17:21:28 CEST Harald Sitter wrote:
> On 19.10.20 17:06, Milian Wolff wrote:
> > 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.poli
> >>>>>   cy
> >>>>>   "
> >>>>>   
> >>>>>   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/polkitba
> >>>> ck
> >>>> 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")
> > ```
> 
> Ohh! This is indeed plain silly. I had thought it would use the value
> from pkgconfig :S
> 
> > 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.
> 
> I'm not sure it's a good idea, but we could treat this like
> KDE_INSTALL_USE_QT_SYS_PATHS. By default we'll simply install to
> $CMAKE_PREFIX/share/polkit-1/actions/ unless explicitly configured with
> KDE_INSTALL_USE_POLKIT_PATHS in which case we'll use whatever polkit uses.
> What sets this apart from qt_syspath of course is that not using the
> polkit path basically never makes sense as it'd be broken. So maybe the
> default state should be ON and when one is sure that polkit isn't needed
> one could turn it OFF.

Installing something that's never going to be used - why? I would much rather 
prefer making it explicit by saying:

Either you install it to the correct path, or you don't install it at all.

> > b) find a way to query polkit for the right path to use and use that by
> > default instead of the kauth install prefix.
> 
> polkit-gobject-1's pkgconfig encodes the path. So that's easy.

I'll try to find out how to fix KAuth then.

Cheers

-- 
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/ad3ee891/attachment.sig>


More information about the kde-core-devel mailing list