[gnome-online-accounts] kerberos: Re-write the account addition UI without realmd



commit 51e429156554f3700f9a9cdf245965157b7bf3bf
Author: Debarshi Ray <debarshir gnome org>
Date:   Fri Nov 3 20:25:17 2017 +0100

    kerberos: Re-write the account addition UI without realmd
    
    So far, realmd was being merely used to auto-discover a list of realms,
    and validate whether the user entered a valid realm or not before
    prompting for credentials. This sounds nice in theory but, in
    practice, it is far too fragile. For example, realmd gets frequently
    tripped up by Fedora's Kerberos setup which uses _kerberos._tcp
    instead of the more common _kerberos._udp SRV record. Secondly, the
    realm validation isn't snappy and can take a while, so the user has to
    wait a bit before she is able to enter her credentials.
    
    The current UI is also odd because it presents separate fields for
    entering the realm and the username. Most people are used to entering
    username@realm or username@REALM because of their familiarity with
    email addresses and kinit.
    
    Therefore, the account addition UI has now been re-written without
    realmd. There is only one field for the user to enter her principal,
    and the realm is automatically capitalized if it isn't. It entirely
    relies on libkrb5.so to validate the principal during the initial
    sign-in once the credentials have been entered.
    
    https://bugzilla.gnome.org/show_bug.cgi?id=789187

 src/goabackend/Makefile.am                 |    1 -
 src/goabackend/goakerberosprovider.c       |  440 +++----------------
 src/goaidentity/Makefile.am                |   19 -
 src/goaidentity/org.freedesktop.realmd.xml |  666 ----------------------------
 4 files changed, 62 insertions(+), 1064 deletions(-)
---
diff --git a/src/goabackend/Makefile.am b/src/goabackend/Makefile.am
index c325731..c254594 100644
--- a/src/goabackend/Makefile.am
+++ b/src/goabackend/Makefile.am
@@ -102,7 +102,6 @@ libgoa_backend_1_0_la_SOURCES =                                             \
        goawebview.h                    goawebview.c                    \
        nautilus-floating-bar.h         nautilus-floating-bar.c         \
        $(top_builddir)/src/goaidentity/org.gnome.Identity.c            \
-       $(top_builddir)/src/goaidentity/org.freedesktop.realmd.c        \
        $(top_srcdir)/src/goaidentity/goaidentitymanagererror.c         \
        $(NULL)
 
diff --git a/src/goabackend/goakerberosprovider.c b/src/goabackend/goakerberosprovider.c
index 7671421..97c80be 100644
--- a/src/goabackend/goakerberosprovider.c
+++ b/src/goabackend/goakerberosprovider.c
@@ -30,8 +30,6 @@
 
 #include "org.gnome.Identity.h"
 
-#include "org.freedesktop.realmd.h"
-
 struct _GoaKerberosProvider
 {
   GoaProvider parent_instance;
@@ -130,21 +128,11 @@ typedef struct
   GtkWidget *connect_button;
   GtkWidget *progress_grid;
 
-  GtkWidget *username;
-  GtkWidget *realm_entry;
-  GtkWidget *realm_combo_box;
-  GtkListStore *realm_store;
-
-  guint      interface_added_id;
-
-  gboolean realm_chosen;
+  GtkWidget *principal;
 
   gchar *account_object_path;
 
   GError *error;
-  GCancellable *cancellable;
-  GoaRealmProvider *realm_provider;
-  GDBusObjectManager *realm_manager;
 } SignInRequest;
 
 static void
@@ -156,67 +144,6 @@ translate_error (GError **error)
   g_dbus_error_strip_remote_error (*error);
 }
 
