Conversation
| %if 0%{?enable_devtoolset11:1} | ||
| %enable_devtoolset11 | ||
| %if 0%{?enable_devtoolset12:1} | ||
| %enable_devtoolset12 |
There was a problem hiding this comment.
where do we install gts-12? if we can assume gcc >=12 is available, we might want to drop this line.
There was a problem hiding this comment.
okay. assuming we have the corresponding macro installed, we should have it.
There was a problem hiding this comment.
i think we'd expect install-deps.sh or ceph-build to install this where necessary
without ceph-build changes, i think it'll be hard to actually test this in ci
There was a problem hiding this comment.
nevermind; setting gts_version=12 above causes us to install gcc-toolset-%{gts_version}-build which apparently makes this %enable_devtoolset12 thing available
i see that working for the rpm builds in https://shaman.ceph.com/builds/ceph/wip-gcc-12/1b854c2b0aaaebb77f92763f72bc7dff83166319/
|
jenkins test make check arm64 |
|
I'd really like to advocate strongly That we stop using Clang for make check. Clang 14 in particular rejects valid code that comparable GCC and later Clang don't, and I don't think the advantage in warnings exists against newer GCCs. |
how new are we talking? does gcc 12 qualify?
warnings aside, i think 'make check' would provide more value if it ran unit tests produced by the same toolchain that we're using for our release builds i like the idea of having clang coverage too, as long as we keep the clang version up to date if we had unlimited resources, i'd also take a matrix of builds for every gcc version we're trying to support |
Just that in general I've noticed that GCC seems to pick up Clang's warnings a release or two after Clang comes out with them.
I'd agree with that, too.
|
the reason why we switched to Clang for running
probably it's time to use a newer Clang, like Clang-18? |
I would really like to use C++ ranges in our code. And - if using libstd++ - 'ranges' should not be used with Clang < 16. All in all - I really hope we keep Clang in the CI (as otherwise Ceph will 'drift' from being compilable by it). But we should upgrade it now. |
for reference, this mostly just means the jenkins builders need a newer clang installed. for 'make check', src/script/lib-build.sh will use the newest version it finds (though that only checks up to 17) these checks run on ubuntu jammy, and i see that jammy only has clang versions up to clang-15 it's probably time to start adding support for ubuntu 24.04 in the lab (jenkins builders, teuthology workers, etc). that goes up to clang-18 |
|
p.s. these clang builds still use libstdc++, so our gcc version matters a lot too when it comes to library features like ranges |
there seem to be Clang 16 packages available for Jammy. Can we use the scripts that run as part of the CI process to install packages (i.e. - without having to recreate the images?)? |
|
@ronen-fr we also need to find a ppa for jammy for installing newer libstdc++. probably https://launchpad.net/~ubuntu-toolchain-r/+archive/ubuntu/test ? |
require gcc >= 12 and rely on gcc-toolset-12 by default to provide it Signed-off-by: Casey Bodley <cbodley@redhat.com>
Signed-off-by: Casey Bodley <cbodley@redhat.com>
Signed-off-by: Casey Bodley <cbodley@redhat.com>
this branch seems to have broken the clang 'make check' (for all pull requests, not just this one). i opened https://tracker.ceph.com/issues/67233 to track this |
Signed-off-by: Casey Bodley <cbodley@redhat.com>
|
@petrutlucian94 could i ask your help getting windows tests to use gcc-12? i have the script installing |
| sudo apt-get update | ||
| sudo env DEBIAN_FRONTEND=noninteractive apt-get -y install \ | ||
| mingw-w64 g++ cmake pkg-config \ | ||
| mingw-w64 g++-12 cmake pkg-config \ |
There was a problem hiding this comment.
probably should install g++-mingw-w64 instead ? but i think we need to upgrade the jenkins work node to ubuntu/noble first for accessing g++ >= 12. as ubuntu/noble is the first stable release which provides the mingw tool chain with g++ >= 12. see https://packages.ubuntu.com/search?suite=default§ion=all&arch=any&keywords=g%2B%2B-mingw-w64&searchon=names
There was a problem hiding this comment.
Hi, we're building the Windows binaries using mingw-llvm:
Lines 36 to 53 in 81a2583
We're using just a few tools from the mingw-w64 package, including dlltool if I remember correctly.
For what is worth, we had lots of problems with mingw-gcc, expecially around winpthreads, which is why we had to switch to mingw-llvm: 3ce1e4a
There was a problem hiding this comment.
About the Windows CI job: it builds both Windows and Linux binaries and it seems that the Windows build actually passes:
https://jenkins.ceph.com/job/ceph-windows-pull-requests/44528/consoleFull
WIN32 files zipped to: /home/ubuntu/ceph.zip
real 42m33.561s
user 0m0.305s
sys 0m0.476s
It's the Linux build that fails: https://github.com/ceph/ceph-build/blob/e8d18c7aef15fa0424d096ba73a6e0d701a5215a/scripts/ceph-windows/setup_ceph_vstart#L31-L41
There was a problem hiding this comment.
Since everything is running in a VM, I think all we have to do is to switch the Ubuntu image to 24.04: https://github.com/ceph/ceph-build/blob/e8d18c7aef15fa0424d096ba73a6e0d701a5215a/scripts/ceph-windows/setup_libvirt_ubuntu_vm#L12
|
This pull request can no longer be automatically merged: a rebase is needed and changes have to be manually resolved |
|
closing this for now so it stops breaking 'make check' on other prs |
pushing a draft to see what breaks
Show available Jenkins commands
jenkins retest this pleasejenkins test classic perfjenkins test crimson perfjenkins test signedjenkins test make checkjenkins test make check arm64jenkins test submodulesjenkins test dashboardjenkins test dashboard cephadmjenkins test apijenkins test docsjenkins render docsjenkins test ceph-volume alljenkins test ceph-volume toxjenkins test windowsjenkins test rook e2e