diff --git a/0001-Support-ZXing-1.4.0.patch b/0001-Support-ZXing-1.4.0.patch new file mode 100644 index 0000000..e2ffcc6 --- /dev/null +++ b/0001-Support-ZXing-1.4.0.patch @@ -0,0 +1,68 @@ +From b08fd64711165c10bf1e88e6add4e66f68e32dc5 Mon Sep 17 00:00:00 2001 +From: Volker Krause +Date: Fri, 8 Jul 2022 16:04:19 +0200 +Subject: [PATCH] Support ZXing 1.4.0 + +The previous code crashes (if it builds at all) with ZXing 1.4.0, so +distributions updating to 1.4.0 would need to apply this patch on top +of 22.04.3 as well. + +(cherry picked from commit e60195421aa159462353892ed32bf46ac8c57d19) +--- + src/lib/barcodedecoder.cpp | 26 ++++++++++++++++++++++++++ + 1 file changed, 26 insertions(+) + +diff --git a/src/lib/barcodedecoder.cpp b/src/lib/barcodedecoder.cpp +index b38140a..40e0c64 100644 +--- a/src/lib/barcodedecoder.cpp ++++ b/src/lib/barcodedecoder.cpp +@@ -15,6 +15,7 @@ + #include + + #ifdef HAVE_ZXING ++#define ZX_USE_UTF8 1 + #ifdef ZXING_USE_READBARCODE + #include + #else +@@ -244,6 +245,30 @@ void BarcodeDecoder::decodeZxing(const QImage &img, BarcodeDecoder::BarcodeTypes + #endif + + if (res.isValid()) { ++#if ZXING_VERSION >= QT_VERSION_CHECK(1, 4, 0) ++ // detect content type ++ std::string zxUtf8Text; ++ if (res.contentType() == ZXing::ContentType::Text) { ++ result.contentType = Result::Any; ++ zxUtf8Text = res.text(); ++ // check if the text is ASCII-only (in which case we allow access as byte array as well) ++ if (std::any_of(zxUtf8Text.begin(), zxUtf8Text.end(), [](unsigned char c) { return c > 0x7F; })) { ++ result.contentType &= ~Result::ByteArray; ++ } ++ } else { ++ result.contentType = Result::ByteArray; ++ } ++ ++ // decode content ++ if (result.contentType & Result::ByteArray) { ++ QByteArray b; ++ b.resize(res.bytes().size()); ++ std::copy(res.bytes().begin(), res.bytes().end(), b.begin()); ++ result.content = b; ++ } else { ++ result.content = QString::fromStdString(zxUtf8Text); ++ } ++#else + // detect content type + result.contentType = Result::Any; + if (std::any_of(res.text().begin(), res.text().end(), [](const auto c) { return c > 255; })) { +@@ -262,6 +287,7 @@ void BarcodeDecoder::decodeZxing(const QImage &img, BarcodeDecoder::BarcodeTypes + } else { + result.content = QString::fromStdWString(res.text()); + } ++#endif + result.positive |= formatToType(res.format()); + } else { + result.negative |= format; +-- +2.36.1 + diff --git a/kitinerary.changes b/kitinerary.changes index e32a5d0..3fe2ef0 100644 --- a/kitinerary.changes +++ b/kitinerary.changes @@ -1,3 +1,9 @@ +------------------------------------------------------------------- +Wed Jul 20 16:24:51 UTC 2022 - Fabian Vogt + +- Add patch to fix build with ZXing 1.4.0: + * 0001-Support-ZXing-1.4.0.patch + ------------------------------------------------------------------- Tue Jul 5 17:03:22 UTC 2022 - Christophe Giboudeaux diff --git a/kitinerary.spec b/kitinerary.spec index bb89749..6fa2c6d 100644 --- a/kitinerary.spec +++ b/kitinerary.spec @@ -1,7 +1,7 @@ # # spec file for package kitinerary # -# Copyright (c) 2021 SUSE LLC +# Copyright (c) 2022 SUSE LLC # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -29,13 +29,15 @@ Source: https://download.kde.org/stable/release-service/%{version}/src/% Source1: https://download.kde.org/stable/release-service/%{version}/src/%{name}-%{version}.tar.xz.sig Source2: applications.keyring %endif +# PATCH-FIX-UPSTREAM +Patch1: 0001-Support-ZXing-1.4.0.patch BuildRequires: extra-cmake-modules BuildRequires: kf5-filesystem BuildRequires: libopenssl-devel BuildRequires: libpoppler-qt5-devel +BuildRequires: libqt5-qtdeclarative-private-headers-devel BuildRequires: libxml2-devel BuildRequires: zlib-devel -BuildRequires: libqt5-qtdeclarative-private-headers-devel BuildRequires: cmake(KF5CalendarCore) BuildRequires: cmake(KF5Contacts) BuildRequires: cmake(KF5I18n) @@ -69,12 +71,12 @@ This package contains the library itself. Summary: Development files for kitinerary Group: Development/Libraries/KDE Requires: libKPimItinerary5 = %{version} +Requires: libqt5-qtdeclarative-private-headers-devel Requires: cmake(KF5CalendarCore) Requires: cmake(KF5Contacts) Requires: cmake(KF5Mime) Requires: cmake(KPimPkPass) Requires: cmake(Qt5Gui) -Requires: libqt5-qtdeclarative-private-headers-devel %description devel This package contains all necessary include files and libraries needed