Commit graph

842 commits

Author SHA1 Message Date
Mike Kaganski
ec0a49ecc7 Windows 7-8.1 support was removed, prevent install on these old systems
There is no simple "Windows is 10 or newer" check in MSI, with the
Microsoft policy of "you don't need to know real Windows version".
See also https://developercommunity.visualstudio.com/t/detect-a-windows-version-from-msi/412198

The values that MSI sees (e.g. on my Win11) are:

Property(C): VersionNT = 603
Property(C): VersionNT64 = 603
Property(C): WindowsBuild = 9600

So those can't be used for the check. I use the WINMAJORVER that is
read from registry (Software\Microsoft\Windows NT\CurrentVersion).

There is no more need to check and install UCRT; it was dropped.

Change-Id: Ic02d6aeb965e9684bafd4357f969980f77000e73
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/178049
Tested-by: Jenkins
Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
2024-12-07 20:06:46 +01:00
Christian Lohmaier
c3ed6e5a2c windows: use jom instead of nmake to build openssl if available
jom (https://wiki.qt.io/Jom) is a parallel version of nmake that
especially helps with building openssl since everything is compiled
individually/the compiler cannot use parallelism either.
Also in a LibreOffice build there's not much else that can be done in
parallel/other stuff requires openssl to be built to continue.

Change-Id: Ib16b0f947991a1d3255aeae7dc5d9bdee0b157a0
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/177743
Reviewed-by: Christian Lohmaier <lohmaier+LibreOffice@googlemail.com>
Tested-by: Jenkins
2024-12-03 18:07:38 +01:00
Sakura286
d17a495c5c tdf#152943: Add configure option to disable NaN payload related tests
Because some architecture(such as riscv64) does not support NaN
  payload (NaN propagation), skipping the related tests might be a
  good choice for builders who has already known the risk of lacking
  NaN payload support.

  Currently the tests that could be skipped via --disable-nan-tests are:

  - rtl_math: test_payloadNaN
  - sc_ucalc_formula2: testExternalRefFunctions
  - sc_ucalc_formula2: testFuncGCD
  - sc_ucalc_formula2: testFuncLCM
  - sc_ucalc_nanpayload: testNanPayload

Change-Id: Ia8834595a8b469d8c542809b3e580a3f6316ef20
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/174801
Reviewed-by: René Engelhard <rene@debian.org>
Tested-by: Jenkins
Reviewed-by: Christian Lohmaier <lohmaier+LibreOffice@googlemail.com>
Reviewed-by: Eike Rathke <erack@redhat.com>
Tested-by: René Engelhard <rene@debian.org>
2024-11-27 20:06:40 +01:00
Stephan Bergmann
f510ce620f Add experimental support for Emscripten JSPI
...which I've seen fundamentally working when building with recent emsdk against
recent Qt6 trunk (and including <https://github.com/qt/qtbase/pull/108> "Update
the check for WebAssembly JSPI support") and running on recent Chrome (with JSPI
enabled under <chrome://flags/>)

Change-Id: I98c11c5ee7e95b135ddc33c95c95752055ecd4c5
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/176031
Tested-by: Jenkins
Reviewed-by: Stephan Bergmann <stephan.bergmann@allotropia.de>
2024-11-04 20:47:05 +01:00
Stephan Bergmann
9416bafc23 Adapt to generation of .worker.js files gone from 3.1.68
...and just unused dummies since 3.1.58, so don't install them for >= 3.1.58,
even if the dummies would still be available for < 3.1.68

Change-Id: Ida55be2fa3b75982bfd764b7b2676e63c092fe79
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/175822
Reviewed-by: Stephan Bergmann <stephan.bergmann@allotropia.de>
Tested-by: Jenkins
2024-10-30 13:51:40 +01:00
Stephan Bergmann
33aa490cd6 Make --disable-emscripten-proxy-to-pthread configurable
...as is convenient for some experiments

Change-Id: I74aedb38ecc0f7b5a0d913799f649dce77dc7bba
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/174753
Reviewed-by: Stephan Bergmann <stephan.bergmann@allotropia.de>
Tested-by: Jenkins
2024-10-10 14:39:24 +02:00
Christian Lohmaier
0a3e1df7af also set TMP in addition to TMPDIR
primarily for Windows where unittests also use Windows' GetTempPathW
function that prefers TMP over TEMP over USERPROFILE over the windows
directory/doesn't respect TMPDIR

Unittests not using TMPDIR is annoying since bitdefender will block
access on some CVE tests. While you can create "dev drives" now that
also allow you to disable AV-scanning permanently on those, that of
course won't help when the files are created outside the devdrive/in the
default temporary directory.

Using TEMPDIR allows to specify the dir in autogen.input and the user
won't have to add the regular temp-dir to AV-exclusions or remember to
always disable the real-time-scanning before starting a build.

Change-Id: I47349e4318e8de99e45961a4989975cf4081fc07
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/174267
Reviewed-by: Christian Lohmaier <lohmaier+LibreOffice@googlemail.com>
Tested-by: Jenkins
2024-10-01 11:36:48 +02:00
Caolán McNamara
3de3f660af add a --with-system-java-websocket
there was a system Java-WebSocket in Fedora 35, f.e. but unaware
if this is actively packaged standalone in contemporary distros,
but useful for the coverity build case.

Change-Id: Id6393dbfb1c449b75391752a8bb5e5ea4481a084
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/173725
Tested-by: Jenkins
Reviewed-by: Caolán McNamara <caolan.mcnamara@collabora.com>
2024-09-20 17:43:42 +02:00
Caolán McNamara
cd8ad433f0 tdf#161941 add --with-docrepair-fonts option
to enabling bundling or not bundling the docrepair fonts of
https://github.com/docrepair-fonts

(which provide replacments for: Agency FB, Baskerville Old Face,
Berlin Sans FB, Cooper Black, Lucida Calligraphy, Lucida Grande,
Lucida Handwriting)

Change-Id: I4ea442fa54d21f213ccbdccba9aea1b9c0675c90
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/172337
Tested-by: Jenkins
Reviewed-by: Caolán McNamara <caolan.mcnamara@collabora.com>
2024-08-25 21:45:06 +02:00
Stephan Bergmann
2d9f8f45be Emscripten: Experimental -sPROXY_POSIX_SOCKETS support
...see
<https://emscripten.org/docs/porting/networking.html#full-posix-sockets-over-websocket-proxy-server>.

This requires
<4aff1f28b8>
"-sPROXY_POSIX_SOCKETS: Add websocket_proxy_poll".  When configured with
--disable-socketpair (which appears to have no negative consequences),
external/curl appears to only call poll(2) with socket-related file descriptors,
so we can use websocket_proxy_poll instead.

The URL on which the websocket_to_posix_proxy process listens must be specified
as Module.uno_websocket_to_posix_socket_url.

Change-Id: I4ad23098b5bbc0646fa50859c0aeb9870d1cc92a
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/172243
Reviewed-by: Stephan Bergmann <stephan.bergmann@allotropia.de>
Tested-by: Jenkins
2024-08-22 14:24:35 +02:00
Stephan Bergmann
b88b5f53a2 More useful to have an EMSCRIPTEN_EXTRA_SOFFICE_PRE_JS
...than an EMSCRIPTEN_EXTRA_SOFFICE_POST_JS.  That way, we can e.g. set up
Module.arguments there.

Change-Id: I4990ab6daac2f74326ab2ee9508828f1b79bceb7
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/172154
Tested-by: Jenkins
Reviewed-by: Stephan Bergmann <stephan.bergmann@allotropia.de>
2024-08-20 23:16:49 +02:00
RMZeroFour
eca8414763 .NET Bindings: Move built .NET libraries into instdir
This commit adds Package targets for the net_basetypes, net_uretypes
and net_oootypes libraries to install them into instdir/program/dotnet.
Also adds a LIBO_SHARE_DOTNET_FOLDER variable mirroring the
LIBO_SHARE_JAVA_FOLDER variable.

Change-Id: I28cdb2dac799bd72d11c3e550bba1a946db8b49c
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/170098
Tested-by: Jenkins
Reviewed-by: Hossein <hossein@libreoffice.org>
2024-08-03 11:28:46 +02:00
RMZeroFour
5f4083ffa9 .NET Bindings: Upgrade --enable-dotnet to --with-dotnet
This commit changes the existing --enable-dotnet switch into
--with-dotnet, allowing users to pass in a different dotnet
executable than the one on their PATH, similar to --with-java.
This is used to determine the variables DOTNET and DOTNET_ROOT.

Change-Id: Ia4f02dfdbd33d7629a800a076f758b26bb186d9f
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/169656
Tested-by: Jenkins
Reviewed-by: Hossein <hossein@libreoffice.org>
2024-08-03 10:31:11 +02:00
Stephan Bergmann
dd332f72ce Enable start center in Emscripten build
...and let it open with that instead of with a hard-coded example.odt.  (But
keep that example.odt in CustomTarget,static_emscripten_fs_image and adapt the
example code in static/README.wasm.md to explicitly load it now.)

Change-Id: Ie43e3795e44542acba5a8e755f65acc56fa753f8
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/171019
Reviewed-by: Stephan Bergmann <stephan.bergmann@allotropia.de>
Tested-by: Jenkins
2024-07-25 18:37:58 +02:00
Noel Grandin
ac431b399f make MSVC /analyze a configure option
My debug build is slow enough already, no need to make it worse.

People who want it, can turn it on explicitly.

Change-Id: I8677534d8f0142699baa6b95a249ae5f70c5cc3c
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/170269
Tested-by: Jenkins
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2024-07-10 19:04:00 +02:00
RMZeroFour
4031659233 .NET Bindings: Switch for old windows CLI bindings
This commit adds an --enable-cli/--disable-cli switch to autoconf to
control generation of the old CLI bindings (Windows only). It is
enabled by default, to not be a breaking change to users just yet.
Over time, when the old bindings are deprecated in favor of the new
.NET bindings, it could be set to disabled by default.

Change-Id: Ib60b372459cb0c735275ed17d004d037279357eb
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/168751
Tested-by: Jenkins
Reviewed-by: Hossein <hossein@libreoffice.org>
2024-06-22 00:11:16 +02:00
Michael Weghorn
e702e27795 Handle CPDB lib in configure/build system
In preparation of Biswadeep's upcoming GSoC changes (see [1])
to update the CPDB (Common Print Dialog Backends) support to the
latest version and use the CPDB C API, add a
corresponding `--enable-cpdb` autogen option
(disabled by default).

When CPDB is enabled, check for the cpdb-frontend
library, define `ENABLE_CPDB` and set the compiler
and linker flags for building the `CPDManager`
(in vcl/unx/generic/printer/cpdmgr.cxx).

Add checks for existing code using `CPDBManager`,
so it only gets used when when CPDB is actually enabled.

While the cpdb-frontend library is currently not
actually used in `CPDManager` yet (as the previous approach
tried to use some DBUs API directly), it will be in
Biswadeep's upcoming changes.

With this commit in place, an `--enable-cpdb` build
works with this additional local test change in place
to actually make use of the library:

    diff --git a/vcl/unx/generic/printer/cpdmgr.cxx b/vcl/unx/generic/printer/cpdmgr.cxx
    index 7dc17cede353..0c3b71d519db 100644
    --- a/vcl/unx/generic/printer/cpdmgr.cxx
    +++ b/vcl/unx/generic/printer/cpdmgr.cxx
    @@ -22,6 +22,8 @@
     #include <cstddef>
     #include <unistd.h>

    +#include <cpdb/cpdb-frontend.h>
    +
     #include <unx/cpdmgr.hxx>

     #include <osl/file.h>
    @@ -259,6 +261,7 @@ CPDManager* CPDManager::tryLoadCPD()
             }
         }
     #endif
    +    cpdbPrintFile(nullptr, nullptr);
         return pManager;
     }

