diff --git a/src/dbus-interactive-auth.patch b/src/dbus-interactive-auth.patch new file mode 100644 index 0000000..944089a --- /dev/null +++ b/src/dbus-interactive-auth.patch @@ -0,0 +1,110 @@ +--- a/src/fprintd-dbus.c 2020-12-04 16:38:28.527712626 +0100 ++++ b/src/fprintd-dbus.c 2020-12-04 16:40:03.561692619 +0100 +@@ -1149,7 +1149,7 @@ + "ListEnrolledFingers", + g_variant_new ("(s)", + arg_username), +- G_DBUS_CALL_FLAGS_NONE, ++ G_DBUS_CALL_FLAGS_ALLOW_INTERACTIVE_AUTHORIZATION, + -1, + cancellable, + callback, +@@ -1213,7 +1213,7 @@ + "ListEnrolledFingers", + g_variant_new ("(s)", + arg_username), +- G_DBUS_CALL_FLAGS_NONE, ++ G_DBUS_CALL_FLAGS_ALLOW_INTERACTIVE_AUTHORIZATION, + -1, + cancellable, + error); +@@ -1253,7 +1253,7 @@ + "DeleteEnrolledFingers", + g_variant_new ("(s)", + arg_username), +- G_DBUS_CALL_FLAGS_NONE, ++ G_DBUS_CALL_FLAGS_ALLOW_INTERACTIVE_AUTHORIZATION, + -1, + cancellable, + callback, +@@ -1312,7 +1312,7 @@ + "DeleteEnrolledFingers", + g_variant_new ("(s)", + arg_username), +- G_DBUS_CALL_FLAGS_NONE, ++ G_DBUS_CALL_FLAGS_ALLOW_INTERACTIVE_AUTHORIZATION, + -1, + cancellable, + error); +@@ -1348,7 +1348,7 @@ + g_dbus_proxy_call (G_DBUS_PROXY (proxy), + "DeleteEnrolledFingers2", + g_variant_new ("()"), +- G_DBUS_CALL_FLAGS_NONE, ++ G_DBUS_CALL_FLAGS_ALLOW_INTERACTIVE_AUTHORIZATION, + -1, + cancellable, + callback, +@@ -1404,7 +1404,7 @@ + _ret = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy), + "DeleteEnrolledFingers2", + g_variant_new ("()"), +- G_DBUS_CALL_FLAGS_NONE, ++ G_DBUS_CALL_FLAGS_ALLOW_INTERACTIVE_AUTHORIZATION, + -1, + cancellable, + error); +@@ -1443,7 +1443,7 @@ + "Claim", + g_variant_new ("(s)", + arg_username), +- G_DBUS_CALL_FLAGS_NONE, ++ G_DBUS_CALL_FLAGS_ALLOW_INTERACTIVE_AUTHORIZATION, + -1, + cancellable, + callback, +@@ -1502,7 +1502,7 @@ + "Claim", + g_variant_new ("(s)", + arg_username), +- G_DBUS_CALL_FLAGS_NONE, ++ G_DBUS_CALL_FLAGS_ALLOW_INTERACTIVE_AUTHORIZATION, + -1, + cancellable, + error); +@@ -1633,7 +1633,7 @@ + "VerifyStart", + g_variant_new ("(s)", + arg_finger_name), +- G_DBUS_CALL_FLAGS_NONE, ++ G_DBUS_CALL_FLAGS_ALLOW_INTERACTIVE_AUTHORIZATION, + -1, + cancellable, + callback, +@@ -1692,7 +1692,7 @@ + "VerifyStart", + g_variant_new ("(s)", + arg_finger_name), +- G_DBUS_CALL_FLAGS_NONE, ++ G_DBUS_CALL_FLAGS_ALLOW_INTERACTIVE_AUTHORIZATION, + -1, + cancellable, + error); +@@ -1823,7 +1823,7 @@ + "EnrollStart", + g_variant_new ("(s)", + arg_finger_name), +- G_DBUS_CALL_FLAGS_NONE, ++ G_DBUS_CALL_FLAGS_ALLOW_INTERACTIVE_AUTHORIZATION, + -1, + cancellable, + callback, +@@ -1882,7 +1882,7 @@ + "EnrollStart", + g_variant_new ("(s)", + arg_finger_name), +- G_DBUS_CALL_FLAGS_NONE, ++ G_DBUS_CALL_FLAGS_ALLOW_INTERACTIVE_AUTHORIZATION, + -1, + cancellable, + error); diff --git a/src/meson.build b/src/meson.build index a35d3c1..1df6216 100644 --- a/src/meson.build +++ b/src/meson.build @@ -14,7 +14,8 @@ foreach interface_name: dbus_interfaces ) endforeach -fprintd_dbus_sources = gnome.gdbus_codegen('fprintd-dbus', +# NOTE: We should pass "--glib-min-required 2.64" but cannot +fprintd_dbus_sources_base = gnome.gdbus_codegen('fprintd-dbus', sources: dbus_interfaces_files, autocleanup: 'all', interface_prefix: 'net.reactivated.Fprint.', @@ -22,6 +23,23 @@ fprintd_dbus_sources = gnome.gdbus_codegen('fprintd-dbus', object_manager: true, ) +# FIXME: remove this and just use fprintd_dbus_sources when we're on glib 2.64 +fprintd_dbus_sources = [ + fprintd_dbus_sources_base[1] # header file +] + +fprintd_dbus_sources += custom_target('fprintd-dbus-interactive', + input: fprintd_dbus_sources_base[0], # c file, + output: 'fprintd-dbus-interactive.c', + command: [ + find_program('patch'), + '-p1', + '--merge', + '@INPUT@', + files('dbus-interactive-auth.patch'), + '-o', '@OUTPUT@', + ]) + fprintd_enum_files = gnome.mkenums_simple('fprintd-enums', sources: 'fprintd.h', )