mirror of
https://github.com/varun-r-mallya/sysprof.git
synced 2026-02-10 15:10:53 +00:00
Merge branch 'nzimmermann/issue-123-make-polkit-agent-optional' into 'master'
Turn polkit-agent support into an optional feature. See merge request GNOME/sysprof!100
This commit is contained in:
@ -100,7 +100,7 @@ config_h.set_quoted('GETTEXT_PACKAGE', 'sysprof')
|
|||||||
config_h.set_quoted('PACKAGE_LOCALE_DIR', join_paths(get_option('prefix'), get_option('datadir'), 'locale'))
|
config_h.set_quoted('PACKAGE_LOCALE_DIR', join_paths(get_option('prefix'), get_option('datadir'), 'locale'))
|
||||||
config_h.set10('HAVE_LIBSYSTEMD', libsystemd_dep.found())
|
config_h.set10('HAVE_LIBSYSTEMD', libsystemd_dep.found())
|
||||||
|
|
||||||
polkit_agent_dep = dependency('polkit-agent-1', required: false)
|
polkit_agent_dep = dependency('polkit-agent-1', required: get_option('polkit-agent'))
|
||||||
config_h.set10('HAVE_POLKIT_AGENT', polkit_agent_dep.found())
|
config_h.set10('HAVE_POLKIT_AGENT', polkit_agent_dep.found())
|
||||||
|
|
||||||
polkit_dep = dependency('polkit-gobject-1', version: polkit_req_version, required: false)
|
polkit_dep = dependency('polkit-gobject-1', version: polkit_req_version, required: false)
|
||||||
|
|||||||
@ -11,6 +11,12 @@ option('gtk', type: 'boolean')
|
|||||||
# Allow disabling the installation of libsysprof-capture*.a
|
# Allow disabling the installation of libsysprof-capture*.a
|
||||||
option('install-static', type: 'boolean')
|
option('install-static', type: 'boolean')
|
||||||
|
|
||||||
|
# Allow disabling of features that depend on polkit-agent.
|
||||||
|
option('polkit-agent', type: 'feature',
|
||||||
|
value: 'auto',
|
||||||
|
description: 'Enable features which require polkit-agent-1'
|
||||||
|
)
|
||||||
|
|
||||||
# Optionally compile sysprofd, which is needed to get elevated privileges.
|
# Optionally compile sysprofd, which is needed to get elevated privileges.
|
||||||
# You only really want to ignore this if you are running from a container
|
# You only really want to ignore this if you are running from a container
|
||||||
# and are talking to a host daemon. Also, if you're compiling for something
|
# and are talking to a host daemon. Also, if you're compiling for something
|
||||||
|
|||||||
@ -178,7 +178,6 @@ _sysprof_instruments_acquire_policy (GPtrArray *instruments,
|
|||||||
SysprofRecording *recording)
|
SysprofRecording *recording)
|
||||||
{
|
{
|
||||||
g_autoptr(GDBusConnection) connection = NULL;
|
g_autoptr(GDBusConnection) connection = NULL;
|
||||||
g_autoptr(PolkitDetails) details = NULL;
|
|
||||||
g_autoptr(GError) error = NULL;
|
g_autoptr(GError) error = NULL;
|
||||||
g_auto(GStrv) required_policy = NULL;
|
g_auto(GStrv) required_policy = NULL;
|
||||||
|
|
||||||
@ -202,7 +201,7 @@ _sysprof_instruments_acquire_policy (GPtrArray *instruments,
|
|||||||
{
|
{
|
||||||
if (!dex_await_boolean (_sysprof_polkit_authorize (connection,
|
if (!dex_await_boolean (_sysprof_polkit_authorize (connection,
|
||||||
required_policy[i],
|
required_policy[i],
|
||||||
details,
|
NULL,
|
||||||
TRUE), &error))
|
TRUE), &error))
|
||||||
return dex_future_new_for_error (g_steal_pointer (&error));
|
return dex_future_new_for_error (g_steal_pointer (&error));
|
||||||
}
|
}
|
||||||
|
|||||||
@ -6,11 +6,13 @@ sysprof_cli_c_args = [
|
|||||||
]
|
]
|
||||||
|
|
||||||
sysprof_cli_deps = [
|
sysprof_cli_deps = [
|
||||||
dependency('polkit-agent-1'),
|
|
||||||
|
|
||||||
libsysprof_static_dep,
|
libsysprof_static_dep,
|
||||||
]
|
]
|
||||||
|
|
||||||
|
if polkit_agent_dep.found()
|
||||||
|
sysprof_cli_deps += polkit_agent_dep
|
||||||
|
endif
|
||||||
|
|
||||||
sysprof_cli = executable('sysprof-cli', sysprof_cli_sources,
|
sysprof_cli = executable('sysprof-cli', sysprof_cli_sources,
|
||||||
dependencies: sysprof_cli_deps,
|
dependencies: sysprof_cli_deps,
|
||||||
c_args: release_flags + sysprof_cli_c_args,
|
c_args: release_flags + sysprof_cli_c_args,
|
||||||
|
|||||||
@ -32,9 +32,11 @@
|
|||||||
|
|
||||||
#include <sysprof.h>
|
#include <sysprof.h>
|
||||||
|
|
||||||
#define POLKIT_AGENT_I_KNOW_API_IS_SUBJECT_TO_CHANGE
|
#if HAVE_POLKIT_AGENT
|
||||||
#include <polkit/polkit.h>
|
# define POLKIT_AGENT_I_KNOW_API_IS_SUBJECT_TO_CHANGE
|
||||||
#include <polkitagent/polkitagent.h>
|
# include <polkit/polkit.h>
|
||||||
|
# include <polkitagent/polkitagent.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
#include "sysprof-capture-util-private.h"
|
#include "sysprof-capture-util-private.h"
|
||||||
|
|
||||||
@ -266,8 +268,10 @@ int
|
|||||||
main (int argc,
|
main (int argc,
|
||||||
char *argv[])
|
char *argv[])
|
||||||
{
|
{
|
||||||
|
#if HAVE_POLKIT_AGENT
|
||||||
PolkitAgentListener *polkit = NULL;
|
PolkitAgentListener *polkit = NULL;
|
||||||
PolkitSubject *subject = NULL;
|
PolkitSubject *subject = NULL;
|
||||||
|
#endif
|
||||||
g_autoptr(SysprofCaptureWriter) writer = NULL;
|
g_autoptr(SysprofCaptureWriter) writer = NULL;
|
||||||
g_autoptr(SysprofProfiler) profiler = NULL;
|
g_autoptr(SysprofProfiler) profiler = NULL;
|
||||||
g_autofree char *power_profile = NULL;
|
g_autofree char *power_profile = NULL;
|
||||||
@ -413,6 +417,7 @@ Examples:\n\
|
|||||||
|
|
||||||
main_loop = g_main_loop_new (NULL, FALSE);
|
main_loop = g_main_loop_new (NULL, FALSE);
|
||||||
|
|
||||||
|
#if HAVE_POLKIT_AGENT
|
||||||
/* Start polkit agent so that we can elevate privileges from a TTY */
|
/* Start polkit agent so that we can elevate privileges from a TTY */
|
||||||
if (g_getenv ("DESKTOP_SESSION") == NULL &&
|
if (g_getenv ("DESKTOP_SESSION") == NULL &&
|
||||||
(subject = polkit_unix_process_new_for_owner (getpid (), 0, -1)))
|
(subject = polkit_unix_process_new_for_owner (getpid (), 0, -1)))
|
||||||
@ -434,6 +439,7 @@ Examples:\n\
|
|||||||
pkerror->message);
|
pkerror->message);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
/* Warn about access if we're in a container */
|
/* Warn about access if we're in a container */
|
||||||
if (g_file_test ("/.flatpak-info", G_FILE_TEST_EXISTS))
|
if (g_file_test ("/.flatpak-info", G_FILE_TEST_EXISTS))
|
||||||
|
|||||||
Reference in New Issue
Block a user