[1] https://lists.freedesktop.org/archives/libreoffice/2024-May/091911.html

Change-Id: Ifc50d2cd6496346bea55c73cb703e3c2d3eb44b8
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/168656
Tested-by: Jenkins
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
Reviewed-by: Biswadeep Purkayastha <bpdps95@hotmail.com>
2024-06-13 09:23:38 +02:00
RMZeroFour
6538b3b09c .NET Bindings: Add DotnetLibrary class to gbuild
This commit adds the DotnetLibrary gbuild class to build a .NET assembly
using the .NET SDK.

Also adds an option to enable or disable building .NET components with
--enable-dotnet (default) and --disable-dotnet to the autogen script.

Also adds a net_ure/ directory for the updated .NET bindings, currently
consisting of the net_basetypes library.

Change-Id: I9256387a2463ff8476deee85d886c6b3dce8257b
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/166380
Tested-by: Jenkins
Reviewed-by: Hossein <hossein@libreoffice.org>
2024-06-12 18:48:07 +02:00
Stephan Bergmann
82640810ef New EMSCRIPTEN_EXTRA_SOFFICE_POST_JS configure variable
...which can be useful during development, to add e.g. additional test code to
the generated qt_soffice.html

Change-Id: Ic498dcd4c812b7b4c8e48b07c2bff411a9f19438
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/168522
Tested-by: Jenkins
Reviewed-by: Stephan Bergmann <stephan.bergmann@allotropia.de>
2024-06-07 13:30:31 +02:00
Stephan Bergmann
22ce8ed05b Emscripten: Unconditional --enable-wasm-exceptions
(...which will be beneficial, in turn, to implement exception handling in the
work-in-progress bridges/source/cpp_uno/gcc3_wasm UNO bridge).

