Turn polkit-agent support into an optional feature.

This simplifies deployment on embedded devices, where polkit is usually
unncessary at runtime, but pulls in quite a few otherwise unncessary
dependencies. Start to improve the situation by allowing to selectively
disable polkit-agent support at compile time, which aids in container
usage scenarios, where one wants to invoke 'sysprof-cli' from within
the container. Bypassing polkit-agent in the container is then desired,
since the host sysprofd will handle asking for permissions to enable
the tracing. It allows for a simpler setup of rootless podman
containers, avoiding UID mismatches, that lead to rejection of the
tracing enablement.

- Add a new 'polkit-agent' meson build feature, that allows to force disabling
  polkit-agent support (-Dpolkit-agent=disabled).

- Mark the 'polkit-agent' feature as enabled, by default, to reflect
  the current status (sysprof-cli did not build without polkit-agent support).

- libsysprof/sysprof-instrument.c: Build fix when polkit is not available,
  remove the unnecessary 'g_autopr(PolkitDetails) details' variable.

- Alter the sysprof-cli dependencies to only attempt to link against
  polkit-agent, if necessary. Modify sysprof-cli.c to wrap all code using
  polkit-agent in HAVE_POLKIT_AGENT blocks.
This commit is contained in:
Nikolas Zimmermann
2024-08-20 20:46:11 +02:00
parent 9276012c2b
commit b726f49d15
5 changed files with 21 additions and 8 deletions

View File

@ -6,11 +6,13 @@ sysprof_cli_c_args = [
]
sysprof_cli_deps = [
dependency('polkit-agent-1'),
libsysprof_static_dep,
]
if polkit_agent_dep.found()
sysprof_cli_deps += polkit_agent_dep
endif
sysprof_cli = executable('sysprof-cli', sysprof_cli_sources,
dependencies: sysprof_cli_deps,
c_args: release_flags + sysprof_cli_c_args,