...and std::filesystem::path::generic_string, which at least GCC 17 trunk
libstdc++ now flags for C++26 (--with-latest-c++) as
> In file included from engine/codemaker/source/netmaker/netproduce.cxx:19:
> engine/codemaker/source/netmaker/csharpfile.hxx:28:53: error: 'string' is deprecated: use 'display_string' or 'native_encoded_string' instead [-Werror,-Wdeprecated-declarations]
> 28 | std::string getPath() const { return m_filePath.string(); }
> | ^
> ~/gcc/inst/lib/gcc/x86_64-pc-linux-gnu/17.0.0/../../../../include/c++/17.0.0/bits/fs_path.h:465:5: note: 'string' has been explicitly marked deprecated here
> 465 | _GLIBCXX26_DEPRECATED_SUGGEST("display_string' or 'native_encoded_string")
> | ^
> ~/gcc/inst/lib/gcc/x86_64-pc-linux-gnu/17.0.0/../../../../include/c++/17.0.0/x86_64-pc-linux-gnu/bits/c++config.h:160:45: note: expanded from macro '_GLIBCXX26_DEPRECATED_SUGGEST'
> 160 | # define _GLIBCXX26_DEPRECATED_SUGGEST(ALT) _GLIBCXX_DEPRECATED_SUGGEST(ALT)
> | ^
> ~/gcc/inst/lib/gcc/x86_64-pc-linux-gnu/17.0.0/../../../../include/c++/17.0.0/x86_64-pc-linux-gnu/bits/c++config.h:112:19: note: expanded from macro '_GLIBCXX_DEPRECATED_SUGGEST'
> 112 | __attribute__ ((__deprecated__ ("use '" ALT "' instead")))
> | ^
since
<https://gcc.gnu.org/git/?p=gcc.git;a=commit;h=341ad729c2c93b9f01854913b0404e4fc8958512>
"libstdc++: Add (generic_)display_string and (generic_)native_encoded_string to
filesystem::path".
Occurrences that are obviously meant for display purposes are #if-conditionally
replaced with the new display_string, while all other occurrences are left using
the (non-deprecated) [generic_]string<char> template instantiation, matching the
original code. (Where, for C++26, the latter could also be replaced with the
new [generic_]native_encoded_string, aka [generic_]system_encoded_string; see
<https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2025/p2319r5.html>
"Prevent path presentation problems" and
<https://cplusplus.github.io/LWG/issue4512> "The system_encoded_string() and
generic_system_encoded_string() member functions of std::filesystem::path are
misnamed" for details.)
Signed-off-by: Stephan Bergmann <stephan.bergmann@allotropia.de>
Change-Id: I7c79c8522608550bb1e0f4cb8e4824480952446b
Reviewed-on: https://gerrit.collaboraoffice.com/c/online/+/3987
Reviewed-by: Noel Grandin <noel.grandin@collabora.com>
Tested-by: Jenkins CPCI <releng@collaboraoffice.com>
(cherry picked from commit f320d95d89ecc9bea81182795969f83b05ec903c)
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/206226
Tested-by: Jenkins
Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org>
...(which returns the first element in the range of equivalent ones) rather than
std::multimap::find (which returns a random element from the range of equivalent
ones). This e.g. caused SIGSEGV during CppunitTest_sw_filters_test when using a
libc++ built with -DLIBCXX_HARDENING_MODE=debug (which does return a random
element, rather than the first, from std::multimap::find), and the
> ++aTOCStyleIter;
a few lines further down could thus try to go beyond the end of aMap.
Change-Id: I7646a41d203b458bccc451ee74c2840af3870255
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/191406
Reviewed-by: Stephan Bergmann <stephan.bergmann@collabora.com>
Tested-by: Jenkins
...on macOS, where connectx(2) "appeared in Darwin 15.0.0" according to its man
page, and where recent Clang with
<https://github.com/llvm/llvm-project/commit/b24769855d97697de08e2296a548c033f193caf4>
"[Clang] [Sema] Make `-Wincompatible-pointer-types` an error by default
(#157364)" now started to fail with
> ../../../../pr/src/pthreads/ptio.c:2046:58: error: incompatible pointer types passing 'PRInt32 *' (aka 'int *') to parameter of type 'size_t *' (aka 'unsigned long *') [-Wincompatible-pointer-types]
> 2046 | CONNECT_DATA_IDEMPOTENT, iov, 1, &bytes, NULL);
> | ^~~~~~
> /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX26.0.sdk/usr/include/sys/socket.h:741:49: note: passing argument to parameter here
> 741 | const struct iovec *, unsigned int, size_t *, sae_connid_t *);
> | ^
> ../../../../pr/src/pthreads/ptio.c:2045:11: warning: unused variable 'rv' [-Wunused-variable]
> 2045 | PRInt32 rv = connectx(fd->secret->md.osfd, &endpoints, SAE_ASSOCID_ANY,
> | ^~
Change-Id: I047a987e443ab0283f38d997d03062fe969a65c5
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/191375
Tested-by: Jenkins
Reviewed-by: Stephan Bergmann <stephan.bergmann@collabora.com>
...which was found to be a potential issue while inspecting
0117608965 "Timer - shutdown and re-start
salhelper::Timer thread." and its follow-up
c6c8e1c325 "don't return impl by shared_ptr"
Change-Id: I6a515b3b3c84a3010d90d115c801f2e5cbcc245a
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/185894
Tested-by: Jenkins
Reviewed-by: Stephan Bergmann <stephan.bergmann@allotropia.de>
...so that it can reference the JS `window` object (e.g., when clicking on "Help
- About LibreOffice - Credits")
Change-Id: Ia08226af7bbf5a503be9e0b81c27217ad2775269
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/185801
Reviewed-by: Stephan Bergmann <stephan.bergmann@allotropia.de>
Tested-by: Jenkins
...as running soffice started to report
> warn:sal.osl:2389442:2389442:sal/osl/unx/module.cxx:103: dlopen(.../instdir/program/libvclplug_gtk3lo.so, 257): .../instdir/program/libvclplug_gtk3lo.so: undefined symbol: _ZTI14ScrollbarValue
for me after 7bb189c3c2 "tdf#97228 change
scrollbarvalue code from include/vcl to vcl/" had removed the SAL_DLLPUBLIC_RTTI
that had been present in the old include/vcl/salnativewidgets.hxx
Change-Id: I4c8b7c1e94f1e3d823a59b8bb4479dc32b005854
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/185347
Tested-by: Jenkins
Reviewed-by: Stephan Bergmann <stephan.bergmann@allotropia.de>
...in CompilerTest_compilerplugins_clang,
> [CPT] compilerplugins/clang/test/fragiledestructor.cxx
> error: 'expected-error' diagnostics expected but not seen:
> File compilerplugins/clang/test/fragiledestructor.cxx Line 26 (directive at compilerplugins/clang/test/fragiledestructor.cxx:27): calling virtual method from destructor, either make the virtual method final, or make this class final [loplugin:fragiledestructor]
> File compilerplugins/clang/test/fragiledestructor.cxx Line 53 (directive at compilerplugins/clang/test/fragiledestructor.cxx:54): calling virtual method from destructor, either make the virtual method final, or make this class final [loplugin:fragiledestructor]
> error: 'expected-error' diagnostics seen but not expected:
> File compilerplugins/clang/test/fragiledestructor.cxx Line 39: virtual method 'f' is inside a 'final' class and can never be overridden
> error: 'expected-note' diagnostics expected but not seen:
> File compilerplugins/clang/test/fragiledestructor.cxx Line 28 (directive at compilerplugins/clang/test/fragiledestructor.cxx:29): callee method here [loplugin:fragiledestructor]
> File compilerplugins/clang/test/fragiledestructor.cxx Line 48 (directive at compilerplugins/clang/test/fragiledestructor.cxx:49): callee method here [loplugin:fragiledestructor]
Change-Id: Ie6484149b902e217a54b7b9423627e608d349d15
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/185221
Reviewed-by: Stephan Bergmann <stephan.bergmann@allotropia.de>
Tested-by: Jenkins
> [CXX] svl/source/misc/PasswordHelper.cxx
> In file included from svl/source/misc/PasswordHelper.cxx:25:
> workdir/UnpackedTarball/icu/source/i18n/unicode/regex.h:148:28: error: virtual method 'clone' is inside a 'final' class and can never be overridden [-Werror,-Wunnecessary-virtual-specifier]
> 148 | virtual RegexPattern *clone() const;
> | ^
> workdir/UnpackedTarball/icu/source/i18n/unicode/regex.h:328:22: error: virtual method 'flags' is inside a 'final' class and can never be overridden [-Werror,-Wunnecessary-virtual-specifier]
> 328 | virtual uint32_t flags() const;
> | ^
> workdir/UnpackedTarball/icu/source/i18n/unicode/regex.h:347:27: error: virtual method 'matcher' is inside a 'final' class and can never be overridden [-Werror,-Wunnecessary-virtual-specifier]
> 347 | virtual RegexMatcher *matcher(const UnicodeString &input,
> | ^
> workdir/UnpackedTarball/icu/source/i18n/unicode/regex.h:379:27: error: virtual method 'matcher' is inside a 'final' class and can never be overridden [-Werror,-Wunnecessary-virtual-specifier]
> 379 | virtual RegexMatcher *matcher(UErrorCode &status) const;
> | ^
> workdir/UnpackedTarball/icu/source/i18n/unicode/regex.h:428:27: error: virtual method 'pattern' is inside a 'final' class and can never be overridden [-Werror,-Wunnecessary-virtual-specifier]
> 428 | virtual UnicodeString pattern() const;
> | ^
> workdir/UnpackedTarball/icu/source/i18n/unicode/regex.h:441:20: error: virtual method 'patternText' is inside a 'final' class and can never be overridden [-Werror,-Wunnecessary-virtual-specifier]
> 441 | virtual UText *patternText(UErrorCode &status) const;
> | ^
> workdir/UnpackedTarball/icu/source/i18n/unicode/regex.h:457:21: error: virtual method 'groupNumberFromName' is inside a 'final' class and can never be overridden [-Werror,-Wunnecessary-virtual-specifier]
> 457 | virtual int32_t groupNumberFromName(const UnicodeString &groupName, UErrorCode &status) const;
> | ^
> workdir/UnpackedTarball/icu/source/i18n/unicode/regex.h:476:21: error: virtual method 'groupNumberFromName' is inside a 'final' class and can never be overridden [-Werror,-Wunnecessary-virtual-specifier]
> 476 | virtual int32_t groupNumberFromName(const char *groupName, int32_t nameLength, UErrorCode &status) const;
> | ^
> workdir/UnpackedTarball/icu/source/i18n/unicode/regex.h:517:22: error: virtual method 'split' is inside a 'final' class and can never be overridden [-Werror,-Wunnecessary-virtual-specifier]
> 517 | virtual int32_t split(const UnicodeString &input,
> | ^
> workdir/UnpackedTarball/icu/source/i18n/unicode/regex.h:561:22: error: virtual method 'split' is inside a 'final' class and can never be overridden [-Werror,-Wunnecessary-virtual-specifier]
> 561 | virtual int32_t split(UText *input,
> | ^
> workdir/UnpackedTarball/icu/source/i18n/unicode/regex.h:770:19: error: virtual method 'matches' is inside a 'final' class and can never be overridden [-Werror,-Wunnecessary-virtual-specifier]
> 770 | virtual UBool matches(UErrorCode &status);
> | ^
> workdir/UnpackedTarball/icu/source/i18n/unicode/regex.h:783:19: error: virtual method 'matches' is inside a 'final' class and can never be overridden [-Werror,-Wunnecessary-virtual-specifier]
> 783 | virtual UBool matches(int64_t startIndex, UErrorCode &status);
> | ^
> workdir/UnpackedTarball/icu/source/i18n/unicode/regex.h:799:19: error: virtual method 'lookingAt' is inside a 'final' class and can never be overridden [-Werror,-Wunnecessary-virtual-specifier]
> 799 | virtual UBool lookingAt(UErrorCode &status);
> | ^
> workdir/UnpackedTarball/icu/source/i18n/unicode/regex.h:815:19: error: virtual method 'lookingAt' is inside a 'final' class and can never be overridden [-Werror,-Wunnecessary-virtual-specifier]
> 815 | virtual UBool lookingAt(int64_t startIndex, UErrorCode &status);
> | ^
> workdir/UnpackedTarball/icu/source/i18n/unicode/regex.h:830:19: error: virtual method 'find' is inside a 'final' class and can never be overridden [-Werror,-Wunnecessary-virtual-specifier]
> 830 | virtual UBool find();
> | ^
> workdir/UnpackedTarball/icu/source/i18n/unicode/regex.h:847:19: error: virtual method 'find' is inside a 'final' class and can never be overridden [-Werror,-Wunnecessary-virtual-specifier]
> 847 | virtual UBool find(UErrorCode &status);
> | ^
> workdir/UnpackedTarball/icu/source/i18n/unicode/regex.h:858:19: error: virtual method 'find' is inside a 'final' class and can never be overridden [-Werror,-Wunnecessary-virtual-specifier]
> 858 | virtual UBool find(int64_t start, UErrorCode &status);
> | ^
> workdir/UnpackedTarball/icu/source/i18n/unicode/regex.h:870:27: error: virtual method 'group' is inside a 'final' class and can never be overridden [-Werror,-Wunnecessary-virtual-specifier]
> 870 | virtual UnicodeString group(UErrorCode &status) const;
> | ^
> workdir/UnpackedTarball/icu/source/i18n/unicode/regex.h:890:27: error: virtual method 'group' is inside a 'final' class and can never be overridden [-Werror,-Wunnecessary-virtual-specifier]
> 890 | virtual UnicodeString group(int32_t groupNum, UErrorCode &status) const;
> | ^
> workdir/UnpackedTarball/icu/source/i18n/unicode/regex.h:897:21: error: virtual method 'groupCount' is inside a 'final' class and can never be overridden [-Werror,-Wunnecessary-virtual-specifier]
> 897 | virtual int32_t groupCount() const;
> | ^
> workdir/UnpackedTarball/icu/source/i18n/unicode/regex.h:914:20: error: virtual method 'group' is inside a 'final' class and can never be overridden [-Werror,-Wunnecessary-virtual-specifier]
> 914 | virtual UText *group(UText *dest, int64_t &group_len, UErrorCode &status) const;
> | ^
> workdir/UnpackedTarball/icu/source/i18n/unicode/regex.h:936:20: error: virtual method 'group' is inside a 'final' class and can never be overridden [-Werror,-Wunnecessary-virtual-specifier]
> 936 | virtual UText *group(int32_t groupNum, UText *dest, int64_t &group_len, UErrorCode &status) const;
> | ^
> workdir/UnpackedTarball/icu/source/i18n/unicode/regex.h:945:21: error: virtual method 'start' is inside a 'final' class and can never be overridden [-Werror,-Wunnecessary-virtual-specifier]
> 945 | virtual int32_t start(UErrorCode &status) const;
> | ^
> workdir/UnpackedTarball/icu/source/i18n/unicode/regex.h:954:21: error: virtual method 'start64' is inside a 'final' class and can never be overridden [-Werror,-Wunnecessary-virtual-specifier]
> 954 | virtual int64_t start64(UErrorCode &status) const;
> | ^
> workdir/UnpackedTarball/icu/source/i18n/unicode/regex.h:970:21: error: virtual method 'start' is inside a 'final' class and can never be overridden [-Werror,-Wunnecessary-virtual-specifier]
> 970 | virtual int32_t start(int32_t group, UErrorCode &status) const;
> | ^
> workdir/UnpackedTarball/icu/source/i18n/unicode/regex.h:985:21: error: virtual method 'start64' is inside a 'final' class and can never be overridden [-Werror,-Wunnecessary-virtual-specifier]
> 985 | virtual int64_t start64(int32_t group, UErrorCode &status) const;
> | ^
> workdir/UnpackedTarball/icu/source/i18n/unicode/regex.h:1000:21: error: virtual method 'end' is inside a 'final' class and can never be overridden [-Werror,-Wunnecessary-virtual-specifier]
> 1000 | virtual int32_t end(UErrorCode &status) const;
> | ^
> workdir/UnpackedTarball/icu/source/i18n/unicode/regex.h:1015:21: error: virtual method 'end64' is inside a 'final' class and can never be overridden [-Werror,-Wunnecessary-virtual-specifier]
> 1015 | virtual int64_t end64(UErrorCode &status) const;
> | ^
> workdir/UnpackedTarball/icu/source/i18n/unicode/regex.h:1035:21: error: virtual method 'end' is inside a 'final' class and can never be overridden [-Werror,-Wunnecessary-virtual-specifier]
> 1035 | virtual int32_t end(int32_t group, UErrorCode &status) const;
> | ^
> workdir/UnpackedTarball/icu/source/i18n/unicode/regex.h:1054:21: error: virtual method 'end64' is inside a 'final' class and can never be overridden [-Werror,-Wunnecessary-virtual-specifier]
> 1054 | virtual int64_t end64(int32_t group, UErrorCode &status) const;
> | ^
> workdir/UnpackedTarball/icu/source/i18n/unicode/regex.h:1064:27: error: virtual method 'reset' is inside a 'final' class and can never be overridden [-Werror,-Wunnecessary-virtual-specifier]
> 1064 | virtual RegexMatcher &reset();
> | ^
> workdir/UnpackedTarball/icu/source/i18n/unicode/regex.h:1082:27: error: virtual method 'reset' is inside a 'final' class and can never be overridden [-Werror,-Wunnecessary-virtual-specifier]
> 1082 | virtual RegexMatcher &reset(int64_t index, UErrorCode &status);
> | ^
> workdir/UnpackedTarball/icu/source/i18n/unicode/regex.h:1102:27: error: virtual method 'reset' is inside a 'final' class and can never be overridden [-Werror,-Wunnecessary-virtual-specifier]
> 1102 | virtual RegexMatcher &reset(const UnicodeString &input);
> | ^
> workdir/UnpackedTarball/icu/source/i18n/unicode/regex.h:1118:27: error: virtual method 'reset' is inside a 'final' class and can never be overridden [-Werror,-Wunnecessary-virtual-specifier]
> 1118 | virtual RegexMatcher &reset(UText *input);
> | ^
> workdir/UnpackedTarball/icu/source/i18n/unicode/regex.h:1145:27: error: virtual method 'refreshInputText' is inside a 'final' class and can never be overridden [-Werror,-Wunnecessary-virtual-specifier]
> 1145 | virtual RegexMatcher &refreshInputText(UText *input, UErrorCode &status);
> | ^
> workdir/UnpackedTarball/icu/source/i18n/unicode/regex.h:1170:34: error: virtual method 'input' is inside a 'final' class and can never be overridden [-Werror,-Wunnecessary-virtual-specifier]
> 1170 | virtual const UnicodeString &input() const;
> | ^
> workdir/UnpackedTarball/icu/source/i18n/unicode/regex.h:1180:20: error: virtual method 'inputText' is inside a 'final' class and can never be overridden [-Werror,-Wunnecessary-virtual-specifier]
> 1180 | virtual UText *inputText() const;
> | ^
> workdir/UnpackedTarball/icu/source/i18n/unicode/regex.h:1192:20: error: virtual method 'getInput' is inside a 'final' class and can never be overridden [-Werror,-Wunnecessary-virtual-specifier]
> 1192 | virtual UText *getInput(UText *dest, UErrorCode &status) const;
> | ^
> workdir/UnpackedTarball/icu/source/i18n/unicode/regex.h:1213:28: error: virtual method 'region' is inside a 'final' class and can never be overridden [-Werror,-Wunnecessary-virtual-specifier]
> 1213 | virtual RegexMatcher ®ion(int64_t start, int64_t limit, UErrorCode &status);
> | ^
> workdir/UnpackedTarball/icu/source/i18n/unicode/regex.h:1226:28: error: virtual method 'region' is inside a 'final' class and can never be overridden [-Werror,-Wunnecessary-virtual-specifier]
> 1226 | virtual RegexMatcher ®ion(int64_t regionStart, int64_t regionLimit, int64_t startIndex, UErrorCode &status);
> | ^
> workdir/UnpackedTarball/icu/source/i18n/unicode/regex.h:1236:22: error: virtual method 'regionStart' is inside a 'final' class and can never be overridden [-Werror,-Wunnecessary-virtual-specifier]
> 1236 | virtual int32_t regionStart() const;
> | ^
> workdir/UnpackedTarball/icu/source/i18n/unicode/regex.h:1246:22: error: virtual method 'regionStart64' is inside a 'final' class and can never be overridden [-Werror,-Wunnecessary-virtual-specifier]
> 1246 | virtual int64_t regionStart64() const;
> | ^
> workdir/UnpackedTarball/icu/source/i18n/unicode/regex.h:1257:23: error: virtual method 'regionEnd' is inside a 'final' class and can never be overridden [-Werror,-Wunnecessary-virtual-specifier]
> 1257 | virtual int32_t regionEnd() const;
> | ^
> workdir/UnpackedTarball/icu/source/i18n/unicode/regex.h:1267:23: error: virtual method 'regionEnd64' is inside a 'final' class and can never be overridden [-Werror,-Wunnecessary-virtual-specifier]
> 1267 | virtual int64_t regionEnd64() const;
> | ^
> workdir/UnpackedTarball/icu/source/i18n/unicode/regex.h:1277:21: error: virtual method 'hasTransparentBounds' is inside a 'final' class and can never be overridden [-Werror,-Wunnecessary-virtual-specifier]
> 1277 | virtual UBool hasTransparentBounds() const;
> | ^
> workdir/UnpackedTarball/icu/source/i18n/unicode/regex.h:1297:29: error: virtual method 'useTransparentBounds' is inside a 'final' class and can never be overridden [-Werror,-Wunnecessary-virtual-specifier]
> 1297 | virtual RegexMatcher &useTransparentBounds(UBool b);
> | ^
> workdir/UnpackedTarball/icu/source/i18n/unicode/regex.h:1307:21: error: virtual method 'hasAnchoringBounds' is inside a 'final' class and can never be overridden [-Werror,-Wunnecessary-virtual-specifier]
> 1307 | virtual UBool hasAnchoringBounds() const;
> | ^
> workdir/UnpackedTarball/icu/source/i18n/unicode/regex.h:1322:29: error: virtual method 'useAnchoringBounds' is inside a 'final' class and can never be overridden [-Werror,-Wunnecessary-virtual-specifier]
> 1322 | virtual RegexMatcher &useAnchoringBounds(UBool b);
> | ^
> workdir/UnpackedTarball/icu/source/i18n/unicode/regex.h:1337:21: error: virtual method 'hitEnd' is inside a 'final' class and can never be overridden [-Werror,-Wunnecessary-virtual-specifier]
> 1337 | virtual UBool hitEnd() const;
> | ^
> workdir/UnpackedTarball/icu/source/i18n/unicode/regex.h:1348:21: error: virtual method 'requireEnd' is inside a 'final' class and can never be overridden [-Werror,-Wunnecessary-virtual-specifier]
> 1348 | virtual UBool requireEnd() const;
> | ^
> workdir/UnpackedTarball/icu/source/i18n/unicode/regex.h:1356:33: error: virtual method 'pattern' is inside a 'final' class and can never be overridden [-Werror,-Wunnecessary-virtual-specifier]
> 1356 | virtual const RegexPattern &pattern() const;
> | ^
> workdir/UnpackedTarball/icu/source/i18n/unicode/regex.h:1375:27: error: virtual method 'replaceAll' is inside a 'final' class and can never be overridden [-Werror,-Wunnecessary-virtual-specifier]
> 1375 | virtual UnicodeString replaceAll(const UnicodeString &replacement, UErrorCode &status);
> | ^
> workdir/UnpackedTarball/icu/source/i18n/unicode/regex.h:1398:20: error: virtual method 'replaceAll' is inside a 'final' class and can never be overridden [-Werror,-Wunnecessary-virtual-specifier]
> 1398 | virtual UText *replaceAll(UText *replacement, UText *dest, UErrorCode &status);
> | ^
> workdir/UnpackedTarball/icu/source/i18n/unicode/regex.h:1421:27: error: virtual method 'replaceFirst' is inside a 'final' class and can never be overridden [-Werror,-Wunnecessary-virtual-specifier]
> 1421 | virtual UnicodeString replaceFirst(const UnicodeString &replacement, UErrorCode &status);
> | ^
> workdir/UnpackedTarball/icu/source/i18n/unicode/regex.h:1448:20: error: virtual method 'replaceFirst' is inside a 'final' class and can never be overridden [-Werror,-Wunnecessary-virtual-specifier]
> 1448 | virtual UText *replaceFirst(UText *replacement, UText *dest, UErrorCode &status);
> | ^
> workdir/UnpackedTarball/icu/source/i18n/unicode/regex.h:1478:27: error: virtual method 'appendReplacement' is inside a 'final' class and can never be overridden [-Werror,-Wunnecessary-virtual-specifier]
> 1478 | virtual RegexMatcher &appendReplacement(UnicodeString &dest,
> | ^
> workdir/UnpackedTarball/icu/source/i18n/unicode/regex.h:1509:27: error: virtual method 'appendReplacement' is inside a 'final' class and can never be overridden [-Werror,-Wunnecessary-virtual-specifier]
> 1509 | virtual RegexMatcher &appendReplacement(UText *dest,
> | ^
> workdir/UnpackedTarball/icu/source/i18n/unicode/regex.h:1523:28: error: virtual method 'appendTail' is inside a 'final' class and can never be overridden [-Werror,-Wunnecessary-virtual-specifier]
> 1523 | virtual UnicodeString &appendTail(UnicodeString &dest);
> | ^
> workdir/UnpackedTarball/icu/source/i18n/unicode/regex.h:1539:20: error: virtual method 'appendTail' is inside a 'final' class and can never be overridden [-Werror,-Wunnecessary-virtual-specifier]
> 1539 | virtual UText *appendTail(UText *dest, UErrorCode &status);
> | ^
> workdir/UnpackedTarball/icu/source/i18n/unicode/regex.h:1565:22: error: virtual method 'split' is inside a 'final' class and can never be overridden [-Werror,-Wunnecessary-virtual-specifier]
> 1565 | virtual int32_t split(const UnicodeString &input,
> | ^
> workdir/UnpackedTarball/icu/source/i18n/unicode/regex.h:1594:22: error: virtual method 'split' is inside a 'final' class and can never be overridden [-Werror,-Wunnecessary-virtual-specifier]
> 1594 | virtual int32_t split(UText *input,
> | ^
> workdir/UnpackedTarball/icu/source/i18n/unicode/regex.h:1620:18: error: virtual method 'setTimeLimit' is inside a 'final' class and can never be overridden [-Werror,-Wunnecessary-virtual-specifier]
> 1620 | virtual void setTimeLimit(int32_t limit, UErrorCode &status);
> | ^
> workdir/UnpackedTarball/icu/source/i18n/unicode/regex.h:1628:21: error: virtual method 'getTimeLimit' is inside a 'final' class and can never be overridden [-Werror,-Wunnecessary-virtual-specifier]
> 1628 | virtual int32_t getTimeLimit() const;
> | ^
> workdir/UnpackedTarball/icu/source/i18n/unicode/regex.h:1651:18: error: virtual method 'setStackLimit' is inside a 'final' class and can never be overridden [-Werror,-Wunnecessary-virtual-specifier]
> 1651 | virtual void setStackLimit(int32_t limit, UErrorCode &status);
> | ^
> workdir/UnpackedTarball/icu/source/i18n/unicode/regex.h:1660:22: error: virtual method 'getStackLimit' is inside a 'final' class and can never be overridden [-Werror,-Wunnecessary-virtual-specifier]
> 1660 | virtual int32_t getStackLimit() const;
> | ^
> workdir/UnpackedTarball/icu/source/i18n/unicode/regex.h:1676:18: error: virtual method 'setMatchCallback' is inside a 'final' class and can never be overridden [-Werror,-Wunnecessary-virtual-specifier]
> 1676 | virtual void setMatchCallback(URegexMatchCallback *callback,
> | ^
> workdir/UnpackedTarball/icu/source/i18n/unicode/regex.h:1691:18: error: virtual method 'getMatchCallback' is inside a 'final' class and can never be overridden [-Werror,-Wunnecessary-virtual-specifier]
> 1691 | virtual void getMatchCallback(URegexMatchCallback *&callback,
> | ^
> workdir/UnpackedTarball/icu/source/i18n/unicode/regex.h:1709:18: error: virtual method 'setFindProgressCallback' is inside a 'final' class and can never be overridden [-Werror,-Wunnecessary-virtual-specifier]
> 1709 | virtual void setFindProgressCallback(URegexFindProgressCallback *callback,
> | ^
> workdir/UnpackedTarball/icu/source/i18n/unicode/regex.h:1724:18: error: virtual method 'getFindProgressCallback' is inside a 'final' class and can never be overridden [-Werror,-Wunnecessary-virtual-specifier]
> 1724 | virtual void getFindProgressCallback(URegexFindProgressCallback *&callback,
> | ^
and
> [CXX] i18npool/source/collator/collator_unicode.cxx
> In file included from i18npool/source/collator/collator_unicode.cxx:29:
> In file included from i18npool/inc/collator_unicode.hxx:26:
> In file included from workdir/UnpackedTarball/icu/source/i18n/unicode/tblcoll.h:71:
> In file included from workdir/UnpackedTarball/icu/source/i18n/unicode/coll.h:70:
> workdir/UnpackedTarball/icu/source/common/unicode/uniset.h:498:18: error: virtual method 'operator==' is inside a 'final' class and can never be overridden [-Werror,-Wunnecessary-virtual-specifier]
> 498 | virtual bool operator==(const UnicodeSet& o) const;
> | ^
> workdir/UnpackedTarball/icu/source/common/unicode/uniset.h:525:21: error: virtual method 'hashCode' is inside a 'final' class and can never be overridden [-Werror,-Wunnecessary-virtual-specifier]
> 525 | virtual int32_t hashCode() const;
> | ^
> workdir/UnpackedTarball/icu/source/common/unicode/uniset.h:795:21: error: virtual method 'size' is inside a 'final' class and can never be overridden [-Werror,-Wunnecessary-virtual-specifier]
> 795 | virtual int32_t size() const;
> | ^
> workdir/UnpackedTarball/icu/source/common/unicode/uniset.h:803:19: error: virtual method 'isEmpty' is inside a 'final' class and can never be overridden [-Werror,-Wunnecessary-virtual-specifier]
> 803 | virtual UBool isEmpty() const;
> | ^
> workdir/UnpackedTarball/icu/source/common/unicode/uniset.h:828:19: error: virtual method 'contains' is inside a 'final' class and can never be overridden [-Werror,-Wunnecessary-virtual-specifier]
> 828 | virtual UBool contains(UChar32 start, UChar32 end) const;
> | ^
> workdir/UnpackedTarball/icu/source/common/unicode/uniset.h:846:19: error: virtual method 'containsAll' is inside a 'final' class and can never be overridden [-Werror,-Wunnecessary-virtual-specifier]
> 846 | virtual UBool containsAll(const UnicodeSet& c) const;
> | ^
> workdir/UnpackedTarball/icu/source/common/unicode/uniset.h:1234:25: error: virtual method 'add' is inside a 'final' class and can never be overridden [-Werror,-Wunnecessary-virtual-specifier]
> 1234 | virtual UnicodeSet& add(UChar32 start, UChar32 end);
> | ^
> workdir/UnpackedTarball/icu/source/common/unicode/uniset.h:1340:25: error: virtual method 'retain' is inside a 'final' class and can never be overridden [-Werror,-Wunnecessary-virtual-specifier]
> 1340 | virtual UnicodeSet& retain(UChar32 start, UChar32 end);
> | ^
> workdir/UnpackedTarball/icu/source/common/unicode/uniset.h:1378:25: error: virtual method 'remove' is inside a 'final' class and can never be overridden [-Werror,-Wunnecessary-virtual-specifier]
> 1378 | virtual UnicodeSet& remove(UChar32 start, UChar32 end);
> | ^
> workdir/UnpackedTarball/icu/source/common/unicode/uniset.h:1415:25: error: virtual method 'complement' is inside a 'final' class and can never be overridden [-Werror,-Wunnecessary-virtual-specifier]
> 1415 | virtual UnicodeSet& complement();
> | ^
> workdir/UnpackedTarball/icu/source/common/unicode/uniset.h:1429:25: error: virtual method 'complement' is inside a 'final' class and can never be overridden [-Werror,-Wunnecessary-virtual-specifier]
> 1429 | virtual UnicodeSet& complement(UChar32 start, UChar32 end);
> | ^
> workdir/UnpackedTarball/icu/source/common/unicode/uniset.h:1466:25: error: virtual method 'addAll' is inside a 'final' class and can never be overridden [-Werror,-Wunnecessary-virtual-specifier]
> 1466 | virtual UnicodeSet& addAll(const UnicodeSet& c);
> | ^
> workdir/UnpackedTarball/icu/source/common/unicode/uniset.h:1479:25: error: virtual method 'retainAll' is inside a 'final' class and can never be overridden [-Werror,-Wunnecessary-virtual-specifier]
> 1479 | virtual UnicodeSet& retainAll(const UnicodeSet& c);
> | ^
> workdir/UnpackedTarball/icu/source/common/unicode/uniset.h:1492:25: error: virtual method 'removeAll' is inside a 'final' class and can never be overridden [-Werror,-Wunnecessary-virtual-specifier]
> 1492 | virtual UnicodeSet& removeAll(const UnicodeSet& c);
> | ^
> workdir/UnpackedTarball/icu/source/common/unicode/uniset.h:1504:25: error: virtual method 'complementAll' is inside a 'final' class and can never be overridden [-Werror,-Wunnecessary-virtual-specifier]
> 1504 | virtual UnicodeSet& complementAll(const UnicodeSet& c);
> | ^
> workdir/UnpackedTarball/icu/source/common/unicode/uniset.h:1512:25: error: virtual method 'clear' is inside a 'final' class and can never be overridden [-Werror,-Wunnecessary-virtual-specifier]
> 1512 | virtual UnicodeSet& clear();
> | ^
> workdir/UnpackedTarball/icu/source/common/unicode/uniset.h:1549:25: error: virtual method 'removeAllStrings' is inside a 'final' class and can never be overridden [-Werror,-Wunnecessary-virtual-specifier]
> 1549 | virtual UnicodeSet &removeAllStrings();
> | ^
> workdir/UnpackedTarball/icu/source/common/unicode/uniset.h:1558:21: error: virtual method 'getRangeCount' is inside a 'final' class and can never be overridden [-Werror,-Wunnecessary-virtual-specifier]
> 1558 | virtual int32_t getRangeCount() const;
> | ^
> workdir/UnpackedTarball/icu/source/common/unicode/uniset.h:1567:21: error: virtual method 'getRangeStart' is inside a 'final' class and can never be overridden [-Werror,-Wunnecessary-virtual-specifier]
> 1567 | virtual UChar32 getRangeStart(int32_t index) const;
> | ^
> workdir/UnpackedTarball/icu/source/common/unicode/uniset.h:1576:21: error: virtual method 'getRangeEnd' is inside a 'final' class and can never be overridden [-Werror,-Wunnecessary-virtual-specifier]
> 1576 | virtual UChar32 getRangeEnd(int32_t index) const;
> | ^
> workdir/UnpackedTarball/icu/source/common/unicode/uniset.h:1634:25: error: virtual method 'compact' is inside a 'final' class and can never be overridden [-Werror,-Wunnecessary-virtual-specifier]
> 1634 | virtual UnicodeSet& compact();
> | ^
> In file included from i18npool/source/collator/collator_unicode.cxx:29:
> In file included from i18npool/inc/collator_unicode.hxx:26:
> workdir/UnpackedTarball/icu/source/i18n/unicode/tblcoll.h:245:39: error: virtual method 'createCollationElementIterator' is inside a 'final' class and can never be overridden [-Werror,-Wunnecessary-virtual-specifier]
> 245 | virtual CollationElementIterator* createCollationElementIterator(
> | ^
> workdir/UnpackedTarball/icu/source/i18n/unicode/tblcoll.h:257:39: error: virtual method 'createCollationElementIterator' is inside a 'final' class and can never be overridden [-Werror,-Wunnecessary-virtual-specifier]
> 257 | virtual CollationElementIterator* createCollationElementIterator(
> | ^
etc.
Change-Id: Id2e6c2ac7b10a625b9698644c310a32b0f4b4aa2
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/185220
Tested-by: Jenkins
Reviewed-by: Stephan Bergmann <stephan.bergmann@allotropia.de>
...warning about non-overriding virtual dtors in final classes. Every single
one of these might or might not be suspicious (e.g., in some cases it might be
better to have a virtual dtor in a derived-from class). Also, for some of the
virtual dtors, making them non-virtual then caused
> error: unnecessary user-declared destructor [loplugin:unnecessaryoverride]
so those were removed completely.
Change-Id: If0ee71645a347d6096b65988c56f627c42fe54b2
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/185223
Tested-by: Jenkins
Reviewed-by: Stephan Bergmann <stephan.bergmann@allotropia.de>
But --enable-debug also unconditionally enables -Werror, and which would start
to cause lots of warning errors, so patch that out.
Change-Id: I9df4b3c924d6490c4f0c01d68808fb875e0517ee
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/185085
Tested-by: Jenkins
Reviewed-by: Stephan Bergmann <stephan.bergmann@allotropia.de>
Following up on 20b48ed9e3 "Fix check-if-root for
github.com/flathub-infra/vorarbeiter", the next issue those new github actions
based flathub test builds run into is
> tar: configure: Cannot change ownership to uid 1000, gid 1000: Invalid argument
etc. from the various UnpackedTarball targets. The reason is that at least GNU
tar 1.35 defaults to --same-owner when run as root. I hope the --no-same-owner
countermeasure is available on all the GNU and BSD tar versions that we care
about (it is at least supported by /usr/bin/tar bsdtar 3.5.3 on macOS Sequoia
15.4.1).
Change-Id: Ie9a17856f9bca752817d914e6dd1b9cb2b5ea699
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/184645
Tested-by: Jenkins
Reviewed-by: Stephan Bergmann <stephan.bergmann@allotropia.de>
After df83ad933b "fix harfbuzz build with
--enable-python=fully-internal on linux", my --enable-python=fully-internal
Linux builds that auto-detect MESON=/usr/bin/meson started to emit a configure
warning
> * WARNING : using internal python with a meson launcher might not work, best to use MESON=/path/to/meson.py in autogen.input
and then fail to build ExternalProject_harfbuzz with
> Traceback (most recent call last):
> File "/home/sberg/lo/core/instdir/program/python-core-3.11.12/lib/importlib/metadata/__init__.py", line 563, in from_name
> return next(cls.discover(name=name))
> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
> StopIteration
>
> During handling of the above exception, another exception occurred:
>
> Traceback (most recent call last):
> File "/usr/bin/meson", line 33, in <module>
> sys.exit(load_entry_point('meson==1.7.0', 'console_scripts', 'meson')())
> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
> File "/usr/bin/meson", line 22, in importlib_load_entry_point
> for entry_point in distribution(dist_name).entry_points
> ^^^^^^^^^^^^^^^^^^^^^^^
> File "/home/sberg/lo/core/instdir/program/python-core-3.11.12/lib/importlib/metadata/__init__.py", line 982, in distribution
> return Distribution.from_name(distribution_name)
> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
> File "/home/sberg/lo/core/instdir/program/python-core-3.11.12/lib/importlib/metadata/__init__.py", line 565, in from_name
> raise PackageNotFoundError(name)
> importlib.metadata.PackageNotFoundError: No package metadata was found for meson
So better add back the idea from 736998ccef "Only
run meson from python when it apparently needs to be" (that had been removed
with df83ad933b "fix harfbuzz build with
--enable-python=fully-internal on linux") to treat a Meson executable that
doesn't advertise itself as being a Python script as just any plain executable,
which we don't throw at our --enable-python=fully-internal interpreter. (Just
like, say, an Emscripten build of LO uses an emcc compiler executable that
internally uses Python, and onto which we don't force our
--enable-python=fully-internal interpreter, either.)
Change-Id: I13965ef08043f350e9614bd61a469708b7faf27b
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/184626
Tested-by: Jenkins
Reviewed-by: Stephan Bergmann <stephan.bergmann@allotropia.de>
...otherwise my macOS build with autogen.input containing (among others)
> NINJA=/Users/stephan/lo/lode/opt/bin/ninja
would have failed building ExternalProject_harfbuzz with
> ERROR: Could not detect Ninja v1.8.2 or newer
Change-Id: I39260ae7fea9808fe26b9e63c3c7aaaa4c27103d
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/184502
Tested-by: Jenkins
Reviewed-by: Stephan Bergmann <stephan.bergmann@allotropia.de>
After 9830fd36db "date/time IDL datatypes
incompatible change", 4fa553e407 "fdo#62088: Fix
regression introduced by the DateTime incompatible change." had fixed
writing/reading timestamps to/from the .templdir.cache file, by cutting from
nanosecond precision back to 1/100th-second precision. But in the call to
TemplateFolderCacheImpl::equalState, the (cut-down) timestamps read from the
.templdir.cache file were then compared against (not--cut-down) timestamps
reported by the filesystem, potentially causing equalState to erroneously return
false. (This is only relevant on Windows, as the non-Windows implementation in
sal/osl/unx/file_stat.cxx always sets Nanonsec = 0 for all the timestamps it
reports.)
Change-Id: I34b99024531d4d2e49bb53450e8f6fd13397f237
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/184505
Tested-by: Jenkins
Reviewed-by: Stephan Bergmann <stephan.bergmann@allotropia.de>
...after abc8ea2da2 "tdf#165742 Step 2: Create a
ChartType derived class for chartex funnel chart." got merged after
1aa34c45b6 "fold DataSeriesHelper functions into
DataSeries" and thus started to cause
> /Volumes/lode/lode/jenkins/workspace/lo_tb_master_mac_dbg/chart2/source/model/template/FunnelChartTypeTemplate.cxx:151:23: error: no member named 'setPropertyAlsoToAllAttributedDataPoints' in namespace 'chart::DataSeriesHelper'
> DataSeriesHelper::setPropertyAlsoToAllAttributedDataPoints(xSeries, "BorderStyle",
> ~~~~~~~~~~~~~~~~~~^
> /Volumes/lode/lode/jenkins/workspace/lo_tb_master_mac_dbg/chart2/source/model/template/FunnelChartTypeTemplate.cxx:161:27: error: no member named 'setPropertyAlsoToAllAttributedDataPoints' in namespace 'chart::DataSeriesHelper'
> DataSeriesHelper::setPropertyAlsoToAllAttributedDataPoints(xSeries, "Geometry3D",
> ~~~~~~~~~~~~~~~~~~^
(<https://ci.libreoffice.org//job/lo_tb_master_mac_dbg/50335/>) etc.
Change-Id: If9ebdc92b00511144ec9ed556aa80b1f49a0399e
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/184323
Reviewed-by: Patrick Luby <guibomacdev@gmail.com>
Tested-by: Jenkins
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
Reviewed-by: Stephan Bergmann <stephan.bergmann@allotropia.de>
...where "apparently needs to be" is approximated by the meson executable being
named *.py (which, in turn is approximated by some GNU Make $(filter) check).
This follows up on ae24fc8c63 "harfbuzz: migrate
to meson" and should avoid e.g. issues with --enable-python=fully-internal on
Linux like
> Traceback (most recent call last):
> File "/home/sberg/lo/core/instdir/program/python-core-3.11.12/lib/importlib/metadata/__init__.py", line 563, in from_name
> return next(cls.discover(name=name))
> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
> StopIteration
>
> During handling of the above exception, another exception occurred:
>
> Traceback (most recent call last):
> File "/usr/bin/meson", line 33, in <module>
> sys.exit(load_entry_point('meson==1.7.0', 'console_scripts', 'meson')())
> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
> File "/usr/bin/meson", line 22, in importlib_load_entry_point
> for entry_point in distribution(dist_name).entry_points
> ^^^^^^^^^^^^^^^^^^^^^^^
> File "/home/sberg/lo/core/instdir/program/python-core-3.11.12/lib/importlib/metadata/__init__.py", line 982, in distribution
> return Distribution.from_name(distribution_name)
> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
> File "/home/sberg/lo/core/instdir/program/python-core-3.11.12/lib/importlib/metadata/__init__.py", line 565, in from_name
> raise PackageNotFoundError(name)
> importlib.metadata.PackageNotFoundError: No package metadata was found for meson
> make[1]: *** [/home/sberg/lo/core/external/harfbuzz/ExternalProject_harfbuzz.mk:47: /home/sberg/lo/core/workdir/ExternalProject/harfbuzz/build] Error 1
(<https://gerrit.libreoffice.org/c/core/+/183345/22#message-66c17b20610944c79d6d7206a62869ad430c3a60>
"harfbuzz: migrate to meson")
Change-Id: I44da7aebdc35a4be838046f0b065f1b646487156
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/184254
Tested-by: Jenkins
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
Reviewed-by: Stephan Bergmann <stephan.bergmann@allotropia.de>
At least on Windows, I see log files in the wild that have multiple lines from
different threads combined into one. This has apparently been broken by
9f02755955 "WNT: allow to set log level/path from
file" switching to a use of std::endl, for unclear reasons. (But, compared to
the version preceding that, keep the
s << '\n';
after the ANDROID and sal_use_syslog branches, assuming those don't want a
newline added anyway.)
Change-Id: Ie68e015e594918d3480d05c741f83948f1c3d69e
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/183718
Tested-by: Jenkins
Reviewed-by: Samuel Mehrbrodt <samuel.mehrbrodt@allotropia.de>
As discussed in the appertaining comments at
<https://gerrit.libreoffice.org/c/core/+/176645/3#message-1209b271ac4a330311eb90b2d6c16bbff57842ef>,
836d73a651 "consider VndSunStarExpand an exotic
protocol" may have been a bit brittle: "[vnd.sun.star.expand] originated from
the UNO configuration infrastructure, but indeed hard to tell if it then found
reasonable uses outside that area. I guess the best we can do is get it in,
maybe mention it in the release notes, and see." Turns out it is used at least
to handle %origin% in extensions, where that change caused
<https://bugs.documentfoundation.org/show_bug.cgi?id=165851> "Installing custom
default template via extension stopped working".
So to be better prepared to track down potential further breakage caused by that
change, note cases where it (legitimately or problematically) hits with a
SAL_INFO.
Change-Id: If742f4f0b0f223e5acf346d294567ccc09eaf49b
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/183659
Tested-by: Jenkins
Reviewed-by: Stephan Bergmann <stephan.bergmann@allotropia.de>
...like <https://ci.libreoffice.org/job/lo_daily_tb_linux_wasm/1026/>,
> wasm-ld: error: /home/tdf/lode/jenkins/workspace/lo_gerrit/tb/build_master/workdir/LinkTarget/StaticLibrary/liblibjpeg-turbo.a(jchuff.o): undefined symbol: jpeg_nbits_table
apparently broken with 451a7e9c43 "libjpeg-turbo:
upgrade to 3.0.4". But just enabling the missing
workdir/UnpackedTarball/libjpeg-turbo/jpeg_nbits.cxx then caused
> workdir/UnpackedTarball/libjpeg-turbo/jpeg_nbits.c:29:27: error: expected ';' after top level declarator
> 29 | const unsigned char HIDDEN jpeg_nbits_table[65536] = {
> | ^
> | ;
so tweak external/libjpeg-turbo/jconfigint.h a bit more (cf.
workdir/UnpackedTarball/libjpeg-turbo/CMakeLists.txt and
workdir/UnpackedTarball/libjpeg-turbo/jconfigint.h.in).
Change-Id: I3ca1c78b467fb9f1d7584799591dbb8a797320ac
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/183653
Tested-by: Jenkins
Reviewed-by: Stephan Bergmann <stephan.bergmann@allotropia.de>
Ever since 21d42ab495 "#75148# check security and
netaccess are set now", getJavaPropsFromSafetySettings in
stoc/source/javavm/javavm.cxx tries to read a Security property (of type
xs:boolean in officecfg/registry/schema/org/openoffice/Office/Java.xcs) via
XRegistryKey::getLongValue. While this may have worked with the previous
configmgr implementation, it now just always caused an exception (that would
have been swalled in initVMConfiguration in stoc/source/javavm/javavm.cxx).
Not sure if there are any other places where code expects to read a boolean
property value from the configuration via XRegistryKey::getLongValue, but lets
better add that (back) as a (hopefully) harmless extension.
Change-Id: I33ca60595da8fd79fb9250d74f36be0b328d610f
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/183269
Tested-by: Jenkins
Reviewed-by: Stephan Bergmann <stephan.bergmann@allotropia.de>
The NetAccess property in
officecfg/registry/schema/org/openoffice/Office/Java.xcs is nillable and has no
default value, so reading it here via XRegistryKey::getLongValue would typically
have caused an exception (that would have been swallowed in initVMConfiguration,
but would have caused the remainder of getJavaPropsFromSafetySettings to be
skipped).
Change-Id: If53986900917de20366f9517b9eae16227d69cf8
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/183268
Reviewed-by: Stephan Bergmann <stephan.bergmann@allotropia.de>
Tested-by: Jenkins
<github.com/llvm/llvm-project/commit/14f7bd63b95d0f61a6f47119ac66398ca230559a>
"Reland: [clang] preserve class type sugar when taking pointer to member
(#132401)"
Change-Id: Ie409324fcf3b98cd733cc46e06ee9e99dc140968
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/183250
Tested-by: Jenkins
Reviewed-by: Stephan Bergmann <stephan.bergmann@allotropia.de>
...so passing in the clear()'ed m_aContents is apparently a bug introduced in
4df7758dbd "INTEGRATION: CWS vcl17 (1.9.52); FILE
MERGED". (But convert back to the name xTrans introduced there; it looks more
meaningful than the xKeepAlive to which it had been renamed in
b9fe4f26ea "rename some local variables".)
Change-Id: I05254d7f06a956655fdc215c8956aa5f207de42f
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/183137
Tested-by: Jenkins
Reviewed-by: Stephan Bergmann <stephan.bergmann@allotropia.de>
...which caused cppumaker to emit the corresponding C++ class as
SAL_DEPRECATED_INTERNAL (since 44ea5d1414 "Adding
SAL_DEPRECATED_INTERNAL to an implementation function is pointless"), which
caused compilers to emit warnings upon its legitimate uses in external
!LIBO_INTERNAL_ONLY code
Change-Id: I8043506cd11658164e68f8743702acbc1a8213f3
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/182832
Tested-by: Jenkins
Reviewed-by: Stephan Bergmann <stephan.bergmann@allotropia.de>
...which would run into Application::Yield -> std::abort, so better live with
this hack for now. (The way forward would be to either asyncify relevant
dialogs, or move to Qt6 and --enable-emscripten-jspi.)
Change-Id: I143747cc32fb163e4908fa42b031e4eaea697d29
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/182731
Reviewed-by: Stephan Bergmann <stephan.bergmann@allotropia.de>
Tested-by: Jenkins
...for Java versions < 24. As discussed in the comments starting at
<https://gerrit.libreoffice.org/c/core/+/132558/4#message-4fd391160f395455362289909dadb7d2663f4ff2>
"Allow building against JDK 18", the previous
35d9ec3e59 "Remove the
JDK_SECURITYMANAGER_DISALLOWED_FOR_BUILD workaround" had started to resurface
the old "exception and build failure with JDK 21/22/23 on macOS Sequoia."
So keep the workaround for Java versions < 24, and hope that we won't run into
scenarios where we combine a Java version >= 24 (for which the workaround would
cause the new build failure) with an Ant version that requires the workaround.
Change-Id: Ib886f68d5c17ace2384f22672dcc2d0478830228
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/182454
Reviewed-by: Stephan Bergmann <stephan.bergmann@allotropia.de>
Tested-by: Jenkins
> [_RUN_____] CRMDBTest::testCRMDatabase
[...]
> java.lang.ClassNotFoundException: org.hsqldb.jdbcDriver
> at java.base/java.net.URLClassLoader.findClass(URLClassLoader.java:349)
> at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:557)
> at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:490)
> unknown:0:CRMDBTest::testCRMDatabase
> An uncaught UNO exception
> - com.sun.star.sdbc.SQLException: {Message: "The driver class “org.hsqldb.jdbcDriver” could not be loaded.The additional driver class path is “vnd.sun.star.expand:$LO_JAVA_DIR/hsqldb.jar vnd.sun.star.expand:$LO_JAVA_DIR/sdbc_hsqldb.jar”. at /home/sberg/lo/core/connectivity/source/drivers/jdbc/JConnection.cxx:674", Context: @0x7b373fdfdb70, SQLState: "", ErrorCode: 1000, NextException: com.sun.star.sdbc.SQLException: {Message: "org.hsqldb.jdbcDriver at /home/sberg/lo/core/connectivity/source/drivers/jdbc/Object.cxx:185", Context: @0x7b373fd19b70, SQLState: "", ErrorCode: -1, NextException: void: void}}
Change-Id: I4aeadfcf2a5c82eea4bf1fd646bceba4e8da5f4a
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/182422
Reviewed-by: Stephan Bergmann <stephan.bergmann@allotropia.de>
Tested-by: Jenkins
...that had been introduced with 19de5d97ef "Allow
building against JDK 18" to work around odd failures of ExternalProject_hsqldb
with whatever versions of JDK 18 and Ant I had been using at that time.
However, with java-latest-openjdk-24.0.0.0.36-1.rolling.fc41.x86_64 that
workaround now started to make ExternalProject_hsqldb fail for me with
> ERROR: JVMTI: 112(JVMTI_ERROR_WRONG_PHASE): Cannot get thread info
> ERROR: JVMTI: 112(JVMTI_ERROR_WRONG_PHASE): jvmtiEnv::GetLoadedClasses()
> Error occurred during initialization of VM
> java.lang.Error: A command line option has attempted to allow or enable the Security Manager. Enabling a Security Manager is not supported.
> at java.lang.System.initPhase3(java.base@24/System.java:1947)
apparently because of <https://openjdk.org/projects/jdk/24/>'s
<https://openjdk.org/jeps/486> "JEP 486: Permanently Disable the Security
Manager".
But with the ant-1.10.14-13.fc41.noarch I'm using now, neither
java-21-openjdk-21.0.6.0.7-6.fc41 (I no longer have the problematic-back-then
JDK 18) nor java-latest-openjdk-24.0.0.0.36-1.rolling.fc41.x86_64 appear to need
that workaround anymore anyway (presumably because "an updated version of Apache
Ant [has] become available", as discussed in the commit message of that
19de5d97ef).
Change-Id: Id13b57559df486012c888247c96323716168c97d
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/182419
Tested-by: Jenkins
Reviewed-by: Stephan Bergmann <stephan.bergmann@allotropia.de>
...with 01ae181574 "Remove readme file from SDK",
after which Linux --with-package-format=deb or --with-package-format=rpm builds
had started to fail with errors like
> : *****************************************************************
> : ERROR: ERROR: Could not find readme file README_en-US (C) at /home/sberg/lo2/source/solenv/bin/modules/installer/epmfile.pm line 488.
> : *****************************************************************
>
> make[1]: *** [/home/sberg/lo2/source/instsetoo_native/CustomTarget_install.mk:123: sdkoo‧en-US‧_SDK‧‧deb‧nostrip] Error 1
epm demands a %readme line in its input (cf.
> if (!dist->product[0] ||
> !dist->copyright[0] ||
> !dist->vendor[0] ||
> !dist->license[0] ||
> !dist->readme[0] ||
> !dist->version[0])
> {
> fputs("epm: Error - missing %product, %copyright, %vendor, %license,\n", stderr);
> fputs(" %readme, or %version attributes in list file!\n", stderr);
in workdir/UnpackedTarball/epm/epm.c), but doesn't seem to actually need it, at
least in this scenario. So use NO_README_IN_ROOTDIR, which happens to be set
exactly for LibreOffice_SDK and LibreOfficeDev_SDK in
instsetoo_native/util/openoffice.lst.in, as a flag to provide a dummy %readme
line for epm, which appears to work well.
Change-Id: I350c5914cd7b6d2f61cdd3d1ed4db7f7cc50c627
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/182285
Tested-by: Jenkins
Reviewed-by: Stephan Bergmann <stephan.bergmann@allotropia.de>
...which had been added with 41ab6a5dfa "struct SN
needs a strict weak ordering operator <" and should no longer be necessary
since2b68bf57789714bf79b5bd1fc3e4e9ad586b7c31 "android: Update minimum NDK
version to 27"
Change-Id: I8a2fb01804ed6220bb927175992b4d5015b0d7e5
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/182281
Tested-by: Jenkins
Reviewed-by: Stephan Bergmann <stephan.bergmann@allotropia.de>
...so that the !HAVE_EMSCRIPTEN_PROXY_TO_PTHREAD case (introduced in
bc60c54878 "If necessary, fall back to an
approximation of WorkerGlobalScope.importScripts") can make sure that one script
is fully evaluated before the next is loaded, to avoid a race when some script
depends on an earlier script
Change-Id: I5fca4d7aa5d7e9b8d86b59667c599f62f1f3064c
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/181905
Reviewed-by: Stephan Bergmann <stephan.bergmann@allotropia.de>
Tested-by: Jenkins
...and get rid of comphelper::emscriptenthreading::setUp. This will help with a
potentially forthcoming change to move initUno in desktop/source/app/appinit.cxx
to the eventHandlerThread (so code in both desktop and in vcl/qt5 would need the
comphelper::emscriptenthreading::Data and it would be unclear which should call
setUp).
Change-Id: I157f80a450d8eeabd6d0317c881c6a9ea67fc59a
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/181908
Reviewed-by: Stephan Bergmann <stephan.bergmann@allotropia.de>
Tested-by: Jenkins
Instead of being a thread that keeps blocking in C++
emscripten::ProxyingQueue::execute(), make it a thread that immediately goes
back to the browser event loop via emscripten_exit_with_live_runtime(). (Which
will eventually allow setupMainChannel from desktop/source/app/appinit.cxx to
run on that thread and receive the "LOWA-channel" JS message event.)
The thread is detached now and no longer joined in
comphelper::emscriptenthreading::tearDown, but that was mostly academic anyway
(as LOWA doesn't terminate in the traditional sense, and just stops when you
close its browser tab).
Change-Id: I32270cfc602549cf26b99c6f66811b3aca5ea5c0
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/181907
Reviewed-by: Stephan Bergmann <stephan.bergmann@allotropia.de>
Tested-by: Jenkins
...and use it in one place for the experimental Emscripten Qt6
JSPI/non-PROXY_TO_PTHREAD mode (where I have a hunch that some of the deadlocks
I experience in that experimental mode are due to a mis-locked SolarMutex)
Change-Id: Ifb335202569b7d2beecd7a502064ebcfdaaddbab
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/181872
Tested-by: Jenkins
Reviewed-by: Stephan Bergmann <stephan.bergmann@allotropia.de>
...lacking from 3645088025 "Experimental
Emscripten Qt6 --enable-emscripten-proxy-to-pthread ersatz", but rather academic
anyway, as LOWA doesn't terminate in the traditional sense (and just stops when
you close its browser tab)
Change-Id: I04d5ccbd5b9fa8350a9e3d949bf3903bc4692c53
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/181823
Tested-by: Jenkins
Reviewed-by: Stephan Bergmann <stephan.bergmann@allotropia.de>
With Qt5, the (enabled by default) --enable-emscripten-proxy-to-pthread (i.e.,
leveraging Emscripten's -sPROXY_TO_PTHREAD) works reasonably well with the
handful of hacks we added to our Qt5 5.15.2+wasm branch. However, for Qt6 any
necessary hacking there would need to be excessive and looks unrealistic (see
the mailing list thread starting at
<https://lists.qt-project.org/pipermail/development/2024-December/045960.html>
"[Development] Wasm: Support for Emscripten PROXY_TO_PTHREAD?" and the
presentation at
<https://fosdem.org/2025/schedule/event/fosdem-2025-5169-lowa-in-need-of-a-vcl-plug/>).
But when leveraging the upcoming browser support for JSPI (through Emscripten's
-sJSPI, Qt6's -feature-wasm-jspi, and our --enable-emscripten-jspi), it looks
feasible to leave the Qt6 code alone and instead of proxying the complete
application main thread (including the Qt6 event handling) off the browser main
thread to an additional thread (automatically set up through Emscripten
-sPROXY_TO_PTHREAD), to just proxy some of the LO event handling off the browser
main thread to an additional thread (set up through a new
comphelper::emscriptenthreading::setUp). That way, problematic LO code that is
triggered from event handling (like "Tools - Extensions..." wanting to spawn
additional threads, which requires the browser main thread to be unblocked) can
be offloaded to the additional thread and get the browser main thread unblocked.
Thus there is a new "Emscripten Qt6 JSPI/non-PROXY_TO_PTHREAD" mode now (via
--enable-qt6 --enable-emscripten-jspi --disable-emscripten-proxy-to-pthread).
It is still experimental and known to occasionally hang and crash, but has been
seen to generally work at least with recent emsdk 4.0.3 and a recent Qt dev
branch (towards Qt 6.10, built with -feature-wasm-jspi) and running on recent
Chrome 132 with "Experimental WebAssembly JavaScript Promise Integration (JSPI)"
enabled under <chrome://flags>.
There are two places where code is proxied off the browser main thread to the
additional thread: One is QtInstance::ProcessEvent, the other is invoking
certain kinds of tasks (just "vcl::Dialog maLayoutIdle", for now) in
Scheduler::CallbackTaskScheduling (unconditionally proxying off all kinds of
tasks there appeared to cause more issues than it would solve). For the latter,
the concept of "transferability" has been added to class Task; the new
Emscripten mode is the only case making use of that concept.
Also for the latter, it is important that the browser main thread does not get
blocked at the
> SolarMutexGuard aGuard;
in QtTimer::timeoutActivated when such a timer event happens while the
additional thread has the SolarMutex locked and tries to do something that
requires the browser main thread to not be blocked (like spawning additional
threads upon "Tools - Extensions..."). Therefore, as a bad hack, and only for
the new Emscripen mode, that SolarMutexGuard has been moved from
QtTimer::timeoutActivated down to the call of pTask->Invoke() in
Scheduler::CallbackTaskScheduling (see the two TODO comments added to the code).
This appears to work relatively well, but is still a bad hack that should rather
be done properly.
And then there's some code across vcl/qt5 that may now end up running proxied
off the browser main thread, but which actually requires to be run on the
browser main thread (because, e.g., it calls into Qt6 code that accesses JS
entities that are only available there). Those places use a newly introduced
QtInstance::EmscriptenLightweightRunInMainThread that takes some code via a
lambda: For the new Emscripten mode, the code is explicitly proxied back to the
browser main thread, while in all other cases it is run directly in place.
Some further notes:
* -sPTHREAD_POOL_SIZE needed to be bumped by one, to accommodate for the
additional new thread.
* The code requires two additional JSPI "entry points",
_emscripten_check_mailbox (to complement the suspension in
QtInstance::ProcessEvent) and the invocation of the Qt6-internal
qstdweb::EventListener::handleEvent (to complement a Qt6-internal suspension
point hit when e.g. doing "Tools - Extension Manager..." and clicking "Add").
* The new Emscripten mode requires -fexperimental-library (for std::jthread and
std::stop_token) when building at least with emsdk 4.0.3, but it shouldn't
hurt to have that switch enabled unconditionally for Emscripten builds (which
are self-contained, so can't be hit by any compatibility issues that switch
might cause).
Change-Id: Id3b13e2cc3c304b072f388c6d736e7e663b36c58
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/181424
Tested-by: Jenkins
Reviewed-by: Stephan Bergmann <stephan.bergmann@allotropia.de>
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
...to find derived classes that do not directly override SfxPoolItem::ItemType.
Most of the cases that the plugin flagged were classes that are apparently not
meant to be instantiated themselves (so I added pure virtual overrides there),
but SdrMeasureFormatStringItem appears to genuinely have missed it
DECLARE_ITEM_TYPE_FUNCTION stanza.
Change-Id: Iec40080377f26cc4fa2c8cff735d5f0d3bd60509
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/181211
Reviewed-by: Armin Le Grand <Armin.Le.Grand@me.com>
Tested-by: Jenkins
Reviewed-by: Stephan Bergmann <stephan.bergmann@allotropia.de>
My local ASan/UBSan builds of d37c60c5e2b793c0934d431e59c8cb3ff1a170b6
"external/firebird: Drop -fno-rtti from sanitizer builds" against LLVM 21 trunk
had been fine, but <https://ci.libreoffice.org/job/lo_ubsan/3459/> against
lode's LLVM 12.0.1 started to fail with
> ==3374322==ERROR: AddressSanitizer: odr-violation (0x0000007af7a0):
> [1] size=16 'typeinfo for Firebird::Exception' /home/tdf/lode/jenkins/workspace/lo_ubsan/workdir/UnpackedTarball/firebird/src/common/fb_exception.cpp
> [2] size=16 'typeinfo for Firebird::Exception' /home/tdf/lode/jenkins/workspace/lo_ubsan/workdir/UnpackedTarball/firebird/src/common/fb_exception.cpp
> These globals were registered at these points:
> [1]:
> #0 0x440738 in __asan_register_globals.part.0 /home/tdf/lode/packages/llvm-llvmorg-12.0.1.src/compiler-rt/lib/asan/asan_globals.cpp:360:3
> #1 0x68237b in asan.module_ctor (/workdir/UnpackedTarball/firebird/gen/Debug/firebird/bin/isql+0x68237b)
>
> [2]:
> #0 0x440738 in __asan_register_globals.part.0 /home/tdf/lode/packages/llvm-llvmorg-12.0.1.src/compiler-rt/lib/asan/asan_globals.cpp:360:3
> #1 0x7f5ccdec01ab in asan.module_ctor (/workdir/UnpackedTarball/firebird/gen/Debug/firebird/lib/libfbclient.so.2+0x9b41ab)
What appears to make a difference there is
<https://github.com/llvm/llvm-project/commit/1ada819c237bf724e6eaa1c82b2742e3eb57a5d5>
"[asan] Default to -fsanitize-address-use-odr-indicator for non-Windows", first
appearing in LLVM 16: My local ASan/UBSan LLVM 21 trunk build, which builds
external/firebird fine, has
> 0000000000ee5166 B __odr_asan_gen__ZTIN8Firebird9ExceptionE
> 000000000045b960 D _ZTIN8Firebird9ExceptionE
in workdir/UnpackedTarball/firebird/gen/Debug/firebird/bin/isql and
> 0000000000e49920 b __odr_asan_gen__ZTIN8Firebird9ExceptionE
> 0000000000b9d100 D _ZTIN8Firebird9ExceptionE
in workdir/UnpackedTarball/firebird/gen/Debug/firebird/lib/libfbclient.so.2, but
when I rebuild it with -fno-sanitize-address-use-odr-indicator, it has only
> 000000000045bbc0 D _ZTIN8Firebird9ExceptionE
in workdir/UnpackedTarball/firebird/gen/Debug/firebird/bin/isql and only
> 0000000000b9d1c0 D _ZTIN8Firebird9ExceptionE
in workdir/UnpackedTarball/firebird/gen/Debug/firebird/lib/libfbclient.so.2, and
fails the same way as <https://ci.libreoffice.org/job/lo_ubsan/3459/>.
So make the "Drop -fno-rtti" patch depend on Clang >= 16 (recorded, for
simplicity, with a bespoke new CLANG_16 config_host.mk variable).
Change-Id: I70a8ce8eb535265d592d470718d6b3a6765d5bcd
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/181235
Reviewed-by: Stephan Bergmann <stephan.bergmann@allotropia.de>
Tested-by: Jenkins
Until now, at least Clang silently drops -fsanitize=vptr (which needs RTTI, and
which is by default included in -fsanitize=undefined) from -fsanitize=undefined,
that's how external/firebird (which uses -fno-rtti) worked for now with
-fsanitize=undefined. However, Clang is planing to break -fsanitize=vptr out of
-fsanitize=undefined (see
<https://discourse.llvm.org/t/rfc-remove-vptr-from-undefined/83830> "[RFC]
Remove `vptr` from `undefined`"), so to be prepared for that I started to do my
local ASan/UBSan build with an explicit -fsanitize=vptr already. Which thus
started to cause
> clang++: error: invalid argument '-fsanitize=vptr' not allowed with '-fno-rtti'
But there appears to be no good reason to do such instrumented builds with
-fno-rtti anyway.
Change-Id: I9f579846a6c0f666d071d3432d17b266d8ef339e
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/181213
Tested-by: Jenkins
Reviewed-by: Stephan Bergmann <stephan.bergmann@allotropia.de>
...i.e., stripping both Calc and Writer, which comes in handy when trying e.g.
-fsanitize=address and the resulting binary would otherwise become too large.
(Which also unearthed that the StartModule/menubar/menubar.xml had erroneously
been added to the Writer section of static/CustomTarget_emscripten_fs_image.mk
ever since 88b94aafc2 "WASM create and link the
Emscripten FS image".)
Change-Id: Ia880040f51f15d33ed447a1c69838fa807f48ade
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/181188
Reviewed-by: Stephan Bergmann <stephan.bergmann@allotropia.de>
Tested-by: Jenkins
...and not in some unopkg process. The checks done here would not work for
Emscripten, where osl_getExecutableFile returns some generic "./this.program",
and where we don't set up the office pipe.
Change-Id: Iac3fead3eaa0ac9cfc9dbcf3c01cd9f12df5548b
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/181161
Tested-by: Jenkins
Reviewed-by: Stephan Bergmann <stephan.bergmann@allotropia.de>
...which it claims to be. Also, builds against recent LLVM 20 trunk libc++ (on
macOS) had started to fail with
> In file included from sc/source/core/tool/scmatrix.cxx:20:
> In file included from sc/inc/scmatrix.hxx:22:
> In file included from sc/inc/address.hxx:30:
> In file included from sc/inc/types.hxx:14:
> In file included from external/boost/include/boost/intrusive_ptr.hpp:30:
> In file included from workdir/UnpackedTarball/boost/boost/intrusive_ptr.hpp:16:
> In file included from workdir/UnpackedTarball/boost/boost/smart_ptr/intrusive_ptr.hpp:20:
> In file included from ~/llvm/inst/bin/../include/c++/v1/functional:557:
> In file included from ~/llvm/inst/bin/../include/c++/v1/__functional/boyer_moore_searcher.h:25:
> ~/llvm/inst/bin/../include/c++/v1/__vector/vector.h:1043:20: error: no matching function for call to object of type 'const __copy_n'
> 1043 | auto __mid = ranges::copy_n(std::move(__first), size(), this->__begin_).in;
> | ^~~~~~~~~~~~~~
> ~/llvm/inst/bin/../include/c++/v1/__vector/vector.h:317:5: note: in instantiation of function template specialization 'std::vector<double>::__assign_with_size<(anonymous namespace)::wrapped_iterator<mdds::mtv::default_element_block<10, double>, matop::(anonymous namespace)::MatOp<(lambda at sc/source/core/tool/scmatrix.cxx:3596:17)>, double>, (anonymous namespace)::wrapped_iterator<mdds::mtv::default_element_block<10, double>, matop::(anonymous namespace)::MatOp<(lambda at sc/source/core/tool/scmatrix.cxx:3596:17)>, double>>' requested here
> 317 | __assign_with_size(__first, __last, std::distance(__first, __last));
> | ^
> workdir/UnpackedTarball/mdds/include/mdds/multi_type_vector/soa/../types.hpp:335:15: note: in instantiation of function template specialization 'std::vector<double>::assign<(anonymous namespace)::wrapped_iterator<mdds::mtv::default_element_block<10, double>, matop::(anonymous namespace)::MatOp<(lambda at sc/source/core/tool/scmatrix.cxx:3596:17)>, double>, 0>' requested here
> 335 | m_vec.assign(first, last);
> | ^
> workdir/UnpackedTarball/mdds/include/mdds/multi_type_vector/soa/../types.hpp:718:11: note: in instantiation of function template specialization 'mdds::mtv::delayed_delete_vector<double>::assign<(anonymous namespace)::wrapped_iterator<mdds::mtv::default_element_block<10, double>, matop::(anonymous namespace)::MatOp<(lambda at sc/source/core/tool/scmatrix.cxx:3596:17)>, double>>' requested here
> 718 | d.assign(it_begin, it_end);
> | ^
> workdir/UnpackedTarball/mdds/include/mdds/multi_type_vector/soa/../standard_element_blocks.hpp:73:1: note: in instantiation of function template specialization 'mdds::mtv::element_block<mdds::mtv::default_element_block<10, double>, 10, double, mdds::mtv::delayed_delete_vector>::assign_values<(anonymous namespace)::wrapped_iterator<mdds::mtv::default_element_block<10, double>, matop::(anonymous namespace)::MatOp<(lambda at sc/source/core/tool/scmatrix.cxx:3596:17)>, double>>' requested here
> 73 | MDDS_MTV_DEFINE_ELEMENT_CALLBACKS(double, element_type_double, 0.0, double_element_block)
> | ^
> workdir/UnpackedTarball/mdds/include/mdds/multi_type_vector/macro.hpp:101:21: note: expanded from macro 'MDDS_MTV_DEFINE_ELEMENT_CALLBACKS'
> 101 | block_type::assign_values(dest, it_begin, it_end); \
> | ^
> workdir/UnpackedTarball/mdds/include/mdds/multi_type_vector/soa/main_def.inl:2545:13: note: in instantiation of function template specialization 'mdds::mtv::mdds_mtv_assign_values<(anonymous namespace)::wrapped_iterator<mdds::mtv::default_element_block<10, double>, matop::(anonymous namespace)::MatOp<(lambda at sc/source/core/tool/scmatrix.cxx:3596:17)>, double>>' requested here
> 2545 | mdds_mtv_assign_values(*blk_data, *it_begin, it_begin, it_end);
> | ^
> workdir/UnpackedTarball/mdds/include/mdds/multi_type_vector/soa/main_def.inl:2519:16: note: (skipping 3 contexts in backtrace; use -ftemplate-backtrace-limit=0 to see all)
> 2519 | return set_cells_to_single_block(row, end_row, block_index1, it_begin, it_end);
> | ^
> sc/source/core/tool/scmatrix.cxx:2419:29: note: in instantiation of function template specialization 'mdds::multi_type_matrix<(anonymous namespace)::matrix_traits>::set<(anonymous namespace)::wrapped_iterator<mdds::mtv::default_element_block<10, double>, matop::(anonymous namespace)::MatOp<(lambda at sc/source/core/tool/scmatrix.cxx:3596:17)>, double>>' requested here
> 2419 | pos = mrMat.set(pos,aFunc.begin(), aFunc.end());
> | ^
> workdir/UnpackedTarball/mdds/include/mdds/multi_type_matrix.hpp:191:13: note: in instantiation of member function '(anonymous namespace)::MatrixOpWrapper<matop::(anonymous namespace)::MatOp<(lambda at sc/source/core/tool/scmatrix.cxx:3596:17)>>::operator()' requested here
> 191 | m_func(mtm_node);
> | ^
> ~/llvm/inst/bin/../include/c++/v1/__algorithm/for_each.h:33:5: note: in instantiation of member function 'mdds::multi_type_matrix<(anonymous namespace)::matrix_traits>::walk_func<(anonymous namespace)::MatrixOpWrapper<matop::(anonymous namespace)::MatOp<(lambda at sc/source/core/tool/scmatrix.cxx:3596:17)>>>::operator()' requested here
> 33 | __f(*__first);
> | ^
> sc/source/core/tool/scmatrix.cxx:2468:11: note: in instantiation of function template specialization 'mdds::multi_type_matrix<(anonymous namespace)::matrix_traits>::walk<(anonymous namespace)::MatrixOpWrapper<matop::(anonymous namespace)::MatOp<(lambda at sc/source/core/tool/scmatrix.cxx:3596:17)>>>' requested here
> 2468 | maMat.walk(aFunc);
> | ^
> sc/source/core/tool/scmatrix.cxx:3598:12: note: in instantiation of function template specialization 'ScMatrixImpl::ApplyOperation<matop::(anonymous namespace)::MatOp<(lambda at sc/source/core/tool/scmatrix.cxx:3596:17)>>' requested here
> 3598 | pImpl->ApplyOperation(aOp, *rMat.pImpl);
> | ^
> ~/llvm/inst/bin/../include/c++/v1/__algorithm/ranges_copy_n.h:64:3: note: candidate template ignored: constraints not satisfied [with _Ip = __libcpp_remove_reference_t<wrapped_iterator<default_element_block<10, double, mdds::mtv::delayed_delete_vector>, MatOp<(lambda at sc/source/core/tool/scmatrix.cxx:3596:17)>, double> &>, _Op = pointer]
> 64 | operator()(_Ip __first, iter_difference_t<_Ip> __n, _Op __result) const {
> | ^
> ~/llvm/inst/bin/../include/c++/v1/__algorithm/ranges_copy_n.h:61:13: note: because '(anonymous namespace)::wrapped_iterator<mdds::mtv::default_element_block<10, double>, matop::(anonymous namespace)::MatOp<(lambda at sc/source/core/tool/scmatrix.cxx:3596:17)>, double>' does not satisfy 'input_iterator'
> 61 | template <input_iterator _Ip, weakly_incrementable _Op>
> | ^
> ~/llvm/inst/bin/../include/c++/v1/__iterator/concepts.h:154:26: note: because '(anonymous namespace)::wrapped_iterator<mdds::mtv::default_element_block<10, double>, matop::(anonymous namespace)::MatOp<(lambda at sc/source/core/tool/scmatrix.cxx:3596:17)>, double>' does not satisfy 'input_or_output_iterator'
> 154 | concept input_iterator = input_or_output_iterator<_Ip> && indirectly_readable<_Ip> && requires {
> | ^
> ~/llvm/inst/bin/../include/c++/v1/__iterator/concepts.h:135:6: note: because '(anonymous namespace)::wrapped_iterator<mdds::mtv::default_element_block<10, double>, matop::(anonymous namespace)::MatOp<(lambda at sc/source/core/tool/scmatrix.cxx:3596:17)>, double>' does not satisfy 'weakly_incrementable'
> 135 | } && weakly_incrementable<_Ip>;
> | ^
> ~/llvm/inst/bin/../include/c++/v1/__iterator/concepts.h:122:10: note: because '__i++' would be invalid: cannot increment value of type '(anonymous namespace)::wrapped_iterator<mdds::mtv::default_element_block<10, double>, matop::(anonymous namespace)::MatOp<(lambda at sc/source/core/tool/scmatrix.cxx:3596:17)>, double>'
> 122 | __i++; // not required to be equality-preserving
> | ^
etc.
Change-Id: I1c49823d462c67bb73b16453ea44e5f2fe19d2e7
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/181111
Tested-by: Jenkins
Reviewed-by: Stephan Bergmann <stephan.bergmann@allotropia.de>
> /Volumes/lode/lode/jenkins/workspace/lo_tb_master_mac/vcl/quartz/salvd.cxx:120:22: error: unused parameter 'pGraphic' [-Werror,-Wunused-parameter]
> AquaSalGraphics* pGraphic, tools::Long &nDX, tools::Long &nDY,
> ^
(<https://ci.libreoffice.org/job/lo_tb_master_mac/52565/>) since
a46c265051 "split CreateVirtualDevice into two
methods". (The argument to
> mpGraphics = new AquaSalGraphics( /*pGraphic*/ );
had been commented out ever since the code got introduced in
f0faedb959 "INTEGRATION: CWS aquabmpfix01
(1.22.12); FILE MERGED".)
Change-Id: I476bba0fe65005bbd8f95e7185639e0a6629affd
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/181101
Tested-by: Jenkins
Reviewed-by: Stephan Bergmann <stephan.bergmann@allotropia.de>
This reverts commit 3500c44bcc.
Reason for revert: At least for Linux --without-system-cairo builds, this causes
workdir/UnpackedTarball/cairo/src/.libs/libcairo.so (which is the lib that other
libs like Library_drawinglayer and Library_vcl will link against) to have an
SONAME of libcairo.so.2 (instead of libcairo-lo.so.2), so at runtime libs like
instdir/program/libdrawinglayerlo.so and instdir/program/libvcllo.so will have a
NEEDED of libcairo.so.2 (instead of libcairo-lo.so.2), so will pick up whatever
system libcairo.so.2 (/usr/lib64/libcairo.so.2 from cairo-1.18.2-2.fc41.x86_64,
in my case) instead of instdir/program/libcairo-lo.so.2, which caused e.g.
CppunitTest_vcl_bitmap_render_test
CPPUNIT_TEST_NAME=BitmapRenderTest::testTdf113918 to happen to fail for me with
> [_RUN_____] BitmapRenderTest::testTdf113918
> warn:vcl.gdi:2234659:2234659:vcl/headless/CairoCommon.cxx:1619: unsupported SvpSalGraphics::drawAlphaBitmap case
> vcl/qa/cppunit/bitmaprender/BitmapRenderTest.cxx:100:BitmapRenderTest::testTdf113918
> equality assertion failed
> - Expected: rgba[ffffffff]
> - Actual : rgba[008000ff]
Change-Id: I9a2a64197185b7c057352c3fb7f3e3f6dbcf70db
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/180884
Reviewed-by: Stephan Bergmann <stephan.bergmann@allotropia.de>
Tested-by: Jenkins
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
for use in Emscripten --enable-qt6 builds, to e.g. add command line arguments
(like --writer) into qt_soffice.html.
For standard --enable-qt5 Emscripten builds, it works to specify an
> EMSCRIPTEN_EXTRA_SOFFICE_PRE_JS=/path/to/include.js
containing
> Module.arguments = ['--writer'];
to make qt_soffice.html open a Writer document. Due to how the Qt loading has
changed in Qt6, that no longer works for --enable-qt6 Emscripten builds. But
what works there now is to instead specify an
> EMSCRIPTEN_EXTRA_QTLOADER_CONFIG=arguments:['--writer']
(The sed -z option that is necessary to replace text spanning a newline is a
non-standard GNU extension, but lets assume that this is only executed for
cross-builds from Linux that use GNU sed.)
Change-Id: I31372a7a1f8fccbe0fe2594614bf5846e5e5c95f
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/180821
Tested-by: Jenkins
Reviewed-by: Stephan Bergmann <stephan.bergmann@allotropia.de>