As per
<https://developer.mozilla.org/en-US/docs/WebAssembly#browser_compatibility>,
Wasm exceptions appear to be supported by most if not all relevant engines by
now.

* Lets see whether the "Note that to really use WASM exceptions everywhere" for
external libraries in solenv/gbuild/platform/EMSCRIPTEN_INTEL_GCC.mk does have
any practical consequences (but ignoring it for now).

* This change depends on the preceding 77129fbb74
"Emscripten: Add hack to prepare for --enable-wasm-exceptions" to work around
the issue that was mentioned in static/README.wasm.md.

* In unotest/source/embindtest/embindtest.js, getExceptionMessage started to
work now, no longer exhibiting the RuntimeError that had been documented there
for non-Wasm-based exceptions.

Change-Id: Ifa2165b62208cc927844684911ddf21a4a2b624f
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/168169
Tested-by: Jenkins
Reviewed-by: Stephan Bergmann <stephan.bergmann@allotropia.de>
2024-05-29 08:01:38 +02:00
Michael Weghorn
441d8ed9be tdf#145735 avmedia qt: Use QtMultimedia for Qt 6 media playback
Similar to the way that GTK 4's native facilities for
video playback are used for the gtk4 VCL plugin, initially
added in commit

        commit d0a527ec09
        Author: Caolán McNamara <caolanm@redhat.com>
        Date:   Thu Feb 10 12:55:18 2022 +0000

            first cut at using Gtk4 built in video playback

, implement media playback using QtMultimedia for the
Qt 6 based VCL plugins (qt6/kf6) via a new service
"com.sun.star.comp.avmedia.Manager_Qt".

Video playback with the mechanism used for qt5 no
longer works with qt6, as "qwidget5videosink"
that gets used on Wayland for qt5 wasn't ported
to Qt 6 and is unmaintained, s. the commit message of

        commit 88d57cf241
        Author: Michael Weghorn <m.weghorn@posteo.de>
        Date:   Wed Sep 29 11:09:51 2021 +0200

            qt6: Add a qt6 VCL plugin

for more details. Additionally, this also doesn't work
properly any more on X11/with the xcb Qt QPA platform, see
tdf#145735 comment 7.

Instead of using GStreamer directly, let Qt handle
the low-level stuff by using the QtMultimedia module [1]
instead.

This adds a new dependency on QtMultimedia.
For building, this requires installing the Qt 6 QtMultimedia
development headers (e.g. package `qt6-multimedia-dev`
on current Debian testing).

