Deps overhaul#33865
Conversation
566ce81 to
e91eb69
Compare
|
I don't think this is a good idea, at least the submodule part. Submodules complicate rebasing and generate a tremendous amount of commit noise. Each additional submodule has an exponential impact on these issues. I did an entire project with multiple submodules and will never, ever use them again. FetchContent is a way better alternative. (I think this about Anyway, the |
|
It looks like this makes the whole However what I don't like about this solution, is that all dependencies are compiled from scratch, every time, on every clean build, and on every CI run. That was the advantage of the (If precompilation functionality is ever added to this new system, do watch out that, for macOS, universal binaries are created, and, equally important but less well known, that the deployment target is macOS 10.15.4 or even lower. Also, in my experience distributing binaries via GH Releases works well because it gives fast downloads, while not blowing up the git repo size.) One thing to keep in mind is that some third-party package managers (among which FlatPak) require being able to compile without internet access, so in that case downloading dependencies source code during the CMake configure step is not an option. Finally, I was also going to say that this makes updating in-development dependencies like mnxdom significantly more complicated. |
|
@cbjeukendrup I understand you mean these deps: https://raw.githubusercontent.com/cbjeukendrup/musescore_deps/main/musescore_deps_macos.tar.gz ? Yes, we can remove it safely now. I'm not sure if you have looked at the muse_deps repo, but unifying prebuilt dependency delivery was the main goal of this change. So
Should not be the case, unless I did something wrong. Please let me know what exactly you meant by that.
This was the other main goal: the unified approach to ALL dependencies allows us to build a package suitable for offline build, see:
This is something I didn't do, and the deployment target was set to 12. Could you explain why that is needed? Is it only for OS X compatibility, or is there something more to it? From the latest chat with @igorkorsukov, I understand that starting MSS 5, we will have osx12 as the target version. |
@rpatters1 I'm not familiar with MNX development story, but if it is indeed an experimental in-development feature, we can keep it in-tree, I guess. Prior to this refactoring, I see it hadn't been updated for about 4 months, so it didn't look that intensive. |
There is currently an outstanding PR #33236 that changes it. I had another that I had been holding off opening until that is merged. But now I plan to roll that into yet a third iteration. Every time the MNX committee releases a new schema I will need to update |
|
Another complication around the These could be safely separated into the
|
Yes, indeed.
I did take a look, and only saw links to source code releases in packages definitions, which together with what I had seen earlier led to assumptions, but now I see there's more... much more. So I'll look again.
MuseScore's deployment target is currently OS X 10.15.4, using a backported version of Qt 6.10.2 (https://github.com/cbjeukendrup/musescore_build_qt/blob/main/.github/workflows/qt6.10.2_macOS_universal_10_15.yml). We originally wanted to keep the deployment target at 10.15, but backporting Qt to that version was significantly more complicated than 10.15.4. This may be relevant for Audacity 4 as well. I see that Audacity 3 supports all the way back to OS X 10.13; maintaining that with Qt is not realistic, but with my backported Qt version you can at least still have 10.15.4. Anyway, so since MuseScore's deployment target is 10.15.4, the dependencies would need to support that version too. The news that the deployment target will be bumped to 12.0 had not reached me yet. It might be good to see how the community responds to that, before fully committing to it. Note that supporting macOS 12.0 still requires creating a backported version of Qt: by the time that MS5 is released, Qt 6.11.2 and Qt 6.12 will have been released, which support respectively macOS 13.0 and 14.4. That's not a problem but I just wanted to mention it. |
|
We are considering dropping support for older versions of macOS, which means that support for macOS 13 will be supported (we will use Qt 6.11). |
|
@igorkorsukov @rpatters1 I leave the final decision about MNX to you guys. Let me know if we should keep it in the main repo for now as fetchcontent. |
We're currently having trouble with this. Solution options:
That is, keeping fetchcontent and this module enabled for all platforms is the worst solution, since it blocks the build for Linux distributions and Flatpak |
|
From what I understand, it is now in development and is not ready for regular users. So we could safely disable it on Linux by default until it become stable. |
|
Which option would you prefer:
I was thinking, let's do both options :) |
I'm not sure it would work. If the library's api changes, it has to be reflected in the app code. Supporting two versions in the mnx module will be messy. |
|
Then let's disable it for Linux. |
|
@igorkorsukov I will keep it enabled in our own CI builds where we produce appimages and have no restrictions, but by default it will be turned off, so distro maintainers are happy. |
|
Regarding that it is "in development": it's not that it is unstable or very experimental, it's rather that it should preferably remain easy to update it because there may be frequent changes. But disabling it for that reason seems to me like a too drastic trade-off. Anyway, I think it would be good to await @rpatters1 's opinion before taking action. |
This PR moves third-party dependencies to an external submodule: muse_deps