Failing HEAD compiles

Hy Murveit murveit at gmail.com
Thu May 14 07:19:09 BST 2026


Thanks so much for the quick fix! It works.

Hy

On Wed, May 13, 2026 at 11:13 PM Jasem Mutlaq <mutlaqja at ikarustech.com>
wrote:

> Sorry, it's fixed. It was missing an #ifdef for Qt5. Please try again now.
>
> --
> Best Regards,
> Jasem Mutlaq
>
>
>
> On Thu, May 14, 2026 at 9:09 AM Hy Murveit <murveit at gmail.com> wrote:
>
>> Jasem,
>>
>> FYI, the latest KStars HEAD doesn't compile on my Ubuntu 22.04 telescope
>> computer.
>> Specifically below is part of the compilation output with the error.
>>
>> Since the error was in fitsdata.cpp, I looked at the recent changes to
>> it, and checked out the software just before
>>
>> > git checkout e3812799e54518ba7d3427cf2a68d6201a3786bd
>>
>> This avoids this recent submit:
>>
>> commit dc54426dee3765674f1de697c94ad5ff0d3f77d4
>> Author: Jasem Mutlaq <mutlaqja at ikarustech.com>
>> Date:   Wed May 13 19:01:04 2026 +0300
>>
>>     Support loading .fits.gz and .xisf.gz in the viewer
>>
>> kstars/ekos/align/align.cpp
>> kstars/fitsviewer/fitsviewer.cpp
>>
>> Once I did that, it did compile.
>> So, Jasem, any chance you can ask your favorite AI how to fix that for
>> 22.04?
>>
>> Thanks,
>> Hy
>>
>>
>> [ 69%] Building CXX object
>> kstars/CMakeFiles/KStarsLib.dir/fitsviewer/fitscentroiddetector.cpp.o
>> /home/hy/Projects/kstars/kstars/fitsviewer/fitsdata.cpp: In member
>> function ‘QFuture<bool> FITSData::loadFromFile(const QString&)’:
>> /home/hy/Projects/kstars/kstars/fitsviewer/fitsdata.cpp:344:41: error: no
>> matching function for call to ‘run(bool (FITSData::*)(const QByteArray&),
>> FITSData*, QByteArray&)’
>>   344 |                 return
>> QtConcurrent::run(&FITSData::loadFromBuffer, this, decompressed);
>>       |
>>  ~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>> In file included from
>> /usr/include/x86_64-linux-gnu/qt5/QtConcurrent/QtConcurrent:16,
>>                  from
>> /home/hy/Projects/kstars/kstars/fitsviewer/fitsdata.cpp:31:
>> /usr/include/x86_64-linux-gnu/qt5/QtConcurrent/qtconcurrentrun.h:72:12:
>> note: candidate: ‘template<class T> QFuture<T> QtConcurrent::run(T (*)())’
>>    72 | QFuture<T> run(T (*functionPointer)())
>>       |            ^~~
>> /usr/include/x86_64-linux-gnu/qt5/QtConcurrent/qtconcurrentrun.h:72:12:
>> note:   template argument deduction/substitution failed:
>> /home/hy/Projects/kstars/kstars/fitsviewer/fitsdata.cpp:344:41: note:
>> mismatched types ‘T (*)()’ and ‘bool (FITSData::*)(const QByteArray&)’
>>   344 |                 return
>> QtConcurrent::run(&FITSData::loadFromBuffer, this, decompressed);
>>       |
>>  ~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>> In file included from
>> /usr/include/x86_64-linux-gnu/qt5/QtConcurrent/QtConcurrent:16,
>>                  from
>> /home/hy/Projects/kstars/kstars/fitsviewer/fitsdata.cpp:31:
>> /usr/include/x86_64-linux-gnu/qt5/QtConcurrent/qtconcurrentrun.h:77:12:
>> note: candidate: ‘template<class T, class Param1, class Arg1> QFuture<T>
>> QtConcurrent::run(T (*)(Param1), const Arg1&)’
>>    77 | QFuture<T> run(T (*functionPointer)(Param1), const Arg1 &arg1)
>>       |            ^~~
>> /usr/include/x86_64-linux-gnu/qt5/QtConcurrent/qtconcurrentrun.h:77:12:
>> note:   template argument deduction/substitution failed:
>> /home/hy/Projects/kstars/kstars/fitsviewer/fitsdata.cpp:344:41: note:
>> mismatched types ‘T (*)(Param1)’ and ‘bool (FITSData::*)(const QByteArray&)’
>>   344 |                 return
>> QtConcurrent::run(&FITSData::loadFromBuffer, this, decompressed);
>>       |
>>  ~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>> In file included from
>> /usr/include/x86_64-linux-gnu/qt5/QtConcurrent/QtConcurrent:16,
>>                  from
>> /home/hy/Projects/kstars/kstars/fitsviewer/fitsdata.cpp:31:
>> /usr/include/x86_64-linux-gnu/qt5/QtConcurrent/qtconcurrentrun.h:82:12:
>> note: candidate: ‘template<class T, class Param1, class Arg1, class Param2,
>> class Arg2> QFuture<T> QtConcurrent::run(T (*)(Param1, Param2), const
>> Arg1&, const Arg2&)’
>>    82 | QFuture<T> run(T (*functionPointer)(Param1, Param2), const Arg1
>> &arg1, const Arg2 &arg2)
>>       |            ^~~
>> /usr/include/x86_64-linux-gnu/qt5/QtConcurrent/qtconcurrentrun.h:82:12:
>> note:   template argument deduction/substitution failed:
>> /home/hy/Projects/kstars/kstars/fitsviewer/fitsdata.cpp:344:41: note:
>> mismatched types ‘T (*)(Param1, Param2)’ and ‘bool (FITSData::*)(const
>> QByteArray&)’
>>   344 |                 return
>> QtConcurrent::run(&FITSData::loadFromBuffer, this, decompressed);
>>       |
>>  ~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>> In file included from
>> /usr/include/x86_64-linux-gnu/qt5/QtConcurrent/QtConcurrent:16,
>>                  from
>> /home/hy/Projects/kstars/kstars/fitsviewer/fitsdata.cpp:31:
>> /usr/include/x86_64-linux-gnu/qt5/QtConcurrent/qtconcurrentrun.h:87:12:
>> note: candidate: ‘template<class T, class Param1, class Arg1, class Param2,
>> class Arg2, class Param3, class Arg3> QFuture<T> QtConcurrent::run(T
>> (*)(Param1, Param2, Param3), const Arg1&, const Arg2&, const Arg3&)’
>>    87 | QFuture<T> run(T (*functionPointer)(Param1, Param2, Param3),
>> const Arg1 &arg1, const Arg2 &arg2, const Arg3 &arg3)
>>       |            ^~~
>> /usr/include/x86_64-linux-gnu/qt5/QtConcurrent/qtconcurrentrun.h:87:12:
>> note:   template argument deduction/substitution failed:
>> /home/hy/Projects/kstars/kstars/fitsviewer/fitsdata.cpp:344:41: note:
>> mismatched types ‘T (*)(Param1, Param2, Param3)’ and ‘bool
>> (FITSData::*)(const QByteArray&)’
>>   344 |                 return
>> QtConcurrent::run(&FITSData::loadFromBuffer, this, decompressed);
>>       |
>>  ~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>> In file included from
>> /usr/include/x86_64-linux-gnu/qt5/QtConcurrent/QtConcurrent:16,
>>                  from
>> /home/hy/Projects/kstars/kstars/fitsviewer/fitsdata.cpp:31:
>> /usr/include/x86_64-linux-gnu/qt5/QtConcurrent/qtconcurrentrun.h:92:12:
>> note: candidate: ‘template<class T, class Param1, class Arg1, class Param2,
>> class Arg2, class Param3, class Arg3, class Param4, class Arg4> QFuture<T>
>> QtConcurrent::run(T (*)(Param1, Param2, Param3, Param4), const Arg1&, const
>> Arg2&, const Arg3&, const Arg4&)’
>>    92 | QFuture<T> run(T (*functionPointer)(Param1, Param2, Param3,
>> Param4), const Arg1 &arg1, const Arg2 &arg2, const Arg3 &arg3, const Arg4
>> &arg4)
>>       |            ^~~
>> /usr/include/x86_64-linux-gnu/qt5/QtConcurrent/qtconcurrentrun.h:92:12:
>> note:   template argument deduction/substitution failed:
>> /home/hy/Projects/kstars/kstars/fitsviewer/fitsdata.cpp:344:41: note:
>> mismatched types ‘T (*)(Param1, Param2, Param3, Param4)’ and ‘bool
>> (FITSData::*)(const QByteArray&)’
>>   344 |                 return
>> QtConcurrent::run(&FITSData::loadFromBuffer, this, decompressed);
>>       |
>>  ~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>> In file included from
>> /usr/include/x86_64-linux-gnu/qt5/QtConcurrent/QtConcurrent:16,
>>                  from
>> /home/hy/Projects/kstars/kstars/fitsviewer/fitsdata.cpp:31:
>> /usr/include/x86_64-linux-gnu/qt5/QtConcurrent/qtconcurrentrun.h:97:12:
>> note: candidate: ‘template<class T, class Param1, class Arg1, class Param2,
>> class Arg2, class Param3, class Arg3, class Param4, class Arg4, class
>> Param5, class Arg5> QFuture<T> QtConcurrent::run(T (*)(Param1, Param2,
>> Param3, Param4, Param5), const Arg1&, const Arg2&, const Arg3&, const
>> Arg4&, const Arg5&)’
>>    97 | QFuture<T> run(T (*functionPointer)(Param1, Param2, Param3,
>> Param4, Param5), const Arg1 &arg1, const Arg2 &arg2, const Arg3 &arg3,
>> const Arg4 &arg4, const Arg5 &arg5)
>>       |            ^~~
>> /usr/include/x86_64-linux-gnu/qt5/QtConcurrent/qtconcurrentrun.h:97:12:
>> note:   template argument deduction/substitution failed:
>> /home/hy/Projects/kstars/kstars/fitsviewer/fitsdata.cpp:344:41: note:
>> mismatched types ‘T (*)(Param1, Param2, Param3, Param4, Param5)’ and ‘bool
>> (FITSData::*)(const QByteArray&)’
>>   344 |                 return
>> QtConcurrent::run(&FITSData::loadFromBuffer, this, decompressed);
>>       |
>>  ~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>> In file included from
>> /usr/include/x86_64-linux-gnu/qt5/QtConcurrent/QtConcurrent:16,
>>                  from
>> /home/hy/Projects/kstars/kstars/fitsviewer/fitsdata.cpp:31:
>> /usr/include/x86_64-linux-gnu/qt5/QtConcurrent/qtconcurrentrun.h:103:6:
>> note: candidate: ‘template<class Functor> typename std::enable_if<(!
>> QtPrivate::HasResultType<MapFunctor>::Value), QFuture<decltype (functor())>
>> >::type QtConcurrent::run(Functor)’
>>   103 | auto run(Functor functor) -> typename
>> std::enable_if<!QtPrivate::HasResultType<Functor>::Value,
>> QFuture<decltype(functor())>>::type
>>       |      ^~~
>> /usr/include/x86_64-linux-gnu/qt5/QtConcurrent/qtconcurrentrun.h:103:6:
>> note:   template argument deduction/substitution failed:
>> /home/hy/Projects/kstars/kstars/fitsviewer/fitsdata.cpp:344:41: note:
>> candidate expects 1 argument, 3 provided
>>   344 |                 return
>> QtConcurrent::run(&FITSData::loadFromBuffer, this, decompressed);
>>       |
>>  ~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>> In file included from
>> /usr/include/x86_64-linux-gnu/qt5/QtConcurrent/QtConcurrent:16,
>>                  from
>> /home/hy/Projects/kstars/kstars/fitsviewer/fitsdata.cpp:31:
>> /usr/include/x86_64-linux-gnu/qt5/QtConcurrent/qtconcurrentrun.h:110:6:
>> note: candidate: ‘template<class Functor, class Arg1> typename
>> std::enable_if<(! QtPrivate::HasResultType<MapFunctor>::Value),
>> QFuture<decltype (functor(arg1))> >::type QtConcurrent::run(Functor, const
>> Arg1&)’
>>   110 | auto run(Functor functor, const Arg1 &arg1)
>>       |      ^~~
>> /usr/include/x86_64-linux-gnu/qt5/QtConcurrent/qtconcurrentrun.h:110:6:
>> note:   template argument deduction/substitution failed:
>> /home/hy/Projects/kstars/kstars/fitsviewer/fitsdata.cpp:344:41: note:
>> candidate expects 2 arguments, 3 provided
>>   344 |                 return
>> QtConcurrent::run(&FITSData::loadFromBuffer, this, decompressed);
>>       |
>>  ~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>> In file included from
>> /usr/include/x86_64-linux-gnu/qt5/QtConcurrent/QtConcurrent:16,
>>                  from
>> /home/hy/Projects/kstars/kstars/fitsviewer/fitsdata.cpp:31:
>> /usr/include/x86_64-linux-gnu/qt5/QtConcurrent/qtconcurrentrun.h:118:6:
>> note: candidate: ‘template<class Functor, class Arg1, class Arg2> typename
>> std::enable_if<(! QtPrivate::HasResultType<MapFunctor>::Value),
>> QFuture<decltype (functor(arg1, arg2))> >::type QtConcurrent::run(Functor,
>> const Arg1&, const Arg2&)’
>>   118 | auto run(Functor functor, const Arg1 &arg1, const Arg2 &arg2)
>>       |      ^~~
>> /usr/include/x86_64-linux-gnu/qt5/QtConcurrent/qtconcurrentrun.h:118:6:
>> note:   template argument deduction/substitution failed:
>> /usr/include/x86_64-linux-gnu/qt5/QtConcurrent/qtconcurrentrun.h: In
>> substitution of ‘template<class Functor, class Arg1, class Arg2> typename
>> std::enable_if<(! QtPrivate::HasResultType<MapFunctor>::Value),
>> QFuture<decltype (functor(arg1, arg2))> >::type QtConcurrent::run(Functor,
>> const Arg1&, const Arg2&) [with Functor = bool (FITSData::*)(const
>> QByteArray&); Arg1 = FITSData*; Arg2 = QByteArray]’:
>> /home/hy/Projects/kstars/kstars/fitsviewer/fitsdata.cpp:344:41:
>> required from here
>> /usr/include/x86_64-linux-gnu/qt5/QtConcurrent/qtconcurrentrun.h:119:99:
>> error: must use ‘.*’ or ‘->*’ to call pointer-to-member function in
>> ‘functor (...)’, e.g. ‘(... ->* functor) (...)’
>>   119 |     -> typename
>> std::enable_if<!QtPrivate::HasResultType<Functor>::Value,
>> QFuture<decltype(functor(arg1, arg2))>>::type
>>       |
>>                          ~~~~~~~^~~~~~~~~~~~
>> /usr/include/x86_64-linux-gnu/qt5/QtConcurrent/qtconcurrentrun.h:126:6:
>> note: candidate: ‘template<class Functor, class Arg1, class Arg2, class
>> Arg3> typename std::enable_if<(!
>> QtPrivate::HasResultType<MapFunctor>::Value), QFuture<decltype
>> (functor(arg1, arg2, arg3))> >::type QtConcurrent::run(Functor, const
>> Arg1&, const Arg2&, const Arg3&)’
>>   126 | auto run(Functor functor, const Arg1 &arg1, const Arg2 &arg2,
>> const Arg3 &arg3)
>>       |      ^~~
>> /usr/include/x86_64-linux-gnu/qt5/QtConcurrent/qtconcurrentrun.h:126:6:
>> note:   template argument deduction/substitution failed:
>> /home/hy/Projects/kstars/kstars/fitsviewer/fitsdata.cpp:344:41: note:
>> candidate expects 4 arguments, 3 provided
>>   344 |                 return
>> QtConcurrent::run(&FITSData::loadFromBuffer, this, decompressed);
>>       |
>>  ~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>> In file included from
>> /usr/include/x86_64-linux-gnu/qt5/QtConcurrent/QtConcurrent:16,
>>                  from
>> /home/hy/Projects/kstars/kstars/fitsviewer/fitsdata.cpp:31:
>> /usr/include/x86_64-linux-gnu/qt5/QtConcurrent/qtconcurrentrun.h:134:6:
>> note: candidate: ‘template<class Functor, class Arg1, class Arg2, class
>> Arg3, class Arg4> typename std::enable_if<(!
>> QtPrivate::HasResultType<MapFunctor>::Value), QFuture<decltype
>> (functor(arg1, arg2, arg3, arg4))> >::type QtConcurrent::run(Functor, const
>> Arg1&, const Arg2&, const Arg3&, const Arg4&)’
>>   134 | auto run(Functor functor, const Arg1 &arg1, const Arg2 &arg2,
>> const Arg3 &arg3, const Arg4 &arg4)
>>       |      ^~~
>> /usr/include/x86_64-linux-gnu/qt5/QtConcurrent/qtconcurrentrun.h:134:6:
>> note:   template argument deduction/substitution failed:
>> /home/hy/Projects/kstars/kstars/fitsviewer/fitsdata.cpp:344:41: note:
>> candidate expects 5 arguments, 3 provided
>>   344 |                 return
>> QtConcurrent::run(&FITSData::loadFromBuffer, this, decompressed);
>>       |
>>  ~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>> In file included from
>> /usr/include/x86_64-linux-gnu/qt5/QtConcurrent/QtConcurrent:16,
>>                  from
>> /home/hy/Projects/kstars/kstars/fitsviewer/fitsdata.cpp:31:
>> /usr/include/x86_64-linux-gnu/qt5/QtConcurrent/qtconcurrentrun.h:142:6:
>> note: candidate: ‘template<class Functor, class Arg1, class Arg2, class
>> Arg3, class Arg4, class Arg5> typename std::enable_if<(!
>> QtPrivate::HasResultType<MapFunctor>::Value), QFuture<decltype
>> (functor(arg1, arg2, arg3, arg4, arg5))> >::type QtConcurrent::run(Functor,
>> const Arg1&, const Arg2&, const Arg3&, const Arg4&, const Arg5&)’
>>   142 | auto run(Functor functor, const Arg1 &arg1, const Arg2 &arg2,
>> const Arg3 &arg3, const Arg4 &arg4, const Arg5 &arg5)
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.kde.org/pipermail/kstars-devel/attachments/20260513/064e5b4e/attachment-0001.htm>


More information about the Kstars-devel mailing list