Except for WASM, the use of QtMultimedia is enabled by
default when building with autogen options `--enable-qt6`
or `--enable-kf6`, but can explicitly be disabled using
`--disable-qt6-multimedia`.

In tests with the qt6 VCL plugin on Debian testing, with a
sample presentation containing an embedded
video, attachment 145517 from tdf#120452, video playback
generally works for both, the xcb and the wayland
Qt QPA platforms:

* Video and audio are played as expected on the external
  screen in presentation mode when using the presenter
  console
* Video and audio playback work in non-presentation
  mode by clicking on the video and using the controls
  in the Impress sidebar (play, pause,...).

However, the following issues were observed with
the current implementation:

* There's an odd frame/margin around the video.
* In non-presentation mode, the placeholder
  shown until the video gets started using the controls
  in the sidebar is just an "audio icon", not a frame
  from the actual video. (This might be related to the
  fact that `QtPlayer::createFrameGrabber` currently
  returns an empty reference.)
* At least on Wayland (issue not observed with
  QT_QPA_PLATFORM=xcb so far), when using the presenter
  console,   video playback in the presenter console (i.e. on the
  non-presentation screen) is unreliable: The video
  sometimes shows, but sometimes doesn't. At least the
  (more important) one on the presentation screen was
  reliably shown in my tests, however.

Tested with git dev versions of qtbase
(as of commit 8d5e7d50d8dbf1ad79bd8ff9f6ef6028eba481c9),
qtwayland (as of commit 6f0ebd916f176f6fbe35af28caeb52b62768ac94)
and qtmultimedia (as of commit
264b7e8d7d5683252102b5e5149685c8b8a70c2d).

[1] https://doc.qt.io/qt-6/qtmultimedia-index.html

Change-Id: I29c3c7ded01c61b49b192fa5c313d8a92c942185
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/167869
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
Tested-by: Jenkins
2024-05-21 17:28:04 +02:00
Michael Weghorn
f895ee6de4 android: Set android.ndkVersion for Gradle
Set the `android.ndkVersion` property [1] for
the Android Gradle Plugin, in addition to `android.ndkPath`
that is set there already.

This addresses the warning

    > Task :stripStrippedUIEditingDebugDebugSymbols
    [CXX1100] android.ndkVersion is [26.1.10909125] but android.ndkPath /home/michi/Android/Sdk/ndk/25.1.8937393 refers to a different version [25.1.8937393].
    [CXX1100] android.ndkVersion is [26.1.10909125] but android.ndkPath /home/michi/Android/Sdk/ndk/25.1.8937393 refers to a different version [25.1.8937393].
    [CXX1100] android.ndkVersion is [26.1.10909125] but android.ndkPath /home/michi/Android/Sdk/ndk/25.1.8937393 refers to a different version [25.1.8937393].
    [CXX1100] android.ndkVersion is [26.1.10909125] but android.ndkPath /home/michi/Android/Sdk/ndk/25.1.8937393 refers to a different version [25.1.8937393].
    [CXX1100] android.ndkVersion is [26.1.10909125] but android.ndkPath /home/michi/Android/Sdk/ndk/25.1.8937393 refers to a different version [25.1.8937393].
    [CXX1100] android.ndkVersion is [26.1.10909125] but android.ndkPath /home/michi/Android/Sdk/ndk/25.1.8937393 refers to a different version [25.1.8937393].
    [CXX1100] android.ndkVersion is [26.1.10909125] but android.ndkPath /home/michi/Android/Sdk/ndk/25.1.8937393 refers to a different version [25.1.8937393].
    [CXX1100] android.ndkVersion is [26.1.10909125] but android.ndkPath /home/michi/Android/Sdk/ndk/25.1.8937393 refers to a different version [25.1.8937393].
    [CXX1100] android.ndkVersion is [26.1.10909125] but android.ndkPath /home/michi/Android/Sdk/ndk/25.1.8937393 refers to a different version [25.1.8937393].
    [CXX1100] android.ndkVersion is [26.1.10909125] but android.ndkPath /home/michi/Android/Sdk/ndk/25.1.8937393 refers to a different version [25.1.8937393].
    [CXX1100] android.ndkVersion is [26.1.10909125] but android.ndkPath /home/michi/Android/Sdk/ndk/25.1.8937393 refers to a different version [25.1.8937393].
    [CXX1100] android.ndkVersion is [26.1.10909125] but android.ndkPath /home/michi/Android/Sdk/ndk/25.1.8937393 refers to a different version [25.1.8937393].
    [CXX1100] android.ndkVersion is [26.1.10909125] but android.ndkPath /home/michi/Android/Sdk/ndk/25.1.8937393 refers to a different version [25.1.8937393].
    [CXX1100] android.ndkVersion is [26.1.10909125] but android.ndkPath /home/michi/Android/Sdk/ndk/25.1.8937393 refers to a different version [25.1.8937393].
    Unable to strip the following libraries, packaging them as they are: libc++_shared.so, libfreebl3.so, liblo-native-code.so, libnspr4.so, libnss3.so, libnssckbi.so, libnssdbm3.so, libnssutil3.so, libplc4.so, libplds4.so, libsmime3.so, libsoftokn3.so, libsqlite3.so, libssl3.so.

 that started to show up in a local
