Skip to content
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

[Feature Request]: Qt5 build #5561

Closed
SupervisedThinking opened this issue Feb 22, 2022 · 13 comments
Closed

[Feature Request]: Qt5 build #5561

SupervisedThinking opened this issue Feb 22, 2022 · 13 comments

Comments

@SupervisedThinking
Copy link
Contributor

SupervisedThinking commented Feb 22, 2022

Description

I was wondering if Qt6 is mandatory & if it's also possible to use Qt5 for the gui. I made some small changes as in SupervisedThinking@73ec407 to see if I can start to build but it fails with:

[591/621] Building CXX object pcsx2-qt/CMakeFiles/pcsx2-qt.dir/EmuThread.cpp.o
FAILED: pcsx2-qt/CMakeFiles/pcsx2-qt.dir/EmuThread.cpp.o 
/build/LibreELEC-RR/build.LibreELEC-x11.x86_64-11.0-devel/toolchain/bin/x86_64-libreelec-linux-gnu-g++ -DDISABLE_RECORDING -DENABLE_VULKAN -DFMT_LOCALE -DPCSX2_APP_DATADIR=\"../share/PCSX2\" -DPCSX2_APP_DOCDIR=\"../share/doc\" -DPCSX2_CORE -DQT_CORE_LIB -DQT_GUI_LIB -DQT_NETWORK_LIB -DQT_NO_DEBUG -DQT_WIDGETS_LIB -DSDL_BUILD -DSPU2X_CUBEB -DSPU2X_PULSEAUDIO -DVULKAN_USE_X11=1 -DWXUSINGDLL -DX11_API -DXDG_STD -D_ARCH_64=1 -D_M_X86=1 -D_M_X86_64=1 -D__M_X86_64=1 -D__WXGTK3__ -D__WXGTK__ -I/build/LibreELEC-RR/build.LibreELEC-x11.x86_64-11.0-devel/build/pcsx2-ff75ab73cc30ffec1c27652d48daabad9f304f22/.x86_64-libreelec-linux-gnu/pcsx2-qt/pcsx2-qt_autogen/include -I/build/LibreELEC-RR/build.LibreELEC-x11.x86_64-11.0-devel/toolchain/x86_64-libreelec-linux-gnu/sysroot/usr/include/QtGui/5.15.2 -I/build/LibreELEC-RR/build.LibreELEC-x11.x86_64-11.0-devel/toolchain/x86_64-libreelec-linux-gnu/sysroot/usr/include/QtGui/5.15.2/QtGui -I/build/LibreELEC-RR/build.LibreELEC-x11.x86_64-11.0-devel/toolchain/x86_64-libreelec-linux-gnu/sysroot/usr/include/QtCore/5.15.2 -I/build/LibreELEC-RR/build.LibreELEC-x11.x86_64-11.0-devel/toolchain/x86_64-libreelec-linux-gnu/sysroot/usr/include/QtCore/5.15.2/QtCore -I/build/LibreELEC-RR/build.LibreELEC-x11.x86_64-11.0-devel/build/pcsx2-ff75ab73cc30ffec1c27652d48daabad9f304f22/.x86_64-libreelec-linux-gnu/common/include -I/build/LibreELEC-RR/build.LibreELEC-x11.x86_64-11.0-devel/build/pcsx2-ff75ab73cc30ffec1c27652d48daabad9f304f22/pcsx2 -I/build/LibreELEC-RR/build.LibreELEC-x11.x86_64-11.0-devel/build/pcsx2-ff75ab73cc30ffec1c27652d48daabad9f304f22/pcsx2-qt -I/build/LibreELEC-RR/build.LibreELEC-x11.x86_64-11.0-devel/build/pcsx2-ff75ab73cc30ffec1c27652d48daabad9f304f22/pcsx2/. -I/build/LibreELEC-RR/build.LibreELEC-x11.x86_64-11.0-devel/build/pcsx2-ff75ab73cc30ffec1c27652d48daabad9f304f22/pcsx2/x86 -I/build/LibreELEC-RR/build.LibreELEC-x11.x86_64-11.0-devel/build/pcsx2-ff75ab73cc30ffec1c27652d48daabad9f304f22/.x86_64-libreelec-linux-gnu/pcsx2 -I/build/LibreELEC-RR/build.LibreELEC-x11.x86_64-11.0-devel/build/pcsx2-ff75ab73cc30ffec1c27652d48daabad9f304f22/3rdparty/jpgd -I/build/LibreELEC-RR/build.LibreELEC-x11.x86_64-11.0-devel/build/pcsx2-ff75ab73cc30ffec1c27652d48daabad9f304f22/3rdparty/xbyak -I/build/LibreELEC-RR/build.LibreELEC-x11.x86_64-11.0-devel/build/pcsx2-ff75ab73cc30ffec1c27652d48daabad9f304f22/3rdparty/sdl2/SDL/include -I/build/LibreELEC-RR/build.LibreELEC-x11.x86_64-11.0-devel/build/pcsx2-ff75ab73cc30ffec1c27652d48daabad9f304f22/3rdparty/cubeb/cubeb/include -I/build/LibreELEC-RR/build.LibreELEC-x11.x86_64-11.0-devel/build/pcsx2-ff75ab73cc30ffec1c27652d48daabad9f304f22/.x86_64-libreelec-linux-gnu/exports -I/build/LibreELEC-RR/build.LibreELEC-x11.x86_64-11.0-devel/build/pcsx2-ff75ab73cc30ffec1c27652d48daabad9f304f22/common/../3rdparty/include -I/build/LibreELEC-RR/build.LibreELEC-x11.x86_64-11.0-devel/build/pcsx2-ff75ab73cc30ffec1c27652d48daabad9f304f22/common/.. -I/build/LibreELEC-RR/build.LibreELEC-x11.x86_64-11.0-devel/build/pcsx2-ff75ab73cc30ffec1c27652d48daabad9f304f22/3rdparty/vulkan-headers/include -I/build/LibreELEC-RR/build.LibreELEC-x11.x86_64-11.0-devel/build/pcsx2-ff75ab73cc30ffec1c27652d48daabad9f304f22/3rdparty/glslang/glslang -I/build/LibreELEC-RR/build.LibreELEC-x11.x86_64-11.0-devel/build/pcsx2-ff75ab73cc30ffec1c27652d48daabad9f304f22/3rdparty/glslang/include -I/build/LibreELEC-RR/build.LibreELEC-x11.x86_64-11.0-devel/build/pcsx2-ff75ab73cc30ffec1c27652d48daabad9f304f22/3rdparty/glad/include -I/build/LibreELEC-RR/build.LibreELEC-x11.x86_64-11.0-devel/build/pcsx2-ff75ab73cc30ffec1c27652d48daabad9f304f22/3rdparty/imgui/imgui -I/build/LibreELEC-RR/build.LibreELEC-x11.x86_64-11.0-devel/build/pcsx2-ff75ab73cc30ffec1c27652d48daabad9f304f22/3rdparty/imgui/include -I/build/LibreELEC-RR/build.LibreELEC-x11.x86_64-11.0-devel/build/pcsx2-ff75ab73cc30ffec1c27652d48daabad9f304f22/3rdparty/libchdr/libchdr/include -I/build/LibreELEC-RR/build.LibreELEC-x11.x86_64-11.0-devel/build/pcsx2-ff75ab73cc30ffec1c27652d48daabad9f304f22/3rdparty/simpleini/include -I/build/LibreELEC-RR/build.LibreELEC-x11.x86_64-11.0-devel/toolchain/x86_64-libreelec-linux-gnu/sysroot/usr/lib/wx/include/gtk3-unicode-3.1 -I/build/LibreELEC-RR/build.LibreELEC-x11.x86_64-11.0-devel/toolchain/x86_64-libreelec-linux-gnu/sysroot/usr/include/wx-3.1 -I/build/LibreELEC-RR/build.LibreELEC-x11.x86_64-11.0-devel/toolchain/x86_64-libreelec-linux-gnu/sysroot/usr/include/soundtouch -I/build/LibreELEC-RR/build.LibreELEC-x11.x86_64-11.0-devel/toolchain/x86_64-libreelec-linux-gnu/sysroot/usr/include/libxml2 -I/build/LibreELEC-RR/build.LibreELEC-x11.x86_64-11.0-devel/toolchain/x86_64-libreelec-linux-gnu/sysroot/usr/include/QtCore -I/build/LibreELEC-RR/build.LibreELEC-x11.x86_64-11.0-devel/toolchain/x86_64-libreelec-linux-gnu/sysroot/usr/../../../mkspecs/devices/linux-libreelec-g++ -I/build/LibreELEC-RR/build.LibreELEC-x11.x86_64-11.0-devel/toolchain/x86_64-libreelec-linux-gnu/sysroot/usr/include/QtGui -I/build/LibreELEC-RR/build.LibreELEC-x11.x86_64-11.0-devel/toolchain/x86_64-libreelec-linux-gnu/sysroot/usr/include/QtWidgets -I/build/LibreELEC-RR/build.LibreELEC-x11.x86_64-11.0-devel/toolchain/x86_64-libreelec-linux-gnu/sysroot/usr/include/QtNetwork -march=x86-64 -m64 -mmmx -msse -msse2 -mfpmath=sse -Wall -pipe  -O2 -fomit-frame-pointer -DNDEBUG -pthread -O3 -DNDEBUG -fPIE -msse -msse2 -msse4.1 -mfxsr -pipe -fvisibility=hidden -pthread -fno-builtin-strcmp -fno-builtin-memcmp -mfpmath=sse -fno-operator-names -Wall -Wextra -Wno-attributes -Wno-unused-function -Wno-unused-parameter -Wno-missing-field-initializers -Wno-deprecated-declarations -Wno-format -Wno-format-security -Wno-overloaded-virtual -Wno-unused-value -Wno-stringop-truncation -Wno-stringop-overflow -Wstrict-aliasing -Wstrict-overflow=1 -fno-strict-aliasing -Wno-parentheses -Wno-missing-braces -Wno-unknown-pragmas -DWX_PRECOMP -Wno-packed-not-aligned -Wno-class-memaccess -fPIC -std=gnu++17 -Winvalid-pch -include /build/LibreELEC-RR/build.LibreELEC-x11.x86_64-11.0-devel/build/pcsx2-ff75ab73cc30ffec1c27652d48daabad9f304f22/.x86_64-libreelec-linux-gnu/pcsx2-qt/CMakeFiles/pcsx2-qt.dir/cmake_pch.hxx -MD -MT pcsx2-qt/CMakeFiles/pcsx2-qt.dir/EmuThread.cpp.o -MF pcsx2-qt/CMakeFiles/pcsx2-qt.dir/EmuThread.cpp.o.d -o pcsx2-qt/CMakeFiles/pcsx2-qt.dir/EmuThread.cpp.o -c /build/LibreELEC-RR/build.LibreELEC-x11.x86_64-11.0-devel/build/pcsx2-ff75ab73cc30ffec1c27652d48daabad9f304f22/pcsx2-qt/EmuThread.cpp
/build/LibreELEC-RR/build.LibreELEC-x11.x86_64-11.0-devel/build/pcsx2-ff75ab73cc30ffec1c27652d48daabad9f304f22/pcsx2-qt/EmuThread.cpp: In member function 'void EmuThread::executeVM()':
/build/LibreELEC-RR/build.LibreELEC-x11.x86_64-11.0-devel/build/pcsx2-ff75ab73cc30ffec1c27652d48daabad9f304f22/pcsx2-qt/EmuThread.cpp:269:10: warning: enumeration value 'Shutdown' not handled in switch [-Wswitch]
  269 |   switch (VMManager::GetState())
      |          ^
