Bug 101799

Summary: Do not use deprecated tokens when calling glib-genmarshal from dbus-binding-tool
Product: dbus Reporter: Emmanuele Bassi (:ebassi) <ebassi>
Component: GLibAssignee: D-Bus Maintainers <dbus>
Status: RESOLVED WONTFIX QA Contact: D-Bus Maintainers <dbus>
Severity: normal    
Priority: medium CC: ebassi
Version: unspecified   
Hardware: Other   
OS: All   
Whiteboard:
i915 platform: i915 features:
Attachments: Do not use deprecated tokens for glib-genmarshal
Do not use deprecated tokens for glib-genmarshal

Description Emmanuele Bassi (:ebassi) 2017-07-16 10:06:27 UTC
The generated marshallers list file uses the deprecated `NONE` token, instead of the appropriate `VOID` one.
Comment 1 Emmanuele Bassi (:ebassi) 2017-07-16 10:12:25 UTC
Created attachment 132706 [details] [review]
Do not use deprecated tokens for glib-genmarshal

The `NONE` token was deprecated alongside the `BOOL` token in the list
of marshallable types for glib-genmarshal.

While dbus-binding-tool correctly uses `BOOLEAN`, it still uses `NONE`
instead of the correct `VOID` token.

https://bugzilla.gnome.org/show_bug.cgi?id=101799
Comment 2 Emmanuele Bassi (:ebassi) 2017-07-16 12:47:46 UTC
Created attachment 132710 [details] [review]
Do not use deprecated tokens for glib-genmarshal

The `NONE` token was deprecated alongside the `BOOL` token in the list
of marshallable types for glib-genmarshal.

While dbus-binding-tool correctly uses `BOOLEAN`, it still uses `NONE`
instead of the correct `VOID` token.
Comment 3 Simon McVittie 2017-07-18 11:39:11 UTC
(In reply to Emmanuele Bassi (:ebassi) from comment #1)
> The `NONE` token was deprecated alongside the `BOOL` token in the list
> of marshallable types for glib-genmarshal.

For context, when did this happen, and what ill effects does it have for the deprecated token to be used?

dbus-glib (in its entirety) is deprecated, so while I agree that fixing deprecated things is a good goal, in a way it seems like a net positive if uses of dbus-glib result in increasingly many warnings over time.

If I ever do another dbus-glib release, I'd be tempted to attach a G_DEPRECATED_FOR() to every public symbol in the hope that it might coax more of its remaining users to switch away (or get them removed from Linux distributions when they fail to build from source, if they use -Werror; either works for me).
Comment 4 Simon McVittie 2017-07-18 11:42:21 UTC
Comment on attachment 132710 [details] [review]
Do not use deprecated tokens for glib-genmarshal

Review of attachment 132710 [details] [review]:
-----------------------------------------------------------------

If a user of dbus-glib (mistakenly or deliberately) includes generated marshallers in its ABI, then this is an ABI break, because the old function whatever_marshal_NONE__NONE() is going to be renamed to whatever_marshal_VOID__VOID().
Comment 5 Simon McVittie 2018-01-29 10:53:10 UTC
(In reply to Simon McVittie from comment #4)
> If a user of dbus-glib (mistakenly or deliberately) includes generated
> marshallers in its ABI, then this is an ABI break

It's also an API break for the user of dbus-glib, even if it doesn't expose the generated marshallers in its ABI. So this is WONTFIX, sorry.

The solution for callers wishing to avoid deprecated functionality is to stop using dbus-binding-tool or dbus-glib.

Use of freedesktop.org services, including Bugzilla, is subject to our Code of Conduct. How we collect and use information is described in our Privacy Policy.