#1150298 gr-limesdr: FTBFS: error: passing ‘const fmt::v11::formatter<boost::basic_format<char> >’ as ‘this’ argument discards qualifiers [-fpermissive]

Package:
src:gr-limesdr
Source:
src:gr-limesdr
Submitter:
Sebastian Ramacher
Date:
2026-10-11 21:45:02 UTC
Severity:
normal
Tags:
#1150298#5
Date:
2026-10-08 09:38:23 UTC
From:
To:
Source: gr-limesdr
Version: 3.0.1.10.69-4
Severity: serious
Tags: ftbfs
Justification: fails to build from source (but built successfully in the past)
X-Debbugs-Cc: sramacher@debian.org

Dear maintainer,

gr-limesdr FTBFS with the new fmtlib:

[ 46%] Built target doxygen_target
In file included from /usr/include/spdlog/fmt/fmt.h:29,
                 from /usr/include/spdlog/common.h:50,
                 from /usr/include/gnuradio/logger.h:37,
                 from /build/reproducible-path/gr-limesdr-3.0.1.10.69/lib/device_handler.h:26,
                 from /build/reproducible-path/gr-limesdr-3.0.1.10.69/lib/device_handler.cc:21:
/usr/include/fmt/base.h: In instantiation of ‘static void fmt::v11::detail::value<Context>::format_custom(void*, fmt::v11::parse_context<typename Context::char_type>&, Context&) [with T = boost::basic_format<char>; Formatter = fmt::v11::formatter<boost::basic_format<char> >; Context = fmt::v11::context; typename Context::char_type = char]’:
/usr/include/fmt/base.h:2220:19:   required from ‘constexpr fmt::v11::detail::value<Context>::value(T&, fmt::v11::detail::custom_tag) [with T = const boost::basic_format<char>; typename std::enable_if<has_formatter<T, typename Context::char_type>(), int>::type <anonymous> = 0; Context = fmt::v11::context]’
 2220 |     custom.format = format_custom<value_type, formatter<value_type, char_type>>;
      |     ~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/fmt/base.h:2200:65:   required from ‘fmt::v11::detail::value<Context>::value(T&) [with T = const boost::basic_format<char>; typename std::enable_if<(fmt::v11::detail::use_formatter<T>::value || (!1)), int>::type <anonymous> = 0; Context = fmt::v11::context]’
 2200 |   FMT_CONSTEXPR20 FMT_INLINE value(T& x) : value(x, custom_tag()) {}
      |                                                                 ^
/usr/include/fmt/base.h:2773:20:   required from ‘constexpr fmt::v11::detail::format_arg_store<Context, NUM_ARGS, NUM_NAMED_ARGS, DESC> fmt::v11::make_format_args(T& ...) [with Context = context; T = {const boost::basic_format<char, std::char_traits<char>, std::allocator<char> >}; int NUM_ARGS = 1; int NUM_NAMED_ARGS = 0; long long unsigned int DESC = 15]’
 2773 |   return {{args...}};
      |                    ^
/usr/include/spdlog/logger.h:328:75:   required from ‘void spdlog::logger::log_(spdlog::source_loc, spdlog::level::level_enum, spdlog::string_view_t, Args&& ...) [with Args = {const boost::basic_format<char, std::char_traits<char>, std::allocator<char> >&}; spdlog::string_view_t = fmt::v11::basic_string_view<char>]’
  328 |             fmt::vformat_to(fmt::appender(buf), fmt, fmt::make_format_args(args...));
      |                                                      ~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~
/usr/include/spdlog/logger.h:80:13:   required from ‘void spdlog::logger::log(spdlog::source_loc, spdlog::level::level_enum, fmt::v11::format_string<T ...>, Args&& ...) [with Args = {const boost::basic_format<char, std::char_traits<char>, std::allocator<char> >&}; fmt::v11::format_string<T ...> = fmt::v11::fstring<const boost::basic_format<char, std::char_traits<char>, std::allocator<char> >&>]’
   80 |         log_(loc, lvl, details::to_string_view(fmt), std::forward<Args>(args)...);
      |         ~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/spdlog/logger.h:98:12:   required from ‘void spdlog::logger::log(spdlog::source_loc, spdlog::level::level_enum, const T&) [with T = boost::basic_format<char>; typename std::enable_if<(! spdlog::is_convertible_to_any_format_string<const T&>::value), int>::type <anonymous> = 0]’
   98 |         log(loc, lvl, "{}", msg);
      |         ~~~^~~~~~~~~~~~~~~~~~~~~
