Bug 426219 - Add a way to disable installing udev rule
Summary: Add a way to disable installing udev rule
Status: RESOLVED INTENTIONAL
Alias: None
Product: kdesrc-build
Classification: Developer tools
Component: general (show other bugs)
Version: Git
Platform: Compiled Sources Linux
: NOR normal
Target Milestone: ---
Assignee: Michael Pyne
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2020-09-05 17:24 UTC by Juraj
Modified: 2020-09-27 19:53 UTC (History)
0 users

See Also:
Latest Commit:
Version Fixed In:
Sentry Crash Report:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Juraj 2020-09-05 17:24:47 UTC
SUMMARY
When using kdesrc-build to compile bluez-qt it fails at installation point.
At that moment it is trying to install a file into "/lib/udev/rules.d"
which is not writable for me (and hope for most of users)

STEPS TO REPRODUCE
1. kdesrc-build bluez-qt # run as normal user

OBSERVED RESULT

CMake Error at cmake_install.cmake:84 (file):
  file INSTALL cannot copy file
  "/home/juraj/kde/src/bluez-qt/61-kde-bluetooth-rfkill.rules" to
  "/lib/udev/rules.d/61-kde-bluetooth-rfkill.rules": Permission denied.


EXPECTED RESULT
No error

SOFTWARE/OS VERSIONS
Linux/KDE Plasma: from git at the moment of writing this

ADDITIONAL INFORMATION
Or did I miss some KDE / CMake feature?
Comment 1 David Rosca 2020-09-05 17:29:59 UTC
cmake -DINSTALL_UDEV_RULE=Off

Should probably be added to the kdesrc-build.
Comment 2 Michael Pyne 2020-09-27 17:09:40 UTC
As of commit cbf96256, the suggested CMake option is already passed to bluez-qt. Someone else has reported this as a bug on IRC. Could I ask how kdesrc-build was installed (cloned from git or distribution packages) and how the kdesrc-build configuration was generated (kdesrc-build-setup, modification of the sample configuration, kdesrc-build --initial-setup, something else)?
Comment 3 Juraj 2020-09-27 17:13:56 UTC
I installed it from Archlinux AUR:
https://aur.archlinux.org/packages/kdesrc-build-git/

I used kdesrc-build-setup and went through the graphical guide to set it up.
I only had problem that it was unable to find module dir which was solved by setting PERLLIB env var to the installation directory.
Comment 4 Juraj 2020-09-27 17:29:50 UTC
The problem was caused bu not selectiong "frameworks" in kdesrc-build-setup TUI.
This caused it to not include the configuration file into ~.kdesrc-buildrc file.
This paired with option "include-dependencies" which pulled the frameworks which I did not wish to build (that is why I did not check them in TUI) but were still built and such created this error.

There could be a little warning ar a whole page with yes/no to include dependencies with explanation.
Comment 5 Michael Pyne 2020-09-27 19:52:59 UTC
Git commit 2317c3a32e5aee1e926bd912275fd2149757f69a by Michael Pyne.
Committed on 27/09/2020 at 19:15.
Pushed by mpyne into branch 'master'.

setup: Make include-dependencies optional, show module groups not chosen.

My hope is to make it easier for new users to understand how to add
module groups if they are desired later, since there has previously been
no generated note or warning in the generated kdesrc-buildrc if the user
chose no major groups.

In this case we had a user who, even though they didn't select any
module groups, still had kdesrc-build trying to build bluez-qt due to
include-dependencies being set to 'true' (the default). However bluez-qt
needs a CMake option to be passed to build with kdesrc-build; this
option isn't set unless the kf5-frameworks-build-include file is read
in.

That fix will happen in a separate commit, this should hopefully make it
easier to read through the generated kdesrc-buildrc in any case.

M  +74   -39   kdesrc-build-setup

https://invent.kde.org/sdk/kdesrc-build/commit/2317c3a32e5aee1e926bd912275fd2149757f69a
Comment 6 Michael Pyne 2020-09-27 19:53:07 UTC
Git commit ed1545b71654c7e9dc3f3ca65e0c29ef1f6d92c5 by Michael Pyne.
Committed on 27/09/2020 at 19:52.
Pushed by mpyne into branch 'master'.

setup: Break out common 'options' blocks for kdesrc-build-setup to always use.

This change should address the immediate breakage that a user had when
using kdesrc-build-setup, choosing no major module groups, and then
using kdesrc-build to eventually build bluez-qt.

In that case, bluez-qt had an 'options' block in
kf5-frameworks-build-include to address the error he'd experienced,
however since kdesrc-build-setup didn't generate a include to that file,
the options weren't picked up either. kdesrc-build later found the
module via include-dependencies and built it anyways.

To fix this, break out "always-set" options into a dedicated file
(kf5-common-options-build-include) and include that from
kdesrc-build-setup-generated files always.

I moved these from kf5-frameworks-build-include so I added an include
from that file back to kf5-common-options-build-include for backwards
compatibility for existing users. This relies on duplicate options
blocks continuing to work (similar to C++'s One Definition Rule) so I've
documented that in the code for now.

M  +1    -0    CMakeLists.txt
M  +10   -5    kdesrc-build-setup
A  +19   -0    kf5-common-options-build-include
M  +4    -15   kf5-frameworks-build-include
M  +2    -0    kf5-qt5-build-include
M  +2    -0    kf5-workspace-build-include
M  +5    -0    modules/ksb/Application.pm
M  +6    -1    modules/ksb/FirstRun.pm

https://invent.kde.org/sdk/kdesrc-build/commit/ed1545b71654c7e9dc3f3ca65e0c29ef1f6d92c5