Failing HEAD compiles

Hy Murveit murveit at gmail.com
Thu May 14 07:08:39 BST 2026


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/2a6a3595/attachment-0001.htm>


More information about the Kstars-devel mailing list