diff --git a/0001-Upgrade-liborcus-to-0.16.0.patch b/0001-Upgrade-liborcus-to-0.16.0.patch new file mode 100644 index 0000000..55558c3 --- /dev/null +++ b/0001-Upgrade-liborcus-to-0.16.0.patch @@ -0,0 +1,805 @@ +From 9ffb1f6ac0f11fd446fd0e84b8dc69898691b4d3 Mon Sep 17 00:00:00 2001 +From: Kohei Yoshida +Date: Wed, 9 Sep 2020 21:23:48 -0400 +Subject: [PATCH] Upgrade liborcus to 0.16.0. + +Change-Id: Iae29fb26417dfc161698a81bee84e81545969065 +Reviewed-on: https://gerrit.libreoffice.org/c/core/+/102502 +Tested-by: Jenkins +Reviewed-by: Kohei Yoshida +--- + RepositoryExternal.mk | 4 +- + configure.ac | 2 +- + download.lst | 4 +- + ...k-all-untentionally-unused-variables.patch | 376 ++++++++++++++++++ + external/liborcus/ExternalPackage_liborcus.mk | 8 +- + external/liborcus/ExternalProject_liborcus.mk | 4 +- + external/liborcus/Library_orcus-parser.mk | 1 + + external/liborcus/Library_orcus.mk | 4 + + external/liborcus/UnpackedTarball_liborcus.mk | 1 + + .../liborcus/windows-constants-hack.patch | 2 +- + sc/source/filter/inc/orcusinterface.hxx | 21 +- + sc/source/filter/orcus/interface.cxx | 82 ++-- + sc/source/filter/orcus/xmlcontext.cxx | 7 +- + sc/source/ui/xmlsource/xmlsourcedlg.cxx | 6 +- + 14 files changed, 475 insertions(+), 47 deletions(-) + create mode 100644 external/liborcus/0001-Mark-all-untentionally-unused-variables.patch + +diff --git a/RepositoryExternal.mk b/RepositoryExternal.mk +index 7f623ac..df765fa 100644 +--- a/RepositoryExternal.mk ++++ b/RepositoryExternal.mk +@@ -3281,7 +3281,7 @@ $(call gb_LinkTarget_set_include,$(1),\ + ) + + $(call gb_LinkTarget_add_libs,$(1),\ +- -L$(call gb_UnpackedTarball_get_dir,liborcus)/src/liborcus/.libs -lorcus-0.15 \ ++ -L$(call gb_UnpackedTarball_get_dir,liborcus)/src/liborcus/.libs -lorcus-0.16 \ + ) + + $(if $(SYSTEM_BOOST), \ +@@ -3300,7 +3300,7 @@ $(call gb_LinkTarget_set_include,$(1),\ + ) + + $(call gb_LinkTarget_add_libs,$(1),\ +- -L$(call gb_UnpackedTarball_get_dir,liborcus)/src/parser/.libs -lorcus-parser-0.15 \ ++ -L$(call gb_UnpackedTarball_get_dir,liborcus)/src/parser/.libs -lorcus-parser-0.16 \ + ) + + endef +diff --git a/configure.ac b/configure.ac +index ce14b54..36342b1 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -9827,7 +9827,7 @@ AC_SUBST(ENABLE_FUZZERS) + dnl =================================================================== + dnl Orcus + dnl =================================================================== +-libo_CHECK_SYSTEM_MODULE([orcus],[ORCUS],[liborcus-0.15 >= 0.15.0]) ++libo_CHECK_SYSTEM_MODULE([orcus],[ORCUS],[liborcus-0.16 >= 0.16.0]) + if test "$with_system_orcus" != "yes"; then + if test "$SYSTEM_BOOST" = "TRUE"; then + # =========================================================== +diff --git a/download.lst b/download.lst +index 6398a09..1f3b4b1 100644 +--- a/download.lst ++++ b/download.lst +@@ -204,8 +204,8 @@ export OPENLDAP_SHA256SUM := cdd6cffdebcd95161a73305ec13fc7a78e9707b46ca9f84fb89 + export OPENLDAP_TARBALL := openldap-2.4.45.tgz + export OPENSSL_SHA256SUM := 14cb464efe7ac6b54799b34456bd69558a749a4931ecfd9cf9f71d7881cac7bc + export OPENSSL_TARBALL := openssl-1.0.2t.tar.gz +-export ORCUS_SHA256SUM := cfb2aa60825f2a78589ed030c07f46a1ee16ef8a2d1bf2279192fbc1ae5a5f61 +-export ORCUS_TARBALL := liborcus-0.15.4.tar.bz2 ++export ORCUS_SHA256SUM := 854c6ec167ace59baa2984e175bac7b5b2af91bfde4bb10d2088b87a51ed76ec ++export ORCUS_TARBALL := liborcus-0.16.0.tar.bz2 + export OWNCLOUD_ANDROID_LIB_SHA256SUM := b18b3e3ef7fae6a79b62f2bb43cc47a5346b6330f6a383dc4be34439aca5e9fb + export OWNCLOUD_ANDROID_LIB_TARBALL := owncloud-android-library-0.9.4-no-binary-deps.tar.gz + export PAGEMAKER_SHA256SUM := 66adacd705a7d19895e08eac46d1e851332adf2e736c566bef1164e7a442519d +diff --git a/external/liborcus/0001-Mark-all-untentionally-unused-variables.patch b/external/liborcus/0001-Mark-all-untentionally-unused-variables.patch +new file mode 100644 +index 0000000..b0f6a57 +--- /dev/null ++++ b/external/liborcus/0001-Mark-all-untentionally-unused-variables.patch +@@ -0,0 +1,376 @@ ++From 6d34c41b661a9e8dddf6d08bf1f3c1fd4f5581da Mon Sep 17 00:00:00 2001 ++From: Kohei Yoshida ++Date: Fri, 11 Sep 2020 21:39:09 -0400 ++Subject: [PATCH] Mark all untentionally unused variables. ++ ++--- ++ include/orcus/css_parser.hpp | 70 ++++++++++++++++++++++++------ ++ include/orcus/csv_parser.hpp | 5 ++- ++ include/orcus/json_parser.hpp | 15 +++++-- ++ include/orcus/sax_parser.hpp | 35 ++++++++++++--- ++ include/orcus/sax_token_parser.hpp | 20 +++++++-- ++ include/orcus/yaml_parser.hpp | 10 ++++- ++ 6 files changed, 124 insertions(+), 31 deletions(-) ++ ++diff --git a/include/orcus/css_parser.hpp b/include/orcus/css_parser.hpp ++index cdfae5e0..3e96980b 100644 ++--- a/include/orcus/css_parser.hpp +++++ b/include/orcus/css_parser.hpp ++@@ -31,23 +31,44 @@ namespace orcus { ++ class css_handler ++ { ++ public: ++- void at_rule_name(const char* p, size_t n) {} +++ void at_rule_name(const char* p, size_t n) +++ { +++ (void)p; (void)n; +++ } ++ ++- void simple_selector_type(const char* p, size_t n) {} +++ void simple_selector_type(const char* p, size_t n) +++ { +++ (void)p; (void)n; +++ } ++ ++- void simple_selector_class(const char* p, size_t n) {} +++ void simple_selector_class(const char* p, size_t n) +++ { +++ (void)p; (void)n; +++ } ++ ++- void simple_selector_pseudo_element(orcus::css::pseudo_element_t pe) {} +++ void simple_selector_pseudo_element(orcus::css::pseudo_element_t pe) +++ { +++ (void)pe; +++ } ++ ++- void simple_selector_pseudo_class(orcus::css::pseudo_class_t pc) {} +++ void simple_selector_pseudo_class(orcus::css::pseudo_class_t pc) +++ { +++ (void)pc; +++ } ++ ++- void simple_selector_id(const char* p, size_t n) {} +++ void simple_selector_id(const char* p, size_t n) +++ { +++ (void)p; (void)n; +++ } ++ ++ void end_simple_selector() {} ++ ++ void end_selector() {} ++ ++- void combinator(orcus::css::combinator_t combinator) {} +++ void combinator(orcus::css::combinator_t combinator) +++ { +++ (void)combinator; +++ } ++ ++ /** ++ * Called at each property name. ++@@ -55,7 +76,10 @@ public: ++ * @param p pointer to the char-array containing the property name string. ++ * @param n length of the property name string. ++ */ ++- void property_name(const char* p, size_t n) {} +++ void property_name(const char* p, size_t n) +++ { +++ (void)p; (void)n; +++ } ++ ++ /** ++ * Called at each ordinary property value string. ++@@ -63,7 +87,10 @@ public: ++ * @param p pointer to the char-array containing the value string. ++ * @param n length of the value string. ++ */ ++- void value(const char* p, size_t n) {} +++ void value(const char* p, size_t n) +++ { +++ (void)p; (void)n; +++ } ++ ++ /** ++ * Called at each RGB color value of a property. ++@@ -72,7 +99,10 @@ public: ++ * @param green value of green (0-255) ++ * @param blue value of blue (0-255) ++ */ ++- void rgb(uint8_t red, uint8_t green, uint8_t blue) {} +++ void rgb(uint8_t red, uint8_t green, uint8_t blue) +++ { +++ (void)red; (void)green; (void)blue; +++ } ++ ++ /** ++ * Called at each RGB color value of a property with alpha transparency ++@@ -83,7 +113,10 @@ public: ++ * @param blue value of blue (0-255) ++ * @param alpha alpha transparency value ++ */ ++- void rgba(uint8_t red, uint8_t green, uint8_t blue, double alpha) {} +++ void rgba(uint8_t red, uint8_t green, uint8_t blue, double alpha) +++ { +++ (void)red; (void)green; (void)blue; (void)alpha; +++ } ++ ++ /** ++ * Called at each HSL color value of a property. ++@@ -92,7 +125,10 @@ public: ++ * @param sat saturation ++ * @param light lightness ++ */ ++- void hsl(uint8_t hue, uint8_t sat, uint8_t light) {} +++ void hsl(uint8_t hue, uint8_t sat, uint8_t light) +++ { +++ (void)hue; (void)sat; (void)light; +++ } ++ ++ /** ++ * Called at each HSL color value of a property with alpha transparency ++@@ -103,7 +139,10 @@ public: ++ * @param light lightness ++ * @param alpha alpha value ++ */ ++- void hsla(uint8_t hue, uint8_t sat, uint8_t light, double alpha) {} +++ void hsla(uint8_t hue, uint8_t sat, uint8_t light, double alpha) +++ { +++ (void)hue; (void)sat; (void)light; (void)alpha; +++ } ++ ++ /** ++ * Called at each URL value of a property. ++@@ -111,7 +150,10 @@ public: ++ * @param p pointer to the char-array containing the URL value string. ++ * @param n length of the URL value string. ++ */ ++- void url(const char* p, size_t n) {} +++ void url(const char* p, size_t n) +++ { +++ (void)p; (void)n; +++ } ++ ++ /** ++ * Called when the parsing begins. ++diff --git a/include/orcus/csv_parser.hpp b/include/orcus/csv_parser.hpp ++index a873b0f2..27b4f924 100644 ++--- a/include/orcus/csv_parser.hpp +++++ b/include/orcus/csv_parser.hpp ++@@ -47,7 +47,10 @@ public: ++ * the text content is guaranteed to be valid so long as ++ * the original CSV stream content is valid. ++ */ ++- void cell(const char* p, size_t n, bool transient) {} +++ void cell(const char* p, size_t n, bool transient) +++ { +++ (void)p; (void)n; (void)transient; +++ } ++ }; ++ ++ template ++diff --git a/include/orcus/json_parser.hpp b/include/orcus/json_parser.hpp ++index 51a3d7cc..ef22b3a8 100644 ++--- a/include/orcus/json_parser.hpp +++++ b/include/orcus/json_parser.hpp ++@@ -54,7 +54,10 @@ public: ++ * pointer points to somewhere in the JSON stream being ++ * parsed. ++ */ ++- void object_key(const char* p, size_t len, bool transient) {} +++ void object_key(const char* p, size_t len, bool transient) +++ { +++ (void)p; (void)len; (void)transient; +++ } ++ ++ /** ++ * Called when the closing curly brace of an object is encountered. ++@@ -87,14 +90,20 @@ public: ++ * pointer points to somewhere in the JSON stream being ++ * parsed. ++ */ ++- void string(const char* p, size_t len, bool transient) {} +++ void string(const char* p, size_t len, bool transient) +++ { +++ (void)p; (void)len; (void)transient; +++ } ++ ++ /** ++ * Called when a numeric value is encountered. ++ * ++ * @param val numeric value. ++ */ ++- void number(double val) {} +++ void number(double val) +++ { +++ (void)val; +++ } ++ }; ++ ++ /** ++diff --git a/include/orcus/sax_parser.hpp b/include/orcus/sax_parser.hpp ++index 73c17d06..3b21bfdf 100644 ++--- a/include/orcus/sax_parser.hpp +++++ b/include/orcus/sax_parser.hpp ++@@ -30,7 +30,10 @@ public: ++ * ++ * @param param struct containing doctype declaration data. ++ */ ++- void doctype(const orcus::sax::doctype_declaration& param) {} +++ void doctype(const orcus::sax::doctype_declaration& param) +++ { +++ (void)param; +++ } ++ ++ /** ++ * Called when <?... is encountered, where the '...' may be an ++@@ -39,28 +42,40 @@ public: ++ * ++ * @param decl name of the identifier. ++ */ ++- void start_declaration(const orcus::pstring& decl) {} +++ void start_declaration(const orcus::pstring& decl) +++ { +++ (void)decl; +++ } ++ ++ /** ++ * Called when the closing tag (>) of a <?... ?> is encountered. ++ * ++ * @param decl name of the identifier. ++ */ ++- void end_declaration(const orcus::pstring& decl) {} +++ void end_declaration(const orcus::pstring& decl) +++ { +++ (void)decl; +++ } ++ ++ /** ++ * Called at the start of each element. ++ * ++ * @param elem information of the element being parsed. ++ */ ++- void start_element(const orcus::sax::parser_element& elem) {} +++ void start_element(const orcus::sax::parser_element& elem) +++ { +++ (void)elem; +++ } ++ ++ /** ++ * Called at the end of each element. ++ * ++ * @param elem information of the element being parsed. ++ */ ++- void end_element(const orcus::sax::parser_element& elem) {} +++ void end_element(const orcus::sax::parser_element& elem) +++ { +++ (void)elem; +++ } ++ ++ /** ++ * Called when a segment of a text content is parsed. Each text content ++@@ -76,7 +91,10 @@ public: ++ * a non-text value or be interned within the scope of ++ * the callback. ++ */ ++- void characters(const orcus::pstring& val, bool transient) {} +++ void characters(const orcus::pstring& val, bool transient) +++ { +++ (void)val; (void)transient; +++ } ++ ++ /** ++ * Called upon parsing of an attribute of an element. Note that when ++@@ -86,7 +104,10 @@ public: ++ * ++ * @param attr struct containing attribute information. ++ */ ++- void attribute(const orcus::sax::parser_attribute& attr) {} +++ void attribute(const orcus::sax::parser_attribute& attr) +++ { +++ (void)attr; +++ } ++ }; ++ ++ /** ++diff --git a/include/orcus/sax_token_parser.hpp b/include/orcus/sax_token_parser.hpp ++index 1452bc27..6b1b1de4 100644 ++--- a/include/orcus/sax_token_parser.hpp +++++ b/include/orcus/sax_token_parser.hpp ++@@ -71,7 +71,10 @@ public: ++ * ++ * @param decl struct containing the attributes of the XML declaration. ++ */ ++- void declaration(const orcus::xml_declaration_t& decl) {} +++ void declaration(const orcus::xml_declaration_t& decl) +++ { +++ (void)decl; +++ } ++ ++ /** ++ * Called at the start of each element. ++@@ -79,7 +82,10 @@ public: ++ * @param elem struct containing the element's information as well as all ++ * the attributes that belong to the element. ++ */ ++- void start_element(const orcus::xml_token_element_t& elem) {} +++ void start_element(const orcus::xml_token_element_t& elem) +++ { +++ (void)elem; +++ } ++ ++ /** ++ * Called at the end of each element. ++@@ -87,7 +93,10 @@ public: ++ * @param elem struct containing the element's information as well as all ++ * the attributes that belong to the element. ++ */ ++- void end_element(const orcus::xml_token_element_t& elem) {} +++ void end_element(const orcus::xml_token_element_t& elem) +++ { +++ (void)elem; +++ } ++ ++ /** ++ * Called when a segment of a text content is parsed. Each text content ++@@ -103,7 +112,10 @@ public: ++ * a non-text value or be interned within the scope of ++ * the callback. ++ */ ++- void characters(const orcus::pstring& val, bool transient) {} +++ void characters(const orcus::pstring& val, bool transient) +++ { +++ (void)val; (void)transient; +++ } ++ }; ++ ++ /** ++diff --git a/include/orcus/yaml_parser.hpp b/include/orcus/yaml_parser.hpp ++index 797ebbec..8d16fbc7 100644 ++--- a/include/orcus/yaml_parser.hpp +++++ b/include/orcus/yaml_parser.hpp ++@@ -72,14 +72,20 @@ public: ++ * @param p pointer to the first character of the string value. ++ * @param len length of the string value. ++ */ ++- void string(const char* p, size_t n) {} +++ void string(const char* p, size_t n) +++ { +++ (void)p; (void)n; +++ } ++ ++ /** ++ * Called when a numeric value is encountered. ++ * ++ * @param val numeric value. ++ */ ++- void number(double val) {} +++ void number(double val) +++ { +++ (void)val; +++ } ++ ++ /** ++ * Called when a boolean 'true' keyword is encountered. ++-- ++2.25.1 ++ +diff --git a/external/liborcus/ExternalPackage_liborcus.mk b/external/liborcus/ExternalPackage_liborcus.mk +index 21dd1bf..7476918 100644 +--- a/external/liborcus/ExternalPackage_liborcus.mk ++++ b/external/liborcus/ExternalPackage_liborcus.mk +@@ -12,11 +12,11 @@ $(eval $(call gb_ExternalPackage_ExternalPackage,liborcus,liborcus)) + $(eval $(call gb_ExternalPackage_use_external_project,liborcus,liborcus)) + + ifeq ($(OS),MACOSX) +-$(eval $(call gb_ExternalPackage_add_file,liborcus,$(LIBO_LIB_FOLDER)/liborcus-0.15.0.dylib,src/liborcus/.libs/liborcus-0.15.0.dylib)) +-$(eval $(call gb_ExternalPackage_add_file,liborcus,$(LIBO_LIB_FOLDER)/liborcus-parser-0.15.0.dylib,src/parser/.libs/liborcus-parser-0.15.0.dylib)) ++$(eval $(call gb_ExternalPackage_add_file,liborcus,$(LIBO_LIB_FOLDER)/liborcus-0.16.0.dylib,src/liborcus/.libs/liborcus-0.16.0.dylib)) ++$(eval $(call gb_ExternalPackage_add_file,liborcus,$(LIBO_LIB_FOLDER)/liborcus-parser-0.16.0.dylib,src/parser/.libs/liborcus-parser-0.16.0.dylib)) + else ifeq ($(DISABLE_DYNLOADING),) +-$(eval $(call gb_ExternalPackage_add_file,liborcus,$(LIBO_LIB_FOLDER)/liborcus-0.15.so.0,src/liborcus/.libs/liborcus-0.15.so.0.0.0)) +-$(eval $(call gb_ExternalPackage_add_file,liborcus,$(LIBO_LIB_FOLDER)/liborcus-parser-0.15.so.0,src/parser/.libs/liborcus-parser-0.15.so.0.0.0)) ++$(eval $(call gb_ExternalPackage_add_file,liborcus,$(LIBO_LIB_FOLDER)/liborcus-0.16.so.0,src/liborcus/.libs/liborcus-0.16.so.0.0.0)) ++$(eval $(call gb_ExternalPackage_add_file,liborcus,$(LIBO_LIB_FOLDER)/liborcus-parser-0.16.so.0,src/parser/.libs/liborcus-parser-0.16.so.0.0.0)) + endif + + # vim: set noet sw=4 ts=4: +diff --git a/external/liborcus/ExternalProject_liborcus.mk b/external/liborcus/ExternalProject_liborcus.mk +index 38658cc..3671294 100644 +--- a/external/liborcus/ExternalProject_liborcus.mk ++++ b/external/liborcus/ExternalProject_liborcus.mk +@@ -123,8 +123,8 @@ $(call gb_ExternalProject_get_state_target,liborcus,build) : + $(MAKE) \ + $(if $(filter MACOSX,$(OS)),\ + && $(PERL) $(SRCDIR)/solenv/bin/macosx-change-install-names.pl shl OOO \ +- $(EXTERNAL_WORKDIR)/src/liborcus/.libs/liborcus-0.15.0.dylib \ +- $(EXTERNAL_WORKDIR)/src/parser/.libs/liborcus-parser-0.15.0.dylib \ ++ $(EXTERNAL_WORKDIR)/src/liborcus/.libs/liborcus-0.16.0.dylib \ ++ $(EXTERNAL_WORKDIR)/src/parser/.libs/liborcus-parser-0.16.0.dylib \ + ) \ + ) + $(call gb_Trace_EndRange,liborcus,EXTERNAL) +diff --git a/external/liborcus/Library_orcus-parser.mk b/external/liborcus/Library_orcus-parser.mk +index d3cbddb..4e46591 100644 +--- a/external/liborcus/Library_orcus-parser.mk ++++ b/external/liborcus/Library_orcus-parser.mk +@@ -63,6 +63,7 @@ $(eval $(call gb_Library_add_generated_exception_objects,orcus-parser,\ + UnpackedTarball/liborcus/src/parser/tokens \ + UnpackedTarball/liborcus/src/parser/types \ + UnpackedTarball/liborcus/src/parser/xml_namespace \ ++ UnpackedTarball/liborcus/src/parser/xml_writer \ + UnpackedTarball/liborcus/src/parser/yaml_parser_base \ + UnpackedTarball/liborcus/src/parser/zip_archive \ + UnpackedTarball/liborcus/src/parser/zip_archive_stream \ +diff --git a/external/liborcus/Library_orcus.mk b/external/liborcus/Library_orcus.mk +index ea99e75..0a0ca58 100644 +--- a/external/liborcus/Library_orcus.mk ++++ b/external/liborcus/Library_orcus.mk +@@ -85,6 +85,7 @@ $(eval $(call gb_Library_add_generated_exception_objects,orcus,\ + UnpackedTarball/liborcus/src/liborcus/odf_tokens \ + UnpackedTarball/liborcus/src/liborcus/ods_content_xml_context \ + UnpackedTarball/liborcus/src/liborcus/ods_content_xml_handler \ ++ UnpackedTarball/liborcus/src/liborcus/ods_dde_links_context \ + UnpackedTarball/liborcus/src/liborcus/ods_session_data \ + UnpackedTarball/liborcus/src/liborcus/ooxml_content_types \ + UnpackedTarball/liborcus/src/liborcus/ooxml_global \ +@@ -103,6 +104,7 @@ $(eval $(call gb_Library_add_generated_exception_objects,orcus,\ + UnpackedTarball/liborcus/src/liborcus/orcus_xls_xml \ + UnpackedTarball/liborcus/src/liborcus/orcus_xlsx \ + UnpackedTarball/liborcus/src/liborcus/orcus_xml \ ++ UnpackedTarball/liborcus/src/liborcus/orcus_xml_impl \ + UnpackedTarball/liborcus/src/liborcus/orcus_xml_map_def \ + UnpackedTarball/liborcus/src/liborcus/session_context \ + UnpackedTarball/liborcus/src/liborcus/spreadsheet_iface_util \ +@@ -134,7 +136,9 @@ $(eval $(call gb_Library_add_generated_exception_objects,orcus,\ + UnpackedTarball/liborcus/src/liborcus/xml_simple_stream_handler \ + UnpackedTarball/liborcus/src/liborcus/xml_stream_handler \ + UnpackedTarball/liborcus/src/liborcus/xml_stream_parser \ ++ UnpackedTarball/liborcus/src/liborcus/xml_structure_mapper \ + UnpackedTarball/liborcus/src/liborcus/xml_structure_tree \ ++ UnpackedTarball/liborcus/src/liborcus/xpath_parser \ + UnpackedTarball/liborcus/src/liborcus/yaml_document_tree \ + )) + +diff --git a/external/liborcus/UnpackedTarball_liborcus.mk b/external/liborcus/UnpackedTarball_liborcus.mk +index e5e33b0..4736dbc 100644 +--- a/external/liborcus/UnpackedTarball_liborcus.mk ++++ b/external/liborcus/UnpackedTarball_liborcus.mk +@@ -20,6 +20,7 @@ $(eval $(call gb_UnpackedTarball_add_patches,liborcus,\ + external/liborcus/gcc9.patch.0 \ + external/liborcus/libtool.patch.0 \ + external/liborcus/fix-pch.patch.0 \ ++ external/liborcus/0001-Mark-all-untentionally-unused-variables.patch \ + )) + + ifeq ($(OS),WNT) +diff --git a/external/liborcus/windows-constants-hack.patch b/external/liborcus/windows-constants-hack.patch +index 876bc16..51aabfa 100644 +--- a/external/liborcus/windows-constants-hack.patch ++++ b/external/liborcus/windows-constants-hack.patch +@@ -8,7 +8,7 @@ index ae571f5..539ce18 100644 + + -#include "constants.inl" + +#define ORCUS_MAJOR_VERSION 0 +-+#define ORCUS_MINOR_VERSION 11 +++#define ORCUS_MINOR_VERSION 16 + +#define ORCUS_MICRO_VERSION 0 + + namespace orcus { +diff --git a/sc/source/filter/inc/orcusinterface.hxx b/sc/source/filter/inc/orcusinterface.hxx +index b298c71..00aea67 100644 +--- a/sc/source/filter/inc/orcusinterface.hxx ++++ b/sc/source/filter/inc/orcusinterface.hxx +@@ -62,6 +62,11 @@ public: + { + return mnTextEncoding; + } ++ ++ ScDocumentImport& getDoc() const ++ { ++ return mrDoc; ++ } + }; + + class ScOrcusRefResolver : public orcus::spreadsheet::iface::import_reference_resolver +@@ -71,20 +76,28 @@ class ScOrcusRefResolver : public orcus::spreadsheet::iface::import_reference_re + public: + ScOrcusRefResolver( const ScOrcusGlobalSettings& rGS ); + +- orcus::spreadsheet::address_t resolve_address(const char* p, size_t n) override; +- orcus::spreadsheet::range_t resolve_range(const char* p, size_t n) override; ++ orcus::spreadsheet::src_address_t resolve_address(const char* p, size_t n) override; ++ orcus::spreadsheet::src_range_t resolve_range(const char* p, size_t n) override; + }; + + class ScOrcusNamedExpression : public orcus::spreadsheet::iface::import_named_expression + { + ScDocumentImport& mrDoc; + const ScOrcusGlobalSettings& mrGlobalSettings; +- SCTAB mnTab; //< negative if global, else >= 0 for sheet-local named expressions. ++ ScAddress maBasePos; ++ OUString maName; ++ OUString maExpr; ++ const SCTAB mnTab; //< negative if global, else >= 0 for sheet-local named expressions. + + public: + ScOrcusNamedExpression( ScDocumentImport& rDoc, const ScOrcusGlobalSettings& rGS, SCTAB nTab = -1 ); + +- virtual void define_name(const char* p_name, size_t n_name, const char* p_exp, size_t n_exp) override; ++ void reset(); ++ ++ virtual void set_base_position(const orcus::spreadsheet::src_address_t& pos) override; ++ virtual void set_named_expression(const char* p_name, size_t n_name, const char* p_exp, size_t n_exp) override; ++ virtual void set_named_range(const char* p_name, size_t n_name, const char* p_range, size_t n_range) override; ++ virtual void commit() override; + }; + + class ScOrcusSharedStrings : public orcus::spreadsheet::iface::import_shared_strings +diff --git a/sc/source/filter/orcus/interface.cxx b/sc/source/filter/orcus/interface.cxx +index 220f7ce..aa96eb2 100644 +--- a/sc/source/filter/orcus/interface.cxx ++++ b/sc/source/filter/orcus/interface.cxx +@@ -46,6 +46,7 @@ + #include + + #include ++#include + + using namespace com::sun::star; + +@@ -158,51 +159,54 @@ orcus::spreadsheet::formula_grammar_t ScOrcusGlobalSettings::get_default_formula + ScOrcusRefResolver::ScOrcusRefResolver( const ScOrcusGlobalSettings& rGS ) : + mrGlobalSettings(rGS) {} + +-os::address_t ScOrcusRefResolver::resolve_address(const char* p, size_t n) ++os::src_address_t ScOrcusRefResolver::resolve_address(const char* p, size_t n) + { + OUString aStr(p, n, mrGlobalSettings.getTextEncoding()); + + ScAddress aAddr; +- aAddr.Parse(aStr, nullptr, ++ aAddr.Parse(aStr, &mrGlobalSettings.getDoc().getDoc(), + formula::FormulaGrammar::extractRefConvention( + mrGlobalSettings.getCalcGrammar())); + +- os::address_t ret; +- ret.column = 0; +- ret.row = 0; +- +- if (aAddr.IsValid()) ++ if (!aAddr.IsValid()) + { +- ret.column = aAddr.Col(); +- ret.row = aAddr.Row(); ++ std::ostringstream os; ++ os << "'" << std::string(p, n) << "' is not a valid address expression."; ++ throw orcus::invalid_arg_error(os.str()); + } + ++ os::src_address_t ret; ++ ret.sheet = aAddr.Tab(); ++ ret.column = aAddr.Col(); ++ ret.row = aAddr.Row(); ++ + return ret; + } + +-os::range_t ScOrcusRefResolver::resolve_range(const char* p, size_t n) ++os::src_range_t ScOrcusRefResolver::resolve_range(const char* p, size_t n) + { + OUString aStr(p, n, mrGlobalSettings.getTextEncoding()); + + ScRange aRange; +- aRange.Parse(aStr, nullptr, ++ aRange.Parse(aStr, &mrGlobalSettings.getDoc().getDoc(), + formula::FormulaGrammar::extractRefConvention( + mrGlobalSettings.getCalcGrammar())); + +- os::range_t ret; +- ret.first.column = 0; +- ret.first.row = 0; +- ret.last.column = 0; +- ret.last.row = 0; +- +- if (aRange.IsValid()) ++ if (!aRange.IsValid()) + { +- ret.first.column = aRange.aStart.Col(); +- ret.first.row = aRange.aStart.Row(); +- ret.last.column = aRange.aEnd.Col(); +- ret.last.row = aRange.aEnd.Row(); ++ std::ostringstream os; ++ os << "'" << std::string(p, n) << "' is not a valid range expression."; ++ throw orcus::invalid_arg_error(os.str()); + } + ++ os::src_range_t ret; ++ ret.first.sheet = aRange.aStart.Tab(); ++ ret.first.column = aRange.aStart.Col(); ++ ret.first.row = aRange.aStart.Row(); ++ ret.last.sheet = aRange.aEnd.Tab(); ++ ret.last.column = aRange.aEnd.Col(); ++ ret.last.row = aRange.aEnd.Row(); ++ + return ret; + } + +@@ -210,20 +214,46 @@ ScOrcusNamedExpression::ScOrcusNamedExpression( + ScDocumentImport& rDoc, const ScOrcusGlobalSettings& rGS, SCTAB nTab ) : + mrDoc(rDoc), mrGlobalSettings(rGS), mnTab(nTab) {} + +-void ScOrcusNamedExpression::define_name(const char* p_name, size_t n_name, const char* p_exp, size_t n_exp) ++void ScOrcusNamedExpression::reset() ++{ ++ maBasePos.SetTab(0); ++ maBasePos.SetCol(0); ++ maBasePos.SetRow(0); ++ maName.clear(); ++ maExpr.clear(); ++} ++ ++void ScOrcusNamedExpression::set_base_position(const orcus::spreadsheet::src_address_t& pos) ++{ ++ maBasePos.SetTab(pos.sheet); ++ maBasePos.SetCol(pos.column); ++ maBasePos.SetRow(pos.row); ++} ++ ++void ScOrcusNamedExpression::set_named_expression(const char* p_name, size_t n_name, const char* p_exp, size_t n_exp) ++{ ++ maName = OUString(p_name, n_name, mrGlobalSettings.getTextEncoding()); ++ maExpr = OUString(p_exp, n_exp, mrGlobalSettings.getTextEncoding()); ++} ++ ++void ScOrcusNamedExpression::set_named_range(const char* /*p_name*/, size_t /*n_name*/, const char* /*p_range*/, size_t /*n_range*/) + { +- OUString aName(p_name, n_name, mrGlobalSettings.getTextEncoding()); +- OUString aExpr(p_exp, n_exp, mrGlobalSettings.getTextEncoding()); ++ throw std::runtime_error("ScOrcusNamedExpression::set_named_range not implemented yet."); ++} + ++void ScOrcusNamedExpression::commit() ++{ + ScRangeName* pNames = mnTab >= 0 ? mrDoc.getDoc().GetRangeName(mnTab) : mrDoc.getDoc().GetRangeName(); + if (!pNames) + return; + + ScRangeData* pRange = new ScRangeData( +- &mrDoc.getDoc(), aName, aExpr, ScAddress(), ScRangeData::Type::Name, ++ &mrDoc.getDoc(), maName, maExpr, maBasePos, ScRangeData::Type::Name, + mrGlobalSettings.getCalcGrammar()); + + pNames->insert(pRange, false); ++ ++ reset(); // make sure to reset the state for the next run. + } + + ScOrcusFactory::CellStoreToken::CellStoreToken(const ScAddress& rPos, Type eType) +diff --git a/sc/source/filter/orcus/xmlcontext.cxx b/sc/source/filter/orcus/xmlcontext.cxx +index ab16ae6..09f3ba9 100644 +--- a/sc/source/filter/orcus/xmlcontext.cxx ++++ b/sc/source/filter/orcus/xmlcontext.cxx +@@ -89,10 +89,9 @@ void populateTree( + rTreeCtrl.set_image(*xEntry, rParam.maImgElementRepeat, -1); + } + +- orcus::xml_structure_tree::entity_names_type aNames; ++ orcus::xml_structure_tree::entity_names_type aNames = rWalker.get_attributes(); + + // Insert attributes. +- rWalker.get_attributes(aNames); + for (const orcus::xml_structure_tree::entity_name& rAttrName : aNames) + { + OUString sAttr(toString(rAttrName, rWalker)); +@@ -106,7 +105,7 @@ void populateTree( + rTreeCtrl.set_image(*xAttr, rParam.maImgAttribute, -1); + } + +- rWalker.get_children(aNames); ++ aNames = rWalker.get_children(); + + // Non-leaf if it has child elements, leaf otherwise. + rEntryData.mbLeafNode = aNames.empty(); +@@ -266,7 +265,7 @@ void ScOrcusXMLContextImpl::importXML(const ScOrcusImportXMLParam& rParam) + std::for_each(rLink.maFieldPaths.begin(), rLink.maFieldPaths.end(), + [&filter](const OString& rFieldPath) + { +- filter.append_field_link(rFieldPath.getStr()); ++ filter.append_field_link(rFieldPath.getStr(), orcus::pstring()); + } + ); + +diff --git a/sc/source/ui/xmlsource/xmlsourcedlg.cxx b/sc/source/ui/xmlsource/xmlsourcedlg.cxx +index 1eb2e4b..167ecae 100644 +--- a/sc/source/ui/xmlsource/xmlsourcedlg.cxx ++++ b/sc/source/ui/xmlsource/xmlsourcedlg.cxx +@@ -49,8 +49,12 @@ OUString getXPath( + if (pData) + rNamespaces.push_back(pData->mnNamespaceID); + ++ // element separator is '/' whereas attribute separator is '/@' in xpath. + aBuf.insert(0, rTree.get_text(*xEntry, 0)); +- aBuf.insert(0, isAttribute(rTree, *xEntry) ? '@' : '/'); ++ if (isAttribute(rTree, *xEntry)) ++ aBuf.insert(0, "/@"); ++ else ++ aBuf.insert(0, '/'); + } + while (rTree.iter_parent(*xEntry)); + +-- +2.26.2 + diff --git a/libreoffice.spec b/libreoffice.spec index 2daa9b1..2982f91 100644 --- a/libreoffice.spec +++ b/libreoffice.spec @@ -50,7 +50,7 @@ Summary: Free Software Productivity Suite Name: libreoffice Epoch: 1 Version: %{libo_version}.2 -Release: 3%{?libo_prerelease}%{?dist} +Release: 4%{?libo_prerelease}%{?dist} License: (MPLv1.1 or LGPLv3+) and LGPLv3 and LGPLv2+ and BSD and (MPLv1.1 or GPLv2 or LGPLv2 or Netscape) and Public Domain and ASL 2.0 and MPLv2.0 and CC0 URL: http://www.libreoffice.org/ @@ -207,7 +207,11 @@ BuildRequires: pkgconfig(harfbuzz) BuildRequires: pkgconfig(libeot) BuildRequires: pkgconfig(libepubgen-0.1) BuildRequires: pkgconfig(libqxp-0.0) +%if 0%{?fedora} && 0%{?fedora} > 33 +BuildRequires: pkgconfig(liborcus-0.16) +%else BuildRequires: pkgconfig(liborcus-0.15) +%endif BuildRequires: pkgconfig(mdds-1.5) BuildRequires: libnumbertext-devel @@ -246,6 +250,9 @@ Patch4: 0001-Pass-fno-lto-unconditionally.patch Patch5: 0001-rhbz-1870501-crash-on-reexport-of-odg.patch Patch6: 0001-CppunitTest_sw_htmlexport-The-actual-PNG-data-does-n.patch Patch7: 0001-rhbz-1875377-if-sort-order-is-equivalent-keep-order-.patch +%if 0%{?fedora} && 0%{?fedora} > 33 +Patch8: 0001-Upgrade-liborcus-to-0.16.0.patch +%endif %if 0%{?rhel} # not upstreamed @@ -2226,7 +2233,10 @@ done %{_includedir}/LibreOfficeKit %changelog -* Fri Sep 04 2020 Caolán McNamara - 1:7.0.1.2-2 +* Thu Sep 24 2020 Caolán McNamara - 1:7.0.1.2-4 +- upgrade liborcus + +* Fri Sep 04 2020 Caolán McNamara - 1:7.0.1.2-3 - rhbz#1875377 prefer Cantarell-Regular to Cantarell-VF * Thu Sep 03 2020 Merlin Mathesius - 1:7.0.1.2-2