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

Bug#1071193: libqt6core6t64/experimental breaks ABI



Hi all,

On Fri, May 17, 2024 at 01:07:31AM +0300, Adrian Bunk wrote:
> Apparently the symbols were moved to PRIVATE_API:
> _ZN5QUtf816convertToUnicodeE14QByteArrayViewPN20QStringConverterBase5StateE@@Qt_6_PRIVATE_API
> _ZN5QUtf816convertToUnicodeEPDs14QByteArrayView@@Qt_6_PRIVATE_API
> _ZN6QUtf1616convertToUnicodeE14QByteArrayViewPN20QStringConverterBase5StateE14DataEndianness@@Qt_6_PRIVATE_API
> _ZN6QUtf3216convertToUnicodeE14QByteArrayViewPN20QStringConverterBase5StateE14DataEndianness@@Qt_6_PRIVATE_API
> _ZN5QUtf818convertFromUnicodeE11QStringView@@Qt_6_PRIVATE_API
> _ZN5QUtf818convertFromUnicodeE11QStringViewPN20QStringConverterBase5StateE@@Qt_6_PRIVATE_API
> _ZN6QUtf1618convertFromUnicodeE11QStringViewPN20QStringConverterBase5StateE14DataEndianness@@Qt_6_PRIVATE_API
> _ZN6QUtf3218convertFromUnicodeE11QStringViewPN20QStringConverterBase5StateE14DataEndianness@@Qt_6_PRIVATE_API

I suspect this may be related to a change in Qt 6.5 where they replaced Perl
code to look for private classes (findclasslist.pl) with C++ code in syncqt
[1][2].

These QUtf8 / QUtf16 / QUtf32 structs were always defined in a private header
(qstringconverter_p.h), so marking them as private is correct.

Maybe findclasslist.pl only looked at classes marked as Q_*_EXPORT, while
these structs are not marked as such (individual members are marked instead).

[1]: https://code.qt.io/cgit/qt/qtbase.git/commit/?id=5a5ad8c0029ef9f9
[2]: https://code.qt.io/cgit/qt/qtbase.git/commit/?id=7f4aa1a3fa461064

> This is an upstream(?) ABI break, but since libqt6core5compat6 seems 
> to be the only affected package something like
>   Breaks: libqt6core5compat6 (<< 6.6)
> might be the best available option to avoid issues when upgrading 
> from bookworm.

I agree.

--
Dmitry Shachnev

Attachment: signature.asc
Description: PGP signature


Reply to: