Debian Patches

Status for telepathy-qt/0.9.8+git16.g04302908-3

Patch Description Author Forwarded Bugs Origin Last update
fix-tests/0001-Fix-build-failure-when-enabling-tests.patch Fix build failure when enabling tests
When I set -DENABLE_TESTS=YES, I hit the following build error:

/telepathy-qt/obj-x86_64-linux-gnu/tests/lib/glib/future/extensions/_gen/svc-connection.c: In function 'future_svc_connection_interface_addressing_get_contacts_by_vcard_field':
/telepathy-qt/obj-x86_64-linux-gnu/tests/lib/glib/future/extensions/_gen/svc-connection.c:58:7: error: implicit declaration of function 'tp_dbus_g_method_return_not_implemented' [-Wimplicit-function-declaration]
58 | tp_dbus_g_method_return_not_implemented (context);

That source file is generated from
tests/lib/glib/future/extensions/connection.xml, so I think this is the
correct fix?
Andres Salomon <dilinger@debian.org> no 2026-04-24
qt6-fixes/0001-Make-implicit-cast-from-uint-to-QChar-explicit.patch [PATCH 01/12] Make implicit cast from uint to QChar explicit
This code needs uint to look for ranges of characters (eg, between 'a'
and 'z'), but in Qt6 the += operator for QString doesn't like the uint.
We can just turn it into a QChar before appending it to the string.
Andres Salomon <dilinger@debian.org> no 2026-04-22
qt6-fixes/0002-Change-qdbus_cast-specialization-args-to-match-Qt6.patch [PATCH 02/12] Change qdbus_cast specialization args to match Qt6
The template definition for dbus_cast<Tp::SocketAddressIPv4> (and other
SUSocketAddress types) doesn't match what Qt6 uses, and we can't use a
default nullptr argument, so we need an #ifdef to make this work.
Andres Salomon <dilinger@debian.org> no 2026-04-22
qt6-fixes/0003-QStringList-is-no-longer-a-class-don-t-forward-decla.patch [PATCH 03/12] QStringList is no longer a class, don't forward-declare it as such

Qt6 switched QStringList to a typedef, and declaring it as a class leads
to the following error:


We can just drop the forward declaration. Qt5 doesn't appear to need it
either.
Andres Salomon <dilinger@debian.org> no 2026-04-22
qt6-fixes/0004-Stick-TP_QT_DEPRECATED-into-the-right-place.patch [PATCH 04/12] Stick TP_QT_DEPRECATED into the right place
Fix for the following error:

/telepathy-qt/TelepathyQt/../TelepathyQt/types.h: At global scope:
/telepathy-qt/obj-x86_64-linux-gnu/TelepathyQt/../TelepathyQt/global.h:123:32: error: standard attributes in middle of decl-specifiers
123 | # define TP_QT_DEPRECATED Q_DECL_DEPRECATED
| ^~~~~~~~~~~~~~~~~
/telepathy-qt/TelepathyQt/../TelepathyQt/types.h:163:9: note: in expansion of macro 'TP_QT_DEPRECATED'
163 | typedef TP_QT_DEPRECATED SharedPtr<StreamedMediaChannel> StreamedMediaChannelPtr;
| ^~~~~~~~~~~~~~~~
/telepathy-qt/obj-x86_64-linux-gnu/TelepathyQt/../TelepathyQt/global.h:123:32: note: standard attributes must precede the decl-specifiers to apply to the declaration, or follow them to apply to the type
123 | # define TP_QT_DEPRECATED Q_DECL_DEPRECATED
| ^~~~~~~~~~~~~~~~~
Andres Salomon <dilinger@debian.org> no 2026-04-22
qt6-fixes/0005-Fix-invalid-use-of-incomplete-type.patch [PATCH 05/12] Fix invalid use of incomplete type
Forward-declaring ReceivedMessage isn't enough with Qt6's additional
type checks and Moc stuff. Just include the entire header.
Andres Salomon <dilinger@debian.org> no 2026-04-22
qt6-fixes/0006-Adjust-various-qHash-overrides-for-Qt6.patch [PATCH 06/12] Adjust various qHash() overrides for Qt6
Qt6 switched qHash functions from returning a (32-bit) uint to returning
a (64-bit on 64-bit architectures) size_t. In the case of SharedPtr,
this actually cut the return value in half and failed tests. Rather than
playing fast & loose with using size_t in Qt5, use #ifdefs to keep using
uint for Qt5's qHash overrides. This also means for the one qHash that
isn't inline, we don't modify the ABI on Qt5.

SharedPtr's qHash() tripped over a static_assert, so this changes to
calling a non-templated version of qHash inside of SharedPtr's qHash().

Features' qHash() was also getting stuck in an infinite loop, and also
isn't needed any more; Qt provides qHash() for QSets and QLists lots of
other types. So we can just delete those tp qHash functions that aren't
doing anything special.
Andres Salomon <dilinger@debian.org> no 2026-04-22
qt6-fixes/0007-Fix-missing-QRegExp-includes-and-removal-of-QList-QS.patch [PATCH 07/12] Fix missing QRegExp includes and removal of QList<QString>::filter(QRegExp)

Qt6 removed QList<QString>::filter(QRegExp), so we're using
QRegExp::filterList(QStringList) instead (which doesn't appear to be
available in Qt5).

Note that QRegExp is deprecated and removed in Qt5, but available via
Qt6::Core5Compat. Longer-term this code should get cleaned up and
replaced with QRegularExpression.
Andres Salomon <dilinger@debian.org> no 2026-04-24
qt6-fixes/0008-Fix-qMakePair-and-QPair-related-Qt6-errors.patch [PATCH 08/12] Fix qMakePair() and QPair-related Qt6 errors
In Qt6, QPair is deprecated and is just an alias to std::pair.
Compatibility shims are kept around, but there are still some issues;
mostly, calling qMakePair<x,y>(...) instead of qMakePair(...) leads to
errors like "cannot bind rvalue reference of type 'x&&' to lvalue of
type 'x'". It's an easy fix that's also compatible with Qt5's QPair.

Long-term, QPair usage should be replaced by std::pair, but that
requires breaking the ABI for a bunch of classes.
Andres Salomon <dilinger@debian.org> no 2026-04-24
qt6-fixes/0009-Replace-QVariant-Type-and-related-things-with-QMetaT.patch [PATCH 09/12] Replace QVariant::Type and related things with QMetaType::Type

In Qt5, the various QVariant::Type enum values are just populated from
QMetaType::Type enums. In Qt6, QVariant::Type is properly deprecated and
errors like "'Type' in 'class QVariant' does not name a type" pop up.
This replaces QVariant::Type, but keeps the ABI the same for Qt5. Since
the enums are the same, we can simply use QMetaType::Type internally in
cases, expose QVariant::Type to Qt5 users, and static cast between the
two.

The enums are close but not the same; eg, QVariant::StringList maps to
QMetaType::QStringList. QVariant's constructor also no longer accepts
an invalid/unknown enum value, instead we call the default ctor.
QVariant::type() is also deprecated, replaced with QVariant::userType().
Andres Salomon <dilinger@debian.org> no 2026-04-24
qt6-fixes/0010-Switch-to-QMultiHash-for-Qt6-where-needed.patch [PATCH 10/12] Switch to QMultiHash for Qt6 where needed
Qt6 drops QHash::insertMulti(). I'm assuming that the three places we're
using it is intentional. Unfortunately changing these into QMultiHash
would affect the API/ABI, so this keeps things the same for Qt5 (which
means the deprecation warnings remain), while switching to QMultiHash
for Qt6.
Andres Salomon <dilinger@debian.org> no 2026-04-24
qt6-fixes/0011-Use-default-constructor-instead-of-nullptr-for-QFlag.patch [PATCH 11/12] Use default constructor instead of nullptr for QFlags in default args

Using nullptr for the QFlags type is deprecated with warnings/errors
like "could not convert 'nullptr' from 'std::nullptr_t' to
'Tp::MessageSendingFlags'".

There are two separate places where the methods in public class
definitions had nullptr as the default value for a MessageSendingFlags
argument. Fixing this is easy enough, but it *may* change the ABI. In
order to play it safe, we only fix this issue for Qt6 builds; older Qt5
builds will still get the deprecation warnings.
Andres Salomon <dilinger@debian.org> no 2026-04-13
qt6-fixes/0012-Update-CMakeLists.txt-to-enable-Qt6-compatibility.patch [PATCH 12/12] Update **/CMakeLists.txt to enable Qt6 compatibility
This keeps Qt at the default of 5, but allows overriding to Qt6 by
defining QT_VERSION_MAJOR=6 for the build. Two things to note:

1) We're making use of Qt6::Core5Compat for support of the removed
QRegExp stuff. It can go away once TelepathyQT switches to
QRegularExpression.

2) The cmake macros are using internal symbols, which were renamed in
Qt6; not ideal. It also copied some internal macros, which also made use
of internal symbols/variables, and broke because ${QT_MOC_EXECUTABLE}
is no longer set. Qt{5,6}::moc seems like it might be a safe
replacement, but it might be worth looking to see if cmake's AUTOMOC stuff
has grown enough features to no longer need the macros. I tried poking
at it, but my cmake-fu is not that strong.
Andres Salomon <dilinger@debian.org> no 2026-04-24
warnings/0001-Replace-QSet-toList-calls-with-QSet-values.patch [PATCH 01/24] Replace QSet::toList calls with QSet::values
toList() is currently deprecated, and building TelepathyQt produces a
bunch of the following type of warnings: "'QList<T> QSet<T>::toList()
const [with T = QString]' is deprecated: Use values() instead."

The official Qt docs recommend using range constructors (eg,
QList(QSet::begin()/QSet::end())) instead of QSet::values(), but that
would require a bunch of ifEmpty() checks and #ifdef QT_VERSION since
range constructors were only added in Qt 5.14. This keeps things simple.
Andres Salomon <dilinger@debian.org> no 2026-03-26
warnings/0002-Replace-QList-toStdList-with-a-range-constructor.patch [PATCH 02/24] Replace QList::toStdList with a range constructor
Silence the following warning:
'std::__cxx11::list<T> QList<T>::toStdList() const [with T = unsigned int]'
is deprecated: Use std::list<T>(list.begin(), list.end()) instead.

This shouldn't affect the ABI at all, it's in an inlined function.
Unfortunately the isEmpty() and #if QT_VERSION checks are required.
Andres Salomon <dilinger@debian.org> no 2026-03-26
warnings/0003-Replace-QList-toSet-calls-with-range-constructors.patch [PATCH 03/24] Replace QList::toSet calls with range constructors
This gets rid of many 'QSet<T> QList<T>::toSet() const [..]' is deprecated'
warnings. Unfortunately, replacing QList::toSet() requires #if QT_VERSION
checks. These are the simple replacements, with QList::isEmpty() checks as
needed.

It also includes one QSet::fromList() replacement for good measure, since
it follows the same pattern.
Andres Salomon <dilinger@debian.org> no 2026-03-26
warnings/0004-Replace-more-deprecated-QList-toSet-calls.patch [PATCH 04/24] Replace more deprecated QList::toSet calls
This gets rid of a bunch more of the toSet deprecation warnings. In
particular, these replacements are grouped together because they require
temporary variables. That's so we're not unnecessarily creating extra
copies of lists. Other than that, they're also mostly straightforward
replacements - except for the TextChannel change, where we're reusing
the temp variable elsewhere first.
Andres Salomon <dilinger@debian.org> no 2026-03-26
warnings/0005-Replace-QList-toSet-usage-with-removeDuplicates.patch [PATCH 05/24] Replace QList::toSet usage with removeDuplicates()
Here is someplace where we were previously converting from a QList to a
QSet to get rid of duplicates, and then converting back to a QList.
Instead of dealing with that hassle, we can just use
QStringList::removeDuplicates.
Andres Salomon <dilinger@debian.org> no 2026-03-26
warnings/0006-Replace-QList-toSet-calls-with-a-wrapper-function.patch [PATCH 06/24] Replace QList::toSet calls with a wrapper function
Continuing to replace toSet, this Feature test called toSet so many
times that it made more sense to create a makeSet() function to handle
it.
Andres Salomon <dilinger@debian.org> no 2026-03-26
warnings/0007-Replace-QList-toSet-where-there-s-additional-set-log.patch [PATCH 07/24] Replace QList::toSet where there's additional set logic
Continuing to replace toSet with range constructions. In this case it's
involving multiple QSets, so it's not as straightforward. In the
pending-captchas case the if/else block already tested if the QLists are
empty. In the pending-contacts case, we don't need to call QSet::subtract()
at all if the second QSet is empty (because A - 0 = A).
Andres Salomon <dilinger@debian.org> no 2026-03-26
warnings/0008-Replace-QMap-unite-calls-with-QMap-insert.patch [PATCH 08/24] Replace QMap::unite() calls with QMap::insert
This addresses the following warnings:
QMap<K, V>& QMap<K, V>::unite(const QMap<K, V>&) [...]' is deprecated: Use
QMultiMap for maps storing multiple values with the same key.

