mirror of
https://github.com/varun-r-mallya/sysprof.git
synced 2025-12-31 20:36:25 +00:00
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:
@ -32,9 +32,11 @@
|
||||
|
||||
#include <sysprof.h>
|
||||
|
||||
#define POLKIT_AGENT_I_KNOW_API_IS_SUBJECT_TO_CHANGE
|
||||
#include <polkit/polkit.h>
|
||||
#include <polkitagent/polkitagent.h>
|
||||
#if HAVE_POLKIT_AGENT
|
||||
# define POLKIT_AGENT_I_KNOW_API_IS_SUBJECT_TO_CHANGE
|
||||
# include <polkit/polkit.h>
|
||||
# include <polkitagent/polkitagent.h>
|
||||
#endif
|
||||
|
||||
#include "sysprof-capture-util-private.h"
|
||||
|
||||
@ -266,8 +268,10 @@ int
|
||||
main (int argc,
|
||||
char *argv[])
|
||||
{
|
||||
#if HAVE_POLKIT_AGENT
|
||||
PolkitAgentListener *polkit = NULL;
|
||||
PolkitSubject *subject = NULL;
|
||||
#endif
|
||||
g_autoptr(SysprofCaptureWriter) writer = NULL;
|
||||
g_autoptr(SysprofProfiler) profiler = NULL;
|
||||
g_autofree char *power_profile = NULL;
|
||||
@ -413,6 +417,7 @@ Examples:\n\
|
||||
|
||||
main_loop = g_main_loop_new (NULL, FALSE);
|
||||
|
||||
#if HAVE_POLKIT_AGENT
|
||||
/* Start polkit agent so that we can elevate privileges from a TTY */
|
||||
if (g_getenv ("DESKTOP_SESSION") == NULL &&
|
||||
(subject = polkit_unix_process_new_for_owner (getpid (), 0, -1)))
|
||||
@ -434,6 +439,7 @@ Examples:\n\
|
||||
pkerror->message);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
/* Warn about access if we're in a container */
|
||||
if (g_file_test ("/.flatpak-info", G_FILE_TEST_EXISTS))
|
||||
|
||||
Reference in New Issue
Block a user