/build/LibreELEC-RR/build.LibreELEC-x11.x86_64-11.0-devel/build/pcsx2-ff75ab73cc30ffec1c27652d48daabad9f304f22/pcsx2-qt/EmuThread.cpp: In member function 'void EmuThread::enumerateInputDevices()':
/build/LibreELEC-RR/build.LibreELEC-x11.x86_64-11.0-devel/build/pcsx2-ff75ab73cc30ffec1c27652d48daabad9f304f22/pcsx2-qt/EmuThread.cpp:498:9: error: 'class QList<QPair<QString, QString> >' has no member named 'emplace_back'
  498 |   qdevs.emplace_back(QString::fromStdString(dev.first), QString::fromStdString(dev.second));
      |         ^~~~~~~~~~~~
[594/621] Building CXX object pcsx2-qt/CMakeFiles/pcsx2-qt.dir/Main.cpp.o
ninja: build stopped: subcommand failed.
FAILURE: scripts/build pcsx2 during make_target (default)
*********** FAILED COMMAND ***********
ninja ${NINJA_OPTS} ${PKG_MAKE_OPTS_TARGET}
**************************************

Reason

Qt5 5.15.2 is still well maintained, see https://community.kde.org/Qt5PatchCollection, and will receive standard support at least until 05/2023

The build system of Qt6 fundamentally changed and it's bassically impossible to cross compile it for certain projects since it relies on a complete build for host to create a target build while Qt5 only builds necessary tools and can be compiled for the target. This means if you want to support OpenGL on target you have to build mesa and all dependencies on you build(host) toolchain first which is complete utter 💩

Examples

RPCS3, Citra, Yuzu, Dolphin, et al use Qt5 for their frontend.

@RedDevilus
Copy link
Contributor

PCSX2 is not like those other emulators, perhaps they haven't had time to upgrade or didn't want to bother. Anyway Qt6 will be mandatory.

@SupervisedThinking
Copy link
Contributor Author

SupervisedThinking commented Feb 22, 2022

Well could you outline what exactly is not like those other emulators means? Yes PCSX2 is really late if it comes to Qt support at all but as long as all other major emulation platforms use Qt5 so I don't see any reason why Qt6 should be mandatory at all.

Beside that Qt5 & Qt6 should be quite compatible because other projects just check for both versions. https://github.com/mmatyas/pegasus-frontend/blob/master/cmake/PegasusQtUtils.cmake#L10-L13

@stenzek any hints why the build fails with Qt5?

@RedDevilus
Copy link
Contributor

I meant as in they started in Qt 5 which means that they have to revise it to be Qt 6 compatible where-as PCSX2 went straight into Qt 6 to avoid this conversion proces.

Stenzek could give you more details on why Qt 6 is chosen and not Qt 5.

@stenzek
Copy link
Member

stenzek commented Feb 23, 2022

  1. Qt5, especially the versions shipped in distros can be completely broken. I dealt with this in duckstation and it was a never-ending source of pain (e.g. 18.04 has completely broken hidpi support), and that's what our appimage builders are on.
  2. It adds #if hell, because there's a bunch of breaking API changes. There's still a few left over in the source which I haven't removed yet, but will be doing at some point. (e.g. https://github.com/PCSX2/pcsx2/blob/master/pcsx2-qt/SettingWidgetBinder.h#L21-L25
  3. Since our CI is on Qt6, at least for Windows, we wouldn't know when Qt5 breaks.
  4. When we did eventually drop Qt5, there's be a shitstorm of complaints. By starting on 6, we avoid that completely.
  5. Qt6 has been out for over a year. It's not our fault your distribution is stuck in the past.
  6. PCSX2 doesn't support Win7 and older OSes, Qt6 is "officially" Win10 only, so that's another reason we don't need to use Qt5.
  7. These "other emus" will migrate eventually too. Nobody stays on old versions forever.

Lastly, why are you expecting us to create a bunch of maintenance burden when Linux is a fraction of the total userbase (probably less than 5%), and users that don't use the AppImage are an even tinier? If you want to step up and maintain a Qt5 build, then sure, go ahead. But don't expect us to do it for you.

@stenzek
Copy link
Member

stenzek commented Feb 23, 2022

The build system of Qt6 fundamentally changed and it's bassically impossible to cross compile it for certain projects since it relies on a complete build for host to create a target build while Qt5 only builds necessary tools and can be compiled for the target. This means if you want to support OpenGL on target you have to build mesa and all dependencies on you build(host) toolchain first which is complete utter 💩

This is also complete garbage. I did a Qt6 build on Ubuntu 18.04 so it could be eventually used for the appimages, and aside from having to upgrade the compiler and cmake, it worked perfectly fine. Don't make statements like that when you clearly have no idea what you're talking about.

As for cross-compiling, generally speaking, you need a sysroot to cross-compile. PCSX2 would definitely need one. But it's a moot point regardless, because Qt6 doesn't support 32-bit x86, so PCSX2-Qt is 64-bit only, and there's no need to cross-compile in the first place.

@Sunderland93
Copy link
Contributor

Qt6 will be in Ubuntu 22.04 LTS, so no problem https://packages.ubuntu.com/search?keywords=qt6&searchon=names&suite=jammy&section=all

@stenzek
Copy link
Member

stenzek commented Feb 23, 2022

Qt6 will be in Ubuntu 22.04 LTS, so no problem https://packages.ubuntu.com/search?keywords=qt6&searchon=names&suite=jammy&section=all

That doesn't help us. Our appimage builder is stuck on 18.04, and if we switch it to 22.04, because appimages are stupid and rely on the system libc, people with older distros won't be able to run them.

@SupervisedThinking
Copy link
Contributor Author

SupervisedThinking commented Feb 23, 2022

This is also complete garbage. I did a Qt6 build on Ubuntu 18.04 so it could be eventually used for the appimages, and aside from having to upgrade the compiler and cmake, it worked perfectly fine. Don't make statements like that when you clearly have no idea what you're talking about.

As for cross-compiling, generally speaking, you need a sysroot to cross-compile. PCSX2 would definitely need one. But it's a moot point regardless, because Qt6 doesn't support 32-bit x86, so PCSX2-Qt is 64-bit only, and there's no need to cross-compile in the first place.

Well I have the strong impression that you didn't got at all what I'm talking about. You talk about downloading the Qt6 source, compiling it with your Ubuntu 18.04 toolchain, building PCSX2 and done. You also assume I'm downloading some precompiled, outdated deb packages and nag about problems compiling against it. Btw. you should already have some insights how I build my PCSX2 package since I've linked you in an issue when your commits broke PCSX2 as in #5226 (comment)

I'm talking about using ANY distribution, building a completely independent toolchain (gcc, cmake, glibc, etc.) with the tools provided by the distro and then use this new toolchain to compile a whole disto image for a target arch like arm or aarch64. And instead of asking for details you make bold assumptions and jump to conclusions without even knowing what I exactly meant just to tell me I'm stupid. Thank you very much.

I'm btw not the only one who ran into trouble https://forum.qt.io/topic/126645/qt6-cross-compile-experience because of the buildsystem changes. But I see you're focused on Windows as platform & probably don't care that much about other targets which is fine. If you have an independent toolchain it's not enough to compile some build tools (e.g. qmake) as before you need to deploy a whole Qt6 build for build and then CMake uses it to create the target build but this also means you need to satisfy all dependencies for your host toolchain which is just plain nonsense for any build focusing on a target system.

I was asking if there is any specfic, technical reason to use Qt6 and why it's mandatory. Ubuntu 18.04 uses Qt5 5.9.5 but I'm talking about 5.15.y which IIRC even has compat modules for the Qt6 transition. Since you most likely link static against Qt it also should not matter if you depend on a newer version which isn't shipped by a dated Ubuntu distro. So it's probably correct that some old packages have been broken repair but again that's not what I was talking about.

All in all thanks for the clarification, I got my answers.

@stenzek
Copy link
Member

stenzek commented Feb 23, 2022

Btw. you should already have some insights how I build my PCSX2 package since I've linked you in an issue when your commits broke PCSX2 as in #5226 (comment)

I don't care about packages in nonstandard environments. If it breaks in Ubuntu (or our appimage), I'm happy to look at it, but otherwise it's not my problem. Otherwise, if you want to change stuff and it causes things to break, that's your problem not mine.

I'm talking about using ANY distribution, building a completely independent toolchain (gcc, cmake, glibc, etc.) with the tools provided by the distro and then use this new toolchain to compile a whole disto image for a target arch like arm or aarch64.

And how is this relevant to PCSX2? PCSX2-Qt only builds and runs on 64-bit x86. Are you seriously arguing that we should be concerned about compiling x86 on an arm64 host?

I was asking if there is any specfic, technical reason to use Qt6 and why it's mandatory.

We're making use of the new DPI scaling options in Qt6 for one, and other things like emplace_back() as in the OP.

If you want to maintain Qt5 support, go ahead. But don't expect us to do it for you.

Ubuntu 18.04 uses Qt5 5.9.5 but I'm talking about 5.15.y which IIRC even has compat modules for the Qt6 transition.

hidpi is completely broken in 5.9.5.

Since you most likely link static against Qt it also should not matter if you depend on a newer version which isn't shipped by a dated Ubuntu distro.

That was my initial plan. Unfortunately nothing works properly in Linux, as usual. I built Qt on 18.04, but the Qt libraries link against some float-support library which doesn't exist on 20.04, as well as an older version of libicu. So you can only have one, not the other.