In these cases, I'm pretty sure that the intent was always to have
unique keys (what would it even mean to have multiple properties with
the same name?). QMap::unite allows multiple keys with the same name,
while insert() will overwrite existing property values if names conflict.
We can just switch to using insert().
Andres Salomon <dilinger@debian.org> no 2026-03-26
warnings/0009-Fix-an-infinite-recursion-warning.patch [PATCH 09/24] Fix an infinite recursion warning
/telepathy-qt/TelepathyQt/feature.cpp:65:10: warning: infinite recursion detected [-Winfinite-recursion]
65 | Feature &Feature::operator=(const Feature &other)
| ^~~~~~~
/telepathy-qt/TelepathyQt/feature.cpp:67:13: note: recursive call
67 | *this = other;
| ^~~~~

This is pretty clearly meant to be calling the parent class, it just
needs the proper syntax.
Andres Salomon <dilinger@debian.org> no 2026-03-26
warnings/0010-Replace-deprecated-QTextStreamFunctions-hex-usage-wi.patch [PATCH 10/24] Replace deprecated QTextStreamFunctions::hex usage with Qt::hex

Fix the warning 'QTextStream& QTextStreamFunctions::hex(QTextStream&)' is
Andres Salomon <dilinger@debian.org> no 2026-03-26
warnings/0011-Fix-implicit-int-to-enum-casting-in-TestAccountChann.patch [PATCH 11/24] Fix implicit int-to-enum casting in TestAccountChannelDispatcher

The warning "'constexpr QFlags<T>::QFlags(Zero) [with Enum = ...]' is
passing an integer instead of enum. Since AllEvents == 0, and AllEvents
is also the default value for QEventLoop::exec argument.. we can just
drop the arg.
Andres Salomon <dilinger@debian.org> no 2026-03-26
warnings/0012-Replace-deprecated-QList-swap-call-with-QList-swapIt.patch [PATCH 12/24] Replace deprecated QList::swap() call with QList::swapItemsAt

Older Qt had swap() with multiple different arguments; later versions
added helper functions instead of overloading functions. swapItemsAt()
is what we want to use, as swap() is now for swapping an entire list.
Andres Salomon <dilinger@debian.org> no 2026-03-26
warnings/0013-Replace-deprecated-QDateTime-constructor-usage.patch [PATCH 13/24] Replace deprecated QDateTime constructor usage
QDateTime(QDate&) is deprecated. Instead, we initialize it with another
QDatetime object. However, currentDateTime() includes msecs, which will
cause the later comparison test to fail. SecsSinceEpoch does the trick.
Andres Salomon <dilinger@debian.org> no 2026-03-26
warnings/0014-Replace-qrand-usage-with-QRandomGenerator-in-incomin.patch [PATCH 14/24] Replace qrand() usage with QRandomGenerator in incoming stream tube

