dogecoin / dogecoin

very currency
MIT License
14.4k stars 2.8k forks source link

Update minimum platforms for 1.15.0 to update Qt #3461

Open alamshafil opened 3 months ago

alamshafil commented 3 months ago

I wanted to open this issue to discuss if should update minimum platform versions (Windows, macOS, Linux), which is a breaking change, to help update the Qt dependency.

According the the Qt website, Qt 5.15.x supports macOS >= 10.13 and Windows >= 7. Qt 6.6 supports macOS >= 11 and Windows 10 (1809) or higher.

Updating the Qt dependency also requires new dependencies.

The Qt dependency update would cause the change in minimum platform support. While OpenSSL should support glibc 2.11, from the last time I attempted to update the Qt version I noticed symbol check failed on getauxval and getentropy.

It also might be helpful to do these dependencies updates, but I am not sure how it will effect the current Qt version.

patricklodder commented 3 months ago

The other dependency updates we can deal with, but let's focus on Qt6.

The first step to get that in is to get rid of Qt4 conditionals.

patricklodder commented 3 months ago

I've been studying the Qt (LTS only, because non-LTS only has 1 year support) requirements a bit from the site @alamshafil mentioned above.

Version End of Support GCC Windows macOS
5.15 2023-05-26 9 7-11 10.13-12
6.2 2024-09-30 9 10-11 10.14-12
6.5 2026-03-30 11 10-11 11-13

So basically we can get:

I don't think 5.15 is worth it for -10 months of support. After doing mad patching on pinned Qt source code, I'm convinced that 6.5 is the best option, because that means we don't have to worry about mad patching for 2 years. However, we'd need to check if we can get this to work for linux with glibc 2.31 as a base (current version for focal/bookworm - under RH 9.2, which iirc has 2.34)

I could - on top of #3466 and #3465 - investigate what is needed to just allow qt6 as a self-compile dependency for now. This would mean that we'd first make it work separate from depends, and only then start to mess around trying to make it all build deterministically.