Source: feather-wallet
Severity: important
Version: 2.8.1+dfsg-3
X-Debbugs-CC: [email protected]
Control: forwarded -1 https://github.com/feather-wallet/feather/issues/288
Control: affects -1 +src:zxing-cpp
Control: tags -1 +patch
Dear Debian feather-wallet package maintainer,
Your package fails to build from source when building against zxing-cpp 3.0.0
(currently in Debian Experimental):
[ 84%] Building CXX object
src/CMakeFiles/feather.dir/wizard/PageHardwareDevice.cpp.o
cd /build/reproducible-path/feather-wallet-2.8.1+dfsg/obj-x86_64-linux-gnu/src && /usr/bin/c++ -DFEATHER_TARGET_TRIPLET=\"\" -DFEATHER_VERSION=\"2.8.1\" -DHAS_WEBSOCKET=1
-DQT_CORE_LIB -DQT_GUI_LIB -DQT_MULTIMEDIAWIDGETS_LIB -DQT_MULTIMEDIA_LIB -DQT_NETWORK_LIB -DQT_NO_DEBUG -DQT_NO_DEBUG=1 -DQT_SVGWIDGETS_LIB -DQT_SVG_LIB -DQT_WAYLANDCLIENT_LIB
-DQT_WEBSOCKETS_LIB -DQT_WIDGETS_LIB -DTOR_VERSION=\"\" -DWITH_SCANNER=1 -I/build/reproducible-path/feather-wallet-2.8.1+dfsg/obj-x86_64-linux-gnu/src/feather_autogen/include
-I/build/reproducible-path/feather-wallet-2.8.1+dfsg/monero/include -I/build/reproducible-path/feather-wallet-2.8.1+dfsg/monero/src
-I/build/reproducible-path/feather-wallet-2.8.1+dfsg/monero/external -I/build/reproducible-path/feather-wallet-2.8.1+dfsg/monero/external/easylogging++
-I/build/reproducible-path/feather-wallet-2.8.1+dfsg/monero/contrib/epee/include -I/build/reproducible-path/feather-wallet-2.8.1+dfsg/src
-I/build/reproducible-path/feather-wallet-2.8.1+dfsg/src/libwalletqt -I/build/reproducible-path/feather-wallet-2.8.1+dfsg/src/model
-I/build/reproducible-path/feather-wallet-2.8.1+dfsg/src/utils -I/build/reproducible-path/feather-wallet-2.8.1+dfsg/src/qrcode
-I/build/reproducible-path/feather-wallet-2.8.1+dfsg/monero/contrib/epee/src/../include -isystem /usr/include/x86_64-linux-gnu/qt6/QtCore -isystem /usr/include/x86_64-linux-gnu/qt6
-isystem /usr/lib/x86_64-linux-gnu/qt6/mkspecs/linux-g++ -isystem /usr/include/x86_64-linux-gnu/qt6/QtWidgets -isystem /usr/include/x86_64-linux-gnu/qt6/QtGui -isystem
/usr/include/x86_64-linux-gnu/qt6/QtNetwork -isystem /usr/include/x86_64-linux-gnu/qt6/QtSvg -isystem /usr/include/x86_64-linux-gnu/qt6/QtWebSockets -isystem
/usr/include/x86_64-linux-gnu/qt6/QtSvgWidgets -isystem /usr/include/x86_64-linux-gnu/qt6/QtMultimedia -isystem /usr/include/x86_64-linux-gnu/qt6/QtMultimediaWidgets -isystem
/usr/include/x86_64-linux-gnu/qt6/QtWaylandClient -g -O2 -ffile-prefix-map=/build/reproducible-path/feather-wallet-2.8.1+dfsg=. -fstack-protector-strong -fstack-clash-protection
-Wformat -Werror=format-security -fcf-protection -Wdate-time -D_FORTIFY_SOURCE=2 -Wdate-time -D_FORTIFY_SOURCE=2 -Wformat -Wformat-security -fstack-protector
-fstack-protector-strong -fcf-protection=full -fstack-clash-protection -fPIC -Dcryptonote=MWYSUTPAXIBT -std=gnu++17 -MD -MT
src/CMakeFiles/feather.dir/wizard/PageHardwareDevice.cpp.o -MF CMakeFiles/feather.dir/wizard/PageHardwareDevice.cpp.o.d -o CMakeFiles/feather.dir/wizard/PageHardwareDevice.cpp.o -c
/build/reproducible-path/feather-wallet-2.8.1+dfsg/src/wizard/PageHardwareDevice.cpp
In file included from
/build/reproducible-path/feather-wallet-2.8.1+dfsg/src/widgets/PayToEdit.cpp:16:
/build/reproducible-path/feather-wallet-2.8.1+dfsg/src/qrcode/utils/QrCodeUtils.h:30:63:
error: ‘DecodeHints’ in namespace ‘ZXing’ does not name a type
30 | static Result ReadBarcode(const QImage& img, const
ZXing::DecodeHints& hints = { });
|
^~~~~~~~~~~
make[3]: *** [src/CMakeFiles/feather.dir/build.make:2221:
src/CMakeFiles/feather.dir/widgets/PayToEdit.cpp.o] Error 1
This is due to feather-wallet using deprecated APIs of zxing-cpp, which
was removed in zxing-cpp v3.0.0+.
This issue has been reported upstream at
https://github.com/feather-wallet/feather/issues/288 .
I am also attaching a proposed patch that could fix this problem in the
attachment.
Thanks,
Boyuan YangFrom: Boyuan Yang <[email protected]>
Date: Sat, 7 Feb 2026 11:58:36 -0500
Subject: Fix FTBFS with zxing-cpp 3.0.0
Bug: https://github.com/feather-wallet/feather/issues/288
---
src/qrcode/scanner/QrScanThread.cpp | 4 ++--
src/qrcode/utils/QrCodeUtils.cpp | 6 +++---
src/qrcode/utils/QrCodeUtils.h | 2 +-
3 files changed, 6 insertions(+), 6 deletions(-)
diff --git a/src/qrcode/scanner/QrScanThread.cpp
b/src/qrcode/scanner/QrScanThread.cpp
index e1ecaf9..d47a5b6 100644
--- a/src/qrcode/scanner/QrScanThread.cpp
+++ b/src/qrcode/scanner/QrScanThread.cpp
@@ -15,7 +15,7 @@ QrScanThread::QrScanThread(QObject *parent)
void QrScanThread::processQImage(const QImage &qimg)
{
- const auto hints = ZXing::DecodeHints()
+ const auto hints = ZXing::ReaderOptions()
.setFormats(ZXing::BarcodeFormat::QRCode)
.setTryHarder(true)
.setMaxNumberOfSymbols(1);
@@ -62,4 +62,4 @@ void QrScanThread::run()
processQImage(m_queue.takeFirst());
}
}
-}
\ No newline at end of file
+}
diff --git a/src/qrcode/utils/QrCodeUtils.cpp b/src/qrcode/utils/QrCodeUtils.cpp
index e957780..22ecd02 100644
--- a/src/qrcode/utils/QrCodeUtils.cpp
+++ b/src/qrcode/utils/QrCodeUtils.cpp
@@ -3,7 +3,7 @@
#include "QrCodeUtils.h"
-Result QrCodeUtils::ReadBarcode(const QImage& img, const ZXing::DecodeHints&
hints)
+Result QrCodeUtils::ReadBarcode(const QImage& img, const ZXing::ReaderOptions&
hints)
{
auto ImgFmtFromQImg = [](const QImage& img){
switch (img.format()) {
@@ -50,7 +50,7 @@ Result QrCodeUtils::ReadBarcode(const QImage& img, const
ZXing::DecodeHints& hin
QString QrCodeUtils::scanImage(const QImage &img) {
- const auto hints = ZXing::DecodeHints()
+ const auto hints = ZXing::ReaderOptions()
.setFormats(ZXing::BarcodeFormat::QRCode |
ZXing::BarcodeFormat::DataMatrix)
.setTryHarder(true)
.setBinarizer(ZXing::Binarizer::FixedThreshold);
@@ -58,4 +58,4 @@ QString QrCodeUtils::scanImage(const QImage &img) {
const auto result = ReadBarcode(img, hints);
return result.text();
-}
\ No newline at end of file
+}
diff --git a/src/qrcode/utils/QrCodeUtils.h b/src/qrcode/utils/QrCodeUtils.h
index 305bc96..b41c7be 100644
--- a/src/qrcode/utils/QrCodeUtils.h
+++ b/src/qrcode/utils/QrCodeUtils.h
@@ -27,7 +27,7 @@ private:
class QrCodeUtils {
public:
static QString scanImage(const QImage &img);
- static Result ReadBarcode(const QImage& img, const ZXing::DecodeHints&
hints = { });
+ static Result ReadBarcode(const QImage& img, const ZXing::ReaderOptions&
hints = { });
};
#endif //FEATHER_QRCODEUTILS_H