`--with-android-ndk=$HOME/Android/Sdk/ndk/25.1.8937393`
Android build after

    commit 1610ebc06b
    Author: Michael Weghorn <m.weghorn@posteo.de>
    Date:   Mon May 13 10:47:49 2024 +0200

        android: Update Android Gradle Plugin to 8.4.0

        ... and gradle to 8.6, as suggested by Android Studio.

As described at [2], that Android Gradle Plugin defaults to
NDK 26.1.10909125.

[1] https://developer.android.com/studio/projects/install-ndk#apply-specific-version
[2] https://developer.android.com/build/releases/gradle-plugin

Change-Id: Ied81f13f535303f9578177646f177b4ef791eefa
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/167715
Tested-by: Jenkins
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
2024-05-16 12:13:02 +02:00
Christian Lohmaier
51a970b8b0 make sure KEEP_AWAKE_CMD gets only evaluated once
if using deferred evaluation then the creation of targets via $(call
gb_Top_GbuildModuleRules,foo) would result in it getting processed over
900 times, and on windows spawning a shell with the two ps and awk
command that takes 5 minutes.

If future commands need to be run when the rule is run, then an
alternative is to escape the variable in the define for the
gb_Top_GbuildModuleRules macro via double-$ → $$(KEEP_AWAKE_CMD) - but I
cannot think of any method where that should be necessary

Change-Id: I126e4d317bd77f359ca9f39adf00cc88846af281
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/167351
Tested-by: Jenkins
Reviewed-by: Christian Lohmaier <lohmaier+LibreOffice@googlemail.com>
2024-05-10 18:21:55 +02:00
Christian Lohmaier
9d7548dafb fix some hardcoded use of wsl.exe and fix some typos
Change-Id: I6152ee61913638f828eeb201ecb26312de5f8572
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/166737
Reviewed-by: Christian Lohmaier <lohmaier+LibreOffice@googlemail.com>
Tested-by: Jenkins
2024-04-27 10:16:39 +02:00
Christian Lohmaier
f5c3ec505b add --with-keep-awake switch to prevent going into sleep/suspend
if used defaults to Awake for Windows and caffeinate for macOS

Change-Id: I35f41bf1fb63af05ce2ec1a7f4d7b50b310536a3
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/166743
Reviewed-by: Christian Lohmaier <lohmaier+LibreOffice@googlemail.com>
Tested-by: Jenkins
2024-04-26 23:10:22 +02:00
Christian Lohmaier
4c86718e78 initial support for running autogen.sh inside wsl from git-bash
Change-Id: I4272ea817a48880fd4206d6c73add7ccb8c4f6c5
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/166335
Tested-by: Jenkins
Reviewed-by: Christian Lohmaier <lohmaier+LibreOffice@googlemail.com>
2024-04-26 14:01:26 +02:00
Christian Lohmaier
3c54cb2a9d add MSYS_NO_PATHCONV=1 to prevent MSYS auto-magic
git-bash/MSYS tries to resolve anything that looks like a path (i.e.
anything starting with a /) - if the "target" doesn't exists, it just
prepends the MSYS installation dir and breaks all kind of stuff.
You could escape those with double-slash at the beginning, but that
would mean lots of noise/unnecessary changes in pretty much every
makefile, so just getting rid of that behavior is much better.

ant and some externals however rely on MSYS path-conversion, so unset
MSYS_NO_PATHCONV for those. Ant does its own checks whether it
runs under cygwin or msys, and easier to please externals using the
autoconversion than to add patches to force them into compliance…

Change-Id: Ie80964e40c53ace80adb4707aae0db63ebc4ee4c
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/166330
Tested-by: Jenkins
Reviewed-by: Christian Lohmaier <lohmaier+LibreOffice@googlemail.com>
2024-04-26 14:00:35 +02:00
Caolán McNamara
2e50b3850b add --enable-hardening-flags to enable compiler hardening flags
distros typically have their own set via C[XX]FLAGS, so make
this an optional argument

some notes on the options:

-Wp,-U_FORTIFY_SOURCE,-D_FORTIFY_SOURCE=2
https://www.redhat.com/en/blog/enhance-application-security-fortifysource
(I see Fedora has recently bumped to to 3 since Jan 2024
https://fedoraproject.org/wiki/Changes/Add_FORTIFY_SOURCE%3D3_to_distribution_build_flags
but here use 2 for now instead)

-Wp,-D_GLIBCXX_ASSERTIONS
https://fedoraproject.org/wiki/Changes/HardeningFlags28

-fstack-protector-strong
(We already apply this by default)

-fstack-clash-protection
https://fedoraproject.org/wiki/Changes/HardeningFlags28

-fcf-protection
https://fedoraproject.org/wiki/Changes/HardeningFlags28
https://cgit.freedesktop.org/libreoffice/core/commit/?id=af55dc3891f7950d392175004b2090cb0e54828e

and record the compiler flags in debuginfo
-grecord-gcc-switches

Change-Id: Ib05387bad8324b188bd4ed0ee327d6a7cf83973b
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/163312
Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoffice@gmail.com>
Reviewed-by: Andras Timar <andras.timar@collabora.com>
(cherry picked from commit 33483058f6)
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/166289
Tested-by: Jenkins
Reviewed-by: Caolán McNamara <caolan.mcnamara@collabora.com>
2024-04-19 21:01:53 +02:00
Fridrich Štrba
4267c71248 Allow building with Java 8
Change-Id: Ib1af1a98993aabb8a03f4ef19d8da4d9a71fdbc0
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/164226
Tested-by: Jenkins
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2024-03-02 06:29:50 +01:00
Noel Grandin
b663d94cf6 create --enable-mergelibs=more
The existing --enable-mergelibs is in use by Linux distro people,
who do not want any further mergeing because they want to be
able to split libreoffice up into things like nogui, calc, writer,
dbaccess, etc.

