Heads up: Use MSVC's /permissive- to make it more standards conforming
Stephan Bergmann
sbergman at redhat.com
Wed Jan 13 10:46:17 UTC 2021
I just landed
<https://git.libreoffice.org/core/+/b4b7e92cbf5a212cc1c648af86df2dee364d48c8%5E%21>
"Use MSVC's /permissive- to make it more standards conforming" on master
(hoping that it will unblock
<https://gerrit.libreoffice.org/c/core/+/108939> "Verify o3tl::temporary
of a copied lvalue works as expected", besides standards conformance
probably being a good thing anyway).
Apparently due to
<https://lists.freedesktop.org/archives/libreoffice/2021-January/086600.html>
"MSVC differences among Jenkins gerrit_windows builders", different
patch sets of that change had failed on different Jenkins build machines
in different ways:
Patch set 1 (<https://gerrit.libreoffice.org/c/core/+/108961/1/>) had
failed on tb77 (<https://ci.libreoffice.org/job/gerrit_windows/85301/>)
using
> export CXX=C:/PROGRA~2/MIB055~1/2019/COMMUN~1/VC/Tools/MSVC/1427~1.291/bin/Hostx64/x86/cl.exe
with a spurious-looking
> C:\cygwin\home\tdf\jenkins\workspace\gerrit_windows\sw\source\filter\ww8\ww8par3.cxx(630) : error C2220: the following warning is treated as an error
> C:\cygwin\home\tdf\jenkins\workspace\gerrit_windows\sw\source\filter\ww8\ww8par3.cxx(630) : warning C4789: buffer 'aLVL' of size 32 bytes will be overrun; 33 bytes will be written starting at offset 0
that should meanwhile have been addressed with
<https://git.libreoffice.org/core/+/b269e95f7ee36fbe6cbe5e3ddc5e10aa4ef651cd%5E%21>
"WW8LVL members do not require a specific layout".
Rebased patch set 2
(<https://gerrit.libreoffice.org/c/core/+/108961/2/>) had failed on tb73
(<https://ci.libreoffice.org/job/gerrit_windows/85676/>) using
> export CXX=C:/PROGRA~2/MIB055~1/2019/COMMUN~1/VC/Tools/MSVC/1425~1.286/bin/Hostx64/x86/cl.exe
with
> C:/cygwin/home/tdf/lode/jenkins/workspace/gerrit_windows at 2/include\o3tl/lru_map.hxx(71): error C2039: 'min': is not a member of 'std'
> C:/PROGRA~2/MIB055~1/2019/COMMUN~1/VC/Tools/MSVC/1425~1.286/Include\map(25): note: see declaration of 'std'
> C:/cygwin/home/tdf/lode/jenkins/workspace/gerrit_windows at 2/include\o3tl/lru_map.hxx(174): note: see reference to class template instantiation 'o3tl::lru_map<Key,Value,KeyHash,KeyEqual>' being compiled
[...]
> make[1]: *** [C:/cygwin/home/tdf/lode/jenkins/workspace/gerrit_windows at 2/solenv/gbuild/LinkTarget.mk:301: C:/cygwin/home/tdf/lode/jenkins/workspace/gerrit_windows at 2/workdir/CxxObject/o3tl/qa/test-lru_map.o] Error 2
that should meanwhile have been addressed with
<https://git.libreoffice.org/core/+/e24cc814b5b6e50967116cb3908e4bf56b7aee4b%5E%21>
"Missing include (for std::min)".
The final rebased patch set 3
(<https://gerrit.libreoffice.org/c/core/+/108961/3/>) has succeeded on
tb73 (<https://ci.libreoffice.org/job/gerrit_windows/85758/>), but I
haven't seen it succeed with other MSVC versions, e.g. on tb77. (I had
seen the change succeed right from the start, without any of the issues,
with my local MSVC 2019 16.8.3 build, though.)
So there is apparently a slight chance that builds with different
versions of MSVC will still start to fail now. Please let me know if
you encounter such an issue that smells like it was caused by the
introduction of /permissive-.
More information about the LibreOffice
mailing list