SDL2 2.0.4 is out!

Manuel A. Fernandez Montecelo manuel.montezelo at gmail.com
Tue Jan 12 19:11:33 UTC 2016


2016-01-11 12:51 GMT+00:00 Gianfranco Costamagna
<costamagnagianfranco at yahoo.it>:
> Hi Felix,
>
>>Please read the comment above that code in configure.in.
>>It means that SDL 2.0.0 is ABI compatible with 2.0.4 but new interfaces
>>have been introduced in 2.0.4.
>
>
> I remember upstream broke (unintentionally) the compatibility in sdlgfx
> https://packages.qa.debian.org/s/sdlgfx/news/20140222T160144Z.html(my first transition :) )

There's abigail-tools and https://github.com/lvc/abi-tracker
(successor to the sadly abandoned effort of "upstream tracker" website
which used to have SDL libs.

I never used them though.


>>It highly depends on the details.
>>What do those macros expand to?
>>Changing the size of a struct that's exposed would certainly be not ABI
>>compatible.
>
>
> sure, but unfortunately I don't know about a tool that automates the check
> and with 125k lines of changes I can't say it is API/ABI compatible, while I prefer
> to say the opposite :)
>
>
> e.g.
> -    const struct SDL_assert_data *next;
> -} SDL_assert_data;
> +    const struct SDL_AssertData *next;
> +} SDL_AssertData;
>
>
> -extern DECLSPEC SDL_assert_state SDLCALL SDL_ReportAssertion(SDL_assert_data *,
> +extern DECLSPEC SDL_AssertState SDLCALL SDL_ReportAssertion(SDL_AssertData *,
>
>
> this seems API incompatible

Yup.  But maybe no package in Debian uses that, so until we try to
rebuild we will not know.


> and one struct has gained a new member at the end
> +    Uint32 direction;   /**< Set to one of the SDL_MOUSEWHEEL_* defines. When FLIPPED the values in X and Y will be opposite. Multiply by -1 to change them back */
> } SDL_MouseWheelEvent;
>
>
> so probably if nobody does a sizeof of the struct we are even ABI safe, but I don't think this is a sane approach, is it?

I am not sure if it's ABI safe even in this case, depending on the
things that people can do when using it.  For example, if one creates
an array of such structs and accesses elements of it by their size
indirectly (like incrementing the size of the pointer), it will be
problematic.


> [...]
>
> to me it really looks ABI incompatible.

One way to know would be to ask them, maybe they confirm it in one way
or another.

In general I think that it would be better to schedule a rebuild, just
in case.  It doesn't hurt to rebuild the packages every few months or
years.  But release team is general against such rebuilds.

I guess that the steps can be:

1) Upload to experimental

2) Rebuild rdeps, see if any of them break (candidates can be easily
found with the "search source" service, searching for elements that
changed like SDL_AssertState).  At some point, all rdeps should be
rebuilt to see what breaks.

3) Submit patches etc, or at least requests for maintainers to help
porting their own stuff.

4) Check what to do with release team.  If it's OK for them, agree if
binNMU of those which are API-compatible is OK.

...) ?


Cheers.
-- 
Manuel A. Fernandez Montecelo <manuel.montezelo at gmail.com>



More information about the Pkg-sdl-maintainers mailing list