So this work is to enable combining even more into libmerged
for platforms like Windows and macOS and COOL, where we really
want everything in one big lump of code.

Change-Id: I4b268864955747d9859e16ebb569debbfc32fa78
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/162999
Tested-by: Jenkins
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2024-02-12 18:52:42 +01:00
Stephan Bergmann
848d035d86 Remove unused make upload-update-info
Change-Id: Ifdec48aaf53b0444c2d7ceef554f64795e2f2c38
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/162172
Tested-by: Jenkins
Reviewed-by: Stephan Bergmann <stephan.bergmann@allotropia.de>
2024-01-16 19:50:58 +01:00
Thorsten Behrens
cefe5464e6 Fix system-libfixmath
Seems distros start to disagree on whether its liblibfixmath or just
libfixmath.

Change-Id: I54a42b2ba050980ae632ab3c82254131cad7787e
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/161969
Tested-by: Jenkins
Reviewed-by: Thorsten Behrens <thorsten.behrens@allotropia.de>
2024-01-14 19:24:20 +01:00
Stephan Bergmann
de98291912 Fix make create-partial-info (for Windows, at least)
I got lost trying to figure out how the original
bin/update/create_partial_update.py code was meant to obtain old and new
installation trees to diff, so I simplified that down to the create-partial-info
make target now expecting an ONLINEUPDATE_MAR_OLDARCHIVE make variable that
points at the old archive install set.  (And the
--with-online-update-mar-serverurl configure option is gone for good again.)
The remaining changes are similar to what was needed in
28bad382fa "Fix `make create-update-info` (for
Windows, at least)".  (And the mbsdiff and mar tools expect Windows-style
pathnames, but mktemp returns a Unix-style pathname in cygwin shell scripts, so
this needed an additional Windows-only external/onlineupdate/cygpath.patch.)

Change-Id: I40690210d62e3f26fb2d574914a0dd4323e6cd62
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/161924
Tested-by: Jenkins
Reviewed-by: Stephan Bergmann <stephan.bergmann@allotropia.de>
2024-01-11 21:01:51 +01:00
Stephan Bergmann
6910b1e351 Hard-code --with-online-update-mar-channel=LOOnlineUpdater
(An upcoming change will add an instset/update-settings.ini file containing that
value, but using a GeneratedPackage for a single file instead of a directory
seems unsupported, so it will use the hard-coded value and a plain Package
instead.)

Change-Id: I12ffef4db71ce36be9096df674588b39c660e4de
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/161545
Tested-by: Jenkins
Reviewed-by: Stephan Bergmann <stephan.bergmann@allotropia.de>
2024-01-02 21:23:39 +01:00
Michael Stahl
77c921302b argon2: add new external library
Change-Id: I81860a94b33eba95918c30b0e92b583cc2d02ff3
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/160969
Tested-by: Jenkins
Reviewed-by: Michael Stahl <michael.stahl@allotropia.de>
2023-12-19 17:25:05 +01:00
Stephan Bergmann
189d827b99 Split --with-update-config=... into many --with-online-update-mar-...=...
...and allow each of them to be left off, for debug purposes, even if that may
render the resulting --enable-online-update-mar feature non-functional.

This change tracked each item that was potentially read from the
--with-update-config ini file, and turned each of them into a new
--with-online-update-mar-... option.  The only exception and remaining TODO is
bin/update/upload_build_config.py (called from Makefile.gbuild).

distro-configs/Jenkins/LibreOfficeLinuxUpdater.conf (which might well be dead)
set --with-update-config=~/updater.ini with an ini file of unknown content.  So
that no items are silently missing if we ever resurrect that distro-config, I
set all of the new options to =TODO there for now.

Change-Id: I17a13e0d190a868436bac10c1b0a6675d8c704c0
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/160622
Tested-by: Jenkins
Reviewed-by: Stephan Bergmann <stephan.bergmann@allotropia.de>
2023-12-12 20:43:57 +01:00
Christian Lohmaier
e514f1a462 fix --enable-wix switch - that didn't do anything
it used the wrong variable name in AC_SUBST and also had no place where
it would be set for the rest of the build to use.
Also the script hardcodes the location of the WiX Toolkit, so check for
the same path in configure.
Also it was needlessly tied to LIBO_TEST_INSTALL - since it has its own
conditional, "double-guarding" it is not necessary.

Change-Id: I6dd4a41e63d2a43a3e2f1aac5b6799a6601eb656
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/159510
Tested-by: Jenkins
Reviewed-by: Christian Lohmaier <lohmaier+LibreOffice@googlemail.com>
2023-11-16 23:32:20 +01:00
Rene Engelhard
82a955498b add --with-system-zxcvbn
Change-Id: I9a90585d8eb498861a6ef4752ab85dcff8eeaab6
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/158674
Tested-by: René Engelhard <rene@debian.org>
Reviewed-by: René Engelhard <rene@debian.org>
2023-11-06 20:02:07 +01:00
Balazs Varga
f3a0550b1d tdf#101970 Introduce config option for building with or
without the not necessary template files.