/usr/include/spdlog/logger.h:90:12:   required from ‘void spdlog::logger::log(spdlog::level::level_enum, const T&) [with T = boost::basic_format<char>]’
   90 |         log(source_loc{}, lvl, msg);
      |         ~~~^~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/spdlog/logger.h:243:12:   required from ‘void spdlog::logger::info(const T&) [with T = boost::basic_format<char>]’
  243 |         log(level::info, msg);
      |         ~~~^~~~~~~~~~~~~~~~~~
/build/reproducible-path/gr-limesdr-3.0.1.10.69/lib/device_handler.cc:62:9:   required from here
   62 |         GR_LOG_INFO(d_logger, boost::format("LimeSuite version: %s") % LMS_GetLibraryVersion());
      |         ^
/usr/include/fmt/base.h:2240:29: error: passing ‘const fmt::v11::formatter<boost::basic_format<char> >’ as ‘this’ argument discards qualifiers [-fpermissive]
 2240 |     ctx.advance_to(cf.format(*static_cast<qualified_type*>(arg), ctx));
      |                    ~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/gnuradio/logger.h:323:10: note:   in call to ‘decltype (((fmt::v11::formatter<boost::basic_format<char> >*)this)->fmt::v11::detail::native_formatter<fmt::v11::basic_string_view<char>, char, fmt::v11::detail::type::string_type>::format(bfmt.boost::basic_format<char>::str(), ctx)) fmt::v11::formatter<boost::basic_format<char> >::format(const boost::format&, FormatContext&) [with FormatContext = fmt::v11::context; decltype (((fmt::v11::formatter<boost::basic_format<char> >*)this)->fmt::v11::detail::native_formatter<fmt::v11::basic_string_view<char>, char, fmt::v11::detail::type::string_type>::format(bfmt.boost::basic_format<char>::str(), ctx)) = fmt::v11::basic_appender<char>; boost::format = boost::basic_format<char>]’
  323 |     auto format(const boost::format& bfmt, FormatContext& ctx)
      |          ^~~~~~
In file included from /usr/include/spdlog/fmt/fmt.h:29,
                 from /usr/include/spdlog/common.h:50,
                 from /usr/include/gnuradio/logger.h:37,
                 from /build/reproducible-path/gr-limesdr-3.0.1.10.69/lib/device_handler.h:26,
                 from /build/reproducible-path/gr-limesdr-3.0.1.10.69/lib/rfe_impl.cc:25:
/usr/include/fmt/base.h: In instantiation of ‘static void fmt::v11::detail::value<Context>::format_custom(void*, fmt::v11::parse_context<typename Context::char_type>&, Context&) [with T = boost::basic_format<char>; Formatter = fmt::v11::formatter<boost::basic_format<char> >; Context = fmt::v11::context; typename Context::char_type = char]’:
/usr/include/fmt/base.h:2220:19:   required from ‘constexpr fmt::v11::detail::value<Context>::value(T&, fmt::v11::detail::custom_tag) [with T = const boost::basic_format<char>; typename std::enable_if<has_formatter<T, typename Context::char_type>(), int>::type <anonymous> = 0; Context = fmt::v11::context]’
 2220 |     custom.format = format_custom<value_type, formatter<value_type, char_type>>;
      |     ~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/fmt/base.h:2200:65:   required from ‘fmt::v11::detail::value<Context>::value(T&) [with T = const boost::basic_format<char>; typename std::enable_if<(fmt::v11::detail::use_formatter<T>::value || (!1)), int>::type <anonymous> = 0; Context = fmt::v11::context]’
 2200 |   FMT_CONSTEXPR20 FMT_INLINE value(T& x) : value(x, custom_tag()) {}
      |                                                                 ^
/usr/include/fmt/base.h:2773:20:   required from ‘constexpr fmt::v11::detail::format_arg_store<Context, NUM_ARGS, NUM_NAMED_ARGS, DESC> fmt::v11::make_format_args(T& ...) [with Context = context; T = {const boost::basic_format<char, std::char_traits<char>, std::allocator<char> >}; int NUM_ARGS = 1; int NUM_NAMED_ARGS = 0; long long unsigned int DESC = 15]’
 2773 |   return {{args...}};
      |                    ^
/usr/include/spdlog/logger.h:328:75:   required from ‘void spdlog::logger::log_(spdlog::source_loc, spdlog::level::level_enum, spdlog::string_view_t, Args&& ...) [with Args = {const boost::basic_format<char, std::char_traits<char>, std::allocator<char> >&}; spdlog::string_view_t = fmt::v11::basic_string_view<char>]’
  328 |             fmt::vformat_to(fmt::appender(buf), fmt, fmt::make_format_args(args...));
      |                                                      ~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~
