From 783a71be49b32b2c0d92509579f425cdbf5208ac Mon Sep 17 00:00:00 2001 From: Mart Raudsepp Date: Sun, 12 Jul 2020 12:27:59 +0300 Subject: [PATCH 2/5] build: Make kerberos optional --- meson.build | 5 +++++ meson_options.txt | 1 + panels/user-accounts/cc-realm-manager.c | 9 +++++++++ panels/user-accounts/meson.build | 4 ---- 4 files changed, 15 insertions(+), 4 deletions(-) diff --git a/meson.build b/meson.build index 4470376db..acf68a1da 100644 --- a/meson.build +++ b/meson.build @@ -262,6 +262,11 @@ config_h.set('HAVE_WACOM', enable_wacom, config_h.set('BUILD_THUNDERBOLT', host_is_linux_not_s390, description: 'Define to 1 to build the Thunderbolt panel') +# Kerberos support +krb_dep = dependency('krb5', required: get_option('kerberos')) +config_h.set('HAVE_KERBEROS', krb_dep.found(), + description: 'Define to 1 if kerberos support is available') + gnome = import('gnome') i18n = import('i18n') pkg = import('pkgconfig') diff --git a/meson_options.txt b/meson_options.txt index 2b3da02c0..5c558557d 100644 --- a/meson_options.txt +++ b/meson_options.txt @@ -2,6 +2,7 @@ option('bluetooth', type: 'boolean', value: true, description: 'build with Bluet option('cheese', type: 'boolean', value: true, description: 'build with cheese webcam support') option('documentation', type: 'boolean', value: false, description: 'build documentation') option('ibus', type: 'boolean', value: true, description: 'build with IBus support') +option('kerberos', type: 'feature', value: 'auto', description: 'build with kerberos support') option('network_manager', type: 'boolean', value: true, description: 'build with NetworkManager support') option('privileged_group', type: 'string', value: 'wheel', description: 'name of group that has elevated permissions') option('snap', type: 'boolean', value: false, description: 'build with Snap support') diff --git a/panels/user-accounts/cc-realm-manager.c b/panels/user-accounts/cc-realm-manager.c index bc43e6d0f..cd1cb025d 100644 --- a/panels/user-accounts/cc-realm-manager.c +++ b/panels/user-accounts/cc-realm-manager.c @@ -22,7 +22,9 @@ #include "cc-realm-manager.h" +#ifdef HAVE_KERBEROS #include +#endif #include #include @@ -596,6 +598,7 @@ login_closure_free (gpointer data) g_slice_free (LoginClosure, login); } +#ifdef HAVE_KERBEROS static krb5_error_code login_perform_kinit (krb5_context k5, const gchar *realm, @@ -657,6 +660,7 @@ login_perform_kinit (krb5_context k5, return code; } +#endif static void kinit_thread_func (GTask *t, @@ -665,6 +669,7 @@ kinit_thread_func (GTask *t, GCancellable *cancellable) { g_autoptr(GTask) task = t; +#ifdef HAVE_KERBEROS LoginClosure *login = task_data; krb5_context k5 = NULL; krb5_error_code code; @@ -740,6 +745,10 @@ kinit_thread_func (GTask *t, if (k5) krb5_free_context (k5); +#else + g_task_return_new_error (task, CC_REALM_ERROR, CC_REALM_ERROR_GENERIC, + _("gnome-control-center was built without kerberos support")); +#endif } void diff --git a/panels/user-accounts/meson.build b/panels/user-accounts/meson.build index b8ee9d98e..4375d3816 100644 --- a/panels/user-accounts/meson.build +++ b/panels/user-accounts/meson.build @@ -169,10 +169,6 @@ sources += gnome.mkenums_simple( 'cc-user-accounts-enum-types', sources: files(enum_headers)) -# Kerberos support -krb_dep = dependency('krb5', required: false) -assert(krb_dep.found(), 'kerberos libraries not found in your path') - deps = common_deps + [ accounts_dep, gdk_pixbuf_dep, -- 2.26.3