diff --git a/meson.build b/meson.build index b04c92776c..9b46a7edd8 100644 --- a/meson.build +++ b/meson.build @@ -617,6 +617,21 @@ if smack_run_label != '' m4_defines += ['-DHAVE_SMACK_RUN_LABEL'] endif +want_polkit = get_option('polkit') +install_polkit = false +install_polkit_pkla = false +if want_polkit != 'no' + conf.set('ENABLE_POLKIT', 1) + install_polkit = true + + libpolkit = dependency('polkit-gobject-1', + required : false) + if libpolkit.found() and libpolkit.version().version_compare('< 0.106') + message('Old polkit detected, will install pkla files') + install_polkit_pkla = true + endif +endif + want_audit = get_option('audit') if want_audit != 'no' libaudit = dependency('audit', required : want_audit == 'yes') diff --git a/meson_options.txt b/meson_options.txt index 610e365fcd..b1b80bfa69 100644 --- a/meson_options.txt +++ b/meson_options.txt @@ -159,6 +159,8 @@ option('smack', type : 'combo', choices : ['auto', 'yes', 'no'], description : 'SMACK support') option('smack-run-label', type : 'string', description : 'run systemd --system itself with a specific SMACK label') +option('polkit', type : 'combo', choices : ['auto', 'yes', 'no'], + description : 'PolicyKit support') option('audit', type : 'combo', choices : ['auto', 'yes', 'no'], description : 'libaudit support') diff --git a/src/core/meson.build b/src/core/meson.build index bf4e2dbed9..97410a8cc4 100644 --- a/src/core/meson.build +++ b/src/core/meson.build @@ -203,7 +203,7 @@ custom_target( input : policy_in, output : 'org.freedesktop.systemd1.policy', command : intltool_command, - install : true, + install : install_polkit, install_dir : polkitpolicydir) # TODO: this might work with meson from git, see @@ -214,7 +214,7 @@ custom_target( # po_dir : po_dir, # input : policy_in, # output : 'org.freedesktop.systemd1.policy', -# install : true, +# install : install_polkit, # install_dir : polkitpolicydir) install_data('system.conf', diff --git a/src/hostname/meson.build b/src/hostname/meson.build index 43a035c0bf..6985a41910 100644 --- a/src/hostname/meson.build +++ b/src/hostname/meson.build @@ -11,6 +11,6 @@ if conf.get('ENABLE_HOSTNAMED', 0) == 1 input : 'org.freedesktop.hostname1.policy.in', output : 'org.freedesktop.hostname1.policy', command : intltool_command, - install : true, + install : install_polkit, install_dir : polkitpolicydir) endif diff --git a/src/import/meson.build b/src/import/meson.build index 173d6d6f3f..66f43dd714 100644 --- a/src/import/meson.build +++ b/src/import/meson.build @@ -61,7 +61,7 @@ if conf.get('ENABLE_IMPORTD', 0) == 1 input : 'org.freedesktop.import1.policy.in', output : 'org.freedesktop.import1.policy', command : intltool_command, - install : true, + install : install_polkit, install_dir : polkitpolicydir) install_data('import-pubring.gpg', diff --git a/src/locale/meson.build b/src/locale/meson.build index 2f903cffd0..775ad2ce77 100644 --- a/src/locale/meson.build +++ b/src/locale/meson.build @@ -19,7 +19,7 @@ if conf.get('ENABLE_LOCALED', 0) == 1 input : 'org.freedesktop.locale1.policy.in', output : 'org.freedesktop.locale1.policy', command : intltool_command, - install : true, + install : install_polkit, install_dir : polkitpolicydir) endif diff --git a/src/login/meson.build b/src/login/meson.build index 75b8498862..d3e2b73e8b 100644 --- a/src/login/meson.build +++ b/src/login/meson.build @@ -78,7 +78,7 @@ if conf.get('ENABLE_LOGIND', 0) == 1 input : 'org.freedesktop.login1.policy.in', output : 'org.freedesktop.login1.policy', command : intltool_command, - install : true, + install : install_polkit, install_dir : polkitpolicydir) install_data('70-power-switch.rules', diff --git a/src/machine/meson.build b/src/machine/meson.build index bf4f88f1aa..de98246282 100644 --- a/src/machine/meson.build +++ b/src/machine/meson.build @@ -34,7 +34,7 @@ if conf.get('ENABLE_MACHINED', 0) == 1 input : 'org.freedesktop.machine1.policy.in', output : 'org.freedesktop.machine1.policy', command : intltool_command, - install : true, + install : install_polkit, install_dir : polkitpolicydir) endif diff --git a/src/network/meson.build b/src/network/meson.build index 66d6a52dcf..4cde777292 100644 --- a/src/network/meson.build +++ b/src/network/meson.build @@ -108,8 +108,14 @@ if conf.get('ENABLE_NETWORKD', 0) == 1 install_dir : dbuspolicydir) install_data('org.freedesktop.network1.service', install_dir : dbussystemservicedir) - install_data('systemd-networkd.rules', - install_dir : polkitrulesdir) + if install_polkit + install_data('systemd-networkd.rules', + install_dir : polkitrulesdir) + endif + if install_polkit_pkla + install_data('systemd-networkd.pkla', + install_dir : polkitpkladir) + endif tests += [ [['src/network/test-networkd-conf.c'], diff --git a/src/timedate/meson.build b/src/timedate/meson.build index f9c19f1d67..52518a87e4 100644 --- a/src/timedate/meson.build +++ b/src/timedate/meson.build @@ -11,6 +11,6 @@ if conf.get('ENABLE_TIMEDATED', 0) == 1 input : 'org.freedesktop.timedate1.policy.in', output : 'org.freedesktop.timedate1.policy', command : intltool_command, - install : true, + install : install_polkit, install_dir : polkitpolicydir) endif