qrand() is deprecated, and for good reason. Instead, we use
QRandomGenerator::global(), which is not only thread-safe, but also
securely preseeded.
Andres Salomon <dilinger@debian.org> no 2026-03-30
warnings/0015-Replace-qsnprintf-with-std-snprintf.patch [PATCH 15/24] Replace qsnprintf() with std::snprintf
qsnprintf() is deprecated as of Qt 6.9; a straightforward replacement.
Andres Salomon <dilinger@debian.org> no 2026-03-30
warnings/0016-Fix-unused-variable-warning-in-CallManager-test.patch [PATCH 16/24] Fix unused variable warning in CallManager test
Silence an unused variable warning. A comment below this tells us that
checking audio_fixed_properties is good enough.
Andres Salomon <dilinger@debian.org> no 2026-03-30
warnings/0017-Fix-enum-type-mismatch-warning-in-CallChannel-test.patch [PATCH 17/24] Fix enum type mismatch warning in CallChannel test
This function is declared as having a TpMediaStreamType rather than
guint as an argument.
Andres Salomon <dilinger@debian.org> no 2026-03-30
warnings/0018-Fix-various-function-cast-warnings-in-tests.patch [PATCH 18/24] Fix various function cast warnings in tests
There's no need to manually call g_ptr_array_foreach() to free elements of
a GPtrArray, as there's a function callback to do that. Once the callback
is set, it is called as long as the second argument to g_ptr_array_free()
is set to TRUE. No behavior changes here.
Andres Salomon <dilinger@debian.org> no 2026-03-30
warnings/0019-Replace-manual-temp-dir-handling-in-TestAvatarContac.patch [PATCH 19/24] Replace manual temp dir handling in TestAvatarContacts w/ QTemporaryDir

The easiest & best way to get rid of the qrand/qsrand deprecation
warnings in TestAvatarContacts is to just completely rip out the
unnecessary code and replace it with QTemporaryDir.

In addition, this fixes a bug where the temporary directory was never
properly deleted after finishing the test. This is because
SmartDir::removeDirectory() ran too early; after the initial
directory was cleaned up, another test would use the existing
XDG_CACHE_HOME value to store a bunch of new avatar data in the temp
directory. Moving the QTemporaryDir object into the test class allows
proper cleanup, as destruction of the object (and directory deletion)
are delayed until all the tests in this file are done running.
Andres Salomon <dilinger@debian.org> no 2026-03-30
warnings/0020-Replace-deprecated-QLinkedList-usage-with-std-list.patch [PATCH 20/24] Replace deprecated QLinkedList usage with std::list
Straightforward replacement of QLinkedList. isEmpty() becomes empty(),
front() becomes first(), append() becomes push_back(), etc.

These two headers and various Adaptor classes aren't exported outside of
TpQt, so this shouldn't have any effect on the ABI.
Andres Salomon <dilinger@debian.org> no 2026-03-31
warnings/0021-Replace-QXmlSimpleReader-with-QXmlStreamReader-in-Pr.patch [PATCH 21/24] Replace QXmlSimpleReader with QXmlStreamReader in Profile

QXmlSimpleReader is a SAX-based parser, and is deprecated in Qt5. It
goes away in Qt6, so it makes sense to switch over. This keeps the
XmlHandler class, but just has a parse() method that handles the
top-level <service> tag, with other methods to handle other elements inside
of that.

[Note that I do have a version that drops XmlHandler, which results in
less code but a larger, less readable patch. Happy to submit that
instead, if desired.]
Andres Salomon <dilinger@debian.org> no 2026-03-31
warnings/0022-Use-default-constructor-instead-of-nullptr-for-vario.patch [PATCH 22/24] Use default constructor instead of nullptr for various QFlags

Using nullptr for the QFlags type is deprecated with warnings/errors
like "could not convert 'nullptr' from 'std::nullptr_t' to
'Tp::MessageSendingFlags'".

There are separate places where this is a problem that may change the
ABI, but in this commit there are no ABI modifications.
Andres Salomon <dilinger@debian.org> no 2026-04-13
warnings/0023-Fix-incorrect-QT_VERSION_CHECK-ifdef.patch [PATCH 23/24] Fix incorrect QT_VERSION_CHECK #ifdef
This always evaluated to true, so even with newer version of Qt the
older code was still used.
Andres Salomon <dilinger@debian.org> no 2026-04-17
warnings/0024-Silence-warnings-about-register-keyword.patch [PATCH 24/24] Silence warnings about 'register' keyword
The 'register' keyword doesn't really do anything any more and is going
away, and it's really annoying to see that warning message 500 times
during a build.

I'm assuming the original author of this code meant to use 'register' to
speed things up, rather than intending to use the 'volatile' keyword to
ensure the compiler didn't optimize away the tmp variable.
Andres Salomon <dilinger@debian.org> no 2026-04-23

All known versions for source package 'telepathy-qt'

Links