-static gboolean
-query_tooltip (GtkWidget  *widget,
-               gint        x,
-               gint        y,
-               gboolean    keyboard_mode,
-               GtkTooltip *tooltip,
-               gpointer    user_data)
-{
-  gchar *tip;
-
-  if (GTK_ENTRY_ICON_SECONDARY == gtk_entry_get_icon_at_pos (GTK_ENTRY (widget), x, y))
-    {
-      tip = gtk_entry_get_icon_tooltip_text (GTK_ENTRY (widget),
-                                             GTK_ENTRY_ICON_SECONDARY);
-      gtk_tooltip_set_text (tooltip, tip);
-      g_free (tip);
-      return TRUE;
-    }
-
-  return FALSE;
-}
-
-static void
-icon_released (GtkEntry             *entry,
-               GtkEntryIconPosition  pos,
-               GdkEvent             *event,
-               gpointer              user_data)
-{
-  GtkSettings *settings;
-  gint timeout;
-
-  settings = gtk_widget_get_settings (GTK_WIDGET (entry));
-
-  g_object_get (settings, "gtk-tooltip-timeout", &timeout, NULL);
-  g_object_set (settings, "gtk-tooltip-timeout", 1, NULL);
-  gtk_tooltip_trigger_tooltip_query (gtk_widget_get_display (GTK_WIDGET (entry)));
-  g_object_set (settings, "gtk-tooltip-timeout", timeout, NULL);
-}
-
-static void
-set_entry_validation_error (GtkEntry    *entry,
-                            GError      *error)
-{
-  translate_error (&error);
-  gtk_entry_set_icon_from_icon_name (entry, GTK_ENTRY_ICON_SECONDARY,
-                                     "dialog-error-symbolic");
-  gtk_entry_set_icon_activatable (entry, GTK_ENTRY_ICON_SECONDARY, TRUE);
-  g_signal_connect (entry, "icon-release", G_CALLBACK (icon_released), FALSE);
-  g_signal_connect (entry, "query-tooltip", G_CALLBACK (query_tooltip), NULL);
-  g_object_set (entry, "has-tooltip", TRUE, NULL);
-  gtk_entry_set_icon_tooltip_text (entry, GTK_ENTRY_ICON_SECONDARY,
-                                   error->message);
-}
-
-static void
-clear_entry_validation_error (GtkEntry *entry)
-{
-  g_object_set (entry, "has-tooltip", FALSE, NULL);
-  gtk_entry_set_icon_from_pixbuf (entry, GTK_ENTRY_ICON_SECONDARY, NULL);
-}
-
 static void
 sign_in_identity (GoaKerberosProvider  *self,
                   const char           *identifier,
@@ -537,151 +464,62 @@ add_entry (GtkWidget     *grid,
     *out_entry = entry;
 }
 
-static void
-add_combo_box (GtkWidget     *grid,
-               gint           row,
-               const gchar   *text,
-               const gchar   *placeholder,
-               GtkListStore  *model,
-               GtkWidget    **out_combo_box,
-               GtkWidget    **out_entry)
-{
-  GtkStyleContext *context;
-  GtkWidget *label;
-  GtkWidget *combo_box;
-  GtkWidget *entry;
-
-  label = gtk_label_new_with_mnemonic (text);
-  context = gtk_widget_get_style_context (label);
-  gtk_style_context_add_class (context, GTK_STYLE_CLASS_DIM_LABEL);
-  gtk_widget_set_halign (label, GTK_ALIGN_END);
-  gtk_widget_set_hexpand (label, TRUE);
-  gtk_grid_attach (GTK_GRID (grid), label, 0, row, 1, 1);
-
-  combo_box = gtk_combo_box_new_with_model_and_entry (GTK_TREE_MODEL (model));
-  gtk_widget_set_hexpand (combo_box, TRUE);
-  gtk_widget_show (combo_box);
-
-  entry = gtk_bin_get_child (GTK_BIN (combo_box));
-  gtk_entry_set_placeholder_text (GTK_ENTRY (entry), placeholder);
-
-  gtk_grid_attach (GTK_GRID (grid), combo_box, 1, row, 3, 1);
-
-  gtk_label_set_mnemonic_widget (GTK_LABEL (label), entry);
-  if (out_combo_box != NULL)
-    *out_combo_box = combo_box;
-
-  if (out_entry != NULL)
-    *out_entry = entry;
-}
-
-static void
-on_realm_added (GDBusObjectManager       *manager,
-                GoaRealmObject           *object,
-                SignInRequest            *request)
+static gchar *
+normalize_principal (const gchar *principal, gchar **out_realm)
 {
-  GoaRealmKerberos *kerberos;
-  GoaRealmCommon *common;
-  GtkTreeIter iter;
-  const gchar *configured;
-
-  kerberos = goa_realm_object_peek_kerberos (object);
-  if (!kerberos)
-    return;
+  gchar *domain = NULL;
+  gchar *realm = NULL;
+  gchar *ret = NULL;
+  gchar *username = NULL;
 
+  if (!goa_utils_parse_email_address (principal, &username, &domain))
+    goto out;
 
-  gtk_list_store_append (request->realm_store, &iter);
-  gtk_list_store_set (request->realm_store,
-                      &iter,
-                      0, goa_realm_kerberos_get_domain_name (kerberos),
-                     -1);
+  realm = g_utf8_strup (domain, -1);
+  ret = g_strconcat (username, "@", realm, NULL);
 
-  if (!request->realm_chosen)
+  if (out_realm != NULL)
     {
-      common = goa_realm_object_peek_common (object);
-      g_return_if_fail (common != NULL);
-
-      configured = goa_realm_common_get_configured (common);
-      if (configured && !g_str_equal (configured, ""))
-        gtk_combo_box_set_active_iter (GTK_COMBO_BOX (request->realm_combo_box), &iter);
+      *out_realm = realm;
+      realm = NULL;
     }
+
+ out:
+  g_free (domain);
+  g_free (realm);
+  g_free (username);
+  return ret;
 }
 
 static void
-on_populate_provider_new (GObject *source,
-                          GAsyncResult *result,
-                          gpointer user_data)
+on_principal_changed (GtkEditable *editable, gpointer user_data)
 {
-  GoaRealmProvider *provider;
-  GError *error = NULL;
-  SignInRequest *request;
-  GVariant *options;
-
-  provider = goa_realm_provider_proxy_new_for_bus_finish (result, &error);
-  if (error != NULL)
-    {
-      g_warning ("Couldn't get realmd provider: %s", error->message);
-      g_error_free (error);
-      return;
-    }
-
-  /* We only know request is valid if no error */
-  request = user_data;
-  request->realm_provider = provider;
+  SignInRequest *request = user_data;
+  gboolean can_add;
+  const gchar *principal;
 
-  options = g_variant_new_array (G_VARIANT_TYPE ("{sv}"), NULL, 0);
-  goa_realm_provider_call_discover (provider, "", options, NULL, NULL, NULL);
+  principal = gtk_entry_get_text (GTK_ENTRY (request->principal));
+  can_add = goa_utils_parse_email_address (principal, NULL, NULL);
+  gtk_dialog_set_response_sensitive (request->dialog, GTK_RESPONSE_OK, can_add);
 }
 
 static void
-on_populate_manager_new (GObject *source,
-                         GAsyncResult *result,
-                         gpointer user_data)
+show_progress_ui (GtkContainer *container, gboolean progress)
 {
-  SignInRequest *request;
-  GDBusObjectManager *manager;
-  GError *error = NULL;
-  GList *objects, *l;
+  GList *children;
+  GList *l;
 
-  manager = goa_realm_object_manager_client_new_for_bus_finish (result, &error);
-  if (error != NULL)
+  children = gtk_container_get_children (container);
+  for (l = children; l != NULL; l = l->next)
     {
-      g_warning ("Couldn't get realmd object manager: %s", error->message);
-      g_error_free (error);
-      return;
-    }
-
-  /* We only know request is valid if no error */
-  request = user_data;
-  request->realm_manager = manager;
-
-  objects = g_dbus_object_manager_get_objects (manager);
-  for (l = objects; l != NULL; l = l->next)
-    on_realm_added (manager, l->data, request);
-  g_list_free_full (objects, g_object_unref);
+      GtkWidget *widget = GTK_WIDGET (l->data);
+      gdouble opacity;
 
-  request->interface_added_id = g_signal_connect (manager, "object-added",
-                                                  G_CALLBACK (on_realm_added), request);
-}
+      opacity = progress ? 1.0 : 0.0;
+      gtk_widget_set_opacity (widget, opacity);
+    }
 
-static void
-populate_realms_for_request (SignInRequest *request)
-{
-  goa_realm_provider_proxy_new_for_bus (G_BUS_TYPE_SYSTEM,
-                                        G_DBUS_PROXY_FLAGS_NONE,
-                                        "org.freedesktop.realmd",
-                                        "/org/freedesktop/realmd",
-                                        request->cancellable,
-                                        on_populate_provider_new,
-                                        request);
-
-  goa_realm_object_manager_client_new_for_bus (G_BUS_TYPE_SYSTEM,
-                                               G_DBUS_OBJECT_MANAGER_CLIENT_FLAGS_NONE,
-                                               "org.freedesktop.realmd",
-                                               "/org/freedesktop/realmd",
-                                               request->cancellable,
-                                               on_populate_manager_new,
-                                               request);
+  g_list_free (children);
 }
 
 static void
@@ -724,42 +562,29 @@ create_account_details_ui (GoaKerberosProvider *self,
   gtk_container_add (GTK_CONTAINER (grid0), grid1);
 
   row = 0;
+  add_entry (grid1, row++, _("_Principal"), &request->principal);
 
-  request->realm_store = gtk_list_store_new (1, G_TYPE_STRING);
-  add_combo_box (grid1,
-                 row++,
-                 _("_Domain"),
-                 _("Enterprise domain or realm name"),
-                 request->realm_store,
-                 &request->realm_combo_box,
-                 &request->realm_entry);
-  g_signal_connect (request->realm_entry, "changed", G_CALLBACK (clear_entry_validation_error), NULL);
-  gtk_combo_box_set_entry_text_column (GTK_COMBO_BOX (request->realm_combo_box), 0);
-
-  add_entry (grid1, row++, _("User_name"), &request->username);
-
-  populate_realms_for_request (request);
-  gtk_widget_grab_focus (request->realm_combo_box);
+  gtk_widget_grab_focus (request->principal);
+  g_signal_connect (request->principal, "changed", G_CALLBACK (on_principal_changed), request);
 
   gtk_dialog_add_button (request->dialog, _("_Cancel"), GTK_RESPONSE_CANCEL);
   request->connect_button = gtk_dialog_add_button (request->dialog, _("C_onnect"), GTK_RESPONSE_OK);
   gtk_dialog_set_default_response (request->dialog, GTK_RESPONSE_OK);
-  gtk_dialog_set_response_sensitive (request->dialog, GTK_RESPONSE_OK, TRUE);
+  gtk_dialog_set_response_sensitive (request->dialog, GTK_RESPONSE_OK, FALSE);
 
   request->progress_grid = gtk_grid_new ();
-  gtk_widget_set_no_show_all (request->progress_grid, TRUE);
   gtk_orientable_set_orientation (GTK_ORIENTABLE (request->progress_grid), GTK_ORIENTATION_HORIZONTAL);
   gtk_grid_set_column_spacing (GTK_GRID (request->progress_grid), 3);
   gtk_container_add (GTK_CONTAINER (grid0), request->progress_grid);
 
   spinner = gtk_spinner_new ();
+  gtk_widget_set_opacity (spinner, 0.0);
   gtk_widget_set_size_request (spinner, 20, 20);
-  gtk_widget_show (spinner);
   gtk_spinner_start (GTK_SPINNER (spinner));
   gtk_container_add (GTK_CONTAINER (request->progress_grid), spinner);
 
   label = gtk_label_new (_("Connecting…"));
-  gtk_widget_show (label);
+  gtk_widget_set_opacity (label, 0.0);
   gtk_container_add (GTK_CONTAINER (request->progress_grid), label);
 
   gtk_window_get_size (GTK_WINDOW (request->dialog), &width, NULL);
@@ -780,7 +605,8 @@ add_account_cb (GoaManager   *manager,
     translate_error (&request->error);
   g_main_loop_quit (request->loop);
   gtk_widget_set_sensitive (request->connect_button, TRUE);
-  gtk_widget_hide (request->progress_grid);
+  gtk_widget_set_sensitive (request->principal, TRUE);
+  show_progress_ui (GTK_CONTAINER (request->progress_grid), FALSE);
 }
 
 static void
@@ -1013,110 +839,6 @@ perform_initial_sign_in (GoaKerberosProvider *self,
   g_object_unref (cancellable);
 }
 
-static char *
-get_realm (SignInRequest *request)
-{
-  char *realm;
-  GtkTreeIter iter;
-
-  if (gtk_combo_box_get_active_iter (GTK_COMBO_BOX (request->realm_combo_box), &iter))
-    gtk_tree_model_get (gtk_combo_box_get_model (GTK_COMBO_BOX (request->realm_combo_box)),
-                        &iter,
-                        0, &realm,
-                        -1);
-  else
-    realm = g_strdup (gtk_entry_get_text (GTK_ENTRY (request->realm_entry)));
-
-  return realm;
-}
-
-static void
-release_realmd (GDBusProxy *proxy)
-{
-  GoaRealmService *service;
-  gchar *unique_name;
-  GError *error = NULL;
-
-  /*
-   * Since we are running from a long running process and don't want
-   * realmd to have to hang around for the entire user session, let
-   * realmd go away, by calling Release().
-   */
-
-  unique_name = g_dbus_proxy_get_name_owner (proxy);
-  if (!unique_name)
-    return;
-
-  /* This won't block because we're not loading properties, and using a unique name */
-  service = goa_realm_service_proxy_new_sync (g_dbus_proxy_get_connection (proxy),
-                                              G_DBUS_PROXY_FLAGS_DO_NOT_LOAD_PROPERTIES,
-                                              unique_name, "/org/freedesktop/realmd",
-                                              NULL, &error);
-  g_free (unique_name);
-
-  if (service == NULL)
-    {
-      g_warning ("Failed to create service proxy: %s", error->message);
-      g_error_free (error);
-    }
-  else
-    {
-      goa_realm_service_call_release (service, NULL, NULL, NULL);
-      g_object_unref (service);
-    }
-}
-
-static void
-on_discover_realm (GObject *source,
-                   GAsyncResult *result,
-                   gpointer user_data)
-{
-  SignInRequest *request = user_data;
-  GError *error = NULL;
-  gchar **realm_paths = NULL;
-  GDBusObject *object = NULL;
-  GoaRealmKerberos *kerberos = NULL;
-  gint unused;
-
-  goa_realm_provider_call_discover_finish (request->realm_provider, &unused,
-                                           &realm_paths, result, &error);
-
-  if (error == NULL && realm_paths)
-    {
-      if (realm_paths[0])
-        object = g_dbus_object_manager_get_object (request->realm_manager,
-                                                   realm_paths[0]);
-      if (object)
-        {
-          kerberos = goa_realm_object_get_kerberos (GOA_REALM_OBJECT (object));
-          g_object_unref (object);
-        }
-      g_strfreev (realm_paths);
-    }
-
-  g_clear_error (&request->error);
-
-  if (kerberos)
-    {
-      gtk_entry_set_text (GTK_ENTRY (request->realm_entry),
-                          goa_realm_kerberos_get_realm_name (kerberos));
-      g_object_unref (kerberos);
-    }
-  else if (error)
-    {
-      request->error = error;
-    }
-  else
-    {
-      g_set_error (&request->error, G_IO_ERROR, G_IO_ERROR_FAILED,
-                   _("The domain is not valid"));
-    }
-
-  g_main_loop_quit (request->loop);
-  gtk_widget_set_sensitive (request->connect_button, TRUE);
-  gtk_widget_hide (request->progress_grid);
-}
-
 static GoaObject *
 add_account (GoaProvider    *provider,
              GoaClient      *client,
@@ -1130,15 +852,13 @@ add_account (GoaProvider    *provider,
   GVariantBuilder details;
   GoaObject   *object = NULL;
   GoaAccount  *account;
-  char        *realm;
-  const char  *username;
+  char        *realm = NULL;
+  const char *principal_text;
   const char *provider_type;
   gchar      *principal = NULL;
   gint        response;
-  GVariant   *options;
 
   memset (&request, 0, sizeof (SignInRequest));
-  request.cancellable = g_cancellable_new ();
   request.loop = g_main_loop_new (NULL, FALSE);
   request.dialog = dialog;
   request.error = NULL;
@@ -1158,37 +878,9 @@ start_over:
       goto out;
     }
 
-  realm = get_realm (&request);
-
-  /* Would have been set by dialog above, otherwise no realmd */
-  if (request.realm_provider && request.realm_manager)
-    {
-      options = g_variant_new_array (G_VARIANT_TYPE ("{sv}"), NULL, 0);
-      goa_realm_provider_call_discover (request.realm_provider, realm, options,
-                                        request.cancellable, on_discover_realm,
-                                        &request);
-      g_free (realm);
-
-      gtk_widget_set_sensitive (request.connect_button, FALSE);
-      gtk_widget_show (request.progress_grid);
-      g_main_loop_run (request.loop);
-
-      if (request.error)
-        {
-          set_entry_validation_error (GTK_ENTRY (request.realm_entry), request.error);
-          g_clear_error (&request.error);
-          goto start_over;
-        }
-
-      /* The realm was updated by on_discover_realm */
-      clear_entry_validation_error (GTK_ENTRY (request.realm_entry));
-      realm = get_realm (&request);
-    }
-
-  username = gtk_entry_get_text (GTK_ENTRY (request.username));
-
-  g_free (principal);
-  principal = g_strdup_printf ("%s@%s", username, realm);
+  principal_text = gtk_entry_get_text (GTK_ENTRY (request.principal));
+  principal = normalize_principal (principal_text, &realm);
+  gtk_entry_set_text (GTK_ENTRY (request.principal), principal);
 
   /* See if there's already an account of this type with the
    * given identity
@@ -1212,8 +904,6 @@ start_over:
   g_variant_builder_add (&details, "{ss}", "IsTemporary", "true");
   g_variant_builder_add (&details, "{ss}", "TicketingEnabled", "true");
 
-  g_free (realm);
-
   goa_manager_call_add_account (goa_client_get_manager (client),
                                 goa_provider_get_provider_type (provider),
                                 principal,
@@ -1224,7 +914,8 @@ start_over:
                                 (GAsyncReadyCallback) add_account_cb,
                                 &request);
   gtk_widget_set_sensitive (request.connect_button, FALSE);
-  gtk_widget_show (request.progress_grid);
+  gtk_widget_set_sensitive (request.principal, FALSE);
+  show_progress_ui (GTK_CONTAINER (request.progress_grid), TRUE);
   g_main_loop_run (request.loop);
   if (request.error != NULL)
     goto out;
@@ -1238,12 +929,14 @@ start_over:
   perform_initial_sign_in (self, object, principal, &request);
 
   gtk_widget_set_sensitive (request.connect_button, FALSE);
-  gtk_widget_show (request.progress_grid);
+  gtk_widget_set_sensitive (request.principal, FALSE);
+  show_progress_ui (GTK_CONTAINER (request.progress_grid), TRUE);
 
   g_main_loop_run (request.loop);
 
   gtk_widget_set_sensitive (request.connect_button, TRUE);
-  gtk_widget_hide (request.progress_grid);
+  gtk_widget_set_sensitive (request.principal, TRUE);
+  show_progress_ui (GTK_CONTAINER (request.progress_grid), FALSE);
 
   if (request.error != NULL)
     {
@@ -1275,7 +968,11 @@ start_over:
                                remove_account_cb,
                                request.loop);
       g_main_loop_run (request.loop);
+
       g_clear_object (&object);
+      g_clear_pointer (&principal, g_free);
+      g_clear_pointer (&realm, g_free);
+      g_clear_pointer (&request.account_object_path, g_free);
       goto start_over;
     }
 
@@ -1295,22 +992,9 @@ start_over:
   else
     g_assert (object != NULL);
 
-  if (request.interface_added_id != 0)
-    g_signal_handler_disconnect (G_OBJECT (request.realm_manager), request.interface_added_id);
-
-  g_cancellable_cancel (request.cancellable);
-  g_object_unref (request.cancellable);
-
-  g_clear_object (&request.realm_manager);
-
-  if (request.realm_provider)
-    {
-      release_realmd (G_DBUS_PROXY (request.realm_provider));
-      g_object_unref (request.realm_provider);
-    }
-
   g_free (request.account_object_path);
   g_free (principal);
+  g_free (realm);
   g_clear_pointer (&request.loop, (GDestroyNotify) g_main_loop_unref);
   return object;
 }
diff --git a/src/goaidentity/Makefile.am b/src/goaidentity/Makefile.am
index 49404b6..fd933ad 100644
--- a/src/goaidentity/Makefile.am
+++ b/src/goaidentity/Makefile.am
@@ -79,31 +79,12 @@ goaidentityenumtypes.c: goaidentityenumtypes.c.in $(identity_headers)
 EXTRA_DIST += goaidentityenumtypes.c.in
 BUILT_SOURCES += goaidentityenumtypes.c
 
-realmd_dbus_built_sources =                                    \
-       org.freedesktop.realmd.h                                \
-       org.freedesktop.realmd.c                                \
-       $(NULL)
-
-$(realmd_dbus_built_sources) : Makefile.am org.freedesktop.realmd.xml
-       $(AM_V_GEN) gdbus-codegen                                               \
-               --interface-prefix org.freedesktop.realmd.      \
-               --generate-c-code org.freedesktop.realmd        \
-               --c-generate-object-manager                     \
-               --c-namespace GoaRealm                          \
-               --annotate "org.freedesktop.realmd.Realm"       \
-                           org.gtk.GDBus.C.Name Common         \
-               $(srcdir)/org.freedesktop.realmd.xml            \
-               $(NULL)
-BUILT_SOURCES += $(realmd_dbus_built_sources)
-EXTRA_DIST += org.freedesktop.realmd.xml
-
 if BUILD_KERBEROS
 libexec_PROGRAMS = goa-identity-service
 
 goa_identity_service_SOURCES =                                         \
        goaidentityenumtypes.h          goaidentityenumtypes.c  \
        $(identity_dbus_built_sources)                          \
-       $(realmd_dbus_built_sources)                            \
        $(identity_sources)                                     \
        $(NULL)
 


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]