Hence why I just shelved and said someone who actually uses the OS can sort it out. If you have a solution, I'd love to hear it, but it's not something I'm going to personally spend any more time on, since I don't use the OS.

@SupervisedThinking
Copy link
Contributor Author

SupervisedThinking commented Feb 23, 2022

I don't care about packages in nonstandard environments. If it breaks in Ubuntu (or our appimage), I'm happy to look at it, but otherwise it's not my problem. Otherwise, if you want to change stuff and it causes things to break, that's your problem not mine.

No clue what's a standard Linux environment is but I guess there's reason why you ship precompiled stuff as appimage. IMHO the spirit of OSS is compile yourself & it should run as long as requirements are met & dependencies satisfied. It's not broken because of a non-standard Linux it's broken because of the memsets.

And how is this relevant to PCSX2? PCSX2-Qt only builds and runs on 64-bit x86. Are you seriously arguing that we should be concerned about compiling x86 on an arm64 host?

You got the topic? Qt? PCSX2 is not the only application which uses it, there are plenty of tools which depend on Qt and run fine on ARM like Skyscraper, Moonlight-Qt, Pegasus-Frontend etc. so yes there are people who need to cross compile Qt for an other arch & this is complete crap if you have to depend on Qt6 if you're building anything else than just a single app.

We're making use of the new DPI scaling options in Qt6 for one, and other things like emplace_back() as in the OP.

If you want to maintain Qt5 support, go ahead. But don't expect us to do it for you.

This is basically the answer I was waiting for because that's a real reason.

hidpi is completely broken in 5.9.5.

¯\_(ツ)_/¯ again nobody said use precompiled 5.9.y I was talking about 5.15.y which is maintained by KDE as linked above.

That was my initial plan. Unfortunately nothing works properly in Linux, as usual. I built Qt on 18.04, but the Qt libraries link against some float-support library which doesn't exist on 20.04, as well as an older version of libicu. So you can only have one, not the other.

Well beside the fact that it's a pain in the a.. to compile Qt I've never had trouble to build Dolphin, Citra, Yuzu, RPCS3, Pegasus-Frontend, Skyscraper, Retroarch, Moonlight-Qt, mupen64plus-gui (...) once Qt was up and running even though all packages are pretty much bleeding edge but that's nothing special compared to Arch Linux.

Hence why I just shelved and said someone who actually uses the OS can sort it out. If you have a solution, I'd love to hear it, but it's not something I'm going to personally spend any more time on, since I don't use the OS.

It's fine if you don't use Linux. Then just tell people that you don't use it & that you use Qt6 on Windows and that you don't bother to waste time on something you won't use anyway. Because then I wouldn't have had asked for any Qt5 support in the first place.

@stenzek
Copy link
Member

stenzek commented Feb 23, 2022

IMHO the spirit of OSS is compile yourself & it should run as long as requirements are met & dependencies satisfied.

The spirit of OSS is also that others can contribute. So far you're just complaining, expecting us to do work and not contributing anything positive.

You got the topic? Qt? PCSX2 is not the only application which uses it, there are plenty of tools which depend on Qt and run fine on ARM like Skyscraper, Moonlight-Qt, Pegasus-Frontend etc.

So? PCSX2 is x86 only, so it's still a moot point. Besides, I read the topic, so what if you have to compile the host tools? It takes a couple of minutes, cross-compiling Qt on windows has always required host tools and it's never been a problem.

As someone who's used Qt through 4-6, CMake is a much better build system than QMake.

I was talking about 5.15.y which is maintained by KDE as linked above.

Then how is it relevant to us? If we're having to use a non-distro build, then we may as well use Qt6 on our builders.

Well beside the fact that it's a pain in the a.. to compile Qt

Uhh, it's really not. You run configure and then ninja. https://doc.qt.io/qt-6/linux-building.html

Dolphin, Citra, Yuzu, RPCS3, Pegasus-Frontend, Skyscraper, Retroarch, Moonlight-Qt, mupen64plus-gui

This is PCSX2, not anything else, stop making pointless comparisons. The PCSX2 team is happy with the direction I've taken with the Qt interface, so what you or others think is completely irrelevant. Like I said above, if you want to maintain Qt5, go nuts, but stop complaining and expecting that we do something we're not interested in/see any benefit in doing.