/usr/include/spdlog/logger.h:80:13:   required from ‘void spdlog::logger::log(spdlog::source_loc, spdlog::level::level_enum, fmt::v11::format_string<T ...>, Args&& ...) [with Args = {const boost::basic_format<char, std::char_traits<char>, std::allocator<char> >&}; fmt::v11::format_string<T ...> = fmt::v11::fstring<const boost::basic_format<char, std::char_traits<char>, std::allocator<char> >&>]’
   80 |         log_(loc, lvl, details::to_string_view(fmt), std::forward<Args>(args)...);
      |         ~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/spdlog/logger.h:98:12:   required from ‘void spdlog::logger::log(spdlog::source_loc, spdlog::level::level_enum, const T&) [with T = boost::basic_format<char>; typename std::enable_if<(! spdlog::is_convertible_to_any_format_string<const T&>::value), int>::type <anonymous> = 0]’
   98 |         log(loc, lvl, "{}", msg);
      |         ~~~^~~~~~~~~~~~~~~~~~~~~
/usr/include/spdlog/logger.h:90:12:   required from ‘void spdlog::logger::log(spdlog::level::level_enum, const T&) [with T = boost::basic_format<char>]’
   90 |         log(source_loc{}, lvl, msg);
      |         ~~~^~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/spdlog/logger.h:243:12:   required from ‘void spdlog::logger::info(const T&) [with T = boost::basic_format<char>]’
  243 |         log(level::info, msg);
      |         ~~~^~~~~~~~~~~~~~~~~~
/build/reproducible-path/gr-limesdr-3.0.1.10.69/lib/rfe_impl.cc:114:9:   required from here
  114 |         GR_LOG_INFO(d_logger, boost::format("LimeSuite version: %s") % LMS_GetLibraryVersion());
      |         ^
/usr/include/fmt/base.h:2240:29: error: passing ‘const fmt::v11::formatter<boost::basic_format<char> >’ as ‘this’ argument discards qualifiers [-fpermissive]
 2240 |     ctx.advance_to(cf.format(*static_cast<qualified_type*>(arg), ctx));
      |                    ~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/gnuradio/logger.h:323:10: note:   in call to ‘decltype (((fmt::v11::formatter<boost::basic_format<char> >*)this)->fmt::v11::detail::native_formatter<fmt::v11::basic_string_view<char>, char, fmt::v11::detail::type::string_type>::format(bfmt.boost::basic_format<char>::str(), ctx)) fmt::v11::formatter<boost::basic_format<char> >::format(const boost::format&, FormatContext&) [with FormatContext = fmt::v11::context; decltype (((fmt::v11::formatter<boost::basic_format<char> >*)this)->fmt::v11::detail::native_formatter<fmt::v11::basic_string_view<char>, char, fmt::v11::detail::type::string_type>::format(bfmt.boost::basic_format<char>::str(), ctx)) = fmt::v11::basic_appender<char>; boost::format = boost::basic_format<char>]’
  323 |     auto format(const boost::format& bfmt, FormatContext& ctx)
      |          ^~~~~~
make[3]: *** [lib/CMakeFiles/gnuradio-limesdr.dir/build.make:82: lib/CMakeFiles/gnuradio-limesdr.dir/device_handler.cc.o] Error 1

See
https://buildd.debian.org/status/fetch.php?pkg=gr-limesdr&arch=amd64&ver=3.0.1.10.69-4%2Bb2&stamp=1791374119&raw=0
for details.

Cheers

#1150298#10
Date:
2026-10-11 06:07:18 UTC
From:
To:
I have prepared a patch to fix build with fmtlib 11, tested with a
clean sid chroot.

Regards,
Aron

#1150298#17
Date:
2026-10-11 15:03:05 UTC
From:
To:
Dear maintainer,

I've prepared an NMU for gr-limesdr (versioned as 3.0.1.10.69-4.1) and
uploaded it to DELAYED/2. Please feel free to tell me if I should cancel it.

cu
Adrian

#1150298#22
Date:
2026-10-11 20:41:22 UTC
From:
To:
Hello,

Bug #1150298 in gr-limesdr reported by you has been fixed in the
Git repository and is awaiting an upload. You can see the commit
message below and you can check the diff of the fix at:

https://salsa.debian.org/debian-hamradio-team/gr-limesdr/-/commit/d0c2c0ba1e71220c7bf7d9c468abcbe6773fc2b8

(this message was generated automatically)
-- 
Greetings

https://bugs.debian.org/1150298

#1150298#27
Date:
2026-10-11 20:48:50 UTC
From:
To:
We believe that the bug you reported is fixed in the latest version of
gr-limesdr, which is due to be installed in the Debian FTP archive.

A summary of the changes between this version and the previous one is
attached.

Thank you for reporting the bug, which will now be closed.  If you
have further comments please address them to 1150298@bugs.debian.org,
and the maintainer will reopen the bug report if appropriate.

Debian distribution maintenance software
pp.
Christoph Berg <myon@debian.org> (supplier of updated gr-limesdr package)

(This message was generated automatically at their request; if you
believe that there is a problem with it please contact the archive
administrators by mailing ftpmaster@ftp-master.debian.org)
Format: 1.8
Date: Sun, 11 Oct 2026 22:18:05 +0200
Source: gr-limesdr
Architecture: source
Version: 3.0.1.10.69-5
Distribution: unstable
Urgency: medium
Maintainer: Debian Hamradio Maintainers <debian-hams@lists.debian.org>
Changed-By: Christoph Berg <myon@debian.org>
Closes: 1150298
Changes:
 gr-limesdr (3.0.1.10.69-5) unstable; urgency=medium
 .
   [ Aron Xu ]
   * Fix build with fmtlib 11. (Closes: #1150298)
 .
   [ Christoph Berg ]
   * B-D on python3-numpy-dev.
Checksums-Sha1:
 39c3bc2a87ce3c9ef5da039856fa7e2e2c7f7300 2412 gr-limesdr_3.0.1.10.69-5.dsc
 b49f4f48073cf1744064206659dedcac941e4057 10036 gr-limesdr_3.0.1.10.69-5.debian.tar.xz
Checksums-Sha256:
 04200a3b72bbff014e9d316e4dc3ddd834ac0ed4ef39185950b1d0d928799427 2412 gr-limesdr_3.0.1.10.69-5.dsc
 bbe5672f9fe0171f023182b0ae2781baa7e40603c2ef919654f3ff5829d8169c 10036 gr-limesdr_3.0.1.10.69-5.debian.tar.xz
Files:
 bd20e608db0347575c0d5dc5b9a2e58a 2412 hamradio optional gr-limesdr_3.0.1.10.69-5.dsc
 d0d3b71c09f33dfafb0f72b3118ce3ec 10036 hamradio optional gr-limesdr_3.0.1.10.69-5.debian.tar.xz
-----BEGIN PGP SIGNATURE-----

iQIzBAEBCgAdFiEEXEj+YVf0kXlZcIfGTFprqxLSp64FAmrL9BwACgkQTFprqxLS
p67vrg//dp6G9rGPP9+MYK/44Jxm0Ffq7loFCqDGRilXEvcmzzR3PdR8jRFcdyOU
LRBDDmh3Anm1y11H3ZZqqCl+1aNPoSeW9hKjNDpErcSyi6WtxZr4eoa436OTpplu
dCzZxqOpfKXah7zC7VkKSn4ZwZ1I9qbYpWcJjE5zkyTvYwZckSvdHX2eJFTAwdEV
ryGR0xyHezxKe8dxXZ8ie4Iz+PpH/KEUk/UMGtHS9Ee24c3bV8N5hllKjYG1Vwhe
07UA7nxPbDtlALqjnWfQOOQDA0SeLLYnrvwiPyTu+QeP+0Gzy8fGI06P8EHOcDKy
/Qb/F+kbphlxJ3lqvA9hYTOmTE1mBcbXHclSFNHlgJN86tBTTzaP3huJKZoZm9AF
epTW8JmGAyuw30U73L30RcJ6o343sVpvEE6L+ABiDNKyPtBfzCiveRYXNgoymd9i
G4O5uBjsl15HIzskhihZA5fOk7rmdWc5HHOTfrg7avdpJrA2KGJg8xN36evP/wJU
w4dlNuMV7F3783NCZamrRYnOxpbQRu75dArEDC8H4/3FK3JZhyfZh44akm1UESEg
8uZiNXMRNKkU8JyKX4OakcFUI2vhjpOVRX3Uk5udn55xFTHHtqlVX+f01LY8b/IF
3sK0QoK6PUdw6QFZEkVWWHehJlW3Rhf8GYtd/qOEpiqVVs70T3c=
=su/Y
-----END PGP SIGNATURE-----