The default is building with all templates, otherwise we can use:
--with-templates=no/yes
--with-templates -->yes
--without-templates -->no

Change-Id: I13f5b411057254771ad4021aa9521c153702af16
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/157600
Tested-by: Jenkins
Reviewed-by: Andras Timar <andras.timar@collabora.com>
2023-10-05 21:37:09 +02:00
Michael Weghorn
94c94633a4 Drop JAVA_CLASSPATH_NOT_SET which is always TRUE
The variable was introduced in

    commit b97cade918
    Date:   Sun Apr 7 12:14:36 2013 -0400

        Supress warnings about unset classpath

        I get the below warning for every single jar file without this patch.
        warning: [options] bootstrap class path not set in conjunction with
        -source 1.5
        1 warning

        Change-Id: I71c01aeea993640f1ec86fe1d8a977656861358d

, at a time when Java 5 was the minimum version,
likely to suppress warnings with JDK versions >= 6
(greater than 1.6.0 to be exact...).
The version check was then just bumped along with the Java
baseline bumps in

    commit aafc10c9ed
    Date:   Fri Jul 26 10:19:39 2019 +0200

        Bump Java baseline to Java 8

and

    commit 941b567a41
    Date:   Thu May 7 09:42:22 2020 +0200

        tdf#131572 Add java 9 module info for libreoffice.jar

for no apparent reason.

In any case, the variable will always be set to TRUE,
since the Java version string is using the actual
major version number as the first digit since
JDK 9 (while JDK 8 would still use 1.8.x as version
string), s.a. upcoming commit
Change-Id I79eeb247315499caddd63d6abbb1e14ea6a72a4a
("configure.ac: Update Java check for JDK >= 9 version string").

Drop the variable and set the Java params
in `solenv/gbuild/JavaClassSet.mk` unconditionally.

Change-Id: Ib4aad07da3937289fc6ff29dd80abdd4c35f1773
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/155825
Tested-by: Jenkins
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
2023-08-18 20:14:30 +02:00
Stephan Bergmann
9bbed21307 external/skia: Avoid -std:c++20 with known-broken VS-provided clang-cl
...as witnessed with patch set 1 of
<https://gerrit.libreoffice.org/c/core/+/155121/1> "Bump baseline to C++20",

