Source: labplot Version: 2.12.0-1 Severity: wishlist Tags: patch Hi,
liborcus 0.21.0 is in NEW (since 2.5 weeks, for experimental for now, see below) - available at https://people.debian.org/~rene/libreoffice/26.2/, though, too) As usual, LibreOffice only supports (without patching) *one* version. 25.8 does 0.20.x but 26.2 to be released in February only 0.21.x :) (Though this time this could probably be patched easier) Thankfully looking at the changes this time it's fairly trivial, the API change only affects LibreOffice: from https://gitlab.com/orcus/orcus/-/releases: --- snip --- When importing an XML document via orcus_xml, import_factory's finalize() method was previously not called which violates the interface contract. This version fixes it. added static method has_range(std::string_view stream) to both orcus_xml and orcus_json to detect whether a given XML and JSON document has at least one linkable range, respectively. added a variant of orcus::detect() function that takes a document content and the format type to check against. This variant only checks whether the document is of the specified type, and returns the result as a boolean value. The following functions now take a binary stream containing file content as std::string_view as opposed to the previous const char* and size_t pair: orcus_ods::detect(std::string_view strm) orcus_xlsx::detect(std::string_view strm) orcus_gnumeric::detect(std::string_view strm) orcus_xls_xml::detect(std::string_view strm) orcus_parquet::detect(std::string_view strm) orcus_json::detect(std::string_view strm) orcus_xml::detect(std::string_view strm) --- snip --- And labplot doesn't use detect afaics: rene@frodo:~/labplot-2.12.1/src$ grep -ri orcus CMakeLists.txt:if(Orcus_FOUND) CMakeLists.txt: target_link_libraries(labplotlib ${Orcus_LIBRARIES} ${Ixion_LIBRARY}) frontend/datasources/ImportFileWidget.cpp:#ifdef HAVE_ORCUS frontend/datasources/ImportFileWidget.cpp:#ifdef HAVE_ORCUS frontend/datasources/OdsOptionsWidget.cpp:#ifdef HAVE_ORCUS frontend/AboutDialog.cpp:#ifdef HAVE_ORCUS frontend/AboutDialog.cpp: version = QLatin1String(ORCUS_VERSION_STRING); frontend/AboutDialog.cpp: components << (QStringList() << QLatin1String("ORCUS") << i18n("Import ODS (Open Document Spreadsheet) files") << version << QStringLiteral("https://orcus.readthedocs.io/en/stable/index.html")); backend/datasources/filters/OdsFilter.cpp:#ifdef HAVE_ORCUS backend/datasources/filters/OdsFilter.cpp:#include <orcus/orcus_ods.hpp> backend/datasources/filters/OdsFilter.cpp:#include <orcus/spreadsheet/factory.hpp> backend/datasources/filters/OdsFilter.cpp:#include <orcus/spreadsheet/sheet.hpp> backend/datasources/filters/OdsFilter.cpp:using namespace orcus; backend/datasources/filters/OdsFilter.cpp:// * export data when Orcus support is stable backend/datasources/filters/OdsFilter.cpp:#ifdef HAVE_ORCUS backend/datasources/filters/OdsFilter.cpp: orcus_ods loader(&factory); backend/datasources/filters/OdsFilter.cpp: // TODO: "The export functionality of the Orcus library is highly experimental." backend/datasources/filters/OdsFilter.cpp:#ifdef HAVE_ORCUS backend/datasources/filters/OdsFilter.cpp: orcus_ods loader(&factory); backend/datasources/filters/OdsFilter.cpp:#ifdef HAVE_ORCUS backend/datasources/filters/OdsFilter.cpp:#ifdef HAVE_ORCUS backend/datasources/filters/OdsFilter.cpp: orcus_ods loader(&factory); backend/datasources/filters/OdsFilterPrivate.h:#ifdef HAVE_ORCUS backend/datasources/filters/OdsFilterPrivate.h:#include <orcus/spreadsheet/document.hpp> backend/datasources/filters/OdsFilterPrivate.h:#ifdef HAVE_ORCUS backend/datasources/filters/OdsFilterPrivate.h: orcus::spreadsheet::range_size_t m_ss{1048576, 16384}; backend/datasources/filters/OdsFilterPrivate.h: orcus::spreadsheet::document m_document{m_ss}; backend/datasources/filters/AbstractFileFilter.cpp:#ifdef HAVE_ORCUS // before ASCII, because ODS is XML and XML is ASCII rene@frodo:~/labplot-2.12.1/src$ cd backend/datasources/filters rene@frodo:~/labplot-2.12.1/src/backend/datasources/filters$ grep -ri detect * AbstractFileFilter.cpp:#ifdef HAVE_HDF5 // before NETCDF to treat NetCDF 4 files with .nc ending as HDF5 when fileInfo detects it (HDF4 not supported) AsciiFilter.cpp: return i18n("No new line detected"); AsciiFilter.cpp: case Status::SequentialDeviceAutomaticSeparatorDetection: AsciiFilter.cpp: case Status::HeaderDetectionNotAllowed: AsciiFilter.cpp: case Status::SeparatorDetectionNotAllowed: AsciiFilter.cpp: return i18n("Separator detection not allowed"); AsciiFilter.cpp:QString AsciiFilter::autoSeparatorDetectionString() { AsciiFilter.cpp: return (QStringList() << autoSeparatorDetectionString() << QStringLiteral("TAB") << QStringLiteral("SPACE") << QStringLiteral(",") << QStringLiteral(";") AsciiFilter.cpp: writer->writeAttribute(QStringLiteral("separatingCharacterDetection"), QString::number(p.automaticSeparatorDetection)); AsciiFilter.cpp: READ_INT_VALUE("separatingCharacterDetection", properties.automaticSeparatorDetection, bool); AsciiFilter.cpp: if (!properties.automaticSeparatorDetection && properties.endColumn > 0 AsciiFilter.cpp: if (properties.automaticSeparatorDetection) { AsciiFilter.cpp: * \param dateTimeFormat The datetime format will be updated if it is empty by the detected format AsciiFilter.cpp: if (p.automaticSeparatorDetection) AsciiFilter.cpp: return setLastError(Status::SeparatorDetectionNotAllowed); AsciiFilter.cpp: return setLastError(Status::HeaderDetectionNotAllowed); AsciiFilter.h: SequentialDeviceAutomaticSeparatorDetection, AsciiFilter.h: HeaderDetectionNotAllowed, AsciiFilter.h: SeparatorDetectionNotAllowed, AsciiFilter.h: static QString autoSeparatorDetectionString(); AsciiFilter.h: bool automaticSeparatorDetection{true}; HDF5Filter.cpp: props << QLatin1String(": FLETCHER32"); /* Error DetecDiftion Code */ OdsFilter.cpp: case ixion::cell_t::numeric: // numeric values are always double (can't detect if integer) $ So it's pretty straightforward to add (lib)orcus-0.21, orcus-parser-0.21 and orcus-spreadsheet-model-0.21 where it's used. (Interestingly https://github.com/KDE/labplot/commit/1201b2100d360d6247fadc1d958767637ac9b761 did update flatpak but nothing else did update the cmake files.... Probably it assumes an liborcus.pc/liborcus-spreadsheet-model.pc and it's siblings which we don't provide as upstream dosn't - IMHO with good reason as we saw e.g. on the last update - either.) Diff attached. Doing this in advance would help labplot just being bin-NMUable in the forthcoming transition (whenever it will be, fist needs to get out of NEW...) instead of needing a source upload. Regards, Rene
diff -Nru labplot-2.12.1/debian/changelog labplot-2.12.1/debian/changelog --- labplot-2.12.1/debian/changelog 2025-08-25 20:12:49.000000000 +0200 +++ labplot-2.12.1/debian/changelog 2025-10-05 14:40:19.000000000 +0200 @@ -1,3 +1,10 @@ +labplot (2.12.1-1.1) unstable; urgency=medium + + * Non-maintainer upload. + * allow build with liborcus 0.21 + + -- Rene Engelhard <[email protected]> Sun, 05 Oct 2025 14:40:19 +0200 + labplot (2.12.1-1) unstable; urgency=medium * New upstream release. diff -Nru labplot-2.12.1/debian/patches/orcus-0.21.diff labplot-2.12.1/debian/patches/orcus-0.21.diff --- labplot-2.12.1/debian/patches/orcus-0.21.diff 1970-01-01 01:00:00.000000000 +0100 +++ labplot-2.12.1/debian/patches/orcus-0.21.diff 2025-10-05 14:39:06.000000000 +0200 @@ -0,0 +1,37 @@ +--- labplot-2.12.1.orig/cmake/FindOrcus.cmake ++++ labplot-2.12.1/cmake/FindOrcus.cmake +@@ -14,21 +14,21 @@ if (Orcus_INCLUDE_DIR AND Orcus_LIBRARIE + set (Orcus_FOUND TRUE) + else () + find_package(PkgConfig QUIET) +- pkg_search_module(PC_ORCUS liborcus liborcus-0.20 liborcus-0.19 liborcus-0.18 liborcus-0.17 liborcus-0.16 QUIET) ++ pkg_search_module(PC_ORCUS liborcus liborcus-0.21 liborcus-0.20 liborcus-0.19 liborcus-0.18 liborcus-0.17 liborcus-0.16 QUIET) + pkg_search_module(PC_IXION libixion libixion-0.20 libixion-0.19 libixion-0.18 libixion-0.17 libixion-0.16 QUIET) + + find_library (Orcus_LIBRARY +- NAMES orcus orcus-0.20 orcus-0.19 orcus-0.18 orcus-0.17 orcus-0.16 ++ NAMES orcus orcus-0.21 orcus-0.20 orcus-0.19 orcus-0.18 orcus-0.17 orcus-0.16 + HINTS ${PC_ORCUS_LIBRARY_DIRS} + PATH_SUFFIXES orcus + ) + find_library (Orcus_parser_LIBRARY +- NAMES orcus-parser orcus-parser-0.20 orcus-parser-0.19 orcus-parser-0.18 orcus-parser-0.17 orcus-parser-0.16 ++ NAMES orcus-parser orcus-parser-0.21 orcus-parser-0.20 orcus-parser-0.19 orcus-parser-0.18 orcus-parser-0.17 orcus-parser-0.16 + HINTS ${PC_ORCUS_LIBRARY_DIRS} + PATH_SUFFIXES orcus + ) + find_library (Orcus_spreadsheet_LIBRARY +- NAMES orcus-spreadsheet-model orcus-spreadsheet-model-0.20 orcus-spreadsheet-model-0.19 orcus-spreadsheet-model-0.18 orcus-spreadsheet-model-0.17 orcus-spreadsheet-model-0.16 ++ NAMES orcus-spreadsheet-model orcus-spreadsheet-model-0.21 orcus-spreadsheet-model-0.20 orcus-spreadsheet-model-0.19 orcus-spreadsheet-model-0.18 orcus-spreadsheet-model-0.17 orcus-spreadsheet-model-0.16 + HINTS ${PC_ORCUS_LIBRARY_DIRS} + PATH_SUFFIXES orcus + ) +@@ -69,7 +69,7 @@ else () + set(LIBIXION_VERSION ${PC_IXION_VERSION}) + # latest version + if (NOT DEFINED LIBORCUS_VERSION) +- set(LIBORCUS_VERSION "0.20.0") ++ set(LIBORCUS_VERSION "0.21.0") + endif() + if (NOT DEFINED LIBIXION_VERSION) + set(LIBIXION_VERSION "0.20.0") diff -Nru labplot-2.12.1/debian/patches/series labplot-2.12.1/debian/patches/series --- labplot-2.12.1/debian/patches/series 1970-01-01 01:00:00.000000000 +0100 +++ labplot-2.12.1/debian/patches/series 2025-10-05 14:38:25.000000000 +0200 @@ -0,0 +1 @@ +orcus-0.21.diff