Besides, those emus will also move to Qt6 eventually. We have a clean slate and it would be silly to start with Qt5, only to generate a shitstorm when we eventually move to 6.

I'm unsubscribing myself from this issue, because this whole discussion is a waste of time.

@SupervisedThinking
Copy link
Contributor Author

The spirit of OSS is also that others can contribute. So far you're just complaining, expecting us to do work and not contributing anything positive.

Yeah well I guess that's the reason why I've got a contributor flag.

So? PCSX2 is x86 only, so it's still a moot point. Besides, I read the topic, so what if you have to compile the host tools? It takes a couple of minutes, cross-compiling Qt on windows has always required host tools and it's never been a problem.

As someone who's used Qt through 4-6, CMake is a much better build system than QMake.

No you have to build a whole Qt6 build for host & then for target which means you need to meet all dependencies for the host toolchain which normally just consists of the usual build tools and not graphic, audio or any other support lib.

Then how is it relevant to us? If we're having to use a non-distro build, then we may as well use Qt6 on our builders.

Qt5 5.15.y is LTS, still supported and maintained. It just works.

Uhh, it's really not. You run configure and then ninja. https://doc.qt.io/qt-6/linux-building.html

Yes if you use Ubuntu and build Qt6 for your Ubuntu and link PCSX2 static. This doesn't work if you have an independent toolchain which will build a distro for any indepentend target. I guess the link I supplied was clear about that, obviously it wasn't.

The toolchain consists of autoconf:host autoconf-archive:host automake:host bison:host configtools:host cmake:host flex:host intltool:host libtool:host ninja:host make:host meson:host p7zip:host pigz:host sed:host xmlstarlet:host xz:host but for Qt5 I also need libjpeg-turbo openssl libpng pcre2-system sqlite zlib freetype sdl2 libxkbcommon gstreamer gst-plugins-base gst-plugins-good gst-libav for all targets & beside an OpenGL(ES) support package like mesa I also need xcb-util xcb-util-image xcb-util-keysyms xcb-util-renderutil xcb-util-wm for X11 & wayland for Wayland builds. None of them are necessary for any other package on host. Yes you don't bother because you Qt from scratch links agains your Ubuntu packages but again my links against an independent toolchain. Qt5 just builds some build tools and compiles all libs for target but Qt6 doesn't build just the tools it needs to compile everything for the host first & reuses those libs for the target build. And this pulls in a shitload of dependencies. Again I'm not building Qt and a single app - I'm building a complete distribution. I understand if you never considered this as a problem because your usecase is completely different but the new way Qt6 builds is a desaster if you want to use it on embedded builds.

This is PCSX2, not anything else, stop making pointless comparisons. The PCSX2 team is happy with the direction I've taken with the Qt interface, so what you or others think is completely irrelevant. Like I said above, if you want to maintain Qt5, go nuts, but stop complaining and expecting that we do something we're not interested in/see any benefit in doing.

Well it was a question if it's possible. Nothing more, nothing less. A simple line like

We're making use of the new DPI scaling options in Qt6 for one, and other things like emplace_back() as in the OP.

would have been enough. Also if you don't know the specific reason why someone ask maybe don't rant just ask why he asks for this support / option.

Besides, those emus will also move to Qt6 eventually. We have a clean slate and it would be silly to start with Qt5, only to generate a shitstorm when we eventually move to 6.

Yes the shitstorm... I guess the average user who uses a static linked build appimage won't complain & does not care at all which Qt version is used.

I'm unsubscribing myself from this issue, because this whole discussion is a waste of time.

Well if you feel ranting is a waste time - I second that! All I wanted to know was if it's possible to fix the error above which might allows to compile against Qt5, the reason why I would like to have this option should be clear. If you don't care about Linux and Qt5 that's fine but please don't assume everyone is plain stupid just because he asks for a usecase / environment which you're not interested in.

@Sunderland93
Copy link
Contributor

That doesn't help us. Our appimage builder is stuck on 18.04, and if we switch it to 22.04, because appimages are stupid and rely on the system libc, people with older distros won't be able to run them.

I mean it is not a problem for those, who want to build pcsx2-qt from source

@PCSX2 PCSX2 locked and limited conversation to collaborators Feb 23, 2022
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Projects
None yet
Development

No branches or pull requests

4 participants