> In file included from C:/cygwin/home/tdf/lode/jenkins/workspace/gerrit_windows/workdir/UnpackedTarball/skia/src/base/SkBezierCurves.cpp:8:
> In file included from C:/cygwin/home/tdf/lode/jenkins/workspace/gerrit_windows/workdir/UnpackedTarball/skia\src/base/SkBezierCurves.h:10:
> C:/cygwin/home/tdf/lode/jenkins/workspace/gerrit_windows/workdir/UnpackedTarball/skia\include/private/base/SkSpan_impl.h(122,1): error: C++ requires a type specifier for all declarations
> SkSpan(Container&&) ->
> ^
> C:/cygwin/home/tdf/lode/jenkins/workspace/gerrit_windows/workdir/UnpackedTarball/skia/src/base/SkBezierCurves.cpp(185,12): error: use of class template 'SkSpan' requires template arguments
>     return SkSpan{intersectionStorage, intersectionCount};
>            ^
> C:/cygwin/home/tdf/lode/jenkins/workspace/gerrit_windows/workdir/UnpackedTarball/skia\include/private/base/SkSpan_impl.h(64,7): note: template is declared here
> class SkSpan {
>       ^

etc. (<https://ci.libreoffice.org/job/gerrit_windows/160027/>)

Change-Id: I6166f1cb49ac1540ec1c4d3bc3331c8b228efa27
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/155228
Tested-by: Jenkins
Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
2023-08-02 15:21:48 +02:00
Colomban Wendling
3426dcfec2 vcl gtk3: Introduce AT-SPI2 tests for the GTK3 accessibility layer
Add tests for the GTK3 accessibility platform layer.  These tests
compare the internal LO representation with what is visible to the
platform, and thus the user's accessibility tools.

In most cases the tests are fairly trivial as LO's internals are not
far off AT-SPI2's expectations.  There are however notable exceptions
like for example the text attributes, that have a wildly different
representation and require more complex checks matching what LO's
platform layer does, the other way around.

These tests use libatspi2 directly, but as the C API is awful to work
with regarding resource management, there are wrappers to handle the
complexity using RAII.  The resulting API is fairly trivial to use.

As these tests require using the GTK3 VCL plugin and for the a11y tree
to be visible to AT-SPI2, they are run under XVFB using a separate dbus
session through dbus-launch.

Working on this has already lead to reporting and/or solving some
issues:

* https://gerrit.libreoffice.org/c/core/+/151303
* https://gerrit.libreoffice.org/c/core/+/151650
* https://gerrit.libreoffice.org/c/core/+/152456
* https://gerrit.libreoffice.org/c/core/+/152457
* https://bugs.documentfoundation.org/show_bug.cgi?id=155625
* https://bugs.documentfoundation.org/show_bug.cgi?id=155705
* https://gerrit.libreoffice.org/c/core/+/152748

Only a subset of the a11y APIs are covered for the moment, but the
current state should make it easy to extend upon.

Change-Id: I1a047864ce8dc1f1bc3056ad00159f7fd5e5b7d3
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/153069
Tested-by: Jenkins
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
2023-07-27 20:01:17 +02:00
Noel Grandin
4c00a5bce3 Assume that, if we have X11, it supports Xinerama
By now, Xinerama is old enough that we can use the X11 server supports
it

Change-Id: Ida95902916697808c611a53274b1f0299fd298b7
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/154666
Tested-by: Jenkins
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2023-07-21 11:01:29 +02:00
Caolán McNamara
22ab4f30ac add an --enable-cairo-rgba to set the order of pixels for internal cairo
Change-Id: Ieab2ef59f63a7722bffea3273d2eeefadef47b56
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/153628
Tested-by: Jenkins
Reviewed-by: Caolán McNamara <caolan.mcnamara@collabora.com>
2023-06-27 10:04:36 +02:00
Michael Weghorn
720bf6ac86 kf6: Add a kf6 VCL plugin
Add a "kf6" VCL plugin that uses the KF6 (KDE Frameworks 6)
libraries to provide a native KDE/Plasma file chooser,
just like the kf5 VCL plugin does for KF5.

Building the plugin is disabled by default and can be enabled by
autogen option '--enable-kf6'.

Selecting the VCL plugin can be done by starting LO
with environment variable 'SAL_USE_VCLPLUGIN=kf6' set.

The kf6 VCL plugin reuses the kf5 VCL plugin code.
(The kf6 headers and sources for now just `#include`
the kf5 ones.)

This was quickly tested on KDE Neon unstable,
which provides a daily snapshot of Plasma 6 and the KF6
libraries.
(Regarding a potential release date, [1] mentions:
"Plasma 6 is built on top of Qt 6 and is
tentatively planned to be released in late 2023 or early 2024.")

[1] https://community.kde.org/Plasma/Plasma_6

Change-Id: I4c2b7e3be8e60f1d8cf60119f6f3f642b71349f5
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/153438
Tested-by: Jenkins
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
2023-06-22 22:16:11 +02:00
Khaled Hosny
40e43ae633 No need to fiddle with ICU UChar typedef anymore
The affected external dependencies should be building with c++11 by now
already.

Change-Id: I0d1f8aed6ed28f510f456a368b724c3c4eeb3240
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/153389
Tested-by: Jenkins
Reviewed-by: خالد حسني <khaled@libreoffice.org>
2023-06-21 16:59:39 +02:00
Khaled Hosny
c276694bc0 Remove another workaround for old versions of ICU
Change-Id: Id13bdb10bf4bf89a136b28a26c4b3d1113971871
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/153388
Tested-by: Jenkins
Reviewed-by: خالد حسني <khaled@libreoffice.org>
2023-06-21 16:59:29 +02:00
Rene Engelhard
cd9afc213d add --with-system-frozen
Change-Id: Ia09254cab5696fa0a3530fcafa5b48acca631ff2
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/153208
Tested-by: Jenkins
Reviewed-by: Tomaž Vajngerl <quikee@gmail.com>
2023-06-18 13:31:37 +02:00
Patrick Luby
67b808eea0 Set entitlements in non-release in $(INSTROOTBASE) and .dmg package
Also, when building a .dmg for macOS, skip codesigning for non-release
builds, both with and without the macOS sandbox, if there is no identity
set but set entitlements to allow Xcode's Instruments application to
connect to the application.

Lastly, add entitlements when building soffice in $(INSTROOTBASE) if
this is a non-release build.

Change-Id: I764bf5bd5d44e878669c4287906e6efd6aac593f
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/152655
Tested-by: Jenkins
Reviewed-by: Patrick Luby <plubius@neooffice.org>
2023-06-07 22:08:50 +02:00
Stephan Bergmann
d7ba78e9c7 New --with-coredumpctl to obtain core dumps of crashed tests from coredumpctl
...for (Linux) systems that don't store core.* files in the current working
directory.  When enabled, this wraps test execution in `systemd-run --scope
--user --unit=...` with unit values unique per individual test invocation, so
that solenv/bin/gdb-core-bt.sh can query coredumpctl for matching core dumps.
(See the mailing list thread starting at
<https://lists.freedesktop.org/archives/systemd-devel/2023-March/048884.html>
"[systemd-devel] coredumpctl: matching by e.g. env var?" for further details.)

The used --unit=... scheme is a best effort to produce system-wide unique
values, combining the target location path of the given test with a
second-granularity date/time and the current PID.  (In case there would be
multiple invocations of the same test per second, which then hopefully wouldn't
reuse the same PID.  The date/time and PID could be replaced with a
high-resolution system-wide monotonic clock/counter if one were easily
available.  The advantage of the current scheme is that it only uses Posix
features.)  The overall length of the unit value (incl. the appended ".scope"
suffix) must not exceed 256 characters, or else systemd-run would fail with
"Failed to mangle scope name: Invalid argument".

It might look more natural to pass the unit value into gdb-core-bt.sh as a
fourth positional argument rather than via a new LIBO_TEST_UNIT env var.  But
for one, the unit value is most easily computed from within the recipe shell
command lines, where an env var is the most natural fit.  And for another, this
avoids having to tunnel yet another value through the tearDown method in
unotest/source/java/org/openoffice/test/OfficeConnection.java to the given
postprocesscommand.

Change-Id: Idcb20cd1e1141d8ec7f10947e5edc70aa2aa7d32
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/149690
Tested-by: Jenkins
Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
2023-04-02 18:02:27 +02:00