-
-
Notifications
You must be signed in to change notification settings - Fork 1.2k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Test building with Qt 6 #4908
Test building with Qt 6 #4908
Conversation
Availability of libqscintilla2_qt6 is the blocker. For Ubuntu need >= 23.04. Can't find it on Homebrew. (It is in Debian and Fedora, alas not available on GitHub Actions). |
We will need to support both Qt5 and Qt6 for a while anyway, at least for the Linux builds. Qt6-only will be a showstopper for the next couple of years or we would have to drop support for things like AppImages which seem to be quite popular. I'll try to see if we can get the scintilla package for Ubuntu built via OBS, we have to do that for other libraries too. I'm not sure Homebrew is a problem, as we have to custom build all the macOS libraries anyway. So the effort here is to figure out how and when to do that. On the plus side, it should be fine here to "just" switch over to Qt6 at some point. |
@cjmayo also, just FYI: The tests run here don't exercise any Qt code paths, but they are good for validating builds. |
Looks like brew.sh are waiting for Octave 9 before updating qscintilla2. |
For macOS, let's start by building our own Qt6 and test based on that. We do such builds on CircleCI, but we don't currently run tests there. |
Do I read this PR correctly that only CMake changes are required to build OpenSCAD with Qt6? If so, I might try building it with vcpkg on windows. |
Homebrew switched qscintilla2 to Qt 6, finally a chance to build with macOS. Requires 10.15 so needs a CMake tweak, but with that builds OK. With qscintilla2 on Qt 6, Qt 5 builds are broken https://github.com/openscad/openscad/actions/runs/8331011451/job/22796918667#step:5:89 |
Argh! I'll take a look at that. |
For now, I added a request here: Homebrew/homebrew-core#166414 (comment) - let's see where that goes. |
Temporary workaround to downgrade QScintilla to the qt5 version: #5059 |
We should support both Qt5 and Qt6 builds on the CI, subject to CI capacity. |
e852404
to
458b227
Compare
I updated too early - Ubuntu 24.04 wasn't actually available (it was listed in the README...). I probably changed more than I needed to before I understood that. But yes, this PR is not something ready for merging. Just testing building with Qt6 and some experiments (e.g. can build only using packages from Ubuntu 24.04). Now that #5129 is merged there is Qt 6 build testing going on. |
Clipper2 1.3.0 does not compile with GCC 14.
gcovr 7.0, packaged in Ubuntu 24.04 Universe, fails to parse large coverage files.
I'm still not able to get a green tick here - but not because of Qt 6: MSYS2 - (as seen in other PRs/master) has updated to GCC 14 which cannot build Clipper2 1.3.0 that Manifold is pulling in. Probably could be worked around by installing a snapshot of Clipper2 before Manifold. I'm not personally interested in doing that, and even so looks like there are new test failures (other updated dependencies?):
Ubuntu 24.04 - packages gcovr 7.0 which can't handle files longer than 9999 lines. I've experimented here with installing gcovr from PyPI but not only does 7.2 not work for me, I had no luck with 5.0 (packaged in 22.04), 5.1 or 5.2. Something about the different paths?
I will pick out what I can for consideration separately. |
If you could open a ticket for the gcc14 issue that would be cool. The other tests look like flakes - have you tried just rerunning? |
GCC 14 issue was reported (and apparently fixed): AngusJohnson/Clipper2#823 I got those specific test failures a few times, this last one is different. Haven't got a pass yet. |
Could be that clipper isn't updated past that fix in Manifold yet, plus we haven't pulled Manifold in a while. |
It is Manifold itself that is downloading Clipper2 1.3.0 specifically: manifoldDeps.cmake FetchContent_Declare(Clipper2
GIT_REPOSITORY https://github.com/AngusJohnson/Clipper2.git
GIT_TAG Clipper2_1.3.0
GIT_PROGRESS TRUE
SOURCE_SUBDIR CPP
) I've got gcovr to not error anyway: #5144 |
We should be able to use the OBS packages to override that - https://build.opensuse.org/project/show/home:t-paul:polyclipping2 - right now that just builds |
Let's call this one done. Everything usable now is merged or in its own PR. |
Nice! 🎉 |
Builds master on Linux with:
-DCLANG_TIDY=OFF -DENABLE_CAIRO=yes -DENABLE_EGL=ON -DENABLE_GLX=OFF -DENABLE_SPNAV=yes -DENABLE_TESTS=no -DEXPERIMENTAL=no -DHEADLESS=no -DUSE_CCACHE=OFF -DUSE_GLAD=ON -DUSE_MIMALLOC=OFF -DENABLE_GAMEPAD=no -DENABLE_QTDBUS=yes
Draft because Qt6Gamepad doesn't exist, and I guess not everyone wants to switch right now.