--nextPart1800688.R68y1LBB90 Content-Transfer-Encoding: 7Bit Content-Type: text/plain; charset="us-ascii"; protected-headers="v1" From: Milian Wolff To: kde-core-devel , Harald Sitter Subject: Re: CMake kauth_install_* with system kauth and user CMAKE_INSTALL_PREFIX Date: Mon, 19 Oct 2020 17:22:22 +0200 Message-ID: <5345187.IQHQE8oQ36@milian-workstation> In-Reply-To: <1b846eda-7aa9-b97a-21a8-d02288467f7e@kde.org> References: <2518621.CqusMC5jUn@milian-workstation> <2905653.h6njev66iP@milian-workstation> <1b846eda-7aa9-b97a-21a8-d02288467f7e@kde.org> 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@milianw.de http://milianw.de --nextPart1800688.R68y1LBB90 Content-Type: application/pgp-signature; name="signature.asc" Content-Description: This is a digitally signed message part. Content-Transfer-Encoding: 7Bit -----BEGIN PGP SIGNATURE----- iQIzBAABCAAdFiEEezawi1aUvUGg3A1+8zYW/HGdOX8FAl+Nry4ACgkQ8zYW/HGd OX8SIRAAvZXmvWbpUoVpw0tjrdiMjWMomeP34lq3FtsuVJItueCHHKpbLnwy7T28 nFzP5XGCRWkmDxrXpNOQjyy5eQAa/Qn+FVvfvf9dicSvzH1V6wIu9um2HMpikieb /ZmGiWU915oWiCPZnUC3duzMUnCKKpI9m5SylxGuqFWccfkFIyDfUjtITfKENdfs St15FXT6N5LiUCqLhyP/6zOfln6WordeNVNMuIe363Si7peurV65vRE9tDMJOjnh n3AGVW4IXA2JvaAtipuH9KIvXZg4LdY99eEDOgkYhdYoXfn05f+lpLRbjkAAlMQF PmxPgFcTjT9UovlIO3JDIjDs3pwfEDf7Iv3fMOVOwZl/i4w8a/yuJUpIjQ6pPSdB FwYbZNU6Cagsjxe295nEDfw7VmCTO9FupBsCoSmdjnRRvvPZE78ie4Ud6tS/pxPa 7jJBTycrzmrLTzeD2ylno+aSrYu9TWI1mzidyc/nu/yNyxXyxGLcceYzZmG2Fv7Z +DBSqJYP4aVzbDtZPwMHVbno55mnSRy2HPlEaF3otY5BEeZMnhx9g9xhWgaf7F4Q dGT25ofwUgCk1ilitg4lD+g0ChoB7b8Ikghx73lREZqmutKhd0t9TXfTbZEL2M3N Kc0vOJApOJDoW0X/uCJ/ibDpZi2zB743KVLhhQaFDZTQqpM8Bi8= =Z/7c -----END PGP SIGNATURE----- --nextPart1800688.R68y1LBB90--